@incodetech/core 2.1.1 → 2.2.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.
Files changed (328) hide show
  1. package/dist/{3dAvatarProvider-BwOmTMOy.esm.js → 3dAvatarProvider-g02DTFqT.esm.js} +811 -880
  2. package/dist/Actor-iTq7YY48.d.ts +1 -0
  3. package/dist/BrowserDiagnosticsCryptoProvider-BwGL3Lmi.esm.js +95 -0
  4. package/dist/BrowserLazyImportProvider-BhoA957O.esm.js +114 -0
  5. package/dist/{BrowserStorageProvider-CBHBhKQN.esm.js → BrowserStorageProvider-k-FDkC4W.esm.js} +2 -4
  6. package/dist/{BrowserTimerProvider-CHloo0eQ.esm.js → BrowserTimerProvider-BXhgNxLt.esm.js} +1 -2
  7. package/dist/{BrowserVisibilityObserverProvider-GBS6XSii.esm.js → BrowserVisibilityObserverProvider-BX1BiLDK.esm.js} +1 -2
  8. package/dist/Face2DProvider-UUQt_vRC.esm.js +437 -0
  9. package/dist/{createFaceAvatar-CpdYp9Iy.d.ts → FaceDetectionProvider-Mh6q3EbA.d.ts} +107 -159
  10. package/dist/IBrowserEnvironmentCapability-DEaRRk-R.esm.js +9 -0
  11. package/dist/IFaceAvatarCapability-BrL19G0s.d.ts +23 -0
  12. package/dist/IFeatureManagementCapability-DdEUp6tB.d.ts +1125 -0
  13. package/dist/IIdCaptureCapability-DHTT3FC2.d.ts +237 -0
  14. package/dist/IStorageCapability-ORkQfK3F.d.ts +242 -0
  15. package/dist/{ITimerCapability-DJ73P4RK.esm.js → ITimerCapability-DgdDzp8G.esm.js} +1 -2
  16. package/dist/{Manager-goNPc_h_.d.ts → Manager-CQQ99QOI.d.ts} +1 -0
  17. package/dist/{MotionSensorProvider-BHuHoYvJ.esm.js → MotionSensorProvider-DGiV77J_.esm.js} +2 -37
  18. package/dist/{OpenViduRecordingProvider-CK6A5kiU.esm.js → OpenViduRecordingProvider-Du98qevC.esm.js} +2 -4
  19. package/dist/PrivacyLensProvider-D8PS7AJa.esm.js +405 -0
  20. package/dist/StateMachine-EDpYWy0i.d.ts +6 -0
  21. package/dist/{StreamCanvasCapture-CAqUdVkM.esm.js → StreamCanvasCapture-D2XcXCZ4.esm.js} +2 -4
  22. package/dist/{addressSearch-D7msRieq.esm.js → addressSearch-DQyrvDQj.esm.js} +10 -21
  23. package/dist/ae-signature.d.ts +4 -6
  24. package/dist/ae-signature.esm.js +10 -11
  25. package/dist/antifraud.d.ts +1 -6
  26. package/dist/antifraud.esm.js +3 -8
  27. package/dist/{antifraudManager-5KA84wtF.esm.js → antifraudManager-B8Plzf7a.esm.js} +11 -8
  28. package/dist/{antifraudManager-DCiNI6np.d.ts → antifraudManager-BY36bS12.d.ts} +3 -3
  29. package/dist/{antifraudStateMachine-BQVw46N5.esm.js → antifraudStateMachine-r4VxSBS4.esm.js} +5 -7
  30. package/dist/api-Bx3gKW_y.esm.js +129 -0
  31. package/dist/{apiError-DkOXfFBu.esm.js → apiError-oiEnJIlk.esm.js} +25 -3
  32. package/dist/authentication.d.ts +3 -19
  33. package/dist/authentication.esm.js +3 -35
  34. package/dist/{authenticationManager-BeT6tNZm.d.ts → authenticationManager-BBMGTcwW.d.ts} +3 -4
  35. package/dist/{authenticationManager-BryLnSaF.esm.js → authenticationManager-Dq_tudSW.esm.js} +7 -10
  36. package/dist/{authenticationStateMachine-DbdxfGHx.esm.js → authenticationStateMachine-D4koAtP3.esm.js} +11 -15
  37. package/dist/avatar.d.ts +2 -2
  38. package/dist/avatar.esm.js +2 -3
  39. package/dist/avatar2dWarm-DqucNFX4.esm.js +1330 -0
  40. package/dist/avatarStats-CdUOb3VD.esm.js +136 -0
  41. package/dist/{backCameraStream-ChrMTJv-.esm.js → backCameraStream-CUeYm5eu.esm.js} +20 -8
  42. package/dist/browser-DlFgHpoC-DnyrCR8r.esm.js +1513 -0
  43. package/dist/callback-645_omgz.d.ts +133 -0
  44. package/dist/camera-_2sXMXiF.esm.js +140 -0
  45. package/dist/camera.d.ts +19 -2
  46. package/dist/camera.esm.js +2 -6
  47. package/dist/{canvas-Pi10hG_l.esm.js → canvas-E1zGkel4.esm.js} +1 -2
  48. package/dist/certificate-issuance.d.ts +34 -39
  49. package/dist/certificate-issuance.esm.js +4 -11
  50. package/dist/{certificateIssuanceStateMachine-DlZQT1_u.esm.js → certificateIssuanceStateMachine-COd7_l2T.esm.js} +7 -11
  51. package/dist/consent.d.ts +1 -4
  52. package/dist/consent.esm.js +3 -8
  53. package/dist/{consentManager-BwNu-uC-.esm.js → consentManager-BApTlfA0.esm.js} +5 -7
  54. package/dist/{consentManager-B4PMGXW-.d.ts → consentManager-uhDPdU6i.d.ts} +55 -61
  55. package/dist/{consentStateMachine-BOkVFiU7.esm.js → consentStateMachine-WD-S-Yhs.esm.js} +5 -7
  56. package/dist/{cpf-16m_cGAM.esm.js → cpf-BIADjddF.esm.js} +1 -2
  57. package/dist/createFaceAvatar-BEj18KXi.d.ts +50 -0
  58. package/dist/createFaceAvatar-DQKaRise.esm.js +103 -0
  59. package/dist/cross-document-data-match.d.ts +2 -26
  60. package/dist/cross-document-data-match.esm.js +2 -71
  61. package/dist/crossDocumentDataMatchManager-Dq8Z3SOg.d.ts +41 -0
  62. package/dist/crossDocumentDataMatchManager-OmYvyung.esm.js +84 -0
  63. package/dist/curp-validation.d.ts +1 -11
  64. package/dist/curp-validation.esm.js +3 -8
  65. package/dist/{curpValidationManager-CoqODZx5.d.ts → curpValidationManager-DVGr7Fq7.d.ts} +4 -6
  66. package/dist/{curpValidationManager-Cbji2inV.esm.js → curpValidationManager-UZxcrsrz.esm.js} +11 -7
  67. package/dist/{curpValidationStateMachine-Dlw4qfFb.esm.js → curpValidationStateMachine-9KwnqeoB.esm.js} +22 -14
  68. package/dist/custom-fields.d.ts +2 -5
  69. package/dist/custom-fields.esm.js +24 -11
  70. package/dist/custom-watchlist.d.ts +1 -3
  71. package/dist/custom-watchlist.esm.js +11 -10
  72. package/dist/{customWatchlistStateMachine-D8w0mNxm.esm.js → customWatchlistStateMachine-B_ey3TFj.esm.js} +5 -7
  73. package/dist/{dateUtils-BW6mBV6p.esm.js → dateUtils-CvG0FvK8.esm.js} +1 -2
  74. package/dist/{deepsightService-CViys6T4.esm.js → deepsightLoader-CWE0SvF1.esm.js} +68 -14
  75. package/dist/{deepsightService-BuTOFTr8.d.ts → deepsightService-DLVQS_RH.d.ts} +41 -2
  76. package/dist/device.d.ts +10 -2
  77. package/dist/device.esm.js +21 -21
  78. package/dist/document-capture.d.ts +3 -1816
  79. package/dist/document-capture.esm.js +3 -245
  80. package/dist/document-upload.d.ts +48 -55
  81. package/dist/document-upload.esm.js +8 -14
  82. package/dist/documentCaptureManager-B3t0ydtg.d.ts +2062 -0
  83. package/dist/documentCaptureManager-DszmcU-l.esm.js +296 -0
  84. package/dist/{documentCaptureStateMachine-BkTvU3yq.esm.js → documentCaptureStateMachine-D2jBwwVb.esm.js} +66 -40
  85. package/dist/dynamic-forms.d.ts +2 -4
  86. package/dist/dynamic-forms.esm.js +3 -9
  87. package/dist/{dynamicFormsManager-CHXUBNs4.esm.js → dynamicFormsManager-B-OmpJkU.esm.js} +48 -9
  88. package/dist/{dynamicFormsManager-CKZkE7Wo.d.ts → dynamicFormsManager-fhK0yINk.d.ts} +22 -46
  89. package/dist/{dynamicFormsStateMachine-DJ1HGZff.esm.js → dynamicFormsStateMachine-D_3oLtOE.esm.js} +161 -34
  90. package/dist/ekyb.d.ts +5 -137
  91. package/dist/ekyb.esm.js +4 -179
  92. package/dist/ekybManager-BJVp2ahf.esm.js +178 -0
  93. package/dist/ekybManager-Dzswb_b8.d.ts +114 -0
  94. package/dist/{ekybStateMachine-D9GzA4MW.esm.js → ekybStateMachine-BYcc9VaR.esm.js} +16 -193
  95. package/dist/ekyc.d.ts +2 -79
  96. package/dist/ekyc.esm.js +4 -154
  97. package/dist/ekycManager-BFpHbBoT.d.ts +97 -0
  98. package/dist/ekycManager-oTstTJuL.esm.js +156 -0
  99. package/dist/{ekycStateMachine-DnVRiu3s.esm.js → ekycStateMachine-DHvksnrr.esm.js} +141 -423
  100. package/dist/ekycUtils-Dew1rBG0.esm.js +223 -0
  101. package/dist/electronic-signature.d.ts +3 -5
  102. package/dist/electronic-signature.esm.js +2 -10
  103. package/dist/{electronicSignatureManager-DESRgObX.esm.js → electronicSignatureManager-CApcBEQd.esm.js} +47 -33
  104. package/dist/{index-36QX_21w.d.ts → electronicSignatureManager-CcUXQZS7.d.ts} +220 -251
  105. package/dist/email.d.ts +1 -5
  106. package/dist/email.esm.js +3 -10
  107. package/dist/{emailManager-CMS4q_r6.d.ts → emailManager-CADXW_9X.d.ts} +4 -7
  108. package/dist/{emailManager-B9Vrv3Ma.esm.js → emailManager-tE-YvNtS.esm.js} +76 -12
  109. package/dist/{emailStateMachine-CbmKFVSi.esm.js → emailStateMachine-Bm894MHB.esm.js} +7 -9
  110. package/dist/{endpoints-CwrFQfW7.esm.js → endpoints-CCzL3XD_.esm.js} +55 -6
  111. package/dist/{events-1wxZ97yf.esm.js → events-CxfNJVZW.esm.js} +43 -176
  112. package/dist/events.d.ts +28 -10
  113. package/dist/events.esm.js +2 -4
  114. package/dist/extensibility.d.ts +37 -37
  115. package/dist/extensibility.esm.js +31 -80
  116. package/dist/{externalFetch-hvmz_npP.esm.js → externalFetch-BKBThAUC.esm.js} +2 -4
  117. package/dist/face-match.d.ts +2 -225
  118. package/dist/face-match.esm.js +3 -173
  119. package/dist/{faceCaptureManagerFactory-C9TiGbkA.esm.js → faceCaptureManagerFactory-4VejGOQX.esm.js} +52 -31
  120. package/dist/{faceCaptureManagerFactory-DiJ64oem.d.ts → faceCaptureManagerFactory-BxWPpxyd.d.ts} +63 -24
  121. package/dist/{faceCaptureSetup-BqhqfFHL.esm.js → faceCaptureSetup-BB5KEtbV.esm.js} +57 -36
  122. package/dist/faceMatchManager-BXp2WUT-.esm.js +201 -0
  123. package/dist/faceMatchManager-BnvrZM2F.d.ts +268 -0
  124. package/dist/{faceMatchStateMachine-MDb30gCm.esm.js → faceMatchStateMachine-CJiO2yLO.esm.js} +14 -10
  125. package/dist/feature-management-DS_Nj5Gg.esm.js +615 -0
  126. package/dist/feature-management.d.ts +173 -0
  127. package/dist/feature-management.esm.js +2 -0
  128. package/dist/field-comparison.d.ts +1 -4
  129. package/dist/field-comparison.esm.js +2 -7
  130. package/dist/{fieldComparisonManager-OLKVsG2Z.d.ts → fieldComparisonManager-CBvEGxFx.d.ts} +3 -5
  131. package/dist/{fieldComparisonManager-Cw4uzD7S.esm.js → fieldComparisonManager-DhnYdYZ2.esm.js} +6 -11
  132. package/dist/fiscal-qr.d.ts +1 -6
  133. package/dist/fiscal-qr.esm.js +14 -29
  134. package/dist/flow-events.d.ts +2 -9
  135. package/dist/flow.d.ts +59 -21
  136. package/dist/flow.esm.js +132 -49
  137. package/dist/{flowCompletionService-B6P6_EF3.esm.js → flowCompletionService-Bt3wD28k.esm.js} +4 -6
  138. package/dist/flowServices-b0Pd4F1K.esm.js +620 -0
  139. package/dist/geolocation.d.ts +1 -4
  140. package/dist/geolocation.esm.js +3 -9
  141. package/dist/geolocationManager-Cz744E5S.d.ts +506 -0
  142. package/dist/{geolocationManager-CF6-NizA.esm.js → geolocationManager-DGwnL5lg.esm.js} +44 -16
  143. package/dist/{geolocationStateMachine-CD2XJs1b.esm.js → geolocationStateMachine-il6jz5DZ.esm.js} +53 -28
  144. package/dist/{getBrowser-1yNcfFZR.esm.js → getBrowser-Cb8Zgrgp.esm.js} +1 -2
  145. package/dist/getBrowser-DNrQeL4T.esm.js +16 -0
  146. package/dist/getDeviceClass-9y-kbVDw.esm.js +19 -0
  147. package/dist/{getDeviceClass-C-Dg6IsJ.esm.js → getDeviceClass-CeBiEayS.esm.js} +1 -2
  148. package/dist/getParsedUserAgent-pJjATANs.esm.js +1622 -0
  149. package/dist/government-validation.d.ts +3 -6
  150. package/dist/government-validation.esm.js +7 -13
  151. package/dist/{governmentValidationStateMachine-BE5wiQ7Y.esm.js → governmentValidationStateMachine-BYKYUdza.esm.js} +8 -11
  152. package/dist/home.d.ts +14 -22
  153. package/dist/home.esm.js +3 -8
  154. package/dist/http.d.ts +0 -1
  155. package/dist/http.esm.js +2 -4
  156. package/dist/id-ocr.d.ts +8 -7
  157. package/dist/id-ocr.esm.js +20 -9
  158. package/dist/id-selfie-flow.d.ts +179 -0
  159. package/dist/id-selfie-flow.esm.js +917 -0
  160. package/dist/id-verification.d.ts +2 -191
  161. package/dist/id-verification.esm.js +3 -43
  162. package/dist/id.d.ts +7 -18
  163. package/dist/id.esm.js +47 -53
  164. package/dist/{idCaptureDefaults-CZajItdO.esm.js → idCaptureDefaults-WeHbQM7W.esm.js} +54 -17
  165. package/dist/idCaptureManager-BjU-Wyow.d.ts +429 -0
  166. package/dist/{idCaptureManager-DASPUMtC.esm.js → idCaptureManager-DgohUfUQ.esm.js} +173 -34
  167. package/dist/idCaptureServices-RDiDS9tg.esm.js +396 -0
  168. package/dist/{idCaptureStateMachine-DZ2ZTSxu.esm.js → idCaptureStateMachine-DWocZD_m.esm.js} +438 -585
  169. package/dist/{idOcrManager-Tm4LzKR0.esm.js → idOcrManager-CvJZhmBR.esm.js} +4 -7
  170. package/dist/{idOcrManager-DLfAjDZn.d.ts → idOcrManager-DXc_xRN7.d.ts} +62 -229
  171. package/dist/{idOcrStateMachine-BJxZCxwS.esm.js → idOcrStateMachine-Bq_e3l4E.esm.js} +15 -20
  172. package/dist/idVerificationManager-BB4Pj_N6.d.ts +197 -0
  173. package/dist/idVerificationManager-CduNXhWd.esm.js +51 -0
  174. package/dist/{idVerificationStateMachine-DXN9WcdM.esm.js → idVerificationStateMachine-GEQWUPU2.esm.js} +5 -7
  175. package/dist/identity-reuse.d.ts +1 -4
  176. package/dist/identity-reuse.esm.js +3 -8
  177. package/dist/{identityReuseManager-LjkPvSQN.esm.js → identityReuseManager-D5vXknnJ.esm.js} +24 -7
  178. package/dist/{identityReuseManager-CLVOYxcp.d.ts → identityReuseManager-v2TH5g7e.d.ts} +38 -43
  179. package/dist/{identityReuseStateMachine-Bp-zONoV.esm.js → identityReuseStateMachine-AubRPhIi.esm.js} +6 -8
  180. package/dist/index-B8weJxmL.d.ts +1 -0
  181. package/dist/index-BKOWUhxG.d.ts +258 -0
  182. package/dist/{index-DrpWp15Z.d.ts → index-CLMF0QLQ.d.ts} +3 -3
  183. package/dist/index.d.ts +1 -3
  184. package/dist/index.esm.js +2 -15
  185. package/dist/{invokeOnCaptureCallback-CCS2Ruzi.esm.js → invokeOnCaptureCallback-1m1VJ3Q4.esm.js} +2 -4
  186. package/dist/{lib-Bjd6nOLG.esm.js → lib-DAyUtOTj.esm.js} +1510 -1589
  187. package/dist/mandatory-consent.d.ts +2 -10
  188. package/dist/mandatory-consent.esm.js +3 -8
  189. package/dist/{mandatoryConsentManager-DeBmOHcQ.d.ts → mandatoryConsentManager-B29kR0XA.d.ts} +60 -85
  190. package/dist/{mandatoryConsentManager-DZ26sg4B.esm.js → mandatoryConsentManager-BeELm1zS.esm.js} +4 -7
  191. package/dist/{mandatoryConsentStateMachine-_44ZoDSh.esm.js → mandatoryConsentStateMachine-zroQGzwb.esm.js} +5 -7
  192. package/dist/manualReviewService-D4IkipnN.esm.js +15 -0
  193. package/dist/{mediaRecorderOptions-CClCKAiF.esm.js → mediaRecorderOptions-dALSV8af.esm.js} +2 -4
  194. package/dist/{mediapipeShared-Bcmkzs3x.esm.js → mediapipeShared-B6oNoXEQ.esm.js} +21 -9
  195. package/dist/{onDeviceFaceResults-DILtthks.esm.js → onDeviceFaceResults-C6IRJHQB.esm.js} +30 -87
  196. package/dist/openviduLazy-CCDpFWg1.esm.js +10 -0
  197. package/dist/{otp-B1YeyRXu.d.ts → otp-CEWfTj9v.d.ts} +0 -1
  198. package/dist/{otp-uaXiKt_R.esm.js → otp-D2k3PeSL.esm.js} +3 -14
  199. package/dist/{permissionGuards-BNOe4Tnu.esm.js → permissionGuards-KINpmKtI.esm.js} +2 -4
  200. package/dist/{permissionServices-C_kxhNeo.esm.js → permissionServices-UvUcOSRb.esm.js} +35 -28
  201. package/dist/personhood.d.ts +13 -20
  202. package/dist/personhood.esm.js +153 -85
  203. package/dist/phone.d.ts +1 -5
  204. package/dist/phone.esm.js +3 -10
  205. package/dist/{phoneManager-_KtitbUA.d.ts → phoneManager-BBU8Lq0O.d.ts} +4 -7
  206. package/dist/{phoneManager-CRblfdcI.esm.js → phoneManager-Cpiai2IM.esm.js} +82 -12
  207. package/dist/{phoneStateMachine-DjFGWMjQ.esm.js → phoneStateMachine-E1fUUcNM.esm.js} +7 -9
  208. package/dist/{platform-0Ot-bF_a.esm.js → platform-BJrm5nzZ.esm.js} +31 -11
  209. package/dist/privacyLensWorker-DI-Rg83h.esm.js +355 -0
  210. package/dist/qe-signature.d.ts +4 -6
  211. package/dist/qe-signature.esm.js +10 -11
  212. package/dist/{recordingService-CxaYkITO.esm.js → recordingService-N4RhdyiT.esm.js} +13 -31
  213. package/dist/redirect-to-mobile.d.ts +2 -6
  214. package/dist/redirect-to-mobile.esm.js +3 -10
  215. package/dist/{redirectToMobileManager-dv29o_LS.d.ts → redirectToMobileManager-BD2PvT5B.d.ts} +8 -44
  216. package/dist/{redirectToMobileManager-DbuNUlru.esm.js → redirectToMobileManager-C0dfc7f6.esm.js} +28 -8
  217. package/dist/{redirectToMobileStateMachine-BRaIJWOM.esm.js → redirectToMobileStateMachine-C9SYCJcH.esm.js} +74 -18
  218. package/dist/rolldown-runtime-FZ4Itg2g.esm.js +42 -0
  219. package/dist/{runChildModule-kojSv3MH.esm.js → runChildModule-DpRmKWV0.esm.js} +10 -9
  220. package/dist/{WasmUtilProvider-BgzcXBdl.esm.js → safeStorage-Ep56I-f_.esm.js} +98 -473
  221. package/dist/selfie.d.ts +8 -21
  222. package/dist/selfie.esm.js +40 -47
  223. package/dist/selfieErrorUtils-C2PYBVsp.esm.js +90 -0
  224. package/dist/{selfieManager-B1Px3GGa.esm.js → selfieManager-CmoNiluM.esm.js} +7 -10
  225. package/dist/{selfieManager-4juKfrHG.d.ts → selfieManager-DwlCppg0.d.ts} +3 -4
  226. package/dist/{selfieStateMachine-D0TS93Tu.esm.js → selfieStateMachine-L9pghTly.esm.js} +14 -29
  227. package/dist/{session-CLsU2Jnb.esm.js → session-DeR_I24J.esm.js} +16 -7
  228. package/dist/session.d.ts +12 -10
  229. package/dist/session.esm.js +5 -15
  230. package/dist/sessionInitializer-DNgRpf5Y.esm.js +1865 -0
  231. package/dist/{setup-CfNsYAeB.esm.js → setup-DuYKUt0r.esm.js} +319 -137
  232. package/dist/{setup-CmA2apmN.d.ts → setup-DywQeePQ.d.ts} +186 -4
  233. package/dist/signature.d.ts +2 -96
  234. package/dist/signature.esm.js +3 -108
  235. package/dist/signatureManager-DGBSWz2_.d.ts +106 -0
  236. package/dist/signatureManager-DdPgcmou.esm.js +113 -0
  237. package/dist/{signatureStateMachine-CdhlMih-.esm.js → signatureStateMachine-Cf73DGWO.esm.js} +5 -7
  238. package/dist/spawn-D9jgw9pW.d.ts +1441 -0
  239. package/dist/src-0Jurt29N.esm.js +4482 -0
  240. package/dist/{stats-BVy52wLy.esm.js → stats-B0nFKawG.esm.js} +3 -5
  241. package/dist/stats.esm.js +2 -5
  242. package/dist/topLevelStateName-B5i2avbh.esm.js +41 -0
  243. package/dist/{tri-CFAPtAUM.esm.js → tri-4RsGrIt6.esm.js} +3 -119
  244. package/dist/tri.d.ts +2 -2
  245. package/dist/tri.esm-BIjHhBJ2.esm.js +2620 -0
  246. package/dist/tri.esm.js +2 -4
  247. package/dist/trueSight-BTl_vvd3.esm.js +1 -0
  248. package/dist/trueSightService-s3T95geD.esm.js +1894 -0
  249. package/dist/trust-graph.d.ts +4 -5
  250. package/dist/trust-graph.esm.js +13 -9
  251. package/dist/types-BEwVKkLJ.d.ts +15 -0
  252. package/dist/{types-BKLb3C42.esm.js → types-BN5RPPIZ.esm.js} +1 -2
  253. package/dist/types-BSBzhHRH.d.ts +57 -0
  254. package/dist/types-BX_XkMsQ2.d.ts +21 -0
  255. package/dist/types-BfHiko5D.d.ts +48 -0
  256. package/dist/{types-D8Cl1N2Z.d.ts → types-BfgmV7s72.d.ts} +2 -2
  257. package/dist/types-CJ7Yl9K-2.d.ts +164 -0
  258. package/dist/types-DPIDuhut.d.ts +40 -0
  259. package/dist/types-DVmXIdzW.d.ts +82 -0
  260. package/dist/types-DelMqZLe.d.ts +105 -0
  261. package/dist/types-EELWyWpd.d.ts +6 -0
  262. package/dist/{types-fO6KIdol.d.ts → types-Hmd7U0JA.d.ts} +80 -6
  263. package/dist/{types-BUgeB2X6.d.ts → types-KPvmag_B.d.ts} +7 -7
  264. package/dist/types-M6eb82ra2.d.ts +589 -0
  265. package/dist/{types-DV3wkhQ4.d.ts → types-Vb4P9ovf.d.ts} +1 -3
  266. package/dist/{urlUtils-CpiYwn7w.esm.js → urlUtils-D6phjq1-.esm.js} +1 -2
  267. package/dist/{video-ZY92rkel.esm.js → video-BtSWtHy1.esm.js} +1 -2
  268. package/dist/video-selfie.d.ts +71 -117
  269. package/dist/video-selfie.esm.js +575 -643
  270. package/dist/videoSelfieCameraWarmer-DPx5Lm3d.esm.js +651 -0
  271. package/dist/videoSelfieStepDetector-D3oo2ofo.d.ts +123 -0
  272. package/dist/wasm.d.ts +2 -4
  273. package/dist/wasm.esm.js +4 -15
  274. package/dist/wasmDefaults-DTUrftxR.esm.js +125 -0
  275. package/dist/{wasmDsFlagSync-Ch0mFJNT.esm.js → wasmDsFlagSync-BqUCwLY8.esm.js} +2 -4
  276. package/dist/wasmWebClient-DM8lkb0z.esm.js +407 -0
  277. package/dist/watchlist-for-business.d.ts +1 -3
  278. package/dist/watchlist-for-business.esm.js +9 -9
  279. package/dist/watchlist.d.ts +1 -52
  280. package/dist/watchlist.esm.js +3 -70
  281. package/dist/{watchlistForBusinessStateMachine-R1Yp1g5A.esm.js → watchlistForBusinessStateMachine-BcBMkMvV.esm.js} +5 -7
  282. package/dist/watchlistManager-CjSMmbyq.esm.js +83 -0
  283. package/dist/watchlistManager-DLXef90v.d.ts +68 -0
  284. package/dist/{watchlistStateMachine-D07UVq1m.esm.js → watchlistStateMachine-Bl7Wy9Cm.esm.js} +5 -7
  285. package/dist/workflow.d.ts +239 -203
  286. package/dist/workflow.esm.js +156 -101
  287. package/dist/xstate-actors.esm-CtI5S0f4.esm.js +310 -0
  288. package/dist/{xstate.esm-nY3M5UYm.esm.js → xstate.esm-Cf4e0Cfd.esm.js} +136 -610
  289. package/package.json +14 -9
  290. package/dist/Actor-BwgmOPkb.d.ts +0 -2
  291. package/dist/Face2DProvider-CZU11g6r.esm.js +0 -824
  292. package/dist/FaceDetectionProvider-CPWg-PAH.d.ts +0 -119
  293. package/dist/IWasmUtilCapability-DaSNxgA8.d.ts +0 -150
  294. package/dist/PrivacyLensProvider-B_zrV25p.esm.js +0 -339
  295. package/dist/StateMachine-D5WO6lHS.d.ts +0 -2
  296. package/dist/StreamCanvasCapture-DHaWferF.d.ts +0 -42
  297. package/dist/ae-signature-Pp4oCAHD.esm.js +0 -12
  298. package/dist/api-DsbUi7TO.esm.js +0 -72
  299. package/dist/browser-DlFgHpoC-Br3G10gw.esm.js +0 -1425
  300. package/dist/browserSimulation-DZwEy9bu.esm.js +0 -2804
  301. package/dist/camera-CxxXV0VN.esm.js +0 -79
  302. package/dist/canvas-90BqS0NF.d.ts +0 -112
  303. package/dist/chunk-CIKcdghV.esm.js +0 -49
  304. package/dist/clientLifecycle-VyzRfALg.esm.js +0 -534
  305. package/dist/cpf-ocr.d.ts +0 -10
  306. package/dist/cpf-ocr.esm.js +0 -8
  307. package/dist/cpfOcrManager-9eM4z4o7.esm.js +0 -190
  308. package/dist/cpfOcrManager-C5U9E0hf.d.ts +0 -216
  309. package/dist/createFaceAvatar-BZSg2MNo.esm.js +0 -46
  310. package/dist/deepsightLoader-CU_tiLMx.esm.js +0 -62
  311. package/dist/flowServices-DkQmOkLV.esm.js +0 -208
  312. package/dist/geolocationManager-DaHYFkVO.d.ts +0 -156
  313. package/dist/getDeviceClass-DIjnTPjR.esm.js +0 -14
  314. package/dist/http-CnsKEaJY.esm.js +0 -0
  315. package/dist/idCaptureManager-CwuXtVu6.d.ts +0 -1013
  316. package/dist/index-BAyZ8_iI.d.ts +0 -93
  317. package/dist/openviduLazy-jPgABwrt.esm.js +0 -3
  318. package/dist/openviduLazy-wEojM41w.esm.js +0 -12
  319. package/dist/qe-signature-BnWIpR-O.esm.js +0 -12
  320. package/dist/sessionInitializer-Dj7-aJaP.esm.js +0 -547
  321. package/dist/tri.esm-DDJ1zOqG.esm.js +0 -2593
  322. package/dist/types-BcF-fii5.d.ts +0 -5
  323. package/dist/videoSelfieSteps-Djpv7cjb.esm.js +0 -58
  324. /package/dist/{IVisibilityObserverCapability-BZ1rE7ly.d.ts → IVisibilityObserverCapability-D4tvIB5v.d.ts} +0 -0
  325. /package/dist/{camera-CKU96nwJ.d.ts → camera-9wWD-pwg.d.ts} +0 -0
  326. /package/dist/{flowCompletionService-BOSTlAWo.d.ts → flowCompletionService-BlAHsKyv.d.ts} +0 -0
  327. /package/dist/{types-BgjMAEXl.d.ts → types-Bk_6dmDa.d.ts} +0 -0
  328. /package/dist/{warmup-Dd0iq6KF.d.ts → warmup-Dv2alr2-.d.ts} +0 -0
@@ -0,0 +1,1865 @@
1
+ import { E as updateFeatureManagementUser } from "./feature-management-DS_Nj5Gg.esm.js";
2
+ import { c as setToken, r as getToken, t as api } from "./api-Bx3gKW_y.esm.js";
3
+ import { _ as noteTokenActivated, d as fetchFeatureConfig, f as isFeatureEnabled, l as trueSightLog, m as noteEnvironment, p as resetFeatureConfigCache, s as startTrueSightCollection, v as SDK_VERSION } from "./trueSightService-s3T95geD.esm.js";
4
+ import { v as addEvent, y as getAnalyticsBatcher } from "./events-CxfNJVZW.esm.js";
5
+ import { t as endpoints } from "./endpoints-CCzL3XD_.esm.js";
6
+ import "./trueSight-BTl_vvd3.esm.js";
7
+ import { n as flushDeviceStatsQueue, r as resetDeviceStatsQueue } from "./stats-B0nFKawG.esm.js";
8
+ import { n as UAParser, t as getParsedUserAgent } from "./getParsedUserAgent-pJjATANs.esm.js";
9
+ import { i as isIOS } from "./platform-BJrm5nzZ.esm.js";
10
+ import { t as getUserAgent } from "./getBrowser-Cb8Zgrgp.esm.js";
11
+ import { i as linkSessionWithTRI, r as isTRIStarted } from "./tri-4RsGrIt6.esm.js";
12
+ //#region ../infra/src/providers/browser/BrowserEnvironmentProvider.ts
13
+ var BrowserEnvironmentProvider = class {
14
+ getScreenDimensions() {
15
+ if (typeof screen === "undefined") return {
16
+ width: 0,
17
+ height: 0
18
+ };
19
+ return {
20
+ width: screen.width,
21
+ height: screen.height
22
+ };
23
+ }
24
+ generateCanvasFingerprint() {
25
+ try {
26
+ if (typeof document === "undefined") return "";
27
+ const canvas = document.createElement("canvas");
28
+ const ctx = canvas.getContext("2d");
29
+ if (!ctx) return "";
30
+ ctx.textBaseline = "top";
31
+ ctx.font = "14px Arial";
32
+ ctx.fillText("fingerprint", 2, 2);
33
+ return canvas.toDataURL().slice(-50);
34
+ } catch {
35
+ return "";
36
+ }
37
+ }
38
+ getWebGLRenderer() {
39
+ try {
40
+ if (typeof document === "undefined") return "";
41
+ const canvas = document.createElement("canvas");
42
+ const gl = canvas.getContext("webgl") || canvas.getContext("experimental-webgl");
43
+ if (!gl) return "";
44
+ const debugInfo = gl.getExtension("WEBGL_debug_renderer_info");
45
+ if (!debugInfo) return "";
46
+ return gl.getParameter(debugInfo.UNMASKED_RENDERER_WEBGL) || "";
47
+ } catch {
48
+ return "";
49
+ }
50
+ }
51
+ getWindowProperty(prop) {
52
+ if (typeof window === "undefined") return;
53
+ return window[prop];
54
+ }
55
+ getNavigatorProperty(prop) {
56
+ if (typeof navigator === "undefined") return;
57
+ return navigator[prop];
58
+ }
59
+ getNavigatorPrefixes() {
60
+ if (typeof navigator === "undefined") return {
61
+ webkit: false,
62
+ moz: false,
63
+ o: false,
64
+ ms: false
65
+ };
66
+ const nav = navigator;
67
+ return {
68
+ webkit: nav.webkitGetUserMedia !== void 0,
69
+ moz: nav.mozGetUserMedia !== void 0,
70
+ o: nav.oGetUserMedia !== void 0,
71
+ ms: nav.msGetUserMedia !== void 0
72
+ };
73
+ }
74
+ getMaxTouchPoints() {
75
+ if (typeof navigator === "undefined") return 0;
76
+ return navigator.maxTouchPoints;
77
+ }
78
+ hasOnTouchStart() {
79
+ if (typeof window !== "undefined" && "ontouchstart" in window) return true;
80
+ if (typeof document !== "undefined") return "ontouchstart" in document.documentElement;
81
+ return false;
82
+ }
83
+ getNavigatorProductSub() {
84
+ if (typeof navigator === "undefined") return;
85
+ return navigator.productSub;
86
+ }
87
+ getEvalToStringLength() {
88
+ return eval.toString().length;
89
+ }
90
+ tryFirefoxToSource() {
91
+ try {
92
+ throw "a";
93
+ } catch (err) {
94
+ try {
95
+ err.toSource();
96
+ return true;
97
+ } catch {
98
+ return false;
99
+ }
100
+ }
101
+ }
102
+ async fetchJson(url, timeoutMs = 3e3) {
103
+ try {
104
+ if (typeof fetch === "undefined") return null;
105
+ const controller = new AbortController();
106
+ const timeoutId = setTimeout(() => controller.abort(), timeoutMs);
107
+ const response = await fetch(url, { signal: controller.signal });
108
+ clearTimeout(timeoutId);
109
+ return await response.json();
110
+ } catch {
111
+ return null;
112
+ }
113
+ }
114
+ async enumerateVideoDeviceLabels() {
115
+ try {
116
+ if (typeof navigator === "undefined" || !navigator.mediaDevices?.enumerateDevices) return [];
117
+ return (await navigator.mediaDevices.enumerateDevices()).filter((device) => device.kind === "videoinput").map((device) => device.label);
118
+ } catch {
119
+ return [];
120
+ }
121
+ }
122
+ getTimestamp() {
123
+ return Date.now();
124
+ }
125
+ };
126
+ //#endregion
127
+ //#region ../infra/src/providers/browser/BrowserInfoProvider.ts
128
+ var BrowserInfoProvider = class {
129
+ checkWebRtcSupport() {
130
+ if (typeof window === "undefined") return false;
131
+ const hasRTCPeerConnection = "RTCPeerConnection" in window || "webkitRTCPeerConnection" in window || "mozRTCPeerConnection" in window;
132
+ const hasGetUserMedia = typeof navigator !== "undefined" && navigator.mediaDevices?.getUserMedia !== void 0;
133
+ return hasRTCPeerConnection && hasGetUserMedia;
134
+ }
135
+ getBrowserInfo() {
136
+ const userAgent = typeof navigator !== "undefined" ? navigator.userAgent : "";
137
+ const result = new UAParser(userAgent).getResult();
138
+ return {
139
+ userAgent,
140
+ isWebRtcSupported: this.checkWebRtcSupport(),
141
+ browser: {
142
+ name: result.browser.name,
143
+ version: result.browser.version
144
+ },
145
+ os: {
146
+ name: result.os.name,
147
+ version: result.os.version
148
+ },
149
+ device: {
150
+ model: result.device.model,
151
+ type: result.device.type,
152
+ vendor: result.device.vendor
153
+ },
154
+ engine: {
155
+ name: result.engine.name,
156
+ version: result.engine.version
157
+ },
158
+ cpu: { architecture: result.cpu.architecture }
159
+ };
160
+ }
161
+ };
162
+ //#endregion
163
+ //#region ../infra/src/device/getDeviceData.ts
164
+ const HIGH_ENTROPY_HINTS = /* @__PURE__ */ new Set([
165
+ "model",
166
+ "platformVersion",
167
+ "fullVersionList",
168
+ "brands",
169
+ "platform"
170
+ ]);
171
+ function getFallbackDeviceInfo() {
172
+ const parsed = getParsedUserAgent();
173
+ return {
174
+ device: { model: parsed.device.model },
175
+ os: {
176
+ name: parsed.os.name,
177
+ version: parsed.os.version
178
+ },
179
+ browser: {
180
+ name: parsed.browser.name,
181
+ version: parsed.browser.version
182
+ }
183
+ };
184
+ }
185
+ function sanitizeString(value) {
186
+ return value?.trim() || void 0;
187
+ }
188
+ function extractPrimaryBrandInfo(fullVersionList, brands) {
189
+ const primaryBrand = fullVersionList?.[0] || brands?.[0];
190
+ return {
191
+ name: sanitizeString(primaryBrand?.brand),
192
+ version: sanitizeString(primaryBrand?.version)
193
+ };
194
+ }
195
+ async function getHighEntropyDeviceInfo(userAgentData) {
196
+ const highEntropyValues = await userAgentData.getHighEntropyValues(Array.from(HIGH_ENTROPY_HINTS));
197
+ const { name: browserName, version: browserVersion } = extractPrimaryBrandInfo(highEntropyValues.fullVersionList, userAgentData.brands);
198
+ return {
199
+ device: { model: sanitizeString(highEntropyValues.model) },
200
+ os: {
201
+ name: sanitizeString(highEntropyValues.platform),
202
+ version: sanitizeString(highEntropyValues.platformVersion)
203
+ },
204
+ browser: {
205
+ name: browserName,
206
+ version: browserVersion
207
+ }
208
+ };
209
+ }
210
+ const checkForUnbrandedBrowser = (browser) => {
211
+ const userAgent = typeof navigator !== "undefined" ? navigator.userAgent : "";
212
+ const fallback = getFallbackDeviceInfo();
213
+ if (!userAgent) return browser;
214
+ try {
215
+ return {
216
+ ...browser,
217
+ name: fallback.browser.name,
218
+ version: fallback.browser.version
219
+ };
220
+ } catch {
221
+ return {
222
+ ...browser,
223
+ name: "Unknown",
224
+ version: "Unknown"
225
+ };
226
+ }
227
+ };
228
+ function mergeDeviceInfo(fallback, enhanced) {
229
+ return {
230
+ device: { model: enhanced.device?.model || fallback.device.model },
231
+ os: {
232
+ name: enhanced.os?.name || fallback.os.name,
233
+ version: enhanced.os?.version || fallback.os.version
234
+ },
235
+ browser: checkForUnbrandedBrowser({
236
+ name: enhanced.browser?.name || fallback.browser.name,
237
+ version: enhanced.browser?.version || fallback.browser.version
238
+ })
239
+ };
240
+ }
241
+ function isUserAgentClientHintsSupported(navigator) {
242
+ return Boolean(navigator.userAgentData?.getHighEntropyValues && typeof navigator.userAgentData.getHighEntropyValues === "function");
243
+ }
244
+ async function getDeviceFingerprintInfo() {
245
+ if (typeof navigator === "undefined") return {
246
+ device: {},
247
+ os: {},
248
+ browser: {}
249
+ };
250
+ const customNavigator = navigator;
251
+ const fallbackInfo = getFallbackDeviceInfo();
252
+ if (!isUserAgentClientHintsSupported(customNavigator)) return fallbackInfo;
253
+ try {
254
+ return mergeDeviceInfo(fallbackInfo, await getHighEntropyDeviceInfo(customNavigator.userAgentData));
255
+ } catch {
256
+ return fallbackInfo;
257
+ }
258
+ }
259
+ //#endregion
260
+ //#region ../../node_modules/.pnpm/@thumbmarkjs+thumbmarkjs@1.6.4/node_modules/@thumbmarkjs/thumbmarkjs/dist/thumbmark.esm.js
261
+ const e = 2592e5;
262
+ const t = "thumbmark";
263
+ const n = "https://api.thumbmarkjs.com";
264
+ const o = {
265
+ exclude: [],
266
+ include: [],
267
+ stabilize: ["private", "iframe"],
268
+ logging: !0,
269
+ timeout: 5e3,
270
+ cache_api_call: !0,
271
+ cache_lifetime_in_ms: 0,
272
+ performance: !1,
273
+ experimental: !1,
274
+ property_name_factory: (e) => `${t}_${e}`
275
+ };
276
+ ({ ...o });
277
+ const a = {
278
+ private: [
279
+ {
280
+ exclude: ["canvas"],
281
+ browsers: [
282
+ "firefox",
283
+ "safari>=17",
284
+ "brave"
285
+ ]
286
+ },
287
+ {
288
+ exclude: ["audio"],
289
+ browsers: ["samsungbrowser", "safari"]
290
+ },
291
+ {
292
+ exclude: ["fonts"],
293
+ browsers: ["firefox"]
294
+ },
295
+ {
296
+ exclude: [
297
+ "audio.sampleHash",
298
+ "hardware.deviceMemory",
299
+ "header.acceptLanguage.q",
300
+ "system.hardwareConcurrency",
301
+ "plugins"
302
+ ],
303
+ browsers: ["brave"]
304
+ },
305
+ {
306
+ exclude: ["tls.extensions"],
307
+ browsers: [
308
+ "firefox",
309
+ "chrome",
310
+ "safari"
311
+ ]
312
+ },
313
+ {
314
+ exclude: ["header.acceptLanguage"],
315
+ browsers: ["edge", "chrome"]
316
+ }
317
+ ],
318
+ iframe: [{
319
+ exclude: ["system.applePayVersion", "system.cookieEnabled"],
320
+ browsers: ["safari"]
321
+ }, { exclude: ["permissions"] }],
322
+ vpn: [{ exclude: ["ip"] }]
323
+ };
324
+ const s = "undefined" != typeof window ? window.OfflineAudioContext || window.webkitOfflineAudioContext : null;
325
+ function c(e) {
326
+ let t = 0;
327
+ for (let n = 0; n < e.length; ++n) t += Math.abs(e[n]);
328
+ return t;
329
+ }
330
+ function l(e, t, n) {
331
+ let o = [];
332
+ for (let t = 0; t < e[0].data.length; t++) {
333
+ let n = [];
334
+ for (let o = 0; o < e.length; o++) n.push(e[o].data[t]);
335
+ o.push(u(n));
336
+ }
337
+ const r = new Uint8ClampedArray(o);
338
+ return new ImageData(r, t, n);
339
+ }
340
+ function u(e) {
341
+ if (0 === e.length) return 0;
342
+ const t = {};
343
+ for (const n of e) t[n] = (t[n] || 0) + 1;
344
+ let n = e[0];
345
+ for (const e in t) t[e] > t[n] && (n = parseInt(e, 10));
346
+ return n;
347
+ }
348
+ function d(e) {
349
+ return e ^= e >>> 16, e = Math.imul(e, 2246822507), e ^= e >>> 13, e = Math.imul(e, 3266489909), (e ^= e >>> 16) >>> 0;
350
+ }
351
+ const m = new Uint32Array([
352
+ 597399067,
353
+ 2869860233,
354
+ 951274213,
355
+ 2716044179
356
+ ]);
357
+ function f(e, t) {
358
+ return e << t | e >>> 32 - t;
359
+ }
360
+ function h(e, t = 0) {
361
+ if (t = t ? 0 | t : 0, "string" == typeof e && (e = function(e) {
362
+ if ("undefined" != typeof TextEncoder) return new TextEncoder().encode(e).buffer;
363
+ const t = [];
364
+ for (let n = 0; n < e.length; n++) {
365
+ let o = e.charCodeAt(n);
366
+ o < 128 ? t.push(o) : o < 2048 ? t.push(192 | o >> 6, 128 | 63 & o) : o < 55296 || o >= 57344 ? t.push(224 | o >> 12, 128 | o >> 6 & 63, 128 | 63 & o) : (n++, o = 65536 + ((1023 & o) << 10 | 1023 & e.charCodeAt(n)), t.push(240 | o >> 18, 128 | o >> 12 & 63, 128 | o >> 6 & 63, 128 | 63 & o));
367
+ }
368
+ return new Uint8Array(t).buffer;
369
+ }(e)), !(e instanceof ArrayBuffer)) throw new TypeError("Expected key to be ArrayBuffer or string");
370
+ const n = new Uint32Array([
371
+ t,
372
+ t,
373
+ t,
374
+ t
375
+ ]);
376
+ (function(e, t) {
377
+ const n = e.byteLength / 16 | 0, o = new Uint32Array(e, 0, 4 * n);
378
+ for (let e = 0; e < n; e++) {
379
+ const n = o.subarray(4 * e, 4 * (e + 1));
380
+ n[0] = Math.imul(n[0], m[0]), n[0] = f(n[0], 15), n[0] = Math.imul(n[0], m[1]), t[0] = t[0] ^ n[0], t[0] = f(t[0], 19), t[0] = t[0] + t[1], t[0] = Math.imul(t[0], 5) + 1444728091, n[1] = Math.imul(n[1], m[1]), n[1] = f(n[1], 16), n[1] = Math.imul(n[1], m[2]), t[1] = t[1] ^ n[1], t[1] = f(t[1], 17), t[1] = t[1] + t[2], t[1] = Math.imul(t[1], 5) + 197830471, n[2] = Math.imul(n[2], m[2]), n[2] = f(n[2], 17), n[2] = Math.imul(n[2], m[3]), t[2] = t[2] ^ n[2], t[2] = f(t[2], 15), t[2] = t[2] + t[3], t[2] = Math.imul(t[2], 5) + 2530024501, n[3] = Math.imul(n[3], m[3]), n[3] = f(n[3], 18), n[3] = Math.imul(n[3], m[0]), t[3] = t[3] ^ n[3], t[3] = f(t[3], 13), t[3] = t[3] + t[0], t[3] = Math.imul(t[3], 5) + 850148119;
381
+ }
382
+ })(e, n), function(e, t) {
383
+ const n = e.byteLength / 16 | 0, o = e.byteLength % 16, r = /* @__PURE__ */ new Uint32Array(4), i = new Uint8Array(e, 16 * n, o);
384
+ switch (o) {
385
+ case 15: r[3] = r[3] ^ i[14] << 16;
386
+ case 14: r[3] = r[3] ^ i[13] << 8;
387
+ case 13: r[3] = r[3] ^ i[12], r[3] = Math.imul(r[3], m[3]), r[3] = f(r[3], 18), r[3] = Math.imul(r[3], m[0]), t[3] = t[3] ^ r[3];
388
+ case 12: r[2] = r[2] ^ i[11] << 24;
389
+ case 11: r[2] = r[2] ^ i[10] << 16;
390
+ case 10: r[2] = r[2] ^ i[9] << 8;
391
+ case 9: r[2] = r[2] ^ i[8], r[2] = Math.imul(r[2], m[2]), r[2] = f(r[2], 17), r[2] = Math.imul(r[2], m[3]), t[2] = t[2] ^ r[2];
392
+ case 8: r[1] = r[1] ^ i[7] << 24;
393
+ case 7: r[1] = r[1] ^ i[6] << 16;
394
+ case 6: r[1] = r[1] ^ i[5] << 8;
395
+ case 5: r[1] = r[1] ^ i[4], r[1] = Math.imul(r[1], m[1]), r[1] = f(r[1], 16), r[1] = Math.imul(r[1], m[2]), t[1] = t[1] ^ r[1];
396
+ case 4: r[0] = r[0] ^ i[3] << 24;
397
+ case 3: r[0] = r[0] ^ i[2] << 16;
398
+ case 2: r[0] = r[0] ^ i[1] << 8;
399
+ case 1: r[0] = r[0] ^ i[0], r[0] = Math.imul(r[0], m[0]), r[0] = f(r[0], 15), r[0] = Math.imul(r[0], m[1]), t[0] = t[0] ^ r[0];
400
+ }
401
+ }(e, n), function(e, t) {
402
+ t[0] = t[0] ^ e.byteLength, t[1] = t[1] ^ e.byteLength, t[2] = t[2] ^ e.byteLength, t[3] = t[3] ^ e.byteLength, t[0] = t[0] + t[1] | 0, t[0] = t[0] + t[2] | 0, t[0] = t[0] + t[3] | 0, t[1] = t[1] + t[0] | 0, t[2] = t[2] + t[0] | 0, t[3] = t[3] + t[0] | 0, t[0] = d(t[0]), t[1] = d(t[1]), t[2] = d(t[2]), t[3] = d(t[3]), t[0] = t[0] + t[1] | 0, t[0] = t[0] + t[2] | 0, t[0] = t[0] + t[3] | 0, t[1] = t[1] + t[0] | 0, t[2] = t[2] + t[0] | 0, t[3] = t[3] + t[0] | 0;
403
+ }(e, n);
404
+ const o = new Uint8Array(n.buffer);
405
+ return Array.from(o).map(((e) => e.toString(16).padStart(2, "0"))).join("");
406
+ }
407
+ const p = 280;
408
+ async function g(e) {
409
+ for (var t; !document.body;) await w(50);
410
+ const n = document.createElement("iframe");
411
+ n.setAttribute("frameBorder", "0");
412
+ const o = n.style;
413
+ o.setProperty("position", "fixed"), o.setProperty("display", "block", "important"), o.setProperty("visibility", "visible"), o.setProperty("border", "0"), o.setProperty("opacity", "0"), n.src = "about:blank", document.body.appendChild(n);
414
+ const r = n.contentDocument || (null === (t = n.contentWindow) || void 0 === t ? void 0 : t.document);
415
+ if (!r) throw new Error("Iframe document is not accessible");
416
+ e({ iframe: r }), setTimeout((() => {
417
+ document.body.removeChild(n);
418
+ }), 0);
419
+ }
420
+ function w(e, t) {
421
+ return new Promise(((n) => setTimeout(n, e, t)));
422
+ }
423
+ const v = [
424
+ "Arial",
425
+ "Arial Black",
426
+ "Arial Narrow",
427
+ "Arial Rounded MT",
428
+ "Arimo",
429
+ "Archivo",
430
+ "Barlow",
431
+ "Bebas Neue",
432
+ "Bitter",
433
+ "Bookman",
434
+ "Calibri",
435
+ "Cabin",
436
+ "Candara",
437
+ "Century",
438
+ "Century Gothic",
439
+ "Comic Sans MS",
440
+ "Constantia",
441
+ "Courier",
442
+ "Courier New",
443
+ "Crimson Text",
444
+ "DM Mono",
445
+ "DM Sans",
446
+ "DM Serif Display",
447
+ "DM Serif Text",
448
+ "Dosis",
449
+ "Droid Sans",
450
+ "Exo",
451
+ "Fira Code",
452
+ "Fira Sans",
453
+ "Franklin Gothic Medium",
454
+ "Garamond",
455
+ "Geneva",
456
+ "Georgia",
457
+ "Gill Sans",
458
+ "Helvetica",
459
+ "Impact",
460
+ "Inconsolata",
461
+ "Indie Flower",
462
+ "Inter",
463
+ "Josefin Sans",
464
+ "Karla",
465
+ "Lato",
466
+ "Lexend",
467
+ "Lucida Bright",
468
+ "Lucida Console",
469
+ "Lucida Sans Unicode",
470
+ "Manrope",
471
+ "Merriweather",
472
+ "Merriweather Sans",
473
+ "Montserrat",
474
+ "Myriad",
475
+ "Noto Sans",
476
+ "Nunito",
477
+ "Nunito Sans",
478
+ "Open Sans",
479
+ "Optima",
480
+ "Orbitron",
481
+ "Oswald",
482
+ "Pacifico",
483
+ "Palatino",
484
+ "Perpetua",
485
+ "PT Sans",
486
+ "PT Serif",
487
+ "Poppins",
488
+ "Prompt",
489
+ "Public Sans",
490
+ "Quicksand",
491
+ "Rajdhani",
492
+ "Recursive",
493
+ "Roboto",
494
+ "Roboto Condensed",
495
+ "Rockwell",
496
+ "Rubik",
497
+ "Segoe Print",
498
+ "Segoe Script",
499
+ "Segoe UI",
500
+ "Sora",
501
+ "Source Sans Pro",
502
+ "Space Mono",
503
+ "Tahoma",
504
+ "Taviraj",
505
+ "Times",
506
+ "Times New Roman",
507
+ "Titillium Web",
508
+ "Trebuchet MS",
509
+ "Ubuntu",
510
+ "Varela Round",
511
+ "Verdana",
512
+ "Work Sans"
513
+ ];
514
+ const y = [
515
+ "monospace",
516
+ "sans-serif",
517
+ "serif"
518
+ ];
519
+ function S(e, t) {
520
+ return e.font = `72px ${t}`, e.measureText("WwMmLli0Oo").width;
521
+ }
522
+ function b() {
523
+ var e;
524
+ const t = document.createElement("canvas"), n = null !== (e = t.getContext("webgl")) && void 0 !== e ? e : t.getContext("experimental-webgl");
525
+ if (n && "getParameter" in n) try {
526
+ const e = (n.getParameter(n.VENDOR) || "").toString(), t = (n.getParameter(n.RENDERER) || "").toString();
527
+ let o = {
528
+ vendor: e,
529
+ renderer: t,
530
+ version: (n.getParameter(n.VERSION) || "").toString(),
531
+ shadingLanguageVersion: (n.getParameter(n.SHADING_LANGUAGE_VERSION) || "").toString()
532
+ };
533
+ if (!t.length || !e.length) {
534
+ const e = n.getExtension("WEBGL_debug_renderer_info");
535
+ if (e) {
536
+ const t = (n.getParameter(e.UNMASKED_VENDOR_WEBGL) || "").toString(), r = (n.getParameter(e.UNMASKED_RENDERER_WEBGL) || "").toString();
537
+ t && (o.vendorUnmasked = t), r && (o.rendererUnmasked = r);
538
+ }
539
+ }
540
+ return o;
541
+ } catch (e) {}
542
+ return "undefined";
543
+ }
544
+ function E() {
545
+ const e = /* @__PURE__ */ new Float32Array(1), t = new Uint8Array(e.buffer);
546
+ return e[0] = Infinity, e[0] = e[0] - e[0], t[3];
547
+ }
548
+ const M = (e, t, n, o) => {
549
+ const r = (n - t) / o;
550
+ let i = 0;
551
+ for (let n = 0; n < o; n++) i += e(t + (n + .5) * r);
552
+ return i * r;
553
+ };
554
+ function P(e, t) {
555
+ const n = {};
556
+ return t.forEach(((t) => {
557
+ const o = function(e) {
558
+ if (0 === e.length) return null;
559
+ const t = {};
560
+ e.forEach(((e) => {
561
+ const n = String(e);
562
+ t[n] = (t[n] || 0) + 1;
563
+ }));
564
+ let n = e[0], o = 1;
565
+ return Object.keys(t).forEach(((e) => {
566
+ t[e] > o && (n = e, o = t[e]);
567
+ })), n;
568
+ }(e.map(((e) => t in e ? e[t] : void 0)).filter(((e) => void 0 !== e)));
569
+ o && (n[t] = o);
570
+ })), n;
571
+ }
572
+ const A = [
573
+ "accelerometer",
574
+ "accessibility",
575
+ "accessibility-events",
576
+ "ambient-light-sensor",
577
+ "background-fetch",
578
+ "background-sync",
579
+ "bluetooth",
580
+ "camera",
581
+ "clipboard-read",
582
+ "clipboard-write",
583
+ "device-info",
584
+ "display-capture",
585
+ "gyroscope",
586
+ "geolocation",
587
+ "local-fonts",
588
+ "magnetometer",
589
+ "microphone",
590
+ "midi",
591
+ "nfc",
592
+ "notifications",
593
+ "payment-handler",
594
+ "persistent-storage",
595
+ "push",
596
+ "speaker",
597
+ "storage-access",
598
+ "top-level-storage-access",
599
+ "window-management",
600
+ "query"
601
+ ];
602
+ function x() {
603
+ var e, t, n, o, r, i;
604
+ if ("undefined" == typeof navigator) return {
605
+ name: "unknown",
606
+ version: "unknown"
607
+ };
608
+ const a = navigator.userAgent, s = [
609
+ /(?<name>SamsungBrowser)\/(?<version>\d+(?:\.\d+)+)/,
610
+ /(?<name>EdgA|EdgiOS|Edg)\/(?<version>\d+(?:\.\d+)+)/,
611
+ /(?<name>OPR|OPX)\/(?<version>\d+(?:\.\d+)+)/,
612
+ /Opera[\s\/](?<version>\d+(?:\.\d+)+)/,
613
+ /Opera Mini\/(?<version>\d+(?:\.\d+)+)/,
614
+ /Opera Mobi\/(?<version>\d+(?:\.\d+)+)/,
615
+ /(?<name>Vivaldi)\/(?<version>\d+(?:\.\d+)+)/,
616
+ /(?<name>Brave)\/(?<version>\d+(?:\.\d+)+)/,
617
+ /(?<name>CriOS)\/(?<version>\d+(?:\.\d+)+)/,
618
+ /(?<name>FxiOS)\/(?<version>\d+(?:\.\d+)+)/,
619
+ /(?<name>Chrome|Chromium)\/(?<version>\d+(?:\.\d+)+)/,
620
+ /(?<name>Firefox|Waterfox|Iceweasel|IceCat)\/(?<version>\d+(?:\.\d+)+)/,
621
+ /Version\/(?<version1>[\d.]+).*Safari\/[\d.]+|(?<name>Safari)\/(?<version2>[\d.]+)/,
622
+ /(?<name>MSIE|Trident|IEMobile).+?(?<version>\d+(?:\.\d+)+)/,
623
+ /(?<name>[A-Za-z]+)\/(?<version>\d+(?:\.\d+)+)/
624
+ ], c = {
625
+ edg: "Edge",
626
+ edga: "Edge",
627
+ edgios: "Edge",
628
+ opr: "Opera",
629
+ opx: "Opera",
630
+ crios: "Chrome",
631
+ fxios: "Firefox",
632
+ samsung: "SamsungBrowser",
633
+ vivaldi: "Vivaldi",
634
+ brave: "Brave"
635
+ };
636
+ for (const l of s) {
637
+ const s = a.match(l);
638
+ if (s) {
639
+ let a = null === (e = s.groups) || void 0 === e ? void 0 : e.name, u = (null === (t = s.groups) || void 0 === t ? void 0 : t.version) || (null === (n = s.groups) || void 0 === n ? void 0 : n.version1) || (null === (o = s.groups) || void 0 === o ? void 0 : o.version2);
640
+ if (a || !(null === (r = s.groups) || void 0 === r ? void 0 : r.version1) && !(null === (i = s.groups) || void 0 === i ? void 0 : i.version2) || (a = "Safari"), !a && l.source.includes("Opera Mini") && (a = "Opera Mini"), !a && l.source.includes("Opera Mobi") && (a = "Opera Mobi"), !a && l.source.includes("Opera") && (a = "Opera"), !a && s[1] && (a = s[1]), !u && s[2] && (u = s[2]), a) return {
641
+ name: c[a.toLowerCase()] || a,
642
+ version: u || "unknown"
643
+ };
644
+ }
645
+ }
646
+ return {
647
+ name: "unknown",
648
+ version: "unknown"
649
+ };
650
+ }
651
+ function C() {
652
+ if ("undefined" == typeof navigator || !navigator.userAgent) return !1;
653
+ const e = navigator.userAgent;
654
+ return /Mobi|Android|iPhone|iPod|IEMobile|Opera Mini|Opera Mobi|webOS|BlackBerry|Windows Phone/i.test(e) && !/iPad/i.test(e);
655
+ }
656
+ function _() {
657
+ let e = [];
658
+ const t = {
659
+ "prefers-contrast": [
660
+ "high",
661
+ "more",
662
+ "low",
663
+ "less",
664
+ "forced",
665
+ "no-preference"
666
+ ],
667
+ "any-hover": ["hover", "none"],
668
+ "any-pointer": [
669
+ "none",
670
+ "coarse",
671
+ "fine"
672
+ ],
673
+ pointer: [
674
+ "none",
675
+ "coarse",
676
+ "fine"
677
+ ],
678
+ hover: ["hover", "none"],
679
+ update: ["fast", "slow"],
680
+ "inverted-colors": ["inverted", "none"],
681
+ "prefers-reduced-motion": ["reduce", "no-preference"],
682
+ "prefers-reduced-transparency": ["reduce", "no-preference"],
683
+ scripting: [
684
+ "none",
685
+ "initial-only",
686
+ "enabled"
687
+ ],
688
+ "forced-colors": ["active", "none"]
689
+ };
690
+ return Object.keys(t).forEach(((n) => {
691
+ t[n].forEach(((t) => {
692
+ matchMedia(`(${n}: ${t})`).matches && e.push(`${n}: ${t}`);
693
+ }));
694
+ })), e;
695
+ }
696
+ function I() {
697
+ if ("https:" === window.location.protocol && "function" == typeof window.ApplePaySession) try {
698
+ const e = window.ApplePaySession.supportsVersion;
699
+ for (let t = 15; t > 0; t--) if (e(t)) return t;
700
+ } catch (e) {
701
+ return 0;
702
+ }
703
+ return 0;
704
+ }
705
+ const T = "SamsungBrowser" !== x().name ? 1 : 3;
706
+ let R;
707
+ let k = null;
708
+ function O(e) {
709
+ const t = [];
710
+ return function e(n) {
711
+ if (n && n.toJSON && "function" == typeof n.toJSON && (n = n.toJSON()), void 0 === n) return;
712
+ if ("number" == typeof n) return isFinite(n) ? "" + n : "null";
713
+ if ("object" != typeof n) return JSON.stringify(n);
714
+ let o, r;
715
+ if (Array.isArray(n)) {
716
+ for (r = "[", o = 0; o < n.length; o++) o && (r += ","), r += e(n[o]) || "null";
717
+ return r + "]";
718
+ }
719
+ if (null === n) return "null";
720
+ if (-1 !== t.indexOf(n)) throw new TypeError("Converting circular structure to JSON");
721
+ const i = t.push(n) - 1, a = Object.keys(n).sort();
722
+ for (r = "", o = 0; o < a.length; o++) {
723
+ const t = a[o], i = e(n[t]);
724
+ i && (r && (r += ","), r += JSON.stringify(t) + ":" + i);
725
+ }
726
+ return t.splice(i, 1), "{" + r + "}";
727
+ }(e) || "";
728
+ }
729
+ const L = [
730
+ "𝔄",
731
+ "𝔅",
732
+ "ℭ",
733
+ "𝔇",
734
+ "𝔈",
735
+ "𝔉",
736
+ "𝔸",
737
+ "𝔹",
738
+ "ℂ",
739
+ "𝔻",
740
+ "𝔼",
741
+ "𝔽"
742
+ ];
743
+ const B = [
744
+ "β",
745
+ "ψ",
746
+ "λ",
747
+ "ε",
748
+ "ζ",
749
+ "α",
750
+ "ξ",
751
+ "μ",
752
+ "ρ",
753
+ "φ",
754
+ "κ",
755
+ "τ",
756
+ "η",
757
+ "σ",
758
+ "ι",
759
+ "ω",
760
+ "γ",
761
+ "ν",
762
+ "χ",
763
+ "δ",
764
+ "θ",
765
+ "π",
766
+ "υ",
767
+ "ο"
768
+ ];
769
+ function D(e, t) {
770
+ return `<math><mrow>${t}</mrow></math>`;
771
+ }
772
+ function N() {
773
+ let e = "<mo>∏</mo>";
774
+ return L.forEach(((t, n) => {
775
+ const o = 2 * n, r = B.slice(o, o + 2);
776
+ 2 === r.length && (e += `<mmultiscripts><mi>${t}</mi><none/><mi>${r[1]}</mi><mprescripts></mprescripts><mi>${r[0]}</mi><none/></mmultiscripts>`);
777
+ })), D(0, `<munderover><mmultiscripts>${e}</mmultiscripts></munderover>`);
778
+ }
779
+ function $() {
780
+ const e = [];
781
+ return L.forEach(((t, n) => {
782
+ const o = 2 * n, r = B.slice(o, o + 2);
783
+ 2 === r.length && e.push(D(0, `<mmultiscripts><mi>${t}</mi><none/><mi>${r[1]}</mi><mprescripts></mprescripts><mi>${r[0]}</mi><none/></mmultiscripts>`));
784
+ })), e;
785
+ }
786
+ const V = {
787
+ audio: async function() {
788
+ return s ? async function() {
789
+ return new Promise(((e, t) => {
790
+ try {
791
+ const t = new s(1, 5e3, 44100), n = t.createBufferSource(), o = t.createOscillator();
792
+ o.frequency.value = 1e3;
793
+ const r = t.createDynamicsCompressor();
794
+ let i;
795
+ r.threshold.value = -50, r.knee.value = 40, r.ratio.value = 12, r.attack.value = 0, r.release.value = .2, o.connect(r), r.connect(t.destination), o.start(), t.oncomplete = (o) => {
796
+ i = o.renderedBuffer.getChannelData(0), e({
797
+ sampleHash: c(i),
798
+ maxChannels: t.destination.maxChannelCount,
799
+ channelCountMode: n.channelCountMode
800
+ });
801
+ }, t.startRendering();
802
+ } catch (e) {
803
+ console.error("Error creating audio fingerprint:", e), t(e);
804
+ }
805
+ }));
806
+ }() : null;
807
+ },
808
+ canvas: async function() {
809
+ return new Promise(((e) => {
810
+ const t = Array.from({ length: 3 }, (() => function() {
811
+ const e = document.createElement("canvas"), t = e.getContext("2d");
812
+ if (!t) return null;
813
+ e.width = p, e.height = 20;
814
+ const n = t.createLinearGradient(0, 0, e.width, e.height);
815
+ n.addColorStop(0, "red"), n.addColorStop(1 / 6, "orange"), n.addColorStop(2 / 6, "yellow"), n.addColorStop(.5, "green"), n.addColorStop(4 / 6, "blue"), n.addColorStop(5 / 6, "indigo"), n.addColorStop(1, "violet"), t.fillStyle = n, t.fillRect(0, 0, e.width, e.height);
816
+ const o = "Random Text WMwmil10Oo";
817
+ t.font = "23.123px Arial", t.fillStyle = "black", t.fillText(o, -5, 15), t.fillStyle = "rgba(0, 0, 255, 0.5)", t.fillText(o, -3.3, 17.7), t.beginPath(), t.moveTo(0, 0), t.lineTo(2 * e.width / 7, e.height), t.strokeStyle = "white", t.lineWidth = 2, t.stroke();
818
+ return t.getImageData(0, 0, e.width, e.height);
819
+ }())).filter(((e) => null !== e));
820
+ 0 !== t.length ? e({ commonPixelsHash: h(l(t, p, 20).data.toString()).toString() }) : e(null);
821
+ }));
822
+ },
823
+ fonts: async function(e) {
824
+ return new Promise(((e) => {
825
+ try {
826
+ g((async ({ iframe: t }) => {
827
+ const n = t.createElement("canvas").getContext("2d");
828
+ if (!n) return void e(null);
829
+ const o = y.map(((e) => S(n, e)));
830
+ let r = {};
831
+ v.forEach(((e) => {
832
+ const t = S(n, e);
833
+ o.includes(t) || (r[e] = t);
834
+ })), e(r);
835
+ }));
836
+ } catch (t) {
837
+ e(null);
838
+ }
839
+ }));
840
+ },
841
+ hardware: function() {
842
+ return new Promise(((e, t) => {
843
+ const n = void 0 !== navigator.deviceMemory ? navigator.deviceMemory : 0, o = window.performance && window.performance.memory ? window.performance.memory : 0;
844
+ e({
845
+ videocard: b(),
846
+ architecture: E(),
847
+ deviceMemory: n.toString() || "undefined",
848
+ jsHeapSizeLimit: o.jsHeapSizeLimit || 0
849
+ });
850
+ }));
851
+ },
852
+ locales: function() {
853
+ return new Promise(((e) => {
854
+ e({
855
+ languages: navigator.language,
856
+ timezone: Intl.DateTimeFormat().resolvedOptions().timeZone
857
+ });
858
+ }));
859
+ },
860
+ math: function() {
861
+ return new Promise(((e) => {
862
+ e({
863
+ acos: Math.acos(.5),
864
+ asin: M(Math.asin, -1, 1, 97),
865
+ cos: M(Math.cos, 0, Math.PI, 97),
866
+ largeCos: Math.cos(0x56bc75e2d63100000),
867
+ largeSin: Math.sin(0x56bc75e2d63100000),
868
+ largeTan: Math.tan(0x56bc75e2d63100000),
869
+ sin: M(Math.sin, -Math.PI, Math.PI, 97),
870
+ tan: M(Math.tan, 0, 2 * Math.PI, 97)
871
+ });
872
+ }));
873
+ },
874
+ permissions: async function(e) {
875
+ const t = (null == e ? void 0 : e.permissions_to_check) || A;
876
+ return P(await Promise.all(Array.from({ length: 3 }, (() => async function(e) {
877
+ const t = {};
878
+ for (const n of e) try {
879
+ t[n] = (await navigator.permissions.query({ name: n })).state.toString();
880
+ } catch (e) {}
881
+ return t;
882
+ }(t)))), t);
883
+ },
884
+ plugins: async function() {
885
+ const e = [];
886
+ if (navigator.plugins) for (let t = 0; t < navigator.plugins.length; t++) {
887
+ const n = navigator.plugins[t];
888
+ e.push([
889
+ n.name,
890
+ n.filename,
891
+ n.description
892
+ ].join("|"));
893
+ }
894
+ return new Promise(((t) => {
895
+ t({ plugins: e });
896
+ }));
897
+ },
898
+ screen: function() {
899
+ return new Promise(((e) => {
900
+ if ("undefined" == typeof matchMedia || "undefined" == typeof screen) return void e(null);
901
+ const t = {
902
+ is_touchscreen: navigator.maxTouchPoints > 0,
903
+ maxTouchPoints: navigator.maxTouchPoints,
904
+ colorDepth: screen.colorDepth,
905
+ mediaMatches: _()
906
+ };
907
+ C() && navigator.maxTouchPoints > 0 && (t.resolution = function() {
908
+ const e = window.screen.width, t = window.screen.height;
909
+ return `${Math.max(e, t).toString()}x${Math.min(e, t).toString()}`;
910
+ }()), e(t);
911
+ }));
912
+ },
913
+ system: function() {
914
+ return new Promise(((e) => {
915
+ const t = x();
916
+ e({
917
+ platform: window.navigator.platform,
918
+ productSub: navigator.productSub,
919
+ product: navigator.product,
920
+ useragent: navigator.userAgent,
921
+ hardwareConcurrency: navigator.hardwareConcurrency,
922
+ browser: {
923
+ name: t.name,
924
+ version: t.version
925
+ },
926
+ mobile: C(),
927
+ applePayVersion: I(),
928
+ cookieEnabled: window.navigator.cookieEnabled
929
+ });
930
+ }));
931
+ },
932
+ webgl: async function() {
933
+ "undefined" != typeof document && (R = document.createElement("canvas"), R.width = 200, R.height = 100, k = R.getContext("webgl"));
934
+ try {
935
+ if (!k) throw new Error("WebGL not supported");
936
+ return { commonPixelsHash: h(l(Array.from({ length: T }, (() => function() {
937
+ try {
938
+ if (!k) throw new Error("WebGL not supported");
939
+ const e = "\n attribute vec2 position;\n void main() {\n gl_Position = vec4(position, 0.0, 1.0);\n }\n ", t = "\n precision mediump float;\n void main() {\n gl_FragColor = vec4(0.812, 0.195, 0.553, 0.921); // Set line color\n }\n ", n = k.createShader(k.VERTEX_SHADER), o = k.createShader(k.FRAGMENT_SHADER);
940
+ if (!n || !o) throw new Error("Failed to create shaders");
941
+ if (k.shaderSource(n, e), k.shaderSource(o, t), k.compileShader(n), !k.getShaderParameter(n, k.COMPILE_STATUS)) throw new Error("Vertex shader compilation failed: " + k.getShaderInfoLog(n));
942
+ if (k.compileShader(o), !k.getShaderParameter(o, k.COMPILE_STATUS)) throw new Error("Fragment shader compilation failed: " + k.getShaderInfoLog(o));
943
+ const r = k.createProgram();
944
+ if (!r) throw new Error("Failed to create shader program");
945
+ if (k.attachShader(r, n), k.attachShader(r, o), k.linkProgram(r), !k.getProgramParameter(r, k.LINK_STATUS)) throw new Error("Shader program linking failed: " + k.getProgramInfoLog(r));
946
+ k.useProgram(r);
947
+ const i = 137, a = new Float32Array(4 * i), s = 2 * Math.PI / i;
948
+ for (let e = 0; e < i; e++) {
949
+ const t = e * s;
950
+ a[4 * e] = 0, a[4 * e + 1] = 0, a[4 * e + 2] = Math.cos(t) * (R.width / 2), a[4 * e + 3] = Math.sin(t) * (R.height / 2);
951
+ }
952
+ const c = k.createBuffer();
953
+ k.bindBuffer(k.ARRAY_BUFFER, c), k.bufferData(k.ARRAY_BUFFER, a, k.STATIC_DRAW);
954
+ const l = k.getAttribLocation(r, "position");
955
+ k.enableVertexAttribArray(l), k.vertexAttribPointer(l, 2, k.FLOAT, !1, 0, 0), k.viewport(0, 0, R.width, R.height), k.clearColor(0, 0, 0, 1), k.clear(k.COLOR_BUFFER_BIT), k.drawArrays(k.LINES, 0, 2 * i);
956
+ const u = new Uint8ClampedArray(R.width * R.height * 4);
957
+ k.readPixels(0, 0, R.width, R.height, k.RGBA, k.UNSIGNED_BYTE, u);
958
+ return new ImageData(u, R.width, R.height);
959
+ } catch (e) {
960
+ return new ImageData(1, 1);
961
+ } finally {
962
+ k && (k.bindBuffer(k.ARRAY_BUFFER, null), k.useProgram(null), k.viewport(0, 0, k.drawingBufferWidth, k.drawingBufferHeight), k.clearColor(0, 0, 0, 0));
963
+ }
964
+ }())), R.width, R.height).data.toString()).toString() };
965
+ } catch (e) {
966
+ return { webgl: "unsupported" };
967
+ }
968
+ }
969
+ };
970
+ const F = {
971
+ webrtc: async function() {
972
+ return new Promise(((e) => {
973
+ try {
974
+ const t = window.RTCPeerConnection || window.webkitRTCPeerConnection || window.mozRTCPeerConnection;
975
+ if (!t) return void e({
976
+ supported: !1,
977
+ error: "WebRTC not supported"
978
+ });
979
+ const n = new t({
980
+ iceCandidatePoolSize: 1,
981
+ iceServers: []
982
+ });
983
+ n.createDataChannel("");
984
+ (async () => {
985
+ try {
986
+ const o = await n.createOffer({
987
+ offerToReceiveAudio: !0,
988
+ offerToReceiveVideo: !0
989
+ });
990
+ await n.setLocalDescription(o);
991
+ const r = o.sdp || "", i = [...new Set((r.match(/extmap:\d+ [^\n\r]+/g) || []).map(((e) => e.replace(/extmap:\d+ /, ""))))].sort(), a = (e) => {
992
+ const t = r.match(new RegExp(`m=${e} [^\\s]+ [^\\s]+ ([^\\n\\r]+)`));
993
+ return t ? t[1].split(" ") : [];
994
+ }, s = (e, t) => t.map(((t) => {
995
+ const n = new RegExp(`(rtpmap|fmtp|rtcp-fb):${t} (.+)`, "g"), o = [...r.matchAll(n)];
996
+ if (!o.length) return null;
997
+ const i = {};
998
+ return o.forEach(((t) => {
999
+ const [n, o, r] = t, a = r.split("/");
1000
+ "rtpmap" === o ? (i.mimeType = `${e}/${a[0]}`, i.clockRate = +a[1], "audio" === e && (i.channels = +a[2] || 1)) : "rtcp-fb" === o ? (i.feedbackSupport = i.feedbackSupport || [], i.feedbackSupport.push(r)) : "fmtp" === o && (i.sdpFmtpLine = r);
1001
+ })), i;
1002
+ })).filter(Boolean), c = s("audio", a("audio")), l = s("video", a("video")), u = {
1003
+ audio: {
1004
+ count: c.length,
1005
+ hash: h(O(c))
1006
+ },
1007
+ video: {
1008
+ count: l.length,
1009
+ hash: h(O(l))
1010
+ },
1011
+ extensionsHash: h(O(i))
1012
+ }, d = await new Promise(((e) => {
1013
+ const t = setTimeout((() => {
1014
+ n.removeEventListener("icecandidate", o), n.close(), e({
1015
+ supported: !0,
1016
+ ...u,
1017
+ timeout: !0
1018
+ });
1019
+ }), 3e3), o = (r) => {
1020
+ const i = r.candidate;
1021
+ i && i.candidate && (clearTimeout(t), n.removeEventListener("icecandidate", o), n.close(), e({
1022
+ supported: !0,
1023
+ ...u,
1024
+ candidateType: i.type || ""
1025
+ }));
1026
+ };
1027
+ n.addEventListener("icecandidate", o);
1028
+ }));
1029
+ e({
1030
+ details: d,
1031
+ hash: h(O(d))
1032
+ });
1033
+ } catch (t) {
1034
+ n.close(), e({
1035
+ supported: !0,
1036
+ error: `WebRTC offer failed: ${t.message}`
1037
+ });
1038
+ }
1039
+ })();
1040
+ } catch (t) {
1041
+ e({
1042
+ supported: !1,
1043
+ error: `WebRTC error: ${t.message}`
1044
+ });
1045
+ }
1046
+ }));
1047
+ },
1048
+ mathml: async function() {
1049
+ return new Promise(((e) => {
1050
+ try {
1051
+ g((async ({ iframe: t }) => {
1052
+ try {
1053
+ if (!function(e) {
1054
+ try {
1055
+ const t = e.createElement("math");
1056
+ t.innerHTML = "<mrow><mi>x</mi></mrow>", t.style.position = "absolute", t.style.visibility = "hidden", e.body.appendChild(t);
1057
+ const n = t.getBoundingClientRect();
1058
+ return e.body.removeChild(t), n.width > 0 && n.height > 0;
1059
+ } catch (e) {
1060
+ return !1;
1061
+ }
1062
+ }(t)) return void e({
1063
+ supported: !1,
1064
+ error: "MathML not supported"
1065
+ });
1066
+ const n = [
1067
+ D("integral", "<msubsup><mo>∫</mo><mi>a</mi><mi>b</mi></msubsup><mfrac><mrow><mi>f</mi><mo>(</mo><mi>x</mi><mo>)</mo></mrow><mrow><mi>g</mi><mo>(</mo><mi>x</mi><mo>)</mo></mrow></mfrac><mi>dx</mi>"),
1068
+ D("fraction", "<mfrac><mrow><mi>π</mi><mo>×</mo><msup><mi>r</mi><mn>2</mn></msup></mrow><mrow><mn>2</mn><mi>σ</mi></mrow></mfrac>"),
1069
+ D("matrix", "<mo>[</mo><mtable><mtr><mtd><mi>α</mi></mtd><mtd><mi>β</mi></mtd></mtr><mtr><mtd><mi>γ</mi></mtd><mtd><mi>δ</mi></mtd></mtr></mtable><mo>]</mo>"),
1070
+ N(),
1071
+ ...$()
1072
+ ], o = [];
1073
+ let r = "";
1074
+ n.forEach(((e, n) => {
1075
+ const i = function(e, t) {
1076
+ try {
1077
+ const n = t.createElement("math");
1078
+ n.innerHTML = e.replace(/<\/?math>/g, ""), n.style.whiteSpace = "nowrap", n.style.position = "absolute", n.style.visibility = "hidden", n.style.top = "-9999px", t.body.appendChild(n);
1079
+ const o = n.getBoundingClientRect(), r = (t.defaultView || window).getComputedStyle(n), i = {
1080
+ dimensions: {
1081
+ width: o.width,
1082
+ height: o.height
1083
+ },
1084
+ fontInfo: {
1085
+ fontFamily: r.fontFamily,
1086
+ fontSize: r.fontSize,
1087
+ fontWeight: r.fontWeight,
1088
+ fontStyle: r.fontStyle,
1089
+ lineHeight: r.lineHeight,
1090
+ fontVariant: r.fontVariant || "normal",
1091
+ fontStretch: r.fontStretch || "normal",
1092
+ fontSizeAdjust: r.fontSizeAdjust || "none",
1093
+ textRendering: r.textRendering || "auto",
1094
+ fontFeatureSettings: r.fontFeatureSettings || "normal",
1095
+ fontVariantNumeric: r.fontVariantNumeric || "normal",
1096
+ fontKerning: r.fontKerning || "auto"
1097
+ }
1098
+ };
1099
+ return t.body.removeChild(n), i;
1100
+ } catch (e) {
1101
+ return { error: e.message };
1102
+ }
1103
+ }(e, t);
1104
+ o.push({
1105
+ width: i.dimensions.width,
1106
+ height: i.dimensions.height
1107
+ }), 0 === n && i.fontInfo && (r = h(O(i.fontInfo)));
1108
+ }));
1109
+ const i = {
1110
+ fontStyleHash: r,
1111
+ dimensions: o
1112
+ };
1113
+ e({
1114
+ details: i,
1115
+ hash: h(O(i))
1116
+ });
1117
+ } catch (t) {
1118
+ e({
1119
+ supported: !1,
1120
+ error: `MathML error: ${t.message}`
1121
+ });
1122
+ }
1123
+ }));
1124
+ } catch (t) {
1125
+ e({
1126
+ supported: !1,
1127
+ error: `MathML error: ${t.message}`
1128
+ });
1129
+ }
1130
+ }));
1131
+ },
1132
+ speech: async function() {
1133
+ return new Promise(((e) => {
1134
+ try {
1135
+ if ("undefined" == typeof window || !window.speechSynthesis || "function" != typeof window.speechSynthesis.getVoices) return void e({
1136
+ supported: !1,
1137
+ error: "Speech Synthesis API not supported"
1138
+ });
1139
+ let t = !1, n = null;
1140
+ const o = (o) => {
1141
+ if (!t) {
1142
+ t = !0, n && clearTimeout(n);
1143
+ try {
1144
+ const t = o.map(((e) => {
1145
+ const t = (e) => e.replace(/\\/g, "\\\\").replace(/,/g, "\\,");
1146
+ return [
1147
+ t(e.voiceURI || ""),
1148
+ t(e.name || ""),
1149
+ t(e.lang || ""),
1150
+ e.localService ? "1" : "0",
1151
+ e.default ? "1" : "0"
1152
+ ].join(",");
1153
+ }));
1154
+ t.sort();
1155
+ const n = {
1156
+ voiceCount: o.length,
1157
+ voicesHash: h(O(t))
1158
+ };
1159
+ e({
1160
+ details: n,
1161
+ hash: h(O(n))
1162
+ });
1163
+ } catch (t) {
1164
+ e({
1165
+ supported: !0,
1166
+ error: `Voice processing failed: ${t.message}`
1167
+ });
1168
+ }
1169
+ }
1170
+ }, r = window.speechSynthesis.getVoices();
1171
+ if (r.length > 0) return void o(r);
1172
+ n = setTimeout((() => {
1173
+ const e = window.speechSynthesis.getVoices();
1174
+ o(e);
1175
+ }), 800);
1176
+ const i = () => {
1177
+ window.speechSynthesis.removeEventListener("voiceschanged", i);
1178
+ const e = window.speechSynthesis.getVoices();
1179
+ o(e);
1180
+ };
1181
+ window.speechSynthesis.addEventListener("voiceschanged", i);
1182
+ } catch (t) {
1183
+ e({
1184
+ supported: !1,
1185
+ error: `Speech Synthesis error: ${t.message}`
1186
+ });
1187
+ }
1188
+ }));
1189
+ }
1190
+ };
1191
+ const U = {};
1192
+ const j = { timeout: "true" };
1193
+ const W = (e, t, n) => {
1194
+ U[e] = t;
1195
+ };
1196
+ function G(e, t) {
1197
+ var n;
1198
+ let o = x();
1199
+ if ("unknown" === o.name && e.system && "object" == typeof e.system && !Array.isArray(e.system)) {
1200
+ const t = e.system.browser;
1201
+ if (t && "object" == typeof t && !Array.isArray(t)) {
1202
+ const e = t;
1203
+ o = {
1204
+ name: e.name || "unknown",
1205
+ version: e.version || "unknown"
1206
+ };
1207
+ }
1208
+ }
1209
+ const r = o.name.toLowerCase(), i = o.version.split(".")[0] || "0", s = parseInt(i, 10), c = [...(null == t ? void 0 : t.exclude) || []], l = (null == t ? void 0 : t.stabilize) || [], u = (null == t ? void 0 : t.include) || [];
1210
+ for (const e of l) {
1211
+ const t = a[e];
1212
+ if (t) for (const e of t) {
1213
+ const t = !("browsers" in e), o = !t && (null === (n = e.browsers) || void 0 === n ? void 0 : n.some(((e) => {
1214
+ const t = e.match(/(.+?)(>=)(\d+)/);
1215
+ if (t) {
1216
+ const [, e, , n] = t;
1217
+ return r === e && s >= parseInt(n, 10);
1218
+ }
1219
+ return r === e;
1220
+ })));
1221
+ (t || o) && c.push(...e.exclude);
1222
+ }
1223
+ }
1224
+ return function e(t, n = "") {
1225
+ const o = {};
1226
+ for (const [r, i] of Object.entries(t)) {
1227
+ const t = n ? `${n}.${r}` : r;
1228
+ if ("object" != typeof i || Array.isArray(i) || null === i) {
1229
+ const e = c.some(((e) => t.startsWith(e))), n = u.some(((e) => t.startsWith(e)));
1230
+ e && !n || (o[r] = i);
1231
+ } else {
1232
+ const n = e(i, t);
1233
+ Object.keys(n).length > 0 && (o[r] = n);
1234
+ }
1235
+ }
1236
+ return o;
1237
+ }(e);
1238
+ }
1239
+ const z = "visitor_id";
1240
+ function J(e) {
1241
+ return e.storage_property_name ? e.storage_property_name : e.property_name_factory(z);
1242
+ }
1243
+ const q = `${t}_${z}`;
1244
+ function K(e, t) {
1245
+ try {
1246
+ localStorage.setItem(J(t), e);
1247
+ } catch (e) {}
1248
+ }
1249
+ const Y = "cache";
1250
+ function X(e) {
1251
+ try {
1252
+ const t = localStorage.getItem(e.property_name_factory(Y));
1253
+ return JSON.parse(t) || {};
1254
+ } catch (e) {}
1255
+ return {};
1256
+ }
1257
+ function Z(t) {
1258
+ return t.cache_lifetime_in_ms > e ? Date.now() + e : Date.now() + t.cache_lifetime_in_ms;
1259
+ }
1260
+ let Q = null;
1261
+ let ee = null;
1262
+ const te = (e, t) => {
1263
+ if (e.cache_api_call) {
1264
+ if (ee) return Promise.resolve(ee);
1265
+ const t = function(e) {
1266
+ const t = X(e);
1267
+ if (t && t.apiResponse && t.apiResponseExpiry && Date.now() <= t.apiResponseExpiry) return t.apiResponse;
1268
+ }(e);
1269
+ if (t) return Promise.resolve(t);
1270
+ if (Q) return Q;
1271
+ }
1272
+ const o = `${e.api_endpoint || n}/thumbmark`, r = function(e) {
1273
+ try {
1274
+ const t = J(e);
1275
+ let n = localStorage.getItem(t);
1276
+ return n || t === q || (n = localStorage.getItem(q), n && K(n, e)), n;
1277
+ } catch (e) {
1278
+ return null;
1279
+ }
1280
+ }(e), i = {
1281
+ components: t,
1282
+ options: e,
1283
+ clientHash: h(O(t)),
1284
+ version: "1.6.3"
1285
+ };
1286
+ r && (i.visitorId = r);
1287
+ const a = fetch(o, {
1288
+ method: "POST",
1289
+ headers: {
1290
+ "x-api-key": e.api_key,
1291
+ Authorization: "custom-authorized",
1292
+ "Content-Type": "application/json"
1293
+ },
1294
+ body: JSON.stringify(i)
1295
+ }).then(((e) => {
1296
+ if (!e.ok) {
1297
+ if (403 === e.status) throw new Error("INVALID_API_KEY");
1298
+ throw new Error(`HTTP error! status: ${e.status}`);
1299
+ }
1300
+ return e.json();
1301
+ })).then(((t) => (t.visitorId && t.visitorId !== r && K(t.visitorId, e), ee = t, function(e, t) {
1302
+ if (!e.cache_api_call || !e.cache_lifetime_in_ms) return;
1303
+ (function(e, t) {
1304
+ const n = {
1305
+ ...X(e),
1306
+ ...t
1307
+ };
1308
+ try {
1309
+ localStorage.setItem(e.property_name_factory(Y), JSON.stringify(n));
1310
+ } catch (e) {}
1311
+ })(e, {
1312
+ apiResponseExpiry: Z(e),
1313
+ apiResponse: t
1314
+ });
1315
+ }(e, t), Q = null, t))).catch(((e) => {
1316
+ if (console.error("Error fetching pro data", e), Q = null, "INVALID_API_KEY" === e.message) throw e;
1317
+ return null;
1318
+ })), s = e.timeout || 5e3, c = new Promise(((t) => {
1319
+ setTimeout((() => {
1320
+ const n = X(e);
1321
+ n && n.apiResponse ? t(n.apiResponse) : t({
1322
+ info: { timed_out: !0 },
1323
+ ...r && { visitorId: r }
1324
+ });
1325
+ }), s);
1326
+ }));
1327
+ return Q = Promise.race([a, c]), Q;
1328
+ };
1329
+ async function ne(e) {
1330
+ var t;
1331
+ if ("undefined" == typeof document || "undefined" == typeof window) return {
1332
+ thumbmark: "",
1333
+ components: {},
1334
+ info: {},
1335
+ version: "1.6.3",
1336
+ error: "Browser environment required"
1337
+ };
1338
+ const r = {
1339
+ ...o,
1340
+ ...e
1341
+ }, i = r.logging && !sessionStorage.getItem("_tmjs_l") && Math.random() < 1e-4, { elapsed: s, resolvedComponents: c } = await oe({
1342
+ ...V,
1343
+ ...U
1344
+ }, r);
1345
+ let l = {}, u = {};
1346
+ if (i || r.experimental) {
1347
+ const { elapsed: e, resolvedComponents: t } = await oe(F, r);
1348
+ l = t, u = e;
1349
+ }
1350
+ const d = r.api_key ? te(r, c) : null;
1351
+ let m = null;
1352
+ if (d) try {
1353
+ m = await d;
1354
+ } catch (e) {
1355
+ if (e instanceof Error && "INVALID_API_KEY" === e.message) return {
1356
+ error: "Invalid API key or quota exceeded",
1357
+ components: {},
1358
+ info: {},
1359
+ version: "1.6.3",
1360
+ thumbmark: ""
1361
+ };
1362
+ throw e;
1363
+ }
1364
+ const f = {
1365
+ ...s,
1366
+ ...u
1367
+ }, p = r.performance ? { elapsed: f } : {}, g = G((null == m ? void 0 : m.components) || {}, r), w = {
1368
+ ...c,
1369
+ ...g
1370
+ }, v = (null == m ? void 0 : m.info) || { uniqueness: { score: "api only" } }, y = null !== (t = null == m ? void 0 : m.thumbmark) && void 0 !== t ? t : h(O(w));
1371
+ i && async function(e, t, o, r = {}) {
1372
+ var i;
1373
+ const a = `${n}/log`, s = {
1374
+ thumbmark: e,
1375
+ components: t,
1376
+ experimental: r,
1377
+ version: "1.6.3",
1378
+ options: o,
1379
+ path: null === (i = null === window || void 0 === window ? void 0 : window.location) || void 0 === i ? void 0 : i.pathname
1380
+ };
1381
+ sessionStorage.setItem("_tmjs_l", "1");
1382
+ try {
1383
+ await fetch(a, {
1384
+ method: "POST",
1385
+ headers: { "Content-Type": "application/json" },
1386
+ body: JSON.stringify(s)
1387
+ });
1388
+ } catch (e) {}
1389
+ }(y, w, r, l).catch((() => {}));
1390
+ return {
1391
+ ...(null == m ? void 0 : m.visitorId) && { visitorId: m.visitorId },
1392
+ thumbmark: y,
1393
+ components: w,
1394
+ info: v,
1395
+ version: "1.6.3",
1396
+ ...p,
1397
+ ...Object.keys(l).length > 0 && r.experimental && { experimental: l },
1398
+ ...(null == m ? void 0 : m.requestId) && { requestId: m.requestId }
1399
+ };
1400
+ }
1401
+ async function oe(e, t) {
1402
+ const n = {
1403
+ ...o,
1404
+ ...t
1405
+ }, r = Object.entries(e).filter((([e]) => {
1406
+ var t;
1407
+ return !(null === (t = null == n ? void 0 : n.exclude) || void 0 === t ? void 0 : t.includes(e));
1408
+ })).filter((([e]) => {
1409
+ var t, o, r, i;
1410
+ return (null === (t = null == n ? void 0 : n.include) || void 0 === t ? void 0 : t.some(((e) => e.includes(".")))) ? null === (o = null == n ? void 0 : n.include) || void 0 === o ? void 0 : o.some(((t) => t.startsWith(e))) : 0 === (null === (r = null == n ? void 0 : n.include) || void 0 === r ? void 0 : r.length) || (null === (i = null == n ? void 0 : n.include) || void 0 === i ? void 0 : i.includes(e));
1411
+ })), i = r.map((([e]) => e)), s = await function(e, t, n) {
1412
+ return Promise.all(e.map(((e) => {
1413
+ const o = performance.now();
1414
+ return Promise.race([e.then(((e) => ({
1415
+ value: e,
1416
+ elapsed: performance.now() - o
1417
+ }))), (r = t, i = n, new Promise(((e) => {
1418
+ setTimeout((() => e(i)), r);
1419
+ }))).then(((e) => ({
1420
+ value: e,
1421
+ elapsed: performance.now() - o
1422
+ })))]);
1423
+ var r, i;
1424
+ })));
1425
+ }(r.map((([e, n]) => n(t))), (null == n ? void 0 : n.timeout) || 5e3, j), c = {}, l = {};
1426
+ s.forEach(((e, t) => {
1427
+ var n;
1428
+ null != e.value && (l[i[t]] = e.value, c[i[t]] = null !== (n = e.elapsed) && void 0 !== n ? n : 0);
1429
+ }));
1430
+ return {
1431
+ elapsed: c,
1432
+ resolvedComponents: G(l, n)
1433
+ };
1434
+ }
1435
+ var se = class {
1436
+ constructor(e) {
1437
+ this.options = {
1438
+ ...o,
1439
+ ...e
1440
+ };
1441
+ }
1442
+ async get(e) {
1443
+ return ne({
1444
+ ...this.options,
1445
+ ...e
1446
+ });
1447
+ }
1448
+ getVersion() {
1449
+ return "1.6.3";
1450
+ }
1451
+ includeComponent(e, t) {
1452
+ W(e, t);
1453
+ }
1454
+ };
1455
+ //#endregion
1456
+ //#region ../infra/src/providers/browser/thumbmarkAdapter.ts
1457
+ /**
1458
+ * Adapter for @thumbmarkjs/thumbmarkjs. Single point of dependency so bundlers
1459
+ * resolve it from infra's node_modules when building apps that depend on core → infra.
1460
+ */
1461
+ const THUMBMARK_ALGORITHM = {
1462
+ algorithmName: "thumbmarkjs",
1463
+ algorithmVersion: "1.6.4"
1464
+ };
1465
+ /**
1466
+ * `logging` must stay disabled. With it on (the upstream default) `getThumbmark()`
1467
+ * evaluates a bare, unguarded storage read:
1468
+ *
1469
+ * options.logging && !sessionStorage.getItem("_tmjs_l") && Math.random() < 1e-4
1470
+ *
1471
+ * Hosts that delete the bare global as a self-XSS mitigation (`delete
1472
+ * window.sessionStorage`) make that a `ReferenceError`, which would cost us the
1473
+ * device fingerprint. `logging: false` short-circuits the expression before the
1474
+ * read. It also stops upstream's 1-in-10 000 telemetry POST to
1475
+ * api.thumbmarkjs.com. Re-check this when bumping the dependency.
1476
+ */
1477
+ const THUMBMARK_OPTIONS = { logging: false };
1478
+ async function getThumbmarkId() {
1479
+ return (await new se(THUMBMARK_OPTIONS).get()).thumbmark;
1480
+ }
1481
+ //#endregion
1482
+ //#region ../infra/src/providers/browser/FingerprintProvider.ts
1483
+ var FingerprintProvider = class {
1484
+ constructor(ipLookup) {
1485
+ this.ipLookup = ipLookup;
1486
+ }
1487
+ async getFingerprint(disableIpify = false) {
1488
+ const visitorId = await getThumbmarkId();
1489
+ const [deviceInfo, ip] = await Promise.all([getDeviceFingerprintInfo(), disableIpify ? Promise.resolve("") : this.ipLookup.getIp()]);
1490
+ return {
1491
+ visitorId,
1492
+ ip,
1493
+ deviceInfo,
1494
+ ...THUMBMARK_ALGORITHM
1495
+ };
1496
+ }
1497
+ };
1498
+ //#endregion
1499
+ //#region ../infra/src/providers/browser/IpifyProvider.ts
1500
+ let cachedIp;
1501
+ let inFlightLookup;
1502
+ /**
1503
+ * Resets the module-level IP cache. Intended for tests and full session resets.
1504
+ */
1505
+ function resetIpifyCache() {
1506
+ cachedIp = void 0;
1507
+ inFlightLookup = void 0;
1508
+ }
1509
+ async function fetchIpFromIpify() {
1510
+ if (typeof fetch === "undefined") return "";
1511
+ let timeoutId = 0;
1512
+ const controller = new AbortController();
1513
+ if (AbortSignal.timeout) {
1514
+ const signal = AbortSignal.timeout(3e3);
1515
+ return (await (await fetch("https://api.ipify.org?format=json", { signal })).json()).ip;
1516
+ }
1517
+ const timeoutPromise = new Promise((_, reject) => {
1518
+ timeoutId = setTimeout(() => {
1519
+ controller.abort();
1520
+ reject(/* @__PURE__ */ new Error("Request timeout"));
1521
+ }, 3e3);
1522
+ });
1523
+ const fetchPromise = fetch("https://api.ipify.org?format=json", { signal: controller.signal }).then((res) => res.json()).then((data) => data.ip);
1524
+ const result = await Promise.race([fetchPromise, timeoutPromise]);
1525
+ clearTimeout(timeoutId);
1526
+ return result;
1527
+ }
1528
+ var IpifyProvider = class {
1529
+ async getIp() {
1530
+ if (cachedIp !== void 0) return cachedIp;
1531
+ if (inFlightLookup) return inFlightLookup;
1532
+ inFlightLookup = (async () => {
1533
+ try {
1534
+ const ip = await fetchIpFromIpify();
1535
+ cachedIp = ip;
1536
+ return ip;
1537
+ } catch {
1538
+ cachedIp = "";
1539
+ return "";
1540
+ } finally {
1541
+ inFlightLookup = void 0;
1542
+ }
1543
+ })();
1544
+ return inFlightLookup;
1545
+ }
1546
+ };
1547
+ //#endregion
1548
+ //#region src/internal/fingerprint/fingerprintApi.ts
1549
+ async function getFingerprint(disableIpify) {
1550
+ const shouldDisableIpify = disableIpify ?? getDisableIpify();
1551
+ return new FingerprintProvider(new IpifyProvider()).getFingerprint(shouldDisableIpify);
1552
+ }
1553
+ //#endregion
1554
+ //#region src/internal/device/hasLiedBrowser.ts
1555
+ function detectBrowserFromUserAgent(userAgent) {
1556
+ if (userAgent.indexOf("edge/") >= 0 || userAgent.indexOf("iemobile/") >= 0) return "Other";
1557
+ if (userAgent.indexOf("opera mini") >= 0) return "Other";
1558
+ if (userAgent.indexOf("firefox/") >= 0) return "Firefox";
1559
+ if (userAgent.indexOf("opera/") >= 0 || userAgent.indexOf(" opr/") >= 0) return "Opera";
1560
+ if (userAgent.indexOf("chrome/") >= 0) return "Chrome";
1561
+ if (userAgent.indexOf("safari/") >= 0) {
1562
+ if (userAgent.indexOf("android 1.") >= 0 || userAgent.indexOf("android 2.") >= 0 || userAgent.indexOf("android 3.") >= 0 || userAgent.indexOf("android 4.") >= 0) return "AOSP";
1563
+ return "Safari";
1564
+ }
1565
+ if (userAgent.indexOf("trident/") >= 0) return "Internet Explorer";
1566
+ return "Other";
1567
+ }
1568
+ function hasLiedBrowser(browserEnv) {
1569
+ const userAgent = getUserAgent().toLowerCase();
1570
+ if (userAgent.indexOf("edge/") >= 0 || userAgent.indexOf("iemobile/") >= 0) return false;
1571
+ if (userAgent.indexOf("opera mini") >= 0) return false;
1572
+ const browser = detectBrowserFromUserAgent(userAgent);
1573
+ const productSub = browserEnv.getNavigatorProductSub();
1574
+ if ((browser === "Chrome" || browser === "Safari" || browser === "Opera") && productSub !== "20030107") return true;
1575
+ const evalLength = browserEnv.getEvalToStringLength();
1576
+ if (evalLength === 37 && browser !== "Safari" && browser !== "Firefox" && browser !== "Other") return true;
1577
+ if (evalLength === 39 && browser !== "Internet Explorer" && browser !== "Other") return true;
1578
+ if (evalLength === 33 && browser !== "Chrome" && browser !== "AOSP" && browser !== "Opera" && browser !== "Other") return true;
1579
+ return browserEnv.tryFirefoxToSource() && browser !== "Firefox" && browser !== "Other";
1580
+ }
1581
+ //#endregion
1582
+ //#region src/internal/device/browserSimulation.ts
1583
+ const AUTOMATION_MARKERS = {
1584
+ window: [
1585
+ "callPhantom",
1586
+ "_phantom",
1587
+ "phantom",
1588
+ "__nightmare",
1589
+ "domAutomation",
1590
+ "domAutomationController"
1591
+ ],
1592
+ navigator: ["webdriver"]
1593
+ };
1594
+ function hasAutomationMarker(browserEnv) {
1595
+ for (const prop of AUTOMATION_MARKERS.window) if (browserEnv.getWindowProperty(prop)) return true;
1596
+ for (const prop of AUTOMATION_MARKERS.navigator) if (browserEnv.getNavigatorProperty(prop)) return true;
1597
+ return false;
1598
+ }
1599
+ function isBrowserSimulation(browserEnv) {
1600
+ if (hasAutomationMarker(browserEnv)) return true;
1601
+ if (!getParsedUserAgent().browser.name) return true;
1602
+ const touchPoints = browserEnv.getMaxTouchPoints();
1603
+ const isTouch = touchPoints > 0 || browserEnv.hasOnTouchStart();
1604
+ if (isTouch && touchPoints !== 1) return false;
1605
+ const ua = getUserAgent();
1606
+ if (isTouch && (hasLiedBrowser(browserEnv) || ua.includes("Mobile"))) return true;
1607
+ if (isIOS(ua) && !browserEnv.hasOnTouchStart()) return true;
1608
+ return false;
1609
+ }
1610
+ //#endregion
1611
+ //#region src/internal/fingerprint/fingerprintService.ts
1612
+ function formatOsVersion(os) {
1613
+ return `${os.name || "Unknown"} ${os.version || ""}`.trim();
1614
+ }
1615
+ function formatBrowser(browser) {
1616
+ if (!browser.name || !browser.version) return "Unknown";
1617
+ return `${browser.name} ${browser.version}`;
1618
+ }
1619
+ async function submitDeviceFingerprint(options = {}, dependencies) {
1620
+ const { disableIpify = false, hostingApp, signal } = options;
1621
+ const fingerprint = await dependencies.fingerprintProvider.getFingerprint(disableIpify);
1622
+ const hasLiedBrowser = isBrowserSimulation(dependencies.browserEnv);
1623
+ const payload = {
1624
+ hash: fingerprint.visitorId || "",
1625
+ ip: fingerprint.ip || "",
1626
+ deviceType: "WEBAPP",
1627
+ data: JSON.stringify(fingerprint),
1628
+ osVersion: formatOsVersion(fingerprint.deviceInfo.os),
1629
+ deviceModel: fingerprint.deviceInfo.device.model || "",
1630
+ browser: formatBrowser(fingerprint.deviceInfo.browser),
1631
+ hasLiedBrowser,
1632
+ sdkVersion: SDK_VERSION,
1633
+ hostingApp: hostingApp ?? "Web SDK",
1634
+ algorithmName: fingerprint.algorithmName,
1635
+ algorithmVersion: fingerprint.algorithmVersion
1636
+ };
1637
+ const response = await api.post(endpoints.deviceFingerprint, payload, { signal });
1638
+ if (!response.ok) throw new Error(`Failed to submit fingerprint: ${response.status} ${response.statusText}`);
1639
+ return response.data;
1640
+ }
1641
+ //#endregion
1642
+ //#region src/internal/session/standaloneFlowPolicy.ts
1643
+ let standaloneFlowPolicy = Object.freeze({
1644
+ enabled: true,
1645
+ mergeConfig: false
1646
+ });
1647
+ let flowPreloader;
1648
+ function resolveStandaloneFlowPolicy(flow) {
1649
+ return Object.freeze({
1650
+ enabled: flow !== false,
1651
+ mergeConfig: flow !== false && (typeof flow === "object" ? flow : {}).mergeConfig === true
1652
+ });
1653
+ }
1654
+ function setStandaloneFlowPolicy(policy) {
1655
+ standaloneFlowPolicy = policy;
1656
+ }
1657
+ function getStandaloneFlowPolicy() {
1658
+ return standaloneFlowPolicy;
1659
+ }
1660
+ function registerFlowPreloader(preloader) {
1661
+ flowPreloader = preloader;
1662
+ }
1663
+ function preloadSessionFlow() {
1664
+ return flowPreloader?.() ?? Promise.resolve();
1665
+ }
1666
+ function resetStandaloneFlowPolicy() {
1667
+ standaloneFlowPolicy = resolveStandaloneFlowPolicy(void 0);
1668
+ flowPreloader = void 0;
1669
+ }
1670
+ //#endregion
1671
+ //#region src/internal/session/sessionInitializer.ts
1672
+ let sessionInitialized = false;
1673
+ let cachedFeatures = null;
1674
+ let cachedDisableIpify = false;
1675
+ let clientIpLookupEnabled = true;
1676
+ let clientFingerprintEnabled = true;
1677
+ function setClientIpLookupEnabled(enabled) {
1678
+ clientIpLookupEnabled = enabled;
1679
+ }
1680
+ function setClientFingerprintEnabled(enabled) {
1681
+ clientFingerprintEnabled = enabled;
1682
+ }
1683
+ function resolveDisableIpify(serverDisableIpify) {
1684
+ return !clientIpLookupEnabled || serverDisableIpify;
1685
+ }
1686
+ /** `"Chrome" + "126"` -> `"Chrome 126"`; undefined when nothing was parsed. */
1687
+ function composeNameVersion(name, version) {
1688
+ const value = [name, version].filter(Boolean).join(" ");
1689
+ return value === "" ? void 0 : value;
1690
+ }
1691
+ function preloadOptionalFlow() {
1692
+ try {
1693
+ return preloadSessionFlow().catch(() => void 0);
1694
+ } catch {
1695
+ return Promise.resolve();
1696
+ }
1697
+ }
1698
+ let cachedFingerprintSuccess = false;
1699
+ let cachedFingerprintResult;
1700
+ let sessionInitPromise = null;
1701
+ /**
1702
+ * Activates a session by setting the auth token on the HTTP client and
1703
+ * preloading session-scoped state.
1704
+ *
1705
+ * Performs:
1706
+ * 1. Sets the token (and clears stale session-init cache if the token changed)
1707
+ * 2. Links the session with the TRI activity if TRI is enabled
1708
+ * 3. Fetches feature configuration from backend
1709
+ * 4. Submits device fingerprint
1710
+ * 5. Starts the analytics batcher so buffered events are flushed
1711
+ *
1712
+ * Results are cached per token. Calling again with the same token returns the
1713
+ * cached result; calling with a different token re-initializes from scratch.
1714
+ *
1715
+ * @param options - Session activation options (`token` required)
1716
+ * @returns Session initialization result with feature config
1717
+ *
1718
+ * @example
1719
+ * ```ts
1720
+ * await setup({ apiURL: 'https://api.incode.com' });
1721
+ * const session = await createSession('api-key', options);
1722
+ * const { features } = await initializeSession({ token: session.token });
1723
+ *
1724
+ * // Check feature flags
1725
+ * if (isFeatureEnabled('DISABLE_IPIFY', features.features)) {
1726
+ * // Handle disabled ipify
1727
+ * }
1728
+ * ```
1729
+ */
1730
+ async function initializeSession(options = {}) {
1731
+ const { token, hostingApp, signal, preloadFlow } = options;
1732
+ let triLinkPromise = Promise.resolve();
1733
+ if (token !== void 0 && token !== getToken()) {
1734
+ setToken(token);
1735
+ resetSessionInit();
1736
+ if (isTRIStarted()) triLinkPromise = linkSessionWithTRI(token);
1737
+ }
1738
+ if (token !== void 0) noteTokenActivated();
1739
+ const flowPreloadPromise = getToken() && preloadFlow === true ? preloadOptionalFlow() : Promise.resolve();
1740
+ await triLinkPromise;
1741
+ if (sessionInitialized && cachedFeatures) {
1742
+ await flowPreloadPromise;
1743
+ return {
1744
+ features: cachedFeatures,
1745
+ disableIpify: cachedDisableIpify,
1746
+ fingerprintSuccess: cachedFingerprintSuccess,
1747
+ fingerprintResult: cachedFingerprintResult
1748
+ };
1749
+ }
1750
+ if (sessionInitPromise) {
1751
+ const result = await sessionInitPromise;
1752
+ await flowPreloadPromise;
1753
+ return result;
1754
+ }
1755
+ sessionInitPromise = (async () => {
1756
+ let features;
1757
+ let serverDisableIpify = false;
1758
+ try {
1759
+ features = await fetchFeatureConfig(signal);
1760
+ serverDisableIpify = isFeatureEnabled("DISABLE_IPIFY", features.features);
1761
+ startTrueSightCollection(features);
1762
+ } catch {
1763
+ features = { sessionIdentifier: "" };
1764
+ trueSightLog("warning", "session", "orchestration", "feature-config fetch failed");
1765
+ startTrueSightCollection();
1766
+ }
1767
+ const disableIpify = resolveDisableIpify(serverDisableIpify);
1768
+ await updateFeatureManagementUser({ customIDs: { hashed_onboarding_id: features.sessionIdentifier || void 0 } });
1769
+ let fingerprintSuccess = false;
1770
+ let fingerprintResult;
1771
+ if (clientFingerprintEnabled) try {
1772
+ const fingerprintProvider = new FingerprintProvider(new IpifyProvider());
1773
+ const browserEnv = new BrowserEnvironmentProvider();
1774
+ fingerprintResult = await submitDeviceFingerprint({
1775
+ disableIpify,
1776
+ hostingApp,
1777
+ signal
1778
+ }, {
1779
+ fingerprintProvider,
1780
+ browserEnv
1781
+ });
1782
+ fingerprintSuccess = true;
1783
+ flushDeviceStatsQueue();
1784
+ } catch (error) {
1785
+ console.warn("Failed to submit device fingerprint:", error);
1786
+ trueSightLog("warning", "session", "other", "device fingerprint submit failed");
1787
+ }
1788
+ else flushDeviceStatsQueue();
1789
+ try {
1790
+ const browserInfo = new BrowserInfoProvider().getBrowserInfo();
1791
+ const language = new BrowserEnvironmentProvider().getNavigatorProperty("language");
1792
+ noteEnvironment({
1793
+ browser: composeNameVersion(browserInfo.browser.name, browserInfo.browser.version),
1794
+ osVersion: composeNameVersion(browserInfo.os.name, browserInfo.os.version),
1795
+ osLanguage: typeof language === "string" ? language : void 0
1796
+ });
1797
+ addEvent({
1798
+ code: "browser",
1799
+ payload: {
1800
+ userAgent: browserInfo.userAgent,
1801
+ isWebRtcSupported: browserInfo.isWebRtcSupported,
1802
+ browser: browserInfo.browser,
1803
+ os: browserInfo.os,
1804
+ device: browserInfo.device,
1805
+ engine: browserInfo.engine,
1806
+ cpu: browserInfo.cpu
1807
+ }
1808
+ });
1809
+ } catch (error) {
1810
+ console.warn("Failed to send browser info event:", error);
1811
+ }
1812
+ sessionInitialized = true;
1813
+ cachedFeatures = features;
1814
+ cachedDisableIpify = disableIpify;
1815
+ cachedFingerprintSuccess = fingerprintSuccess;
1816
+ cachedFingerprintResult = fingerprintResult;
1817
+ await flowPreloadPromise;
1818
+ return {
1819
+ features,
1820
+ disableIpify,
1821
+ fingerprintSuccess,
1822
+ fingerprintResult
1823
+ };
1824
+ })().finally(() => {
1825
+ sessionInitPromise = null;
1826
+ getAnalyticsBatcher()?.start();
1827
+ });
1828
+ return sessionInitPromise;
1829
+ }
1830
+ /**
1831
+ * Gets the cached disableIpify flag.
1832
+ * Returns false if session hasn't been initialized.
1833
+ */
1834
+ function getDisableIpify() {
1835
+ if (!clientIpLookupEnabled) return true;
1836
+ return cachedDisableIpify;
1837
+ }
1838
+ function getSessionFingerprintResult() {
1839
+ return cachedFingerprintResult;
1840
+ }
1841
+ /**
1842
+ * Gets whether client-side device-fingerprint submission is enabled.
1843
+ * Consumed by `loadDeepsightSession` to resolve `disableFingerprint`
1844
+ * (mirrors how `getDisableIpify` is used).
1845
+ */
1846
+ function getFingerprintEnabled() {
1847
+ return clientFingerprintEnabled;
1848
+ }
1849
+ /**
1850
+ * Resets session initialization state.
1851
+ * Useful for testing or when starting a new session.
1852
+ */
1853
+ function resetSessionInit() {
1854
+ sessionInitialized = false;
1855
+ cachedFeatures = null;
1856
+ cachedDisableIpify = false;
1857
+ cachedFingerprintSuccess = false;
1858
+ cachedFingerprintResult = void 0;
1859
+ sessionInitPromise = null;
1860
+ resetFeatureConfigCache();
1861
+ resetIpifyCache();
1862
+ resetDeviceStatsQueue();
1863
+ }
1864
+ //#endregion
1865
+ export { getDeviceFingerprintInfo as _, resetSessionInit as a, getStandaloneFlowPolicy as c, resolveStandaloneFlowPolicy as d, setStandaloneFlowPolicy as f, getThumbmarkId as g, IpifyProvider as h, initializeSession as i, registerFlowPreloader as l, getFingerprint as m, getFingerprintEnabled as n, setClientFingerprintEnabled as o, isBrowserSimulation as p, getSessionFingerprintResult as r, setClientIpLookupEnabled as s, getDisableIpify as t, resetStandaloneFlowPolicy as u, BrowserEnvironmentProvider as v };