@zaplier/sdk 1.8.0 → 1.8.2

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.
Files changed (144) hide show
  1. package/dist/core-ultra.min.js +10 -0
  2. package/dist/index.cjs +1615 -34
  3. package/dist/index.d.ts +11 -7
  4. package/dist/index.esm.js +1615 -34
  5. package/dist/v2/chunks/browser-apis-AyU2utpF.min.js +6 -0
  6. package/dist/v2/chunks/confidence-BslwbUCt.min.js +6 -0
  7. package/dist/v2/chunks/device-signals-2L_62qNZ.min.js +6 -0
  8. package/dist/v2/chunks/dom-blockers-C467-IRd.min.js +6 -0
  9. package/dist/v2/chunks/fingerprint-FfUEEIAd.min.js +6 -0
  10. package/dist/v2/chunks/hardware-9ikfSEs-.min.js +6 -0
  11. package/dist/v2/chunks/incognito-CkKAdE8Z.min.js +6 -0
  12. package/dist/v2/chunks/math-Q4s6nkVD.min.js +6 -0
  13. package/dist/v2/chunks/plugins-enhanced-mUjU1EXe.min.js +6 -0
  14. package/dist/v2/chunks/session-replay-C5Tp0d16.min.js +6 -0
  15. package/dist/v2/chunks/storage-Bl_8oytT.min.js +6 -0
  16. package/dist/v2/chunks/system-DTjxyOZF.min.js +6 -0
  17. package/dist/v2/core.d.ts +7 -0
  18. package/dist/v2/core.js +2 -2
  19. package/dist/v2/core.min.js +2 -2
  20. package/dist/v2/modules/anti-adblock.js +2 -2
  21. package/dist/v2/modules/browser-apis-C32PGYAh.js +6 -0
  22. package/dist/v2/modules/browser-apis-DzzjRXFN.js +6 -0
  23. package/dist/v2/modules/confidence-CLylpqVh.js +6 -0
  24. package/dist/v2/modules/device-signals-ChNkNSJR.js +6 -0
  25. package/dist/v2/modules/device-signals-D-VQg-o6.js +6 -0
  26. package/dist/v2/modules/dom-blockers-BamKJxCs.js +6 -0
  27. package/dist/v2/modules/dom-blockers-D9M2aO9M.js +6 -0
  28. package/dist/v2/modules/fingerprint-CRCL21-p.js +6 -0
  29. package/dist/v2/modules/fingerprint-Ddq30bun.js +6 -0
  30. package/dist/v2/modules/fingerprint.js +2 -2
  31. package/dist/v2/modules/hardware-BxWqOjae.js +6 -0
  32. package/dist/v2/modules/heatmap.js +1 -1
  33. package/dist/v2/modules/incognito-CBxUhUOT.js +6 -0
  34. package/dist/v2/modules/incognito-DpuYoC8S.js +6 -0
  35. package/dist/v2/modules/math-B13vt1ND.js +6 -0
  36. package/dist/v2/modules/plugins-enhanced-CnBdC9_k.js +6 -0
  37. package/dist/v2/modules/plugins-enhanced-D5ft0k0e.js +6 -0
  38. package/dist/v2/modules/replay.js +2 -2
  39. package/dist/v2/modules/storage-D8dcMojB.js +6 -0
  40. package/dist/v2/modules/system-ZMflVbka.js +6 -0
  41. package/package.json +47 -22
  42. package/dist/index.cjs.map +0 -1
  43. package/dist/index.esm.js.map +0 -1
  44. package/dist/index.js +0 -3517
  45. package/dist/index.js.map +0 -1
  46. package/dist/sdk.js +0 -26960
  47. package/dist/sdk.js.map +0 -1
  48. package/dist/sdk.legacy.min.js +0 -6
  49. package/dist/sdk.min.js +0 -7
  50. package/dist/src/core.d.ts +0 -87
  51. package/dist/src/core.d.ts.map +0 -1
  52. package/dist/src/index.d.ts +0 -15
  53. package/dist/src/index.d.ts.map +0 -1
  54. package/dist/src/modules/anti-adblock.d.ts +0 -113
  55. package/dist/src/modules/anti-adblock.d.ts.map +0 -1
  56. package/dist/src/modules/auto-tracker.d.ts +0 -240
  57. package/dist/src/modules/auto-tracker.d.ts.map +0 -1
  58. package/dist/src/modules/bot-detection.d.ts +0 -15
  59. package/dist/src/modules/bot-detection.d.ts.map +0 -1
  60. package/dist/src/modules/fingerprint/accessibility.d.ts +0 -155
  61. package/dist/src/modules/fingerprint/accessibility.d.ts.map +0 -1
  62. package/dist/src/modules/fingerprint/audio.d.ts +0 -15
  63. package/dist/src/modules/fingerprint/audio.d.ts.map +0 -1
  64. package/dist/src/modules/fingerprint/browser-apis.d.ts +0 -108
  65. package/dist/src/modules/fingerprint/browser-apis.d.ts.map +0 -1
  66. package/dist/src/modules/fingerprint/browser.d.ts +0 -14
  67. package/dist/src/modules/fingerprint/browser.d.ts.map +0 -1
  68. package/dist/src/modules/fingerprint/canvas.d.ts +0 -14
  69. package/dist/src/modules/fingerprint/canvas.d.ts.map +0 -1
  70. package/dist/src/modules/fingerprint/confidence.d.ts +0 -89
  71. package/dist/src/modules/fingerprint/confidence.d.ts.map +0 -1
  72. package/dist/src/modules/fingerprint/datetime-locale.d.ts +0 -76
  73. package/dist/src/modules/fingerprint/datetime-locale.d.ts.map +0 -1
  74. package/dist/src/modules/fingerprint/device-signals.d.ts +0 -29
  75. package/dist/src/modules/fingerprint/device-signals.d.ts.map +0 -1
  76. package/dist/src/modules/fingerprint/dom-blockers.d.ts +0 -56
  77. package/dist/src/modules/fingerprint/dom-blockers.d.ts.map +0 -1
  78. package/dist/src/modules/fingerprint/font-preferences.d.ts +0 -70
  79. package/dist/src/modules/fingerprint/font-preferences.d.ts.map +0 -1
  80. package/dist/src/modules/fingerprint/fonts-enhanced.d.ts +0 -43
  81. package/dist/src/modules/fingerprint/fonts-enhanced.d.ts.map +0 -1
  82. package/dist/src/modules/fingerprint/fonts.d.ts +0 -14
  83. package/dist/src/modules/fingerprint/fonts.d.ts.map +0 -1
  84. package/dist/src/modules/fingerprint/hardware.d.ts +0 -40
  85. package/dist/src/modules/fingerprint/hardware.d.ts.map +0 -1
  86. package/dist/src/modules/fingerprint/hashing.d.ts +0 -29
  87. package/dist/src/modules/fingerprint/hashing.d.ts.map +0 -1
  88. package/dist/src/modules/fingerprint/incognito.d.ts +0 -6
  89. package/dist/src/modules/fingerprint/incognito.d.ts.map +0 -1
  90. package/dist/src/modules/fingerprint/math-enhanced.d.ts +0 -70
  91. package/dist/src/modules/fingerprint/math-enhanced.d.ts.map +0 -1
  92. package/dist/src/modules/fingerprint/math.d.ts +0 -32
  93. package/dist/src/modules/fingerprint/math.d.ts.map +0 -1
  94. package/dist/src/modules/fingerprint/plugins-enhanced.d.ts +0 -97
  95. package/dist/src/modules/fingerprint/plugins-enhanced.d.ts.map +0 -1
  96. package/dist/src/modules/fingerprint/screen.d.ts +0 -15
  97. package/dist/src/modules/fingerprint/screen.d.ts.map +0 -1
  98. package/dist/src/modules/fingerprint/storage.d.ts +0 -45
  99. package/dist/src/modules/fingerprint/storage.d.ts.map +0 -1
  100. package/dist/src/modules/fingerprint/system.d.ts +0 -40
  101. package/dist/src/modules/fingerprint/system.d.ts.map +0 -1
  102. package/dist/src/modules/fingerprint/webgl.d.ts +0 -15
  103. package/dist/src/modules/fingerprint/webgl.d.ts.map +0 -1
  104. package/dist/src/modules/fingerprint.d.ts +0 -35
  105. package/dist/src/modules/fingerprint.d.ts.map +0 -1
  106. package/dist/src/modules/global-interface.d.ts +0 -157
  107. package/dist/src/modules/global-interface.d.ts.map +0 -1
  108. package/dist/src/modules/heatmap.d.ts +0 -145
  109. package/dist/src/modules/heatmap.d.ts.map +0 -1
  110. package/dist/src/modules/incognito-detection.d.ts +0 -23
  111. package/dist/src/modules/incognito-detection.d.ts.map +0 -1
  112. package/dist/src/modules/session-replay.d.ts +0 -93
  113. package/dist/src/modules/session-replay.d.ts.map +0 -1
  114. package/dist/src/modules/user-agent.d.ts +0 -35
  115. package/dist/src/modules/user-agent.d.ts.map +0 -1
  116. package/dist/src/modules/visitor-persistence.d.ts +0 -51
  117. package/dist/src/modules/visitor-persistence.d.ts.map +0 -1
  118. package/dist/src/sdk.d.ts +0 -289
  119. package/dist/src/sdk.d.ts.map +0 -1
  120. package/dist/src/types/config.d.ts +0 -44
  121. package/dist/src/types/config.d.ts.map +0 -1
  122. package/dist/src/types/detection.d.ts +0 -114
  123. package/dist/src/types/detection.d.ts.map +0 -1
  124. package/dist/src/types/events.d.ts +0 -174
  125. package/dist/src/types/events.d.ts.map +0 -1
  126. package/dist/src/types/fingerprint.d.ts +0 -252
  127. package/dist/src/types/fingerprint.d.ts.map +0 -1
  128. package/dist/src/types/index.d.ts +0 -83
  129. package/dist/src/types/index.d.ts.map +0 -1
  130. package/dist/src/types/methods.d.ts +0 -83
  131. package/dist/src/types/methods.d.ts.map +0 -1
  132. package/dist/src/types/visitor.d.ts +0 -90
  133. package/dist/src/types/visitor.d.ts.map +0 -1
  134. package/dist/src/utils/browser.d.ts +0 -114
  135. package/dist/src/utils/browser.d.ts.map +0 -1
  136. package/dist/src/utils/lazy-loader.d.ts +0 -60
  137. package/dist/src/utils/lazy-loader.d.ts.map +0 -1
  138. package/dist/src/utils/session-utils.d.ts +0 -58
  139. package/dist/src/utils/session-utils.d.ts.map +0 -1
  140. package/dist/src/utils/webgl-cache.d.ts +0 -43
  141. package/dist/src/utils/webgl-cache.d.ts.map +0 -1
  142. package/dist/v2/chunks/fingerprint-ergvAID6.js +0 -8461
  143. package/dist/v2/chunks/replay-CM8dTFmL.js +0 -12158
  144. package/dist/v2/chunks/session-replay-C_UkGoTj.js +0 -240
@@ -1,6 +1,6 @@
1
1
  /*!
2
2
  * Zaplier SDK v2.0.0 - Performance Optimized
3
3
  * Advanced privacy-first tracking with code splitting
4
- * (c) 2025 Zaplier Team
4
+ * (c) 2026 Zaplier Team
5
5
  */
6
- class e{constructor(){this.name="fetch",this.available="undefined"!=typeof fetch}async send(e,t){const s=Date.now();try{const n=await fetch(t,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)});if(!n.ok)throw new Error(`HTTP ${n.status}`);return{success:!0,method:this.name,latency:Date.now()-s}}catch(e){return{success:!1,method:this.name,latency:Date.now()-s,error:e instanceof Error?e.message:String(e)}}}}class t{constructor(e){this.name="websocket",this.available="undefined"!=typeof WebSocket,this.connected=!1,this.messageQueue=[],this.baseUrl=e.replace(/^http/,"ws")}async connect(){if(!this.connected&&this.available)return new Promise((e,t)=>{try{this.ws=new WebSocket(`${this.baseUrl}/ws/track`),this.ws.onopen=()=>{this.connected=!0,this.processQueue(),e()},this.ws.onerror=()=>{t(new Error("WebSocket connection failed"))},this.ws.onclose=()=>{this.connected=!1,setTimeout(()=>this.connect().catch(()=>{}),5e3)}}catch(e){t(e)}})}processQueue(){for(;this.messageQueue.length>0&&this.connected;){const e=this.messageQueue.shift();if(e&&this.ws)try{this.ws.send(JSON.stringify(e.data)),e.resolve({success:!0,method:this.name})}catch(t){e.resolve({success:!1,method:this.name,error:t instanceof Error?t.message:String(t)})}}}async send(e,t){const s=Date.now();if(!this.available)return{success:!1,method:this.name,error:"WebSocket not available"};if(!this.connected)try{await this.connect()}catch(e){return{success:!1,method:this.name,error:e instanceof Error?e.message:String(e)}}return new Promise(t=>{if(this.connected&&this.ws)try{this.ws.send(JSON.stringify(e)),t({success:!0,method:this.name,latency:Date.now()-s})}catch(e){t({success:!1,method:this.name,error:e instanceof Error?e.message:String(e)})}else this.messageQueue.push({data:e,resolve:e=>t({...e,latency:Date.now()-s})})})}destroy(){this.ws&&(this.ws.close(),this.connected=!1)}}class s{constructor(e,t){this.name="elysia-websocket",this.available="undefined"!=typeof WebSocket,this.connected=!1,this.baseUrl=e,this.token=t}async send(e,t){const s=Date.now();try{if(!this.token)throw new Error("Missing token for WebSocket connection");if(await this.connect(),!this.ws||!this.connected)throw new Error("WebSocket not connected");return new Promise((t,n)=>{const o=e=>{try{const n=JSON.parse(e.data);this.ws?.removeEventListener("message",o),t({success:n.success||!1,method:this.name,latency:Date.now()-s})}catch(e){this.ws?.removeEventListener("message",o),n(new Error("Failed to parse WebSocket response"))}};this.ws?.addEventListener("message",o),this.ws?.send(JSON.stringify({...e,eventId:e.eventId||crypto.randomUUID(),sessionId:e.sessionId||e.s,eventType:e.eventType||e.type||"websocket_event",eventName:e.eventName||e.name,url:e.url,userAgent:e.userAgent||navigator.userAgent,timestamp:(new Date).toISOString(),fingerprintHash:e.fingerprintHash,stableCoreHash:e.stableCoreHash,stableCoreVector:e.stableCoreVector})),setTimeout(()=>{this.ws?.removeEventListener("message",o),n(new Error("WebSocket response timeout"))},5e3)})}catch(e){return{success:!1,method:this.name,latency:Date.now()-s,error:e instanceof Error?e.message:String(e)}}}async connect(){if(!this.connected||this.ws?.readyState!==WebSocket.OPEN)return new Promise((e,t)=>{try{const s=new URL(this.baseUrl),n=`${"https:"===s.protocol?"wss:":"ws:"}//${s.host}/ws/track?token=${encodeURIComponent(this.token)}`;this.ws=new WebSocket(n),this.ws.onopen=()=>{this.connected=!0,e()},this.ws.onerror=()=>{this.connected=!1,t(new Error("WebSocket connection failed"))},this.ws.onclose=()=>{this.connected=!1},setTimeout(()=>{this.connected||(this.ws?.close(),t(new Error("WebSocket connection timeout")))},5e3)}catch(e){t(e)}})}cleanup(){this.ws&&(this.ws.close(),this.connected=!1)}}class n{constructor(){this.name="webrtc",this.available=void 0!==globalThis.RTCPeerConnection,this.connected=!1}async send(e,t){const s=Date.now();if(!this.available)return{success:!1,method:this.name,error:"WebRTC not available"};try{return await this.setupConnection(),this.dataChannel&&this.connected?(this.dataChannel.send(JSON.stringify(e)),{success:!0,method:this.name,latency:Date.now()-s}):{success:!1,method:this.name,error:"DataChannel not ready"}}catch(e){return{success:!1,method:this.name,error:e instanceof Error?e.message:String(e)}}}async setupConnection(){if(!this.connected)return new Promise((e,t)=>{try{this.pc=new globalThis.RTCPeerConnection({iceServers:[{urls:"stun:stun.l.google.com:19302"}]}),this.dataChannel=this.pc.createDataChannel("tracking",{ordered:!1,maxRetransmits:0}),this.dataChannel.onopen=()=>{this.connected=!0,e()},this.dataChannel.onerror=e=>{t(e)}}catch(e){t(e)}})}destroy(){this.dataChannel&&this.dataChannel.close(),this.pc&&this.pc.close(),this.connected=!1}}class o{constructor(e,t,s={}){this.transports=[],this.stats={totalRequests:0,successfulRequests:0,methodSuccess:new Map,methodFailures:new Map},this.baseUrl=e,this.token=t,this.config={enabled:!0,methods:["elysia-websocket","fetch"],fallbackDelay:100,maxRetries:2,debug:!1,...s},this.initializeTransports()}initializeTransports(){const t={"elysia-websocket":()=>new s(this.baseUrl,this.token),fetch:()=>new e,webrtc:()=>new n};this.transports=this.config.methods.map(e=>t[e]?.()).filter(e=>void 0!==e&&e.available),this.config.debug}async send(e,t="/tracking/event"){if(this.stats.totalRequests++,!this.config.enabled||0===this.transports.length)return{success:!1,method:"none",error:"No transports available"};let s="";for(const n of this.transports){this.config.debug;try{const o=await n.send(e,`${this.baseUrl}${t}`);if(o.success)return this.stats.successfulRequests++,this.updateMethodStats(n.name,!0),this.config.debug,o;this.updateMethodStats(n.name,!1),s=o.error||"Unknown error",this.config.debug}catch(e){s=e instanceof Error?e.message:String(e),this.updateMethodStats(n.name,!1),this.config.debug}this.config.fallbackDelay>0&&await new Promise(e=>setTimeout(e,this.config.fallbackDelay))}return{success:!1,method:"all_failed",error:`All transports failed. Last error: ${s}`}}updateMethodStats(e,t){t?this.stats.methodSuccess.set(e,(this.stats.methodSuccess.get(e)||0)+1):this.stats.methodFailures.set(e,(this.stats.methodFailures.get(e)||0)+1)}getStats(){return{...this.stats}}getSuccessRates(){const e={};for(const t of this.transports){const s=this.stats.methodSuccess.get(t.name)||0,n=s+(this.stats.methodFailures.get(t.name)||0);e[t.name]=n>0?s/n*100:0}return e}destroy(){this.transports.forEach(e=>{e.destroy&&e.destroy()}),this.transports=[]}async testTransports(){const e={},t={test:!0,timestamp:Date.now()};for(const s of this.transports)try{e[s.name]=await s.send(t,`${this.baseUrl}/test`)}catch(t){e[s.name]={success:!1,method:s.name,error:t instanceof Error?t.message:String(t)}}return e}}export{o as AntiAdblockManager,s as ElysiaWebSocketTransport,e as FetchTransport,n as WebRTCTransport,t as WebSocketTransport};
6
+ class e{constructor(){this.name="fetch",this.available="undefined"!=typeof fetch}async send(e,t){const s=Date.now();try{const n=await fetch(t,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)});if(!n.ok)throw new Error(`HTTP ${n.status}`);return{success:!0,method:this.name,latency:Date.now()-s}}catch(e){return{success:!1,method:this.name,latency:Date.now()-s,error:e instanceof Error?e.message:String(e)}}}}class t{constructor(e){this.name="websocket",this.available="undefined"!=typeof WebSocket,this.connected=!1,this.messageQueue=[],this.baseUrl=e.replace(/^http/,"ws")}async connect(){if(!this.connected&&this.available)return new Promise((e,t)=>{try{this.ws=new WebSocket(`${this.baseUrl}/ws/track`),this.ws.onopen=()=>{this.connected=!0,this.processQueue(),e()},this.ws.onerror=()=>{t(new Error("WebSocket connection failed"))},this.ws.onclose=()=>{this.connected=!1,setTimeout(()=>this.connect().catch(()=>{}),5e3)}}catch(e){t(e)}})}processQueue(){for(;this.messageQueue.length>0&&this.connected;){const e=this.messageQueue.shift();if(e&&this.ws)try{this.ws.send(JSON.stringify(e.data)),e.resolve({success:!0,method:this.name})}catch(t){e.resolve({success:!1,method:this.name,error:t instanceof Error?t.message:String(t)})}}}async send(e,t){const s=Date.now();if(!this.available)return{success:!1,method:this.name,error:"WebSocket not available"};if(!this.connected)try{await this.connect()}catch(e){return{success:!1,method:this.name,error:e instanceof Error?e.message:String(e)}}return new Promise(t=>{if(this.connected&&this.ws)try{this.ws.send(JSON.stringify(e)),t({success:!0,method:this.name,latency:Date.now()-s})}catch(e){t({success:!1,method:this.name,error:e instanceof Error?e.message:String(e)})}else this.messageQueue.push({data:e,resolve:e=>t({...e,latency:Date.now()-s})})})}destroy(){this.ws&&(this.ws.close(),this.connected=!1)}}class s{constructor(e,t){this.name="elysia-websocket",this.available="undefined"!=typeof WebSocket,this.connected=!1,this.baseUrl=e,this.token=t}async send(e,t){const s=Date.now();try{if(!this.token)throw new Error("Missing token for WebSocket connection");if(await this.connect(),!this.ws||!this.connected)throw new Error("WebSocket not connected");return new Promise((t,n)=>{var o,r;const a=e=>{var o,r;try{const n=JSON.parse(e.data);null===(o=this.ws)||void 0===o||o.removeEventListener("message",a),t({success:n.success||!1,method:this.name,latency:Date.now()-s})}catch(e){null===(r=this.ws)||void 0===r||r.removeEventListener("message",a),n(new Error("Failed to parse WebSocket response"))}};null===(o=this.ws)||void 0===o||o.addEventListener("message",a),null===(r=this.ws)||void 0===r||r.send(JSON.stringify({...e,eventId:e.eventId||crypto.randomUUID(),sessionId:e.sessionId||e.s,eventType:e.eventType||e.type||"websocket_event",eventName:e.eventName||e.name,url:e.url,userAgent:e.userAgent||navigator.userAgent,timestamp:(new Date).toISOString(),fingerprintHash:e.fingerprintHash,stableCoreHash:e.stableCoreHash,stableCoreVector:e.stableCoreVector})),setTimeout(()=>{var e;null===(e=this.ws)||void 0===e||e.removeEventListener("message",a),n(new Error("WebSocket response timeout"))},5e3)})}catch(e){return{success:!1,method:this.name,latency:Date.now()-s,error:e instanceof Error?e.message:String(e)}}}async connect(){var e;if(!this.connected||(null===(e=this.ws)||void 0===e?void 0:e.readyState)!==WebSocket.OPEN)return new Promise((e,t)=>{try{const s=new URL(this.baseUrl),n=`${"https:"===s.protocol?"wss:":"ws:"}//${s.host}/ws/track?token=${encodeURIComponent(this.token)}`;this.ws=new WebSocket(n),this.ws.onopen=()=>{this.connected=!0,e()},this.ws.onerror=()=>{this.connected=!1,t(new Error("WebSocket connection failed"))},this.ws.onclose=()=>{this.connected=!1},setTimeout(()=>{var e;this.connected||(null===(e=this.ws)||void 0===e||e.close(),t(new Error("WebSocket connection timeout")))},5e3)}catch(e){t(e)}})}cleanup(){this.ws&&(this.ws.close(),this.connected=!1)}}class n{constructor(){this.name="webrtc",this.available=void 0!==globalThis.RTCPeerConnection,this.connected=!1}async send(e,t){const s=Date.now();if(!this.available)return{success:!1,method:this.name,error:"WebRTC not available"};try{return await this.setupConnection(),this.dataChannel&&this.connected?(this.dataChannel.send(JSON.stringify(e)),{success:!0,method:this.name,latency:Date.now()-s}):{success:!1,method:this.name,error:"DataChannel not ready"}}catch(e){return{success:!1,method:this.name,error:e instanceof Error?e.message:String(e)}}}async setupConnection(){if(!this.connected)return new Promise((e,t)=>{try{this.pc=new globalThis.RTCPeerConnection({iceServers:[{urls:"stun:stun.l.google.com:19302"}]}),this.dataChannel=this.pc.createDataChannel("tracking",{ordered:!1,maxRetransmits:0}),this.dataChannel.onopen=()=>{this.connected=!0,e()},this.dataChannel.onerror=e=>{t(e)}}catch(e){t(e)}})}destroy(){this.dataChannel&&this.dataChannel.close(),this.pc&&this.pc.close(),this.connected=!1}}class o{constructor(e,t,s={}){this.transports=[],this.stats={totalRequests:0,successfulRequests:0,methodSuccess:new Map,methodFailures:new Map},this.baseUrl=e,this.token=t,this.config={enabled:!0,methods:["elysia-websocket","fetch"],fallbackDelay:100,maxRetries:2,debug:!1,...s},this.initializeTransports()}initializeTransports(){const t={"elysia-websocket":()=>new s(this.baseUrl,this.token),fetch:()=>new e,webrtc:()=>new n};this.transports=this.config.methods.map(e=>{var s;return null===(s=t[e])||void 0===s?void 0:s.call(t)}).filter(e=>void 0!==e&&e.available),this.config.debug}async send(e,t="/tracking/event"){if(this.stats.totalRequests++,!this.config.enabled||0===this.transports.length)return{success:!1,method:"none",error:"No transports available"};let s="";for(const n of this.transports){this.config.debug;try{const o=await n.send(e,`${this.baseUrl}${t}`);if(o.success)return this.stats.successfulRequests++,this.updateMethodStats(n.name,!0),this.config.debug,o;this.updateMethodStats(n.name,!1),s=o.error||"Unknown error",this.config.debug}catch(e){s=e instanceof Error?e.message:String(e),this.updateMethodStats(n.name,!1),this.config.debug}this.config.fallbackDelay>0&&await new Promise(e=>setTimeout(e,this.config.fallbackDelay))}return{success:!1,method:"all_failed",error:`All transports failed. Last error: ${s}`}}updateMethodStats(e,t){t?this.stats.methodSuccess.set(e,(this.stats.methodSuccess.get(e)||0)+1):this.stats.methodFailures.set(e,(this.stats.methodFailures.get(e)||0)+1)}getStats(){return{...this.stats}}getSuccessRates(){const e={};for(const t of this.transports){const s=this.stats.methodSuccess.get(t.name)||0,n=s+(this.stats.methodFailures.get(t.name)||0);e[t.name]=n>0?s/n*100:0}return e}destroy(){this.transports.forEach(e=>{e.destroy&&e.destroy()}),this.transports=[]}async testTransports(){const e={},t={test:!0,timestamp:Date.now()};for(const s of this.transports)try{e[s.name]=await s.send(t,`${this.baseUrl}/test`)}catch(t){e[s.name]={success:!1,method:s.name,error:t instanceof Error?t.message:String(t)}}return e}}export{o as AntiAdblockManager,s as ElysiaWebSocketTransport,e as FetchTransport,n as WebRTCTransport,t as WebSocketTransport};
@@ -0,0 +1,6 @@
1
+ /*!
2
+ * Zaplier SDK v2.0.0 - Performance Optimized
3
+ * Advanced privacy-first tracking with code splitting
4
+ * (c) 2025 Zaplier Team
5
+ */
6
+ import{i as e,a as t,b as n}from"./fingerprint-CRCL21-p.js";function r(){var t;try{return e()&&null!==(t=navigator.pdfViewerEnabled)&&void 0!==t?t:null}catch{return null}}function o(){try{if(!t())return-1;const{ApplePaySession:e}=window;if("function"!=typeof(null==e?void 0:e.canMakePayments))return-1;if(!n())return-2;if(window.self!==window.top)return-3;try{return e.canMakePayments()?1:0}catch(e){if(e instanceof Error&&"InvalidAccessError"===e.name)return-2;throw e}}catch{return-1}}function i(){try{return"attributionReporting"in window||"privateClickMeasurement"in window||null}catch{return null}}function a(){const t={enabled:!1,sameSiteSupport:!1,secureSupport:!1,partitionedSupport:!1};try{if(t.enabled=navigator.cookieEnabled,!t.enabled)return t;t.sameSiteSupport=c("__rb_test_samesite","SameSite=Strict"),n()&&(t.secureSupport=c("__rb_test_secure","Secure")),n()&&e()&&(t.partitionedSupport=c("__rb_test_partitioned","Partitioned; Secure; SameSite=None"))}catch{}return t}function c(e,t){try{const n="1",r=`${e}=${n}; ${t}; path=/`;document.cookie=r;const o=document.cookie.includes(`${e}=${n}`);return u(e),o}catch{return u(e),!1}}function u(e){try{const t=[`${e}=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/`,`${e}=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/; domain=${location.hostname}`,`${e}=; max-age=0; path=/`,`${e}=; max-age=0; path=/; domain=${location.hostname}`];for(const e of t)try{document.cookie=e}catch{}setTimeout(()=>{try{document.cookie=`${e}=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/`}catch{}},100)}catch{}}function s(){try{const e=document.createElement("canvas"),t=e.getContext("webgl")||e.getContext("experimental-webgl");return t?(t.getSupportedExtensions()||[]).sort():[]}catch{return[]}}function l(){try{const e=performance.memory;return e?{usedJSHeapSize:e.usedJSHeapSize,totalJSHeapSize:e.totalJSHeapSize,jsHeapSizeLimit:e.jsHeapSizeLimit}:null}catch{return null}}function p(){try{const e=navigator.connection||navigator.mozConnection||navigator.webkitConnection;return e?{effectiveType:e.effectiveType,downlink:e.downlink,rtt:e.rtt,saveData:e.saveData}:null}catch{return null}}function d(){var e;const t={};try{t.webkitTemporaryStorage="webkitTemporaryStorage"in navigator,t.webkitPersistentStorage="webkitPersistentStorage"in navigator,window.safari&&(t.safariObjectTypes=Object.getOwnPropertyNames(window.safari)),t.chromeRuntime=!!(null===(e=window.chrome)||void 0===e?void 0:e.runtime),t.mozInnerScreenX="mozInnerScreenX"in window,t.msCredentials="msCredentials"in navigator}catch{}return t}function m(){return"undefined"!=typeof window&&"undefined"!=typeof navigator}function f(){const e=r(),t=o(),n=i(),c=a(),u=s(),m=l(),f=p(),w=d();let S="unknown";w.chromeRuntime?S="chrome":-1!==t?S="safari":w.mozInnerScreenX?S="firefox":w.msCredentials&&(S="edge");const h=Boolean(e||t>-1||n||m||f),g=[null!==e,-1!==t,null!==n,c.enabled,u.length>0,null!==m,null!==f,Object.keys(w).length>0];return{pdfViewerEnabled:e,applePayState:t,privateClickMeasurement:n,cookieCapabilities:c,webglExtensions:u,performanceMemory:m,connectionInfo:f,vendorProperties:w,browserVendor:S,hasNativeFeatures:h,apiScore:Math.round(g.filter(Boolean).length/g.length*100)}}export{o as getApplePayState,f as getBrowserApisFingerprint,p as getConnectionInfo,a as getCookieCapabilities,r as getPdfViewerEnabled,l as getPerformanceMemory,i as getPrivateClickMeasurement,d as getVendorProperties,s as getWebGLExtensions,m as isBrowserApisDetectionAvailable};
@@ -0,0 +1,6 @@
1
+ /*!
2
+ * Zaplier SDK v2.0.0 - Performance Optimized
3
+ * Advanced privacy-first tracking with code splitting
4
+ * (c) 2026 Zaplier Team
5
+ */
6
+ import{i as e,a as t,b as n}from"./fingerprint-Ddq30bun.js";function r(){var t;try{return e()&&null!==(t=navigator.pdfViewerEnabled)&&void 0!==t?t:null}catch{return null}}function o(){try{if(!t())return-1;const{ApplePaySession:e}=window;if("function"!=typeof(null==e?void 0:e.canMakePayments))return-1;if(!n())return-2;if(window.self!==window.top)return-3;try{return e.canMakePayments()?1:0}catch(e){if(e instanceof Error&&"InvalidAccessError"===e.name)return-2;throw e}}catch{return-1}}function i(){try{return"attributionReporting"in window||"privateClickMeasurement"in window||null}catch{return null}}function a(){const t={enabled:!1,sameSiteSupport:!1,secureSupport:!1,partitionedSupport:!1};try{if(t.enabled=navigator.cookieEnabled,!t.enabled)return t;t.sameSiteSupport=c("__rb_test_samesite","SameSite=Strict"),n()&&(t.secureSupport=c("__rb_test_secure","Secure")),n()&&e()&&(t.partitionedSupport=c("__rb_test_partitioned","Partitioned; Secure; SameSite=None"))}catch{}return t}function c(e,t){try{const n="1",r=`${e}=${n}; ${t}; path=/`;document.cookie=r;const o=document.cookie.includes(`${e}=${n}`);return u(e),o}catch{return u(e),!1}}function u(e){try{const t=[`${e}=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/`,`${e}=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/; domain=${location.hostname}`,`${e}=; max-age=0; path=/`,`${e}=; max-age=0; path=/; domain=${location.hostname}`];for(const e of t)try{document.cookie=e}catch{}setTimeout(()=>{try{document.cookie=`${e}=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/`}catch{}},100)}catch{}}function s(){try{const e=document.createElement("canvas"),t=e.getContext("webgl")||e.getContext("experimental-webgl");return t?(t.getSupportedExtensions()||[]).sort():[]}catch{return[]}}function l(){try{const e=performance.memory;return e?{usedJSHeapSize:e.usedJSHeapSize,totalJSHeapSize:e.totalJSHeapSize,jsHeapSizeLimit:e.jsHeapSizeLimit}:null}catch{return null}}function p(){try{const e=navigator.connection||navigator.mozConnection||navigator.webkitConnection;return e?{effectiveType:e.effectiveType,downlink:e.downlink,rtt:e.rtt,saveData:e.saveData}:null}catch{return null}}function d(){var e;const t={};try{t.webkitTemporaryStorage="webkitTemporaryStorage"in navigator,t.webkitPersistentStorage="webkitPersistentStorage"in navigator,window.safari&&(t.safariObjectTypes=Object.getOwnPropertyNames(window.safari)),t.chromeRuntime=!!(null===(e=window.chrome)||void 0===e?void 0:e.runtime),t.mozInnerScreenX="mozInnerScreenX"in window,t.msCredentials="msCredentials"in navigator}catch{}return t}function m(){return"undefined"!=typeof window&&"undefined"!=typeof navigator}function f(){const e=r(),t=o(),n=i(),c=a(),u=s(),m=l(),f=p(),w=d();let S="unknown";w.chromeRuntime?S="chrome":-1!==t?S="safari":w.mozInnerScreenX?S="firefox":w.msCredentials&&(S="edge");const h=Boolean(e||t>-1||n||m||f),g=[null!==e,-1!==t,null!==n,c.enabled,u.length>0,null!==m,null!==f,Object.keys(w).length>0];return{pdfViewerEnabled:e,applePayState:t,privateClickMeasurement:n,cookieCapabilities:c,webglExtensions:u,performanceMemory:m,connectionInfo:f,vendorProperties:w,browserVendor:S,hasNativeFeatures:h,apiScore:Math.round(g.filter(Boolean).length/g.length*100)}}export{o as getApplePayState,f as getBrowserApisFingerprint,p as getConnectionInfo,a as getCookieCapabilities,r as getPdfViewerEnabled,l as getPerformanceMemory,i as getPrivateClickMeasurement,d as getVendorProperties,s as getWebGLExtensions,m as isBrowserApisDetectionAvailable};
@@ -0,0 +1,6 @@
1
+ /*!
2
+ * Zaplier SDK v2.0.0 - Performance Optimized
3
+ * Advanced privacy-first tracking with code splitting
4
+ * (c) 2026 Zaplier Team
5
+ */
6
+ const e={canvas:{stability:.95,entropy:.9,uniqueness:.85,spoofResistance:.8},webgl:{stability:.92,entropy:.88,uniqueness:.82,spoofResistance:.85},audio:{stability:.9,entropy:.85,uniqueness:.8,spoofResistance:.9},hardware:{stability:.98,entropy:.7,uniqueness:.75,spoofResistance:.95},screen:{stability:.85,entropy:.6,uniqueness:.65,spoofResistance:.7},system:{stability:.8,entropy:.65,uniqueness:.7,spoofResistance:.6},browser:{stability:.75,entropy:.6,uniqueness:.65,spoofResistance:.5},fonts:{stability:.7,entropy:.75,uniqueness:.7,spoofResistance:.4},math:{stability:.95,entropy:.8,uniqueness:.9,spoofResistance:.95},storage:{stability:.6,entropy:.5,uniqueness:.6,spoofResistance:.3},incognito:{stability:.5,entropy:.4,uniqueness:.3,spoofResistance:.2},domBlockers:{stability:.8,entropy:.7,uniqueness:.6,spoofResistance:.9},accessibility:{stability:.9,entropy:.6,uniqueness:.7,spoofResistance:.85},browserApis:{stability:.85,entropy:.75,uniqueness:.8,spoofResistance:.7},pluginsEnhanced:{stability:.7,entropy:.65,uniqueness:.75,spoofResistance:.5},mathFingerprint:{stability:.99,entropy:.95,uniqueness:.9,spoofResistance:.98},fontPreferences:{stability:.92,entropy:.88,uniqueness:.85,spoofResistance:.75},dateTimeLocale:{stability:.95,entropy:.7,uniqueness:.75,spoofResistance:.8},accessibilityEnhanced:{stability:.93,entropy:.65,uniqueness:.8,spoofResistance:.9},enhancedFonts:{stability:.88,entropy:.85,uniqueness:.82,spoofResistance:.7},webrtc:{stability:.92,entropy:.85,uniqueness:.8,spoofResistance:.9},permissions:{stability:.88,entropy:.75,uniqueness:.72,spoofResistance:.8},speech:{stability:.9,entropy:.7,uniqueness:.65,spoofResistance:.85},cssFeatures:{stability:.97,entropy:.88,uniqueness:.85,spoofResistance:.95},mediaCodecs:{stability:.95,entropy:.82,uniqueness:.78,spoofResistance:.92},wasmFeatures:{stability:.98,entropy:.7,uniqueness:.72,spoofResistance:.97},mathml:{stability:.9,entropy:.8,uniqueness:.75,spoofResistance:.88},clientHints:{stability:.93,entropy:.92,uniqueness:.9,spoofResistance:.85}},s={domBlockers:{stability:.8,entropy:.7,uniqueness:.6,spoofResistance:.9},accessibility:{stability:.9,entropy:.6,uniqueness:.7,spoofResistance:.85},browserApis:{stability:.85,entropy:.75,uniqueness:.8,spoofResistance:.7}};function n(n){const t=e[n]||s[n];if(!t)return.5;const i=.3*t.stability+.25*t.entropy+.25*t.uniqueness+.2*t.spoofResistance;return Math.max(.1,Math.min(1,i))}function t(t,i={}){const{requireMinimumComponents:o=4,penalizeMissingCore:a=!0,adjustForIncognito:c=!0}=i,r=t.filter(e=>e.success),p=[];r.length<o&&p.push(`Collect at least ${o} components for reliable identification`);let u=0,l=0,y=0,f=0,b=0;const m=["canvas","webgl","audio","hardware"].filter(e=>!r.some(s=>s.component===e));for(const t of r){const i=n(t.component),o=e[t.component]||s[t.component];o&&(u+=i,l+=o.stability*i,y+=o.entropy*i,f+=o.uniqueness*i,b+=o.spoofResistance*i)}const h=u>0?l/u:0,q=u>0?y/u:0,R=u>0?b/u:0;let d,g,w=.35*h+.25*q+.25*(u>0?f/u:0)+.15*R,M=w;return a&&m.length>0&&(M-=.1*m.length,p.push(`Missing core components: ${m.join(", ")}`)),r.length<6&&(M-=.05*(6-r.length)),c&&r.some(e=>"incognito"===e.component)&&(M+=.02),r.filter(e=>["domBlockers","accessibility","browserApis","math"].includes(e.component)).length>=2&&(M+=.05),M=Math.max(0,Math.min(1,M)),M>=.995?(d=.995,g="Very High"):M>=.99?(d=.99,g="High"):M>=.95?(d=.95,g="Medium"):M>=.8?(d=.8,g="Low"):(d=.5,g="Very Low",p.push("Consider implementing additional fingerprinting techniques")),M<.95&&p.push("Enable all available fingerprinting components for better accuracy"),R<.6&&p.push("Include more spoof-resistant components like audio and WebGL"),q<.6&&p.push("Add high-entropy components like canvas and math fingerprinting"),{score:d,level:g,factors:{componentCount:r.length,weightedScore:Math.round(1e3*w)/1e3,stabilityScore:Math.round(1e3*h)/1e3,entropyScore:Math.round(1e3*q)/1e3,spoofResistanceScore:Math.round(1e3*R)/1e3},recommendations:p.slice(0,3)}}export{s as ADVANCED_COMPONENT_CHARACTERISTICS,e as COMPONENT_CHARACTERISTICS,n as calculateComponentWeight,t as calculateConfidence};
@@ -0,0 +1,6 @@
1
+ /*!
2
+ * Zaplier SDK v2.0.0 - Performance Optimized
3
+ * Advanced privacy-first tracking with code splitting
4
+ * (c) 2025 Zaplier Team
5
+ */
6
+ function n(){var n,e,t,r;try{const i=screen,c=null!==(n=i.availTop)&&void 0!==n?n:0,u=null!==(e=i.availLeft)&&void 0!==e?e:0,o=null!==(t=i.availWidth)&&void 0!==t?t:i.width,l=null!==(r=i.availHeight)&&void 0!==r?r:i.height,a=c||null,s=i.width-o-u||null,d=i.height-l-c||null,h=u||null;if(null===a&&null===s&&null===d&&null===h)return null;const v=n=>null===n?null:10*Math.round(n/10);return{top:v(a),right:v(s),bottom:v(d),left:v(h)}}catch{return null}}function e(){var n,e,t,r;try{const i=(null===(n=navigator.platform)||void 0===n?void 0:n.toLowerCase())||"",c=(null===(e=navigator.userAgent)||void 0===e?void 0:e.toLowerCase())||"";if(i.includes("win")&&(c.includes("wow64")||c.includes("x64")||c.includes("x86_64")))return 0;if(i.includes("linux")&&(i.includes("x86_64")||c.includes("x86_64")))return 0;if(i.includes("mac")&&(i.includes("intel")||c.includes("intel mac")))return 0;if(i.includes("x86")||i.includes("x64")||i.includes("intel")||i.includes("amd64")||c.includes("x86")||c.includes("amd64"))return 0;if(i.includes("arm")||c.includes("arm")||c.includes("aarch64")||i.includes("aarch64"))return 255;try{const n=document.createElement("canvas"),e=n.getContext("webgl")||n.getContext("experimental-webgl");if(e&&"getExtension"in e&&"getParameter"in e){const n=e.getExtension("WEBGL_debug_renderer_info");if(n){const i=(null===(t=e.getParameter(n.UNMASKED_VENDOR_WEBGL))||void 0===t?void 0:t.toLowerCase())||"",c=(null===(r=e.getParameter(n.UNMASKED_RENDERER_WEBGL))||void 0===r?void 0:r.toLowerCase())||"";if(i.includes("intel")||i.includes("nvidia")||i.includes("amd")||c.includes("intel")||c.includes("nvidia")||c.includes("amd")||c.includes("radeon")||c.includes("geforce")||c.includes("quadro")||c.includes("iris")||c.includes("uhd")||c.includes("hd graphics"))return 0;if(c.includes("mali")||c.includes("adreno")||c.includes("powervr")||c.includes("tegra")||c.includes("apple gpu")||i.includes("arm")||c.includes("videocore"))return 255}}}catch{}try{const n=new Float32Array(1),e=new Uint8Array(n.buffer);n[0]=1/0,n[0]=n[0]-n[0];const t=e[3];return i.includes("linux"),t}catch{return}}catch{return}}function t(){try{const n=navigator;let e=0;void 0!==n.maxTouchPoints?e=n.maxTouchPoints:void 0!==n.msMaxTouchPoints&&(e=n.msMaxTouchPoints);let t=!1;try{document.createEvent("TouchEvent"),t=!0}catch{t=!1}return{maxTouchPoints:e,touchEvent:t,touchStart:"ontouchstart"in window}}catch{return}}function r(){const n=[],e=["chrome","safari","__crWeb","__gCrWeb","yandex","__yb","__ybro","__firefox__","__edgeTrackingPreventionStatistics","webkit","oprt","samsungAr","ucweb","UCShellJava","puffinDevice"];for(const t of e){const e=window[t];e&&"object"==typeof e&&n.push(t)}return n.sort()}function i(){try{const n=navigator.deviceMemory;if("number"==typeof n)return Math.round(n);if("string"==typeof n){const e=parseFloat(n);return isNaN(e)?void 0:Math.round(e)}return}catch{return}}function c(){try{return screen.colorDepth||void 0}catch{return}}function u(){try{for(const n of["rec2020","p3","srgb"])if(window.matchMedia(`(color-gamut: ${n})`).matches)return n;return}catch{return}}function o(){return{screenFrame:n(),hardwareConcurrency:navigator.hardwareConcurrency||void 0,deviceMemory:i(),architecture:e(),touchSupport:t(),vendorFlavors:r(),cpuClass:navigator.cpuClass||void 0,colorDepth:c(),colorGamut:u()}}export{o as collectDeviceSignals};
@@ -0,0 +1,6 @@
1
+ /*!
2
+ * Zaplier SDK v2.0.0 - Performance Optimized
3
+ * Advanced privacy-first tracking with code splitting
4
+ * (c) 2026 Zaplier Team
5
+ */
6
+ function n(){var n,e,t,r;try{const i=screen,c=null!==(n=i.availTop)&&void 0!==n?n:0,u=null!==(e=i.availLeft)&&void 0!==e?e:0,o=null!==(t=i.availWidth)&&void 0!==t?t:i.width,l=null!==(r=i.availHeight)&&void 0!==r?r:i.height,a=c||null,s=i.width-o-u||null,d=i.height-l-c||null,h=u||null;if(null===a&&null===s&&null===d&&null===h)return null;const v=n=>null===n?null:10*Math.round(n/10);return{top:v(a),right:v(s),bottom:v(d),left:v(h)}}catch{return null}}function e(){var n,e,t,r;try{const i=(null===(n=navigator.platform)||void 0===n?void 0:n.toLowerCase())||"",c=(null===(e=navigator.userAgent)||void 0===e?void 0:e.toLowerCase())||"";if(i.includes("win")&&(c.includes("wow64")||c.includes("x64")||c.includes("x86_64")))return 0;if(i.includes("linux")&&(i.includes("x86_64")||c.includes("x86_64")))return 0;if(i.includes("mac")&&(i.includes("intel")||c.includes("intel mac")))return 0;if(i.includes("x86")||i.includes("x64")||i.includes("intel")||i.includes("amd64")||c.includes("x86")||c.includes("amd64"))return 0;if(i.includes("arm")||c.includes("arm")||c.includes("aarch64")||i.includes("aarch64"))return 255;try{const n=document.createElement("canvas"),e=n.getContext("webgl")||n.getContext("experimental-webgl");if(e&&"getExtension"in e&&"getParameter"in e){const n=e.getExtension("WEBGL_debug_renderer_info");if(n){const i=(null===(t=e.getParameter(n.UNMASKED_VENDOR_WEBGL))||void 0===t?void 0:t.toLowerCase())||"",c=(null===(r=e.getParameter(n.UNMASKED_RENDERER_WEBGL))||void 0===r?void 0:r.toLowerCase())||"";if(i.includes("intel")||i.includes("nvidia")||i.includes("amd")||c.includes("intel")||c.includes("nvidia")||c.includes("amd")||c.includes("radeon")||c.includes("geforce")||c.includes("quadro")||c.includes("iris")||c.includes("uhd")||c.includes("hd graphics"))return 0;if(c.includes("mali")||c.includes("adreno")||c.includes("powervr")||c.includes("tegra")||c.includes("apple gpu")||i.includes("arm")||c.includes("videocore"))return 255}}}catch{}try{const n=new Float32Array(1),e=new Uint8Array(n.buffer);n[0]=1/0,n[0]=n[0]-n[0];const t=e[3];return i.includes("linux"),t}catch{return}}catch{return}}function t(){try{const n=navigator;let e=0;void 0!==n.maxTouchPoints?e=n.maxTouchPoints:void 0!==n.msMaxTouchPoints&&(e=n.msMaxTouchPoints);let t=!1;try{document.createEvent("TouchEvent"),t=!0}catch{t=!1}return{maxTouchPoints:e,touchEvent:t,touchStart:"ontouchstart"in window}}catch{return}}function r(){const n=[],e=["chrome","safari","__crWeb","__gCrWeb","yandex","__yb","__ybro","__firefox__","__edgeTrackingPreventionStatistics","webkit","oprt","samsungAr","ucweb","UCShellJava","puffinDevice"];for(const t of e){const e=window[t];e&&"object"==typeof e&&n.push(t)}return n.sort()}function i(){try{const n=navigator.deviceMemory;if("number"==typeof n)return Math.round(n);if("string"==typeof n){const e=parseFloat(n);return isNaN(e)?void 0:Math.round(e)}return}catch{return}}function c(){try{return screen.colorDepth||void 0}catch{return}}function u(){try{for(const n of["rec2020","p3","srgb"])if(window.matchMedia(`(color-gamut: ${n})`).matches)return n;return}catch{return}}function o(){return{screenFrame:n(),hardwareConcurrency:navigator.hardwareConcurrency||void 0,deviceMemory:i(),architecture:e(),touchSupport:t(),vendorFlavors:r(),cpuClass:navigator.cpuClass||void 0,colorDepth:c(),colorGamut:u()}}export{o as collectDeviceSignals};
@@ -0,0 +1,6 @@
1
+ /*!
2
+ * Zaplier SDK v2.0.0 - Performance Optimized
3
+ * Advanced privacy-first tracking with code splitting
4
+ * (c) 2025 Zaplier Team
5
+ */
6
+ import{g as e}from"./fingerprint-CRCL21-p.js";function t(){const e=atob;return{adBlock:["#ad-banner",".advertisement",e("I2FkLWNvbnRhaW5lcg=="),e("LmFkdmVydGlzZW1lbnQ="),e("W2NsYXNzKj0iYWQtIl0=")],uBlockOrigin:["#ublock-stats",".adsbygoogle",e("I2dvb2dsZV9hZHM="),e("LmFkc2J5Z29vZ2xl"),e("LnVibG9jay1ibG9ja2Vk")],adGuardBase:[".BetterJsPopOverlay",e("I2FkXzMwMFgyNTA="),e("I2Jhbm5lcmZsb2F0"),e("I2NhbXBhaWduLWJhbm5lcg=="),e("I0FkLUNvbnRlbnQ=")],adGuardAnnoyances:[".hs-sosyal","#cookieconsentdiv",'div[class^="app_gdpr"]',".as-oil",'[data-cypress="soft-push-notification-modal"]'],easyList:[".yb-floorad",e("LndpZGdldF9wb19hZHNfd2lkZ2V0"),e("LnRyYWZmaWNqdW5reS1hZA=="),".textad_headline",e("LnNwb25zb3JlZC10ZXh0LWxpbmtz")],privacyBadger:["#privacy-badger-popup",".privacy-badger-blocked",e("LnByaXZhY3ktYmFkZ2Vy")],ghostery:["#ghostery-popup",".ghostery-blocking",e("Lmdob3N0ZXJ5LWJsb2NrZWQ=")],brave:["#brave-ads-blocked",".brave-blocked",e("LmJyYXZlLWFkLWJsb2Nr")],facebookContainer:[".facebook-container-blocked",e("LmZiLWJsb2NrZWQ=")],cookieBlockers:[".cookie-notice-blocked","#cookie-banner-hidden",e("LmNvb2tpZS1ibG9ja2Vy")],trackingProtection:[".tracking-blocked","#tracking-protection-enabled",e("LnRyYWNrZXItYmxvY2tlZA==")]}}function r(e){const t=document.createElement("div");if(e.startsWith("#"))t.id=e.substring(1);else if(e.startsWith("."))t.className=e.substring(1);else if(e.includes("["))try{const r=e.match(/\[([^=]+)([*^$|~]?=)"([^"]+)"\]/);if(r&&r[1]&&r[3]){const[,e,o,n]=r;"*="===o?t.setAttribute(e,`test-${n}-test`):t.setAttribute(e,n)}}catch{t.className="test-element"}else t.className=e.replace(/[^a-zA-Z0-9-_]/g,"");return t}function o(e){const t=e.style;t.setProperty("visibility","hidden","important"),t.setProperty("display","block","important"),t.setProperty("position","absolute","important"),t.setProperty("left","-9999px","important"),t.setProperty("width","1px","important"),t.setProperty("height","1px","important"),t.setProperty("pointer-events","none","important"),t.setProperty("z-index","-1","important")}function n(e){return new Promise(t=>setTimeout(t,e))}async function a(e){var t,a;const i=document,s=i.createElement("div"),c=new Array(e.length),l={};o(s);const d=i.createDocumentFragment();for(let n=0;n<e.length;n++){const s=e[n];if(s)try{const e=r(s),l=i.createElement("div");"DIALOG"===e.tagName&&(null===(a=(t=e).show)||void 0===a||a.call(t)),o(l),l.appendChild(e),d.appendChild(l),c[n]=e}catch(e){c[n]=void 0}}s.appendChild(d);let m=0;for(;!i.body&&m<100;)await n(50),m++;if(!i.body)throw new Error("Document body not available for DOM blockers detection");i.body.appendChild(s);try{await n(50),await new Promise(t=>{requestAnimationFrame(()=>{for(let t=0;t<e.length;t++){const r=c[t],o=e[t];r&&o&&!r.offsetParent&&(l[o]=!0)}t()})})}finally{try{s.parentNode&&s.parentNode.removeChild(s)}catch(e){setTimeout(()=>{try{s.parentNode&&s.parentNode.removeChild(s)}catch{}},0)}}return l}async function i(e={}){const{debug:r=!1,timeout:o=5e3}=e;try{if(!s())return"BROWSER_INCOMPATIBLE";if(!document||!document.body)return"DOM_NOT_AVAILABLE";const e=t(),r=Object.keys(e),n=[].concat(...r.map(t=>e[t]||[])),i=new Promise((e,t)=>{setTimeout(()=>t(new Error("DOM blockers detection timeout")),o)}),c=await Promise.race([a(n),i]);return r.filter(t=>{const r=e[t];return!(!r||0===r.length)&&r.map(e=>c[e]).filter(Boolean).length>.6*r.length}).sort()}catch(e){if(e instanceof Error){if(e.message.includes("timeout"))return"TIMEOUT";if("SecurityError"===e.name||e.message.includes("SecurityError"))return"SECURITY_ERROR"}return"NOT_SUPPORTED"}}function s(){return e().canRunDOMBlockers}async function c(e={}){const t=await i(e),r=Array.isArray(t)?t:[];return{activeBlockers:r,blockerCount:r.length,hasAdBlocker:r.some(e=>["adBlock","uBlockOrigin","adGuardBase","easyList"].includes(e)),hasPrivacyExtension:r.some(e=>["privacyBadger","ghostery","brave"].includes(e)),hasTrackingProtection:r.includes("trackingProtection")}}export{a as getBlockedSelectors,t as getBlockerFilters,i as getDomBlockers,c as getDomBlockersFingerprint,s as isDomBlockersDetectionAvailable};
@@ -0,0 +1,6 @@
1
+ /*!
2
+ * Zaplier SDK v2.0.0 - Performance Optimized
3
+ * Advanced privacy-first tracking with code splitting
4
+ * (c) 2026 Zaplier Team
5
+ */
6
+ import{g as e}from"./fingerprint-Ddq30bun.js";function t(){const e=atob;return{adBlock:["#ad-banner",".advertisement",e("I2FkLWNvbnRhaW5lcg=="),e("LmFkdmVydGlzZW1lbnQ="),e("W2NsYXNzKj0iYWQtIl0=")],uBlockOrigin:["#ublock-stats",".adsbygoogle",e("I2dvb2dsZV9hZHM="),e("LmFkc2J5Z29vZ2xl"),e("LnVibG9jay1ibG9ja2Vk")],adGuardBase:[".BetterJsPopOverlay",e("I2FkXzMwMFgyNTA="),e("I2Jhbm5lcmZsb2F0"),e("I2NhbXBhaWduLWJhbm5lcg=="),e("I0FkLUNvbnRlbnQ=")],adGuardAnnoyances:[".hs-sosyal","#cookieconsentdiv",'div[class^="app_gdpr"]',".as-oil",'[data-cypress="soft-push-notification-modal"]'],easyList:[".yb-floorad",e("LndpZGdldF9wb19hZHNfd2lkZ2V0"),e("LnRyYWZmaWNqdW5reS1hZA=="),".textad_headline",e("LnNwb25zb3JlZC10ZXh0LWxpbmtz")],privacyBadger:["#privacy-badger-popup",".privacy-badger-blocked",e("LnByaXZhY3ktYmFkZ2Vy")],ghostery:["#ghostery-popup",".ghostery-blocking",e("Lmdob3N0ZXJ5LWJsb2NrZWQ=")],brave:["#brave-ads-blocked",".brave-blocked",e("LmJyYXZlLWFkLWJsb2Nr")],facebookContainer:[".facebook-container-blocked",e("LmZiLWJsb2NrZWQ=")],cookieBlockers:[".cookie-notice-blocked","#cookie-banner-hidden",e("LmNvb2tpZS1ibG9ja2Vy")],trackingProtection:[".tracking-blocked","#tracking-protection-enabled",e("LnRyYWNrZXItYmxvY2tlZA==")]}}function r(e){const t=document.createElement("div");if(e.startsWith("#"))t.id=e.substring(1);else if(e.startsWith("."))t.className=e.substring(1);else if(e.includes("["))try{const r=e.match(/\[([^=]+)([*^$|~]?=)"([^"]+)"\]/);if(r&&r[1]&&r[3]){const[,e,o,n]=r;"*="===o?t.setAttribute(e,`test-${n}-test`):t.setAttribute(e,n)}}catch{t.className="test-element"}else t.className=e.replace(/[^a-zA-Z0-9-_]/g,"");return t}function o(e){const t=e.style;t.setProperty("visibility","hidden","important"),t.setProperty("display","block","important"),t.setProperty("position","absolute","important"),t.setProperty("left","-9999px","important"),t.setProperty("width","1px","important"),t.setProperty("height","1px","important"),t.setProperty("pointer-events","none","important"),t.setProperty("z-index","-1","important")}function n(e){return new Promise(t=>setTimeout(t,e))}async function a(e){var t,a;const i=document,s=i.createElement("div"),c=new Array(e.length),l={};o(s);const d=i.createDocumentFragment();for(let n=0;n<e.length;n++){const s=e[n];if(s)try{const e=r(s),l=i.createElement("div");"DIALOG"===e.tagName&&(null===(a=(t=e).show)||void 0===a||a.call(t)),o(l),l.appendChild(e),d.appendChild(l),c[n]=e}catch(e){c[n]=void 0}}s.appendChild(d);let m=0;for(;!i.body&&m<100;)await n(50),m++;if(!i.body)throw new Error("Document body not available for DOM blockers detection");i.body.appendChild(s);try{await n(50),await new Promise(t=>{requestAnimationFrame(()=>{for(let t=0;t<e.length;t++){const r=c[t],o=e[t];r&&o&&!r.offsetParent&&(l[o]=!0)}t()})})}finally{try{s.parentNode&&s.parentNode.removeChild(s)}catch(e){setTimeout(()=>{try{s.parentNode&&s.parentNode.removeChild(s)}catch{}},0)}}return l}async function i(e={}){const{debug:r=!1,timeout:o=5e3}=e;try{if(!s())return"BROWSER_INCOMPATIBLE";if(!document||!document.body)return"DOM_NOT_AVAILABLE";const e=t(),r=Object.keys(e),n=[].concat(...r.map(t=>e[t]||[])),i=new Promise((e,t)=>{setTimeout(()=>t(new Error("DOM blockers detection timeout")),o)}),c=await Promise.race([a(n),i]);return r.filter(t=>{const r=e[t];return!(!r||0===r.length)&&r.map(e=>c[e]).filter(Boolean).length>.6*r.length}).sort()}catch(e){if(e instanceof Error){if(e.message.includes("timeout"))return"TIMEOUT";if("SecurityError"===e.name||e.message.includes("SecurityError"))return"SECURITY_ERROR"}return"NOT_SUPPORTED"}}function s(){return e().canRunDOMBlockers}async function c(e={}){const t=await i(e),r=Array.isArray(t)?t:[];return{activeBlockers:r,blockerCount:r.length,hasAdBlocker:r.some(e=>["adBlock","uBlockOrigin","adGuardBase","easyList"].includes(e)),hasPrivacyExtension:r.some(e=>["privacyBadger","ghostery","brave"].includes(e)),hasTrackingProtection:r.includes("trackingProtection")}}export{a as getBlockedSelectors,t as getBlockerFilters,i as getDomBlockers,c as getDomBlockersFingerprint,s as isDomBlockersDetectionAvailable};
@@ -0,0 +1,6 @@
1
+ /*!
2
+ * Zaplier SDK v2.0.0 - Performance Optimized
3
+ * Advanced privacy-first tracking with code splitting
4
+ * (c) 2025 Zaplier Team
5
+ */
6
+ function e(e,t){const n=e[1]+t[1]&4294967295;return[e[0]+t[0]+(n<e[1]?1:0)&4294967295,n]}function t(e,t){const n=65535&e[1],o=e[1]>>>16,r=65535&t[1],a=t[1]>>>16,i=n*a+o*r&4294967295,c=o*a+(i>>>16),s=n*r+((65535&i)<<16)&4294967295;return[e[0]*t[1]+e[1]*t[0]+c&4294967295,s]}function n(e,t){return 0==(t%=64)?e:t<32?[4294967295&(e[0]<<t|e[1]>>>32-t),4294967295&(e[1]<<t|e[0]>>>32-t)]:(t-=32,[4294967295&(e[1]<<t|e[0]>>>32-t),4294967295&(e[0]<<t|e[1]>>>32-t)])}function o(e,t){return[e[0]^t[0],e[1]^t[1]]}function r(e){let n=e;return n=o(n,[0,n[0]>>>1]),n=t(n,[4283543511,3981806797]),n=o(n,[0,n[0]>>>1]),n=t(n,[3301882366,444984403]),n=o(n,[0,n[0]>>>1]),n}function a(a,i=0){const c=function(e){const t=[];for(let n=0;n<e.length;n+=4){let o=0;for(let t=Math.min(3,e.length-n-1);t>=0;t--)o=o<<8|e.charCodeAt(n+t);t.push(o)}return t}(a),s=Math.floor(c.length/4);let l=[0,i],u=[0,i];const d=[2277735313,289559509],h=[1291169091,658871167];for(let r=0;r<s;r++){const a=4*r,i=4*r+2;let s=[c[a+1]||0,c[a]||0],m=[c[i+1]||0,c[i]||0];s=t(s,d),s=n(s,31),s=t(s,h),l=o(l,s),l=n(l,27),l=e(l,u),l=e(t(l,[0,5]),[0,1390208809]),m=t(m,h),m=n(m,33),m=t(m,d),u=o(u,m),u=n(u,31),u=e(u,l),u=e(t(u,[0,5]),[0,944331445])}const m=4*s,f=c.length-m;let p=[0,0],g=[0,0];return f>=12&&(g=o(g,[c[m+3]||0,0])),f>=8&&(g=o(g,[0,c[m+2]||0]),g=t(g,h),g=n(g,33),g=t(g,d),u=o(u,g)),f>=4&&(p=o(p,[c[m+1]||0,0])),f>=1&&(p=o(p,[0,c[m]||0]),p=t(p,d),p=n(p,31),p=t(p,h),l=o(l,p)),l=o(l,[0,a.length]),u=o(u,[0,a.length]),l=e(l,u),u=e(u,l),l=r(l),u=r(u),l=e(l,u),u=e(u,l),(l[0]>>>0).toString(16).padStart(8,"0")+(l[1]>>>0).toString(16).padStart(8,"0")+((u[0]>>>0).toString(16).padStart(8,"0")+(u[1]>>>0).toString(16).padStart(8,"0"))}function i(e){let t=0;if(0===e.length)return t.toString(36);for(let n=0;n<e.length;n++)t=(t<<5)-t+e.charCodeAt(n),t&=t;return Math.abs(t).toString(36)}function c(e){return["duration","timestamp","error","errors","collectionTime","startTime","endTime","_timestamp"].includes(e)||e.endsWith("_timestamp")||e.endsWith("Timestamp")}function s(e){if(null==e)return null;if(Array.isArray(e))return e.map(e=>s(e)).filter(e=>null!==e).sort((e,t)=>JSON.stringify(e).localeCompare(JSON.stringify(t)));if("object"==typeof e){const t=Object.keys(e).sort(),n={};for(const o of t){if(c(o))continue;const t=s(e[o]);null!==t&&(n[o]=t)}return n}return"number"==typeof e?Number.isFinite(e)?Math.abs(e)<1e-4?0:Math.abs(e)>1e6?e>0?1e6:-1e6:Number(e>=.1&&e<=10?e.toFixed(3):e.toFixed(2)):0:"string"==typeof e?e.trim().toLowerCase():"boolean"==typeof e?e:null}const l={SAMPLE_RATE:44100,DURATION:.1,FREQUENCIES:[440,1e3,1760,3520],COMPRESSOR_THRESHOLD:-50,COMPRESSOR_KNEE:40,COMPRESSOR_RATIO:12,COMPRESSOR_ATTACK:.003,COMPRESSOR_RELEASE:.25,FILTER_FREQUENCY:2e3,GAIN_VALUE:.5,DELAY_TIME:.02};function u(){try{const e=window.OfflineAudioContext||window.webkitOfflineAudioContext;if(!e)return null;const t=44100,n=l.DURATION;return new e(1,Math.floor(t*n),t)}catch{return null}}async function d(e){try{const t=l.FREQUENCIES.map((t,n)=>{const o=e.createOscillator(),r=["sine","square","sawtooth","triangle"],a=r[n%r.length];return o.type=a||"sine",o.frequency.setValueAtTime(t,e.currentTime),o}),n=e.createDynamicsCompressor(),o=e.createBiquadFilter(),r=e.createGain(),a=e.createDelay(),c=e.createAnalyser();n.threshold.setValueAtTime(l.COMPRESSOR_THRESHOLD,e.currentTime),n.knee.setValueAtTime(l.COMPRESSOR_KNEE,e.currentTime),n.ratio.setValueAtTime(l.COMPRESSOR_RATIO,e.currentTime),n.attack.setValueAtTime(l.COMPRESSOR_ATTACK,e.currentTime),n.release.setValueAtTime(l.COMPRESSOR_RELEASE,e.currentTime),o.type="bandpass",o.frequency.setValueAtTime(l.FILTER_FREQUENCY,e.currentTime),o.Q.setValueAtTime(.7,e.currentTime),r.gain.setValueAtTime(l.GAIN_VALUE,e.currentTime),a.delayTime.setValueAtTime(l.DELAY_TIME,e.currentTime);const s=e.createGain();s.gain.setValueAtTime(.25,e.currentTime),t.forEach(e=>{e.connect(s)}),s.connect(o),o.connect(n),n.connect(r),r.connect(a),a.connect(c),c.connect(e.destination),t.forEach((e,t)=>{e.start(.01*t),e.stop(l.DURATION)});const u=(await e.startRendering()).getChannelData(0),d=[];for(let e=0;e<32;e++){const t=Math.floor(u.length/32*e);d.push(u[t]||0)}const h=Math.sqrt(d.reduce((e,t)=>e+t*t,0)/d.length),m=Math.max(...d.map(Math.abs)),f=d.reduce((e,t)=>e+Math.abs(t),0)/d.length;let p=0;for(let e=0;e<Math.min(d.length,16);e++){const t=d[e];void 0!==t&&(p+=e*Math.abs(t))}return i([...d,h,m,f,p].join(","))}catch(e){return i("multi_oscillator_error")}}async function h(e){try{const t=[100,440,1e3,2e3,4e3,8e3,12e3,16e3],n=[];for(const o of t){const t=e.createOscillator(),r=e.createAnalyser();t.type="sine",t.frequency.setValueAtTime(o,e.currentTime),r.fftSize=256,r.smoothingTimeConstant=0,t.connect(r),r.connect(e.destination),t.start(),t.stop(.05);const a=u();if(a){const e=a.createOscillator();e.type="sine",e.frequency.setValueAtTime(o,a.currentTime),e.connect(a.destination),e.start(),e.stop(.05);try{const e=(await a.startRendering()).getChannelData(0),t=Math.sqrt(e.reduce((e,t)=>e+t*t,0)/e.length);n.push(t)}catch{n.push(0)}}}return i(n.join(","))}catch(e){return i("frequency_response_error")}}async function m(e){try{const t=e.createOscillator(),n=e.createDynamicsCompressor();t.type="triangle",t.frequency.setValueAtTime(l.FREQUENCIES[0],e.currentTime),n.threshold.setValueAtTime(l.COMPRESSOR_THRESHOLD,e.currentTime),n.knee.setValueAtTime(l.COMPRESSOR_KNEE,e.currentTime),n.ratio.setValueAtTime(l.COMPRESSOR_RATIO,e.currentTime),n.attack.setValueAtTime(l.COMPRESSOR_ATTACK,e.currentTime),n.release.setValueAtTime(l.COMPRESSOR_RELEASE,e.currentTime),t.connect(n),n.connect(e.destination),t.start(),t.stop(l.DURATION);const o=(await e.startRendering()).getChannelData(0);return i([o[0]||0,o[Math.floor(.25*o.length)]||0,o[Math.floor(.5*o.length)]||0,o[Math.floor(.75*o.length)]||0,o[o.length-1]||0].join(","))}catch(e){return i("compressor_error")}}async function f(){var e;const t=performance.now();try{const n=function(){try{const e=window.OfflineAudioContext||window.webkitOfflineAudioContext;if(e)try{return new e(1,1,44100).sampleRate}catch{}const t=window.AudioContext||window.webkitAudioContext;if(t)try{const e=new t,n=e.sampleRate;return e.close().catch(()=>{}),n}catch{}}catch{}return 44100}(),o=function(){const e={};try{const t=u();if(t){e.sampleRate=t.sampleRate,e.length=t.length,e.state=t.state;const n=[],o=[8e3,22050,44100,48e3,96e3];for(const e of o)try{const t=new(window.OfflineAudioContext||window.webkitOfflineAudioContext)(1,1,e);t.sampleRate===e&&n.push(e),"close"in t&&"function"==typeof t.close&&t.close()}catch{}e.supportedSampleRates=n,"baseLatency"in t&&(e.baseLatency=t.baseLatency),"close"in t&&"function"==typeof t.close&&t.close()}}catch(t){e.error="context_characteristics_error"}return e}(),r={multiOsc:u(),compressor:u(),frequencyResponse:u()};if(!r.multiOsc||!r.compressor||!r.frequencyResponse)throw new Error("OfflineAudioContext not available");const[a,c,s]=await Promise.all([d(r.multiOsc).catch(()=>"multi_oscillator_error"),m(r.compressor).catch(()=>"compressor_error"),h(r.frequencyResponse).catch(()=>"frequency_response_error")]),l={};try{const e=u();if(e){const t=["createOscillator","createAnalyser","createBiquadFilter","createConvolver","createDelay","createDynamicsCompressor","createGain","createWaveShaper","createStereoPanner","createChannelSplitter","createChannelMerger"];for(const n of t)try{"function"==typeof e[n]&&(e[n](),l[n]=!0)}catch{l[n]=!1}"close"in e&&"function"==typeof e.close&&e.close()}}catch{}const f=i([a,c,s,n.toString(),JSON.stringify(o),JSON.stringify(l)].join("|")),p=performance.now();return{value:{oscillator:a,compressor:c,sampleRate:n,maxChannelCount:(null===(e=o.supportedSampleRates)||void 0===e?void 0:e.length)||2,multiOscillatorFingerprint:a,frequencyResponseFingerprint:s,contextCharacteristics:o,nodeCapabilities:l,audioStackHash:f,supportedSampleRates:o.supportedSampleRates||[]},duration:p-t}}catch(e){return{value:{oscillator:"error",compressor:"error",sampleRate:0,maxChannelCount:0,multiOscillatorFingerprint:"error",frequencyResponseFingerprint:"error",contextCharacteristics:{},nodeCapabilities:{},audioStackHash:"error",supportedSampleRates:[]},duration:performance.now()-t,error:e instanceof Error?e.message:"Audio fingerprinting failed"}}}function p(){try{return"function"==typeof(window.OfflineAudioContext||window.webkitOfflineAudioContext)||"function"==typeof(window.AudioContext||window.webkitAudioContext)}catch{return!1}}function g(){try{return"WebKitAppearance"in document.documentElement.style||"webkitRequestFileSystem"in window||"webkitResolveLocalFileSystemURL"in window||Boolean(window.safari)}catch{return!1}}function y(){try{return"ontouchstart"in window&&("orientation"in window||"onorientationchange"in window)&&/android/i.test(navigator.userAgent)}catch{return!1}}function w(){try{if("brave"in navigator&&navigator.brave)return!0;const e=navigator.userAgent;return!!e.includes("Brave")||!(!window.chrome||!window.chrome.runtime||window.chrome.webstore||window.navigator.getBattery||!/Chrome/.test(e))}catch{return!1}}function v(){try{const e=navigator.userAgent;return!!(e.includes("Arc/")||window.arc||window.Arc||window.chrome&&window.chrome.runtime&&/Chrome/.test(e)&&(e.includes("ArcBrowser")||"arc:"===window.location.protocol))}catch{return!1}}function b(){try{if(window.opr||window.opera)return!0;const e=navigator.userAgent;return!(!e.includes("OPR/")&&!e.includes("Opera/"))}catch{return!1}}function S(){try{return!!navigator.userAgent.includes("Vivaldi/")||!!window.vivaldi}catch{return!1}}function E(){try{const e=navigator.userAgent;return e.includes("SamsungBrowser/")||e.includes("Samsung Internet")}catch{return!1}}function A(){try{return!(w()||v()||b()||S()||M()||E())&&Boolean(window.chrome&&(window.chrome.webstore||window.chrome.runtime)&&/Chrome/.test(navigator.userAgent)&&!/Edg|OPR|Opera|Vivaldi|SamsungBrowser|Arc|Brave/.test(navigator.userAgent))}catch{return!1}}function T(){try{return"InstallTrigger"in window||"mozInnerScreenX"in window||"mozPaintCount"in window||Boolean(navigator.mozApps)}catch{return!1}}function M(){try{return"msCredentials"in navigator||Boolean(window.StyleMedia)||A()&&/edg/i.test(navigator.userAgent)}catch{return!1}}function R(){try{return g()&&!A()&&!M()&&Boolean(window.safari)&&/safari/i.test(navigator.userAgent)}catch{return!1}}function C(){try{return window.isSecureContext||"https:"===location.protocol}catch{return!1}}function x(){try{return"webkitTemporaryStorage"in navigator||navigator.storage&&navigator.storage.estimate&&navigator.storage.estimate().then(e=>(e.quota||0)<104857600),!1}catch{return!1}}function _(){return w()||v()||b()||S()||E()||A()?"Blink":M()?"EdgeHTML/Blink":T()?"Gecko":g()||R()?"WebKit":"Unknown"}function k(){const e=function(){try{if(w())return"Brave";if(v())return"Arc";if(b())return"Opera";if(S())return"Vivaldi";if(E())return"Samsung Internet";if(M())return"Edge";if(T())return"Firefox";if(R())return"Safari";if(A())return"Chrome";const e=navigator.userAgent;return/Firefox/i.test(e)&&!A()?"Firefox":/Safari/i.test(e)&&!A()?"Safari":/Chrome/i.test(e)?"Chrome":"Unknown"}catch{return"Unknown"}}(),t=_(),n=["Brave","Arc","Opera","Vivaldi","Samsung Internet","Edge","Chrome"].includes(e);let o=e.toLowerCase();return n&&"Chrome"!==e&&(o=`${e.toLowerCase()}-chromium`),{name:e,engine:t,isChromiumBased:n,family:o}}function O(){try{return"undefined"!=typeof document&&"function"==typeof document.createElement&&void 0!==document.body}catch{return!1}}function I(){try{if(!O())return!1;const e=document.createElement("canvas"),t=e.getContext("webgl")||e.getContext("experimental-webgl");if(!t)return!1;const n=t,o=n.getParameter(n.RENDERER),r=Boolean(o&&"string"==typeof o),a=n.getExtension("WEBGL_lose_context");return a&&a.loseContext(),r}catch{return!1}}function P(){try{return!(!window.AudioContext&&!window.webkitAudioContext)}catch{return!1}}function F(){const e=O(),t=function(){try{return"undefined"!=typeof window&&"function"==typeof window.matchMedia}catch{return!1}}();return{engine:_(),supportsDOM:e,supportsMediaQueries:t,supportsWebGL:I(),supportsAudio:P(),isSecure:C(),isPrivateMode:x(),canRunDOMBlockers:(g()||y())&&e,canRunAccessibility:t,canRunBrowserAPIs:e&&"undefined"!=typeof navigator}}async function D(){const e=performance.now();try{const t=function(){try{const e=navigator.language||"";let t=[];navigator.languages?t=Array.from(navigator.languages):navigator.language&&(t=[navigator.language]);const n=[navigator.userLanguage,navigator.browserLanguage,navigator.systemLanguage].filter(Boolean);return t=[...new Set([...t,...n])],{language:e,languages:t}}catch{return{language:"",languages:[]}}}(),n=function(){try{let e="";if(Intl&&Intl.DateTimeFormat)try{e=Intl.DateTimeFormat().resolvedOptions().timeZone}catch{}if(!e){const t=new Date(2024,0,1).getTimezoneOffset(),n=t>0?"-":"+",o=Math.floor(Math.abs(t)/60),r=Math.abs(t)%60;e=`UTC${n}${o.toString().padStart(2,"0")}:${r.toString().padStart(2,"0")}`}return{timezone:e,timezoneOffset:new Date(2024,0,1).getTimezoneOffset()}}catch{return{timezone:"",timezoneOffset:0}}}(),o=function(){try{return{platform:navigator.platform||"",userAgent:navigator.userAgent||""}}catch{return{platform:"",userAgent:""}}}(),r=function(){try{const e=navigator.hardwareConcurrency||0;let t;"deviceMemory"in navigator&&(t=navigator.deviceMemory);const n={hardwareConcurrency:e};return void 0!==t&&(n.deviceMemory=t),n}catch{return{hardwareConcurrency:0}}}(),a=function(){try{const e=!1!==navigator.cookieEnabled;let t=null;return"doNotTrack"in navigator?t=navigator.doNotTrack:"msDoNotTrack"in navigator?t=navigator.msDoNotTrack:"mozDoNotTrack"in window&&(t=window.mozDoNotTrack),{cookieEnabled:e,doNotTrack:t}}catch{return{cookieEnabled:!0,doNotTrack:null}}}(),i=function(){try{if(!navigator.plugins)return{length:0,names:[]};const e=Array.from(navigator.plugins).map(e=>e.name).filter(e=>e).sort();return{length:navigator.plugins.length,names:e.slice(0,10)}}catch{return{length:0,names:[]}}}(),c=function(){try{let e=0,t=!1,n=!1;"maxTouchPoints"in navigator?e=navigator.maxTouchPoints:"msMaxTouchPoints"in navigator&&(e=navigator.msMaxTouchPoints);try{t="TouchEvent"in window}catch{t="ontouchstart"in window}return n="ontouchstart"in window,{maxTouchPoints:e,touchEvent:t,touchStart:n}}catch{return{maxTouchPoints:0,touchEvent:!1,touchStart:!1}}}(),s=function(){try{return k()}catch{return{name:"Unknown",engine:"Unknown",isChromiumBased:!1,family:"unknown"}}}(),l=performance.now(),u={language:t.language,languages:t.languages,timezone:n.timezone,timezoneOffset:n.timezoneOffset,platform:o.platform,userAgent:o.userAgent,browserInfo:s,hardwareConcurrency:r.hardwareConcurrency,cookieEnabled:a.cookieEnabled,doNotTrack:a.doNotTrack,plugins:i,touchSupport:c};return void 0!==r.deviceMemory&&(u.deviceMemory=r.deviceMemory),{value:u,duration:l-e}}catch(t){return{value:{language:"",languages:[],timezone:"",timezoneOffset:0,platform:"",userAgent:"",hardwareConcurrency:0,cookieEnabled:!0,doNotTrack:null,plugins:{length:0,names:[]},touchSupport:{maxTouchPoints:0,touchEvent:!1,touchStart:!1}},duration:performance.now()-e,error:t instanceof Error?t.message:"Browser fingerprinting failed"}}}function L(){try{return"object"==typeof navigator&&null!==navigator}catch{return!1}}const N=["Zap Canvas 🎨🔒2024","Żółć gęślą jaźń €$¢£¥","αβγδεζηθικλμνξο","中文测试字体渲染","🌟🎯🚀💎🌊🎨"];function B(e){e.imageSmoothingEnabled=!0,e.imageSmoothingQuality="high";const t=e.createRadialGradient(75,75,0,75,75,50);t.addColorStop(0,"rgba(255, 0, 0, 0.8)"),t.addColorStop(.3,"rgba(0, 255, 0, 0.6)"),t.addColorStop(.7,"rgba(0, 0, 255, 0.4)"),t.addColorStop(1,"rgba(255, 255, 0, 0.2)"),e.fillStyle=t,e.fillRect(10,10,130,100),e.fillStyle="rgba(102, 204, 0, 0.7)",e.fillRect(15.5,15.3,49.7,49.2),e.fillStyle="#f60",e.fillRect(70.3,10.7,50.1,50.9),e.beginPath(),e.moveTo(25.2,120.1),e.bezierCurveTo(25.2,120.1,75.8,90.3,125.5,120.7),e.bezierCurveTo(125.5,120.7,90.1,150.2,60.8,140.9),e.closePath(),e.fillStyle="rgba(200, 100, 50, 0.6)",e.fill(),e.globalCompositeOperation="multiply",e.beginPath(),e.arc(50.7,80.3,20.1,0,2*Math.PI),e.fillStyle="rgba(255, 0, 100, 0.5)",e.fill(),e.beginPath(),e.arc(70.3,80.7,20.9,0,2*Math.PI),e.fillStyle="rgba(0, 255, 100, 0.5)",e.fill(),e.globalCompositeOperation="source-over",e.strokeStyle="rgba(50, 50, 50, 0.8)",e.lineWidth=.5,e.setLineDash([2.3,1.7]);for(let t=0;t<10;t++)e.beginPath(),e.moveTo(10+13.7*t,160),e.lineTo(50+11.3*t,200),e.stroke();e.setLineDash([]);const n=document.createElement("canvas");n.width=20,n.height=20;const o=n.getContext("2d");if(o){o.fillStyle="rgba(150, 75, 200, 0.3)",o.fillRect(0,0,10,10),o.fillRect(10,10,10,10);const t=e.createPattern(n,"repeat");t&&(e.fillStyle=t,e.fillRect(150,120,80,60))}e.shadowColor="rgba(0, 0, 0, 0.5)",e.shadowBlur=3.2,e.shadowOffsetX=2.1,e.shadowOffsetY=2.7,e.fillStyle="rgba(100, 200, 150, 0.8)",e.fillRect(160,30,60,40),e.shadowColor="transparent",e.shadowBlur=0,e.shadowOffsetX=0,e.shadowOffsetY=0}function U(e){const t=["14px Arial, sans-serif",'13px "Times New Roman", serif',"12px Georgia, serif","15px Helvetica, Arial, sans-serif",'11px "Courier New", monospace',"13px Verdana, sans-serif","16px Impact, fantasy",'12px "Comic Sans MS", cursive'],n=["#000","#333","#666","#999","rgba(255, 0, 0, 0.8)","rgba(0, 255, 0, 0.7)","rgba(0, 0, 255, 0.6)","rgba(128, 64, 192, 0.9)"],o=["top","hanging","middle","alphabetic","bottom"],r=["left","center","right"];let a=250;N.forEach((i,c)=>{t.forEach((t,s)=>{const l=(c+s)%n.length,u=s%o.length,d=s%r.length;e.font=t,e.fillStyle=n[l]||n[0],e.textBaseline=o[u]||"top",e.textAlign=r[d]||"left";const h=10+.7*s%200,m=a+18.3*s%100;e.fillText(i,h,m),s%2==0&&(e.strokeStyle=`rgba(${100+20*s}, ${50+15*s}, ${150+10*s}, 0.5)`,e.lineWidth=.3,e.strokeText(i,h+.5,m+.5))}),a+=120}),e.save(),e.translate(100,400),e.rotate(Math.PI/6),e.scale(1.2,.8),e.font="italic 14px Arial",e.fillStyle="rgba(200, 100, 50, 0.8)",e.fillText("Transformed & Rotated Text",0,0),e.restore(),e.font="6px Arial",e.fillStyle="#000",e.fillText("Tiny text rendering test",10,500),e.font="32px Arial",e.fillStyle="rgba(255, 0, 0, 0.5)",e.fillText("Large",10,540),e.textAlign="left",e.textBaseline="top"}async function H(){const e=performance.now();try{const t=document.createElement("canvas");t.width=300,t.height=600;const n=t.getContext("2d",{alpha:!0,desynchronized:!1,colorSpace:"srgb",willReadFrequently:!0});if(!n)throw new Error("Canvas 2D context not available");n.rect(0,0,10,10),n.rect(2,2,6,6);const o=n.isPointInPath(5,5,"evenodd");U(n);const r=i(t.toDataURL("image/png"));n.clearRect(0,0,t.width,t.height),B(n);const a=i(t.toDataURL("image/png")),c=function(e,t){try{e.clearRect(0,0,t.width,t.height),e.fillStyle="rgb(100, 150, 200)",e.fillRect(10.3,10.7,20.1,20.9),e.strokeStyle="rgb(200, 100, 50)",e.lineWidth=1.3,e.beginPath(),e.moveTo(15.2,35.8),e.lineTo(25.7,45.1),e.stroke();const n=e.getImageData(10,10,30,40).data;let o=0,r=0,a=0,i=0,c=0;for(let e=0;e<n.length;e+=4){const t=n[e]||0,s=n[e+1]||0,l=n[e+2]||0;if((n[e+3]||0)>25&&(o+=t,r+=s,a+=l,c++,e>=16)){const o=n[e-16]||0,r=Math.abs(t-o);r>=8&&(i+=r)}}if(0===c)return"no-valid-pixels";const s=10*Math.round(o/c/10);return`${s}-${10*Math.round(r/c/10)}-${10*Math.round(a/c/10)}-${10*Math.round(i/c/10)}`}catch(e){return"subpixel-error"}}(n,t),s=function(e,t,n,o){const r=[];let a=0;try{const i=o.getImageData(0,0,1,1);i&&0!==i.data.length||(r.push("getImageData-blocked"),a+=3),(e.length<8||t.length<8)&&(r.push("short-hash"),a+=2);const c=["error","blocked","disabled","00000000","ffffffff","12345678"];(c.includes(e)||c.includes(t))&&(r.push("known-blocked-hash"),a+=3),("subpixel-error"===n||n.includes("0-0-0"))&&(r.push("subpixel-anomaly"),a+=2),e===t&&"error"!==e&&(r.push("identical-hashes"),a+=2);const s=document.createElement("canvas");s.width=10,s.height=10;const l=s.getContext("2d");if(l){const e=performance.now();l.fillStyle="red",l.fillRect(0,0,10,10),s.toDataURL(),performance.now()-e>50&&(r.push("slow-canvas"),a+=1)}return{isInconsistent:a>=2,confidence:Math.min(a/5,1),reasons:r}}catch(e){return{isInconsistent:!0,confidence:1,reasons:["detection-error"]}}}(r,a,c,n);n.clearRect(0,0,t.width,t.height),U(n),n.globalCompositeOperation="multiply",B(n),n.globalCompositeOperation="source-over";const l=i(t.toDataURL("image/png")),u=performance.now();return{value:{text:r,geometry:a,winding:o,isInconsistent:s.isInconsistent,subPixelAnalysis:c,compositeHash:l,inconsistencyConfidence:s.confidence,blockingReasons:s.reasons},duration:u-e}}catch(t){return{value:{text:"error",geometry:"error",winding:!1,isInconsistent:!0,subPixelAnalysis:"error",compositeHash:"error",inconsistencyConfidence:1,blockingReasons:["canvas-error"]},duration:performance.now()-e,error:t instanceof Error?t.message:"Canvas fingerprinting failed"}}}function V(){try{const e=document.createElement("canvas").getContext("2d");return null!==e&&"function"==typeof e.fillText}catch{return!1}}const G=["Arial","Arial Black","Calibri","Cambria","Comic Sans MS","Consolas","Courier New","Georgia","Impact","Lucida Console","Lucida Sans Unicode","Microsoft Sans Serif","Palatino Linotype","Segoe UI","Tahoma","Times New Roman","Trebuchet MS","Verdana","American Typewriter","Avenir","Baskerville","Big Caslon","Brush Script MT","Copperplate","Didot","Futura","Gill Sans","Helvetica","Helvetica Neue","Hoefler Text","Lucida Grande","Marker Felt","Optima","Papyrus","Phosphate","Rockwell","Savoye LET","SignPainter","Skia","Snell Roundhand","System Font","Zapfino","DejaVu Sans","DejaVu Sans Mono","DejaVu Serif","Droid Sans","Droid Sans Mono","Droid Serif","Liberation Sans","Liberation Sans Narrow","Liberation Serif","Ubuntu","Ubuntu Mono","Roboto","Roboto Condensed","Roboto Mono","Roboto Slab","Droid Sans","Droid Sans Mono","Droid Serif","Helvetica Neue","Arial","Helvetica","Courier New","Times New Roman","San Francisco","Avenir Next","Open Sans","Lato","Montserrat","Source Sans Pro","Raleway","PT Sans","Lora","Playfair Display","Oswald","Slabo 27px","Fira Sans","Hiragino Sans","Hiragino Kaku Gothic ProN","Meiryo","MS Gothic","MS Mincho","SimSun","SimHei","Microsoft YaHei","Malgun Gothic","Apple SD Gothic Neo"],j=["monospace","sans-serif","serif"],W="mmMwWLliI0O&1 ※";function $(e,t){const n=document.createElement("canvas").getContext("2d");if(!n)return{width:0,height:0};n.font=`12px ${t}`;const o=n.measureText(e);return{width:o.width,height:o.actualBoundingBoxAscent+o.actualBoundingBoxDescent}}function X(e,t){const n=document.createElement("span");n.style.position="absolute",n.style.left="-9999px",n.style.top="-9999px",n.style.fontSize="12px",n.style.fontFamily=t,n.style.whiteSpace="nowrap",n.textContent=e,document.body.appendChild(n);const o=n.getBoundingClientRect(),r={width:o.width,height:o.height};return document.body.removeChild(n),r}function z(e,t="canvas"){const n="canvas"===t?$:X,o=j.map(e=>n(W,e)),r=j.map(t=>n(W,`${e}, ${t}`));for(let e=0;e<o.length;e++){const t=o[e],n=r[e];if(t&&n){const e=Math.abs(t.width-n.width),o=Math.abs(t.height-n.height);if(e>.1||o>.1)return!0}}return!1}function q(){try{const e=document.createElement("span");return e&&"object"==typeof e.style}catch{return!1}}function Z(e){return 10*Math.round(e/10)}async function K(){const e=performance.now();try{const t=function(){try{return{width:screen.width||0,height:screen.height||0}}catch{return{width:0,height:0}}}(),n=screen.colorDepth||screen.pixelDepth||0,o=function(){try{return window.devicePixelRatio||1}catch{return 1}}(),r=function(){try{const e=screen.availWidth||0,t=screen.availHeight||0;return 0===e&&0===t?{width:Z(screen.width||0),height:Z(screen.height||0)}:{width:Z(e),height:Z(t)}}catch{return{width:Z(screen.width||0),height:Z(screen.height||0)}}}(),a=function(){try{const e=document.documentElement,t=Math.max(e.clientWidth||0,window.innerWidth||0),n=Math.max(e.clientHeight||0,window.innerHeight||0);return{width:Z(t),height:Z(n)}}catch{const e=window.innerWidth||0,t=window.innerHeight||0;return{width:Z(e),height:Z(t)}}}(),i=function(){try{if(screen.orientation)return{angle:screen.orientation.angle,type:screen.orientation.type};const e=screen.mozOrientation||screen.msOrientation||screen.webkitOrientation;if(void 0!==e)return{angle:e,type:"unknown"};const t=screen.width>screen.height;return{angle:t?90:0,type:t?"landscape-primary":"portrait-primary"}}catch{return}}(),c=performance.now(),s={width:t.width,height:t.height,colorDepth:n,pixelRatio:o,availableWidth:r.width,availableHeight:r.height,viewportWidth:a.width,viewportHeight:a.height};return i&&(s.orientation=i),{value:s,duration:c-e}}catch(t){return{value:{width:0,height:0,colorDepth:0,pixelRatio:1,viewportWidth:0,viewportHeight:0,availableWidth:0,availableHeight:0},duration:performance.now()-e,error:t instanceof Error?t.message:"Screen fingerprinting failed"}}}function Y(){try{return"object"==typeof screen&&"number"==typeof screen.width&&"number"==typeof screen.height}catch{return!1}}let J=null,Q=0,ee=0;function te(){try{const e=performance.now();if(J&&J.isValid)if(e-J.timestamp<18e5){if(J.context&&!J.context.isContextLost())return J.usageCount++,J.lastUsed=e,J.context;ne()}else ne();if(Q>=8)return null;const t=function(){try{if("undefined"==typeof document)return null;const e=document.createElement("canvas");return e.width=1,e.height=1,e}catch{return null}}();if(!t)return null;const n=function(e){try{const t={alpha:!1,antialias:!1,depth:!1,stencil:!1,preserveDrawingBuffer:!1,failIfMajorPerformanceCaveat:!0,powerPreference:"default"};return e.getContext("webgl",t)||e.getContext("experimental-webgl",t)}catch{return null}}(t);return n?(Q++,ee++,J={context:n,canvas:t,timestamp:e,isValid:!0,usageCount:1,lastUsed:e},n):null}catch(e){return ne(),null}}function ne(){if(J){try{if(J.context){const e=J.context.getExtension("WEBGL_lose_context");e&&e.loseContext()}J.canvas&&(J.canvas.width=0,J.canvas.height=0),Q>0&&Q--}catch{Q>0&&Q--}J.isValid=!1,J=null}}function oe(){if(!J||!J.context)return!1;try{return!J.context.isContextLost()}catch{return!1}}function re(){const e=te();if(!e)return[];try{const t=e.getSupportedExtensions();return t?Array.from(t).sort():[]}catch{return[]}}function ae(){const e=te();if(!e)return{};try{const t={},n=["VERSION","VENDOR","RENDERER","SHADING_LANGUAGE_VERSION","MAX_TEXTURE_SIZE","MAX_RENDERBUFFER_SIZE","MAX_VIEWPORT_DIMS","MAX_VERTEX_ATTRIBS","MAX_VERTEX_UNIFORM_VECTORS","MAX_FRAGMENT_UNIFORM_VECTORS","MAX_VARYING_VECTORS"];for(const o of n)try{const n=e[o];void 0!==n&&(t[o]=e.getParameter(n))}catch{}return t}catch{return{}}}function ie(){try{ne(),Q=0,ee=0}catch(e){}}if("undefined"!=typeof window&&(window.addEventListener("beforeunload",ie),window.addEventListener("pagehide",ie),window.addEventListener("unload",ie),document.addEventListener("visibilitychange",()=>{}),"memory"in performance&&"function"==typeof performance.memory.addEventListener))try{performance.memory.addEventListener("memorypressure",ie)}catch(e){}var ce=Object.freeze({__proto__:null,cleanupWebGLCache:ie,forceCleanupWebGL:function(){ne(),Q=0},getCachedWebGLContext:te,getCachedWebGLExtensions:re,getCachedWebGLParameters:ae,invalidateWebGLCache:ne,isWebGLContextValid:oe});const se={VENDOR:7936,RENDERER:7937,VERSION:7938,SHADING_LANGUAGE_VERSION:35724,MAX_VERTEX_ATTRIBS:34921,MAX_TEXTURE_SIZE:3379,MAX_RENDERBUFFER_SIZE:34024,MAX_VIEWPORT_DIMS:3386,ALIASED_LINE_WIDTH_RANGE:33902,ALIASED_POINT_SIZE_RANGE:33901,MAX_FRAGMENT_UNIFORM_VECTORS:36349,MAX_VERTEX_UNIFORM_VECTORS:36347,MAX_VARYING_VECTORS:36348,MAX_VERTEX_TEXTURE_IMAGE_UNITS:35660,MAX_TEXTURE_IMAGE_UNITS:34930,MAX_COMBINED_TEXTURE_IMAGE_UNITS:35661};function le(e,t,n){const o=e.createShader(t);return o?(e.shaderSource(o,n),e.compileShader(o),e.getShaderParameter(o,e.COMPILE_STATUS)?o:(e.deleteShader(o),null)):null}function ue(e){try{const t=e.getParameter(e.VENDOR)||"unknown",n=e.getParameter(e.RENDERER)||"unknown",o=e.getParameter(e.VERSION)||"unknown",r=e.getParameter(e.MAX_TEXTURE_SIZE)||0,a=`${t}|${n}|${o}|${r}|${e.getParameter(e.MAX_VERTEX_ATTRIBS)||0}|${e.getParameter(e.MAX_VIEWPORT_DIMS)||[0,0]}`;let i=0;for(let e=0;e<a.length;e++)i=(i<<5)-i+a.charCodeAt(e)&4294967295;return`fallback_${Math.abs(i).toString(16)}`}catch{return"webgl_unavailable"}}async function de(){const e=performance.now();try{if(!me())throw new Error("WebGL not supported in this browser");const t=te();if(!t)throw new Error("WebGL context not available");if(!oe())throw new Error("WebGL context lost");const n=function(){try{return ae()}catch{return{}}}(),o=n.VENDOR||"unknown",r=n.RENDERER||"unknown",a=n.VERSION||"unknown";let i=o,c=r;for(let e=0;e<3;e++)try{const e=t.getExtension("WEBGL_debug_renderer_info");if(e){const n=t.getParameter(e.UNMASKED_VENDOR_WEBGL),o=t.getParameter(e.UNMASKED_RENDERER_WEBGL);n&&"unknown"!==n&&(i=n),o&&"unknown"!==o&&(c=o);break}}catch(t){if(2===e)break;await new Promise(e=>setTimeout(e,10))}const s=function(){try{return re()}catch{return[]}}(),l=function(e){const t={};return Object.entries(se).forEach(([n,o])=>{const r=function(e,t){try{return e.getParameter(t)}catch{return null}}(e,o);null!==r&&(t[n]=Array.isArray(r)?r.join(","):r)}),["UNMASKED_VENDOR_WEBGL","UNMASKED_RENDERER_WEBGL"].forEach(n=>{try{const o=e.getExtension("WEBGL_debug_renderer_info");if(o){const r=o[n];if(void 0!==r){const o=e.getParameter(r);o&&(t[n]=o)}}}catch{}}),t}(t),u=function(e){const t=[],n=[];try{const o=[e.LOW_FLOAT,e.MEDIUM_FLOAT,e.HIGH_FLOAT,e.LOW_INT,e.MEDIUM_INT,e.HIGH_INT],r=["LOW_FLOAT","MEDIUM_FLOAT","HIGH_FLOAT","LOW_INT","MEDIUM_INT","HIGH_INT"];for(let a=0;a<o.length;a++){const i=o[a];if(void 0===i)continue;const c=e.getShaderPrecisionFormat(e.VERTEX_SHADER,i),s=e.getShaderPrecisionFormat(e.FRAGMENT_SHADER,i);c&&t.push(`${r[a]}:${c.precision},${c.rangeMin},${c.rangeMax}`),s&&n.push(`${r[a]}:${s.precision},${s.rangeMin},${s.rangeMax}`)}}catch{}return{vertex:t.join(";"),fragment:n.join(";")}}(t),d=function(e){var t,n,o,r;try{const a="\n attribute vec2 a_position;\n attribute vec3 a_color;\n varying vec3 v_color;\n uniform float u_time;\n \n void main() {\n // Complex mathematical operations to differentiate GPUs\n float wave = sin(a_position.x * 10.0 + u_time) * 0.1;\n vec2 position = a_position + vec2(wave, cos(a_position.y * 8.0) * 0.1);\n \n // GPU-specific floating point calculations\n float precision = sin(position.x * 123.456) + cos(position.y * 789.012);\n position += vec2(precision * 0.001);\n \n gl_Position = vec4(position, 0.0, 1.0);\n v_color = a_color;\n }\n ",i="\n precision mediump float;\n varying vec3 v_color;\n uniform float u_time;\n \n void main() {\n // Complex color calculations that vary between GPU vendors\n vec3 color = v_color;\n color.r += sin(gl_FragCoord.x * 0.1 + u_time) * 0.1;\n color.g += cos(gl_FragCoord.y * 0.1 + u_time) * 0.1;\n color.b += sin((gl_FragCoord.x + gl_FragCoord.y) * 0.05) * 0.1;\n \n // GPU-specific precision in color calculations\n color = normalize(color) * length(v_color);\n \n gl_FragColor = vec4(color, 1.0);\n }\n ",c=le(e,e.VERTEX_SHADER,a),s=le(e,e.FRAGMENT_SHADER,i);if(!c||!s)return ue(e);const l=function(e,t,n){const o=e.createProgram();return o?(e.attachShader(o,t),e.attachShader(o,n),e.linkProgram(o),e.getProgramParameter(o,e.LINK_STATUS)?o:(e.deleteProgram(o),null)):null}(e,c,s);if(!l)return ue(e);e.useProgram(l);const u=new Float32Array([-.8,-.6,1,.2,.3,0,.8,.3,1,.2,.8,-.6,.2,.3,1,-.5,-.2,.8,.9,.1,.3,.6,.1,.8,.9,.7,-.3,.9,.1,.8]),d=e.createBuffer();e.bindBuffer(e.ARRAY_BUFFER,d),e.bufferData(e.ARRAY_BUFFER,u,e.STATIC_DRAW);const h=e.getAttribLocation(l,"a_position"),m=e.getAttribLocation(l,"a_color"),f=e.getUniformLocation(l,"u_time");e.enableVertexAttribArray(h),e.enableVertexAttribArray(m),e.vertexAttribPointer(h,2,e.FLOAT,!1,20,0),e.vertexAttribPointer(m,3,e.FLOAT,!1,20,8),e.uniform1f(f,1.23456789),e.enable(e.BLEND),e.blendFunc(e.SRC_ALPHA,e.ONE_MINUS_SRC_ALPHA),e.clearColor(.1,.2,.3,1),e.clear(e.COLOR_BUFFER_BIT),e.drawArrays(e.TRIANGLES,0,6);const p=new Uint8Array(e.canvas.width*e.canvas.height*4);e.readPixels(0,0,e.canvas.width,e.canvas.height,e.RGBA,e.UNSIGNED_BYTE,p);let g=0;for(let e=0;e<p.length;e+=4){const a=1*(null!==(t=p[e])&&void 0!==t?t:0),i=256*(null!==(n=p[e+1])&&void 0!==n?n:0);g=33*g+(a+i+65536*(null!==(o=p[e+2])&&void 0!==o?o:0)+16777216*(null!==(r=p[e+3])&&void 0!==r?r:0))>>>0}return e.deleteProgram(l),e.deleteShader(c),e.deleteShader(s),e.deleteBuffer(d),g.toString(16)}catch(t){return ue(e)}}(t),h=function(e){var t;const n={};try{const o=e.getExtension("WEBGL_debug_renderer_info");o&&(n.unmaskedVendor=e.getParameter(o.UNMASKED_VENDOR_WEBGL),n.unmaskedRenderer=e.getParameter(o.UNMASKED_RENDERER_WEBGL)),n.maxTextureSize=e.getParameter(e.MAX_TEXTURE_SIZE),n.maxCombinedTextureImageUnits=e.getParameter(e.MAX_COMBINED_TEXTURE_IMAGE_UNITS),n.maxViewportDims=e.getParameter(e.MAX_VIEWPORT_DIMS),n.maxRenderbufferSize=e.getParameter(e.MAX_RENDERBUFFER_SIZE),n.maxVertexAttribs=e.getParameter(e.MAX_VERTEX_ATTRIBS),n.maxVertexUniformVectors=e.getParameter(e.MAX_VERTEX_UNIFORM_VECTORS),n.maxFragmentUniformVectors=e.getParameter(e.MAX_FRAGMENT_UNIFORM_VECTORS),n.maxVaryingVectors=e.getParameter(e.MAX_VARYING_VECTORS),n.antialias=(null===(t=e.getContextAttributes())||void 0===t?void 0:t.antialias)||!1;const r=e.getExtension("OES_texture_float");n.floatTextures=!!r;const a=e.getExtension("OES_texture_half_float");n.halfFloatTextures=!!a;const i=e.getParameter(e.COMPRESSED_TEXTURE_FORMATS);n.compressedTextureFormats=Array.isArray(i)?i.length:0;const c=e instanceof WebGL2RenderingContext;if(n.webgl2=c,c){const t=e;n.maxColorAttachments=t.getParameter(t.MAX_COLOR_ATTACHMENTS),n.maxDrawBuffers=t.getParameter(t.MAX_DRAW_BUFFERS),n.maxTexture3DSize=t.getParameter(t.MAX_3D_TEXTURE_SIZE)}const s=e.getParameter(e.ALIASED_LINE_WIDTH_RANGE);n.lineWidthRange=Array.isArray(s)?s.join(","):"";const l=e.getParameter(e.ALIASED_POINT_SIZE_RANGE);n.pointSizeRange=Array.isArray(l)?l.join(","):""}catch(e){}return n}(t),m=(()=>{const e=`${i||o||""}|${c||r||""}`.toLowerCase();let t=0;for(let n=0;n<e.length;n++)t=(t<<5)-t+e.charCodeAt(n)&4294967295;return Math.abs(t).toString(16)})(),f=performance.now();return{value:{vendor:i,renderer:c,version:a,extensions:s,parameters:l,shaderPrecision:u,renderHash:d,capabilities:h,vendorRendererHash:m,contextAttributes:t.getContextAttributes()||{}},duration:f-e}}catch(t){return{value:{vendor:"unknown",renderer:"unknown",version:"unknown",extensions:[],parameters:{},shaderPrecision:{vertex:"",fragment:""},renderHash:"",capabilities:{},vendorRendererHash:"",contextAttributes:{}},duration:performance.now()-e,error:t instanceof Error?t.message:"WebGL fingerprinting failed"}}}let he=null;function me(){if(null!==he)return he;try{const e=document.createElement("canvas");e.width=1,e.height=1;const t=e.getContext("webgl",{failIfMajorPerformanceCaveat:!0,antialias:!1,alpha:!1,depth:!1,stencil:!1,preserveDrawingBuffer:!1})||e.getContext("experimental-webgl",{failIfMajorPerformanceCaveat:!0,antialias:!1,alpha:!1,depth:!1,stencil:!1,preserveDrawingBuffer:!1}),n=null!==t;if(t&&"getExtension"in t)try{const e=t.getExtension("WEBGL_lose_context");e&&e.loseContext()}catch(e){}return e.width=0,e.height=0,he=n,n}catch{return he=!1,!1}}function fe(){try{for(const e of["rec2020","p3","srgb"]){const t=Re(`(color-gamut: ${e})`);if(null==t?void 0:t.matches)return e}return"unknown"}catch{return"unknown"}}function pe(){try{const e=Re("(forced-colors: active)");if(null==e?void 0:e.matches)return!0;const t=Re("(forced-colors: none)");return!(null==t?void 0:t.matches)&&null}catch{return null}}function ge(){try{const e=["no-preference","high","more","low","less","forced"];for(const t of e){const e=Re(`(prefers-contrast: ${t})`);if(null==e?void 0:e.matches)return"high"===t?"more":"low"===t?"less":t}return"unknown"}catch{return"unknown"}}function ye(){try{const e=Re("(prefers-reduced-motion: reduce)");if(null==e?void 0:e.matches)return!0;const t=Re("(prefers-reduced-motion: no-preference)");return!(null==t?void 0:t.matches)&&null}catch{return null}}function we(){try{return!!matchMedia("(prefers-reduced-transparency: reduce)").matches||!matchMedia("(prefers-reduced-transparency: no-preference)").matches&&null}catch{return null}}function ve(){try{for(let e=8;e>=0;e--)if(matchMedia(`(monochrome: ${e})`).matches)return e;return 0}catch{return 0}}function be(){try{return!!matchMedia("(inverted-colors: inverted)").matches||!matchMedia("(inverted-colors: none)").matches&&null}catch{return null}}function Se(){try{return!!matchMedia("(dynamic-range: high)").matches||!matchMedia("(dynamic-range: standard)").matches&&null}catch{return null}}function Ee(){try{const e=[48,36,30,24,16,15,8];for(const t of e)if(matchMedia(`(color: ${t})`).matches)return t;return screen.colorDepth||24}catch{return screen.colorDepth||24}}function Ae(){try{return matchMedia("(hover: hover)").matches?"hover":matchMedia("(hover: none)").matches?"none":"unknown"}catch{return"unknown"}}function Te(){try{return matchMedia("(pointer: fine)").matches?"fine":matchMedia("(pointer: coarse)").matches?"coarse":matchMedia("(pointer: none)").matches?"none":"unknown"}catch{return"unknown"}}function Me(){return F().canRunAccessibility}function Re(e){try{return Me()?matchMedia(e):null}catch(e){return null}}function Ce(){try{return!!matchMedia("(prefers-reduced-data: reduce)").matches||!matchMedia("(prefers-reduced-data: no-preference)").matches&&null}catch{return null}}function xe(){try{const e=["fullscreen","standalone","minimal-ui","browser"];for(const t of e)if(matchMedia(`(display-mode: ${t})`).matches)return t;return"unknown"}catch{return"unknown"}}function _e(){try{const e=["opaque","additive","subtractive"];for(const t of e)if(matchMedia(`(environment-blending: ${t})`).matches)return t;return"unknown"}catch{return"unknown"}}function ke(){try{return!!matchMedia("(any-hover: hover)").matches||!matchMedia("(any-hover: none)").matches&&null}catch{return null}}function Oe(){try{return matchMedia("(any-pointer: fine)").matches?"fine":matchMedia("(any-pointer: coarse)").matches?"coarse":matchMedia("(any-pointer: none)").matches?"none":"unknown"}catch{return"unknown"}}function Ie(){try{return matchMedia("(prefers-color-scheme: dark)").matches?"dark":matchMedia("(prefers-color-scheme: light)").matches?"light":matchMedia("(prefers-color-scheme: no-preference)").matches?"no-preference":"unknown"}catch{return"unknown"}}function Pe(){const e=fe(),t=pe(),n=ge(),o=ye(),r=we(),a=ve(),i=be(),c=Se(),s=Ee(),l=Ae(),u=Te(),d=Ce(),h=xe(),m=_e(),f=ke(),p=Oe(),g=Ie(),y=Boolean(t||o||r||i||d||"no-preference"!==n||"no-preference"!==g||a>0),w=[e,c?"hdr":"sdr",`${s}bit`,a>0?`mono${a}`:"color",g,h,m].join("-"),v=[l,u,f?"anyhover":"nohover",p].join("-");return{colorGamut:e,forcedColors:t,contrastPreference:n,reducedMotion:o,reducedTransparency:r,monochromeDepth:a,invertedColors:i,hdrSupport:c,enhancedColorDepth:s,hoverCapability:l,pointerCapability:u,reducedData:d,displayMode:h,environmentBlending:m,anyHover:f,anyPointer:p,colorScheme:g,hasAccessibilityFeatures:y,displayCapabilities:w,interactionCapabilities:v}}function Fe(e){const t=["unknown"!==e.colorGamut,null!==e.forcedColors,"unknown"!==e.contrastPreference,null!==e.reducedMotion,null!==e.reducedTransparency,null!==e.invertedColors,null!==e.hdrSupport,null!==e.reducedData,"unknown"!==e.displayMode,"unknown"!==e.environmentBlending,null!==e.anyHover,"unknown"!==e.colorScheme],n=t.filter(Boolean).length/t.length,o=[null!==e.reducedData,"unknown"!==e.displayMode,"unknown"!==e.environmentBlending,"unknown"!==e.colorScheme,null!==e.hdrSupport],r=o.filter(Boolean).length/o.length,a=[!0===e.forcedColors,!0===e.reducedMotion,!0===e.reducedTransparency,!0===e.invertedColors,!0===e.reducedData,"no-preference"!==e.contrastPreference,"dark"===e.colorScheme,e.monochromeDepth>0],i=a.filter(Boolean).length/a.length,c=["srgb"!==e.colorGamut,!0===e.forcedColors,!0===e.reducedMotion,!0===e.reducedTransparency,!0===e.invertedColors,!0===e.reducedData,e.monochromeDepth>0,!0===e.hdrSupport,"browser"!==e.displayMode,"opaque"!==e.environmentBlending,"dark"===e.colorScheme],s=c.filter(Boolean).length/c.length;return{confidence:Math.round(100*n)/100,uniqueness:Math.round(100*s)/100,accessibilityScore:Math.round(100*i)/100,modernBrowserScore:Math.round(100*r)/100}}var De=Object.freeze({__proto__:null,analyzeAccessibilityFingerprint:Fe,getAccessibilityFingerprint:Pe,getAnyHover:ke,getAnyPointer:Oe,getColorGamut:fe,getColorScheme:Ie,getContrastPreference:ge,getDisplayMode:xe,getEnhancedColorDepth:Ee,getEnvironmentBlending:_e,getForcedColors:pe,getHDRSupport:Se,getHoverCapability:Ae,getInvertedColors:be,getMonochromeDepth:ve,getPointerCapability:Te,getReducedData:Ce,getReducedMotion:ye,getReducedTransparency:we,isAccessibilityDetectionAvailable:Me});function Le(e){if("number"==typeof e)return{confidence:0,uniqueness:0,intlApiSupport:0,localeComplexity:0};const t=Object.values(e.intlSupport).filter(Boolean).length/Object.keys(e.intlSupport).length,n=[e.locale,e.calendar,e.numberingSystem,e.timeZone,e.dateStyle,e.timeStyle,e.hourCycle,e.numberLocale,e.currencyDisplay,e.currencySign,e.notation,e.signDisplay,e.listStyle,e.relativeTimeStyle,e.pluralRules],o=n.filter(e=>"unknown"!==e&&""!==e).length/n.length,r=[e.locale.length>2?1:0,"gregory"!==e.calendar?1:0,"latn"!==e.numberingSystem?1:0,e.hour12?1:0,e.localeMatch?0:1].reduce((e,t)=>e+t,0)/5,a=(o+t+r)/3;return{confidence:Math.round(100*o)/100,uniqueness:Math.round(100*a)/100,intlApiSupport:Math.round(100*t)/100,localeComplexity:Math.round(100*r)/100}}const Ne="mmMwWLliI0fiflO&1",Be={default:{text:Ne},serif:{style:{fontFamily:"serif"},text:Ne},sans:{style:{fontFamily:"sans-serif"},text:Ne},mono:{style:{fontFamily:"monospace"},text:Ne},apple:{style:{font:"-apple-system-body"},text:Ne},system:{style:{fontFamily:"system-ui"},text:Ne},min:{style:{fontSize:"1px"},text:Ne},large:{style:{fontSize:"72px"},text:Ne},ui:{style:{fontFamily:"ui-serif"},text:Ne},emoji:{style:{fontFamily:"Apple Color Emoji, Segoe UI Emoji, Noto Color Emoji"},text:"🎯🔥💯"},math:{style:{fontFamily:"STIX Two Math, Cambria Math"},text:"∑∆∇∂"},cjk:{style:{fontFamily:"Hiragino Sans, Microsoft YaHei, SimSun"},text:"中文测试"},arabic:{style:{fontFamily:"Tahoma, Arial Unicode MS"},text:"اختبار"},hebrew:{style:{fontFamily:"Tahoma, Arial Unicode MS"},text:"בדיקה"},subpixel:{style:{fontFamily:"Arial",fontSize:"11px",textRendering:"optimizeLegibility"},text:Ne},kerning:{style:{fontFamily:"Times",fontSize:"24px",fontKerning:"normal"},text:"AV To"},ligatures:{style:{fontFamily:"Times",fontSize:"24px",fontVariantLigatures:"common-ligatures"},text:"ffi ffl fi fl"}};function Ue(e,t,n){try{const o="mmmmmmmmmmlli",r=He(e,t,{style:{fontFamily:n},text:o}),a=He(e,t,{style:{fontFamily:"monospace"},text:o});if(Math.abs(r-a)<1)return"monospace-fallback";const i=He(e,t,{style:{fontFamily:"sans-serif"},text:o});return Math.abs(r-i)<1?"sans-serif-fallback":"native-font"}catch(e){return"fallback-error"}}function He(e,t,n){const o=e.createElement("span"),{style:r={},text:a=Ne}=n;o.textContent=a,o.style.cssText="position: absolute; left: 0; top: 0; white-space: nowrap; visibility: hidden;",Object.entries(r).forEach(([e,t])=>{void 0!==t&&(o.style[e]=t)}),t.appendChild(o);const i=o.getBoundingClientRect().width;return t.removeChild(o),Math.round(100*i)/100}function Ve(e){const t=[e.default,e.serif,e.sans,e.mono,e.apple,e.system,e.min,e.large,e.ui,e.emoji,e.math,e.cjk,e.arabic,e.hebrew,e.subpixel,e.kerning,e.ligatures],n=t.some(e=>e>0),o=t.filter(e=>e>0).length,r=t.length;let a=n?o/r:0;(e.antiAliasing.enabled||e.systemFontHints.clearType)&&(a+=.2),Object.keys(e.fallbackBehavior).length>0&&(a+=.1),a=Math.min(a,1);const i=e.apple>0||e.system>0,c=[e.subpixel,e.kerning,e.ligatures,e.emoji,e.math].some(e=>e>0)||e.antiAliasing.enabled||e.systemFontHints.clearType,s=t.reduce((e,t)=>e+t,0)/t.length,l=t.reduce((e,t)=>e+Math.pow(t-s,2),0)/t.length;let u=Math.min(l/100,1);e.antiAliasing.smoothingLevel>0&&(u+=.1),e.systemFontHints.hintingLevel>0&&(u+=.1),u=Math.min(u,1);let d="low";const h=e.antiAliasing.smoothingLevel;h>50||e.systemFontHints.clearType?d="high":(h>20||e.systemFontHints.hintingLevel>2)&&(d="medium");const m="error"!==e.isolatedHash&&e.isolatedHash.length>0;return{confidence:Math.round(100*a)/100,uniqueness:Math.round(100*u)/100,hasSystemFonts:i,hasAdvancedFeatures:c,renderingQuality:d,isolationIntegrity:m}}const Ge=["sans-serif-thin","ARNO PRO","Agency FB","Arabic Typesetting","Arial Unicode MS","AvantGarde Bk BT","BankGothic Md BT","Batang","Bitstream Vera Sans Mono","Calibri","Century","Century Gothic","Clarendon","EUROSTILE","Franklin Gothic","Futura Bk BT","Futura Md BT","GOTHAM","Gill Sans","HELV","Haettenschweiler","Helvetica Neue","Humanst521 BT","Leelawadee","Letter Gothic","Levenim MT","Lucida Bright","Lucida Sans","Menlo","MS Mincho","MS Outlook","MS Reference Specialty","MS UI Gothic","MT Extra","MYRIAD PRO","Marlett","Meiryo UI","Microsoft Uighur","Minion Pro","Monotype Corsiva","PMingLiU","Pristina","SCRIPTINA","Segoe UI Light","Serifa","SimHei","Small Fonts","Staccato222 BT","TRAJAN PRO","Univers CE 55 Medium","Vrinda","ZWAdobeF","Arial","Arial Black","Comic Sans MS","Courier New","Georgia","Impact","Palatino Linotype","Tahoma","Times New Roman","Trebuchet MS","Verdana","American Typewriter","Avenir","Baskerville","Big Caslon","Brush Script MT","Copperplate","Didot","Futura","Helvetica","Hoefler Text","Lucida Grande","Marker Felt","Optima","Papyrus","Phosphate","Rockwell","Savoye LET","SignPainter","Skia","Snell Roundhand","Zapfino","DejaVu Sans","DejaVu Sans Mono","DejaVu Serif","Liberation Sans","Liberation Serif","Ubuntu","Ubuntu Mono"],je="mmMwWLliI0O&1",We="48px",$e=["monospace","sans-serif","serif"];function Xe(e,t){const n=e.createElement("span");return n.style.position="absolute",n.style.top="0",n.style.left="0",n.style.fontFamily=t,n.style.fontSize=We,n.style.whiteSpace="nowrap",n.textContent=je,n}function ze(e,t,n){return Xe(e,`'${t}',${n}`)}function qe(e,t){return $e.some((n,o)=>{const r=e[o],a=t[n];return!(!r||!a||r.offsetWidth===a.width&&r.offsetHeight===a.height)})}function Ze(e){const{available:t,method:n,precision:o,totalTested:r,detectionTime:a}=e;let i=.5;"iframe"===n?i=.9:"dom"===n&&(i=.7),i*=o;const c=t.filter(e=>["Calibri","Segoe UI Light","MS UI Gothic","Arial Unicode MS"].includes(e)).length,s=t.filter(e=>["Helvetica Neue","Avenir","Menlo","Zapfino","Baskerville"].includes(e)).length,l=t.filter(e=>["DejaVu Sans","Liberation Sans","Ubuntu"].includes(e)).length,u=t.filter(e=>["sans-serif-thin","Roboto"].includes(e)).length;let d="unknown";c>=2?d="windows":s>=2?d="macos":l>=1?d="linux":u>=1&&(d="android");const h=Math.min(a<100?1:.8,1),m=["Arial","Times New Roman","Helvetica"],f=t.filter(e=>!m.includes(e)),p=Math.min(f.length/10,1);return{confidence:Math.round(100*i)/100,uniqueness:Math.round(100*p)/100,osSignature:d,browserCapabilities:Math.round(100*h)/100}}const Ke=Math,Ye=()=>0;function Je(){const e=Ke.acos||Ye,t=Ke.acosh||Ye,n=Ke.asin||Ye,o=Ke.asinh||Ye,r=Ke.atanh||Ye,a=Ke.atan||Ye,i=Ke.sin||Ye,c=Ke.sinh||Ye,s=Ke.cos||Ye,l=Ke.cosh||Ye,u=Ke.tan||Ye,d=Ke.tanh||Ye,h=Ke.exp||Ye,m=Ke.expm1||Ye,f=Ke.log1p||Ye,p=Ke.cbrt||Ye,g=Ke.hypot||Ye,y=Ke.log10||Ye,w=Ke.log2||Ye;return{acos:e(.12312423423423424),asin:n(.12312423423423424),atan:a(.5),cos:s(10.000000000123),sin:i(-1e300),tan:u(-1e300),acosh:t(1e308),asinh:o(1),atanh:r(.5),cosh:l(1),sinh:c(1),tanh:d(1),exp:h(1),expm1:m(1),log1p:f(10),powPI:Ke.pow(Ke.PI,-100),cbrt:p(27),hypot:g(3,4),log10:y(100),log2:w(8),acoshPf:(e=>Ke.log(e+Ke.sqrt(e*e-1)))(1e154),asinhPf:Ke.log(1+Ke.sqrt(2)),atanhPf:Ke.log(3)/2,sinhPf:(Ke.exp(1)-Ke.exp(-1))/2,coshPf:(Ke.exp(1)+Ke.exp(-1))/2,expm1Pf:Ke.exp(1)-1,tanhPf:(Ke.exp(2)-1)/(Ke.exp(2)+1),log1pPf:Ke.log(11),precision:{float32:Ke.abs(0),float64:Ke.abs(2-2.0000000000000004),bigNumbers:Ke.abs(1),smallNumbers:Ke.abs(1e-15+2e-15-3e-15)}}}function Qe(){try{const e=Je();return[e.acos,e.asin,e.atan,e.cos,e.sin,e.tan,e.acosh,e.asinh,e.atanh,e.cosh,e.sinh,e.tanh,e.exp,e.expm1,e.log1p,e.powPI,e.cbrt,e.hypot,e.log10,e.log2,e.precision.float32,e.precision.float64,e.precision.bigNumbers,e.precision.smallNumbers].join(",")}catch{return"math-unavailable"}}function et(e){let t=.9,n=.8;Object.values(e).some(e=>"number"==typeof e&&0!==e)||(t=.1,n=.1),t*=Object.values(e.precision).reduce((e,t)=>e+("number"!=typeof t||isNaN(t)?0:1),0)/4;let o="high";return t<.3?o="low":t<.7&&(o="medium"),{confidence:Math.round(100*t)/100,stability:o,uniqueness:Math.round(100*n)/100}}const tt={gdprMode:!1,includeInvasive:!0,timeout:5e3,debug:!1,excludeComponents:[]},nt=new Map;function ot(e,t){return!t.excludeComponents.includes(e)&&(!(t.gdprMode&&!t.includeInvasive&&["canvas","webgl","audio","fontPreferences","enhancedFonts"].includes(e))&&(["mathFingerprint","dateTimeLocale","accessibilityEnhanced","fontPreferences","enhancedFonts"].includes(e),!0))}function rt(e,t){nt.set(e,t)}async function at(e,t,n){const o=`${e}_${n.gdprMode}`,r=(a=o,nt.get(a)||null);var a;if(r)return r;const i="webgl"===e,c=["canvas","webgl","audio","hardware","system"].includes(e),s=i?2:c?3:1,l=i?[200,500]:[100,250,500];for(let r=0;r<s;r++)try{const a=n.timeout+r*(i?2e3:1e3),c=new Promise((t,n)=>{setTimeout(()=>n(new Error(`${e} timeout after ${a}ms (attempt ${r+1})`)),a)}),s=await Promise.race([t(),c]);if(null!=s)return rt(o,s),s;throw new Error(`${e} returned null/undefined result`)}catch(e){const t=r===s-1,n=e instanceof Error?e.message:String(e);if(i&&n.includes("context")){try{const{forceCleanupWebGL:e}=await Promise.resolve().then(function(){return ce});e()}catch(e){}return null}if(t)return null;!n.includes("timeout")&&r<l.length&&await new Promise(e=>setTimeout(e,l[r])),i&&await new Promise(e=>setTimeout(e,100))}return null}async function it(e={}){var t,n,o,r;const c=performance.now(),l={...tt,...e},u=[],d=[],h={collectionTime:c,gdprMode:l.gdprMode,components:[]},m=[];if(ot("canvas",l)&&V()&&m.push(at("canvas",H,l).then(e=>({component:"canvas",result:e}))),ot("webgl",l)&&me()&&m.push(at("webgl",de,l).then(e=>({component:"webgl",result:e}))),ot("audio",l)&&p()&&m.push(at("audio",f,l).then(e=>({component:"audio",result:e}))),ot("fonts",l)&&q()&&m.push(at("fonts",()=>async function(e=!0){const t=performance.now();try{let n;if(e&&function(){try{const e=document.createElement("canvas").getContext("2d");return null!==e&&"function"==typeof e.measureText}catch{return!1}}()){const{available:e,measurements:t}=function(){const e=[],t={};for(const n of G)try{const o=$(W,n);t[n]=o,z(n,"canvas")&&e.push(n)}catch(e){continue}return{available:e,measurements:t}}();n={available:e.sort(),method:"advanced",measurements:t}}else n={available:function(){const e=[];for(const t of G)try{z(t,"dom")&&e.push(t)}catch(e){continue}return e}().sort(),method:"basic"};return{value:n,duration:performance.now()-t}}catch(e){return{value:{available:[],method:"basic"},duration:performance.now()-t,error:e instanceof Error?e.message:"Font detection failed"}}}(!l.gdprMode),l).then(e=>({component:"fonts",result:e}))),ot("screen",l)&&Y()&&m.push(at("screen",K,l).then(e=>({component:"screen",result:e}))),ot("browser",l)&&L()&&m.push(at("browser",D,l).then(e=>({component:"browser",result:e}))),(await Promise.allSettled(m)).forEach((e,t)=>{var n,o;if("fulfilled"===e.status&&e.value.result){const{component:t,result:n}=e.value;h[t]=n,u.push(t)}else{const r=m[t],a=(null===(n=null==r?void 0:r.toString().match(/component: "(\w+)"/))||void 0===n?void 0:n[1])||"unknown";d.push({component:a,error:"rejected"===e.status?(null===(o=e.reason)||void 0===o?void 0:o.message)||"Promise rejected":"Collection failed or timeout"})}}),!l.gdprMode)try{const{detectIncognitoHeuristics:e}=await import("./incognito-CBxUhUOT.js"),t=await e();t&&(h.incognitoDetection={likelihood:t.likelihood,methods:t.methods},u.push("incognito"))}catch(e){d.push({component:"incognito",error:e instanceof Error?e.message:"Incognito detection failed"})}if(ot("hardware",l))try{const e=await import("./hardware-B-ewb7VY.js").catch(()=>null);if(null===(t=null==e?void 0:e.isHardwareDetectionAvailable)||void 0===t?void 0:t.call(e)){const t=null===(n=e.getHardwareFingerprint)||void 0===n?void 0:n.call(e);t&&(h.hardware={value:t,duration:0},u.push("hardware"))}else if(!e){const e={hardwareConcurrency:navigator.hardwareConcurrency||0,deviceMemory:navigator.deviceMemory||0,platform:navigator.platform||"unknown"};h.hardware={value:e,duration:0},u.push("hardware")}}catch(e){d.push({component:"hardware",error:e instanceof Error?e.message:"Hardware detection failed"})}if(ot("system",l))try{const{getSystemFingerprint:e,isSystemDetectionAvailable:t}=await import("./system-Dcygxavm.js");if(t()){const t=e();t&&(h.system={value:t,duration:0},u.push("system"))}}catch(e){d.push({component:"system",error:e instanceof Error?e.message:"System detection failed"})}if(ot("storage",l))try{const{getStorageFingerprint:e,isStorageDetectionAvailable:t}=await import("./storage-iGy4i5YE.js");if(t()){const t=performance.now(),n=await e(),o=performance.now()-t;n&&(h.storage={value:n,duration:o},u.push("storage"))}}catch(e){d.push({component:"storage",error:e instanceof Error?e.message:"Storage detection failed"})}if(ot("math",l))try{const{getCompleteMathFingerprint:e,isMathDetectionAvailable:t}=await import("./math-BLnUnJG8.js");if(t()){const t=performance.now(),n=e(),o=performance.now()-t;n&&(h.math={value:n,duration:o},u.push("math"))}}catch(e){d.push({component:"math",error:e instanceof Error?e.message:"Math fingerprinting failed"})}if(ot("domBlockers",l))try{const{getDomBlockersFingerprint:e,isDomBlockersDetectionAvailable:t}=await import("./dom-blockers-BamKJxCs.js");if(t()){const t=performance.now(),n=await e({debug:l.debug}),o=performance.now()-t;n&&(h.domBlockers={value:n,duration:o},u.push("domBlockers"))}}catch(e){d.push({component:"domBlockers",error:e instanceof Error?e.message:"DOM blockers detection failed"})}if(ot("accessibility",l))try{const{getAccessibilityFingerprint:e,isAccessibilityDetectionAvailable:t}=await Promise.resolve().then(function(){return De});if(t()){const t=performance.now(),n=e(),o=performance.now()-t;n&&(h.accessibility={value:n,duration:o},u.push("accessibility"))}}catch(e){d.push({component:"accessibility",error:e instanceof Error?e.message:"Accessibility detection failed"})}if(ot("browserApis",l))try{const{getBrowserApisFingerprint:e,isBrowserApisDetectionAvailable:t}=await import("./browser-apis-C32PGYAh.js");if(t()){const t=performance.now(),n=e(),o=performance.now()-t;n&&(h.browserApis={value:n,duration:o},u.push("browserApis"))}}catch(e){d.push({component:"browserApis",error:e instanceof Error?e.message:"Browser APIs detection failed"})}if(ot("pluginsEnhanced",l))try{const{getEnhancedPluginFingerprint:e,isEnhancedPluginDetectionAvailable:t}=await import("./plugins-enhanced-CnBdC9_k.js");if(t()){const t=performance.now(),n=e(),o=performance.now()-t;n&&(h.pluginsEnhanced={value:n,duration:o},u.push("pluginsEnhanced"))}}catch(e){d.push({component:"pluginsEnhanced",error:e instanceof Error?e.message:"Enhanced plugin detection failed"})}if(ot("mathFingerprint",l)&&function(){try{return"undefined"!=typeof Math&&"function"==typeof Math.sin}catch{return!1}}())try{const e=performance.now(),t=Je(),n=performance.now()-e;t&&(h.mathFingerprint={value:t,duration:n,analysis:et(t),hash:Qe()},u.push("mathFingerprint"))}catch(e){d.push({component:"mathFingerprint",error:e instanceof Error?e.message:"Math fingerprinting failed"})}if(ot("fontPreferences",l)&&function(){try{return"undefined"!=typeof document&&"function"==typeof document.createElement&&void 0!==document.body}catch{return!1}}())try{const e=performance.now(),t=await async function(){try{const{document:e,container:t,cleanup:n}=await new Promise((e,t)=>{const n=document.createElement("iframe");n.style.cssText="position: absolute; left: -9999px; top: -9999px; width: 1px; height: 1px; opacity: 0;",n.srcdoc='<!doctype html>\n <html>\n <head>\n <meta name="viewport" content="width=device-width, initial-scale=1">\n <style>\n body { \n margin: 0; \n padding: 20px; \n width: 4000px;\n text-size-adjust: none;\n -webkit-text-size-adjust: none;\n }\n </style>\n </head>\n <body></body>\n </html>',n.onload=()=>{try{const o=n.contentDocument,r=n.contentWindow;if(!o||!r)return void t(new Error("Cannot access iframe content"));const a=o.body;A()?a.style.zoom=""+1/r.devicePixelRatio:g()&&(a.style.zoom="reset");const i=o.createElement("div");i.textContent=Array(200).fill("word").join(" "),a.appendChild(i),e({document:o,container:a,cleanup:()=>{n.parentNode&&n.parentNode.removeChild(n)}})}catch(e){t(e)}},n.onerror=()=>{t(new Error("Failed to load iframe"))},document.body.appendChild(n)}),o={};for(const[n,r]of Object.entries(Be))try{o[n]=He(e,t,r)}catch(e){o[n]=0}const r=function(e,t,n="Arial"){try{const t=e.createElement("canvas");t.width=100,t.height=50;const o=t.getContext("2d",{willReadFrequently:!0});if(!o)return{quality:0,antiAliasing:!1,smoothing:0};o.font=`24px "${n}"`,o.fillStyle="#000000",o.fillText("Wg",10.5,30.7);const r=o.getImageData(10,20,30,20).data;let a=0,i=0,c=0;for(let e=0;e<r.length;e+=4){const t=r[e]||0,n=r[e+1]||0,o=r[e+2]||0;(r[e+3]||0)<10||(c++,t===n&&n===o&&t>0&&t<255&&i++,e>4&&Math.abs(t-(r[e-4]||0))>50&&a++)}const s=c>0?i/c:0,l=c>0?100*i/c:0;return{quality:Math.round(l),antiAliasing:s>.1,smoothing:Math.round(100*l)/100}}catch(e){return{quality:0,antiAliasing:!1,smoothing:0}}}(e,0,"Arial"),a=function(e){try{const t=e.createElement("canvas");t.width=100,t.height=50;const n=t.getContext("2d",{willReadFrequently:!0});if(!n)return{clearType:!1,hintingLevel:0,subpixelRendering:!1};const o=["rn","il","WW","mm"];let r=0,a=0,i=0;for(const e of o){n.clearRect(0,0,t.width,t.height),n.font="16px Arial",n.fillStyle="#000",n.fillText(e,10,25);const o=n.getImageData(10,15,40,20).data;for(let e=0;e<o.length;e+=12){const t=o[e]||0,n=o[e+1]||0,c=o[e+2]||0,s=o[e+4]||0,l=o[e+5]||0,u=o[e+6]||0;(Math.abs(t-n)>20||Math.abs(n-c)>20)&&r++,Math.abs(t-s)+Math.abs(n-l)+Math.abs(c-u)>50&&a++,(t>0&&t<255||n>0&&n<255||c>0&&c<255)&&i++}}return{clearType:r>10,hintingLevel:Math.min(Math.round(i/10),5),subpixelRendering:a>5}}catch(e){return{clearType:!1,hintingLevel:0,subpixelRendering:!1}}}(e),c={},s=["Arial","Helvetica","Times New Roman","Georgia","Courier New"];for(const n of s)try{c[n]=Ue(e,t,n)}catch(e){c[n]="fallback-error"}const l=i([JSON.stringify(o),JSON.stringify(r),JSON.stringify(a),JSON.stringify(c)].join("|"));return n(),{...o,antiAliasing:{enabled:r.antiAliasing,type:a.clearType?"cleartype":r.antiAliasing?"standard":"none",smoothingLevel:r.smoothing},systemFontHints:a,fallbackBehavior:c,isolatedHash:l}}catch(e){return{...Object.keys(Be).reduce((e,t)=>(e[t]=0,e),{}),antiAliasing:{enabled:!1,type:"unknown",smoothingLevel:0},systemFontHints:{clearType:!1,hintingLevel:0,subpixelRendering:!1},fallbackBehavior:{},isolatedHash:"error"}}}(),n=performance.now()-e;t&&(h.fontPreferences={value:t,duration:n,analysis:Ve(t),hash:(y=t,y.isolatedHash&&"error"!==y.isolatedHash?y.isolatedHash:[...[y.default,y.serif,y.sans,y.mono,y.apple,y.system,y.min,y.large,y.ui,y.emoji,y.math,y.cjk,y.arabic,y.hebrew,y.subpixel,y.kerning,y.ligatures].map(e=>Math.round(e)),y.antiAliasing.enabled?1:0,y.systemFontHints.clearType?1:0,y.systemFontHints.hintingLevel,Math.round(y.antiAliasing.smoothingLevel)].join(","))},u.push("fontPreferences"))}catch(e){d.push({component:"fontPreferences",error:e instanceof Error?e.message:"Font preferences detection failed"})}var y,w,v;if(ot("dateTimeLocale",l)&&function(){try{return"undefined"!=typeof window&&void 0!==window.Intl}catch{return!1}}())try{const e=performance.now(),t=function(){const e=function(){try{if(!window.Intl)return-1;const e=window.Intl.DateTimeFormat;if(!e)return-2;const t=(new e).resolvedOptions();return t.locale||""===t.locale?{locale:t.locale||"unknown",calendar:t.calendar||"unknown",numberingSystem:t.numberingSystem||"unknown",timeZone:t.timeZone||"unknown",hourCycle:t.hourCycle||"unknown",hour12:void 0!==t.hour12&&t.hour12}:-3}catch(e){return-2}}();if("number"==typeof e)return e;const t=function(){try{if(!window.Intl||!window.Intl.NumberFormat)return-4;const e=(new Intl.NumberFormat).resolvedOptions(),t=new Intl.NumberFormat(void 0,{style:"currency",currency:"USD"}).resolvedOptions();return{numberLocale:e.locale||"unknown",currencyDisplay:t.currencyDisplay||"unknown",currencySign:t.currencySign||"unknown",notation:e.notation||"unknown",signDisplay:e.signDisplay||"unknown"}}catch(e){return-4}}(),n="number"==typeof t?{}:t,o=function(){const e={listStyle:"unknown",relativeTimeStyle:"unknown",pluralRules:"unknown"};try{if(window.Intl&&window.Intl.ListFormat){const t=(new window.Intl.ListFormat).resolvedOptions();e.listStyle=t.style||"unknown"}}catch(e){}try{if(window.Intl&&window.Intl.RelativeTimeFormat){const t=(new window.Intl.RelativeTimeFormat).resolvedOptions();e.relativeTimeStyle=t.style||"unknown"}}catch(e){}try{if(window.Intl&&window.Intl.PluralRules){const t=(new window.Intl.PluralRules).select(1);e.pluralRules=t||"unknown"}}catch(e){}return e}(),r=function(){const e={DateTimeFormat:!1,NumberFormat:!1,RelativeTimeFormat:!1,ListFormat:!1,PluralRules:!1,Collator:!1};try{window.Intl&&(e.DateTimeFormat="function"==typeof window.Intl.DateTimeFormat,e.NumberFormat="function"==typeof window.Intl.NumberFormat,e.RelativeTimeFormat="function"==typeof window.Intl.RelativeTimeFormat,e.ListFormat="function"==typeof window.Intl.ListFormat,e.PluralRules="function"==typeof window.Intl.PluralRules,e.Collator="function"==typeof window.Intl.Collator)}catch(e){}return e}(),a=navigator.language||"unknown",i=e.locale===a;let c="unknown",s="unknown";try{if(window.Intl&&"function"==typeof window.Intl.DateTimeFormat){const e=new Intl.DateTimeFormat(void 0,{dateStyle:"long"}),t=new Intl.DateTimeFormat(void 0,{timeStyle:"long"}),n=e.resolvedOptions(),o=t.resolvedOptions();c=n.dateStyle||"unknown",s=o.timeStyle||"unknown"}}catch(e){}return{locale:e.locale||"unknown",calendar:e.calendar||"unknown",numberingSystem:e.numberingSystem||"unknown",timeZone:e.timeZone||"unknown",dateStyle:c,timeStyle:s,hourCycle:e.hourCycle||"unknown",hour12:e.hour12||!1,numberLocale:n.numberLocale||e.locale||"unknown",currencyDisplay:n.currencyDisplay||"unknown",currencySign:n.currencySign||"unknown",notation:n.notation||"unknown",signDisplay:n.signDisplay||"unknown",listStyle:o.listStyle||"unknown",relativeTimeStyle:o.relativeTimeStyle||"unknown",pluralRules:o.pluralRules||"unknown",navigatorLanguage:a,localeMatch:i,intlSupport:r}}(),n=performance.now()-e;t&&"object"==typeof t&&(h.dateTimeLocale={value:t,duration:n,analysis:Le(t),hash:(w=t,"number"==typeof w?`status-${w}`:[w.locale,w.calendar,w.numberingSystem,w.timeZone,w.hourCycle,w.hour12?"1":"0",w.localeMatch?"1":"0",Object.values(w.intlSupport).map(e=>e?"1":"0").join("")].join("|"))},u.push("dateTimeLocale"))}catch(e){d.push({component:"dateTimeLocale",error:e instanceof Error?e.message:"DateTime locale detection failed"})}if(ot("accessibilityEnhanced",l)&&Me())try{const e=performance.now(),t=Pe(),n=performance.now()-e;t&&(h.accessibilityEnhanced={value:t,duration:n,analysis:Fe(t)},u.push("accessibilityEnhanced"))}catch(e){d.push({component:"accessibilityEnhanced",error:e instanceof Error?e.message:"Enhanced accessibility detection failed"})}if(ot("enhancedFonts",l)&&function(){try{return"undefined"!=typeof document&&"function"==typeof document.createElement&&void 0!==document.body}catch{return!1}}())try{const e=performance.now(),t=await async function(){const e=performance.now();try{const{document:t,body:n,cleanup:o}=await new Promise((e,t)=>{const n=document.createElement("iframe");n.style.cssText="position: absolute; left: -9999px; top: -9999px; width: 1px; height: 1px; opacity: 0; pointer-events: none;",n.onload=()=>{try{const t=n.contentDocument;if(!t)throw new Error("Cannot access iframe document");const o=t.body;if(!o)throw new Error("Iframe body not available");o.style.fontSize=We,o.style.margin="0",o.style.padding="0",e({document:t,body:o,cleanup:()=>{n.parentNode&&n.parentNode.removeChild(n)}})}catch(e){t(e)}},n.onerror=()=>{t(new Error("Failed to load font measurement iframe"))},document.body.appendChild(n)});try{const o=t.createElement("div");o.style.setProperty("visibility","hidden","important");const r=$e.map(e=>Xe(t,e));r.forEach(e=>o.appendChild(e));const a={};for(const e of Ge)a[e]=$e.map(n=>ze(t,e,n)),a[e].forEach(e=>o.appendChild(e));n.appendChild(o);const i={};$e.forEach((e,t)=>{const n=r[t];n&&(i[e]={width:n.offsetWidth,height:n.offsetHeight})});const c=[],s={};for(const e of Ge){const t=a[e];t&&(qe(t,i)&&c.push(e),t.length>0&&t[0]&&(s[e]={width:t[0].offsetWidth,height:t[0].offsetHeight}))}const l=performance.now()-e,u=Object.values(s).map(e=>e.width);return{available:c,method:"iframe",measurements:s,precision:new Set(u).size/u.length,totalTested:Ge.length,detectionTime:l}}finally{o()}}catch(t){return function(e){const t=[],n={};try{const e=document.createElement("div");e.style.cssText="position: absolute; left: -9999px; top: -9999px; visibility: hidden;";const o={};$e.forEach(t=>{const n=document.createElement("span");n.style.fontFamily=t,n.style.fontSize=We,n.style.whiteSpace="nowrap",n.textContent=je,e.appendChild(n),document.body.appendChild(e),o[t]={width:n.offsetWidth,height:n.offsetHeight},document.body.removeChild(e),e.removeChild(n)});for(const r of Ge){let a=!1;for(const t of $e){const i=document.createElement("span");i.style.fontFamily=`'${r}',${t}`,i.style.fontSize=We,i.style.whiteSpace="nowrap",i.textContent=je,e.appendChild(i),document.body.appendChild(e);const c={width:i.offsetWidth,height:i.offsetHeight};n[r]=c;const s=o[t];if(!s||c.width===s.width&&c.height===s.height||(a=!0),document.body.removeChild(e),e.removeChild(i),a)break}a&&t.push(r)}}catch(e){}const o=performance.now()-e,r=Object.values(n).map(e=>e.width),a=new Set(r).size;return{available:t,method:"dom",measurements:n,precision:r.length>0?a/r.length:0,totalTested:Ge.length,detectionTime:o}}(e)}}(),n=performance.now()-e;t&&(h.enhancedFonts={value:t,duration:n,analysis:Ze(t),hash:(v=t,`${v.available.sort().join(",")}|${v.method}|${v.precision.toFixed(2)}`)},u.push("enhancedFonts"))}catch(e){d.push({component:"enhancedFonts",error:e instanceof Error?e.message:"Enhanced font detection failed"})}const b={};let S;u.forEach(e=>{const t=h[e];t&&t.value&&(b[e]=t.value)});try{const{calculateConfidence:e}=await import("./confidence-CQp4GgvX.js"),t=[...u.map(e=>{var t,n;return{component:e,success:!0,duration:(null===(t=h[e])||void 0===t?void 0:t.duration)||0,value:null===(n=h[e])||void 0===n?void 0:n.value}}),...d.map(e=>({component:e.component,success:!1,duration:0,error:e.error}))];S=e(t,{requireMinimumComponents:6,penalizeMissingCore:!0,adjustForIncognito:!0}),h.confidence={score:S.score,level:S.level,factors:S.factors,recommendations:S.recommendations}}catch(e){const t=u.length/(u.length+d.length||1);h.confidence={score:t>=.8?.95:t>=.6?.8:.5,level:t>=.8?"High":t>=.6?"Medium":"Low",factors:{componentCount:u.length,weightedScore:t,stabilityScore:t,entropyScore:t,spoofResistanceScore:t},recommendations:t<.8?["Enable more fingerprinting components"]:[]}}const E={...h,hash:"",components:u,collectionTime:performance.now()-c},T={success:u.length>0,collectedComponents:u,failedComponents:d,confidence:S||h.confidence};if(u.length>0){const e=null===(o=E.browser)||void 0===o?void 0:o.value,t=null===(r=E.screen)||void 0===r?void 0:r.value,n=(null==e?void 0:e.userAgent)||"",i=(()=>{var e;const n=!0===(null===(e=navigator.userAgentData)||void 0===e?void 0:e.mobile),o=navigator.maxTouchPoints||0,r=(null==t?void 0:t.width)||0,a=(null==t?void 0:t.height)||0,i=Math.min(r,a);return Math.max(r,a),n?"mobile":o>0?i<=480?"mobile":"tablet":i>1024?"desktop":i<=480?"mobile":"desktop"})();let c={};try{const{collectDeviceSignals:e}=await import("./device-signals-ChNkNSJR.js");c=e()}catch(e){}const u={ua:(()=>{try{return k().family}catch{const e=n,t=e.match(/(chrome|safari|firefox|edge|edg|brave|opera|opr|chromium)/i);return((null==t?void 0:t[1])||e.split(" ")[0]||"unknown").toLowerCase()}})(),timezone:(null==e?void 0:e.timezone)||"unknown",primaryLanguage:(()=>{try{const t=null==e?void 0:e.languages;return Array.isArray(t)&&t.length>0&&t[0]?t[0].toLowerCase().split("-")[0]:"undefined"!=typeof navigator&&navigator.language?navigator.language.toLowerCase().split("-")[0]:"unknown"}catch{return"unknown"}})(),platform:((null==e?void 0:e.platform)||"unknown").toLowerCase(),deviceType:i,hardware:(()=>{var e;const t=c.hardwareConcurrency,n=c.deviceMemory;if(!t&&!n)return;const o=t?(e=>e>=32?"workstation":e>=20?"ultra":e>=16?"high":e>=12?"premium":e>=8?"mid":e>=6?"normal":e>=4?"basic":e>=2?"low":"minimal")(t):"unknown",r=n?(e=>e>=64?"workstation":e>=32?"ultra":e>=24?"high":e>=16?"premium":e>=12?"mid":e>=8?"normal":e>=4?"basic":e>=2?"low":"minimal")(n):"unknown";var a;return{cores:o,memory:r,arch:void 0===(a=c.architecture)?"unknown":255===a?"arm64":0===a?"x86_64":"other",class:((e,t)=>"workstation"!==e&&"ultra"!==e||"workstation"!==t&&"ultra"!==t?"high"!==e&&"premium"!==e||"high"!==t&&"premium"!==t&&"ultra"!==t?"mid"!==e&&"normal"!==e||"mid"!==t&&"normal"!==t&&"premium"!==t?"basic"!==e&&"low"!==e||"basic"!==t&&"low"!==t&&"normal"!==t?"minimal"===e||"minimal"===t?"mobile":"mixed":"budget":"mainstream":"enthusiast":"professional")(o,r),touch:(null===(e=c.touchSupport)||void 0===e?void 0:e.maxTouchPoints)?c.touchSupport.maxTouchPoints>=10?"multi":c.touchSupport.maxTouchPoints>=5?"standard":"basic":"none"}})(),screenFrame:(null==c?void 0:c.screenFrame)?{top:c.screenFrame.top||0,right:c.screenFrame.right||0,bottom:c.screenFrame.bottom||0,left:c.screenFrame.left||0}:void 0,display:(()=>{const e=c.colorDepth,t=c.colorGamut,n=(e=>e?e>=48?"ultra_high":e>=32?"high":e>=24?"normal":e>=16?"basic":"low":"unknown")(e),o=(e=>{if(!e)return"unknown";switch(e){case"rec2020":return"professional";case"p3":return"enhanced";case"srgb":return"standard";default:return"unknown"}})(t);return{depth:n,gamut:o,class:((e,t)=>"ultra_high"===e||"professional"===t?"professional":"high"===e||"enhanced"===t?"premium":"normal"===e&&"standard"===t?"standard":"basic"===e?"basic":"legacy")(n,o)}})()},d=[u.ua||"",u.platform||"",u.deviceType||"",u.timezone||"",u.primaryLanguage||""].filter(Boolean);if(d.length>=3){const e=d.join("|");let t=0;for(let n=0;n<e.length;n++)t=(t<<5)-t+e.charCodeAt(n)&4294967295;u._entropy=Math.abs(t).toString(36).substring(0,8)}l.debug||"undefined"!=typeof window&&window._rabbitTrackerDebug;const h=function(e){const t=s(e);return a(JSON.stringify(t))}(u,l.debug),m=["canvas","webgl","audio","mathFingerprint","fontPreferences","enhancedFonts","dateTimeLocale","accessibilityEnhanced","domBlockers","pluginsEnhanced"],f={};for(const[e,t]of Object.entries(b))m.includes(e)||(f[e]=t);const p=function(e){const t=s(e);return a(JSON.stringify(t))}({...f,_stableCore:u},l.debug);E.hash=p,l.debug,T.data={...E,stableCoreHash:h,stableCoreVector:u},l.debug&&(null==S||S.recommendations.length)}else T.error="No components could be collected";return T}function ct(e){return function(e){const t=(e.length>=32?e:(e+e+e+e).substring(0,32)).substring(0,32).split("");return t[12]="4",t[16]=(3&parseInt(t[16]||"0",16)|8).toString(16),`${t.slice(0,8).join("")}-${t.slice(8,12).join("")}-${t.slice(12,16).join("")}-${t.slice(16,20).join("")}-${t.slice(20,32).join("")}`}(e.hash)}async function st(){return it({gdprMode:!0,includeInvasive:!1,excludeComponents:["canvas","webgl","audio"],timeout:2e3})}async function lt(){return it({gdprMode:!1,includeInvasive:!0,timeout:5e3})}function ut(){nt.clear()}function dt(){return Y()&&L()}function ht(){const e=[];return V()&&e.push("canvas"),me()&&e.push("webgl"),p()&&e.push("audio"),q()&&e.push("fonts"),Y()&&e.push("screen"),L()&&e.push("browser"),e}export{R as a,C as b,T as c,it as d,ct as e,st as f,F as g,lt as h,A as i,ut as j,dt as k,ht as l};