@corbado/observe 1.9.1 → 1.10.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/analysis/client.mjs +183 -14
- package/dist/analysis/config.mjs +5 -5
- package/dist/analysis/cross-origin-session.mjs +422 -0
- package/dist/analysis/device.mjs +0 -79
- package/dist/analysis/low-events/grouped-input-tracker.mjs +2 -3
- package/dist/analysis/low-events/input-change-recorder.mjs +35 -12
- package/dist/analysis/low-events/input-tracker.mjs +0 -58
- package/dist/analysis/queue.mjs +9 -0
- package/dist/analysis/readers/network.mjs +5 -0
- package/dist/analysis/readers/page.mjs +4 -0
- package/dist/analysis/transports/fetch.mjs +16 -1
- package/dist/analysis/utils/operation-full.mjs +0 -1
- package/dist/analysis/version.mjs +1 -1
- package/dist/cdn/script.global.js +4 -4
- package/dist/index.d.mts +130 -30
- package/dist/index.d.ts +130 -30
- package/dist/index.js +4 -4
- package/dist/index.mjs +4 -4
- package/package.json +1 -1
- package/dist/analysis/readers/password-manager-dom.mjs +0 -112
package/dist/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";var
|
|
2
|
-
`);if(
|
|
3
|
-
`),s=
|
|
4
|
-
${s}`,t)}function ui(i,e,t){let{limits:r}=t,n=q(i),o=u=>Ce(u,e-1,t);if(n==="Date")return Number.isNaN(i.getTime())?"[Invalid Date]":i.toISOString();if(n==="RegExp")return R(String(i),r.maxValueLength);if(n==="ArrayBuffer")return`[ArrayBuffer(${i.byteLength})]`;if(ArrayBuffer.isView(i))return`[${n}(${i.byteLength})]`;if(n==="Map"||n==="Set"){let u=i,h=[];for(let m of u){if(h.length===r.maxBreadth)break;h.push(o(m))}return u.size>h.length&&h.push(`[+${u.size-h.length} more]`),h}if(n==="Promise"||n==="WeakMap"||n==="WeakSet"||n==="Window")return`[${n}]`;if(typeof Node<"u"&&i instanceof Node)return`[${n}]`;if(Array.isArray(i)){let u=i.slice(0,r.maxBreadth).map(o);return i.length>r.maxBreadth&&u.push(`[+${i.length-r.maxBreadth} more]`),u}if(typeof Response<"u"&&i instanceof Response)return{status:o(i.status),statusText:o(i.statusText),url:o(i.url),redirected:o(i.redirected)};if(typeof Event<"u"&&i instanceof Event){let u=i,h={type:o(u.type)};for(let m of["message","filename","lineno","colno"])m in u&&(h[m]=o(u[m]));return"error"in u&&u.error!=null&&(h.error=o(u.error)),h}let s=Object.create(null),a=i,l=pi(i);if(l){for(let h of si){if(h==="stack"&&!r.stack)continue;let m=a[h];if(!(m==null||typeof m=="function")){if(h==="stack"){r.stack&&typeof m=="string"&&(s.stack=G(Lt(m,r.maxStackFrames,r.maxValueLength),t));continue}s[h]=o(m)}}let u=a.cause;u!=null&&typeof u!="function"&&(s.cause=ci(u,e-1,t))}let p=0,d=Object.keys(a);for(let u of d){if(u in s||u==="stack"&&!r.stack||l&&u==="cause")continue;if(++p>r.maxBreadth){s["\u2026"]=`[+${d.length-r.maxBreadth} keys]`;break}let h=a[u];typeof h!="function"&&(s[G(u,t)]=u==="stack"&&typeof h=="string"?G(Lt(h,r.maxStackFrames,r.maxValueLength),t):o(h))}return!l&&n!=="Object"&&p===0?`[${n}]`:s}function ci(i,e,t){if(typeof i!="object"||i===null)return Ce(i,e,t);if(t.causeBudget<=0)return G(`[${q(i)}]`,t);t.causeBudget--;try{return Ce(i,e,t)}finally{t.causeBudget++}}var At=1500,f=class{constructor(e,t){this.tracker=e;this.operationName=t}startReference;captureSpecType;captureSessionId;lowFlushers=[];lowPrefillCapturers=[];lowEventSink(e,t){return{reserveCaptureSeq:O,enqueueLowEvent:r=>this.tracker.enqueueLowEvent({...r,captureSeq:r.captureSeq??O(),subflowStartEventId:this.startReference,sourceKind:e,fieldRole:t,initiator:r.initiator??(t?`input-${t}`:"unknown")},this.captureSessionId),flushKeepalive:()=>this.tracker.lowEventFlushKeepalive(),passwordManagerDomScan:()=>this.tracker.isPasswordManagerDomScanEnabled(),registerInputs:(r,n)=>this.tracker.getWindowObserver().registerInputs(r,()=>({subflowStartEventId:this.startReference,fieldRole:t,initiator:t?`input-${t}`:"unknown",sessionId:this.captureSessionId}),n),beginCeremony:r=>this.tracker.getWindowObserver().beginCeremony({subflowStartEventId:this.startReference,initiator:r??"unknown",sessionId:this.captureSessionId})}}createLowCollector(e){try{let t=e();return this.lowPrefillCapturers.push(r=>t.capturePrefill(r)),t}catch(t){this.tracker.getLogger().error("Failed to attach low-event collector",t);return}}registerLowFlusher(e){this.lowFlushers.push(e)}captureOptions(e,t=this.startReference,r=this.captureSessionId,n){if(!t&&!n)return e;let o={};return t&&(o.subflowStartEventId=e?.subflowStartEventId??t,o.captureSessionId=e?.captureSessionId??r),n&&(o.initiator=e?.initiator??n),Object.defineProperties({},{...Object.getOwnPropertyDescriptors(e??{}),...Object.getOwnPropertyDescriptors(o)})}get captureReference(){return this.startReference}get captureSession(){return this.captureSessionId}adoptCapture(e,t,r){this.startReference=e,this.captureSessionId=t,this.captureSpecType=r}subflowStart(e,t){try{for(let r of this.lowFlushers)try{r()}catch(n){this.tracker.getLogger().error("Failed to flush previous low-event context",n)}this.captureSpecType=e?.explicitSpecType,this.startReference=(0,Dt.v7)(),this.captureSessionId=this.tracker.getSessionId(),this.tracker.trackSubflowStarted(this.operationName,e,this.captureOptions(t),this.startReference),this.captureInputPrefills(!0)}catch(r){this.tracker.getLogger().error("Failed to start low-event capture context",r)}}capturePrefill(){this.captureInputPrefills(!1)}captureInputPrefills(e){for(let t of this.lowPrefillCapturers)try{t(e)}catch(r){this.tracker.getLogger().error("Failed to capture input prefill",r)}}trigger(e,t){this.tracker.trackSubflowTrigger(this.operationName,e,this.captureOptions(t))}customStep(e){return this.defineStep(e)}subflowStepStarted(e,t,r,n){this.captureSpecType=t?.explicitSpecType??this.captureSpecType,this.tracker.trackSubflowStepStarted(this.operationName,e,t,this.captureOptions(r),n)}subflowStepFinished(e,t,r){(!r?.subflowStartEventId||r.subflowStartEventId===this.startReference)&&(this.captureSpecType=t?.explicitSpecType??this.captureSpecType),this.tracker.trackSubflowStepFinished(this.operationName,e,t,this.captureOptions(r))}subflowStepError(e,t,r){let n=t;try{let o=this.tracker.getSdkConfig().rawErrors?r?.rawError:void 0;o!==void 0&&(n={...t,rawError:Ze(o,r?.rawErrorLimits)})}catch{}this.tracker.trackSubflowStepError(this.operationName,e,n,this.captureOptions(r))}withWindowLowEvents(e,t){let r,n=s=>{s?.subflowStartEventId&&s.subflowStartEventId!==r||t.scheduleDisarm(At)},o=e;return{...e,start:(s,a)=>{r=a?.subflowStartEventId??this.startReference;let l=s?.explicitSpecType??this.captureSpecType,p=a?.initiator??Pt(this.operationName,l);t.arm(p,l==="passkey-cui"),o.start(s,p?{...a,initiator:p}:a)},finished:(s,a)=>{o.finished(s,a),n(a)},error:(s,a)=>{o.error(s,a),n(a)},errorTyped:(s,a)=>{o.errorTyped?.(s,a),n(a)}}}defineStep(e,t){let r,n,o,s=l=>this.captureOptions(l,r,n,o);return{start:(l,p)=>{r=this.startReference,n=this.captureSessionId,o=p?.initiator,this.subflowStepStarted(e,l,s(p),t)},finished:(l,p)=>{this.subflowStepFinished(e,l,s(p))},error:(l,p)=>{this.subflowStepError(e,{error:B(l)},s(p))},errorTyped:(l,p)=>{this.subflowStepError(e,l,s(p))}}}};function _t(i,e){if(e.explicitSpecType!==void 0)try{i.getLogger().warn("Unsupported key operation spec type; omitting it")}catch{}}var z=class extends f{prepare;sign;constructor(e,t={}){super(e,"key-signing"),this.prepare=this.defineStep("prepare"),this.sign=this.defineStep("sign"),this.subflowStart({actor:"system",explicitSpecType:_t(e,t)})}},j=class extends f{prepare;postResponse;constructor(e,t={}){super(e,"key-registration"),this.prepare=this.defineStep("prepare"),this.postResponse=this.defineStep("post-response"),this.subflowStart({actor:"system",explicitSpecType:_t(e,t)})}};function fi(i){try{return decodeURIComponent(i.replace(/\+/g," "))}catch{return i}}function hi(i,e){let t=i.toLowerCase();return e.some(r=>{let n=r.toLowerCase();return n.endsWith("*")?t.startsWith(n.slice(0,-1)):t===n})}function Mt(i,e,t){return e!=="allowlist"||i===""||i==="?"?i:`?${(i.startsWith("?")?i.slice(1):i).split("&").map(o=>{let s=o.indexOf("=");if(s===-1)return o;let a=o.slice(0,s);return o.slice(s+1)===""||hi(fi(a),t)?o:`${a}=*`}).join("&")}`}function I(i,e,t,r){return r===void 0?window.addEventListener(e,t):window.addEventListener(e,t,r),()=>window.removeEventListener(e,t)}function K(i){return document.visibilityState==="hidden"}function Ht(i){return document.readyState==="complete"}function Bt(i){return window.location.href}function Nt(i,e,t){let r=Mt(window.location.search,e,t);return`${window.location.pathname}${r}`}function Oe(i){return typeof navigator>"u"?"":navigator.userAgent??""}async function Ut(i){if(!(typeof navigator>"u"||!navigator.bluetooth))return await navigator.bluetooth.getAvailability()}async function qt(i){if(!(typeof PublicKeyCredential>"u"||!PublicKeyCredential.isUserVerifyingPlatformAuthenticatorAvailable))return await PublicKeyCredential.isUserVerifyingPlatformAuthenticatorAvailable()}async function Kt(i){if(!(typeof PublicKeyCredential>"u"||!PublicKeyCredential.isConditionalMediationAvailable))return await PublicKeyCredential.isConditionalMediationAvailable()}async function Vt(i){if(typeof PublicKeyCredential>"u"||!PublicKeyCredential.getClientCapabilities)return;let e=await PublicKeyCredential.getClientCapabilities();return Object.fromEntries(Object.entries(e).map(([t,r])=>[t,r.toString()]))}async function Wt(i){if(typeof navigator>"u"||!navigator.userAgentData)return;let e=await navigator.userAgentData.getHighEntropyValues(["platformVersion","model"]),t=e.platform,r=e.mobile,n=e.platformVersion,o=e.model||void 0;if(!(!t||r===void 0||!n))return{platform:t,mobile:r,platformVersion:n,model:o}}function $t(i){if(!(typeof navigator>"u"))return navigator.webdriver}function Gt(i){if(!(typeof navigator>"u"||typeof navigator.maxTouchPoints!="number"))return navigator.maxTouchPoints}var Yt=require("uuid");var et=(i,e,t)=>{let r=!1,n,o=null,s=null,a=()=>{s!==null&&(clearTimeout(s),s=null);let p=o;r=!1,o=null,p!==null&&i({...n===void 0?{}:{captureSeq:n},lowType:e,ts:p,durationMs:Date.now()-p})};return{extend:()=>{if(!r){let p=t?.();r=!0,o=Date.now(),n=p}s!==null&&clearTimeout(s),s=setTimeout(a,150)},flush:a}};function zt(i,e,t){let r=[],n=(s,a,l)=>{let p=d=>t(a,()=>l(d));s.addEventListener(a,p),r.push(()=>s.removeEventListener(a,p))};n(window,"blur",()=>e.blur()),n(window,"focus",()=>e.focus()),n(document,"visibilitychange",()=>e.visibilityChange(document.visibilityState==="hidden")),n(document,"focusout",s=>e.focusOut(s.target,!!s.relatedTarget)),n(document,"focusin",s=>e.focusIn(()=>s.composedPath())),n(document,"pointerdown",s=>e.pointerDown(s.target)),window.visualViewport&&(n(window.visualViewport,"resize",()=>e.viewportResize()),n(window.visualViewport,"scroll",()=>e.viewportScroll())),n(window,"pagehide",()=>e.pageHide());let o=window.navigation;return o&&n(o,"currententrychange",s=>{let a=s,l=a.from?.index,p=o.currentEntry?.index;a.navigationType==="traverse"&&typeof l=="number"&&typeof p=="number"&&l>=0&&p>=0&&p<l&&e.navigateBack()}),r}function jt(i){let e=[];for(let t=document.activeElement;t;t=t.shadowRoot?.activeElement??null)e.push(t);return e}function Qt(i){let e=document.activeElement;return{active:e,idle:e===document.body||!e}}var gi,Q=()=>gi??=(0,Yt.v7)(),Pe=class{constructor(e,t,r){this.logger=e;this.enqueue=t;this.flushKeepalive=r;typeof window>"u"||typeof document>"u"||(this.removers=zt(0,{blur:()=>{this.flushInputs(),this.bracket=this.context(),this.emit({lowType:"window-blur",ts:Date.now()},this.bracket)},focus:()=>{this.flushInputs(),this.emit({lowType:"window-focus",ts:Date.now()},this.bracket??this.context()),this.bracket=void 0},visibilityChange:n=>{this.flushInputs(),this.emit({lowType:`document-visibilitychange-${n?"hidden":"visible"}`,ts:Date.now()})},focusOut:(n,o)=>{let s=this.findInput(n);this.lastBlur=s&&!o&&Date.now()-this.unrelatedPointerAt>250?{registration:s,ts:Date.now()}:void 0},focusIn:n=>{this.lastBlur=void 0;let o=this.inputFocusListeners.size>0&&n().find(s=>this.findInput(s));o&&this.notifyInputFocus(o)},pointerDown:n=>{this.findInput(n)?this.unrelatedPointerAt=-1/0:(this.lastBlur=void 0,this.unrelatedPointerAt=Date.now())},viewportResize:()=>this.extendViewport("resize"),viewportScroll:()=>this.extendViewport("scroll"),pageHide:()=>{this.flushInputs(),this.resize.flush(),this.scroll.flush(),this.flushKeepalive()},navigateBack:()=>{this.flushInputs(),this.emit({lowType:"window-navigate-back",ts:Date.now()})}},(n,o)=>{try{o()}catch(s){this.logger.error(`Failed to observe window ${n}`,s)}}))}inputs=new Set;inputFocusListeners=new Set;ceremonies=new Set;removers=[];lastBlur;bracket;unrelatedPointerAt=-1/0;destroyed=!1;viewportContext={};resize=et(e=>this.emit(e,this.viewportContext.resize),"visualviewport-resize",O);scroll=et(e=>this.emit(e,this.viewportContext.scroll),"visualviewport-scroll",O);registerInputs(e,t,r){if(this.destroyed)return()=>{};let n={fields:e,context:t,flush:r};if(this.inputs.add(n),this.inputFocusListeners.size>0&&typeof document<"u"){let o=jt(0),s=e.find(a=>o.includes(a));s&&this.notifyInputFocus(s)}return()=>{this.inputs.delete(n),this.lastBlur?.registration===n&&(this.lastBlur=void 0)}}beginCeremony(e){let t={context:e,settled:!1};this.destroyed||(this.flushInputs(),this.ceremonies.add(t));let r=()=>{t.timer&&clearTimeout(t.timer),this.ceremonies.delete(t),this.bracket===t.context&&(this.bracket=void 0)};return{settle:n=>{t.settled=!0,t.timer&&clearTimeout(t.timer),t.timer=setTimeout(r,n)},destroy:r}}onInputFocus(e){return this.destroyed?()=>{}:(this.inputFocusListeners.add(e),()=>this.inputFocusListeners.delete(e))}notifyInputFocus(e){for(let t of this.inputFocusListeners)try{t(e)}catch(r){this.logger.error("Failed to notify registered input focus",r)}}context(){let e=[...this.ceremonies].filter(o=>!o.settled);if(e.length===1)return e[0].context;if(e.length>1)return;let t=Qt(0),r=this.findInput(t.active);if(r)return r.context();let n=this.lastBlur;if(n&&Date.now()-n.ts<=250&&t.idle)return n.registration.context()}findInput(e){return[...this.inputs].find(t=>t.fields.some(r=>r===e))}flushInputs(){for(let e of this.inputs)try{e.flush()}catch(t){this.logger.error("Failed to flush window input context",t)}}emit(e,t){if(this.destroyed)return;let{sessionId:r,...n}=t??{};this.enqueue({...e,...n,captureSeq:e.captureSeq??O(),sourceKind:"window",captureVersion:1,pageId:Q()},r)}extendViewport(e){let t=this.context(),r=this.viewportContext[e];(r?.subflowStartEventId!==t?.subflowStartEventId||r?.fieldRole!==t?.fieldRole||r?.sessionId!==t?.sessionId)&&this[e].flush(),this.viewportContext[e]=t,this[e].extend()}destroy(){if(!this.destroyed){this.flushInputs(),this.resize.flush(),this.scroll.flush(),this.destroyed=!0;for(let e of this.removers)e();for(let e of this.ceremonies)e.timer&&clearTimeout(e.timer);this.ceremonies.clear(),this.inputs.clear(),this.inputFocusListeners.clear()}}};var Jt=(g=>(g.FlowStarted="flow_started",g.FlowDecided="flow_decided",g.FlowFinished="flow_finished",g.FlowReset="flow_reset",g.AuthMethodDecisionStarted="auth_method_decision_started",g.AuthMethodDecisionFinished="auth_method_decision_finished",g.FlowAutoFinished="flow_auto_finished",g.AuthDecisionStarted="auth_decision_started",g.AuthDecisionFinished="auth_decision_finished",g.SubflowStepStarted="subflow_step_started",g.SubflowStepFinished="subflow_step_finished",g.SubflowStepError="subflow_step_error",g.SubflowTrigger="subflow_trigger",g.SubflowError="subflow_error",g.SubflowStarted="subflow_started",g.SubflowFinished="subflow_finished",g.FlowEnriched="flow_enriched",g.Conversion="conversion",g))(Jt||{});var Le="cbo_sdk_config",tt="cbo_sdk_config_cache",rt="X-Corbado-Observe-Config",Io=500,xo=50,ko=1e3,b={flushIntervalMs:{min:100,max:6e4},retryMaxAttempts:{min:1,max:10},retryDelayMs:{min:50,max:12e4},sessionInactivityMs:{min:6e4,max:864e5},seqLockTimeoutMs:{min:0,max:250},deviceInfoCollectorTimeoutMs:{min:10,max:1e4},flushOnFlowTypeFinished:{maxEntries:20,maxNameLength:100},sourcePathQueryAllow:{maxEntries:50,maxKeyLength:64}},Zt=1800*1e3,v={version:"",flushIntervalMs:500,durableOutbox:!1,durableLowOutbox:!1,beaconKeepalive:!1,sessionContinuity:!1,sessionInactivityMs:Zt,seqLockTimeoutMs:50,tvc:!0,tph:!0,td:!0,tlf:!0,telemetry:!0,flushOnTelemetry:!1,flushOnFlowTypeFinished:[],deviceInfoCollectorTimeoutMs:1e3,deviceInfoTiming:!1,rawErrors:!0,pmd:!0,retry:{maxAttempts:1,baseDelayMs:0,maxDelayMs:0},aap:"",sourcePathQuery:"allowlist",sourcePathQueryAllow:[]};function D(i,e,t){return Math.min(Math.max(i,e),t)}function A(i,e){return typeof i=="number"&&Number.isFinite(i)?i:e}function L(i,e){return typeof i=="boolean"?i:e}function Xt(i,e){return typeof i=="string"?i:e}function mi(i){return Array.isArray(i)?i.filter(e=>typeof e=="string"&&e.length>0&&e.length<=b.flushOnFlowTypeFinished.maxNameLength).slice(0,b.flushOnFlowTypeFinished.maxEntries):[]}function yi(i){return typeof i=="string"&&i.trim().toLowerCase()==="all"?"all":"allowlist"}function vi(i){return Array.isArray(i)?i.filter(e=>typeof e=="string").map(e=>e.trim()).filter(e=>e.length>0&&e.length<=b.sourcePathQueryAllow.maxKeyLength).slice(0,b.sourcePathQueryAllow.maxEntries):[]}function _(i){if(!i||typeof i!="object")return null;let e=i;return typeof e.version!="string"||e.version===""?null:er(e)}function er(i){let e=i.retry&&typeof i.retry=="object"?i.retry:{},t=D(A(e.baseDelayMs,v.retry.baseDelayMs),b.retryDelayMs.min,b.retryDelayMs.max);return{version:Xt(i.version,""),flushIntervalMs:D(A(i.flushIntervalMs,v.flushIntervalMs),b.flushIntervalMs.min,b.flushIntervalMs.max),durableOutbox:i.durableOutbox===!0,durableLowOutbox:i.durableLowOutbox===!0,beaconKeepalive:i.beaconKeepalive===!0,sessionContinuity:i.sessionContinuity===!0,sessionInactivityMs:D(A(i.sessionInactivityMs,v.sessionInactivityMs),b.sessionInactivityMs.min,b.sessionInactivityMs.max),seqLockTimeoutMs:D(A(i.seqLockTimeoutMs,v.seqLockTimeoutMs),b.seqLockTimeoutMs.min,b.seqLockTimeoutMs.max),tvc:L(i.tvc,v.tvc),tph:L(i.tph,v.tph),td:L(i.td,v.td),tlf:L(i.tlf,v.tlf),telemetry:L(i.telemetry,v.telemetry),flushOnTelemetry:i.flushOnTelemetry===!0,flushOnFlowTypeFinished:mi(i.flushOnFlowTypeFinished),deviceInfoCollectorTimeoutMs:D(A(i.deviceInfoCollectorTimeoutMs,v.deviceInfoCollectorTimeoutMs),b.deviceInfoCollectorTimeoutMs.min,b.deviceInfoCollectorTimeoutMs.max),deviceInfoTiming:i.deviceInfoTiming===!0,rawErrors:L(i.rawErrors,v.rawErrors),pmd:L(i.pmd,v.pmd),aap:Xt(i.aap,""),sourcePathQuery:yi(i.sourcePathQuery),sourcePathQueryAllow:vi(i.sourcePathQueryAllow),retry:{maxAttempts:D(A(e.maxAttempts,v.retry.maxAttempts),b.retryMaxAttempts.min,b.retryMaxAttempts.max),baseDelayMs:t,maxDelayMs:D(A(e.maxDelayMs,v.retry.maxDelayMs),t,b.retryDelayMs.max)}}}function Fe(i,e={}){let t=i??v,r=Object.fromEntries(Object.entries(e).filter(([,s])=>s!==void 0)),n=Object.fromEntries(Object.entries(e.retry??{}).filter(([,s])=>s!==void 0)),o=er({...t,...r,retry:{...t.retry,...n}});return o.retry={...t.retry,...Object.fromEntries(Object.keys(n).map(s=>[s,o.retry[s]]))},o.retry.maxDelayMs=Math.max(o.retry.baseDelayMs,o.retry.maxDelayMs),o}function it(i){try{if(!i||typeof i!="object")return;let e=i,t=e.pmd,r=typeof t=="boolean";return{pmd:r?t:!1,pmdExplicit:r,privateMode:L(e.privateMode,!0)}}catch{return}}function Y(i){let e=i.getItem(tt),t=e&&typeof e=="object"?_(e.config):null;return t?{...e,config:t}:null}function nt(i){return Y(i)?.config??_(i.getItem(Le))}function ot(i,e){i.setItem(tt,e)}function Re(i,e,t){return fetch(e,t)}function tr(i){if(typeof navigator?.sendBeacon=="function")return(e,t)=>navigator.sendBeacon(e,t)}var bi=6e4,Si=6e4,De=class{constructor(e){this.options=e}async send(e,t){try{e.meta={...e.meta,sent:Date.now(),transport:"fetch"};let r=JSON.stringify(e),n=typeof AbortController<"u"?new AbortController:void 0,o=n?setTimeout(()=>n.abort(),Si):void 0;try{let s={method:"POST",headers:{"Content-Type":"application/json",...this.options.headers,...t},body:r,keepalive:new Blob([r]).size<=bi,...n?{signal:n.signal}:{}},a=await Re(0,this.options.url,s),l={statusCode:a.status,headers:{"retry-after":a.headers.get("Retry-After")}};if(a.headers.get("X-Corbado-Observe-Accepted")==="1"&&(l.deliveryAccepted=!0),a.status===200)try{let p=_(await a.json());p&&(l.config=p)}catch(p){this.options.logger.error("Failed to parse SDK config response",p),this.options.logger.reportTelemetry?.("error","failed to parse SDK config response")}return l}finally{o&&clearTimeout(o)}}catch(r){return this.options.logger.error("Failed to send event",r),{}}}sendBeacon(e){try{this.options.logger.debug(`Sending ${e.events.length} events via beacon`);let t=tr(0);if(!t)return!1;e.meta={...e.meta,sent:Date.now(),transport:"beacon"};let r=new Blob([JSON.stringify(e)],{type:"text/plain"});return t(this.options.url,r)}catch(t){return this.options.logger.error("Failed to send event via beacon",t),!1}}flush(e){return Promise.resolve(!0)}};var sr=require("uuid");function Ae(i,e,t,r={}){let n=typeof navigator<"u"?navigator.locks:void 0;if(n?.request){let o=r.timeoutMs,s=o!==void 0&&typeof AbortController<"u"?new AbortController:null;if(o!==void 0&&!s)return Promise.resolve().then(t);try{let a=!1,l,p=()=>{l!==void 0&&(clearTimeout(l),l=void 0)},d=()=>(a=!0,p(),t()),u=s?n.request(e,{signal:s.signal},d):n.request(e,d);return s&&o!==void 0&&!a&&(l=setTimeout(()=>{l=void 0,s.abort();try{r.onTimeout?.()}catch{}},o)),u.catch(h=>{if(a)throw h;return t()}).finally(p)}catch{}}try{return Promise.resolve(t())}catch(o){return Promise.reject(o)}}function rr(i){return typeof navigator<"u"&&!!navigator.locks?.request}var ir="cbo_outbox",_e="cbo_outbox",nr=500,or=512*1024;function wi(i){if(!i||typeof i!="object")return!1;let e=i;return typeof e.id=="string"&&e.id!==""&&typeof e.sessionId=="string"&&typeof e.flushAfter=="number"&&Number.isFinite(e.flushAfter)&&typeof e.attempts=="number"&&Number.isFinite(e.attempts)&&typeof e.event=="object"&&e.event!==null}var M=class{constructor(e,t,r=nr,n=or,o=_e,s=ir){this.storage=e;this.logger=t;this.maxEntries=r;this.maxSerializedLength=n;this.lockName=o;this.storageKey=s;this.entries=this.read()}entries=[];reportedMalformed=!1;read(){let e=this.storage.getItem(this.storageKey);if(!Array.isArray(e))return[];let t=e.filter(wi);return t.length<e.length&&!this.reportedMalformed&&(this.reportedMalformed=!0,this.logger.error(`EventStore dropped ${e.length-t.length} malformed outbox entries`),this.logger.reportTelemetry?.("error","event store dropped malformed outbox entries")),t}mutate(e){return Ae(0,this.lockName,()=>{try{let t=e(this.read());if(t.length>this.maxEntries){let r=t.length-this.maxEntries;t=t.slice(t.length-this.maxEntries),this.logger.error(`EventStore evicted ${r} oldest entries (cap ${this.maxEntries})`),this.logger.reportTelemetry?.("error","event store evicted entries (cap)")}t=this.enforceSizeBudget(t),this.entries=t,this.storage.setItem(this.storageKey,t)}catch(t){this.logger.error("Failed to mutate event store",t),this.logger.reportTelemetry?.("error","failed to mutate event store")}})}enforceSizeBudget(e){let t=e.map(o=>JSON.stringify(o).length),r=t.reduce((o,s)=>o+s,e.length+1),n=0;for(;r>this.maxSerializedLength&&n<e.length;)r-=t[n]+1,n++;return n===0?e:(this.logger.error(`EventStore evicted ${n} oldest entries (size budget ${this.maxSerializedLength})`),this.logger.reportTelemetry?.("error","event store evicted entries (size budget)"),e.slice(n))}add(e){return this.mutate(t=>t.some(r=>r.id===e.id)?t:[...t,e])}all(){return this.entries=this.read(),this.entries}getDue(e){return this.all().filter(t=>t.flushAfter<=e)}remove(e){if(e.length===0)return Promise.resolve();let t=new Set(e);return this.mutate(r=>r.filter(n=>!t.has(n.id)))}update(e){if(e.length===0)return Promise.resolve();let t=new Map(e.map(r=>[r.id,r]));return this.mutate(r=>r.map(n=>t.get(n.id)??n))}size(){return this.all().length}};var ar=500,lr=512*1024,st=200,at=200*1024,pr=16*1024,lt=6e4,Me=32e3;function J(i){let e=0;for(let t=0;t<i.length;t++){let r=i.charCodeAt(t);r<128?e+=1:r<2048?e+=2:r>=55296&&r<=56319&&t+1<i.length?(e+=4,t++):e+=3}return e}var X=class{constructor(e,t,r,n,o={},s){this.logger=e;this.transport=t;this.sessionId=r;this.sdk=n;this.storage=s;if(this.batchSize=o.batchSize||50,this.flushIntervalOverride=o.flushInterval,this.debug=o.debug??!1,this.requestConfig=o.requestConfig??!0,this.onConfigReceived=o.onConfigReceived,this.getDataPolicy=o.getDataPolicy,this.fixedData=o.fixedData===!0,this.beforeEventBatchSend=o.beforeEventBatchSend,this.standaloneDeviceInfo=o.standaloneDeviceInfo,this.config=o.config??v,this.priorityFlowTypes=new Set(this.config.flushOnFlowTypeFinished),this.outboxLockName=o.outboxLockName,this.config.durableOutbox&&this.storage&&(this.store=new M(this.storage,this.logger,void 0,void 0,this.outboxLockName),this.pending=this.store.all()),this.storage){this.lowStore=new M(this.storage,this.logger,1e3,256*1024,`${this.outboxLockName??"cbo_outbox"}:lows`,"cbo_low_outbox_v1");let a=this.lowStore.all();this.lowPending=a.filter(l=>this.validPendingLow(l)),this.lowStore.remove(a.filter(l=>!this.validPendingLow(l)).map(l=>l.id))}this.setupLifecycleHooks(),(this.pending.length>0||this.lowPending.length>0)&&(this.dirtySinceSyncFlush=!0,this.scheduleFlush(0,"recovery"))}pending=[];lowsQueue=[];lowPending=[];lowStore;telemetryQueue=[];probeQueue=[];probeBytes=0;probesDropped=0;timer=null;isFlushing=!1;flushingDone;destroyed=!1;dirtySinceSyncFlush=!1;onVisibilityChange=null;onPageHide=null;removeVisibilityChange=null;removePageHide=null;batchSize;flushIntervalOverride;debug;requestConfig;onConfigReceived;getDataPolicy;fixedData;beforeEventBatchSend;standaloneDeviceInfo;config;priorityFlowTypes;outboxLockName;store;configResolved=!1;setSessionId(e){this.sessionId=e}flushInterval(){return this.flushIntervalOverride??this.config.flushIntervalMs}enqueue(e,t=this.sessionId){try{let r={id:e.id,sessionId:t,flushAfter:0,attempts:0,event:e};this.pending.push(r),this.store?.add(r),this.scheduleAfterEnqueue(e)}catch(r){this.logger.error("Failed to enqueue event",r)}}enqueueLow(e,t=this.sessionId){try{let r={...e,id:e.id??(0,sr.v7)()};if(this.config.durableLowOutbox){let n={id:r.id,sessionId:t,event:r,attempts:0,flushAfter:0};this.lowPending.push(n),this.lowPending=this.lowPending.slice(-1e3),this.lowStore?.add(n)}else this.lowsQueue.push({sessionId:t,event:r});this.scheduleAfterEnqueue()}catch(r){this.logger.error("Failed to enqueue low event",r)}}notifyDeviceInfo(){try{this.dirtySinceSyncFlush=!0,this.scheduleFlush(this.flushInterval(),"timer")}catch(e){this.logger.error("Failed to schedule device info flush",e)}}enqueueTelemetry(e){try{if(!this.config.telemetry)return;this.telemetryQueue.push(e),this.dirtySinceSyncFlush=!0,this.config.flushOnTelemetry&&this.flush("telemetry")}catch(t){this.logger.error("Failed to enqueue telemetry",t)}}enqueueProbe(e,t=this.sessionId){try{if(this.destroyed)return;let r=JSON.stringify(e.payload);if(typeof r!="string"||J(r)>pr){this.probesDropped++;return}let n={...e,payload:JSON.parse(r)},o=J(JSON.stringify(n));for(this.probeQueue.push({sessionId:t,entry:n,bytes:o,attempts:0,flushAfter:0}),this.probeBytes+=o;this.probeQueue.length>ar||this.probeBytes>lr&&this.probeQueue.length>1;){let s=this.probeQueue.shift();this.probeBytes-=s.bytes,this.probesDropped++}this.scheduleFlush(this.flushInterval(),"timer")}catch(r){this.logger.error("Failed to enqueue probe",r)}}droppedProbeCount(){return this.probesDropped}dueProbes(e){return this.probeQueue.filter(t=>t.flushAfter<=e)}selectProbes(e,t,r,n){let o=[],s=0;for(let a of e){if(o.length>=r)break;if(a.sessionId===t){if(s+a.bytes>n){o.length===0&&n>=at&&o.push(a);break}s+=a.bytes,o.push(a)}}return o}removeProbes(e){if(e.length===0)return;let t=new Set(e);this.probeQueue=this.probeQueue.filter(r=>!t.has(r));for(let r of e)this.probeBytes-=r.bytes}dropProbes(e){this.removeProbes(e),this.probesDropped+=e.length}handleProbeSendResult(e,t,r){if(t.length===0)return;let n=e.statusCode;if(typeof n=="number"&&n>=200&&n<300){this.removeProbes(t);return}if(!this.isRetryable(n)){this.dropProbes(t);return}let o=Math.max(1,this.config.retry.maxAttempts),s=this.parseRetryAfter(e),a=[];for(let l of t)l.attempts+=1,l.attempts>=o?a.push(l):l.flushAfter=r+this.backoffForAttempt(l.attempts,s);this.dropProbes(a)}sendUnloadProbes(e,t,r,n){let o=this.sessionId,s={sessionId:o,events:[],sdk:this.sdk,probes:[]};this.attachBatchMeta(s,[],t);let a=J(JSON.stringify(s))+120,l=e>a?this.selectProbes(this.probeQueue,o,st,e-a):[];l.length>0&&(s.probes=l.map(p=>p.entry),this.attachBatchMeta(s,l,t),n&&this.config.beaconKeepalive&&this.transport.sendBeacon?this.transport.sendBeacon(s):Promise.resolve(this.transport.send(s)).catch(()=>{}),this.removeProbes(l)),r&&this.dropProbes(this.probeQueue.slice())}scheduleAfterEnqueue(e){if(this.dirtySinceSyncFlush=!0,e!==void 0&&this.isPriorityEvent(e)){this.flush("flow-finished");return}this.scheduleFlush(this.flushInterval(),"timer")}isPriorityEvent(e){if(e.type!=="predefined"||e.name!=="flow_finished"&&e.name!=="flow_auto_finished")return!1;let t=e.data?.flowName;return typeof t=="string"&&this.priorityFlowTypes.has(t)}scheduleFlush(e,t){this.destroyed||this.timer||(this.timer=setTimeout(()=>{this.timer=null,this.flush(t)},e))}clearTimer(){this.timer&&(clearTimeout(this.timer),this.timer=null)}async flush(e="timer"){if(this.destroyed)return;if(this.isFlushing){if(e==="destroy"){await this.flushingDone;try{this.sendUnloadProbes(Me,e,!0,!1)}catch(r){this.logger.error("Unexpected error in queue flush",r)}}return}this.isFlushing=!0;let t;this.flushingDone=new Promise(r=>{t=r});try{for(this.clearTimer();;){let r=Date.now(),n=this.getDuePending(r),o=this.lowPending.filter(g=>g.flushAfter<=r),s=e==="destroy"?[]:this.dueProbes(r),a=n.length===0&&o.length===0&&this.lowsQueue.length===0&&this.telemetryQueue.length===0&&s.length===0;if(a&&!this.hasStandaloneDeviceInfo())break;let l=n[0]?.sessionId??o[0]?.sessionId??this.lowsQueue[0]?.sessionId??s[0]?.sessionId??this.sessionId,p=n.filter(g=>g.sessionId===l).slice(0,this.batchSize),d=o.filter(g=>g.sessionId===l).slice(0,100),u=[...d.map(g=>g.event),...this.takeLows(l,100-d.length)];this.prepareEvents(p,e);let h=l===this.sessionId?this.takeTelemetry():[],m=l===this.sessionId?this.takeStandaloneDeviceInfo():void 0,y=this.selectProbes(s,l,st,at),c={sessionId:l,events:p.map(g=>g.event),sdk:this.sdk};if(u.length>0&&(c.lows=u),h.length>0&&(c.telemetry=h),y.length>0&&(c.probes=y.map(g=>g.entry)),m&&(c.deviceInfo=m),a&&!m)break;this.attachBatchMeta(c,[...p,...d,...y],e),d.length&&(c.deliveryAck=!0);let w=this.shouldRequestConfig()?{[rt]:this.config.version||"1"}:void 0,T=await this.transport.send(c,w).catch(g=>(this.logger.error("Unexpected error in queue flush",g),{}));if(c.deliveryAck&&T.statusCode&&T.statusCode>=200&&T.statusCode<300&&!T.deliveryAccepted&&(T={...T,statusCode:503}),this.requestConfig&&this.handleConfigResponse(T),this.handleLowSendResult(T,d,r),this.handleProbeSendResult(T,y,r),!this.handleSendResult(T,p,r))break}e==="destroy"&&this.sendUnloadProbes(Me,e,!0,!1)}catch(r){this.logger.error("Unexpected error in queue flush",r)}finally{this.isFlushing=!1,t(),this.flushingDone=void 0,this.rescheduleIfPending()}}attachBatchMeta(e,t,r){e.meta={...e.meta,flushReason:r};let n=this.readDataPolicy();n!==void 0&&(e.meta={...e.meta,dataPolicy:n}),this.config.version&&(e.meta={...e.meta,configVersion:this.config.version}),this.fixedData&&(e.meta={...e.meta,fixedData:!0});let o=t.reduce((s,a)=>Math.max(s,a.attempts),0);o>0&&(e.meta={...e.meta,retryCount:o})}prepareEvents(e,t){if(!(!this.beforeEventBatchSend||e.length===0))try{this.beforeEventBatchSend(e.map(r=>r.event),t)}catch(r){this.logger.error("Failed to prepare events for sending",r)}}readDataPolicy(){try{return this.getDataPolicy?.()}catch(e){this.logger.debug("Failed to read data policy for batch meta",e);return}}getDuePending(e){return this.pending.filter(t=>t.flushAfter<=e)}takeLows(e=this.sessionId,t=100){let r=this.lowsQueue.filter(o=>o.sessionId===e).slice(0,t),n=new Set(r);return this.lowsQueue=this.lowsQueue.filter(o=>!n.has(o)),r.map(o=>o.event)}validPendingLow(e){return typeof e.event?.lowType=="string"&&e.event.id===e.id&&Number.isFinite(e.event.ts)&&e.event.ts>Date.now()-7*864e5}removeLowEntries(e){let t=new Set(e);this.lowPending=this.lowPending.filter(r=>!t.has(r.id)),this.lowStore?.remove(e)}handleLowSendResult(e,t,r){let n=e.statusCode;if(n!==void 0&&n>=200&&n<300){e.deliveryAccepted?this.removeLowEntries(t.map(o=>o.id)):this.deferLowEntries(t,r);return}if(!this.isRetryable(n)){this.removeLowEntries(t.map(o=>o.id)),this.logger.reportTelemetry?.("error","low events rejected by ingestion");return}this.deferLowEntries(t,r,this.parseRetryAfter(e))}deferLowEntries(e,t,r=null){let n=[];for(let o of e){if(!this.validPendingLow(o)){n.push(o.id);continue}o.attempts=Math.min(o.attempts+1,16),o.flushAfter=t+Math.max(Math.min(6e4,1e3*2**Math.min(o.attempts,6)),this.backoffForAttempt(o.attempts,r))}this.removeLowEntries(n),this.lowStore?.update(e.filter(o=>!n.includes(o.id)))}hasStandaloneDeviceInfo(){try{return this.standaloneDeviceInfo?.has()??!1}catch(e){return this.logger.error("Failed to read device info for batch",e),!1}}takeStandaloneDeviceInfo(){try{return this.standaloneDeviceInfo?.take()}catch(e){this.logger.error("Failed to read device info for batch",e);return}}takeTelemetry(){let e=this.telemetryQueue;return this.telemetryQueue=[],e}shouldRequestConfig(){return this.requestConfig&&!this.configResolved}handleConfigResponse(e){let t=e.statusCode;typeof t=="number"&&t>=200&&t<300&&(this.configResolved=!0),e.config&&(this.config.version||this.updateConfig(e.config),this.onConfigReceived?.(e.config))}updateConfig(e){if(this.destroyed)return;let t=this.config.flushIntervalMs!==e.flushIntervalMs;if(this.config={...e,durableOutbox:this.config.durableOutbox||e.durableOutbox},this.priorityFlowTypes=new Set(e.flushOnFlowTypeFinished),e.durableLowOutbox&&this.lowsQueue.length){let n=this.lowsQueue;this.lowsQueue=[];for(let{event:o,sessionId:s}of n)this.enqueueLow(o,s)}let r=!1;if(this.config.durableOutbox&&this.storage&&!this.store){this.store=new M(this.storage,this.logger,void 0,void 0,this.outboxLockName);let n=new Set(this.pending.map(s=>s.id)),o=this.store.all().filter(s=>!n.has(s.id));for(let s of this.pending)this.store.add(s);this.pending=[...o,...this.pending],r=o.length>0}r?(this.dirtySinceSyncFlush=!0,this.clearTimer(),this.scheduleFlush(0,"recovery")):t&&(this.clearTimer(),this.rescheduleIfPending())}handleSendResult(e,t,r){let n=e.statusCode,o=typeof n=="number"&&n>=200&&n<300;if(t.length===0)return o;if(o)return this.removeEntries(t.map(d=>d.id)),!0;if(!this.isRetryable(n))return this.removeEntries(t.map(d=>d.id)),!1;let s=Math.max(1,this.config.retry.maxAttempts),a=this.parseRetryAfter(e),l=[],p=[];for(let d of t)d.attempts+=1,d.attempts>=s?l.push(d.id):(d.flushAfter=r+this.backoffForAttempt(d.attempts,a),p.push(d));return this.removeEntries(l),this.store?.update(p),!1}isRetryable(e){return e===void 0||e===408||e===429?!0:e>=500}backoffForAttempt(e,t){let r=this.config.retry,n=r.baseDelayMs*Math.pow(2,Math.max(0,e-1));r.maxDelayMs>0&&(n=Math.min(n,r.maxDelayMs));let o=Math.round(n/2+Math.random()*(n/2));return t!==null&&(o=Math.max(o,t)),o}parseRetryAfter(e){let t=e.headers?.["retry-after"];if(!t)return null;let r=Number(t);if(!Number.isNaN(r))return r*1e3;let n=Date.parse(t);return Number.isNaN(n)?null:Math.max(0,n-Date.now())}removeEntries(e){if(e.length===0)return;let t=new Set(e);this.pending=this.pending.filter(r=>!t.has(r.id)),this.store?.remove(e)}rescheduleIfPending(){try{if(this.destroyed||this.timer||this.pending.length===0&&this.lowPending.length===0&&this.lowsQueue.length===0&&this.probeQueue.length===0)return;let e=Date.now();if(this.getDuePending(e).length>0||this.lowPending.some(r=>r.flushAfter<=e)||this.lowsQueue.length>0||this.probeQueue.some(r=>r.flushAfter<=e)){this.scheduleFlush(this.flushInterval(),"timer");return}let t=Math.min(...[...this.pending,...this.lowPending,...this.probeQueue].map(r=>r.flushAfter));this.scheduleFlush(Math.max(0,t-e),"backoff")}catch(e){this.logger.error("Failed to reschedule queue flush",e)}}setupLifecycleHooks(){typeof window>"u"||(this.onVisibilityChange=()=>{try{this.writeLifecycleDebugOutput("cbo_visibility_change_debug"),K(0)&&this.config.tvc&&this.flushSync("visibility-change")}catch(e){this.logger.error("Unexpected error in queue flushSync",e)}},this.onPageHide=()=>{try{this.writeLifecycleDebugOutput("cbo_pagehide_debug"),this.config.tph&&this.flushSync("pagehide")}catch(e){this.logger.error("Unexpected error in queue flushSync",e)}},this.removeVisibilityChange=I(0,"visibilitychange",this.onVisibilityChange),this.removePageHide=I(0,"pagehide",this.onPageHide))}writeLifecycleDebugOutput(e){if(!this.debug||!this.storage)return;let t={last_executed:Date.now(),url:Bt(0)};this.storage.setItem(e,t)}flushKeepalive(e="manual"){this.flushSync(e)}flushSync(e){let t=this.flushSyncEvents(e);e==="pagehide"&&this.probeQueue.length>0&&this.sendUnloadProbes(Math.min(lt-t,Me),e,!0,!0)}flushSyncEvents(e){if(!this.dirtySinceSyncFlush)return 0;let t=this.sessionId,r=this.pending.filter(d=>d.sessionId===t),n=r.slice(0,this.batchSize),o=this.lowPending.filter(d=>d.sessionId===t).slice(0,100),s=[...o.map(d=>d.event),...this.takeLows(t,100-o.length)];this.prepareEvents(n,e);let a=this.takeTelemetry(),l=this.takeStandaloneDeviceInfo();if(n.length===0&&s.length===0&&a.length===0&&!l)return this.dirtySinceSyncFlush=!1,0;let p={sessionId:t,events:n.map(d=>d.event),sdk:this.sdk};return s.length>0&&(p.lows=s),a.length>0&&(p.telemetry=a),l&&(p.deviceInfo=l),this.attachBatchMeta(p,[...n,...o],e),o.length&&(p.deliveryAck=!0),this.config.beaconKeepalive&&this.transport.sendBeacon?this.transport.sendBeacon(p)||this.transport.send(p):this.transport.send(p),this.config.durableOutbox||this.removeEntries(n.map(d=>d.id)),this.dirtySinceSyncFlush=!this.config.durableOutbox&&r.length>n.length,this.approximateSize(p)}approximateSize(e){try{return J(JSON.stringify(e))}catch{return lt}}destroy(){try{this.destroyed=!0,this.clearTimer(),this.dropProbes(this.probeQueue.slice()),typeof window<"u"&&(this.removeVisibilityChange&&this.removeVisibilityChange(),this.removePageHide&&this.removePageHide())}catch(e){this.logger.error("Failed to destroy queue lifecycle hooks",e)}}};var ut=require("uuid");var dr=ii(require("detectincognitojs"));async function ur(i){return(await(0,dr.default)()).isPrivate}var Ti=300,Z=6e3,cr="cbo_pm",Ei=10080*60*1e3,fr="detectincognitojs@1.9.0",hr={timing:!1},pt="cbo_tab_id",gr={bluetoothAvailable:"bt",clientCapabilities:"cc",userVerifyingPlatformAuthenticatorAvailable:"uvpaa",conditionalMediationAvailable:"cm",javaScriptHighEntropy:"he",privateMode:"pm",webdriver:"wd",maxTouchPoints:"mtp"};function P(){return typeof performance<"u"&&typeof performance.now=="function"?performance.now():Date.now()}function mr(i,e,t){return{field:i,source:e,error:{name:"TimeoutError",message:`Device info collection timed out after ${t}ms`}}}async function dt(i,e){let t;try{return await Promise.race([i.then(()=>!0,()=>!0),new Promise(r=>{t=setTimeout(()=>r(!1),Math.max(0,e))})])}finally{t&&clearTimeout(t)}}var He=class{constructor(e,t,r="localstorage",n,o=()=>hr,s,a=!0){this.logger=e;this.storage=t;this.storageSource=r;this.sessionStorage=n;this.settings=o;this.emitTelemetry=s;this.privateModeEnabled=a}pagePrivateMode;privateModeDetectionStarted=!1;lastKnown={};async collect(e,t={}){try{let r=this.resolveSettings(),n=P(),o=this.getClientEnvHandle(),s={type:"web",clientEnvHandle:o.value,clientEnvHandleMeta:{timestamp:o.timestamp,source:o.source},tabId:this.getTabId()},a=typeof __CBO_DATA_PRIVATE_MODE__=="boolean"?__CBO_DATA_PRIVATE_MODE__:this.privateModeEnabled,l=a?this.knownPrivateMode(r.timing):void 0,p,d=a&&l===void 0&&!this.privateModeDetectionStarted?this.detectPrivateMode(r.timing).then(x=>{p=x}):void 0,u=this.startFastFields();await dt(Promise.all(u.map(x=>x.promise)),Ti);let h=P()-n,m=t.refresh?this.lastKnown:{};r.timing&&this.reportFastTiming(h,u);let y=()=>p?.error?[p.error]:[];this.safePublish(e,this.buildInfo(s,u,p?p.value:l,m,y()),"fast");let c=u.filter(x=>!x.settled),w=d!==void 0&&p===void 0;if(c.length===0&&!w)return;let T=P();await Promise.all([dt(Promise.all(c.map(x=>x.promise)),Z-(T-n)),d]);let g=c.filter(x=>!x.settled).map(x=>mr(x.field,x.source,Z));g.push(...y()),r.timing&&c.length>0&&this.reportLateTiming(P()-n,c),this.safePublish(e,this.buildInfo(s,u,p?p.value:l,m,g),"update")}catch(r){this.logger.error("Failed to collect device info",r)}}async getInfo(){let e;return await this.collect(t=>{e=t}),e??{}}startFastFields(){return[this.startField("bluetoothAvailable","navigator.bluetooth.getAvailability",()=>Ut(0)),this.startField("clientCapabilities","PublicKeyCredential.getClientCapabilities",()=>Vt(0)),this.startField("userVerifyingPlatformAuthenticatorAvailable","PublicKeyCredential.isUserVerifyingPlatformAuthenticatorAvailable",()=>qt(0)),this.startField("conditionalMediationAvailable","PublicKeyCredential.isConditionalMediationAvailable",()=>Kt(0)),this.startField("javaScriptHighEntropy","navigator.userAgentData.getHighEntropyValues",()=>Wt(0)),this.startField("webdriver","navigator.webdriver",()=>$t(0)),this.startField("maxTouchPoints","navigator.maxTouchPoints",()=>Gt(0))]}startField(e,t,r){let n=P(),o={field:e,source:t};return o.promise=Promise.resolve().then(r).then(s=>({field:e,value:s,durationMs:P()-n}),s=>(this.logger.error(`Failed to collect device info field "${e}"`,s),{field:e,durationMs:P()-n,error:{field:e,source:t,error:B(s)??{message:"Unknown error"}}})).then(s=>(o.settled=s,s)),o}buildInfo(e,t,r,n,o){let s={},a=[];for(let p of t)p.settled?(p.settled.error&&a.push(p.settled.error),s[p.field]=p.settled.value,this.remember(p.field,p.settled.value)):s[p.field]=n[p.field];s.privateMode=r,a.push(...o);let l={...e,data:{bluetoothAvailable:s.bluetoothAvailable,javaScriptHighEntropy:s.javaScriptHighEntropy,privateMode:s.privateMode,webdriver:s.webdriver,conditionalMediationAvailable:s.conditionalMediationAvailable,userVerifyingPlatformAuthenticatorAvailable:s.userVerifyingPlatformAuthenticatorAvailable,clientCapabilities:s.clientCapabilities,maxTouchPoints:s.maxTouchPoints}};return a.length>0&&(l.collectionErrors=a),l}remember(e,t){t!==void 0&&(this.lastKnown[e]=t)}safePublish(e,t,r){try{e(t,r)}catch(n){this.logger.error("Failed to publish device info",n)}}knownPrivateMode(e){if(this.pagePrivateMode!==void 0)return this.pagePrivateMode;let t=this.readPrivateModeCache();return t&&(this.pagePrivateMode=t.value,e&&this.reportTelemetry(`device info privateMode from cache, age ${Math.round((Date.now()-t.ts)/1e3)}s`)),this.pagePrivateMode}canCachePrivateMode(){return this.storageSource==="localstorage"}readPrivateModeCache(){if(this.canCachePrivateMode())try{let e=this.storage.getItem(cr);if(!e||typeof e!="object"||typeof e.value!="boolean"||typeof e.ts!="number"||e.dv!==fr)return;let t=Date.now()-e.ts;return t<0||t>=Ei?void 0:e}catch(e){this.logger.debug("Failed to read cached privateMode",e);return}}writePrivateModeCache(e){if(this.canCachePrivateMode())try{this.storage.setItem(cr,{value:e,ts:Date.now(),dv:fr})}catch(t){this.logger.error("Failed to cache privateMode",t)}}async detectPrivateMode(e){this.privateModeDetectionStarted=!0;let t="detectIncognito",r=P(),n=this.startField("privateMode",t,()=>typeof __CBO_DATA_PRIVATE_MODE__=="boolean"&&!__CBO_DATA_PRIVATE_MODE__?void 0:ur(0));if(!await dt(n.promise,Z)||!n.settled)return e&&this.reportTelemetry(`device info privateMode timed out after ${Z}ms`),{error:mr("privateMode",t,Z)};if(e&&this.reportTelemetry(`device info privateMode detected in ${Math.round(P()-r)}ms`),n.settled.error)return{error:n.settled.error};let s=n.settled.value;return typeof s!="boolean"?{value:void 0}:(this.pagePrivateMode=s,this.writePrivateModeCache(s),{value:s})}resolveSettings(){try{return{timing:this.settings()?.timing===!0}}catch(e){return this.logger.error("Failed to resolve device info collector settings",e),hr}}reportFastTiming(e,t){let r=t.map(n=>`${gr[n.field]}=${Math.round(n.settled?.durationMs??e)}`).join(",");this.reportTelemetry(`device info collected in ${Math.round(e)}ms (${r})`)}reportLateTiming(e,t){let r=t.map(n=>`${gr[n.field]}=${n.settled?Math.round(n.settled.durationMs):"timeout"}`).join(",");this.reportTelemetry(`device info late fields done in ${Math.round(e)}ms (${r})`)}reportTelemetry(e){if(this.emitTelemetry)try{this.emitTelemetry("info",e)}catch(t){this.logger.error("Failed to report device info timing",t)}}static getOsAndBrowserInfo(){return{osName:this.getOsName(),browserName:this.getBrowserName()}}static getUserAgent(){return Oe(0)}static getOsName(){let e=this.getUserAgent();return e.includes("iOS")?"iOS":e.includes("Android")?"Android":e.includes("Windows")?"Windows":e.includes("Macintosh")?"macOS":e.includes("Linux")?"Linux":e.includes("ChromeOS")?"ChromeOS":"other"}static getBrowserName(){let e=this.getUserAgent();return e.includes("Chrome")?"Chrome":e.includes("Firefox")?"Firefox":e.includes("Safari")?"Safari":e.includes("Edge")?"Edge":e.includes("Opera")?"Opera":e.includes("IE")?"IE":"other"}getClientEnvHandle(){let e=this.storage.getItem("cbo_client_env_handle");if(e)return e;let t=(0,ut.v7)(),r={timestamp:Date.now(),source:this.storageSource,value:t};return this.storage.setItem("cbo_client_env_handle",r),r}getTabId(){if(!this.sessionStorage)return;let e=this.sessionStorage.getItem(pt);if(e)return e;let t=(0,ut.v7)();if(this.sessionStorage.setItem(pt,t),this.sessionStorage.getItem(pt)===t)return t}};function Ii(){return typeof document<"u"&&K(0)}var Be=class{constructor(e,t,r,n,o,s){this.logger=e;this.source=t;this.refreshInterval=r;this.attachInterval=n;this.diagnostics=o;this.onUndelivered=s}snapshot;snapshotPhase;publishedAt=0;version=0;deliveredVersion=0;refreshedAt=0;lastAttachedAt=null;eventsSeen=!1;refreshPromise;timer;destroyed=!1;start(){this.refresh()}getForEvent(){if(this.eventsSeen=!0,Date.now()-this.refreshedAt>=this.refreshInterval&&this.refresh(),!!this.snapshot){if(this.version!==this.deliveredVersion)return this.markDelivered("event");if(!(this.lastAttachedAt!==null&&Date.now()-this.lastAttachedAt<this.attachInterval))return this.lastAttachedAt=Date.now(),this.snapshot}}hasUndelivered(){return this.snapshot!==void 0&&this.version!==this.deliveredVersion}takeUndelivered(){if(this.hasUndelivered())return this.markDelivered("flush")}hasStandalone(){return this.eventsSeen&&this.hasUndelivered()}takeStandalone(){if(this.hasStandalone())return this.markDelivered("request")}destroy(){this.destroyed=!0,this.timer&&(clearTimeout(this.timer),this.timer=void 0)}markDelivered(e){return this.deliveredVersion=this.version,this.lastAttachedAt=Date.now(),this.snapshotPhase==="update"&&this.report(`device info update delivered via ${e} after ${Math.max(0,Date.now()-this.publishedAt)}ms`),this.snapshot}publish(e,t){if(t==="fast"&&(this.refreshedAt=Date.now()),!(this.snapshot&&JSON.stringify(this.snapshot)===JSON.stringify(e))&&(this.snapshot=e,this.snapshotPhase=t,this.publishedAt=Date.now(),this.version++,this.eventsSeen&&this.onUndelivered))try{this.onUndelivered()}catch(r){this.logger.error("Failed to announce undelivered device info",r)}}report(e){if(this.diagnostics)try{this.diagnostics.timing()&&this.diagnostics.emit("info",e)}catch(t){this.logger.error("Failed to report device info delivery",t)}}scheduleRefresh(){this.timer&&clearTimeout(this.timer),this.timer=setTimeout(()=>{this.refresh()},this.refreshInterval)}refresh(){if(this.refreshPromise)return this.refreshPromise;if(this.timer&&(clearTimeout(this.timer),this.timer=void 0),this.snapshot&&Ii())return this.destroyed||this.scheduleRefresh(),Promise.resolve();let e=this.snapshot!==void 0;return this.refreshPromise=Promise.resolve().then(()=>this.source.collect((t,r)=>this.publish(t,r),{refresh:e})).catch(t=>this.logger.error("Failed to refresh device info",t)).finally(()=>{this.refreshPromise=void 0,this.destroyed||this.scheduleRefresh()}),this.refreshPromise}};function yr(i){return{getItem:e=>localStorage.getItem(e),setItem:(e,t)=>localStorage.setItem(e,t),removeItem:e=>localStorage.removeItem(e)}}function vr(i){return{getItem:e=>sessionStorage.getItem(e),setItem:(e,t)=>sessionStorage.setItem(e,t),removeItem:e=>sessionStorage.removeItem(e)}}function br(i){return{read:()=>document.cookie,write:e=>{document.cookie=e}}}function k(i,e){return`${i}_${e}`}var ee=class{constructor(e,t){this.engine=e;this.namespace=t}getItem(e){return this.engine.getItem(k(e,this.namespace))}setItem(e,t){this.engine.setItem(k(e,this.namespace),t)}removeItem(e){this.engine.removeItem(k(e,this.namespace))}},te=class{constructor(e){this.logger=e}area=yr(0);getItem(e){try{if(typeof localStorage>"u")return null;let t=this.area.getItem(e);return t?JSON.parse(t):null}catch(t){return this.logger.error(`LocalStorage.getItem failed for key "${e}"`,t),null}}setItem(e,t){try{if(typeof localStorage>"u")return;this.area.setItem(e,JSON.stringify(t))}catch(r){this.logger.error(`LocalStorage.setItem failed for key "${e}"`,r),this.logger.reportTelemetry?.("error",`localStorage.setItem failed: ${e}`)}}removeItem(e){try{if(typeof localStorage>"u")return;this.area.removeItem(e)}catch(t){this.logger.error(`LocalStorage.removeItem failed for key "${e}"`,t)}}},re=class{constructor(e,t){this.logger=e;this.domain=t}jar=br(0);getItem(e){try{if(typeof document>"u")return null;let t=e+"=",r=this.jar.read().split(";");for(let n=0;n<r.length;n++){let o=r[n].trim();if(o.indexOf(t)===0){let s=o.substring(t.length);return JSON.parse(decodeURIComponent(s))}}return null}catch(t){return this.logger.error(`CookieStorage.getItem failed for key "${e}"`,t),null}}setItem(e,t){try{if(typeof document>"u")return;let r=`${e}=${encodeURIComponent(JSON.stringify(t))}; path=/; SameSite=Lax`;this.domain&&(r+=`; domain=${this.domain}`),this.jar.write(r)}catch(r){this.logger.error(`CookieStorage.setItem failed for key "${e}"`,r),this.logger.reportTelemetry?.("error",`cookie.setItem failed: ${e}`)}}removeItem(e){try{if(typeof document>"u")return;let t=`${e}=; Max-Age=-99999999; path=/`;this.domain&&(t+=`; domain=${this.domain}`),this.jar.write(t)}catch(t){this.logger.error(`CookieStorage.removeItem failed for key "${e}"`,t)}}},ie=class{constructor(e){this.logger=e}area=vr(0);getItem(e){try{if(typeof sessionStorage>"u")return null;let t=this.area.getItem(e);return t?JSON.parse(t):null}catch(t){return this.logger.error(`SessionStorage.getItem failed for key "${e}"`,t),null}}setItem(e,t){try{if(typeof sessionStorage>"u")return;this.area.setItem(e,JSON.stringify(t))}catch(r){this.logger.error(`SessionStorage.setItem failed for key "${e}"`,r),this.logger.reportTelemetry?.("error",`sessionStorage.setItem failed: ${e}`)}}removeItem(e){try{if(typeof sessionStorage>"u")return;this.area.removeItem(e)}catch(t){this.logger.error(`SessionStorage.removeItem failed for key "${e}"`,t)}}};var Ne=1,Ue="cbo_storage_schema",xi=["cbo_seq","cbo_sdk_config","cbo_experiments","cbo_client_env_handle","cbo_outbox","cbo_visibility_change_debug","cbo_pagehide_debug","cbo_session"],ki=["cbo_session_id","cbo_tab_id"],Ci=["cbo_client_env_handle"];function qe(i,e,t){return i.setItem(e,t),JSON.stringify(i.getItem(e))===JSON.stringify(t)}function ct(i,e,t){let r=i.getItem(Ue);if(r!==null){if(r.version!==Ne||r.projectId!==e)return!1;if(r.complete===!0)return!0;if(r.complete!==!1)return!1}else{if(t.some(n=>i.getItem(k(n,e))!==null))return qe(i,Ue,{version:Ne,projectId:e,complete:!0});if(!qe(i,Ue,{version:Ne,projectId:e,complete:!1}))return!1}for(let n of t){let o=k(n,e);if(i.getItem(o)!==null)continue;let s=i.getItem(n);if(s!==null&&!qe(i,o,s))return!1}return qe(i,Ue,{version:Ne,projectId:e,complete:!0})}function Sr(i,e,t,r,n){try{if(!ct(e,i,xi))return;ct(t,i,ki),r&&ct(r,i,Ci)}catch(o){n.error("Failed to migrate legacy Observe storage",o)}}var Oi=10*1e3,Pi=60*1e3,Li=3600*1e3,Fi=300*1e3,wr=1440*60*1e3,Ri=[1e3,3e3];function Di(i){let e=/(?:^|[\s,])max-age\s*=\s*"?(\d+)"?/i.exec(i?.get("Cache-Control")??"");if(!e)return Li;let t=Number(i?.get("Age")??0),r=(Number(e[1])-(Number.isFinite(t)&&t>0?t:0))*1e3;return Math.min(Math.max(r,Fi),wr)}var Ke=class{constructor(e,t,r){this.url=e;this.storage=t;this.logger=r;this.initialConfig=nt(t)??void 0,this.appliedVersion=this.initialConfig?.version}initialConfig;requestTimer;retryTimer;controller;removers=[];fetching=!1;stopped=!1;lastAttemptAt;appliedVersion;onConfig;start(e){this.stopped||this.onConfig||(this.onConfig=e,this.listen(),this.refresh())}listen(){if(typeof window>"u")return;let e=()=>{typeof document>"u"||K(0)||this.refresh()};this.removers.push(I(0,"visibilitychange",e),I(0,"pageshow",t=>{t.persisted&&this.refresh()}))}refresh(){try{if(this.stopped||this.fetching)return;let e=Date.now(),t=Y(this.storage),{fetchedAt:r,expiresAt:n}=t??{};if(t?.endpoint===this.url&&typeof r=="number"&&typeof n=="number"&&r>0&&n-r<=wr&&r<=e&&e<n){t.config.version!==this.appliedVersion&&(this.appliedVersion=t.config.version,this.onConfig?.(t.config));return}let o=this.lastAttemptAt===void 0?1/0:e-this.lastAttemptAt;if(o>=0&&o<Pi)return;this.lastAttemptAt=e,clearTimeout(this.retryTimer),this.fetchConfig()}catch(e){this.logger.error("Unexpected error in SDK config refresh",e)}}async fetchConfig(e=0){if(this.stopped||this.fetching)return;this.fetching=!0;let t=typeof AbortController<"u"?new AbortController:void 0;this.controller=t,this.requestTimer=t?setTimeout(()=>t.abort(),Oi):void 0;let r=!0;try{let n=await Re(0,this.url,{method:"GET",cache:"no-cache",...t?{signal:t.signal}:{}});if(!n.ok)throw r=(n.status===408||n.status===429||n.status>=500)&&!n.headers.has("Retry-After"),new Error(`SDK config request failed (${n.status})`);let o=await n.json();r=!1;let s=_(o);if(!s)throw new Error("Invalid SDK config response");if(this.stopped||t?.signal.aborted)return;let a=Date.now();ot(this.storage,{endpoint:this.url,fetchedAt:a,expiresAt:a+Di(n.headers),config:s}),Y(this.storage)&&this.storage.removeItem(Le),this.appliedVersion=s.version,this.onConfig?.(s)}catch(n){if(!this.stopped){this.logger.error("Failed to fetch SDK config",n);let o=Ri[e];(r&&!(n instanceof SyntaxError)||t?.signal.aborted)&&o!==void 0&&(this.retryTimer=setTimeout(()=>{this.fetchConfig(e+1)},o))}}finally{clearTimeout(this.requestTimer),this.requestTimer=void 0,this.controller=void 0,this.fetching=!1}}destroy(){this.stopped=!0,this.removers.splice(0).forEach(e=>e()),clearTimeout(this.requestTimer),clearTimeout(this.retryTimer),this.controller?.abort(),this.onConfig=void 0}};var C=require("uuid");var V=class{constructor(e,t){this.logger=e;this.sink=t}lease;destroyed=!1;arm(e,t=!1){if(this.disarm(),!(this.destroyed||t))try{this.lease=this.sink.beginCeremony?.(e)}catch(r){this.logger.error("Failed to register ceremony low-event context",r)}}scheduleDisarm(e){try{this.lease?.settle(e)}catch(t){this.logger.error("Failed to settle ceremony low-event context",t)}}disarm(){try{this.lease?.destroy()}catch(e){this.logger.error("Failed to release ceremony low-event context",e)}this.lease=void 0}destroy(){this.disarm(),this.destroyed=!0}};var ne=class extends f{getOptions;ceremony;postResponse;lowEventTracker;constructor(e,t){super(e,"passkey-login"),this.lowEventTracker=new V(e.getLogger(),this.lowEventSink("ceremony")),this.registerLowFlusher(()=>this.lowEventTracker.disarm()),this.getOptions=this.defineStep("get-options"),this.ceremony=this.withWindowLowEvents(this.defineStep("ceremony"),this.lowEventTracker),this.postResponse=this.defineStep("post-response"),this.subflowStart({explicitSpecType:t?.explicitSpecType})}trigger(e,t){super.trigger(e,t)}destroy(){this.lowEventTracker.destroy()}};var W=class{constructor(e,t,r,n){this.previousLength=e;this.pushLow=t;this.logger=r;this.reserveCaptureSeq=n}prefillSettled=!1;inputBatch=null;currentEffect="modify";ringEffect="modify";autofillTimestamps=[];autofillStreak=null;idleTimer=null;markInputObserved(){this.prefillSettled=!0}capturePrefill(e,t=!1){t&&(this.prefillSettled=!1),!this.prefillSettled&&(this.previousLength=e,e!==0&&(this.prefillSettled=!0,this.pushLow({lowType:"input-prefill",ts:Date.now(),initiator:"unknown"})))}flush(){this.cancelIdle(),this.flushInputBatch(),this.flushAutofillStreak()}cancelIdle(){this.idleTimer!==null&&clearTimeout(this.idleTimer),this.idleTimer=null}scheduleIdle(){this.cancelIdle(),this.idleTimer=setTimeout(()=>{this.idleTimer=null;try{this.flushInputBatch(!0),this.flushAutofillStreak()}catch(e){this.logger.error("Failed to flush idle input",e)}},3e3)}extendInputBatch(e,t=this.currentEffect,r){let n=this.inputBatch;if(!n){this.inputBatch={firstTimestamp:e,lastTimestamp:e,effect:t,captureSeq:r};return}n.lastTimestamp=e}drainAutofillRingToBatch(){for(let e of this.autofillTimestamps)this.extendInputBatch(e.ts,this.ringEffect,e.captureSeq);this.autofillTimestamps.length=0}flushInputBatch(e=!1){this.drainAutofillRingToBatch();let t=this.inputBatch;t&&(this.pushLow({...t.captureSeq===void 0?{}:{captureSeq:t.captureSeq},lowType:e?"input-idle":"input",ts:t.firstTimestamp,durationMs:t.lastTimestamp-t.firstTimestamp,inputEffect:t.effect}),this.inputBatch=null)}flushAutofillStreak(){let e=this.autofillStreak;e&&(this.pushLow({...e.captureSeq===void 0?{}:{captureSeq:e.captureSeq},lowType:"big-input-add",ts:e.firstTimestamp,durationMs:e.lastTimestamp-e.firstTimestamp,inputEffect:e.effect}),this.autofillStreak=null)}detectAutofillStreak(){let e=this.autofillTimestamps;if(e.length<5)return!1;let t=1/0,r=-1/0;for(let n=1;n<e.length;n++){let o=e[n].ts-e[n-1].ts;if(o>80)return!1;o<t&&(t=o),o>r&&(r=o)}return r-t<=25}record(e,t=Date.now(),r=!1,n=this.reserveCaptureSeq?.()){this.markInputObserved(),this.scheduleIdle();let o=this.previousLength;this.currentEffect=e===0?"clear":o===0?"fill":"modify";let s=e-o;if(this.previousLength=e,e===0&&o>0){this.flush(),this.pushLow({...n===void 0?{}:{captureSeq:n},lowType:"input-clear",ts:t,inputEffect:"clear"});return}if(r){this.flushAutofillStreak(),this.drainAutofillRingToBatch(),this.extendInputBatch(t,this.currentEffect,n);return}if(s>=3){this.flushInputBatch(),this.flushAutofillStreak(),this.pushLow({...n===void 0?{}:{captureSeq:n},lowType:"big-input-add",ts:t,inputEffect:this.currentEffect});return}if(s<=-3){this.flushInputBatch(),this.flushAutofillStreak(),this.pushLow({...n===void 0?{}:{captureSeq:n},lowType:"big-input-rem",ts:t,inputEffect:this.currentEffect});return}let a=this.autofillStreak;if(a){if(s===1&&t-a.lastTimestamp<=80){a.lastTimestamp=t;return}this.flushAutofillStreak()}if(s!==1){this.drainAutofillRingToBatch(),this.extendInputBatch(t,this.currentEffect,n);return}let l=this.autofillTimestamps;if(l.length===0&&(this.ringEffect=this.currentEffect),l.push({ts:t,captureSeq:n}),l.length>5){let u=l.shift();this.extendInputBatch(u.ts,this.ringEffect,u.captureSeq),this.ringEffect="modify"}if(!this.detectAutofillStreak())return;let p=l[0],d=l[l.length-1];l.length=0,this.flushInputBatch(),this.autofillStreak={firstTimestamp:p.ts,captureSeq:p.captureSeq,lastTimestamp:d.ts,effect:this.ringEffect}}};var $=class{constructor(e,t,r,n,o){this.inputs=t;this.logger=r;this.changed=n;this.reserveCaptureSeq=o;for(let s of t)s.addEventListener("paste",this.onPaste,!0),s.addEventListener("beforeinput",this.onBeforeInput,!0)}before=null;timestamp=0;captureSeq;pasteEvent;timer=null;onPaste=e=>this.begin(e);onBeforeInput=e=>{e.inputType==="insertFromPaste"?this.begin(e):this.flush()};handlesInput(e){if(!this.before)return!1;let t=this.pasteEvent?.type==="paste"&&(this.pasteEvent.eventPhase??0)>0;return e.inputType==="insertFromPaste"||t?!0:(this.clear(),!1)}get pending(){return this.before!==null}begin(e){if(!(!e.isTrusted||this.before))try{this.before=this.inputs.map(t=>t.value),this.pasteEvent=e,this.timestamp=Date.now(),this.captureSeq=this.reserveCaptureSeq?.(),this.timer=setTimeout(()=>this.flush(),0)}catch(t){this.logger.error("Failed to observe paste",t),this.clear()}}flush(){let e=this.before;if(!e)return;let t=this.timestamp,r=this.captureSeq;this.clear();try{let n=0,o=!1;this.inputs.forEach((s,a)=>{let l=e[a],p=s.value;if(l===p)return;o=!0;let d=0;for(;d<l.length&&d<p.length&&l[d]===p[d];)d++;let u=0;for(;u<l.length-d&&u<p.length-d&&l[l.length-u-1]===p[p.length-u-1];)u++;n+=p.length-d-u}),o&&this.changed(t,n,r)}catch(n){this.logger.error("Failed to finish paste observation",n)}}clear(){this.timer!==null&&clearTimeout(this.timer),this.timer=null,this.before=null,this.pasteEvent=void 0}destroy(){this.flush();for(let e of this.inputs)e.removeEventListener("paste",this.onPaste,!0),e.removeEventListener("beforeinput",this.onBeforeInput,!0)}};var Ai=["focus","blur","pointerdown","pointerup","click","input","keyup"];function Ve(i,e,t,r,n=Ai){let o=[];for(let s of n){let a=_i(s,t,r);a&&o.push([s,a])}for(let[s,a]of o)e.addEventListener(s,a);return()=>{for(let[s,a]of o)e.removeEventListener(s,a)}}function _i(i,e,t){switch(i){case"focus":case"blur":{let r=e[i];return r&&(n=>t(i,()=>r(n.relatedTarget)))}case"pointerdown":case"pointerup":case"click":{let r=e[i];return r&&(()=>t(i,()=>r()))}case"input":{let r=e.input;return r&&(n=>t("input",()=>r(n.isComposing||n.inputType==="insertCompositionText",n)))}case"keyup":{let r=e.keyupEscape;return r&&(n=>t("keyup",()=>{n.key==="Escape"&&r()}))}}}function Tr(i,e){return e.type==="checkbox"||e.type==="radio"?e.checked?1:0:e.value.length}function Er(i,e){return e.reduce((t,r)=>t+r.value.length,0)}function We(i,e){let t=document.activeElement;return e.find(r=>r===t)}var Mi=[{query:"com-1password-button",eventType:"pa-1"},{query:"com-1password-menu",eventType:"pa-2"},{query:"com-1password-notification",eventType:"pa-3"}],Hi="[data-lastpass-root], [data-lp], [data-lpignore], [data-lpfieldtype]",Ir="pa-4",Bi='[popover="manual"]',Ni=400,Ui=20,ft="pa-5",ht="pa-6",gt=(i,e)=>{try{return Array.from(i.querySelectorAll(e))}catch{return[]}},xr=i=>{if(i.getAttribute("popover")!=="manual")return!1;let e=i.getAttribute("style")??"";return!(e.length<Ni||!/z-index:\s*2147483647\b/i.test(e)||!/position:\s*fixed\b/i.test(e)||!/display:\s*block\b/i.test(e)||(e.match(/initial\s*!important/gi)?.length??0)<Ui)},qi=i=>{if(xr(i)||i.getAttribute("popover")!=="manual")return!1;let e=i.getAttribute("style")??"";return!(!/z-index:\s*2147483647\b/i.test(e)||!/position:\s*fixed\b/i.test(e)||!/backdrop-filter:\s*[^;]*blur\(\s*20px\s*\)/i.test(e)||!/background-color:\s*rgba\(\s*35\s*,\s*35\s*,\s*35\s*,/i.test(e))},Ki=i=>{i(document);for(let e of Array.from(document.querySelectorAll("*"))){let t=e.shadowRoot;t&&i(t)}},Vi=()=>{let i=new Set;return typeof document>"u"||Ki(e=>{for(let t of Mi)i.has(t.eventType)||gt(e,t.query).length>0&&i.add(t.eventType);if(!i.has(Ir)&>(e,Hi).length>0&&i.add(Ir),!i.has(ft)||!i.has(ht))for(let t of gt(e,Bi)){if(!i.has(ft)&&xr(t)){i.add(ft);continue}!i.has(ht)&&qi(t)&&i.add(ht)}}),i};function kr(i){return Vi()}var Wi=500,$i=250;function oe(i){return Tr(0,i)}var E=class{constructor(e,t,r){this.logger=e;this.inputField=t;this.sink=r;this.changes=new W(oe(t),this.pushLow,e,r.reserveCaptureSeq),this.pasteObserver=new $(0,[t],e,(n,o,s)=>{this.changes.flush(),this.changes.markInputObserved();let a=this.changes.previousLength;this.changes.previousLength=oe(t),this.pushLow({...s===void 0?{}:{captureSeq:s},lowType:"input-paste",ts:n,inputEffect:oe(t)===0?"clear":a===0?"fill":"modify"})},r.reserveCaptureSeq),this.unregisterInputs=r.registerInputs?.([t],()=>this.flushPending()),this.capturePrefill(),this.attach()}unregisterInputs;removeFieldListeners;removePageHide;changes;pasteObserver;emittedSignals=new Set;firstFocusHandled=!1;mountProbeTimer=null;focusProbeTimer=null;destroyed=!1;destroy(){if(!this.destroyed){this.destroyed=!0;try{this.mountProbeTimer!==null&&(clearTimeout(this.mountProbeTimer),this.mountProbeTimer=null),this.focusProbeTimer!==null&&(clearTimeout(this.focusProbeTimer),this.focusProbeTimer=null),this.changes.flush(),this.unregisterInputs?.(),this.pasteObserver.destroy(),this.detach()}catch(e){this.logger.error("Failed to destroy LowEventInputTracker",e)}}}attach(){let e=this.inputField;this.removeFieldListeners=Ve(0,e,{focus:()=>this.handleFocus(),blur:()=>this.handleBlur(),pointerdown:()=>this.enqueueNonInputEvent("pointerdown"),pointerup:()=>this.enqueueNonInputEvent("pointerup"),click:()=>this.enqueueNonInputEvent("click"),input:(t,r)=>this.handleInput(r,t),keyupEscape:()=>this.enqueueNonInputEvent("keyup-escape")},(t,r)=>{try{r()}catch(n){t==="input"?this.logger.error("Failed to observe input",n):this.logger.error(`Failed to handle low event "${t}"`,n)}}),typeof window<"u"&&(this.removePageHide=I(0,"pagehide",this.wrapHandler("pagehide",()=>this.flushForTeardown()))),typeof document<"u"&&We(0,[e])&&this.handleFocus(),typeof window<"u"&&(this.mountProbeTimer=setTimeout(()=>this.runEnvProbe(),Wi))}detach(){this.removeFieldListeners?.(),typeof window<"u"&&this.removePageHide?.()}pushLow=e=>{this.sink.enqueueLowEvent(e)};runEnvProbe(){try{if(typeof __CBO_DATA_PMD__=="boolean"?__CBO_DATA_PMD__:this.sink.passwordManagerDomScan?.()!==!1){let e=kr(0),t=Date.now();for(let r of e)this.emittedSignals.has(r)||(this.emittedSignals.add(r),this.pushLow({lowType:r,ts:t}))}}catch(e){this.logger.error("Failed to run input env probe",e)}}scheduleFocusProbe(){this.firstFocusHandled||(this.firstFocusHandled=!0,this.focusProbeTimer=setTimeout(()=>this.runEnvProbe(),$i))}capturePrefill(e=!1){this.destroyed||(this.flushPending(),this.changes.capturePrefill(oe(this.inputField),e))}flushPending(){this.pasteObserver.flush(),this.changes.flush()}enqueueNonInputEvent(e){this.changes.flush(),this.pushLow({lowType:e,ts:Date.now()})}handleFocus(){this.scheduleFocusProbe(),this.enqueueNonInputEvent("focus")}handleBlur(){this.pasteObserver.flush(),this.enqueueNonInputEvent("blur")}handleInput(e,t){this.pasteObserver.handlesInput(e)||this.changes.record(oe(this.inputField),Date.now(),t)}flushForTeardown(){this.pasteObserver.flush(),this.changes.flush(),this.sink.flushKeepalive()}wrapHandler(e,t){return()=>{try{t()}catch(r){this.logger.error(`Failed to handle low event "${e}"`,r)}}}};var $e=class{constructor(e,t,r){this.logger=e;this.sink=r;this.inputs=[...new Set(t)],this.changes=new W(this.length(),o=>r.enqueueLowEvent(o),e,r.reserveCaptureSeq),this.paste=new $(0,this.inputs,e,(o,s,a)=>{this.cancelChange(),this.changes.flush(),this.changes.markInputObserved();let l=this.changes.previousLength;this.changes.previousLength=this.length(),r.enqueueLowEvent({...a===void 0?{}:{captureSeq:a},lowType:"input-paste",ts:o,inputEffect:this.length()===0?"clear":l===0?"fill":"modify"})},r.reserveCaptureSeq),this.unregisterInputs=r.registerInputs?.(this.inputs,()=>this.flushPending()),this.capturePrefill();let n=(o,s)=>this.safe(s);for(let o of this.inputs)this.listeners.push(Ve(0,o,{input:(s,a)=>{this.paste.handlesInput(a)||(this.composing||=s,this.changeTimer===null&&(this.changeTime=Date.now(),this.changeSeq=r.reserveCaptureSeq?.(),this.changeTimer=setTimeout(()=>this.safe(()=>this.flushChanges()),0)))},focus:s=>{this.contains(s)||this.emit("focus")},blur:s=>{this.contains(s)||(this.flushPending(),this.emit("blur"))},click:()=>this.emit("click"),pointerdown:()=>this.emit("pointerdown"),pointerup:()=>this.emit("pointerup"),keyupEscape:()=>this.emit("keyup-escape")},n,["input","focus","blur","click","pointerdown","pointerup","keyup"]));typeof window<"u"&&this.listeners.push(I(0,"pagehide",o=>this.safe(()=>{this.flushPending(),r.flushKeepalive()}))),typeof document<"u"&&We(0,this.inputs)&&this.emit("focus")}inputs;changes;paste;unregisterInputs;listeners=[];changeTimer=null;changeTime=0;changeSeq;composing=!1;destroyed=!1;contains(e){return this.inputs.some(t=>t===e)}length(){return Er(0,this.inputs)}safe(e){try{e()}catch(t){this.logger.error("Failed to observe grouped input",t)}}cancelChange(){this.changeTimer!==null&&clearTimeout(this.changeTimer),this.changeTimer=null}flushChanges(){this.changeTimer!==null&&(this.cancelChange(),this.paste.pending||this.changes.record(this.length(),this.changeTime,this.composing,this.changeSeq),this.composing=!1)}emit(e){this.flushChanges(),this.changes.flush(),this.sink.enqueueLowEvent({lowType:e,ts:Date.now()})}capturePrefill(e=!1){this.destroyed||(this.flushPending(),this.changes.capturePrefill(this.length(),e))}flushPending(){this.paste.flush(),this.flushChanges(),this.changes.flush()}destroy(){this.destroyed||(this.destroyed=!0,this.safe(()=>{this.flushPending(),this.paste.destroy(),this.unregisterInputs?.();for(let e of this.listeners)e()}))}};var F=class{constructor(e,t,r){this.logger=e;this.inputSink=t;this.groupSink=r}collector;fields=[];grouped=!1;destroyed=!1;prefillClaimed=!1;setFields(e,t=!0){try{if(this.destroyed)return;let r=[...new Set(e)];if(t===this.grouped&&r.length===this.fields.length&&r.every((s,a)=>s===this.fields[a])||(this.collector?.destroy(),this.collector=void 0,this.fields=[],this.grouped=t,r.length===0))return;let n=t?this.groupSink:this.inputSink,o={...n,enqueueLowEvent:s=>this.enqueue(n,s)};this.collector=t?new $e(this.logger,r,o):new E(this.logger,r[0],o),this.fields=r}catch(r){this.logger.error("Failed to bind OTP inputs",r)}}enqueue(e,t){if(t.lowType==="input-prefill"){if(this.prefillClaimed)return;this.prefillClaimed=!0}else["input","input-idle","input-clear","input-paste","big-input-paste","big-input-add","big-input-rem"].includes(t.lowType)&&(this.prefillClaimed=!0);e.enqueueLowEvent(t)}capturePrefill(e=!1){e&&(this.prefillClaimed=!1),this.collector?.capturePrefill(e)}flushPending(){this.collector?.flushPending()}destroy(){this.destroyed=!0,this.collector?.destroy(),this.collector=void 0,this.fields=[]}};var se=class extends f{lowEventTracker;send;postResponse;resend;constructor(e,t={}){super(e,"email-otp"),this.send=this.defineStep("send"),this.postResponse=this.defineStep("post-response"),this.resend=this.defineStep("resend"),this.subflowStart({explicitSpecType:t.explicitSpecType,emailDomain:t.emailDomain}),this.lowEventTracker=this.createLowCollector(()=>new F(e.getLogger(),this.lowEventSink("input","otp"),this.lowEventSink("input-group","otp"))),t.inputHtmlFields?.length?this.setInputFields(t.inputHtmlFields):t.inputHtmlField&&this.lowEventTracker?.setFields([t.inputHtmlField],!1),this.registerLowFlusher(()=>this.lowEventTracker?.flushPending())}setInputFields(e){this.lowEventTracker?.setFields(e)}destroy(){this.lowEventTracker?.destroy()}};var ae=class extends f{lowEventTracker;send;postResponse;resend;constructor(e,t={}){super(e,"sms-otp"),this.send=this.defineStep("send"),this.postResponse=this.defineStep("post-response"),this.resend=this.defineStep("resend"),this.subflowStart({explicitSpecType:t.explicitSpecType}),this.lowEventTracker=this.createLowCollector(()=>new F(e.getLogger(),this.lowEventSink("input","otp"),this.lowEventSink("input-group","otp"))),t.inputHtmlFields?.length?this.setInputFields(t.inputHtmlFields):t.inputHtmlField&&this.lowEventTracker?.setFields([t.inputHtmlField],!1),this.registerLowFlusher(()=>this.lowEventTracker?.flushPending())}setInputFields(e){this.lowEventTracker?.setFields(e)}destroy(){this.lowEventTracker?.destroy()}};var Gi=["ahrefsbot","ahrefssiteaudit","amazonbot","baiduspider","bingbot","bingpreview","chrome-lighthouse","facebookexternal","petalbot","pinterest","screaming frog","yahoo! slurp","yandex","adsbot-google","apis-google","duplexweb-google","feedfetcher-google","google favicon","google web preview","google-read-aloud","googlebot","googleweblight","mediapartners-google","storebot-google"];function Cr(i){if(!i)return!1;let e=i.toLowerCase();return Gi.some(t=>e.includes(t))}var Ge="@corbado/observe",ze="1.9.1";var Fr=require("uuid");var mt="cbo_email_link_starts";function yt(i,e){let t=i.getItem(mt);return Array.isArray(t)?t.filter(r=>!!r&&typeof r=="object"&&typeof r.transactionId=="string"&&typeof r.anchor=="string"&&typeof r.sessionId=="string"&&typeof r.startedAt=="number"&&e-r.startedAt<864e5):[]}function Or(i,e){if(i)try{let t=yt(i,e.startedAt).filter(r=>r.transactionId!==e.transactionId);t.push(e),i.setItem(mt,t.slice(-10))}catch{}}function Pr(i,e,t=Date.now()){if(i)try{let r=yt(i,t);if(e.transactionId)return r.find(o=>o.transactionId===e.transactionId);let n=r.filter(o=>!o.continued&&(!e.specType||!o.specType||o.specType===e.specType));return n[n.length-1]}catch{return}}function Lr(i,e){if(i)try{let t=yt(i,Date.now()).map(r=>r.transactionId===e?{...r,continued:!0}:r);i.setItem(mt,t)}catch{}}var le=class extends f{send;postResponse;resend;transactionId;constructor(e,t={}){super(e,"email-link"),this.send=this.defineStep("send"),this.postResponse=this.defineStep("post-response"),this.resend=this.defineStep("resend"),this.transactionId=t.transactionId||(0,Fr.v7)(),this.subflowStart({explicitSpecType:t.explicitSpecType},{userReference:{crossEnvironmentTransactionIDStart:this.transactionId}});let r=this.captureReference,n=this.captureSession;r&&n&&Or(e.getPersistentStorage(),{transactionId:this.transactionId,anchor:r,sessionId:n,specType:t.explicitSpecType,startedAt:Date.now()})}},pe=class extends f{postResponse;resend;mode;continuationTracker;specType;createdAt=Date.now();transaction;started=!1;deferred=[];onPageHide=()=>this.flush();removePageHide;constructor(e,t={}){super(e,"email-link"),this.continuationTracker=e,this.specType=t.explicitSpecType,this.transaction=t.transactionId,this.postResponse=this.deferrable(this.defineStep("post-response"),!0),this.resend=this.deferrable(this.defineStep("resend"));let r=e.getPersistentStorage(),n=Pr(r,{transactionId:t.transactionId,specType:t.explicitSpecType});if(n&&n.sessionId===e.getSessionId()){this.mode="attached",this.transaction=t.transactionId??n.transactionId,this.adoptCapture(n.anchor,n.sessionId,n.specType??t.explicitSpecType),this.started=!0;return}this.mode="detached",this.transaction?this.startDetached(this.createdAt):typeof window<"u"&&(this.removePageHide=I(0,"pagehide",this.onPageHide))}get transactionId(){return this.transaction}setTransactionId(e){!e||this.transaction||(this.transaction=e,this.mode==="detached"&&!this.started&&this.startDetached(this.firstDeferredAt()))}flush(){this.mode==="detached"&&!this.started&&this.startDetached(this.firstDeferredAt())}destroy(){this.flush(),this.removePageHideListener()}firstDeferredAt(){return this.deferred[0]?.at??this.createdAt}startDetached(e){this.started=!0,this.removePageHideListener(),this.subflowStart({explicitSpecType:this.specType,continuation:!0},{explicitTimestamp:e,...this.transaction?{userReference:{crossEnvironmentTransactionIDFinish:this.transaction}}:{}});let t=this.deferred;this.deferred=[];for(let r of t)r.run(r.at);try{this.continuationTracker.flushKeepalive()}catch{}}removePageHideListener(){typeof window<"u"&&this.removePageHide?.()}deferrable(e,t=!1){let r=(n,o)=>{if(this.started){n(o?.explicitTimestamp??Date.now());return}this.deferred.push({at:o?.explicitTimestamp??Date.now(),run:n})};return{start:(n,o)=>r(s=>e.start(n,{...o,explicitTimestamp:s}),o),finished:(n,o)=>{r(s=>e.finished(n,{...o,explicitTimestamp:s}),o),t&&this.transaction&&Lr(this.continuationTracker.getPersistentStorage(),this.transaction)},error:(n,o)=>r(s=>e.error(n,{...o,explicitTimestamp:s}),o)}}};var de=class extends f{getOptions;ceremony;postResponse;lowEventTracker;constructor(e,t){super(e,"passkey-enrollment"),this.lowEventTracker=new V(e.getLogger(),this.lowEventSink("ceremony")),this.registerLowFlusher(()=>this.lowEventTracker.disarm()),this.getOptions=this.defineStep("get-options"),this.ceremony=this.withWindowLowEvents(this.defineStep("ceremony"),this.lowEventTracker),this.postResponse=this.defineStep("post-response"),this.subflowStart({explicitSpecType:t?.explicitSpecType,...t?.ignoreAsInteraction?{ignoreAsInteraction:!0}:{}})}destroy(){this.lowEventTracker.destroy()}};function vt(i){let e=i.debug,t,r=(n,o)=>`[Corbado Observe SDK ${n}] ${o}`;return{reportTelemetry(n,o){if(t)try{t(n,o)}catch{}},setTelemetrySink(n){t=n},debug(n,...o){e&&console.log(r("DEBUG",n),...o)},info(n,...o){e&&console.log(r("INFO",n),...o)},warn(n,...o){e&&console.warn(r("WARN",n),...o)},error(n,...o){e&&console.error(r("ERROR",n),...o)},critical(n,...o){console.error(r("CRITICAL",n),...o)}}}var ue=class extends f{userConfirmation;deletion;constructor(e,t={}){super(e,"passkey-deletion"),this.userConfirmation=this.defineStep("user-confirmation"),this.deletion=this.defineStep("deletion"),this.subflowStart({})}};var ce=class extends f{clientValidation;postResponse;cui;lowEventTracker;identifierLowEventTracker;constructor(e,t){super(e,"password-login"),this.clientValidation=this.defineStep("client-validation"),this.postResponse=this.defineStep("post-response"),this.cui={getOptions:this.defineStep("cui-get-options",!0),ceremony:this.defineStep("cui-ceremony"),postResponse:this.defineStep("cui-post-response")},this.subflowStart({explicitSpecType:t?.explicitSpecType}),t?.identifierInputHtmlField&&(this.identifierLowEventTracker=this.createLowCollector(()=>new E(e.getLogger(),t.identifierInputHtmlField,this.lowEventSink("input","identifier"))),this.registerLowFlusher(()=>this.identifierLowEventTracker?.flushPending())),t?.inputHtmlField&&(this.lowEventTracker=this.createLowCollector(()=>new E(e.getLogger(),t.inputHtmlField,this.lowEventSink("input","password"))),this.registerLowFlusher(()=>this.lowEventTracker?.flushPending()))}trigger(e,t){super.trigger(e,t)}destroy(){this.lowEventTracker?.destroy(),this.identifierLowEventTracker?.destroy()}};var fe=class extends f{clientValidation;postResponse;lowEventTracker;constructor(e,t){super(e,"password-enrollment"),this.clientValidation=this.defineStep("client-validation"),this.postResponse=this.defineStep("post-response"),this.subflowStart({explicitSpecType:t?.explicitSpecType}),t?.inputHtmlField&&(this.lowEventTracker=this.createLowCollector(()=>new E(e.getLogger(),t.inputHtmlField,this.lowEventSink("input","password"))),this.registerLowFlusher(()=>this.lowEventTracker?.flushPending()))}destroy(){this.lowEventTracker?.destroy()}};var he=class extends f{lowEventTracker;cui;provideIdentifier;constructor(e,t){super(e,"provide-identifier"),this.cui={trigger:(r,n)=>{this.trigger(r,n)},getOptions:this.defineStep("cui-get-options",!0),ceremony:this.defineStep("cui-ceremony"),postResponse:this.defineStep("cui-post-response")},this.provideIdentifier={trigger:(r,n)=>{this.trigger(r,n)},clientValidation:this.defineStep("pi-client-validation"),postResponse:this.defineStep("pi-post-response")},this.subflowStart({explicitSpecType:t?.explicitSpecType}),t?.inputHtmlField&&(this.lowEventTracker=this.createLowCollector(()=>new E(e.getLogger(),t.inputHtmlField,this.lowEventSink("input","identifier"))),this.registerLowFlusher(()=>this.lowEventTracker?.flushPending()))}destroy(){this.lowEventTracker?.destroy()}};var ge=class extends f{getRedirectUrl;exchangeCode;constructor(e,t={}){super(e,"social-login"),this.getRedirectUrl=this.defineStep("get-redirect-url"),this.exchangeCode=this.defineStep("exchange-code"),this.subflowStart({explicitSpecType:t.explicitSpecType,entry:t.entry})}};var me=class extends f{getRedirectUrl;exchangeCode;constructor(e,t={}){super(e,"sso-login"),this.getRedirectUrl=this.defineStep("get-redirect-url"),this.exchangeCode=this.defineStep("exchange-code");let{explicitSpecType:r,organizationDomain:n,actor:o}=zi(t??{},e);this.subflowStart({explicitSpecType:r,organizationDomain:n,actor:o})}};function zi(i,e){let t={...i},r=o=>{try{e.getLogger().warn(`SSO login: unsupported ${o}; omitted from telemetry`)}catch{}},n=t.organizationDomain;return n!==void 0&&(typeof n!="string"||n.includes("@")||n.length>253)&&(delete t.organizationDomain,r("organizationDomain")),t.actor!==void 0&&t.actor!=="user"&&t.actor!=="system"&&(delete t.actor,r("actor")),t}var ye=class extends f{lowEventTracker;postResponse;constructor(e,t={}){super(e,"totp"),this.postResponse=this.defineStep("post-response"),this.subflowStart({explicitSpecType:t.explicitSpecType}),this.lowEventTracker=this.createLowCollector(()=>new F(e.getLogger(),this.lowEventSink("input","otp"),this.lowEventSink("input-group","otp"))),t.inputHtmlFields?.length?this.setInputFields(t.inputHtmlFields):t.inputHtmlField&&this.lowEventTracker?.setFields([t.inputHtmlField],!1),this.registerLowFlusher(()=>this.lowEventTracker?.flushPending())}setInputFields(e){this.lowEventTracker?.setFields(e)}destroy(){this.lowEventTracker?.destroy()}};var ve=class extends f{ceremony;retry;postResponse;constructor(e,t={}){super(e,"app-confirmation"),this.ceremony=this.defineStep("ceremony"),this.retry=this.defineStep("retry"),this.postResponse=this.defineStep("post-response"),this.subflowStart({explicitSpecType:t.explicitSpecType})}};var be=class extends f{ceremony;postResponse;constructor(e,t={}){super(e,"captcha"),this.ceremony=this.defineStep("ceremony"),this.postResponse=this.defineStep("post-response"),this.subflowStart({explicitSpecType:t.explicitSpecType})}};var je=class{constructor(e,t){this.logger=e;this.sink=t}trackers=new Map;destroyed=!1;setFields(e){if(this.destroyed)return;let t=new Set(e);for(let[r,n]of this.trackers)t.has(r)||(this.safe(()=>n.destroy()),this.trackers.delete(r));for(let r of t)this.trackers.has(r)||this.safe(()=>this.trackers.set(r,new E(this.logger,r,this.sink())))}capturePrefill(e=!1){for(let t of this.trackers.values())this.safe(()=>t.capturePrefill(e))}flushPending(){for(let e of this.trackers.values())this.safe(()=>e.flushPending())}destroy(){if(!this.destroyed){this.destroyed=!0;for(let e of this.trackers.values())this.safe(()=>e.destroy());this.trackers.clear()}}safe(e){try{e()}catch(t){this.logger.error("Form input binding failed",t)}}};var bt=50,ji=6e4,Qi=40,Yi=/^[A-Za-z0-9._-]+$/,we=class extends f{submit;skip;inputBinding;constructor(e,t){super(e,"form"),this.submit=this.defineStep("submit"),this.skip=this.defineStep("skip"),this.subflowStart(Xi(e,t),Ji(e,t)),this.inputBinding=this.createLowCollector(()=>new je(e.getLogger(),()=>this.lowEventSink("input","data"))),this.registerLowFlusher(()=>this.inputBinding?.flushPending()),t?.inputHtmlFields?.length&&this.setInputFields(t.inputHtmlFields)}setInputFields(e){this.inputBinding?.setFields(e)}destroy(){this.inputBinding?.destroy()}};function Ji(i,e){let t=e?.startedAt;if(t===void 0)return;let r=Date.now();if(typeof t!="number"||!Number.isFinite(t)||t>r||r-t>ji){Se(i,"Form: implausible startedAt ignored; using the current time");return}return{explicitTimestamp:t}}function Xi(i,e){let t={},r=e?.name;typeof r=="string"&&r.trim()!==""?t.name=r:Se(i,"Form: missing name; the form will not be counted");let n=e?.fields;if(n===void 0)return t;if(!Array.isArray(n))return Se(i,"Form: fields must be an array of field names; omitted from telemetry"),t;let o=n.filter(s=>typeof s=="string"&&s.length<=Qi&&Yi.test(s));return o.length<n.length&&Se(i,"Form: unsupported field names omitted from telemetry"),o.length>bt&&Se(i,`Form: more than ${bt} field names; the rest is omitted from telemetry`),o.length>0&&(t.fields=o.slice(0,bt)),t}function Se(i,e){try{i.getLogger().warn(e)}catch{}}function St(i,e,t){if(i===null||typeof i!="object")return i;try{let r={...i};r.purpose===void 0&&e.purpose!==void 0&&(r.purpose=e.purpose),r.storage===void 0&&e.storage!==void 0&&(r.storage=e.storage),r.trustName===void 0&&e.trustName!==void 0&&(r.trustName=e.trustName);for(let[n,o]of[["bindingReference",255],["trustName",128]])if(typeof r[n]=="string"&&[...r[n]].length>o){delete r[n];try{t.getLogger().debug(`Trusted device: omitted ${n} exceeding ${o} characters`)}catch{}}return r}catch{return i}}function Qe(i,e,t){return{...i,start:(r,n)=>i.start(St(r,e,t),n),finished:(r,n)=>i.finished(St(r,e,t),n)}}var Te=class extends f{getOptions;ceremony;postResponse;constructor(e,t){super(e,"trusted-device-check"),t=Rr(t,e);let r={purpose:t.purpose,storage:t.storage,trustName:t.trustName};this.getOptions=this.checkStep("get-options",r,e),this.ceremony=this.checkStep("ceremony",r,e),this.postResponse=this.checkStep("post-response",r,e),this.subflowStart({explicitSpecType:t.explicitSpecType,actor:"system",ignoreAsInteraction:!0})}checkStep(e,t,r){let n=this.defineStep(e,!0);return{...Qe(n,t,r),errorTyped:(o,s)=>{n.errorTyped(St({code:o?.code,error:B(o?.error)},t,r),s)}}}},Ee=class extends f{getOptions;ceremony;postResponse;constructor(e,t){super(e,"trusted-device-enrollment"),t=Rr(t,e);let r={purpose:t.purpose,storage:t.storage,trustName:t.trustName};this.getOptions=Qe(this.defineStep("get-options"),r,e),this.ceremony=Qe(this.defineStep("ceremony"),r,e),this.postResponse=Qe(this.defineStep("post-response"),r,e),this.subflowStart({explicitSpecType:t.explicitSpecType})}};function Rr(i,e){let t={...i},r=n=>{try{e.getLogger().warn(`Trusted device: missing or unsupported ${n}; omitted from telemetry`)}catch{}};return t.purpose!=="additional-verification"&&t.purpose!=="mfa-exemption"&&(delete t.purpose,r("purpose")),["cookie","indexeddb","localstore","sessionstore"].includes(t.storage)||(delete t.storage,r("storage")),t}var Ie=class extends f{clientValidation;postResponse;lowEventTracker;constructor(e,t={}){super(e,"provide-data"),this.clientValidation=this.defineStep("client-validation"),this.postResponse=this.defineStep("post-response");let{inputHtmlField:r,...n}=t;this.subflowStart(n),r&&(this.lowEventTracker=this.createLowCollector(()=>new E(e.getLogger(),r,this.lowEventSink("input","data"))),this.registerLowFlusher(()=>this.lowEventTracker?.flushPending()))}destroy(){this.lowEventTracker?.destroy()}};var Zi="/inline/injected/webauthn-listeners.js",Dr=/\/dashlane-(?:shadow-dom|top-layer)-page-script\.js/,en=/-extension:\/\/[^/]+\/content-scripts\/passkey_proxy\/index\.js$/,tn=/-extension:\/\/[^/]+\/content_scripts\/shadow-dom\/shadowAttachNotifier\.js:/,Ar=/-extension:\/\/[^/]+\/js\/nordpass-script\.js:/,rn=/-extension:\/\/[^/]+\/js\/passkeys\.js:/,nn=/["'`](?:keeper:shadow-root-attached|webauthn-(?:get|create)-request)["'`]/,on=/Intercept cancelled for `(?:get|create)`|["'`](?:conditionalMediationAvailable|verifyingPlatformAuthenticatorAvailable)["'`]/,wt=()=>Object.keys(window._sentryDebugIds??{}),Tt=i=>{try{i()}catch(e){return String(e?.stack??"")}return""},_r=()=>Tt(()=>Element.prototype.attachShadow.call(null,{mode:"open"})),sn=()=>{let i=Object.getOwnPropertyDescriptor(navigator.credentials??{},"get");if(!i?.get||!i.set||i.configurable)return!1;let e=()=>{},t=i.get.call({_get:e});return t===e||typeof t=="function"&&t===i.get.call({})&&!Function.prototype.toString.call(t).includes("[native code]")},Et=(...i)=>{let e=navigator.credentials;return e?i.map(t=>Object.getOwnPropertyDescriptor(e,t)?.value):[]},an=()=>[navigator.credentials?.get,...Et("get","_get")].some(i=>typeof i=="function"&&i.name==="getWebAuthnCredential"),ln=()=>{let i=document.documentElement,e=document.adoptedStyleSheets;if(!i||typeof i.getAnimations!="function"||typeof e?.push!="function"||i.getAnimations().length>0)return!1;let t=new CSSStyleSheet;t.replaceSync(":where(:root){animation:bitwardenfill 1s 1000s paused}"),e.push(t);try{let r=i.getAnimations().filter(n=>n.animationName==="bitwardenfill");return r.forEach(n=>n.cancel()),r.length>0}finally{let r=e.indexOf(t);r>=0&&e.splice(r,1)}},pn,dn=()=>pn??=ln(),un=()=>{let i=typeof PublicKeyCredential>"u"?void 0:PublicKeyCredential;if(typeof i!="function"||!Object.prototype.hasOwnProperty.call(i,Symbol.hasInstance))return!1;let e=i[Symbol.hasInstance]({});return e instanceof Promise?(e.catch(()=>{}),!0):!1},cn=()=>{let i={get nodeType(){throw new Error("probe")}};return Tt(()=>MutationObserver.prototype.observe.call(null,i))},fn=()=>{let i=new Error("probe"),e=[],t={get nodeType(){return e.push("nodeType"),1},get ownerDocument(){throw e.push("ownerDocument"),i}};try{MutationObserver.prototype.observe.call(null,t)}catch(r){return r===i&&e.join()==="nodeType,ownerDocument"}return!1},hn=()=>[Element.prototype.attachShadow,navigator.credentials?.get,navigator.credentials?.create,...Et("get","_get","create")].some(e=>typeof e=="function"&&nn.test(Function.prototype.toString.call(e))),gn=()=>{let i=document;for(;i;){if(i.querySelector("[data-lastpass-icon-root], [data-lastpass-root]"))return!0;i=i.activeElement?.shadowRoot}return!1},mn=()=>{let i=typeof PublicKeyCredential>"u"?void 0:PublicKeyCredential;return[navigator.credentials?.get,...Et("get","_get"),i?.isConditionalMediationAvailable,i?._isConditionalMediationAvailable,i?.isUserVerifyingPlatformAuthenticatorAvailable,i?._isUserVerifyingPlatformAuthenticatorAvailable].some(t=>typeof t=="function"&&on.test(Function.prototype.toString.call(t)))},yn=[{name:"1password",signal:"in-field button",signedIn:!0,test:()=>document.querySelector("com-1password-button")!==null},{name:"1password",signal:"credentials.get accessor",test:sn},{name:"1password",signal:"Sentry debug id",test:()=>wt().some(i=>i.includes(Zi))},{name:"bitwarden",signal:"passkey override",signedIn:!0,test:an},{name:"bitwarden",signal:"autofill keyframes",test:dn},{name:"dashlane",signal:"injected script tag",test:()=>document.querySelector('script[src*="-extension://"][src*="/dashlane-"][src$="-page-script.js"]')!==null},{name:"dashlane",signal:"PublicKeyCredential hasInstance trap",test:un},{name:"dashlane",signal:"page script stack",test:()=>Dr.test(_r())||typeof HTMLDialogElement<"u"&&Dr.test(Tt(()=>HTMLDialogElement.prototype.showModal.call(null)))},{name:"kaspersky",signal:"passkey proxy flag",test:()=>window.wasKPMKeyPassProxyInited===!0},{name:"kaspersky",signal:"injected script tag",test:()=>en.test(document.querySelector('script[src*="/content-scripts/passkey_proxy/"]')?.src??"")},{name:"keeper",signal:"attachShadow stack",test:()=>tn.test(_r())},{name:"keeper",signal:"override source",test:hn},{name:"keeper",signal:"field lock",test:()=>document.querySelector("[data-keeper-lock-id]")!==null},{name:"lastpass",signal:"passkey override",signedIn:!0,test:()=>typeof window.__nativeCredentialsGet=="function"},{name:"lastpass",signal:"icon root",test:gn},{name:"nordpass",signal:"observer proxy stack",test:()=>Ar.test(cn())},{name:"nordpass",signal:"observer read order",test:fn},{name:"nordpass",signal:"passkeys Sentry debug id",test:()=>wt().some(i=>rn.test(i))},{name:"nordpass",signal:"Sentry debug id",test:()=>wt().some(i=>Ar.test(i))},{name:"protonpass",signal:"WebAuthn override source",test:mn},{name:"protonpass",signal:"field icon",test:()=>document.querySelector("[data-protonpass-role]")!==null}];function vn(){return typeof window>"u"||typeof document>"u"?[]:yn.map(({name:i,signal:e,signedIn:t,test:r})=>{try{return{name:i,signal:e,signedIn:t,matched:r()}}catch(n){return{name:i,signal:e,signedIn:t,matched:!1,error:n}}})}function It(){let i=new Map;for(let{name:e,signedIn:t,matched:r}of vn()){if(!r)continue;let n=i.get(e)??{name:e};t&&(n.signedIn=!0),i.set(e,n)}return[...i.values()]}function Mr(i){return It()}var Hr=3e3,bn=500,Sn=6,wn=1e3,Ye=class{constructor(e,t,r){this.logger=e;this.isEnabled=t;if(typeof window>"u"||typeof document>"u")return;if(this.sample(),Ht(0))this.sampleAfter(Hr);else{let o=()=>{this.sampleWhenIdle(),this.sampleAfter(Hr)};this.removers.push(I(0,"load",o,{once:!0}))}let n=r.onInputFocus(o=>{!this.isEnabled()||this.sampledFields.has(o)||(this.sampledFields.add(o),++this.focusSamples>=Sn&&n(),this.sampleAfter(bn))});this.removers.push(n)}detected=new Map;timers=new Set;idleCallbacks=new Set;sampledFields=new WeakSet;focusSamples=0;removers=[];destroyed=!1;reportedCounts=new Map;getDetected(){return[...this.detected.values()]}takeReport(e){if(!(!this.isEnabled()||this.detected.size<=(this.reportedCounts.get(e)??0)))return this.reportedCounts.set(e,this.detected.size),this.getDetected().map(({name:t})=>({name:t}))}destroy(){this.destroyed=!0;for(let e of this.removers)e();for(let e of this.timers)clearTimeout(e);this.timers.clear();for(let e of this.idleCallbacks)cancelIdleCallback(e);this.idleCallbacks.clear()}sampleAfter(e){let t=setTimeout(()=>{this.timers.delete(t),this.sampleWhenIdle()},e);this.timers.add(t)}sampleWhenIdle(){if(typeof requestIdleCallback!="function"){this.sample();return}let e=requestIdleCallback(()=>{this.idleCallbacks.delete(e),this.sample()},{timeout:wn});this.idleCallbacks.add(e)}sample(){if(!(this.destroyed||!this.isEnabled()))try{let e=Mr(0);for(let t of e){let r=this.detected.get(t.name);(!r||t.signedIn&&!r.signedIn)&&this.detected.set(t.name,t)}}catch(e){this.logger.error("Failed to detect password manager extensions",e)}}};var xt={name:Ge,version:ze},Tn=/^[0-9A-Za-z.+_-]{1,32}$/;function En(i,e){return i===void 0?xt:typeof i=="string"&&Tn.test(i)?{...xt,integrationVersion:i}:(e.debug("Ignoring invalid integrationVersion (expected <= 32 chars of [0-9A-Za-z.+_-])"),xt)}var Br="cbo_session_id",kt="cbo_session",H="cbo_seq",Nr="cbo_experiments",Ur="cbo_data_policy",In=255,xn=/^[A-Za-z0-9_-]+$/,kn=128,Cn=256,qr=1e3,On=/^[a-z][a-z0-9_-]{0,31}$/,Kr=/^[A-Za-z0-9_-]{1,16}$/,Pn=64,Ln=32,Fn=50,Rn="cbo_seq",Vr=1e3,Wr=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i,xe=class i{constructor(e){this.options=e;this.options.debug=e.debug??!1,this.logger=e.logger??vt({debug:this.options.debug});let t=new te(this.logger),r=new ie(this.logger),n=e.storage==="cookie",o=n?new re(this.logger,e.cookieDomain):void 0;Sr(e.projectId,t,r,o,this.logger);let s=e.projectId,a=c=>new ee(c,s);this.seqLockName=k(Rn,s),this.sessionStorage=a(r),this.persistentStorage=a(t),this.storage=a(o??t),this.configOverrides={...e.sdkConfig,...e.sdkConfig?.retry&&{retry:{...e.sdkConfig.retry}},...e.sdkConfig?.flushOnFlowTypeFinished&&{flushOnFlowTypeFinished:[...e.sdkConfig.flushOnFlowTypeFinished]},...e.sdkConfig?.sourcePathQueryAllow&&{sourcePathQueryAllow:[...e.sdkConfig.sourcePathQueryAllow]}},this.fixedData=it(e.fixedDataConfig),this.fixedData&&(this.configOverrides.pmd=this.fixedData.pmd);let l=Object.keys(v).every(c=>this.configOverrides[c]!==void 0)&&Object.keys(v.retry).every(c=>this.configOverrides.retry?.[c]!==void 0);l||(this.configManager=new Ke(e.apiBaseUrl+(e.apiConfigPath??"/v1/observe/config")+"/"+e.projectId,this.persistentStorage,this.logger));let p=this.configManager?.initialConfig;this.config=Fe(p,this.configOverrides),!l&&!p&&e.flushInterval!=null&&this.configOverrides.flushIntervalMs===void 0&&(this.config={...this.config,flushIntervalMs:e.flushInterval}),!l&&!p&&e.deviceInfoCollectorTimeout!=null&&this.configOverrides.deviceInfoCollectorTimeoutMs===void 0&&(this.config={...this.config,deviceInfoCollectorTimeoutMs:e.deviceInfoCollectorTimeout}),e.apiBaseUrl!==""&&(/^https?:\/\//.test(e.apiBaseUrl)||(this.logger.critical(`Invalid apiBaseUrl: URL must start with http:// or https:// (got: "${e.apiBaseUrl}")`),this.reportTelemetry("error","invalid apiBaseUrl: missing http(s) scheme")),e.apiBaseUrl.endsWith("/")&&(this.logger.critical(`Invalid apiBaseUrl: URL must not have a trailing slash (got: "${e.apiBaseUrl}")`),this.reportTelemetry("error","invalid apiBaseUrl: trailing slash")));let d=e.apiBaseUrl+(e.apiEventPath??"/v1/observe/events")+"/"+e.projectId;this.logger.debug(`Using API endpoint: ${d}`);let u=new De({logger:this.logger,url:d});this.sessionId=this.resolveSessionId(),this.queue=new X(this.logger,u,this.sessionId,En(this.options.integrationVersion,this.logger),{debug:this.options.debug,config:this.config,requestConfig:!1,outboxLockName:k(_e,s),getDataPolicy:()=>this.dataPolicy,fixedData:this.fixedData!==void 0||typeof __CBO_DATA_PMD__=="boolean"||typeof __CBO_DATA_PRIVATE_MODE__=="boolean",beforeEventBatchSend:c=>this.attachUndeliveredDeviceInfo(c),standaloneDeviceInfo:{has:()=>this.deviceInfoManager?.hasStandalone()??!1,take:()=>this.deviceInfoManager?.takeStandalone()}},this.persistentStorage),this.telemetryReady=!0,this.logger.setTelemetrySink?.((c,w)=>this.reportTelemetry(c,w));try{this.getWindowObserver()}catch(c){this.logger.error("Failed to attach page low-event observer",c)}if(typeof __CBO_DATA_PMD__=="boolean"?__CBO_DATA_PMD__:this.fixedData?.pmd!==!1)try{this.passwordManagerSampler=this.isTrackingBlocked()?void 0:new Ye(this.logger,()=>typeof __CBO_DATA_PMD__=="boolean"?__CBO_DATA_PMD__:this.config.pmd,this.getWindowObserver())}catch(c){this.logger.error("Failed to start password manager detection",c)}let h=this.pendingSelfTelemetry;this.pendingSelfTelemetry=[];for(let c of h)this.telemetry(c.level,c.message);let m=new He(this.logger,this.storage,n?"cookie":"localstorage",this.sessionStorage,()=>({timing:this.config.deviceInfoTiming}),(c,w)=>this.telemetry(c,w),this.fixedData?.privateMode??!0);this.deviceCollector=m;let y=e.deviceInfoDebounceTime??3e4;this.deviceInfoManager=new Be(this.logger,m,Math.max(1,y),y,{timing:()=>this.config.deviceInfoTiming,emit:(c,w)=>this.telemetry(c,w)},()=>this.queue.notifyDeviceInfo()),this.deviceInfoManager.start(),this.experiments=this.loadPersistedExperiments(),e.experiments&&this.setExperiments(e.experiments),this.dataPolicy=this.loadPersistedDataPolicy(),e.dataPolicy!==void 0&&this.setDataPolicy(e.dataPolicy),this.configManager?.start(c=>this.handleConfig(c))}logger;queue;sessionId;storage;sessionStorage;persistentStorage;seqLockName;config;configManager;configOverrides;fixedData;deviceInfoManager;deviceCollector;eventTabId;seq=0;lastActivityWriteAt=0;experiments={};dataPolicy;telemetryReporting=!1;telemetryReady=!1;reportedTelemetryKeys=new Set;pendingSelfTelemetry=[];probePageId;probeSeqs=new Map;windowObserver;passwordManagerSampler;getWindowObserver(){return this.windowObserver??=new Pe(this.logger,(e,t)=>this.enqueueLowEvent(e,t),()=>this.lowEventFlushKeepalive())}handleConfig(e){let t=Fe(e,this.configOverrides);t.sessionContinuity||=this.config.sessionContinuity,t.durableOutbox||=this.config.durableOutbox,this.config=t,this.queue.updateConfig(this.config)}getLogger(){return this.logger}applicationTag(){return this.options.applicationId?{applicationId:this.options.applicationId.toLowerCase()}:{}}setExperiment(e,t){this.setExperiments({[e]:t})}setExperiments(e){try{if(!e||typeof e!="object")return;let t=!1;for(let[r,n]of Object.entries(e)){if(!i.isValidExperimentKey(r)||!i.isValidExperimentVariant(n)){this.logger.debug(`Ignoring invalid experiment assignment "${String(r)}"`);continue}this.experiments[r]!==n&&(this.experiments[r]=n,t=!0)}t&&this.persistExperiments()}catch(t){this.logger.error("Failed to set experiments",t)}}clearExperiment(e){try{Object.prototype.hasOwnProperty.call(this.experiments,e)&&(delete this.experiments[e],this.persistExperiments())}catch(t){this.logger.error("Failed to clear experiment",t)}}clearExperiments(){try{if(Object.keys(this.experiments).length===0)return;this.experiments={},this.persistExperiments()}catch(e){this.logger.error("Failed to clear experiments",e)}}getExperiments(){return{...this.experiments}}getPersistentStorage(){return this.persistentStorage}getSdkConfig(){return Object.freeze({version:this.config.version,aap:this.config.aap,rawErrors:this.config.rawErrors})}setDataPolicy(e){try{if(!i.isValidDataPolicy(e)){this.logger.debug(`Ignoring invalid data policy code "${String(e)}"`);return}this.dataPolicy!==e&&(this.dataPolicy=e,this.persistDataPolicy())}catch(t){this.logger.error("Failed to set data policy",t)}}getDataPolicy(){return this.dataPolicy}static isValidDataPolicy(e){return typeof e=="number"&&Number.isInteger(e)&&e>=0&&e<=In}loadPersistedDataPolicy(){try{let e=this.persistentStorage.getItem(Ur);return i.isValidDataPolicy(e)?e:void 0}catch(e){this.logger.debug("Failed to load persisted data policy",e);return}}persistDataPolicy(){try{if(this.dataPolicy===void 0)return;this.persistentStorage.setItem(Ur,this.dataPolicy)}catch(e){this.logger.debug("Failed to persist data policy",e)}}static isValidExperimentKey(e){return typeof e=="string"&&e.length>0&&e.length<=kn&&xn.test(e)}static isValidExperimentVariant(e){return typeof e=="string"&&e.length>0&&e.length<=Cn}loadPersistedExperiments(){try{let e=this.persistentStorage.getItem(Nr);if(!e||typeof e!="object")return{};let t={};for(let[r,n]of Object.entries(e))i.isValidExperimentKey(r)&&i.isValidExperimentVariant(n)&&(t[r]=n);return t}catch(e){return this.logger.debug("Failed to load persisted experiments",e),{}}}persistExperiments(){try{this.persistentStorage.setItem(Nr,this.experiments)}catch(e){this.logger.debug("Failed to persist experiments",e)}}resolveExperiments(e){let t={...this.experiments};if(e&&typeof e=="object")for(let[r,n]of Object.entries(e))i.isValidExperimentKey(r)&&i.isValidExperimentVariant(n)&&(t[r]=n);return Object.keys(t).length>0?t:void 0}isTrackingBlocked(){return typeof navigator>"u"?!1:Cr(Oe(0))}resolveSessionId(){try{if(this.config.sessionContinuity)return this.getContinuitySessionId();let e=Date.now(),t=this.readPerTabSession();if(t&&e-t.lastActiveAt<this.perTabInactivityMs(t))return this.persistPerTabSession(t.id,e),this.seq=0,t.id;let r=(0,C.v7)();return this.persistPerTabSession(r,e),this.seq=0,this.logger.debug("Created session id",r),r}catch(e){return this.logger.error("Failed to get session id",e),this.reportTelemetry("error","failed to get session id"),""}}getContinuitySessionId(){let e=Date.now(),t=this.persistentStorage.getItem(kt);if(t?.id&&e-t.lastActiveAt<this.config.sessionInactivityMs)return this.persistContinuitySession(t.id,e),this.seq=this.persistentStorage.getItem(H)??0,t.id;if(!t?.id){let n=this.readPerTabSession();if(n&&e-n.lastActiveAt<this.config.sessionInactivityMs)return this.persistContinuitySession(n.id,e),this.persistentStorage.setItem(H,0),this.seq=0,this.logger.debug("Adopted per-tab session id as continuity session",n.id),n.id}let r=(0,C.v7)();return this.persistContinuitySession(r,e),this.persistentStorage.setItem(H,0),this.seq=0,this.logger.debug("Created continuity session id",r),r}persistContinuitySession(e,t){this.lastActivityWriteAt=t,this.persistentStorage.setItem(kt,{id:e,lastActiveAt:t})}readPerTabSession(){let e=this.sessionStorage.getItem(Br);if(e){if(typeof e=="string")return Wr.test(e)?{id:e,lastActiveAt:Date.now()}:void 0;if(typeof e.lastActiveAt=="number")return Wr.test(e.id)?e:void 0}}persistPerTabSession(e,t){this.lastActivityWriteAt=t;let r=this.configOverrides.sessionInactivityMs!==void 0||this.config.version?this.config.sessionInactivityMs:this.readPerTabSession()?.inactivityMs;this.sessionStorage.setItem(Br,{id:e,lastActiveAt:t,...r===void 0?{}:{inactivityMs:r}})}perTabInactivityMs(e){return this.configOverrides.sessionInactivityMs!==void 0?this.config.sessionInactivityMs:e.inactivityMs??this.config.sessionInactivityMs}nextSeq(){if(!this.config.sessionContinuity){let r=Date.now();return this.sessionId&&r-this.lastActivityWriteAt>=Vr&&this.persistPerTabSession(this.sessionId,r),this.seq++}let e=()=>{let r=Date.now(),n=this.persistentStorage.getItem(kt),o=!1;if(!n?.id&&this.sessionId)this.persistContinuitySession(this.sessionId,r);else if(n?.id)r-this.lastActivityWriteAt>=Vr&&this.persistContinuitySession(n.id,r),n.id!==this.sessionId&&(this.sessionId=n.id,this.queue.setSessionId(n.id),o=!0);else{let l=(0,C.v7)();this.persistContinuitySession(l,r),this.persistentStorage.setItem(H,0),this.sessionId=l,this.queue.setSessionId(l),this.seq=0,o=!0}let s=this.persistentStorage.getItem(H);o&&(this.seq=typeof s=="number"?s:0);let a=typeof s=="number"&&s>this.seq?s:this.seq;return this.seq=a+1,this.persistentStorage.setItem(H,this.seq),a},t=this.config.seqLockTimeoutMs;return t===0||!rr(0)?e():Ae(0,this.seqLockName,e,{timeoutMs:t,onTimeout:()=>{this.logger.warn(`Sequence Web Lock acquisition timed out after ${t}ms; using fallback`),this.reportTelemetry("info",`seq web lock timeout; using fallback, ${t}ms`)}})}resolveTrackingSourcePath(){if(!(typeof window>"u"))return Nt(0,this.config.sourcePathQuery,this.config.sourcePathQueryAllow)}resolveEventTabId(){return this.eventTabId===void 0&&(this.eventTabId=this.deviceCollector.getTabId()),this.eventTabId}trackSubflowStarted(e,t,r,n){let o={subflowType:e,...t};this.track("subflow_started",o,r?.userReference,void 0,void 0,r?.explicitTimestamp,r?.experiments,{id:n,subflowStartEventId:r?.subflowStartEventId,sessionId:r?.captureSessionId,initiator:r?.initiator})}trackSubflowTrigger(e,t,r){let n={subflowType:e,...t};this.track("subflow_trigger",n,r?.userReference,void 0,void 0,r?.explicitTimestamp,r?.experiments,{subflowStartEventId:r?.subflowStartEventId,sessionId:r?.captureSessionId,initiator:r?.initiator})}trackSubflowStepStarted(e,t,r,n,o){let s={subflowType:e,stepName:t,stepData:r,identifier:n?.identifier,ignoreAsInteraction:o};this.track("subflow_step_started",s,n?.userReference,void 0,void 0,n?.explicitTimestamp,n?.experiments,{subflowStartEventId:n?.subflowStartEventId,sessionId:n?.captureSessionId,initiator:n?.initiator})}trackSubflowStepFinished(e,t,r,n){let o={subflowType:e,stepName:t,stepData:r,identifier:n?.identifier};this.track("subflow_step_finished",o,n?.userReference,void 0,void 0,n?.explicitTimestamp,n?.experiments,{subflowStartEventId:n?.subflowStartEventId,sessionId:n?.captureSessionId,initiator:n?.initiator})}trackSubflowStepError(e,t,r,n){let o={subflowType:e,stepName:t,stepData:r,identifier:n?.identifier};this.track("subflow_step_error",o,n?.userReference,void 0,void 0,n?.explicitTimestamp,n?.experiments,{subflowStartEventId:n?.subflowStartEventId,sessionId:n?.captureSessionId,initiator:n?.initiator})}trackSubflowError(e,t,r){let n={subflowType:e,stepData:t};this.track("subflow_error",n,r?.userReference,void 0,void 0,r?.explicitTimestamp,r?.experiments,{subflowStartEventId:r?.subflowStartEventId,sessionId:r?.captureSessionId,initiator:r?.initiator})}async track(e,t,r,n,o,s,a,l){try{if(this.isTrackingBlocked()){this.logger.debug(`Skipping event "${e}" for blocked user agent.`);return}(e==="flow_finished"||e==="flow_auto_finished"||e==="flow_reset")&&this.windowObserver?.flushInputs();let p=s??Date.now(),d=l?.id??(0,C.v7)(),u=l?.sessionId??this.sessionId,h=this.nextSeq(),m=typeof h=="number"?h:await h,y=this.resolveTrackingSourcePath(),c={type:"predefined",name:e,id:d,timestamp:p,seq:m,data:t,user:r,contexts:o,tags:n,experiments:this.resolveExperiments(a),meta:{captureVersion:1,pageId:Q(),initiator:l?.initiator,trackingSourcePath:y??"",subflowStartEventId:l?.subflowStartEventId,tabId:this.resolveEventTabId()}},w=this.deviceInfoManager.getForEvent();w&&(c.deviceInfo=w),this.logger.debug(`Track: ${e}`,JSON.stringify(c,null,2));let T=this.passwordManagerSampler?.takeReport(u);T&&(c.passwordManagers=T),this.queue.enqueue(c,u)}catch(p){this.logger.error(`Failed to process event "${e}" before enqueue`,p),this.reportTelemetry("error",`failed to process event "${e}" before enqueue`)}}flowStarted(e,t,r,n,o){try{let s=(0,C.v7)(),a=this.sessionId,l={...this.options.defaultTags,...this.applicationTag(),...t};return this.track("flow_started",e,void 0,l,n,o?.explicitTimestamp,r,{id:s,sessionId:a}),this.flowHandle(s,a)}catch(s){return this.logger.warn("Failed to start flow",s),{enrich:async()=>{}}}}flowDecided(e,t,r){this.track("flow_decided",e,void 0,t,void 0,void 0,r)}conversion(e,t,r){let{userId:n,identifier:o,crossEnvironmentTransactionID:s,...a}=e,l={userId:n,identifier:o,crossEnvironmentTransactionID:s},p={...this.options.defaultTags,...this.applicationTag(),...t};this.track("conversion",a,l,p,void 0,void 0,r)}flowFinished(e,t,r){try{let{userId:n,identifier:o,...s}=e,a={userId:n,identifier:o},l=(0,C.v7)(),p=this.sessionId;return this.track("flow_finished",s,a,t,void 0,void 0,r,{id:l,sessionId:p}),this.flowHandle(l,p)}catch(n){return this.logger.warn("Failed to finish flow",n),{enrich:async()=>{}}}}flowHandle(e,t){return{enrich:async r=>{try{await this.track("flow_enriched",{targetEventId:e},{...r},void 0,void 0,void 0,void 0,{sessionId:t})}catch(n){this.logger.warn("Failed to enrich flow",n)}}}}flowReset(e,t,r){this.track("flow_reset",e,void 0,t,void 0,void 0,r)}flowAutoFinished(e,t,r){let{userId:n,identifier:o,...s}=e,a={userId:n,identifier:o};this.track("flow_auto_finished",s,a,t,void 0,void 0,r)}setUser(e){this.track("flow_enriched",{match:{flowType:"*",at:"during"},expFol:!0},{...e})}setFlowTags(e,t){try{if(!e||typeof e!="object"){this.logger.warn("setFlowTags: ignoring non-object tags");return}let r={};for(let[o,s]of Object.entries(e)){if(o===""||typeof s!="string"){this.logger.warn(`setFlowTags: ignoring invalid tag "${o}"`);continue}r[o]=s}if(Object.keys(r).length===0)return;let n={match:{flowType:t?.flowType??"*",at:"during"}};t?.expandToChildren!==void 0&&(n.expCh=t.expandToChildren),t?.expandToFollowing!==void 0&&(n.expFol=t.expandToFollowing),this.track("flow_enriched",n,void 0,r)}catch(r){this.logger.warn("Failed to set flow tags",r)}}authMethodsDecisionStarted(e,t,r,n){this.track("auth_method_decision_started",e,void 0,t,void 0,n?.explicitTimestamp,r)}authMethodsDecisionFinished(e,t,r){this.track("auth_method_decision_finished",e,void 0,t,void 0,void 0,r)}authDecisionStarted(e,t,r){this.track("auth_decision_started",e,void 0,t,void 0,void 0,r)}authDecisionFinished(e,t,r){this.track("auth_decision_finished",e,void 0,t,void 0,void 0,r)}enqueueLowEvent(e,t){try{if(this.isTrackingBlocked()){this.logger.debug(`Skipping low event "${e.lowType}" for blocked user agent.`);return}this.queue.enqueueLow({...e,captureSeq:e.captureSeq??O(),captureVersion:1,pageId:e.pageId??Q()},t)}catch(r){this.logger.error(`Failed to process low event "${e.lowType}" before enqueue`,r)}}telemetry(e,t){try{if(this.isTrackingBlocked()){this.logger.debug("Skipping telemetry for blocked user agent.");return}let r=typeof t=="string"?t:String(t);if(r.length===0)return;let n={id:(0,C.v7)(),level:e,message:r.length>qr?r.slice(0,qr):r,ts:Date.now()};this.queue.enqueueTelemetry(n)}catch(r){this.logger.error("Failed to process telemetry before enqueue",r)}}probe(e){try{if(this.isTrackingBlocked()){this.logger.debug("Skipping probe for blocked user agent.");return}if(!e||typeof e!="object"||typeof e.kind!="string"||!On.test(e.kind)){this.logger.debug("Dropping probe with an invalid kind.");return}let t=e.payload;if(!t||typeof t!="object"){this.logger.debug(`Dropping probe "${e.kind}" without an object payload.`);return}let r=typeof e.pageId=="string"&&Kr.test(e.pageId)?e.pageId:this.defaultProbePageId(),n={id:(0,C.v7)(),kind:e.kind,ts:typeof e.ts=="number"&&Number.isFinite(e.ts)?Math.round(e.ts):Date.now(),pageId:r,seq:this.nextProbeSeq(r),payload:t};typeof e.cfg=="string"&&Kr.test(e.cfg)&&(n.cfg=e.cfg);let o=_n(e.ctx);o&&(n.ctx=o),this.queue.enqueueProbe(n)}catch(t){this.logger.error("Failed to process probe before enqueue",t)}}defaultProbePageId(){return this.probePageId??=An()}nextProbeSeq(e){let t=this.probeSeqs.get(e)??0;if(this.probeSeqs.delete(e),this.probeSeqs.set(e,t+1),this.probeSeqs.size>Ln){let r=this.probeSeqs.keys().next().value;r!==void 0&&this.probeSeqs.delete(r)}return t}logInfo(e){this.telemetry("info",e)}logError(e){this.telemetry("error",e)}attachUndeliveredDeviceInfo(e){try{let t=this.deviceInfoManager;if(!t?.hasUndelivered())return;let r=Q(),n=e.find(o=>o.meta?.pageId===r&&!o.deviceInfo);n&&(n.deviceInfo=t.takeUndelivered())}catch(t){this.logger.error("Failed to attach device info to batch",t)}}reportTelemetry(e,t){if(!this.telemetryReporting){this.telemetryReporting=!0;try{if(this.reportedTelemetryKeys.has(t)||this.reportedTelemetryKeys.size>=Fn)return;if(this.reportedTelemetryKeys.add(t),!this.telemetryReady){this.pendingSelfTelemetry.push({level:e,message:t});return}this.telemetry(e,t)}catch{}finally{this.telemetryReporting=!1}}}flushKeepalive(e="manual"){try{this.queue.flushKeepalive(e)}catch(t){this.logger.error("Failed to flush queue keepalive",t)}}isPasswordManagerDomScanEnabled(){return this.fixedData?.pmdExplicit?this.fixedData.pmd:!0}lowEventFlushKeepalive(){this.config.tlf&&this.flushKeepalive("low-event-teardown")}passkeyLoginFullOperation(e){return new ne(this,e)}passkeyEnrollmentFullOperation(e){return new de(this,e)}passkeyDeletionOperationFull(e){return new ue(this,e)}passwordLoginFullOperation(e){return new ce(this,e)}passwordEnrollmentFullOperation(e){return new fe(this,e)}emailLinkOperationFull(e){return new le(this,e)}continueEmailLinkOperation(e){return new pe(this,e)}emailOtpOperationFull(e){return new se(this,e)}smsOtpOperationFull(e){return new ae(this,e)}totpOperationFull(e){return new ye(this,e)}provideIdentifierOperationFull(e){return new he(this,e)}provideDataOperationFull(e){return new Ie(this,e)}formOperationFull(e){return new we(this,e)}socialLoginOperationFull(e){return new ge(this,e)}ssoLoginOperationFull(e){return new me(this,e)}appConfirmationOperationFull(e){return new ve(this,e)}keySigningOperationFull(e){return new z(this,e)}keyRegistrationOperationFull(e){return new j(this,e)}captchaOperationFull(e){return new be(this,e)}trustedDeviceCheckOperationFull(e){return new Te(this,e)}trustedDeviceEnrollmentOperationFull(e){return new Ee(this,e)}async destroy(){if(this.configManager?.destroy(),this.passwordManagerSampler?.destroy(),this.windowObserver?.destroy(),this.deviceInfoManager.destroy(),this.config.td)try{await this.queue.flush("destroy")}catch(e){this.logger.error("Failed to flush queue during destroy",e)}this.queue.destroy()}getSessionId(){if(!this.sessionId){let e=this.resolveSessionId();e&&(this.sessionId=e,this.queue.setSessionId(e))}return this.sessionId||void 0}resetSession(){let e=(0,C.v7)();return this.config.sessionContinuity?(this.persistContinuitySession(e,Date.now()),this.persistentStorage.setItem(H,0)):this.persistPerTabSession(e,Date.now()),this.sessionId=e,this.seq=0,this.queue.setSessionId(e),this.logger.debug(`Session reset: ${e}`),e}},Dn="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_-";function An(){let i=new Uint8Array(16);try{crypto.getRandomValues(i)}catch{for(let t=0;t<i.length;t++)i[t]=Math.floor(Math.random()*256)}let e="";for(let t=0;t<i.length;t++)e+=Dn[i[t]&63];return e}function _n(i){if(!i||typeof i!="object")return;let e={};for(let t of["state","flowType","step"]){let r=i[t];typeof r=="string"&&r.length>0&&(e[t]=r.slice(0,Pn))}return Object.keys(e).length>0?e:void 0}var $r=["none","presence","size","class","format","partial","enum","computed","token","pseudonym","redacted","raw"];var Mn={creationOptions:["/user/name","/user/displayName"],creationResponse:["/clientExtensionResults/prf/results"],requestOptions:[],assertionResponse:["/response/signature","/clientExtensionResults/prf/results"]};function zr(i,e){return Je(i,"creationOptions",e)}function jr(i,e){return Je(i,"creationResponse",e)}function Qr(i){return Je(i,"requestOptions")}function Yr(i,e){return Je(i,"assertionResponse",e)}function Je(i,e,t={}){try{let r=typeof i=="string"?JSON.parse(i):i;if(!Hn(r))return;let n=new Set(Mn[e]),o=new Set,s=(a,l,p=0)=>{if(!n.has(l)){if(e==="creationOptions"&&l==="/user/id"||(e==="creationResponse"||e==="assertionResponse")&&l==="/response/userHandle"){if(a===null)return null;if(!t.userId)return;let d=typeof a=="string"?a:a instanceof ArrayBuffer||ArrayBuffer.isView(a)?Gr(a):void 0;if(d===void 0)return;try{let u=t.userId(d);return typeof u=="string"||u===null?u:void 0}catch{return}}if(a===null||typeof a=="string"||typeof a=="boolean")return a;if(typeof a=="number")return Number.isFinite(a)?a:null;if(typeof a=="object"){if(a instanceof ArrayBuffer||ArrayBuffer.isView(a))return Gr(a);if(p>64||o.has(a))throw new TypeError("Invalid telemetry payload");o.add(a);try{if(Array.isArray(a))return a.map((m,y)=>s(m,`${l}/${y}`,p+1));let d=Object.create(null);for(let m in a){let y=`${l}/${m.replace(/~/g,"~0").replace(/\//g,"~1")}`;if(n.has(y)||m==="toJSON")continue;let c=s(a[m],y,p+1);c!==void 0&&(d[m]=c)}let u=a,h=(m,y)=>{if(d[y]!==void 0||typeof u[m]!="function")return;let c=`${l}/${y}`,w=s(Reflect.apply(u[m],a,[]),c,p+1);w!==void 0&&(d[y]=w)};return l===""&&(e==="creationResponse"||e==="assertionResponse")&&h("getClientExtensionResults","clientExtensionResults"),l==="/response"&&e==="creationResponse"&&(h("getTransports","transports"),h("getAuthenticatorData","authenticatorData"),h("getPublicKey","publicKey"),h("getPublicKeyAlgorithm","publicKeyAlgorithm")),d}finally{o.delete(a)}}}};return JSON.stringify(s(r,""))}catch{return}}function Hn(i){return i!==null&&typeof i=="object"&&!Array.isArray(i)&&!(i instanceof ArrayBuffer)&&!ArrayBuffer.isView(i)}function Gr(i){let e=i instanceof ArrayBuffer?new Uint8Array(i):new Uint8Array(i.buffer,i.byteOffset,i.byteLength),t="";for(let r of e)t+=String.fromCharCode(r);return btoa(t).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/g,"")}var S;function Bn(i){let e=new xe(i);return S=e,e}function Nn(){return S}function Un(){return S?.resetSession()}function qn(){return S?.getSessionId()}function Kn(i){S?.setUser(i)}function Vn(i,e){S?.setFlowTags(i,e)}function Wn(i,e){S?.setExperiment(i,e)}function $n(i){S?.setExperiments(i)}function Gn(i){S?.clearExperiment(i)}function zn(){S?.clearExperiments()}function jn(){return S?.getExperiments()??{}}function Qn(i,e){S?.telemetry(i,e)}function Yn(i){S?.logInfo(i)}function Jn(i){S?.logError(i)}async function Xn(){S&&(await S.destroy(),S=void 0)}0&&(module.exports={AppConfirmationOperationFull,AuthEventName,CEREMONY_LOW_EVENT_TAIL_MS,CONFIG_BOUNDS,CONFIG_CACHE_STORAGE_KEY,CONFIG_REQUEST_HEADER,CONFIG_STORAGE_KEY,CaptchaOperationFull,CookieStorage,CorbadoTracker,DEFAULT_DEVICE_INFO_COLLECTOR_TIMEOUT_MS,DEFAULT_FLUSH_INTERVAL_MS,DEFAULT_MAX_ENTRIES,DEFAULT_MAX_SERIALIZED_LENGTH,DEFAULT_RELIABILITY_CONFIG,DEFAULT_SEQ_LOCK_TIMEOUT_MS,DEFAULT_SESSION_INACTIVITY_MS,EmailLinkContinuationOperation,EmailLinkOperationFull,EmailOtpOperationFull,EventStore,FormOperationFull,KeyRegistrationOperationFull,KeySigningOperationFull,LocalStorage,NamespacedStorage,OUTBOX_LOCK_NAME,OUTBOX_STORAGE_KEY,OperationFull,OperationFullProvideIdentifierWithCUI,PROBE_BATCH_MAX_BYTES,PROBE_BATCH_MAX_ITEMS,PROBE_PAYLOAD_MAX_BYTES,PROBE_QUEUE_MAX_BYTES,PROBE_QUEUE_MAX_ITEMS,PasskeyDeletionOperationFull,PasskeyEnrollmentOperationFull,PasskeyLoginOperationFull,PasswordEnrollmentOperationFull,PasswordLoginOperationFull,ProvideDataOperationFull,RAW_ERROR_BOUNDS,READER_EXPOSURES,RequestQueue,SDK_NAME,SDK_VERSION,SessionStorage,SmsOtpOperationFull,SocialLoginOperationFull,SsoLoginOperationFull,TotpOperationFull,TrustedDeviceCheckOperationFull,TrustedDeviceEnrollmentOperationFull,UNLOAD_BUDGET_BYTES,UNLOAD_PROBE_MAX_BYTES,cacheConfigRecord,clearExperiment,clearExperiments,createLogger,destroy,detectPasswordManagerExtensions,getExperiments,getSessionId,getTracker,init,loadCachedConfig,loadConfigRecord,logError,logInfo,namespacedKey,parseReliabilityConfig,resetSession,resolveFixedDataConfig,resolveRawErrorLimits,resolveReliabilityConfig,sanitizeAssertionResponse,sanitizeCreationOptions,sanitizeCreationResponse,sanitizeRequestOptions,serializeRawError,setExperiment,setExperiments,setFlowTags,setUser,telemetry,utf8Length});
|
|
1
|
+
"use strict";var Xi=Object.create;var Ce=Object.defineProperty;var Zi=Object.getOwnPropertyDescriptor;var er=Object.getOwnPropertyNames;var tr=Object.getPrototypeOf,ir=Object.prototype.hasOwnProperty;var rr=(n,e)=>{for(var t in e)Ce(n,t,{get:e[t],enumerable:!0})},Ct=(n,e,t,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of er(e))!ir.call(n,r)&&r!==t&&Ce(n,r,{get:()=>e[r],enumerable:!(i=Zi(e,r))||i.enumerable});return n};var nr=(n,e,t)=>(t=n!=null?Xi(tr(n)):{},Ct(e||!n||!n.__esModule?Ce(t,"default",{value:n,enumerable:!0}):t,n)),or=n=>Ct(Ce({},"__esModule",{value:!0}),n);var no={};rr(no,{AppConfirmationOperationFull:()=>Se,AuthEventName:()=>Zt,CEREMONY_LOW_EVENT_TAIL_MS:()=>Dt,CONFIG_BOUNDS:()=>S,CONFIG_CACHE_STORAGE_KEY:()=>rt,CONFIG_REQUEST_HEADER:()=>nt,CONFIG_STORAGE_KEY:()=>Le,CaptchaOperationFull:()=>be,CookieStorage:()=>re,CorbadoTracker:()=>ke,DEFAULT_DEVICE_INFO_COLLECTOR_TIMEOUT_MS:()=>Ro,DEFAULT_FLUSH_INTERVAL_MS:()=>Po,DEFAULT_MAX_ENTRIES:()=>ai,DEFAULT_MAX_SERIALIZED_LENGTH:()=>li,DEFAULT_RELIABILITY_CONFIG:()=>v,DEFAULT_SEQ_LOCK_TIMEOUT_MS:()=>Lo,DEFAULT_SESSION_INACTIVITY_MS:()=>ti,EmailLinkContinuationOperation:()=>de,EmailLinkOperationFull:()=>pe,EmailOtpOperationFull:()=>ae,EventStore:()=>H,FormOperationFull:()=>Te,KeyRegistrationOperationFull:()=>z,KeySigningOperationFull:()=>G,LocalStorage:()=>ie,NamespacedStorage:()=>te,OUTBOX_LOCK_NAME:()=>Me,OUTBOX_STORAGE_KEY:()=>si,OperationFull:()=>h,OperationFullProvideIdentifierWithCUI:()=>ge,PROBE_BATCH_MAX_BYTES:()=>pt,PROBE_BATCH_MAX_ITEMS:()=>lt,PROBE_PAYLOAD_MAX_BYTES:()=>ui,PROBE_QUEUE_MAX_BYTES:()=>ci,PROBE_QUEUE_MAX_ITEMS:()=>di,PasskeyDeletionOperationFull:()=>ue,PasskeyEnrollmentOperationFull:()=>ce,PasskeyLoginOperationFull:()=>oe,PasswordEnrollmentOperationFull:()=>he,PasswordLoginOperationFull:()=>fe,ProvideDataOperationFull:()=>xe,RAW_ERROR_BOUNDS:()=>Rt,READER_EXPOSURES:()=>ji,RequestQueue:()=>X,SDK_NAME:()=>je,SDK_VERSION:()=>Ge,SessionStorage:()=>ne,SmsOtpOperationFull:()=>le,SocialLoginOperationFull:()=>me,SsoLoginOperationFull:()=>ye,TotpOperationFull:()=>ve,TrustedDeviceCheckOperationFull:()=>Ee,TrustedDeviceEnrollmentOperationFull:()=>Ie,UNLOAD_BUDGET_BYTES:()=>dt,UNLOAD_PROBE_MAX_BYTES:()=>_e,cacheConfigRecord:()=>at,clearExperiment:()=>Yn,clearExperiments:()=>Xn,createLogger:()=>yt,destroy:()=>ro,detectPasswordManagerExtensions:()=>Et,getExperiments:()=>Zn,getSessionId:()=>jn,getTracker:()=>Wn,init:()=>Vn,loadCachedConfig:()=>st,loadConfigRecord:()=>J,logError:()=>io,logInfo:()=>to,namespacedKey:()=>C,parseReliabilityConfig:()=>_,resetSession:()=>$n,resolveFixedDataConfig:()=>ot,resolveRawErrorLimits:()=>et,resolveReliabilityConfig:()=>Re,sanitizeAssertionResponse:()=>Yi,sanitizeCreationOptions:()=>zi,sanitizeCreationResponse:()=>Qi,sanitizeRequestOptions:()=>Ji,serializeRawError:()=>tt,setExperiment:()=>Qn,setExperiments:()=>Jn,setFlowTags:()=>zn,setUser:()=>Gn,telemetry:()=>eo,utf8Length:()=>Y});module.exports=or(no);var Ot=0;function P(){if(Ot===4294967295)throw new Error("Low-event capture sequence exhausted");return++Ot}function Pt(n,e){if(n==="passkey-login")switch(e){case"passkey-known-identifier":case"passkey-no-identifier":return"passkey-button";case"passkey-known-identifier-auto":case"passkey-no-identifier-auto":case"passkey-immediate":return"automatic"}else if(n==="passkey-enrollment")switch(e){case"manual":return"passkey-button";case"auto":case"conditional":return"automatic"}}var At=require("uuid");function B(n){if(n!=null){if(n instanceof Error)return{name:n.name,message:n.message};if(typeof n=="string")return{message:n};if(typeof n=="object"){let e=n;if(typeof e.message=="string"||typeof e.code=="string")return{name:typeof e.name=="string"?e.name:void 0,message:typeof e.message=="string"?e.message:void 0,code:typeof e.code=="string"?e.code:void 0}}return{message:String(n)}}}var Rt={maxStackFrames:{min:1,max:100,default:50},depth:{min:0,max:10,default:3},maxBreadth:{min:1,max:1e3,default:30},maxValueLength:{min:1,max:1e4,default:1024},maxCauseDepth:{min:0,max:10,default:3},maxBytes:{min:0,max:65536,default:32768}},sr=1024,N=class extends Error{},ar=["name","message","code","errors","stack"],lr=/[^\x20-\x7E]/,U=n=>Object.prototype.toString.call(n).slice(8,-1),pr=n=>n===null?"null":typeof n=="object"?U(n):typeof n,dr=n=>n instanceof Error||U(n)==="Error"||U(n)==="DOMException";function Ft(n){return lr.test(n)?new TextEncoder().encode(n).byteLength:n.length}function q(n,e){let t=Rt[n];return typeof e!="number"||!Number.isFinite(e)?t.default:Math.min(t.max,Math.max(t.min,Math.floor(e)))}function et(n={}){return{stack:n.stack===!0,maxStackFrames:q("maxStackFrames",n.maxStackFrames),depth:q("depth",n.depth),maxBreadth:q("maxBreadth",n.maxBreadth),maxValueLength:q("maxValueLength",n.maxValueLength),maxCauseDepth:q("maxCauseDepth",n.maxCauseDepth),maxBytes:q("maxBytes",n.maxBytes)}}function tt(n,e={}){if(n===void 0)return;let t=et(),i=r=>{let o=JSON.stringify(r);return o===void 0||Ft(o)<=t.maxBytes};try{if(t=et(e),t.maxBytes===0)return;let r=A(pr(n),1024);for(let s=t.depth;s>=0;s--){let a={limits:t,causeBudget:t.maxCauseDepth,seen:new Set,nodes:0,textBytes:0};try{let l={type:r,value:Oe(n,s,a)};if(i(l))return l}catch(l){if(!(l instanceof N))throw l}}let o={type:r,truncated:!0};return i(o)?o:void 0}catch{let r={type:"unserializable"};return i(r)?r:void 0}}function j(n,e){if(n.length>e.limits.maxBytes)throw new N;if(e.textBytes+=Ft(JSON.stringify(n)),e.textBytes>e.limits.maxBytes)throw new N;return n}function Oe(n,e,t){if(++t.nodes>sr)throw new N;let i=cr(n,e,t);return typeof i=="string"?j(i,t):i}function cr(n,e,t){switch(typeof n){case"string":return A(n,t.limits.maxValueLength);case"number":return Number.isFinite(n)?n:String(n);case"boolean":case"undefined":return n;case"bigint":case"symbol":return A(String(n),t.limits.maxValueLength);case"function":return`[Function: ${n.name||"anonymous"}]`}if(n===null)return null;let i=n;if(t.seen.has(i))return"[Circular]";if(e<0)return`[${U(i)}]`;t.seen.add(i);try{return ur(i,e,t)}finally{t.seen.delete(i)}}function A(n,e){return n.length>e?n.slice(0,e)+"\u2026":n}function Lt(n,e,t){let i=n.length>t;n=A(n,t);let r=n.split(`
|
|
2
|
+
`);if(r.length<=e+1)return A(n,t);let o=r.slice(0,e+1).join(`
|
|
3
|
+
`),s=i?"[truncated]":`[+${r.length-e-1} frames]`;return A(`${o}
|
|
4
|
+
${s}`,t)}function ur(n,e,t){let{limits:i}=t,r=U(n),o=c=>Oe(c,e-1,t);if(r==="Date")return Number.isNaN(n.getTime())?"[Invalid Date]":n.toISOString();if(r==="RegExp")return A(String(n),i.maxValueLength);if(r==="ArrayBuffer")return`[ArrayBuffer(${n.byteLength})]`;if(ArrayBuffer.isView(n))return`[${r}(${n.byteLength})]`;if(r==="Map"||r==="Set"){let c=n,f=[];for(let m of c){if(f.length===i.maxBreadth)break;f.push(o(m))}return c.size>f.length&&f.push(`[+${c.size-f.length} more]`),f}if(r==="Promise"||r==="WeakMap"||r==="WeakSet"||r==="Window")return`[${r}]`;if(typeof Node<"u"&&n instanceof Node)return`[${r}]`;if(Array.isArray(n)){let c=n.slice(0,i.maxBreadth).map(o);return n.length>i.maxBreadth&&c.push(`[+${n.length-i.maxBreadth} more]`),c}if(typeof Response<"u"&&n instanceof Response)return{status:o(n.status),statusText:o(n.statusText),url:o(n.url),redirected:o(n.redirected)};if(typeof Event<"u"&&n instanceof Event){let c=n,f={type:o(c.type)};for(let m of["message","filename","lineno","colno"])m in c&&(f[m]=o(c[m]));return"error"in c&&c.error!=null&&(f.error=o(c.error)),f}let s=Object.create(null),a=n,l=dr(n);if(l){for(let f of ar){if(f==="stack"&&!i.stack)continue;let m=a[f];if(!(m==null||typeof m=="function")){if(f==="stack"){i.stack&&typeof m=="string"&&(s.stack=j(Lt(m,i.maxStackFrames,i.maxValueLength),t));continue}s[f]=o(m)}}let c=a.cause;c!=null&&typeof c!="function"&&(s.cause=fr(c,e-1,t))}let p=0,d=Object.keys(a);for(let c of d){if(c in s||c==="stack"&&!i.stack||l&&c==="cause")continue;if(++p>i.maxBreadth){s["\u2026"]=`[+${d.length-i.maxBreadth} keys]`;break}let f=a[c];typeof f!="function"&&(s[j(c,t)]=c==="stack"&&typeof f=="string"?j(Lt(f,i.maxStackFrames,i.maxValueLength),t):o(f))}return!l&&r!=="Object"&&p===0?`[${r}]`:s}function fr(n,e,t){if(typeof n!="object"||n===null)return Oe(n,e,t);if(t.causeBudget<=0)return j(`[${U(n)}]`,t);t.causeBudget--;try{return Oe(n,e,t)}finally{t.causeBudget++}}var Dt=1500,h=class{constructor(e,t){this.tracker=e;this.operationName=t}startReference;captureSpecType;captureSessionId;lowFlushers=[];lowPrefillCapturers=[];lowEventSink(e,t){return{reserveCaptureSeq:P,enqueueLowEvent:i=>this.tracker.enqueueLowEvent({...i,captureSeq:i.captureSeq??P(),subflowStartEventId:this.startReference,sourceKind:e,fieldRole:t,initiator:i.initiator??(t?`input-${t}`:"unknown")},this.captureSessionId),flushKeepalive:()=>this.tracker.lowEventFlushKeepalive(),registerInputs:(i,r)=>this.tracker.getWindowObserver().registerInputs(i,()=>({subflowStartEventId:this.startReference,fieldRole:t,initiator:t?`input-${t}`:"unknown",sessionId:this.captureSessionId}),r),beginCeremony:i=>this.tracker.getWindowObserver().beginCeremony({subflowStartEventId:this.startReference,initiator:i??"unknown",sessionId:this.captureSessionId})}}createLowCollector(e){try{let t=e();return this.lowPrefillCapturers.push(i=>t.capturePrefill(i)),t}catch(t){this.tracker.getLogger().error("Failed to attach low-event collector",t);return}}registerLowFlusher(e){this.lowFlushers.push(e)}captureOptions(e,t=this.startReference,i=this.captureSessionId,r){if(!t&&!r)return e;let o={};return t&&(o.subflowStartEventId=e?.subflowStartEventId??t,o.captureSessionId=e?.captureSessionId??i),r&&(o.initiator=e?.initiator??r),Object.defineProperties({},{...Object.getOwnPropertyDescriptors(e??{}),...Object.getOwnPropertyDescriptors(o)})}get captureReference(){return this.startReference}get captureSession(){return this.captureSessionId}adoptCapture(e,t,i){this.startReference=e,this.captureSessionId=t,this.captureSpecType=i}subflowStart(e,t){try{for(let i of this.lowFlushers)try{i()}catch(r){this.tracker.getLogger().error("Failed to flush previous low-event context",r)}this.captureSpecType=e?.explicitSpecType,this.startReference=(0,At.v7)(),this.captureSessionId=this.tracker.getSessionId(),this.tracker.trackSubflowStarted(this.operationName,e,this.captureOptions(t),this.startReference),this.captureInputPrefills(!0)}catch(i){this.tracker.getLogger().error("Failed to start low-event capture context",i)}}capturePrefill(){this.captureInputPrefills(!1)}captureInputPrefills(e){for(let t of this.lowPrefillCapturers)try{t(e)}catch(i){this.tracker.getLogger().error("Failed to capture input prefill",i)}}trigger(e,t){this.tracker.trackSubflowTrigger(this.operationName,e,this.captureOptions(t))}customStep(e){return this.defineStep(e)}subflowStepStarted(e,t,i,r){this.captureSpecType=t?.explicitSpecType??this.captureSpecType,this.tracker.trackSubflowStepStarted(this.operationName,e,t,this.captureOptions(i),r)}subflowStepFinished(e,t,i){(!i?.subflowStartEventId||i.subflowStartEventId===this.startReference)&&(this.captureSpecType=t?.explicitSpecType??this.captureSpecType),this.tracker.trackSubflowStepFinished(this.operationName,e,t,this.captureOptions(i))}subflowStepError(e,t,i){let r=t;try{let o=this.tracker.getSdkConfig().rawErrors?i?.rawError:void 0;o!==void 0&&(r={...t,rawError:tt(o,i?.rawErrorLimits)})}catch{}this.tracker.trackSubflowStepError(this.operationName,e,r,this.captureOptions(i))}withWindowLowEvents(e,t){let i,r=s=>{s?.subflowStartEventId&&s.subflowStartEventId!==i||t.scheduleDisarm(Dt)},o=e;return{...e,start:(s,a)=>{i=a?.subflowStartEventId??this.startReference;let l=s?.explicitSpecType??this.captureSpecType,p=a?.initiator??Pt(this.operationName,l);t.arm(p,l==="passkey-cui"),o.start(s,p?{...a,initiator:p}:a)},finished:(s,a)=>{o.finished(s,a),r(a)},error:(s,a)=>{o.error(s,a),r(a)},errorTyped:(s,a)=>{o.errorTyped?.(s,a),r(a)}}}defineStep(e,t){let i,r,o,s=l=>this.captureOptions(l,i,r,o);return{start:(l,p)=>{i=this.startReference,r=this.captureSessionId,o=p?.initiator,this.subflowStepStarted(e,l,s(p),t)},finished:(l,p)=>{this.subflowStepFinished(e,l,s(p))},error:(l,p)=>{this.subflowStepError(e,{error:B(l)},s(p))},errorTyped:(l,p)=>{this.subflowStepError(e,l,s(p))}}}};function Mt(n,e){if(e.explicitSpecType!==void 0)try{n.getLogger().warn("Unsupported key operation spec type; omitting it")}catch{}}var G=class extends h{prepare;sign;constructor(e,t={}){super(e,"key-signing"),this.prepare=this.defineStep("prepare"),this.sign=this.defineStep("sign"),this.subflowStart({actor:"system",explicitSpecType:Mt(e,t)})}},z=class extends h{prepare;postResponse;constructor(e,t={}){super(e,"key-registration"),this.prepare=this.defineStep("prepare"),this.postResponse=this.defineStep("post-response"),this.subflowStart({actor:"system",explicitSpecType:Mt(e,t)})}};function hr(n){try{return decodeURIComponent(n.replace(/\+/g," "))}catch{return n}}function gr(n,e){let t=n.toLowerCase();return e.some(i=>{let r=i.toLowerCase();return r.endsWith("*")?t.startsWith(r.slice(0,-1)):t===r})}function _t(n,e,t){return e!=="allowlist"||n===""||n==="?"?n:`?${(n.startsWith("?")?n.slice(1):n).split("&").map(o=>{let s=o.indexOf("=");if(s===-1)return o;let a=o.slice(0,s);return o.slice(s+1)===""||gr(hr(a),t)?o:`${a}=*`}).join("&")}`}function I(n,e,t,i){return i===void 0?window.addEventListener(e,t):window.addEventListener(e,t,i),()=>window.removeEventListener(e,t)}function K(n){return document.visibilityState==="hidden"}function Ht(n){return document.readyState==="complete"}function Bt(n){return window.location.href}function qt(n,e,t){let i=_t(window.location.search,e,t);return`${window.location.pathname}${i}`}function Nt(n){return{hostname:window.location.hostname,https:window.location.protocol==="https:"}}function Ut(n){return typeof navigator>"u"?"":navigator.userAgent??""}async function Kt(n){if(!(typeof navigator>"u"||!navigator.bluetooth))return await navigator.bluetooth.getAvailability()}async function Vt(n){if(!(typeof PublicKeyCredential>"u"||!PublicKeyCredential.isUserVerifyingPlatformAuthenticatorAvailable))return await PublicKeyCredential.isUserVerifyingPlatformAuthenticatorAvailable()}async function Wt(n){if(!(typeof PublicKeyCredential>"u"||!PublicKeyCredential.isConditionalMediationAvailable))return await PublicKeyCredential.isConditionalMediationAvailable()}async function $t(n){if(typeof PublicKeyCredential>"u"||!PublicKeyCredential.getClientCapabilities)return;let e=await PublicKeyCredential.getClientCapabilities();return Object.fromEntries(Object.entries(e).map(([t,i])=>[t,i.toString()]))}async function jt(n){if(typeof navigator>"u"||!navigator.userAgentData)return;let e=await navigator.userAgentData.getHighEntropyValues(["platformVersion","model"]),t=e.platform,i=e.mobile,r=e.platformVersion,o=e.model||void 0;if(!(!t||i===void 0||!r))return{platform:t,mobile:i,platformVersion:r,model:o}}function Gt(n){if(!(typeof navigator>"u"))return navigator.webdriver}function zt(n){if(!(typeof navigator>"u"||typeof navigator.maxTouchPoints!="number"))return navigator.maxTouchPoints}var Xt=require("uuid");var it=(n,e,t)=>{let i=!1,r,o=null,s=null,a=()=>{s!==null&&(clearTimeout(s),s=null);let p=o;i=!1,o=null,p!==null&&n({...r===void 0?{}:{captureSeq:r},lowType:e,ts:p,durationMs:Date.now()-p})};return{extend:()=>{if(!i){let p=t?.();i=!0,o=Date.now(),r=p}s!==null&&clearTimeout(s),s=setTimeout(a,150)},flush:a}};function Qt(n,e,t){let i=[],r=(s,a,l)=>{let p=d=>t(a,()=>l(d));s.addEventListener(a,p),i.push(()=>s.removeEventListener(a,p))};r(window,"blur",()=>e.blur()),r(window,"focus",()=>e.focus()),r(document,"visibilitychange",()=>e.visibilityChange(document.visibilityState==="hidden")),r(document,"focusout",s=>e.focusOut(s.target,!!s.relatedTarget)),r(document,"focusin",s=>e.focusIn(()=>s.composedPath())),r(document,"pointerdown",s=>e.pointerDown(s.target)),window.visualViewport&&(r(window.visualViewport,"resize",()=>e.viewportResize()),r(window.visualViewport,"scroll",()=>e.viewportScroll())),r(window,"pagehide",()=>e.pageHide());let o=window.navigation;return o&&r(o,"currententrychange",s=>{let a=s,l=a.from?.index,p=o.currentEntry?.index;a.navigationType==="traverse"&&typeof l=="number"&&typeof p=="number"&&l>=0&&p>=0&&p<l&&e.navigateBack()}),i}function Jt(n){let e=[];for(let t=document.activeElement;t;t=t.shadowRoot?.activeElement??null)e.push(t);return e}function Yt(n){let e=document.activeElement;return{active:e,idle:e===document.body||!e}}var mr,Q=()=>mr??=(0,Xt.v7)(),Pe=class{constructor(e,t,i){this.logger=e;this.enqueue=t;this.flushKeepalive=i;typeof window>"u"||typeof document>"u"||(this.removers=Qt(0,{blur:()=>{this.flushInputs(),this.bracket=this.context(),this.emit({lowType:"window-blur",ts:Date.now()},this.bracket)},focus:()=>{this.flushInputs(),this.emit({lowType:"window-focus",ts:Date.now()},this.bracket??this.context()),this.bracket=void 0},visibilityChange:r=>{this.flushInputs(),this.emit({lowType:`document-visibilitychange-${r?"hidden":"visible"}`,ts:Date.now()})},focusOut:(r,o)=>{let s=this.findInput(r);this.lastBlur=s&&!o&&Date.now()-this.unrelatedPointerAt>250?{registration:s,ts:Date.now()}:void 0},focusIn:r=>{this.lastBlur=void 0;let o=this.inputFocusListeners.size>0&&r().find(s=>this.findInput(s));o&&this.notifyInputFocus(o)},pointerDown:r=>{this.findInput(r)?this.unrelatedPointerAt=-1/0:(this.lastBlur=void 0,this.unrelatedPointerAt=Date.now())},viewportResize:()=>this.extendViewport("resize"),viewportScroll:()=>this.extendViewport("scroll"),pageHide:()=>{this.flushInputs(),this.resize.flush(),this.scroll.flush(),this.flushKeepalive()},navigateBack:()=>{this.flushInputs(),this.emit({lowType:"window-navigate-back",ts:Date.now()})}},(r,o)=>{try{o()}catch(s){this.logger.error(`Failed to observe window ${r}`,s)}}))}inputs=new Set;inputFocusListeners=new Set;ceremonies=new Set;removers=[];lastBlur;bracket;unrelatedPointerAt=-1/0;destroyed=!1;viewportContext={};resize=it(e=>this.emit(e,this.viewportContext.resize),"visualviewport-resize",P);scroll=it(e=>this.emit(e,this.viewportContext.scroll),"visualviewport-scroll",P);registerInputs(e,t,i){if(this.destroyed)return()=>{};let r={fields:e,context:t,flush:i};if(this.inputs.add(r),this.inputFocusListeners.size>0&&typeof document<"u"){let o=Jt(0),s=e.find(a=>o.includes(a));s&&this.notifyInputFocus(s)}return()=>{this.inputs.delete(r),this.lastBlur?.registration===r&&(this.lastBlur=void 0)}}beginCeremony(e){let t={context:e,settled:!1};this.destroyed||(this.flushInputs(),this.ceremonies.add(t));let i=()=>{t.timer&&clearTimeout(t.timer),this.ceremonies.delete(t),this.bracket===t.context&&(this.bracket=void 0)};return{settle:r=>{t.settled=!0,t.timer&&clearTimeout(t.timer),t.timer=setTimeout(i,r)},destroy:i}}onInputFocus(e){return this.destroyed?()=>{}:(this.inputFocusListeners.add(e),()=>this.inputFocusListeners.delete(e))}notifyInputFocus(e){for(let t of this.inputFocusListeners)try{t(e)}catch(i){this.logger.error("Failed to notify registered input focus",i)}}context(){let e=[...this.ceremonies].filter(o=>!o.settled);if(e.length===1)return e[0].context;if(e.length>1)return;let t=Yt(0),i=this.findInput(t.active);if(i)return i.context();let r=this.lastBlur;if(r&&Date.now()-r.ts<=250&&t.idle)return r.registration.context()}findInput(e){return[...this.inputs].find(t=>t.fields.some(i=>i===e))}flushInputs(){for(let e of this.inputs)try{e.flush()}catch(t){this.logger.error("Failed to flush window input context",t)}}emit(e,t){if(this.destroyed)return;let{sessionId:i,...r}=t??{};this.enqueue({...e,...r,captureSeq:e.captureSeq??P(),sourceKind:"window",captureVersion:1,pageId:Q()},i)}extendViewport(e){let t=this.context(),i=this.viewportContext[e];(i?.subflowStartEventId!==t?.subflowStartEventId||i?.fieldRole!==t?.fieldRole||i?.sessionId!==t?.sessionId)&&this[e].flush(),this.viewportContext[e]=t,this[e].extend()}destroy(){if(!this.destroyed){this.flushInputs(),this.resize.flush(),this.scroll.flush(),this.destroyed=!0;for(let e of this.removers)e();for(let e of this.ceremonies)e.timer&&clearTimeout(e.timer);this.ceremonies.clear(),this.inputs.clear(),this.inputFocusListeners.clear()}}};var Zt=(g=>(g.FlowStarted="flow_started",g.FlowDecided="flow_decided",g.FlowFinished="flow_finished",g.FlowReset="flow_reset",g.AuthMethodDecisionStarted="auth_method_decision_started",g.AuthMethodDecisionFinished="auth_method_decision_finished",g.FlowAutoFinished="flow_auto_finished",g.AuthDecisionStarted="auth_decision_started",g.AuthDecisionFinished="auth_decision_finished",g.SubflowStepStarted="subflow_step_started",g.SubflowStepFinished="subflow_step_finished",g.SubflowStepError="subflow_step_error",g.SubflowTrigger="subflow_trigger",g.SubflowError="subflow_error",g.SubflowStarted="subflow_started",g.SubflowFinished="subflow_finished",g.FlowEnriched="flow_enriched",g.Conversion="conversion",g))(Zt||{});var Le="cbo_sdk_config",rt="cbo_sdk_config_cache",nt="X-Corbado-Observe-Config",Po=500,Lo=50,Ro=1e3,S={flushIntervalMs:{min:100,max:6e4},retryMaxAttempts:{min:1,max:10},retryDelayMs:{min:50,max:12e4},sessionInactivityMs:{min:6e4,max:864e5},seqLockTimeoutMs:{min:0,max:250},deviceInfoCollectorTimeoutMs:{min:10,max:1e4},flushOnFlowTypeFinished:{maxEntries:20,maxNameLength:100},sourcePathQueryAllow:{maxEntries:50,maxKeyLength:64}},ti=1800*1e3,v={version:"",flushIntervalMs:500,durableOutbox:!1,durableLowOutbox:!1,beaconKeepalive:!1,sessionContinuity:!1,sessionInactivityMs:ti,seqLockTimeoutMs:50,tvc:!0,tph:!0,td:!0,tlf:!0,telemetry:!0,flushOnTelemetry:!1,flushOnFlowTypeFinished:[],deviceInfoCollectorTimeoutMs:1e3,deviceInfoTiming:!1,rawErrors:!0,pmd:!0,retry:{maxAttempts:1,baseDelayMs:0,maxDelayMs:0},aap:"",sourcePathQuery:"allowlist",sourcePathQueryAllow:[]};function D(n,e,t){return Math.min(Math.max(n,e),t)}function M(n,e){return typeof n=="number"&&Number.isFinite(n)?n:e}function L(n,e){return typeof n=="boolean"?n:e}function ei(n,e){return typeof n=="string"?n:e}function yr(n){return Array.isArray(n)?n.filter(e=>typeof e=="string"&&e.length>0&&e.length<=S.flushOnFlowTypeFinished.maxNameLength).slice(0,S.flushOnFlowTypeFinished.maxEntries):[]}function vr(n){return typeof n=="string"&&n.trim().toLowerCase()==="all"?"all":"allowlist"}function Sr(n){return Array.isArray(n)?n.filter(e=>typeof e=="string").map(e=>e.trim()).filter(e=>e.length>0&&e.length<=S.sourcePathQueryAllow.maxKeyLength).slice(0,S.sourcePathQueryAllow.maxEntries):[]}function _(n){if(!n||typeof n!="object")return null;let e=n;return typeof e.version!="string"||e.version===""?null:ii(e)}function ii(n){let e=n.retry&&typeof n.retry=="object"?n.retry:{},t=D(M(e.baseDelayMs,v.retry.baseDelayMs),S.retryDelayMs.min,S.retryDelayMs.max);return{version:ei(n.version,""),flushIntervalMs:D(M(n.flushIntervalMs,v.flushIntervalMs),S.flushIntervalMs.min,S.flushIntervalMs.max),durableOutbox:n.durableOutbox===!0,durableLowOutbox:n.durableLowOutbox===!0,beaconKeepalive:n.beaconKeepalive===!0,sessionContinuity:n.sessionContinuity===!0,sessionInactivityMs:D(M(n.sessionInactivityMs,v.sessionInactivityMs),S.sessionInactivityMs.min,S.sessionInactivityMs.max),seqLockTimeoutMs:D(M(n.seqLockTimeoutMs,v.seqLockTimeoutMs),S.seqLockTimeoutMs.min,S.seqLockTimeoutMs.max),tvc:L(n.tvc,v.tvc),tph:L(n.tph,v.tph),td:L(n.td,v.td),tlf:L(n.tlf,v.tlf),telemetry:L(n.telemetry,v.telemetry),flushOnTelemetry:n.flushOnTelemetry===!0,flushOnFlowTypeFinished:yr(n.flushOnFlowTypeFinished),deviceInfoCollectorTimeoutMs:D(M(n.deviceInfoCollectorTimeoutMs,v.deviceInfoCollectorTimeoutMs),S.deviceInfoCollectorTimeoutMs.min,S.deviceInfoCollectorTimeoutMs.max),deviceInfoTiming:n.deviceInfoTiming===!0,rawErrors:L(n.rawErrors,v.rawErrors),pmd:L(n.pmd,v.pmd),aap:ei(n.aap,""),sourcePathQuery:vr(n.sourcePathQuery),sourcePathQueryAllow:Sr(n.sourcePathQueryAllow),retry:{maxAttempts:D(M(e.maxAttempts,v.retry.maxAttempts),S.retryMaxAttempts.min,S.retryMaxAttempts.max),baseDelayMs:t,maxDelayMs:D(M(e.maxDelayMs,v.retry.maxDelayMs),t,S.retryDelayMs.max)}}}function Re(n,e={}){let t=n??v,i=Object.fromEntries(Object.entries(e).filter(([,s])=>s!==void 0)),r=Object.fromEntries(Object.entries(e.retry??{}).filter(([,s])=>s!==void 0)),o=ii({...t,...i,retry:{...t.retry,...r}});return o.retry={...t.retry,...Object.fromEntries(Object.keys(r).map(s=>[s,o.retry[s]]))},o.retry.maxDelayMs=Math.max(o.retry.baseDelayMs,o.retry.maxDelayMs),o}function ot(n){try{if(!n||typeof n!="object")return;let e=n,t=e.crossOriginSession,i=t&&typeof t=="object"&&typeof t.cookieDomain=="string"?t.cookieDomain:void 0;return{pmd:L(e.pmd,!1),privateMode:L(e.privateMode,!0),...i!==void 0&&{crossOriginSession:{cookieDomain:i}}}}catch{return}}function J(n){let e=n.getItem(rt),t=e&&typeof e=="object"?_(e.config):null;return t?{...e,config:t}:null}function st(n){return J(n)?.config??_(n.getItem(Le))}function at(n,e){n.setItem(rt,e)}var br=new Set;function ri(n){br.add(n)}function Fe(n,e,t){return fetch(e,t)}function ni(n){if(typeof navigator?.sendBeacon=="function")return(e,t)=>navigator.sendBeacon(e,t)}var wr=6e4,Tr=6e4,Ae=class{constructor(e){this.options=e;ri(0)}async send(e,t){try{e.meta={...e.meta,sent:Date.now(),transport:"fetch"};let i=JSON.stringify(e),r=typeof AbortController<"u"?new AbortController:void 0,o=r?setTimeout(()=>r.abort(),Tr):void 0;try{let s={method:"POST",headers:{"Content-Type":"application/json",...this.options.headers,...t},body:i,keepalive:new Blob([i]).size<=wr,...r?{signal:r.signal}:{}},a=await Fe(0,this.options.url,s),l={statusCode:a.status,headers:{"retry-after":a.headers.get("Retry-After")}};if(a.headers.get("X-Corbado-Observe-Accepted")==="1"&&(l.deliveryAccepted=!0),a.status===200)try{let p=_(await a.json());p&&(l.config=p)}catch(p){this.options.logger.error("Failed to parse SDK config response",p),this.options.logger.reportTelemetry?.("error","failed to parse SDK config response")}return l}finally{o&&clearTimeout(o)}}catch(i){return this.options.logger.error("Failed to send event",i),{}}}sendBeacon(e){try{this.options.logger.debug(`Sending ${e.events.length} events via beacon`);let t=ni(0);if(!t)return!1;e.meta={...e.meta,sent:Date.now(),transport:"beacon"};let i=new Blob([JSON.stringify(e)],{type:"text/plain"});return t(this.options.url,i)}catch(t){return this.options.logger.error("Failed to send event via beacon",t),!1}}flush(e){return Promise.resolve(!0)}};var pi=require("uuid");function De(n,e,t,i={}){let r=typeof navigator<"u"?navigator.locks:void 0;if(r?.request){let o=i.timeoutMs,s=o!==void 0&&typeof AbortController<"u"?new AbortController:null;if(o!==void 0&&!s)return Promise.resolve().then(t);try{let a=!1,l,p=()=>{l!==void 0&&(clearTimeout(l),l=void 0)},d=()=>(a=!0,p(),t()),c=s?r.request(e,{signal:s.signal},d):r.request(e,d);return s&&o!==void 0&&!a&&(l=setTimeout(()=>{l=void 0,s.abort();try{i.onTimeout?.()}catch{}},o)),c.catch(f=>{if(a)throw f;return t()}).finally(p)}catch{}}try{return Promise.resolve(t())}catch(o){return Promise.reject(o)}}function oi(n){return typeof navigator<"u"&&!!navigator.locks?.request}var si="cbo_outbox",Me="cbo_outbox",ai=500,li=512*1024;function Er(n){if(!n||typeof n!="object")return!1;let e=n;return typeof e.id=="string"&&e.id!==""&&typeof e.sessionId=="string"&&typeof e.flushAfter=="number"&&Number.isFinite(e.flushAfter)&&typeof e.attempts=="number"&&Number.isFinite(e.attempts)&&typeof e.event=="object"&&e.event!==null}var H=class{constructor(e,t,i=ai,r=li,o=Me,s=si){this.storage=e;this.logger=t;this.maxEntries=i;this.maxSerializedLength=r;this.lockName=o;this.storageKey=s;this.entries=this.read()}entries=[];reportedMalformed=!1;read(){let e=this.storage.getItem(this.storageKey);if(!Array.isArray(e))return[];let t=e.filter(Er);return t.length<e.length&&!this.reportedMalformed&&(this.reportedMalformed=!0,this.logger.error(`EventStore dropped ${e.length-t.length} malformed outbox entries`),this.logger.reportTelemetry?.("error","event store dropped malformed outbox entries")),t}mutate(e){return De(0,this.lockName,()=>{try{let t=e(this.read());if(t.length>this.maxEntries){let i=t.length-this.maxEntries;t=t.slice(t.length-this.maxEntries),this.logger.error(`EventStore evicted ${i} oldest entries (cap ${this.maxEntries})`),this.logger.reportTelemetry?.("error","event store evicted entries (cap)")}t=this.enforceSizeBudget(t),this.entries=t,this.storage.setItem(this.storageKey,t)}catch(t){this.logger.error("Failed to mutate event store",t),this.logger.reportTelemetry?.("error","failed to mutate event store")}})}enforceSizeBudget(e){let t=e.map(o=>JSON.stringify(o).length),i=t.reduce((o,s)=>o+s,e.length+1),r=0;for(;i>this.maxSerializedLength&&r<e.length;)i-=t[r]+1,r++;return r===0?e:(this.logger.error(`EventStore evicted ${r} oldest entries (size budget ${this.maxSerializedLength})`),this.logger.reportTelemetry?.("error","event store evicted entries (size budget)"),e.slice(r))}add(e){return this.mutate(t=>t.some(i=>i.id===e.id)?t:[...t,e])}all(){return this.entries=this.read(),this.entries}getDue(e){return this.all().filter(t=>t.flushAfter<=e)}remove(e){if(e.length===0)return Promise.resolve();let t=new Set(e);return this.mutate(i=>i.filter(r=>!t.has(r.id)))}update(e){if(e.length===0)return Promise.resolve();let t=new Map(e.map(i=>[i.id,i]));return this.mutate(i=>i.map(r=>t.get(r.id)??r))}size(){return this.all().length}};var di=500,ci=512*1024,lt=200,pt=200*1024,ui=16*1024,dt=6e4,_e=32e3;function Y(n){let e=0;for(let t=0;t<n.length;t++){let i=n.charCodeAt(t);i<128?e+=1:i<2048?e+=2:i>=55296&&i<=56319&&t+1<n.length?(e+=4,t++):e+=3}return e}var X=class{constructor(e,t,i,r,o={},s){this.logger=e;this.transport=t;this.sessionId=i;this.sdk=r;this.storage=s;if(this.batchSize=o.batchSize||50,this.flushIntervalOverride=o.flushInterval,this.debug=o.debug??!1,this.requestConfig=o.requestConfig??!0,this.onConfigReceived=o.onConfigReceived,this.getDataPolicy=o.getDataPolicy,this.getCrossOriginSession=o.getCrossOriginSession,this.fixedData=o.fixedData===!0,this.beforeEventBatchSend=o.beforeEventBatchSend,this.standaloneDeviceInfo=o.standaloneDeviceInfo,this.config=o.config??v,this.priorityFlowTypes=new Set(this.config.flushOnFlowTypeFinished),this.outboxLockName=o.outboxLockName,this.config.durableOutbox&&this.storage&&(this.store=new H(this.storage,this.logger,void 0,void 0,this.outboxLockName),this.pending=this.store.all()),this.storage){this.lowStore=new H(this.storage,this.logger,1e3,256*1024,`${this.outboxLockName??"cbo_outbox"}:lows`,"cbo_low_outbox_v1");let a=this.lowStore.all();this.lowPending=a.filter(l=>this.validPendingLow(l)),this.lowStore.remove(a.filter(l=>!this.validPendingLow(l)).map(l=>l.id))}this.setupLifecycleHooks(),(this.pending.length>0||this.lowPending.length>0)&&(this.dirtySinceSyncFlush=!0,this.scheduleFlush(0,"recovery"))}pending=[];lowsQueue=[];lowPending=[];lowStore;telemetryQueue=[];probeQueue=[];probeBytes=0;probesDropped=0;timer=null;isFlushing=!1;flushingDone;destroyed=!1;dirtySinceSyncFlush=!1;onVisibilityChange=null;onPageHide=null;removeVisibilityChange=null;removePageHide=null;batchSize;flushIntervalOverride;debug;requestConfig;onConfigReceived;getDataPolicy;getCrossOriginSession;fixedData;beforeEventBatchSend;standaloneDeviceInfo;config;priorityFlowTypes;outboxLockName;store;configResolved=!1;setSessionId(e){this.sessionId=e}flushInterval(){return this.flushIntervalOverride??this.config.flushIntervalMs}enqueue(e,t=this.sessionId){try{let i={id:e.id,sessionId:t,flushAfter:0,attempts:0,event:e};this.pending.push(i),this.store?.add(i),this.scheduleAfterEnqueue(e)}catch(i){this.logger.error("Failed to enqueue event",i)}}enqueueLow(e,t=this.sessionId){try{let i={...e,id:e.id??(0,pi.v7)()};if(this.config.durableLowOutbox){let r={id:i.id,sessionId:t,event:i,attempts:0,flushAfter:0};this.lowPending.push(r),this.lowPending=this.lowPending.slice(-1e3),this.lowStore?.add(r)}else this.lowsQueue.push({sessionId:t,event:i});this.scheduleAfterEnqueue()}catch(i){this.logger.error("Failed to enqueue low event",i)}}notifyDeviceInfo(){try{this.dirtySinceSyncFlush=!0,this.scheduleFlush(this.flushInterval(),"timer")}catch(e){this.logger.error("Failed to schedule device info flush",e)}}enqueueTelemetry(e){try{if(!this.config.telemetry)return;this.telemetryQueue.push(e),this.dirtySinceSyncFlush=!0,this.config.flushOnTelemetry&&this.flush("telemetry")}catch(t){this.logger.error("Failed to enqueue telemetry",t)}}enqueueProbe(e,t=this.sessionId){try{if(this.destroyed)return;let i=JSON.stringify(e.payload);if(typeof i!="string"||Y(i)>ui){this.probesDropped++;return}let r={...e,payload:JSON.parse(i)},o=Y(JSON.stringify(r));for(this.probeQueue.push({sessionId:t,entry:r,bytes:o,attempts:0,flushAfter:0}),this.probeBytes+=o;this.probeQueue.length>di||this.probeBytes>ci&&this.probeQueue.length>1;){let s=this.probeQueue.shift();this.probeBytes-=s.bytes,this.probesDropped++}this.scheduleFlush(this.flushInterval(),"timer")}catch(i){this.logger.error("Failed to enqueue probe",i)}}droppedProbeCount(){return this.probesDropped}dueProbes(e){return this.probeQueue.filter(t=>t.flushAfter<=e)}selectProbes(e,t,i,r){let o=[],s=0;for(let a of e){if(o.length>=i)break;if(a.sessionId===t){if(s+a.bytes>r){o.length===0&&r>=pt&&o.push(a);break}s+=a.bytes,o.push(a)}}return o}removeProbes(e){if(e.length===0)return;let t=new Set(e);this.probeQueue=this.probeQueue.filter(i=>!t.has(i));for(let i of e)this.probeBytes-=i.bytes}dropProbes(e){this.removeProbes(e),this.probesDropped+=e.length}handleProbeSendResult(e,t,i){if(t.length===0)return;let r=e.statusCode;if(typeof r=="number"&&r>=200&&r<300){this.removeProbes(t);return}if(!this.isRetryable(r)){this.dropProbes(t);return}let o=Math.max(1,this.config.retry.maxAttempts),s=this.parseRetryAfter(e),a=[];for(let l of t)l.attempts+=1,l.attempts>=o?a.push(l):l.flushAfter=i+this.backoffForAttempt(l.attempts,s);this.dropProbes(a)}sendUnloadProbes(e,t,i,r){let o=this.sessionId,s={sessionId:o,events:[],sdk:this.sdk,probes:[]};this.attachBatchMeta(s,[],t);let a=Y(JSON.stringify(s))+120,l=e>a?this.selectProbes(this.probeQueue,o,lt,e-a):[];l.length>0&&(s.probes=l.map(p=>p.entry),this.attachBatchMeta(s,l,t),r&&this.config.beaconKeepalive&&this.transport.sendBeacon?this.transport.sendBeacon(s):Promise.resolve(this.transport.send(s)).catch(()=>{}),this.removeProbes(l)),i&&this.dropProbes(this.probeQueue.slice())}scheduleAfterEnqueue(e){if(this.dirtySinceSyncFlush=!0,e!==void 0&&this.isPriorityEvent(e)){this.flush("flow-finished");return}this.scheduleFlush(this.flushInterval(),"timer")}isPriorityEvent(e){if(e.type!=="predefined"||e.name!=="flow_finished"&&e.name!=="flow_auto_finished")return!1;let t=e.data?.flowName;return typeof t=="string"&&this.priorityFlowTypes.has(t)}scheduleFlush(e,t){this.destroyed||this.timer||(this.timer=setTimeout(()=>{this.timer=null,this.flush(t)},e))}clearTimer(){this.timer&&(clearTimeout(this.timer),this.timer=null)}async flush(e="timer"){if(this.destroyed)return;if(this.isFlushing){if(e==="destroy"){await this.flushingDone;try{this.sendUnloadProbes(_e,e,!0,!1)}catch(i){this.logger.error("Unexpected error in queue flush",i)}}return}this.isFlushing=!0;let t;this.flushingDone=new Promise(i=>{t=i});try{for(this.clearTimer();;){let i=Date.now(),r=this.getDuePending(i),o=this.lowPending.filter(g=>g.flushAfter<=i),s=e==="destroy"?[]:this.dueProbes(i),a=r.length===0&&o.length===0&&this.lowsQueue.length===0&&this.telemetryQueue.length===0&&s.length===0;if(a&&!this.hasStandaloneDeviceInfo())break;let l=r[0]?.sessionId??o[0]?.sessionId??this.lowsQueue[0]?.sessionId??s[0]?.sessionId??this.sessionId,p=r.filter(g=>g.sessionId===l).slice(0,this.batchSize),d=o.filter(g=>g.sessionId===l).slice(0,100),c=[...d.map(g=>g.event),...this.takeLows(l,100-d.length)];this.prepareEvents(p,e);let f=l===this.sessionId?this.takeTelemetry():[],m=l===this.sessionId?this.takeStandaloneDeviceInfo():void 0,y=this.selectProbes(s,l,lt,pt),u={sessionId:l,events:p.map(g=>g.event),sdk:this.sdk};if(c.length>0&&(u.lows=c),f.length>0&&(u.telemetry=f),y.length>0&&(u.probes=y.map(g=>g.entry)),m&&(u.deviceInfo=m),a&&!m)break;this.attachBatchMeta(u,[...p,...d,...y],e),d.length&&(u.deliveryAck=!0);let w=this.shouldRequestConfig()?{[nt]:this.config.version||"1"}:void 0,T=await this.transport.send(u,w).catch(g=>(this.logger.error("Unexpected error in queue flush",g),{}));if(u.deliveryAck&&T.statusCode&&T.statusCode>=200&&T.statusCode<300&&!T.deliveryAccepted&&(T={...T,statusCode:503}),this.requestConfig&&this.handleConfigResponse(T),this.handleLowSendResult(T,d,i),this.handleProbeSendResult(T,y,i),!this.handleSendResult(T,p,i))break}e==="destroy"&&this.sendUnloadProbes(_e,e,!0,!1)}catch(i){this.logger.error("Unexpected error in queue flush",i)}finally{this.isFlushing=!1,t(),this.flushingDone=void 0,this.rescheduleIfPending()}}attachBatchMeta(e,t,i){e.meta={...e.meta,flushReason:i};let r=this.readDataPolicy();r!==void 0&&(e.meta={...e.meta,dataPolicy:r}),this.config.version&&(e.meta={...e.meta,configVersion:this.config.version}),this.fixedData&&(e.meta={...e.meta,fixedData:!0});try{let s=this.getCrossOriginSession?.(e.sessionId);s&&(e.meta={...e.meta,crossOriginSession:s})}catch{}let o=t.reduce((s,a)=>Math.max(s,a.attempts),0);o>0&&(e.meta={...e.meta,retryCount:o})}prepareEvents(e,t){if(!(!this.beforeEventBatchSend||e.length===0))try{this.beforeEventBatchSend(e.map(i=>i.event),t)}catch(i){this.logger.error("Failed to prepare events for sending",i)}}readDataPolicy(){try{return this.getDataPolicy?.()}catch(e){this.logger.debug("Failed to read data policy for batch meta",e);return}}getDuePending(e){return this.pending.filter(t=>t.flushAfter<=e)}takeLows(e=this.sessionId,t=100){let i=this.lowsQueue.filter(o=>o.sessionId===e).slice(0,t),r=new Set(i);return this.lowsQueue=this.lowsQueue.filter(o=>!r.has(o)),i.map(o=>o.event)}validPendingLow(e){return typeof e.event?.lowType=="string"&&e.event.id===e.id&&Number.isFinite(e.event.ts)&&e.event.ts>Date.now()-7*864e5}removeLowEntries(e){let t=new Set(e);this.lowPending=this.lowPending.filter(i=>!t.has(i.id)),this.lowStore?.remove(e)}handleLowSendResult(e,t,i){let r=e.statusCode;if(r!==void 0&&r>=200&&r<300){e.deliveryAccepted?this.removeLowEntries(t.map(o=>o.id)):this.deferLowEntries(t,i);return}if(!this.isRetryable(r)){this.removeLowEntries(t.map(o=>o.id)),this.logger.reportTelemetry?.("error","low events rejected by ingestion");return}this.deferLowEntries(t,i,this.parseRetryAfter(e))}deferLowEntries(e,t,i=null){let r=[];for(let o of e){if(!this.validPendingLow(o)){r.push(o.id);continue}o.attempts=Math.min(o.attempts+1,16),o.flushAfter=t+Math.max(Math.min(6e4,1e3*2**Math.min(o.attempts,6)),this.backoffForAttempt(o.attempts,i))}this.removeLowEntries(r),this.lowStore?.update(e.filter(o=>!r.includes(o.id)))}hasStandaloneDeviceInfo(){try{return this.standaloneDeviceInfo?.has()??!1}catch(e){return this.logger.error("Failed to read device info for batch",e),!1}}takeStandaloneDeviceInfo(){try{return this.standaloneDeviceInfo?.take()}catch(e){this.logger.error("Failed to read device info for batch",e);return}}takeTelemetry(){let e=this.telemetryQueue;return this.telemetryQueue=[],e}shouldRequestConfig(){return this.requestConfig&&!this.configResolved}handleConfigResponse(e){let t=e.statusCode;typeof t=="number"&&t>=200&&t<300&&(this.configResolved=!0),e.config&&(this.config.version||this.updateConfig(e.config),this.onConfigReceived?.(e.config))}updateConfig(e){if(this.destroyed)return;let t=this.config.flushIntervalMs!==e.flushIntervalMs;if(this.config={...e,durableOutbox:this.config.durableOutbox||e.durableOutbox},this.priorityFlowTypes=new Set(e.flushOnFlowTypeFinished),e.durableLowOutbox&&this.lowsQueue.length){let r=this.lowsQueue;this.lowsQueue=[];for(let{event:o,sessionId:s}of r)this.enqueueLow(o,s)}let i=!1;if(this.config.durableOutbox&&this.storage&&!this.store){this.store=new H(this.storage,this.logger,void 0,void 0,this.outboxLockName);let r=new Set(this.pending.map(s=>s.id)),o=this.store.all().filter(s=>!r.has(s.id));for(let s of this.pending)this.store.add(s);this.pending=[...o,...this.pending],i=o.length>0}i?(this.dirtySinceSyncFlush=!0,this.clearTimer(),this.scheduleFlush(0,"recovery")):t&&(this.clearTimer(),this.rescheduleIfPending())}handleSendResult(e,t,i){let r=e.statusCode,o=typeof r=="number"&&r>=200&&r<300;if(t.length===0)return o;if(o)return this.removeEntries(t.map(d=>d.id)),!0;if(!this.isRetryable(r))return this.removeEntries(t.map(d=>d.id)),!1;let s=Math.max(1,this.config.retry.maxAttempts),a=this.parseRetryAfter(e),l=[],p=[];for(let d of t)d.attempts+=1,d.attempts>=s?l.push(d.id):(d.flushAfter=i+this.backoffForAttempt(d.attempts,a),p.push(d));return this.removeEntries(l),this.store?.update(p),!1}isRetryable(e){return e===void 0||e===408||e===429?!0:e>=500}backoffForAttempt(e,t){let i=this.config.retry,r=i.baseDelayMs*Math.pow(2,Math.max(0,e-1));i.maxDelayMs>0&&(r=Math.min(r,i.maxDelayMs));let o=Math.round(r/2+Math.random()*(r/2));return t!==null&&(o=Math.max(o,t)),o}parseRetryAfter(e){let t=e.headers?.["retry-after"];if(!t)return null;let i=Number(t);if(!Number.isNaN(i))return i*1e3;let r=Date.parse(t);return Number.isNaN(r)?null:Math.max(0,r-Date.now())}removeEntries(e){if(e.length===0)return;let t=new Set(e);this.pending=this.pending.filter(i=>!t.has(i.id)),this.store?.remove(e)}rescheduleIfPending(){try{if(this.destroyed||this.timer||this.pending.length===0&&this.lowPending.length===0&&this.lowsQueue.length===0&&this.probeQueue.length===0)return;let e=Date.now();if(this.getDuePending(e).length>0||this.lowPending.some(i=>i.flushAfter<=e)||this.lowsQueue.length>0||this.probeQueue.some(i=>i.flushAfter<=e)){this.scheduleFlush(this.flushInterval(),"timer");return}let t=Math.min(...[...this.pending,...this.lowPending,...this.probeQueue].map(i=>i.flushAfter));this.scheduleFlush(Math.max(0,t-e),"backoff")}catch(e){this.logger.error("Failed to reschedule queue flush",e)}}setupLifecycleHooks(){typeof window>"u"||(this.onVisibilityChange=()=>{try{this.writeLifecycleDebugOutput("cbo_visibility_change_debug"),K(0)&&this.config.tvc&&this.flushSync("visibility-change")}catch(e){this.logger.error("Unexpected error in queue flushSync",e)}},this.onPageHide=()=>{try{this.writeLifecycleDebugOutput("cbo_pagehide_debug"),this.config.tph&&this.flushSync("pagehide")}catch(e){this.logger.error("Unexpected error in queue flushSync",e)}},this.removeVisibilityChange=I(0,"visibilitychange",this.onVisibilityChange),this.removePageHide=I(0,"pagehide",this.onPageHide))}writeLifecycleDebugOutput(e){if(!this.debug||!this.storage)return;let t={last_executed:Date.now(),url:Bt(0)};this.storage.setItem(e,t)}flushKeepalive(e="manual"){this.flushSync(e)}flushSync(e){let t=this.flushSyncEvents(e);e==="pagehide"&&this.probeQueue.length>0&&this.sendUnloadProbes(Math.min(dt-t,_e),e,!0,!0)}flushSyncEvents(e){if(!this.dirtySinceSyncFlush)return 0;let t=this.sessionId,i=this.pending.filter(d=>d.sessionId===t),r=i.slice(0,this.batchSize),o=this.lowPending.filter(d=>d.sessionId===t).slice(0,100),s=[...o.map(d=>d.event),...this.takeLows(t,100-o.length)];this.prepareEvents(r,e);let a=this.takeTelemetry(),l=this.takeStandaloneDeviceInfo();if(r.length===0&&s.length===0&&a.length===0&&!l)return this.dirtySinceSyncFlush=!1,0;let p={sessionId:t,events:r.map(d=>d.event),sdk:this.sdk};return s.length>0&&(p.lows=s),a.length>0&&(p.telemetry=a),l&&(p.deviceInfo=l),this.attachBatchMeta(p,[...r,...o],e),o.length&&(p.deliveryAck=!0),this.config.beaconKeepalive&&this.transport.sendBeacon?this.transport.sendBeacon(p)||this.transport.send(p):this.transport.send(p),this.config.durableOutbox||this.removeEntries(r.map(d=>d.id)),this.dirtySinceSyncFlush=!this.config.durableOutbox&&i.length>r.length,this.approximateSize(p)}approximateSize(e){try{return Y(JSON.stringify(e))}catch{return dt}}destroy(){try{this.destroyed=!0,this.clearTimer(),this.dropProbes(this.probeQueue.slice()),typeof window<"u"&&(this.removeVisibilityChange&&this.removeVisibilityChange(),this.removePageHide&&this.removePageHide())}catch(e){this.logger.error("Failed to destroy queue lifecycle hooks",e)}}};var ft=require("uuid");var fi=nr(require("detectincognitojs"));async function hi(n){return(await(0,fi.default)()).isPrivate}var Ir=300,Z=6e3,gi="cbo_pm",xr=10080*60*1e3,mi="detectincognitojs@1.9.0",yi={timing:!1},ct="cbo_tab_id",vi={bluetoothAvailable:"bt",clientCapabilities:"cc",userVerifyingPlatformAuthenticatorAvailable:"uvpaa",conditionalMediationAvailable:"cm",javaScriptHighEntropy:"he",privateMode:"pm",webdriver:"wd",maxTouchPoints:"mtp"};function R(){return typeof performance<"u"&&typeof performance.now=="function"?performance.now():Date.now()}function Si(n,e,t){return{field:n,source:e,error:{name:"TimeoutError",message:`Device info collection timed out after ${t}ms`}}}async function ut(n,e){let t;try{return await Promise.race([n.then(()=>!0,()=>!0),new Promise(i=>{t=setTimeout(()=>i(!1),Math.max(0,e))})])}finally{t&&clearTimeout(t)}}var He=class{constructor(e,t,i="localstorage",r,o=()=>yi,s,a=!0){this.logger=e;this.storage=t;this.storageSource=i;this.sessionStorage=r;this.settings=o;this.emitTelemetry=s;this.privateModeEnabled=a}pagePrivateMode;privateModeDetectionStarted=!1;lastKnown={};async collect(e,t={}){try{let i=this.resolveSettings(),r=R(),o=this.getClientEnvHandle(),s={type:"web",clientEnvHandle:o.value,clientEnvHandleMeta:{timestamp:o.timestamp,source:o.source},tabId:this.getTabId()},a=typeof __CBO_DATA_PRIVATE_MODE__=="boolean"?__CBO_DATA_PRIVATE_MODE__:this.privateModeEnabled,l=a?this.knownPrivateMode(i.timing):void 0,p,d=a&&l===void 0&&!this.privateModeDetectionStarted?this.detectPrivateMode(i.timing).then(x=>{p=x}):void 0,c=this.startFastFields();await ut(Promise.all(c.map(x=>x.promise)),Ir);let f=R()-r,m=t.refresh?this.lastKnown:{};i.timing&&this.reportFastTiming(f,c);let y=()=>p?.error?[p.error]:[];this.safePublish(e,this.buildInfo(s,c,p?p.value:l,m,y()),"fast");let u=c.filter(x=>!x.settled),w=d!==void 0&&p===void 0;if(u.length===0&&!w)return;let T=R();await Promise.all([ut(Promise.all(u.map(x=>x.promise)),Z-(T-r)),d]);let g=u.filter(x=>!x.settled).map(x=>Si(x.field,x.source,Z));g.push(...y()),i.timing&&u.length>0&&this.reportLateTiming(R()-r,u),this.safePublish(e,this.buildInfo(s,c,p?p.value:l,m,g),"update")}catch(i){this.logger.error("Failed to collect device info",i)}}async getInfo(){let e;return await this.collect(t=>{e=t}),e??{}}startFastFields(){return[this.startField("bluetoothAvailable","navigator.bluetooth.getAvailability",()=>Kt(0)),this.startField("clientCapabilities","PublicKeyCredential.getClientCapabilities",()=>$t(0)),this.startField("userVerifyingPlatformAuthenticatorAvailable","PublicKeyCredential.isUserVerifyingPlatformAuthenticatorAvailable",()=>Vt(0)),this.startField("conditionalMediationAvailable","PublicKeyCredential.isConditionalMediationAvailable",()=>Wt(0)),this.startField("javaScriptHighEntropy","navigator.userAgentData.getHighEntropyValues",()=>jt(0)),this.startField("webdriver","navigator.webdriver",()=>Gt(0)),this.startField("maxTouchPoints","navigator.maxTouchPoints",()=>zt(0))]}startField(e,t,i){let r=R(),o={field:e,source:t};return o.promise=Promise.resolve().then(i).then(s=>({field:e,value:s,durationMs:R()-r}),s=>(this.logger.error(`Failed to collect device info field "${e}"`,s),{field:e,durationMs:R()-r,error:{field:e,source:t,error:B(s)??{message:"Unknown error"}}})).then(s=>(o.settled=s,s)),o}buildInfo(e,t,i,r,o){let s={},a=[];for(let p of t)p.settled?(p.settled.error&&a.push(p.settled.error),s[p.field]=p.settled.value,this.remember(p.field,p.settled.value)):s[p.field]=r[p.field];s.privateMode=i,a.push(...o);let l={...e,data:{bluetoothAvailable:s.bluetoothAvailable,javaScriptHighEntropy:s.javaScriptHighEntropy,privateMode:s.privateMode,webdriver:s.webdriver,conditionalMediationAvailable:s.conditionalMediationAvailable,userVerifyingPlatformAuthenticatorAvailable:s.userVerifyingPlatformAuthenticatorAvailable,clientCapabilities:s.clientCapabilities,maxTouchPoints:s.maxTouchPoints}};return a.length>0&&(l.collectionErrors=a),l}remember(e,t){t!==void 0&&(this.lastKnown[e]=t)}safePublish(e,t,i){try{e(t,i)}catch(r){this.logger.error("Failed to publish device info",r)}}knownPrivateMode(e){if(this.pagePrivateMode!==void 0)return this.pagePrivateMode;let t=this.readPrivateModeCache();return t&&(this.pagePrivateMode=t.value,e&&this.reportTelemetry(`device info privateMode from cache, age ${Math.round((Date.now()-t.ts)/1e3)}s`)),this.pagePrivateMode}canCachePrivateMode(){return this.storageSource==="localstorage"}readPrivateModeCache(){if(this.canCachePrivateMode())try{let e=this.storage.getItem(gi);if(!e||typeof e!="object"||typeof e.value!="boolean"||typeof e.ts!="number"||e.dv!==mi)return;let t=Date.now()-e.ts;return t<0||t>=xr?void 0:e}catch(e){this.logger.debug("Failed to read cached privateMode",e);return}}writePrivateModeCache(e){if(this.canCachePrivateMode())try{this.storage.setItem(gi,{value:e,ts:Date.now(),dv:mi})}catch(t){this.logger.error("Failed to cache privateMode",t)}}async detectPrivateMode(e){this.privateModeDetectionStarted=!0;let t="detectIncognito",i=R(),r=this.startField("privateMode",t,()=>typeof __CBO_DATA_PRIVATE_MODE__=="boolean"&&!__CBO_DATA_PRIVATE_MODE__?void 0:hi(0));if(!await ut(r.promise,Z)||!r.settled)return e&&this.reportTelemetry(`device info privateMode timed out after ${Z}ms`),{error:Si("privateMode",t,Z)};if(e&&this.reportTelemetry(`device info privateMode detected in ${Math.round(R()-i)}ms`),r.settled.error)return{error:r.settled.error};let s=r.settled.value;return typeof s!="boolean"?{value:void 0}:(this.pagePrivateMode=s,this.writePrivateModeCache(s),{value:s})}resolveSettings(){try{return{timing:this.settings()?.timing===!0}}catch(e){return this.logger.error("Failed to resolve device info collector settings",e),yi}}reportFastTiming(e,t){let i=t.map(r=>`${vi[r.field]}=${Math.round(r.settled?.durationMs??e)}`).join(",");this.reportTelemetry(`device info collected in ${Math.round(e)}ms (${i})`)}reportLateTiming(e,t){let i=t.map(r=>`${vi[r.field]}=${r.settled?Math.round(r.settled.durationMs):"timeout"}`).join(",");this.reportTelemetry(`device info late fields done in ${Math.round(e)}ms (${i})`)}reportTelemetry(e){if(this.emitTelemetry)try{this.emitTelemetry("info",e)}catch(t){this.logger.error("Failed to report device info timing",t)}}getClientEnvHandle(){let e=this.storage.getItem("cbo_client_env_handle");if(e)return e;let t=(0,ft.v7)(),i={timestamp:Date.now(),source:this.storageSource,value:t};return this.storage.setItem("cbo_client_env_handle",i),i}getTabId(){if(!this.sessionStorage)return;let e=this.sessionStorage.getItem(ct);if(e)return e;let t=(0,ft.v7)();if(this.sessionStorage.setItem(ct,t),this.sessionStorage.getItem(ct)===t)return t}};function kr(){return typeof document<"u"&&K(0)}var Be=class{constructor(e,t,i,r,o,s){this.logger=e;this.source=t;this.refreshInterval=i;this.attachInterval=r;this.diagnostics=o;this.onUndelivered=s}snapshot;snapshotPhase;publishedAt=0;version=0;deliveredVersion=0;refreshedAt=0;lastAttachedAt=null;eventsSeen=!1;refreshPromise;timer;destroyed=!1;start(){this.refresh()}getForEvent(){if(this.eventsSeen=!0,Date.now()-this.refreshedAt>=this.refreshInterval&&this.refresh(),!!this.snapshot){if(this.version!==this.deliveredVersion)return this.markDelivered("event");if(!(this.lastAttachedAt!==null&&Date.now()-this.lastAttachedAt<this.attachInterval))return this.lastAttachedAt=Date.now(),this.snapshot}}hasUndelivered(){return this.snapshot!==void 0&&this.version!==this.deliveredVersion}takeUndelivered(){if(this.hasUndelivered())return this.markDelivered("flush")}hasStandalone(){return this.eventsSeen&&this.hasUndelivered()}takeStandalone(){if(this.hasStandalone())return this.markDelivered("request")}destroy(){this.destroyed=!0,this.timer&&(clearTimeout(this.timer),this.timer=void 0)}markDelivered(e){return this.deliveredVersion=this.version,this.lastAttachedAt=Date.now(),this.snapshotPhase==="update"&&this.report(`device info update delivered via ${e} after ${Math.max(0,Date.now()-this.publishedAt)}ms`),this.snapshot}publish(e,t){if(t==="fast"&&(this.refreshedAt=Date.now()),!(this.snapshot&&JSON.stringify(this.snapshot)===JSON.stringify(e))&&(this.snapshot=e,this.snapshotPhase=t,this.publishedAt=Date.now(),this.version++,this.eventsSeen&&this.onUndelivered))try{this.onUndelivered()}catch(i){this.logger.error("Failed to announce undelivered device info",i)}}report(e){if(this.diagnostics)try{this.diagnostics.timing()&&this.diagnostics.emit("info",e)}catch(t){this.logger.error("Failed to report device info delivery",t)}}scheduleRefresh(){this.timer&&clearTimeout(this.timer),this.timer=setTimeout(()=>{this.refresh()},this.refreshInterval)}refresh(){if(this.refreshPromise)return this.refreshPromise;if(this.timer&&(clearTimeout(this.timer),this.timer=void 0),this.snapshot&&kr())return this.destroyed||this.scheduleRefresh(),Promise.resolve();let e=this.snapshot!==void 0;return this.refreshPromise=Promise.resolve().then(()=>this.source.collect((t,i)=>this.publish(t,i),{refresh:e})).catch(t=>this.logger.error("Failed to refresh device info",t)).finally(()=>{this.refreshPromise=void 0,this.destroyed||this.scheduleRefresh()}),this.refreshPromise}};function bi(n){return{getItem:e=>localStorage.getItem(e),setItem:(e,t)=>localStorage.setItem(e,t),removeItem:e=>localStorage.removeItem(e)}}function wi(n){return{getItem:e=>sessionStorage.getItem(e),setItem:(e,t)=>sessionStorage.setItem(e,t),removeItem:e=>sessionStorage.removeItem(e)}}function ee(n){return{read:()=>document.cookie,write:e=>{document.cookie=e}}}function C(n,e){return`${n}_${e}`}var te=class{constructor(e,t){this.engine=e;this.namespace=t}getItem(e){return this.engine.getItem(C(e,this.namespace))}setItem(e,t){this.engine.setItem(C(e,this.namespace),t)}removeItem(e){this.engine.removeItem(C(e,this.namespace))}},ie=class{constructor(e){this.logger=e}area=bi(0);getItem(e){try{if(typeof localStorage>"u")return null;let t=this.area.getItem(e);return t?JSON.parse(t):null}catch(t){return this.logger.error(`LocalStorage.getItem failed for key "${e}"`,t),null}}setItem(e,t){try{if(typeof localStorage>"u")return;this.area.setItem(e,JSON.stringify(t))}catch(i){this.logger.error(`LocalStorage.setItem failed for key "${e}"`,i),this.logger.reportTelemetry?.("error",`localStorage.setItem failed: ${e}`)}}removeItem(e){try{if(typeof localStorage>"u")return;this.area.removeItem(e)}catch(t){this.logger.error(`LocalStorage.removeItem failed for key "${e}"`,t)}}},re=class{constructor(e,t){this.logger=e;this.domain=t}jar=ee(0);getItem(e){try{if(typeof document>"u")return null;let t=e+"=",i=this.jar.read().split(";");for(let r=0;r<i.length;r++){let o=i[r].trim();if(o.indexOf(t)===0){let s=o.substring(t.length);return JSON.parse(decodeURIComponent(s))}}return null}catch(t){return this.logger.error(`CookieStorage.getItem failed for key "${e}"`,t),null}}setItem(e,t){try{if(typeof document>"u")return;let i=`${e}=${encodeURIComponent(JSON.stringify(t))}; path=/; SameSite=Lax`;this.domain&&(i+=`; domain=${this.domain}`),this.jar.write(i)}catch(i){this.logger.error(`CookieStorage.setItem failed for key "${e}"`,i),this.logger.reportTelemetry?.("error",`cookie.setItem failed: ${e}`)}}removeItem(e){try{if(typeof document>"u")return;let t=`${e}=; Max-Age=-99999999; path=/`;this.domain&&(t+=`; domain=${this.domain}`),this.jar.write(t)}catch(t){this.logger.error(`CookieStorage.removeItem failed for key "${e}"`,t)}}},ne=class{constructor(e){this.logger=e}area=wi(0);getItem(e){try{if(typeof sessionStorage>"u")return null;let t=this.area.getItem(e);return t?JSON.parse(t):null}catch(t){return this.logger.error(`SessionStorage.getItem failed for key "${e}"`,t),null}}setItem(e,t){try{if(typeof sessionStorage>"u")return;this.area.setItem(e,JSON.stringify(t))}catch(i){this.logger.error(`SessionStorage.setItem failed for key "${e}"`,i),this.logger.reportTelemetry?.("error",`sessionStorage.setItem failed: ${e}`)}}removeItem(e){try{if(typeof sessionStorage>"u")return;this.area.removeItem(e)}catch(t){this.logger.error(`SessionStorage.removeItem failed for key "${e}"`,t)}}};var qe=1,Ne="cbo_storage_schema",Cr=["cbo_seq","cbo_sdk_config","cbo_experiments","cbo_client_env_handle","cbo_outbox","cbo_visibility_change_debug","cbo_pagehide_debug","cbo_session"],Or=["cbo_session_id","cbo_tab_id"],Pr=["cbo_client_env_handle"];function Ue(n,e,t){return n.setItem(e,t),JSON.stringify(n.getItem(e))===JSON.stringify(t)}function ht(n,e,t){let i=n.getItem(Ne);if(i!==null){if(i.version!==qe||i.projectId!==e)return!1;if(i.complete===!0)return!0;if(i.complete!==!1)return!1}else{if(t.some(r=>n.getItem(C(r,e))!==null))return Ue(n,Ne,{version:qe,projectId:e,complete:!0});if(!Ue(n,Ne,{version:qe,projectId:e,complete:!1}))return!1}for(let r of t){let o=C(r,e);if(n.getItem(o)!==null)continue;let s=n.getItem(r);if(s!==null&&!Ue(n,o,s))return!1}return Ue(n,Ne,{version:qe,projectId:e,complete:!0})}function Ti(n,e,t,i,r){try{if(!ht(e,n,Cr))return;ht(t,n,Or),i&&ht(i,n,Pr)}catch(o){r.error("Failed to migrate legacy Observe storage",o)}}var Lr=10*1e3,Rr=60*1e3,Fr=3600*1e3,Ar=300*1e3,Ei=1440*60*1e3,Dr=[1e3,3e3];function Mr(n){let e=/(?:^|[\s,])max-age\s*=\s*"?(\d+)"?/i.exec(n?.get("Cache-Control")??"");if(!e)return Fr;let t=Number(n?.get("Age")??0),i=(Number(e[1])-(Number.isFinite(t)&&t>0?t:0))*1e3;return Math.min(Math.max(i,Ar),Ei)}var Ke=class{constructor(e,t,i){this.url=e;this.storage=t;this.logger=i;this.initialConfig=st(t)??void 0,this.appliedVersion=this.initialConfig?.version}initialConfig;requestTimer;retryTimer;controller;removers=[];fetching=!1;stopped=!1;lastAttemptAt;appliedVersion;onConfig;start(e){this.stopped||this.onConfig||(this.onConfig=e,this.listen(),this.refresh())}listen(){if(typeof window>"u")return;let e=()=>{typeof document>"u"||K(0)||this.refresh()};this.removers.push(I(0,"visibilitychange",e),I(0,"pageshow",t=>{t.persisted&&this.refresh()}))}refresh(){try{if(this.stopped||this.fetching)return;let e=Date.now(),t=J(this.storage),{fetchedAt:i,expiresAt:r}=t??{};if(t?.endpoint===this.url&&typeof i=="number"&&typeof r=="number"&&i>0&&r-i<=Ei&&i<=e&&e<r){t.config.version!==this.appliedVersion&&(this.appliedVersion=t.config.version,this.onConfig?.(t.config));return}let o=this.lastAttemptAt===void 0?1/0:e-this.lastAttemptAt;if(o>=0&&o<Rr)return;this.lastAttemptAt=e,clearTimeout(this.retryTimer),this.fetchConfig()}catch(e){this.logger.error("Unexpected error in SDK config refresh",e)}}async fetchConfig(e=0){if(this.stopped||this.fetching)return;this.fetching=!0;let t=typeof AbortController<"u"?new AbortController:void 0;this.controller=t,this.requestTimer=t?setTimeout(()=>t.abort(),Lr):void 0;let i=!0;try{let r=await Fe(0,this.url,{method:"GET",cache:"no-cache",...t?{signal:t.signal}:{}});if(!r.ok)throw i=(r.status===408||r.status===429||r.status>=500)&&!r.headers.has("Retry-After"),new Error(`SDK config request failed (${r.status})`);let o=await r.json();i=!1;let s=_(o);if(!s)throw new Error("Invalid SDK config response");if(this.stopped||t?.signal.aborted)return;let a=Date.now();at(this.storage,{endpoint:this.url,fetchedAt:a,expiresAt:a+Mr(r.headers),config:s}),J(this.storage)&&this.storage.removeItem(Le),this.appliedVersion=s.version,this.onConfig?.(s)}catch(r){if(!this.stopped){this.logger.error("Failed to fetch SDK config",r);let o=Dr[e];(i&&!(r instanceof SyntaxError)||t?.signal.aborted)&&o!==void 0&&(this.retryTimer=setTimeout(()=>{this.fetchConfig(e+1)},o))}}finally{clearTimeout(this.requestTimer),this.requestTimer=void 0,this.controller=void 0,this.fetching=!1}}destroy(){this.stopped=!0,this.removers.splice(0).forEach(e=>e()),clearTimeout(this.requestTimer),clearTimeout(this.retryTimer),this.controller?.abort(),this.onConfig=void 0}};var O=require("uuid");var V=class{constructor(e,t){this.logger=e;this.sink=t}lease;destroyed=!1;arm(e,t=!1){if(this.disarm(),!(this.destroyed||t))try{this.lease=this.sink.beginCeremony?.(e)}catch(i){this.logger.error("Failed to register ceremony low-event context",i)}}scheduleDisarm(e){try{this.lease?.settle(e)}catch(t){this.logger.error("Failed to settle ceremony low-event context",t)}}disarm(){try{this.lease?.destroy()}catch(e){this.logger.error("Failed to release ceremony low-event context",e)}this.lease=void 0}destroy(){this.disarm(),this.destroyed=!0}};var oe=class extends h{getOptions;ceremony;postResponse;lowEventTracker;constructor(e,t){super(e,"passkey-login"),this.lowEventTracker=new V(e.getLogger(),this.lowEventSink("ceremony")),this.registerLowFlusher(()=>this.lowEventTracker.disarm()),this.getOptions=this.defineStep("get-options"),this.ceremony=this.withWindowLowEvents(this.defineStep("ceremony"),this.lowEventTracker),this.postResponse=this.defineStep("post-response"),this.subflowStart({explicitSpecType:t?.explicitSpecType})}trigger(e,t){super.trigger(e,t)}destroy(){this.lowEventTracker.destroy()}};var W=class{constructor(e,t,i,r){this.previousLength=e;this.pushLow=t;this.logger=i;this.reserveCaptureSeq=r}prefillSettled=!1;inputBatch=null;currentEffect="modify";ringEffect="modify";autofillTimestamps=[];autofillStreak=null;idleTimer=null;runSeq;markInputObserved(){this.prefillSettled=!0}observe(){this.runSeq!==void 0||this.inputBatch||this.autofillTimestamps.length>0||this.autofillStreak||(this.runSeq=this.reserveCaptureSeq?.())}takeSeq(){let e=this.runSeq;return this.runSeq=void 0,e??this.reserveCaptureSeq?.()}capturePrefill(e,t=!1){t&&(this.prefillSettled=!1),!this.prefillSettled&&(this.previousLength=e,e!==0&&(this.prefillSettled=!0,this.pushLow({lowType:"input-prefill",ts:Date.now(),initiator:"unknown"})))}flush(){this.cancelIdle(),this.flushInputBatch(),this.flushAutofillStreak()}cancelIdle(){this.idleTimer!==null&&clearTimeout(this.idleTimer),this.idleTimer=null}scheduleIdle(){this.cancelIdle(),this.idleTimer=setTimeout(()=>{this.idleTimer=null;try{this.flushInputBatch(!0),this.flushAutofillStreak()}catch(e){this.logger.error("Failed to flush idle input",e)}},3e3)}extendInputBatch(e,t=this.currentEffect){let i=this.inputBatch;if(!i){this.inputBatch={firstTimestamp:e,lastTimestamp:e,effect:t,captureSeq:this.takeSeq()};return}i.lastTimestamp=e}drainAutofillRingToBatch(){for(let e of this.autofillTimestamps)this.extendInputBatch(e,this.ringEffect);this.autofillTimestamps.length=0}flushInputBatch(e=!1){this.drainAutofillRingToBatch();let t=this.inputBatch;t&&(this.pushLow({...t.captureSeq===void 0?{}:{captureSeq:t.captureSeq},lowType:e?"input-idle":"input",ts:t.firstTimestamp,durationMs:t.lastTimestamp-t.firstTimestamp,inputEffect:t.effect}),this.inputBatch=null)}flushAutofillStreak(){let e=this.autofillStreak;e&&(this.pushLow({...e.captureSeq===void 0?{}:{captureSeq:e.captureSeq},lowType:"big-input-add",ts:e.firstTimestamp,durationMs:e.lastTimestamp-e.firstTimestamp,inputEffect:e.effect}),this.autofillStreak=null)}detectAutofillStreak(){let e=this.autofillTimestamps;if(e.length<5)return!1;let t=1/0,i=-1/0;for(let r=1;r<e.length;r++){let o=e[r]-e[r-1];if(o>80)return!1;o<t&&(t=o),o>i&&(i=o)}return i-t<=25}record(e,t=Date.now(),i=!1){this.observe(),this.markInputObserved(),this.scheduleIdle();let r=this.previousLength;this.currentEffect=e===0?"clear":r===0?"fill":"modify";let o=e-r;if(this.previousLength=e,e===0&&r>0){this.flush();let d=this.takeSeq();this.pushLow({...d===void 0?{}:{captureSeq:d},lowType:"input-clear",ts:t,inputEffect:"clear"});return}if(i){this.flushAutofillStreak(),this.drainAutofillRingToBatch(),this.extendInputBatch(t,this.currentEffect);return}if(o>=3){this.flushInputBatch(),this.flushAutofillStreak();let d=this.takeSeq();this.pushLow({...d===void 0?{}:{captureSeq:d},lowType:"big-input-add",ts:t,inputEffect:this.currentEffect});return}if(o<=-3){this.flushInputBatch(),this.flushAutofillStreak();let d=this.takeSeq();this.pushLow({...d===void 0?{}:{captureSeq:d},lowType:"big-input-rem",ts:t,inputEffect:this.currentEffect});return}let s=this.autofillStreak;if(s){if(o===1&&t-s.lastTimestamp<=80){s.lastTimestamp=t;return}this.flushAutofillStreak()}if(o!==1){this.drainAutofillRingToBatch(),this.extendInputBatch(t,this.currentEffect);return}let a=this.autofillTimestamps;if(a.length===0&&(this.ringEffect=this.currentEffect),a.push(t),a.length>5){let d=a.shift();this.extendInputBatch(d,this.ringEffect),this.ringEffect="modify"}if(!this.detectAutofillStreak())return;let l=a[0],p=a[a.length-1];a.length=0,this.flushInputBatch(),this.autofillStreak={firstTimestamp:l,captureSeq:this.takeSeq(),lastTimestamp:p,effect:this.ringEffect}}};var $=class{constructor(e,t,i,r,o){this.inputs=t;this.logger=i;this.changed=r;this.reserveCaptureSeq=o;for(let s of t)s.addEventListener("paste",this.onPaste,!0),s.addEventListener("beforeinput",this.onBeforeInput,!0)}before=null;timestamp=0;captureSeq;pasteEvent;timer=null;onPaste=e=>this.begin(e);onBeforeInput=e=>{e.inputType==="insertFromPaste"?this.begin(e):this.flush()};handlesInput(e){if(!this.before)return!1;let t=this.pasteEvent?.type==="paste"&&(this.pasteEvent.eventPhase??0)>0;return e.inputType==="insertFromPaste"||t?!0:(this.clear(),!1)}get pending(){return this.before!==null}begin(e){if(!(!e.isTrusted||this.before))try{this.before=this.inputs.map(t=>t.value),this.pasteEvent=e,this.timestamp=Date.now(),this.captureSeq=this.reserveCaptureSeq?.(),this.timer=setTimeout(()=>this.flush(),0)}catch(t){this.logger.error("Failed to observe paste",t),this.clear()}}flush(){let e=this.before;if(!e)return;let t=this.timestamp,i=this.captureSeq;this.clear();try{let r=0,o=!1;this.inputs.forEach((s,a)=>{let l=e[a],p=s.value;if(l===p)return;o=!0;let d=0;for(;d<l.length&&d<p.length&&l[d]===p[d];)d++;let c=0;for(;c<l.length-d&&c<p.length-d&&l[l.length-c-1]===p[p.length-c-1];)c++;r+=p.length-d-c}),o&&this.changed(t,r,i)}catch(r){this.logger.error("Failed to finish paste observation",r)}}clear(){this.timer!==null&&clearTimeout(this.timer),this.timer=null,this.before=null,this.pasteEvent=void 0}destroy(){this.flush();for(let e of this.inputs)e.removeEventListener("paste",this.onPaste,!0),e.removeEventListener("beforeinput",this.onBeforeInput,!0)}};var _r=["focus","blur","pointerdown","pointerup","click","input","keyup"];function Ve(n,e,t,i,r=_r){let o=[];for(let s of r){let a=Hr(s,t,i);a&&o.push([s,a])}for(let[s,a]of o)e.addEventListener(s,a);return()=>{for(let[s,a]of o)e.removeEventListener(s,a)}}function Hr(n,e,t){switch(n){case"focus":case"blur":{let i=e[n];return i&&(r=>t(n,()=>i(r.relatedTarget)))}case"pointerdown":case"pointerup":case"click":{let i=e[n];return i&&(()=>t(n,()=>i()))}case"input":{let i=e.input;return i&&(r=>t("input",()=>i(r.isComposing||r.inputType==="insertCompositionText",r)))}case"keyup":{let i=e.keyupEscape;return i&&(r=>t("keyup",()=>{r.key==="Escape"&&i()}))}}}function Ii(n,e){return e.type==="checkbox"||e.type==="radio"?e.checked?1:0:e.value.length}function xi(n,e){return e.reduce((t,i)=>t+i.value.length,0)}function We(n,e){let t=document.activeElement;return e.find(i=>i===t)}function se(n){return Ii(0,n)}var E=class{constructor(e,t,i){this.logger=e;this.inputField=t;this.sink=i;this.changes=new W(se(t),this.pushLow,e,i.reserveCaptureSeq),this.pasteObserver=new $(0,[t],e,(r,o,s)=>{this.changes.flush(),this.changes.markInputObserved();let a=this.changes.previousLength;this.changes.previousLength=se(t),this.pushLow({...s===void 0?{}:{captureSeq:s},lowType:"input-paste",ts:r,inputEffect:se(t)===0?"clear":a===0?"fill":"modify"})},i.reserveCaptureSeq),this.unregisterInputs=i.registerInputs?.([t],()=>this.flushPending()),this.capturePrefill(),this.attach()}unregisterInputs;removeFieldListeners;removePageHide;changes;pasteObserver;destroyed=!1;destroy(){if(!this.destroyed){this.destroyed=!0;try{this.changes.flush(),this.unregisterInputs?.(),this.pasteObserver.destroy(),this.detach()}catch(e){this.logger.error("Failed to destroy LowEventInputTracker",e)}}}attach(){let e=this.inputField;this.removeFieldListeners=Ve(0,e,{focus:()=>this.handleFocus(),blur:()=>this.handleBlur(),pointerdown:()=>this.enqueueNonInputEvent("pointerdown"),pointerup:()=>this.enqueueNonInputEvent("pointerup"),click:()=>this.enqueueNonInputEvent("click"),input:(t,i)=>this.handleInput(i,t),keyupEscape:()=>this.enqueueNonInputEvent("keyup-escape")},(t,i)=>{try{i()}catch(r){t==="input"?this.logger.error("Failed to observe input",r):this.logger.error(`Failed to handle low event "${t}"`,r)}}),typeof window<"u"&&(this.removePageHide=I(0,"pagehide",this.wrapHandler("pagehide",()=>this.flushForTeardown()))),typeof document<"u"&&We(0,[e])&&this.handleFocus()}detach(){this.removeFieldListeners?.(),typeof window<"u"&&this.removePageHide?.()}pushLow=e=>{this.sink.enqueueLowEvent(e)};capturePrefill(e=!1){this.destroyed||(this.flushPending(),this.changes.capturePrefill(se(this.inputField),e))}flushPending(){this.pasteObserver.flush(),this.changes.flush()}enqueueNonInputEvent(e){this.changes.flush(),this.pushLow({lowType:e,ts:Date.now()})}handleFocus(){this.enqueueNonInputEvent("focus")}handleBlur(){this.pasteObserver.flush(),this.enqueueNonInputEvent("blur")}handleInput(e,t){this.pasteObserver.handlesInput(e)||this.changes.record(se(this.inputField),Date.now(),t)}flushForTeardown(){this.pasteObserver.flush(),this.changes.flush(),this.sink.flushKeepalive()}wrapHandler(e,t){return()=>{try{t()}catch(i){this.logger.error(`Failed to handle low event "${e}"`,i)}}}};var $e=class{constructor(e,t,i){this.logger=e;this.sink=i;this.inputs=[...new Set(t)],this.changes=new W(this.length(),o=>i.enqueueLowEvent(o),e,i.reserveCaptureSeq),this.paste=new $(0,this.inputs,e,(o,s,a)=>{this.cancelChange(),this.changes.flush(),this.changes.markInputObserved();let l=this.changes.previousLength;this.changes.previousLength=this.length(),i.enqueueLowEvent({...a===void 0?{}:{captureSeq:a},lowType:"input-paste",ts:o,inputEffect:this.length()===0?"clear":l===0?"fill":"modify"})},i.reserveCaptureSeq),this.unregisterInputs=i.registerInputs?.(this.inputs,()=>this.flushPending()),this.capturePrefill();let r=(o,s)=>this.safe(s);for(let o of this.inputs)this.listeners.push(Ve(0,o,{input:(s,a)=>{this.paste.handlesInput(a)||(this.composing||=s,this.changeTimer===null&&(this.changeTime=Date.now(),this.changes.observe(),this.changeTimer=setTimeout(()=>this.safe(()=>this.flushChanges()),0)))},focus:s=>{this.contains(s)||this.emit("focus")},blur:s=>{this.contains(s)||(this.flushPending(),this.emit("blur"))},click:()=>this.emit("click"),pointerdown:()=>this.emit("pointerdown"),pointerup:()=>this.emit("pointerup"),keyupEscape:()=>this.emit("keyup-escape")},r,["input","focus","blur","click","pointerdown","pointerup","keyup"]));typeof window<"u"&&this.listeners.push(I(0,"pagehide",o=>this.safe(()=>{this.flushPending(),i.flushKeepalive()}))),typeof document<"u"&&We(0,this.inputs)&&this.emit("focus")}inputs;changes;paste;unregisterInputs;listeners=[];changeTimer=null;changeTime=0;composing=!1;destroyed=!1;contains(e){return this.inputs.some(t=>t===e)}length(){return xi(0,this.inputs)}safe(e){try{e()}catch(t){this.logger.error("Failed to observe grouped input",t)}}cancelChange(){this.changeTimer!==null&&clearTimeout(this.changeTimer),this.changeTimer=null}flushChanges(){this.changeTimer!==null&&(this.cancelChange(),this.paste.pending||this.changes.record(this.length(),this.changeTime,this.composing),this.composing=!1)}emit(e){this.flushChanges(),this.changes.flush(),this.sink.enqueueLowEvent({lowType:e,ts:Date.now()})}capturePrefill(e=!1){this.destroyed||(this.flushPending(),this.changes.capturePrefill(this.length(),e))}flushPending(){this.paste.flush(),this.flushChanges(),this.changes.flush()}destroy(){this.destroyed||(this.destroyed=!0,this.safe(()=>{this.flushPending(),this.paste.destroy(),this.unregisterInputs?.();for(let e of this.listeners)e()}))}};var F=class{constructor(e,t,i){this.logger=e;this.inputSink=t;this.groupSink=i}collector;fields=[];grouped=!1;destroyed=!1;prefillClaimed=!1;setFields(e,t=!0){try{if(this.destroyed)return;let i=[...new Set(e)];if(t===this.grouped&&i.length===this.fields.length&&i.every((s,a)=>s===this.fields[a])||(this.collector?.destroy(),this.collector=void 0,this.fields=[],this.grouped=t,i.length===0))return;let r=t?this.groupSink:this.inputSink,o={...r,enqueueLowEvent:s=>this.enqueue(r,s)};this.collector=t?new $e(this.logger,i,o):new E(this.logger,i[0],o),this.fields=i}catch(i){this.logger.error("Failed to bind OTP inputs",i)}}enqueue(e,t){if(t.lowType==="input-prefill"){if(this.prefillClaimed)return;this.prefillClaimed=!0}else["input","input-idle","input-clear","input-paste","big-input-paste","big-input-add","big-input-rem"].includes(t.lowType)&&(this.prefillClaimed=!0);e.enqueueLowEvent(t)}capturePrefill(e=!1){e&&(this.prefillClaimed=!1),this.collector?.capturePrefill(e)}flushPending(){this.collector?.flushPending()}destroy(){this.destroyed=!0,this.collector?.destroy(),this.collector=void 0,this.fields=[]}};var ae=class extends h{lowEventTracker;send;postResponse;resend;constructor(e,t={}){super(e,"email-otp"),this.send=this.defineStep("send"),this.postResponse=this.defineStep("post-response"),this.resend=this.defineStep("resend"),this.subflowStart({explicitSpecType:t.explicitSpecType,emailDomain:t.emailDomain}),this.lowEventTracker=this.createLowCollector(()=>new F(e.getLogger(),this.lowEventSink("input","otp"),this.lowEventSink("input-group","otp"))),t.inputHtmlFields?.length?this.setInputFields(t.inputHtmlFields):t.inputHtmlField&&this.lowEventTracker?.setFields([t.inputHtmlField],!1),this.registerLowFlusher(()=>this.lowEventTracker?.flushPending())}setInputFields(e){this.lowEventTracker?.setFields(e)}destroy(){this.lowEventTracker?.destroy()}};var le=class extends h{lowEventTracker;send;postResponse;resend;constructor(e,t={}){super(e,"sms-otp"),this.send=this.defineStep("send"),this.postResponse=this.defineStep("post-response"),this.resend=this.defineStep("resend"),this.subflowStart({explicitSpecType:t.explicitSpecType}),this.lowEventTracker=this.createLowCollector(()=>new F(e.getLogger(),this.lowEventSink("input","otp"),this.lowEventSink("input-group","otp"))),t.inputHtmlFields?.length?this.setInputFields(t.inputHtmlFields):t.inputHtmlField&&this.lowEventTracker?.setFields([t.inputHtmlField],!1),this.registerLowFlusher(()=>this.lowEventTracker?.flushPending())}setInputFields(e){this.lowEventTracker?.setFields(e)}destroy(){this.lowEventTracker?.destroy()}};var Br=["ahrefsbot","ahrefssiteaudit","amazonbot","baiduspider","bingbot","bingpreview","chrome-lighthouse","facebookexternal","petalbot","pinterest","screaming frog","yahoo! slurp","yandex","adsbot-google","apis-google","duplexweb-google","feedfetcher-google","google favicon","google web preview","google-read-aloud","googlebot","googleweblight","mediapartners-google","storebot-google"];function ki(n){if(!n)return!1;let e=n.toLowerCase();return Br.some(t=>e.includes(t))}var je="@corbado/observe",Ge="1.10.1";var Li=require("uuid");var gt="cbo_email_link_starts";function mt(n,e){let t=n.getItem(gt);return Array.isArray(t)?t.filter(i=>!!i&&typeof i=="object"&&typeof i.transactionId=="string"&&typeof i.anchor=="string"&&typeof i.sessionId=="string"&&typeof i.startedAt=="number"&&e-i.startedAt<864e5):[]}function Ci(n,e){if(n)try{let t=mt(n,e.startedAt).filter(i=>i.transactionId!==e.transactionId);t.push(e),n.setItem(gt,t.slice(-10))}catch{}}function Oi(n,e,t=Date.now()){if(n)try{let i=mt(n,t);if(e.transactionId)return i.find(o=>o.transactionId===e.transactionId);let r=i.filter(o=>!o.continued&&(!e.specType||!o.specType||o.specType===e.specType));return r[r.length-1]}catch{return}}function Pi(n,e){if(n)try{let t=mt(n,Date.now()).map(i=>i.transactionId===e?{...i,continued:!0}:i);n.setItem(gt,t)}catch{}}var pe=class extends h{send;postResponse;resend;transactionId;constructor(e,t={}){super(e,"email-link"),this.send=this.defineStep("send"),this.postResponse=this.defineStep("post-response"),this.resend=this.defineStep("resend"),this.transactionId=t.transactionId||(0,Li.v7)(),this.subflowStart({explicitSpecType:t.explicitSpecType},{userReference:{crossEnvironmentTransactionIDStart:this.transactionId}});let i=this.captureReference,r=this.captureSession;i&&r&&Ci(e.getPersistentStorage(),{transactionId:this.transactionId,anchor:i,sessionId:r,specType:t.explicitSpecType,startedAt:Date.now()})}},de=class extends h{postResponse;resend;mode;continuationTracker;specType;createdAt=Date.now();transaction;started=!1;deferred=[];onPageHide=()=>this.flush();removePageHide;constructor(e,t={}){super(e,"email-link"),this.continuationTracker=e,this.specType=t.explicitSpecType,this.transaction=t.transactionId,this.postResponse=this.deferrable(this.defineStep("post-response"),!0),this.resend=this.deferrable(this.defineStep("resend"));let i=e.getPersistentStorage(),r=Oi(i,{transactionId:t.transactionId,specType:t.explicitSpecType});if(r&&r.sessionId===e.getSessionId()){this.mode="attached",this.transaction=t.transactionId??r.transactionId,this.adoptCapture(r.anchor,r.sessionId,r.specType??t.explicitSpecType),this.started=!0;return}this.mode="detached",this.transaction?this.startDetached(this.createdAt):typeof window<"u"&&(this.removePageHide=I(0,"pagehide",this.onPageHide))}get transactionId(){return this.transaction}setTransactionId(e){!e||this.transaction||(this.transaction=e,this.mode==="detached"&&!this.started&&this.startDetached(this.firstDeferredAt()))}flush(){this.mode==="detached"&&!this.started&&this.startDetached(this.firstDeferredAt())}destroy(){this.flush(),this.removePageHideListener()}firstDeferredAt(){return this.deferred[0]?.at??this.createdAt}startDetached(e){this.started=!0,this.removePageHideListener(),this.subflowStart({explicitSpecType:this.specType,continuation:!0},{explicitTimestamp:e,...this.transaction?{userReference:{crossEnvironmentTransactionIDFinish:this.transaction}}:{}});let t=this.deferred;this.deferred=[];for(let i of t)i.run(i.at);try{this.continuationTracker.flushKeepalive()}catch{}}removePageHideListener(){typeof window<"u"&&this.removePageHide?.()}deferrable(e,t=!1){let i=(r,o)=>{if(this.started){r(o?.explicitTimestamp??Date.now());return}this.deferred.push({at:o?.explicitTimestamp??Date.now(),run:r})};return{start:(r,o)=>i(s=>e.start(r,{...o,explicitTimestamp:s}),o),finished:(r,o)=>{i(s=>e.finished(r,{...o,explicitTimestamp:s}),o),t&&this.transaction&&Pi(this.continuationTracker.getPersistentStorage(),this.transaction)},error:(r,o)=>i(s=>e.error(r,{...o,explicitTimestamp:s}),o)}}};var ce=class extends h{getOptions;ceremony;postResponse;lowEventTracker;constructor(e,t){super(e,"passkey-enrollment"),this.lowEventTracker=new V(e.getLogger(),this.lowEventSink("ceremony")),this.registerLowFlusher(()=>this.lowEventTracker.disarm()),this.getOptions=this.defineStep("get-options"),this.ceremony=this.withWindowLowEvents(this.defineStep("ceremony"),this.lowEventTracker),this.postResponse=this.defineStep("post-response"),this.subflowStart({explicitSpecType:t?.explicitSpecType,...t?.ignoreAsInteraction?{ignoreAsInteraction:!0}:{}})}destroy(){this.lowEventTracker.destroy()}};function yt(n){let e=n.debug,t,i=(r,o)=>`[Corbado Observe SDK ${r}] ${o}`;return{reportTelemetry(r,o){if(t)try{t(r,o)}catch{}},setTelemetrySink(r){t=r},debug(r,...o){e&&console.log(i("DEBUG",r),...o)},info(r,...o){e&&console.log(i("INFO",r),...o)},warn(r,...o){e&&console.warn(i("WARN",r),...o)},error(r,...o){e&&console.error(i("ERROR",r),...o)},critical(r,...o){console.error(i("CRITICAL",r),...o)}}}var ue=class extends h{userConfirmation;deletion;constructor(e,t={}){super(e,"passkey-deletion"),this.userConfirmation=this.defineStep("user-confirmation"),this.deletion=this.defineStep("deletion"),this.subflowStart({})}};var fe=class extends h{clientValidation;postResponse;cui;lowEventTracker;identifierLowEventTracker;constructor(e,t){super(e,"password-login"),this.clientValidation=this.defineStep("client-validation"),this.postResponse=this.defineStep("post-response"),this.cui={getOptions:this.defineStep("cui-get-options",!0),ceremony:this.defineStep("cui-ceremony"),postResponse:this.defineStep("cui-post-response")},this.subflowStart({explicitSpecType:t?.explicitSpecType}),t?.identifierInputHtmlField&&(this.identifierLowEventTracker=this.createLowCollector(()=>new E(e.getLogger(),t.identifierInputHtmlField,this.lowEventSink("input","identifier"))),this.registerLowFlusher(()=>this.identifierLowEventTracker?.flushPending())),t?.inputHtmlField&&(this.lowEventTracker=this.createLowCollector(()=>new E(e.getLogger(),t.inputHtmlField,this.lowEventSink("input","password"))),this.registerLowFlusher(()=>this.lowEventTracker?.flushPending()))}trigger(e,t){super.trigger(e,t)}destroy(){this.lowEventTracker?.destroy(),this.identifierLowEventTracker?.destroy()}};var he=class extends h{clientValidation;postResponse;lowEventTracker;constructor(e,t){super(e,"password-enrollment"),this.clientValidation=this.defineStep("client-validation"),this.postResponse=this.defineStep("post-response"),this.subflowStart({explicitSpecType:t?.explicitSpecType}),t?.inputHtmlField&&(this.lowEventTracker=this.createLowCollector(()=>new E(e.getLogger(),t.inputHtmlField,this.lowEventSink("input","password"))),this.registerLowFlusher(()=>this.lowEventTracker?.flushPending()))}destroy(){this.lowEventTracker?.destroy()}};var ge=class extends h{lowEventTracker;cui;provideIdentifier;constructor(e,t){super(e,"provide-identifier"),this.cui={trigger:(i,r)=>{this.trigger(i,r)},getOptions:this.defineStep("cui-get-options",!0),ceremony:this.defineStep("cui-ceremony"),postResponse:this.defineStep("cui-post-response")},this.provideIdentifier={trigger:(i,r)=>{this.trigger(i,r)},clientValidation:this.defineStep("pi-client-validation"),postResponse:this.defineStep("pi-post-response")},this.subflowStart({explicitSpecType:t?.explicitSpecType}),t?.inputHtmlField&&(this.lowEventTracker=this.createLowCollector(()=>new E(e.getLogger(),t.inputHtmlField,this.lowEventSink("input","identifier"))),this.registerLowFlusher(()=>this.lowEventTracker?.flushPending()))}destroy(){this.lowEventTracker?.destroy()}};var me=class extends h{getRedirectUrl;exchangeCode;constructor(e,t={}){super(e,"social-login"),this.getRedirectUrl=this.defineStep("get-redirect-url"),this.exchangeCode=this.defineStep("exchange-code"),this.subflowStart({explicitSpecType:t.explicitSpecType,entry:t.entry})}};var ye=class extends h{getRedirectUrl;exchangeCode;constructor(e,t={}){super(e,"sso-login"),this.getRedirectUrl=this.defineStep("get-redirect-url"),this.exchangeCode=this.defineStep("exchange-code");let{explicitSpecType:i,organizationDomain:r,actor:o}=qr(t??{},e);this.subflowStart({explicitSpecType:i,organizationDomain:r,actor:o})}};function qr(n,e){let t={...n},i=o=>{try{e.getLogger().warn(`SSO login: unsupported ${o}; omitted from telemetry`)}catch{}},r=t.organizationDomain;return r!==void 0&&(typeof r!="string"||r.includes("@")||r.length>253)&&(delete t.organizationDomain,i("organizationDomain")),t.actor!==void 0&&t.actor!=="user"&&t.actor!=="system"&&(delete t.actor,i("actor")),t}var ve=class extends h{lowEventTracker;postResponse;constructor(e,t={}){super(e,"totp"),this.postResponse=this.defineStep("post-response"),this.subflowStart({explicitSpecType:t.explicitSpecType}),this.lowEventTracker=this.createLowCollector(()=>new F(e.getLogger(),this.lowEventSink("input","otp"),this.lowEventSink("input-group","otp"))),t.inputHtmlFields?.length?this.setInputFields(t.inputHtmlFields):t.inputHtmlField&&this.lowEventTracker?.setFields([t.inputHtmlField],!1),this.registerLowFlusher(()=>this.lowEventTracker?.flushPending())}setInputFields(e){this.lowEventTracker?.setFields(e)}destroy(){this.lowEventTracker?.destroy()}};var Se=class extends h{ceremony;retry;postResponse;constructor(e,t={}){super(e,"app-confirmation"),this.ceremony=this.defineStep("ceremony"),this.retry=this.defineStep("retry"),this.postResponse=this.defineStep("post-response"),this.subflowStart({explicitSpecType:t.explicitSpecType})}};var be=class extends h{ceremony;postResponse;constructor(e,t={}){super(e,"captcha"),this.ceremony=this.defineStep("ceremony"),this.postResponse=this.defineStep("post-response"),this.subflowStart({explicitSpecType:t.explicitSpecType})}};var ze=class{constructor(e,t){this.logger=e;this.sink=t}trackers=new Map;destroyed=!1;setFields(e){if(this.destroyed)return;let t=new Set(e);for(let[i,r]of this.trackers)t.has(i)||(this.safe(()=>r.destroy()),this.trackers.delete(i));for(let i of t)this.trackers.has(i)||this.safe(()=>this.trackers.set(i,new E(this.logger,i,this.sink())))}capturePrefill(e=!1){for(let t of this.trackers.values())this.safe(()=>t.capturePrefill(e))}flushPending(){for(let e of this.trackers.values())this.safe(()=>e.flushPending())}destroy(){if(!this.destroyed){this.destroyed=!0;for(let e of this.trackers.values())this.safe(()=>e.destroy());this.trackers.clear()}}safe(e){try{e()}catch(t){this.logger.error("Form input binding failed",t)}}};var vt=50,Nr=6e4,Ur=40,Kr=/^[A-Za-z0-9._-]+$/,Te=class extends h{submit;skip;inputBinding;constructor(e,t){super(e,"form"),this.submit=this.defineStep("submit"),this.skip=this.defineStep("skip"),this.subflowStart(Wr(e,t),Vr(e,t)),this.inputBinding=this.createLowCollector(()=>new ze(e.getLogger(),()=>this.lowEventSink("input","data"))),this.registerLowFlusher(()=>this.inputBinding?.flushPending()),t?.inputHtmlFields?.length&&this.setInputFields(t.inputHtmlFields)}setInputFields(e){this.inputBinding?.setFields(e)}destroy(){this.inputBinding?.destroy()}};function Vr(n,e){let t=e?.startedAt;if(t===void 0)return;let i=Date.now();if(typeof t!="number"||!Number.isFinite(t)||t>i||i-t>Nr){we(n,"Form: implausible startedAt ignored; using the current time");return}return{explicitTimestamp:t}}function Wr(n,e){let t={},i=e?.name;typeof i=="string"&&i.trim()!==""?t.name=i:we(n,"Form: missing name; the form will not be counted");let r=e?.fields;if(r===void 0)return t;if(!Array.isArray(r))return we(n,"Form: fields must be an array of field names; omitted from telemetry"),t;let o=r.filter(s=>typeof s=="string"&&s.length<=Ur&&Kr.test(s));return o.length<r.length&&we(n,"Form: unsupported field names omitted from telemetry"),o.length>vt&&we(n,`Form: more than ${vt} field names; the rest is omitted from telemetry`),o.length>0&&(t.fields=o.slice(0,vt)),t}function we(n,e){try{n.getLogger().warn(e)}catch{}}function St(n,e,t){if(n===null||typeof n!="object")return n;try{let i={...n};i.purpose===void 0&&e.purpose!==void 0&&(i.purpose=e.purpose),i.storage===void 0&&e.storage!==void 0&&(i.storage=e.storage),i.trustName===void 0&&e.trustName!==void 0&&(i.trustName=e.trustName);for(let[r,o]of[["bindingReference",255],["trustName",128]])if(typeof i[r]=="string"&&[...i[r]].length>o){delete i[r];try{t.getLogger().debug(`Trusted device: omitted ${r} exceeding ${o} characters`)}catch{}}return i}catch{return n}}function Qe(n,e,t){return{...n,start:(i,r)=>n.start(St(i,e,t),r),finished:(i,r)=>n.finished(St(i,e,t),r)}}var Ee=class extends h{getOptions;ceremony;postResponse;constructor(e,t){super(e,"trusted-device-check"),t=Ri(t,e);let i={purpose:t.purpose,storage:t.storage,trustName:t.trustName};this.getOptions=this.checkStep("get-options",i,e),this.ceremony=this.checkStep("ceremony",i,e),this.postResponse=this.checkStep("post-response",i,e),this.subflowStart({explicitSpecType:t.explicitSpecType,actor:"system",ignoreAsInteraction:!0})}checkStep(e,t,i){let r=this.defineStep(e,!0);return{...Qe(r,t,i),errorTyped:(o,s)=>{r.errorTyped(St({code:o?.code,error:B(o?.error)},t,i),s)}}}},Ie=class extends h{getOptions;ceremony;postResponse;constructor(e,t){super(e,"trusted-device-enrollment"),t=Ri(t,e);let i={purpose:t.purpose,storage:t.storage,trustName:t.trustName};this.getOptions=Qe(this.defineStep("get-options"),i,e),this.ceremony=Qe(this.defineStep("ceremony"),i,e),this.postResponse=Qe(this.defineStep("post-response"),i,e),this.subflowStart({explicitSpecType:t.explicitSpecType})}};function Ri(n,e){let t={...n},i=r=>{try{e.getLogger().warn(`Trusted device: missing or unsupported ${r}; omitted from telemetry`)}catch{}};return t.purpose!=="additional-verification"&&t.purpose!=="mfa-exemption"&&(delete t.purpose,i("purpose")),["cookie","indexeddb","localstore","sessionstore"].includes(t.storage)||(delete t.storage,i("storage")),t}var xe=class extends h{clientValidation;postResponse;lowEventTracker;constructor(e,t={}){super(e,"provide-data"),this.clientValidation=this.defineStep("client-validation"),this.postResponse=this.defineStep("post-response");let{inputHtmlField:i,...r}=t;this.subflowStart(r),i&&(this.lowEventTracker=this.createLowCollector(()=>new E(e.getLogger(),i,this.lowEventSink("input","data"))),this.registerLowFlusher(()=>this.lowEventTracker?.flushPending()))}destroy(){this.lowEventTracker?.destroy()}};var $r="/inline/injected/webauthn-listeners.js",Fi=/\/dashlane-(?:shadow-dom|top-layer)-page-script\.js/,jr=/-extension:\/\/[^/]+\/content-scripts\/passkey_proxy\/index\.js$/,Gr=/-extension:\/\/[^/]+\/content_scripts\/shadow-dom\/shadowAttachNotifier\.js:/,Ai=/-extension:\/\/[^/]+\/js\/nordpass-script\.js:/,zr=/-extension:\/\/[^/]+\/js\/passkeys\.js:/,Qr=/["'`](?:keeper:shadow-root-attached|webauthn-(?:get|create)-request)["'`]/,Jr=/Intercept cancelled for `(?:get|create)`|["'`](?:conditionalMediationAvailable|verifyingPlatformAuthenticatorAvailable)["'`]/,bt=()=>Object.keys(window._sentryDebugIds??{}),wt=n=>{try{n()}catch(e){return String(e?.stack??"")}return""},Di=()=>wt(()=>Element.prototype.attachShadow.call(null,{mode:"open"})),Yr=()=>{let n=Object.getOwnPropertyDescriptor(navigator.credentials??{},"get");if(!n?.get||!n.set||n.configurable)return!1;let e=()=>{},t=n.get.call({_get:e});return t===e||typeof t=="function"&&t===n.get.call({})&&!Function.prototype.toString.call(t).includes("[native code]")},Tt=(...n)=>{let e=navigator.credentials;return e?n.map(t=>Object.getOwnPropertyDescriptor(e,t)?.value):[]},Xr=()=>[navigator.credentials?.get,...Tt("get","_get")].some(n=>typeof n=="function"&&n.name==="getWebAuthnCredential"),Zr=()=>{let n=document.documentElement,e=document.adoptedStyleSheets;if(!n||typeof n.getAnimations!="function"||typeof e?.push!="function"||n.getAnimations().length>0)return!1;let t=new CSSStyleSheet;t.replaceSync(":where(:root){animation:bitwardenfill 1s 1000s paused}"),e.push(t);try{let i=n.getAnimations().filter(r=>r.animationName==="bitwardenfill");return i.forEach(r=>r.cancel()),i.length>0}finally{let i=e.indexOf(t);i>=0&&e.splice(i,1)}},en,tn=()=>en??=Zr(),rn=()=>{let n=typeof PublicKeyCredential>"u"?void 0:PublicKeyCredential;if(typeof n!="function"||!Object.prototype.hasOwnProperty.call(n,Symbol.hasInstance))return!1;let e=n[Symbol.hasInstance]({});return e instanceof Promise?(e.catch(()=>{}),!0):!1},nn=()=>{let n={get nodeType(){throw new Error("probe")}};return wt(()=>MutationObserver.prototype.observe.call(null,n))},on=()=>{let n=new Error("probe"),e=[],t={get nodeType(){return e.push("nodeType"),1},get ownerDocument(){throw e.push("ownerDocument"),n}};try{MutationObserver.prototype.observe.call(null,t)}catch(i){return i===n&&e.join()==="nodeType,ownerDocument"}return!1},sn=()=>[Element.prototype.attachShadow,navigator.credentials?.get,navigator.credentials?.create,...Tt("get","_get","create")].some(e=>typeof e=="function"&&Qr.test(Function.prototype.toString.call(e))),an=()=>{let n=document;for(;n;){if(n.querySelector("[data-lastpass-icon-root], [data-lastpass-root]"))return!0;n=n.activeElement?.shadowRoot}return!1},ln=()=>{let n=typeof PublicKeyCredential>"u"?void 0:PublicKeyCredential;return[navigator.credentials?.get,...Tt("get","_get"),n?.isConditionalMediationAvailable,n?._isConditionalMediationAvailable,n?.isUserVerifyingPlatformAuthenticatorAvailable,n?._isUserVerifyingPlatformAuthenticatorAvailable].some(t=>typeof t=="function"&&Jr.test(Function.prototype.toString.call(t)))},pn=[{name:"1password",signal:"in-field button",signedIn:!0,test:()=>document.querySelector("com-1password-button")!==null},{name:"1password",signal:"credentials.get accessor",test:Yr},{name:"1password",signal:"Sentry debug id",test:()=>bt().some(n=>n.includes($r))},{name:"bitwarden",signal:"passkey override",signedIn:!0,test:Xr},{name:"bitwarden",signal:"autofill keyframes",test:tn},{name:"dashlane",signal:"injected script tag",test:()=>document.querySelector('script[src*="-extension://"][src*="/dashlane-"][src$="-page-script.js"]')!==null},{name:"dashlane",signal:"PublicKeyCredential hasInstance trap",test:rn},{name:"dashlane",signal:"page script stack",test:()=>Fi.test(Di())||typeof HTMLDialogElement<"u"&&Fi.test(wt(()=>HTMLDialogElement.prototype.showModal.call(null)))},{name:"kaspersky",signal:"passkey proxy flag",test:()=>window.wasKPMKeyPassProxyInited===!0},{name:"kaspersky",signal:"injected script tag",test:()=>jr.test(document.querySelector('script[src*="/content-scripts/passkey_proxy/"]')?.src??"")},{name:"keeper",signal:"attachShadow stack",test:()=>Gr.test(Di())},{name:"keeper",signal:"override source",test:sn},{name:"keeper",signal:"field lock",test:()=>document.querySelector("[data-keeper-lock-id]")!==null},{name:"lastpass",signal:"passkey override",signedIn:!0,test:()=>typeof window.__nativeCredentialsGet=="function"},{name:"lastpass",signal:"icon root",test:an},{name:"nordpass",signal:"observer proxy stack",test:()=>Ai.test(nn())},{name:"nordpass",signal:"observer read order",test:on},{name:"nordpass",signal:"passkeys Sentry debug id",test:()=>bt().some(n=>zr.test(n))},{name:"nordpass",signal:"Sentry debug id",test:()=>bt().some(n=>Ai.test(n))},{name:"protonpass",signal:"WebAuthn override source",test:ln},{name:"protonpass",signal:"field icon",test:()=>document.querySelector("[data-protonpass-role]")!==null}];function dn(){return typeof window>"u"||typeof document>"u"?[]:pn.map(({name:n,signal:e,signedIn:t,test:i})=>{try{return{name:n,signal:e,signedIn:t,matched:i()}}catch(r){return{name:n,signal:e,signedIn:t,matched:!1,error:r}}})}function Et(){let n=new Map;for(let{name:e,signedIn:t,matched:i}of dn()){if(!i)continue;let r=n.get(e)??{name:e};t&&(r.signedIn=!0),n.set(e,r)}return[...n.values()]}function Mi(n){return Et()}var _i=3e3,cn=500,un=6,fn=1e3,Je=class{constructor(e,t,i){this.logger=e;this.isEnabled=t;if(typeof window>"u"||typeof document>"u")return;if(this.sample(),Ht(0))this.sampleAfter(_i);else{let o=()=>{this.sampleWhenIdle(),this.sampleAfter(_i)};this.removers.push(I(0,"load",o,{once:!0}))}let r=i.onInputFocus(o=>{!this.isEnabled()||this.sampledFields.has(o)||(this.sampledFields.add(o),++this.focusSamples>=un&&r(),this.sampleAfter(cn))});this.removers.push(r)}detected=new Map;timers=new Set;idleCallbacks=new Set;sampledFields=new WeakSet;focusSamples=0;removers=[];destroyed=!1;reportedCounts=new Map;getDetected(){return[...this.detected.values()]}takeReport(e){if(!(!this.isEnabled()||this.detected.size<=(this.reportedCounts.get(e)??0)))return this.reportedCounts.set(e,this.detected.size),this.getDetected().map(({name:t})=>({name:t}))}destroy(){this.destroyed=!0;for(let e of this.removers)e();for(let e of this.timers)clearTimeout(e);this.timers.clear();for(let e of this.idleCallbacks)cancelIdleCallback(e);this.idleCallbacks.clear()}sampleAfter(e){let t=setTimeout(()=>{this.timers.delete(t),this.sampleWhenIdle()},e);this.timers.add(t)}sampleWhenIdle(){if(typeof requestIdleCallback!="function"){this.sample();return}let e=requestIdleCallback(()=>{this.idleCallbacks.delete(e),this.sample()},{timeout:fn});this.idleCallbacks.add(e)}sample(){if(!(this.destroyed||!this.isEnabled()))try{let e=Mi(0);for(let t of e){let i=this.detected.get(t.name);(!i||t.signedIn&&!i.signedIn)&&this.detected.set(t.name,t)}}catch(e){this.logger.error("Failed to detect password manager extensions",e)}}};var hn="cbo_xs",qi="1",gn=20;var mn=/^[A-Za-z0-9._~-]{1,128}$/,yn=1e3,vn=300*1e3,Sn=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i,bn=/^[A-Za-z0-9_-]{1,64}$/,wn=/^[a-z0-9-]+(\.[a-z0-9-]+)+$/,Hi=/^\d{1,15}$/,Tn=1e9,Bi=1e3,En=1e5;function It(n){return typeof n=="string"&&mn.test(n)}function In(n){let e=n.split("."),[t,i,r,o]=e;if(e.length<4||t!==qi||!i||!Sn.test(i)||!r||!Hi.test(r)||!o||!Hi.test(o)||Number(o)>Tn)return;let s=e.length>4?e.slice(4).join("."):void 0;if(!(s!==void 0&&!It(s)))return{sessionId:i.toLowerCase(),lastActiveAt:Number(r),seqMark:Number(o),...s!==void 0&&{context:s}}}function xn(n){let e=[qi,n.sessionId,String(Math.floor(n.lastActiveAt)),String(Math.floor(n.seqMark))];return n.context!==void 0&&e.push(n.context),e.join(".")}function kn(n,e){let t=n.trim().toLowerCase().replace(/^\./,""),i=e.toLowerCase();if(wn.test(t))return i===t||i.endsWith(`.${t}`)?t:void 0}var Ye=class n{constructor(e,t,i,r,o){this.name=e;this.domain=t;this.jar=i;this.contextJar=r;this.deps=o}enabled=!0;reservedFor;reservedMark=0;highestSeen=0;lastWriteAt=0;context;static create(e){try{if(typeof document>"u"||typeof window>"u")return;if(!bn.test(e.projectId)){e.logger.debug("Cross-origin session off: project id is not cookie-safe");return}let t=e.scope?e.scope():Nt(0);if(!t.https){e.logger.debug("Cross-origin session off: page is not served over HTTPS");return}let i=kn(e.cookieDomain,t.hostname);if(!i){e.logger.warn(`Cross-origin session off: "${e.cookieDomain}" is not the page's domain or a parent of it`),e.report("info","cross-origin session: cookieDomain does not match the page");return}let r=e.jar??ee(0),o=e.jar??ee(0);return new n(`${hn}_${e.projectId}`,i,r,o,e)}catch(t){e.logger.error("Cross-origin session setup failed",t);return}}isEnabled(){return this.enabled}stop(){this.enabled=!1}boot(e,t=Date.now()){if(this.enabled)try{let i=this.read(this.jar,t),r=e.sessionId,o=!1;i&&i.sessionId!==r&&(!r||e.lastActiveAt<=0||i.lastActiveAt>e.lastActiveAt)&&(r=i.sessionId,o=!0);let s=o?i?.seqMark??0:e.seq;if(r){let a=this.sync(this.jar,i,r,s,t,!0,!1);s=a.seq,this.isStored(a.value)||(this.enabled=!1,this.deps.logger.debug("Cross-origin session off: the cookie could not be stored"),this.deps.report("info","cross-origin session: cookie not stored"))}return{sessionId:r,seq:s,adopted:o}}catch(i){this.enabled=!1,this.deps.logger.error("Cross-origin session boot failed",i),this.deps.report("error","cross-origin session: boot failed");return}}claim(e,t,i=Date.now()){if(!this.enabled||!e)return t;try{let r=this.read(this.jar,i);this.follow(e);let o=r?.sessionId===e,s=o?this.plausibleMark(r.seqMark,t):void 0;if(s!==void 0&&(this.highestSeen=Math.max(this.highestSeen,s)),r&&!o){if(t<this.reservedMark)return t;let l=Math.max(t,this.highestSeen)+Bi;return this.reservedMark=l+Bi,this.highestSeen=this.reservedMark,l}let a=t>=this.reservedMark||s!==void 0&&s>this.reservedMark;return!a&&i-this.lastWriteAt<yn?t:this.sync(this.jar,r,e,t,i,a,!1).seq}catch(r){return this.deps.logger.error("Cross-origin session cookie update failed",r),t}}reset(e,t=Date.now()){if(!(!this.enabled||!e))try{this.reservedFor=void 0,this.follow(e),this.sync(this.jar,this.read(this.jar,t),e,0,t,!0,!0)}catch(i){this.deps.logger.error("Cross-origin session cookie reset failed",i)}}setContext(e,t,i,r=Date.now()){if(!(!this.enabled||!e))try{let o=this.read(this.contextJar,r);return this.follow(e),this.context=i,this.sync(this.contextJar,o,e,t,r,t>=this.reservedMark,!0).seq}catch(o){this.deps.logger.error("Cross-origin session context update failed",o);return}}getContext(e,t=Date.now()){if(!(!this.enabled||!e)){try{let i=this.read(this.contextJar,t);if(i?.sessionId===e)return this.reservedFor===e&&(this.context=i.context),i.context}catch(i){this.deps.logger.error("Cross-origin session context read failed",i)}return this.reservedFor===e?this.context:void 0}}follow(e){this.reservedFor!==e&&(this.reservedFor=e,this.reservedMark=0,this.highestSeen=0,this.context=void 0)}plausibleMark(e,t){if(e-t>En){this.deps.report("info","cross-origin session: implausible seq mark ignored");return}return e}sync(e,t,i,r,o,s,a){this.follow(i);let l=t?.sessionId===i,p=l?this.plausibleMark(t.seqMark,r):void 0;p!==void 0&&(this.highestSeen=Math.max(this.highestSeen,p)),l&&!a&&(this.context=t.context);let d=r,c;s?(d=Math.max(r,p??0,this.highestSeen),c=d+gn):c=Math.max(this.reservedMark,this.highestSeen,r);let f=xn({sessionId:i,lastActiveAt:o,seqMark:c,...this.context!==void 0&&{context:this.context}});return this.write(e,f),s&&(this.reservedMark=c),this.highestSeen=Math.max(this.highestSeen,c),this.lastWriteAt=o,{seq:d,value:f}}maxAgeSeconds(){return Math.max(60,Math.ceil(this.deps.inactivityMs()/1e3))}write(e,t){e.write(`${this.name}=${t}; Domain=${this.domain}; Path=/; Max-Age=${this.maxAgeSeconds()}; SameSite=Lax; Secure`)}rawValues(e){let t=`${this.name}=`;return e.read().split(";").map(i=>i.trim()).filter(i=>i.startsWith(t)).map(i=>i.substring(t.length))}isStored(e){try{return this.rawValues(this.jar).includes(e)}catch{return!1}}read(e,t){let i=this.deps.inactivityMs(),r;for(let o of this.rawValues(e)){let s=In(o);s&&t-s.lastActiveAt<i&&s.lastActiveAt<=t+vn&&(!r||s.lastActiveAt>r.lastActiveAt)&&(r=s)}return r}};var xt={name:je,version:Ge},Cn=/^[0-9A-Za-z.+_-]{1,32}$/;function On(n,e){return n===void 0?xt:typeof n=="string"&&Cn.test(n)?{...xt,integrationVersion:n}:(e.debug("Ignoring invalid integrationVersion (expected <= 32 chars of [0-9A-Za-z.+_-])"),xt)}var kt="cbo_session_id",Xe="cbo_session",k="cbo_seq",Ni="cbo_experiments",Ui="cbo_data_policy",Pn=255,Ln=/^[A-Za-z0-9_-]+$/,Rn=128,Fn=256,Ki=1e3,An=/^[a-z][a-z0-9_-]{0,31}$/,Vi=/^[A-Za-z0-9_-]{1,16}$/,Dn=64,Mn=32,_n=50,Hn="cbo_seq",Wi=1e3,$i=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i,ke=class n{constructor(e){this.options=e;this.options.debug=e.debug??!1,this.logger=e.logger??yt({debug:this.options.debug});let t=new ie(this.logger),i=new ne(this.logger),r=e.storage==="cookie",o=r?new re(this.logger,e.cookieDomain):void 0;Ti(e.projectId,t,i,o,this.logger);let s=e.projectId,a=u=>new te(u,s);this.seqLockName=C(Hn,s),this.sessionStorage=a(i),this.persistentStorage=a(t),this.storage=a(o??t),this.configOverrides={...e.sdkConfig,...e.sdkConfig?.retry&&{retry:{...e.sdkConfig.retry}},...e.sdkConfig?.flushOnFlowTypeFinished&&{flushOnFlowTypeFinished:[...e.sdkConfig.flushOnFlowTypeFinished]},...e.sdkConfig?.sourcePathQueryAllow&&{sourcePathQueryAllow:[...e.sdkConfig.sourcePathQueryAllow]}},this.fixedData=ot(e.fixedDataConfig),this.fixedData&&(this.configOverrides.pmd=this.fixedData.pmd);let l=Object.keys(v).every(u=>this.configOverrides[u]!==void 0)&&Object.keys(v.retry).every(u=>this.configOverrides.retry?.[u]!==void 0);l||(this.configManager=new Ke(e.apiBaseUrl+(e.apiConfigPath??"/v1/observe/config")+"/"+e.projectId,this.persistentStorage,this.logger));let p=this.configManager?.initialConfig;this.config=Re(p,this.configOverrides),!l&&!p&&e.flushInterval!=null&&this.configOverrides.flushIntervalMs===void 0&&(this.config={...this.config,flushIntervalMs:e.flushInterval}),!l&&!p&&e.deviceInfoCollectorTimeout!=null&&this.configOverrides.deviceInfoCollectorTimeoutMs===void 0&&(this.config={...this.config,deviceInfoCollectorTimeoutMs:e.deviceInfoCollectorTimeout}),e.apiBaseUrl!==""&&(/^https?:\/\//.test(e.apiBaseUrl)||(this.logger.critical(`Invalid apiBaseUrl: URL must start with http:// or https:// (got: "${e.apiBaseUrl}")`),this.reportTelemetry("error","invalid apiBaseUrl: missing http(s) scheme")),e.apiBaseUrl.endsWith("/")&&(this.logger.critical(`Invalid apiBaseUrl: URL must not have a trailing slash (got: "${e.apiBaseUrl}")`),this.reportTelemetry("error","invalid apiBaseUrl: trailing slash")));let d=e.apiBaseUrl+(e.apiEventPath??"/v1/observe/events")+"/"+e.projectId;this.logger.debug(`Using API endpoint: ${d}`);let c=new Ae({logger:this.logger,url:d});this.crossOrigin=this.createCrossOriginSession(),this.sessionId=this.resolveSession(),this.queue=new X(this.logger,c,this.sessionId,On(this.options.integrationVersion,this.logger),{debug:this.options.debug,config:this.config,requestConfig:!1,outboxLockName:C(Me,s),getDataPolicy:()=>this.dataPolicy,getCrossOriginSession:u=>this.crossOriginSessionMeta(u),fixedData:this.fixedData!==void 0||typeof __CBO_DATA_PMD__=="boolean"||typeof __CBO_DATA_PRIVATE_MODE__=="boolean",beforeEventBatchSend:u=>this.attachUndeliveredDeviceInfo(u),standaloneDeviceInfo:{has:()=>this.deviceInfoManager?.hasStandalone()??!1,take:()=>this.deviceInfoManager?.takeStandalone()}},this.persistentStorage),this.telemetryReady=!0,this.logger.setTelemetrySink?.((u,w)=>this.reportTelemetry(u,w));try{this.getWindowObserver()}catch(u){this.logger.error("Failed to attach page low-event observer",u)}if(typeof __CBO_DATA_PMD__=="boolean"?__CBO_DATA_PMD__:this.fixedData?.pmd!==!1)try{this.passwordManagerSampler=this.isTrackingBlocked()?void 0:new Je(this.logger,()=>typeof __CBO_DATA_PMD__=="boolean"?__CBO_DATA_PMD__:this.config.pmd,this.getWindowObserver())}catch(u){this.logger.error("Failed to start password manager detection",u)}let f=this.pendingSelfTelemetry;this.pendingSelfTelemetry=[];for(let u of f)this.telemetry(u.level,u.message);let m=new He(this.logger,this.storage,r?"cookie":"localstorage",this.sessionStorage,()=>({timing:this.config.deviceInfoTiming}),(u,w)=>this.telemetry(u,w),this.fixedData?.privateMode??!0);this.deviceCollector=m;let y=e.deviceInfoDebounceTime??3e4;this.deviceInfoManager=new Be(this.logger,m,Math.max(1,y),y,{timing:()=>this.config.deviceInfoTiming,emit:(u,w)=>this.telemetry(u,w)},()=>this.queue.notifyDeviceInfo()),this.deviceInfoManager.start(),this.experiments=this.loadPersistedExperiments(),e.experiments&&this.setExperiments(e.experiments),this.dataPolicy=this.loadPersistedDataPolicy(),e.dataPolicy!==void 0&&this.setDataPolicy(e.dataPolicy),this.configManager?.start(u=>this.handleConfig(u))}logger;queue;sessionId;storage;sessionStorage;persistentStorage;seqLockName;config;configManager;configOverrides;fixedData;deviceInfoManager;deviceCollector;eventTabId;seq=0;lastActivityWriteAt=0;experiments={};dataPolicy;telemetryReporting=!1;telemetryReady=!1;reportedTelemetryKeys=new Set;pendingSelfTelemetry=[];probePageId;probeSeqs=new Map;windowObserver;passwordManagerSampler;crossOrigin;crossOriginAdoptedId;getWindowObserver(){return this.windowObserver??=new Pe(this.logger,(e,t)=>this.enqueueLowEvent(e,t),()=>this.lowEventFlushKeepalive())}handleConfig(e){let t=Re(e,this.configOverrides);t.sessionContinuity||=this.config.sessionContinuity,t.durableOutbox||=this.config.durableOutbox,this.config=t,this.queue.updateConfig(this.config)}getLogger(){return this.logger}applicationTag(){return this.options.applicationId?{applicationId:this.options.applicationId.toLowerCase()}:{}}setExperiment(e,t){this.setExperiments({[e]:t})}setExperiments(e){try{if(!e||typeof e!="object")return;let t=!1;for(let[i,r]of Object.entries(e)){if(!n.isValidExperimentKey(i)||!n.isValidExperimentVariant(r)){this.logger.debug(`Ignoring invalid experiment assignment "${String(i)}"`);continue}this.experiments[i]!==r&&(this.experiments[i]=r,t=!0)}t&&this.persistExperiments()}catch(t){this.logger.error("Failed to set experiments",t)}}clearExperiment(e){try{Object.prototype.hasOwnProperty.call(this.experiments,e)&&(delete this.experiments[e],this.persistExperiments())}catch(t){this.logger.error("Failed to clear experiment",t)}}clearExperiments(){try{if(Object.keys(this.experiments).length===0)return;this.experiments={},this.persistExperiments()}catch(e){this.logger.error("Failed to clear experiments",e)}}getExperiments(){return{...this.experiments}}getPersistentStorage(){return this.persistentStorage}getSdkConfig(){return Object.freeze({version:this.config.version,aap:this.config.aap,rawErrors:this.config.rawErrors})}setDataPolicy(e){try{if(!n.isValidDataPolicy(e)){this.logger.debug(`Ignoring invalid data policy code "${String(e)}"`);return}this.dataPolicy!==e&&(this.dataPolicy=e,this.persistDataPolicy())}catch(t){this.logger.error("Failed to set data policy",t)}}getDataPolicy(){return this.dataPolicy}static isValidDataPolicy(e){return typeof e=="number"&&Number.isInteger(e)&&e>=0&&e<=Pn}loadPersistedDataPolicy(){try{let e=this.persistentStorage.getItem(Ui);return n.isValidDataPolicy(e)?e:void 0}catch(e){this.logger.debug("Failed to load persisted data policy",e);return}}persistDataPolicy(){try{if(this.dataPolicy===void 0)return;this.persistentStorage.setItem(Ui,this.dataPolicy)}catch(e){this.logger.debug("Failed to persist data policy",e)}}static isValidExperimentKey(e){return typeof e=="string"&&e.length>0&&e.length<=Rn&&Ln.test(e)}static isValidExperimentVariant(e){return typeof e=="string"&&e.length>0&&e.length<=Fn}loadPersistedExperiments(){try{let e=this.persistentStorage.getItem(Ni);if(!e||typeof e!="object")return{};let t={};for(let[i,r]of Object.entries(e))n.isValidExperimentKey(i)&&n.isValidExperimentVariant(r)&&(t[i]=r);return t}catch(e){return this.logger.debug("Failed to load persisted experiments",e),{}}}persistExperiments(){try{this.persistentStorage.setItem(Ni,this.experiments)}catch(e){this.logger.debug("Failed to persist experiments",e)}}resolveExperiments(e){let t={...this.experiments};if(e&&typeof e=="object")for(let[i,r]of Object.entries(e))n.isValidExperimentKey(i)&&n.isValidExperimentVariant(r)&&(t[i]=r);return Object.keys(t).length>0?t:void 0}isTrackingBlocked(){return typeof navigator>"u"?!1:ki(Ut(0))}createCrossOriginSession(){let e=this.fixedData?.crossOriginSession;if(e)try{return this.isTrackingBlocked()?void 0:Ye.create({projectId:this.options.projectId,cookieDomain:e.cookieDomain,logger:this.logger,inactivityMs:()=>this.config.sessionInactivityMs,report:(t,i)=>this.reportTelemetry(t,i)})}catch(t){this.logger.error("Failed to set up the cross-origin session",t);return}}readLocalSessionActivity(){let e=new Map;try{let t=this.persistentStorage.getItem(Xe);t?.id&&typeof t.lastActiveAt=="number"&&e.set(t.id,t.lastActiveAt);let i=this.sessionStorage.getItem(kt);i&&typeof i=="object"&&i.id&&typeof i.lastActiveAt=="number"&&e.set(i.id,Math.max(e.get(i.id)??0,i.lastActiveAt))}catch(t){this.logger.error("Failed to read local session activity",t)}return e}bootCrossOriginSession(e){try{this.crossOriginAdoptedId=void 0;let t=Date.now(),i=this.config.sessionContinuity,r=i?Math.max(this.seq,this.persistentStorage.getItem(k)??0):this.seq,o=this.crossOrigin?.boot({sessionId:this.sessionId,lastActiveAt:this.sessionId&&e.get(this.sessionId)||0,seq:r},t);if(!o||!o.sessionId)return;o.adopted&&(this.sessionId=o.sessionId,this.crossOriginAdoptedId=o.sessionId,i?this.persistContinuitySession(o.sessionId,t):this.persistPerTabSession(o.sessionId,t),this.logger.debug("Adopted cross-origin session id",o.sessionId)),this.seq=o.seq,i&&this.persistentStorage.setItem(k,o.seq)}catch(t){this.logger.error("Failed to apply the cross-origin session",t)}}resolveSession(){if(!this.crossOrigin)return this.resolveSessionId();let e=this.readLocalSessionActivity();return this.sessionId=this.resolveSessionId(),this.bootCrossOriginSession(e),this.sessionId}crossOriginSessionMeta(e){if(this.crossOrigin?.isEnabled())return e&&e===this.crossOriginAdoptedId?"adopted":"own"}resolveSessionId(){try{if(this.config.sessionContinuity)return this.getContinuitySessionId();let e=Date.now(),t=this.readPerTabSession();if(t&&e-t.lastActiveAt<this.perTabInactivityMs(t))return this.persistPerTabSession(t.id,e),this.seq=0,t.id;let i=(0,O.v7)();return this.persistPerTabSession(i,e),this.seq=0,this.logger.debug("Created session id",i),i}catch(e){return this.logger.error("Failed to get session id",e),this.reportTelemetry("error","failed to get session id"),""}}getContinuitySessionId(){let e=Date.now(),t=this.persistentStorage.getItem(Xe);if(t?.id&&e-t.lastActiveAt<this.config.sessionInactivityMs)return this.persistContinuitySession(t.id,e),this.seq=this.persistentStorage.getItem(k)??0,t.id;if(!t?.id){let r=this.readPerTabSession();if(r&&e-r.lastActiveAt<this.config.sessionInactivityMs)return this.persistContinuitySession(r.id,e),this.persistentStorage.setItem(k,0),this.seq=0,this.logger.debug("Adopted per-tab session id as continuity session",r.id),r.id}let i=(0,O.v7)();return this.persistContinuitySession(i,e),this.persistentStorage.setItem(k,0),this.seq=0,this.logger.debug("Created continuity session id",i),i}persistContinuitySession(e,t){this.lastActivityWriteAt=t,this.persistentStorage.setItem(Xe,{id:e,lastActiveAt:t})}readPerTabSession(){let e=this.sessionStorage.getItem(kt);if(e){if(typeof e=="string")return $i.test(e)?{id:e,lastActiveAt:Date.now()}:void 0;if(typeof e.lastActiveAt=="number")return $i.test(e.id)?e:void 0}}persistPerTabSession(e,t){this.lastActivityWriteAt=t;let i=this.configOverrides.sessionInactivityMs!==void 0||this.config.version?this.config.sessionInactivityMs:this.readPerTabSession()?.inactivityMs;this.sessionStorage.setItem(kt,{id:e,lastActiveAt:t,...i===void 0?{}:{inactivityMs:i}})}perTabInactivityMs(e){return this.configOverrides.sessionInactivityMs!==void 0?this.config.sessionInactivityMs:e.inactivityMs??this.config.sessionInactivityMs}nextSeq(){if(!this.config.sessionContinuity){let i=Date.now();this.sessionId&&i-this.lastActivityWriteAt>=Wi&&this.persistPerTabSession(this.sessionId,i);let r=this.crossOrigin?this.crossOrigin.claim(this.sessionId,this.seq,i):this.seq;return this.seq=r+1,r}let e=()=>{let i=Date.now(),r=this.persistentStorage.getItem(Xe),o=!1;if(!r?.id&&this.sessionId)this.persistContinuitySession(this.sessionId,i);else if(r?.id)i-this.lastActivityWriteAt>=Wi&&this.persistContinuitySession(r.id,i),r.id!==this.sessionId&&(this.sessionId=r.id,this.queue.setSessionId(r.id),o=!0);else{let l=(0,O.v7)();this.persistContinuitySession(l,i),this.persistentStorage.setItem(k,0),this.sessionId=l,this.queue.setSessionId(l),this.seq=0,o=!0}let s=this.persistentStorage.getItem(k);o&&(this.seq=typeof s=="number"?s:0);let a=typeof s=="number"&&s>this.seq?s:this.seq;return this.crossOrigin&&(a=this.crossOrigin.claim(this.sessionId,a,i)),this.seq=a+1,this.persistentStorage.setItem(k,this.seq),a},t=this.config.seqLockTimeoutMs;return t===0||!oi(0)?e():De(0,this.seqLockName,e,{timeoutMs:t,onTimeout:()=>{this.logger.warn(`Sequence Web Lock acquisition timed out after ${t}ms; using fallback`),this.reportTelemetry("info",`seq web lock timeout; using fallback, ${t}ms`)}})}resolveTrackingSourcePath(){if(!(typeof window>"u"))return qt(0,this.config.sourcePathQuery,this.config.sourcePathQueryAllow)}resolveEventTabId(){return this.eventTabId===void 0&&(this.eventTabId=this.deviceCollector.getTabId()),this.eventTabId}trackSubflowStarted(e,t,i,r){let o={subflowType:e,...t};this.track("subflow_started",o,i?.userReference,void 0,void 0,i?.explicitTimestamp,i?.experiments,{id:r,subflowStartEventId:i?.subflowStartEventId,sessionId:i?.captureSessionId,initiator:i?.initiator})}trackSubflowTrigger(e,t,i){let r={subflowType:e,...t};this.track("subflow_trigger",r,i?.userReference,void 0,void 0,i?.explicitTimestamp,i?.experiments,{subflowStartEventId:i?.subflowStartEventId,sessionId:i?.captureSessionId,initiator:i?.initiator})}trackSubflowStepStarted(e,t,i,r,o){let s={subflowType:e,stepName:t,stepData:i,identifier:r?.identifier,ignoreAsInteraction:o};this.track("subflow_step_started",s,r?.userReference,void 0,void 0,r?.explicitTimestamp,r?.experiments,{subflowStartEventId:r?.subflowStartEventId,sessionId:r?.captureSessionId,initiator:r?.initiator})}trackSubflowStepFinished(e,t,i,r){let o={subflowType:e,stepName:t,stepData:i,identifier:r?.identifier};this.track("subflow_step_finished",o,r?.userReference,void 0,void 0,r?.explicitTimestamp,r?.experiments,{subflowStartEventId:r?.subflowStartEventId,sessionId:r?.captureSessionId,initiator:r?.initiator})}trackSubflowStepError(e,t,i,r){let o={subflowType:e,stepName:t,stepData:i,identifier:r?.identifier};this.track("subflow_step_error",o,r?.userReference,void 0,void 0,r?.explicitTimestamp,r?.experiments,{subflowStartEventId:r?.subflowStartEventId,sessionId:r?.captureSessionId,initiator:r?.initiator})}trackSubflowError(e,t,i){let r={subflowType:e,stepData:t};this.track("subflow_error",r,i?.userReference,void 0,void 0,i?.explicitTimestamp,i?.experiments,{subflowStartEventId:i?.subflowStartEventId,sessionId:i?.captureSessionId,initiator:i?.initiator})}async track(e,t,i,r,o,s,a,l){try{if(this.isTrackingBlocked()){this.logger.debug(`Skipping event "${e}" for blocked user agent.`);return}(e==="flow_finished"||e==="flow_auto_finished"||e==="flow_reset")&&this.windowObserver?.flushInputs();let p=s??Date.now(),d=l?.id??(0,O.v7)(),c=l?.sessionId??this.sessionId,f=this.nextSeq(),m=typeof f=="number"?f:await f,y=this.resolveTrackingSourcePath(),u={type:"predefined",name:e,id:d,timestamp:p,seq:m,data:t,user:i,contexts:o,tags:r,experiments:this.resolveExperiments(a),meta:{captureVersion:1,pageId:Q(),initiator:l?.initiator,trackingSourcePath:y??"",subflowStartEventId:l?.subflowStartEventId,tabId:this.resolveEventTabId()}},w=this.deviceInfoManager.getForEvent();w&&(u.deviceInfo=w),this.logger.debug(`Track: ${e}`,JSON.stringify(u,null,2));let T=this.passwordManagerSampler?.takeReport(c);T&&(u.passwordManagers=T),this.queue.enqueue(u,c)}catch(p){this.logger.error(`Failed to process event "${e}" before enqueue`,p),this.reportTelemetry("error",`failed to process event "${e}" before enqueue`)}}flowStarted(e,t,i,r,o){try{let s=(0,O.v7)(),a=this.sessionId,l={...this.options.defaultTags,...this.applicationTag(),...t};return this.track("flow_started",e,void 0,l,r,o?.explicitTimestamp,i,{id:s,sessionId:a}),this.flowHandle(s,a)}catch(s){return this.logger.warn("Failed to start flow",s),{enrich:async()=>{}}}}flowDecided(e,t,i){this.track("flow_decided",e,void 0,t,void 0,void 0,i)}conversion(e,t,i){let{userId:r,identifier:o,crossEnvironmentTransactionID:s,...a}=e,l={userId:r,identifier:o,crossEnvironmentTransactionID:s},p={...this.options.defaultTags,...this.applicationTag(),...t};this.track("conversion",a,l,p,void 0,void 0,i)}flowFinished(e,t,i){try{let{userId:r,identifier:o,...s}=e,a={userId:r,identifier:o},l=(0,O.v7)(),p=this.sessionId;return this.track("flow_finished",s,a,t,void 0,void 0,i,{id:l,sessionId:p}),this.flowHandle(l,p)}catch(r){return this.logger.warn("Failed to finish flow",r),{enrich:async()=>{}}}}flowHandle(e,t){return{enrich:async i=>{try{await this.track("flow_enriched",{targetEventId:e},{...i},void 0,void 0,void 0,void 0,{sessionId:t})}catch(r){this.logger.warn("Failed to enrich flow",r)}}}}flowReset(e,t,i){this.track("flow_reset",e,void 0,t,void 0,void 0,i)}flowAutoFinished(e,t,i){let{userId:r,identifier:o,...s}=e,a={userId:r,identifier:o};this.track("flow_auto_finished",s,a,t,void 0,void 0,i)}setUser(e){this.track("flow_enriched",{match:{flowType:"*",at:"during"},expFol:!0},{...e})}setFlowTags(e,t){try{if(!e||typeof e!="object"){this.logger.warn("setFlowTags: ignoring non-object tags");return}let i={};for(let[o,s]of Object.entries(e)){if(o===""||typeof s!="string"){this.logger.warn(`setFlowTags: ignoring invalid tag "${o}"`);continue}i[o]=s}if(Object.keys(i).length===0)return;let r={match:{flowType:t?.flowType??"*",at:"during"}};t?.expandToChildren!==void 0&&(r.expCh=t.expandToChildren),t?.expandToFollowing!==void 0&&(r.expFol=t.expandToFollowing),this.track("flow_enriched",r,void 0,i)}catch(i){this.logger.warn("Failed to set flow tags",i)}}authMethodsDecisionStarted(e,t,i,r){this.track("auth_method_decision_started",e,void 0,t,void 0,r?.explicitTimestamp,i)}authMethodsDecisionFinished(e,t,i){this.track("auth_method_decision_finished",e,void 0,t,void 0,void 0,i)}authDecisionStarted(e,t,i){this.track("auth_decision_started",e,void 0,t,void 0,void 0,i)}authDecisionFinished(e,t,i){this.track("auth_decision_finished",e,void 0,t,void 0,void 0,i)}enqueueLowEvent(e,t){try{if(this.isTrackingBlocked()){this.logger.debug(`Skipping low event "${e.lowType}" for blocked user agent.`);return}this.queue.enqueueLow({...e,captureSeq:e.captureSeq??P(),captureVersion:1,pageId:e.pageId??Q()},t)}catch(i){this.logger.error(`Failed to process low event "${e.lowType}" before enqueue`,i)}}telemetry(e,t){try{if(this.isTrackingBlocked()){this.logger.debug("Skipping telemetry for blocked user agent.");return}let i=typeof t=="string"?t:String(t);if(i.length===0)return;let r={id:(0,O.v7)(),level:e,message:i.length>Ki?i.slice(0,Ki):i,ts:Date.now()};this.queue.enqueueTelemetry(r)}catch(i){this.logger.error("Failed to process telemetry before enqueue",i)}}probe(e){try{if(this.isTrackingBlocked()){this.logger.debug("Skipping probe for blocked user agent.");return}if(!e||typeof e!="object"||typeof e.kind!="string"||!An.test(e.kind)){this.logger.debug("Dropping probe with an invalid kind.");return}let t=e.payload;if(!t||typeof t!="object"){this.logger.debug(`Dropping probe "${e.kind}" without an object payload.`);return}let i=typeof e.pageId=="string"&&Vi.test(e.pageId)?e.pageId:this.defaultProbePageId(),r={id:(0,O.v7)(),kind:e.kind,ts:typeof e.ts=="number"&&Number.isFinite(e.ts)?Math.round(e.ts):Date.now(),pageId:i,seq:this.nextProbeSeq(i),payload:t};typeof e.cfg=="string"&&Vi.test(e.cfg)&&(r.cfg=e.cfg);let o=Nn(e.ctx);o&&(r.ctx=o),this.queue.enqueueProbe(r)}catch(t){this.logger.error("Failed to process probe before enqueue",t)}}defaultProbePageId(){return this.probePageId??=qn()}nextProbeSeq(e){let t=this.probeSeqs.get(e)??0;if(this.probeSeqs.delete(e),this.probeSeqs.set(e,t+1),this.probeSeqs.size>Mn){let i=this.probeSeqs.keys().next().value;i!==void 0&&this.probeSeqs.delete(i)}return t}logInfo(e){this.telemetry("info",e)}logError(e){this.telemetry("error",e)}attachUndeliveredDeviceInfo(e){try{let t=this.deviceInfoManager;if(!t?.hasUndelivered())return;let i=Q(),r=e.find(o=>o.meta?.pageId===i&&!o.deviceInfo);r&&(r.deviceInfo=t.takeUndelivered())}catch(t){this.logger.error("Failed to attach device info to batch",t)}}reportTelemetry(e,t){if(!this.telemetryReporting){this.telemetryReporting=!0;try{if(this.reportedTelemetryKeys.has(t)||this.reportedTelemetryKeys.size>=_n)return;if(this.reportedTelemetryKeys.add(t),!this.telemetryReady){this.pendingSelfTelemetry.push({level:e,message:t});return}this.telemetry(e,t)}catch{}finally{this.telemetryReporting=!1}}}flushKeepalive(e="manual"){try{this.queue.flushKeepalive(e)}catch(t){this.logger.error("Failed to flush queue keepalive",t)}}lowEventFlushKeepalive(){this.config.tlf&&this.flushKeepalive("low-event-teardown")}passkeyLoginFullOperation(e){return new oe(this,e)}passkeyEnrollmentFullOperation(e){return new ce(this,e)}passkeyDeletionOperationFull(e){return new ue(this,e)}passwordLoginFullOperation(e){return new fe(this,e)}passwordEnrollmentFullOperation(e){return new he(this,e)}emailLinkOperationFull(e){return new pe(this,e)}continueEmailLinkOperation(e){return new de(this,e)}emailOtpOperationFull(e){return new ae(this,e)}smsOtpOperationFull(e){return new le(this,e)}totpOperationFull(e){return new ve(this,e)}provideIdentifierOperationFull(e){return new ge(this,e)}provideDataOperationFull(e){return new xe(this,e)}formOperationFull(e){return new Te(this,e)}socialLoginOperationFull(e){return new me(this,e)}ssoLoginOperationFull(e){return new ye(this,e)}appConfirmationOperationFull(e){return new Se(this,e)}keySigningOperationFull(e){return new G(this,e)}keyRegistrationOperationFull(e){return new z(this,e)}captchaOperationFull(e){return new be(this,e)}trustedDeviceCheckOperationFull(e){return new Ee(this,e)}trustedDeviceEnrollmentOperationFull(e){return new Ie(this,e)}async destroy(){if(this.crossOrigin?.stop(),this.configManager?.destroy(),this.passwordManagerSampler?.destroy(),this.windowObserver?.destroy(),this.deviceInfoManager.destroy(),this.config.td)try{await this.queue.flush("destroy")}catch(e){this.logger.error("Failed to flush queue during destroy",e)}this.queue.destroy()}getSessionId(){if(!this.sessionId){let e=this.resolveSession();e&&(this.sessionId=e,this.queue.setSessionId(e))}return this.sessionId||void 0}setCrossOriginContext(e){try{if(!this.crossOrigin)return!1;let t=e==null||e===""?void 0:e;if(t!==void 0&&!It(t))return this.logger.debug("Ignoring invalid cross-origin context (expected <= 128 chars of [A-Za-z0-9._~-])"),!1;let i=this.config.sessionContinuity?Math.max(this.seq,this.persistentStorage.getItem(k)??0):this.seq,r=this.crossOrigin.setContext(this.sessionId,i,t);return r===void 0?!1:(r>this.seq&&(this.seq=r,this.config.sessionContinuity&&this.persistentStorage.setItem(k,r)),!0)}catch(t){return this.logger.error("Failed to set the cross-origin context",t),!1}}getCrossOriginContext(){try{return this.crossOrigin?.getContext(this.sessionId)}catch(e){this.logger.error("Failed to read the cross-origin context",e);return}}resetSession(){let e=(0,O.v7)();return this.config.sessionContinuity?(this.persistContinuitySession(e,Date.now()),this.persistentStorage.setItem(k,0)):this.persistPerTabSession(e,Date.now()),this.sessionId=e,this.seq=0,this.queue.setSessionId(e),this.crossOrigin?.reset(e),this.logger.debug(`Session reset: ${e}`),e}},Bn="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_-";function qn(){let n=new Uint8Array(16);try{crypto.getRandomValues(n)}catch{for(let t=0;t<n.length;t++)n[t]=Math.floor(Math.random()*256)}let e="";for(let t=0;t<n.length;t++)e+=Bn[n[t]&63];return e}function Nn(n){if(!n||typeof n!="object")return;let e={};for(let t of["state","flowType","step"]){let i=n[t];typeof i=="string"&&i.length>0&&(e[t]=i.slice(0,Dn))}return Object.keys(e).length>0?e:void 0}var ji=["none","presence","size","class","format","partial","enum","computed","token","pseudonym","redacted","raw"];var Un={creationOptions:["/user/name","/user/displayName"],creationResponse:["/clientExtensionResults/prf/results"],requestOptions:[],assertionResponse:["/response/signature","/clientExtensionResults/prf/results"]};function zi(n,e){return Ze(n,"creationOptions",e)}function Qi(n,e){return Ze(n,"creationResponse",e)}function Ji(n){return Ze(n,"requestOptions")}function Yi(n,e){return Ze(n,"assertionResponse",e)}function Ze(n,e,t={}){try{let i=typeof n=="string"?JSON.parse(n):n;if(!Kn(i))return;let r=new Set(Un[e]),o=new Set,s=(a,l,p=0)=>{if(!r.has(l)){if(e==="creationOptions"&&l==="/user/id"||(e==="creationResponse"||e==="assertionResponse")&&l==="/response/userHandle"){if(a===null)return null;if(!t.userId)return;let d=typeof a=="string"?a:a instanceof ArrayBuffer||ArrayBuffer.isView(a)?Gi(a):void 0;if(d===void 0)return;try{let c=t.userId(d);return typeof c=="string"||c===null?c:void 0}catch{return}}if(a===null||typeof a=="string"||typeof a=="boolean")return a;if(typeof a=="number")return Number.isFinite(a)?a:null;if(typeof a=="object"){if(a instanceof ArrayBuffer||ArrayBuffer.isView(a))return Gi(a);if(p>64||o.has(a))throw new TypeError("Invalid telemetry payload");o.add(a);try{if(Array.isArray(a))return a.map((m,y)=>s(m,`${l}/${y}`,p+1));let d=Object.create(null);for(let m in a){let y=`${l}/${m.replace(/~/g,"~0").replace(/\//g,"~1")}`;if(r.has(y)||m==="toJSON")continue;let u=s(a[m],y,p+1);u!==void 0&&(d[m]=u)}let c=a,f=(m,y)=>{if(d[y]!==void 0||typeof c[m]!="function")return;let u=`${l}/${y}`,w=s(Reflect.apply(c[m],a,[]),u,p+1);w!==void 0&&(d[y]=w)};return l===""&&(e==="creationResponse"||e==="assertionResponse")&&f("getClientExtensionResults","clientExtensionResults"),l==="/response"&&e==="creationResponse"&&(f("getTransports","transports"),f("getAuthenticatorData","authenticatorData"),f("getPublicKey","publicKey"),f("getPublicKeyAlgorithm","publicKeyAlgorithm")),d}finally{o.delete(a)}}}};return JSON.stringify(s(i,""))}catch{return}}function Kn(n){return n!==null&&typeof n=="object"&&!Array.isArray(n)&&!(n instanceof ArrayBuffer)&&!ArrayBuffer.isView(n)}function Gi(n){let e=n instanceof ArrayBuffer?new Uint8Array(n):new Uint8Array(n.buffer,n.byteOffset,n.byteLength),t="";for(let i of e)t+=String.fromCharCode(i);return btoa(t).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/g,"")}var b;function Vn(n){let e=new ke(n);return b=e,e}function Wn(){return b}function $n(){return b?.resetSession()}function jn(){return b?.getSessionId()}function Gn(n){b?.setUser(n)}function zn(n,e){b?.setFlowTags(n,e)}function Qn(n,e){b?.setExperiment(n,e)}function Jn(n){b?.setExperiments(n)}function Yn(n){b?.clearExperiment(n)}function Xn(){b?.clearExperiments()}function Zn(){return b?.getExperiments()??{}}function eo(n,e){b?.telemetry(n,e)}function to(n){b?.logInfo(n)}function io(n){b?.logError(n)}async function ro(){b&&(await b.destroy(),b=void 0)}0&&(module.exports={AppConfirmationOperationFull,AuthEventName,CEREMONY_LOW_EVENT_TAIL_MS,CONFIG_BOUNDS,CONFIG_CACHE_STORAGE_KEY,CONFIG_REQUEST_HEADER,CONFIG_STORAGE_KEY,CaptchaOperationFull,CookieStorage,CorbadoTracker,DEFAULT_DEVICE_INFO_COLLECTOR_TIMEOUT_MS,DEFAULT_FLUSH_INTERVAL_MS,DEFAULT_MAX_ENTRIES,DEFAULT_MAX_SERIALIZED_LENGTH,DEFAULT_RELIABILITY_CONFIG,DEFAULT_SEQ_LOCK_TIMEOUT_MS,DEFAULT_SESSION_INACTIVITY_MS,EmailLinkContinuationOperation,EmailLinkOperationFull,EmailOtpOperationFull,EventStore,FormOperationFull,KeyRegistrationOperationFull,KeySigningOperationFull,LocalStorage,NamespacedStorage,OUTBOX_LOCK_NAME,OUTBOX_STORAGE_KEY,OperationFull,OperationFullProvideIdentifierWithCUI,PROBE_BATCH_MAX_BYTES,PROBE_BATCH_MAX_ITEMS,PROBE_PAYLOAD_MAX_BYTES,PROBE_QUEUE_MAX_BYTES,PROBE_QUEUE_MAX_ITEMS,PasskeyDeletionOperationFull,PasskeyEnrollmentOperationFull,PasskeyLoginOperationFull,PasswordEnrollmentOperationFull,PasswordLoginOperationFull,ProvideDataOperationFull,RAW_ERROR_BOUNDS,READER_EXPOSURES,RequestQueue,SDK_NAME,SDK_VERSION,SessionStorage,SmsOtpOperationFull,SocialLoginOperationFull,SsoLoginOperationFull,TotpOperationFull,TrustedDeviceCheckOperationFull,TrustedDeviceEnrollmentOperationFull,UNLOAD_BUDGET_BYTES,UNLOAD_PROBE_MAX_BYTES,cacheConfigRecord,clearExperiment,clearExperiments,createLogger,destroy,detectPasswordManagerExtensions,getExperiments,getSessionId,getTracker,init,loadCachedConfig,loadConfigRecord,logError,logInfo,namespacedKey,parseReliabilityConfig,resetSession,resolveFixedDataConfig,resolveRawErrorLimits,resolveReliabilityConfig,sanitizeAssertionResponse,sanitizeCreationOptions,sanitizeCreationResponse,sanitizeRequestOptions,serializeRawError,setExperiment,setExperiments,setFlowTags,setUser,telemetry,utf8Length});
|