@ianmenethil/zp-devicefp 0.1.1 → 0.2.0

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.
@@ -1 +1 @@
1
- "use strict";(()=>{function D(){return{global:globalThis,navigator:typeof navigator>"u"?void 0:navigator,document:typeof document>"u"?void 0:document,screen:typeof screen>"u"?void 0:screen,location:typeof location>"u"?void 0:location,fetch:typeof fetch>"u"?void 0:fetch,crypto:globalThis.crypto,performance:typeof performance>"u"?void 0:performance,intl:typeof Intl>"u"?void 0:Intl}}function s(e){return e.performance?.now?.()??Date.now()}function K(e){return!!e.document?.createElement}function _(e){return!!e.document?.createElement?.("canvas").getContext}function Ne(e){let o=e;return o.OfflineAudioContext??o.webkitOfflineAudioContext}var X={name:"audio",tier:"core",supportsSync:!1,async collect(e){let o=s(e.env),t=Ne(e.env.global);if(!t)return{status:"unsupported",durationMs:s(e.env)-o};try{let n=new t(1,5e3,44100),r=n.createOscillator(),a=n.createDynamicsCompressor();r.type="triangle",r.frequency.value=1e4,a.threshold.value=-50,a.knee.value=40,a.ratio.value=12,a.attack.value=0,a.release.value=.25,r.connect(a),a.connect(n.destination),r.start(0);let i=await n.startRendering(),l=i.getChannelData(0),c=0;for(let u=4500;u<l.length;u+=1)c+=Math.abs(l[u]);return{status:"ok",durationMs:s(e.env)-o,value:{sampleRate:i.sampleRate,length:i.length,signalValue:Number(c.toFixed(6))}}}catch(n){return{status:"blocked",durationMs:s(e.env)-o,error:n instanceof Error?n.message:String(n)}}}};function Te(e){let o=e.createElement("canvas");o.width=280,o.height=80;let t=o.getContext("2d");if(!t)throw new Error("2D canvas context unavailable");return t.fillStyle="#f60",t.fillRect(8,10,120,60),t.fillStyle="#069",t.font="20px Arial",t.fillText("Browser FP",12,40),t.strokeStyle="rgba(102, 204, 0, 0.7)",t.beginPath(),t.arc(180,40,24,0,Math.PI*2),t.stroke(),{dataUrl:o.toDataURL(),winding:t.isPointInPath(1,1,"evenodd")}}var Y={name:"canvas",tier:"core",supportsSync:!0,async collect(e){return this.collectSync(e)},collectSync(e){let o=s(e.env),t=e.env.document;if(!t||!_(e.env))return{status:"unsupported",durationMs:s(e.env)-o};try{return{status:"ok",durationMs:s(e.env)-o,value:Te(t)}}catch(n){return{status:"error",durationMs:s(e.env)-o,error:n instanceof Error?n.message:String(n)}}}};var H=["ua","uaHints","locale","screen","hardware","storage","fonts","canvas","webgl","audio"],Z=["mediaDevices","permissions","webrtc","frameInfo","networkInfo","paymentSupport","referrerInfo","navigationInfo","riskSignals"],$=["ua","locale","screen","hardware","storage","fonts","canvas","webgl","frameInfo","networkInfo","paymentSupport","referrerInfo","navigationInfo"];var J=["Arial","Helvetica Neue","Times New Roman","Georgia","Courier New","Trebuchet MS","Verdana","Tahoma","Impact","Comic Sans MS"],Q=["geolocation","notifications","camera","microphone"],ee=["architecture","bitness","formFactors","fullVersionList","model","platform","platformVersion","wow64"];var De=["monospace","sans-serif","serif"],_e="mmmmmmmmmmlli";function te(e,o,t){let n=e.createElement("span");n.textContent=_e,n.style.position="absolute",n.style.left="-9999px",n.style.top="-9999px",n.style.fontSize="72px",n.style.fontFamily=`${o}, ${t}`,e.body.appendChild(n);let r=n.offsetWidth;return e.body.removeChild(n),r}function Ie(e){let o=[];for(let t of J){let n=!1;for(let r of De){let a=te(e,"",r);if(te(e,t,r)!==a){n=!0;break}}n&&o.push(t)}return o}var ne={name:"fonts",tier:"core",supportsSync:!0,async collect(e){return this.collectSync(e)},collectSync(e){let o=s(e.env),t=e.env.document;if(!t||!K(e.env))return{status:"unsupported",durationMs:s(e.env)-o};try{let n=Ie(t);return{status:"ok",durationMs:s(e.env)-o,value:{detectedFonts:n,fontCount:n.length}}}catch(n){return{status:"error",durationMs:s(e.env)-o,error:n instanceof Error?n.message:String(n)}}}};var oe={name:"frameInfo",tier:"extended",supportsSync:!0,async collect(e){return this.collectSync(e)},collectSync(e){let o=s(e.env),t=e.env.document;if(!t)return{status:"unsupported",durationMs:s(e.env)-o};try{let n=t.getElementsByTagName("iframe"),r=[];for(let i of n){let l=i.src||"";try{r.push(new URL(l).hostname)}catch{r.push("unknown")}}let a=e.env.global;return{status:"ok",durationMs:s(e.env)-o,value:{iframesCount:n.length,isTopLevel:a===a.top,iframeDomains:r}}}catch(n){return{status:"error",durationMs:s(e.env)-o,error:n instanceof Error?n.message:String(n)}}}};var re={name:"hardware",tier:"core",supportsSync:!0,async collect(e){return this.collectSync(e)},collectSync(e){let o=s(e.env),t=e.env.navigator;return t?{status:"ok",durationMs:s(e.env)-o,value:{hardwareConcurrency:t.hardwareConcurrency,deviceMemory:t.deviceMemory,platform:t.platform,maxTouchPoints:t.maxTouchPoints}}:{status:"unsupported",durationMs:s(e.env)-o}}};var se={name:"locale",tier:"core",supportsSync:!0,async collect(e){return this.collectSync(e)},collectSync(e){let o=s(e.env),t=e.env.navigator,n=e.env.intl;if(!t||!n)return{status:"unsupported",durationMs:s(e.env)-o};let r=new n.DateTimeFormat,a=r.resolvedOptions(),i=new n.NumberFormat(t.language),l=typeof n.RelativeTimeFormat=="function"?new n.RelativeTimeFormat(t.language,{numeric:"auto"}):void 0,c=new Date(Date.UTC(2024,0,2,3,4,5));return{status:"ok",durationMs:s(e.env)-o,value:{language:t.language,languages:t.languages,locale:a.locale,calendar:a.calendar,numberingSystem:a.numberingSystem,timeZone:a.timeZone,hourCycle:a.hourCycle,timeZoneOffsetMinutes:c.getTimezoneOffset(),formattedNumber:i.format(123456.789),formattedDate:r.format(c),formattedRelativeDay:l?.format(-1,"day")}}}};var ae={name:"mediaDevices",tier:"extended",supportsSync:!1,async collect(e){let o=s(e.env),t=e.env.navigator?.mediaDevices,n=e.env.global;if(!n.isSecureContext)return{status:"blocked",durationMs:s(e.env)-o,error:"Media device enumeration requires a secure context."};if(n.document?.visibilityState!=="visible")return{status:"blocked",durationMs:s(e.env)-o,error:"Media device enumeration requires a visible document."};if(!t?.enumerateDevices)return{status:"unsupported",durationMs:s(e.env)-o};try{let a=(await t.enumerateDevices()).reduce((i,l)=>(i[l.kind]=(i[l.kind]??0)+1,i),{});return{status:"ok",durationMs:s(e.env)-o,value:a}}catch(r){return{status:"blocked",durationMs:s(e.env)-o,error:r instanceof Error?r.message:String(r)}}}};var ie={name:"navigationInfo",tier:"extended",supportsSync:!0,async collect(e){return this.collectSync(e)},collectSync(e){let o=s(e.env),t=e.env.performance;if(!t)return{status:"unsupported",durationMs:s(e.env)-o};try{let n=null,a=t.getEntriesByType("navigation")?.[0];return a!==void 0&&(n=a.type),n===null&&(n=t.navigation.type),{status:"ok",durationMs:s(e.env)-o,value:{navigationType:n}}}catch(n){return{status:"error",durationMs:s(e.env)-o,error:n instanceof Error?n.message:String(n)}}}};var le={name:"networkInfo",tier:"extended",supportsSync:!0,async collect(e){return this.collectSync(e)},collectSync(e){let o=s(e.env),t=e.env.navigator;if(!t)return{status:"unsupported",durationMs:s(e.env)-o};let n=t.connection??t.mozConnection??t.webkitConnection??null;if(!n)return{status:"unsupported",durationMs:s(e.env)-o};let r=n;return{status:"ok",durationMs:s(e.env)-o,value:{effectiveType:r.effectiveType??null,downlink:r.downlink??null,rtt:r.rtt??null,saveData:typeof r.saveData=="boolean"?r.saveData:null}}}};var ce={name:"paymentSupport",tier:"extended",supportsSync:!0,async collect(e){return this.collectSync(e)},collectSync(e){let o=s(e.env),t=e.env.global;return{status:"ok",durationMs:s(e.env)-o,value:{paymentRequest:t.PaymentRequest!==void 0}}}};var ue={name:"permissions",tier:"extended",supportsSync:!1,async collect(e){let o=s(e.env),t=e.env.navigator?.permissions;if(!t?.query)return{status:"unsupported",durationMs:s(e.env)-o};try{let n=await Promise.all(Q.map(async r=>{try{let a=await t.query({name:r});return[r,a.state]}catch{return[r,"unsupported"]}}));return{status:"ok",durationMs:s(e.env)-o,value:Object.fromEntries(n)}}catch(n){return{status:"blocked",durationMs:s(e.env)-o,error:n instanceof Error?n.message:String(n)}}}};var pe={name:"referrerInfo",tier:"extended",supportsSync:!0,async collect(e){return this.collectSync(e)},collectSync(e){let o=s(e.env),t=e.env.document;return t?{status:"ok",durationMs:s(e.env)-o,value:{referrer:t.referrer}}:{status:"unsupported",durationMs:s(e.env)-o}}};var me={name:"riskSignals",tier:"extended",supportsSync:!1,async collect(e){let o=s(e.env),t=e.env.navigator,n=e.env.global;if(!t)return{status:"unsupported",durationMs:s(e.env)-o};try{let r=t.userAgent,a=t.webdriver?!0:null,i=[];r.includes("HeadlessChrome")&&i.push("headless-ua"),r.includes("Chrome")&&typeof n.chrome!="object"&&i.push("missing-chrome-object"),(n.outerHeight===0||n.outerWidth===0)&&i.push("zero-outer-dimensions"),r.includes("Chrome")&&!r.includes("Mobile")&&t.plugins.length===0&&i.push("no-plugins-on-desktop-chrome"),Array.isArray(t.languages)&&t.languages.length===0&&i.push("empty-languages");let l=null,c=t.userAgentData;if(c&&"getHighEntropyValues"in c)try{let d=c,g=r.includes("Win")?"Windows":r.includes("Mac")?"macOS":r.includes("Linux")?"Linux":null,p=d.platform||null;l=g===null||p===null?null:g===p}catch{l=null}let u=typeof Notification<"u"?Notification.permission:null,y=null;if(typeof t.permissions?.query=="function")try{(await t.permissions.query({name:"notifications"})).state==="denied"&&Notification.permission==="default"&&(y=!0)}catch{y=null}let f=e.env.performance?.timeOrigin?Math.round(Date.now()-e.env.performance.timeOrigin):null;return{status:"ok",durationMs:s(e.env)-o,value:{webdriver:a,headlessHints:i,uaConsistency:l,notificationPermission:u,permissionsHeadlessHint:y,timeToCaptureMs:f}}}catch(r){return{status:"blocked",durationMs:s(e.env)-o,error:r instanceof Error?r.message:String(r)}}}};function I(e,o){if(typeof e.matchMedia!="function")return"unsupported";try{return e.matchMedia(o).matches}catch{return"unsupported"}}var de={name:"screen",tier:"core",supportsSync:!0,async collect(e){return this.collectSync(e)},collectSync(e){let o=s(e.env),t=e.env.screen,n=e.env.navigator,r=e.env.global;return t?{status:"ok",durationMs:s(e.env)-o,value:{width:t.width,height:t.height,availWidth:t.availWidth,availHeight:t.availHeight,colorDepth:t.colorDepth,pixelDepth:t.pixelDepth,orientationType:t.orientation.type,orientationAngle:t.orientation.angle,maxTouchPoints:n?.maxTouchPoints??0,devicePixelRatio:typeof r.devicePixelRatio=="number"?r.devicePixelRatio:void 0,colorGamutP3:I(r,"(color-gamut: p3)"),prefersReducedMotion:I(r,"(prefers-reduced-motion: reduce)"),prefersContrastMore:I(r,"(prefers-contrast: more)"),forcedColorsActive:I(r,"(forced-colors: active)")}}:{status:"unsupported",durationMs:s(e.env)-o}}};function fe(e,o){try{let t=e[o];if(!t)return"unsupported";let n="__bf_probe__";return t.setItem(n,"1"),t.removeItem(n),"available"}catch{return"blocked"}}var ge={name:"storage",tier:"core",supportsSync:!0,async collect(e){return this.collectSync(e)},collectSync(e){let o=s(e.env),t=e.env.navigator,n=e.env.global;return{status:"ok",durationMs:s(e.env)-o,value:{cookiesEnabled:t?.cookieEnabled??!1,localStorage:fe(n,"localStorage"),sessionStorage:fe(n,"sessionStorage"),indexedDb:typeof n.indexedDB>"u"?"unsupported":"available",openDatabase:typeof n.openDatabase>"u"?"unsupported":"available",pdfViewerEnabled:t?.pdfViewerEnabled??!1}}}};var ye={name:"ua",tier:"core",supportsSync:!0,async collect(e){return this.collectSync(e)},collectSync(e){let o=s(e.env),t=e.env.navigator;return t?{status:"ok",durationMs:s(e.env)-o,value:{userAgent:t.userAgent,appVersion:t.appVersion,vendor:t.vendor,platform:t.platform,webdriver:t.webdriver,maxTouchPoints:t.maxTouchPoints,cookieEnabled:t.cookieEnabled,vendorSub:t.vendorSub}}:{status:"unsupported",durationMs:s(e.env)-o}}};var Se={name:"uaHints",tier:"core",supportsSync:!1,async collect(e){let o=s(e.env),t=e.env.navigator?.userAgentData;if(!t)return{status:"unsupported",durationMs:s(e.env)-o};try{let n=t.getHighEntropyValues?await t.getHighEntropyValues([...ee]):void 0;return{status:"ok",durationMs:s(e.env)-o,value:{brands:t.brands??[],mobile:!!t.mobile,platform:t.platform,...n}}}catch(n){return{status:"blocked",durationMs:s(e.env)-o,error:n instanceof Error?n.message:String(n)}}}};function Pe(e){let o=e.createElement("canvas");return o.getContext("webgl")??o.getContext("experimental-webgl")}var ve={name:"webgl",tier:"core",supportsSync:!0,async collect(e){return this.collectSync(e)},collectSync(e){let o=s(e.env),t=e.env.document;if(!t||!_(e.env))return{status:"unsupported",durationMs:s(e.env)-o};let n=Pe(t);if(!n)return{status:"unsupported",durationMs:s(e.env)-o};let r=n.getExtension("WEBGL_debug_renderer_info"),a=r?n.getParameter(r.UNMASKED_RENDERER_WEBGL):n.getParameter(n.RENDERER),i=r?n.getParameter(r.UNMASKED_VENDOR_WEBGL):n.getParameter(n.VENDOR);return{status:"ok",durationMs:s(e.env)-o,value:{vendor:i,renderer:a,version:n.getParameter(n.VERSION),shadingLanguageVersion:n.getParameter(n.SHADING_LANGUAGE_VERSION),maxTextureSize:n.getParameter(n.MAX_TEXTURE_SIZE),maxViewportDims:n.getParameter(n.MAX_VIEWPORT_DIMS),extensions:n.getSupportedExtensions()??[]}}}};function Ae(e){let o=new Set,t=new Set;for(let n of e.split(/\r?\n/)){if(n.startsWith("a=rtpmap:")){let r=n.slice(9);o.add(r.split(" ",2)[1]??n)}n.startsWith("a=extmap:")&&t.add(n.slice(9))}return{codecs:[...o].sort(),extmaps:[...t].sort()}}var he={name:"webrtc",tier:"extended",supportsSync:!1,async collect(e){let o=s(e.env),t=e.env.global,n=t.RTCPeerConnection??t.webkitRTCPeerConnection;if(!n)return{status:"unsupported",durationMs:s(e.env)-o};let r;try{r=new n,r.createDataChannel("bf");let a=await r.createOffer(),i=Ae(a.sdp??"");return{status:"ok",durationMs:s(e.env)-o,value:i}}catch(a){return{status:"blocked",durationMs:s(e.env)-o,error:a instanceof Error?a.message:String(a)}}finally{r?.close()}}};var Oe=[ye,Se,se,de,re,ge,ne,Y,ve,X,ae,ue,he,oe,le,ce,pe,ie,me],V=new Map(Oe.map(e=>[e.name,e]));function P(e){return e&&typeof e=="object"?e:void 0}function U(e){return typeof e=="string"&&e.length>0?e:void 0}function E(e){return typeof e=="number"&&Number.isFinite(e)?e:void 0}function we(e){let o=[],t=[],n=P(e.ua?.value),r=P(e.uaHints?.value),a=P(e.hardware?.value),i=P(e.screen?.value),l=U(n?.userAgent)?.toLowerCase()??"",c=U(n?.platform)?.toLowerCase()??"",u=U(r?.platform)?.toLowerCase()??"",y=!!n?.webdriver,f=E(i?.maxTouchPoints)??E(n?.maxTouchPoints)??0,d=E(i?.width)??0,g=E(i?.height)??0,p=E(a?.deviceMemory);y&&t.push("navigator_webdriver"),l.includes("headless")&&t.push("headless_user_agent"),c&&u&&!c.includes(u)&&!u.includes(c)&&o.push("ua_platform_mismatch"),l.includes("iphone")&&f===0&&o.push("touch_claim_without_touch_points"),l.includes("android")&&d>0&&d>=1600&&o.push("mobile_ua_desktop_screen"),l.includes("windows")&&c.includes("mac")&&o.push("windows_ua_mac_platform"),p!==void 0&&(p<.25||p>64)&&o.push("implausible_device_memory"),d>0&&g>0&&d<200&&g<200&&o.push("tiny_screen_geometry");let S=o.length*.12,v=t.length*.18;return{score:Math.max(0,Math.min(1,Number((1-S-v).toFixed(3)))),anomalies:o,automationHints:t}}function xe(e){return Number.isFinite(e)?Number(e.toFixed(6)):e}function B(e){if(e===void 0)return"undefined";if(e===null)return null;if(typeof e=="number")return xe(e);if(typeof e=="bigint")return e.toString();if(typeof e=="boolean"||typeof e=="string")return e;if(Array.isArray(e))return e.map(o=>B(o));if(e instanceof Date)return e.toISOString();if(typeof e=="object"){let o=e,t={};for(let n of Object.keys(o).sort())t[n]=B(o[n]);return t}return String(e)}function Fe(e){return B(e)}function G(e){return JSON.stringify(Fe(e))}var Le={ua:.5,uaHints:.7,locale:.5,screen:.8,hardware:.7,storage:.4,fonts:.9,canvas:1,webgl:1,audio:.9,mediaDevices:.6,permissions:.4,webrtc:.8,frameInfo:.3,networkInfo:.6,paymentSupport:.2,referrerInfo:.3,navigationInfo:.4,riskSignals:.7};function be(e,o){let t=0,n=0;for(let[i,l]of Object.entries(e)){let c=Le[i];if(n+=c,l.status==="ok"){t+=c;continue}if(l.status==="unsupported"||l.status==="blocked"){t+=c*.35;continue}l.status==="timeout"&&(t+=c*.15)}if(n===0)return 0;let a=t/n*(.65+o.score*.35);return Math.max(0,Math.min(1,Number(a.toFixed(3))))}var A=class{listeners=new Map;on(o,t){let n=this.listeners.get(o)??new Set;return n.add(t),this.listeners.set(o,n),()=>{n.delete(t),n.size===0&&this.listeners.delete(o)}}emit(o,t){let n=this.listeners.get(o);if(n)for(let r of n)r(t)}};var He=[1116352408,1899447441,-1245643825,-373957723,961987163,1508970993,-1841331548,-1424204075,-670586216,310598401,607225278,1426881987,1925078388,-2132889090,-1680079193,-1046744716,-459576895,-272742522,264347078,604807628,770255983,1249150122,1555081692,1996064986,-1740746414,-1473132947,-1341970488,-1084653625,-958395405,-710438585,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,-2117940946,-1838011259,-1564481375,-1474664885,-1035236496,-949202525,-778901479,-694614492,-200395387,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,-2067236844,-1933114872,-1866530822,-1538233109,-1090935817,-965641998];function h(e,o){return e>>>o|e<<32-o}function Ve(e){return new TextEncoder().encode(e)}function W(e){let o=Ve(e),t=o.length*8,n=o.length+9+63>>6<<6,r=new Uint8Array(n);r.set(o),r[o.length]=128;let a=new DataView(r.buffer);a.setUint32(n-4,t,!1);let i=1779033703,l=3144134277,c=1013904242,u=2773480762,y=1359893119,f=2600822924,d=528734635,g=1541459225,p=new Uint32Array(64);for(let S=0;S<r.length;S+=64){for(let m=0;m<16;m+=1)p[m]=a.getUint32(S+m*4,!1);for(let m=16;m<64;m+=1){let F=h(p[m-15],7)^h(p[m-15],18)^p[m-15]>>>3,L=h(p[m-2],17)^h(p[m-2],19)^p[m-2]>>>10;p[m]=p[m-16]+F+p[m-7]+L>>>0}let v=i,b=l,C=c,O=u,w=y,N=f,T=d,x=g;for(let m=0;m<64;m+=1){let F=h(w,6)^h(w,11)^h(w,25),L=w&N^~w&T,q=x+F+L+He[m]+p[m]>>>0,ke=h(v,2)^h(v,13)^h(v,22),Re=v&b^v&C^b&C,Me=ke+Re>>>0;x=T,T=N,N=w,w=O+q>>>0,O=C,C=b,b=v,v=q+Me>>>0}i=i+v>>>0,l=l+b>>>0,c=c+C>>>0,u=u+O>>>0,y=y+w>>>0,f=f+N>>>0,d=d+T>>>0,g=g+x>>>0}return[i,l,c,u,y,f,d,g].map(S=>S.toString(16).padStart(8,"0")).join("")}function k(e){return{debug:!1,extended:!1,timeoutMs:1500,...e}}function j(e,o="async"){let t=k(e),n=t.extended?[...H,...Z]:[...H],r=o==="sync"?n.filter(l=>$.includes(l)):n,a=t.include?r.filter(l=>t.include?.includes(l)):r,i=new Set(t.exclude??[]);return a.filter(l=>!i.has(l))}async function Ce(e,o,t){let n=t.endpoint&&e.fetch;if(!n)throw new Error("Fetch is not available in this runtime.");return n(t.endpoint,{method:"POST",headers:{"content-type":"application/json",...t.headers},body:JSON.stringify({fingerprint:o,...t.bodyExtras})})}var R="0.1.0",M=1;function Be(e){return{status:"timeout",durationMs:e,error:"Signal collection timed out."}}async function Ge(e,o,t,n){let r=o.performance?.now?.()??Date.now();if(t.abortSignal?.aborted)return{status:"error",durationMs:0,error:"Collection aborted before signal execution started."};let a=()=>{},i=new Promise(c=>{let u=setTimeout(()=>{c(Be((o.performance?.now?.()??Date.now())-r))},t.timeoutMs);a=()=>clearTimeout(u),t.abortSignal?.addEventListener("abort",()=>{a(),c({status:"error",durationMs:(o.performance?.now?.()??Date.now())-r,error:"Collection aborted."})},{once:!0})}),l=e.collect({env:o,options:t,warn:n});return Promise.race([l,i]).finally(()=>{a()})}function Ee(e,o,t,n){let r={};for(let[c,u]of Object.entries(e))u.value!==void 0&&(r[c]=W(G(u.value)));let a=W(G(Object.keys(r).sort().map(c=>[c,r[c]]))),i=we(e),l=be(e,i);return{schemaVersion:1,libraryVersion:R,thumbprint:a,confidence:l,componentHashes:r,signals:e,antiSpoof:i,warnings:o,diagnostics:{requestedSignals:t,completedSignals:Object.keys(e).sort(),elapsedMs:Number(n.toFixed(3))}}}async function z(e){let o=k(e),t=new A;return{on(n,r){return t.on(n,r)},async collect(n){let r=k({...o,...n}),a=D(),i=j(r,"async"),l={},c=[],u=a.performance?.now?.()??Date.now(),y=(g,p)=>{c.push(g),t.emit("warning",{signal:p,message:g})},f=0;await Promise.all(i.map(async g=>{let p=V.get(g);if(!p){y(`No collector registered for signal "${g}".`,g);return}let S=await Ge(p,a,r,y);l[g]=S,f+=1,t.emit("progress",{completed:f,total:i.length,signal:g,result:S})}));let d=Ee(l,c,i,(a.performance?.now?.()??Date.now())-u);return t.emit("complete",{result:d}),d},collectSync(n){let r=k({...o,...n}),a=D(),i=j(r,"sync"),l={},c=[],u=a.performance?.now?.()??Date.now(),y=(f,d)=>{c.push(f),t.emit("warning",{signal:d,message:f})};for(let f of i){let d=V.get(f);if(!d?.collectSync){y(`Signal "${f}" is not available in synchronous mode.`,f);continue}l[f]=d.collectSync({env:a,options:r,warn:y})}return Ee(l,c,i,(a.performance?.now?.()??Date.now())-u)},upload(n,r){return Ce(D(),n,r)}}}var We={createFingerprintClient:z,LIBRARY_VERSION:R,SCHEMA_VERSION:1};typeof globalThis<"u"&&(globalThis.DeviceFP=We);})();
1
+ "use strict";(()=>{function H(){return{global:globalThis,navigator:typeof navigator>"u"?void 0:navigator,document:typeof document>"u"?void 0:document,screen:typeof screen>"u"?void 0:screen,location:typeof location>"u"?void 0:location,fetch:typeof fetch>"u"?void 0:fetch,crypto:globalThis.crypto,performance:typeof performance>"u"?void 0:performance,intl:typeof Intl>"u"?void 0:Intl}}function s(e){return e.performance?.now?.()??Date.now()}function I(e){return!!e.document?.createElement}function P(e){return!!e.document?.createElement?.("canvas").getContext}var q={name:"adblock",tier:"extended",supportsSync:!1,async collect(e){let o=s(e.env),t=e.env.document;return!t||!I(e.env)?{status:"unsupported",durationMs:s(e.env)-o}:new Promise(n=>{let r=t.createElement("div");r.innerHTML="\xA0",r.className="adsbox",t.body.appendChild(r),setTimeout(()=>{let a=r.offsetHeight===0;t.body.removeChild(r),n({status:"ok",durationMs:s(e.env)-o,value:{adblockEnabled:a}})},100)})}};function _e(e){let o=e;return o.OfflineAudioContext??o.webkitOfflineAudioContext}var Y={name:"audio",tier:"core",supportsSync:!1,async collect(e){let o=s(e.env),t=_e(e.env.global);if(!t)return{status:"unsupported",durationMs:s(e.env)-o};try{let n=new t(1,5e3,44100),r=n.createOscillator(),a=n.createDynamicsCompressor();r.type="triangle",r.frequency.value=1e4,a.threshold.value=-50,a.knee.value=40,a.ratio.value=12,a.attack.value=0,a.release.value=.25,r.connect(a),a.connect(n.destination),r.start(0);let i=await n.startRendering(),l=i.getChannelData(0),c=0;for(let u=4500;u<l.length;u+=1)c+=Math.abs(l[u]);return{status:"ok",durationMs:s(e.env)-o,value:{sampleRate:i.sampleRate,length:i.length,signalValue:Number(c.toFixed(6))}}}catch(n){return{status:"blocked",durationMs:s(e.env)-o,error:n instanceof Error?n.message:String(n)}}}};function De(e){let o=e.createElement("canvas");o.width=280,o.height=80;let t=o.getContext("2d");if(!t)throw new Error("2D canvas context unavailable");return t.fillStyle="#f60",t.fillRect(8,10,120,60),t.fillStyle="#069",t.font="20px Arial",t.fillText("Browser FP",12,40),t.strokeStyle="rgba(102, 204, 0, 0.7)",t.beginPath(),t.arc(180,40,24,0,Math.PI*2),t.stroke(),{dataUrl:o.toDataURL(),winding:t.isPointInPath(1,1,"evenodd")}}var X={name:"canvas",tier:"core",supportsSync:!0,async collect(e){return this.collectSync(e)},collectSync(e){let o=s(e.env),t=e.env.document;if(!t||!P(e.env))return{status:"unsupported",durationMs:s(e.env)-o};try{return{status:"ok",durationMs:s(e.env)-o,value:De(t)}}catch(n){return{status:"error",durationMs:s(e.env)-o,error:n instanceof Error?n.message:String(n)}}}};var G=["ua","uaHints","locale","screen","hardware","storage","fonts","canvas","webgl","audio"],Z=["mediaDevices","permissions","webrtc","frameInfo","networkInfo","paymentSupport","referrerInfo","navigationInfo","riskSignals","adblock","geolocation"],J=["ua","locale","screen","hardware","storage","fonts","canvas","webgl","frameInfo","networkInfo","paymentSupport","referrerInfo","navigationInfo"];var Q=["Andale Mono","American Typewriter","Apple Chancery","Arial","Arial Black","Arial Narrow","Arial Rounded MT Bold","Baskerville","Book Antiqua","Bookman Old Style","Bradley Hand ITC","Calibri","Cambria","Candara","Century","Century Gothic","Century Schoolbook","Chalkboard","Charcoal","Cochin","Comic Sans MS","Consolas","Constantia","Corbel","Courier","Courier New","Franklin Gothic Medium","Futura","Garamond","Geneva","Georgia","Gill Sans","Gill Sans MT","Helvetica","Hoefler Text","Impact","Lucida Bright","Lucida Console","Lucida Grande","Lucida Sans","MS Gothic","MS PGothic","MS Serif","MS UI Gothic","Meiryo","Meiryo UI","Monaco","Monotype Corsiva","New York","Optima","Palatino","Palatino Linotype","Papyrus","Plantagenet Cherokee","Segoe Print","Segoe Script","Segoe UI","Segoe UI Light","Segoe UI Semibold","Segoe UI Symbol","Symbol","Tahoma","Times","Times New Roman","Trebuchet MS","Verdana","Wingdings","Wingdings 2","Wingdings 3","Zapfino"],ee=["geolocation","notifications","camera","microphone"],te=["architecture","bitness","formFactors","fullVersionList","model","platform","platformVersion","wow64"];var Ie=["monospace","sans-serif","serif"],Pe="mmmmmmmmmmlli";function ne(e,o,t){let n=e.createElement("span");n.textContent=Pe,n.style.position="absolute",n.style.left="-9999px",n.style.top="-9999px",n.style.fontSize="72px",n.style.fontFamily=`${o}, ${t}`,e.body.appendChild(n);let r=n.offsetWidth;return e.body.removeChild(n),r}function Oe(e){let o=[];for(let t of Q){let n=!1;for(let r of Ie){let a=ne(e,"",r);if(ne(e,t,r)!==a){n=!0;break}}n&&o.push(t)}return o}var oe={name:"fonts",tier:"core",supportsSync:!0,async collect(e){return this.collectSync(e)},collectSync(e){let o=s(e.env),t=e.env.document;if(!t||!I(e.env))return{status:"unsupported",durationMs:s(e.env)-o};try{let n=Oe(t);return{status:"ok",durationMs:s(e.env)-o,value:{detectedFonts:n,fontCount:n.length}}}catch(n){return{status:"error",durationMs:s(e.env)-o,error:n instanceof Error?n.message:String(n)}}}};var re={name:"frameInfo",tier:"extended",supportsSync:!0,async collect(e){return this.collectSync(e)},collectSync(e){let o=s(e.env),t=e.env.document;if(!t)return{status:"unsupported",durationMs:s(e.env)-o};try{let n=t.getElementsByTagName("iframe"),r=[];for(let i of n){let l=i.src||"";try{r.push(new URL(l).hostname)}catch{r.push("unknown")}}let a=e.env.global;return{status:"ok",durationMs:s(e.env)-o,value:{iframesCount:n.length,isTopLevel:a===a.top,iframeDomains:r}}}catch(n){return{status:"error",durationMs:s(e.env)-o,error:n instanceof Error?n.message:String(n)}}}};var se={name:"geolocation",tier:"extended",supportsSync:!1,async collect(e){let o=s(e.env),t=e.env.navigator;return t?.geolocation?new Promise(n=>{t.geolocation.getCurrentPosition(r=>{n({status:"ok",durationMs:s(e.env)-o,value:{latitude:r.coords.latitude,longitude:r.coords.longitude,accuracy:r.coords.accuracy}})},r=>{n({status:r.code===1?"blocked":"error",durationMs:s(e.env)-o,error:r.message})},{timeout:e.options.timeoutMs,maximumAge:6e4})}):{status:"unsupported",durationMs:s(e.env)-o}}};var ae={name:"hardware",tier:"core",supportsSync:!0,async collect(e){return this.collectSync(e)},collectSync(e){let o=s(e.env),t=e.env.navigator;if(!t)return{status:"unsupported",durationMs:s(e.env)-o};let n=e.env.document,r=e.env.global,a=!1;try{n&&(n.createEvent("TouchEvent"),a=!0)}catch{}let i=r!=null&&"ontouchstart"in r;return{status:"ok",durationMs:s(e.env)-o,value:{hardwareConcurrency:t.hardwareConcurrency,deviceMemory:t.deviceMemory,platform:t.platform,maxTouchPoints:t.maxTouchPoints,touchEventCreationSuccessful:a,onTouchStartAvailable:i}}}};var ie={name:"locale",tier:"core",supportsSync:!0,async collect(e){return this.collectSync(e)},collectSync(e){let o=s(e.env),t=e.env.navigator,n=e.env.intl;if(!t||!n)return{status:"unsupported",durationMs:s(e.env)-o};try{let r=new n.DateTimeFormat,a=r.resolvedOptions(),i=new n.NumberFormat(t.language),l=typeof n.RelativeTimeFormat=="function"?new n.RelativeTimeFormat(t.language,{numeric:"auto"}):void 0,c=new Date(Date.UTC(2024,0,2,3,4,5));return{status:"ok",durationMs:s(e.env)-o,value:{language:t.language,languages:t.languages,locale:a.locale,calendar:a.calendar,numberingSystem:a.numberingSystem,timeZone:a.timeZone,hourCycle:a.hourCycle,timeZoneOffsetMinutes:c.getTimezoneOffset(),formattedNumber:i.format(123456.789),formattedDate:r.format(c),formattedRelativeDay:l?.format(-1,"day")}}}catch(r){return{status:"error",durationMs:s(e.env)-o,error:r instanceof Error?r.message:String(r)}}}};var le={name:"mediaDevices",tier:"extended",supportsSync:!1,async collect(e){let o=s(e.env),t=e.env.navigator?.mediaDevices,n=e.env.global;if(!n.isSecureContext)return{status:"blocked",durationMs:s(e.env)-o,error:"Media device enumeration requires a secure context."};if(n.document?.visibilityState!=="visible")return{status:"blocked",durationMs:s(e.env)-o,error:"Media device enumeration requires a visible document."};if(!t?.enumerateDevices)return{status:"unsupported",durationMs:s(e.env)-o};try{let a=(await t.enumerateDevices()).reduce((i,l)=>(i[l.kind]=(i[l.kind]??0)+1,i),{});return{status:"ok",durationMs:s(e.env)-o,value:a}}catch(r){return{status:"blocked",durationMs:s(e.env)-o,error:r instanceof Error?r.message:String(r)}}}};var ce={name:"navigationInfo",tier:"extended",supportsSync:!0,async collect(e){return this.collectSync(e)},collectSync(e){let o=s(e.env),t=e.env.performance;if(!t)return{status:"unsupported",durationMs:s(e.env)-o};try{let n=null,a=t.getEntriesByType("navigation")?.[0];return a!==void 0&&(n=a.type),n===null&&(n=t.navigation.type),{status:"ok",durationMs:s(e.env)-o,value:{navigationType:n}}}catch(n){return{status:"error",durationMs:s(e.env)-o,error:n instanceof Error?n.message:String(n)}}}};var ue={name:"networkInfo",tier:"extended",supportsSync:!0,async collect(e){return this.collectSync(e)},collectSync(e){let o=s(e.env),t=e.env.navigator;if(!t)return{status:"unsupported",durationMs:s(e.env)-o};let n=t.connection??t.mozConnection??t.webkitConnection??null;if(!n)return{status:"unsupported",durationMs:s(e.env)-o};let r=n;return{status:"ok",durationMs:s(e.env)-o,value:{effectiveType:r.effectiveType??null,downlink:r.downlink??null,rtt:r.rtt??null,saveData:typeof r.saveData=="boolean"?r.saveData:null}}}};var me={name:"paymentSupport",tier:"extended",supportsSync:!0,async collect(e){return this.collectSync(e)},collectSync(e){let o=s(e.env),t=e.env.global;return{status:"ok",durationMs:s(e.env)-o,value:{paymentRequest:t.PaymentRequest!==void 0}}}};var de={name:"permissions",tier:"extended",supportsSync:!1,async collect(e){let o=s(e.env),t=e.env.navigator?.permissions;if(!t?.query)return{status:"unsupported",durationMs:s(e.env)-o};try{let n=await Promise.all(ee.map(async r=>{try{let a=await t.query({name:r});return[r,a.state]}catch{return[r,"unsupported"]}}));return{status:"ok",durationMs:s(e.env)-o,value:Object.fromEntries(n)}}catch(n){return{status:"blocked",durationMs:s(e.env)-o,error:n instanceof Error?n.message:String(n)}}}};var pe={name:"referrerInfo",tier:"extended",supportsSync:!0,async collect(e){return this.collectSync(e)},collectSync(e){let o=s(e.env),t=e.env.document;return t?{status:"ok",durationMs:s(e.env)-o,value:{referrer:t.referrer}}:{status:"unsupported",durationMs:s(e.env)-o}}};var fe={name:"riskSignals",tier:"extended",supportsSync:!1,async collect(e){let o=s(e.env),t=e.env.navigator,n=e.env.global;if(!t)return{status:"unsupported",durationMs:s(e.env)-o};try{let r=t.userAgent,a=t.webdriver?!0:null,i=[];r.includes("HeadlessChrome")&&i.push("headless-ua"),r.includes("Chrome")&&typeof n.chrome!="object"&&i.push("missing-chrome-object"),(n.outerHeight===0||n.outerWidth===0)&&i.push("zero-outer-dimensions"),r.includes("Chrome")&&!r.includes("Mobile")&&t.plugins.length===0&&i.push("no-plugins-on-desktop-chrome"),Array.isArray(t.languages)&&t.languages.length===0&&i.push("empty-languages");let l=null,c=t.userAgentData;if(c&&"getHighEntropyValues"in c)try{let y=c,f=r.includes("Win")?"Windows":r.includes("Mac")?"macOS":r.includes("Linux")?"Linux":null,m=y.platform||null;l=f===null||m===null?null:f===m}catch{l=null}let u=typeof Notification<"u"?Notification.permission:null,p=null;if(typeof t.permissions?.query=="function")try{(await t.permissions.query({name:"notifications"})).state==="denied"&&Notification.permission==="default"&&(p=!0)}catch{p=null}let d=e.env.performance?.timeOrigin?Math.round(Date.now()-e.env.performance.timeOrigin):null;return{status:"ok",durationMs:s(e.env)-o,value:{webdriver:a,headlessHints:i,uaConsistency:l,notificationPermission:u,permissionsHeadlessHint:p,timeToCaptureMs:d}}}catch(r){return{status:"blocked",durationMs:s(e.env)-o,error:r instanceof Error?r.message:String(r)}}}};function O(e,o){if(typeof e.matchMedia!="function")return"unsupported";try{return e.matchMedia(o).matches}catch{return"unsupported"}}var ge={name:"screen",tier:"core",supportsSync:!0,async collect(e){return this.collectSync(e)},collectSync(e){let o=s(e.env),t=e.env.screen,n=e.env.navigator,r=e.env.global;if(!t)return{status:"unsupported",durationMs:s(e.env)-o};let a=t.orientation;return{status:"ok",durationMs:s(e.env)-o,value:{width:t.width,height:t.height,availWidth:t.availWidth,availHeight:t.availHeight,colorDepth:t.colorDepth,pixelDepth:t.pixelDepth,...a?{orientationType:a.type,orientationAngle:a.angle}:{},maxTouchPoints:n?.maxTouchPoints??0,resolution:`${String(t.width)}x${String(t.height)}`,ratio:t.height>0?Math.round(t.width/t.height*1e10)/1e10:0,devicePixelRatio:typeof r.devicePixelRatio=="number"?r.devicePixelRatio:void 0,fakedResolution:t.availWidth>t.width||t.availHeight>t.height,ccaScreenSize:(()=>{let i=typeof r.outerWidth=="number"?r.outerWidth:0,l=typeof r.outerHeight=="number"?r.outerHeight:0;return i<390?"01":i<500?"02":i<600?"03":l<600?"04":"02"})(),colorGamutP3:O(r,"(color-gamut: p3)"),prefersReducedMotion:O(r,"(prefers-reduced-motion: reduce)"),prefersContrastMore:O(r,"(prefers-contrast: more)"),forcedColorsActive:O(r,"(forced-colors: active)")}}}};function ye(e,o){try{let t=e[o];if(!t)return"unsupported";let n="__bf_probe__";return t.setItem(n,"1"),t.removeItem(n),"available"}catch{return"blocked"}}var Se={name:"storage",tier:"core",supportsSync:!0,async collect(e){return this.collectSync(e)},collectSync(e){let o=s(e.env),t=e.env.navigator,n=e.env.global;return{status:"ok",durationMs:s(e.env)-o,value:{cookiesEnabled:t?.cookieEnabled??!1,localStorage:ye(n,"localStorage"),sessionStorage:ye(n,"sessionStorage"),indexedDb:typeof n.indexedDB>"u"?"unsupported":"available",openDatabase:typeof n.openDatabase>"u"?"unsupported":"available",pdfViewerEnabled:t?.pdfViewerEnabled??!1}}}};var ve={name:"ua",tier:"core",supportsSync:!0,async collect(e){return this.collectSync(e)},collectSync(e){let o=s(e.env),t=e.env.navigator;if(!t)return{status:"unsupported",durationMs:s(e.env)-o};let n=[];try{n=Array.from(t.plugins).map(i=>{let l=Array.from({length:i.length},(c,u)=>i.item(u)).filter(c=>c!==null).map(c=>`${c.type}~${c.suffixes}`).join(",");return`${i.name}::${i.description}::${l}`})}catch{}let r=t.doNotTrack??e.env.global.doNotTrack??null,a=r==="1"?"enabled":r==="0"?"disabled":r??"not_set";return{status:"ok",durationMs:s(e.env)-o,value:{userAgent:t.userAgent,appVersion:t.appVersion,vendor:t.vendor,platform:t.platform,webdriver:t.webdriver,maxTouchPoints:t.maxTouchPoints,cookieEnabled:t.cookieEnabled,vendorSub:t.vendorSub,doNotTrack:a,plugins:n}}}};var he={name:"uaHints",tier:"core",supportsSync:!1,async collect(e){let o=s(e.env),t=e.env.navigator?.userAgentData;if(!t)return{status:"unsupported",durationMs:s(e.env)-o};try{let n=t.getHighEntropyValues?await t.getHighEntropyValues([...te]):void 0;return{status:"ok",durationMs:s(e.env)-o,value:{brands:t.brands??[],mobile:!!t.mobile,platform:t.platform,...n}}}catch(n){return{status:"blocked",durationMs:s(e.env)-o,error:n instanceof Error?n.message:String(n)}}}};function xe(e){let o=e.createElement("canvas");return o.getContext("webgl")??o.getContext("experimental-webgl")}var be={name:"webgl",tier:"core",supportsSync:!0,async collect(e){return this.collectSync(e)},collectSync(e){let o=s(e.env),t=e.env.document;if(!t||!P(e.env))return{status:"unsupported",durationMs:s(e.env)-o};let n=xe(t);if(!n)return{status:"unsupported",durationMs:s(e.env)-o};let r=n.getExtension("WEBGL_debug_renderer_info"),a=r?n.getParameter(r.UNMASKED_RENDERER_WEBGL):n.getParameter(n.RENDERER),i=r?n.getParameter(r.UNMASKED_VENDOR_WEBGL):n.getParameter(n.VENDOR);return{status:"ok",durationMs:s(e.env)-o,value:{vendor:i,renderer:a,version:n.getParameter(n.VERSION),shadingLanguageVersion:n.getParameter(n.SHADING_LANGUAGE_VERSION),maxTextureSize:n.getParameter(n.MAX_TEXTURE_SIZE),maxViewportDims:n.getParameter(n.MAX_VIEWPORT_DIMS),extensions:n.getSupportedExtensions()??[]}}}};function Le(e){let o=new Set,t=new Set;for(let n of e.split(/\r?\n/)){if(n.startsWith("a=rtpmap:")){let r=n.slice(9);o.add(r.split(" ",2)[1]??n)}n.startsWith("a=extmap:")&&t.add(n.slice(9))}return{codecs:[...o].sort(),extmaps:[...t].sort()}}var we={name:"webrtc",tier:"extended",supportsSync:!1,async collect(e){let o=s(e.env),t=e.env.global,n=t.RTCPeerConnection??t.webkitRTCPeerConnection;if(!n)return{status:"unsupported",durationMs:s(e.env)-o};let r;try{r=new n,r.createDataChannel("bf");let a=await r.createOffer(),i=Le(a.sdp??"");return{status:"ok",durationMs:s(e.env)-o,value:i}}catch(a){return{status:"blocked",durationMs:s(e.env)-o,error:a instanceof Error?a.message:String(a)}}finally{r?.close()}}};var Fe=[ve,he,ie,ge,ae,Se,oe,X,be,Y,le,de,we,re,ue,me,pe,ce,fe,q,se],U=new Map(Fe.map(e=>[e.name,e]));function R(e){return e&&typeof e=="object"?e:void 0}function V(e){return typeof e=="string"&&e.length>0?e:void 0}function T(e){return typeof e=="number"&&Number.isFinite(e)?e:void 0}function He(e){return e.startsWith("win")?"windows":e.startsWith("mac")?"macos":/cros|chrome/.test(e)?"chrome os":/linux|x11/.test(e)?"linux":e}function Ce(e){let o=[],t=[],n=R(e.ua?.value),r=R(e.uaHints?.value),a=R(e.hardware?.value),i=R(e.screen?.value),l=V(n?.userAgent)?.toLowerCase()??"",c=V(n?.platform)?.toLowerCase()??"",u=V(r?.platform)?.toLowerCase()??"",p=!!n?.webdriver,d=T(i?.maxTouchPoints)??T(n?.maxTouchPoints)??0,y=T(i?.width)??0,f=T(i?.height)??0,m=T(a?.deviceMemory);if(p&&t.push("navigator_webdriver"),l.includes("headless")&&t.push("headless_user_agent"),c&&u){let k=He(c);!(k==="linux"&&(u==="linux"||u==="android"||u==="chrome os"))&&k!==u&&o.push("ua_platform_mismatch")}l.includes("iphone")&&d===0&&o.push("touch_claim_without_touch_points"),l.includes("android")&&y>0&&y>=1600&&o.push("mobile_ua_desktop_screen"),l.includes("windows")&&c.includes("mac")&&o.push("windows_ua_mac_platform"),m!==void 0&&(m<.25||m>64)&&o.push("implausible_device_memory"),y>0&&f>0&&y<200&&f<200&&o.push("tiny_screen_geometry");let S=o.length*.12,v=t.length*.18,w=Math.max(0,Math.min(1,Number((1-S-v).toFixed(3)))),C=o.includes("ua_platform_mismatch"),E=R(e.riskSignals?.value),M=(Array.isArray(E?.headlessHints)?E.headlessHints:[]).includes("missing-chrome-object");return{score:w,anomalies:o,automationHints:t,fakedOS:C,fakedBrowser:M}}function Ge(e){return Number.isFinite(e)?Number(e.toFixed(6)):e}function B(e){if(e===void 0)return"undefined";if(e===null)return null;if(typeof e=="number")return Ge(e);if(typeof e=="bigint")return e.toString();if(typeof e=="boolean"||typeof e=="string")return e;if(Array.isArray(e))return e.map(o=>B(o));if(e instanceof Date)return e.toISOString();if(typeof e=="object"){let o=e,t={};for(let n of Object.keys(o).sort())t[n]=B(o[n]);return t}return String(e)}function Ue(e){return B(e)}function W(e){return JSON.stringify(Ue(e))}var Ve={ua:.5,uaHints:.7,locale:.5,screen:.8,hardware:.7,storage:.4,fonts:.9,canvas:1,webgl:1,audio:.9,mediaDevices:.6,permissions:.4,webrtc:.8,frameInfo:.3,networkInfo:.6,paymentSupport:.2,referrerInfo:.3,navigationInfo:.4,riskSignals:.7,adblock:.3,geolocation:.5};function ke(e,o){let t=0,n=0;for(let[i,l]of Object.entries(e)){let c=Ve[i];if(n+=c,l.status==="ok"){t+=c;continue}if(l.status==="unsupported"||l.status==="blocked"){t+=c*.35;continue}l.status==="timeout"&&(t+=c*.15)}if(n===0)return 0;let a=t/n*(.65+o.score*.35);return Math.max(0,Math.min(1,Number(a.toFixed(3))))}var x=class{listeners=new Map;on(o,t){let n=this.listeners.get(o)??new Set;return n.add(t),this.listeners.set(o,n),()=>{n.delete(t),n.size===0&&this.listeners.delete(o)}}emit(o,t){let n=this.listeners.get(o);if(n)for(let r of n)r(t)}};var Be=[1116352408,1899447441,-1245643825,-373957723,961987163,1508970993,-1841331548,-1424204075,-670586216,310598401,607225278,1426881987,1925078388,-2132889090,-1680079193,-1046744716,-459576895,-272742522,264347078,604807628,770255983,1249150122,1555081692,1996064986,-1740746414,-1473132947,-1341970488,-1084653625,-958395405,-710438585,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,-2117940946,-1838011259,-1564481375,-1474664885,-1035236496,-949202525,-778901479,-694614492,-200395387,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,-2067236844,-1933114872,-1866530822,-1538233109,-1090935817,-965641998];function h(e,o){return e>>>o|e<<32-o}function We(e){return new TextEncoder().encode(e)}function $(e){let o=We(e),t=o.length*8,n=o.length+9+63>>6<<6,r=new Uint8Array(n);r.set(o),r[o.length]=128;let a=new DataView(r.buffer);a.setUint32(n-4,t,!1);let i=1779033703,l=3144134277,c=1013904242,u=2773480762,p=1359893119,d=2600822924,y=528734635,f=1541459225,m=new Uint32Array(64);for(let S=0;S<r.length;S+=64){for(let g=0;g<16;g+=1)m[g]=a.getUint32(S+g*4,!1);for(let g=16;g<64;g+=1){let L=h(m[g-15],7)^h(m[g-15],18)^m[g-15]>>>3,F=h(m[g-2],17)^h(m[g-2],19)^m[g-2]>>>10;m[g]=m[g-16]+L+m[g-7]+F>>>0}let v=i,w=l,C=c,E=u,b=p,M=d,k=y,D=f;for(let g=0;g<64;g+=1){let L=h(b,6)^h(b,11)^h(b,25),F=b&M^~b&k,K=D+L+F+Be[g]+m[g]>>>0,Te=h(v,2)^h(v,13)^h(v,22),Ne=v&w^v&C^w&C,Ae=Te+Ne>>>0;D=k,k=M,M=b,b=E+K>>>0,E=C,C=w,w=v,v=K+Ae>>>0}i=i+v>>>0,l=l+w>>>0,c=c+C>>>0,u=u+E>>>0,p=p+b>>>0,d=d+M>>>0,y=y+k>>>0,f=f+D>>>0}return[i,l,c,u,p,d,y,f].map(S=>S.toString(16).padStart(8,"0")).join("")}function N(e){return{debug:!1,extended:!1,timeoutMs:1500,...e}}function j(e,o="async"){let t=N(e),n=t.extended?[...G,...Z]:[...G],r=o==="sync"?n.filter(l=>J.includes(l)):n,a=t.include?r.filter(l=>t.include?.includes(l)):r,i=new Set(t.exclude??[]);return a.filter(l=>!i.has(l))}var A="0.2.0",_=2;function je(e){return{status:"timeout",durationMs:e,error:"Signal collection timed out."}}function Re(e,o){return{status:"error",durationMs:e,error:o instanceof Error?o.message:String(o)}}function Ee(e,o){e.debug&&console.debug(`[zp-devicefp] ${o}`)}async function ze(e,o,t,n){let r=o.performance?.now?.()??Date.now();if(t.abortSignal?.aborted)return{status:"error",durationMs:0,error:"Collection aborted before signal execution started."};let a=()=>{},i=()=>{},l=new Promise(u=>{let p=setTimeout(()=>{u(je((o.performance?.now?.()??Date.now())-r))},t.timeoutMs);a=()=>clearTimeout(p);let d=()=>{a(),u({status:"error",durationMs:(o.performance?.now?.()??Date.now())-r,error:"Collection aborted."})};t.abortSignal?.addEventListener("abort",d,{once:!0}),i=()=>t.abortSignal?.removeEventListener("abort",d)}),c=(async()=>{try{return await e.collect({env:o,options:t,warn:n})}catch(u){let p=Re((o.performance?.now?.()??Date.now())-r,u);return n(`Signal "${e.name}" threw: ${p.error??"unknown error"}`,e.name),p}})();return Promise.race([c,l]).finally(()=>{a(),i()})}function Me(e,o,t,n){let r={};for(let[c,u]of Object.entries(e))u.value!==void 0&&(r[c]=$(W(u.value)));let a=$(W(Object.keys(r).sort().map(c=>[c,r[c]]))),i=Ce(e),l=ke(e,i);return{schemaVersion:2,libraryVersion:A,thumbprint:a,confidence:l,componentHashes:r,signals:e,antiSpoof:i,warnings:o,diagnostics:{requestedSignals:t,completedSignals:Object.keys(e).sort(),elapsedMs:Number(n.toFixed(3))}}}async function z(e){let o=N(e),t=new x;return{on(n,r){return t.on(n,r)},async collect(n){let r=N({...o,...n}),a=H(),i=j(r,"async"),l={},c=[],u=a.performance?.now?.()??Date.now(),p=(f,m)=>{c.push(f),t.emit("warning",{signal:m,message:f})},d=0;await Promise.all(i.map(async f=>{let m=U.get(f);if(!m){p(`No collector registered for signal "${f}".`,f);return}let S=await ze(m,a,r,p);l[f]=S,Ee(r,`${f}: ${S.status} (${String(S.durationMs)}ms)`),d+=1,t.emit("progress",{completed:d,total:i.length,signal:f,result:S})}));let y=Me(l,c,i,(a.performance?.now?.()??Date.now())-u);return t.emit("complete",{result:y}),y},collectSync(n){let r=N({...o,...n}),a=H(),i=j(r,"sync"),l={},c=[],u=a.performance?.now?.()??Date.now(),p=(d,y)=>{c.push(d),t.emit("warning",{signal:y,message:d})};for(let d of i){let y=U.get(d);if(!y?.collectSync){p(`Signal "${d}" is not available in synchronous mode.`,d);continue}let f=a.performance?.now?.()??Date.now(),m;try{m=y.collectSync({env:a,options:r,warn:p})}catch(S){m=Re((a.performance?.now?.()??Date.now())-f,S),p(`Signal "${d}" threw: ${m.error??"unknown error"}`,d)}l[d]=m,Ee(r,`${d}: ${m.status} (${String(m.durationMs)}ms)`)}return Me(l,c,i,(a.performance?.now?.()??Date.now())-u)}}}var Ke={createFingerprintClient:z,LIBRARY_VERSION:A,SCHEMA_VERSION:2};typeof globalThis<"u"&&(globalThis.DeviceFP=Ke);})();