var rudderanalytics=function(e){"use strict";function t(e){return null!=e&&"object"==typeof e&&!0===e["@@functional/placeholder"]}function n(e){return function n(r){return 0===arguments.length||t(r)?n:e.apply(this,arguments)}}function r(e){return function r(i,s){switch(arguments.length){case 0:return r;case 1:return t(i)?r:n((function(t){return e(i,t)}));default:return t(i)&&t(s)?r:t(i)?n((function(t){return e(t,s)})):t(s)?n((function(t){return e(i,t)})):e(i,s)}}}function i(e){return function i(s,o,a){switch(arguments.length){case 0:return i;case 1:return t(s)?i:r((function(t,n){return e(s,t,n)}));case 2:return t(s)&&t(o)?i:t(s)?r((function(t,n){return e(t,o,n)})):t(o)?r((function(t,n){return e(s,t,n)})):n((function(t){return e(s,o,t)}));default:return t(s)&&t(o)&&t(a)?i:t(s)&&t(o)?r((function(t,n){return e(t,n,a)})):t(s)&&t(a)?r((function(t,n){return e(t,o,n)})):t(o)&&t(a)?r((function(t,n){return e(s,t,n)})):t(s)?n((function(t){return e(t,o,a)})):t(o)?n((function(t){return e(s,t,a)})):t(a)?n((function(t){return e(s,o,t)})):e(s,o,a)}}}function s(e,t){return Object.prototype.hasOwnProperty.call(t,e)}var o=n((function(e){return null===e?"Null":void 0===e?"Undefined":Object.prototype.toString.call(e).slice(8,-1)}));function a(e){return"[object Object]"===Object.prototype.toString.call(e)}const l=Number.isInteger||function(e){return(e|0)===e};function u(e,t){var n,r=e<0?t.length+e:e;return n=t,"[object String]"===Object.prototype.toString.call(n)?t.charAt(r):t[r]}function c(e,t,n){if(n||(n=new d),function(e){var t=typeof e;return null==e||"object"!=t&&"function"!=t}(e))return e;var r,i=function(t){var r=n.get(e);if(r)return r;for(var i in n.set(e,t),e)Object.prototype.hasOwnProperty.call(e,i)&&(t[i]=c(e[i],!0,n));return t};switch(o(e)){case"Object":return i(Object.create(Object.getPrototypeOf(e)));case"Array":return i(Array(e.length));case"Date":return new Date(e.valueOf());case"RegExp":return r=e,new RegExp(r.source,r.flags?r.flags:(r.global?"g":"")+(r.ignoreCase?"i":"")+(r.multiline?"m":"")+(r.sticky?"y":"")+(r.unicode?"u":"")+(r.dotAll?"s":""));case"Int8Array":case"Uint8Array":case"Uint8ClampedArray":case"Int16Array":case"Uint16Array":case"Int32Array":case"Uint32Array":case"Float32Array":case"Float64Array":case"BigInt64Array":case"BigUint64Array":return e.slice();default:return e}}var d=function(){function e(){this.map={},this.length=0}return e.prototype.set=function(e,t){var n=this.hash(e),r=this.map[n];r||(this.map[n]=r=[]),r.push([e,t]),this.length+=1},e.prototype.hash=function(e){var t=[];for(var n in e)t.push(Object.prototype.toString.call(e[n]));return t.join()},e.prototype.get=function(e){if(this.length<=180)for(var t in this.map)for(var n=this.map[t],r=0;r"function"==typeof e&&Boolean(e.constructor&&e.call&&e.apply),E=e=>"string"==typeof e,S=e=>null===e,k=e=>void 0===e,I=e=>S(e)||k(e),T=e=>!k(e),w=e=>!I(e),A=e=>e instanceof Error,P=(e,t)=>{const n=t.split(".");return y(n,e)},C=e=>!S(e)&&"object"==typeof e&&!Array.isArray(e),R=e=>!S(e)&&"[object Object]"===Object.prototype.toString.call(e),$=(e,t)=>{if(!Array.isArray(e)||!Array.isArray(t))return g(t);const n=g(e);return t.forEach(((e,t)=>{n[t]=Array.isArray(e)||C(e)?D(n[t],e):e})),n},D=(e,t)=>f($,e,t),O=e=>R(e)&&Object.keys(e).length>0,M=e=>{const t=m(T,e);return Object.keys(t).forEach((e=>{const n=t[e];R(n)&&(t[e]=M(n))})),t},B=e=>{const t=m(w,e);return Object.keys(t).forEach((e=>{const n=t[e];R(n)&&(t[e]=B(n))})),t},L=e=>e.replace(/^\.+/,""),N=e=>{let t=e;if(!E(e)&&!I(e))try{t=JSON.stringify(e)}catch(e){t=null}return t},x=e=>(e=>{const t=Array.from(e,(e=>String.fromCodePoint(e))).join("");return globalThis.btoa(t)})((new TextEncoder).encode(e)),U=(e,t,n,r,i)=>{const s={category:e,name:t,properties:n,options:r,callback:void 0};b(i)&&(s.callback=i),b(r)&&(s.category=e,s.name=t,s.properties=n,s.options=void 0,s.callback=r),b(n)&&(s.category=e,s.name=t,s.properties=void 0,s.options=void 0,s.callback=n),b(t)&&(s.category=e,s.name=void 0,s.properties=void 0,s.options=void 0,s.callback=t),b(e)&&(s.category=void 0,s.name=void 0,s.properties=void 0,s.options=void 0,s.callback=e),R(e)?(s.name=void 0,s.category=void 0,s.properties=e,b(t)?s.options=void 0:s.options=t):R(t)&&(s.name=void 0,s.properties=t,b(n)?s.options=void 0:s.options=n),E(e)&&!E(t)&&(s.category=void 0,s.name=e),T(s.category)||(s.category=void 0),T(s.name)||(s.name=void 0),s.properties=s.properties?g(s.properties):{},T(s.options)?s.options=g(s.options):s.options=void 0;const o=E(s.name)?s.name:s.properties.name,a=E(s.category)?s.category:s.properties.category;return s.properties=D(R(s.properties)?s.properties:{},{...o&&{name:o},...a&&{category:a}}),s},j=(e,t,n,r)=>{const i={name:e,properties:t,options:n,callback:void 0};return b(r)&&(i.callback=r),b(n)&&(i.properties=t,i.options=void 0,i.callback=n),b(t)&&(i.properties=void 0,i.options=void 0,i.callback=t),i.properties=w(i.properties)?g(i.properties):{},T(i.options)?i.options=g(i.options):i.options=void 0,i},H=(e,t,n,r)=>{const i={userId:e,traits:t,options:n,callback:void 0};return b(r)&&(i.callback=r),b(n)&&(i.userId=e,i.traits=t,i.options=void 0,i.callback=n),b(t)&&(i.userId=e,i.traits=void 0,i.options=void 0,i.callback=t),(R(e)||S(e))&&(i.userId=null,i.traits=e,b(t)?i.options=void 0:i.options=t),i.userId=N(i.userId),R(i.traits)?i.traits=g(i.traits):i.traits=void 0,T(i.options)?i.options=g(i.options):i.options=void 0,i},_=(e,t,n,r)=>{const i={to:e,from:t,options:n,callback:void 0};return b(r)&&(i.callback=r),b(n)&&(i.to=e,i.from=t,i.options=void 0,i.callback=n),b(t)?(i.to=e,i.from=void 0,i.options=void 0,i.callback=t):(R(t)||S(t))&&(i.to=e,i.from=void 0,i.options=t),T(i.to)&&(i.to=N(i.to)),T(i.from)?i.from=N(i.from):i.from=void 0,T(i.options)?i.options=g(i.options):i.options=void 0,i},F=(e,t,n,r)=>{const i={groupId:e,traits:t,options:n,callback:void 0};return b(r)&&(i.callback=r),b(n)&&(i.groupId=e,i.traits=t,i.options=void 0,i.callback=n),b(t)&&(i.groupId=e,i.traits=void 0,i.options=void 0,i.callback=t),(R(e)||S(e))&&(i.groupId=null,i.traits=e,b(t)?i.options=void 0:i.options=t),i.groupId=N(i.groupId),R(i.traits)?i.traits=g(i.traits):i.traits=void 0,T(i.options)?i.options=g(i.options):i.options=void 0,i},Q="CapabilitiesManager",G="ConfigManager",K="EventManager",z="PluginsManager",V="UserSessionManager",q="ErrorHandler",W="PluginEngine",J="StoreManager",X="RudderStackApplication",Z="AnalyticsCore",Y="RudderLabs JavaScript SDK",ee="3.7.6",te="RudderJS-Initiated",ne="preloadedEventsBuffer",re="ajs_aid",ie="ajs_uid",se="ajs_event",oe=18e5,ae=(e="app")=>{globalThis.RudderStackGlobals||(globalThis.RudderStackGlobals={}),globalThis.RudderStackGlobals[e]||(globalThis.RudderStackGlobals[e]={})},le=(e,t,n="app")=>{ae(n),globalThis.RudderStackGlobals[n][e]=t};const ue=(e,t)=>{const n={};return e.forEach(((r,i)=>{if(i.startsWith(t)){const r=i.substring(t.length);n[r]=e.get(i)}})),n},ce=e=>{const t=((e,t="app")=>(ae(t),globalThis.RudderStackGlobals[t][e]))(ne)||[];((e=[])=>{const t="ajs_trait_",n="ajs_prop_",r=new URLSearchParams(globalThis.location.search);r.get(se)&&e.unshift(["track",r.get(se),ue(r,n)]),r.get(ie)&&e.unshift(["identify",r.get(ie),ue(r,t)]),r.get(re)&&e.unshift(["setAnonymousId",r.get(re)])})(t),t.length>0&&(e.enqueuePreloadBufferEvents(t),le(ne,[]))},de=(e,t)=>{const n=e.shift();let r;if(b(t[n])){switch(n){case"page":r=U(...e);break;case"track":r=j(...e);break;case"identify":r=H(...e);break;case"alias":r=_(...e);break;case"group":r=F(...e);break;default:t[n](...e)}r&&t[n](r)}},ge=":: ",he=(e,t)=>`Failed to load the script with the id "${e}" from URL "${t}".`,pe=(e,t,n)=>{const r=[];return function(i,s){if(!(t?.includes(i)||e&&I(s))){if("object"!=typeof s||S(s))return s;for(;r.length>0&&r[r.length-1]!==this;)r.pop();return r.includes(s)?(n?.warn(((e,t)=>`${e}${ge}A circular reference has been detected in the object and the property "${t}" has been dropped from the output.`)("JSONStringify",i)),"[Circular Reference]"):(r.push(s),s)}}},ve=(e,t,n,r)=>{try{return JSON.stringify(e,pe(t,n,r))}catch(e){return r?.warn("Failed to convert the value to a JSON string.",e),null}},fe=(e,t)=>{let n=e;return A(e)?n.message=`${t}: ${e.message}`:n=new Error(`${t}: ${ve(e)}`),n},ye=(e,t,n,r=!0,i)=>new Promise(((s,o)=>{document.getElementById(t)&&o(new Error((e=>`A script with the id "${e}" is already loaded. Skipping the loading of this script to prevent conflicts.`)(t)));try{let a;(e=>{const t=document.getElementsByTagName("head");if(t.length>0)return void t[0]?.insertBefore(e,t[0]?.firstChild);const n=document.getElementsByTagName("script");if(n.length>0&&n[0]?.parentNode)return void n[0]?.parentNode.insertBefore(e,n[0]);const r=document.createElement("head");r.appendChild(e);const i=document.getElementsByTagName("html")[0];i?.insertBefore(r,i.firstChild)})(((e,t,n=!0,r=null,i=null,s={})=>{const o=document.createElement("script");return o.type="text/javascript",o.onload=r,o.onerror=i,o.src=e,o.id=t,o.async=n,Object.keys(s).forEach((e=>{o.setAttribute(e,s[e])})),o.setAttribute("data-loader","RS_JS_SDK"),o})(e,t,r,(()=>{globalThis.clearTimeout(a),s(t)}),(()=>{globalThis.clearTimeout(a),o(new Error(he(t,e)))}),i)),a=globalThis.setTimeout((()=>{o(new Error(((e,t,n)=>`A timeout of ${n} ms occurred while trying to load the script with id "${e}" from URL "${t}".`)(t,e,n)))}),n)}catch(n){o(fe(n,he(t,e)))}}));class me{hasErrorHandler=!1;constructor(e,t,n=1e4){this.errorHandler=e,this.logger=t,this.timeout=n,this.hasErrorHandler=Boolean(this.errorHandler),this.onError=this.onError.bind(this)}loadJSFile(e){const{url:t,id:n,timeout:r,async:i,callback:s,extraAttributes:o}=e,a=!b(s);ye(t,n,r||this.timeout,i,o).then((e=>{a||s(e)})).catch((e=>{this.onError(e),a||s()}))}onError(e){if(!this.hasErrorHandler)throw e;this.errorHandler?.onError(e,"ExternalSrcLoader")}}var be=Symbol.for("preact-signals");function Ee(){if(Te>1)Te--;else{for(var e,t=!1;void 0!==Ie;){var n=Ie;for(Ie=void 0,we++;void 0!==n;){var r=n.o;if(n.o=void 0,n.f&=-3,!(8&n.f)&&$e(n))try{n.c()}catch(n){t||(e=n,t=!0)}n=r}}if(we=0,Te--,t)throw e}}function Se(e){if(Te>0)return e();Te++;try{return e()}finally{Ee()}}var ke=void 0,Ie=void 0,Te=0,we=0,Ae=0;function Pe(e){if(void 0!==ke){var t=e.n;if(void 0===t||t.t!==ke)return t={i:0,S:e,p:ke.s,n:void 0,t:ke,e:void 0,x:void 0,r:t},void 0!==ke.s&&(ke.s.n=t),ke.s=t,e.n=t,32&ke.f&&e.S(t),t;if(-1===t.i)return t.i=0,void 0!==t.n&&(t.n.p=t.p,void 0!==t.p&&(t.p.n=t.n),t.p=ke.s,t.n=void 0,ke.s.n=t,ke.s=t),t}}function Ce(e){this.v=e,this.i=0,this.n=void 0,this.t=void 0}function Re(e){return new Ce(e)}function $e(e){for(var t=e.s;void 0!==t;t=t.n)if(t.S.i!==t.i||!t.S.h()||t.S.i!==t.i)return!0;return!1}function De(e){for(var t=e.s;void 0!==t;t=t.n){var n=t.S.n;if(void 0!==n&&(t.r=n),t.S.n=t,t.i=-1,void 0===t.n){e.s=t;break}}}function Oe(e){for(var t=e.s,n=void 0;void 0!==t;){var r=t.p;-1===t.i?(t.S.U(t),void 0!==r&&(r.n=t.n),void 0!==t.n&&(t.n.p=r)):n=t,t.S.n=t.r,void 0!==t.r&&(t.r=void 0),t=r}e.s=n}function Me(e){Ce.call(this,void 0),this.x=e,this.s=void 0,this.g=Ae-1,this.f=4}function Be(e){var t=e.u;if(e.u=void 0,"function"==typeof t){Te++;var n=ke;ke=void 0;try{t()}catch(t){throw e.f&=-2,e.f|=8,Le(e),t}finally{ke=n,Ee()}}}function Le(e){for(var t=e.s;void 0!==t;t=t.n)t.S.U(t);e.x=void 0,e.s=void 0,Be(e)}function Ne(e){if(ke!==this)throw new Error("Out-of-order effect");Oe(this),ke=e,this.f&=-2,8&this.f&&Le(this),Ee()}function xe(e){this.x=e,this.u=void 0,this.s=void 0,this.o=void 0,this.f=32}function Ue(e){var t=new xe(e);try{t.c()}catch(e){throw t.d(),e}return t.d.bind(t)}Ce.prototype.brand=be,Ce.prototype.h=function(){return!0},Ce.prototype.S=function(e){this.t!==e&&void 0===e.e&&(e.x=this.t,void 0!==this.t&&(this.t.e=e),this.t=e)},Ce.prototype.U=function(e){if(void 0!==this.t){var t=e.e,n=e.x;void 0!==t&&(t.x=n,e.e=void 0),void 0!==n&&(n.e=t,e.x=void 0),e===this.t&&(this.t=n)}},Ce.prototype.subscribe=function(e){var t=this;return Ue((function(){var n=t.value,r=ke;ke=void 0;try{e(n)}finally{ke=r}}))},Ce.prototype.valueOf=function(){return this.value},Ce.prototype.toString=function(){return this.value+""},Ce.prototype.toJSON=function(){return this.value},Ce.prototype.peek=function(){var e=ke;ke=void 0;try{return this.value}finally{ke=e}},Object.defineProperty(Ce.prototype,"value",{get:function(){var e=Pe(this);return void 0!==e&&(e.i=this.i),this.v},set:function(e){if(e!==this.v){if(we>100)throw new Error("Cycle detected");this.v=e,this.i++,Ae++,Te++;try{for(var t=this.t;void 0!==t;t=t.x)t.t.N()}finally{Ee()}}}}),(Me.prototype=new Ce).h=function(){if(this.f&=-3,1&this.f)return!1;if(32==(36&this.f))return!0;if(this.f&=-5,this.g===Ae)return!0;if(this.g=Ae,this.f|=1,this.i>0&&!$e(this))return this.f&=-2,!0;var e=ke;try{De(this),ke=this;var t=this.x();(16&this.f||this.v!==t||0===this.i)&&(this.v=t,this.f&=-17,this.i++)}catch(e){this.v=e,this.f|=16,this.i++}return ke=e,Oe(this),this.f&=-2,!0},Me.prototype.S=function(e){if(void 0===this.t){this.f|=36;for(var t=this.s;void 0!==t;t=t.n)t.S.S(t)}Ce.prototype.S.call(this,e)},Me.prototype.U=function(e){if(void 0!==this.t&&(Ce.prototype.U.call(this,e),void 0===this.t)){this.f&=-33;for(var t=this.s;void 0!==t;t=t.n)t.S.U(t)}},Me.prototype.N=function(){if(!(2&this.f)){this.f|=6;for(var e=this.t;void 0!==e;e=e.x)e.t.N()}},Object.defineProperty(Me.prototype,"value",{get:function(){if(1&this.f)throw new Error("Cycle detected");var e=Pe(this);if(this.h(),void 0!==e&&(e.i=this.i),16&this.f)throw this.v;return this.v}}),xe.prototype.c=function(){var e=this.S();try{if(8&this.f)return;if(void 0===this.x)return;var t=this.x();"function"==typeof t&&(this.u=t)}finally{e()}},xe.prototype.S=function(){if(1&this.f)throw new Error("Cycle detected");this.f|=1,this.f&=-9,Be(this),De(this),Te++;var e=ke;return ke=this,Ne.bind(this,e)},xe.prototype.N=function(){2&this.f||(this.f|=2,this.o=Ie,Ie=this)},xe.prototype.d=function(){this.f|=8,1&this.f||Le(this)};class je{constructor(){this.items=[]}enqueue(e){this.items.push(e)}dequeue(){return 0===this.items.length?null:this.items.shift()}isEmpty(){return 0===this.items.length}size(){return this.items.length}clear(){this.items=[]}}const He={LOG:0,INFO:1,DEBUG:2,WARN:3,ERROR:4,NONE:5},_e="ERROR";const Fe=new class{constructor(e=_e,t="",n=console){this.minLogLevel=He[e],this.scope=t,this.logProvider=n}log(...e){this.outputLog("LOG",e)}info(...e){this.outputLog("INFO",e)}debug(...e){this.outputLog("DEBUG",e)}warn(...e){this.outputLog("WARN",e)}error(...e){this.outputLog("ERROR",e)}outputLog(e,t){this.minLogLevel<=He[e]&&this.logProvider[e.toLowerCase()]?.(...this.formatLogData(t))}setScope(e){this.scope=e||this.scope}setMinLogLevel(e){this.minLogLevel=He[e],k(this.minLogLevel)&&(this.minLogLevel=He[_e])}formatLogData(e){if(Array.isArray(e)&&e.length>0){let t="%c RS SDK";this.scope&&(t=`${t} - ${this.scope}`);t=`${t} %c ${E(e[0])?e[0].trim():""}`;const n=[t,"font-weight: bold; background: black; color: white;","font-weight: normal;"];return E(e[0])||n.push(e[0]),n.push(...e.slice(1)),n}return e}};let Qe=function(e){return e.HANDLEDEXCEPTION="handledException",e.UNHANDLEDEXCEPTION="unhandledException",e.UNHANDLEDREJECTION="unhandledPromiseRejection",e}({});const Ge=["localStorage","memoryStorage","cookieStorage","sessionStorage","none"],Ke="cookieStorage",ze="Unable to process/parse source configuration response.",Ve=e=>`${e}${ge}Failed to notify the error.`,qe=(e,t,n)=>`${e} due to timeout or no connection (${t?t.type:""}) for URL: ${n}.`,We="Failed to invoke the ready callback",Je="js-integrations",Xe="plugins",Ze=new RegExp("^(https?:\\/\\/)(((([a-zA-Z\\d]([a-zA-Z\\d-]*[a-zA-Z\\d])*)\\.)+[a-zA-Z]{2,}|localhost|((25[0-5]|2[0-4][0-9]|[0-1]?[0-9]?[0-9]?)\\.){3}(25[0-5]|2[0-4][0-9]|[0-1]?[0-9]?[0-9]?)))(\\:\\d+)?(\\/[-a-zA-Z\\d%_.~+]*)*(\\?[;&a-zA-Z\\d%_.~+=-]*)?(\\#[-a-zA-Z\\d_]*)?$"),Ye="modern",et="https://cdn.rudderlabs.com",tt="v3",nt=`${et}/${tt}/${Ye}/${Je}`,rt=`${et}/${tt}/${Ye}/${Xe}`,it="https://api.rudderstack.com",st="v3",ot="xhr",at={oneTrust:"OneTrustConsentManager",ketch:"KetchConsentManager",custom:"CustomConsentManager"},lt={[st]:"StorageEncryption",legacy:"StorageEncryptionLegacy"},ut={[ot]:"XhrQueue",beacon:"BeaconQueue"},ct=Re(g({logLevel:"ERROR",configUrl:it,loadIntegration:!0,sessions:{autoTrack:!0,timeout:oe},sameSiteCookie:"Lax",polyfillIfRequired:!0,integrations:{All:!0},useBeacon:!1,beaconQueueOptions:{},destinationsQueueOptions:{},queueOptions:{},lockIntegrationsVersion:!1,lockPluginsVersion:!1,uaChTrackLevel:"none",plugins:[],useGlobalIntegrationsConfigInEvents:!1,bufferDataPlaneEventsUntilReady:!1,dataPlaneEventsBufferTimeout:1e4,storage:{encryption:{version:st},migrate:!0},sendAdblockPageOptions:{},useServerSideCookies:!1})),dt={userId:"",userTraits:{},anonymousId:"",groupId:"",groupTraits:{},initialReferrer:"",initialReferringDomain:"",sessionInfo:{},authToken:null},gt={autoTrack:!0,timeout:oe},ht={userId:Re(dt.userId),userTraits:Re(dt.userTraits),anonymousId:Re(dt.anonymousId),groupId:Re(dt.groupId),groupTraits:Re(dt.groupTraits),initialReferrer:Re(dt.initialReferrer),initialReferringDomain:Re(dt.initialReferringDomain),sessionInfo:Re(dt.sessionInfo),authToken:Re(dt.authToken)},pt={isOnline:Re(!0),storage:{isLocalStorageAvailable:Re(!1),isCookieStorageAvailable:Re(!1),isSessionStorageAvailable:Re(!1)},isBeaconAvailable:Re(!1),isLegacyDOM:Re(!1),isUaCHAvailable:Re(!1),isCryptoAvailable:Re(!1),isIE11:Re(!1),isAdBlocked:Re(!1)},vt={isErrorReportingEnabled:Re(!1),isMetricsReportingEnabled:Re(!1),isErrorReportingPluginLoaded:Re(!1),breadcrumbs:Re([])},ft=Re(void 0),yt={activeDataplaneUrl:Re(void 0),integrationsCDNPath:Re(nt),pluginsCDNPath:Re(rt),sourceConfigUrl:Re(void 0),status:Re(void 0),initialized:Re(!1),logLevel:Re("ERROR"),loaded:Re(!1),readyCallbacks:Re([]),writeKey:Re(void 0),dataPlaneUrl:Re(void 0)},mt={enabled:Re(!1),initialized:Re(!1),data:Re({}),activeConsentManagerPluginName:Re(void 0),preConsent:Re({enabled:!1}),postConsent:Re({}),resolutionStrategy:Re("and"),provider:Re(void 0),metadata:Re(void 0)},bt={retries:Re(0),dropped:Re(0),sent:Re(0),queued:Re(0),triggered:Re(0),metricsServiceUrl:Re(void 0)},Et={app:Re({name:Y,namespace:"com.rudderlabs.javascript",version:ee,installType:"cdn"}),traits:Re(null),library:Re({name:Y,version:ee,snippetVersion:globalThis.RudderSnippetVersion}),userAgent:Re(""),device:Re(null),network:Re(null),os:Re({name:"",version:""}),locale:Re(null),screen:Re({density:0,width:0,height:0,innerWidth:0,innerHeight:0}),"ua-ch":Re(void 0),timezone:Re(void 0)},St={configuredDestinations:Re([]),activeDestinations:Re([]),loadOnlyIntegrations:Re({}),failedDestinations:Re([]),loadIntegration:Re(!0),initializedDestinations:Re([]),clientDestinationsReady:Re(!1),integrationsConfig:Re({})},kt={toBeProcessedArray:Re([]),readyCallbacksArray:Re([])},It={ready:Re(!1),loadedPlugins:Re([]),failedPlugins:Re([]),pluginsToLoadFromConfig:Re([]),activePlugins:Re([]),totalPluginsToLoad:Re(0)},Tt={encryptionPluginName:Re(void 0),migrate:Re(!1),type:Re(void 0),cookie:Re(void 0),entries:Re({}),trulyAnonymousTracking:Re(!1)},wt={isEnabledServerSideCookies:Re(!1),dataServiceUrl:Re(void 0)},At={eventsQueuePluginName:Re(void 0),deliveryEnabled:Re(!0)},Pt={...g({capabilities:pt,consents:mt,context:Et,eventBuffer:kt,lifecycle:yt,loadOptions:ct,metrics:bt,nativeDestinations:St,plugins:It,reporting:vt,session:ht,source:ft,storage:Tt,serverCookies:wt,dataPlaneEvents:At})};const Ct=new class{plugins=[];byName={};cache={};config={throws:!0};constructor(e={},t){this.config={throws:!0,...e},this.logger=t}register(e,t){if(!e.name){const t=`${W}${ge}Plugin name is missing.`;if(this.config.throws)throw new Error(t);this.logger?.error(t,e)}if(this.byName[e.name]){const t=((e,t)=>`${e}${ge}Plugin "${t}" already exists.`)(W,e.name);if(this.config.throws)throw new Error(t);this.logger?.error(t)}this.cache={},this.plugins=this.plugins.slice();let n=this.plugins.length;this.plugins.forEach(((t,r)=>{t.deps?.includes(e.name)&&(n=Math.min(n,r))})),this.plugins.splice(n,0,e),this.byName[e.name]=e,b(e.initialize)&&e.initialize(t)}unregister(e){const t=this.byName[e];if(!t){const t=`${W}${ge}Plugin "${e}" not found.`;if(this.config.throws)throw new Error(t);this.logger?.error(t)}const n=this.plugins.indexOf(t);if(-1===n){const t=((e,t)=>`${e}${ge}Plugin "${t}" not found in plugins but found in byName. This indicates a bug in the plugin engine. Please report this issue to the development team.`)(W,e);if(this.config.throws)throw new Error(t);this.logger?.error(t)}this.cache={},delete this.byName[e],this.plugins=this.plugins.slice(),this.plugins.splice(n,1)}getPlugin(e){return this.byName[e]}getPlugins(e){const t=e??".";return this.cache[t]||(this.cache[t]=this.plugins.filter((e=>{if(e.deps?.some((e=>!this.byName[e]))){const t=e.deps.filter((e=>!this.byName[e]));return this.logger?.error(((e,t,n)=>`${e}${ge}Plugin "${t}" could not be loaded because some of its dependencies "${n}" do not exist.`)(W,e.name,t)),!1}return"."===t||((e,t)=>Boolean(P(e,t)))(e,t)}))),this.cache[t]}processRawPlugins(e){e(this.plugins),this.cache={}}invoke(e,t=!0,...n){let r=e;if(!r)throw new Error("Failed to invoke plugin because the extension point name is missing.");const i=r.startsWith("!"),s=this.config.throws??r.endsWith("!");if(r=r.replace(/(^!|!$)/g,""),!r)throw new Error("Failed to invoke plugin because the extension point name is invalid.");const o=r.split(".");o.pop();const a=o.join(".");return(t?this.getPlugins(r):[this.getPlugins(r)[0]]).map((e=>{const t=P(e,r);if(!b(t)||i)return t;try{return t.apply(P(e,a),n)}catch(t){if(s)throw t;this.logger?.error(((e,t,n)=>`${e}${ge}Failed to invoke the "${t}" extension point of plugin "${n}".`)(W,r,e.name),t)}return null}))}invokeSingle(e,...t){return this.invoke(e,!1,...t)[0]}invokeMultiple(e,...t){return this.invoke(e,!0,...t)}}({throws:!0},Fe),Rt="The request failed",$t=[Rt,"unhandledException handler received a non-error"];const Dt=new class{constructor(e,t){this.logger=e,this.pluginEngine=t,this.errorBuffer=new je,this.attachEffect()}attachEffect(){if(!0===Pt.reporting.isErrorReportingPluginLoaded.value)for(;this.errorBuffer.size()>0;){const e=this.errorBuffer.dequeue();e&&this.notifyError(e.error,e.errorState)}}attachErrorListeners(){"addEventListener"in globalThis?(globalThis.addEventListener("error",(e=>{this.onError(e,void 0,void 0,void 0,Qe.UNHANDLEDEXCEPTION)})),globalThis.addEventListener("unhandledrejection",(e=>{this.onError(e,void 0,void 0,void 0,Qe.UNHANDLEDREJECTION)}))):this.logger?.debug("Failed to attach global error listeners.")}init(e,t){if(this.httpClient=e,this.pluginEngine)try{const e="errorReporting.init",n=this.pluginEngine.invokeSingle(e,Pt,this.pluginEngine,t,this.logger,!0);n instanceof Promise&&n.then((e=>{this.errReportingClient=e})).catch((e=>{this.logger?.error(`${q}${ge}Failed to initialize the error reporting plugin.`,e)}))}catch(e){this.onError(e,q)}}onError(e,t="",n="",r=!1,i=Qe.HANDLEDEXCEPTION){let s,o;if(i===Qe.HANDLEDEXCEPTION){if(o=(e=>{let t;try{t=E(e)?e:e instanceof Error||e instanceof ErrorEvent||e.message?e.message:ve(e)}catch(e){t=`Unknown error: ${e.message}`}return t})(e),!o)return;o=`${t}${ge}${n} ${o}`.replace(/ {2,}/g," "),s=new Error(o),A(e)&&(s=Object.create(e,{message:{value:o}}))}else s=(e=>{try{return e instanceof Error||e instanceof ErrorEvent||e instanceof PromiseRejectionEvent&&e.reason?e:void 0}catch(e){return e}})(e);const a=Pt.reporting.isErrorReportingEnabled.value,l=Pt.reporting.isErrorReportingPluginLoaded.value;try{if(a){const e={severity:"error",unhandled:i!==Qe.HANDLEDEXCEPTION,severityReason:{type:i}};l?s&&this.notifyError(s,e):this.errorBuffer.enqueue({error:s,errorState:e})}}catch(e){this.logger?.error(Ve(q),e)}if(i===Qe.HANDLEDEXCEPTION){if(!this.logger)throw s;if(this.logger.error(o),r)throw s}}leaveBreadcrumb(e){if(this.pluginEngine)try{this.pluginEngine.invokeSingle("errorReporting.breadcrumb",this.pluginEngine,this.errReportingClient,e,this.logger,Pt)}catch(e){this.onError(e,q,"errorReporting.breadcrumb")}}notifyError(e,t){if(this.pluginEngine&&this.httpClient&&(e=>(e instanceof Error||e instanceof ErrorEvent)&&e.message?!$t.some((t=>e.message.includes(t))):!(e instanceof PromiseRejectionEvent&&"string"==typeof e.reason&&$t.some((t=>e.reason.includes(t)))))(e))try{this.pluginEngine.invokeSingle("errorReporting.notify",this.pluginEngine,this.errReportingClient,e,Pt,this.logger,this.httpClient,t)}catch(e){this.logger?.error(Ve(q),e)}}}(Fe,Ct),Ot=e=>Boolean("cloud"!==e.config.connectionMode||!0===e.config.useNativeSDKToSend||!0===e.config.useNativeSDK),Mt=e=>e.filter(Ot),Bt=["BeaconQueue","Bugsnag","CustomConsentManager","DeviceModeDestinations","DeviceModeTransformation","ErrorReporting","ExternalAnonymousId","GoogleLinker","KetchConsentManager","NativeDestinationQueue","OneTrustConsentManager","StorageEncryption","StorageEncryptionLegacy","StorageMigrator","XhrQueue"],Lt={rudderAnalyticsRemotePlugins:{url:()=>Promise.resolve(window.RudderStackGlobals&&window.RudderStackGlobals.app&&window.RudderStackGlobals.app.pluginsCDNPath?`${window.RudderStackGlobals.app.pluginsCDNPath}/rsa-plugins.js`:"http://localhost:3002/cdn//rsa-plugins.js"),format:"esm",from:"vite"}},Nt=async(e,t)=>{const n="function"==typeof e?await e():e,r=document.createElement("script");r.type="text/javascript",r.onload=t,r.src=n,document.getElementsByTagName("head")[0].appendChild(r)};function xt(e,t){const n=Object.assign(e,t);for(const e of Object.keys(n))"object"==typeof n[e]&&"object"==typeof t[e]&&(n[e]=xt(n[e],t[e]));return n}const Ut=e=>xt({},(globalThis.__federation_shared__||{}).default||{});function jt(e,t){if(!e?.default&&t){let t=Object.create(null);return t.default=e,t.__esModule=!0,t}return e}function Ht(e,t){return async function(e){const t=Lt[e];return t.inited?t.lib:"var"===t.format?new Promise((n=>Nt(t.url,(()=>{t.inited||(t.lib=window[e],t.lib.init(Ut(t.from)),t.inited=!0),n(t.lib)})))):["esm","systemjs"].includes(t.format)?new Promise(((e,n)=>{("function"==typeof t.url?t.url:()=>Promise.resolve(t.url))().then((r=>{import(r).then((n=>{if(!t.inited){const e=Ut(t.from);n.init(e),t.lib=n,t.lib.init(e),t.inited=!0}e(t.lib)})).catch(n)}))})):void 0}(e).then((e=>e.get(t).then((e=>e()))))}const _t=e=>{const t={};return e.forEach((e=>{if(Bt.includes(e)){const n=(e=>{switch(e){case"BeaconQueue":return()=>Ht("rudderAnalyticsRemotePlugins","./BeaconQueue").then((e=>jt(e,!0)));case"Bugsnag":return()=>Ht("rudderAnalyticsRemotePlugins","./Bugsnag").then((e=>jt(e,!0)));case"CustomConsentManager":return()=>Ht("rudderAnalyticsRemotePlugins","./CustomConsentManager").then((e=>jt(e,!0)));case"DeviceModeDestinations":return()=>Ht("rudderAnalyticsRemotePlugins","./DeviceModeDestinations").then((e=>jt(e,!0)));case"DeviceModeTransformation":return()=>Ht("rudderAnalyticsRemotePlugins","./DeviceModeTransformation").then((e=>jt(e,!0)));case"ErrorReporting":return()=>Ht("rudderAnalyticsRemotePlugins","./ErrorReporting").then((e=>jt(e,!0)));case"ExternalAnonymousId":return()=>Ht("rudderAnalyticsRemotePlugins","./ExternalAnonymousId").then((e=>jt(e,!0)));case"GoogleLinker":return()=>Ht("rudderAnalyticsRemotePlugins","./GoogleLinker").then((e=>jt(e,!0)));case"KetchConsentManager":return()=>Ht("rudderAnalyticsRemotePlugins","./KetchConsentManager").then((e=>jt(e,!0)));case"NativeDestinationQueue":return()=>Ht("rudderAnalyticsRemotePlugins","./NativeDestinationQueue").then((e=>jt(e,!0)));case"OneTrustConsentManager":return()=>Ht("rudderAnalyticsRemotePlugins","./OneTrustConsentManager").then((e=>jt(e,!0)));case"StorageEncryption":return()=>Ht("rudderAnalyticsRemotePlugins","./StorageEncryption").then((e=>jt(e,!0)));case"StorageEncryptionLegacy":return()=>Ht("rudderAnalyticsRemotePlugins","./StorageEncryptionLegacy").then((e=>jt(e,!0)));case"StorageMigrator":return()=>Ht("rudderAnalyticsRemotePlugins","./StorageMigrator").then((e=>jt(e,!0)));case"XhrQueue":return()=>Ht("rudderAnalyticsRemotePlugins","./XhrQueue").then((e=>jt(e,!0)));default:return}})(e);n&&(t[e]=n)}})),t},Ft=e=>_t?.(e)||{},Qt={};class Gt{constructor(e,t,n){this.engine=e,this.errorHandler=t,this.logger=n,this.onError=this.onError.bind(this)}init(){Pt.lifecycle.status.value="pluginsLoading",le("pluginsCDNPath",Pt.lifecycle.pluginsCDNPath.value),this.setActivePlugins(),this.registerLocalPlugins(),this.registerRemotePlugins(),this.attachEffects()}attachEffects(){Ue((()=>{(0===Pt.plugins.activePlugins.value.length||Pt.plugins.loadedPlugins.value.length+Pt.plugins.failedPlugins.value.length===Pt.plugins.totalPluginsToLoad.value)&&Se((()=>{Pt.plugins.ready.value=!0,Pt.lifecycle.status.value="pluginsReady"}))}))}getPluginsToLoadBasedOnConfig(){let e=Pt.plugins.pluginsToLoadFromConfig.value;if(!e)return[];const t=[{configurationStatus:()=>T(Pt.dataPlaneEvents.eventsQueuePluginName.value),configurationStatusStr:"Data plane events delivery is enabled",activePluginName:Pt.dataPlaneEvents.eventsQueuePluginName.value,supportedPlugins:Object.values(ut),shouldAddMissingPlugins:!0},{configurationStatus:()=>Pt.reporting.isErrorReportingEnabled.value,configurationStatusStr:"Error reporting is enabled",supportedPlugins:["ErrorReporting","Bugsnag"]},{configurationStatus:()=>Mt(Pt.nativeDestinations.configuredDestinations.value).length>0,configurationStatusStr:"Device mode destinations are connected to the source",supportedPlugins:["DeviceModeDestinations","NativeDestinationQueue"]},{configurationStatus:()=>Mt(Pt.nativeDestinations.configuredDestinations.value).some((e=>e.shouldApplyDeviceModeTransformation)),configurationStatusStr:"Device mode transformations are enabled for at least one destination",supportedPlugins:["DeviceModeTransformation"]},{configurationStatus:()=>T(Pt.consents.activeConsentManagerPluginName.value),configurationStatusStr:"Consent management is enabled",activePluginName:Pt.consents.activeConsentManagerPluginName.value,supportedPlugins:Object.values(at)},{configurationStatus:()=>T(Pt.storage.encryptionPluginName.value),configurationStatusStr:"Storage encryption is enabled",activePluginName:Pt.storage.encryptionPluginName.value,supportedPlugins:Object.values(lt)},{configurationStatus:()=>Pt.storage.migrate.value,configurationStatusStr:"Storage migration is enabled",supportedPlugins:["StorageMigrator"]}];return t.forEach((t=>{t.configurationStatus()?(e=e.filter(t.activePluginName?e=>!(e!==t.activePluginName&&t.supportedPlugins.includes(e)):e=>T(e)),this.addMissingPlugins(t,false,e)):e=e.filter(void 0!==t.basePlugins?e=>!(t.basePlugins.includes(e)||t.supportedPlugins.includes(e)):e=>!t.supportedPlugins.includes(e))})),[...Object.keys({}),...e]}addMissingPlugins(e,t,n){const r=e.shouldAddMissingPlugins||t;let i;i=e.activePluginName?[...e.basePlugins||[],e.activePluginName]:[...e.supportedPlugins];const s=i.filter((e=>!n.includes(e)));s.length>0&&(r&&n.push(...s),this.logger?.warn(((e,t,n,r)=>{const i=1===n.length,s=i?` '${n[0]}' plugin was`:` ['${n.join("', '")}'] plugins were`,o=`${e}${ge}${t}, but${s} not configured to load.`;return r?`${o} So, ${i?"the plugin":"those plugins"} will be loaded automatically.`:`${o} Ignore if this was intentional. Otherwise, consider adding ${i?"it":"them"} to the 'plugins' load API option.`})(z,e.configurationStatusStr,s,r)))}setActivePlugins(){const e=this.getPluginsToLoadBasedOnConfig(),t=[...Object.keys(Qt),...Bt],n=[],r=[];e.forEach((e=>{t.includes(e)?n.push(e):r.push(e)})),r.length>0&&this.onError(new Error(`Ignoring loading of unknown plugins: ${r.join(",")}. Mandatory plugins: ${Object.keys({}).join(",")}. Load option plugins: ${Pt.plugins.pluginsToLoadFromConfig.value.join(",")}`)),Se((()=>{Pt.plugins.totalPluginsToLoad.value=e.length,Pt.plugins.activePlugins.value=n,Pt.plugins.failedPlugins.value=r}))}registerLocalPlugins(){Object.values(Qt).forEach((e=>{b(e)&&Pt.plugins.activePlugins.value.includes(e().name)&&this.register([e()])}))}registerRemotePlugins(){const e=(t=Pt.plugins.activePlugins.value,{...Ft(t)});var t;Promise.all(Object.keys(e).map((async t=>{await e[t]().then((e=>this.register([e.default()]))).catch((e=>{Pt.plugins.failedPlugins.value=[...Pt.plugins.failedPlugins.value,t],this.onError(e,t)}))}))).catch((e=>{this.onError(e)}))}invokeMultiple(e,...t){try{return this.engine.invokeMultiple(e,...t)}catch(t){return this.onError(t,e),[]}}invokeSingle(e,...t){try{return this.engine.invokeSingle(e,...t)}catch(t){return this.onError(t,e),null}}register(e){e.forEach((e=>{try{this.engine.register(e,Pt)}catch(t){Pt.plugins.failedPlugins.value=[...Pt.plugins.failedPlugins.value,e.name],this.onError(t)}}))}unregisterLocalPlugins(){Object.values(Qt).forEach((e=>{try{this.engine.unregister(e().name)}catch(e){this.onError(e)}}))}onError(e,t){if(!this.errorHandler)throw e;this.errorHandler.onError(e,z,t)}}const Kt=(e,t)=>{try{return JSON.parse(e||"")}catch(e){const n=fe(e,"Failed to parse response data");if(!b(t))throw n;t(n)}},zt={headers:{Accept:"application/json","Content-Type":"application/json;charset=UTF-8"},method:"GET"},Vt=(e,t,n)=>{const r=D(zt,t||{});return n&&(r.headers=D(r.headers,{Authorization:n})),r.url=e,r},qt=(e,t=1e4,n)=>new Promise(((r,i)=>{let s;if(!0===e.sendRawData)s=e.data;else if(s=ve(e.data,!1,[],n),S(s))return void i({error:new Error("Failed to prepare data for the request."),undefined:void 0,options:e});const o=new XMLHttpRequest,a=t=>{i({error:new Error(qe(Rt,t,e.url)),xhr:o,options:e})};o.ontimeout=a,o.onerror=a,o.onload=()=>{var t,n,s,a;o.status>=200&&o.status<400?r({response:o.responseText,xhr:o,options:e}):i({error:new Error((t=Rt,n=o.status,s=o.statusText,a=e.url,`${t} with status: ${n}, ${s} for URL: ${a}.`)),xhr:o,options:e})},o.open(e.method,e.url),!0===e.withCredentials&&(o.withCredentials=!0),o.timeout=t,Object.keys(e.headers).forEach((t=>{e.headers[t]&&o.setRequestHeader(t,e.headers[t])}));try{o.send(s)}catch(t){i({error:fe(t,(l=Rt,u=e.url,`${l} for URL: ${u}`)),xhr:o,options:e})}var l,u}));class Wt{hasErrorHandler=!1;constructor(e,t){this.errorHandler=e,this.logger=t,this.hasErrorHandler=Boolean(this.errorHandler),this.onError=this.onError.bind(this)}async getData(e){const{url:t,options:n,timeout:r,isRawResponse:i}=e;try{const e=await qt(Vt(t,n,this.basicAuthHeader),r,this.logger);return{data:i?e.response:Kt(e.response,this.onError),details:e}}catch(e){return this.onError(e.error??e),{data:void 0,details:e}}}getAsyncData(e){const{callback:t,url:n,options:r,timeout:i,isRawResponse:s}=e,o=!b(t);qt(Vt(n,r,this.basicAuthHeader),i,this.logger).then((e=>{o||t(s?e.response:Kt(e.response,this.onError),e)})).catch((e=>{this.onError(e.error??e),o||t(void 0,e)}))}onError(e){if(!this.hasErrorHandler)throw e;this.errorHandler?.onError(e,"HttpClient")}setAuthHeader(e,t=!1){const n=t?e:x(`${e}:`);this.basicAuthHeader=`Basic ${n}`}resetAuthHeader(){this.basicAuthHeader=void 0}}const Jt=new Wt(Dt,Fe),Xt="cookieStorage",Zt="localStorage",Yt="sessionStorage",en="memoryStorage",tn="none",nn={userId:"rl_user_id",userTraits:"rl_trait",anonymousId:"rl_anonymous_id",groupId:"rl_group_id",groupTraits:"rl_group_trait",initialReferrer:"rl_page_init_referrer",initialReferringDomain:"rl_page_init_referring_domain",sessionInfo:"rl_session",authToken:"rl_auth_token"},rn="clientDataInCookie",sn="clientDataInLocalStorage",on="clientDataInSessionStorage",an=["userId","userTraits","anonymousId","groupId","groupTraits","initialReferrer","initialReferringDomain","sessionInfo","authToken"],ln={[Xt]:rn,[Zt]:sn,[en]:"clientDataInMemory",[Yt]:on},un=(e,t)=>{try{return encodeURIComponent(e)}catch(e){return void t?.error("Failed to encode the cookie data.",e)}},cn=e=>{try{return decodeURIComponent(e)}catch(e){return}},dn=()=>(e=>{const t={},n=e.split(/\s*;\s*/);let r;return n[0]?(n.forEach((e=>{r=e.split("=");const n=r[0]?cn(r[0]):void 0;n&&(t[n]=r[1]?cn(r[1]):void 0)})),t):t})(globalThis.document.cookie),gn=function(e,t,n,r){switch(arguments.length){case 4:case 3:case 2:return((e,t,n,r)=>{const i={...n||{}};let s=`${un(e,r)}=${un(t,r)}`;S(t)&&(i.maxage=-1),i.maxage&&(i.expires=new Date(+new Date+i.maxage)),i.path&&(s+=`; path=${i.path}`),i.domain&&(s+=`; domain=${i.domain}`),i.expires&&(s+=`; expires=${i.expires.toUTCString()}`),i.samesite&&(s+=`; samesite=${i.samesite}`),i.secure&&(s+="; secure"),globalThis.document.cookie=s})(e,t,n,r);case 1:return e?(e=>dn()[e])(e):dn();default:return dn()}},hn=()=>!I(globalThis.navigator.userAgentData),pn={URL:()=>!b(globalThis.URL)||!b(globalThis.URLSearchParams),Promise:()=>!b(globalThis.Promise),"Number.isNaN":()=>!b(globalThis.Number.isNaN),"Number.isInteger":()=>!b(globalThis.Number.isInteger),"Array.from":()=>!b(globalThis.Array.from),"Array.prototype.find":()=>!b(globalThis.Array.prototype.find),"Array.prototype.includes":()=>!b(globalThis.Array.prototype.includes),"String.prototype.endsWith":()=>!b(globalThis.String.prototype.endsWith),"String.prototype.startsWith":()=>!b(globalThis.String.prototype.startsWith),"String.prototype.includes":()=>!b(globalThis.String.prototype.includes),"String.prototype.replaceAll":()=>!b(globalThis.String.prototype.replaceAll),"String.fromCodePoint":()=>!b(globalThis.String.fromCodePoint),"Object.entries":()=>!b(globalThis.Object.entries),"Object.values":()=>!b(globalThis.Object.values),"Object.assign":()=>!b(globalThis.Object.assign),"Object.fromEntries":()=>!b(globalThis.Object.fromEntries),"Element.prototype.dataset":()=>!(()=>{const e=globalThis.document.createElement("div");return e.setAttribute("data-a-b","c"),!!e.dataset&&"c"===e.dataset.aB})(),TextEncoder:()=>!b(globalThis.TextEncoder)||!b(globalThis.TextDecoder),requestAnimationFrame:()=>!b(globalThis.requestAnimationFrame)||!b(globalThis.cancelAnimationFrame),CustomEvent:()=>!b(globalThis.CustomEvent),"navigator.sendBeacon":()=>!b(globalThis.navigator.sendBeacon),ArrayBuffer:()=>!b(globalThis.Uint8Array),Set:()=>!b(globalThis.Set),atob:()=>!b(globalThis.atob)},vn=()=>{let e={density:0,width:0,height:0,innerWidth:0,innerHeight:0};return e={width:globalThis.screen.width,height:globalThis.screen.height,density:globalThis.devicePixelRatio,innerWidth:globalThis.innerWidth,innerHeight:globalThis.innerHeight},e},fn=e=>{const t=["QuotaExceededError","NS_ERROR_DOM_QUOTA_REACHED"].includes(e.name)||[22,1014].includes(e.code);return e instanceof DOMException&&t},yn=(e=Zt,t,n)=>{let r,i;try{switch(e){case en:return!0;case Xt:r=t,i="test_rudder_cookie";break;case Zt:r=t??globalThis.localStorage,i="test_rudder_ls";break;case Yt:r=t??globalThis.sessionStorage,i="test_rudder_ss";break;default:return!1}return!!r&&(r.setItem(i,"true"),!!r.getItem(i)&&(r.removeItem(i),!0))}catch(t){const r=`${Q}${ge}The "${e}" storage type is `;let i="unavailable";return fn(t)&&(i="full"),n?.warn(`${r}${i}.`,t),!1}},mn=e=>{const t="function"!=typeof globalThis.URL?(e=>{const t=document.createElement("a");return t.href=e,t.hostname})(e):new URL(e).hostname,n=t?.split(".")??[],r=n[n.length-1],i=[];if(4===n.length&&r&&r===parseInt(r,10).toString())return i;if(n.length<=1)return n[0]&&-1!==n[0].indexOf("localhost")?["localhost"]:i;for(let e=n.length-2;e>=0;e-=1)i.push(n.slice(e).join("."));return i},bn=()=>{const e=`.${(e=>{const t=mn(e);for(let e=0;e1){for(var i={},s=0,a=r.length;s-1&&(n[t[r]]=this.get(t[r]));return n},len:function(){return o.length}};var l=null;function u(t,n){var s=arguments,o=null;if(l||(l=a()),0===s.length)return l.get();if(1===s.length){if("string"==typeof t)return l.get(t);if(e(t))return l.set(t)}if(2===s.length&&"string"==typeof t){if(!n)return l.remove(t);if(n&&"string"==typeof n)return l.set(t,n);n&&r(n)&&(o=null,o=n(t,l.get(t)),u.set(t,o))}if(2===s.length&&i(t)&&r(n))for(var c=0,d=t.length;c{switch(e){case Zt:return wn;case Yt:return An;case en:return Sn;case Xt:return new En({},Fe);default:return Sn}},Cn=(e={},t={},n={},r={})=>{var i;(e=>{const t=new En({},Fe).configure(e);Pt.storage.cookie.value={maxage:t.maxage,path:t.path,domain:t.domain,samesite:t.samesite,expires:t.expires,secure:t.secure}})(e),i=t,wn.configure(i),(e=>{Sn.configure(e)})(n),(e=>{An.configure(e)})(r)};class Rn{hasErrorHandler=!1;constructor(e,t,n){this.id=e.id,this.name=e.name,this.isEncrypted=e.isEncrypted??!1,this.validKeys=e.validKeys??{},this.engine=t??Pn(Zt),this.noKeyValidation=0===Object.keys(this.validKeys).length,this.noCompoundKey=e.noCompoundKey,this.originalEngine=this.engine,this.errorHandler=e.errorHandler??Dt,this.hasErrorHandler=Boolean(this.errorHandler),this.logger=e.logger??Fe,this.pluginsManager=n}createValidKey(e){const{name:t,id:n,validKeys:r,noKeyValidation:i,noCompoundKey:s}=this;if(i)return s?e:[t,n,e].join(".");let o;return Object.values(r).forEach((r=>{r===e&&(o=s?e:[t,n,e].join("."))})),o}swapQueueStoreToInMemoryEngine(){const{name:e,id:t,validKeys:n,noCompoundKey:r}=this,i=Pn(en);Object.keys(n).forEach((s=>{const o=this.get(n[s]),a=r?s:[e,t,s].join(".");i.setItem(a,o),this.remove(s)})),this.engine=i}set(e,t){const n=this.createValidKey(e);if(n)try{this.engine.setItem(n,this.encrypt(ve(t,!1,[],this.logger)))}catch(n){fn(n)?(this.logger?.warn(`${`Store ${this.id}`}${ge}The storage is either full or unavailable, so the data will not be persisted. Switching to in-memory storage.`),this.swapQueueStoreToInMemoryEngine(),this.set(e,t)):this.onError(fe(n,(e=>`Failed to save the value for "${e}" to storage`)(e)))}}get(e){const t=this.createValidKey(e);try{if(!t)return null;const e=this.decrypt(this.engine.getItem(t));return I(e)?null:JSON.parse(e)}catch(t){return this.onError(new Error(`${(e=>`Failed to retrieve or parse data for "${e}" from storage`)(e)}: ${t.message}`)),null}}remove(e){const t=this.createValidKey(e);t&&this.engine.removeItem(t)}getOriginalEngine(){return this.originalEngine}decrypt(e){return I(e)?null:this.crypto(e,"decrypt")}encrypt(e){return this.crypto(e,"encrypt")}crypto(e,t){const n=!this.isEncrypted||!e||"string"!=typeof e||""===(e=>e.replace(/^\s+|\s+$/gm,""))(e);if(n)return e;const r=`storage.${t}`,i=this.pluginsManager?this.pluginsManager.invokeSingle(r,e):e;return void 0===i?e:i??""}onError(e){if(!this.hasErrorHandler)throw e;this.errorHandler?.onError(e,`Store ${this.id}`)}}class $n{stores={};isInitialized=!1;hasErrorHandler=!1;constructor(e,t,n){this.errorHandler=t,this.logger=n,this.hasErrorHandler=Boolean(this.errorHandler),this.pluginsManager=e,this.onError=this.onError.bind(this)}init(){if(this.isInitialized)return;const e=Pt.loadOptions.value,t={cookieStorageOptions:{samesite:e.sameSiteCookie,secure:e.secureCookie,domain:e.setCookieDomain,sameDomainCookiesOnly:e.sameDomainCookiesOnly,enabled:!0},localStorageOptions:{enabled:!0},inMemoryStorageOptions:{enabled:!0},sessionStorageOptions:{enabled:!0}};Cn(M(D(t.cookieStorageOptions??{},Pt.storage.cookie?.value??{})),M(t.localStorageOptions),M(t.inMemoryStorageOptions),M(t.sessionStorageOptions)),this.initClientDataStores(),this.isInitialized=!0}initClientDataStores(){this.initializeStorageState();[en,Zt,Xt,Yt].forEach((e=>{Pn(e)?.isEnabled&&this.setStore({id:ln[e],name:ln[e],isEncrypted:!0,noCompoundKey:!0,type:e})}))}initializeStorageState(){let e=Pt.storage.type.value,t=Pt.loadOptions.value.storage?.entries;const n=Pt.consents.postConsent.value.storage;(T(n?.type)||T(n?.entries))&&(e=n?.type,t=n?.entries);let r=!0,i={};an.forEach((n=>{const s=n,o=n,a=t?.[s]?.type,l=((e,t)=>{let n;if(e.consents.preConsent.value.enabled)switch(e.consents.preConsent.value.storage?.strategy){case"none":n=tn;break;case"session":"sessionInfo"!==t&&(n=tn);break;case"anonymousId":"anonymousId"!==t&&(n=tn)}return n})(Pt,n),u=l??a??e??Ke,c=this.getResolvedStorageTypeForEntry(u,n);c!==tn&&(r=!1),i={...i,[n]:{type:c,key:nn[o]}}})),Se((()=>{Pt.storage.type.value=e,Pt.storage.entries.value=i,Pt.storage.trulyAnonymousTracking.value=r}))}getResolvedStorageTypeForEntry(e,t){let n=e;switch(e){case Zt:Pn(Zt)?.isEnabled||(n=en);break;case Yt:Pn(Yt)?.isEnabled||(n=en);break;case en:case tn:break;default:n=Pn(Xt)?.isEnabled?Xt:Pn(Zt)?.isEnabled?Zt:Pn(Yt)?.isEnabled?Yt:en}return n!==e&&this.logger?.warn(((e,t,n,r)=>`${e}${ge}The storage type "${n}" is not available for entry "${t}". The SDK will initialize the entry with "${r}" storage type instead.`)(J,t,e,n)),n}setStore(e){const t=Pn(e.type);return this.stores[e.id]=new Rn(e,t,this.pluginsManager),this.stores[e.id]}getStore(e){return this.stores[e]}onError(e){if(!this.hasErrorHandler)throw e;this.errorHandler?.onError(e,J)}}const Dn=e=>{if(!E(e))return!1;try{return b(globalThis.URL)&&new URL(e),Ze.test(e)}catch(e){return!1}},On=(e,t)=>{(e=>{if(!E(e)||0===e.trim().length)throw new Error((e=>`The write key "${e}" is invalid. It must be a non-empty string. Please check that the write key is correct and try again.`)(e))})(e),(e=>{if(!Dn(e))throw new Error((e=>`The data plane URL "${e}" is invalid. It must be a valid URL string. Please check that the data plane URL is correct and try again.`)(e))})(t)},Mn=e=>{const t=new URL(e),{host:n,protocol:r}=t,i=n.split(".");let s;return s=i.length>2?`${i[i.length-2]}.${i[i.length-1]}`:n,{topDomain:s,protocol:r}},Bn=(e,t)=>`${t?window.location.origin:(e=>{const{topDomain:t,protocol:n}=Mn(e);return`${n}//${t}`})(window.location.href)}/${e.startsWith("/")?e.substring(1):e}`,Ln=e=>e?.endsWith("/")?Ln(e.substring(0,e.length-1)):e,Nn=e=>{try{return new URL(e).host}catch(e){return null}},xn=e=>Nn(e)??"",Un=e=>{const t={};try{const n=new URL(e),r="utm_";n.searchParams.forEach(((e,n)=>{if(n.startsWith(r)){let i=n.substring(r.length);"campaign"===i&&(i="name"),t[i]=e}}))}catch(e){}return t},jn="none",Hn="immediate",_n={All:!0},Fn=e=>O(e)||Array.isArray(e),Qn=(e,t)=>{let{provider:n}=e;const r=n?at[n]:void 0;var i;return n&&!r&&(t?.error((i=at,`${G}${ge}The consent manager "${n}" is not supported. Please choose one of the following supported consent managers: "${Object.keys(i)}".`)),n=void 0),{provider:n,consentManagerPluginName:r}},Gn=(e,t)=>{let n,r,i=[],s=[],o=!1,a=!0===e?.enabled;O(e)&&a&&(({provider:r,consentManagerPluginName:n}=Qn(e,t)),Fn(e.allowedConsentIds)&&(i=e.allowedConsentIds,o=!0),Fn(e.deniedConsentIds)&&(s=e.deniedConsentIds,o=!0));const l={allowedConsentIds:i,deniedConsentIds:s};return a=a&&Boolean(n),{provider:r,consentManagerPluginName:n,initialized:o,enabled:a,consentsData:l}},Kn=e=>{const{useServerSideCookies:t,dataServiceEndpoint:n,storage:r,setCookieDomain:i,sameDomainCookiesOnly:s}=Pt.loadOptions.value;let o=r?.type;T(o)&&!(e=>"string"==typeof e&&Ge.includes(e))(o)&&(e?.warn(((e,t,n)=>`${e}${ge}The storage type "${t}" is not supported. Please choose one of the following supported types: "${Ge}". The default type "${n}" will be used instead.`)(G,o,Ke)),o=Ke);let a=r?.encryption?.version;const l=a&<[a];var u,c;!k(a)&&k(l)?(e?.warn((u=lt,c=st,`${G}${ge}The storage encryption version "${a}" is not supported. Please choose one of the following supported versions: "${Object.keys(u)}". The default version "${c}" will be used instead.`)),a=st):k(a)&&(a=st);const d=r?.migrate,g=d&&a===st;!0===d&&g!==d&&e?.warn(((e,t,n)=>`${e}${ge}The storage data migration has been disabled because the configured storage encryption version (${t}) is not the latest (${n}). To enable storage data migration, please update the storage encryption version to the latest version.`)(G,a,st)),Se((()=>{Pt.storage.type.value=o;let l=r?.cookie??{};if(t){Pt.serverCookies.isEnabledServerSideCookies.value=t;const r=l.domain??i,o=T(r)&&!(e=>{const{topDomain:t}=Mn(window.location.href);return t===e})(L(r))||s,a=Bn(n??"rsaRequest",o??!1);if(Dn(a)){Pt.serverCookies.dataServiceUrl.value=Ln(a);const t=Nn(window.location.href),n=Nn(a);t!==n&&(l={...l,samesite:"None",secure:!0}),!s&&o&&n!==L(r)&&(Pt.serverCookies.isEnabledServerSideCookies.value=!1,e?.warn(((e,t,n)=>`${e}${ge}The provided cookie domain (${t}) does not match the current webpage's domain (${n}). Hence, the cookies will be set client-side.`)(G,r,n)))}else Pt.serverCookies.isEnabledServerSideCookies.value=!1}Pt.storage.cookie.value=l,Pt.storage.encryptionPluginName.value=lt[a],Pt.storage.migrate.value=g}))},zn=e=>{const{provider:t,consentManagerPluginName:n,initialized:r,enabled:i,consentsData:s}=Gn(Pt.loadOptions.value.consentManagement,e),o=Pt.loadOptions.value.preConsent;let a=o?.storage?.strategy??jn;var l,u;T(a)&&!["none","session","anonymousId"].includes(a)&&(a=jn,e?.warn((l=G,u=o?.storage?.strategy,`${l}${ge}The pre-consent storage strategy "${u}" is not supported. Please choose one of the following supported strategies: "none, session, anonymousId". The default strategy "${jn}" will be used instead.`)));let c=o?.events?.delivery??Hn;T(c)&&!["immediate","buffer"].includes(c)&&(c=Hn,e?.warn(((e,t,n)=>`${e}${ge}The pre-consent events delivery type "${t}" is not supported. Please choose one of the following supported types: "immediate, buffer". The default type "${n}" will be used instead.`)(G,o?.events?.delivery,Hn))),Se((()=>{Pt.consents.activeConsentManagerPluginName.value=n,Pt.consents.initialized.value=r,Pt.consents.enabled.value=i,Pt.consents.data.value=s,Pt.consents.provider.value=t,Pt.consents.preConsent.value={enabled:!0===Pt.loadOptions.value.preConsent?.enabled&&!1===r&&!0===i,storage:{strategy:a},events:{delivery:c}}}))},Vn=e=>{if(Pt.dataPlaneEvents.deliveryEnabled.value){const t="XhrQueue";let n=t;Pt.loadOptions.value.useBeacon&&(Pt.capabilities.isBeaconAvailable.value?n="BeaconQueue":(n=t,e?.warn(`${G}${ge}The Beacon API is not supported by your browser. The events will be sent using XHR instead.`))),Se((()=>{Pt.dataPlaneEvents.eventsQueuePluginName.value=n}))}},qn=(e,t,n,r,i)=>{const s=new URLSearchParams({p:"cdn",v:ee,build:Ye,writeKey:t,lockIntegrationsVersion:n.toString(),lockPluginsVersion:r.toString()});let o=it,a=s,l="/sourceConfig/",u="";if(Dn(e)){const t=new URL(e);Ln(t.pathname).endsWith("/sourceConfig")||(t.pathname=`${Ln(t.pathname)}/sourceConfig/`),t.pathname=t.pathname.replace(/\/{2,}/g,"/"),s.forEach(((e,n)=>{null===t.searchParams.get(n)&&t.searchParams.set(n,e)})),o=t.origin,l=t.pathname,a=t.searchParams,u=t.hash}else i?.warn(((e,t)=>`${e}${ge}The provided source config URL "${t}" is invalid. Using the default source config URL instead.`)(G,e));return`${o}${l}?${a}${u}`},Wn=(e,t,n,r,i,s)=>{let o="";if(s){if(!Dn(s))throw new Error(`Failed to load the SDK as the base URL for ${e} is not valid.`);return Ln(s)}const a=(()=>{const e=document.getElementsByTagName("script"),t=/(?:^|\/)rsa(\.min)?\.js$/;for(const n of e){const e=n.getAttribute("src");if(e&&t.test(e))return e}})();return o=a?a.split("/").slice(0,-1).concat(t).join("/"):n,i&&(o=o.replace(`/${tt}/${Ye}/${t}`,`/${r}/${Ye}/${t}`)),o};class Jn{hasErrorHandler=!1;constructor(e,t,n){this.errorHandler=t,this.logger=n,this.httpClient=e,this.hasErrorHandler=Boolean(this.errorHandler),this.onError=this.onError.bind(this),this.processConfig=this.processConfig.bind(this)}attachEffects(){Ue((()=>{this.logger?.setMinLogLevel(Pt.lifecycle.logLevel.value)}))}init(){this.attachEffects(),On(Pt.lifecycle.writeKey.value,Pt.lifecycle.dataPlaneUrl.value);const{logLevel:e,configUrl:t,lockIntegrationsVersion:n,lockPluginsVersion:r,destSDKBaseURL:i,pluginsSDKBaseURL:s}=Pt.loadOptions.value;Pt.lifecycle.activeDataplaneUrl.value=Ln(Pt.lifecycle.dataPlaneUrl.value);const o=((e,t,n)=>Wn("integrations",Je,nt,e,t,n))(ee,n,i),a=((e,t,n)=>Wn("plugins",Xe,rt,e,t,n))(ee,r,s);Kn(this.logger),zn(this.logger),Vn(this.logger),Se((()=>{Pt.lifecycle.integrationsCDNPath.value=o,Pt.lifecycle.pluginsCDNPath.value=a,e&&(Pt.lifecycle.logLevel.value=e),Pt.lifecycle.sourceConfigUrl.value=qn(t,Pt.lifecycle.writeKey.value,n,r,this.logger),Pt.metrics.metricsServiceUrl.value=`${Pt.lifecycle.activeDataplaneUrl.value}/rsaMetrics`})),this.getConfig()}onError(e,t,n){if(!this.hasErrorHandler)throw e;this.errorHandler?.onError(e,G,t,n)}processConfig(e,t){if(!e)return void this.onError((n=t?.error,`Failed to fetch the source config. Reason: ${n}`));var n;let r;try{r=E(e)?JSON.parse(e):e}catch(e){return void this.onError(e,ze,!0)}if(!(e=>R(e)&&R(e.source)&&!I(e.source.id)&&R(e.source.config)&&Array.isArray(e.source.destinations))(r))return void this.onError(new Error(ze),void 0,!0);if(!1===r.source.enabled)return void this.logger?.error("The source is disabled. Please enable the source in the dashboard to send events.");(e=>{var t;Pt.reporting.isErrorReportingEnabled.value=!1,Pt.reporting.isMetricsReportingEnabled.value=(t=e.source.config,!0===t?.statsCollection?.metrics?.enabled)})(r);const i=r.source.destinations.length>0?(e=>{const t=[];return e.forEach((e=>{e.enabled&&!e.deleted&&t.push({id:e.id,displayName:e.destinationDefinition.displayName,config:e.config,shouldApplyDeviceModeTransformation:e.shouldApplyDeviceModeTransformation||!1,propagateEventsUntransformedOnError:e.propagateEventsUntransformedOnError||!1,userFriendlyId:`${e.destinationDefinition.displayName.replaceAll(" ","-")}___${e.id}`})})),t})(r.source.destinations):[];Se((()=>{Pt.source.value={config:r.source.config,id:r.source.id,workspaceId:r.source.workspaceId},Pt.nativeDestinations.configuredDestinations.value=i,Pt.plugins.pluginsToLoadFromConfig.value=Pt.loadOptions.value.plugins??[],(e=>{let t,n=Pt.consents.resolutionStrategy.value;R(e.consentManagementMetadata)&&(Pt.consents.provider.value&&(n=e.consentManagementMetadata.providers.find((e=>e.provider===Pt.consents.provider.value))?.resolutionStrategy??Pt.consents.resolutionStrategy.value),t=e.consentManagementMetadata),"custom"===Pt.consents.provider.value&&(n=void 0),Se((()=>{Pt.consents.metadata.value=g(t),Pt.consents.resolutionStrategy.value=n}))})(r),Pt.lifecycle.status.value="configured"}))}getConfig(){const e=Pt.loadOptions.value.getSourceConfig;if(e){if(!b(e))throw new Error('"getSourceConfig" must be a function. Please make sure that it is defined and returns a valid source configuration object.');const t=e();t instanceof Promise?t.then((e=>this.processConfig(e))).catch((e=>{this.onError(e,"SourceConfig")})):this.processConfig(t)}else this.httpClient.getAsyncData({url:Pt.lifecycle.sourceConfigUrl.value,options:{headers:{"Content-Type":void 0}},callback:this.processConfig})}}const Xn=()=>document?.referrer||"$direct",Zn=()=>{const e=(()=>{const e=document.getElementsByTagName("link");let t="";for(let n=0;e[n];n+=1){const r=e[n];if("canonical"===r.getAttribute("rel")&&!t){t=r.getAttribute("href")??"";break}}return t})();let t=globalThis.location.pathname;const{href:n}=globalThis.location;let r=n;const{search:i}=globalThis.location;if(e)try{const n=new URL(e);r=""===n.search?e+i:e,t=n.pathname}catch(e){}const s=(e=>{let t=e;try{const n=new URL(e);t=n.origin+n.pathname+n.search}catch(e){}return t})(r),{title:o}=document,a=Xn();return{path:t,referrer:a,referring_domain:xn(a),search:i,title:o,url:s,tab_url:n}},Yn=`https://polyfill-fastly.io/v3/polyfill.min.js?version=3.111.0&features=${Object.keys(pn).join("%2C")}`,er="rudderstackPolyfill";class tr{constructor(e,t){this.logger=t,this.errorHandler=e,this.externalSrcLoader=new me(this.errorHandler,this.logger),this.onError=this.onError.bind(this),this.onReady=this.onReady.bind(this)}init(){try{this.prepareBrowserCapabilities(),this.attachWindowListeners()}catch(e){this.onError(e)}}detectBrowserCapabilities(){Se((()=>{Pt.capabilities.storage.isCookieStorageAvailable.value=yn(Xt,Pn(Xt),this.logger),Pt.capabilities.storage.isLocalStorageAvailable.value=yn(Zt,void 0,this.logger),Pt.capabilities.storage.isSessionStorageAvailable.value=yn(Yt,void 0,this.logger),Pt.capabilities.isBeaconAvailable.value=!I(globalThis.navigator.sendBeacon)&&b(globalThis.navigator.sendBeacon),Pt.capabilities.isUaCHAvailable.value=hn(),Pt.capabilities.isCryptoAvailable.value=!I(globalThis.crypto)&&b(globalThis.crypto.getRandomValues),Pt.capabilities.isIE11.value=Boolean(globalThis.navigator.userAgent.match(/Trident.*rv:11\./)),Pt.capabilities.isOnline.value=globalThis.navigator.onLine,Pt.context.userAgent.value=(()=>{if(k(globalThis.navigator))return null;let{userAgent:e}=globalThis.navigator;const{brave:t}=globalThis.navigator;if(t&&Object.getPrototypeOf(t).isBrave){const t=e.match(/(chrome)\/([\w.]+)/i);t&&(e=`${e} Brave/${t[2]}`)}return e})(),Pt.context.locale.value=k(globalThis.navigator)?null:globalThis.navigator.language??globalThis.navigator.browserLanguage,Pt.context.screen.value=vn(),Pt.context.timezone.value=(()=>{const e=(new Date).toString().match(/([A-Z]+[+-]\d+)/);return e&&e[1]?e[1]:"NA"})(),hn()&&((e,t="none")=>{"none"===t&&e(void 0),"default"===t&&e(navigator.userAgentData),"full"===t&&navigator.userAgentData?.getHighEntropyValues(["architecture","bitness","brands","mobile","model","platform","platformVersion","uaFullVersion","fullVersionList","wow64"]).then((t=>{e(t)})).catch((()=>{e()}))})((e=>{Pt.context["ua-ch"].value=e}),Pt.loadOptions.value.uaChTrackLevel)})),Ue((()=>{!0===Pt.loadOptions.value.sendAdblockPage&&void 0!==Pt.lifecycle.sourceConfigUrl.value&&((e,t)=>{const n=new URL(Pt.lifecycle.sourceConfigUrl.value),r=`${n.origin}${n.pathname}?view=ad`,i=new Wt(e,t);i.setAuthHeader(Pt.lifecycle.writeKey.value),i.getAsyncData({url:r,options:{method:"HEAD",headers:{"Content-Type":void 0}},isRawResponse:!0,callback:(e,t)=>{Pt.capabilities.isAdBlocked.value=void 0!==t?.error||t?.xhr?.responseURL!==r}})})(this.errorHandler,this.logger)}))}prepareBrowserCapabilities(){Pt.capabilities.isLegacyDOM.value=(()=>{const e=Object.keys(pn);let t=!1;for(let n=0;n`${e}${ge}The provided polyfill URL "${t}" is invalid. The default polyfill URL will be used instead.`)(Q,e)));if(Pt.loadOptions.value.polyfillIfRequired&&Pt.capabilities.isLegacyDOM.value&&Dn(t)){const e=t!==Pt.loadOptions.value.polyfillURL;if(e){const e=`RS_polyfillCallback_${Pt.lifecycle.writeKey.value}`,n=()=>{this.onReady(),delete globalThis[e]};globalThis[e]=n,t=`${t}&callback=${e}`}this.externalSrcLoader.loadJSFile({url:t,id:er,async:!0,timeout:1e4,callback:n=>{n?e||this.onReady():this.onError(new Error(((e,t)=>`Failed to load the polyfill script with ID "${e}" from URL ${t}.`)(er,t)))}})}else this.onReady()}attachWindowListeners(){globalThis.addEventListener("offline",(()=>{Pt.capabilities.isOnline.value=!1})),globalThis.addEventListener("online",(()=>{Pt.capabilities.isOnline.value=!0})),globalThis.addEventListener("resize",function(e,t,n=250){let r;return(...i)=>{globalThis.clearTimeout(r),r=globalThis.setTimeout((()=>{e.apply(t,i)}),n)}}((()=>{Pt.context.screen.value=vn()}),this))}onReady(){this.detectBrowserCapabilities(),Pt.lifecycle.status.value="browserCapabilitiesReady"}onError(e){if(!this.errorHandler)throw e;this.errorHandler.onError(e,Q)}}for(var nr,rr=[],ir=0;ir<256;ir++)rr[ir]=(ir+256).toString(16).substring(1);function sr(){var e;(!nr||ir+16>4096)&&(e=4096,nr=crypto.getRandomValues(new Uint8Array(e)),ir=0);for(var t,n=0,r="";n<16;n++)t=nr[ir+n],r+=6==n?rr[15&t|64]:8==n?rr[63&t|128]:rr[t],1&n&&n>1&&n<11&&(r+="-");return ir+=16,r}for(var or,ar=256,lr=[];ar--;)lr[ar]=(ar+256).toString(16).substring(1);const ur=()=>!I(globalThis.crypto)&&b(globalThis.crypto.getRandomValues)?sr():function(){var e,t=0,n="";if(!or||ar+16>256){for(or=Array(t=256);t--;)or[t]=256*Math.random()|0;t=ar=0}for(;t<16;t++)e=or[ar+t],n+=6==t?lr[15&e|64]:8==t?lr[63&e|128]:lr[e],1&t&&t>1&&t<11&&(n+="-");return ar++,n}(),cr=["integrations","anonymousId","originalTimestamp"],dr=["library","consentManagement","userAgent","ua-ch","screen"],gr=["id","anonymous_id","user_id","sent_at","timestamp","received_at","original_timestamp","event","event_text","channel","context_ip","context_request_ip","context_passed_ip","group_id","previous_id"],hr=e=>"number"==typeof e&&!Number.isNaN(e),pr=e=>hr(e)&&e>=0&&Number.isInteger(e),vr=e=>{const t=Date.now();return Boolean(!e||t>e)},fr=(e,t)=>{return!!(e&&pr(e)&&(n=10,r=e,r.toString().length>=n))||(t?.warn(((e,t,n)=>`${e}${ge}The provided session ID (${t}) is either invalid, not a positive integer, or not at least "${n}" digits long. A new session ID will be auto-generated instead.`)(V,e,10)),!1);var n,r},yr=(e,t)=>({id:fr(e,t)?e:Date.now(),sessionStart:void 0,manualTrack:!0}),mr=e=>Boolean(e===Xt||e===Zt||e===Yt||e===en),br=()=>ur(),Er=e=>{const t=Zn(),n={};return Object.keys(t).forEach((r=>{n[r]=e?.[r]||t[r]})),n.initial_referrer=e?.initial_referrer||Pt.session.initialReferrer.value,n.initial_referring_domain=e?.initial_referring_domain||Pt.session.initialReferringDomain.value,n},Sr=(e,t,n)=>{R(e)&&Object.keys(e).forEach((e=>{(gr.includes(e)||gr.includes(e.toLowerCase()))&&n?.warn(((e,t,n,r)=>`${e}${ge}The "${t}" property defined under "${n}" is a reserved keyword. Please choose a different property name to avoid conflicts with reserved keywords (${r}).`)(K,e,t,gr))}))},kr=(e,t)=>{R(t)&&(((e,t)=>{t.anonymousId&&E(t.anonymousId)&&(e.anonymousId=t.anonymousId),R(t.integrations)&&(e.integrations=t.integrations),t.originalTimestamp&&E(t.originalTimestamp)&&(e.originalTimestamp=t.originalTimestamp)})(e,t),e.context=((e,t,n)=>{let r=e;return Object.keys(t).forEach((e=>{if(!cr.includes(e)&&!dr.includes(e))if("context"!==e)r=D(r,{[e]:t[e]});else if(!k(t[e])&&R(t[e])){const n={};Object.keys(t[e]).forEach((r=>{dr.includes(r)||(n[r]=t[e][r])})),r=D(r,{...n})}})),r})(e.context,t))},Ir=e=>{let t;return t=Pt.loadOptions.value.useGlobalIntegrationsConfigInEvents&&(R(Pt.consents.postConsent.value?.integrations)||R(Pt.nativeDestinations.loadOnlyIntegrations.value))?g(Pt.consents.postConsent.value?.integrations??Pt.nativeDestinations.loadOnlyIntegrations.value):R(e)?e:_n,t},Tr=(e,t,n,r)=>{const i={channel:"web",context:{traits:g(Pt.session.userTraits.value),sessionId:Pt.session.sessionInfo.value.id||void 0,sessionStart:Pt.session.sessionInfo.value.sessionStart||void 0,...Pt.consents.enabled.value&&{consentManagement:{deniedConsentIds:g(Pt.consents.data.value.deniedConsentIds),allowedConsentIds:g(Pt.consents.data.value.allowedConsentIds),provider:Pt.consents.provider.value,resolutionStrategy:Pt.consents.resolutionStrategy.value}},"ua-ch":Pt.context["ua-ch"].value,app:Pt.context.app.value,library:Pt.context.library.value,userAgent:Pt.context.userAgent.value,os:Pt.context.os.value,locale:Pt.context.locale.value,screen:Pt.context.screen.value,campaign:Un(globalThis.location.href),page:Er(n),timezone:Pt.context.timezone.value},originalTimestamp:(new Date).toISOString(),integrations:_n,messageId:ur(),userId:e.userId||Pt.session.userId.value};mr(Pt.storage.entries.value.anonymousId?.type)?i.anonymousId=Pt.session.anonymousId.value:i.anonymousId=br(),Pt.storage.trulyAnonymousTracking.value&&(i.context.trulyAnonymousTracking=!0),"identify"===e.type&&(i.context.traits=Pt.storage.entries.value.userTraits?.type!==tn?g(Pt.session.userTraits.value):e.context.traits),"group"===e.type&&((e.groupId||Pt.session.groupId.value)&&(i.groupId=e.groupId||Pt.session.groupId.value),(e.traits||Pt.session.groupTraits.value)&&(i.traits=Pt.storage.entries.value.groupTraits?.type!==tn?g(Pt.session.groupTraits.value):e.traits));const s=D(e,i);return void 0===s.event&&(s.event=null),void 0===s.properties&&(s.properties=null),kr(s,t),((e,t)=>{const{properties:n,traits:r,context:i}=e,{traits:s}=i;Sr(n,"properties",t),Sr(r,"traits",t),Sr(s,"context.traits",t)})(s,r),s.integrations=Ir(s.integrations),s};class wr{constructor(e){this.logger=e}generatePageEvent(e,t,n,r){let i=n??{};i=((e,t)=>{const n=t?.page||{},r=e,i=Zn();return Object.keys(i).forEach((e=>{k(r[e])&&(r[e]=n[e]||i[e])})),k(r.initial_referrer)&&(r.initial_referrer=n.initial_referrer||Pt.session.initialReferrer.value),k(r.initial_referring_domain)&&(r.initial_referring_domain=n.initial_referring_domain||Pt.session.initialReferringDomain.value),r})(i,r);return Tr({properties:i,name:t,category:e,type:"page"},r,i,this.logger)}generateTrackEvent(e,t,n){return Tr({properties:t,event:e,type:"track"},n,void 0,this.logger)}generateIdentifyEvent(e,t,n){return Tr({userId:e,type:"identify",context:{traits:t}},n,void 0,this.logger)}generateAliasEvent(e,t,n){const r=Tr({previousId:t,type:"alias"},n,void 0,this.logger);return r.userId=e??r.userId,r}generateGroupEvent(e,t,n){const r={type:"group"};return e&&(r.groupId=e),t&&(r.traits=t),Tr(r,n,void 0,this.logger)}create(e){let t;switch(e.type){case"page":t=this.generatePageEvent(e.category,e.name,e.properties,e.options);break;case"track":t=this.generateTrackEvent(e.name,e.properties,e.options);break;case"identify":t=this.generateIdentifyEvent(e.userId,e.traits,e.options);break;case"alias":t=this.generateAliasEvent(e.to,e.from,e.options);break;case"group":t=this.generateGroupEvent(e.groupId,e.traits,e.options)}return t}}class Ar{constructor(e,t,n,r){this.eventRepository=e,this.userSessionManager=t,this.errorHandler=n,this.logger=r,this.eventFactory=new wr(this.logger),this.onError=this.onError.bind(this)}init(){this.eventRepository.init()}resume(){this.eventRepository.resume()}addEvent(e){this.userSessionManager.refreshSession();const t=this.eventFactory.create(e);t?this.eventRepository.enqueue(t,e.callback):this.onError(new Error("Failed to generate the event object."))}onError(e,t,n){if(!this.errorHandler)throw e;this.errorHandler.onError(e,K,t,n)}}class Pr{constructor(e,t,n,r,i){this.storeManager=r,this.pluginsManager=n,this.logger=t,this.errorHandler=e,this.httpClient=i,this.onError=this.onError.bind(this),this.serverSideCookieDebounceFuncs={}}init(){this.syncStorageDataToState(),this.registerEffects()}syncStorageDataToState(){this.migrateStorageIfNeeded(),this.migrateDataFromPreviousStorage(),this.setUserId(this.getUserId()),this.setUserTraits(this.getUserTraits()),this.setGroupId(this.getGroupId()),this.setGroupTraits(this.getGroupTraits());const{externalAnonymousIdCookieName:e,anonymousIdOptions:t}=Pt.loadOptions.value;let n;w(e)&&"string"==typeof e&&(n=this.getExternalAnonymousIdByCookieName(e)),this.setAnonymousId(n??this.getAnonymousId(t)),this.setAuthToken(this.getAuthToken()),this.setInitialReferrerInfo(),this.configureSessionTracking()}configureSessionTracking(){let e=this.getSessionInfo();if(this.isPersistenceEnabledForStorageEntry("sessionInfo")){const t=this.getConfiguredSessionTrackingInfo(),n=e??gt;e={...n,...t,autoTrack:t.autoTrack&&!0!==n.manualTrack}}Pt.session.sessionInfo.value=this.isPersistenceEnabledForStorageEntry("sessionInfo")?e:dt.sessionInfo,Pt.session.sessionInfo.value.autoTrack&&this.startOrRenewAutoTracking(Pt.session.sessionInfo.value)}setInitialReferrerInfo(){const e=this.getInitialReferrer(),t=this.getInitialReferringDomain();if(e&&t)this.setInitialReferrer(e),this.setInitialReferringDomain(t);else{const t=e||Xn();this.setInitialReferrer(t),this.setInitialReferringDomain(xn(t))}}isPersistenceEnabledForStorageEntry(e){return mr(Pt.storage.entries.value[e]?.type)}migrateDataFromPreviousStorage(){const e=Pt.storage.entries.value,t=[Xt,Zt,Yt];Object.keys(e).forEach((n=>{const r=n,i=e[r]?.type,s=this.storeManager?.getStore(ln[i]);s&&t.forEach((e=>{const t=this.storeManager?.getStore(ln[e]);if(t&&e!==i){const e=t.get(nn[r]);(e=>w(e)&&""!==e)(e)&&s.set(nn[r],e),t.remove(nn[r])}}))}))}migrateStorageIfNeeded(){if(!Pt.storage.migrate.value)return;const e=[];[rn,sn,on].forEach((t=>{const n=this.storeManager?.getStore(t);n&&e.push(n)})),Object.keys(nn).forEach((t=>{const n=nn[t];e.forEach((e=>{const t=this.pluginsManager?.invokeSingle("storage.migrate",n,e.engine,this.errorHandler,this.logger);I(t)||e.set(n,t)}))}))}getConfiguredSessionTrackingInfo(){let e,t=!1!==Pt.loadOptions.value.sessions?.autoTrack;if(!t)return{autoTrack:t};const n=Pt.loadOptions.value.sessions?.timeout;return pr(n)?e=n:(this.logger?.warn(((e,t,n)=>`${e}${ge}The session timeout value "${t}" is not a number. The default timeout of ${n} ms will be used instead.`)(V,n,oe)),e=oe),0===e&&(this.logger?.warn(`${V}${ge}The session timeout value is 0, which disables the automatic session tracking feature. If you want to enable session tracking, please provide a positive integer value for the timeout.`),t=!1),e>0&&e<1e4&&this.logger?.warn(((e,t,n)=>`${e}${ge}The session timeout value ${t} ms is less than the recommended minimum of ${n} ms. Please consider increasing the timeout value to ensure optimal performance and reliability.`)(V,e,1e4)),{timeout:e,autoTrack:t}}onError(e,t){if(!this.errorHandler)throw e;this.errorHandler.onError(e,V,t)}getEncryptedCookieData(e,t){const n=[];return e.forEach((e=>{const r=t?.encrypt(ve(e.value,!1,[],this.logger));w(r)&&n.push({name:e.name,value:r})})),n}makeRequestToSetCookie(e,t){this.httpClient?.getAsyncData({url:Pt.serverCookies.dataServiceUrl.value,options:{method:"POST",data:ve({reqType:"setCookies",workspaceId:Pt.source.value?.workspaceId,data:{options:{maxAge:Pt.storage.cookie.value?.maxage,path:Pt.storage.cookie.value?.path,domain:Pt.storage.cookie.value?.domain,sameSite:Pt.storage.cookie.value?.samesite,secure:Pt.storage.cookie.value?.secure,expires:Pt.storage.cookie.value?.expires},cookies:e}}),sendRawData:!0,withCredentials:!0},isRawResponse:!0,callback:t})}setServerSideCookies(e,t,n){try{const r=this.getEncryptedCookieData(e,n);r.length>0&&this.makeRequestToSetCookie(r,((r,i)=>{var s;200===i?.xhr?.status?e.forEach((e=>{const r=n?.get(e.name),i=ve(e.value,!1,[]);ve(r,!1,[])!==i&&(this.logger?.error(`The server failed to set the ${e.name} cookie. As a fallback, the cookies will be set client side.`),t&&t(e.name,e.value))})):(this.logger?.error((s=i?.xhr?.status,`The server responded with status ${s} while setting the cookies. As a fallback, the cookies will be set client side.`)),e.forEach((e=>{t&&t(e.name,e.value)})))}))}catch(n){this.onError(n,"Failed to set/remove cookies via server. As a fallback, the cookies will be managed client side."),e.forEach((e=>{t&&t(e.name,e.value)}))}}syncValueToStorage(e,t){const n=Pt.storage.entries.value,r=n[e]?.type;if(mr(r)){const i=this.storeManager?.getStore(ln[r]),s=n[e]?.key;t&&(E(t)||O(t))?Pt.serverCookies.isEnabledServerSideCookies.value&&r===Xt?(this.serverSideCookieDebounceFuncs[e]&&globalThis.clearTimeout(this.serverSideCookieDebounceFuncs[e]),this.serverSideCookieDebounceFuncs[e]=globalThis.setTimeout((()=>{this.setServerSideCookies([{name:s,value:t}],((e,t)=>{i?.set(e,t)}),i)}),10)):i?.set(s,t):i?.remove(s)}}registerEffects(){an.forEach((e=>{Ue((()=>{this.syncValueToStorage(e,Pt.session[e].value)}))}))}setAnonymousId(e,t){let n=e;if(this.isPersistenceEnabledForStorageEntry("anonymousId")){if(!n&&t){const e=this.pluginsManager?.invokeSingle("userSession.anonymousIdGoogleLinker",t);n=e}n=n||br()}else n=dt.anonymousId;Pt.session.anonymousId.value=n}getAnonymousId(e){const t=Pt.storage.entries.value.anonymousId?.type;if(mr(t)){let t=this.getEntryValue("anonymousId");if(!t&&e){const n=this.pluginsManager?.invokeSingle("storage.getAnonymousId",Pn,e);t=n}Pt.session.anonymousId.value=t||br()}return Pt.session.anonymousId.value}getEntryValue(e){const t=Pt.storage.entries.value,n=t[e]?.type;if(mr(n)){const r=this.storeManager?.getStore(ln[n]),i=t[e]?.key;return r?.get(i)??null}return null}getExternalAnonymousIdByCookieName(e){const t=Pn(Xt);return t?.isEnabled?t.getItem(e)??null:null}getUserId(){return this.getEntryValue("userId")}getUserTraits(){return this.getEntryValue("userTraits")}getGroupId(){return this.getEntryValue("groupId")}getGroupTraits(){return this.getEntryValue("groupTraits")}getInitialReferrer(){return this.getEntryValue("initialReferrer")}getInitialReferringDomain(){return this.getEntryValue("initialReferringDomain")}getSessionInfo(){return this.getEntryValue("sessionInfo")}getAuthToken(){return this.getEntryValue("authToken")}getSessionId(){const e=this.getSessionInfo()??dt.sessionInfo;return e.autoTrack&&!vr(e.expiresAt)||e.manualTrack?e.id??null:null}refreshSession(){let e=this.getSessionInfo()??dt.sessionInfo;(e.autoTrack||e.manualTrack)&&(e.autoTrack&&(this.startOrRenewAutoTracking(e),e=Pt.session.sessionInfo.value),void 0===e.sessionStart?e={...e,sessionStart:!0}:e.sessionStart&&(e={...e,sessionStart:!1})),Pt.session.sessionInfo.value=e,"readyExecuted"!==Pt.lifecycle.status.value&&this.syncValueToStorage("sessionInfo",e)}reset(e,t){const{session:n}=Pt,{manualTrack:r,autoTrack:i}=n.sessionInfo.value;Se((()=>{n.userId.value=dt.userId,n.userTraits.value=dt.userTraits,n.groupId.value=dt.groupId,n.groupTraits.value=dt.groupTraits,n.authToken.value=dt.authToken,e&&this.setAnonymousId(),t||(i?(n.sessionInfo.value=dt.sessionInfo,this.startOrRenewAutoTracking(n.sessionInfo.value)):r&&this.startManualTrackingInternal())}))}setUserId(e){Pt.session.userId.value=this.isPersistenceEnabledForStorageEntry("userId")&&e?e:dt.userId}setUserTraits(e){Pt.session.userTraits.value=this.isPersistenceEnabledForStorageEntry("userTraits")&&e?D(Pt.session.userTraits.value??dt.userTraits,e):dt.userTraits}setGroupId(e){Pt.session.groupId.value=this.isPersistenceEnabledForStorageEntry("groupId")&&e?e:dt.groupId}setGroupTraits(e){Pt.session.groupTraits.value=this.isPersistenceEnabledForStorageEntry("groupTraits")&&e?D(Pt.session.groupTraits.value??dt.groupTraits,e):dt.groupTraits}setInitialReferrer(e){Pt.session.initialReferrer.value=this.isPersistenceEnabledForStorageEntry("initialReferrer")&&e?e:dt.initialReferrer}setInitialReferringDomain(e){Pt.session.initialReferringDomain.value=this.isPersistenceEnabledForStorageEntry("initialReferringDomain")&&e?e:dt.initialReferringDomain}startOrRenewAutoTracking(e){if(vr(e.expiresAt))Pt.session.sessionInfo.value=(e=>{const t=Date.now(),n=e||oe;return{id:t,expiresAt:t+n,timeout:n,sessionStart:void 0,autoTrack:!0}})(e.timeout);else{const t=Date.now(),n=e.timeout;Pt.session.sessionInfo.value=D(e,{expiresAt:t+n})}}start(e){Pt.session.sessionInfo.value=yr(e,this.logger)}startManualTrackingInternal(){this.start(Date.now())}end(){Pt.session.sessionInfo.value=dt.sessionInfo}setAuthToken(e){Pt.session.authToken.value=this.isPersistenceEnabledForStorageEntry("authToken")&&e?e:dt.authToken}}const Cr=["BeaconQueue","Bugsnag","CustomConsentManager","DeviceModeDestinations","DeviceModeTransformation","ErrorReporting","ExternalAnonymousId","GoogleLinker","KetchConsentManager","NativeDestinationQueue","OneTrustConsentManager","StorageEncryption","StorageEncryptionLegacy","StorageMigrator","XhrQueue"],Rr="dataplaneEventsQueue",$r="destinationsEventsQueue",Dr=(e,t)=>{const n=g(e),r=e.integrations??_n,i=t.nativeDestinations.integrationsConfig.value,s=((e,t)=>Object.keys(e).filter((n=>!0!==e[n]||!t[n])).reduce(((t,n)=>{const r=g(t);return r[n]=e[n],r}),{}))(r,i);return n.integrations=D(i,s),n};class Or{constructor(e,t,n,r){this.pluginsManager=e,this.errorHandler=n,this.logger=r,this.httpClient=new Wt(n,r),this.storeManager=t,this.onError=this.onError.bind(this)}init(){try{this.dataplaneEventsQueue=this.pluginsManager.invokeSingle(`${Rr}.init`,Pt,this.httpClient,this.storeManager,this.errorHandler,this.logger)}catch(e){this.onError(e,"XhrQueuePlugin initialization failed")}try{this.dmtEventsQueue=this.pluginsManager.invokeSingle("transformEvent.init",Pt,this.pluginsManager,this.httpClient,this.storeManager,this.errorHandler,this.logger)}catch(e){this.onError(e,"DeviceModeTransformationPlugin initialization failed")}try{this.destinationsEventsQueue=this.pluginsManager.invokeSingle(`${$r}.init`,Pt,this.pluginsManager,this.storeManager,this.dmtEventsQueue,this.errorHandler,this.logger)}catch(e){this.onError(e,"NativeDestinationQueuePlugin initialization failed")}Ue((()=>{!0===Pt.nativeDestinations.clientDestinationsReady.value&&(this.destinationsEventsQueue?.start(),this.dmtEventsQueue?.start())}));const e=(e=>e.consents.preConsent.value.enabled&&"buffer"===e.consents.preConsent.value.events?.delivery&&("session"===e.consents.preConsent.value.storage?.strategy||"none"===e.consents.preConsent.value.storage?.strategy))(Pt);let t;Ue((()=>{const n=!0===Pt.loadOptions.value.bufferDataPlaneEventsUntilReady&&!1===Pt.nativeDestinations.clientDestinationsReady.value;!1!==Pt.nativeDestinations.activeDestinations.value.some((e=>{return t=e,Boolean("hybrid"===t.config.connectionMode||!0===t.config.useNativeSDKToSend);var t}))&&!1!==n||e||!0===this.dataplaneEventsQueue?.scheduleTimeoutActive||(globalThis.clearTimeout(t),this.dataplaneEventsQueue?.start())})),!0===Pt.loadOptions.value.bufferDataPlaneEventsUntilReady&&(t=globalThis.setTimeout((()=>{!0!==this.dataplaneEventsQueue?.scheduleTimeoutActive&&this.dataplaneEventsQueue?.start()}),Pt.loadOptions.value.dataPlaneEventsBufferTimeout))}resume(){!0!==this.dataplaneEventsQueue?.scheduleTimeoutActive&&(Pt.consents.postConsent.value.discardPreConsentEvents&&(this.dataplaneEventsQueue?.clear(),this.destinationsEventsQueue?.clear()),this.dataplaneEventsQueue?.start())}enqueue(e,t){let n;try{n=Dr(e,Pt),this.pluginsManager.invokeSingle(`${Rr}.enqueue`,Pt,this.dataplaneEventsQueue,n,this.errorHandler,this.logger)}catch(e){this.onError(e,"XhrQueuePlugin event enqueue failed")}try{const t=g(e);this.pluginsManager.invokeSingle(`${$r}.enqueue`,Pt,this.destinationsEventsQueue,t,this.errorHandler,this.logger)}catch(e){this.onError(e,"NativeDestinationQueuePlugin event enqueue failed")}try{t?.(n)}catch(e){this.onError(e,"API Callback Invocation Failed")}}onError(e,t,n){if(!this.errorHandler)throw e;this.errorHandler.onError(e,"EventRepository",t,n)}}const Mr=e=>{const t=new CustomEvent(e,{detail:{analyticsInstance:globalThis.rudderanalytics},bubbles:!0,cancelable:!0,composed:!0});globalThis.document.dispatchEvent(t)};class Br{constructor(){this.preloadBuffer=new je,this.initialized=!1,this.errorHandler=Dt,this.logger=Fe,this.externalSrcLoader=new me(this.errorHandler,this.logger),this.capabilitiesManager=new tr(this.errorHandler,this.logger),this.httpClient=Jt}load(e,t,n={}){if(Pt.lifecycle.status.value)return;let r=g(t),i=g(n);C(t)&&(i=t,r=void 0),Se((()=>{Pt.lifecycle.writeKey.value=e,Pt.lifecycle.dataPlaneUrl.value=r,Pt.loadOptions.value=((e,t)=>{const n=g(t);return E(n.setCookieDomain)||delete n.setCookieDomain,["Strict","Lax","None"].includes(n.sameSiteCookie)||delete n.sameSiteCookie,n.secureCookie=!0===n.secureCookie,["none","default","full"].includes(n.uaChTrackLevel)||delete n.uaChTrackLevel,R(n.integrations)||delete n.integrations,n.plugins=n.plugins??Cr,n.useGlobalIntegrationsConfigInEvents=!0===n.useGlobalIntegrationsConfigInEvents,n.bufferDataPlaneEventsUntilReady=!0===n.bufferDataPlaneEventsUntilReady,n.sendAdblockPage=!0===n.sendAdblockPage,n.useServerSideCookies=!0===n.useServerSideCookies,n.dataServiceEndpoint&&"string"!=typeof n.dataServiceEndpoint&&delete n.dataServiceEndpoint,R(n.sendAdblockPageOptions)||delete n.sendAdblockPageOptions,T(n.loadIntegration)?n.loadIntegration=!0===n.loadIntegration:delete n.loadIntegration,R(n.storage)?(n.storage=B(n.storage),n.storage.migrate=!0===n.storage?.migrate):delete n.storage,R(n.beaconQueueOptions)?n.beaconQueueOptions=B(n.beaconQueueOptions):delete n.beaconQueueOptions,R(n.destinationsQueueOptions)?n.destinationsQueueOptions=B(n.destinationsQueueOptions):delete n.destinationsQueueOptions,R(n.queueOptions)?n.queueOptions=B(n.queueOptions):delete n.queueOptions,n.lockIntegrationsVersion=!0===n.lockIntegrationsVersion,n.lockPluginsVersion=!0===n.lockPluginsVersion,hr(n.dataPlaneEventsBufferTimeout)||delete n.dataPlaneEventsBufferTimeout,R(n.storage?.cookie)?n.storage.cookie=B(n.storage?.cookie):delete n.storage?.cookie,R(n.preConsent)?n.preConsent=B(n.preConsent):delete n.preConsent,D(e,n)})(Pt.loadOptions.value,i),Pt.lifecycle.status.value="mounted"})),Pt.loadOptions.value.logLevel&&this.logger?.setMinLogLevel(Pt.loadOptions.value.logLevel),le("state",Pt,e),this.startLifecycle()}startLifecycle(){Ue((()=>{try{switch(Pt.lifecycle.status.value){case"mounted":this.onMounted();break;case"browserCapabilitiesReady":this.onBrowserCapabilitiesReady();break;case"configured":this.onConfigured();break;case"pluginsLoading":case"destinationsLoading":case"readyExecuted":default:break;case"pluginsReady":this.onPluginsReady();break;case"initialized":this.onInitialized();break;case"loaded":this.onLoaded();break;case"destinationsReady":this.onDestinationsReady();break;case"ready":this.onReady()}}catch(e){const t="Failed to load the SDK";this.errorHandler.onError(fe(e,t),Z)}}))}onBrowserCapabilitiesReady(){ce(this),this.prepareInternalServices(),this.loadConfig()}onLoaded(){this.processBufferedEvents(),!0===Pt.consents.preConsent.value.enabled?Pt.lifecycle.status.value="ready":this.loadDestinations()}onMounted(){this.capabilitiesManager.init()}enqueuePreloadBufferEvents(e){Array.isArray(e)&&e.forEach((e=>this.preloadBuffer.enqueue(g(e))))}processDataInPreloadBuffer(){for(;this.preloadBuffer.size()>0;){const e=this.preloadBuffer.dequeue();e&&de([...e],this)}}prepareInternalServices(){this.pluginsManager=new Gt(Ct,this.errorHandler,this.logger),this.storeManager=new $n(this.pluginsManager,this.errorHandler,this.logger),this.configManager=new Jn(this.httpClient,this.errorHandler,this.logger),this.userSessionManager=new Pr(this.errorHandler,this.logger,this.pluginsManager,this.storeManager,this.httpClient),this.eventRepository=new Or(this.pluginsManager,this.storeManager,this.errorHandler,this.logger),this.eventManager=new Ar(this.eventRepository,this.userSessionManager,this.errorHandler,this.logger)}loadConfig(){Pt.lifecycle.writeKey.value&&this.httpClient.setAuthHeader(Pt.lifecycle.writeKey.value),this.configManager?.init()}onPluginsReady(){this.errorHandler.init(this.httpClient,this.externalSrcLoader),this.storeManager?.init(),this.userSessionManager?.init(),Pt.consents.enabled.value&&!Pt.consents.initialized.value&&(this.pluginsManager?.invokeSingle("consentManager.init",Pt,this.logger),!1===Pt.consents.preConsent.value.enabled&&this.pluginsManager?.invokeSingle("consentManager.updateConsentsInfo",Pt,this.storeManager,this.logger)),this.eventManager?.init(),Pt.lifecycle.status.value="initialized"}onConfigured(){this.pluginsManager?.init()}onInitialized(){this.processDataInPreloadBuffer(),b(Pt.loadOptions.value.onLoaded)&&Pt.loadOptions.value.onLoaded(globalThis.rudderanalytics),Se((()=>{Pt.lifecycle.loaded.value=!0,Pt.lifecycle.status.value="loaded"})),this.initialized=!0,Mr("RSA_Initialised")}onReady(){Pt.lifecycle.status.value="readyExecuted",Pt.eventBuffer.readyCallbacksArray.value.forEach((e=>{try{e()}catch(e){this.errorHandler.onError(e,Z,We)}})),Mr("RSA_Ready")}processBufferedEvents(){let e=Pt.eventBuffer.toBeProcessedArray.value;for(;e.length>0;){const t=e.shift();if(Pt.eventBuffer.toBeProcessedArray.value=e,t){const e=t[0];b(this[e])&&this[e](...t.slice(1),!0)}e=Pt.eventBuffer.toBeProcessedArray.value}}loadDestinations(){if(Pt.nativeDestinations.clientDestinationsReady.value)return;this.pluginsManager?.invokeSingle("nativeDestinations.setActiveDestinations",Pt,this.pluginsManager,this.errorHandler,this.logger);const e=Pt.nativeDestinations.activeDestinations.value.length;0!==e?(Pt.lifecycle.status.value="destinationsLoading",this.pluginsManager?.invokeSingle("nativeDestinations.load",Pt,this.externalSrcLoader,this.errorHandler,this.logger),Ue((()=>{(0===e||Pt.nativeDestinations.initializedDestinations.value.length+Pt.nativeDestinations.failedDestinations.value.length===e)&&Se((()=>{Pt.lifecycle.status.value="destinationsReady",Pt.nativeDestinations.clientDestinationsReady.value=!0}))}))):Pt.lifecycle.status.value="destinationsReady"}onDestinationsReady(){"ready"!==Pt.lifecycle.status.value&&(Pt.lifecycle.status.value="ready")}ready(e,t=!1){const n="ready";if(Pt.lifecycle.loaded.value)if(this.errorHandler.leaveBreadcrumb(`New ${n} invocation`),b(e))if("readyExecuted"===Pt.lifecycle.status.value)try{e()}catch(e){this.errorHandler.onError(e,Z,We)}else Pt.eventBuffer.readyCallbacksArray.value=[...Pt.eventBuffer.readyCallbacksArray.value,e];else this.logger.error(`${"readyApi"}${ge}The callback is not a function.`);else Pt.eventBuffer.toBeProcessedArray.value=[...Pt.eventBuffer.toBeProcessedArray.value,[n,e]]}page(e,t=!1){const n="page";Pt.lifecycle.loaded.value?(this.errorHandler.leaveBreadcrumb(`New ${n} event`),Pt.metrics.triggered.value+=1,this.eventManager?.addEvent({type:"page",category:e.category,name:e.name,properties:e.properties,options:e.options,callback:e.callback}),!0===Pt.capabilities.isAdBlocked.value&&e.category!==te&&this.page(U(te,"ad-block page request",{path:"/ad-blocked"},Pt.loadOptions.value.sendAdblockPageOptions))):Pt.eventBuffer.toBeProcessedArray.value=[...Pt.eventBuffer.toBeProcessedArray.value,[n,e]]}track(e,t=!1){const n="track";Pt.lifecycle.loaded.value?(this.errorHandler.leaveBreadcrumb(`New ${n} event`),Pt.metrics.triggered.value+=1,this.eventManager?.addEvent({type:n,name:e.name||void 0,properties:e.properties,options:e.options,callback:e.callback})):Pt.eventBuffer.toBeProcessedArray.value=[...Pt.eventBuffer.toBeProcessedArray.value,[n,e]]}identify(e,t=!1){const n="identify";if(!Pt.lifecycle.loaded.value)return void(Pt.eventBuffer.toBeProcessedArray.value=[...Pt.eventBuffer.toBeProcessedArray.value,[n,e]]);this.errorHandler.leaveBreadcrumb(`New ${n} event`),Pt.metrics.triggered.value+=1;Boolean(e.userId&&Pt.session.userId.value&&e.userId!==Pt.session.userId.value)&&this.reset(),S(e.userId)||this.userSessionManager?.setUserId(e.userId),this.userSessionManager?.setUserTraits(e.traits),this.eventManager?.addEvent({type:n,userId:e.userId,traits:e.traits,options:e.options,callback:e.callback})}alias(e,t=!1){const n="alias";if(!Pt.lifecycle.loaded.value)return void(Pt.eventBuffer.toBeProcessedArray.value=[...Pt.eventBuffer.toBeProcessedArray.value,[n,e]]);this.errorHandler.leaveBreadcrumb(`New ${n} event`),Pt.metrics.triggered.value+=1;const r=e.from??this.userSessionManager?.getUserId()??this.userSessionManager?.getAnonymousId();this.eventManager?.addEvent({type:n,to:e.to,from:r,options:e.options,callback:e.callback})}group(e,t=!1){const n="group";Pt.lifecycle.loaded.value?(this.errorHandler.leaveBreadcrumb(`New ${n} event`),Pt.metrics.triggered.value+=1,S(e.groupId)||this.userSessionManager?.setGroupId(e.groupId),this.userSessionManager?.setGroupTraits(e.traits),this.eventManager?.addEvent({type:n,groupId:e.groupId,traits:e.traits,options:e.options,callback:e.callback})):Pt.eventBuffer.toBeProcessedArray.value=[...Pt.eventBuffer.toBeProcessedArray.value,[n,e]]}reset(e,t=!1){const n="reset";Pt.lifecycle.loaded.value?(this.errorHandler.leaveBreadcrumb(`New ${n} invocation, resetAnonymousId: ${e}`),this.userSessionManager?.reset(e)):Pt.eventBuffer.toBeProcessedArray.value=[...Pt.eventBuffer.toBeProcessedArray.value,[n,e]]}getAnonymousId(e){return this.userSessionManager?.getAnonymousId(e)}setAnonymousId(e,t,n=!1){const r="setAnonymousId";Pt.lifecycle.loaded.value?(this.errorHandler.leaveBreadcrumb(`New ${r} invocation`),this.userSessionManager?.setAnonymousId(e,t)):Pt.eventBuffer.toBeProcessedArray.value=[...Pt.eventBuffer.toBeProcessedArray.value,[r,e,t]]}getUserId(){return Pt.session.userId.value}getUserTraits(){return Pt.session.userTraits.value}getGroupId(){return Pt.session.groupId.value}getGroupTraits(){return Pt.session.groupTraits.value}startSession(e,t=!1){const n="startSession";Pt.lifecycle.loaded.value?(this.errorHandler.leaveBreadcrumb(`New ${n} invocation`),this.userSessionManager?.start(e)):Pt.eventBuffer.toBeProcessedArray.value=[...Pt.eventBuffer.toBeProcessedArray.value,[n,e]]}endSession(e=!1){const t="endSession";Pt.lifecycle.loaded.value?(this.errorHandler.leaveBreadcrumb(`New ${t} invocation`),this.userSessionManager?.end()):Pt.eventBuffer.toBeProcessedArray.value=[...Pt.eventBuffer.toBeProcessedArray.value,[t]]}getSessionId(){const e=this.userSessionManager?.getSessionId();return e??null}consent(e,t=!1){Pt.lifecycle.loaded.value?(this.errorHandler.leaveBreadcrumb("New consent invocation"),Se((()=>{Pt.consents.preConsent.value={...Pt.consents.preConsent.value,enabled:!1},Pt.consents.postConsent.value=(e=>{const t={sendPageEvent:!1,trackConsent:!1,discardPreConsentEvents:!1};if(R(e)){const n=g(e);t.storage=n.storage,T(n.integrations)&&(t.integrations=R(n.integrations)?n.integrations:_n),t.discardPreConsentEvents=!0===n.discardPreConsentEvents,t.sendPageEvent=!0===n.sendPageEvent,t.trackConsent=!0===n.trackConsent,O(n.consentManagement)&&(t.consentManagement=D(n.consentManagement,{enabled:Pt.consents.enabled.value}))}return t})(e);const{initialized:t,consentsData:n}=Gn(Pt.consents.postConsent.value.consentManagement,this.logger);Pt.consents.initialized.value=t||Pt.consents.initialized.value,Pt.consents.data.value=n})),Pt.consents.enabled.value&&!Pt.consents.initialized.value&&this.pluginsManager?.invokeSingle("consentManager.updateConsentsInfo",Pt,this.storeManager,this.logger),this.storeManager?.initializeStorageState(),this.userSessionManager?.syncStorageDataToState(),this.eventManager?.resume(),this.loadDestinations(),this.sendTrackingEvents(t)):Pt.eventBuffer.toBeProcessedArray.value=[...Pt.eventBuffer.toBeProcessedArray.value,["consent",e]]}sendTrackingEvents(e){if(Pt.consents.postConsent.value.trackConsent){const t=j("Consent Management Interaction");e?Pt.eventBuffer.toBeProcessedArray.value=[...Pt.eventBuffer.toBeProcessedArray.value,["track",t]]:this.track(t)}if(Pt.consents.postConsent.value.sendPageEvent){const t=U();e?Pt.eventBuffer.toBeProcessedArray.value=[...Pt.eventBuffer.toBeProcessedArray.value,["page",t]]:this.page(t)}}setAuthToken(e){this.userSessionManager?.setAuthToken(e)}}class Lr{static globalSingleton=null;analyticsInstances={};defaultAnalyticsKey="";logger=Fe;constructor(){if(Lr.globalSingleton)return Lr.globalSingleton;Dt.attachErrorListeners(),this.setDefaultInstanceKey=this.setDefaultInstanceKey.bind(this),this.getAnalyticsInstance=this.getAnalyticsInstance.bind(this),this.load=this.load.bind(this),this.ready=this.ready.bind(this),this.triggerBufferedLoadEvent=this.triggerBufferedLoadEvent.bind(this),this.page=this.page.bind(this),this.track=this.track.bind(this),this.identify=this.identify.bind(this),this.alias=this.alias.bind(this),this.group=this.group.bind(this),this.reset=this.reset.bind(this),this.getAnonymousId=this.getAnonymousId.bind(this),this.setAnonymousId=this.setAnonymousId.bind(this),this.getUserId=this.getUserId.bind(this),this.getUserTraits=this.getUserTraits.bind(this),this.getGroupId=this.getGroupId.bind(this),this.getGroupTraits=this.getGroupTraits.bind(this),this.startSession=this.startSession.bind(this),this.endSession=this.endSession.bind(this),this.getSessionId=this.getSessionId.bind(this),this.setAuthToken=this.setAuthToken.bind(this),this.consent=this.consent.bind(this),Lr.globalSingleton=this,this.triggerBufferedLoadEvent(),globalThis.rudderanalytics=this}setDefaultInstanceKey(e){e&&(this.defaultAnalyticsKey=e)}getAnalyticsInstance(e){const t=e??this.defaultAnalyticsKey;return Boolean(this.analyticsInstances[t])||(this.analyticsInstances[t]=new Br),this.analyticsInstances[t]}load(e,t,n){E(e)?this.analyticsInstances[e]||(this.setDefaultInstanceKey(e),this.analyticsInstances[e]=new Br,this.getAnalyticsInstance(e).load(e,t,n)):this.logger.error(((e,t)=>`${e}${ge}The write key "${t}" is not a string. Please check that the write key is correct and try again.`)(X,e))}triggerBufferedLoadEvent(){const e=Array.isArray(globalThis.rudderanalytics)?globalThis.rudderanalytics:[];(e=>{const t="consent",n=e.filter((e=>e[0]===t)),r=e.filter((e=>e[0]!==t));e.splice(0,e.length,...n,...r)})(e);const t=(e=>{let t=[],n=0;for(;n0&&(t.shift(),this.load.apply(null,t))}ready(e){this.getAnalyticsInstance().ready(e)}page(e,t,n,r,i){this.getAnalyticsInstance().page(U(e,t,n,r,i))}track(e,t,n,r){this.getAnalyticsInstance().track(j(e,t,n,r))}identify(e,t,n,r){this.getAnalyticsInstance().identify(H(e,t,n,r))}alias(e,t,n,r){this.getAnalyticsInstance().alias(_(e,t,n,r))}group(e,t,n,r){0!==arguments.length?this.getAnalyticsInstance().group(F(e,t,n,r)):this.logger.error(`${X}${ge}The group() method must be called with at least one argument.`)}reset(e){this.getAnalyticsInstance().reset(e)}getAnonymousId(e){return this.getAnalyticsInstance().getAnonymousId(e)}setAnonymousId(e,t){this.getAnalyticsInstance().setAnonymousId(e,t)}getUserId(){return this.getAnalyticsInstance().getUserId()}getUserTraits(){return this.getAnalyticsInstance().getUserTraits()}getGroupId(){return this.getAnalyticsInstance().getGroupId()}getGroupTraits(){return this.getAnalyticsInstance().getGroupTraits()}startSession(e){return this.getAnalyticsInstance().startSession(e)}endSession(){return this.getAnalyticsInstance().endSession()}getSessionId(){return this.getAnalyticsInstance().getSessionId()}setAuthToken(e){return this.getAnalyticsInstance().setAuthToken(e)}consent(e){return this.getAnalyticsInstance().consent(e)}}const{setDefaultInstanceKey:Nr,getAnalyticsInstance:xr,load:Ur,ready:jr,page:Hr,track:_r,identify:Fr,alias:Qr,group:Gr,reset:Kr,getAnonymousId:zr,setAnonymousId:Vr,getUserId:qr,getUserTraits:Wr,getGroupId:Jr,getGroupTraits:Xr,startSession:Zr,endSession:Yr,getSessionId:ei,consent:ti,setAuthToken:ni}=new Lr;return e.alias=Qr,e.consent=ti,e.endSession=Yr,e.getAnalyticsInstance=xr,e.getAnonymousId=zr,e.getGroupId=Jr,e.getGroupTraits=Xr,e.getSessionId=ei,e.getUserId=qr,e.getUserTraits=Wr,e.group=Gr,e.identify=Fr,e.load=Ur,e.page=Hr,e.ready=jr,e.reset=Kr,e.setAnonymousId=Vr,e.setAuthToken=ni,e.setDefaultInstanceKey=Nr,e.startSession=Zr,e.track=_r,Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),e}({}); //# sourceMappingURL=rsa.min.js.map