@thumbmarkjs/thumbmarkjs 1.0.0-rc.0 → 1.0.0-rc.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +43 -45
- package/dist/thumbmark.cjs.js +1 -1
- package/dist/thumbmark.cjs.js.map +1 -1
- package/dist/thumbmark.esm.d.ts +0 -3
- package/dist/thumbmark.esm.js +1 -1
- package/dist/thumbmark.esm.js.map +1 -1
- package/dist/thumbmark.umd.js +1 -1
- package/dist/thumbmark.umd.js.map +1 -1
- package/package.json +1 -1
- package/src/components/audio/index.ts +1 -1
- package/src/components/canvas/index.ts +1 -1
- package/src/components/fonts/index.ts +1 -1
- package/src/components/permissions/index.ts +27 -33
- package/src/factory.ts +1 -1
- package/src/{utils → functions}/filterComponents.ts +1 -1
- package/src/{fingerprint → functions}/functions.test.ts +1 -1
- package/src/{fingerprint/functions.ts → functions/index.ts} +21 -7
- package/src/{fingerprint → functions}/legacy_functions.ts +2 -2
- package/src/index.ts +3 -3
- package/src/{fingerprint/options.ts → options.ts} +2 -5
- package/src/thumbmark.ts +3 -3
package/README.md
CHANGED
|
@@ -5,11 +5,11 @@
|
|
|
5
5
|

|
|
6
6
|
|
|
7
7
|
|
|
8
|
-
ThumbmarkJS is now the world's best **free** browser fingerprinting JavaScript library.
|
|
8
|
+
ThumbmarkJS is now the world's best **free** browser fingerprinting JavaScript library. It is used to generate over a billion thumbmarks every month.
|
|
9
9
|
|
|
10
|
-
ThumbmarkJS is open source (MIT).
|
|
10
|
+
The client ThumbmarkJS library is open source (MIT). There also an API version. Learn more at [ThumbmarkJS website](https://www.thumbmarkjs.com).
|
|
11
11
|
|
|
12
|
-
|
|
12
|
+
ThumbmarkJS is meant to be used for good. Use this to prevent scammers and spammers for example. If you see this library being used for evil, contact me.
|
|
13
13
|
|
|
14
14
|
🕺 Join the [Thumbmark Discord channel](https://discord.gg/PAqxQ3TnDA)
|
|
15
15
|
|
|
@@ -17,11 +17,9 @@ Have a look at the [IOS](https://github.com/thumbmarkjs/thumbmark-swift) and [An
|
|
|
17
17
|
|
|
18
18
|
## Demo page
|
|
19
19
|
|
|
20
|
-
|
|
20
|
+
The library works quite well to distinguish common browsers.
|
|
21
21
|
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
Data collected through this demo page show an accuracy of 90.5%-95.5% (95% confidence interval) in identifying a unique visitor correctly.
|
|
22
|
+
Sampled data shows a uniqueness of 90.5%-95.5% (95% confidence interval).
|
|
25
23
|
|
|
26
24
|
Mileage may vary though. Mac/Safari users tend to clash more than Windows users, and it does depend on your audience.
|
|
27
25
|
|
|
@@ -29,58 +27,73 @@ Mileage may vary though. Mac/Safari users tend to clash more than Windows users,
|
|
|
29
27
|
|
|
30
28
|
Transpiled bundles are available now on [JSDelivr](https://www.jsdelivr.com/).
|
|
31
29
|
|
|
30
|
+
:warning: the version 1.0.0 is has a release candidate status as of 10.7.2025. I'll be publishing the official version shortly. If you have the older 0.20 version, check [the this commit instead](https://github.com/thumbmarkjs/thumbmarkjs/tree/715016a5c510a4ea3f1e20ec969c7db73786fdba).
|
|
31
|
+
|
|
32
32
|
Supported module formats:
|
|
33
33
|
- UMD: https://cdn.jsdelivr.net/npm/@thumbmarkjs/thumbmarkjs/dist/thumbmark.umd.js
|
|
34
34
|
- CommonJS: https://cdn.jsdelivr.net/npm/@thumbmarkjs/thumbmarkjs/dist/thumbmark.cjs.js
|
|
35
35
|
- ESM: https://cdn.jsdelivr.net/npm/@thumbmarkjs/thumbmarkjs/dist/thumbmark.esm.js
|
|
36
36
|
|
|
37
|
-
### And on the web page:
|
|
37
|
+
### And on the web page (notice the @rc):
|
|
38
38
|
|
|
39
39
|
```javascript
|
|
40
|
-
<script src="https://cdn.jsdelivr.net/npm/@thumbmarkjs/thumbmarkjs/dist/thumbmark.umd.js"></script>
|
|
40
|
+
<script src="https://cdn.jsdelivr.net/npm/@thumbmarkjs/thumbmarkjs@rc/dist/thumbmark.umd.js'"></script>
|
|
41
41
|
<script>
|
|
42
|
-
ThumbmarkJS.
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
);
|
|
42
|
+
const tm = new ThumbmarkJS.Thumbmark();
|
|
43
|
+
tm.get().then((res) => {
|
|
44
|
+
console.log(res)
|
|
45
|
+
})
|
|
47
46
|
</script>
|
|
48
47
|
|
|
49
48
|
<!-- or -->
|
|
50
49
|
|
|
51
50
|
<script>
|
|
52
|
-
import('https://cdn.jsdelivr.net/npm/@thumbmarkjs/thumbmarkjs/dist/thumbmark.umd.js')
|
|
51
|
+
import('https://cdn.jsdelivr.net/npm/@thumbmarkjs/thumbmarkjs@rc/dist/thumbmark.umd.js')
|
|
53
52
|
.then(() => {
|
|
54
|
-
|
|
53
|
+
const tm = new ThumbmarkJS.Thumbmark();
|
|
54
|
+
tm.get().then((res) => {
|
|
55
|
+
console.log(res)
|
|
56
|
+
})
|
|
55
57
|
})
|
|
56
58
|
</script>
|
|
57
59
|
|
|
58
60
|
```
|
|
59
61
|
|
|
60
|
-
|
|
62
|
+
## Options are... optional 😉
|
|
61
63
|
|
|
62
|
-
|
|
64
|
+
Options are passed to the Thumbmark constructor so:
|
|
63
65
|
|
|
64
|
-
|
|
66
|
+
```javascript
|
|
67
|
+
const tm = new ThumbmarkJS.Thumbmark({
|
|
68
|
+
option_key: option_value
|
|
69
|
+
})
|
|
70
|
+
```
|
|
65
71
|
|
|
66
72
|
| option | type | example | what it does |
|
|
67
73
|
| - | - | - | - |
|
|
74
|
+
| api_key | string | 'ae8679607bf79f......' | Setting this to a key you've obtained from [https://thumbmarkjs.com](thumbmarkjs.com) makes thumbmarks incredibly more unique
|
|
68
75
|
| exclude | string[] | ['webgl', 'system.browser.version'] | Removes components from the fingerprint hash. An excluded top-level component improves performance. |
|
|
69
76
|
| include | string[] | ['webgl', 'system.browser.version'] | Only includes the listed components. exclude still excludes included components. |
|
|
70
|
-
|
|
|
71
|
-
|
|
|
77
|
+
| permissions_to_check | string[] | ['gyroscope', 'accelerometer'] | Checks only selected permissions. Like 'include', but more low-level. Permissions take the longest to resolve, so this is if you need to cut down some milliseconds. |
|
|
78
|
+
| timeout | integer | 5000 | Default is 5000. Component timeout in milliseconds.
|
|
79
|
+
| logging | boolean | true | Default is true. Some releases collect at most 0.01% logs to improve the library. This doesn't affect the user. |
|
|
80
|
+
| cache_api_call | boolean | false | Default is false. If using the API, this caches the API response for the current page load. |
|
|
81
|
+
| performance | boolean | false | Default is false. Setting to true includes millisecond performance of component resolving |
|
|
72
82
|
|
|
73
83
|
example usage:
|
|
74
84
|
|
|
75
|
-
```
|
|
76
|
-
ThumbmarkJS.
|
|
85
|
+
```javascript
|
|
86
|
+
const tm_api = new ThumbmarkJS.Thumbmark({
|
|
87
|
+
api_key: 'ae8679607bf79faefe3373ec1a8305863abd6abf2dd94ecbf300fd25b8da7495',
|
|
88
|
+
exclude: ['math']
|
|
89
|
+
});
|
|
77
90
|
```
|
|
78
91
|
|
|
79
92
|
## Custom components
|
|
80
93
|
|
|
81
94
|
You can add custom components to the hash with `includeComponent`, which takes two parameters, the `key` being the key of the component in the JSON and the function that returns the value (a string, a number or a JSON object). So for example, if you wanted to include an IP address in the components, you could do it like so:
|
|
82
95
|
|
|
83
|
-
```
|
|
96
|
+
```javascript
|
|
84
97
|
function fetchIpAddress() {
|
|
85
98
|
return new Promise((resolve, reject) => {
|
|
86
99
|
fetch('http://checkip.amazonaws.com')
|
|
@@ -98,32 +111,29 @@ function fetchIpAddress() {
|
|
|
98
111
|
});
|
|
99
112
|
}
|
|
100
113
|
|
|
101
|
-
ThumbmarkJS.
|
|
114
|
+
const tm = new ThumbmarkJS.Thumbmark();
|
|
115
|
+
tm.includeComponent('ip_address', fetchIpAddress)
|
|
102
116
|
```
|
|
103
117
|
|
|
104
118
|
The function is expected to return a `Promise`, but it seems it works without, too.
|
|
105
119
|
|
|
106
|
-
**NOTE** I don't recommend making calls to external websites like this, since it adds a huge lag to running the fingerprint. You can see for yourself by running `ThumbmarkJS.getFingerprintPerformance()`. But it's possible.
|
|
107
|
-
|
|
108
120
|
## Install with NPM
|
|
109
121
|
|
|
110
|
-
Installing from NPM:
|
|
122
|
+
Installing from NPM (note the @rc tag as of 10.7.2025 before final release):
|
|
111
123
|
|
|
112
124
|
```bash
|
|
113
|
-
npm install @thumbmarkjs/thumbmarkjs
|
|
125
|
+
npm install @thumbmarkjs/thumbmarkjs@rc
|
|
114
126
|
```
|
|
115
127
|
|
|
116
128
|
and in your code
|
|
117
129
|
|
|
118
130
|
```javascript
|
|
119
|
-
import {
|
|
131
|
+
import { Thumbmark } from '@thumbmarkjs/thumbmarkjs'
|
|
120
132
|
```
|
|
121
133
|
|
|
122
134
|
To implement ThumbmarkJS in a Next.js app, you can use a component [like this](examples/nextjs.tsx).
|
|
123
135
|
|
|
124
|
-
:warning:
|
|
125
|
-
|
|
126
|
-
But bear in mind that the library is meant to be running in the browser. Let me know if the library fails on a server side import. However, `getFingerprint()` is not meant to be called server side.
|
|
136
|
+
:warning: the library is meant to be running in the browser. Let me know if the library fails on a server side import, that shouldn't happen. Just you can't try to calculate the fingerprint server-side.
|
|
127
137
|
|
|
128
138
|
## Build it yourself
|
|
129
139
|
|
|
@@ -134,18 +144,6 @@ npm run install
|
|
|
134
144
|
npm run build
|
|
135
145
|
```
|
|
136
146
|
|
|
137
|
-
## How you can help
|
|
138
|
-
|
|
139
|
-
Simply going to the [Show and log my fingerprint](https://www.thumbmarkjs.com/)-page helps a lot. The logging is all anonymous and only used to develop this library. Let me know if you run into any errors by opening an issue. The discussion section is also open.
|
|
140
|
-
|
|
141
|
-
Test cases you can try:
|
|
142
|
-
- Check your fingerprint, then refresh the page with Ctrl + R
|
|
143
|
-
- Refresh without cache
|
|
144
|
-
- Move the window to another screen
|
|
145
|
-
- Try in incognito
|
|
146
|
-
|
|
147
|
-
if you see a fingerprint change when it shouldn't, you can use [this JSON Diff Finder tool](https://url-decode.com/tool/json-diff) to check what causes the diff.
|
|
148
|
-
|
|
149
147
|
## Components included in fingerprint
|
|
150
148
|
- audio fingerprint
|
|
151
149
|
- canvas fingerprint
|
package/dist/thumbmark.cjs.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";const e={exclude:[],include:[],logging:!0,timeout:5e3,cache_api_call:!0,performance:!1};let n={...e};function t(){if("undefined"==typeof navigator)return{name:"unknown",version:"unknown"};const e=navigator.userAgent,n=[/(?<name>SamsungBrowser)\/(?<version>\d+(?:\.\d+)?)/,/(?<name>Edge|Edg)\/(?<version>\d+(?:\.\d+)?)/,/(?<name>(?:Chrome|Chromium|OPR|Opera|Vivaldi|Brave))\/(?<version>\d+(?:\.\d+)?)/,/(?<name>(?:Firefox|Waterfox|Iceweasel|IceCat))\/(?<version>\d+(?:\.\d+)?)/,/(?<name>Safari)\/(?<version>\d+(?:\.\d+)?)/,/(?<name>MSIE|Trident|IEMobile).+?(?<version>\d+(?:\.\d+)?)/,/(?<name>samsung).*Version\/(?<version>\d+(?:\.\d+)?)/i,/(?<name>[A-Za-z]+)\/(?<version>\d+(?:\.\d+)?)/],t={edg:"Edge",opr:"Opera",samsung:"SamsungBrowser"};for(const r of n){const n=e.match(r);if(n&&n.groups){return{name:t[n.groups.name.toLowerCase()]||n.groups.name,version:n.groups.version}}}return{name:"unknown",version:"unknown"}}function r(e){let n=0;for(let t=0;t<e.length;++t)n+=Math.abs(e[t]);return n}function o(e,n,t){let r=[];for(let n=0;n<e[0].data.length;n++){let t=[];for(let r=0;r<e.length;r++)t.push(e[r].data[n]);r.push(a(t))}const o=new Uint8ClampedArray(r);return new ImageData(o,n,t)}function a(e){if(0===e.length)return 0;const n={};for(const t of e)n[t]=(n[t]||0)+1;let t=e[0];for(const e in n)n[e]>n[t]&&(t=parseInt(e,10));return t}function i(e){return e^=e>>>16,e=Math.imul(e,2246822507),e^=e>>>13,e=Math.imul(e,3266489909),(e^=e>>>16)>>>0}const s=new Uint32Array([597399067,2869860233,951274213,2716044179]);function c(e,n){return e<<n|e>>>32-n}function l(e,n=0){var t;if(n=n?0|n:0,"string"==typeof e&&(t=e,e=(new TextEncoder).encode(t).buffer),!(e instanceof ArrayBuffer))throw new TypeError("Expected key to be ArrayBuffer or string");const r=new Uint32Array([n,n,n,n]);!function(e,n){const t=e.byteLength/16|0,r=new Uint32Array(e,0,4*t);for(let e=0;e<t;e++){const t=r.subarray(4*e,4*(e+1));t[0]=Math.imul(t[0],s[0]),t[0]=c(t[0],15),t[0]=Math.imul(t[0],s[1]),n[0]=n[0]^t[0],n[0]=c(n[0],19),n[0]=n[0]+n[1],n[0]=Math.imul(n[0],5)+1444728091,t[1]=Math.imul(t[1],s[1]),t[1]=c(t[1],16),t[1]=Math.imul(t[1],s[2]),n[1]=n[1]^t[1],n[1]=c(n[1],17),n[1]=n[1]+n[2],n[1]=Math.imul(n[1],5)+197830471,t[2]=Math.imul(t[2],s[2]),t[2]=c(t[2],17),t[2]=Math.imul(t[2],s[3]),n[2]=n[2]^t[2],n[2]=c(n[2],15),n[2]=n[2]+n[3],n[2]=Math.imul(n[2],5)+2530024501,t[3]=Math.imul(t[3],s[3]),t[3]=c(t[3],18),t[3]=Math.imul(t[3],s[0]),n[3]=n[3]^t[3],n[3]=c(n[3],13),n[3]=n[3]+n[0],n[3]=Math.imul(n[3],5)+850148119}}(e,r),function(e,n){const t=e.byteLength/16|0,r=e.byteLength%16,o=new Uint32Array(4),a=new Uint8Array(e,16*t,r);switch(r){case 15:o[3]=o[3]^a[14]<<16;case 14:o[3]=o[3]^a[13]<<8;case 13:o[3]=o[3]^a[12],o[3]=Math.imul(o[3],s[3]),o[3]=c(o[3],18),o[3]=Math.imul(o[3],s[0]),n[3]=n[3]^o[3];case 12:o[2]=o[2]^a[11]<<24;case 11:o[2]=o[2]^a[10]<<16;case 10:o[2]=o[2]^a[9]<<8;case 9:o[2]=o[2]^a[8],o[2]=Math.imul(o[2],s[2]),o[2]=c(o[2],17),o[2]=Math.imul(o[2],s[3]),n[2]=n[2]^o[2];case 8:o[1]=o[1]^a[7]<<24;case 7:o[1]=o[1]^a[6]<<16;case 6:o[1]=o[1]^a[5]<<8;case 5:o[1]=o[1]^a[4],o[1]=Math.imul(o[1],s[1]),o[1]=c(o[1],16),o[1]=Math.imul(o[1],s[2]),n[1]=n[1]^o[1];case 4:o[0]=o[0]^a[3]<<24;case 3:o[0]=o[0]^a[2]<<16;case 2:o[0]=o[0]^a[1]<<8;case 1:o[0]=o[0]^a[0],o[0]=Math.imul(o[0],s[0]),o[0]=c(o[0],15),o[0]=Math.imul(o[0],s[1]),n[0]=n[0]^o[0]}}(e,r),function(e,n){n[0]=n[0]^e.byteLength,n[1]=n[1]^e.byteLength,n[2]=n[2]^e.byteLength,n[3]=n[3]^e.byteLength,n[0]=n[0]+n[1]|0,n[0]=n[0]+n[2]|0,n[0]=n[0]+n[3]|0,n[1]=n[1]+n[0]|0,n[2]=n[2]+n[0]|0,n[3]=n[3]+n[0]|0,n[0]=i(n[0]),n[1]=i(n[1]),n[2]=i(n[2]),n[3]=i(n[3]),n[0]=n[0]+n[1]|0,n[0]=n[0]+n[2]|0,n[0]=n[0]+n[3]|0,n[1]=n[1]+n[0]|0,n[2]=n[2]+n[0]|0,n[3]=n[3]+n[0]|0}(e,r);const o=new Uint8Array(r.buffer);return Array.from(o).map((e=>e.toString(16).padStart(2,"0"))).join("")}const u=t(),d=u.name.toLowerCase(),m=u.version.split(".")[0]||"0",h=parseInt(m,10),f=280;function g(e,n){return new Promise((t=>setTimeout(t,e,n)))}const p=["Arial","Arial Black","Arial Narrow","Arial Rounded MT","Arimo","Archivo","Barlow","Bebas Neue","Bitter","Bookman","Calibri","Cabin","Candara","Century","Century Gothic","Comic Sans MS","Constantia","Courier","Courier New","Crimson Text","DM Mono","DM Sans","DM Serif Display","DM Serif Text","Dosis","Droid Sans","Exo","Fira Code","Fira Sans","Franklin Gothic Medium","Garamond","Geneva","Georgia","Gill Sans","Helvetica","Impact","Inconsolata","Indie Flower","Inter","Josefin Sans","Karla","Lato","Lexend","Lucida Bright","Lucida Console","Lucida Sans Unicode","Manrope","Merriweather","Merriweather Sans","Montserrat","Myriad","Noto Sans","Nunito","Nunito Sans","Open Sans","Optima","Orbitron","Oswald","Pacifico","Palatino","Perpetua","PT Sans","PT Serif","Poppins","Prompt","Public Sans","Quicksand","Rajdhani","Recursive","Roboto","Roboto Condensed","Rockwell","Rubik","Segoe Print","Segoe Script","Segoe UI","Sora","Source Sans Pro","Space Mono","Tahoma","Taviraj","Times","Times New Roman","Titillium Web","Trebuchet MS","Ubuntu","Varela Round","Verdana","Work Sans"],w=["monospace","sans-serif","serif"];function v(e,n){if(!e)throw new Error("Canvas context not supported");return e.font,e.font=`72px ${n}`,e.measureText("WwMmLli0Oo").width}function y(){var e;const n=document.createElement("canvas"),t=null!==(e=n.getContext("webgl"))&&void 0!==e?e:n.getContext("experimental-webgl");if(t&&"getParameter"in t)try{const e=(t.getParameter(t.VENDOR)||"").toString(),n=(t.getParameter(t.RENDERER)||"").toString();let r={vendor:e,renderer:n,version:(t.getParameter(t.VERSION)||"").toString(),shadingLanguageVersion:(t.getParameter(t.SHADING_LANGUAGE_VERSION)||"").toString()};if(!n.length||!e.length){const e=t.getExtension("WEBGL_debug_renderer_info");if(e){const n=(t.getParameter(e.UNMASKED_VENDOR_WEBGL)||"").toString(),o=(t.getParameter(e.UNMASKED_RENDERER_WEBGL)||"").toString();n&&(r.vendorUnmasked=n),o&&(r.rendererUnmasked=o)}}return r}catch(e){}return"undefined"}function S(){const e=new Float32Array(1),n=new Uint8Array(e.buffer);return e[0]=1/0,e[0]=e[0]-e[0],n[3]}const b=(e,n,t,r)=>{const o=(t-n)/r;let a=0;for(let t=0;t<r;t++){a+=e(n+(t+.5)*o)}return a*o};function E(e,n){const t={};return n.forEach((n=>{const r=function(e){if(0===e.length)return null;const n={};e.forEach((e=>{const t=String(e);n[t]=(n[t]||0)+1}));let t=e[0],r=1;return Object.keys(n).forEach((e=>{n[e]>r&&(t=e,r=n[e])})),t}(e.map((e=>n in e?e[n]:void 0)).filter((e=>void 0!==e)));r&&(t[n]=r)})),t}let M;function P(){let e=[];const n={"prefers-contrast":["high","more","low","less","forced","no-preference"],"any-hover":["hover","none"],"any-pointer":["none","coarse","fine"],pointer:["none","coarse","fine"],hover:["hover","none"],update:["fast","slow"],"inverted-colors":["inverted","none"],"prefers-reduced-motion":["reduce","no-preference"],"prefers-reduced-transparency":["reduce","no-preference"],scripting:["none","initial-only","enabled"],"forced-colors":["active","none"]};return Object.keys(n).forEach((t=>{n[t].forEach((n=>{matchMedia(`(${t}: ${n})`).matches&&e.push(`${t}: ${n}`)}))})),e}const A="SamsungBrowser"!==t().name?1:3;let C,x=null;const k={audio:async function(e){const n=t();return["SamsungBrowser","Safari"].includes(n.name)?null:async function(){return new Promise(((e,n)=>{try{const n=44100,t=5e3,o=new(window.OfflineAudioContext||window.webkitOfflineAudioContext)(1,t,n),a=o.createBufferSource(),i=o.createOscillator();i.frequency.value=1e3;const s=o.createDynamicsCompressor();let c;s.threshold.value=-50,s.knee.value=40,s.ratio.value=12,s.attack.value=0,s.release.value=.2,i.connect(s),s.connect(o.destination),i.start(),o.oncomplete=n=>{c=n.renderedBuffer.getChannelData(0),e({sampleHash:r(c),maxChannels:o.destination.maxChannelCount,channelCountMode:a.channelCountMode})},o.startRendering()}catch(e){console.error("Error creating audio fingerprint:",e),n(e)}}))}()},canvas:async function(e){return t(),"firefox"===d||"safari"===d&&h>=17?null:function(){const e=document.createElement("canvas");return e.getContext("2d"),new Promise((e=>{const n=Array.from({length:3},(()=>function(){const e=document.createElement("canvas"),n=e.getContext("2d");if(!n)return new ImageData(1,1);e.width=f,e.height=20;const t=n.createLinearGradient(0,0,e.width,e.height);t.addColorStop(0,"red"),t.addColorStop(1/6,"orange"),t.addColorStop(2/6,"yellow"),t.addColorStop(.5,"green"),t.addColorStop(4/6,"blue"),t.addColorStop(5/6,"indigo"),t.addColorStop(1,"violet"),n.fillStyle=t,n.fillRect(0,0,e.width,e.height);const r="Random Text WMwmil10Oo";n.font="23.123px Arial",n.fillStyle="black",n.fillText(r,-5,15),n.fillStyle="rgba(0, 0, 255, 0.5)",n.fillText(r,-3.3,17.7),n.beginPath(),n.moveTo(0,0),n.lineTo(2*e.width/7,e.height),n.strokeStyle="white",n.lineWidth=2,n.stroke();const o=n.getImageData(0,0,e.width,e.height);return o}()));e({commonPixelsHash:l(o(n,f,20).data.toString()).toString()})}))}()},fonts:async function(e){const n=t();return["Firefox"].includes(n.name)?null:new Promise(((e,n)=>{try{!async function(e){for(var n;!document.body;)await g(50);const t=document.createElement("iframe");t.setAttribute("frameBorder","0");const r=t.style;r.setProperty("position","fixed"),r.setProperty("display","block","important"),r.setProperty("visibility","visible"),r.setProperty("border","0"),r.setProperty("opacity","0"),t.src="about:blank",document.body.appendChild(t);const o=t.contentDocument||(null===(n=t.contentWindow)||void 0===n?void 0:n.document);if(!o)throw new Error("Iframe document is not accessible");e({iframe:o}),setTimeout((()=>{document.body.removeChild(t)}),0)}((async({iframe:n})=>{const t=n.createElement("canvas").getContext("2d"),r=w.map((e=>v(t,e)));let o={};p.forEach((e=>{const n=v(t,e);r.includes(n)||(o[e]=n)})),e(o)}))}catch(e){n({error:"unsupported"})}}))},hardware:function(){return new Promise(((e,n)=>{const t=void 0!==navigator.deviceMemory?navigator.deviceMemory:0,r=window.performance&&window.performance.memory?window.performance.memory:0;e({videocard:y(),architecture:S(),deviceMemory:t.toString()||"undefined",jsHeapSizeLimit:r.jsHeapSizeLimit||0})}))},locales:function(){return new Promise((e=>{e({languages:navigator.language,timezone:Intl.DateTimeFormat().resolvedOptions().timeZone})}))},math:function(){return new Promise((e=>{e({acos:Math.acos(.5),asin:b(Math.asin,-1,1,97),cos:b(Math.cos,0,Math.PI,97),largeCos:Math.cos(1e20),largeSin:Math.sin(1e20),largeTan:Math.tan(1e20),sin:b(Math.sin,-Math.PI,Math.PI,97),tan:b(Math.tan,0,2*Math.PI,97)})}))},permissions:async function(){M=(null==n?void 0:n.permissions_to_check)||["accelerometer","accessibility","accessibility-events","ambient-light-sensor","background-fetch","background-sync","bluetooth","camera","clipboard-read","clipboard-write","device-info","display-capture","gyroscope","geolocation","local-fonts","magnetometer","microphone","midi","nfc","notifications","payment-handler","persistent-storage","push","speaker","storage-access","top-level-storage-access","window-management","query"],"safari"===t().name.toLowerCase()&&(M=M.filter((e=>!["camera","geolocation","microphone"].includes(e))));const e=Array.from({length:(null==n?void 0:n.retries)||3},(()=>async function(){const e={};for(const n of M)try{const t=await navigator.permissions.query({name:n});e[n]=t.state.toString()}catch(e){}return e}()));return Promise.all(e).then((e=>E(e,M)))},plugins:function(){const e=[];if(navigator.plugins)for(let n=0;n<navigator.plugins.length;n++){const t=navigator.plugins[n];e.push([t.name,t.filename,t.description].join("|"))}return new Promise((n=>{n({plugins:e})}))},screen:function(){return new Promise((e=>{e({is_touchscreen:navigator.maxTouchPoints>0,maxTouchPoints:navigator.maxTouchPoints,colorDepth:screen.colorDepth,mediaMatches:P()})}))},system:function(){return new Promise((e=>{const n=t(),r={platform:window.navigator.platform,productSub:navigator.productSub,product:navigator.product,useragent:navigator.userAgent,hardwareConcurrency:navigator.hardwareConcurrency,browser:{name:n.name,version:n.version}};"safari"!==n.name.toLowerCase()&&(r.applePayVersion=function(){if("https:"===window.location.protocol&&"function"==typeof window.ApplePaySession)try{const e=window.ApplePaySession.supportsVersion;for(let n=15;n>0;n--)if(e(n))return n}catch(e){return 0}return 0}(),r.cookieEnabled=window.navigator.cookieEnabled),e(r)}))},webgl:async function(){"undefined"!=typeof document&&(C=document.createElement("canvas"),C.width=200,C.height=100,x=C.getContext("webgl"));try{if(!x)throw new Error("WebGL not supported");const e=Array.from({length:A},(()=>function(){try{if(!x)throw new Error("WebGL not supported");const e="\n attribute vec2 position;\n void main() {\n gl_Position = vec4(position, 0.0, 1.0);\n }\n ",n="\n precision mediump float;\n void main() {\n gl_FragColor = vec4(0.812, 0.195, 0.553, 0.921); // Set line color\n }\n ",t=x.createShader(x.VERTEX_SHADER),r=x.createShader(x.FRAGMENT_SHADER);if(!t||!r)throw new Error("Failed to create shaders");if(x.shaderSource(t,e),x.shaderSource(r,n),x.compileShader(t),!x.getShaderParameter(t,x.COMPILE_STATUS))throw new Error("Vertex shader compilation failed: "+x.getShaderInfoLog(t));if(x.compileShader(r),!x.getShaderParameter(r,x.COMPILE_STATUS))throw new Error("Fragment shader compilation failed: "+x.getShaderInfoLog(r));const o=x.createProgram();if(!o)throw new Error("Failed to create shader program");if(x.attachShader(o,t),x.attachShader(o,r),x.linkProgram(o),!x.getProgramParameter(o,x.LINK_STATUS))throw new Error("Shader program linking failed: "+x.getProgramInfoLog(o));x.useProgram(o);const a=137,i=new Float32Array(4*a),s=2*Math.PI/a;for(let e=0;e<a;e++){const n=e*s;i[4*e]=0,i[4*e+1]=0,i[4*e+2]=Math.cos(n)*(C.width/2),i[4*e+3]=Math.sin(n)*(C.height/2)}const c=x.createBuffer();x.bindBuffer(x.ARRAY_BUFFER,c),x.bufferData(x.ARRAY_BUFFER,i,x.STATIC_DRAW);const l=x.getAttribLocation(o,"position");x.enableVertexAttribArray(l),x.vertexAttribPointer(l,2,x.FLOAT,!1,0,0),x.viewport(0,0,C.width,C.height),x.clearColor(0,0,0,1),x.clear(x.COLOR_BUFFER_BIT),x.drawArrays(x.LINES,0,2*a);const u=new Uint8ClampedArray(C.width*C.height*4);x.readPixels(0,0,C.width,C.height,x.RGBA,x.UNSIGNED_BYTE,u);return new ImageData(u,C.width,C.height)}catch(e){return new ImageData(1,1)}finally{x&&(x.bindBuffer(x.ARRAY_BUFFER,null),x.useProgram(null),x.viewport(0,0,x.drawingBufferWidth,x.drawingBufferHeight),x.clearColor(0,0,0,0))}}()));return{commonPixelsHash:l(o(e,C.width,C.height).data.toString()).toString()}}catch(e){return{webgl:"unsupported"}}}},T={},_={timeout:"true"},R=(e,n,t)=>{T[e]=n};function L(e,n,t=""){const r={},o=(null==n?void 0:n.exclude)||[],a=(null==n?void 0:n.include)||[];for(const[i,s]of Object.entries(e)){const e=t+i+".";if("object"!=typeof s||Array.isArray(s)){const n=o.some((n=>e.startsWith(n))),t=a.some((n=>e.startsWith(n)));n&&!t||(r[i]=s)}else{const t=L(s,n,e);Object.keys(t).length>0&&(r[i]=t)}}return r}function I(){return"1.0.0-rc.0"}let O=null,B=null;async function D(n){const t={...e,...n},r={...k,...T},{elapsed:o,resolvedComponents:a}=await F(r,t),i=t.api_key?((e,n)=>e.cache_api_call&&B?Promise.resolve(B):O||(O=fetch("https://api-dev.thumbmarkjs.com/thumbmark",{method:"POST",headers:{"x-api-key":e.api_key,Authorization:"custom-authorized"},body:JSON.stringify({components:n,clientHash:l(JSON.stringify(n))})}).then((e=>{if(!e.ok)throw new Error(`HTTP error! status: ${e.status}`);return e.json()})).then((e=>(B=e,O=null,e))).catch((e=>(console.error("Error fetching pro data",e),O=null,null))),O))(t,a):null,s=i?await i:null,c=t.performance?{elapsed:o}:{};if(s){return{components:a,info:s.info||{},version:"1.0.0-rc.0",thumbmark:s.thumbmark||"undefined",...c}}return{thumbmark:l(JSON.stringify(a)),components:a,info:{uniqueness:"api only"},version:"1.0.0-rc.0",...c}}async function F(n,t){const r={...e,...t},o=Object.entries(n).filter((([e])=>{var n;return!(null===(n=null==r?void 0:r.exclude)||void 0===n?void 0:n.includes(e))})).filter((([e])=>{var n,t,o,a;return(null===(n=null==r?void 0:r.include)||void 0===n?void 0:n.some((e=>e.includes("."))))?null===(t=null==r?void 0:r.include)||void 0===t?void 0:t.some((n=>n.startsWith(e))):0===(null===(o=null==r?void 0:r.include)||void 0===o?void 0:o.length)||(null===(a=null==r?void 0:r.include)||void 0===a?void 0:a.includes(e))})),a=o.map((([e])=>e)),i=o.map((([e,n])=>n())),s=await function(e,n,t){return Promise.all(e.map((e=>{const r=performance.now();return Promise.race([e.then((e=>({value:e,elapsed:performance.now()-r}))),(o=n,a=t,new Promise((e=>{setTimeout((()=>e(a)),o)}))).then((e=>({value:e,elapsed:performance.now()-r})))]);var o,a})))}(i,(null==r?void 0:r.timeout)||1e3,_),c={},l={};s.forEach(((e,n)=>{var t;null!=e.value&&(l[a[n]]=e.value,c[a[n]]=null!==(t=e.elapsed)&&void 0!==t?t:0)}));const u=L(l,r,"");return{elapsed:c,resolvedComponents:u}}exports.Thumbmark=class{constructor(n){this.options={...e,...n}}async get(e){return D({...this.options,...e})}getVersion(){return"1.0.0-rc.0"}includeComponent(e,n){R(e,n)}},exports.getFingerprint=async function(e){try{const t=await D(n);return e?{hash:t.thumbmark.toString(),data:t.components}:t.thumbmark.toString()}catch(e){throw e}},exports.getFingerprintData=async function(){return(await D(n)).components},exports.getFingerprintPerformance=async function(){try{const{elapsed:e,resolvedComponents:t}=await F(k,n);return{...t,elapsed:e}}catch(e){throw e}},exports.getThumbmark=D,exports.getVersion=I,exports.includeComponent=R,exports.setOption=function(e,t){if(!["include","exclude","permissions_to_check","retries","timeout","logging","api_key","cache_api_call"].includes(e))throw new Error("Unknown option "+e);if(["include","exclude","permissions_to_check"].includes(e)&&(!Array.isArray(t)||!t.every((e=>"string"==typeof e))))throw new Error("The value of the include, exclude and permissions_to_check must be an array of strings");if(["retries","timeout"].includes(e)&&"number"!=typeof t)throw new Error("The value of retries must be a number");n[e]=t};
|
|
1
|
+
"use strict";const e={exclude:[],include:[],logging:!0,timeout:5e3,cache_api_call:!0,performance:!1};let n={...e};function t(){if("undefined"==typeof navigator)return{name:"unknown",version:"unknown"};const e=navigator.userAgent,n=[/(?<name>SamsungBrowser)\/(?<version>\d+(?:\.\d+)?)/,/(?<name>Edge|Edg)\/(?<version>\d+(?:\.\d+)?)/,/(?<name>(?:Chrome|Chromium|OPR|Opera|Vivaldi|Brave))\/(?<version>\d+(?:\.\d+)?)/,/(?<name>(?:Firefox|Waterfox|Iceweasel|IceCat))\/(?<version>\d+(?:\.\d+)?)/,/(?<name>Safari)\/(?<version>\d+(?:\.\d+)?)/,/(?<name>MSIE|Trident|IEMobile).+?(?<version>\d+(?:\.\d+)?)/,/(?<name>samsung).*Version\/(?<version>\d+(?:\.\d+)?)/i,/(?<name>[A-Za-z]+)\/(?<version>\d+(?:\.\d+)?)/],t={edg:"Edge",opr:"Opera",samsung:"SamsungBrowser"};for(const r of n){const n=e.match(r);if(n&&n.groups){return{name:t[n.groups.name.toLowerCase()]||n.groups.name,version:n.groups.version}}}return{name:"unknown",version:"unknown"}}function r(e){let n=0;for(let t=0;t<e.length;++t)n+=Math.abs(e[t]);return n}function o(e,n,t){let r=[];for(let n=0;n<e[0].data.length;n++){let t=[];for(let r=0;r<e.length;r++)t.push(e[r].data[n]);r.push(a(t))}const o=new Uint8ClampedArray(r);return new ImageData(o,n,t)}function a(e){if(0===e.length)return 0;const n={};for(const t of e)n[t]=(n[t]||0)+1;let t=e[0];for(const e in n)n[e]>n[t]&&(t=parseInt(e,10));return t}function i(e){return e^=e>>>16,e=Math.imul(e,2246822507),e^=e>>>13,e=Math.imul(e,3266489909),(e^=e>>>16)>>>0}const s=new Uint32Array([597399067,2869860233,951274213,2716044179]);function c(e,n){return e<<n|e>>>32-n}function l(e,n=0){var t;if(n=n?0|n:0,"string"==typeof e&&(t=e,e=(new TextEncoder).encode(t).buffer),!(e instanceof ArrayBuffer))throw new TypeError("Expected key to be ArrayBuffer or string");const r=new Uint32Array([n,n,n,n]);!function(e,n){const t=e.byteLength/16|0,r=new Uint32Array(e,0,4*t);for(let e=0;e<t;e++){const t=r.subarray(4*e,4*(e+1));t[0]=Math.imul(t[0],s[0]),t[0]=c(t[0],15),t[0]=Math.imul(t[0],s[1]),n[0]=n[0]^t[0],n[0]=c(n[0],19),n[0]=n[0]+n[1],n[0]=Math.imul(n[0],5)+1444728091,t[1]=Math.imul(t[1],s[1]),t[1]=c(t[1],16),t[1]=Math.imul(t[1],s[2]),n[1]=n[1]^t[1],n[1]=c(n[1],17),n[1]=n[1]+n[2],n[1]=Math.imul(n[1],5)+197830471,t[2]=Math.imul(t[2],s[2]),t[2]=c(t[2],17),t[2]=Math.imul(t[2],s[3]),n[2]=n[2]^t[2],n[2]=c(n[2],15),n[2]=n[2]+n[3],n[2]=Math.imul(n[2],5)+2530024501,t[3]=Math.imul(t[3],s[3]),t[3]=c(t[3],18),t[3]=Math.imul(t[3],s[0]),n[3]=n[3]^t[3],n[3]=c(n[3],13),n[3]=n[3]+n[0],n[3]=Math.imul(n[3],5)+850148119}}(e,r),function(e,n){const t=e.byteLength/16|0,r=e.byteLength%16,o=new Uint32Array(4),a=new Uint8Array(e,16*t,r);switch(r){case 15:o[3]=o[3]^a[14]<<16;case 14:o[3]=o[3]^a[13]<<8;case 13:o[3]=o[3]^a[12],o[3]=Math.imul(o[3],s[3]),o[3]=c(o[3],18),o[3]=Math.imul(o[3],s[0]),n[3]=n[3]^o[3];case 12:o[2]=o[2]^a[11]<<24;case 11:o[2]=o[2]^a[10]<<16;case 10:o[2]=o[2]^a[9]<<8;case 9:o[2]=o[2]^a[8],o[2]=Math.imul(o[2],s[2]),o[2]=c(o[2],17),o[2]=Math.imul(o[2],s[3]),n[2]=n[2]^o[2];case 8:o[1]=o[1]^a[7]<<24;case 7:o[1]=o[1]^a[6]<<16;case 6:o[1]=o[1]^a[5]<<8;case 5:o[1]=o[1]^a[4],o[1]=Math.imul(o[1],s[1]),o[1]=c(o[1],16),o[1]=Math.imul(o[1],s[2]),n[1]=n[1]^o[1];case 4:o[0]=o[0]^a[3]<<24;case 3:o[0]=o[0]^a[2]<<16;case 2:o[0]=o[0]^a[1]<<8;case 1:o[0]=o[0]^a[0],o[0]=Math.imul(o[0],s[0]),o[0]=c(o[0],15),o[0]=Math.imul(o[0],s[1]),n[0]=n[0]^o[0]}}(e,r),function(e,n){n[0]=n[0]^e.byteLength,n[1]=n[1]^e.byteLength,n[2]=n[2]^e.byteLength,n[3]=n[3]^e.byteLength,n[0]=n[0]+n[1]|0,n[0]=n[0]+n[2]|0,n[0]=n[0]+n[3]|0,n[1]=n[1]+n[0]|0,n[2]=n[2]+n[0]|0,n[3]=n[3]+n[0]|0,n[0]=i(n[0]),n[1]=i(n[1]),n[2]=i(n[2]),n[3]=i(n[3]),n[0]=n[0]+n[1]|0,n[0]=n[0]+n[2]|0,n[0]=n[0]+n[3]|0,n[1]=n[1]+n[0]|0,n[2]=n[2]+n[0]|0,n[3]=n[3]+n[0]|0}(e,r);const o=new Uint8Array(r.buffer);return Array.from(o).map((e=>e.toString(16).padStart(2,"0"))).join("")}const u=t(),d=u.name.toLowerCase(),m=u.version.split(".")[0]||"0",h=parseInt(m,10),f=280;function g(e,n){return new Promise((t=>setTimeout(t,e,n)))}const p=["Arial","Arial Black","Arial Narrow","Arial Rounded MT","Arimo","Archivo","Barlow","Bebas Neue","Bitter","Bookman","Calibri","Cabin","Candara","Century","Century Gothic","Comic Sans MS","Constantia","Courier","Courier New","Crimson Text","DM Mono","DM Sans","DM Serif Display","DM Serif Text","Dosis","Droid Sans","Exo","Fira Code","Fira Sans","Franklin Gothic Medium","Garamond","Geneva","Georgia","Gill Sans","Helvetica","Impact","Inconsolata","Indie Flower","Inter","Josefin Sans","Karla","Lato","Lexend","Lucida Bright","Lucida Console","Lucida Sans Unicode","Manrope","Merriweather","Merriweather Sans","Montserrat","Myriad","Noto Sans","Nunito","Nunito Sans","Open Sans","Optima","Orbitron","Oswald","Pacifico","Palatino","Perpetua","PT Sans","PT Serif","Poppins","Prompt","Public Sans","Quicksand","Rajdhani","Recursive","Roboto","Roboto Condensed","Rockwell","Rubik","Segoe Print","Segoe Script","Segoe UI","Sora","Source Sans Pro","Space Mono","Tahoma","Taviraj","Times","Times New Roman","Titillium Web","Trebuchet MS","Ubuntu","Varela Round","Verdana","Work Sans"],w=["monospace","sans-serif","serif"];function v(e,n){if(!e)throw new Error("Canvas context not supported");return e.font,e.font=`72px ${n}`,e.measureText("WwMmLli0Oo").width}function y(){var e;const n=document.createElement("canvas"),t=null!==(e=n.getContext("webgl"))&&void 0!==e?e:n.getContext("experimental-webgl");if(t&&"getParameter"in t)try{const e=(t.getParameter(t.VENDOR)||"").toString(),n=(t.getParameter(t.RENDERER)||"").toString();let r={vendor:e,renderer:n,version:(t.getParameter(t.VERSION)||"").toString(),shadingLanguageVersion:(t.getParameter(t.SHADING_LANGUAGE_VERSION)||"").toString()};if(!n.length||!e.length){const e=t.getExtension("WEBGL_debug_renderer_info");if(e){const n=(t.getParameter(e.UNMASKED_VENDOR_WEBGL)||"").toString(),o=(t.getParameter(e.UNMASKED_RENDERER_WEBGL)||"").toString();n&&(r.vendorUnmasked=n),o&&(r.rendererUnmasked=o)}}return r}catch(e){}return"undefined"}function S(){const e=new Float32Array(1),n=new Uint8Array(e.buffer);return e[0]=1/0,e[0]=e[0]-e[0],n[3]}const b=(e,n,t,r)=>{const o=(t-n)/r;let a=0;for(let t=0;t<r;t++){a+=e(n+(t+.5)*o)}return a*o};function P(e,n){const t={};return n.forEach((n=>{const r=function(e){if(0===e.length)return null;const n={};e.forEach((e=>{const t=String(e);n[t]=(n[t]||0)+1}));let t=e[0],r=1;return Object.keys(n).forEach((e=>{n[e]>r&&(t=e,r=n[e])})),t}(e.map((e=>n in e?e[n]:void 0)).filter((e=>void 0!==e)));r&&(t[n]=r)})),t}const E=["accelerometer","accessibility","accessibility-events","ambient-light-sensor","background-fetch","background-sync","bluetooth","camera","clipboard-read","clipboard-write","device-info","display-capture","gyroscope","geolocation","local-fonts","magnetometer","microphone","midi","nfc","notifications","payment-handler","persistent-storage","push","speaker","storage-access","top-level-storage-access","window-management","query"];function M(){let e=[];const n={"prefers-contrast":["high","more","low","less","forced","no-preference"],"any-hover":["hover","none"],"any-pointer":["none","coarse","fine"],pointer:["none","coarse","fine"],hover:["hover","none"],update:["fast","slow"],"inverted-colors":["inverted","none"],"prefers-reduced-motion":["reduce","no-preference"],"prefers-reduced-transparency":["reduce","no-preference"],scripting:["none","initial-only","enabled"],"forced-colors":["active","none"]};return Object.keys(n).forEach((t=>{n[t].forEach((n=>{matchMedia(`(${t}: ${n})`).matches&&e.push(`${t}: ${n}`)}))})),e}const A="SamsungBrowser"!==t().name?1:3;let C,x=null;const k={audio:async function(e){const n=t();return["SamsungBrowser","Safari"].includes(n.name)?null:async function(){return new Promise(((e,n)=>{try{const n=44100,t=5e3,o=new(window.OfflineAudioContext||window.webkitOfflineAudioContext)(1,t,n),a=o.createBufferSource(),i=o.createOscillator();i.frequency.value=1e3;const s=o.createDynamicsCompressor();let c;s.threshold.value=-50,s.knee.value=40,s.ratio.value=12,s.attack.value=0,s.release.value=.2,i.connect(s),s.connect(o.destination),i.start(),o.oncomplete=n=>{c=n.renderedBuffer.getChannelData(0),e({sampleHash:r(c),maxChannels:o.destination.maxChannelCount,channelCountMode:a.channelCountMode})},o.startRendering()}catch(e){console.error("Error creating audio fingerprint:",e),n(e)}}))}()},canvas:async function(e){return t(),"firefox"===d||"safari"===d&&h>=17?null:function(){const e=document.createElement("canvas");return e.getContext("2d"),new Promise((e=>{const n=Array.from({length:3},(()=>function(){const e=document.createElement("canvas"),n=e.getContext("2d");if(!n)return new ImageData(1,1);e.width=f,e.height=20;const t=n.createLinearGradient(0,0,e.width,e.height);t.addColorStop(0,"red"),t.addColorStop(1/6,"orange"),t.addColorStop(2/6,"yellow"),t.addColorStop(.5,"green"),t.addColorStop(4/6,"blue"),t.addColorStop(5/6,"indigo"),t.addColorStop(1,"violet"),n.fillStyle=t,n.fillRect(0,0,e.width,e.height);const r="Random Text WMwmil10Oo";n.font="23.123px Arial",n.fillStyle="black",n.fillText(r,-5,15),n.fillStyle="rgba(0, 0, 255, 0.5)",n.fillText(r,-3.3,17.7),n.beginPath(),n.moveTo(0,0),n.lineTo(2*e.width/7,e.height),n.strokeStyle="white",n.lineWidth=2,n.stroke();const o=n.getImageData(0,0,e.width,e.height);return o}()));e({commonPixelsHash:l(o(n,f,20).data.toString()).toString()})}))}()},fonts:async function(e){const n=t();return["Firefox"].includes(n.name)?null:new Promise(((e,n)=>{try{!async function(e){for(var n;!document.body;)await g(50);const t=document.createElement("iframe");t.setAttribute("frameBorder","0");const r=t.style;r.setProperty("position","fixed"),r.setProperty("display","block","important"),r.setProperty("visibility","visible"),r.setProperty("border","0"),r.setProperty("opacity","0"),t.src="about:blank",document.body.appendChild(t);const o=t.contentDocument||(null===(n=t.contentWindow)||void 0===n?void 0:n.document);if(!o)throw new Error("Iframe document is not accessible");e({iframe:o}),setTimeout((()=>{document.body.removeChild(t)}),0)}((async({iframe:n})=>{const t=n.createElement("canvas").getContext("2d"),r=w.map((e=>v(t,e)));let o={};p.forEach((e=>{const n=v(t,e);r.includes(n)||(o[e]=n)})),e(o)}))}catch(e){n({error:"unsupported"})}}))},hardware:function(){return new Promise(((e,n)=>{const t=void 0!==navigator.deviceMemory?navigator.deviceMemory:0,r=window.performance&&window.performance.memory?window.performance.memory:0;e({videocard:y(),architecture:S(),deviceMemory:t.toString()||"undefined",jsHeapSizeLimit:r.jsHeapSizeLimit||0})}))},locales:function(){return new Promise((e=>{e({languages:navigator.language,timezone:Intl.DateTimeFormat().resolvedOptions().timeZone})}))},math:function(){return new Promise((e=>{e({acos:Math.acos(.5),asin:b(Math.asin,-1,1,97),cos:b(Math.cos,0,Math.PI,97),largeCos:Math.cos(1e20),largeSin:Math.sin(1e20),largeTan:Math.tan(1e20),sin:b(Math.sin,-Math.PI,Math.PI,97),tan:b(Math.tan,0,2*Math.PI,97)})}))},permissions:async function(e){let n=(null==e?void 0:e.permissions_to_check)||E;"safari"===t().name.toLowerCase()&&(n=n.filter((e=>!["camera","geolocation","microphone"].includes(e))));const r=Array.from({length:3},(()=>async function(e){const n={};for(const t of e)try{const e=await navigator.permissions.query({name:t});n[t]=e.state.toString()}catch(e){}return n}(n)));return Promise.all(r).then((e=>P(e,n)))},plugins:function(){const e=[];if(navigator.plugins)for(let n=0;n<navigator.plugins.length;n++){const t=navigator.plugins[n];e.push([t.name,t.filename,t.description].join("|"))}return new Promise((n=>{n({plugins:e})}))},screen:function(){return new Promise((e=>{e({is_touchscreen:navigator.maxTouchPoints>0,maxTouchPoints:navigator.maxTouchPoints,colorDepth:screen.colorDepth,mediaMatches:M()})}))},system:function(){return new Promise((e=>{const n=t(),r={platform:window.navigator.platform,productSub:navigator.productSub,product:navigator.product,useragent:navigator.userAgent,hardwareConcurrency:navigator.hardwareConcurrency,browser:{name:n.name,version:n.version}};"safari"!==n.name.toLowerCase()&&(r.applePayVersion=function(){if("https:"===window.location.protocol&&"function"==typeof window.ApplePaySession)try{const e=window.ApplePaySession.supportsVersion;for(let n=15;n>0;n--)if(e(n))return n}catch(e){return 0}return 0}(),r.cookieEnabled=window.navigator.cookieEnabled),e(r)}))},webgl:async function(){"undefined"!=typeof document&&(C=document.createElement("canvas"),C.width=200,C.height=100,x=C.getContext("webgl"));try{if(!x)throw new Error("WebGL not supported");const e=Array.from({length:A},(()=>function(){try{if(!x)throw new Error("WebGL not supported");const e="\n attribute vec2 position;\n void main() {\n gl_Position = vec4(position, 0.0, 1.0);\n }\n ",n="\n precision mediump float;\n void main() {\n gl_FragColor = vec4(0.812, 0.195, 0.553, 0.921); // Set line color\n }\n ",t=x.createShader(x.VERTEX_SHADER),r=x.createShader(x.FRAGMENT_SHADER);if(!t||!r)throw new Error("Failed to create shaders");if(x.shaderSource(t,e),x.shaderSource(r,n),x.compileShader(t),!x.getShaderParameter(t,x.COMPILE_STATUS))throw new Error("Vertex shader compilation failed: "+x.getShaderInfoLog(t));if(x.compileShader(r),!x.getShaderParameter(r,x.COMPILE_STATUS))throw new Error("Fragment shader compilation failed: "+x.getShaderInfoLog(r));const o=x.createProgram();if(!o)throw new Error("Failed to create shader program");if(x.attachShader(o,t),x.attachShader(o,r),x.linkProgram(o),!x.getProgramParameter(o,x.LINK_STATUS))throw new Error("Shader program linking failed: "+x.getProgramInfoLog(o));x.useProgram(o);const a=137,i=new Float32Array(4*a),s=2*Math.PI/a;for(let e=0;e<a;e++){const n=e*s;i[4*e]=0,i[4*e+1]=0,i[4*e+2]=Math.cos(n)*(C.width/2),i[4*e+3]=Math.sin(n)*(C.height/2)}const c=x.createBuffer();x.bindBuffer(x.ARRAY_BUFFER,c),x.bufferData(x.ARRAY_BUFFER,i,x.STATIC_DRAW);const l=x.getAttribLocation(o,"position");x.enableVertexAttribArray(l),x.vertexAttribPointer(l,2,x.FLOAT,!1,0,0),x.viewport(0,0,C.width,C.height),x.clearColor(0,0,0,1),x.clear(x.COLOR_BUFFER_BIT),x.drawArrays(x.LINES,0,2*a);const u=new Uint8ClampedArray(C.width*C.height*4);x.readPixels(0,0,C.width,C.height,x.RGBA,x.UNSIGNED_BYTE,u);return new ImageData(u,C.width,C.height)}catch(e){return new ImageData(1,1)}finally{x&&(x.bindBuffer(x.ARRAY_BUFFER,null),x.useProgram(null),x.viewport(0,0,x.drawingBufferWidth,x.drawingBufferHeight),x.clearColor(0,0,0,0))}}()));return{commonPixelsHash:l(o(e,C.width,C.height).data.toString()).toString()}}catch(e){return{webgl:"unsupported"}}}},T={},_={timeout:"true"},R=(e,n,t)=>{T[e]=n};var L="1.0.0-rc.1";function I(e,n,t=""){const r={},o=(null==n?void 0:n.exclude)||[],a=(null==n?void 0:n.include)||[];for(const[i,s]of Object.entries(e)){const e=t+i+".";if("object"!=typeof s||Array.isArray(s)){const n=o.some((n=>e.startsWith(n))),t=a.some((n=>e.startsWith(n)));n&&!t||(r[i]=s)}else{const t=I(s,n,e);Object.keys(t).length>0&&(r[i]=t)}}return r}function O(){return L}let B=null,D=null;async function F(n){const t={...e,...n},r={...k,...T},{elapsed:o,resolvedComponents:a}=await N(r,t),i=t.api_key?((e,n)=>{if(e.cache_api_call&&D)return Promise.resolve(D);if(B)return B;const t=fetch("https://api-dev.thumbmarkjs.com/thumbmark",{method:"POST",headers:{"x-api-key":e.api_key,Authorization:"custom-authorized"},body:JSON.stringify({components:n,clientHash:l(JSON.stringify(n))})}).then((e=>{if(!e.ok)throw new Error(`HTTP error! status: ${e.status}`);return e.json()})).then((e=>(D=e,B=null,e))).catch((e=>(console.error("Error fetching pro data",e),B=null,null))),r=e.timeout||5e3,o=new Promise((e=>{setTimeout((()=>{e({thumbmark:l(JSON.stringify(n)),info:{timed_out:!0},version:L})}),r)}));return B=Promise.race([t,o]),B})(t,a):null,s=i?await i:null,c=t.performance?{elapsed:o}:{};if(s){return{components:a,info:s.info||{},version:O(),thumbmark:s.thumbmark||"undefined",...c}}return{thumbmark:l(JSON.stringify(a)),components:a,info:{uniqueness:"api only"},version:O(),...c}}async function N(n,t){const r={...e,...t},o=Object.entries(n).filter((([e])=>{var n;return!(null===(n=null==r?void 0:r.exclude)||void 0===n?void 0:n.includes(e))})).filter((([e])=>{var n,t,o,a;return(null===(n=null==r?void 0:r.include)||void 0===n?void 0:n.some((e=>e.includes("."))))?null===(t=null==r?void 0:r.include)||void 0===t?void 0:t.some((n=>n.startsWith(e))):0===(null===(o=null==r?void 0:r.include)||void 0===o?void 0:o.length)||(null===(a=null==r?void 0:r.include)||void 0===a?void 0:a.includes(e))})),a=o.map((([e])=>e)),i=o.map((([e,n])=>n(t))),s=await function(e,n,t){return Promise.all(e.map((e=>{const r=performance.now();return Promise.race([e.then((e=>({value:e,elapsed:performance.now()-r}))),(o=n,a=t,new Promise((e=>{setTimeout((()=>e(a)),o)}))).then((e=>({value:e,elapsed:performance.now()-r})))]);var o,a})))}(i,(null==r?void 0:r.timeout)||5e3,_),c={},l={};s.forEach(((e,n)=>{var t;null!=e.value&&(l[a[n]]=e.value,c[a[n]]=null!==(t=e.elapsed)&&void 0!==t?t:0)}));const u=I(l,r,"");return{elapsed:c,resolvedComponents:u}}exports.Thumbmark=class{constructor(n){this.options={...e,...n}}async get(e){return F({...this.options,...e})}getVersion(){return O()}includeComponent(e,n){R(e,n)}},exports.getFingerprint=async function(e){try{const t=await F(n);return e?{hash:t.thumbmark.toString(),data:t.components}:t.thumbmark.toString()}catch(e){throw e}},exports.getFingerprintData=async function(){return(await F(n)).components},exports.getFingerprintPerformance=async function(){try{const{elapsed:e,resolvedComponents:t}=await N(k,n);return{...t,elapsed:e}}catch(e){throw e}},exports.getThumbmark=F,exports.getVersion=O,exports.includeComponent=R,exports.setOption=function(e,t){if(!["include","exclude","permissions_to_check","retries","timeout","logging","api_key","cache_api_call"].includes(e))throw new Error("Unknown option "+e);if(["include","exclude","permissions_to_check"].includes(e)&&(!Array.isArray(t)||!t.every((e=>"string"==typeof e))))throw new Error("The value of the include, exclude and permissions_to_check must be an array of strings");if(["retries","timeout"].includes(e)&&"number"!=typeof t)throw new Error("The value of retries must be a number");n[e]=t};
|
|
2
2
|
//# sourceMappingURL=thumbmark.cjs.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"thumbmark.cjs.js","sources":["../src/fingerprint/options.ts","../src/components/system/browser.ts","../src/components/audio/index.ts","../src/utils/commonPixels.ts","../src/utils/hash.ts","../src/components/canvas/index.ts","../src/utils/ephemeralIFrame.ts","../src/components/fonts/index.ts","../src/components/hardware/index.ts","../src/components/math/index.ts","../src/utils/getMostFrequent.ts","../src/components/permissions/index.ts","../src/components/screen/index.ts","../src/components/webgl/index.ts","../src/factory.ts","../src/components/locales/index.ts","../src/components/plugins/index.ts","../src/components/system/index.ts","../src/utils/filterComponents.ts","../src/fingerprint/functions.ts","../src/utils/raceAll.ts","../src/thumbmark.ts","../src/fingerprint/legacy_functions.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"names":["defaultOptions","exclude","include","logging","timeout","cache_api_call","performance","options","getBrowser","navigator","name","version","ua","userAgent","regexes","browserNameMap","edg","opr","samsung","regex","match","groups","toLowerCase","calculateHash","samples","hash","i","length","Math","abs","getCommonPixels","images","width","height","finalData","data","indice","u","push","getMostFrequent","pixelArray","Uint8ClampedArray","ImageData","arr","frequencyMap","num","mostFrequent","parseInt","fmix","input","imul","C","Uint32Array","rotl","m","n","key","seed","text","TextEncoder","encode","buffer","ArrayBuffer","TypeError","blocks","byteLength","view32","k","subarray","body","reminder","tail","Uint8Array","finalize","byteArray","Array","from","map","byte","toString","padStart","join","browser","ver","split","majorVer","_WIDTH","wait","durationMs","resolveWith","Promise","resolve","setTimeout","availableFonts","baseFonts","measureSingleFont","ctx","font","Error","measureText","getVideoCard","canvas","document","createElement","gl","_a","getContext","undefined","vendor","getParameter","VENDOR","renderer","RENDERER","result","VERSION","shadingLanguageVersion","SHADING_LANGUAGE_VERSION","debugInfo","getExtension","vendorUnmasked","UNMASKED_VENDOR_WEBGL","rendererUnmasked","UNMASKED_RENDERER_WEBGL","error","getArchitecture","f","Float32Array","u8","Infinity","integrate","a","b","h","sum","mostFrequentValuesInArrayOfDictionaries","keys","forEach","mostFrequentValueForKey","element","String","highestFrequency","Object","mostFrequentValue","obj","filter","val","permission_keys","matchMedias","results","mediaQueries","pointer","hover","update","scripting","value","matchMedia","matches","_RUNS","tm_component_promises","audio","async","includes","reject","sampleRate","numSamples","audioContext","window","OfflineAudioContext","webkitOfflineAudioContext","audioBuffer","createBufferSource","oscillator","createOscillator","frequency","compressor","createDynamicsCompressor","threshold","knee","ratio","attack","release","connect","destination","start","oncomplete","event","renderedBuffer","getChannelData","sampleHash","maxChannels","maxChannelCount","channelCountMode","startRendering","console","createAudioFingerprint","imageDatas","gradient","createLinearGradient","addColorStop","fillStyle","fillRect","randomText","fillText","beginPath","moveTo","lineTo","strokeStyle","lineWidth","stroke","imageData","getImageData","generateCanvasImageData","commonPixelsHash","generateCanvasFingerprint","fonts","callback","iframe","setAttribute","style","setProperty","src","appendChild","iframeDocument","contentDocument","contentWindow","removeChild","ephemeralIFrame","defaultWidths","fontWidth","hardware","deviceMemory","memoryInfo","memory","videocard","architecture","jsHeapSizeLimit","locales","languages","language","timezone","Intl","DateTimeFormat","resolvedOptions","timeZone","math","acos","asin","cos","PI","largeCos","largeSin","sin","largeTan","tan","permissions","permissions_to_check","permissionPromises","retries","permissionStatus","feature","status","query","state","getBrowserPermissionsOnce","all","then","resolvedPermissions","plugins","plugin","filename","description","screen","is_touchscreen","maxTouchPoints","colorDepth","mediaMatches","system","platform","productSub","product","useragent","hardwareConcurrency","location","protocol","ApplePaySession","versionCheck","supportsVersion","getApplePayVersion","cookieEnabled","webgl","vertexShaderSource","fragmentShaderSource","vertexShader","createShader","VERTEX_SHADER","fragmentShader","FRAGMENT_SHADER","shaderSource","compileShader","getShaderParameter","COMPILE_STATUS","getShaderInfoLog","shaderProgram","createProgram","attachShader","linkProgram","getProgramParameter","LINK_STATUS","getProgramInfoLog","useProgram","numSpokes","vertices","angleIncrement","angle","vertexBuffer","createBuffer","bindBuffer","ARRAY_BUFFER","bufferData","STATIC_DRAW","positionAttribute","getAttribLocation","enableVertexAttribArray","vertexAttribPointer","FLOAT","viewport","clearColor","clear","COLOR_BUFFER_BIT","drawArrays","LINES","pixelData","readPixels","RGBA","UNSIGNED_BYTE","drawingBufferWidth","drawingBufferHeight","createWebGLImageData","customComponents","timeoutInstance","includeComponent","creationFunction","filterThumbmarkData","path","excludeList","includeList","entries","currentPath","isArray","isExcluded","some","exclusion","startsWith","isIncluded","inclusion","filtered","getVersion","currentApiPromise","apiPromiseResult","getThumbmark","_options","allComponents","elapsed","resolvedComponents","clientComponentsResult","resolveClientComponents","apiPromise","api_key","components","fetch","method","headers","Authorization","JSON","stringify","clientHash","response","ok","json","catch","getApiPromise","apiResult","maybeElapsed","info","thumbmark","uniqueness","comps","opts","e","_b","_c","_d","promises","_","fn","resolvedValues","timeoutTime","timeoutVal","p","startTime","now","race","t","raceAllPerformance","resolvedComponentsRaw","index","constructor","this","get","overrideOptions","globalIncludeComponent","includeData","thumbmarkData","every","item"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"thumbmark.cjs.js","sources":["../src/options.ts","../src/components/system/browser.ts","../src/components/audio/index.ts","../src/utils/commonPixels.ts","../src/utils/hash.ts","../src/components/canvas/index.ts","../src/utils/ephemeralIFrame.ts","../src/components/fonts/index.ts","../src/components/hardware/index.ts","../src/components/math/index.ts","../src/utils/getMostFrequent.ts","../src/components/permissions/index.ts","../src/components/screen/index.ts","../src/components/webgl/index.ts","../src/factory.ts","../src/components/locales/index.ts","../src/components/plugins/index.ts","../src/components/system/index.ts","../src/functions/filterComponents.ts","../src/functions/index.ts","../src/utils/raceAll.ts","../src/thumbmark.ts","../src/functions/legacy_functions.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"names":["defaultOptions","exclude","include","logging","timeout","cache_api_call","performance","options","getBrowser","navigator","name","version","ua","userAgent","regexes","browserNameMap","edg","opr","samsung","regex","match","groups","toLowerCase","calculateHash","samples","hash","i","length","Math","abs","getCommonPixels","images","width","height","finalData","data","indice","u","push","getMostFrequent","pixelArray","Uint8ClampedArray","ImageData","arr","frequencyMap","num","mostFrequent","parseInt","fmix","input","imul","C","Uint32Array","rotl","m","n","key","seed","text","TextEncoder","encode","buffer","ArrayBuffer","TypeError","blocks","byteLength","view32","k","subarray","body","reminder","tail","Uint8Array","finalize","byteArray","Array","from","map","byte","toString","padStart","join","browser","ver","split","majorVer","_WIDTH","wait","durationMs","resolveWith","Promise","resolve","setTimeout","availableFonts","baseFonts","measureSingleFont","ctx","font","Error","measureText","getVideoCard","canvas","document","createElement","gl","_a","getContext","undefined","vendor","getParameter","VENDOR","renderer","RENDERER","result","VERSION","shadingLanguageVersion","SHADING_LANGUAGE_VERSION","debugInfo","getExtension","vendorUnmasked","UNMASKED_VENDOR_WEBGL","rendererUnmasked","UNMASKED_RENDERER_WEBGL","error","getArchitecture","f","Float32Array","u8","Infinity","integrate","a","b","h","sum","mostFrequentValuesInArrayOfDictionaries","keys","forEach","mostFrequentValueForKey","element","String","highestFrequency","Object","mostFrequentValue","obj","filter","val","defaultPermissionKeys","matchMedias","results","mediaQueries","pointer","hover","update","scripting","value","matchMedia","matches","_RUNS","tm_component_promises","audio","async","includes","reject","sampleRate","numSamples","audioContext","window","OfflineAudioContext","webkitOfflineAudioContext","audioBuffer","createBufferSource","oscillator","createOscillator","frequency","compressor","createDynamicsCompressor","threshold","knee","ratio","attack","release","connect","destination","start","oncomplete","event","renderedBuffer","getChannelData","sampleHash","maxChannels","maxChannelCount","channelCountMode","startRendering","console","createAudioFingerprint","imageDatas","gradient","createLinearGradient","addColorStop","fillStyle","fillRect","randomText","fillText","beginPath","moveTo","lineTo","strokeStyle","lineWidth","stroke","imageData","getImageData","generateCanvasImageData","commonPixelsHash","generateCanvasFingerprint","fonts","callback","iframe","setAttribute","style","setProperty","src","appendChild","iframeDocument","contentDocument","contentWindow","removeChild","ephemeralIFrame","defaultWidths","fontWidth","hardware","deviceMemory","memoryInfo","memory","videocard","architecture","jsHeapSizeLimit","locales","languages","language","timezone","Intl","DateTimeFormat","resolvedOptions","timeZone","math","acos","asin","cos","PI","largeCos","largeSin","sin","largeTan","tan","permissions","permission_keys","permissions_to_check","permissionPromises","permissionStatus","feature","status","query","state","getBrowserPermissionsOnce","all","then","resolvedPermissions","plugins","plugin","filename","description","screen","is_touchscreen","maxTouchPoints","colorDepth","mediaMatches","system","platform","productSub","product","useragent","hardwareConcurrency","location","protocol","ApplePaySession","versionCheck","supportsVersion","getApplePayVersion","cookieEnabled","webgl","vertexShaderSource","fragmentShaderSource","vertexShader","createShader","VERTEX_SHADER","fragmentShader","FRAGMENT_SHADER","shaderSource","compileShader","getShaderParameter","COMPILE_STATUS","getShaderInfoLog","shaderProgram","createProgram","attachShader","linkProgram","getProgramParameter","LINK_STATUS","getProgramInfoLog","useProgram","numSpokes","vertices","angleIncrement","angle","vertexBuffer","createBuffer","bindBuffer","ARRAY_BUFFER","bufferData","STATIC_DRAW","positionAttribute","getAttribLocation","enableVertexAttribArray","vertexAttribPointer","FLOAT","viewport","clearColor","clear","COLOR_BUFFER_BIT","drawArrays","LINES","pixelData","readPixels","RGBA","UNSIGNED_BYTE","drawingBufferWidth","drawingBufferHeight","createWebGLImageData","customComponents","timeoutInstance","includeComponent","creationFunction","filterThumbmarkData","path","excludeList","includeList","entries","currentPath","isArray","isExcluded","some","exclusion","startsWith","isIncluded","inclusion","filtered","getVersion","packageJson.version","currentApiPromise","apiPromiseResult","getThumbmark","_options","allComponents","elapsed","resolvedComponents","clientComponentsResult","resolveClientComponents","apiPromise","api_key","components","fetchPromise","fetch","method","headers","Authorization","JSON","stringify","clientHash","response","ok","json","catch","timeoutMs","timeoutPromise","thumbmark","info","timed_out","race","getApiPromise","apiResult","maybeElapsed","uniqueness","comps","opts","e","_b","_c","_d","promises","_","fn","resolvedValues","timeoutTime","timeoutVal","p","startTime","now","t","raceAllPerformance","resolvedComponentsRaw","index","constructor","this","get","overrideOptions","globalIncludeComponent","includeData","thumbmarkData","every","item"],"mappings":"aAWO,MAAMA,EAAmC,CAC5CC,QAAS,GACTC,QAAS,GACTC,SAAS,EACTC,QAAS,IACTC,gBAAgB,EAChBC,aAAa,GAGV,IAAIC,EAAU,IAAIP,YCbTQ,IACd,GAAyB,oBAAdC,UACT,MAAO,CACLC,KAAM,UACNC,QAAS,WAGX,MAAMC,EAAKH,UAAUI,UAEfC,EAAU,CAEd,qDAEA,+CAEA,kFAEA,4EAEA,6CAEA,6DAEA,wDAEA,iDAIIC,EAA4C,CAChDC,IAAO,OACPC,IAAO,QACPC,QAAW,kBAIb,IAAK,MAAMC,KAASL,EAAS,CAC3B,MAAMM,EAAQR,EAAGQ,MAAMD,GACvB,GAAIC,GAASA,EAAMC,OAAQ,CAIzB,MAAO,CACLX,KAHWK,EAAeK,EAAMC,OAAOX,KAAKY,gBAAkBF,EAAMC,OAAOX,KAI3EC,QAASS,EAAMC,OAAOV,UAM5B,MAAO,CACLD,KAAM,UACNC,QAAS,UAEb,CCDF,SAASY,EAAcC,GACrB,IAAIC,EAAO,EACX,IAAK,IAAIC,EAAI,EAAGA,EAAIF,EAAQG,SAAUD,EACpCD,GAAQG,KAAKC,IAAIL,EAAQE,IAE3B,OAAOD,CACT,UClEgBK,EAAgBC,EAAqBC,EAAeC,GAChE,IAAIC,EAAsB,GAC1B,IAAK,IAAIR,EAAI,EAAGA,EAAIK,EAAO,GAAGI,KAAKR,OAAQD,IAAK,CAC5C,IAAIU,EAAmB,GACvB,IAAK,IAAIC,EAAI,EAAGA,EAAIN,EAAOJ,OAAQU,IAC/BD,EAAOE,KAAKP,EAAOM,GAAGF,KAAKT,IAE/BQ,EAAUI,KAAKC,EAAgBH,IAGnC,MACMI,EAAa,IAAIC,kBADLP,GAElB,OAAO,IAAIQ,UAAUF,EAAYR,EAAOC,EAC5C,CAEA,SAASM,EAAgBI,GACrB,GAAmB,IAAfA,EAAIhB,OACN,OAAO,EAGT,MAAMiB,EAA0C,CAAE,EAGlD,IAAK,MAAMC,KAAOF,EAChBC,EAAaC,IAAQD,EAAaC,IAAQ,GAAK,EAGjD,IAAIC,EAAuBH,EAAI,GAG/B,IAAK,MAAME,KAAOD,EACZA,EAAaC,GAAOD,EAAaE,KACnCA,EAAeC,SAASF,EAAK,KAIjC,OAAOC,CACT,CC3BF,SAASE,EAAMC,GAOb,OANAA,GAAUA,IAAU,GACpBA,EAAQrB,KAAKsB,KAAKD,EAAO,YACzBA,GAAUA,IAAU,GACpBA,EAAQrB,KAAKsB,KAAKD,EAAO,aACzBA,GAAUA,IAAU,MAEF,CACpB,CAEA,MAAME,EAAI,IAAIC,YAAY,CACxB,UACA,WACA,UACA,aAGF,SAASC,EAAMC,EAAYC,GACzB,OAAQD,GAAKC,EAAMD,IAAO,GAAKC,CACjC,UAsJgB9B,EAAM+B,EAA4BC,EAAO,GA9KzD,IAAoBC,EAqLlB,GANAD,EAAQA,EAAe,EAAPA,EAAY,EAET,iBAARD,IAjLOE,EAkLCF,EAAjBA,GAjLc,IAAIG,aACLC,OAAOF,GAAMG,UAmLtBL,aAAeM,aACnB,MAAM,IAAIC,UAAU,4CAGtB,MAAMtC,EAAO,IAAI2B,YAAY,CAACK,EAAMA,EAAMA,EAAMA,KA/JlD,SAAeD,EAAmB/B,GAChC,MAAMuC,EAAUR,EAAIS,WAAa,GAAM,EACjCC,EAAS,IAAId,YAAYI,EAAK,EAAY,EAATQ,GAEvC,IAAK,IAAItC,EAAI,EAAGA,EAAIsC,EAAQtC,IAAK,CAC/B,MAAMyC,EAAID,EAAOE,SAAa,EAAJ1C,EAAiB,GAATA,EAAI,IAEtCyC,EAAE,GAAKvC,KAAKsB,KAAKiB,EAAE,GAAIhB,EAAE,IACzBgB,EAAE,GAAKd,EAAKc,EAAE,GAAI,IAClBA,EAAE,GAAKvC,KAAKsB,KAAKiB,EAAE,GAAIhB,EAAE,IAEzB1B,EAAK,GAAMA,EAAK,GAAK0C,EAAE,GACvB1C,EAAK,GAAK4B,EAAK5B,EAAK,GAAI,IACxBA,EAAK,GAAMA,EAAK,GAAKA,EAAK,GAC1BA,EAAK,GAAKG,KAAKsB,KAAKzB,EAAK,GAAI,GAAK,WAElC0C,EAAE,GAAKvC,KAAKsB,KAAKiB,EAAE,GAAIhB,EAAE,IACzBgB,EAAE,GAAKd,EAAKc,EAAE,GAAI,IAClBA,EAAE,GAAKvC,KAAKsB,KAAKiB,EAAE,GAAIhB,EAAE,IAEzB1B,EAAK,GAAMA,EAAK,GAAK0C,EAAE,GACvB1C,EAAK,GAAK4B,EAAK5B,EAAK,GAAI,IACxBA,EAAK,GAAMA,EAAK,GAAKA,EAAK,GAC1BA,EAAK,GAAKG,KAAKsB,KAAKzB,EAAK,GAAI,GAAK,UAElC0C,EAAE,GAAKvC,KAAKsB,KAAKiB,EAAE,GAAIhB,EAAE,IACzBgB,EAAE,GAAKd,EAAKc,EAAE,GAAI,IAClBA,EAAE,GAAKvC,KAAKsB,KAAKiB,EAAE,GAAIhB,EAAE,IAEzB1B,EAAK,GAAMA,EAAK,GAAK0C,EAAE,GACvB1C,EAAK,GAAK4B,EAAK5B,EAAK,GAAI,IACxBA,EAAK,GAAMA,EAAK,GAAKA,EAAK,GAC1BA,EAAK,GAAKG,KAAKsB,KAAKzB,EAAK,GAAI,GAAK,WAElC0C,EAAE,GAAKvC,KAAKsB,KAAKiB,EAAE,GAAIhB,EAAE,IACzBgB,EAAE,GAAKd,EAAKc,EAAE,GAAI,IAClBA,EAAE,GAAKvC,KAAKsB,KAAKiB,EAAE,GAAIhB,EAAE,IAEzB1B,EAAK,GAAMA,EAAK,GAAK0C,EAAE,GACvB1C,EAAK,GAAK4B,EAAK5B,EAAK,GAAI,IACxBA,EAAK,GAAMA,EAAK,GAAKA,EAAK,GAC1BA,EAAK,GAAKG,KAAKsB,KAAKzB,EAAK,GAAI,GAAK,UAEtC,CAsHE4C,CAAKb,EAAK/B,GApHZ,SAAe+B,EAAmB/B,GAChC,MAAMuC,EAAUR,EAAIS,WAAa,GAAM,EACjCK,EAAYd,EAAIS,WAAa,GAE7BE,EAAI,IAAIf,YAAY,GACpBmB,EAAO,IAAIC,WAAWhB,EAAc,GAATQ,EAAaM,GAE9C,OAAQA,GACN,KAAK,GACHH,EAAE,GAAMA,EAAE,GAAMI,EAAK,KAAO,GAE9B,KAAK,GACHJ,EAAE,GAAMA,EAAE,GAAMI,EAAK,KAAO,EAE9B,KAAK,GACHJ,EAAE,GAAMA,EAAE,GAAMI,EAAK,IAErBJ,EAAE,GAAKvC,KAAKsB,KAAKiB,EAAE,GAAIhB,EAAE,IACzBgB,EAAE,GAAKd,EAAKc,EAAE,GAAI,IAClBA,EAAE,GAAKvC,KAAKsB,KAAKiB,EAAE,GAAIhB,EAAE,IACzB1B,EAAK,GAAMA,EAAK,GAAK0C,EAAE,GAEzB,KAAK,GACHA,EAAE,GAAMA,EAAE,GAAMI,EAAK,KAAO,GAE9B,KAAK,GACHJ,EAAE,GAAMA,EAAE,GAAMI,EAAK,KAAO,GAE9B,KAAK,GACHJ,EAAE,GAAMA,EAAE,GAAMI,EAAK,IAAM,EAE7B,KAAK,EACHJ,EAAE,GAAMA,EAAE,GAAMI,EAAK,GAErBJ,EAAE,GAAKvC,KAAKsB,KAAKiB,EAAE,GAAIhB,EAAE,IACzBgB,EAAE,GAAKd,EAAKc,EAAE,GAAI,IAClBA,EAAE,GAAKvC,KAAKsB,KAAKiB,EAAE,GAAIhB,EAAE,IACzB1B,EAAK,GAAMA,EAAK,GAAK0C,EAAE,GAEzB,KAAK,EACHA,EAAE,GAAMA,EAAE,GAAMI,EAAK,IAAM,GAE7B,KAAK,EACHJ,EAAE,GAAMA,EAAE,GAAMI,EAAK,IAAM,GAE7B,KAAK,EACHJ,EAAE,GAAMA,EAAE,GAAMI,EAAK,IAAM,EAE7B,KAAK,EACHJ,EAAE,GAAMA,EAAE,GAAMI,EAAK,GAErBJ,EAAE,GAAKvC,KAAKsB,KAAKiB,EAAE,GAAIhB,EAAE,IACzBgB,EAAE,GAAKd,EAAKc,EAAE,GAAI,IAClBA,EAAE,GAAKvC,KAAKsB,KAAKiB,EAAE,GAAIhB,EAAE,IACzB1B,EAAK,GAAMA,EAAK,GAAK0C,EAAE,GAEzB,KAAK,EACHA,EAAE,GAAMA,EAAE,GAAMI,EAAK,IAAM,GAE7B,KAAK,EACHJ,EAAE,GAAMA,EAAE,GAAMI,EAAK,IAAM,GAE7B,KAAK,EACHJ,EAAE,GAAMA,EAAE,GAAMI,EAAK,IAAM,EAE7B,KAAK,EACHJ,EAAE,GAAMA,EAAE,GAAMI,EAAK,GAErBJ,EAAE,GAAKvC,KAAKsB,KAAKiB,EAAE,GAAIhB,EAAE,IACzBgB,EAAE,GAAKd,EAAKc,EAAE,GAAI,IAClBA,EAAE,GAAKvC,KAAKsB,KAAKiB,EAAE,GAAIhB,EAAE,IACzB1B,EAAK,GAAMA,EAAK,GAAK0C,EAAE,GAE7B,CA4CEI,CAAKf,EAAK/B,GA1CZ,SAAmB+B,EAAmB/B,GACpCA,EAAK,GAAMA,EAAK,GAAK+B,EAAIS,WACzBxC,EAAK,GAAMA,EAAK,GAAK+B,EAAIS,WACzBxC,EAAK,GAAMA,EAAK,GAAK+B,EAAIS,WACzBxC,EAAK,GAAMA,EAAK,GAAK+B,EAAIS,WAEzBxC,EAAK,GAAMA,EAAK,GAAKA,EAAK,GAAM,EAChCA,EAAK,GAAMA,EAAK,GAAKA,EAAK,GAAM,EAChCA,EAAK,GAAMA,EAAK,GAAKA,EAAK,GAAM,EAEhCA,EAAK,GAAMA,EAAK,GAAKA,EAAK,GAAM,EAChCA,EAAK,GAAMA,EAAK,GAAKA,EAAK,GAAM,EAChCA,EAAK,GAAMA,EAAK,GAAKA,EAAK,GAAM,EAEhCA,EAAK,GAAKuB,EAAKvB,EAAK,IACpBA,EAAK,GAAKuB,EAAKvB,EAAK,IACpBA,EAAK,GAAKuB,EAAKvB,EAAK,IACpBA,EAAK,GAAKuB,EAAKvB,EAAK,IAEpBA,EAAK,GAAMA,EAAK,GAAKA,EAAK,GAAM,EAChCA,EAAK,GAAMA,EAAK,GAAKA,EAAK,GAAM,EAChCA,EAAK,GAAMA,EAAK,GAAKA,EAAK,GAAM,EAEhCA,EAAK,GAAMA,EAAK,GAAKA,EAAK,GAAM,EAChCA,EAAK,GAAMA,EAAK,GAAKA,EAAK,GAAM,EAChCA,EAAK,GAAMA,EAAK,GAAKA,EAAK,GAAM,CAClC,CAiBEgD,CAASjB,EAAK/B,GACd,MAAMiD,EAAY,IAAIF,WAAW/C,EAAKoC,QACtC,OAAOc,MAAMC,KAAKF,GAAWG,KAAIC,GAAQA,EAAKC,SAAS,IAAIC,SAAS,EAAG,OAAMC,KAAK,GACpF,CC/LA,MAAMC,EAAU1E,IACVE,EAAOwE,EAAQxE,KAAKY,cACpB6D,EAAMD,EAAQvE,QAAQyE,MAAM,KAAK,IAAM,IACvCC,EAAWtC,SAASoC,EAAK,IAUzBG,EAAS,ICaG,SAAAC,EAAeC,EAAoBC,GACjD,OAAO,IAAIC,SAASC,GAAYC,WAAWD,EAASH,EAAYC,IAClE,CC3BF,MAAMI,EAAiB,CACnB,QACA,cACA,eACA,mBACA,QACA,UACA,SACA,aACA,SACA,UACA,UACA,QACA,UACA,UACA,iBACA,gBACA,aACA,UACA,cACA,eACA,UACA,UACA,mBACA,gBACA,QACA,aACA,MACA,YACA,YACA,yBACA,WACA,SACA,UACA,YACA,YACA,SACA,cACA,eACA,QACA,eACA,QACA,OACA,SACA,gBACA,iBACA,sBACA,UACA,eACA,oBACA,aACA,SACA,YACA,SACA,cACA,YACA,SACA,WACA,SACA,WACA,WACA,WACA,UACA,WACA,UACA,SACA,cACA,YACA,WACA,YACA,SACA,mBACA,WACA,QACA,cACA,eACA,WACA,OACA,kBACA,aACA,SACA,UACA,QACA,kBACA,gBACA,eACA,SACA,eACA,UACA,aAGIC,EAAY,CAAC,YAAa,aAAc,SA0ChD,SAASC,EAAkBC,EAAsCC,GAC7D,IAAKD,EACD,MAAM,IAAIE,MAAM,gCAKpB,OAFoBF,EAAIC,KACxBD,EAAIC,KAAO,QAAQA,IACZD,EAAIG,YAHU,cAGQnE,KACjC,CCpIA,SAASoE,UACL,MAAMC,EAASC,SAASC,cAAc,UAChCC,EAA+B,QAA1BC,EAAAJ,EAAOK,WAAW,gBAAQC,IAAAF,EAAAA,EAAIJ,EAAOK,WAAW,sBAE3D,GAAIF,GAAM,iBAAkBA,EACxB,IAEI,MAAMI,GAAUJ,EAAGK,aAAaL,EAAGM,SAAW,IAAI/B,WAC5CgC,GAAYP,EAAGK,aAAaL,EAAGQ,WAAa,IAAIjC,WAEtD,IAAIkC,EAA6B,CAC7BL,OAAQA,EACRG,SAAUA,EACVpG,SAAU6F,EAAGK,aAAaL,EAAGU,UAAY,IAAInC,WAC7CoC,wBAAyBX,EAAGK,aAAaL,EAAGY,2BAA6B,IAAIrC,YAIjF,IAAKgC,EAASpF,SAAWiF,EAAOjF,OAAQ,CACpC,MAAM0F,EAAYb,EAAGc,aAAa,6BAClC,GAAID,EAAW,CACX,MAAME,GAAkBf,EAAGK,aAAaQ,EAAUG,wBAA0B,IAAIzC,WAC1E0C,GAAoBjB,EAAGK,aAAaQ,EAAUK,0BAA4B,IAAI3C,WAGhFwC,IACAN,EAAOM,eAAiBA,GAExBE,IACAR,EAAOQ,iBAAmBA,IAKtC,OAAOR,EACT,MAAOU,IAIb,MAAO,WACX,CAEA,SAASC,IACP,MAAMC,EAAI,IAAIC,aAAa,GACrBC,EAAK,IAAIvD,WAAWqD,EAAEhE,QAI5B,OAHAgE,EAAE,GAAKG,IACPH,EAAE,GAAKA,EAAE,GAAKA,EAAE,GAETE,EAAG,EACZ,CChEA,MAAME,EAAY,CAACJ,EAA0BK,EAAWC,EAAW5E,KAC/D,MAAM6E,GAAKD,EAAID,GAAK3E,EACpB,IAAI8E,EAAM,EACV,IAAK,IAAI3G,EAAI,EAAGA,EAAI6B,EAAG7B,IAAK,CAExB2G,GAAOR,EADGK,GAAKxG,EAAI,IAAO0G,GAG9B,OAAOC,EAAMD,CAAC,ECkBF,SAAAE,EAAwC3F,EAA+B4F,GACnF,MAAMtB,EAAiC,CAAE,EASzC,OAPAsB,EAAKC,SAAShF,IACZ,MACMiF,EAhCZ,SAA2B9F,GACvB,GAAmB,IAAfA,EAAIhB,OACN,OAAO,KAGT,MAAMiB,EAA0C,CAAE,EAGlDD,EAAI6F,SAASE,IACX,MAAMlF,EAAMmF,OAAOD,GACnB9F,EAAaY,IAAQZ,EAAaY,IAAQ,GAAK,CAAC,IAGlD,IAAIV,EAAoBH,EAAI,GACxBiG,EAAmB,EAUvB,OAPAC,OAAON,KAAK3F,GAAc4F,SAAShF,IAC7BZ,EAAaY,GAAOoF,IACtB9F,EAAeU,EACfoF,EAAmBhG,EAAaY,OAI7BV,CACT,CAOoCgG,CADXnG,EAAIkC,KAAKkE,GAASvF,KAAOuF,EAAMA,EAAIvF,QAAOmD,IAAYqC,QAAQC,QAAgBtC,IAARsC,KAEvFR,IACFxB,EAAOzD,GAAOiF,EAAuB,IAGlCxB,CACT,CCjCF,MAAMiC,EAA0C,CAC5C,gBACA,gBAAiB,uBACjB,uBACA,mBAAoB,kBAAmB,YACvC,SACA,iBACA,kBACA,cAAe,kBACf,YAAa,cACb,cACA,eAAgB,aAAc,OAC9B,MAAO,gBACP,kBACA,qBACA,OACA,UAAW,iBACX,2BACA,oBACA,SCTJ,SAASC,IACL,IAAIC,EAAoB,GAMxB,MAAMC,EAA0C,CAC5C,mBAAoB,CAAC,OAAQ,OAAQ,MAAO,OAAQ,SAAU,iBAC9D,YAAa,CAAC,QAAS,QACvB,cAAe,CAAC,OAAQ,SAAU,QAClCC,QAAW,CAAC,OAAQ,SAAU,QAC9BC,MAAS,CAAC,QAAS,QACnBC,OAAU,CAAC,OAAQ,QACnB,kBAAmB,CAAC,WAAY,QAChC,yBAA0B,CAAC,SAAU,iBACrC,+BAAgC,CAAC,SAAU,iBAC3CC,UAAa,CAAC,OAAQ,eAAgB,WACtC,gBAAiB,CAAC,SAAU,SAShC,OANAZ,OAAON,KAAKc,GAAcb,SAAShF,IAC/B6F,EAAa7F,GAAKgF,SAASkB,IACnBC,WAAW,IAAInG,MAAQkG,MAAUE,SACjCR,EAAQ9G,KAAK,GAAGkB,MAAQkG,IAAQ,GACtC,IAECN,CACX,CCtCA,MAAMS,EAA+B,mBAAtBrJ,IAAaE,KAA6B,EAAI,EAC7D,IAAI2F,EACAG,EAAmC,KCkBhC,MAAMsD,EAAwB,CACjCC,MZtBWC,eAAwBzJ,GACrC,MAAM2E,EAAU1E,IAChB,MAAK,CAAC,iBAAkB,UAAUyJ,SAAS/E,EAAQxE,MAE5C,KAGTsJ,iBA4CE,OA3CsB,IAAItE,SAA4B,CAACC,EAASuE,KAC9D,IAEE,MAAMC,EAAa,MACbC,EAAa,IACbC,EAAe,IAAMC,OAAOC,qBAAuBD,OAAOE,2BAA4B,EAAGJ,EAAYD,GACrGM,EAAcJ,EAAaK,qBAE3BC,EAAaN,EAAaO,mBAChCD,EAAWE,UAAUnB,MAAQ,IAC7B,MAAMoB,EAAaT,EAAaU,2BAShC,IAAIvJ,EARJsJ,EAAWE,UAAUtB,OAAS,GAC9BoB,EAAWG,KAAKvB,MAAQ,GACxBoB,EAAWI,MAAMxB,MAAQ,GACzBoB,EAAWK,OAAOzB,MAAQ,EAC1BoB,EAAWM,QAAQ1B,MAAQ,GAC3BiB,EAAWU,QAAQP,GACnBA,EAAWO,QAAQhB,EAAaiB,aAChCX,EAAWY,QAGXlB,EAAamB,WAAaC,IACxBjK,EAAUiK,EAAMC,eAAeC,eAAe,GAC9ChG,EACI,CACIiG,WAAcrK,EAAcC,GAC5BqK,YAAexB,EAAaiB,YAAYQ,gBACxCC,iBAAoBtB,EAAYsB,kBAGrC,EAGL1B,EAAa2B,iBAGb,MAAOrE,GACPsE,QAAQtE,MAAM,oCAAqCA,GACnDuC,EAAOvC,MAOb,CAlDWuE,EAEX,EYkBI7F,OTLW2D,eAAyBzJ,GAEtC,OADgBC,IACH,YAATE,GAAiC,WAATA,GAAqB2E,GAAY,GAEtD,gBAKP,MAAMgB,EAASC,SAASC,cAAc,UAGtC,OAFYF,EAAOK,WAAW,MAEvB,IAAIhB,SAASC,IAMlB,MAAMwG,EAA0BxH,MAAMC,KAAK,CAAEjD,OA7BnC,IA6BoD,IASlE,WACE,MAAM0E,EAASC,SAASC,cAAc,UAChCP,EAAMK,EAAOK,WAAW,MAE9B,IAAKV,EACH,OAAO,IAAItD,UAAU,EAAG,GAI1B2D,EAAOrE,MAAQsD,EACfe,EAAOpE,OAvCO,GA0Cd,MAAMmK,EAAWpG,EAAIqG,qBAAqB,EAAG,EAAGhG,EAAOrE,MAAOqE,EAAOpE,QACrEmK,EAASE,aAAa,EAAG,OACzBF,EAASE,aAAa,EAAI,EAAG,UAC7BF,EAASE,aAAa,EAAI,EAAG,UAC7BF,EAASE,aAAa,GAAO,SAC7BF,EAASE,aAAa,EAAI,EAAG,QAC7BF,EAASE,aAAa,EAAI,EAAG,UAC7BF,EAASE,aAAa,EAAG,UAGzBtG,EAAIuG,UAAYH,EAChBpG,EAAIwG,SAAS,EAAG,EAAGnG,EAAOrE,MAAOqE,EAAOpE,QAGxC,MAAMwK,EAAa,yBACnBzG,EAAIC,KAAO,iBACXD,EAAIuG,UAAY,QAChBvG,EAAI0G,SAASD,GAAY,EAAI,IAG7BzG,EAAIuG,UAAY,uBAChBvG,EAAI0G,SAASD,GAAY,IAAM,MAG/BzG,EAAI2G,YACJ3G,EAAI4G,OAAO,EAAG,GACd5G,EAAI6G,OAAuB,EAAfxG,EAAOrE,MAAa,EAAGqE,EAAOpE,QAC1C+D,EAAI8G,YAAc,QAClB9G,EAAI+G,UAAY,EAChB/G,EAAIgH,SAEJ,MAAMC,EAAYjH,EAAIkH,aAAa,EAAG,EAAG7G,EAAOrE,MAAOqE,EAAOpE,QAE9D,OAAOgL,CACT,CAxDwEE,KAGpExH,EAAQ,CACNyH,iBAAkB3L,EAHIK,EAAgBqK,EAAY7G,EArBxC,IAwB6BnD,KAAK4C,YAAYA,YACxD,GAEN,CAtBWsI,EAEX,ESCIC,MPyEWtD,eAAwBzJ,GACrC,MAAM2E,EAAU1E,IAChB,MAAK,CAAC,WAAWyJ,SAAS/E,EAAQxE,MAE3B,KAKE,IAAIgF,SAAQ,CAACC,EAASuE,KACzB,KD/GDF,eAA+BuD,GAElC,WAAQjH,SAASjC,YACTkB,EAAK,IAEb,MAAMiI,EAASlH,SAASC,cAAc,UACtCiH,EAAOC,aAAa,cAAe,KAEnC,MAAMC,EAAQF,EAAOE,MACrBA,EAAMC,YAAY,WAAW,SAC7BD,EAAMC,YAAY,UAAW,QAAS,aACtCD,EAAMC,YAAY,aAAc,WAChCD,EAAMC,YAAY,SAAU,KAC5BD,EAAMC,YAAY,UAAU,KAE5BH,EAAOI,IAAM,cACbtH,SAASjC,KAAKwJ,YAAYL,GAE1B,MAAMM,EAAiBN,EAAOO,kBAAyC,QAAtBtH,EAAA+G,EAAOQ,qBAAerH,IAAAF,OAAAE,EAAAF,EAAAH,UACvE,IAAKwH,EACH,MAAM,IAAI5H,MAAM,qCAIlBqH,EAAS,CAAEC,OAAQM,IAGnBlI,YAAW,KACTU,SAASjC,KAAK4J,YAAYT,EAAO,GAChC,EACL,CCmFUU,EAAgBlE,OAASwD,aACrB,MAGMxH,EADSwH,EAAOjH,cAAc,UACjBG,WAAW,MAExByH,EAA0BrI,EAAUjB,KAAKoB,GACpCF,EAAkBC,EAAKC,KAGlC,IAAImD,EAA8B,CAAE,EACpCvD,EAAe2C,SAASvC,IACpB,MAAMmI,EAAYrI,EAAkBC,EAAKC,GACpCkI,EAAclE,SAASmE,KACxBhF,EAAQnD,GAAQmI,EAAS,IAGjCzI,EAAQyD,EAAQ,IAItB,MAAOzB,GACLuC,EAAO,CAACvC,MAAS,mBA7B7B,EO7EI0G,SN3BU,WACZ,OAAO,IAAI3I,SAAQ,CAACC,EAASuE,KAC3B,MAAMoE,OAAoD3H,IAAnClG,UAAkB6N,aAA+B7N,UAAkB6N,aAAe,EACnGC,EAAcjE,OAAOhK,aAAgBgK,OAAOhK,YAAoBkO,OAAYlE,OAAOhK,YAAoBkO,OAAS,EACtH7I,EACE,CACE8I,UAAarI,IACbsI,aAAgB9G,IAChB0G,aAAgBA,EAAavJ,YAAc,YAC3C4J,gBAAmBJ,EAAWI,iBAAmB,GAEpD,GAEL,EMeIC,QC5BU,WACZ,OAAO,IAAIlJ,SAASC,IAClBA,EACE,CACEkJ,UASGpO,UAAUqO,SARbC,SAYGC,KAAKC,iBAAiBC,kBAAkBC,UAX3C,GAER,EDqBIC,KLnBU,WACZ,OAAO,IAAI1J,SAASC,IAClBA,EACI,CACI0J,KAAQzN,KAAKyN,KAAK,IAClBC,KAAQrH,EAAUrG,KAAK0N,MAAQ,EAAE,EAAG,IACpCC,IAAOtH,EAAUrG,KAAK2N,IAAK,EAAG3N,KAAK4N,GAAI,IACvCC,SAAY7N,KAAK2N,IAAI,MACrBG,SAAY9N,KAAK+N,IAAI,MACrBC,SAAYhO,KAAKiO,IAAI,MACrBF,IAAO1H,EAAUrG,KAAK+N,KAAM/N,KAAK4N,GAAI5N,KAAK4N,GAAI,IAC9CK,IAAO5H,EAAUrG,KAAKiO,IAAK,EAAG,EAAIjO,KAAK4N,GAAI,KAElD,GAEL,EKKIM,YHLW9F,eAA8BzJ,GACzC,IAAIwP,GAAkBxP,aAAAoG,EAAApG,EAASyP,uBAAwB9G,EAEpB,WADnB1I,IACJE,KAAKY,gBACbyO,EAAkBA,EAAgB/G,QAAQxF,IAAS,CAAC,SAAU,cAAe,cAAcyG,SAASzG,MAExG,MACMyM,EAAoDtL,MAAMC,KAAK,CAACjD,OADtD,IACwE,IAO5FqI,eAAyC+F,GACrC,MAAMG,EAA8C,CAAE,EACtD,IAAK,MAAMC,KAAWJ,EAClB,IAEI,MAAMK,QAAe3P,UAAUqP,YAAYO,MAAM,CAAE3P,KAAMyP,IAEzDD,EAAiBC,GAAWC,EAAOE,MAAMvL,WAC3C,MAAO4C,IAIb,OAAOuI,CACX,CApBkGK,CAA0BR,KACxH,OAAOrK,QAAQ8K,IAAIP,GAAoBQ,MAAMC,GACtBpI,EAAwCoI,EAAqBX,IAGxF,EGNIY,QE/BU,WACV,MAAMA,EAAoB,GAE1B,GAAIlQ,UAAUkQ,QACZ,IAAK,IAAIjP,EAAI,EAAGA,EAAIjB,UAAUkQ,QAAQhP,OAAQD,IAAK,CACjD,MAAMkP,EAASnQ,UAAUkQ,QAAQjP,GACjCiP,EAAQrO,KAAK,CAACsO,EAAOlQ,KAAMkQ,EAAOC,SAAUD,EAAOE,aAAc7L,KAAK,MAI1E,OAAO,IAAIS,SAASC,IAClBA,EACE,CACEgL,QAAWA,GAEd,GAEL,EFeEI,OFhCU,WACV,OAAO,IAAIrL,SAASC,IAChBA,EACI,CACIqL,eAAkBvQ,UAAUwQ,eAAiB,EAC7CA,eAAkBxQ,UAAUwQ,eAC5BC,WAAcH,OAAOG,WACrBC,aAAgBhI,KAEvB,GAET,EEsBIiI,OGhCU,WACV,OAAO,IAAI1L,SAASC,IAChB,MAAMT,EAAU1E,IAEVyG,EAA6B,CACnCoK,SAAY/G,OAAO7J,UAAU4Q,SAC7BC,WAAc7Q,UAAU6Q,WACxBC,QAAW9Q,UAAU8Q,QACrBC,UAAa/Q,UAAUI,UACvB4Q,oBAAuBhR,UAAUgR,oBACjCvM,QAAW,CAACxE,KAAQwE,EAAQxE,KAAMC,QAAWuE,EAAQvE,UAGlB,WAA/BuE,EAAQxE,KAAKY,gBACb2F,EAAwB,gBAUpC,WACI,GAAiC,WAA7BqD,OAAOoH,SAASC,UAAoE,mBAAnCrH,OAAesH,gBAChE,IACI,MAAMC,EAAgBvH,OAAesH,gBAAgBE,gBACrD,IAAK,IAAIpQ,EAAI,GAAIA,EAAI,EAAGA,IACpB,GAAImQ,EAAanQ,GACb,OAAOA,EAGjB,MAAOiG,GACL,OAAO,EAGf,OAAO,CACX,CAxBwCoK,GAC5B9K,EAAsB,cAAIqD,OAAO7J,UAAUuR,eAE/CrM,EAAQsB,EAAO,GAEvB,EHcIgL,MDlBWjI,iBARW,oBAAb1D,WACTD,EAASC,SAASC,cAAc,UAChCF,EAAOrE,MAAQ,IACfqE,EAAOpE,OAAS,IAChBuE,EAAKH,EAAOK,WAAW,UAOzB,IAEE,IAAKF,EACD,MAAM,IAAIN,MAAM,uBAIpB,MAAMiG,EAA0BxH,MAAMC,KAAK,CAACjD,OAAQkI,IAAQ,IAehE,WACE,IAEI,IAAKrD,EACD,MAAM,IAAIN,MAAM,uBAGpB,MAAMgM,EAAqB,4IAOrBC,EAAuB,uKAOvBC,EAAe5L,EAAG6L,aAAa7L,EAAG8L,eAClCC,EAAiB/L,EAAG6L,aAAa7L,EAAGgM,iBAE1C,IAAKJ,IAAiBG,EAClB,MAAM,IAAIrM,MAAM,4BAOpB,GAJAM,EAAGiM,aAAaL,EAAcF,GAC9B1L,EAAGiM,aAAaF,EAAgBJ,GAEhC3L,EAAGkM,cAAcN,IACZ5L,EAAGmM,mBAAmBP,EAAc5L,EAAGoM,gBACxC,MAAM,IAAI1M,MAAM,qCAAuCM,EAAGqM,iBAAiBT,IAI/E,GADA5L,EAAGkM,cAAcH,IACZ/L,EAAGmM,mBAAmBJ,EAAgB/L,EAAGoM,gBAC1C,MAAM,IAAI1M,MAAM,uCAAyCM,EAAGqM,iBAAiBN,IAGjF,MAAMO,EAAgBtM,EAAGuM,gBAEzB,IAAKD,EACD,MAAM,IAAI5M,MAAM,mCAMpB,GAHAM,EAAGwM,aAAaF,EAAeV,GAC/B5L,EAAGwM,aAAaF,EAAeP,GAC/B/L,EAAGyM,YAAYH,IACVtM,EAAG0M,oBAAoBJ,EAAetM,EAAG2M,aAC1C,MAAM,IAAIjN,MAAM,kCAAoCM,EAAG4M,kBAAkBN,IAG7EtM,EAAG6M,WAAWP,GAGd,MAAMQ,EAAoB,IACpBC,EAAW,IAAIzL,aAAyB,EAAZwL,GAC5BE,EAAkB,EAAI5R,KAAK4N,GAAM8D,EAEvC,IAAK,IAAI5R,EAAI,EAAGA,EAAI4R,EAAW5R,IAAK,CAChC,MAAM+R,EAAQ/R,EAAI8R,EAGlBD,EAAa,EAAJ7R,GAAS,EAClB6R,EAAa,EAAJ7R,EAAQ,GAAK,EACtB6R,EAAa,EAAJ7R,EAAQ,GAAKE,KAAK2N,IAAIkE,IAAUpN,EAAOrE,MAAQ,GACxDuR,EAAa,EAAJ7R,EAAQ,GAAKE,KAAK+N,IAAI8D,IAAUpN,EAAOpE,OAAS,GAG7D,MAAMyR,EAAelN,EAAGmN,eACxBnN,EAAGoN,WAAWpN,EAAGqN,aAAcH,GAC/BlN,EAAGsN,WAAWtN,EAAGqN,aAAcN,EAAU/M,EAAGuN,aAE5C,MAAMC,EAAoBxN,EAAGyN,kBAAkBnB,EAAe,YAC9DtM,EAAG0N,wBAAwBF,GAC3BxN,EAAG2N,oBAAoBH,EAAmB,EAAGxN,EAAG4N,OAAO,EAAO,EAAG,GAGjE5N,EAAG6N,SAAS,EAAG,EAAGhO,EAAOrE,MAAOqE,EAAOpE,QACvCuE,EAAG8N,WAAW,EAAK,EAAK,EAAK,GAC7B9N,EAAG+N,MAAM/N,EAAGgO,kBACZhO,EAAGiO,WAAWjO,EAAGkO,MAAO,EAAe,EAAZpB,GAE3B,MAAMqB,EAAY,IAAIlS,kBAAkB4D,EAAOrE,MAAQqE,EAAOpE,OAAS,GACvEuE,EAAGoO,WAAW,EAAG,EAAGvO,EAAOrE,MAAOqE,EAAOpE,OAAQuE,EAAGqO,KAAMrO,EAAGsO,cAAeH,GAG5E,OAFkB,IAAIjS,UAAUiS,EAAWtO,EAAOrE,MAAOqE,EAAOpE,QAGlE,MAAO0F,GAEL,OAAO,IAAIjF,UAAU,EAAG,GAClB,QACJ8D,IAEFA,EAAGoN,WAAWpN,EAAGqN,aAAc,MAC/BrN,EAAG6M,WAAW,MACd7M,EAAG6N,SAAS,EAAG,EAAG7N,EAAGuO,mBAAoBvO,EAAGwO,qBAC5CxO,EAAG8N,WAAW,EAAK,EAAK,EAAK,IAGnC,CArHsEW,KAKlE,MAAO,CACL7H,iBAAoB3L,EAJEK,EAAgBqK,EAAY9F,EAAOrE,MAAOqE,EAAOpE,QAI9BE,KAAK4C,YAAYA,YAE5D,MAAO4C,GACP,MAAO,CACLsK,MAAS,eAGf,GCWaiD,EAAwE,CAAE,EAG1EC,EAAsC,CAC/C/U,QAAW,QAUFgV,EAAmB,CAAC1U,EAAa2U,EAA8C9U,KACxF2U,EAAiBxU,GAAQ2U,CAAgB,qBItDvC,SAAUC,EACZvM,EACAxI,EACAgV,EAAe,IAEf,MAAMtO,EAA6B,CAAE,EAC/BuO,GAAcjV,aAAAoG,EAAApG,EAASN,UAAW,GAClCwV,GAAclV,aAAAoG,EAAApG,EAASL,UAAW,GAExC,IAAK,MAAOsD,EAAKkG,KAAUb,OAAO6M,QAAQ3M,GAAM,CAC5C,MAAM4M,EAAcJ,EAAO/R,EAAM,IAEjC,GAAqB,iBAAVkG,GAAuB/E,MAAMiR,QAAQlM,GAKzC,CACH,MAAMmM,EAAaL,EAAYM,MAAKC,GAAaJ,EAAYK,WAAWD,KAClEE,EAAaR,EAAYK,MAAKI,GAAaP,EAAYK,WAAWE,KAEnEL,IAAcI,IACfhP,EAAOzD,GAAOkG,OAVkC,CACpD,MAAMyM,EAAWb,EAAoB5L,EAAOnJ,EAASoV,GACjD9M,OAAON,KAAK4N,GAAUxU,OAAS,IAC/BsF,EAAOzD,GAAO2S,IAY1B,OAAOlP,CACX,UCyCgBmP,IACZ,OAAOC,CACX,CAIA,IAAIC,EAAiD,KACjDC,EAAuC,KAyEpCvM,eAAewM,EAAajW,GAC/B,MAAMkW,EAAW,IAAKzW,KAAmBO,GAEnCmW,EAAgB,IAAK5M,KAA0BoL,IAC/CyB,QAAEA,EAASC,mBAAoBC,SAAiCC,EAAwBJ,EAAeD,GAEvGM,EAAaN,EAASO,QAzEH,EACzBzW,EACA0W,KAGA,GAAI1W,EAAQF,gBAAkBkW,EAC1B,OAAO7Q,QAAQC,QAAQ4Q,GAI3B,GAAID,EACA,OAAOA,EAIX,MACMY,EAAeC,MADJ,4CACoB,CACjCC,OAAQ,OACRC,QAAS,CACL,YAAa9W,EAAQyW,QACrBM,cAAiB,qBAErBjT,KAAMkT,KAAKC,UAAU,CAAEP,WAAYA,EAAYQ,WAAYhW,EAAK8V,KAAKC,UAAUP,QAE9ExG,MAAKiH,IAEF,IAAKA,EAASC,GACV,MAAM,IAAIzR,MAAM,uBAAuBwR,EAAStH,UAEpD,OAAOsH,EAASE,MAAM,IAEzBnH,MAAKtO,IACFoU,EAAmBpU,EACnBmU,EAAoB,KACbnU,KAEV0V,OAAMlQ,IACHsE,QAAQtE,MAAM,0BAA2BA,GACzC2O,EAAoB,KAEb,QAITwB,EAAYvX,EAAQH,SAAW,IAC/B2X,EAAiB,IAAIrS,SAAsBC,IAC7CC,YAAW,KACPD,EAAQ,CACJqS,UAAWvW,EAAK8V,KAAKC,UAAUP,IAC/BgB,KAAM,CAAEC,WAAW,GACnBvX,QAAS0V,GACX,GACHyB,EAAU,IAIjB,OADAxB,EAAoB5Q,QAAQyS,KAAK,CAACjB,EAAca,IACzCzB,CAAiB,EAiBc8B,CAAc3B,EAAUI,GAA0B,KAClFwB,EAAYtB,QAAmBA,EAAa,KAG5CuB,EAAe7B,EAASnW,YAAc,CAAEqW,WAAY,CAAE,EAE5D,GAAI0B,EAAW,CAEX,MAAO,CACHpB,WAAYJ,EACZoB,KAHwBI,EAAUJ,MAAQ,CAAE,EAI5CtX,QAASyV,IACT4B,UAAWK,EAAUL,WAAa,eAC/BM,GAGX,MAAO,CACHN,UAAWvW,EAAK8V,KAAKC,UAAUX,IAC/BI,WAAYJ,EACZoB,KAAM,CACFM,WAAY,YAEhB5X,QAASyV,OACNkC,EAEX,CAWOtO,eAAe8M,EACpB0B,EACAjY,GAEA,MAAMkY,EAAO,IAAKzY,KAAmBO,GAC/B4V,EAAWtN,OAAO6M,QAAQ8C,GAC7BxP,QAAO,EAAExF,MAAS,IAAAiD,EAAA,QAAgB,QAAfA,EAAAgS,aAAA9R,EAAA8R,EAAMxY,eAAS0G,IAAAF,OAAAE,EAAAF,EAAAwD,SAASzG,GAAI,IAC/CwF,QAAO,EAAExF,kBACR,OAAe,UAAfiV,aAAA9R,EAAA8R,EAAMvY,eAASyG,IAAAF,OAAAE,EAAAF,EAAAqP,MAAK4C,GAAKA,EAAEzO,SAAS,QACjB,UAAfwO,aAAA9R,EAAA8R,EAAMvY,eAASyG,IAAAgS,OAAAhS,EAAAgS,EAAA7C,MAAK4C,GAAKA,EAAE1C,WAAWxS,KACZ,KAAX,QAAfoV,EAAAH,aAAA9R,EAAA8R,EAAMvY,eAASyG,IAAAiS,OAAAjS,EAAAiS,EAAAjX,UAA6B,QAAbkX,EAAAJ,aAAI9R,EAAJ8R,EAAMvY,eAAOyG,IAAAkS,OAAAlS,EAAAkS,EAAE5O,SAASzG,GAAI,IAE7D+E,EAAO4N,EAAStR,KAAI,EAAErB,KAASA,IAC/BsV,EAAW3C,EAAStR,KAAI,EAAEkU,EAAGC,KAAQA,EAAGzY,KACxC0Y,iBC3MNH,EACAI,EACAC,GAEA,OAAOzT,QAAQ8K,IACbsI,EAASjU,KAAKuU,IACZ,MAAMC,EAAY/Y,YAAYgZ,MAC9B,OAAO5T,QAAQyS,KAAK,CAClBiB,EAAE3I,MAAM/G,IAAW,CACjBA,QACAiN,QAASrW,YAAYgZ,MAAQD,OAvBdE,EAyBXL,EAzBsBjQ,EAyBTkQ,EAxBlB,IAAIzT,SAAYC,IACrBC,YAAW,IAAMD,EAAQsD,IAAMsQ,EAAE,KAuBE9I,MAAM/G,IAAW,CAC9CA,QACAiN,QAASrW,YAAYgZ,MAAQD,QA3BvB,IAASE,EAAWtQ,CA6B5B,IAGR,CDwL+BuQ,CAAmBV,GAAUL,aAAA9R,EAAA8R,EAAMrY,UAAW,IAAM+U,GAE3EwB,EAAkC,CAAE,EACpC8C,EAA4D,CAAE,EAEpER,EAAezQ,SAAQ,CAACkB,EAAOgQ,WACV,MAAfhQ,EAAMA,QACR+P,EAAsBlR,EAAKmR,IAAUhQ,EAAMA,MAC3CiN,EAAQpO,EAAKmR,IAAuB,QAAbjT,EAAAiD,EAAMiN,eAAOhQ,IAAAF,EAAAA,EAAI,MAI5C,MAAMmQ,EAAqBtB,EAAoBmE,EAAuBhB,EAAM,IAC5E,MAAO,CAAE9B,UAASC,qBACpB,yBExNI,WAAA+C,CAAYpZ,GACVqZ,KAAKrZ,QAAU,IAAKP,KAAmBO,GAQlC,SAAMsZ,CAAIC,GAEf,OAAOtD,EADc,IAAKoD,KAAKrZ,WAAYuZ,IAGtC,UAAA1D,GACL,OAAOA,IAOF,gBAAAhB,CAAiB5R,EAAawV,GACnCe,EAAuBvW,EAAKwV,4BCZ3BhP,eAA8BgQ,GACjC,IACI,MAAMC,QAAsBzD,EAAajW,GACzC,OAAIyZ,EACO,CAAEvY,KAAMwY,EAAcjC,UAAUjT,WAAY5C,KAAM8X,EAAchD,YAEhEgD,EAAcjC,UAAUjT,WAErC,MAAO4C,GACL,MAAMA,EAEd,6BAvBOqC,iBAEH,aAD4BwM,EAAajW,IACpB0W,UACzB,oCAyBOjN,iBACH,IACI,MAAM2M,QAAEA,EAAOC,mBAAEA,SAA6BE,EAAwBhN,EAAuBvJ,GAE7F,MAAO,IACAqW,EACHD,WAEN,MAAOhP,GACL,MAAMA,EAEd,2FtB3BgB,SAA4CnE,EAAQkG,GAChE,IAAK,CAAC,UAAW,UAAW,uBAAwB,UAAW,UAAW,UAAW,UAAW,kBAAkBO,SAASzG,GACvH,MAAM,IAAI0C,MAAM,kBAAoB1C,GACxC,GAAI,CAAC,UAAW,UAAW,wBAAwByG,SAASzG,MAAUmB,MAAMiR,QAAQlM,KAAUA,EAAMwQ,OAAMC,GAAwB,iBAATA,KACrH,MAAM,IAAIjU,MAAM,0FACpB,GAAI,CAAE,UAAW,WAAW+D,SAASzG,IAAyB,iBAAVkG,EAChD,MAAM,IAAIxD,MAAM,yCACpB3F,EAAQiD,GAAOkG,CACnB"}
|
package/dist/thumbmark.esm.d.ts
CHANGED
package/dist/thumbmark.esm.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
const e={exclude:[],include:[],logging:!0,timeout:5e3,cache_api_call:!0,performance:!1};let n={...e};function t(e,t){if(!["include","exclude","permissions_to_check","retries","timeout","logging","api_key","cache_api_call"].includes(e))throw new Error("Unknown option "+e);if(["include","exclude","permissions_to_check"].includes(e)&&(!Array.isArray(t)||!t.every((e=>"string"==typeof e))))throw new Error("The value of the include, exclude and permissions_to_check must be an array of strings");if(["retries","timeout"].includes(e)&&"number"!=typeof t)throw new Error("The value of retries must be a number");n[e]=t}function r(){if("undefined"==typeof navigator)return{name:"unknown",version:"unknown"};const e=navigator.userAgent,n=[/(?<name>SamsungBrowser)\/(?<version>\d+(?:\.\d+)?)/,/(?<name>Edge|Edg)\/(?<version>\d+(?:\.\d+)?)/,/(?<name>(?:Chrome|Chromium|OPR|Opera|Vivaldi|Brave))\/(?<version>\d+(?:\.\d+)?)/,/(?<name>(?:Firefox|Waterfox|Iceweasel|IceCat))\/(?<version>\d+(?:\.\d+)?)/,/(?<name>Safari)\/(?<version>\d+(?:\.\d+)?)/,/(?<name>MSIE|Trident|IEMobile).+?(?<version>\d+(?:\.\d+)?)/,/(?<name>samsung).*Version\/(?<version>\d+(?:\.\d+)?)/i,/(?<name>[A-Za-z]+)\/(?<version>\d+(?:\.\d+)?)/],t={edg:"Edge",opr:"Opera",samsung:"SamsungBrowser"};for(const r of n){const n=e.match(r);if(n&&n.groups){return{name:t[n.groups.name.toLowerCase()]||n.groups.name,version:n.groups.version}}}return{name:"unknown",version:"unknown"}}function o(e){let n=0;for(let t=0;t<e.length;++t)n+=Math.abs(e[t]);return n}function a(e,n,t){let r=[];for(let n=0;n<e[0].data.length;n++){let t=[];for(let r=0;r<e.length;r++)t.push(e[r].data[n]);r.push(i(t))}const o=new Uint8ClampedArray(r);return new ImageData(o,n,t)}function i(e){if(0===e.length)return 0;const n={};for(const t of e)n[t]=(n[t]||0)+1;let t=e[0];for(const e in n)n[e]>n[t]&&(t=parseInt(e,10));return t}function s(e){return e^=e>>>16,e=Math.imul(e,2246822507),e^=e>>>13,e=Math.imul(e,3266489909),(e^=e>>>16)>>>0}const c=new Uint32Array([597399067,2869860233,951274213,2716044179]);function l(e,n){return e<<n|e>>>32-n}function u(e,n=0){var t;if(n=n?0|n:0,"string"==typeof e&&(t=e,e=(new TextEncoder).encode(t).buffer),!(e instanceof ArrayBuffer))throw new TypeError("Expected key to be ArrayBuffer or string");const r=new Uint32Array([n,n,n,n]);!function(e,n){const t=e.byteLength/16|0,r=new Uint32Array(e,0,4*t);for(let e=0;e<t;e++){const t=r.subarray(4*e,4*(e+1));t[0]=Math.imul(t[0],c[0]),t[0]=l(t[0],15),t[0]=Math.imul(t[0],c[1]),n[0]=n[0]^t[0],n[0]=l(n[0],19),n[0]=n[0]+n[1],n[0]=Math.imul(n[0],5)+1444728091,t[1]=Math.imul(t[1],c[1]),t[1]=l(t[1],16),t[1]=Math.imul(t[1],c[2]),n[1]=n[1]^t[1],n[1]=l(n[1],17),n[1]=n[1]+n[2],n[1]=Math.imul(n[1],5)+197830471,t[2]=Math.imul(t[2],c[2]),t[2]=l(t[2],17),t[2]=Math.imul(t[2],c[3]),n[2]=n[2]^t[2],n[2]=l(n[2],15),n[2]=n[2]+n[3],n[2]=Math.imul(n[2],5)+2530024501,t[3]=Math.imul(t[3],c[3]),t[3]=l(t[3],18),t[3]=Math.imul(t[3],c[0]),n[3]=n[3]^t[3],n[3]=l(n[3],13),n[3]=n[3]+n[0],n[3]=Math.imul(n[3],5)+850148119}}(e,r),function(e,n){const t=e.byteLength/16|0,r=e.byteLength%16,o=new Uint32Array(4),a=new Uint8Array(e,16*t,r);switch(r){case 15:o[3]=o[3]^a[14]<<16;case 14:o[3]=o[3]^a[13]<<8;case 13:o[3]=o[3]^a[12],o[3]=Math.imul(o[3],c[3]),o[3]=l(o[3],18),o[3]=Math.imul(o[3],c[0]),n[3]=n[3]^o[3];case 12:o[2]=o[2]^a[11]<<24;case 11:o[2]=o[2]^a[10]<<16;case 10:o[2]=o[2]^a[9]<<8;case 9:o[2]=o[2]^a[8],o[2]=Math.imul(o[2],c[2]),o[2]=l(o[2],17),o[2]=Math.imul(o[2],c[3]),n[2]=n[2]^o[2];case 8:o[1]=o[1]^a[7]<<24;case 7:o[1]=o[1]^a[6]<<16;case 6:o[1]=o[1]^a[5]<<8;case 5:o[1]=o[1]^a[4],o[1]=Math.imul(o[1],c[1]),o[1]=l(o[1],16),o[1]=Math.imul(o[1],c[2]),n[1]=n[1]^o[1];case 4:o[0]=o[0]^a[3]<<24;case 3:o[0]=o[0]^a[2]<<16;case 2:o[0]=o[0]^a[1]<<8;case 1:o[0]=o[0]^a[0],o[0]=Math.imul(o[0],c[0]),o[0]=l(o[0],15),o[0]=Math.imul(o[0],c[1]),n[0]=n[0]^o[0]}}(e,r),function(e,n){n[0]=n[0]^e.byteLength,n[1]=n[1]^e.byteLength,n[2]=n[2]^e.byteLength,n[3]=n[3]^e.byteLength,n[0]=n[0]+n[1]|0,n[0]=n[0]+n[2]|0,n[0]=n[0]+n[3]|0,n[1]=n[1]+n[0]|0,n[2]=n[2]+n[0]|0,n[3]=n[3]+n[0]|0,n[0]=s(n[0]),n[1]=s(n[1]),n[2]=s(n[2]),n[3]=s(n[3]),n[0]=n[0]+n[1]|0,n[0]=n[0]+n[2]|0,n[0]=n[0]+n[3]|0,n[1]=n[1]+n[0]|0,n[2]=n[2]+n[0]|0,n[3]=n[3]+n[0]|0}(e,r);const o=new Uint8Array(r.buffer);return Array.from(o).map((e=>e.toString(16).padStart(2,"0"))).join("")}const d=r(),m=d.name.toLowerCase(),h=d.version.split(".")[0]||"0",f=parseInt(h,10),g=280;function p(e,n){return new Promise((t=>setTimeout(t,e,n)))}const w=["Arial","Arial Black","Arial Narrow","Arial Rounded MT","Arimo","Archivo","Barlow","Bebas Neue","Bitter","Bookman","Calibri","Cabin","Candara","Century","Century Gothic","Comic Sans MS","Constantia","Courier","Courier New","Crimson Text","DM Mono","DM Sans","DM Serif Display","DM Serif Text","Dosis","Droid Sans","Exo","Fira Code","Fira Sans","Franklin Gothic Medium","Garamond","Geneva","Georgia","Gill Sans","Helvetica","Impact","Inconsolata","Indie Flower","Inter","Josefin Sans","Karla","Lato","Lexend","Lucida Bright","Lucida Console","Lucida Sans Unicode","Manrope","Merriweather","Merriweather Sans","Montserrat","Myriad","Noto Sans","Nunito","Nunito Sans","Open Sans","Optima","Orbitron","Oswald","Pacifico","Palatino","Perpetua","PT Sans","PT Serif","Poppins","Prompt","Public Sans","Quicksand","Rajdhani","Recursive","Roboto","Roboto Condensed","Rockwell","Rubik","Segoe Print","Segoe Script","Segoe UI","Sora","Source Sans Pro","Space Mono","Tahoma","Taviraj","Times","Times New Roman","Titillium Web","Trebuchet MS","Ubuntu","Varela Round","Verdana","Work Sans"],v=["monospace","sans-serif","serif"];function y(e,n){if(!e)throw new Error("Canvas context not supported");return e.font,e.font=`72px ${n}`,e.measureText("WwMmLli0Oo").width}function S(){var e;const n=document.createElement("canvas"),t=null!==(e=n.getContext("webgl"))&&void 0!==e?e:n.getContext("experimental-webgl");if(t&&"getParameter"in t)try{const e=(t.getParameter(t.VENDOR)||"").toString(),n=(t.getParameter(t.RENDERER)||"").toString();let r={vendor:e,renderer:n,version:(t.getParameter(t.VERSION)||"").toString(),shadingLanguageVersion:(t.getParameter(t.SHADING_LANGUAGE_VERSION)||"").toString()};if(!n.length||!e.length){const e=t.getExtension("WEBGL_debug_renderer_info");if(e){const n=(t.getParameter(e.UNMASKED_VENDOR_WEBGL)||"").toString(),o=(t.getParameter(e.UNMASKED_RENDERER_WEBGL)||"").toString();n&&(r.vendorUnmasked=n),o&&(r.rendererUnmasked=o)}}return r}catch(e){}return"undefined"}function b(){const e=new Float32Array(1),n=new Uint8Array(e.buffer);return e[0]=1/0,e[0]=e[0]-e[0],n[3]}const E=(e,n,t,r)=>{const o=(t-n)/r;let a=0;for(let t=0;t<r;t++){a+=e(n+(t+.5)*o)}return a*o};function M(e,n){const t={};return n.forEach((n=>{const r=function(e){if(0===e.length)return null;const n={};e.forEach((e=>{const t=String(e);n[t]=(n[t]||0)+1}));let t=e[0],r=1;return Object.keys(n).forEach((e=>{n[e]>r&&(t=e,r=n[e])})),t}(e.map((e=>n in e?e[n]:void 0)).filter((e=>void 0!==e)));r&&(t[n]=r)})),t}let P;function A(){let e=[];const n={"prefers-contrast":["high","more","low","less","forced","no-preference"],"any-hover":["hover","none"],"any-pointer":["none","coarse","fine"],pointer:["none","coarse","fine"],hover:["hover","none"],update:["fast","slow"],"inverted-colors":["inverted","none"],"prefers-reduced-motion":["reduce","no-preference"],"prefers-reduced-transparency":["reduce","no-preference"],scripting:["none","initial-only","enabled"],"forced-colors":["active","none"]};return Object.keys(n).forEach((t=>{n[t].forEach((n=>{matchMedia(`(${t}: ${n})`).matches&&e.push(`${t}: ${n}`)}))})),e}const C="SamsungBrowser"!==r().name?1:3;let k,x=null;const T={audio:async function(e){const n=r();return["SamsungBrowser","Safari"].includes(n.name)?null:async function(){return new Promise(((e,n)=>{try{const n=44100,t=5e3,r=new(window.OfflineAudioContext||window.webkitOfflineAudioContext)(1,t,n),a=r.createBufferSource(),i=r.createOscillator();i.frequency.value=1e3;const s=r.createDynamicsCompressor();let c;s.threshold.value=-50,s.knee.value=40,s.ratio.value=12,s.attack.value=0,s.release.value=.2,i.connect(s),s.connect(r.destination),i.start(),r.oncomplete=n=>{c=n.renderedBuffer.getChannelData(0),e({sampleHash:o(c),maxChannels:r.destination.maxChannelCount,channelCountMode:a.channelCountMode})},r.startRendering()}catch(e){console.error("Error creating audio fingerprint:",e),n(e)}}))}()},canvas:async function(e){return r(),"firefox"===m||"safari"===m&&f>=17?null:function(){const e=document.createElement("canvas");return e.getContext("2d"),new Promise((e=>{const n=Array.from({length:3},(()=>function(){const e=document.createElement("canvas"),n=e.getContext("2d");if(!n)return new ImageData(1,1);e.width=g,e.height=20;const t=n.createLinearGradient(0,0,e.width,e.height);t.addColorStop(0,"red"),t.addColorStop(1/6,"orange"),t.addColorStop(2/6,"yellow"),t.addColorStop(.5,"green"),t.addColorStop(4/6,"blue"),t.addColorStop(5/6,"indigo"),t.addColorStop(1,"violet"),n.fillStyle=t,n.fillRect(0,0,e.width,e.height);const r="Random Text WMwmil10Oo";n.font="23.123px Arial",n.fillStyle="black",n.fillText(r,-5,15),n.fillStyle="rgba(0, 0, 255, 0.5)",n.fillText(r,-3.3,17.7),n.beginPath(),n.moveTo(0,0),n.lineTo(2*e.width/7,e.height),n.strokeStyle="white",n.lineWidth=2,n.stroke();const o=n.getImageData(0,0,e.width,e.height);return o}()));e({commonPixelsHash:u(a(n,g,20).data.toString()).toString()})}))}()},fonts:async function(e){const n=r();return["Firefox"].includes(n.name)?null:new Promise(((e,n)=>{try{!async function(e){for(var n;!document.body;)await p(50);const t=document.createElement("iframe");t.setAttribute("frameBorder","0");const r=t.style;r.setProperty("position","fixed"),r.setProperty("display","block","important"),r.setProperty("visibility","visible"),r.setProperty("border","0"),r.setProperty("opacity","0"),t.src="about:blank",document.body.appendChild(t);const o=t.contentDocument||(null===(n=t.contentWindow)||void 0===n?void 0:n.document);if(!o)throw new Error("Iframe document is not accessible");e({iframe:o}),setTimeout((()=>{document.body.removeChild(t)}),0)}((async({iframe:n})=>{const t=n.createElement("canvas").getContext("2d"),r=v.map((e=>y(t,e)));let o={};w.forEach((e=>{const n=y(t,e);r.includes(n)||(o[e]=n)})),e(o)}))}catch(e){n({error:"unsupported"})}}))},hardware:function(){return new Promise(((e,n)=>{const t=void 0!==navigator.deviceMemory?navigator.deviceMemory:0,r=window.performance&&window.performance.memory?window.performance.memory:0;e({videocard:S(),architecture:b(),deviceMemory:t.toString()||"undefined",jsHeapSizeLimit:r.jsHeapSizeLimit||0})}))},locales:function(){return new Promise((e=>{e({languages:navigator.language,timezone:Intl.DateTimeFormat().resolvedOptions().timeZone})}))},math:function(){return new Promise((e=>{e({acos:Math.acos(.5),asin:E(Math.asin,-1,1,97),cos:E(Math.cos,0,Math.PI,97),largeCos:Math.cos(1e20),largeSin:Math.sin(1e20),largeTan:Math.tan(1e20),sin:E(Math.sin,-Math.PI,Math.PI,97),tan:E(Math.tan,0,2*Math.PI,97)})}))},permissions:async function(){P=(null==n?void 0:n.permissions_to_check)||["accelerometer","accessibility","accessibility-events","ambient-light-sensor","background-fetch","background-sync","bluetooth","camera","clipboard-read","clipboard-write","device-info","display-capture","gyroscope","geolocation","local-fonts","magnetometer","microphone","midi","nfc","notifications","payment-handler","persistent-storage","push","speaker","storage-access","top-level-storage-access","window-management","query"],"safari"===r().name.toLowerCase()&&(P=P.filter((e=>!["camera","geolocation","microphone"].includes(e))));const e=Array.from({length:(null==n?void 0:n.retries)||3},(()=>async function(){const e={};for(const n of P)try{const t=await navigator.permissions.query({name:n});e[n]=t.state.toString()}catch(e){}return e}()));return Promise.all(e).then((e=>M(e,P)))},plugins:function(){const e=[];if(navigator.plugins)for(let n=0;n<navigator.plugins.length;n++){const t=navigator.plugins[n];e.push([t.name,t.filename,t.description].join("|"))}return new Promise((n=>{n({plugins:e})}))},screen:function(){return new Promise((e=>{e({is_touchscreen:navigator.maxTouchPoints>0,maxTouchPoints:navigator.maxTouchPoints,colorDepth:screen.colorDepth,mediaMatches:A()})}))},system:function(){return new Promise((e=>{const n=r(),t={platform:window.navigator.platform,productSub:navigator.productSub,product:navigator.product,useragent:navigator.userAgent,hardwareConcurrency:navigator.hardwareConcurrency,browser:{name:n.name,version:n.version}};"safari"!==n.name.toLowerCase()&&(t.applePayVersion=function(){if("https:"===window.location.protocol&&"function"==typeof window.ApplePaySession)try{const e=window.ApplePaySession.supportsVersion;for(let n=15;n>0;n--)if(e(n))return n}catch(e){return 0}return 0}(),t.cookieEnabled=window.navigator.cookieEnabled),e(t)}))},webgl:async function(){"undefined"!=typeof document&&(k=document.createElement("canvas"),k.width=200,k.height=100,x=k.getContext("webgl"));try{if(!x)throw new Error("WebGL not supported");const e=Array.from({length:C},(()=>function(){try{if(!x)throw new Error("WebGL not supported");const e="\n attribute vec2 position;\n void main() {\n gl_Position = vec4(position, 0.0, 1.0);\n }\n ",n="\n precision mediump float;\n void main() {\n gl_FragColor = vec4(0.812, 0.195, 0.553, 0.921); // Set line color\n }\n ",t=x.createShader(x.VERTEX_SHADER),r=x.createShader(x.FRAGMENT_SHADER);if(!t||!r)throw new Error("Failed to create shaders");if(x.shaderSource(t,e),x.shaderSource(r,n),x.compileShader(t),!x.getShaderParameter(t,x.COMPILE_STATUS))throw new Error("Vertex shader compilation failed: "+x.getShaderInfoLog(t));if(x.compileShader(r),!x.getShaderParameter(r,x.COMPILE_STATUS))throw new Error("Fragment shader compilation failed: "+x.getShaderInfoLog(r));const o=x.createProgram();if(!o)throw new Error("Failed to create shader program");if(x.attachShader(o,t),x.attachShader(o,r),x.linkProgram(o),!x.getProgramParameter(o,x.LINK_STATUS))throw new Error("Shader program linking failed: "+x.getProgramInfoLog(o));x.useProgram(o);const a=137,i=new Float32Array(4*a),s=2*Math.PI/a;for(let e=0;e<a;e++){const n=e*s;i[4*e]=0,i[4*e+1]=0,i[4*e+2]=Math.cos(n)*(k.width/2),i[4*e+3]=Math.sin(n)*(k.height/2)}const c=x.createBuffer();x.bindBuffer(x.ARRAY_BUFFER,c),x.bufferData(x.ARRAY_BUFFER,i,x.STATIC_DRAW);const l=x.getAttribLocation(o,"position");x.enableVertexAttribArray(l),x.vertexAttribPointer(l,2,x.FLOAT,!1,0,0),x.viewport(0,0,k.width,k.height),x.clearColor(0,0,0,1),x.clear(x.COLOR_BUFFER_BIT),x.drawArrays(x.LINES,0,2*a);const u=new Uint8ClampedArray(k.width*k.height*4);x.readPixels(0,0,k.width,k.height,x.RGBA,x.UNSIGNED_BYTE,u);return new ImageData(u,k.width,k.height)}catch(e){return new ImageData(1,1)}finally{x&&(x.bindBuffer(x.ARRAY_BUFFER,null),x.useProgram(null),x.viewport(0,0,x.drawingBufferWidth,x.drawingBufferHeight),x.clearColor(0,0,0,0))}}()));return{commonPixelsHash:u(a(e,k.width,k.height).data.toString()).toString()}}catch(e){return{webgl:"unsupported"}}}},_={},R={timeout:"true"},L=(e,n,t)=>{_[e]=n};function I(e,n,t=""){const r={},o=(null==n?void 0:n.exclude)||[],a=(null==n?void 0:n.include)||[];for(const[i,s]of Object.entries(e)){const e=t+i+".";if("object"!=typeof s||Array.isArray(s)){const n=o.some((n=>e.startsWith(n))),t=a.some((n=>e.startsWith(n)));n&&!t||(r[i]=s)}else{const t=I(s,n,e);Object.keys(t).length>0&&(r[i]=t)}}return r}function B(){return"1.0.0-rc.0"}let O=null,D=null;async function U(n){const t={...e,...n},r={...T,..._},{elapsed:o,resolvedComponents:a}=await N(r,t),i=t.api_key?((e,n)=>e.cache_api_call&&D?Promise.resolve(D):O||(O=fetch("https://api-dev.thumbmarkjs.com/thumbmark",{method:"POST",headers:{"x-api-key":e.api_key,Authorization:"custom-authorized"},body:JSON.stringify({components:n,clientHash:u(JSON.stringify(n))})}).then((e=>{if(!e.ok)throw new Error(`HTTP error! status: ${e.status}`);return e.json()})).then((e=>(D=e,O=null,e))).catch((e=>(console.error("Error fetching pro data",e),O=null,null))),O))(t,a):null,s=i?await i:null,c=t.performance?{elapsed:o}:{};if(s){return{components:a,info:s.info||{},version:"1.0.0-rc.0",thumbmark:s.thumbmark||"undefined",...c}}return{thumbmark:u(JSON.stringify(a)),components:a,info:{uniqueness:"api only"},version:"1.0.0-rc.0",...c}}async function N(n,t){const r={...e,...t},o=Object.entries(n).filter((([e])=>{var n;return!(null===(n=null==r?void 0:r.exclude)||void 0===n?void 0:n.includes(e))})).filter((([e])=>{var n,t,o,a;return(null===(n=null==r?void 0:r.include)||void 0===n?void 0:n.some((e=>e.includes("."))))?null===(t=null==r?void 0:r.include)||void 0===t?void 0:t.some((n=>n.startsWith(e))):0===(null===(o=null==r?void 0:r.include)||void 0===o?void 0:o.length)||(null===(a=null==r?void 0:r.include)||void 0===a?void 0:a.includes(e))})),a=o.map((([e])=>e)),i=o.map((([e,n])=>n())),s=await function(e,n,t){return Promise.all(e.map((e=>{const r=performance.now();return Promise.race([e.then((e=>({value:e,elapsed:performance.now()-r}))),(o=n,a=t,new Promise((e=>{setTimeout((()=>e(a)),o)}))).then((e=>({value:e,elapsed:performance.now()-r})))]);var o,a})))}(i,(null==r?void 0:r.timeout)||1e3,R),c={},l={};s.forEach(((e,n)=>{var t;null!=e.value&&(l[a[n]]=e.value,c[a[n]]=null!==(t=e.elapsed)&&void 0!==t?t:0)}));const u=I(l,r,"");return{elapsed:c,resolvedComponents:u}}async function F(){return(await U(n)).components}async function G(e){try{const t=await U(n);return e?{hash:t.thumbmark.toString(),data:t.components}:t.thumbmark.toString()}catch(e){throw e}}async function W(){try{const{elapsed:e,resolvedComponents:t}=await N(T,n);return{...t,elapsed:e}}catch(e){throw e}}class V{constructor(n){this.options={...e,...n}}async get(e){return U({...this.options,...e})}getVersion(){return"1.0.0-rc.0"}includeComponent(e,n){L(e,n)}}export{V as Thumbmark,G as getFingerprint,F as getFingerprintData,W as getFingerprintPerformance,U as getThumbmark,B as getVersion,L as includeComponent,t as setOption};
|
|
1
|
+
const e={exclude:[],include:[],logging:!0,timeout:5e3,cache_api_call:!0,performance:!1};let n={...e};function t(e,t){if(!["include","exclude","permissions_to_check","retries","timeout","logging","api_key","cache_api_call"].includes(e))throw new Error("Unknown option "+e);if(["include","exclude","permissions_to_check"].includes(e)&&(!Array.isArray(t)||!t.every((e=>"string"==typeof e))))throw new Error("The value of the include, exclude and permissions_to_check must be an array of strings");if(["retries","timeout"].includes(e)&&"number"!=typeof t)throw new Error("The value of retries must be a number");n[e]=t}function r(){if("undefined"==typeof navigator)return{name:"unknown",version:"unknown"};const e=navigator.userAgent,n=[/(?<name>SamsungBrowser)\/(?<version>\d+(?:\.\d+)?)/,/(?<name>Edge|Edg)\/(?<version>\d+(?:\.\d+)?)/,/(?<name>(?:Chrome|Chromium|OPR|Opera|Vivaldi|Brave))\/(?<version>\d+(?:\.\d+)?)/,/(?<name>(?:Firefox|Waterfox|Iceweasel|IceCat))\/(?<version>\d+(?:\.\d+)?)/,/(?<name>Safari)\/(?<version>\d+(?:\.\d+)?)/,/(?<name>MSIE|Trident|IEMobile).+?(?<version>\d+(?:\.\d+)?)/,/(?<name>samsung).*Version\/(?<version>\d+(?:\.\d+)?)/i,/(?<name>[A-Za-z]+)\/(?<version>\d+(?:\.\d+)?)/],t={edg:"Edge",opr:"Opera",samsung:"SamsungBrowser"};for(const r of n){const n=e.match(r);if(n&&n.groups){return{name:t[n.groups.name.toLowerCase()]||n.groups.name,version:n.groups.version}}}return{name:"unknown",version:"unknown"}}function o(e){let n=0;for(let t=0;t<e.length;++t)n+=Math.abs(e[t]);return n}function a(e,n,t){let r=[];for(let n=0;n<e[0].data.length;n++){let t=[];for(let r=0;r<e.length;r++)t.push(e[r].data[n]);r.push(i(t))}const o=new Uint8ClampedArray(r);return new ImageData(o,n,t)}function i(e){if(0===e.length)return 0;const n={};for(const t of e)n[t]=(n[t]||0)+1;let t=e[0];for(const e in n)n[e]>n[t]&&(t=parseInt(e,10));return t}function s(e){return e^=e>>>16,e=Math.imul(e,2246822507),e^=e>>>13,e=Math.imul(e,3266489909),(e^=e>>>16)>>>0}const c=new Uint32Array([597399067,2869860233,951274213,2716044179]);function l(e,n){return e<<n|e>>>32-n}function u(e,n=0){var t;if(n=n?0|n:0,"string"==typeof e&&(t=e,e=(new TextEncoder).encode(t).buffer),!(e instanceof ArrayBuffer))throw new TypeError("Expected key to be ArrayBuffer or string");const r=new Uint32Array([n,n,n,n]);!function(e,n){const t=e.byteLength/16|0,r=new Uint32Array(e,0,4*t);for(let e=0;e<t;e++){const t=r.subarray(4*e,4*(e+1));t[0]=Math.imul(t[0],c[0]),t[0]=l(t[0],15),t[0]=Math.imul(t[0],c[1]),n[0]=n[0]^t[0],n[0]=l(n[0],19),n[0]=n[0]+n[1],n[0]=Math.imul(n[0],5)+1444728091,t[1]=Math.imul(t[1],c[1]),t[1]=l(t[1],16),t[1]=Math.imul(t[1],c[2]),n[1]=n[1]^t[1],n[1]=l(n[1],17),n[1]=n[1]+n[2],n[1]=Math.imul(n[1],5)+197830471,t[2]=Math.imul(t[2],c[2]),t[2]=l(t[2],17),t[2]=Math.imul(t[2],c[3]),n[2]=n[2]^t[2],n[2]=l(n[2],15),n[2]=n[2]+n[3],n[2]=Math.imul(n[2],5)+2530024501,t[3]=Math.imul(t[3],c[3]),t[3]=l(t[3],18),t[3]=Math.imul(t[3],c[0]),n[3]=n[3]^t[3],n[3]=l(n[3],13),n[3]=n[3]+n[0],n[3]=Math.imul(n[3],5)+850148119}}(e,r),function(e,n){const t=e.byteLength/16|0,r=e.byteLength%16,o=new Uint32Array(4),a=new Uint8Array(e,16*t,r);switch(r){case 15:o[3]=o[3]^a[14]<<16;case 14:o[3]=o[3]^a[13]<<8;case 13:o[3]=o[3]^a[12],o[3]=Math.imul(o[3],c[3]),o[3]=l(o[3],18),o[3]=Math.imul(o[3],c[0]),n[3]=n[3]^o[3];case 12:o[2]=o[2]^a[11]<<24;case 11:o[2]=o[2]^a[10]<<16;case 10:o[2]=o[2]^a[9]<<8;case 9:o[2]=o[2]^a[8],o[2]=Math.imul(o[2],c[2]),o[2]=l(o[2],17),o[2]=Math.imul(o[2],c[3]),n[2]=n[2]^o[2];case 8:o[1]=o[1]^a[7]<<24;case 7:o[1]=o[1]^a[6]<<16;case 6:o[1]=o[1]^a[5]<<8;case 5:o[1]=o[1]^a[4],o[1]=Math.imul(o[1],c[1]),o[1]=l(o[1],16),o[1]=Math.imul(o[1],c[2]),n[1]=n[1]^o[1];case 4:o[0]=o[0]^a[3]<<24;case 3:o[0]=o[0]^a[2]<<16;case 2:o[0]=o[0]^a[1]<<8;case 1:o[0]=o[0]^a[0],o[0]=Math.imul(o[0],c[0]),o[0]=l(o[0],15),o[0]=Math.imul(o[0],c[1]),n[0]=n[0]^o[0]}}(e,r),function(e,n){n[0]=n[0]^e.byteLength,n[1]=n[1]^e.byteLength,n[2]=n[2]^e.byteLength,n[3]=n[3]^e.byteLength,n[0]=n[0]+n[1]|0,n[0]=n[0]+n[2]|0,n[0]=n[0]+n[3]|0,n[1]=n[1]+n[0]|0,n[2]=n[2]+n[0]|0,n[3]=n[3]+n[0]|0,n[0]=s(n[0]),n[1]=s(n[1]),n[2]=s(n[2]),n[3]=s(n[3]),n[0]=n[0]+n[1]|0,n[0]=n[0]+n[2]|0,n[0]=n[0]+n[3]|0,n[1]=n[1]+n[0]|0,n[2]=n[2]+n[0]|0,n[3]=n[3]+n[0]|0}(e,r);const o=new Uint8Array(r.buffer);return Array.from(o).map((e=>e.toString(16).padStart(2,"0"))).join("")}const d=r(),m=d.name.toLowerCase(),h=d.version.split(".")[0]||"0",f=parseInt(h,10),g=280;function p(e,n){return new Promise((t=>setTimeout(t,e,n)))}const w=["Arial","Arial Black","Arial Narrow","Arial Rounded MT","Arimo","Archivo","Barlow","Bebas Neue","Bitter","Bookman","Calibri","Cabin","Candara","Century","Century Gothic","Comic Sans MS","Constantia","Courier","Courier New","Crimson Text","DM Mono","DM Sans","DM Serif Display","DM Serif Text","Dosis","Droid Sans","Exo","Fira Code","Fira Sans","Franklin Gothic Medium","Garamond","Geneva","Georgia","Gill Sans","Helvetica","Impact","Inconsolata","Indie Flower","Inter","Josefin Sans","Karla","Lato","Lexend","Lucida Bright","Lucida Console","Lucida Sans Unicode","Manrope","Merriweather","Merriweather Sans","Montserrat","Myriad","Noto Sans","Nunito","Nunito Sans","Open Sans","Optima","Orbitron","Oswald","Pacifico","Palatino","Perpetua","PT Sans","PT Serif","Poppins","Prompt","Public Sans","Quicksand","Rajdhani","Recursive","Roboto","Roboto Condensed","Rockwell","Rubik","Segoe Print","Segoe Script","Segoe UI","Sora","Source Sans Pro","Space Mono","Tahoma","Taviraj","Times","Times New Roman","Titillium Web","Trebuchet MS","Ubuntu","Varela Round","Verdana","Work Sans"],v=["monospace","sans-serif","serif"];function y(e,n){if(!e)throw new Error("Canvas context not supported");return e.font,e.font=`72px ${n}`,e.measureText("WwMmLli0Oo").width}function S(){var e;const n=document.createElement("canvas"),t=null!==(e=n.getContext("webgl"))&&void 0!==e?e:n.getContext("experimental-webgl");if(t&&"getParameter"in t)try{const e=(t.getParameter(t.VENDOR)||"").toString(),n=(t.getParameter(t.RENDERER)||"").toString();let r={vendor:e,renderer:n,version:(t.getParameter(t.VERSION)||"").toString(),shadingLanguageVersion:(t.getParameter(t.SHADING_LANGUAGE_VERSION)||"").toString()};if(!n.length||!e.length){const e=t.getExtension("WEBGL_debug_renderer_info");if(e){const n=(t.getParameter(e.UNMASKED_VENDOR_WEBGL)||"").toString(),o=(t.getParameter(e.UNMASKED_RENDERER_WEBGL)||"").toString();n&&(r.vendorUnmasked=n),o&&(r.rendererUnmasked=o)}}return r}catch(e){}return"undefined"}function b(){const e=new Float32Array(1),n=new Uint8Array(e.buffer);return e[0]=1/0,e[0]=e[0]-e[0],n[3]}const E=(e,n,t,r)=>{const o=(t-n)/r;let a=0;for(let t=0;t<r;t++){a+=e(n+(t+.5)*o)}return a*o};function P(e,n){const t={};return n.forEach((n=>{const r=function(e){if(0===e.length)return null;const n={};e.forEach((e=>{const t=String(e);n[t]=(n[t]||0)+1}));let t=e[0],r=1;return Object.keys(n).forEach((e=>{n[e]>r&&(t=e,r=n[e])})),t}(e.map((e=>n in e?e[n]:void 0)).filter((e=>void 0!==e)));r&&(t[n]=r)})),t}const M=["accelerometer","accessibility","accessibility-events","ambient-light-sensor","background-fetch","background-sync","bluetooth","camera","clipboard-read","clipboard-write","device-info","display-capture","gyroscope","geolocation","local-fonts","magnetometer","microphone","midi","nfc","notifications","payment-handler","persistent-storage","push","speaker","storage-access","top-level-storage-access","window-management","query"];function A(){let e=[];const n={"prefers-contrast":["high","more","low","less","forced","no-preference"],"any-hover":["hover","none"],"any-pointer":["none","coarse","fine"],pointer:["none","coarse","fine"],hover:["hover","none"],update:["fast","slow"],"inverted-colors":["inverted","none"],"prefers-reduced-motion":["reduce","no-preference"],"prefers-reduced-transparency":["reduce","no-preference"],scripting:["none","initial-only","enabled"],"forced-colors":["active","none"]};return Object.keys(n).forEach((t=>{n[t].forEach((n=>{matchMedia(`(${t}: ${n})`).matches&&e.push(`${t}: ${n}`)}))})),e}const C="SamsungBrowser"!==r().name?1:3;let k,x=null;const T={audio:async function(e){const n=r();return["SamsungBrowser","Safari"].includes(n.name)?null:async function(){return new Promise(((e,n)=>{try{const n=44100,t=5e3,r=new(window.OfflineAudioContext||window.webkitOfflineAudioContext)(1,t,n),a=r.createBufferSource(),i=r.createOscillator();i.frequency.value=1e3;const s=r.createDynamicsCompressor();let c;s.threshold.value=-50,s.knee.value=40,s.ratio.value=12,s.attack.value=0,s.release.value=.2,i.connect(s),s.connect(r.destination),i.start(),r.oncomplete=n=>{c=n.renderedBuffer.getChannelData(0),e({sampleHash:o(c),maxChannels:r.destination.maxChannelCount,channelCountMode:a.channelCountMode})},r.startRendering()}catch(e){console.error("Error creating audio fingerprint:",e),n(e)}}))}()},canvas:async function(e){return r(),"firefox"===m||"safari"===m&&f>=17?null:function(){const e=document.createElement("canvas");return e.getContext("2d"),new Promise((e=>{const n=Array.from({length:3},(()=>function(){const e=document.createElement("canvas"),n=e.getContext("2d");if(!n)return new ImageData(1,1);e.width=g,e.height=20;const t=n.createLinearGradient(0,0,e.width,e.height);t.addColorStop(0,"red"),t.addColorStop(1/6,"orange"),t.addColorStop(2/6,"yellow"),t.addColorStop(.5,"green"),t.addColorStop(4/6,"blue"),t.addColorStop(5/6,"indigo"),t.addColorStop(1,"violet"),n.fillStyle=t,n.fillRect(0,0,e.width,e.height);const r="Random Text WMwmil10Oo";n.font="23.123px Arial",n.fillStyle="black",n.fillText(r,-5,15),n.fillStyle="rgba(0, 0, 255, 0.5)",n.fillText(r,-3.3,17.7),n.beginPath(),n.moveTo(0,0),n.lineTo(2*e.width/7,e.height),n.strokeStyle="white",n.lineWidth=2,n.stroke();const o=n.getImageData(0,0,e.width,e.height);return o}()));e({commonPixelsHash:u(a(n,g,20).data.toString()).toString()})}))}()},fonts:async function(e){const n=r();return["Firefox"].includes(n.name)?null:new Promise(((e,n)=>{try{!async function(e){for(var n;!document.body;)await p(50);const t=document.createElement("iframe");t.setAttribute("frameBorder","0");const r=t.style;r.setProperty("position","fixed"),r.setProperty("display","block","important"),r.setProperty("visibility","visible"),r.setProperty("border","0"),r.setProperty("opacity","0"),t.src="about:blank",document.body.appendChild(t);const o=t.contentDocument||(null===(n=t.contentWindow)||void 0===n?void 0:n.document);if(!o)throw new Error("Iframe document is not accessible");e({iframe:o}),setTimeout((()=>{document.body.removeChild(t)}),0)}((async({iframe:n})=>{const t=n.createElement("canvas").getContext("2d"),r=v.map((e=>y(t,e)));let o={};w.forEach((e=>{const n=y(t,e);r.includes(n)||(o[e]=n)})),e(o)}))}catch(e){n({error:"unsupported"})}}))},hardware:function(){return new Promise(((e,n)=>{const t=void 0!==navigator.deviceMemory?navigator.deviceMemory:0,r=window.performance&&window.performance.memory?window.performance.memory:0;e({videocard:S(),architecture:b(),deviceMemory:t.toString()||"undefined",jsHeapSizeLimit:r.jsHeapSizeLimit||0})}))},locales:function(){return new Promise((e=>{e({languages:navigator.language,timezone:Intl.DateTimeFormat().resolvedOptions().timeZone})}))},math:function(){return new Promise((e=>{e({acos:Math.acos(.5),asin:E(Math.asin,-1,1,97),cos:E(Math.cos,0,Math.PI,97),largeCos:Math.cos(1e20),largeSin:Math.sin(1e20),largeTan:Math.tan(1e20),sin:E(Math.sin,-Math.PI,Math.PI,97),tan:E(Math.tan,0,2*Math.PI,97)})}))},permissions:async function(e){let n=(null==e?void 0:e.permissions_to_check)||M;"safari"===r().name.toLowerCase()&&(n=n.filter((e=>!["camera","geolocation","microphone"].includes(e))));const t=Array.from({length:3},(()=>async function(e){const n={};for(const t of e)try{const e=await navigator.permissions.query({name:t});n[t]=e.state.toString()}catch(e){}return n}(n)));return Promise.all(t).then((e=>P(e,n)))},plugins:function(){const e=[];if(navigator.plugins)for(let n=0;n<navigator.plugins.length;n++){const t=navigator.plugins[n];e.push([t.name,t.filename,t.description].join("|"))}return new Promise((n=>{n({plugins:e})}))},screen:function(){return new Promise((e=>{e({is_touchscreen:navigator.maxTouchPoints>0,maxTouchPoints:navigator.maxTouchPoints,colorDepth:screen.colorDepth,mediaMatches:A()})}))},system:function(){return new Promise((e=>{const n=r(),t={platform:window.navigator.platform,productSub:navigator.productSub,product:navigator.product,useragent:navigator.userAgent,hardwareConcurrency:navigator.hardwareConcurrency,browser:{name:n.name,version:n.version}};"safari"!==n.name.toLowerCase()&&(t.applePayVersion=function(){if("https:"===window.location.protocol&&"function"==typeof window.ApplePaySession)try{const e=window.ApplePaySession.supportsVersion;for(let n=15;n>0;n--)if(e(n))return n}catch(e){return 0}return 0}(),t.cookieEnabled=window.navigator.cookieEnabled),e(t)}))},webgl:async function(){"undefined"!=typeof document&&(k=document.createElement("canvas"),k.width=200,k.height=100,x=k.getContext("webgl"));try{if(!x)throw new Error("WebGL not supported");const e=Array.from({length:C},(()=>function(){try{if(!x)throw new Error("WebGL not supported");const e="\n attribute vec2 position;\n void main() {\n gl_Position = vec4(position, 0.0, 1.0);\n }\n ",n="\n precision mediump float;\n void main() {\n gl_FragColor = vec4(0.812, 0.195, 0.553, 0.921); // Set line color\n }\n ",t=x.createShader(x.VERTEX_SHADER),r=x.createShader(x.FRAGMENT_SHADER);if(!t||!r)throw new Error("Failed to create shaders");if(x.shaderSource(t,e),x.shaderSource(r,n),x.compileShader(t),!x.getShaderParameter(t,x.COMPILE_STATUS))throw new Error("Vertex shader compilation failed: "+x.getShaderInfoLog(t));if(x.compileShader(r),!x.getShaderParameter(r,x.COMPILE_STATUS))throw new Error("Fragment shader compilation failed: "+x.getShaderInfoLog(r));const o=x.createProgram();if(!o)throw new Error("Failed to create shader program");if(x.attachShader(o,t),x.attachShader(o,r),x.linkProgram(o),!x.getProgramParameter(o,x.LINK_STATUS))throw new Error("Shader program linking failed: "+x.getProgramInfoLog(o));x.useProgram(o);const a=137,i=new Float32Array(4*a),s=2*Math.PI/a;for(let e=0;e<a;e++){const n=e*s;i[4*e]=0,i[4*e+1]=0,i[4*e+2]=Math.cos(n)*(k.width/2),i[4*e+3]=Math.sin(n)*(k.height/2)}const c=x.createBuffer();x.bindBuffer(x.ARRAY_BUFFER,c),x.bufferData(x.ARRAY_BUFFER,i,x.STATIC_DRAW);const l=x.getAttribLocation(o,"position");x.enableVertexAttribArray(l),x.vertexAttribPointer(l,2,x.FLOAT,!1,0,0),x.viewport(0,0,k.width,k.height),x.clearColor(0,0,0,1),x.clear(x.COLOR_BUFFER_BIT),x.drawArrays(x.LINES,0,2*a);const u=new Uint8ClampedArray(k.width*k.height*4);x.readPixels(0,0,k.width,k.height,x.RGBA,x.UNSIGNED_BYTE,u);return new ImageData(u,k.width,k.height)}catch(e){return new ImageData(1,1)}finally{x&&(x.bindBuffer(x.ARRAY_BUFFER,null),x.useProgram(null),x.viewport(0,0,x.drawingBufferWidth,x.drawingBufferHeight),x.clearColor(0,0,0,0))}}()));return{commonPixelsHash:u(a(e,k.width,k.height).data.toString()).toString()}}catch(e){return{webgl:"unsupported"}}}},_={},R={timeout:"true"},L=(e,n,t)=>{_[e]=n};var I="1.0.0-rc.1";function O(e,n,t=""){const r={},o=(null==n?void 0:n.exclude)||[],a=(null==n?void 0:n.include)||[];for(const[i,s]of Object.entries(e)){const e=t+i+".";if("object"!=typeof s||Array.isArray(s)){const n=o.some((n=>e.startsWith(n))),t=a.some((n=>e.startsWith(n)));n&&!t||(r[i]=s)}else{const t=O(s,n,e);Object.keys(t).length>0&&(r[i]=t)}}return r}function B(){return I}let D=null,N=null;async function U(n){const t={...e,...n},r={...T,..._},{elapsed:o,resolvedComponents:a}=await F(r,t),i=t.api_key?((e,n)=>{if(e.cache_api_call&&N)return Promise.resolve(N);if(D)return D;const t=fetch("https://api-dev.thumbmarkjs.com/thumbmark",{method:"POST",headers:{"x-api-key":e.api_key,Authorization:"custom-authorized"},body:JSON.stringify({components:n,clientHash:u(JSON.stringify(n))})}).then((e=>{if(!e.ok)throw new Error(`HTTP error! status: ${e.status}`);return e.json()})).then((e=>(N=e,D=null,e))).catch((e=>(console.error("Error fetching pro data",e),D=null,null))),r=e.timeout||5e3,o=new Promise((e=>{setTimeout((()=>{e({thumbmark:u(JSON.stringify(n)),info:{timed_out:!0},version:I})}),r)}));return D=Promise.race([t,o]),D})(t,a):null,s=i?await i:null,c=t.performance?{elapsed:o}:{};if(s){return{components:a,info:s.info||{},version:B(),thumbmark:s.thumbmark||"undefined",...c}}return{thumbmark:u(JSON.stringify(a)),components:a,info:{uniqueness:"api only"},version:B(),...c}}async function F(n,t){const r={...e,...t},o=Object.entries(n).filter((([e])=>{var n;return!(null===(n=null==r?void 0:r.exclude)||void 0===n?void 0:n.includes(e))})).filter((([e])=>{var n,t,o,a;return(null===(n=null==r?void 0:r.include)||void 0===n?void 0:n.some((e=>e.includes("."))))?null===(t=null==r?void 0:r.include)||void 0===t?void 0:t.some((n=>n.startsWith(e))):0===(null===(o=null==r?void 0:r.include)||void 0===o?void 0:o.length)||(null===(a=null==r?void 0:r.include)||void 0===a?void 0:a.includes(e))})),a=o.map((([e])=>e)),i=o.map((([e,n])=>n(t))),s=await function(e,n,t){return Promise.all(e.map((e=>{const r=performance.now();return Promise.race([e.then((e=>({value:e,elapsed:performance.now()-r}))),(o=n,a=t,new Promise((e=>{setTimeout((()=>e(a)),o)}))).then((e=>({value:e,elapsed:performance.now()-r})))]);var o,a})))}(i,(null==r?void 0:r.timeout)||5e3,R),c={},l={};s.forEach(((e,n)=>{var t;null!=e.value&&(l[a[n]]=e.value,c[a[n]]=null!==(t=e.elapsed)&&void 0!==t?t:0)}));const u=O(l,r,"");return{elapsed:c,resolvedComponents:u}}async function G(){return(await U(n)).components}async function W(e){try{const t=await U(n);return e?{hash:t.thumbmark.toString(),data:t.components}:t.thumbmark.toString()}catch(e){throw e}}async function V(){try{const{elapsed:e,resolvedComponents:t}=await F(T,n);return{...t,elapsed:e}}catch(e){throw e}}class j{constructor(n){this.options={...e,...n}}async get(e){return U({...this.options,...e})}getVersion(){return B()}includeComponent(e,n){L(e,n)}}export{j as Thumbmark,W as getFingerprint,G as getFingerprintData,V as getFingerprintPerformance,U as getThumbmark,B as getVersion,L as includeComponent,t as setOption};
|
|
2
2
|
//# sourceMappingURL=thumbmark.esm.js.map
|