UNPKG

@deriv-com/analytics

Version:

The analytics package contains all the utility functions used for tracking user events and sending them to the respective platform such as Rudderstack.

2 lines 219 kB
/*! For license information please see analytics.bundle.js.LICENSE.txt */ !function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.Analytics=t():e.Analytics=t()}(this,()=>(()=>{var e={25:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.URL=t.DNS=void 0,t.default=function(e,t,n){function r(e,r,o,a){var l;if("string"==typeof e&&(e=function(e){e=unescape(encodeURIComponent(e));for(var t=[],n=0;n<e.length;++n)t.push(e.charCodeAt(n));return t}(e)),"string"==typeof r&&(r=(0,s.default)(r)),16!==(null===(l=r)||void 0===l?void 0:l.length))throw TypeError("Namespace must be array-like (16 iterable integer values, 0-255)");var u=new Uint8Array(16+e.length);if(u.set(r),u.set(e,r.length),(u=n(u))[6]=15&u[6]|t,u[8]=63&u[8]|128,o){a=a||0;for(var c=0;c<16;++c)o[a+c]=u[c];return o}return(0,i.unsafeStringify)(u)}try{r.name=e}catch(e){}return r.DNS=o,r.URL=a,r};var r,i=n(910),s=(r=n(792))&&r.__esModule?r:{default:r},o=t.DNS="6ba7b810-9dad-11d1-80b4-00c04fd430c8",a=t.URL="6ba7b811-9dad-11d1-80b4-00c04fd430c8"},37:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r,i=(r=n(656))&&r.__esModule?r:{default:r};t.default=function(e){return"string"==typeof e&&i.default.test(e)}},42:(e,t)=>{"use strict";function n(e,t,n,r){switch(e){case 0:return t&n^~t&r;case 1:case 3:return t^n^r;case 2:return t&n^t&r^n&r}}function r(e,t){return e<<t|e>>>32-t}Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0,t.default=function(e){var t=[1518500249,1859775393,2400959708,3395469782],i=[1732584193,4023233417,2562383102,271733878,3285377520];if("string"==typeof e){var s=unescape(encodeURIComponent(e));e=[];for(var o=0;o<s.length;++o)e.push(s.charCodeAt(o))}else Array.isArray(e)||(e=Array.prototype.slice.call(e));e.push(128);for(var a=e.length/4+2,l=Math.ceil(a/16),u=new Array(l),c=0;c<l;++c){for(var d=new Uint32Array(16),h=0;h<16;++h)d[h]=e[64*c+4*h]<<24|e[64*c+4*h+1]<<16|e[64*c+4*h+2]<<8|e[64*c+4*h+3];u[c]=d}u[l-1][14]=8*(e.length-1)/Math.pow(2,32),u[l-1][14]=Math.floor(u[l-1][14]),u[l-1][15]=8*(e.length-1)&4294967295;for(var g=0;g<l;++g){for(var f=new Uint32Array(80),p=0;p<16;++p)f[p]=u[g][p];for(var v=16;v<80;++v)f[v]=r(f[v-3]^f[v-8]^f[v-14]^f[v-16],1);for(var y=i[0],m=i[1],b=i[2],k=i[3],S=i[4],_=0;_<80;++_){var w=Math.floor(_/20),A=r(y,5)+n(w,m,b,k)+S+t[w]+f[_]>>>0;S=k,k=b,b=r(m,30)>>>0,m=y,y=A}i[0]=i[0]+y>>>0,i[1]=i[1]+m>>>0,i[2]=i[2]+b>>>0,i[3]=i[3]+k>>>0,i[4]=i[4]+S>>>0}return[i[0]>>24&255,i[0]>>16&255,i[0]>>8&255,255&i[0],i[1]>>24&255,i[1]>>16&255,i[1]>>8&255,255&i[1],i[2]>>24&255,i[2]>>16&255,i[2]>>8&255,255&i[2],i[3]>>24&255,i[3]>>16&255,i[3]>>8&255,255&i[3],i[4]>>24&255,i[4]>>16&255,i[4]>>8&255,255&i[4]]}},73:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r=o(n(140)),i=o(n(858)),s=n(910);function o(e){return e&&e.__esModule?e:{default:e}}t.default=function(e,t,n){if(r.default.randomUUID&&!t&&!e)return r.default.randomUUID();var o=(e=e||{}).random||(e.rng||i.default)();if(o[6]=15&o[6]|64,o[8]=63&o[8]|128,t){n=n||0;for(var a=0;a<16;++a)t[n+a]=o[a];return t}return(0,s.unsafeStringify)(o)}},106:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.chooseVariation=function(e,t){for(let n=0;n<t.length;n++)if(o(e,t[n]))return n;return-1},t.decrypt=async function(e,t,r){if(t=t||"",!(r=r||globalThis.crypto&&globalThis.crypto.subtle||n.SubtleCrypto))throw new Error("No SubtleCrypto implementation found");try{const n=await r.importKey("raw",u(t),{name:"AES-CBC",length:128},!0,["encrypt","decrypt"]),[i,s]=e.split("."),o=await r.decrypt({name:"AES-CBC",iv:u(i)},n,u(s));return(new TextDecoder).decode(o)}catch(e){throw new Error("Failed to decrypt")}},t.getAutoExperimentChangeType=function(e){return e.urlPatterns&&e.variations.some(e=>c(e)&&"urlRedirect"in e)?"redirect":e.variations.some(e=>c(e)&&(e.domMutations||"js"in e||"css"in e))?"visual":"unknown"},t.getBucketRanges=function(e,t,n){(t=void 0===t?1:t)<0?t=0:t>1&&(t=1);const r=s(e);(n=n||r).length!==e&&(n=r);const i=n.reduce((e,t)=>t+e,0);(i<.99||i>1.01)&&(n=r);let o=0;return n.map(e=>{const n=o;return o+=e,[n,n+t*e]})},t.getEqualWeights=s,t.getPolyfills=function(){return n},t.getQueryStringOverride=function(e,t,n){if(!t)return null;const r=t.split("?")[1];if(!r)return null;const i=r.replace(/#.*/,"").split("&").map(e=>e.split("=",2)).filter(t=>{let[n]=t;return n===e}).map(e=>{let[,t]=e;return parseInt(t)});return i.length>0&&i[0]>=0&&i[0]<n?i[0]:null},t.getUrlRegExp=a,t.hash=i,t.inNamespace=function(e,t){const n=i("__"+t[0],e,1);return null!==n&&n>=t[1]&&n<t[2]},t.inRange=o,t.isIncluded=function(e){try{return e()}catch(e){return console.error(e),!1}},t.isURLTargeted=function(e,t){if(!t.length)return!1;let n=!1,r=!1;for(let i=0;i<t.length;i++){const s=l(e,t[i].type,t[i].pattern);if(!1===t[i].include){if(s)return!1}else n=!0,s&&(r=!0)}return r||!n},t.loadSDKVersion=function(){let e;try{e="1.6.2"}catch(t){e=""}return e},t.mergeQueryStrings=function(e,t){let n,r;try{n=new URL(e),r=new URL(t)}catch(e){return console.error(`Unable to merge query strings: ${e}`),t}return n.searchParams.forEach((e,t)=>{r.searchParams.has(t)||r.searchParams.set(t,e)}),r.toString()},t.paddedVersionString=function(e){"number"==typeof e&&(e+=""),e&&"string"==typeof e||(e="0");const t=e.replace(/(^v|\+.*$)/g,"").split(/[-.]/);return 3===t.length&&t.push("~"),t.map(e=>e.match(/^[0-9]+$/)?e.padStart(5," "):e).join("-")},t.promiseTimeout=async function(e,t){return new Promise(n=>{let r,i=!1;const s=e=>{i||(i=!0,r&&clearTimeout(r),n(e||null))};t&&(r=setTimeout(()=>s(),t)),e.then(e=>s(e)).catch(()=>s())})},t.toString=function(e){return"string"==typeof e?e:JSON.stringify(e)};const n={fetch:globalThis.fetch?globalThis.fetch.bind(globalThis):void 0,SubtleCrypto:globalThis.crypto?globalThis.crypto.subtle:void 0,EventSource:globalThis.EventSource};function r(e){let t=2166136261;const n=e.length;for(let r=0;r<n;r++)t^=e.charCodeAt(r),t+=(t<<1)+(t<<4)+(t<<7)+(t<<8)+(t<<24);return t>>>0}function i(e,t,n){return 2===n?r(r(e+t)+"")%1e4/1e4:1===n?r(t+e)%1e3/1e3:null}function s(e){return e<=0?[]:new Array(e).fill(1/e)}function o(e,t){return e>=t[0]&&e<t[1]}function a(e){try{const t=e.replace(/([^\\])\//g,"$1\\/");return new RegExp(t)}catch(e){return void console.error(e)}}function l(e,t,n){try{const r=new URL(e,"https://_");if("regex"===t){const e=a(n);return!!e&&(e.test(r.href)||e.test(r.href.substring(r.origin.length)))}return"simple"===t&&function(e,t){try{const n=new URL(t.replace(/^([^:/?]*)\./i,"https://$1.").replace(/\*/g,"_____"),"https://_____"),r=[[e.host,n.host,!1],[e.pathname,n.pathname,!0]];return n.hash&&r.push([e.hash,n.hash,!1]),n.searchParams.forEach((t,n)=>{r.push([e.searchParams.get(n)||"",t,!1])}),!r.some(e=>!function(e,t,n){try{let r=t.replace(/[*.+?^${}()|[\]\\]/g,"\\$&").replace(/_____/g,".*");return n&&(r="\\/?"+r.replace(/(^\/|\/$)/g,"")+"\\/?"),new RegExp("^"+r+"$","i").test(e)}catch(e){return!1}}(e[0],e[1],e[2]))}catch(e){return!1}}(r,n)}catch(e){return!1}}const u=e=>Uint8Array.from(atob(e),e=>e.charCodeAt(0));function c(e){return"object"==typeof e&&null!==e}},140:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var n="undefined"!=typeof crypto&&crypto.randomUUID&&crypto.randomUUID.bind(crypto);t.default={randomUUID:n}},154:function(e,t){!function(e){"use strict";const t={real:"green.derivws.com",demo:"blue.derivws.com"},n={"deriv.app":"16929","app.deriv.com":"16929","staging-app.deriv.com":"16303","app.deriv.me":"1411","staging-app.deriv.me":"1411","app.deriv.be":"30767","staging-app.deriv.be":"31186","binary.com":"1","test-app.deriv.com":"51072","p2p.deriv.com":"61859","staging-p2p.deriv.com":"62019","api.deriv.com":"36544","staging-api.deriv.com":"36545","smarttrader.deriv.com":"22168","staging-smarttrader.deriv.com":"22169","staging-dbot.deriv.com":"29934","staging-dbot.deriv.me":"29934","staging-dbot.deriv.be":"29934","dbot.deriv.com":"65555","dbot.deriv.be":"65556","dbot.deriv.me":"65557"},r="deriv",i=Object.freeze(Object.defineProperty({__proto__:null,appBrand:r,domainAppId:n,environments:t},Symbol.toStringTag,{value:"Module"})),s={AAD:2,AED:2,AFN:2,ALL:2,AMD:2,ANG:2,AOA:2,ARS:2,AUD:2,AWG:2,AZN:2,BAM:2,BBD:2,BCH:8,BDT:2,BGN:2,BHD:3,BIF:0,BMD:2,BND:2,BOB:2,BOV:2,BRL:2,BSD:2,BTC:8,BTN:2,BUSD:2,BWP:2,BYN:2,BZD:2,CAD:2,CDF:2,CHE:2,CHF:2,CHW:2,CLF:4,CLP:0,CNY:2,COP:2,COU:2,CRC:2,CUC:2,CUP:2,CVE:2,CZK:2,DAI:2,DJF:0,DKK:2,DOP:2,DZD:2,EGP:2,ERN:2,ETB:2,ETC:8,ETH:8,EUR:2,EURS:2,eUSDT:2,FJD:2,FKP:2,GBP:2,GEL:2,GHS:2,GIP:2,GMD:2,GNF:0,GTQ:2,GYD:2,HKD:2,HNL:2,HRK:2,HTG:2,HUF:2,IDK:0,IDR:2,ILS:2,INR:2,IQD:3,IRR:2,ISK:0,JMD:2,JOD:3,JPY:0,KES:2,KGS:2,KHR:2,KMF:0,KPW:2,KRW:0,KWD:3,KYD:2,KZT:2,LAK:2,LBP:2,LKR:2,LRD:2,LSL:2,LTC:8,LYD:3,MAD:2,MDL:2,MGA:2,MKD:2,MMK:2,MNT:2,MOP:2,MRU:2,MUR:2,MVR:2,MWK:2,MXN:2,MXV:2,MYR:2,MZN:2,NAD:2,NGN:2,NIO:2,NOK:2,NPR:2,NZD:2,OMR:3,PAB:2,PAX:2,PEN:2,PGK:2,PHP:2,PKR:2,PLN:2,PYG:0,QAR:2,RON:2,RSD:2,RUB:2,RWF:0,SAR:2,SBD:2,SCR:2,SDG:2,SEK:2,SGD:2,SHP:2,SLL:2,SOS:2,SRD:2,SSP:2,STN:2,SVC:2,SYP:2,SZL:2,THB:2,TJS:2,TMT:2,TND:3,TOP:2,TRY:2,TTD:2,TUSD:2,tUSDT:2,TWD:2,TZS:2,UAH:2,UGX:0,USB:2,USD:2,USDC:2,USDK:2,UST:2,USN:2,UYI:0,UYU:2,UYW:4,UZS:2,VES:2,VND:0,VUV:0,WST:2,XAF:0,XCD:2,XOF:0,XPF:0,YER:2,ZAR:2,ZMW:2,ZWL:2},o=Object.freeze(Object.defineProperty({__proto__:null,precision:s},Symbol.toStringTag,{value:"Module"})),a=["PNG","JPG","JPEG","GIF","PDF"],l=Object.freeze(Object.defineProperty({__proto__:null,supportedDocumentFormats:a},Symbol.toStringTag,{value:"Module"})),u="client.active_loginid",c="config.app_id",d="config.server_url",h="i18n_language",g=Object.freeze(Object.defineProperty({__proto__:null,accountList:"client.account_list",activeLoginid:u,configAppId:c,configServerURL:d,i18nLanguage:h,lastVerifyEmail:"client.verify_email",p2pArchiveMessage:"should_not_show_auto_archive_message_again",p2pOrderIds:"order_ids",p2pShowFollowUserGuide:"should_show_p2p_follow_user_guide",p2pShowGuide:"should_show_p2p_guide",traderLayout:"trader.layout",uiExpandAccountSwitcher:"ui.expand_account_switcher",uiShowReportsDrawer:"ui.show_report_drawer",uiTheme:"ui.theme"},Symbol.toStringTag,{value:"Module"})),f="deriv.com",p="deriv.me",v="deriv.be",y=[f,v,p],m=typeof window<"u"&&window.location.hostname.split("app.")[1],b=y.includes(m)?m:f,k=`https://bot.${b}`,S=`https://staging-bot.${b}`,_=`https://app.${b}`,w=`https://staging-app.${b}`,A=`https://${b}`,E=`https://eu.${b}`,I=`https://staging.${b}`,C=b,T=`https://smarttrader.${b}`,O=`https://staging-smarttrader.${b}`,P=`https://p2p.${b}`,D=`https://staging-p2p.${b}`,x="https://www.cloudflare.com/cdn-cgi/trace",R=Object.freeze(Object.defineProperty({__proto__:null,baseDomain:m,binaryBotProduction:k,binaryBotStaging:S,cloudflareTrace:x,deriv:f,derivAppProduction:_,derivAppStaging:w,derivBe:v,derivComProduction:A,derivComProductionEU:E,derivComStaging:I,derivHost:C,derivMe:p,derivP2pProduction:P,derivP2pStaging:D,domain:b,queryParameters:{lang:"lang",action:"action"},smartTraderProduction:T,smartTraderStaging:O,supportedDomains:y,whatsApp:"https://wa.me/35699578341"},Symbol.toStringTag,{value:"Module"})),B={address:/^[\p{L}\p{Nd}\s'’.,:;()\\x{b0}@#/-]{0,70}$/u,addressCity:new RegExp("^\\p{L}[\\p{L}\\s'.-]{0,49}$","u"),addressState:/^[\p{L}\p{Nd}\s'.,(),-;]{0,100}$/u,barrier:/^(?=.{1,20}$)[+-]?[0-9]+\.?[0-9]*$/,decimal:/^\d*(\.\d+)?$/,integer:/^\d+$/,postalOfficeBoxNumber:/p[.\s]+o[.\s]+box/i,email:/^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,63}$/,password:/^(?=.*[a-z])(?=.*\d)(?=.*[A-Z])[!-~]{8,25}$/,affilliatePassword:/^(?=.*[a-z])(?=.*[0-9])(?=.*[A-Z])[ -~]{6,50}$/,paymentAgentEmail:/^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{1,255}$/,postalCode:/^([A-Za-z0-9][A-Za-z0-9\s-]{0,20})?$/,taxIdentificationNumber:/^(?!^$|\s+)[A-Za-z0-9.\/\s-]{0,25}$/,phoneNumber:/^\+((-|\s)*[0-9]){9,20}$/,fileType:/(image|application)\/(jpe?g|pdf|png)$/,formattedCardNumber:/(^\d{4})\s(\d{2}X{2})\s(X{4})\s(\d{4}$)/,invalidFormattedCardNumberCharacters:/[^\dX\s]/,tradingPlatformInvestorPassword:/^(?=.*[a-z])(?=.*[0-9])(?=.*[A-Z])(?=.*[!@#$%^&*()+\-=\[\]{};':\"|,\.<>\?_~])[ -~]{8,16}$/,letterSymbols:/^[A-Za-z]+([a-zA-Z.' -])*[a-zA-Z.' -]+$/,name:/^(?!.*\s{2,})(?!\s)[\p{L}\s'.-]{1,50}$/u,general:/[`~!@#$%^&*)(_=+[}{\]\\/";:?><|]+/,lowercase:/[a-z]/,number:/\d/,specialCharacter:/\W/,uppercase:/[A-Z]/,between8and16Characters:/^.{8,16}$/,between8and25Characters:/^.{8,25}$/},$=Object.freeze(Object.defineProperty({__proto__:null,messagesHints:{addressPermittedSpecialCharacters:". , ' : ; ( ) ° @ # / -"},patterns:B},Symbol.toStringTag,{value:"Module"})),M={brandName:"Deriv",domainName:"Deriv.com"},N={fx:"Deriv (FX) Ltd",maltainvest:"Deriv Investments (Europe) Limited",svg:"Deriv (SVG) LLC",v:"Deriv (V) Ltd"},L={trader:"Deriv Trader",dBot:"Deriv Bot",mt5:"Deriv MT5",cTrader:"Deriv cTrader",derivX:"Deriv X",smartTrader:"SmartTrader",bBot:"Binary Bot",go:"Deriv GO"},U=Object.freeze(Object.defineProperty({__proto__:null,brandConfig:M,landingCompanies:N,platforms:L},Symbol.toStringTag,{value:"Module"})),j=/(ALP-|AMN-|ANA-|ANE-|ANG-|AQM-|ARS-|ART-|ATU-|BAC-|BLA-|BRQ-|CAG-|CAM-|CAN-|CAZ-|CDL-|CDY-|CLT-|CRO-|CUN-|DIG-|DRA-|DUA-|DUB-|DVC-|ELE-|ELS-|EML-|EVA-|EVR-|FIG-|FLA-|FRL-|GLK-|HMA-|HW-|HWI-|INE-|JAT-|JEF-|JER-|JKM-|JNY-|JSC-|LDN-|LIO-|LON-|LUA-|LYA-|LYO-|MAR-|MED-|MHA-|MLA-|MRD-|MYA-|NCE-|NEO-|NOH-|NOP-|OCE-|PAR-|PIC-|POT-|PPA-|PRA-|RNE-|SEA-|SLA-|SNE-|SPN-|STK-|TAH-|TAS-|TET-|TRT-|VCE-|VIE-|VKY-|VNS-|VOG-|VTR-|WAS-|WKG-|WLZ-|JAD-|MLD-|RTE-|NAM-|NEN-|BAL-|JLN-|YAL-|MGA-|FGD-|XYAO-|BON-|ALN-|ALT-|BRA-|DBY2-|STG-|MAO-|LEM-|GOA-|FOA-|MNA-|LNA-)/,V=Object.freeze(Object.defineProperty({__proto__:null,huaweiDevicesRegex:j},Symbol.toStringTag,{value:"Module"})),F=Object.freeze(Object.defineProperty({__proto__:null,formatMoney:(e,t)=>{try{const{locale:n="en-US",currency:r,decimalPlaces:i}=t||{},o=i||s[r??"USD"];return new Intl.NumberFormat(n,{minimumFractionDigits:o,maximumFractionDigits:o}).format(e)}catch{return e.toString()}},getAdjustedDate:(e,t="days",n="add")=>{if(e<0)throw new Error("Amount must be a positive number.");const r=new Date,i="add"===n?e:-e;return"years"===t?r.setFullYear(r.getFullYear()+i):"days"===t&&r.setDate(r.getDate()+i),r},getFormattedDateString:(e,t)=>{let n;const{dateOptions:r={day:"2-digit",month:"2-digit",year:"numeric"},format:i="YYYY-MM-DD",unix:s=!1}=t||{},o={...r};if("number"==typeof e&&s)n=new Date(1e3*e);else{if(!("string"==typeof e||e instanceof Date))throw new Error("Invalid date input");if(n=new Date(e),isNaN(n.getTime()))throw new Error("Invalid date input")}switch(i){case"DD MMM YYYY":o.day="2-digit",o.month="short",o.year="numeric";break;case"MMM DD YYYY":return o.day="2-digit",o.month="short",o.year="numeric",n.toLocaleDateString("en-GB",o).replace(/(\d{2}) (\w{3}) (\d{4})/,"$2 $1 $3");case"DD-MM-YYYY":return o.day="2-digit",o.month="2-digit",o.year="numeric",n.toLocaleDateString("en-GB",o).replace(/(\d{2})\/(\d{2})\/(\d{4})/,"$1-$2-$3");default:o.year="numeric",o.month="2-digit",o.day="2-digit"}const a=n.toLocaleDateString("en-GB",o).replace(/(\d{2}) (\w{3,4}) (\d{4})/,(e,t,n,r)=>`${t} ${n.slice(0,3)} ${r}`);return"YYYY-MM-DD"===i?a.replace(/(\d{2})\/(\d{2})\/(\d{4})/,"$3-$2-$1"):a},getFormattedTimeString:(e,t=!1)=>{let n;if("number"==typeof e&&t)n=new Date(1e3*e);else{if(!("string"==typeof e||e instanceof Date))throw new Error("Invalid date input");if(n=new Date(e),isNaN(n.getTime()))throw new Error("Invalid date input")}return`${n.getUTCHours().toString().padStart(2,"0")}:${n.getUTCMinutes().toString().padStart(2,"0")}:${n.getUTCSeconds().toString().padStart(2,"0")} GMT`},parseCryptoLongcode:e=>{const t=e.split(/,\s/),n=/:\s([0-9a-zA-Z]+.{25,28})/gm.exec(t[0]),r=null==n?void 0:n[1],i=/:\s([0-9a-zA-Z]+.{25,34})/gm.exec(t[1]);return{addressHash:r,blockchainHash:null==i?void 0:i[1],splitLongcode:t}}},Symbol.toStringTag,{value:"Module"})),H=2560,G=.9,K=({src:e,filename:t,options:n})=>{const{maxWidth:r=H,quality:i=G}=n||{};return new Promise((n,s)=>{const o=new Image;o.src=e,o.onload=()=>{const e=document.createElement("canvas"),a=e.getContext("2d");if(!(a&&a instanceof CanvasRenderingContext2D))return s(new Error("Failed to get 2D context"));if(o.naturalWidth>r){const t=H,n=t/o.naturalWidth;e.width=t,e.height=o.naturalHeight*n}else e.width=o.naturalWidth,e.height=o.naturalHeight;a.fillStyle="transparent",a.fillRect(0,0,e.width,e.height),a.save(),a.drawImage(o,0,0,e.width,e.height),e.toBlob(e=>{if(!e)return;const r=t.replace(/\.[^/.]+$/,".jpg"),i=new Blob([e],{type:"image/jpeg"});i.lastModifiedDate=Date.now(),i.name=r,n(i)},"image/jpeg",i)}})},z=e=>new Promise(t=>{const n=new FileReader;n.readAsDataURL(e),n.onloadend=()=>{var r;t({src:(null==(r=n.result)?void 0:r.toString())||"",filename:e.name})}}),J=e=>!!e&&a.some(t=>e.toUpperCase().endsWith(t));const q=Object.freeze(Object.defineProperty({__proto__:null,compressImage:K,compressImageFile:e=>new Promise(t=>{J(e.name)?z(e).then(e=>{K(e).then(t)}):t(e)}),convertToBase64:z,generateChunks:(e,{chunkSize:t=16384})=>{const n=[];for(let r=0;r<e.length;r++){const i=e[r];r%t===0?n.push([i]):n[n.length-1].push(i)}return n.map(e=>new Uint8Array(e)).concat(new Uint8Array([]))},isSupportedImageFormat:J,numToUint8Array:function(e,t=4){const n=new Uint8Array(t);return new DataView(n.buffer).setUint32(0,e),n},readFile:e=>{const t=new FileReader;return new Promise(n=>{t.onload=()=>{const r={filename:e.name,buffer:t.result,fileSize:e.size};n(r)},t.onerror=()=>{n({message:`Unable to read file ${e.name}`})},t.readAsArrayBuffer(e)})}},Symbol.toStringTag,{value:"Module"})),W=e=>{const t=localStorage.getItem(e);if("undefined"!==t){if(null===t||"null"===t)return null;try{return JSON.parse(t)}catch{return null}}},Q=Object.freeze(Object.defineProperty({__proto__:null,getValue:W,setValue:(e,t)=>{localStorage.setItem(e,JSON.stringify(t))}},Symbol.toStringTag,{value:"Module"})),Z=e=>Object.keys(e).sort().reduce((t,n)=>(t[n]=e[n],t),{}),Y=(e,t)=>Array.isArray(e)&&Array.isArray(t)?t.map((t,n)=>Y(e[n],t)):"object"==typeof e&&null!==e&&"object"==typeof t&&null!==t?X(e,t):t,X=(e,...t)=>{for(const n of t)for(const t in n)null===n[t]||void 0===n[t]||(e[t]=Y(e[t],n[t]));return e},ee=Object.freeze(Object.defineProperty({__proto__:null,hashObject:async e=>{const t=(new TextEncoder).encode(JSON.stringify(Z(e))),n=await crypto.subtle.digest("SHA-256",t);return Array.from(new Uint8Array(n)).map(e=>("00"+e.toString(16)).slice(-2)).join("")},merge:X,sortObjectByKeys:Z},Symbol.toStringTag,{value:"Module"}));const te=Object.freeze(Object.defineProperty({__proto__:null,createPromise:function(){let e,t;return{promise:new Promise((n,r)=>{e=n,t=r}),resolve:e,reject:t}}},Symbol.toStringTag,{value:"Module"})),ne=()=>{const e=new URLSearchParams(window.location.search).get("acct1");return W(u)||e},re=e=>e&&!/^VR/.test(e)?"real":"demo",ie=()=>{const e=W(c);if(e)return e;const t=window.location.hostname;return n[t]||"36300"},se=Object.freeze(Object.defineProperty({__proto__:null,getActiveLoginid:ne,getAppId:ie,getEnvironmentFromLoginid:re},Symbol.toStringTag,{value:"Module"})),oe=()=>{const e=W(d);if(e)return e;const n=ne();return t[re(n)]},ae=e=>e.replace(/(^\/|\/$|[^a-zA-Z0-9-_./()#])/g,""),le=Object.freeze(Object.defineProperty({__proto__:null,filterSearchParams:e=>{const t=new URLSearchParams(window.location.search);e.forEach(e=>t.delete(e));const n=`${window.location.pathname}${t.toString()?`?${t.toString()}`:""}`;window.history.pushState(null,"",n)},getDefaultActiveAccount:e=>{if(null!=e&&e.length)return e.find(e=>/^VR/.test(e.loginid))||e[0]},getDerivStaticURL:(e,t)=>{var n;const r=null!=t&&t.isEU?E:A;let i=(null==(n=W(h))?void 0:n.toLowerCase())??"en";return i="en"===i?"":`/${i.replace("_","-")}`,null!=t&&t.isDocument?`${r}/${ae(e)}`:`${r}${i}/${ae(e)}`},getLoginInfoFromURL:()=>{const e=[],t=[],n=new URLSearchParams(window.location.search);for(const[r,i]of n.entries()){const n=r.match(/^acct(\d+)/),s=r.match(/^token(\d+)/),o=r.match(/^cur(\d+)/);n&&(e[+n[1]-1]={...e[+n[1]-1]||{},loginid:i}),s&&(e[+s[1]-1]={...e[+s[1]-1]||{},token:i}),o&&(e[+o[1]-1]={...e[+o[1]-1]||{},currency:i}),(/acct/.test(r)||/token/.test(r)||/cur/.test(r))&&t.push(r)}return{loginInfo:e.filter(e=>["loginid","token","currency"].every(t=>Object.keys(e).includes(t))),paramsToDelete:t}},getOauthURL:()=>{const e=W(h)??"EN";return`https://oauth.deriv.com/oauth2/authorize?app_id=${ie()}&l=${e}&brand=${r}`},getQueryParameter:e=>new URLSearchParams(window.location.search).get(e),getServerURL:oe,getWebsocketURL:()=>{const e=oe(),t=W(h)??"EN";return`wss://${e}/websockets/v3?app_id=${ie()}&l=${t}&brand=${r}`},isDomainAllowed:e=>/^(((.*)\.)?(localhost:8443|pages.dev|binary\.(sx|com)|deriv.(com|me|be|dev)))$/.test(e),normalizePath:ae},Symbol.toStringTag,{value:"Module"})),ue=Object.freeze(Object.defineProperty({__proto__:null,getBrandWebsiteName:()=>M.domainName,getLegalLandingCompany:e=>N[e],getPlatformName:e=>L[e]},Symbol.toStringTag,{value:"Module"})),ce=e=>j.test(e),de=Object.freeze(Object.defineProperty({__proto__:null,mobileOSDetectAsync:async()=>{const e=window,t=navigator,n=t.userAgent??e.opera??"";if(/windows phone/i.test(n))return"Windows Phone";if(/android/i.test(n)){if(t.userAgentData){const e=await t.userAgentData.getHighEntropyValues(["model"]);if(ce((null==e?void 0:e.model)||""))return"huawei"}else if(ce(n)||/huawei/i.test(n))return"huawei";return"Android"}return/iPad|iPhone|iPod/.test(n)&&!e.MSStream?"iOS":"unknown"}},Symbol.toStringTag,{value:"Module"}));function he(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)e[r]=n[r]}return e}var ge=function e(t,n){function r(e,r,i){if(!(typeof document>"u")){"number"==typeof(i=he({},n,i)).expires&&(i.expires=new Date(Date.now()+864e5*i.expires)),i.expires&&(i.expires=i.expires.toUTCString()),e=encodeURIComponent(e).replace(/%(2[346B]|5E|60|7C)/g,decodeURIComponent).replace(/[()]/g,escape);var s="";for(var o in i)i[o]&&(s+="; "+o,!0!==i[o]&&(s+="="+i[o].split(";")[0]));return document.cookie=e+"="+t.write(r,e)+s}}return Object.create({set:r,get:function(e){if(!(typeof document>"u"||arguments.length&&!e)){for(var n=document.cookie?document.cookie.split("; "):[],r={},i=0;i<n.length;i++){var s=n[i].split("="),o=s.slice(1).join("=");try{var a=decodeURIComponent(s[0]);if(r[a]=t.read(o,a),e===a)break}catch{}}return e?r[e]:r}},remove:function(e,t){r(e,"",he({},t,{expires:-1}))},withAttributes:function(t){return e(this.converter,he({},this.attributes,t))},withConverter:function(t){return e(he({},this.converter,t),this.attributes)}},{attributes:{value:Object.freeze(n)},converter:{value:Object.freeze(t)}})}({read:function(e){return'"'===e[0]&&(e=e.slice(1,-1)),e.replace(/(%[\dA-F]{2})+/gi,decodeURIComponent)},write:function(e){return encodeURIComponent(e).replace(/%(2[346BF]|3[AC-F]|40|5[BDE]|60|7[BCD])/g,decodeURIComponent)}},{path:"/"});let fe=null;const pe=Object.freeze(Object.defineProperty({__proto__:null,getCountry:async()=>{var e;if(fe)return fe;const t=null==(e=JSON.parse(ge.get("website_status")||"{}"))?void 0:e.clients_country;return fe=(async()=>{var e;try{const n=await fetch(x).catch(()=>null);if(!n)return t||"";const r=await n.text().catch(()=>"");return r?(null==(e=Object.fromEntries(r.split("\n").map(e=>e.split("=",2))).loc)?void 0:e.toLowerCase())||t||"":t||""}catch{return t||""}})(),fe}},Symbol.toStringTag,{value:"Module"}));e.AppIDConstants=i,e.BrandConstants=U,e.BrandUtils=ue,e.CountryUtils=pe,e.CurrencyConstants=o,e.DocumentConstants=l,e.FormatUtils=F,e.ImageUtils=q,e.LocalStorageConstants=g,e.LocalStorageUtils=Q,e.MobileDevicesConstants=V,e.OSDetectionUtils=de,e.ObjectUtils=ee,e.PromiseUtils=te,e.URLConstants=R,e.URLUtils=le,e.ValidationConstants=$,e.WebSocketUtils=se,Object.defineProperty(e,Symbol.toStringTag,{value:"Module"})}(t)},186:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r=s(n(25)),i=s(n(42));function s(e){return e&&e.__esModule?e:{default:e}}var o=(0,r.default)("v5",80,i.default);t.default=o},200:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"BrowserCookieStickyBucketService",{enumerable:!0,get:function(){return o.BrowserCookieStickyBucketService}}),Object.defineProperty(t,"EVENT_EXPERIMENT_VIEWED",{enumerable:!0,get:function(){return u.EVENT_EXPERIMENT_VIEWED}}),Object.defineProperty(t,"EVENT_FEATURE_EVALUATED",{enumerable:!0,get:function(){return u.EVENT_FEATURE_EVALUATED}}),Object.defineProperty(t,"ExpressCookieStickyBucketService",{enumerable:!0,get:function(){return o.ExpressCookieStickyBucketService}}),Object.defineProperty(t,"GrowthBook",{enumerable:!0,get:function(){return i.GrowthBook}}),Object.defineProperty(t,"GrowthBookClient",{enumerable:!0,get:function(){return s.GrowthBookClient}}),Object.defineProperty(t,"GrowthBookMultiUser",{enumerable:!0,get:function(){return s.GrowthBookClient}}),Object.defineProperty(t,"LocalStorageStickyBucketService",{enumerable:!0,get:function(){return o.LocalStorageStickyBucketService}}),Object.defineProperty(t,"RedisStickyBucketService",{enumerable:!0,get:function(){return o.RedisStickyBucketService}}),Object.defineProperty(t,"StickyBucketService",{enumerable:!0,get:function(){return o.StickyBucketService}}),Object.defineProperty(t,"StickyBucketServiceSync",{enumerable:!0,get:function(){return o.StickyBucketServiceSync}}),Object.defineProperty(t,"UserScopedGrowthBook",{enumerable:!0,get:function(){return s.UserScopedGrowthBook}}),Object.defineProperty(t,"clearCache",{enumerable:!0,get:function(){return r.clearCache}}),Object.defineProperty(t,"configureCache",{enumerable:!0,get:function(){return r.configureCache}}),Object.defineProperty(t,"evalCondition",{enumerable:!0,get:function(){return a.evalCondition}}),Object.defineProperty(t,"getAutoExperimentChangeType",{enumerable:!0,get:function(){return l.getAutoExperimentChangeType}}),Object.defineProperty(t,"getPolyfills",{enumerable:!0,get:function(){return l.getPolyfills}}),Object.defineProperty(t,"helpers",{enumerable:!0,get:function(){return r.helpers}}),Object.defineProperty(t,"isURLTargeted",{enumerable:!0,get:function(){return l.isURLTargeted}}),Object.defineProperty(t,"onHidden",{enumerable:!0,get:function(){return r.onHidden}}),Object.defineProperty(t,"onVisible",{enumerable:!0,get:function(){return r.onVisible}}),Object.defineProperty(t,"paddedVersionString",{enumerable:!0,get:function(){return l.paddedVersionString}}),Object.defineProperty(t,"prefetchPayload",{enumerable:!0,get:function(){return i.prefetchPayload}}),Object.defineProperty(t,"setPolyfills",{enumerable:!0,get:function(){return r.setPolyfills}});var r=n(707),i=n(328),s=n(555),o=n(350),a=n(427),l=n(106),u=n(569)},213:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0,t.default="ffffffff-ffff-ffff-ffff-ffffffffffff"},311:(e,t)=>{"use strict";function n(e){return 14+(e+64>>>9<<4)+1}function r(e,t){var n=(65535&e)+(65535&t);return(e>>16)+(t>>16)+(n>>16)<<16|65535&n}function i(e,t,n,i,s,o){return r((a=r(r(t,e),r(i,o)))<<(l=s)|a>>>32-l,n);var a,l}function s(e,t,n,r,s,o,a){return i(t&n|~t&r,e,t,s,o,a)}function o(e,t,n,r,s,o,a){return i(t&r|n&~r,e,t,s,o,a)}function a(e,t,n,r,s,o,a){return i(t^n^r,e,t,s,o,a)}function l(e,t,n,r,s,o,a){return i(n^(t|~r),e,t,s,o,a)}Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0,t.default=function(e){if("string"==typeof e){var t=unescape(encodeURIComponent(e));e=new Uint8Array(t.length);for(var i=0;i<t.length;++i)e[i]=t.charCodeAt(i)}return function(e){for(var t=[],n=32*e.length,r="0123456789abcdef",i=0;i<n;i+=8){var s=e[i>>5]>>>i%32&255,o=parseInt(r.charAt(s>>>4&15)+r.charAt(15&s),16);t.push(o)}return t}(function(e,t){e[t>>5]|=128<<t%32,e[n(t)-1]=t;for(var i=1732584193,u=-271733879,c=-1732584194,d=271733878,h=0;h<e.length;h+=16){var g=i,f=u,p=c,v=d;i=s(i,u,c,d,e[h],7,-680876936),d=s(d,i,u,c,e[h+1],12,-389564586),c=s(c,d,i,u,e[h+2],17,606105819),u=s(u,c,d,i,e[h+3],22,-1044525330),i=s(i,u,c,d,e[h+4],7,-176418897),d=s(d,i,u,c,e[h+5],12,1200080426),c=s(c,d,i,u,e[h+6],17,-1473231341),u=s(u,c,d,i,e[h+7],22,-45705983),i=s(i,u,c,d,e[h+8],7,1770035416),d=s(d,i,u,c,e[h+9],12,-1958414417),c=s(c,d,i,u,e[h+10],17,-42063),u=s(u,c,d,i,e[h+11],22,-1990404162),i=s(i,u,c,d,e[h+12],7,1804603682),d=s(d,i,u,c,e[h+13],12,-40341101),c=s(c,d,i,u,e[h+14],17,-1502002290),i=o(i,u=s(u,c,d,i,e[h+15],22,1236535329),c,d,e[h+1],5,-165796510),d=o(d,i,u,c,e[h+6],9,-1069501632),c=o(c,d,i,u,e[h+11],14,643717713),u=o(u,c,d,i,e[h],20,-373897302),i=o(i,u,c,d,e[h+5],5,-701558691),d=o(d,i,u,c,e[h+10],9,38016083),c=o(c,d,i,u,e[h+15],14,-660478335),u=o(u,c,d,i,e[h+4],20,-405537848),i=o(i,u,c,d,e[h+9],5,568446438),d=o(d,i,u,c,e[h+14],9,-1019803690),c=o(c,d,i,u,e[h+3],14,-187363961),u=o(u,c,d,i,e[h+8],20,1163531501),i=o(i,u,c,d,e[h+13],5,-1444681467),d=o(d,i,u,c,e[h+2],9,-51403784),c=o(c,d,i,u,e[h+7],14,1735328473),i=a(i,u=o(u,c,d,i,e[h+12],20,-1926607734),c,d,e[h+5],4,-378558),d=a(d,i,u,c,e[h+8],11,-2022574463),c=a(c,d,i,u,e[h+11],16,1839030562),u=a(u,c,d,i,e[h+14],23,-35309556),i=a(i,u,c,d,e[h+1],4,-1530992060),d=a(d,i,u,c,e[h+4],11,1272893353),c=a(c,d,i,u,e[h+7],16,-155497632),u=a(u,c,d,i,e[h+10],23,-1094730640),i=a(i,u,c,d,e[h+13],4,681279174),d=a(d,i,u,c,e[h],11,-358537222),c=a(c,d,i,u,e[h+3],16,-722521979),u=a(u,c,d,i,e[h+6],23,76029189),i=a(i,u,c,d,e[h+9],4,-640364487),d=a(d,i,u,c,e[h+12],11,-421815835),c=a(c,d,i,u,e[h+15],16,530742520),i=l(i,u=a(u,c,d,i,e[h+2],23,-995338651),c,d,e[h],6,-198630844),d=l(d,i,u,c,e[h+7],10,1126891415),c=l(c,d,i,u,e[h+14],15,-1416354905),u=l(u,c,d,i,e[h+5],21,-57434055),i=l(i,u,c,d,e[h+12],6,1700485571),d=l(d,i,u,c,e[h+3],10,-1894986606),c=l(c,d,i,u,e[h+10],15,-1051523),u=l(u,c,d,i,e[h+1],21,-2054922799),i=l(i,u,c,d,e[h+8],6,1873313359),d=l(d,i,u,c,e[h+15],10,-30611744),c=l(c,d,i,u,e[h+6],15,-1560198380),u=l(u,c,d,i,e[h+13],21,1309151649),i=l(i,u,c,d,e[h+4],6,-145523070),d=l(d,i,u,c,e[h+11],10,-1120210379),c=l(c,d,i,u,e[h+2],15,718787259),u=l(u,c,d,i,e[h+9],21,-343485551),i=r(i,g),u=r(u,f),c=r(c,p),d=r(d,v)}return[i,u,c,d]}(function(e){if(0===e.length)return[];for(var t=8*e.length,r=new Uint32Array(n(t)),i=0;i<t;i+=8)r[i>>5]|=(255&e[i/8])<<i%32;return r}(e),8*e.length))}},316:function(e,t,n){"use strict";var r=this&&this.__assign||function(){return r=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var i in t=arguments[n])Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e},r.apply(this,arguments)},i=this&&this.__awaiter||function(e,t,n,r){return new(n||(n=Promise))(function(i,s){function o(e){try{l(r.next(e))}catch(e){s(e)}}function a(e){try{l(r.throw(e))}catch(e){s(e)}}function l(e){var t;e.done?i(e.value):(t=e.value,t instanceof n?t:new n(function(e){e(t)})).then(o,a)}l((r=r.apply(e,t||[])).next())})},s=this&&this.__generator||function(e,t){var n,r,i,s,o={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return s={next:a(0),throw:a(1),return:a(2)},"function"==typeof Symbol&&(s[Symbol.iterator]=function(){return this}),s;function a(a){return function(l){return function(a){if(n)throw new TypeError("Generator is already executing.");for(;s&&(s=0,a[0]&&(o=0)),o;)try{if(n=1,r&&(i=2&a[0]?r.return:a[0]?r.throw||((i=r.return)&&i.call(r),0):r.next)&&!(i=i.call(r,a[1])).done)return i;switch(r=0,i&&(a=[2&a[0],i.value]),a[0]){case 0:case 1:i=a;break;case 4:return o.label++,{value:a[1],done:!1};case 5:o.label++,r=a[1],a=[0];continue;case 7:a=o.ops.pop(),o.trys.pop();continue;default:if(!((i=(i=o.trys).length>0&&i[i.length-1])||6!==a[0]&&2!==a[0])){o=0;continue}if(3===a[0]&&(!i||a[1]>i[0]&&a[1]<i[3])){o.label=a[1];break}if(6===a[0]&&o.label<i[1]){o.label=i[1],i=a;break}if(i&&o.label<i[2]){o.label=i[2],o.ops.push(a);break}i[2]&&o.ops.pop(),o.trys.pop();continue}a=t.call(e,o)}catch(e){a=[6,e],r=0}finally{n=i=0}if(5&a[0])throw a[1];return{value:a[0]?a[1]:void 0,done:!0}}([a,l])}}};Object.defineProperty(t,"__esModule",{value:!0}),t.Growthbook=void 0;var o=n(200),a=n(720),l=function(){function e(e,t,n){void 0===n&&(n={});var l=this;this.analytics=new a.RudderAnalytics,this.isLoaded=!1,this.status=void 0,this.setAttributes=function(e){var t=e.id,n=e.country,i=e.user_language,s=e.device_language,o=e.device_type,a=e.utm_source,u=e.utm_medium,c=e.utm_campaign,d=e.is_authorised,h=e.url,g=e.domain,f=e.utm_content,p=e.residence_country,v=e.loggedIn,y=e.network_type,m=e.network_downlink,b=e.user_id,k=e.anonymous_id,S=e.account_mode,_=l.GrowthBook.getAttributes();l.GrowthBook.setAttributes(r(r(r(r(r(r(r(r(r(r(r(r(r(r(r(r(r(r(r(r({},_),{id:t}),void 0!==b&&{user_id:b}),void 0!==k&&{anonymous_id:k}),void 0!==n&&{country:n}),void 0!==p&&{residence_country:p}),void 0!==i&&{user_language:i}),void 0!==s&&{device_language:s}),void 0!==o&&{device_type:o}),void 0!==a&&{utm_source:a}),void 0!==u&&{utm_medium:u}),void 0!==c&&{utm_campaign:c}),void 0!==d&&{is_authorised:d}),void 0!==h&&{url:h}),void 0!==g&&{domain:g}),void 0!==f&&{utm_content:f}),void 0!==v&&{loggedIn:v}),void 0!==y&&{network_type:y}),void 0!==m&&{network_downlink:m}),void 0!==S&&{account_mode:S}))},this.getFeatureValue=function(e,t){return l.GrowthBook.getFeatureValue(e,t)},this.getStatus=function(){return i(l,void 0,void 0,function(){return s(this,function(e){switch(e.label){case 0:return[4,this.waitForIsLoaded()];case 1:return e.sent(),[2,{isLoaded:this.isLoaded,status:this.status}]}})})},this.getFeatureState=function(e){return l.GrowthBook.evalFeature(e)},this.setUrl=function(e){return l.GrowthBook.setURL(e)},this.isOn=function(e){return l.GrowthBook.isOn(e)},this.init=function(){return i(l,void 0,void 0,function(){var e;return s(this,function(t){switch(t.label){case 0:return[4,this.GrowthBook.init({timeout:2e3,streaming:!0}).catch(function(e){console.error(e)})];case 1:return e=t.sent(),this.status=e,this.isLoaded=!0,[2]}})})},this.GrowthBook=new o.GrowthBook(r({apiHost:"https://cdn.growthbook.io",clientKey:e,decryptionKey:t,antiFlicker:!1,navigateDelay:0,antiFlickerTimeout:3500,subscribeToChanges:!0,enableDevMode:null===window||void 0===window?void 0:window.location.hostname.includes("localhost"),trackingCallback:function(e,t){window.dataLayer&&window.dataLayer.push({event:"experiment_viewed",event_category:"experiment",rudder_anonymous_id:l.analytics.getAnonymousId(),experiment_id:e.key,variation_id:t.variationId}),l.analytics.track("experiment_viewed",{experimentId:e.key,variationId:t.variationId})}},n)),this.init()}return e.prototype.reapplyExperiment=function(e){var t=null!=e?e:window.location.href;this.GrowthBook.setURL(t),console.log("Route changed, new URL:",t)},e.prototype.waitForIsLoaded=function(){var e=this;return new Promise(function(t){var n=setInterval(function(){e.isLoaded&&(clearInterval(n),t())},100)})},e.getGrowthBookInstance=function(t,n,r){return e._instance||(e._instance=new e(t,null!=n?n:"",r)),e._instance},e}();t.Growthbook=l},328:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.GrowthBook=void 0,t.prefetchPayload=async function(e){const t=new c(e);await(0,o.refreshFeatures)({instance:t,skipCache:e.skipCache,allowStale:!1,backgroundSync:e.streaming}),t.destroy()};var r,i=(r=n(591))&&r.__esModule?r:{default:r},s=n(106),o=n(707),a=n(569);const l="undefined"!=typeof window&&"undefined"!=typeof document,u=(0,s.loadSDKVersion)();class c{constructor(e){if(e=e||{},this.version=u,this._options=this.context=e,this._renderer=e.renderer||null,this._trackedExperiments=new Set,this._completedChangeIds=new Set,this._trackedFeatures={},this.debug=!!e.debug,this._subscriptions=new Set,this.ready=!1,this._assigned=new Map,this._activeAutoExperiments=new Map,this._triggeredExpKeys=new Set,this._initialized=!1,this._redirectedUrl="",this._deferredTrackingCalls=new Map,this._autoExperimentsAllowed=!e.disableExperimentsOnLoad,this._destroyCallbacks=[],this.logs=[],this.log=this.log.bind(this),this._saveDeferredTrack=this._saveDeferredTrack.bind(this),this._onExperimentEval=this._onExperimentEval.bind(this),this._fireSubscriptions=this._fireSubscriptions.bind(this),this._recordChangedId=this._recordChangedId.bind(this),e.remoteEval){if(e.decryptionKey)throw new Error("Encryption is not available for remoteEval");if(!e.clientKey)throw new Error("Missing clientKey");let t=!1;try{t=!!new URL(e.apiHost||"").hostname.match(/growthbook\.io$/i)}catch(e){}if(t)throw new Error("Cannot use remoteEval on GrowthBook Cloud")}else if(e.cacheKeyAttributes)throw new Error("cacheKeyAttributes are only used for remoteEval");if(e.stickyBucketService){const t=e.stickyBucketService;this._saveStickyBucketAssignmentDoc=e=>t.saveAssignments(e)}if(e.plugins)for(const t of e.plugins)t(this);if(e.features&&(this.ready=!0),l&&e.enableDevMode&&(window._growthbook=this,document.dispatchEvent(new Event("gbloaded"))),e.experiments&&(this.ready=!0,this._updateAllAutoExperiments()),this._options.stickyBucketService&&this._options.stickyBucketAssignmentDocs)for(const e in this._options.stickyBucketAssignmentDocs){const t=this._options.stickyBucketAssignmentDocs[e];t&&this._options.stickyBucketService.saveAssignments(t).catch(()=>{})}this.ready&&this.refreshStickyBuckets(this.getPayload())}async setPayload(e){this._payload=e;const t=await(0,a.decryptPayload)(e,this._options.decryptionKey);this._decryptedPayload=t,await this.refreshStickyBuckets(t),t.features&&(this._options.features=t.features),t.savedGroups&&(this._options.savedGroups=t.savedGroups),t.experiments&&(this._options.experiments=t.experiments,this._updateAllAutoExperiments()),this.ready=!0,this._render()}initSync(e){this._initialized=!0;const t=e.payload;if(t.encryptedExperiments||t.encryptedFeatures)throw new Error("initSync does not support encrypted payloads");return this._options.stickyBucketService&&!this._options.stickyBucketAssignmentDocs&&(this._options.stickyBucketAssignmentDocs=this.generateStickyBucketAssignmentDocsSync(this._options.stickyBucketService,t)),this._payload=t,this._decryptedPayload=t,t.features&&(this._options.features=t.features),t.experiments&&(this._options.experiments=t.experiments,this._updateAllAutoExperiments()),this.ready=!0,(0,o.startStreaming)(this,e),this}async init(e){if(this._initialized=!0,(e=e||{}).cacheSettings&&(0,o.configureCache)(e.cacheSettings),e.payload)return await this.setPayload(e.payload),(0,o.startStreaming)(this,e),{success:!0,source:"init"};{const{data:t,...n}=await this._refresh({...e,allowStale:!0});return(0,o.startStreaming)(this,e),await this.setPayload(t||{}),n}}async loadFeatures(e){e=e||{},await this.init({skipCache:e.skipCache,timeout:e.timeout,streaming:(this._options.backgroundSync??!0)&&(e.autoRefresh||this._options.subscribeToChanges)})}async refreshFeatures(e){const t=await this._refresh({...e||{},allowStale:!1});t.data&&await this.setPayload(t.data)}getApiInfo(){return[this.getApiHosts().apiHost,this.getClientKey()]}getApiHosts(){return(0,a.getApiHosts)(this._options)}getClientKey(){return this._options.clientKey||""}getPayload(){return this._payload||{features:this.getFeatures(),experiments:this.getExperiments()}}getDecryptedPayload(){return this._decryptedPayload||this.getPayload()}isRemoteEval(){return this._options.remoteEval||!1}getCacheKeyAttributes(){return this._options.cacheKeyAttributes}async _refresh(e){let{timeout:t,skipCache:n,allowStale:r,streaming:i}=e;if(!this._options.clientKey)throw new Error("Missing clientKey");return(0,o.refreshFeatures)({instance:this,timeout:t,skipCache:n||this._options.disableCache,allowStale:r,backgroundSync:i??this._options.backgroundSync??!0})}_render(){if(this._renderer)try{this._renderer()}catch(e){console.error("Failed to render",e)}}setFeatures(e){this._options.features=e,this.ready=!0,this._render()}async setEncryptedFeatures(e,t,n){const r=await(0,s.decrypt)(e,t||this._options.decryptionKey,n);this.setFeatures(JSON.parse(r))}setExperiments(e){this._options.experiments=e,this.ready=!0,this._updateAllAutoExperiments()}async setEncryptedExperiments(e,t,n){const r=await(0,s.decrypt)(e,t||this._options.decryptionKey,n);this.setExperiments(JSON.parse(r))}async setAttributes(e){this._options.attributes=e,this._options.stickyBucketService&&await this.refreshStickyBuckets(),this._options.remoteEval?await this._refreshForRemoteEval():(this._render(),this._updateAllAutoExperiments())}async updateAttributes(e){return this.setAttributes({...this._options.attributes,...e})}async setAttributeOverrides(e){this._options.attributeOverrides=e,this._options.stickyBucketService&&await this.refreshStickyBuckets(),this._options.remoteEval?await this._refreshForRemoteEval():(this._render(),this._updateAllAutoExperiments())}async setForcedVariations(e){this._options.forcedVariations=e||{},this._options.remoteEval?await this._refreshForRemoteEval():(this._render(),this._updateAllAutoExperiments())}setForcedFeatures(e){this._options.forcedFeatureValues=e,this._render()}async setURL(e){if(e!==this._options.url){if(this._options.url=e,this._redirectedUrl="",this._options.remoteEval)return await this._refreshForRemoteEval(),void this._updateAllAutoExperiments(!0);this._updateAllAutoExperiments(!0)}}getAttributes(){return{...this._options.attributes,...this._options.attributeOverrides}}getForcedVariations(){return this._options.forcedVariations||{}}getForcedFeatures(){return this._options.forcedFeatureValues||new Map}getStickyBucketAssignmentDocs(){return this._options.stickyBucketAssignmentDocs||{}}getUrl(){return this._options.url||""}getFeatures(){return this._options.features||{}}getExperiments(){return this._options.experiments||[]}getCompletedChangeIds(){return Array.from(this._completedChangeIds)}subscribe(e){return this._subscriptions.add(e),()=>{this._subscriptions.delete(e)}}async _refreshForRemoteEval(){if(!this._options.remoteEval)return;if(!this._initialized)return;const e=await this._refresh({allowStale:!1});e.data&&await this.setPayload(e.data)}getAllResults(){return new Map(this._assigned)}onDestroy(e){this._destroyCallbacks.push(e)}isDestroyed(){return!!this._destroyed}destroy(e){e=e||{},this._destroyed=!0,this._destroyCallbacks.forEach(e=>{try{e()}catch(e){console.error(e)}}),this._subscriptions.clear(),this._assigned.clear(),this._trackedExperiments.clear(),this._completedChangeIds.clear(),this._deferredTrackingCalls.clear(),this._trackedFeatures={},this._destroyCallbacks=[],this._payload=void 0,this._saveStickyBucketAssignmentDoc=void 0,(0,o.unsubscribe)(this),e.destroyAllStreams&&(0,o.clearAutoRefresh)(),this.logs=[],l&&window._growthbook===this&&delete window._growthbook,this._activeAutoExperiments.forEach(e=>{e.undo()}),this._activeAutoExperiments.clear(),this._triggeredExpKeys.clear()}setRenderer(e){this._renderer=e}forceVariation(e,t){this._options.forcedVariations=this._options.forcedVariations||{},this._options.forcedVariations[e]=t,this._options.remoteEval?this._refreshForRemoteEval():(this._updateAllAutoExperiments(),this._render())}run(e){const{result:t}=(0,a.runExperiment)(e,null,this._getEvalContext());return this._onExperimentEval(e,t),t}triggerExperiment(e){return this._triggeredExpKeys.add(e),this._options.experiments?this._options.experiments.filter(t=>t.key===e).map(e=>this._runAutoExperiment(e)).filter(e=>null!==e):null}triggerAutoExperiments(){this._autoExperimentsAllowed=!0,this._updateAllAutoExperiments(!0)}_getEvalContext(){return{user:this._getUserContext(),global:this._getGlobalContext(),stack:{evaluatedFeatures:new Set}}}_getUserContext(){return{attributes:this._options.user?{...this._options.user,...this._options.attributes}:this._options.attributes,enableDevMode:this._options.enableDevMode,blockedChangeIds:this._options.blockedChangeIds,stickyBucketAssignmentDocs:this._options.stickyBucketAssignmentDocs,url:this._getContextUrl(),forcedVariations:this._options.forcedVariations,forcedFeatureValues:this._options.forcedFeatureValues,attributeOverrides:this._options.attributeOverrides,saveStickyBucketAssignmentDoc:this._saveStickyBucketAssignmentDoc,trackingCallback:this._options.trackingCallback,onFeatureUsage:this._options.onFeatureUsage,devLogs:this.logs,trackedExperiments:this._trackedExperiments,trackedFeatureUsage:this._trackedFeatures}}_getGlobalContext(){return{features:this._options.features,experiments:this._options.experiments,log:this.log,enabled:this._options.enabled,qaMode:this._options.qaMode,savedGroups:this._options.savedGroups,groups:this._options.groups,overrides:this._options.overrides,onExperimentEval:this._onExperimentEval,recordChangeId:this._recordChangedId,saveDeferredTrack:this._saveDeferredTrack,eventLogger:this._options.eventLogger}}_runAutoExperiment(e,t){const n=this._activeAutoExperiments.get(e);if(e.manual&&!this._triggeredExpKeys.has(e.key)&&!n)return null;let r,i;this._isAutoExperimentBlockedByContext(e)?r=(0,a.getExperimentResult)(this._getEvalContext(),e,-1,!1,""):(({result:r,trackingCall:i}=(0,a.runExperiment)(e,null,this._getEvalContext())),this._onExperimentEval(e,r));const o=JSON.stringify(r.value);if(!t&&r.inExperiment&&n&&n.valueHash===o)return r;if(n&&this._undoActiveAutoExperiment(e),r.inExperiment){const t=(0,s.getAutoExperimentChangeType)(e);if("redirect"===t&&r.value.urlRedirect&&e.urlPatterns){const t=e.persistQueryString?(0,s.mergeQueryStrings)(this._getContextUrl(),r.value.urlRedirect):r.value.urlRedirect;if((0,s.isURLTargeted)(t,e.urlPatterns))return this.log("Skipping redirect because original URL matches redirect URL",{id:e.key}),r;this._redirectedUrl=t;const{navigate:n,delay:o}=this._getNavigateFunction();if(n)if(l)Promise.all([...i?[(0,s.promiseTimeout)(i,this._options.maxNavigateDelay??1e3)]:[],new Promise(e=>window.setTimeout(e,this._options.navigateDelay??o))]).then(()=>{try{n(t)}catch(e){console.error(e)}});else try{n(t)}catch(e){console.error(e)}}else if("visual"===t){const t=this._options.applyDomChangesCallback?this._options.applyDomChangesCallback(r.value):this._applyDOMChanges(r.value);t&&this._activeAutoExperiments.set(e,{undo:t,valueHash:o})}}return r}_undoActiveAutoExperiment(e){const t=this._activeAutoExperiments.get(e);t&&(t.undo(),this._activeAutoExperiments.delete(e))}_updateAllAutoExperiments(e){if(!this._autoExperimentsAllowed)return;const t=this._options.experiments||[],n=new Set(t);this._activeAutoExperiments.forEach((e,t)=>{n.has(t)||(e.undo(),this._activeAutoExperiments.delete(t))});for(const n of t){const t=this._runAutoExperiment(n,e);if(t&&t.inExperiment&&"redirect"===(0,s.getAutoExperimentChangeType)(n))break}}_onExperimentEval(e,t){const n=this._assigned.get(e.key);this._assigned.set(e.key,{experiment:e,result:t}),this._subscriptions.size>0&&this._fireSubscriptions(e,t,n)}_fireSubscriptions(e,t,n){n&&n.result.inExperiment===t.inExperiment&&n.result.variationId===t.variationId||this._subscriptions.forEach(n=>{try{n(e,t)}catch(e){console.error(e)}})}_recordChangedId(e){this._completedChangeIds.add(e)}isOn(e){return this.evalFeature(e).on}isOff(e){return this.evalFeature(e).off}getFeatureValue(e,t){const n=this.evalFeature(e).value;return null===n?t:n}feature(e){return this.evalFeature(e)}evalFeature(e){return(0,a.evalFeature)(e,this._getEvalContext())}log(e,t){this.debug&&(this._options.log?this._options.log(e,t):console.log(e,t))}getDeferredTrackingCalls(){return Array.from(this._deferredTrackingCalls.values())}setDeferredTrackingCalls(e){this._deferredTrackingCalls=new Map(e.filter(e=>e&&e.experiment&&e.result).map(e=>[(0,a.getExperimentDedupeKey)(e.experiment,e.result),e]))}async fireDeferredTrackingCalls(){if(!this._options.trackingCallback)return;const e=[];this._deferredTrackingCalls.forEach(t=>{t&&t.experiment&&t.result?e.push(this._options.trackingCallback(t.experiment,t.result)):console.error("Invalid deferred tracking call",{call:t})}),this._deferredTrackingCalls.clear(),await Promise.all(e)}setTrackingCallback(e){this._options.trackingCallback=e,this.fireDeferredTrackingCalls()}setEventLogger(e){this._options.eventLogger=e}async logEvent(e,t){if(this._destroyed)console.error("Cannot log event to destroyed GrowthBook instance");else if(this._options.enableDevMode&&this.logs.push({eventName:e,properties:t,timestamp:Date.now().toString(),logType:"event"}),this._options.eventLogger)try{await this._options.eventLogger(e,t||{},this._getUserContext())}catch(e){console.error(e)}else console.error("No event logger configured")}_saveDeferredTrack(e){this._deferredTrackingCalls.set((0,a.getExperimentDedupeKey)(e.experiment,e.result),e)}_getContextUrl(){return this._options.url||(l?window.location.href:"")}_isAutoExperimentBlockedByContext(e){const t=(0,s.getAutoExperimentChangeType)(e);if("visual"===t){if(this._options.disableVisualExperiments)return!0;if(this._options.disableJsInjection&&e.variations.some(e=>e.js))return!0}else{if("redirect"!==t)return!0;if(this._options.disableUrlRedirectExperiments)return!0;try{const t=new URL(this._getContextUrl());for(const n of e.variations){if(!n||!n.urlRedirect)continue;const e=new URL(n.urlRedirect);if(this._options.disableCrossOriginUrlRedirectExperiments){if(e.protocol!==t.protocol)return!0;if(e.host!==t.host)return!0}}}catch(t){return this.log("Error parsing current or redirect URL",{id:e.key,error:t}),!0}}return!(!e.changeId||!(this._options.blockedChangeIds||[]).includes(e.changeId))}getRedirectUrl(){return this._redirectedUrl}_getNavigateFunction(){return this._options.navigate?{navigate:this._options.navigate,delay:0}:l?{navigate:e=>{window.location.replace(e)},delay:100}:{navigate:null,delay:0}}_applyDOMChanges(e){if(!l)return;const t=[];if(e.css){const n=document.createElement("style");n.innerHTML=e.css,document.head.appendChild(n),t.push(()=>n.remove())}if(e.js){const n=document.createElement("script");n.innerHTML=e.js,this._options.jsInjectionNonce&&(n.nonce=this._options.jsInjectionNonce),document.head.appendChild(n),t.push(()=>n.remove())}return e.domMutations&&e.domMutations.forEach(e=>{t.push(i.default.declarative(e).revert)}),()=>{t.forEach(e=>e())}}async refreshStickyBuckets(e){if(this._options.stic