internxt-crypto 0.0.9-alpha → 0.0.11
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 +3 -4
- package/dist/asymmetric-crypto-BORmLhnx.js +143 -0
- package/dist/asymmetric-crypto-BORmLhnx.js.map +1 -0
- package/dist/asymmetric-crypto-CyXsV4XT.mjs +102 -0
- package/dist/asymmetric-crypto-CyXsV4XT.mjs.map +1 -0
- package/dist/asymmetric-crypto.d.mts +47 -0
- package/dist/asymmetric-crypto.d.ts +47 -0
- package/dist/asymmetric-crypto.js +8 -0
- package/dist/asymmetric-crypto.mjs +3 -0
- package/dist/chunk-DWirmd9C.mjs +18 -0
- package/dist/chunk-Dt-PWiN7.js +60 -0
- package/dist/constants-Ccp21E03.js +208 -0
- package/dist/constants-Ccp21E03.js.map +1 -0
- package/dist/constants-kTeX-2T0.mjs +34 -0
- package/dist/constants-kTeX-2T0.mjs.map +1 -0
- package/dist/constants.d.mts +33 -0
- package/dist/constants.d.ts +33 -0
- package/dist/constants.js +31 -0
- package/dist/constants.mjs +3 -0
- package/dist/derive-key-Be7hS-cN.mjs +751 -0
- package/dist/derive-key-Be7hS-cN.mjs.map +1 -0
- package/dist/derive-key-CBf2WxJd.js +2513 -0
- package/dist/derive-key-CBf2WxJd.js.map +1 -0
- package/dist/derive-key.d.mts +97 -0
- package/dist/derive-key.d.ts +97 -0
- package/dist/derive-key.js +15 -0
- package/dist/derive-key.mjs +6 -0
- package/dist/email-crypto-BrT98taw.js +617 -0
- package/dist/email-crypto-BrT98taw.js.map +1 -0
- package/dist/email-crypto-DJUEjTxA.mjs +534 -0
- package/dist/email-crypto-DJUEjTxA.mjs.map +1 -0
- package/dist/email-crypto.d.mts +86 -0
- package/dist/email-crypto.d.ts +86 -0
- package/dist/email-crypto.js +17 -0
- package/dist/email-crypto.mjs +8 -0
- package/dist/email-search.d.mts +235 -0
- package/dist/email-search.d.ts +235 -0
- package/dist/email-search.js +637 -0
- package/dist/email-search.js.map +1 -0
- package/dist/email-search.mjs +608 -0
- package/dist/email-search.mjs.map +1 -0
- package/dist/hash-BoqwNkcd.js +190 -0
- package/dist/hash-BoqwNkcd.js.map +1 -0
- package/dist/hash-CXeGAwai.mjs +131 -0
- package/dist/hash-CXeGAwai.mjs.map +1 -0
- package/dist/hash.d.mts +65 -0
- package/dist/hash.d.ts +65 -0
- package/dist/hash.js +11 -0
- package/dist/hash.mjs +3 -0
- package/dist/index-CQqgKsbX.d.ts +50 -0
- package/dist/index-CintVUbp.d.ts +97 -0
- package/dist/index-D5pBU_A5.d.mts +50 -0
- package/dist/index-MaOov-ag.d.mts +97 -0
- package/dist/index.d.mts +52 -0
- package/dist/index.d.ts +52 -0
- package/dist/index.js +116 -2055
- package/dist/index.mjs +15 -8712
- package/dist/keystore-crypto-B4yCVo9l.js +182 -0
- package/dist/keystore-crypto-B4yCVo9l.js.map +1 -0
- package/dist/keystore-crypto-Bjgriq9h.mjs +159 -0
- package/dist/keystore-crypto-Bjgriq9h.mjs.map +1 -0
- package/dist/keystore-crypto.d.mts +40 -0
- package/dist/keystore-crypto.d.ts +40 -0
- package/dist/keystore-crypto.js +11 -0
- package/dist/keystore-crypto.mjs +9 -0
- package/dist/keystore-service.d.mts +48 -0
- package/dist/keystore-service.d.ts +48 -0
- package/dist/keystore-service.js +122 -0
- package/dist/keystore-service.js.map +1 -0
- package/dist/keystore-service.mjs +114 -0
- package/dist/keystore-service.mjs.map +1 -0
- package/dist/post-quantum-crypto-CAi-cEkV.js +189 -0
- package/dist/post-quantum-crypto-CAi-cEkV.js.map +1 -0
- package/dist/post-quantum-crypto-Vv34t6gX.mjs +154 -0
- package/dist/post-quantum-crypto-Vv34t6gX.mjs.map +1 -0
- package/dist/post-quantum-crypto.d.mts +2 -0
- package/dist/post-quantum-crypto.d.ts +2 -0
- package/dist/post-quantum-crypto.js +17 -0
- package/dist/post-quantum-crypto.mjs +3 -0
- package/dist/storage-service-BgIK2aYZ.js +82 -0
- package/dist/storage-service-BgIK2aYZ.js.map +1 -0
- package/dist/storage-service-CubCbhY2.mjs +65 -0
- package/dist/storage-service-CubCbhY2.mjs.map +1 -0
- package/dist/storage-service.d.mts +2 -0
- package/dist/storage-service.d.ts +2 -0
- package/dist/storage-service.js +14 -0
- package/dist/storage-service.mjs +3 -0
- package/dist/symmetric-crypto-CrdS1Che.mjs +197 -0
- package/dist/symmetric-crypto-CrdS1Che.mjs.map +1 -0
- package/dist/symmetric-crypto-D65zB396.js +244 -0
- package/dist/symmetric-crypto-D65zB396.js.map +1 -0
- package/dist/symmetric-crypto.d.mts +60 -0
- package/dist/symmetric-crypto.d.ts +60 -0
- package/dist/symmetric-crypto.js +10 -0
- package/dist/symmetric-crypto.mjs +4 -0
- package/dist/types-52g887Zi.js +16 -0
- package/dist/types-52g887Zi.js.map +1 -0
- package/dist/types-BiEoleqw.mjs +10 -0
- package/dist/types-BiEoleqw.mjs.map +1 -0
- package/dist/types-Ds3ivE9W.d.ts +104 -0
- package/dist/types-DwQJtrTx.d.mts +104 -0
- package/dist/types.d.mts +2 -0
- package/dist/types.d.ts +2 -0
- package/dist/types.js +3 -0
- package/dist/types.mjs +3 -0
- package/dist/utils-CNs3cyDj.js +263 -0
- package/dist/utils-CNs3cyDj.js.map +1 -0
- package/dist/utils-DS04iUcX.mjs +173 -0
- package/dist/utils-DS04iUcX.mjs.map +1 -0
- package/dist/utils.d.mts +99 -0
- package/dist/utils.d.ts +99 -0
- package/dist/utils.js +16 -0
- package/dist/utils.mjs +3 -0
- package/package.json +12 -11
- package/dist/__vite-browser-external-Dyvby5gX.js +0 -2
- package/dist/__vite-browser-external-Dyvby5gX.js.map +0 -1
- package/dist/__vite-browser-external-l0sNRNKZ.mjs +0 -2
- package/dist/__vite-browser-external-l0sNRNKZ.mjs.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/index.mjs.map +0 -1
package/dist/index.mjs.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","sources":["../src/constants.ts","../src/asymmetric-crypto/ellipticCurve.ts","../src/asymmetric-crypto/keys.ts","../src/utils/converters.ts","../src/utils/aesConverters.ts","../src/utils/keyConverters.ts","../node_modules/@noble/hashes/esm/crypto.js","../node_modules/@noble/hashes/esm/utils.js","../node_modules/@noble/hashes/esm/_md.js","../node_modules/@noble/hashes/esm/_u64.js","../node_modules/@noble/hashes/esm/sha2.js","../node_modules/@scure/base/lib/esm/index.js","../node_modules/@scure/bip39/esm/index.js","../node_modules/@scure/bip39/esm/wordlists/english.js","../src/utils/genMnemonic.ts","../src/hash/core.ts","../src/hash/blake3.ts","../src/hash/commitment.ts","../src/hash/mac.ts","../src/symmetric-crypto/keys.ts","../node_modules/@noble/hashes/esm/sha3.js","../node_modules/@noble/post-quantum/esm/utils.js","../src/symmetric-crypto/core.ts","../src/symmetric-crypto/aes.ts","../src/derive-key/deriveKeysFromKey.ts","../src/derive-key/core.ts","../src/derive-key/deriveKeysFromPassword.ts","../src/derive-key/deriveKeyFromTwoKeys.ts","../src/derive-key/ratchetMediaKey.ts","../src/email-crypto/converters.ts","../node_modules/@noble/post-quantum/esm/_crystals.js","../node_modules/@noble/post-quantum/esm/ml-kem.js","../src/post-quantum-crypto/kyber768.ts","../src/post-quantum-crypto/kyber512.ts","../src/post-quantum-crypto/kyber1024.ts","../src/key-wrapper/aesWrapper.ts","../src/email-crypto/core.ts","../src/email-crypto/utils.ts","../src/email-crypto/hybridEncyptedEmail.ts","../src/email-crypto/hybridEncyptedEmailAndSubject.ts","../src/email-crypto/pwdProtectedEmail.ts","../src/email-crypto/pwdProtectedEmailAndSubject.ts","../src/email-crypto/emailKeys.ts","../node_modules/idb/build/index.js","../src/email-search/indexedDB.ts","../src/email-search/mailCache.ts","../node_modules/flexsearch/dist/flexsearch.bundle.module.min.mjs","../src/email-search/search.ts","../node_modules/@emailjs/browser/es/models/EmailJSResponseStatus.js","../node_modules/@emailjs/browser/es/utils/createWebStorage/createWebStorage.js","../node_modules/@emailjs/browser/es/store/store.js","../node_modules/@emailjs/browser/es/utils/buildOptions/buildOptions.js","../node_modules/@emailjs/browser/es/methods/init/init.js","../node_modules/@emailjs/browser/es/api/sendPost.js","../node_modules/@emailjs/browser/es/utils/validateParams/validateParams.js","../node_modules/@emailjs/browser/es/utils/validateTemplateParams/validateTemplateParams.js","../node_modules/@emailjs/browser/es/utils/isHeadless/isHeadless.js","../node_modules/@emailjs/browser/es/errors/headlessError/headlessError.js","../node_modules/@emailjs/browser/es/utils/validateBlockListParams/validateBlockListParams.js","../node_modules/@emailjs/browser/es/utils/isBlockedValueInParams/isBlockedValueInParams.js","../node_modules/@emailjs/browser/es/errors/blockedEmailError/blockedEmailError.js","../node_modules/@emailjs/browser/es/utils/validateLimitRateParams/validateLimitRateParams.js","../node_modules/@emailjs/browser/es/utils/isLimitRateHit/isLimitRateHit.js","../node_modules/@emailjs/browser/es/errors/limitRateError/limitRateError.js","../node_modules/@emailjs/browser/es/methods/send/send.js","../node_modules/@emailjs/browser/es/utils/validateForm/validateForm.js","../node_modules/@emailjs/browser/es/methods/sendForm/sendForm.js","../node_modules/@emailjs/browser/es/index.js","../src/email-service/api-send.ts","../src/types.ts","../src/storage-service/sessionStorageService.ts","../src/keystore-crypto/core.ts","../src/keystore-crypto/emailEncryptionKey.ts","../src/keystore-crypto/userIdenityKey.ts","../node_modules/axios/lib/helpers/bind.js","../node_modules/axios/lib/utils.js","../node_modules/axios/lib/core/AxiosError.js","../node_modules/axios/lib/helpers/null.js","../node_modules/axios/lib/helpers/toFormData.js","../node_modules/axios/lib/helpers/AxiosURLSearchParams.js","../node_modules/axios/lib/helpers/buildURL.js","../node_modules/axios/lib/core/InterceptorManager.js","../node_modules/axios/lib/defaults/transitional.js","../node_modules/axios/lib/platform/browser/classes/URLSearchParams.js","../node_modules/axios/lib/platform/browser/classes/FormData.js","../node_modules/axios/lib/platform/browser/classes/Blob.js","../node_modules/axios/lib/platform/browser/index.js","../node_modules/axios/lib/platform/common/utils.js","../node_modules/axios/lib/platform/index.js","../node_modules/axios/lib/helpers/toURLEncodedForm.js","../node_modules/axios/lib/helpers/formDataToJSON.js","../node_modules/axios/lib/defaults/index.js","../node_modules/axios/lib/helpers/parseHeaders.js","../node_modules/axios/lib/core/AxiosHeaders.js","../node_modules/axios/lib/core/transformData.js","../node_modules/axios/lib/cancel/isCancel.js","../node_modules/axios/lib/cancel/CanceledError.js","../node_modules/axios/lib/core/settle.js","../node_modules/axios/lib/helpers/parseProtocol.js","../node_modules/axios/lib/helpers/speedometer.js","../node_modules/axios/lib/helpers/throttle.js","../node_modules/axios/lib/helpers/progressEventReducer.js","../node_modules/axios/lib/helpers/isURLSameOrigin.js","../node_modules/axios/lib/helpers/cookies.js","../node_modules/axios/lib/helpers/isAbsoluteURL.js","../node_modules/axios/lib/helpers/combineURLs.js","../node_modules/axios/lib/core/buildFullPath.js","../node_modules/axios/lib/core/mergeConfig.js","../node_modules/axios/lib/helpers/resolveConfig.js","../node_modules/axios/lib/adapters/xhr.js","../node_modules/axios/lib/helpers/composeSignals.js","../node_modules/axios/lib/helpers/trackStream.js","../node_modules/axios/lib/adapters/fetch.js","../node_modules/axios/lib/adapters/adapters.js","../node_modules/axios/lib/core/dispatchRequest.js","../node_modules/axios/lib/env/data.js","../node_modules/axios/lib/helpers/validator.js","../node_modules/axios/lib/core/Axios.js","../node_modules/axios/lib/cancel/CancelToken.js","../node_modules/axios/lib/helpers/spread.js","../node_modules/axios/lib/helpers/isAxiosError.js","../node_modules/axios/lib/helpers/HttpStatusCode.js","../node_modules/axios/lib/axios.js","../node_modules/axios/index.js","../src/keystore-service/api.ts","../src/storage-service/localStorageService.ts"],"sourcesContent":["export const AES_ALGORITHM = 'AES-GCM';\nexport const AES_KEY_BIT_LENGTH = 256;\nexport const AUX_LEN = 128;\nexport const IV_LEN_BYTES = 16;\n\nexport const KEY_WRAPPING_ALGORITHM = 'AES-KW';\nexport const KEY_FORMAT = 'raw';\nexport const CONTEXT_WRAPPING = 'CRYPTO library 2025-08-22 18:10:00 key derived from ecc and kyber secrets';\n\nexport const ECC_ALGORITHM = 'X25519';\n\nexport const CONTEXT_LOGIN = 'CRYPTO library 2025-07-26 16:18:03 key for opening identity keystore';\nexport const CONTEXT_ENC_KEYSTORE = 'CRYPTO library 2025-07-30 16:18:03 key for opening encryption keys keystore';\nexport const CONTEXT_RECOVERY = 'CRYPTO library 2025-07-30 16:20:00 key for account recovery';\nexport const CONTEXT_INDEX = 'CRYPTO library 2025-07-30 17:20:00 key for protecting current search indices';\nexport const CONTEXT_DERIVE = 'CRYPTO library 2025-08-27 17:08:00 derive one key from two keys';\nexport const CONTEXT_RATCHET = 'CRYPTO library 2025-08-28 18:27:00 ratchet media key';\n\nexport const PREFIX_MEDIA_KEY_COMMITMENT = 'CRYPTO library 2025-08-26 18:29:00 prefix for commitment to media keys';\nexport const PREFIX_PUBLIC_KEY_COMMITMENT = 'CRYPTO library 2025-08-26 18:30:00 prefix for commitment to public keys';\nexport const PREFIX_IDENTITY_KEY_COMMITMENT =\n 'CRYPTO library 2025-08-26 18:45:00 prefix for commitment to identity keys';\n\n// Second recommended parameter set from RFC 9106\nexport const ARGON2ID_PARALLELISM = 3;\nexport const ARGON2ID_ITERATIONS = 4;\nexport const ARGON2ID_MEMORY_SIZE = 65536;\nexport const ARGON2ID_SALT_BYTE_LENGTH = 16;\nexport const ARGON2ID_OUTPUT_BYTE_LENGTH = 32;\n\nexport const IDENTITY_KEYSTORE_TAG = 'Identity keystore';\nexport const ENCRYPTION_KEYSTORE_TAG = 'Encryption keystore';\nexport const RECOVERY_KEYSTORE_TAG = 'Key recovery keystroe';\nexport const INDEX_KEYSTORE_TAG = 'Current encrypted indices';\n\nexport const KYBER512_PUBLIC_KEY_LENGTH = 800;\nexport const KYBER512_SECRET_KEY_LENGTH = 1632;\n\nexport const KYBER768_PUBLIC_KEY_LENGTH = 1184;\nexport const KYBER768_SECRET_KEY_LENGTH = 2400;\n\nexport const KYBER1024_PUBLIC_KEY_LENGTH = 1568;\nexport const KYBER1024_SECRET_KEY_LENGTH = 3168;\n\nexport const KYBER_SEED_LENGTH = 64;\n\nexport const HASH_BIT_LEN = 256;\n\nexport const MAX_CACHE_SIZE = 600000000; // 600 MB\nexport const MAX_EMAIL_PER_BATCH = 100;\nexport const DB_LABEL = 'email';\nexport const DB_VERSION = 1;\n","import { ECC_ALGORITHM, AES_KEY_BIT_LENGTH } from '../constants';\n\n/**\n * Derives secret key from the other user's public key and own private key\n *\n * @param otherUserPublicKey - The public key of the other user\n * @param ownPrivateKey - The private key\n * @returns The derived secret key bits\n */\nexport async function deriveSecretKey(otherUserPublicKey: CryptoKey, ownPrivateKey: CryptoKey): Promise<Uint8Array> {\n try {\n const result = await crypto.subtle.deriveBits(\n {\n name: ECC_ALGORITHM,\n public: otherUserPublicKey,\n },\n ownPrivateKey,\n AES_KEY_BIT_LENGTH,\n );\n return new Uint8Array(result);\n } catch (error) {\n throw new Error('Failed to derive elliptic curve secret key', { cause: error });\n }\n}\n","import { ECC_ALGORITHM } from '../constants';\n\n/**\n * Generates elliptic curve key pair\n *\n * @returns The generated key pair\n */\nexport async function generateEccKeys(): Promise<CryptoKeyPair> {\n try {\n return (await crypto.subtle.generateKey(\n {\n name: ECC_ALGORITHM,\n },\n true,\n ['deriveBits'],\n )) as CryptoKeyPair;\n } catch (error) {\n throw new Error('Failed to generate elliptic curve key pair', { cause: error });\n }\n}\n\n/**\n * Converts public CryptoKey into Uint8Array using SubjectPublicKeyInfo format (RFC 5280)\n *\n * @returns The Uint8Array representation of the public key\n */\nexport async function exportPublicKey(key: CryptoKey): Promise<Uint8Array> {\n try {\n const result = await crypto.subtle.exportKey('spki', key);\n return new Uint8Array(result);\n } catch (error) {\n throw new Error('Failed to export public key', { cause: error });\n }\n}\n\n/**\n * Converts public key in SubjectPublicKeyInfo format (RFC 5280) to CryptoKey\n *\n * @returns The CryptoKey representation of the public key\n */\nexport async function importPublicKey(spkiKeyData: Uint8Array): Promise<CryptoKey> {\n try {\n return await crypto.subtle.importKey(\n 'spki',\n spkiKeyData as BufferSource,\n {\n name: ECC_ALGORITHM,\n },\n true,\n [],\n );\n } catch (error) {\n throw new Error('Failed to import public key', { cause: error });\n }\n}\n\n/**\n * Converts private key in CryptoKey to PKCS #8 format (RFC 5208)\n *\n * @returns The Uint8Array representation of the private key\n */\nexport async function exportPrivateKey(key: CryptoKey): Promise<Uint8Array> {\n try {\n const result = await crypto.subtle.exportKey('pkcs8', key);\n return new Uint8Array(result);\n } catch (error) {\n throw new Error('Failed to export private key', { cause: error });\n }\n}\n\n/**\n * Converts private key in PKCS #8 format (RFC 5208) to CryptoKey\n *\n * @returns The CryptoKey representation of the private key\n */\nexport async function importPrivateKey(pkcs8KeyData: Uint8Array): Promise<CryptoKey> {\n try {\n return await crypto.subtle.importKey(\n 'pkcs8',\n pkcs8KeyData as BufferSource,\n {\n name: ECC_ALGORITHM,\n },\n true,\n ['deriveBits'],\n );\n } catch (error) {\n throw new Error('Failed to import private key', { cause: error });\n }\n}\n","import { Buffer } from 'buffer';\n\n/**\n * Converts a Uint8Array into a hexadecimal string.\n *\n * @param array - The Uint8Array to convert.\n * @returns The hexadecimal string representation of the array.\n */\nexport function uint8ArrayToHex(array: Uint8Array): string {\n return Buffer.from(array).toString('hex');\n}\n\n/**\n * Converts a UTF-8 string into a Uint8Array.\n *\n * @param str - The UTF-8 string to convert.\n * @returns A Uint8Array created from the UTF-8 string.\n */\nexport function UTF8ToUint8(str: string): Uint8Array {\n return new TextEncoder().encode(str);\n}\n\n/**\n * Converts an Uint8Array into a UTF-8 string.\n *\n * @param array - The Uint8Array to convert.\n * @returns The UTF-8 string representation of the array.\n */\nexport function uint8ToUTF8(array: Uint8Array): string {\n return new TextDecoder().decode(array);\n}\n\n/**\n * Converts a hexadecimal string into a Uint8Array.\n *\n * @param hex - The hexadecimal string to convert.\n * @returns A Uint8Array created from the hex string.\n */\nexport function hexToUint8Array(hex: string): Uint8Array {\n return new Uint8Array(Buffer.from(hex, 'hex'));\n}\n\n/**\n * Converts a Uint8Array into a base64 string.\n *\n * @param array - The Uint8Array to convert.\n * @returns The base64 string representation of the array.\n */\nexport function uint8ArrayToBase64(array: Uint8Array): string {\n return Buffer.from(array).toString('base64');\n}\n\n/**\n * Converts a base64 string into a Uint8Array.\n *\n * @param str - The base64 string to convert.\n * @returns A Uint8Array created from the base64 string.\n */\nexport function base64ToUint8Array(str: string): Uint8Array {\n return new Uint8Array(Buffer.from(str, 'base64'));\n}\n","import { uint8ArrayToBase64, base64ToUint8Array } from './converters';\nimport { SymmetricCiphertext } from '../types';\n\n/**\n * Converts encrypted message to base64 string\n *\n * @param encryptedMessage - The encrypted message\n * @returns The resulting base64 string.\n */\nexport function ciphertextToBase64(encryptedMessage: SymmetricCiphertext): string {\n try {\n const ivBase64 = uint8ArrayToBase64(encryptedMessage.iv);\n const ciphertextBase64 = uint8ArrayToBase64(encryptedMessage.ciphertext);\n const json = JSON.stringify({ ciphertext: ciphertextBase64, iv: ivBase64 });\n const base64 = btoa(json);\n return base64;\n } catch (error) {\n throw new Error('Failed to convert ciphertext to base64', { cause: error });\n }\n}\n\n/**\n * Converts base64 string to encrypted message\n *\n * @param base64 - The base64 representation of the encrypted message\n * @returns The resulting encrypted message.\n */\nexport function base64ToCiphertext(base64: string): SymmetricCiphertext {\n try {\n const json = atob(base64);\n const obj = JSON.parse(json);\n const iv = base64ToUint8Array(obj.iv);\n const ciphertext = base64ToUint8Array(obj.ciphertext);\n const result: SymmetricCiphertext = {\n ciphertext,\n iv,\n };\n return result;\n } catch (error) {\n throw new Error('Failed to convert base64 to ciphertext', { cause: error });\n }\n}\n","import { uint8ArrayToBase64, base64ToUint8Array } from '.';\nimport { IdentityKeys, EncryptionKeys, EncryptedKeystore, MediaKeys, PublicKeys } from '../types';\nimport { exportPublicKey, exportPrivateKey, importPublicKey, importPrivateKey } from '../asymmetric-crypto';\nimport { base64ToCiphertext, ciphertextToBase64 } from './aesConverters';\n\n/**\n * Converts identity keys to base64\n *\n * @param keys - The identity keys\n * @returns The resulting base64 string\n */\nexport async function identityKeysToBase64(keys: IdentityKeys): Promise<string> {\n try {\n const pkArray = await exportPublicKey(keys.userPublicKey);\n const skArray = await exportPrivateKey(keys.userPrivateKey);\n const json = JSON.stringify({\n userPublicKey: uint8ArrayToBase64(pkArray),\n userPrivateKey: uint8ArrayToBase64(skArray),\n });\n const base64 = btoa(json);\n return base64;\n } catch (error) {\n throw new Error('Failed to convert identity keys to base64', { cause: error });\n }\n}\n\n/**\n * Converts encryption keys to base64\n *\n * @param keys - The encryption keys\n * @returns The resulting base64 string\n */\nexport async function encryptionKeysToBase64(keys: EncryptionKeys): Promise<string> {\n try {\n const pkArray = await exportPublicKey(keys.userPublicKey);\n const skArray = await exportPrivateKey(keys.userPrivateKey);\n const json = JSON.stringify({\n userPublicKey: uint8ArrayToBase64(pkArray),\n userPrivateKey: uint8ArrayToBase64(skArray),\n userPublicKyberKey: uint8ArrayToBase64(keys.userPublicKyberKey),\n userPrivateKyberKey: uint8ArrayToBase64(keys.userPrivateKyberKey),\n });\n const base64 = btoa(json);\n return base64;\n } catch (error) {\n throw new Error('Failed to convert identity keys to base64', { cause: error });\n }\n}\n\n/**\n * Converts encrypted keystore to base64\n *\n * @param keystore - The encrypted keystore\n * @returns The resulting base64 string\n */\nexport function encryptedKeystoreToBase64(keystore: EncryptedKeystore): string {\n try {\n const ciphertext = ciphertextToBase64(keystore.encryptedKeys);\n const json = JSON.stringify({\n userID: keystore.userID,\n type: keystore.type.toString(),\n encryptedKeys: ciphertext,\n });\n const base64 = btoa(json);\n return base64;\n } catch (error) {\n throw new Error('Failed to convert encrypted keystore to base64', { cause: error });\n }\n}\n\n/**\n * Converts base64 to identity keys\n *\n * @param base64 - The base64 input\n * @returns The resulting idenity keys\n */\nexport async function base64ToIdentityKeys(base64: string): Promise<IdentityKeys> {\n try {\n const json = atob(base64);\n const obj = JSON.parse(json);\n const pkArray = base64ToUint8Array(obj.userPublicKey);\n const skArray = base64ToUint8Array(obj.userPrivateKey);\n const pkCryptoKey = await importPublicKey(pkArray);\n const skCryptoKey = await importPrivateKey(skArray);\n const result: IdentityKeys = {\n userPublicKey: pkCryptoKey,\n userPrivateKey: skCryptoKey,\n };\n return result;\n } catch (error) {\n throw new Error('Failed convert base64 to idenity key', { cause: error });\n }\n}\n\n/**\n * Converts base64 to encryption keys\n *\n * @param base64 - The base64 input\n * @returns The resulting encryption keys\n */\nexport async function base64ToEncryptionKeys(base64: string): Promise<EncryptionKeys> {\n try {\n const json = atob(base64);\n const obj = JSON.parse(json);\n const pkArray = base64ToUint8Array(obj.userPublicKey);\n const skArray = base64ToUint8Array(obj.userPrivateKey);\n const pkCryptoKey = await importPublicKey(pkArray);\n const skCryptoKey = await importPrivateKey(skArray);\n const pkKyber = base64ToUint8Array(obj.userPublicKyberKey);\n const skKyber = base64ToUint8Array(obj.userPrivateKyberKey);\n const result: EncryptionKeys = {\n userPublicKey: pkCryptoKey,\n userPrivateKey: skCryptoKey,\n userPublicKyberKey: pkKyber,\n userPrivateKyberKey: skKyber,\n };\n return result;\n } catch (error) {\n throw new Error('Failed to convert base64 to encryption key', { cause: error });\n }\n}\n\n/**\n * Converts base64 to encrypted keystore\n *\n * @param base64 - The base64 input\n * @returns The resulting encrypted keystore\n */\nexport function base64ToEncryptedKeystore(base64: string): EncryptedKeystore {\n try {\n const json = atob(base64);\n const obj = JSON.parse(json);\n const ciphertext = base64ToCiphertext(obj.encryptedKeys);\n const result: EncryptedKeystore = {\n userID: obj.userID,\n type: obj.type,\n encryptedKeys: ciphertext,\n };\n return result;\n } catch (error) {\n throw new Error('Failed to convert base64 to encrypted keystore', { cause: error });\n }\n}\n\n/**\n * Converts media keys to base64\n *\n * @param keys - The media keys\n * @returns The resulting base64 string\n */\nexport function mediaKeysToBase64(keys: MediaKeys): string {\n try {\n const json = JSON.stringify({\n olmKey: uint8ArrayToBase64(keys.olmKey),\n pqKey: uint8ArrayToBase64(keys.pqKey),\n index: keys.index.toString(),\n userID: keys.userID,\n });\n const base64 = btoa(json);\n return base64;\n } catch (error) {\n throw new Error('Failed to convert media keys to base64', { cause: error });\n }\n}\n\n/**\n * Converts base64 to media keys\n *\n * @param base64 - The base64 input\n * @returns The resulting media keys\n */\nexport async function base64ToMediaKeys(base64: string): Promise<MediaKeys> {\n try {\n const json = atob(base64);\n const obj = JSON.parse(json);\n\n const result: MediaKeys = {\n olmKey: base64ToUint8Array(obj.olmKey),\n pqKey: base64ToUint8Array(obj.pqKey),\n index: Number(obj.index),\n userID: obj.userID,\n };\n return result;\n } catch (error) {\n throw new Error('Failed convert base64 to media keys', { cause: error });\n }\n}\n\n/**\n * Converts a base64 string into PublicKeys type.\n *\n * @param base64 - The base64 representation of the public key.\n * @returns The resulting PublicKeys.\n */\nexport async function base64ToPublicKey(base64: string): Promise<PublicKeys> {\n try {\n const json = atob(base64);\n const obj = JSON.parse(json);\n const eccPublicKeyBytes = base64ToUint8Array(obj.eccPublicKey);\n const eccPublicKey = await importPublicKey(eccPublicKeyBytes);\n const kyberPublicKey = base64ToUint8Array(obj.kyberPublicKey);\n return {\n eccPublicKey: eccPublicKey,\n kyberPublicKey: kyberPublicKey,\n };\n } catch (error) {\n throw new Error('Failed to convert base64 to PublicKeys', { cause: error });\n }\n}\n\n/**\n * Converts a PublicKeys type into base64 string.\n *\n * @param key - The PublicKeys key.\n * @returns The resulting base64 string.\n */\nexport async function publicKeyToBase64(key: PublicKeys): Promise<string> {\n try {\n const eccPublicKeyArray = await exportPublicKey(key.eccPublicKey);\n const json = JSON.stringify({\n eccPublicKey: uint8ArrayToBase64(eccPublicKeyArray),\n kyberPublicKey: uint8ArrayToBase64(key.kyberPublicKey),\n });\n const base64 = btoa(json);\n return base64;\n } catch (error) {\n throw new Error('Failed to convert key of the type PublicKeys to base64', { cause: error });\n }\n}\n","export const crypto = typeof globalThis === 'object' && 'crypto' in globalThis ? globalThis.crypto : undefined;\n//# sourceMappingURL=crypto.js.map","/**\n * Utilities for hex, bytes, CSPRNG.\n * @module\n */\n/*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) */\n// We use WebCrypto aka globalThis.crypto, which exists in browsers and node.js 16+.\n// node.js versions earlier than v19 don't declare it in global scope.\n// For node.js, package.json#exports field mapping rewrites import\n// from `crypto` to `cryptoNode`, which imports native module.\n// Makes the utils un-importable in browsers without a bundler.\n// Once node.js 18 is deprecated (2025-04-30), we can just drop the import.\nimport { crypto } from '@noble/hashes/crypto';\n/** Checks if something is Uint8Array. Be careful: nodejs Buffer will return true. */\nexport function isBytes(a) {\n return a instanceof Uint8Array || (ArrayBuffer.isView(a) && a.constructor.name === 'Uint8Array');\n}\n/** Asserts something is positive integer. */\nexport function anumber(n) {\n if (!Number.isSafeInteger(n) || n < 0)\n throw new Error('positive integer expected, got ' + n);\n}\n/** Asserts something is Uint8Array. */\nexport function abytes(b, ...lengths) {\n if (!isBytes(b))\n throw new Error('Uint8Array expected');\n if (lengths.length > 0 && !lengths.includes(b.length))\n throw new Error('Uint8Array expected of length ' + lengths + ', got length=' + b.length);\n}\n/** Asserts something is hash */\nexport function ahash(h) {\n if (typeof h !== 'function' || typeof h.create !== 'function')\n throw new Error('Hash should be wrapped by utils.createHasher');\n anumber(h.outputLen);\n anumber(h.blockLen);\n}\n/** Asserts a hash instance has not been destroyed / finished */\nexport function aexists(instance, checkFinished = true) {\n if (instance.destroyed)\n throw new Error('Hash instance has been destroyed');\n if (checkFinished && instance.finished)\n throw new Error('Hash#digest() has already been called');\n}\n/** Asserts output is properly-sized byte array */\nexport function aoutput(out, instance) {\n abytes(out);\n const min = instance.outputLen;\n if (out.length < min) {\n throw new Error('digestInto() expects output buffer of length at least ' + min);\n }\n}\n/** Cast u8 / u16 / u32 to u8. */\nexport function u8(arr) {\n return new Uint8Array(arr.buffer, arr.byteOffset, arr.byteLength);\n}\n/** Cast u8 / u16 / u32 to u32. */\nexport function u32(arr) {\n return new Uint32Array(arr.buffer, arr.byteOffset, Math.floor(arr.byteLength / 4));\n}\n/** Zeroize a byte array. Warning: JS provides no guarantees. */\nexport function clean(...arrays) {\n for (let i = 0; i < arrays.length; i++) {\n arrays[i].fill(0);\n }\n}\n/** Create DataView of an array for easy byte-level manipulation. */\nexport function createView(arr) {\n return new DataView(arr.buffer, arr.byteOffset, arr.byteLength);\n}\n/** The rotate right (circular right shift) operation for uint32 */\nexport function rotr(word, shift) {\n return (word << (32 - shift)) | (word >>> shift);\n}\n/** The rotate left (circular left shift) operation for uint32 */\nexport function rotl(word, shift) {\n return (word << shift) | ((word >>> (32 - shift)) >>> 0);\n}\n/** Is current platform little-endian? Most are. Big-Endian platform: IBM */\nexport const isLE = /* @__PURE__ */ (() => new Uint8Array(new Uint32Array([0x11223344]).buffer)[0] === 0x44)();\n/** The byte swap operation for uint32 */\nexport function byteSwap(word) {\n return (((word << 24) & 0xff000000) |\n ((word << 8) & 0xff0000) |\n ((word >>> 8) & 0xff00) |\n ((word >>> 24) & 0xff));\n}\n/** Conditionally byte swap if on a big-endian platform */\nexport const swap8IfBE = isLE\n ? (n) => n\n : (n) => byteSwap(n);\n/** @deprecated */\nexport const byteSwapIfBE = swap8IfBE;\n/** In place byte swap for Uint32Array */\nexport function byteSwap32(arr) {\n for (let i = 0; i < arr.length; i++) {\n arr[i] = byteSwap(arr[i]);\n }\n return arr;\n}\nexport const swap32IfBE = isLE\n ? (u) => u\n : byteSwap32;\n// Built-in hex conversion https://caniuse.com/mdn-javascript_builtins_uint8array_fromhex\nconst hasHexBuiltin = /* @__PURE__ */ (() => \n// @ts-ignore\ntypeof Uint8Array.from([]).toHex === 'function' && typeof Uint8Array.fromHex === 'function')();\n// Array where index 0xf0 (240) is mapped to string 'f0'\nconst hexes = /* @__PURE__ */ Array.from({ length: 256 }, (_, i) => i.toString(16).padStart(2, '0'));\n/**\n * Convert byte array to hex string. Uses built-in function, when available.\n * @example bytesToHex(Uint8Array.from([0xca, 0xfe, 0x01, 0x23])) // 'cafe0123'\n */\nexport function bytesToHex(bytes) {\n abytes(bytes);\n // @ts-ignore\n if (hasHexBuiltin)\n return bytes.toHex();\n // pre-caching improves the speed 6x\n let hex = '';\n for (let i = 0; i < bytes.length; i++) {\n hex += hexes[bytes[i]];\n }\n return hex;\n}\n// We use optimized technique to convert hex string to byte array\nconst asciis = { _0: 48, _9: 57, A: 65, F: 70, a: 97, f: 102 };\nfunction asciiToBase16(ch) {\n if (ch >= asciis._0 && ch <= asciis._9)\n return ch - asciis._0; // '2' => 50-48\n if (ch >= asciis.A && ch <= asciis.F)\n return ch - (asciis.A - 10); // 'B' => 66-(65-10)\n if (ch >= asciis.a && ch <= asciis.f)\n return ch - (asciis.a - 10); // 'b' => 98-(97-10)\n return;\n}\n/**\n * Convert hex string to byte array. Uses built-in function, when available.\n * @example hexToBytes('cafe0123') // Uint8Array.from([0xca, 0xfe, 0x01, 0x23])\n */\nexport function hexToBytes(hex) {\n if (typeof hex !== 'string')\n throw new Error('hex string expected, got ' + typeof hex);\n // @ts-ignore\n if (hasHexBuiltin)\n return Uint8Array.fromHex(hex);\n const hl = hex.length;\n const al = hl / 2;\n if (hl % 2)\n throw new Error('hex string expected, got unpadded hex of length ' + hl);\n const array = new Uint8Array(al);\n for (let ai = 0, hi = 0; ai < al; ai++, hi += 2) {\n const n1 = asciiToBase16(hex.charCodeAt(hi));\n const n2 = asciiToBase16(hex.charCodeAt(hi + 1));\n if (n1 === undefined || n2 === undefined) {\n const char = hex[hi] + hex[hi + 1];\n throw new Error('hex string expected, got non-hex character \"' + char + '\" at index ' + hi);\n }\n array[ai] = n1 * 16 + n2; // multiply first octet, e.g. 'a3' => 10*16+3 => 160 + 3 => 163\n }\n return array;\n}\n/**\n * There is no setImmediate in browser and setTimeout is slow.\n * Call of async fn will return Promise, which will be fullfiled only on\n * next scheduler queue processing step and this is exactly what we need.\n */\nexport const nextTick = async () => { };\n/** Returns control to thread each 'tick' ms to avoid blocking. */\nexport async function asyncLoop(iters, tick, cb) {\n let ts = Date.now();\n for (let i = 0; i < iters; i++) {\n cb(i);\n // Date.now() is not monotonic, so in case if clock goes backwards we return return control too\n const diff = Date.now() - ts;\n if (diff >= 0 && diff < tick)\n continue;\n await nextTick();\n ts += diff;\n }\n}\n/**\n * Converts string to bytes using UTF8 encoding.\n * @example utf8ToBytes('abc') // Uint8Array.from([97, 98, 99])\n */\nexport function utf8ToBytes(str) {\n if (typeof str !== 'string')\n throw new Error('string expected');\n return new Uint8Array(new TextEncoder().encode(str)); // https://bugzil.la/1681809\n}\n/**\n * Converts bytes to string using UTF8 encoding.\n * @example bytesToUtf8(Uint8Array.from([97, 98, 99])) // 'abc'\n */\nexport function bytesToUtf8(bytes) {\n return new TextDecoder().decode(bytes);\n}\n/**\n * Normalizes (non-hex) string or Uint8Array to Uint8Array.\n * Warning: when Uint8Array is passed, it would NOT get copied.\n * Keep in mind for future mutable operations.\n */\nexport function toBytes(data) {\n if (typeof data === 'string')\n data = utf8ToBytes(data);\n abytes(data);\n return data;\n}\n/**\n * Helper for KDFs: consumes uint8array or string.\n * When string is passed, does utf8 decoding, using TextDecoder.\n */\nexport function kdfInputToBytes(data) {\n if (typeof data === 'string')\n data = utf8ToBytes(data);\n abytes(data);\n return data;\n}\n/** Copies several Uint8Arrays into one. */\nexport function concatBytes(...arrays) {\n let sum = 0;\n for (let i = 0; i < arrays.length; i++) {\n const a = arrays[i];\n abytes(a);\n sum += a.length;\n }\n const res = new Uint8Array(sum);\n for (let i = 0, pad = 0; i < arrays.length; i++) {\n const a = arrays[i];\n res.set(a, pad);\n pad += a.length;\n }\n return res;\n}\nexport function checkOpts(defaults, opts) {\n if (opts !== undefined && {}.toString.call(opts) !== '[object Object]')\n throw new Error('options should be object or undefined');\n const merged = Object.assign(defaults, opts);\n return merged;\n}\n/** For runtime check if class implements interface */\nexport class Hash {\n}\n/** Wraps hash function, creating an interface on top of it */\nexport function createHasher(hashCons) {\n const hashC = (msg) => hashCons().update(toBytes(msg)).digest();\n const tmp = hashCons();\n hashC.outputLen = tmp.outputLen;\n hashC.blockLen = tmp.blockLen;\n hashC.create = () => hashCons();\n return hashC;\n}\nexport function createOptHasher(hashCons) {\n const hashC = (msg, opts) => hashCons(opts).update(toBytes(msg)).digest();\n const tmp = hashCons({});\n hashC.outputLen = tmp.outputLen;\n hashC.blockLen = tmp.blockLen;\n hashC.create = (opts) => hashCons(opts);\n return hashC;\n}\nexport function createXOFer(hashCons) {\n const hashC = (msg, opts) => hashCons(opts).update(toBytes(msg)).digest();\n const tmp = hashCons({});\n hashC.outputLen = tmp.outputLen;\n hashC.blockLen = tmp.blockLen;\n hashC.create = (opts) => hashCons(opts);\n return hashC;\n}\nexport const wrapConstructor = createHasher;\nexport const wrapConstructorWithOpts = createOptHasher;\nexport const wrapXOFConstructorWithOpts = createXOFer;\n/** Cryptographically secure PRNG. Uses internal OS-level `crypto.getRandomValues`. */\nexport function randomBytes(bytesLength = 32) {\n if (crypto && typeof crypto.getRandomValues === 'function') {\n return crypto.getRandomValues(new Uint8Array(bytesLength));\n }\n // Legacy Node.js compatibility\n if (crypto && typeof crypto.randomBytes === 'function') {\n return Uint8Array.from(crypto.randomBytes(bytesLength));\n }\n throw new Error('crypto.getRandomValues must be defined');\n}\n//# sourceMappingURL=utils.js.map","/**\n * Internal Merkle-Damgard hash utils.\n * @module\n */\nimport { Hash, abytes, aexists, aoutput, clean, createView, toBytes } from \"./utils.js\";\n/** Polyfill for Safari 14. https://caniuse.com/mdn-javascript_builtins_dataview_setbiguint64 */\nexport function setBigUint64(view, byteOffset, value, isLE) {\n if (typeof view.setBigUint64 === 'function')\n return view.setBigUint64(byteOffset, value, isLE);\n const _32n = BigInt(32);\n const _u32_max = BigInt(0xffffffff);\n const wh = Number((value >> _32n) & _u32_max);\n const wl = Number(value & _u32_max);\n const h = isLE ? 4 : 0;\n const l = isLE ? 0 : 4;\n view.setUint32(byteOffset + h, wh, isLE);\n view.setUint32(byteOffset + l, wl, isLE);\n}\n/** Choice: a ? b : c */\nexport function Chi(a, b, c) {\n return (a & b) ^ (~a & c);\n}\n/** Majority function, true if any two inputs is true. */\nexport function Maj(a, b, c) {\n return (a & b) ^ (a & c) ^ (b & c);\n}\n/**\n * Merkle-Damgard hash construction base class.\n * Could be used to create MD5, RIPEMD, SHA1, SHA2.\n */\nexport class HashMD extends Hash {\n constructor(blockLen, outputLen, padOffset, isLE) {\n super();\n this.finished = false;\n this.length = 0;\n this.pos = 0;\n this.destroyed = false;\n this.blockLen = blockLen;\n this.outputLen = outputLen;\n this.padOffset = padOffset;\n this.isLE = isLE;\n this.buffer = new Uint8Array(blockLen);\n this.view = createView(this.buffer);\n }\n update(data) {\n aexists(this);\n data = toBytes(data);\n abytes(data);\n const { view, buffer, blockLen } = this;\n const len = data.length;\n for (let pos = 0; pos < len;) {\n const take = Math.min(blockLen - this.pos, len - pos);\n // Fast path: we have at least one block in input, cast it to view and process\n if (take === blockLen) {\n const dataView = createView(data);\n for (; blockLen <= len - pos; pos += blockLen)\n this.process(dataView, pos);\n continue;\n }\n buffer.set(data.subarray(pos, pos + take), this.pos);\n this.pos += take;\n pos += take;\n if (this.pos === blockLen) {\n this.process(view, 0);\n this.pos = 0;\n }\n }\n this.length += data.length;\n this.roundClean();\n return this;\n }\n digestInto(out) {\n aexists(this);\n aoutput(out, this);\n this.finished = true;\n // Padding\n // We can avoid allocation of buffer for padding completely if it\n // was previously not allocated here. But it won't change performance.\n const { buffer, view, blockLen, isLE } = this;\n let { pos } = this;\n // append the bit '1' to the message\n buffer[pos++] = 0b10000000;\n clean(this.buffer.subarray(pos));\n // we have less than padOffset left in buffer, so we cannot put length in\n // current block, need process it and pad again\n if (this.padOffset > blockLen - pos) {\n this.process(view, 0);\n pos = 0;\n }\n // Pad until full block byte with zeros\n for (let i = pos; i < blockLen; i++)\n buffer[i] = 0;\n // Note: sha512 requires length to be 128bit integer, but length in JS will overflow before that\n // You need to write around 2 exabytes (u64_max / 8 / (1024**6)) for this to happen.\n // So we just write lowest 64 bits of that value.\n setBigUint64(view, blockLen - 8, BigInt(this.length * 8), isLE);\n this.process(view, 0);\n const oview = createView(out);\n const len = this.outputLen;\n // NOTE: we do division by 4 later, which should be fused in single op with modulo by JIT\n if (len % 4)\n throw new Error('_sha2: outputLen should be aligned to 32bit');\n const outLen = len / 4;\n const state = this.get();\n if (outLen > state.length)\n throw new Error('_sha2: outputLen bigger than state');\n for (let i = 0; i < outLen; i++)\n oview.setUint32(4 * i, state[i], isLE);\n }\n digest() {\n const { buffer, outputLen } = this;\n this.digestInto(buffer);\n const res = buffer.slice(0, outputLen);\n this.destroy();\n return res;\n }\n _cloneInto(to) {\n to || (to = new this.constructor());\n to.set(...this.get());\n const { blockLen, buffer, length, finished, destroyed, pos } = this;\n to.destroyed = destroyed;\n to.finished = finished;\n to.length = length;\n to.pos = pos;\n if (length % blockLen)\n to.buffer.set(buffer);\n return to;\n }\n clone() {\n return this._cloneInto();\n }\n}\n/**\n * Initial SHA-2 state: fractional parts of square roots of first 16 primes 2..53.\n * Check out `test/misc/sha2-gen-iv.js` for recomputation guide.\n */\n/** Initial SHA256 state. Bits 0..32 of frac part of sqrt of primes 2..19 */\nexport const SHA256_IV = /* @__PURE__ */ Uint32Array.from([\n 0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a, 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19,\n]);\n/** Initial SHA224 state. Bits 32..64 of frac part of sqrt of primes 23..53 */\nexport const SHA224_IV = /* @__PURE__ */ Uint32Array.from([\n 0xc1059ed8, 0x367cd507, 0x3070dd17, 0xf70e5939, 0xffc00b31, 0x68581511, 0x64f98fa7, 0xbefa4fa4,\n]);\n/** Initial SHA384 state. Bits 0..64 of frac part of sqrt of primes 23..53 */\nexport const SHA384_IV = /* @__PURE__ */ Uint32Array.from([\n 0xcbbb9d5d, 0xc1059ed8, 0x629a292a, 0x367cd507, 0x9159015a, 0x3070dd17, 0x152fecd8, 0xf70e5939,\n 0x67332667, 0xffc00b31, 0x8eb44a87, 0x68581511, 0xdb0c2e0d, 0x64f98fa7, 0x47b5481d, 0xbefa4fa4,\n]);\n/** Initial SHA512 state. Bits 0..64 of frac part of sqrt of primes 2..19 */\nexport const SHA512_IV = /* @__PURE__ */ Uint32Array.from([\n 0x6a09e667, 0xf3bcc908, 0xbb67ae85, 0x84caa73b, 0x3c6ef372, 0xfe94f82b, 0xa54ff53a, 0x5f1d36f1,\n 0x510e527f, 0xade682d1, 0x9b05688c, 0x2b3e6c1f, 0x1f83d9ab, 0xfb41bd6b, 0x5be0cd19, 0x137e2179,\n]);\n//# sourceMappingURL=_md.js.map","/**\n * Internal helpers for u64. BigUint64Array is too slow as per 2025, so we implement it using Uint32Array.\n * @todo re-check https://issues.chromium.org/issues/42212588\n * @module\n */\nconst U32_MASK64 = /* @__PURE__ */ BigInt(2 ** 32 - 1);\nconst _32n = /* @__PURE__ */ BigInt(32);\nfunction fromBig(n, le = false) {\n if (le)\n return { h: Number(n & U32_MASK64), l: Number((n >> _32n) & U32_MASK64) };\n return { h: Number((n >> _32n) & U32_MASK64) | 0, l: Number(n & U32_MASK64) | 0 };\n}\nfunction split(lst, le = false) {\n const len = lst.length;\n let Ah = new Uint32Array(len);\n let Al = new Uint32Array(len);\n for (let i = 0; i < len; i++) {\n const { h, l } = fromBig(lst[i], le);\n [Ah[i], Al[i]] = [h, l];\n }\n return [Ah, Al];\n}\nconst toBig = (h, l) => (BigInt(h >>> 0) << _32n) | BigInt(l >>> 0);\n// for Shift in [0, 32)\nconst shrSH = (h, _l, s) => h >>> s;\nconst shrSL = (h, l, s) => (h << (32 - s)) | (l >>> s);\n// Right rotate for Shift in [1, 32)\nconst rotrSH = (h, l, s) => (h >>> s) | (l << (32 - s));\nconst rotrSL = (h, l, s) => (h << (32 - s)) | (l >>> s);\n// Right rotate for Shift in (32, 64), NOTE: 32 is special case.\nconst rotrBH = (h, l, s) => (h << (64 - s)) | (l >>> (s - 32));\nconst rotrBL = (h, l, s) => (h >>> (s - 32)) | (l << (64 - s));\n// Right rotate for shift===32 (just swaps l&h)\nconst rotr32H = (_h, l) => l;\nconst rotr32L = (h, _l) => h;\n// Left rotate for Shift in [1, 32)\nconst rotlSH = (h, l, s) => (h << s) | (l >>> (32 - s));\nconst rotlSL = (h, l, s) => (l << s) | (h >>> (32 - s));\n// Left rotate for Shift in (32, 64), NOTE: 32 is special case.\nconst rotlBH = (h, l, s) => (l << (s - 32)) | (h >>> (64 - s));\nconst rotlBL = (h, l, s) => (h << (s - 32)) | (l >>> (64 - s));\n// JS uses 32-bit signed integers for bitwise operations which means we cannot\n// simple take carry out of low bit sum by shift, we need to use division.\nfunction add(Ah, Al, Bh, Bl) {\n const l = (Al >>> 0) + (Bl >>> 0);\n return { h: (Ah + Bh + ((l / 2 ** 32) | 0)) | 0, l: l | 0 };\n}\n// Addition with more than 2 elements\nconst add3L = (Al, Bl, Cl) => (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0);\nconst add3H = (low, Ah, Bh, Ch) => (Ah + Bh + Ch + ((low / 2 ** 32) | 0)) | 0;\nconst add4L = (Al, Bl, Cl, Dl) => (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0) + (Dl >>> 0);\nconst add4H = (low, Ah, Bh, Ch, Dh) => (Ah + Bh + Ch + Dh + ((low / 2 ** 32) | 0)) | 0;\nconst add5L = (Al, Bl, Cl, Dl, El) => (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0) + (Dl >>> 0) + (El >>> 0);\nconst add5H = (low, Ah, Bh, Ch, Dh, Eh) => (Ah + Bh + Ch + Dh + Eh + ((low / 2 ** 32) | 0)) | 0;\n// prettier-ignore\nexport { add, add3H, add3L, add4H, add4L, add5H, add5L, fromBig, rotlBH, rotlBL, rotlSH, rotlSL, rotr32H, rotr32L, rotrBH, rotrBL, rotrSH, rotrSL, shrSH, shrSL, split, toBig };\n// prettier-ignore\nconst u64 = {\n fromBig, split, toBig,\n shrSH, shrSL,\n rotrSH, rotrSL, rotrBH, rotrBL,\n rotr32H, rotr32L,\n rotlSH, rotlSL, rotlBH, rotlBL,\n add, add3L, add3H, add4L, add4H, add5H, add5L,\n};\nexport default u64;\n//# sourceMappingURL=_u64.js.map","/**\n * SHA2 hash function. A.k.a. sha256, sha384, sha512, sha512_224, sha512_256.\n * SHA256 is the fastest hash implementable in JS, even faster than Blake3.\n * Check out [RFC 4634](https://datatracker.ietf.org/doc/html/rfc4634) and\n * [FIPS 180-4](https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.180-4.pdf).\n * @module\n */\nimport { Chi, HashMD, Maj, SHA224_IV, SHA256_IV, SHA384_IV, SHA512_IV } from \"./_md.js\";\nimport * as u64 from \"./_u64.js\";\nimport { clean, createHasher, rotr } from \"./utils.js\";\n/**\n * Round constants:\n * First 32 bits of fractional parts of the cube roots of the first 64 primes 2..311)\n */\n// prettier-ignore\nconst SHA256_K = /* @__PURE__ */ Uint32Array.from([\n 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,\n 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,\n 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,\n 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,\n 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\n 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,\n 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,\n 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2\n]);\n/** Reusable temporary buffer. \"W\" comes straight from spec. */\nconst SHA256_W = /* @__PURE__ */ new Uint32Array(64);\nexport class SHA256 extends HashMD {\n constructor(outputLen = 32) {\n super(64, outputLen, 8, false);\n // We cannot use array here since array allows indexing by variable\n // which means optimizer/compiler cannot use registers.\n this.A = SHA256_IV[0] | 0;\n this.B = SHA256_IV[1] | 0;\n this.C = SHA256_IV[2] | 0;\n this.D = SHA256_IV[3] | 0;\n this.E = SHA256_IV[4] | 0;\n this.F = SHA256_IV[5] | 0;\n this.G = SHA256_IV[6] | 0;\n this.H = SHA256_IV[7] | 0;\n }\n get() {\n const { A, B, C, D, E, F, G, H } = this;\n return [A, B, C, D, E, F, G, H];\n }\n // prettier-ignore\n set(A, B, C, D, E, F, G, H) {\n this.A = A | 0;\n this.B = B | 0;\n this.C = C | 0;\n this.D = D | 0;\n this.E = E | 0;\n this.F = F | 0;\n this.G = G | 0;\n this.H = H | 0;\n }\n process(view, offset) {\n // Extend the first 16 words into the remaining 48 words w[16..63] of the message schedule array\n for (let i = 0; i < 16; i++, offset += 4)\n SHA256_W[i] = view.getUint32(offset, false);\n for (let i = 16; i < 64; i++) {\n const W15 = SHA256_W[i - 15];\n const W2 = SHA256_W[i - 2];\n const s0 = rotr(W15, 7) ^ rotr(W15, 18) ^ (W15 >>> 3);\n const s1 = rotr(W2, 17) ^ rotr(W2, 19) ^ (W2 >>> 10);\n SHA256_W[i] = (s1 + SHA256_W[i - 7] + s0 + SHA256_W[i - 16]) | 0;\n }\n // Compression function main loop, 64 rounds\n let { A, B, C, D, E, F, G, H } = this;\n for (let i = 0; i < 64; i++) {\n const sigma1 = rotr(E, 6) ^ rotr(E, 11) ^ rotr(E, 25);\n const T1 = (H + sigma1 + Chi(E, F, G) + SHA256_K[i] + SHA256_W[i]) | 0;\n const sigma0 = rotr(A, 2) ^ rotr(A, 13) ^ rotr(A, 22);\n const T2 = (sigma0 + Maj(A, B, C)) | 0;\n H = G;\n G = F;\n F = E;\n E = (D + T1) | 0;\n D = C;\n C = B;\n B = A;\n A = (T1 + T2) | 0;\n }\n // Add the compressed chunk to the current hash value\n A = (A + this.A) | 0;\n B = (B + this.B) | 0;\n C = (C + this.C) | 0;\n D = (D + this.D) | 0;\n E = (E + this.E) | 0;\n F = (F + this.F) | 0;\n G = (G + this.G) | 0;\n H = (H + this.H) | 0;\n this.set(A, B, C, D, E, F, G, H);\n }\n roundClean() {\n clean(SHA256_W);\n }\n destroy() {\n this.set(0, 0, 0, 0, 0, 0, 0, 0);\n clean(this.buffer);\n }\n}\nexport class SHA224 extends SHA256 {\n constructor() {\n super(28);\n this.A = SHA224_IV[0] | 0;\n this.B = SHA224_IV[1] | 0;\n this.C = SHA224_IV[2] | 0;\n this.D = SHA224_IV[3] | 0;\n this.E = SHA224_IV[4] | 0;\n this.F = SHA224_IV[5] | 0;\n this.G = SHA224_IV[6] | 0;\n this.H = SHA224_IV[7] | 0;\n }\n}\n// SHA2-512 is slower than sha256 in js because u64 operations are slow.\n// Round contants\n// First 32 bits of the fractional parts of the cube roots of the first 80 primes 2..409\n// prettier-ignore\nconst K512 = /* @__PURE__ */ (() => u64.split([\n '0x428a2f98d728ae22', '0x7137449123ef65cd', '0xb5c0fbcfec4d3b2f', '0xe9b5dba58189dbbc',\n '0x3956c25bf348b538', '0x59f111f1b605d019', '0x923f82a4af194f9b', '0xab1c5ed5da6d8118',\n '0xd807aa98a3030242', '0x12835b0145706fbe', '0x243185be4ee4b28c', '0x550c7dc3d5ffb4e2',\n '0x72be5d74f27b896f', '0x80deb1fe3b1696b1', '0x9bdc06a725c71235', '0xc19bf174cf692694',\n '0xe49b69c19ef14ad2', '0xefbe4786384f25e3', '0x0fc19dc68b8cd5b5', '0x240ca1cc77ac9c65',\n '0x2de92c6f592b0275', '0x4a7484aa6ea6e483', '0x5cb0a9dcbd41fbd4', '0x76f988da831153b5',\n '0x983e5152ee66dfab', '0xa831c66d2db43210', '0xb00327c898fb213f', '0xbf597fc7beef0ee4',\n '0xc6e00bf33da88fc2', '0xd5a79147930aa725', '0x06ca6351e003826f', '0x142929670a0e6e70',\n '0x27b70a8546d22ffc', '0x2e1b21385c26c926', '0x4d2c6dfc5ac42aed', '0x53380d139d95b3df',\n '0x650a73548baf63de', '0x766a0abb3c77b2a8', '0x81c2c92e47edaee6', '0x92722c851482353b',\n '0xa2bfe8a14cf10364', '0xa81a664bbc423001', '0xc24b8b70d0f89791', '0xc76c51a30654be30',\n '0xd192e819d6ef5218', '0xd69906245565a910', '0xf40e35855771202a', '0x106aa07032bbd1b8',\n '0x19a4c116b8d2d0c8', '0x1e376c085141ab53', '0x2748774cdf8eeb99', '0x34b0bcb5e19b48a8',\n '0x391c0cb3c5c95a63', '0x4ed8aa4ae3418acb', '0x5b9cca4f7763e373', '0x682e6ff3d6b2b8a3',\n '0x748f82ee5defb2fc', '0x78a5636f43172f60', '0x84c87814a1f0ab72', '0x8cc702081a6439ec',\n '0x90befffa23631e28', '0xa4506cebde82bde9', '0xbef9a3f7b2c67915', '0xc67178f2e372532b',\n '0xca273eceea26619c', '0xd186b8c721c0c207', '0xeada7dd6cde0eb1e', '0xf57d4f7fee6ed178',\n '0x06f067aa72176fba', '0x0a637dc5a2c898a6', '0x113f9804bef90dae', '0x1b710b35131c471b',\n '0x28db77f523047d84', '0x32caab7b40c72493', '0x3c9ebe0a15c9bebc', '0x431d67c49c100d4c',\n '0x4cc5d4becb3e42b6', '0x597f299cfc657e2a', '0x5fcb6fab3ad6faec', '0x6c44198c4a475817'\n].map(n => BigInt(n))))();\nconst SHA512_Kh = /* @__PURE__ */ (() => K512[0])();\nconst SHA512_Kl = /* @__PURE__ */ (() => K512[1])();\n// Reusable temporary buffers\nconst SHA512_W_H = /* @__PURE__ */ new Uint32Array(80);\nconst SHA512_W_L = /* @__PURE__ */ new Uint32Array(80);\nexport class SHA512 extends HashMD {\n constructor(outputLen = 64) {\n super(128, outputLen, 16, false);\n // We cannot use array here since array allows indexing by variable\n // which means optimizer/compiler cannot use registers.\n // h -- high 32 bits, l -- low 32 bits\n this.Ah = SHA512_IV[0] | 0;\n this.Al = SHA512_IV[1] | 0;\n this.Bh = SHA512_IV[2] | 0;\n this.Bl = SHA512_IV[3] | 0;\n this.Ch = SHA512_IV[4] | 0;\n this.Cl = SHA512_IV[5] | 0;\n this.Dh = SHA512_IV[6] | 0;\n this.Dl = SHA512_IV[7] | 0;\n this.Eh = SHA512_IV[8] | 0;\n this.El = SHA512_IV[9] | 0;\n this.Fh = SHA512_IV[10] | 0;\n this.Fl = SHA512_IV[11] | 0;\n this.Gh = SHA512_IV[12] | 0;\n this.Gl = SHA512_IV[13] | 0;\n this.Hh = SHA512_IV[14] | 0;\n this.Hl = SHA512_IV[15] | 0;\n }\n // prettier-ignore\n get() {\n const { Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl } = this;\n return [Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl];\n }\n // prettier-ignore\n set(Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl) {\n this.Ah = Ah | 0;\n this.Al = Al | 0;\n this.Bh = Bh | 0;\n this.Bl = Bl | 0;\n this.Ch = Ch | 0;\n this.Cl = Cl | 0;\n this.Dh = Dh | 0;\n this.Dl = Dl | 0;\n this.Eh = Eh | 0;\n this.El = El | 0;\n this.Fh = Fh | 0;\n this.Fl = Fl | 0;\n this.Gh = Gh | 0;\n this.Gl = Gl | 0;\n this.Hh = Hh | 0;\n this.Hl = Hl | 0;\n }\n process(view, offset) {\n // Extend the first 16 words into the remaining 64 words w[16..79] of the message schedule array\n for (let i = 0; i < 16; i++, offset += 4) {\n SHA512_W_H[i] = view.getUint32(offset);\n SHA512_W_L[i] = view.getUint32((offset += 4));\n }\n for (let i = 16; i < 80; i++) {\n // s0 := (w[i-15] rightrotate 1) xor (w[i-15] rightrotate 8) xor (w[i-15] rightshift 7)\n const W15h = SHA512_W_H[i - 15] | 0;\n const W15l = SHA512_W_L[i - 15] | 0;\n const s0h = u64.rotrSH(W15h, W15l, 1) ^ u64.rotrSH(W15h, W15l, 8) ^ u64.shrSH(W15h, W15l, 7);\n const s0l = u64.rotrSL(W15h, W15l, 1) ^ u64.rotrSL(W15h, W15l, 8) ^ u64.shrSL(W15h, W15l, 7);\n // s1 := (w[i-2] rightrotate 19) xor (w[i-2] rightrotate 61) xor (w[i-2] rightshift 6)\n const W2h = SHA512_W_H[i - 2] | 0;\n const W2l = SHA512_W_L[i - 2] | 0;\n const s1h = u64.rotrSH(W2h, W2l, 19) ^ u64.rotrBH(W2h, W2l, 61) ^ u64.shrSH(W2h, W2l, 6);\n const s1l = u64.rotrSL(W2h, W2l, 19) ^ u64.rotrBL(W2h, W2l, 61) ^ u64.shrSL(W2h, W2l, 6);\n // SHA256_W[i] = s0 + s1 + SHA256_W[i - 7] + SHA256_W[i - 16];\n const SUMl = u64.add4L(s0l, s1l, SHA512_W_L[i - 7], SHA512_W_L[i - 16]);\n const SUMh = u64.add4H(SUMl, s0h, s1h, SHA512_W_H[i - 7], SHA512_W_H[i - 16]);\n SHA512_W_H[i] = SUMh | 0;\n SHA512_W_L[i] = SUMl | 0;\n }\n let { Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl } = this;\n // Compression function main loop, 80 rounds\n for (let i = 0; i < 80; i++) {\n // S1 := (e rightrotate 14) xor (e rightrotate 18) xor (e rightrotate 41)\n const sigma1h = u64.rotrSH(Eh, El, 14) ^ u64.rotrSH(Eh, El, 18) ^ u64.rotrBH(Eh, El, 41);\n const sigma1l = u64.rotrSL(Eh, El, 14) ^ u64.rotrSL(Eh, El, 18) ^ u64.rotrBL(Eh, El, 41);\n //const T1 = (H + sigma1 + Chi(E, F, G) + SHA256_K[i] + SHA256_W[i]) | 0;\n const CHIh = (Eh & Fh) ^ (~Eh & Gh);\n const CHIl = (El & Fl) ^ (~El & Gl);\n // T1 = H + sigma1 + Chi(E, F, G) + SHA512_K[i] + SHA512_W[i]\n // prettier-ignore\n const T1ll = u64.add5L(Hl, sigma1l, CHIl, SHA512_Kl[i], SHA512_W_L[i]);\n const T1h = u64.add5H(T1ll, Hh, sigma1h, CHIh, SHA512_Kh[i], SHA512_W_H[i]);\n const T1l = T1ll | 0;\n // S0 := (a rightrotate 28) xor (a rightrotate 34) xor (a rightrotate 39)\n const sigma0h = u64.rotrSH(Ah, Al, 28) ^ u64.rotrBH(Ah, Al, 34) ^ u64.rotrBH(Ah, Al, 39);\n const sigma0l = u64.rotrSL(Ah, Al, 28) ^ u64.rotrBL(Ah, Al, 34) ^ u64.rotrBL(Ah, Al, 39);\n const MAJh = (Ah & Bh) ^ (Ah & Ch) ^ (Bh & Ch);\n const MAJl = (Al & Bl) ^ (Al & Cl) ^ (Bl & Cl);\n Hh = Gh | 0;\n Hl = Gl | 0;\n Gh = Fh | 0;\n Gl = Fl | 0;\n Fh = Eh | 0;\n Fl = El | 0;\n ({ h: Eh, l: El } = u64.add(Dh | 0, Dl | 0, T1h | 0, T1l | 0));\n Dh = Ch | 0;\n Dl = Cl | 0;\n Ch = Bh | 0;\n Cl = Bl | 0;\n Bh = Ah | 0;\n Bl = Al | 0;\n const All = u64.add3L(T1l, sigma0l, MAJl);\n Ah = u64.add3H(All, T1h, sigma0h, MAJh);\n Al = All | 0;\n }\n // Add the compressed chunk to the current hash value\n ({ h: Ah, l: Al } = u64.add(this.Ah | 0, this.Al | 0, Ah | 0, Al | 0));\n ({ h: Bh, l: Bl } = u64.add(this.Bh | 0, this.Bl | 0, Bh | 0, Bl | 0));\n ({ h: Ch, l: Cl } = u64.add(this.Ch | 0, this.Cl | 0, Ch | 0, Cl | 0));\n ({ h: Dh, l: Dl } = u64.add(this.Dh | 0, this.Dl | 0, Dh | 0, Dl | 0));\n ({ h: Eh, l: El } = u64.add(this.Eh | 0, this.El | 0, Eh | 0, El | 0));\n ({ h: Fh, l: Fl } = u64.add(this.Fh | 0, this.Fl | 0, Fh | 0, Fl | 0));\n ({ h: Gh, l: Gl } = u64.add(this.Gh | 0, this.Gl | 0, Gh | 0, Gl | 0));\n ({ h: Hh, l: Hl } = u64.add(this.Hh | 0, this.Hl | 0, Hh | 0, Hl | 0));\n this.set(Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl);\n }\n roundClean() {\n clean(SHA512_W_H, SHA512_W_L);\n }\n destroy() {\n clean(this.buffer);\n this.set(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);\n }\n}\nexport class SHA384 extends SHA512 {\n constructor() {\n super(48);\n this.Ah = SHA384_IV[0] | 0;\n this.Al = SHA384_IV[1] | 0;\n this.Bh = SHA384_IV[2] | 0;\n this.Bl = SHA384_IV[3] | 0;\n this.Ch = SHA384_IV[4] | 0;\n this.Cl = SHA384_IV[5] | 0;\n this.Dh = SHA384_IV[6] | 0;\n this.Dl = SHA384_IV[7] | 0;\n this.Eh = SHA384_IV[8] | 0;\n this.El = SHA384_IV[9] | 0;\n this.Fh = SHA384_IV[10] | 0;\n this.Fl = SHA384_IV[11] | 0;\n this.Gh = SHA384_IV[12] | 0;\n this.Gl = SHA384_IV[13] | 0;\n this.Hh = SHA384_IV[14] | 0;\n this.Hl = SHA384_IV[15] | 0;\n }\n}\n/**\n * Truncated SHA512/256 and SHA512/224.\n * SHA512_IV is XORed with 0xa5a5a5a5a5a5a5a5, then used as \"intermediary\" IV of SHA512/t.\n * Then t hashes string to produce result IV.\n * See `test/misc/sha2-gen-iv.js`.\n */\n/** SHA512/224 IV */\nconst T224_IV = /* @__PURE__ */ Uint32Array.from([\n 0x8c3d37c8, 0x19544da2, 0x73e19966, 0x89dcd4d6, 0x1dfab7ae, 0x32ff9c82, 0x679dd514, 0x582f9fcf,\n 0x0f6d2b69, 0x7bd44da8, 0x77e36f73, 0x04c48942, 0x3f9d85a8, 0x6a1d36c8, 0x1112e6ad, 0x91d692a1,\n]);\n/** SHA512/256 IV */\nconst T256_IV = /* @__PURE__ */ Uint32Array.from([\n 0x22312194, 0xfc2bf72c, 0x9f555fa3, 0xc84c64c2, 0x2393b86b, 0x6f53b151, 0x96387719, 0x5940eabd,\n 0x96283ee2, 0xa88effe3, 0xbe5e1e25, 0x53863992, 0x2b0199fc, 0x2c85b8aa, 0x0eb72ddc, 0x81c52ca2,\n]);\nexport class SHA512_224 extends SHA512 {\n constructor() {\n super(28);\n this.Ah = T224_IV[0] | 0;\n this.Al = T224_IV[1] | 0;\n this.Bh = T224_IV[2] | 0;\n this.Bl = T224_IV[3] | 0;\n this.Ch = T224_IV[4] | 0;\n this.Cl = T224_IV[5] | 0;\n this.Dh = T224_IV[6] | 0;\n this.Dl = T224_IV[7] | 0;\n this.Eh = T224_IV[8] | 0;\n this.El = T224_IV[9] | 0;\n this.Fh = T224_IV[10] | 0;\n this.Fl = T224_IV[11] | 0;\n this.Gh = T224_IV[12] | 0;\n this.Gl = T224_IV[13] | 0;\n this.Hh = T224_IV[14] | 0;\n this.Hl = T224_IV[15] | 0;\n }\n}\nexport class SHA512_256 extends SHA512 {\n constructor() {\n super(32);\n this.Ah = T256_IV[0] | 0;\n this.Al = T256_IV[1] | 0;\n this.Bh = T256_IV[2] | 0;\n this.Bl = T256_IV[3] | 0;\n this.Ch = T256_IV[4] | 0;\n this.Cl = T256_IV[5] | 0;\n this.Dh = T256_IV[6] | 0;\n this.Dl = T256_IV[7] | 0;\n this.Eh = T256_IV[8] | 0;\n this.El = T256_IV[9] | 0;\n this.Fh = T256_IV[10] | 0;\n this.Fl = T256_IV[11] | 0;\n this.Gh = T256_IV[12] | 0;\n this.Gl = T256_IV[13] | 0;\n this.Hh = T256_IV[14] | 0;\n this.Hl = T256_IV[15] | 0;\n }\n}\n/**\n * SHA2-256 hash function from RFC 4634.\n *\n * It is the fastest JS hash, even faster than Blake3.\n * To break sha256 using birthday attack, attackers need to try 2^128 hashes.\n * BTC network is doing 2^70 hashes/sec (2^95 hashes/year) as per 2025.\n */\nexport const sha256 = /* @__PURE__ */ createHasher(() => new SHA256());\n/** SHA2-224 hash function from RFC 4634 */\nexport const sha224 = /* @__PURE__ */ createHasher(() => new SHA224());\n/** SHA2-512 hash function from RFC 4634. */\nexport const sha512 = /* @__PURE__ */ createHasher(() => new SHA512());\n/** SHA2-384 hash function from RFC 4634. */\nexport const sha384 = /* @__PURE__ */ createHasher(() => new SHA384());\n/**\n * SHA2-512/256 \"truncated\" hash function, with improved resistance to length extension attacks.\n * See the paper on [truncated SHA512](https://eprint.iacr.org/2010/548.pdf).\n */\nexport const sha512_256 = /* @__PURE__ */ createHasher(() => new SHA512_256());\n/**\n * SHA2-512/224 \"truncated\" hash function, with improved resistance to length extension attacks.\n * See the paper on [truncated SHA512](https://eprint.iacr.org/2010/548.pdf).\n */\nexport const sha512_224 = /* @__PURE__ */ createHasher(() => new SHA512_224());\n//# sourceMappingURL=sha2.js.map","/*! scure-base - MIT License (c) 2022 Paul Miller (paulmillr.com) */\nfunction isBytes(a) {\n return a instanceof Uint8Array || (ArrayBuffer.isView(a) && a.constructor.name === 'Uint8Array');\n}\n/** Asserts something is Uint8Array. */\nfunction abytes(b, ...lengths) {\n if (!isBytes(b))\n throw new Error('Uint8Array expected');\n if (lengths.length > 0 && !lengths.includes(b.length))\n throw new Error('Uint8Array expected of length ' + lengths + ', got length=' + b.length);\n}\nfunction isArrayOf(isString, arr) {\n if (!Array.isArray(arr))\n return false;\n if (arr.length === 0)\n return true;\n if (isString) {\n return arr.every((item) => typeof item === 'string');\n }\n else {\n return arr.every((item) => Number.isSafeInteger(item));\n }\n}\n// no abytes: seems to have 10% slowdown. Why?!\nfunction afn(input) {\n if (typeof input !== 'function')\n throw new Error('function expected');\n return true;\n}\nfunction astr(label, input) {\n if (typeof input !== 'string')\n throw new Error(`${label}: string expected`);\n return true;\n}\nfunction anumber(n) {\n if (!Number.isSafeInteger(n))\n throw new Error(`invalid integer: ${n}`);\n}\nfunction aArr(input) {\n if (!Array.isArray(input))\n throw new Error('array expected');\n}\nfunction astrArr(label, input) {\n if (!isArrayOf(true, input))\n throw new Error(`${label}: array of strings expected`);\n}\nfunction anumArr(label, input) {\n if (!isArrayOf(false, input))\n throw new Error(`${label}: array of numbers expected`);\n}\n/**\n * @__NO_SIDE_EFFECTS__\n */\nfunction chain(...args) {\n const id = (a) => a;\n // Wrap call in closure so JIT can inline calls\n const wrap = (a, b) => (c) => a(b(c));\n // Construct chain of args[-1].encode(args[-2].encode([...]))\n const encode = args.map((x) => x.encode).reduceRight(wrap, id);\n // Construct chain of args[0].decode(args[1].decode(...))\n const decode = args.map((x) => x.decode).reduce(wrap, id);\n return { encode, decode };\n}\n/**\n * Encodes integer radix representation to array of strings using alphabet and back.\n * Could also be array of strings.\n * @__NO_SIDE_EFFECTS__\n */\nfunction alphabet(letters) {\n // mapping 1 to \"b\"\n const lettersA = typeof letters === 'string' ? letters.split('') : letters;\n const len = lettersA.length;\n astrArr('alphabet', lettersA);\n // mapping \"b\" to 1\n const indexes = new Map(lettersA.map((l, i) => [l, i]));\n return {\n encode: (digits) => {\n aArr(digits);\n return digits.map((i) => {\n if (!Number.isSafeInteger(i) || i < 0 || i >= len)\n throw new Error(`alphabet.encode: digit index outside alphabet \"${i}\". Allowed: ${letters}`);\n return lettersA[i];\n });\n },\n decode: (input) => {\n aArr(input);\n return input.map((letter) => {\n astr('alphabet.decode', letter);\n const i = indexes.get(letter);\n if (i === undefined)\n throw new Error(`Unknown letter: \"${letter}\". Allowed: ${letters}`);\n return i;\n });\n },\n };\n}\n/**\n * @__NO_SIDE_EFFECTS__\n */\nfunction join(separator = '') {\n astr('join', separator);\n return {\n encode: (from) => {\n astrArr('join.decode', from);\n return from.join(separator);\n },\n decode: (to) => {\n astr('join.decode', to);\n return to.split(separator);\n },\n };\n}\n/**\n * Pad strings array so it has integer number of bits\n * @__NO_SIDE_EFFECTS__\n */\nfunction padding(bits, chr = '=') {\n anumber(bits);\n astr('padding', chr);\n return {\n encode(data) {\n astrArr('padding.encode', data);\n while ((data.length * bits) % 8)\n data.push(chr);\n return data;\n },\n decode(input) {\n astrArr('padding.decode', input);\n let end = input.length;\n if ((end * bits) % 8)\n throw new Error('padding: invalid, string should have whole number of bytes');\n for (; end > 0 && input[end - 1] === chr; end--) {\n const last = end - 1;\n const byte = last * bits;\n if (byte % 8 === 0)\n throw new Error('padding: invalid, string has too much padding');\n }\n return input.slice(0, end);\n },\n };\n}\n/**\n * @__NO_SIDE_EFFECTS__\n */\nfunction normalize(fn) {\n afn(fn);\n return { encode: (from) => from, decode: (to) => fn(to) };\n}\n/**\n * Slow: O(n^2) time complexity\n */\nfunction convertRadix(data, from, to) {\n // base 1 is impossible\n if (from < 2)\n throw new Error(`convertRadix: invalid from=${from}, base cannot be less than 2`);\n if (to < 2)\n throw new Error(`convertRadix: invalid to=${to}, base cannot be less than 2`);\n aArr(data);\n if (!data.length)\n return [];\n let pos = 0;\n const res = [];\n const digits = Array.from(data, (d) => {\n anumber(d);\n if (d < 0 || d >= from)\n throw new Error(`invalid integer: ${d}`);\n return d;\n });\n const dlen = digits.length;\n while (true) {\n let carry = 0;\n let done = true;\n for (let i = pos; i < dlen; i++) {\n const digit = digits[i];\n const fromCarry = from * carry;\n const digitBase = fromCarry + digit;\n if (!Number.isSafeInteger(digitBase) ||\n fromCarry / from !== carry ||\n digitBase - digit !== fromCarry) {\n throw new Error('convertRadix: carry overflow');\n }\n const div = digitBase / to;\n carry = digitBase % to;\n const rounded = Math.floor(div);\n digits[i] = rounded;\n if (!Number.isSafeInteger(rounded) || rounded * to + carry !== digitBase)\n throw new Error('convertRadix: carry overflow');\n if (!done)\n continue;\n else if (!rounded)\n pos = i;\n else\n done = false;\n }\n res.push(carry);\n if (done)\n break;\n }\n for (let i = 0; i < data.length - 1 && data[i] === 0; i++)\n res.push(0);\n return res.reverse();\n}\nconst gcd = (a, b) => (b === 0 ? a : gcd(b, a % b));\nconst radix2carry = /* @__NO_SIDE_EFFECTS__ */ (from, to) => from + (to - gcd(from, to));\nconst powers = /* @__PURE__ */ (() => {\n let res = [];\n for (let i = 0; i < 40; i++)\n res.push(2 ** i);\n return res;\n})();\n/**\n * Implemented with numbers, because BigInt is 5x slower\n */\nfunction convertRadix2(data, from, to, padding) {\n aArr(data);\n if (from <= 0 || from > 32)\n throw new Error(`convertRadix2: wrong from=${from}`);\n if (to <= 0 || to > 32)\n throw new Error(`convertRadix2: wrong to=${to}`);\n if (radix2carry(from, to) > 32) {\n throw new Error(`convertRadix2: carry overflow from=${from} to=${to} carryBits=${radix2carry(from, to)}`);\n }\n let carry = 0;\n let pos = 0; // bitwise position in current element\n const max = powers[from];\n const mask = powers[to] - 1;\n const res = [];\n for (const n of data) {\n anumber(n);\n if (n >= max)\n throw new Error(`convertRadix2: invalid data word=${n} from=${from}`);\n carry = (carry << from) | n;\n if (pos + from > 32)\n throw new Error(`convertRadix2: carry overflow pos=${pos} from=${from}`);\n pos += from;\n for (; pos >= to; pos -= to)\n res.push(((carry >> (pos - to)) & mask) >>> 0);\n const pow = powers[pos];\n if (pow === undefined)\n throw new Error('invalid carry');\n carry &= pow - 1; // clean carry, otherwise it will cause overflow\n }\n carry = (carry << (to - pos)) & mask;\n if (!padding && pos >= from)\n throw new Error('Excess padding');\n if (!padding && carry > 0)\n throw new Error(`Non-zero padding: ${carry}`);\n if (padding && pos > 0)\n res.push(carry >>> 0);\n return res;\n}\n/**\n * @__NO_SIDE_EFFECTS__\n */\nfunction radix(num) {\n anumber(num);\n const _256 = 2 ** 8;\n return {\n encode: (bytes) => {\n if (!isBytes(bytes))\n throw new Error('radix.encode input should be Uint8Array');\n return convertRadix(Array.from(bytes), _256, num);\n },\n decode: (digits) => {\n anumArr('radix.decode', digits);\n return Uint8Array.from(convertRadix(digits, num, _256));\n },\n };\n}\n/**\n * If both bases are power of same number (like `2**8 <-> 2**64`),\n * there is a linear algorithm. For now we have implementation for power-of-two bases only.\n * @__NO_SIDE_EFFECTS__\n */\nfunction radix2(bits, revPadding = false) {\n anumber(bits);\n if (bits <= 0 || bits > 32)\n throw new Error('radix2: bits should be in (0..32]');\n if (radix2carry(8, bits) > 32 || radix2carry(bits, 8) > 32)\n throw new Error('radix2: carry overflow');\n return {\n encode: (bytes) => {\n if (!isBytes(bytes))\n throw new Error('radix2.encode input should be Uint8Array');\n return convertRadix2(Array.from(bytes), 8, bits, !revPadding);\n },\n decode: (digits) => {\n anumArr('radix2.decode', digits);\n return Uint8Array.from(convertRadix2(digits, bits, 8, revPadding));\n },\n };\n}\nfunction unsafeWrapper(fn) {\n afn(fn);\n return function (...args) {\n try {\n return fn.apply(null, args);\n }\n catch (e) { }\n };\n}\nfunction checksum(len, fn) {\n anumber(len);\n afn(fn);\n return {\n encode(data) {\n if (!isBytes(data))\n throw new Error('checksum.encode: input should be Uint8Array');\n const sum = fn(data).slice(0, len);\n const res = new Uint8Array(data.length + len);\n res.set(data);\n res.set(sum, data.length);\n return res;\n },\n decode(data) {\n if (!isBytes(data))\n throw new Error('checksum.decode: input should be Uint8Array');\n const payload = data.slice(0, -len);\n const oldChecksum = data.slice(-len);\n const newChecksum = fn(payload).slice(0, len);\n for (let i = 0; i < len; i++)\n if (newChecksum[i] !== oldChecksum[i])\n throw new Error('Invalid checksum');\n return payload;\n },\n };\n}\n// prettier-ignore\nexport const utils = {\n alphabet, chain, checksum, convertRadix, convertRadix2, radix, radix2, join, padding,\n};\n// RFC 4648 aka RFC 3548\n// ---------------------\n/**\n * base16 encoding from RFC 4648.\n * @example\n * ```js\n * base16.encode(Uint8Array.from([0x12, 0xab]));\n * // => '12AB'\n * ```\n */\nexport const base16 = chain(radix2(4), alphabet('0123456789ABCDEF'), join(''));\n/**\n * base32 encoding from RFC 4648. Has padding.\n * Use `base32nopad` for unpadded version.\n * Also check out `base32hex`, `base32hexnopad`, `base32crockford`.\n * @example\n * ```js\n * base32.encode(Uint8Array.from([0x12, 0xab]));\n * // => 'CKVQ===='\n * base32.decode('CKVQ====');\n * // => Uint8Array.from([0x12, 0xab])\n * ```\n */\nexport const base32 = chain(radix2(5), alphabet('ABCDEFGHIJKLMNOPQRSTUVWXYZ234567'), padding(5), join(''));\n/**\n * base32 encoding from RFC 4648. No padding.\n * Use `base32` for padded version.\n * Also check out `base32hex`, `base32hexnopad`, `base32crockford`.\n * @example\n * ```js\n * base32nopad.encode(Uint8Array.from([0x12, 0xab]));\n * // => 'CKVQ'\n * base32nopad.decode('CKVQ');\n * // => Uint8Array.from([0x12, 0xab])\n * ```\n */\nexport const base32nopad = chain(radix2(5), alphabet('ABCDEFGHIJKLMNOPQRSTUVWXYZ234567'), join(''));\n/**\n * base32 encoding from RFC 4648. Padded. Compared to ordinary `base32`, slightly different alphabet.\n * Use `base32hexnopad` for unpadded version.\n * @example\n * ```js\n * base32hex.encode(Uint8Array.from([0x12, 0xab]));\n * // => '2ALG===='\n * base32hex.decode('2ALG====');\n * // => Uint8Array.from([0x12, 0xab])\n * ```\n */\nexport const base32hex = chain(radix2(5), alphabet('0123456789ABCDEFGHIJKLMNOPQRSTUV'), padding(5), join(''));\n/**\n * base32 encoding from RFC 4648. No padding. Compared to ordinary `base32`, slightly different alphabet.\n * Use `base32hex` for padded version.\n * @example\n * ```js\n * base32hexnopad.encode(Uint8Array.from([0x12, 0xab]));\n * // => '2ALG'\n * base32hexnopad.decode('2ALG');\n * // => Uint8Array.from([0x12, 0xab])\n * ```\n */\nexport const base32hexnopad = chain(radix2(5), alphabet('0123456789ABCDEFGHIJKLMNOPQRSTUV'), join(''));\n/**\n * base32 encoding from RFC 4648. Doug Crockford's version.\n * https://www.crockford.com/base32.html\n * @example\n * ```js\n * base32crockford.encode(Uint8Array.from([0x12, 0xab]));\n * // => '2ANG'\n * base32crockford.decode('2ANG');\n * // => Uint8Array.from([0x12, 0xab])\n * ```\n */\nexport const base32crockford = chain(radix2(5), alphabet('0123456789ABCDEFGHJKMNPQRSTVWXYZ'), join(''), normalize((s) => s.toUpperCase().replace(/O/g, '0').replace(/[IL]/g, '1')));\n// Built-in base64 conversion https://caniuse.com/mdn-javascript_builtins_uint8array_frombase64\n// prettier-ignore\nconst hasBase64Builtin = /* @__PURE__ */ (() => typeof Uint8Array.from([]).toBase64 === 'function' &&\n typeof Uint8Array.fromBase64 === 'function')();\nconst decodeBase64Builtin = (s, isUrl) => {\n astr('base64', s);\n const re = isUrl ? /^[A-Za-z0-9=_-]+$/ : /^[A-Za-z0-9=+/]+$/;\n const alphabet = isUrl ? 'base64url' : 'base64';\n if (s.length > 0 && !re.test(s))\n throw new Error('invalid base64');\n return Uint8Array.fromBase64(s, { alphabet, lastChunkHandling: 'strict' });\n};\n/**\n * base64 from RFC 4648. Padded.\n * Use `base64nopad` for unpadded version.\n * Also check out `base64url`, `base64urlnopad`.\n * Falls back to built-in function, when available.\n * @example\n * ```js\n * base64.encode(Uint8Array.from([0x12, 0xab]));\n * // => 'Eqs='\n * base64.decode('Eqs=');\n * // => Uint8Array.from([0x12, 0xab])\n * ```\n */\n// prettier-ignore\nexport const base64 = hasBase64Builtin ? {\n encode(b) { abytes(b); return b.toBase64(); },\n decode(s) { return decodeBase64Builtin(s, false); },\n} : chain(radix2(6), alphabet('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'), padding(6), join(''));\n/**\n * base64 from RFC 4648. No padding.\n * Use `base64` for padded version.\n * @example\n * ```js\n * base64nopad.encode(Uint8Array.from([0x12, 0xab]));\n * // => 'Eqs'\n * base64nopad.decode('Eqs');\n * // => Uint8Array.from([0x12, 0xab])\n * ```\n */\nexport const base64nopad = chain(radix2(6), alphabet('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'), join(''));\n/**\n * base64 from RFC 4648, using URL-safe alphabet. Padded.\n * Use `base64urlnopad` for unpadded version.\n * Falls back to built-in function, when available.\n * @example\n * ```js\n * base64url.encode(Uint8Array.from([0x12, 0xab]));\n * // => 'Eqs='\n * base64url.decode('Eqs=');\n * // => Uint8Array.from([0x12, 0xab])\n * ```\n */\n// prettier-ignore\nexport const base64url = hasBase64Builtin ? {\n encode(b) { abytes(b); return b.toBase64({ alphabet: 'base64url' }); },\n decode(s) { return decodeBase64Builtin(s, true); },\n} : chain(radix2(6), alphabet('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_'), padding(6), join(''));\n/**\n * base64 from RFC 4648, using URL-safe alphabet. No padding.\n * Use `base64url` for padded version.\n * @example\n * ```js\n * base64urlnopad.encode(Uint8Array.from([0x12, 0xab]));\n * // => 'Eqs'\n * base64urlnopad.decode('Eqs');\n * // => Uint8Array.from([0x12, 0xab])\n * ```\n */\nexport const base64urlnopad = chain(radix2(6), alphabet('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_'), join(''));\n// base58 code\n// -----------\nconst genBase58 = /* @__NO_SIDE_EFFECTS__ */ (abc) => chain(radix(58), alphabet(abc), join(''));\n/**\n * base58: base64 without ambigous characters +, /, 0, O, I, l.\n * Quadratic (O(n^2)) - so, can't be used on large inputs.\n * @example\n * ```js\n * base58.decode('01abcdef');\n * // => '3UhJW'\n * ```\n */\nexport const base58 = genBase58('123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz');\n/**\n * base58: flickr version. Check out `base58`.\n */\nexport const base58flickr = genBase58('123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ');\n/**\n * base58: XRP version. Check out `base58`.\n */\nexport const base58xrp = genBase58('rpshnaf39wBUDNEGHJKLM4PQRST7VWXYZ2bcdeCg65jkm8oFqi1tuvAxyz');\n// Data len (index) -> encoded block len\nconst XMR_BLOCK_LEN = [0, 2, 3, 5, 6, 7, 9, 10, 11];\n/**\n * base58: XMR version. Check out `base58`.\n * Done in 8-byte blocks (which equals 11 chars in decoding). Last (non-full) block padded with '1' to size in XMR_BLOCK_LEN.\n * Block encoding significantly reduces quadratic complexity of base58.\n */\nexport const base58xmr = {\n encode(data) {\n let res = '';\n for (let i = 0; i < data.length; i += 8) {\n const block = data.subarray(i, i + 8);\n res += base58.encode(block).padStart(XMR_BLOCK_LEN[block.length], '1');\n }\n return res;\n },\n decode(str) {\n let res = [];\n for (let i = 0; i < str.length; i += 11) {\n const slice = str.slice(i, i + 11);\n const blockLen = XMR_BLOCK_LEN.indexOf(slice.length);\n const block = base58.decode(slice);\n for (let j = 0; j < block.length - blockLen; j++) {\n if (block[j] !== 0)\n throw new Error('base58xmr: wrong padding');\n }\n res = res.concat(Array.from(block.slice(block.length - blockLen)));\n }\n return Uint8Array.from(res);\n },\n};\n/**\n * Method, which creates base58check encoder.\n * Requires function, calculating sha256.\n */\nexport const createBase58check = (sha256) => chain(checksum(4, (data) => sha256(sha256(data))), base58);\n/**\n * Use `createBase58check` instead.\n * @deprecated\n */\nexport const base58check = createBase58check;\nconst BECH_ALPHABET = chain(alphabet('qpzry9x8gf2tvdw0s3jn54khce6mua7l'), join(''));\nconst POLYMOD_GENERATORS = [0x3b6a57b2, 0x26508e6d, 0x1ea119fa, 0x3d4233dd, 0x2a1462b3];\nfunction bech32Polymod(pre) {\n const b = pre >> 25;\n let chk = (pre & 0x1ffffff) << 5;\n for (let i = 0; i < POLYMOD_GENERATORS.length; i++) {\n if (((b >> i) & 1) === 1)\n chk ^= POLYMOD_GENERATORS[i];\n }\n return chk;\n}\nfunction bechChecksum(prefix, words, encodingConst = 1) {\n const len = prefix.length;\n let chk = 1;\n for (let i = 0; i < len; i++) {\n const c = prefix.charCodeAt(i);\n if (c < 33 || c > 126)\n throw new Error(`Invalid prefix (${prefix})`);\n chk = bech32Polymod(chk) ^ (c >> 5);\n }\n chk = bech32Polymod(chk);\n for (let i = 0; i < len; i++)\n chk = bech32Polymod(chk) ^ (prefix.charCodeAt(i) & 0x1f);\n for (let v of words)\n chk = bech32Polymod(chk) ^ v;\n for (let i = 0; i < 6; i++)\n chk = bech32Polymod(chk);\n chk ^= encodingConst;\n return BECH_ALPHABET.encode(convertRadix2([chk % powers[30]], 30, 5, false));\n}\n/**\n * @__NO_SIDE_EFFECTS__\n */\nfunction genBech32(encoding) {\n const ENCODING_CONST = encoding === 'bech32' ? 1 : 0x2bc830a3;\n const _words = radix2(5);\n const fromWords = _words.decode;\n const toWords = _words.encode;\n const fromWordsUnsafe = unsafeWrapper(fromWords);\n function encode(prefix, words, limit = 90) {\n astr('bech32.encode prefix', prefix);\n if (isBytes(words))\n words = Array.from(words);\n anumArr('bech32.encode', words);\n const plen = prefix.length;\n if (plen === 0)\n throw new TypeError(`Invalid prefix length ${plen}`);\n const actualLength = plen + 7 + words.length;\n if (limit !== false && actualLength > limit)\n throw new TypeError(`Length ${actualLength} exceeds limit ${limit}`);\n const lowered = prefix.toLowerCase();\n const sum = bechChecksum(lowered, words, ENCODING_CONST);\n return `${lowered}1${BECH_ALPHABET.encode(words)}${sum}`;\n }\n function decode(str, limit = 90) {\n astr('bech32.decode input', str);\n const slen = str.length;\n if (slen < 8 || (limit !== false && slen > limit))\n throw new TypeError(`invalid string length: ${slen} (${str}). Expected (8..${limit})`);\n // don't allow mixed case\n const lowered = str.toLowerCase();\n if (str !== lowered && str !== str.toUpperCase())\n throw new Error(`String must be lowercase or uppercase`);\n const sepIndex = lowered.lastIndexOf('1');\n if (sepIndex === 0 || sepIndex === -1)\n throw new Error(`Letter \"1\" must be present between prefix and data only`);\n const prefix = lowered.slice(0, sepIndex);\n const data = lowered.slice(sepIndex + 1);\n if (data.length < 6)\n throw new Error('Data must be at least 6 characters long');\n const words = BECH_ALPHABET.decode(data).slice(0, -6);\n const sum = bechChecksum(prefix, words, ENCODING_CONST);\n if (!data.endsWith(sum))\n throw new Error(`Invalid checksum in ${str}: expected \"${sum}\"`);\n return { prefix, words };\n }\n const decodeUnsafe = unsafeWrapper(decode);\n function decodeToBytes(str) {\n const { prefix, words } = decode(str, false);\n return { prefix, words, bytes: fromWords(words) };\n }\n function encodeFromBytes(prefix, bytes) {\n return encode(prefix, toWords(bytes));\n }\n return {\n encode,\n decode,\n encodeFromBytes,\n decodeToBytes,\n decodeUnsafe,\n fromWords,\n fromWordsUnsafe,\n toWords,\n };\n}\n/**\n * bech32 from BIP 173. Operates on words.\n * For high-level, check out scure-btc-signer:\n * https://github.com/paulmillr/scure-btc-signer.\n */\nexport const bech32 = genBech32('bech32');\n/**\n * bech32m from BIP 350. Operates on words.\n * It was to mitigate `bech32` weaknesses.\n * For high-level, check out scure-btc-signer:\n * https://github.com/paulmillr/scure-btc-signer.\n */\nexport const bech32m = genBech32('bech32m');\n/**\n * UTF-8-to-byte decoder. Uses built-in TextDecoder / TextEncoder.\n * @example\n * ```js\n * const b = utf8.decode(\"hey\"); // => new Uint8Array([ 104, 101, 121 ])\n * const str = utf8.encode(b); // \"hey\"\n * ```\n */\nexport const utf8 = {\n encode: (data) => new TextDecoder().decode(data),\n decode: (str) => new TextEncoder().encode(str),\n};\n// Built-in hex conversion https://caniuse.com/mdn-javascript_builtins_uint8array_fromhex\n// prettier-ignore\nconst hasHexBuiltin = /* @__PURE__ */ (() => typeof Uint8Array.from([]).toHex === 'function' &&\n typeof Uint8Array.fromHex === 'function')();\n// prettier-ignore\nconst hexBuiltin = {\n encode(data) { abytes(data); return data.toHex(); },\n decode(s) { astr('hex', s); return Uint8Array.fromHex(s); },\n};\n/**\n * hex string decoder. Uses built-in function, when available.\n * @example\n * ```js\n * const b = hex.decode(\"0102ff\"); // => new Uint8Array([ 1, 2, 255 ])\n * const str = hex.encode(b); // \"0102ff\"\n * ```\n */\nexport const hex = hasHexBuiltin\n ? hexBuiltin\n : chain(radix2(4), alphabet('0123456789abcdef'), join(''), normalize((s) => {\n if (typeof s !== 'string' || s.length % 2 !== 0)\n throw new TypeError(`hex.decode: expected string, got ${typeof s} with length ${s.length}`);\n return s.toLowerCase();\n }));\n// prettier-ignore\nconst CODERS = {\n utf8, hex, base16, base32, base64, base64url, base58, base58xmr\n};\nconst coderTypeError = 'Invalid encoding type. Available types: utf8, hex, base16, base32, base64, base64url, base58, base58xmr';\n/** @deprecated */\nexport const bytesToString = (type, bytes) => {\n if (typeof type !== 'string' || !CODERS.hasOwnProperty(type))\n throw new TypeError(coderTypeError);\n if (!isBytes(bytes))\n throw new TypeError('bytesToString() expects Uint8Array');\n return CODERS[type].encode(bytes);\n};\n/** @deprecated */\nexport const str = bytesToString; // as in python, but for bytes only\n/** @deprecated */\nexport const stringToBytes = (type, str) => {\n if (!CODERS.hasOwnProperty(type))\n throw new TypeError(coderTypeError);\n if (typeof str !== 'string')\n throw new TypeError('stringToBytes() expects string');\n return CODERS[type].decode(str);\n};\n/** @deprecated */\nexport const bytes = stringToBytes;\n//# sourceMappingURL=index.js.map","/**\n * Audited & minimal JS implementation of\n * [BIP39 mnemonic phrases](https://github.com/bitcoin/bips/blob/master/bip-0039.mediawiki).\n * @module\n * @example\n```js\nimport * as bip39 from '@scure/bip39';\nimport { wordlist } from '@scure/bip39/wordlists/english';\nconst mn = bip39.generateMnemonic(wordlist);\nconsole.log(mn);\nconst ent = bip39.mnemonicToEntropy(mn, wordlist)\nbip39.entropyToMnemonic(ent, wordlist);\nbip39.validateMnemonic(mn, wordlist);\nawait bip39.mnemonicToSeed(mn, 'password');\nbip39.mnemonicToSeedSync(mn, 'password');\n\n// Wordlists\nimport { wordlist as czech } from '@scure/bip39/wordlists/czech';\nimport { wordlist as english } from '@scure/bip39/wordlists/english';\nimport { wordlist as french } from '@scure/bip39/wordlists/french';\nimport { wordlist as italian } from '@scure/bip39/wordlists/italian';\nimport { wordlist as japanese } from '@scure/bip39/wordlists/japanese';\nimport { wordlist as korean } from '@scure/bip39/wordlists/korean';\nimport { wordlist as portuguese } from '@scure/bip39/wordlists/portuguese';\nimport { wordlist as simplifiedChinese } from '@scure/bip39/wordlists/simplified-chinese';\nimport { wordlist as spanish } from '@scure/bip39/wordlists/spanish';\nimport { wordlist as traditionalChinese } from '@scure/bip39/wordlists/traditional-chinese';\n```\n */\n/*! scure-bip39 - MIT License (c) 2022 Patricio Palladino, Paul Miller (paulmillr.com) */\nimport { pbkdf2, pbkdf2Async } from '@noble/hashes/pbkdf2';\nimport { sha256, sha512 } from '@noble/hashes/sha2';\nimport { abytes, anumber, randomBytes } from '@noble/hashes/utils';\nimport { utils as baseUtils } from '@scure/base';\n// Japanese wordlist\nconst isJapanese = (wordlist) => wordlist[0] === '\\u3042\\u3044\\u3053\\u304f\\u3057\\u3093';\n// Normalization replaces equivalent sequences of characters\n// so that any two texts that are equivalent will be reduced\n// to the same sequence of code points, called the normal form of the original text.\n// https://tonsky.me/blog/unicode/#why-is-a----\nfunction nfkd(str) {\n if (typeof str !== 'string')\n throw new TypeError('invalid mnemonic type: ' + typeof str);\n return str.normalize('NFKD');\n}\nfunction normalize(str) {\n const norm = nfkd(str);\n const words = norm.split(' ');\n if (![12, 15, 18, 21, 24].includes(words.length))\n throw new Error('Invalid mnemonic');\n return { nfkd: norm, words };\n}\nfunction aentropy(ent) {\n abytes(ent, 16, 20, 24, 28, 32);\n}\n/**\n * Generate x random words. Uses Cryptographically-Secure Random Number Generator.\n * @param wordlist imported wordlist for specific language\n * @param strength mnemonic strength 128-256 bits\n * @example\n * generateMnemonic(wordlist, 128)\n * // 'legal winner thank year wave sausage worth useful legal winner thank yellow'\n */\nexport function generateMnemonic(wordlist, strength = 128) {\n anumber(strength);\n if (strength % 32 !== 0 || strength > 256)\n throw new TypeError('Invalid entropy');\n return entropyToMnemonic(randomBytes(strength / 8), wordlist);\n}\nconst calcChecksum = (entropy) => {\n // Checksum is ent.length/4 bits long\n const bitsLeft = 8 - entropy.length / 4;\n // Zero rightmost \"bitsLeft\" bits in byte\n // For example: bitsLeft=4 val=10111101 -> 10110000\n return new Uint8Array([(sha256(entropy)[0] >> bitsLeft) << bitsLeft]);\n};\nfunction getCoder(wordlist) {\n if (!Array.isArray(wordlist) || wordlist.length !== 2048 || typeof wordlist[0] !== 'string')\n throw new Error('Wordlist: expected array of 2048 strings');\n wordlist.forEach((i) => {\n if (typeof i !== 'string')\n throw new Error('wordlist: non-string element: ' + i);\n });\n return baseUtils.chain(baseUtils.checksum(1, calcChecksum), baseUtils.radix2(11, true), baseUtils.alphabet(wordlist));\n}\n/**\n * Reversible: Converts mnemonic string to raw entropy in form of byte array.\n * @param mnemonic 12-24 words\n * @param wordlist imported wordlist for specific language\n * @example\n * const mnem = 'legal winner thank year wave sausage worth useful legal winner thank yellow';\n * mnemonicToEntropy(mnem, wordlist)\n * // Produces\n * new Uint8Array([\n * 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f,\n * 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f\n * ])\n */\nexport function mnemonicToEntropy(mnemonic, wordlist) {\n const { words } = normalize(mnemonic);\n const entropy = getCoder(wordlist).decode(words);\n aentropy(entropy);\n return entropy;\n}\n/**\n * Reversible: Converts raw entropy in form of byte array to mnemonic string.\n * @param entropy byte array\n * @param wordlist imported wordlist for specific language\n * @returns 12-24 words\n * @example\n * const ent = new Uint8Array([\n * 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f,\n * 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f\n * ]);\n * entropyToMnemonic(ent, wordlist);\n * // 'legal winner thank year wave sausage worth useful legal winner thank yellow'\n */\nexport function entropyToMnemonic(entropy, wordlist) {\n aentropy(entropy);\n const words = getCoder(wordlist).encode(entropy);\n return words.join(isJapanese(wordlist) ? '\\u3000' : ' ');\n}\n/**\n * Validates mnemonic for being 12-24 words contained in `wordlist`.\n */\nexport function validateMnemonic(mnemonic, wordlist) {\n try {\n mnemonicToEntropy(mnemonic, wordlist);\n }\n catch (e) {\n return false;\n }\n return true;\n}\nconst psalt = (passphrase) => nfkd('mnemonic' + passphrase);\n/**\n * Irreversible: Uses KDF to derive 64 bytes of key data from mnemonic + optional password.\n * @param mnemonic 12-24 words\n * @param passphrase string that will additionally protect the key\n * @returns 64 bytes of key data\n * @example\n * const mnem = 'legal winner thank year wave sausage worth useful legal winner thank yellow';\n * await mnemonicToSeed(mnem, 'password');\n * // new Uint8Array([...64 bytes])\n */\nexport function mnemonicToSeed(mnemonic, passphrase = '') {\n return pbkdf2Async(sha512, normalize(mnemonic).nfkd, psalt(passphrase), { c: 2048, dkLen: 64 });\n}\n/**\n * Irreversible: Uses KDF to derive 64 bytes of key data from mnemonic + optional password.\n * @param mnemonic 12-24 words\n * @param passphrase string that will additionally protect the key\n * @returns 64 bytes of key data\n * @example\n * const mnem = 'legal winner thank year wave sausage worth useful legal winner thank yellow';\n * mnemonicToSeedSync(mnem, 'password');\n * // new Uint8Array([...64 bytes])\n */\nexport function mnemonicToSeedSync(mnemonic, passphrase = '') {\n return pbkdf2(sha512, normalize(mnemonic).nfkd, psalt(passphrase), { c: 2048, dkLen: 64 });\n}\n","export const wordlist = `abandon\nability\nable\nabout\nabove\nabsent\nabsorb\nabstract\nabsurd\nabuse\naccess\naccident\naccount\naccuse\nachieve\nacid\nacoustic\nacquire\nacross\nact\naction\nactor\nactress\nactual\nadapt\nadd\naddict\naddress\nadjust\nadmit\nadult\nadvance\nadvice\naerobic\naffair\nafford\nafraid\nagain\nage\nagent\nagree\nahead\naim\nair\nairport\naisle\nalarm\nalbum\nalcohol\nalert\nalien\nall\nalley\nallow\nalmost\nalone\nalpha\nalready\nalso\nalter\nalways\namateur\namazing\namong\namount\namused\nanalyst\nanchor\nancient\nanger\nangle\nangry\nanimal\nankle\nannounce\nannual\nanother\nanswer\nantenna\nantique\nanxiety\nany\napart\napology\nappear\napple\napprove\napril\narch\narctic\narea\narena\nargue\narm\narmed\narmor\narmy\naround\narrange\narrest\narrive\narrow\nart\nartefact\nartist\nartwork\nask\naspect\nassault\nasset\nassist\nassume\nasthma\nathlete\natom\nattack\nattend\nattitude\nattract\nauction\naudit\naugust\naunt\nauthor\nauto\nautumn\naverage\navocado\navoid\nawake\naware\naway\nawesome\nawful\nawkward\naxis\nbaby\nbachelor\nbacon\nbadge\nbag\nbalance\nbalcony\nball\nbamboo\nbanana\nbanner\nbar\nbarely\nbargain\nbarrel\nbase\nbasic\nbasket\nbattle\nbeach\nbean\nbeauty\nbecause\nbecome\nbeef\nbefore\nbegin\nbehave\nbehind\nbelieve\nbelow\nbelt\nbench\nbenefit\nbest\nbetray\nbetter\nbetween\nbeyond\nbicycle\nbid\nbike\nbind\nbiology\nbird\nbirth\nbitter\nblack\nblade\nblame\nblanket\nblast\nbleak\nbless\nblind\nblood\nblossom\nblouse\nblue\nblur\nblush\nboard\nboat\nbody\nboil\nbomb\nbone\nbonus\nbook\nboost\nborder\nboring\nborrow\nboss\nbottom\nbounce\nbox\nboy\nbracket\nbrain\nbrand\nbrass\nbrave\nbread\nbreeze\nbrick\nbridge\nbrief\nbright\nbring\nbrisk\nbroccoli\nbroken\nbronze\nbroom\nbrother\nbrown\nbrush\nbubble\nbuddy\nbudget\nbuffalo\nbuild\nbulb\nbulk\nbullet\nbundle\nbunker\nburden\nburger\nburst\nbus\nbusiness\nbusy\nbutter\nbuyer\nbuzz\ncabbage\ncabin\ncable\ncactus\ncage\ncake\ncall\ncalm\ncamera\ncamp\ncan\ncanal\ncancel\ncandy\ncannon\ncanoe\ncanvas\ncanyon\ncapable\ncapital\ncaptain\ncar\ncarbon\ncard\ncargo\ncarpet\ncarry\ncart\ncase\ncash\ncasino\ncastle\ncasual\ncat\ncatalog\ncatch\ncategory\ncattle\ncaught\ncause\ncaution\ncave\nceiling\ncelery\ncement\ncensus\ncentury\ncereal\ncertain\nchair\nchalk\nchampion\nchange\nchaos\nchapter\ncharge\nchase\nchat\ncheap\ncheck\ncheese\nchef\ncherry\nchest\nchicken\nchief\nchild\nchimney\nchoice\nchoose\nchronic\nchuckle\nchunk\nchurn\ncigar\ncinnamon\ncircle\ncitizen\ncity\ncivil\nclaim\nclap\nclarify\nclaw\nclay\nclean\nclerk\nclever\nclick\nclient\ncliff\nclimb\nclinic\nclip\nclock\nclog\nclose\ncloth\ncloud\nclown\nclub\nclump\ncluster\nclutch\ncoach\ncoast\ncoconut\ncode\ncoffee\ncoil\ncoin\ncollect\ncolor\ncolumn\ncombine\ncome\ncomfort\ncomic\ncommon\ncompany\nconcert\nconduct\nconfirm\ncongress\nconnect\nconsider\ncontrol\nconvince\ncook\ncool\ncopper\ncopy\ncoral\ncore\ncorn\ncorrect\ncost\ncotton\ncouch\ncountry\ncouple\ncourse\ncousin\ncover\ncoyote\ncrack\ncradle\ncraft\ncram\ncrane\ncrash\ncrater\ncrawl\ncrazy\ncream\ncredit\ncreek\ncrew\ncricket\ncrime\ncrisp\ncritic\ncrop\ncross\ncrouch\ncrowd\ncrucial\ncruel\ncruise\ncrumble\ncrunch\ncrush\ncry\ncrystal\ncube\nculture\ncup\ncupboard\ncurious\ncurrent\ncurtain\ncurve\ncushion\ncustom\ncute\ncycle\ndad\ndamage\ndamp\ndance\ndanger\ndaring\ndash\ndaughter\ndawn\nday\ndeal\ndebate\ndebris\ndecade\ndecember\ndecide\ndecline\ndecorate\ndecrease\ndeer\ndefense\ndefine\ndefy\ndegree\ndelay\ndeliver\ndemand\ndemise\ndenial\ndentist\ndeny\ndepart\ndepend\ndeposit\ndepth\ndeputy\nderive\ndescribe\ndesert\ndesign\ndesk\ndespair\ndestroy\ndetail\ndetect\ndevelop\ndevice\ndevote\ndiagram\ndial\ndiamond\ndiary\ndice\ndiesel\ndiet\ndiffer\ndigital\ndignity\ndilemma\ndinner\ndinosaur\ndirect\ndirt\ndisagree\ndiscover\ndisease\ndish\ndismiss\ndisorder\ndisplay\ndistance\ndivert\ndivide\ndivorce\ndizzy\ndoctor\ndocument\ndog\ndoll\ndolphin\ndomain\ndonate\ndonkey\ndonor\ndoor\ndose\ndouble\ndove\ndraft\ndragon\ndrama\ndrastic\ndraw\ndream\ndress\ndrift\ndrill\ndrink\ndrip\ndrive\ndrop\ndrum\ndry\nduck\ndumb\ndune\nduring\ndust\ndutch\nduty\ndwarf\ndynamic\neager\neagle\nearly\nearn\nearth\neasily\neast\neasy\necho\necology\neconomy\nedge\nedit\neducate\neffort\negg\neight\neither\nelbow\nelder\nelectric\nelegant\nelement\nelephant\nelevator\nelite\nelse\nembark\nembody\nembrace\nemerge\nemotion\nemploy\nempower\nempty\nenable\nenact\nend\nendless\nendorse\nenemy\nenergy\nenforce\nengage\nengine\nenhance\nenjoy\nenlist\nenough\nenrich\nenroll\nensure\nenter\nentire\nentry\nenvelope\nepisode\nequal\nequip\nera\nerase\nerode\nerosion\nerror\nerupt\nescape\nessay\nessence\nestate\neternal\nethics\nevidence\nevil\nevoke\nevolve\nexact\nexample\nexcess\nexchange\nexcite\nexclude\nexcuse\nexecute\nexercise\nexhaust\nexhibit\nexile\nexist\nexit\nexotic\nexpand\nexpect\nexpire\nexplain\nexpose\nexpress\nextend\nextra\neye\neyebrow\nfabric\nface\nfaculty\nfade\nfaint\nfaith\nfall\nfalse\nfame\nfamily\nfamous\nfan\nfancy\nfantasy\nfarm\nfashion\nfat\nfatal\nfather\nfatigue\nfault\nfavorite\nfeature\nfebruary\nfederal\nfee\nfeed\nfeel\nfemale\nfence\nfestival\nfetch\nfever\nfew\nfiber\nfiction\nfield\nfigure\nfile\nfilm\nfilter\nfinal\nfind\nfine\nfinger\nfinish\nfire\nfirm\nfirst\nfiscal\nfish\nfit\nfitness\nfix\nflag\nflame\nflash\nflat\nflavor\nflee\nflight\nflip\nfloat\nflock\nfloor\nflower\nfluid\nflush\nfly\nfoam\nfocus\nfog\nfoil\nfold\nfollow\nfood\nfoot\nforce\nforest\nforget\nfork\nfortune\nforum\nforward\nfossil\nfoster\nfound\nfox\nfragile\nframe\nfrequent\nfresh\nfriend\nfringe\nfrog\nfront\nfrost\nfrown\nfrozen\nfruit\nfuel\nfun\nfunny\nfurnace\nfury\nfuture\ngadget\ngain\ngalaxy\ngallery\ngame\ngap\ngarage\ngarbage\ngarden\ngarlic\ngarment\ngas\ngasp\ngate\ngather\ngauge\ngaze\ngeneral\ngenius\ngenre\ngentle\ngenuine\ngesture\nghost\ngiant\ngift\ngiggle\nginger\ngiraffe\ngirl\ngive\nglad\nglance\nglare\nglass\nglide\nglimpse\nglobe\ngloom\nglory\nglove\nglow\nglue\ngoat\ngoddess\ngold\ngood\ngoose\ngorilla\ngospel\ngossip\ngovern\ngown\ngrab\ngrace\ngrain\ngrant\ngrape\ngrass\ngravity\ngreat\ngreen\ngrid\ngrief\ngrit\ngrocery\ngroup\ngrow\ngrunt\nguard\nguess\nguide\nguilt\nguitar\ngun\ngym\nhabit\nhair\nhalf\nhammer\nhamster\nhand\nhappy\nharbor\nhard\nharsh\nharvest\nhat\nhave\nhawk\nhazard\nhead\nhealth\nheart\nheavy\nhedgehog\nheight\nhello\nhelmet\nhelp\nhen\nhero\nhidden\nhigh\nhill\nhint\nhip\nhire\nhistory\nhobby\nhockey\nhold\nhole\nholiday\nhollow\nhome\nhoney\nhood\nhope\nhorn\nhorror\nhorse\nhospital\nhost\nhotel\nhour\nhover\nhub\nhuge\nhuman\nhumble\nhumor\nhundred\nhungry\nhunt\nhurdle\nhurry\nhurt\nhusband\nhybrid\nice\nicon\nidea\nidentify\nidle\nignore\nill\nillegal\nillness\nimage\nimitate\nimmense\nimmune\nimpact\nimpose\nimprove\nimpulse\ninch\ninclude\nincome\nincrease\nindex\nindicate\nindoor\nindustry\ninfant\ninflict\ninform\ninhale\ninherit\ninitial\ninject\ninjury\ninmate\ninner\ninnocent\ninput\ninquiry\ninsane\ninsect\ninside\ninspire\ninstall\nintact\ninterest\ninto\ninvest\ninvite\ninvolve\niron\nisland\nisolate\nissue\nitem\nivory\njacket\njaguar\njar\njazz\njealous\njeans\njelly\njewel\njob\njoin\njoke\njourney\njoy\njudge\njuice\njump\njungle\njunior\njunk\njust\nkangaroo\nkeen\nkeep\nketchup\nkey\nkick\nkid\nkidney\nkind\nkingdom\nkiss\nkit\nkitchen\nkite\nkitten\nkiwi\nknee\nknife\nknock\nknow\nlab\nlabel\nlabor\nladder\nlady\nlake\nlamp\nlanguage\nlaptop\nlarge\nlater\nlatin\nlaugh\nlaundry\nlava\nlaw\nlawn\nlawsuit\nlayer\nlazy\nleader\nleaf\nlearn\nleave\nlecture\nleft\nleg\nlegal\nlegend\nleisure\nlemon\nlend\nlength\nlens\nleopard\nlesson\nletter\nlevel\nliar\nliberty\nlibrary\nlicense\nlife\nlift\nlight\nlike\nlimb\nlimit\nlink\nlion\nliquid\nlist\nlittle\nlive\nlizard\nload\nloan\nlobster\nlocal\nlock\nlogic\nlonely\nlong\nloop\nlottery\nloud\nlounge\nlove\nloyal\nlucky\nluggage\nlumber\nlunar\nlunch\nluxury\nlyrics\nmachine\nmad\nmagic\nmagnet\nmaid\nmail\nmain\nmajor\nmake\nmammal\nman\nmanage\nmandate\nmango\nmansion\nmanual\nmaple\nmarble\nmarch\nmargin\nmarine\nmarket\nmarriage\nmask\nmass\nmaster\nmatch\nmaterial\nmath\nmatrix\nmatter\nmaximum\nmaze\nmeadow\nmean\nmeasure\nmeat\nmechanic\nmedal\nmedia\nmelody\nmelt\nmember\nmemory\nmention\nmenu\nmercy\nmerge\nmerit\nmerry\nmesh\nmessage\nmetal\nmethod\nmiddle\nmidnight\nmilk\nmillion\nmimic\nmind\nminimum\nminor\nminute\nmiracle\nmirror\nmisery\nmiss\nmistake\nmix\nmixed\nmixture\nmobile\nmodel\nmodify\nmom\nmoment\nmonitor\nmonkey\nmonster\nmonth\nmoon\nmoral\nmore\nmorning\nmosquito\nmother\nmotion\nmotor\nmountain\nmouse\nmove\nmovie\nmuch\nmuffin\nmule\nmultiply\nmuscle\nmuseum\nmushroom\nmusic\nmust\nmutual\nmyself\nmystery\nmyth\nnaive\nname\nnapkin\nnarrow\nnasty\nnation\nnature\nnear\nneck\nneed\nnegative\nneglect\nneither\nnephew\nnerve\nnest\nnet\nnetwork\nneutral\nnever\nnews\nnext\nnice\nnight\nnoble\nnoise\nnominee\nnoodle\nnormal\nnorth\nnose\nnotable\nnote\nnothing\nnotice\nnovel\nnow\nnuclear\nnumber\nnurse\nnut\noak\nobey\nobject\noblige\nobscure\nobserve\nobtain\nobvious\noccur\nocean\noctober\nodor\noff\noffer\noffice\noften\noil\nokay\nold\nolive\nolympic\nomit\nonce\none\nonion\nonline\nonly\nopen\nopera\nopinion\noppose\noption\norange\norbit\norchard\norder\nordinary\norgan\norient\noriginal\norphan\nostrich\nother\noutdoor\nouter\noutput\noutside\noval\noven\nover\nown\nowner\noxygen\noyster\nozone\npact\npaddle\npage\npair\npalace\npalm\npanda\npanel\npanic\npanther\npaper\nparade\nparent\npark\nparrot\nparty\npass\npatch\npath\npatient\npatrol\npattern\npause\npave\npayment\npeace\npeanut\npear\npeasant\npelican\npen\npenalty\npencil\npeople\npepper\nperfect\npermit\nperson\npet\nphone\nphoto\nphrase\nphysical\npiano\npicnic\npicture\npiece\npig\npigeon\npill\npilot\npink\npioneer\npipe\npistol\npitch\npizza\nplace\nplanet\nplastic\nplate\nplay\nplease\npledge\npluck\nplug\nplunge\npoem\npoet\npoint\npolar\npole\npolice\npond\npony\npool\npopular\nportion\nposition\npossible\npost\npotato\npottery\npoverty\npowder\npower\npractice\npraise\npredict\nprefer\nprepare\npresent\npretty\nprevent\nprice\npride\nprimary\nprint\npriority\nprison\nprivate\nprize\nproblem\nprocess\nproduce\nprofit\nprogram\nproject\npromote\nproof\nproperty\nprosper\nprotect\nproud\nprovide\npublic\npudding\npull\npulp\npulse\npumpkin\npunch\npupil\npuppy\npurchase\npurity\npurpose\npurse\npush\nput\npuzzle\npyramid\nquality\nquantum\nquarter\nquestion\nquick\nquit\nquiz\nquote\nrabbit\nraccoon\nrace\nrack\nradar\nradio\nrail\nrain\nraise\nrally\nramp\nranch\nrandom\nrange\nrapid\nrare\nrate\nrather\nraven\nraw\nrazor\nready\nreal\nreason\nrebel\nrebuild\nrecall\nreceive\nrecipe\nrecord\nrecycle\nreduce\nreflect\nreform\nrefuse\nregion\nregret\nregular\nreject\nrelax\nrelease\nrelief\nrely\nremain\nremember\nremind\nremove\nrender\nrenew\nrent\nreopen\nrepair\nrepeat\nreplace\nreport\nrequire\nrescue\nresemble\nresist\nresource\nresponse\nresult\nretire\nretreat\nreturn\nreunion\nreveal\nreview\nreward\nrhythm\nrib\nribbon\nrice\nrich\nride\nridge\nrifle\nright\nrigid\nring\nriot\nripple\nrisk\nritual\nrival\nriver\nroad\nroast\nrobot\nrobust\nrocket\nromance\nroof\nrookie\nroom\nrose\nrotate\nrough\nround\nroute\nroyal\nrubber\nrude\nrug\nrule\nrun\nrunway\nrural\nsad\nsaddle\nsadness\nsafe\nsail\nsalad\nsalmon\nsalon\nsalt\nsalute\nsame\nsample\nsand\nsatisfy\nsatoshi\nsauce\nsausage\nsave\nsay\nscale\nscan\nscare\nscatter\nscene\nscheme\nschool\nscience\nscissors\nscorpion\nscout\nscrap\nscreen\nscript\nscrub\nsea\nsearch\nseason\nseat\nsecond\nsecret\nsection\nsecurity\nseed\nseek\nsegment\nselect\nsell\nseminar\nsenior\nsense\nsentence\nseries\nservice\nsession\nsettle\nsetup\nseven\nshadow\nshaft\nshallow\nshare\nshed\nshell\nsheriff\nshield\nshift\nshine\nship\nshiver\nshock\nshoe\nshoot\nshop\nshort\nshoulder\nshove\nshrimp\nshrug\nshuffle\nshy\nsibling\nsick\nside\nsiege\nsight\nsign\nsilent\nsilk\nsilly\nsilver\nsimilar\nsimple\nsince\nsing\nsiren\nsister\nsituate\nsix\nsize\nskate\nsketch\nski\nskill\nskin\nskirt\nskull\nslab\nslam\nsleep\nslender\nslice\nslide\nslight\nslim\nslogan\nslot\nslow\nslush\nsmall\nsmart\nsmile\nsmoke\nsmooth\nsnack\nsnake\nsnap\nsniff\nsnow\nsoap\nsoccer\nsocial\nsock\nsoda\nsoft\nsolar\nsoldier\nsolid\nsolution\nsolve\nsomeone\nsong\nsoon\nsorry\nsort\nsoul\nsound\nsoup\nsource\nsouth\nspace\nspare\nspatial\nspawn\nspeak\nspecial\nspeed\nspell\nspend\nsphere\nspice\nspider\nspike\nspin\nspirit\nsplit\nspoil\nsponsor\nspoon\nsport\nspot\nspray\nspread\nspring\nspy\nsquare\nsqueeze\nsquirrel\nstable\nstadium\nstaff\nstage\nstairs\nstamp\nstand\nstart\nstate\nstay\nsteak\nsteel\nstem\nstep\nstereo\nstick\nstill\nsting\nstock\nstomach\nstone\nstool\nstory\nstove\nstrategy\nstreet\nstrike\nstrong\nstruggle\nstudent\nstuff\nstumble\nstyle\nsubject\nsubmit\nsubway\nsuccess\nsuch\nsudden\nsuffer\nsugar\nsuggest\nsuit\nsummer\nsun\nsunny\nsunset\nsuper\nsupply\nsupreme\nsure\nsurface\nsurge\nsurprise\nsurround\nsurvey\nsuspect\nsustain\nswallow\nswamp\nswap\nswarm\nswear\nsweet\nswift\nswim\nswing\nswitch\nsword\nsymbol\nsymptom\nsyrup\nsystem\ntable\ntackle\ntag\ntail\ntalent\ntalk\ntank\ntape\ntarget\ntask\ntaste\ntattoo\ntaxi\nteach\nteam\ntell\nten\ntenant\ntennis\ntent\nterm\ntest\ntext\nthank\nthat\ntheme\nthen\ntheory\nthere\nthey\nthing\nthis\nthought\nthree\nthrive\nthrow\nthumb\nthunder\nticket\ntide\ntiger\ntilt\ntimber\ntime\ntiny\ntip\ntired\ntissue\ntitle\ntoast\ntobacco\ntoday\ntoddler\ntoe\ntogether\ntoilet\ntoken\ntomato\ntomorrow\ntone\ntongue\ntonight\ntool\ntooth\ntop\ntopic\ntopple\ntorch\ntornado\ntortoise\ntoss\ntotal\ntourist\ntoward\ntower\ntown\ntoy\ntrack\ntrade\ntraffic\ntragic\ntrain\ntransfer\ntrap\ntrash\ntravel\ntray\ntreat\ntree\ntrend\ntrial\ntribe\ntrick\ntrigger\ntrim\ntrip\ntrophy\ntrouble\ntruck\ntrue\ntruly\ntrumpet\ntrust\ntruth\ntry\ntube\ntuition\ntumble\ntuna\ntunnel\nturkey\nturn\nturtle\ntwelve\ntwenty\ntwice\ntwin\ntwist\ntwo\ntype\ntypical\nugly\numbrella\nunable\nunaware\nuncle\nuncover\nunder\nundo\nunfair\nunfold\nunhappy\nuniform\nunique\nunit\nuniverse\nunknown\nunlock\nuntil\nunusual\nunveil\nupdate\nupgrade\nuphold\nupon\nupper\nupset\nurban\nurge\nusage\nuse\nused\nuseful\nuseless\nusual\nutility\nvacant\nvacuum\nvague\nvalid\nvalley\nvalve\nvan\nvanish\nvapor\nvarious\nvast\nvault\nvehicle\nvelvet\nvendor\nventure\nvenue\nverb\nverify\nversion\nvery\nvessel\nveteran\nviable\nvibrant\nvicious\nvictory\nvideo\nview\nvillage\nvintage\nviolin\nvirtual\nvirus\nvisa\nvisit\nvisual\nvital\nvivid\nvocal\nvoice\nvoid\nvolcano\nvolume\nvote\nvoyage\nwage\nwagon\nwait\nwalk\nwall\nwalnut\nwant\nwarfare\nwarm\nwarrior\nwash\nwasp\nwaste\nwater\nwave\nway\nwealth\nweapon\nwear\nweasel\nweather\nweb\nwedding\nweekend\nweird\nwelcome\nwest\nwet\nwhale\nwhat\nwheat\nwheel\nwhen\nwhere\nwhip\nwhisper\nwide\nwidth\nwife\nwild\nwill\nwin\nwindow\nwine\nwing\nwink\nwinner\nwinter\nwire\nwisdom\nwise\nwish\nwitness\nwolf\nwoman\nwonder\nwood\nwool\nword\nwork\nworld\nworry\nworth\nwrap\nwreck\nwrestle\nwrist\nwrite\nwrong\nyard\nyear\nyellow\nyou\nyoung\nyouth\nzebra\nzero\nzone\nzoo`.split('\\n');\n","import * as bip39 from '@scure/bip39';\nimport { wordlist } from '@scure/bip39/wordlists/english';\n\n/**\n * Generates a mnemonic of required bit strength\n *\n * @param bits - The bit strength.\n * @returns The generated mnemonic.\n */\nexport function genMnemonic(bits: number): string {\n return bip39.generateMnemonic(wordlist, bits);\n}\n","import { createBLAKE3, IHasher } from 'hash-wasm';\n\n/**\n * Hashes the given array of data using blake3 algorithm\n *\n * @param bits - The desired output bit-length, must be multiple of 8\n * @param data - The given data to hash\n * @returns The resulting hash value\n */\nexport async function computeHash(bits: number, data: string[] | Uint8Array[]): Promise<IHasher> {\n try {\n const hasher = await createBLAKE3(bits);\n hasher.init();\n for (const chunk of data) {\n hasher.update(chunk);\n }\n return hasher;\n } catch (error) {\n throw new Error('Failed to compute hash', { cause: error });\n }\n}\n\n/**\n * Computes keyed hash of the given array of data using blake3 algorithm\n *\n * @param bits - The desired output bit-length, must be multiple of 8\n * @param key - The key\n * @param data - The given data to hash\n * @returns The resulting keyed hash value\n */\nexport async function computeKeyedHash(bits: number, key: Uint8Array, data: string[] | Uint8Array[]): Promise<IHasher> {\n try {\n const hasher = await createBLAKE3(bits, key);\n hasher.init();\n for (const chunk of data) {\n hasher.update(chunk);\n }\n return hasher;\n } catch (error) {\n throw new Error('Failed to compute keyed hash', { cause: error });\n }\n}\n","import { computeHash } from './core';\nimport { HASH_BIT_LEN } from '../constants';\n\n/**\n * Hashes the given array of data\n *\n * @param data - The data to hash\n * @returns The resulting hash hex string\n */\nexport async function hashData(data: string[] | Uint8Array[]): Promise<string> {\n try {\n const hasher = await computeHash(HASH_BIT_LEN, data);\n return hasher.digest();\n } catch (error) {\n throw new Error('Failed to compute hash', { cause: error });\n }\n}\n\n/**\n * Hashes the given array of data using blake3 algorithm\n *\n * @param bits - The desired output bit-length, must be multiple of 8\n * @param data - The data to hash\n * @returns The resulting hash value\n */\nexport async function getBitsFromData(bits: number, data: string[] | Uint8Array[]): Promise<Uint8Array> {\n try {\n const hasher = await computeHash(bits, data);\n return hasher.digest('binary');\n } catch (error) {\n throw new Error('Failed to get bits from data', { cause: error });\n }\n}\n\n/**\n * Hashes the given string using blake3 algorithm\n *\n * @param bits - The desired output bit-length, must be multiple of 8\n * @param value - The string to hash\n * @returns The resulting hash value\n */\nexport async function getBitsFromString(bits: number, value: string): Promise<Uint8Array> {\n try {\n const hasher = await computeHash(bits, [value]);\n return hasher.digest('binary');\n } catch (error) {\n throw new Error('Failed to get bits from string', { cause: error });\n }\n}\n","import { MediaKeys } from '../types';\nimport { getBitsFromData } from './blake3';\nimport { HASH_BIT_LEN, PREFIX_MEDIA_KEY_COMMITMENT } from '../constants';\nimport { uint8ArrayToHex, mediaKeysToBase64 } from '../utils';\n\n/**\n * Computes commitment to the media keys\n *\n * @param keys - The media keys\n * @returns The resulting commitment string\n */\nexport async function comitToMediaKey(keys: MediaKeys): Promise<string> {\n try {\n const keysBase64 = mediaKeysToBase64(keys);\n const result = await getBitsFromData(HASH_BIT_LEN, [PREFIX_MEDIA_KEY_COMMITMENT, keysBase64]);\n return uint8ArrayToHex(result);\n } catch (error) {\n throw new Error('Failed to compute commitment to media keys', { cause: error });\n }\n}\n","import { computeKeyedHash } from './core';\nimport { HASH_BIT_LEN, AES_KEY_BIT_LENGTH } from '../constants';\nimport { getBitsFromString } from './blake3';\n\n/**\n * Computes mac for the given key material and data\n *\n * @param keyMaterial - The key material\n * @param data - The data to hash\n * @returns The resulting hash hex string\n */\nexport async function computeMac(keyMaterial: string, data: string[]): Promise<string> {\n try {\n const key = await getBitsFromString(AES_KEY_BIT_LENGTH, keyMaterial);\n const hasher = await computeKeyedHash(HASH_BIT_LEN, key, data);\n return hasher.digest();\n } catch (error) {\n throw new Error('Failed to compute mac', { cause: error });\n }\n}\n","import { AES_ALGORITHM, AES_KEY_BIT_LENGTH, KEY_FORMAT } from '../constants';\nimport { getBitsFromString } from '../hash';\n\n/**\n * Converts Uint8Array into CryptoKey\n *\n * @param keyData - The Uint8Array representation of the symmetric key\n * @returns The resulting symmetric CryptoKey.\n */\nexport async function importSymmetricCryptoKey(keyData: Uint8Array | ArrayBuffer): Promise<CryptoKey> {\n return crypto.subtle.importKey(\n KEY_FORMAT,\n new Uint8Array(keyData),\n {\n name: AES_ALGORITHM,\n length: AES_KEY_BIT_LENGTH,\n },\n true,\n ['encrypt', 'decrypt'],\n );\n}\n\n/**\n * Converts CryptoKey into Uint8Array\n *\n * @param key - The symmetric CryptoKey\n * @returns The resulting Uint8Array.\n */\nexport async function exportSymmetricCryptoKey(key: CryptoKey): Promise<Uint8Array> {\n try {\n const rawKey = await crypto.subtle.exportKey(KEY_FORMAT, key);\n return new Uint8Array(rawKey);\n } catch (error) {\n throw new Error('Failed to export symmetric CryptoKey', { cause: error });\n }\n}\n\n/**\n * Generates symmetric CryptoKey\n *\n * @returns The generated CryptoKey.\n */\nexport async function genSymmetricCryptoKey(): Promise<CryptoKey> {\n return crypto.subtle.generateKey(\n {\n name: AES_ALGORITHM,\n length: AES_KEY_BIT_LENGTH,\n },\n true,\n ['encrypt', 'decrypt'],\n );\n}\n\n/**\n * Generates symmetric key as Uint8Array\n *\n * @returns The generated Uint8Array.\n */\nexport function genSymmetricKey(): Uint8Array {\n try {\n const key = new Uint8Array(AES_KEY_BIT_LENGTH / 8);\n crypto.getRandomValues(key);\n return key;\n } catch (error) {\n throw new Error('Failed to generate symmetric key', { cause: error });\n }\n}\n\n/**\n * Derives CryptoKey from the given key material\n *\n * @returns The derived CryptoKey.\n */\nexport async function deriveSymmetricCryptoKey(keyMaterial: string): Promise<CryptoKey> {\n try {\n const hashBuffer = await getBitsFromString(AES_KEY_BIT_LENGTH, keyMaterial);\n return importSymmetricCryptoKey(hashBuffer);\n } catch (error) {\n throw new Error('Failed to derive CryptoKey from the given key material', { cause: error });\n }\n}\n","/**\n * SHA3 (keccak) hash function, based on a new \"Sponge function\" design.\n * Different from older hashes, the internal state is bigger than output size.\n *\n * Check out [FIPS-202](https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.202.pdf),\n * [Website](https://keccak.team/keccak.html),\n * [the differences between SHA-3 and Keccak](https://crypto.stackexchange.com/questions/15727/what-are-the-key-differences-between-the-draft-sha-3-standard-and-the-keccak-sub).\n *\n * Check out `sha3-addons` module for cSHAKE, k12, and others.\n * @module\n */\nimport { rotlBH, rotlBL, rotlSH, rotlSL, split } from \"./_u64.js\";\n// prettier-ignore\nimport { abytes, aexists, anumber, aoutput, clean, createHasher, createXOFer, Hash, swap32IfBE, toBytes, u32 } from \"./utils.js\";\n// No __PURE__ annotations in sha3 header:\n// EVERYTHING is in fact used on every export.\n// Various per round constants calculations\nconst _0n = BigInt(0);\nconst _1n = BigInt(1);\nconst _2n = BigInt(2);\nconst _7n = BigInt(7);\nconst _256n = BigInt(256);\nconst _0x71n = BigInt(0x71);\nconst SHA3_PI = [];\nconst SHA3_ROTL = [];\nconst _SHA3_IOTA = [];\nfor (let round = 0, R = _1n, x = 1, y = 0; round < 24; round++) {\n // Pi\n [x, y] = [y, (2 * x + 3 * y) % 5];\n SHA3_PI.push(2 * (5 * y + x));\n // Rotational\n SHA3_ROTL.push((((round + 1) * (round + 2)) / 2) % 64);\n // Iota\n let t = _0n;\n for (let j = 0; j < 7; j++) {\n R = ((R << _1n) ^ ((R >> _7n) * _0x71n)) % _256n;\n if (R & _2n)\n t ^= _1n << ((_1n << /* @__PURE__ */ BigInt(j)) - _1n);\n }\n _SHA3_IOTA.push(t);\n}\nconst IOTAS = split(_SHA3_IOTA, true);\nconst SHA3_IOTA_H = IOTAS[0];\nconst SHA3_IOTA_L = IOTAS[1];\n// Left rotation (without 0, 32, 64)\nconst rotlH = (h, l, s) => (s > 32 ? rotlBH(h, l, s) : rotlSH(h, l, s));\nconst rotlL = (h, l, s) => (s > 32 ? rotlBL(h, l, s) : rotlSL(h, l, s));\n/** `keccakf1600` internal function, additionally allows to adjust round count. */\nexport function keccakP(s, rounds = 24) {\n const B = new Uint32Array(5 * 2);\n // NOTE: all indices are x2 since we store state as u32 instead of u64 (bigints to slow in js)\n for (let round = 24 - rounds; round < 24; round++) {\n // Theta θ\n for (let x = 0; x < 10; x++)\n B[x] = s[x] ^ s[x + 10] ^ s[x + 20] ^ s[x + 30] ^ s[x + 40];\n for (let x = 0; x < 10; x += 2) {\n const idx1 = (x + 8) % 10;\n const idx0 = (x + 2) % 10;\n const B0 = B[idx0];\n const B1 = B[idx0 + 1];\n const Th = rotlH(B0, B1, 1) ^ B[idx1];\n const Tl = rotlL(B0, B1, 1) ^ B[idx1 + 1];\n for (let y = 0; y < 50; y += 10) {\n s[x + y] ^= Th;\n s[x + y + 1] ^= Tl;\n }\n }\n // Rho (ρ) and Pi (π)\n let curH = s[2];\n let curL = s[3];\n for (let t = 0; t < 24; t++) {\n const shift = SHA3_ROTL[t];\n const Th = rotlH(curH, curL, shift);\n const Tl = rotlL(curH, curL, shift);\n const PI = SHA3_PI[t];\n curH = s[PI];\n curL = s[PI + 1];\n s[PI] = Th;\n s[PI + 1] = Tl;\n }\n // Chi (χ)\n for (let y = 0; y < 50; y += 10) {\n for (let x = 0; x < 10; x++)\n B[x] = s[y + x];\n for (let x = 0; x < 10; x++)\n s[y + x] ^= ~B[(x + 2) % 10] & B[(x + 4) % 10];\n }\n // Iota (ι)\n s[0] ^= SHA3_IOTA_H[round];\n s[1] ^= SHA3_IOTA_L[round];\n }\n clean(B);\n}\n/** Keccak sponge function. */\nexport class Keccak extends Hash {\n // NOTE: we accept arguments in bytes instead of bits here.\n constructor(blockLen, suffix, outputLen, enableXOF = false, rounds = 24) {\n super();\n this.pos = 0;\n this.posOut = 0;\n this.finished = false;\n this.destroyed = false;\n this.enableXOF = false;\n this.blockLen = blockLen;\n this.suffix = suffix;\n this.outputLen = outputLen;\n this.enableXOF = enableXOF;\n this.rounds = rounds;\n // Can be passed from user as dkLen\n anumber(outputLen);\n // 1600 = 5x5 matrix of 64bit. 1600 bits === 200 bytes\n // 0 < blockLen < 200\n if (!(0 < blockLen && blockLen < 200))\n throw new Error('only keccak-f1600 function is supported');\n this.state = new Uint8Array(200);\n this.state32 = u32(this.state);\n }\n clone() {\n return this._cloneInto();\n }\n keccak() {\n swap32IfBE(this.state32);\n keccakP(this.state32, this.rounds);\n swap32IfBE(this.state32);\n this.posOut = 0;\n this.pos = 0;\n }\n update(data) {\n aexists(this);\n data = toBytes(data);\n abytes(data);\n const { blockLen, state } = this;\n const len = data.length;\n for (let pos = 0; pos < len;) {\n const take = Math.min(blockLen - this.pos, len - pos);\n for (let i = 0; i < take; i++)\n state[this.pos++] ^= data[pos++];\n if (this.pos === blockLen)\n this.keccak();\n }\n return this;\n }\n finish() {\n if (this.finished)\n return;\n this.finished = true;\n const { state, suffix, pos, blockLen } = this;\n // Do the padding\n state[pos] ^= suffix;\n if ((suffix & 0x80) !== 0 && pos === blockLen - 1)\n this.keccak();\n state[blockLen - 1] ^= 0x80;\n this.keccak();\n }\n writeInto(out) {\n aexists(this, false);\n abytes(out);\n this.finish();\n const bufferOut = this.state;\n const { blockLen } = this;\n for (let pos = 0, len = out.length; pos < len;) {\n if (this.posOut >= blockLen)\n this.keccak();\n const take = Math.min(blockLen - this.posOut, len - pos);\n out.set(bufferOut.subarray(this.posOut, this.posOut + take), pos);\n this.posOut += take;\n pos += take;\n }\n return out;\n }\n xofInto(out) {\n // Sha3/Keccak usage with XOF is probably mistake, only SHAKE instances can do XOF\n if (!this.enableXOF)\n throw new Error('XOF is not possible for this instance');\n return this.writeInto(out);\n }\n xof(bytes) {\n anumber(bytes);\n return this.xofInto(new Uint8Array(bytes));\n }\n digestInto(out) {\n aoutput(out, this);\n if (this.finished)\n throw new Error('digest() was already called');\n this.writeInto(out);\n this.destroy();\n return out;\n }\n digest() {\n return this.digestInto(new Uint8Array(this.outputLen));\n }\n destroy() {\n this.destroyed = true;\n clean(this.state);\n }\n _cloneInto(to) {\n const { blockLen, suffix, outputLen, rounds, enableXOF } = this;\n to || (to = new Keccak(blockLen, suffix, outputLen, enableXOF, rounds));\n to.state32.set(this.state32);\n to.pos = this.pos;\n to.posOut = this.posOut;\n to.finished = this.finished;\n to.rounds = rounds;\n // Suffix can change in cSHAKE\n to.suffix = suffix;\n to.outputLen = outputLen;\n to.enableXOF = enableXOF;\n to.destroyed = this.destroyed;\n return to;\n }\n}\nconst gen = (suffix, blockLen, outputLen) => createHasher(() => new Keccak(blockLen, suffix, outputLen));\n/** SHA3-224 hash function. */\nexport const sha3_224 = /* @__PURE__ */ (() => gen(0x06, 144, 224 / 8))();\n/** SHA3-256 hash function. Different from keccak-256. */\nexport const sha3_256 = /* @__PURE__ */ (() => gen(0x06, 136, 256 / 8))();\n/** SHA3-384 hash function. */\nexport const sha3_384 = /* @__PURE__ */ (() => gen(0x06, 104, 384 / 8))();\n/** SHA3-512 hash function. */\nexport const sha3_512 = /* @__PURE__ */ (() => gen(0x06, 72, 512 / 8))();\n/** keccak-224 hash function. */\nexport const keccak_224 = /* @__PURE__ */ (() => gen(0x01, 144, 224 / 8))();\n/** keccak-256 hash function. Different from SHA3-256. */\nexport const keccak_256 = /* @__PURE__ */ (() => gen(0x01, 136, 256 / 8))();\n/** keccak-384 hash function. */\nexport const keccak_384 = /* @__PURE__ */ (() => gen(0x01, 104, 384 / 8))();\n/** keccak-512 hash function. */\nexport const keccak_512 = /* @__PURE__ */ (() => gen(0x01, 72, 512 / 8))();\nconst genShake = (suffix, blockLen, outputLen) => createXOFer((opts = {}) => new Keccak(blockLen, suffix, opts.dkLen === undefined ? outputLen : opts.dkLen, true));\n/** SHAKE128 XOF with 128-bit security. */\nexport const shake128 = /* @__PURE__ */ (() => genShake(0x1f, 168, 128 / 8))();\n/** SHAKE256 XOF with 256-bit security. */\nexport const shake256 = /* @__PURE__ */ (() => genShake(0x1f, 136, 256 / 8))();\n//# sourceMappingURL=sha3.js.map","/**\n * Utilities for hex, bytearray and number handling.\n * @module\n */\n/*! noble-post-quantum - MIT License (c) 2024 Paul Miller (paulmillr.com) */\nimport { sha224, sha256, sha384, sha512, sha512_224, sha512_256 } from '@noble/hashes/sha2';\nimport { sha3_224, sha3_256, sha3_384, sha3_512, shake128, shake256 } from '@noble/hashes/sha3';\nimport { abytes, concatBytes, hexToBytes, randomBytes as randb, utf8ToBytes, } from '@noble/hashes/utils';\nexport const ensureBytes = abytes;\nexport const randomBytes = randb;\nexport { concatBytes, utf8ToBytes };\n// Compares 2 u8a-s in kinda constant time\nexport function equalBytes(a, b) {\n if (a.length !== b.length)\n return false;\n let diff = 0;\n for (let i = 0; i < a.length; i++)\n diff |= a[i] ^ b[i];\n return diff === 0;\n}\nexport function splitCoder(...lengths) {\n const getLength = (c) => (typeof c === 'number' ? c : c.bytesLen);\n const bytesLen = lengths.reduce((sum, a) => sum + getLength(a), 0);\n return {\n bytesLen,\n encode: (bufs) => {\n const res = new Uint8Array(bytesLen);\n for (let i = 0, pos = 0; i < lengths.length; i++) {\n const c = lengths[i];\n const l = getLength(c);\n const b = typeof c === 'number' ? bufs[i] : c.encode(bufs[i]);\n ensureBytes(b, l);\n res.set(b, pos);\n if (typeof c !== 'number')\n b.fill(0); // clean\n pos += l;\n }\n return res;\n },\n decode: (buf) => {\n ensureBytes(buf, bytesLen);\n const res = [];\n for (const c of lengths) {\n const l = getLength(c);\n const b = buf.subarray(0, l);\n res.push(typeof c === 'number' ? b : c.decode(b));\n buf = buf.subarray(l);\n }\n return res;\n },\n };\n}\n// nano-packed.array (fixed size)\nexport function vecCoder(c, vecLen) {\n const bytesLen = vecLen * c.bytesLen;\n return {\n bytesLen,\n encode: (u) => {\n if (u.length !== vecLen)\n throw new Error(`vecCoder.encode: wrong length=${u.length}. Expected: ${vecLen}`);\n const res = new Uint8Array(bytesLen);\n for (let i = 0, pos = 0; i < u.length; i++) {\n const b = c.encode(u[i]);\n res.set(b, pos);\n b.fill(0); // clean\n pos += b.length;\n }\n return res;\n },\n decode: (a) => {\n ensureBytes(a, bytesLen);\n const r = [];\n for (let i = 0; i < a.length; i += c.bytesLen)\n r.push(c.decode(a.subarray(i, i + c.bytesLen)));\n return r;\n },\n };\n}\n// cleanBytes(new Uint8Array(), [new Uint16Array(), new Uint32Array()])\nexport function cleanBytes(...list) {\n for (const t of list) {\n if (Array.isArray(t))\n for (const b of t)\n b.fill(0);\n else\n t.fill(0);\n }\n}\nexport function getMask(bits) {\n return (1 << bits) - 1; // 4 -> 0b1111\n}\nexport const EMPTY = new Uint8Array(0);\nexport function getMessage(msg, ctx = EMPTY) {\n ensureBytes(msg);\n ensureBytes(ctx);\n if (ctx.length > 255)\n throw new Error('context should be less than 255 bytes');\n return concatBytes(new Uint8Array([0, ctx.length]), ctx, msg);\n}\n// OIDS from https://csrc.nist.gov/projects/computer-security-objects-register/algorithm-registration\n// TODO: maybe add 'OID' property to hashes themselves to improve tree-shaking?\nconst HASHES = {\n 'SHA2-256': { oid: hexToBytes('0609608648016503040201'), hash: sha256 },\n 'SHA2-384': { oid: hexToBytes('0609608648016503040202'), hash: sha384 },\n 'SHA2-512': { oid: hexToBytes('0609608648016503040203'), hash: sha512 },\n 'SHA2-224': { oid: hexToBytes('0609608648016503040204'), hash: sha224 },\n 'SHA2-512/224': { oid: hexToBytes('0609608648016503040205'), hash: sha512_224 },\n 'SHA2-512/256': { oid: hexToBytes('0609608648016503040206'), hash: sha512_256 },\n 'SHA3-224': { oid: hexToBytes('0609608648016503040207'), hash: sha3_224 },\n 'SHA3-256': { oid: hexToBytes('0609608648016503040208'), hash: sha3_256 },\n 'SHA3-384': { oid: hexToBytes('0609608648016503040209'), hash: sha3_384 },\n 'SHA3-512': { oid: hexToBytes('060960864801650304020A'), hash: sha3_512 },\n 'SHAKE-128': {\n oid: hexToBytes('060960864801650304020B'),\n hash: (msg) => shake128(msg, { dkLen: 32 }),\n },\n 'SHAKE-256': {\n oid: hexToBytes('060960864801650304020C'),\n hash: (msg) => shake256(msg, { dkLen: 64 }),\n },\n};\nexport function getMessagePrehash(hashName, msg, ctx = EMPTY) {\n ensureBytes(msg);\n ensureBytes(ctx);\n if (ctx.length > 255)\n throw new Error('context should be less than 255 bytes');\n if (!HASHES[hashName])\n throw new Error('unknown hash: ' + hashName);\n const { oid, hash } = HASHES[hashName];\n const hashed = hash(msg);\n return concatBytes(new Uint8Array([1, ctx.length]), ctx, oid, hashed);\n}\n//# sourceMappingURL=utils.js.map","import { randomBytes } from '@noble/post-quantum/utils.js';\nimport { getBitsFromString } from '../hash';\nimport { AUX_LEN, AES_ALGORITHM, IV_LEN_BYTES } from '../constants';\n\n/**\n * Creates an initialization vector (IV) using RGB-based construction (8.2.2 NIST Special Publication 800-38D)\n * Constructs a 128-bits IV from 2 fileds: the random field (at least 96 bits) and the free field (32 bits).\n * If free filed is empty, then the entier 128-bit IV is sampled randomly.\n *\n * @param freeFiled - The string with an unrestricted content. Can be a device identifier, etc.\n * @returns The resulting 128-bits initialization vector.\n */\nexport async function createNISTbasedIV(freeField?: string): Promise<Uint8Array> {\n try {\n if (!freeField) {\n return randomBytes(IV_LEN_BYTES);\n }\n\n const iv = new Uint8Array(16);\n\n const randFiled = randomBytes(12);\n iv.set(randFiled, 0);\n\n const freeFiledFixedLength = await getBitsFromString(32, freeField);\n iv.set(freeFiledFixedLength, 12);\n\n return iv;\n } catch (error) {\n throw new Error('Failed to create IV', { cause: error });\n }\n}\n\n/**\n * Hashes aux string to make it fixed-length\n *\n * @param aux - The auxilay string of arbitrary length\n * @returns The resulting fixed-length auxilary string.\n */\nexport async function makeAuxFixedLength(aux: string): Promise<Uint8Array> {\n return getBitsFromString(AUX_LEN, aux);\n}\n\n/**\n * Symmetrically encrypts message\n *\n * @param message - The message to encrypt\n * @param encryptionKey - The encryption key\n * @param iv - The initialization vector\n * @param additionalData - The auxilary data\n * @returns The resulting ciphertext\n */\nexport async function encryptMessage(\n message: Uint8Array,\n encryptionKey: CryptoKey,\n iv: Uint8Array,\n additionalData: Uint8Array,\n): Promise<Uint8Array> {\n try {\n const encrypted = await crypto.subtle.encrypt({ name: AES_ALGORITHM, iv, additionalData }, encryptionKey, message);\n return new Uint8Array(encrypted);\n } catch (error) {\n throw new Error('Failed to encrypt symmetrically', { cause: error });\n }\n}\n\n/**\n * Symmetrically decrypts message\n *\n * @param ciphertext - The encrypted message\n * @param ciphertext - The initialization vector\n * @param encryptionKey - The encryption key\n * @param additionalData - The auxilary data\n * @returns The resulting decrypted message\n */\nexport async function decryptMessage(\n ciphertext: Uint8Array,\n iv: Uint8Array,\n encryptionKey: CryptoKey,\n additionalData: Uint8Array,\n): Promise<Uint8Array> {\n try {\n const decrypted = await crypto.subtle.decrypt(\n { name: AES_ALGORITHM, iv, additionalData },\n encryptionKey,\n ciphertext,\n );\n return new Uint8Array(decrypted);\n } catch (error) {\n throw new Error('Failed to decrypt symmetrically', { cause: error });\n }\n}\n","import { SymmetricCiphertext } from '../types';\nimport { createNISTbasedIV, makeAuxFixedLength, encryptMessage, decryptMessage } from './core';\n\n/**\n * Symmetrically encrypts the message\n *\n * @param encryptionKey - The symmetric CryptoKey used for message encryption\n * @param message - The message to encrypt\n * @param freeField - The context of the message (required for IV generation)\n * @param aux - The auxilary string\n * @returns The resulting ciphertext.\n */\nexport async function encryptSymmetrically(\n encryptionKey: CryptoKey,\n message: Uint8Array,\n aux: string,\n freeField?: string,\n): Promise<SymmetricCiphertext> {\n try {\n const iv = await createNISTbasedIV(freeField);\n const additionalData = await makeAuxFixedLength(aux);\n const ciphertext = await encryptMessage(message, encryptionKey, iv, additionalData);\n return { ciphertext, iv };\n } catch (error) {\n throw new Error('Failed to encrypt symmetrically', { cause: error });\n }\n}\n\n/**\n * Decryps symmetrically encrypted message\n *\n * @param encryptionKey - The symmetric CryptoKey used for message encryption\n * @param encryptedMessage - The ciphertext\n * @param aux - The auxilary string\n * @returns The resulting ciphertext.\n */\nexport async function decryptSymmetrically(\n encryptionKey: CryptoKey,\n encryptedMessage: SymmetricCiphertext,\n aux: string,\n): Promise<Uint8Array> {\n try {\n const additionalData = await makeAuxFixedLength(aux);\n const result = await decryptMessage(\n encryptedMessage.ciphertext,\n encryptedMessage.iv,\n encryptionKey,\n additionalData,\n );\n return result;\n } catch (error) {\n throw new Error('Failed to decrypt symmetrically', { cause: error });\n }\n}\n","import { blake3 } from 'hash-wasm';\nimport { AES_KEY_BIT_LENGTH } from '../constants';\nimport { hexToUint8Array } from '../utils';\nimport { importSymmetricCryptoKey } from '../symmetric-crypto';\n\n/**\n * Derives a symmetric key from the base key and context string\n *\n * @param context - The context string.\n * The context string should be hardcoded, globally unique, and application-specific.\n * @param baseKey - The base key (NOT PASSWORD!)\n * @returns The derived secret key\n */\nexport async function deriveSymmetricKeyFromContext(\n context: string,\n baseKey: Uint8Array | string,\n): Promise<Uint8Array> {\n try {\n const context_key = await blake3(context);\n const buffer_context_key = hexToUint8Array(context_key);\n const result = await blake3(baseKey, AES_KEY_BIT_LENGTH, buffer_context_key);\n return hexToUint8Array(result);\n } catch (error) {\n throw new Error('Failed to derive key from base key and context', { cause: error });\n }\n}\n\n/**\n * Derives a symmetric CryptoKey from the base key and context string\n *\n * @param context - The context string.\n * The context string should be hardcoded, globally unique, and application-specific.\n * @param baseKey - The base key (NOT PASSWORD!)\n * @returns The derived secret CryptoKey\n */\nexport async function deriveSymmetricCryptoKeyFromContext(context: string, baseKey: Uint8Array): Promise<CryptoKey> {\n try {\n if (baseKey.length != AES_KEY_BIT_LENGTH / 8) {\n throw new Error(`Base key length must be exactly ${AES_KEY_BIT_LENGTH / 8} bytes`);\n }\n if (!context) {\n throw new Error('Context is empry');\n }\n const keyBytes = await deriveSymmetricKeyFromContext(context, baseKey);\n const key = await importSymmetricCryptoKey(keyBytes);\n\n return key;\n } catch (error) {\n throw new Error('Failed to derive CryptoKey from base key and context', { cause: error });\n }\n}\n","import { argon2id, blake3 } from 'hash-wasm';\nimport {\n AES_KEY_BIT_LENGTH,\n HASH_BIT_LEN,\n ARGON2ID_ITERATIONS,\n ARGON2ID_MEMORY_SIZE,\n ARGON2ID_PARALLELISM,\n ARGON2ID_SALT_BYTE_LENGTH,\n ARGON2ID_OUTPUT_BYTE_LENGTH,\n} from '../constants';\nimport { deriveSymmetricKeyFromContext } from './deriveKeysFromKey';\n\n/**\n * Calculates hash using the argon2id password-hashing function\n *\n * @param password - The user's password\n * @param salt - The given salt\n * @param parallelism - The degree of parallelism\n * @param iterations - The number of iterations\n * @param memorySize - The memory size in KB\n * @param hashLength - The desired hash byte length\n * @returns The resulting hash\n */\nexport async function argon2(\n password: string,\n salt: Uint8Array,\n parallelism: number = ARGON2ID_PARALLELISM,\n iterations: number = ARGON2ID_ITERATIONS,\n memorySize: number = ARGON2ID_MEMORY_SIZE,\n hashLength: number = ARGON2ID_OUTPUT_BYTE_LENGTH,\n): Promise<Uint8Array> {\n return argon2id({\n password,\n salt,\n parallelism,\n iterations,\n memorySize,\n hashLength,\n outputType: 'binary',\n });\n}\n\n/**\n * Samples a salt\n *\n * @returns The salt\n */\nexport function sampleSalt(): Uint8Array {\n try {\n const salt = new Uint8Array(ARGON2ID_SALT_BYTE_LENGTH);\n crypto.getRandomValues(salt);\n return salt;\n } catch (error) {\n throw new Error('Failed to sample salt', { cause: error });\n }\n}\n\n/**\n * Derives a symmetric key from two keys\n *\n * @param key1 - The 32-bytes key\n * @param key2 - The 32-bytes key\n * @returns The derived secret key\n */\nexport async function deriveKeyFromTwoKeysAndContext(\n key1: Uint8Array,\n key2: Uint8Array,\n context: string,\n): Promise<Uint8Array> {\n try {\n if (key2.length != AES_KEY_BIT_LENGTH / 8 || key1.length != AES_KEY_BIT_LENGTH / 8) {\n throw new Error(`Input key length must be exactly ${AES_KEY_BIT_LENGTH / 8} bytes`);\n }\n const combined_key = await blake3(key1, HASH_BIT_LEN, key2);\n const result = await deriveSymmetricKeyFromContext(context, combined_key);\n return result;\n } catch (error) {\n throw new Error('Failed to derive symmetric key from two keys', { cause: error });\n }\n}\n","import { hexToUint8Array, uint8ArrayToHex } from '../utils';\nimport { argon2, sampleSalt } from './core';\n\n/**\n * Derives a symmetric key from a user's password with a randomly sampled salt\n *\n * @param password - The user's password\n * @returns The derived secret key and randomly sampled salt\n */\nexport async function getKeyFromPassword(password: string): Promise<{ key: Uint8Array; salt: Uint8Array }> {\n try {\n if (!password) {\n throw new Error('No password given');\n }\n const salt = sampleSalt();\n const key = await argon2(password, salt);\n return { key, salt };\n } catch (error) {\n throw new Error('Failed to derive key from password', { cause: error });\n }\n}\n\n/**\n * Derives a symmetric key from a user's password and salt\n *\n * @param password - The user's password\n * @param salt - The given salt\n * @returns The derived secret key\n */\nexport async function getKeyFromPasswordAndSalt(password: string, salt: Uint8Array): Promise<Uint8Array> {\n try {\n if (!salt.length) {\n throw new Error('No salt given');\n }\n if (!password) {\n throw new Error('No password given');\n }\n return await argon2(password, salt);\n } catch (error) {\n throw new Error('Failed to derive key from password and salt', { cause: error });\n }\n}\n\n/**\n * Derives a HEX symmetric key from a user's password with a randomly sampled salt\n *\n * @param password - The user's password\n * @returns The derived HEX secret key and randomly sampled HEX salt\n */\nexport async function getKeyFromPasswordHex(password: string): Promise<{ keyHex: string; saltHex: string }> {\n try {\n const { key, salt } = await getKeyFromPassword(password);\n return { keyHex: uint8ArrayToHex(key), saltHex: uint8ArrayToHex(salt) };\n } catch (error) {\n throw new Error('Failed to derive key from password', { cause: error });\n }\n}\n\n/**\n * Derives a HEX symmetric key from a user's password and salt\n *\n * @param password - The user's password\n * @param saltHex - The given HEX salt\n * @returns The derived HEX secret key\n */\nexport async function getKeyFromPasswordAndSaltHex(password: string, saltHex: string): Promise<string> {\n try {\n const salt = hexToUint8Array(saltHex);\n const key = await getKeyFromPasswordAndSalt(password, salt);\n return uint8ArrayToHex(key);\n } catch (error) {\n throw new Error('Failed to derive key from password and salt', { cause: error });\n }\n}\n\n/**\n * Verifies the derived key\n *\n * @param password - The user's password\n * @param saltHex - The given HEX salt\n * @param keyHex - The derived HEX key\n * @returns The result of the key verification\n */\nexport async function verifyKeyFromPasswordHex(password: string, saltHex: string, keyHex: string): Promise<boolean> {\n const result = await getKeyFromPasswordAndSaltHex(password, saltHex);\n return keyHex === result;\n}\n","import { CONTEXT_DERIVE } from '../constants';\nimport { deriveKeyFromTwoKeysAndContext } from './core';\n\nimport { importSymmetricCryptoKey } from '../symmetric-crypto';\n\n/**\n * Derives a symmetric key from two keys\n *\n * @param key1 - The 32-bytes key\n * @param key2 - The 32-bytes key\n * @returns The derived secret key\n */\nexport async function deriveSymmetricKeyFromTwoKeys(key1: Uint8Array, key2: Uint8Array): Promise<Uint8Array> {\n return await deriveKeyFromTwoKeysAndContext(key1, key2, CONTEXT_DERIVE);\n}\n\n/**\n * Derives a symmetric CryptoKey from two keys\n *\n * @param key1 - The 32-bytes key\n * @param key2 - The 32-bytes key\n * @returns The derived secret CryptoKey\n */\nexport async function deriveSymmetricCryptoKeyFromTwoKeys(key1: Uint8Array, key2: Uint8Array): Promise<CryptoKey> {\n try {\n const keyBytes = await deriveSymmetricKeyFromTwoKeys(key1, key2);\n const key = await importSymmetricCryptoKey(keyBytes);\n return key;\n } catch (error) {\n throw new Error('Failed to derive symmetric CryptoKey from two keys', { cause: error });\n }\n}\n","import { MediaKeys } from '../types';\nimport { CONTEXT_RATCHET } from '../constants';\nimport { deriveSymmetricKeyFromContext } from './deriveKeysFromKey';\n\n/**\n * Ratchets media key.\n * Ratcheting means deriving new key from the old one using a secure key derivation function\n *\n * @param {MediaKeys} key - The input key.\n * @returns {Promise<MediaKeys>} Ratched key.\n */\nexport async function ratchetMediaKey(key: MediaKeys): Promise<MediaKeys> {\n try {\n const olmKey = await deriveSymmetricKeyFromContext(CONTEXT_RATCHET, key.olmKey);\n const pqKey = await deriveSymmetricKeyFromContext(CONTEXT_RATCHET, key.pqKey);\n const index = key.index + 1;\n const userID = key.userID;\n return { olmKey, pqKey, index, userID };\n } catch (error) {\n throw new Error('Failed to ratchet media key', { cause: error });\n }\n}\n","import { uint8ArrayToBase64, base64ToUint8Array, UTF8ToUint8, uint8ToUTF8, ciphertextToBase64 } from '../utils';\nimport {\n EmailBody,\n HybridEncKey,\n PwdProtectedKey,\n User,\n EmailPublicParameters,\n HybridEncryptedEmail,\n PwdProtectedEmail,\n Email,\n} from '../types';\n\n/**\n * Converts a User type into a base64 string.\n *\n * @param user - The given user.\n * @returns The base64 representation of the user.\n */\nexport function userToBase64(user: User): string {\n try {\n const json = JSON.stringify(user);\n return btoa(json);\n } catch (error) {\n throw new Error('Failed to convert User to base64', { cause: error });\n }\n}\n\n/**\n * Converts a base64 string into a User type\n *\n * @param base64 - The base64 representation of the user.\n * @returns The User type.\n */\nexport function base64ToUser(base64: string): User {\n try {\n const json = atob(base64);\n const user: User = JSON.parse(json);\n return user;\n } catch (error) {\n throw new Error('Failed to convert base64 to User', { cause: error });\n }\n}\n\n/**\n * Converts an EmailBody type into a Uint8Array array.\n *\n * @param body - The email body.\n * @returns The Uint8Array array representation of the EmailBody type.\n */\nexport function emailBodyToBinary(body: EmailBody): Uint8Array {\n try {\n const json = JSON.stringify(body);\n return UTF8ToUint8(json);\n } catch (error) {\n throw new Error('Failed to convert EmailBody to Uint8Array', { cause: error });\n }\n}\n\n/**\n * Converts an Uint8Array array into EmailBody type.\n *\n * @param array - The Uint8Array array.\n * @returns The EmailBody type representation of the Uint8Array.\n */\nexport function binaryToEmailBody(array: Uint8Array): EmailBody {\n try {\n const json = uint8ToUTF8(array);\n const email: EmailBody = JSON.parse(json);\n return email;\n } catch (error) {\n throw new Error('Failed to convert Uint8Array to EmailBody', { cause: error });\n }\n}\n\n/**\n * Converts a hybrid key of the type HybridEncKey into base64 string.\n *\n * @param encHybridKey - The HybridEncKey key.\n * @returns The resulting base64 key encoding.\n */\nexport function encHybridKeyToBase64(encHybridKey: HybridEncKey): string {\n try {\n const json = JSON.stringify({\n kyberCiphertext: uint8ArrayToBase64(encHybridKey.kyberCiphertext),\n encryptedKey: uint8ArrayToBase64(encHybridKey.encryptedKey),\n });\n const base64 = btoa(json);\n return base64;\n } catch (error) {\n throw new Error('Failed to convert hybrid key to base64', { cause: error });\n }\n}\n\n/**\n * Converts a base64 string into a hybrid key of the type HybridEncKey.\n *\n * @param base - The base64 encoding of the hybrid key.\n * @returns The resulting HybridEncKey key.\n */\nexport function base64ToEncHybridKey(base64: string): HybridEncKey {\n try {\n const json = atob(base64);\n const obj = JSON.parse(json);\n return {\n encryptedKey: base64ToUint8Array(obj.encryptedKey),\n kyberCiphertext: base64ToUint8Array(obj.kyberCiphertext),\n };\n } catch (error) {\n throw new Error('Failed to convert base64 to hybrid key', { cause: error });\n }\n}\n\n/**\n * Converts a password-protected key of the type PwdProtectedKey into base64 string.\n *\n * @param pwdProtectedKey - The password-protected key of the type PwdProtectedKey.\n * @returns The resulting base64 key encoding.\n */\nexport function pwdProtectedKeyToBase64(pwdProtectedKey: PwdProtectedKey): string {\n try {\n const json = JSON.stringify({\n encryptedKey: uint8ArrayToBase64(pwdProtectedKey.encryptedKey),\n salt: uint8ArrayToBase64(pwdProtectedKey.salt),\n });\n const base64 = btoa(json);\n return base64;\n } catch (error) {\n throw new Error('Failed to convert password-protected key to base64', { cause: error });\n }\n}\n\n/**\n * Converts a base64 string into a password-protected key of the type PwdProtectedKey.\n *\n * @param base64 - The base64 string.\n * @returns The resulting PwdProtectedKey key.\n */\nexport function base64ToPwdProtectedKey(base64: string): PwdProtectedKey {\n try {\n const json = atob(base64);\n const obj = JSON.parse(json);\n return {\n encryptedKey: base64ToUint8Array(obj.encryptedKey),\n salt: base64ToUint8Array(obj.salt),\n };\n } catch (error) {\n throw new Error('Failed to convert base64 to password-protected key', { cause: error });\n }\n}\n\n/**\n * Converts an email public parameters of type EmailPublicParameters into base64 string.\n *\n * @param params - The EmailPublicParameters email paramaters.\n * @returns The resulting base64 string encoding.\n */\nexport function paramsToBase64(params: EmailPublicParameters): string {\n try {\n const json = JSON.stringify({\n ...params,\n sender: userToBase64(params.sender),\n recipient: userToBase64(params.recipient),\n recipients: params.recipients?.map(userToBase64),\n });\n const base64 = btoa(json);\n return base64;\n } catch (error) {\n throw new Error('Failed to convert email public parameters to base64', { cause: error });\n }\n}\n\n/**\n * Converts a base64 string into an email paramaters of the type EmailPublicParameters.\n *\n * @param base64 - The base64 string.\n * @returns The resulting EmailPublicParameters email parameters.\n */\nexport function base64ToParams(base64: string): EmailPublicParameters {\n try {\n const json = atob(base64);\n const obj = JSON.parse(json);\n return {\n ...obj,\n sender: base64ToUser(obj.sender),\n recipient: base64ToUser(obj.recipient),\n recipients: obj.recipients?.map(base64ToUser),\n };\n } catch (error) {\n throw new Error('Failed to convert base64 to email params', { cause: error });\n }\n}\n\n/**\n * Converts an encrypted via hybrid encryption email into base64 string.\n *\n * @param email - The HybridEncryptedEmail encrypted via hybrid encryption email.\n * @returns The resulting base64 string encoding.\n */\nexport function hybridEncyptedEmailToBase64(email: HybridEncryptedEmail): string {\n try {\n const json = JSON.stringify({\n encryptedKey: encHybridKeyToBase64(email.encryptedKey),\n enc: ciphertextToBase64(email.enc),\n recipientEmail: email.recipientEmail,\n });\n const base64 = btoa(json);\n return base64;\n } catch (error) {\n throw new Error('Failed to convert hybrid email to base64', { cause: error });\n }\n}\n\n/**\n * Converts a pwd protected email into base64 string.\n *\n * @param email - The PwdProtectedEmail pwd protected email.\n * @returns The resulting base64 string encoding.\n */\nexport function pwdProtectedEmailToBase64(email: PwdProtectedEmail): string {\n try {\n const json = JSON.stringify({\n encryptedKey: pwdProtectedKeyToBase64(email.encryptedKey),\n enc: ciphertextToBase64(email.enc),\n });\n const base64 = btoa(json);\n return base64;\n } catch (error) {\n throw new Error('Failed to convert pwd protected email to base64', { cause: error });\n }\n}\n\n/**\n * Converts an Email type into a Uint8Array array.\n *\n * @param email - The email.\n * @returns The Uint8Array array representation of the Email type.\n */\nexport function emailToBinary(email: Email): Uint8Array {\n try {\n const json = JSON.stringify(email);\n return UTF8ToUint8(json);\n } catch (error) {\n throw new Error('Failed to convert EmailBody to Uint8Array', { cause: error });\n }\n}\n","/**\n * Internal methods for lattice-based ML-KEM and ML-DSA.\n * @module\n */\n/*! noble-post-quantum - MIT License (c) 2024 Paul Miller (paulmillr.com) */\nimport { shake128, shake256 } from '@noble/hashes/sha3';\nimport { getMask } from \"./utils.js\";\n// TODO: benchmark\nfunction bitReversal(n, bits = 8) {\n const padded = n.toString(2).padStart(8, '0');\n const sliced = padded.slice(-bits).padStart(7, '0');\n const revrsd = sliced.split('').reverse().join('');\n return Number.parseInt(revrsd, 2);\n}\nexport const genCrystals = (opts) => {\n // isKyber: true means Kyber, false means Dilithium\n const { newPoly, N, Q, F, ROOT_OF_UNITY, brvBits, isKyber } = opts;\n const mod = (a, modulo = Q) => {\n const result = a % modulo | 0;\n return (result >= 0 ? result | 0 : (modulo + result) | 0) | 0;\n };\n // -(Q-1)/2 < a <= (Q-1)/2\n const smod = (a, modulo = Q) => {\n const r = mod(a, modulo) | 0;\n return (r > modulo >> 1 ? (r - modulo) | 0 : r) | 0;\n };\n // Generate zettas\n function getZettas() {\n const out = newPoly(N);\n for (let i = 0; i < N; i++) {\n const b = bitReversal(i, brvBits);\n const p = BigInt(ROOT_OF_UNITY) ** BigInt(b) % BigInt(Q);\n out[i] = Number(p) | 0;\n }\n return out;\n }\n const nttZetas = getZettas();\n // Number-Theoretic Transform\n // Explained: https://electricdusk.com/ntt.html\n // Kyber has slightly different params, since there is no 512th primitive root of unity mod q,\n // only 256th primitive root of unity mod. Which also complicates MultiplyNTT.\n // TODO: there should be less ugly way to define this.\n const LEN1 = isKyber ? 128 : N;\n const LEN2 = isKyber ? 1 : 0;\n const NTT = {\n encode: (r) => {\n for (let k = 1, len = 128; len > LEN2; len >>= 1) {\n for (let start = 0; start < N; start += 2 * len) {\n const zeta = nttZetas[k++];\n for (let j = start; j < start + len; j++) {\n const t = mod(zeta * r[j + len]);\n r[j + len] = mod(r[j] - t) | 0;\n r[j] = mod(r[j] + t) | 0;\n }\n }\n }\n return r;\n },\n decode: (r) => {\n for (let k = LEN1 - 1, len = 1 + LEN2; len < LEN1 + LEN2; len <<= 1) {\n for (let start = 0; start < N; start += 2 * len) {\n const zeta = nttZetas[k--];\n for (let j = start; j < start + len; j++) {\n const t = r[j];\n r[j] = mod(t + r[j + len]);\n r[j + len] = mod(zeta * (r[j + len] - t));\n }\n }\n }\n for (let i = 0; i < r.length; i++)\n r[i] = mod(F * r[i]);\n return r;\n },\n };\n // Encode polynominal as bits\n const bitsCoder = (d, c) => {\n const mask = getMask(d);\n const bytesLen = d * (N / 8);\n return {\n bytesLen,\n encode: (poly) => {\n const r = new Uint8Array(bytesLen);\n for (let i = 0, buf = 0, bufLen = 0, pos = 0; i < poly.length; i++) {\n buf |= (c.encode(poly[i]) & mask) << bufLen;\n bufLen += d;\n for (; bufLen >= 8; bufLen -= 8, buf >>= 8)\n r[pos++] = buf & getMask(bufLen);\n }\n return r;\n },\n decode: (bytes) => {\n const r = newPoly(N);\n for (let i = 0, buf = 0, bufLen = 0, pos = 0; i < bytes.length; i++) {\n buf |= bytes[i] << bufLen;\n bufLen += 8;\n for (; bufLen >= d; bufLen -= d, buf >>= d)\n r[pos++] = c.decode(buf & mask);\n }\n return r;\n },\n };\n };\n return { mod, smod, nttZetas, NTT, bitsCoder };\n};\nconst createXofShake = (shake) => (seed, blockLen) => {\n if (!blockLen)\n blockLen = shake.blockLen;\n // Optimizations that won't mater:\n // - cached seed update (two .update(), on start and on the end)\n // - another cache which cloned into working copy\n // Faster than multiple updates, since seed less than blockLen\n const _seed = new Uint8Array(seed.length + 2);\n _seed.set(seed);\n const seedLen = seed.length;\n const buf = new Uint8Array(blockLen); // == shake128.blockLen\n let h = shake.create({});\n let calls = 0;\n let xofs = 0;\n return {\n stats: () => ({ calls, xofs }),\n get: (x, y) => {\n _seed[seedLen + 0] = x;\n _seed[seedLen + 1] = y;\n h.destroy();\n h = shake.create({}).update(_seed);\n calls++;\n return () => {\n xofs++;\n return h.xofInto(buf);\n };\n },\n clean: () => {\n h.destroy();\n buf.fill(0);\n _seed.fill(0);\n },\n };\n};\nexport const XOF128 = /* @__PURE__ */ createXofShake(shake128);\nexport const XOF256 = /* @__PURE__ */ createXofShake(shake256);\n//# sourceMappingURL=_crystals.js.map","/**\n * ML-KEM: Module Lattice-based Key Encapsulation Mechanism from\n * [FIPS-203](https://csrc.nist.gov/pubs/fips/203/ipd). A.k.a. CRYSTALS-Kyber.\n *\n * Key encapsulation is similar to DH / ECDH (think X25519), with important differences:\n * * Unlike in ECDH, we can't verify if it was \"Bob\" who've sent the shared secret\n * * Unlike ECDH, it is probabalistic and relies on quality of randomness (CSPRNG).\n * * Decapsulation never throws an error, even when shared secret was\n * encrypted by a different public key. It will just return a different shared secret.\n *\n * There are some concerns with regards to security: see\n * [djb blog](https://blog.cr.yp.to/20231003-countcorrectly.html) and\n * [mailing list](https://groups.google.com/a/list.nist.gov/g/pqc-forum/c/W2VOzy0wz_E).\n *\n * Has similar internals to ML-DSA, but their keys and params are different.\n *\n * Check out [official site](https://www.pq-crystals.org/kyber/resources.shtml),\n * [repo](https://github.com/pq-crystals/kyber),\n * [spec](https://datatracker.ietf.org/doc/draft-cfrg-schwabe-kyber/).\n * @module\n */\n/*! noble-post-quantum - MIT License (c) 2024 Paul Miller (paulmillr.com) */\nimport { sha3_256, sha3_512, shake256 } from '@noble/hashes/sha3';\nimport { u32, wrapConstructor, wrapConstructorWithOpts } from '@noble/hashes/utils';\nimport { genCrystals, XOF128 } from \"./_crystals.js\";\nimport { cleanBytes, ensureBytes, equalBytes, randomBytes, splitCoder, vecCoder, } from \"./utils.js\";\nconst N = 256; // Kyber (not FIPS-203) supports different lengths, but all std modes were using 256\nconst Q = 3329; // 13*(2**8)+1, modulo prime\nconst F = 3303; // 3303 ≡ 128**(−1) mod q (FIPS-203)\nconst ROOT_OF_UNITY = 17; // ζ = 17 ∈ Zq is a primitive 256-th root of unity modulo Q. ζ**128 ≡−1\nconst { mod, nttZetas, NTT, bitsCoder } = genCrystals({\n N,\n Q,\n F,\n ROOT_OF_UNITY,\n newPoly: (n) => new Uint16Array(n),\n brvBits: 7,\n isKyber: true,\n});\n/** Internal params of ML-KEM versions */\n// prettier-ignore\nexport const PARAMS = {\n 512: { N, Q, K: 2, ETA1: 3, ETA2: 2, du: 10, dv: 4, RBGstrength: 128 },\n 768: { N, Q, K: 3, ETA1: 2, ETA2: 2, du: 10, dv: 4, RBGstrength: 192 },\n 1024: { N, Q, K: 4, ETA1: 2, ETA2: 2, du: 11, dv: 5, RBGstrength: 256 },\n};\n// FIPS-203: compress/decompress\nconst compress = (d) => {\n // Special case, no need to compress, pass as is, but strip high bytes on compression\n if (d >= 12)\n return { encode: (i) => i, decode: (i) => i };\n // NOTE: we don't use float arithmetic (forbidden by FIPS-203 and high chance of bugs).\n // Comments map to python implementation in RFC (draft-cfrg-schwabe-kyber)\n // const round = (i: number) => Math.floor(i + 0.5) | 0;\n const a = 2 ** (d - 1);\n return {\n // const compress = (i: number) => round((2 ** d / Q) * i) % 2 ** d;\n encode: (i) => ((i << d) + Q / 2) / Q,\n // const decompress = (i: number) => round((Q / 2 ** d) * i);\n decode: (i) => (i * Q + a) >>> d,\n };\n};\n// NOTE: we merge encoding and compress because it is faster, also both require same d param\n// Converts between bytes and d-bits compressed representation. Kinda like convertRadix2 from @scure/base\n// decode(encode(t)) == t, but there is loss of information on encode(decode(t))\nconst polyCoder = (d) => bitsCoder(d, compress(d));\nfunction polyAdd(a, b) {\n for (let i = 0; i < N; i++)\n a[i] = mod(a[i] + b[i]); // a += b\n}\nfunction polySub(a, b) {\n for (let i = 0; i < N; i++)\n a[i] = mod(a[i] - b[i]); // a -= b\n}\n// FIPS-203: Computes the product of two degree-one polynomials with respect to a quadratic modulus\nfunction BaseCaseMultiply(a0, a1, b0, b1, zeta) {\n const c0 = mod(a1 * b1 * zeta + a0 * b0);\n const c1 = mod(a0 * b1 + a1 * b0);\n return { c0, c1 };\n}\n// FIPS-203: Computes the product (in the ring Tq) of two NTT representations. NOTE: works inplace for f\n// NOTE: since multiply defined only for NTT representation, we need to convert to NTT, multiply and convert back\nfunction MultiplyNTTs(f, g) {\n for (let i = 0; i < N / 2; i++) {\n let z = nttZetas[64 + (i >> 1)];\n if (i & 1)\n z = -z;\n const { c0, c1 } = BaseCaseMultiply(f[2 * i + 0], f[2 * i + 1], g[2 * i + 0], g[2 * i + 1], z);\n f[2 * i + 0] = c0;\n f[2 * i + 1] = c1;\n }\n return f;\n}\n// Return poly in NTT representation\nfunction SampleNTT(xof) {\n const r = new Uint16Array(N);\n for (let j = 0; j < N;) {\n const b = xof();\n if (b.length % 3)\n throw new Error('SampleNTT: unaligned block');\n for (let i = 0; j < N && i + 3 <= b.length; i += 3) {\n const d1 = ((b[i + 0] >> 0) | (b[i + 1] << 8)) & 0xfff;\n const d2 = ((b[i + 1] >> 4) | (b[i + 2] << 4)) & 0xfff;\n if (d1 < Q)\n r[j++] = d1;\n if (j < N && d2 < Q)\n r[j++] = d2;\n }\n }\n return r;\n}\n// Sampling from the centered binomial distribution\n// Returns poly with small coefficients (noise/errors)\nfunction sampleCBD(PRF, seed, nonce, eta) {\n const buf = PRF((eta * N) / 4, seed, nonce);\n const r = new Uint16Array(N);\n const b32 = u32(buf);\n let len = 0;\n for (let i = 0, p = 0, bb = 0, t0 = 0; i < b32.length; i++) {\n let b = b32[i];\n for (let j = 0; j < 32; j++) {\n bb += b & 1;\n b >>= 1;\n len += 1;\n if (len === eta) {\n t0 = bb;\n bb = 0;\n }\n else if (len === 2 * eta) {\n r[p++] = mod(t0 - bb);\n bb = 0;\n len = 0;\n }\n }\n }\n if (len)\n throw new Error(`sampleCBD: leftover bits: ${len}`);\n return r;\n}\n// K-PKE\n// As per FIPS-203, it doesn't perform any input validation and can't be used in standalone fashion.\nconst genKPKE = (opts) => {\n const { K, PRF, XOF, HASH512, ETA1, ETA2, du, dv } = opts;\n const poly1 = polyCoder(1);\n const polyV = polyCoder(dv);\n const polyU = polyCoder(du);\n const publicCoder = splitCoder(vecCoder(polyCoder(12), K), 32);\n const secretCoder = vecCoder(polyCoder(12), K);\n const cipherCoder = splitCoder(vecCoder(polyU, K), polyV);\n const seedCoder = splitCoder(32, 32);\n return {\n secretCoder,\n secretKeyLen: secretCoder.bytesLen,\n publicKeyLen: publicCoder.bytesLen,\n cipherTextLen: cipherCoder.bytesLen,\n keygen: (seed) => {\n ensureBytes(seed, 32);\n const seedDst = new Uint8Array(33);\n seedDst.set(seed);\n seedDst[32] = K;\n const seedHash = HASH512(seedDst);\n const [rho, sigma] = seedCoder.decode(seedHash);\n const sHat = [];\n const tHat = [];\n for (let i = 0; i < K; i++)\n sHat.push(NTT.encode(sampleCBD(PRF, sigma, i, ETA1)));\n const x = XOF(rho);\n for (let i = 0; i < K; i++) {\n const e = NTT.encode(sampleCBD(PRF, sigma, K + i, ETA1));\n for (let j = 0; j < K; j++) {\n const aji = SampleNTT(x.get(j, i)); // A[j][i], inplace\n polyAdd(e, MultiplyNTTs(aji, sHat[j]));\n }\n tHat.push(e); // t ← A ◦ s + e\n }\n x.clean();\n const res = {\n publicKey: publicCoder.encode([tHat, rho]),\n secretKey: secretCoder.encode(sHat),\n };\n cleanBytes(rho, sigma, sHat, tHat, seedDst, seedHash);\n return res;\n },\n encrypt: (publicKey, msg, seed) => {\n const [tHat, rho] = publicCoder.decode(publicKey);\n const rHat = [];\n for (let i = 0; i < K; i++)\n rHat.push(NTT.encode(sampleCBD(PRF, seed, i, ETA1)));\n const x = XOF(rho);\n const tmp2 = new Uint16Array(N);\n const u = [];\n for (let i = 0; i < K; i++) {\n const e1 = sampleCBD(PRF, seed, K + i, ETA2);\n const tmp = new Uint16Array(N);\n for (let j = 0; j < K; j++) {\n const aij = SampleNTT(x.get(i, j)); // A[i][j], inplace\n polyAdd(tmp, MultiplyNTTs(aij, rHat[j])); // t += aij * rHat[j]\n }\n polyAdd(e1, NTT.decode(tmp)); // e1 += tmp\n u.push(e1);\n polyAdd(tmp2, MultiplyNTTs(tHat[i], rHat[i])); // t2 += tHat[i] * rHat[i]\n tmp.fill(0);\n }\n x.clean();\n const e2 = sampleCBD(PRF, seed, 2 * K, ETA2);\n polyAdd(e2, NTT.decode(tmp2)); // e2 += tmp2\n const v = poly1.decode(msg); // encode plaintext m into polynomial v\n polyAdd(v, e2); // v += e2\n cleanBytes(tHat, rHat, tmp2, e2);\n return cipherCoder.encode([u, v]);\n },\n decrypt: (cipherText, privateKey) => {\n const [u, v] = cipherCoder.decode(cipherText);\n const sk = secretCoder.decode(privateKey); // s ← ByteDecode_12(dkPKE)\n const tmp = new Uint16Array(N);\n for (let i = 0; i < K; i++)\n polyAdd(tmp, MultiplyNTTs(sk[i], NTT.encode(u[i]))); // tmp += sk[i] * u[i]\n polySub(v, NTT.decode(tmp)); // v += tmp\n cleanBytes(tmp, sk, u);\n return poly1.encode(v);\n },\n };\n};\nfunction createKyber(opts) {\n const KPKE = genKPKE(opts);\n const { HASH256, HASH512, KDF } = opts;\n const { secretCoder: KPKESecretCoder, cipherTextLen } = KPKE;\n const publicKeyLen = KPKE.publicKeyLen; // 384*K+32\n const secretCoder = splitCoder(KPKE.secretKeyLen, KPKE.publicKeyLen, 32, 32);\n const secretKeyLen = secretCoder.bytesLen;\n const msgLen = 32;\n return {\n publicKeyLen,\n msgLen,\n keygen: (seed = randomBytes(64)) => {\n ensureBytes(seed, 64);\n const { publicKey, secretKey: sk } = KPKE.keygen(seed.subarray(0, 32));\n const publicKeyHash = HASH256(publicKey);\n // (dkPKE||ek||H(ek)||z)\n const secretKey = secretCoder.encode([sk, publicKey, publicKeyHash, seed.subarray(32)]);\n cleanBytes(sk, publicKeyHash);\n return { publicKey, secretKey };\n },\n encapsulate: (publicKey, msg = randomBytes(32)) => {\n ensureBytes(publicKey, publicKeyLen);\n ensureBytes(msg, msgLen);\n // FIPS-203 includes additional verification check for modulus\n const eke = publicKey.subarray(0, 384 * opts.K);\n const ek = KPKESecretCoder.encode(KPKESecretCoder.decode(eke.slice())); // Copy because of inplace encoding\n // (Modulus check.) Perform the computation ek ← ByteEncode12(ByteDecode12(eke)).\n // If ek = ̸ eke, the input is invalid. (See Section 4.2.1.)\n if (!equalBytes(ek, eke)) {\n cleanBytes(ek);\n throw new Error('ML-KEM.encapsulate: wrong publicKey modulus');\n }\n cleanBytes(ek);\n const kr = HASH512.create().update(msg).update(HASH256(publicKey)).digest(); // derive randomness\n const cipherText = KPKE.encrypt(publicKey, msg, kr.subarray(32, 64));\n kr.subarray(32).fill(0);\n return { cipherText, sharedSecret: kr.subarray(0, 32) };\n },\n decapsulate: (cipherText, secretKey) => {\n ensureBytes(secretKey, secretKeyLen); // 768*k + 96\n ensureBytes(cipherText, cipherTextLen); // 32(du*k + dv)\n const [sk, publicKey, publicKeyHash, z] = secretCoder.decode(secretKey);\n const msg = KPKE.decrypt(cipherText, sk);\n const kr = HASH512.create().update(msg).update(publicKeyHash).digest(); // derive randomness, Khat, rHat = G(mHat || h)\n const Khat = kr.subarray(0, 32);\n const cipherText2 = KPKE.encrypt(publicKey, msg, kr.subarray(32, 64)); // re-encrypt using the derived randomness\n const isValid = equalBytes(cipherText, cipherText2); // if ciphertexts do not match, “implicitly reject”\n const Kbar = KDF.create({ dkLen: 32 }).update(z).update(cipherText).digest();\n cleanBytes(msg, cipherText2, !isValid ? Khat : Kbar);\n return isValid ? Khat : Kbar;\n },\n };\n}\nfunction shakePRF(dkLen, key, nonce) {\n return shake256\n .create({ dkLen })\n .update(key)\n .update(new Uint8Array([nonce]))\n .digest();\n}\nconst opts = {\n HASH256: sha3_256,\n HASH512: sha3_512,\n KDF: shake256,\n XOF: XOF128,\n PRF: shakePRF,\n};\n/** ML-KEM-512 for 128-bit security level. Not recommended after 2030, as per ASD. */\nexport const ml_kem512 = /* @__PURE__ */ createKyber({\n ...opts,\n ...PARAMS[512],\n});\n/** ML-KEM-768, for 192-bit security level. Not recommended after 2030, as per ASD. */\nexport const ml_kem768 = /* @__PURE__ */ createKyber({\n ...opts,\n ...PARAMS[768],\n});\n/** ML-KEM-1024 for 256-bit security level. OK after 2030, as per ASD. */\nexport const ml_kem1024 = /* @__PURE__ */ createKyber({\n ...opts,\n ...PARAMS[1024],\n});\n//# sourceMappingURL=ml-kem.js.map","import { ml_kem768 } from '@noble/post-quantum/ml-kem.js';\n\n/**\n * Generates public and secret Kyber keys\n *\n * @param seed - The optional seed\n * @returns The generated Kyber key pair.\n */\nexport function generateKyberKeys(seed?: Uint8Array): {\n publicKey: Uint8Array;\n secretKey: Uint8Array;\n} {\n try {\n return ml_kem768.keygen(seed);\n } catch (error) {\n throw new Error('Failed to generate Kyber keys', { cause: error });\n }\n}\n\n/**\n * Generates a shared secret of 256-bits and encapsulates it to the given public key using Kyber algorithms\n *\n * @param publicKey - The public Kyber key\n * @returns The resulting encapsulation and the generated shared secret.\n */\nexport function encapsulateKyber(publicKey: Uint8Array): {\n cipherText: Uint8Array;\n sharedSecret: Uint8Array;\n} {\n try {\n return ml_kem768.encapsulate(publicKey);\n } catch (error) {\n throw new Error('Failed to encapsulate', { cause: error });\n }\n}\n\n/**\n * Decapsulates the encapsulated shared secret using Kyber algorithms\n *\n * @param cipherText - The encapsulated key\n * @param secretKey - The private Kyber key\n * @returns The resulting decapsulated shared secret.\n */\nexport function decapsulateKyber(cipherText: Uint8Array, secretKey: Uint8Array): Uint8Array {\n try {\n return ml_kem768.decapsulate(cipherText, secretKey);\n } catch (error) {\n throw new Error('Failed to decapsulate', { cause: error });\n }\n}\n","import { ml_kem512 } from '@noble/post-quantum/ml-kem.js';\n\n/**\n * Generates public and secret Kyber keys\n *\n * @param seed - The optional seed\n * @returns The generated Kyber key pair.\n */\nexport function generateKyberKeys(seed?: Uint8Array): {\n publicKey: Uint8Array;\n secretKey: Uint8Array;\n} {\n try {\n return ml_kem512.keygen(seed);\n } catch (error) {\n throw new Error('Failed to generate Kyber keys', { cause: error });\n }\n}\n\n/**\n * Generates a shared secret of 256-bits and encapsulates it to the given public key using Kyber algorithms\n *\n * @param publicKey - The public Kyber key\n * @returns The resulting encapsulation and the generated shared secret.\n */\nexport function encapsulateKyber(publicKey: Uint8Array): {\n cipherText: Uint8Array;\n sharedSecret: Uint8Array;\n} {\n try {\n return ml_kem512.encapsulate(publicKey);\n } catch (error) {\n throw new Error('Failed to encapsulate', { cause: error });\n }\n}\n\n/**\n * Decapsulates the encapsulated shared secret using Kyber algorithms\n *\n * @param cipherText - The encapsulated key\n * @param secretKey - The private Kyber key\n * @returns The resulting decapsulated shared secret.\n */\nexport function decapsulateKyber(cipherText: Uint8Array, secretKey: Uint8Array): Uint8Array {\n try {\n return ml_kem512.decapsulate(cipherText, secretKey);\n } catch (error) {\n throw new Error('Failed to decapsulate', { cause: error });\n }\n}\n","import { ml_kem1024 } from '@noble/post-quantum/ml-kem.js';\n\n/**\n * Generates public and secret Kyber keys\n *\n * @param seed - The optional seed\n * @returns The generated Kyber key pair.\n */\nexport function generateKyberKeys(seed?: Uint8Array): {\n publicKey: Uint8Array;\n secretKey: Uint8Array;\n} {\n try {\n return ml_kem1024.keygen(seed);\n } catch (error) {\n throw new Error('Failed to generate Kyber keys', { cause: error });\n }\n}\n\n/**\n * Generates a shared secret of 256-bits and encapsulates it to the given public key using Kyber algorithms\n *\n * @param publicKey - The public Kyber key\n * @returns The resulting encapsulation and the generated shared secret.\n */\nexport function encapsulateKyber(publicKey: Uint8Array): {\n cipherText: Uint8Array;\n sharedSecret: Uint8Array;\n} {\n try {\n return ml_kem1024.encapsulate(publicKey);\n } catch (error) {\n throw new Error('Failed to encapsulate', { cause: error });\n }\n}\n\n/**\n * Decapsulates the encapsulated shared secret using Kyber algorithms\n *\n * @param cipherText - The encapsulated key\n * @param secretKey - The private Kyber key\n * @returns The resulting decapsulated shared secret.\n */\nexport function decapsulateKyber(cipherText: Uint8Array, secretKey: Uint8Array): Uint8Array {\n try {\n return ml_kem1024.decapsulate(cipherText, secretKey);\n } catch (error) {\n throw new Error('Failed to decapsulate', { cause: error });\n }\n}\n","import { KEY_WRAPPING_ALGORITHM, KEY_FORMAT, CONTEXT_WRAPPING, AES_ALGORITHM } from '../constants';\nimport { deriveKeyFromTwoKeysAndContext } from '../derive-key/core';\n\n/**\n * Converts wrapping key in Uint8Array into CryptoKey\n *\n * @param key - The wrapping key in Uint8Array representation\n * @returns The resulting CryptoKey\n */\nexport async function importWrappingKey(key: Uint8Array): Promise<CryptoKey> {\n try {\n return await crypto.subtle.importKey(KEY_FORMAT, key, KEY_WRAPPING_ALGORITHM, false, ['wrapKey', 'unwrapKey']);\n } catch (error) {\n throw new Error('Failed to import wrapping key', { cause: error });\n }\n}\n\n/**\n * Derives wrapping key from two secrets\n *\n * @param eccSecret - The secret exchanged via elliptic curves\n * @param kyberSecret - The secret exchanged via Kyber KEM\n * @returns The resulting wrapping CryptoKey\n */\nexport async function deriveWrappingKey(eccSecret: Uint8Array, kyberSecret: Uint8Array): Promise<CryptoKey> {\n try {\n if (eccSecret.length !== kyberSecret.length) {\n throw new Error('secrets must have equal length');\n }\n const key = await deriveKeyFromTwoKeysAndContext(eccSecret, kyberSecret, CONTEXT_WRAPPING);\n return await importWrappingKey(key);\n } catch (error) {\n throw new Error('Failed to derive wrapping key', { cause: error });\n }\n}\n\n/**\n * Unwraps the given wrapped key\n *\n * @param encryptedKey - The encrypted key\n * @param wrappingKey - The secret key used for decryption\n * @returns The resulting wrapping CryptoKey\n */\nexport async function unwrapKey(encryptedKey: Uint8Array, wrappingKey: CryptoKey): Promise<CryptoKey> {\n try {\n return await crypto.subtle.unwrapKey(\n KEY_FORMAT,\n encryptedKey,\n wrappingKey,\n KEY_WRAPPING_ALGORITHM,\n AES_ALGORITHM,\n false,\n ['encrypt', 'decrypt'],\n );\n } catch (error) {\n throw new Error('Failed to unwrap key', { cause: error });\n }\n}\n\n/**\n * Wraps the given CryptoKey\n *\n * @param encryptionKey - The CryptoKey to be wrapped\n * @param wrappingKey - The secret key used for wrapping\n * @returns The resulting ciphertext\n */\nexport async function wrapKey(encryptionKey: CryptoKey, wrappingKey: CryptoKey): Promise<Uint8Array> {\n try {\n const result = await crypto.subtle.wrapKey(KEY_FORMAT, encryptionKey, wrappingKey, KEY_WRAPPING_ALGORITHM);\n return new Uint8Array(result);\n } catch (error) {\n throw new Error('Failed to wrap key', { cause: error });\n }\n}\n","import { SymmetricCiphertext, HybridEncKey, PwdProtectedKey, PublicKeys, PrivateKeys, EmailBody } from '../types';\nimport { genSymmetricCryptoKey, encryptSymmetrically, decryptSymmetrically } from '../symmetric-crypto';\nimport { emailBodyToBinary, binaryToEmailBody } from './converters';\nimport { encapsulateKyber, decapsulateKyber } from '../post-quantum-crypto';\nimport { deriveWrappingKey, wrapKey, unwrapKey, importWrappingKey } from '../key-wrapper';\nimport { deriveSecretKey } from '../asymmetric-crypto';\nimport { getKeyFromPassword, getKeyFromPasswordAndSalt } from '../derive-key';\nimport { UTF8ToUint8, uint8ToUTF8 } from '../utils';\n\n/**\n * Symmetrically encrypts an email with a randomly sampled key.\n *\n * @param email - The email to encrypt.\n * @param aux - The auxiliary data (e.g., email ID or timestamp) for AEAD.\n * @param emailID - The unique identifier of the email.\n * @returns The resulting ciphertext and the used symmetric key\n */\nexport async function encryptEmailContentSymmetrically(\n email: EmailBody,\n aux: string,\n emailID: string,\n): Promise<{ enc: SymmetricCiphertext; encryptionKey: CryptoKey }> {\n try {\n const encryptionKey = await genSymmetricCryptoKey();\n const enc = await encryptEmailContentSymmetricallyWithKey(email, encryptionKey, aux, emailID);\n return { enc, encryptionKey };\n } catch (error) {\n throw new Error('Failed to symmetrically encrypt email', { cause: error });\n }\n}\n\n/**\n * Symmetrically encrypts an email with a randomly sampled key.\n *\n * @param email - The email to encrypt.\n * @param subject - The email subject to encrypt.\n * @param aux - The auxiliary data (e.g., email ID or timestamp) for AEAD.\n * @param emailID - The unique identifier of the email.\n * @returns The resulting ciphertext and the used symmetric key\n */\nexport async function encryptEmailContentAndSubjectSymmetrically(\n email: EmailBody,\n subject: string,\n aux: string,\n emailID: string,\n): Promise<{ enc: SymmetricCiphertext; subjectEnc: SymmetricCiphertext; encryptionKey: CryptoKey }> {\n try {\n const encryptionKey = await genSymmetricCryptoKey();\n const enc = await encryptEmailContentSymmetricallyWithKey(email, encryptionKey, aux, emailID);\n const subjectBuff = UTF8ToUint8(subject);\n const subjectEnc = await encryptSymmetrically(encryptionKey, subjectBuff, aux);\n return { enc, encryptionKey, subjectEnc };\n } catch (error) {\n throw new Error('Failed to symmetrically encrypt email and subject', { cause: error });\n }\n}\n\n/**\n * Decrypts symmetrically encrypted email.\n *\n * @param encryptedEmail - The email to decrypt.\n * @param encryptionKey - The symmetric CryptoKey.\n * @returns The decrypted email\n */\nexport async function decryptEmailAndSubjectSymmetrically(\n emailCiphertext: SymmetricCiphertext,\n encSubject: SymmetricCiphertext,\n encryptionKey: CryptoKey,\n aux: string,\n): Promise<{ body: EmailBody; subject: string }> {\n try {\n const binaryEmail = await decryptSymmetrically(encryptionKey, emailCiphertext, aux);\n const subject = await decryptSymmetrically(encryptionKey, encSubject, aux);\n const body = binaryToEmailBody(binaryEmail);\n return { body, subject: uint8ToUTF8(subject) };\n } catch (error) {\n throw new Error('Failed to symmetrically decrypt email and subject', { cause: error });\n }\n}\n\n/**\n * Symmetrically encrypts an email with a randomly sampled key.\n *\n * @param email - The email to encrypt.\n * @returns The resulting ciphertext and the used symmetric key\n */\nexport async function encryptEmailContentSymmetricallyWithKey(\n emailBody: EmailBody,\n encryptionKey: CryptoKey,\n aux: string,\n emailID: string,\n): Promise<SymmetricCiphertext> {\n try {\n const binaryEmail = emailBodyToBinary(emailBody);\n const ciphertext = await encryptSymmetrically(encryptionKey, binaryEmail, aux, emailID);\n return ciphertext;\n } catch (error) {\n throw new Error('Failed to symmetrically encrypt email with the given key', { cause: error });\n }\n}\n\n/**\n * Decrypts symmetrically encrypted email.\n *\n * @param encryptedEmail - The email to decrypt.\n * @param encryptionKey - The symmetric CryptoKey.\n * @returns The decrypted email\n */\nexport async function decryptEmailSymmetrically(\n emailCiphertext: SymmetricCiphertext,\n encryptionKey: CryptoKey,\n aux: string,\n): Promise<EmailBody> {\n try {\n const binaryEmail = await decryptSymmetrically(encryptionKey, emailCiphertext, aux);\n const body = binaryToEmailBody(binaryEmail);\n return body;\n } catch (error) {\n throw new Error('Failed to symmetrically decrypt email', { cause: error });\n }\n}\n\n/**\n * Encrypts the email symmetric key using hybrid encryption.\n *\n * @param emailEncryptionKey - The symmetric CryptoKey used for email encryption.\n * @param recipientPublicKey - The public key of the recipient.\n * @param senderPrivateKey - The private key of the sender.\n * @returns The encrypted email symmetric key\n */\nexport async function encryptKeysHybrid(\n emailEncryptionKey: CryptoKey,\n recipientPublicKey: PublicKeys,\n senderPrivateKey: PrivateKeys,\n): Promise<HybridEncKey> {\n try {\n const eccSecret = await deriveSecretKey(recipientPublicKey.eccPublicKey, senderPrivateKey.eccPrivateKey);\n const { cipherText: kyberCiphertext, sharedSecret: kyberSecret } = encapsulateKyber(\n recipientPublicKey.kyberPublicKey,\n );\n const wrappingKey = await deriveWrappingKey(eccSecret, kyberSecret);\n const encryptedKey = await wrapKey(emailEncryptionKey, wrappingKey);\n return { encryptedKey, kyberCiphertext };\n } catch (error) {\n throw new Error('Failed to encrypt email key using hybrid encryption', { cause: error });\n }\n}\n\n/**\n * Decrypts the email symmetric key encrypted via hybrid encryption.\n *\n * @param encryptedKey - The encrypted email key.\n * @param senderPublicKey - The public key of the sender.\n * @param recipientPrivateKey - The private key of the recipient.\n * @returns The email encryption CryptoKey\n */\nexport async function decryptKeysHybrid(\n encryptedKey: HybridEncKey,\n senderPublicKey: PublicKeys,\n recipientPrivateKey: PrivateKeys,\n): Promise<CryptoKey> {\n try {\n const eccSecret = await deriveSecretKey(senderPublicKey.eccPublicKey, recipientPrivateKey.eccPrivateKey);\n const kyberSecret = decapsulateKyber(encryptedKey.kyberCiphertext, recipientPrivateKey.kyberPrivateKey);\n const wrappingKey = await deriveWrappingKey(eccSecret, kyberSecret);\n const encryptionKey = await unwrapKey(encryptedKey.encryptedKey, wrappingKey);\n return encryptionKey;\n } catch (error) {\n throw new Error('Failed to decrypt email key encrypted via hybrid encryption', { cause: error });\n }\n}\n\n/**\n * Password-protects the email symmetric key.\n *\n * @param emailEncryptionKey - The symmetric CryptoKey used for email encryption.\n * @param password - The secret password for key protection.\n * @returns The password-protected email symmetric key\n */\nexport async function passwordProtectKey(emailEncryptionKey: CryptoKey, password: string): Promise<PwdProtectedKey> {\n try {\n const { key, salt } = await getKeyFromPassword(password);\n const wrappingKey = await importWrappingKey(key);\n const encryptedKey = await wrapKey(emailEncryptionKey, wrappingKey);\n return { encryptedKey, salt };\n } catch (error) {\n throw new Error('Failed to password-protect email key', { cause: error });\n }\n}\n\n/**\n * Removes passoword-protection and exposes the email symmetric key.\n *\n * @param emailEncryptionKey - The password-protected email key.\n * @param password - The secret password for key protection.\n * @returns The email encryption CryptoKey\n */\nexport async function removePasswordProtection(\n emailEncryptionKey: PwdProtectedKey,\n password: string,\n): Promise<CryptoKey> {\n try {\n const key = await getKeyFromPasswordAndSalt(password, emailEncryptionKey.salt);\n const wrappingKey = await importWrappingKey(key);\n const encryptionKey = await unwrapKey(emailEncryptionKey.encryptedKey, wrappingKey);\n return encryptionKey;\n } catch (error) {\n throw new Error('Failed to remove password-protection from email key', { cause: error });\n }\n}\n","import { EmailPublicParameters } from '../types';\nimport { v4 as uuidv4 } from 'uuid';\n\n/**\n * Creates an auxilary string from public fields of the email.\n *\n * @param params - The email public parameters.\n * @returns The resulting auxilary string\n */\nexport function getAux(params: EmailPublicParameters): string {\n try {\n const { subject, replyToEmailID, sender, recipients } = params;\n const aux = JSON.stringify({ subject, replyToEmailID, sender, recipients });\n return aux;\n } catch (error) {\n throw new Error('Failed to create aux', { cause: error });\n }\n}\n\n/**\n * Creates an auxilary string from public fields of the email (except for subject field).\n *\n * @param params - The email public parameters.\n * @returns The resulting auxilary string\n */\nexport function getAuxWithoutSubject(params: EmailPublicParameters): string {\n try {\n const { replyToEmailID, sender, recipients } = params;\n const aux = JSON.stringify({ replyToEmailID, sender, recipients });\n return aux;\n } catch (error) {\n throw new Error('Failed to create aux without subject', { cause: error });\n }\n}\n\n/**\n * Creates a random email ID.\n *\n * @returns The resulting auxilary string\n */\nexport function generateEmailID(): string {\n return uuidv4();\n}\n","import { PublicKeys, PrivateKeys, HybridEncryptedEmail, Email, UserWithPublicKeys } from '../types';\nimport {\n encryptEmailContentSymmetrically,\n decryptEmailSymmetrically,\n encryptKeysHybrid,\n decryptKeysHybrid,\n} from './core';\nimport { getAux } from './utils';\n\n/**\n * Encrypts the email using hybrid encryption.\n *\n * @param email - The email to encrypt.\n * @param recipientPublicKeys - The public keys of the recipient.\n * @param senderPrivateKey - The private key of the sender.\n * @returns The encrypted email\n */\nexport async function encryptEmailHybrid(\n email: Email,\n recipient: UserWithPublicKeys,\n senderPrivateKey: PrivateKeys,\n): Promise<HybridEncryptedEmail> {\n try {\n const aux = getAux(email.params);\n const { enc, encryptionKey } = await encryptEmailContentSymmetrically(email.body, aux, email.id);\n const encryptedKey = await encryptKeysHybrid(encryptionKey, recipient.publicKeys, senderPrivateKey);\n return { enc, encryptedKey, recipientEmail: recipient.email, params: email.params, id: email.id };\n } catch (error) {\n throw new Error('Failed to encrypt email with hybrid encryption', { cause: error });\n }\n}\n\n/**\n * Encrypts the email using hybrid encryption for multiple recipients.\n *\n * @param email - The email to encrypt.\n * @param recipients - The recipients with corresponding public keys.\n * @param senderPrivateKey - The private key of the sender.\n * @returns The set of encrypted email\n */\nexport async function encryptEmailHybridForMultipleRecipients(\n email: Email,\n recipients: UserWithPublicKeys[],\n senderPrivateKey: PrivateKeys,\n): Promise<HybridEncryptedEmail[]> {\n try {\n const aux = getAux(email.params);\n const { enc, encryptionKey } = await encryptEmailContentSymmetrically(email.body, aux, email.id);\n\n const encryptedEmails: HybridEncryptedEmail[] = [];\n for (const recipient of recipients) {\n const encryptedKey = await encryptKeysHybrid(encryptionKey, recipient.publicKeys, senderPrivateKey);\n encryptedEmails.push({ enc, encryptedKey, recipientEmail: recipient.email, params: email.params, id: email.id });\n }\n return encryptedEmails;\n } catch (error) {\n throw new Error('Failed to encrypt email to multiple recipients with hybrid encryption', { cause: error });\n }\n}\n\n/**\n * Decrypts the email using hybrid encryption.\n *\n * @param encryptedEmail - The encrypted email.\n * @param senderPublicKeys - The public key of the sender.\n * @param recipientPrivateKeys - The private key of the recipient.\n * @returns The decrypted email\n */\nexport async function decryptEmailHybrid(\n encryptedEmail: HybridEncryptedEmail,\n senderPublicKeys: PublicKeys,\n recipientPrivateKeys: PrivateKeys,\n): Promise<Email> {\n try {\n const aux = getAux(encryptedEmail.params);\n const encryptionKey = await decryptKeysHybrid(encryptedEmail.encryptedKey, senderPublicKeys, recipientPrivateKeys);\n const body = await decryptEmailSymmetrically(encryptedEmail.enc, encryptionKey, aux);\n return { body, params: encryptedEmail.params, id: encryptedEmail.id };\n } catch (error) {\n throw new Error('Failed to decrypt email with hybrid encryption', { cause: error });\n }\n}\n","import { ciphertextToBase64, base64ToCiphertext } from '../utils';\nimport { PublicKeys, PrivateKeys, HybridEncryptedEmail, Email, UserWithPublicKeys } from '../types';\nimport {\n encryptEmailContentAndSubjectSymmetrically,\n decryptEmailAndSubjectSymmetrically,\n encryptKeysHybrid,\n decryptKeysHybrid,\n} from './core';\nimport { getAuxWithoutSubject } from './utils';\n\n/**\n * Encrypts the email and its subject using hybrid encryption.\n *\n * @param email - The email to encrypt.\n * @param recipientPublicKeys - The public keys of the recipient.\n * @param senderPrivateKey - The private key of the sender.\n * @returns The encrypted email\n */\nexport async function encryptEmailAndSubjectHybrid(\n email: Email,\n recipient: UserWithPublicKeys,\n senderPrivateKey: PrivateKeys,\n): Promise<HybridEncryptedEmail> {\n try {\n const aux = getAuxWithoutSubject(email.params);\n const { enc, encryptionKey, subjectEnc } = await encryptEmailContentAndSubjectSymmetrically(\n email.body,\n email.params.subject,\n aux,\n email.id,\n );\n const encSubjectStr = ciphertextToBase64(subjectEnc);\n const encryptedKey = await encryptKeysHybrid(encryptionKey, recipient.publicKeys, senderPrivateKey);\n const params = { ...email.params, subject: encSubjectStr };\n return { enc, encryptedKey, recipientEmail: recipient.email, params, id: email.id };\n } catch (error) {\n throw new Error('Failed to encrypt the email and its subject with hybrid encryption', { cause: error });\n }\n}\n\n/**\n * Encrypts the email using hybrid encryption for multiple recipients.\n *\n * @param email - The email to encrypt.\n * @param recipients - The recipients with corresponding public keys.\n * @param senderPrivateKey - The private key of the sender.\n * @returns The set of encrypted email\n */\nexport async function encryptEmailAndSubjectHybridForMultipleRecipients(\n email: Email,\n recipients: UserWithPublicKeys[],\n senderPrivateKey: PrivateKeys,\n): Promise<HybridEncryptedEmail[]> {\n try {\n const aux = getAuxWithoutSubject(email.params);\n const { enc, encryptionKey, subjectEnc } = await encryptEmailContentAndSubjectSymmetrically(\n email.body,\n email.params.subject,\n aux,\n email.id,\n );\n const encSubjectStr = ciphertextToBase64(subjectEnc);\n\n const encryptedEmails: HybridEncryptedEmail[] = [];\n for (const recipient of recipients) {\n const encryptedKey = await encryptKeysHybrid(encryptionKey, recipient.publicKeys, senderPrivateKey);\n const params = { ...email.params, subject: encSubjectStr };\n encryptedEmails.push({ enc, encryptedKey, recipientEmail: recipient.email, params, id: email.id });\n }\n return encryptedEmails;\n } catch (error) {\n throw new Error('Failed to encrypt the email and its subject to multiple recipients with hybrid encryption', {\n cause: error,\n });\n }\n}\n\n/**\n * Decrypts the email using hybrid encryption.\n *\n * @param encryptedEmail - The encrypted email.\n * @param senderPublicKeys - The public key of the sender.\n * @param recipientPrivateKeys - The private key of the recipient.\n * @returns The decrypted email\n */\nexport async function decryptEmailAndSubjectHybrid(\n encryptedEmail: HybridEncryptedEmail,\n senderPublicKeys: PublicKeys,\n recipientPrivateKeys: PrivateKeys,\n): Promise<Email> {\n try {\n const aux = getAuxWithoutSubject(encryptedEmail.params);\n const encryptionKey = await decryptKeysHybrid(encryptedEmail.encryptedKey, senderPublicKeys, recipientPrivateKeys);\n const encSubject = base64ToCiphertext(encryptedEmail.params.subject);\n const { body, subject } = await decryptEmailAndSubjectSymmetrically(\n encryptedEmail.enc,\n encSubject,\n encryptionKey,\n aux,\n );\n const params = { ...encryptedEmail.params, subject };\n return { body, params, id: encryptedEmail.id };\n } catch (error) {\n throw new Error('Failed to decrypt the email and its subject with hybrid encryption', { cause: error });\n }\n}\n","import { PwdProtectedEmail, Email } from '../types';\nimport {\n encryptEmailContentSymmetrically,\n decryptEmailSymmetrically,\n passwordProtectKey,\n removePasswordProtection,\n} from './core';\nimport { getAux } from './utils';\n\n/**\n * Creates a password-protected email.\n *\n * @param email - The email to password-protect\n * @param password - The secret password shared among recipients.\n * @returns The password-protected email\n */\nexport async function createPwdProtectedEmail(email: Email, password: string): Promise<PwdProtectedEmail> {\n try {\n if (!email?.body || !email.params) {\n throw new Error('Failed to password-protect email: Invalid email structure');\n }\n const aux = getAux(email.params);\n const { enc, encryptionKey } = await encryptEmailContentSymmetrically(email.body, aux, email.id);\n const encryptedKey = await passwordProtectKey(encryptionKey, password);\n return { enc, encryptedKey, params: email.params, id: email.id };\n } catch (error) {\n throw new Error('Failed to password-protect email', { cause: error });\n }\n}\n\n/**\n * Opens a password-protected email.\n *\n * @param encryptedEmail - The encrypted email\n * @param password - The secret password shared among recipients.\n * @returns The decrypted email\n */\nexport async function decryptPwdProtectedEmail(encryptedEmail: PwdProtectedEmail, password: string): Promise<Email> {\n try {\n const aux = getAux(encryptedEmail.params);\n const encryptionKey = await removePasswordProtection(encryptedEmail.encryptedKey, password);\n const body = await decryptEmailSymmetrically(encryptedEmail.enc, encryptionKey, aux);\n return { body, params: encryptedEmail.params, id: encryptedEmail.id };\n } catch (error) {\n throw new Error('Failed to decrypt password-protect email', { cause: error });\n }\n}\n","import { ciphertextToBase64, base64ToCiphertext } from '../utils';\nimport { PwdProtectedEmail, Email } from '../types';\nimport {\n encryptEmailContentAndSubjectSymmetrically,\n decryptEmailAndSubjectSymmetrically,\n passwordProtectKey,\n removePasswordProtection,\n} from './core';\nimport { getAuxWithoutSubject } from './utils';\n\n/**\n * Creates a password-protected email and its subject.\n *\n * @param email - The email to password-protect\n * @param password - The secret password shared among recipients.\n * @returns The password-protected email with encrypted email subject\n */\nexport async function createPwdProtectedEmailAndSubject(email: Email, password: string): Promise<PwdProtectedEmail> {\n try {\n if (!email?.body || !email.params) {\n throw new Error('Failed to password-protect email and subject: Invalid email structure');\n }\n const aux = getAuxWithoutSubject(email.params);\n const { enc, encryptionKey, subjectEnc } = await encryptEmailContentAndSubjectSymmetrically(\n email.body,\n email.params.subject,\n aux,\n email.id,\n );\n const encryptedKey = await passwordProtectKey(encryptionKey, password);\n const encSubjectStr = ciphertextToBase64(subjectEnc);\n const params = { ...email.params, subject: encSubjectStr };\n return { enc, encryptedKey, params, id: email.id };\n } catch (error) {\n throw new Error('Failed to password-protect email and subject', { cause: error });\n }\n}\n\n/**\n * Opens a password-protected email.\n *\n * @param encryptedEmail - The encrypted email with encrypted email subject.\n * @param password - The secret password shared among recipients.\n * @returns The decrypted email and email subject\n */\nexport async function decryptPwdProtectedEmailAndSubject(\n encryptedEmail: PwdProtectedEmail,\n password: string,\n): Promise<Email> {\n try {\n const aux = getAuxWithoutSubject(encryptedEmail.params);\n const encryptionKey = await removePasswordProtection(encryptedEmail.encryptedKey, password);\n const encSubject = base64ToCiphertext(encryptedEmail.params.subject);\n const { body, subject } = await decryptEmailAndSubjectSymmetrically(\n encryptedEmail.enc,\n encSubject,\n encryptionKey,\n aux,\n );\n const params = { ...encryptedEmail.params, subject };\n return { body, params, id: encryptedEmail.id };\n } catch (error) {\n throw new Error('Failed to decrypt password-protect email', { cause: error });\n }\n}\n","import { generateEccKeys } from '../asymmetric-crypto';\nimport { generateKyberKeys } from '../post-quantum-crypto';\nimport { PublicKeys, PrivateKeys } from '../types';\n\n/**\n * Generates public and private keys for email service.\n *\n * @returns The user's private and public keys\n */\nexport async function generateEmailKeys(): Promise<{ publicKeys: PublicKeys; privateKeys: PrivateKeys }> {\n try {\n const kyberKeys = generateKyberKeys();\n const keys = await generateEccKeys();\n\n const privateKeys: PrivateKeys = {\n eccPrivateKey: keys.privateKey,\n kyberPrivateKey: kyberKeys.secretKey,\n };\n\n const publicKeys: PublicKeys = {\n eccPublicKey: keys.publicKey,\n kyberPublicKey: kyberKeys.publicKey,\n };\n\n return { publicKeys, privateKeys };\n } catch (error) {\n throw new Error('Failed to generate keys for email service', { cause: error });\n }\n}\n","const instanceOfAny = (object, constructors) => constructors.some((c) => object instanceof c);\n\nlet idbProxyableTypes;\nlet cursorAdvanceMethods;\n// This is a function to prevent it throwing up in node environments.\nfunction getIdbProxyableTypes() {\n return (idbProxyableTypes ||\n (idbProxyableTypes = [\n IDBDatabase,\n IDBObjectStore,\n IDBIndex,\n IDBCursor,\n IDBTransaction,\n ]));\n}\n// This is a function to prevent it throwing up in node environments.\nfunction getCursorAdvanceMethods() {\n return (cursorAdvanceMethods ||\n (cursorAdvanceMethods = [\n IDBCursor.prototype.advance,\n IDBCursor.prototype.continue,\n IDBCursor.prototype.continuePrimaryKey,\n ]));\n}\nconst transactionDoneMap = new WeakMap();\nconst transformCache = new WeakMap();\nconst reverseTransformCache = new WeakMap();\nfunction promisifyRequest(request) {\n const promise = new Promise((resolve, reject) => {\n const unlisten = () => {\n request.removeEventListener('success', success);\n request.removeEventListener('error', error);\n };\n const success = () => {\n resolve(wrap(request.result));\n unlisten();\n };\n const error = () => {\n reject(request.error);\n unlisten();\n };\n request.addEventListener('success', success);\n request.addEventListener('error', error);\n });\n // This mapping exists in reverseTransformCache but doesn't exist in transformCache. This\n // is because we create many promises from a single IDBRequest.\n reverseTransformCache.set(promise, request);\n return promise;\n}\nfunction cacheDonePromiseForTransaction(tx) {\n // Early bail if we've already created a done promise for this transaction.\n if (transactionDoneMap.has(tx))\n return;\n const done = new Promise((resolve, reject) => {\n const unlisten = () => {\n tx.removeEventListener('complete', complete);\n tx.removeEventListener('error', error);\n tx.removeEventListener('abort', error);\n };\n const complete = () => {\n resolve();\n unlisten();\n };\n const error = () => {\n reject(tx.error || new DOMException('AbortError', 'AbortError'));\n unlisten();\n };\n tx.addEventListener('complete', complete);\n tx.addEventListener('error', error);\n tx.addEventListener('abort', error);\n });\n // Cache it for later retrieval.\n transactionDoneMap.set(tx, done);\n}\nlet idbProxyTraps = {\n get(target, prop, receiver) {\n if (target instanceof IDBTransaction) {\n // Special handling for transaction.done.\n if (prop === 'done')\n return transactionDoneMap.get(target);\n // Make tx.store return the only store in the transaction, or undefined if there are many.\n if (prop === 'store') {\n return receiver.objectStoreNames[1]\n ? undefined\n : receiver.objectStore(receiver.objectStoreNames[0]);\n }\n }\n // Else transform whatever we get back.\n return wrap(target[prop]);\n },\n set(target, prop, value) {\n target[prop] = value;\n return true;\n },\n has(target, prop) {\n if (target instanceof IDBTransaction &&\n (prop === 'done' || prop === 'store')) {\n return true;\n }\n return prop in target;\n },\n};\nfunction replaceTraps(callback) {\n idbProxyTraps = callback(idbProxyTraps);\n}\nfunction wrapFunction(func) {\n // Due to expected object equality (which is enforced by the caching in `wrap`), we\n // only create one new func per func.\n // Cursor methods are special, as the behaviour is a little more different to standard IDB. In\n // IDB, you advance the cursor and wait for a new 'success' on the IDBRequest that gave you the\n // cursor. It's kinda like a promise that can resolve with many values. That doesn't make sense\n // with real promises, so each advance methods returns a new promise for the cursor object, or\n // undefined if the end of the cursor has been reached.\n if (getCursorAdvanceMethods().includes(func)) {\n return function (...args) {\n // Calling the original function with the proxy as 'this' causes ILLEGAL INVOCATION, so we use\n // the original object.\n func.apply(unwrap(this), args);\n return wrap(this.request);\n };\n }\n return function (...args) {\n // Calling the original function with the proxy as 'this' causes ILLEGAL INVOCATION, so we use\n // the original object.\n return wrap(func.apply(unwrap(this), args));\n };\n}\nfunction transformCachableValue(value) {\n if (typeof value === 'function')\n return wrapFunction(value);\n // This doesn't return, it just creates a 'done' promise for the transaction,\n // which is later returned for transaction.done (see idbObjectHandler).\n if (value instanceof IDBTransaction)\n cacheDonePromiseForTransaction(value);\n if (instanceOfAny(value, getIdbProxyableTypes()))\n return new Proxy(value, idbProxyTraps);\n // Return the same value back if we're not going to transform it.\n return value;\n}\nfunction wrap(value) {\n // We sometimes generate multiple promises from a single IDBRequest (eg when cursoring), because\n // IDB is weird and a single IDBRequest can yield many responses, so these can't be cached.\n if (value instanceof IDBRequest)\n return promisifyRequest(value);\n // If we've already transformed this value before, reuse the transformed value.\n // This is faster, but it also provides object equality.\n if (transformCache.has(value))\n return transformCache.get(value);\n const newValue = transformCachableValue(value);\n // Not all types are transformed.\n // These may be primitive types, so they can't be WeakMap keys.\n if (newValue !== value) {\n transformCache.set(value, newValue);\n reverseTransformCache.set(newValue, value);\n }\n return newValue;\n}\nconst unwrap = (value) => reverseTransformCache.get(value);\n\n/**\n * Open a database.\n *\n * @param name Name of the database.\n * @param version Schema version.\n * @param callbacks Additional callbacks.\n */\nfunction openDB(name, version, { blocked, upgrade, blocking, terminated } = {}) {\n const request = indexedDB.open(name, version);\n const openPromise = wrap(request);\n if (upgrade) {\n request.addEventListener('upgradeneeded', (event) => {\n upgrade(wrap(request.result), event.oldVersion, event.newVersion, wrap(request.transaction), event);\n });\n }\n if (blocked) {\n request.addEventListener('blocked', (event) => blocked(\n // Casting due to https://github.com/microsoft/TypeScript-DOM-lib-generator/pull/1405\n event.oldVersion, event.newVersion, event));\n }\n openPromise\n .then((db) => {\n if (terminated)\n db.addEventListener('close', () => terminated());\n if (blocking) {\n db.addEventListener('versionchange', (event) => blocking(event.oldVersion, event.newVersion, event));\n }\n })\n .catch(() => { });\n return openPromise;\n}\n/**\n * Delete a database.\n *\n * @param name Name of the database.\n */\nfunction deleteDB(name, { blocked } = {}) {\n const request = indexedDB.deleteDatabase(name);\n if (blocked) {\n request.addEventListener('blocked', (event) => blocked(\n // Casting due to https://github.com/microsoft/TypeScript-DOM-lib-generator/pull/1405\n event.oldVersion, event));\n }\n return wrap(request).then(() => undefined);\n}\n\nconst readMethods = ['get', 'getKey', 'getAll', 'getAllKeys', 'count'];\nconst writeMethods = ['put', 'add', 'delete', 'clear'];\nconst cachedMethods = new Map();\nfunction getMethod(target, prop) {\n if (!(target instanceof IDBDatabase &&\n !(prop in target) &&\n typeof prop === 'string')) {\n return;\n }\n if (cachedMethods.get(prop))\n return cachedMethods.get(prop);\n const targetFuncName = prop.replace(/FromIndex$/, '');\n const useIndex = prop !== targetFuncName;\n const isWrite = writeMethods.includes(targetFuncName);\n if (\n // Bail if the target doesn't exist on the target. Eg, getAll isn't in Edge.\n !(targetFuncName in (useIndex ? IDBIndex : IDBObjectStore).prototype) ||\n !(isWrite || readMethods.includes(targetFuncName))) {\n return;\n }\n const method = async function (storeName, ...args) {\n // isWrite ? 'readwrite' : undefined gzipps better, but fails in Edge :(\n const tx = this.transaction(storeName, isWrite ? 'readwrite' : 'readonly');\n let target = tx.store;\n if (useIndex)\n target = target.index(args.shift());\n // Must reject if op rejects.\n // If it's a write operation, must reject if tx.done rejects.\n // Must reject with op rejection first.\n // Must resolve with op value.\n // Must handle both promises (no unhandled rejections)\n return (await Promise.all([\n target[targetFuncName](...args),\n isWrite && tx.done,\n ]))[0];\n };\n cachedMethods.set(prop, method);\n return method;\n}\nreplaceTraps((oldTraps) => ({\n ...oldTraps,\n get: (target, prop, receiver) => getMethod(target, prop) || oldTraps.get(target, prop, receiver),\n has: (target, prop) => !!getMethod(target, prop) || oldTraps.has(target, prop),\n}));\n\nconst advanceMethodProps = ['continue', 'continuePrimaryKey', 'advance'];\nconst methodMap = {};\nconst advanceResults = new WeakMap();\nconst ittrProxiedCursorToOriginalProxy = new WeakMap();\nconst cursorIteratorTraps = {\n get(target, prop) {\n if (!advanceMethodProps.includes(prop))\n return target[prop];\n let cachedFunc = methodMap[prop];\n if (!cachedFunc) {\n cachedFunc = methodMap[prop] = function (...args) {\n advanceResults.set(this, ittrProxiedCursorToOriginalProxy.get(this)[prop](...args));\n };\n }\n return cachedFunc;\n },\n};\nasync function* iterate(...args) {\n // tslint:disable-next-line:no-this-assignment\n let cursor = this;\n if (!(cursor instanceof IDBCursor)) {\n cursor = await cursor.openCursor(...args);\n }\n if (!cursor)\n return;\n cursor = cursor;\n const proxiedCursor = new Proxy(cursor, cursorIteratorTraps);\n ittrProxiedCursorToOriginalProxy.set(proxiedCursor, cursor);\n // Map this double-proxy back to the original, so other cursor methods work.\n reverseTransformCache.set(proxiedCursor, unwrap(cursor));\n while (cursor) {\n yield proxiedCursor;\n // If one of the advancing methods was not called, call continue().\n cursor = await (advanceResults.get(proxiedCursor) || cursor.continue());\n advanceResults.delete(proxiedCursor);\n }\n}\nfunction isIteratorProp(target, prop) {\n return ((prop === Symbol.asyncIterator &&\n instanceOfAny(target, [IDBIndex, IDBObjectStore, IDBCursor])) ||\n (prop === 'iterate' && instanceOfAny(target, [IDBIndex, IDBObjectStore])));\n}\nreplaceTraps((oldTraps) => ({\n ...oldTraps,\n get(target, prop, receiver) {\n if (isIteratorProp(target, prop))\n return iterate;\n return oldTraps.get(target, prop, receiver);\n },\n has(target, prop) {\n return isIteratorProp(target, prop) || oldTraps.has(target, prop);\n },\n}));\n\nexport { deleteDB, openDB, unwrap, wrap };\n","import { DBSchema, openDB, deleteDB, IDBPDatabase } from 'idb';\nimport { StoredEmail, Email } from '../types';\nimport { decryptEmailSymmetrically, encryptEmailContentSymmetricallyWithKey } from '../email-crypto/core';\nimport { deriveSymmetricCryptoKeyFromContext } from '../derive-key';\nimport { CONTEXT_INDEX, DB_LABEL, DB_VERSION } from '../constants';\nimport { getAux } from '../email-crypto';\n\nexport type MailDB = IDBPDatabase<EncryptedSearchDB>;\n\nexport interface EncryptedSearchDB extends DBSchema {\n email: {\n key: string;\n value: StoredEmail;\n indexes: { byTime: number[] };\n };\n}\n\n/**\n * Returns IndexedDB database name for the given user\n *\n * @param userID - The user ID\n * @returns The database name\n */\nconst getDatabaseName = (userID: string): string => {\n return `ES:${userID}:DB`;\n};\n\n/**\n * Opens IndexedDB database for the given user\n *\n * @param userID - The user ID\n * @returns The database\n */\nexport const openDatabase = async (userID: string): Promise<MailDB> => {\n try {\n const dbName = getDatabaseName(userID);\n return openDB<EncryptedSearchDB>(dbName, DB_VERSION, {\n upgrade(db) {\n if (!db.objectStoreNames.contains(DB_LABEL)) {\n const store = db.createObjectStore(DB_LABEL, { keyPath: 'id' });\n store.createIndex('byTime', 'params.createdAt');\n }\n },\n });\n } catch (error) {\n throw new Error(`Cannot open a database for the user ${userID}`, { cause: error });\n }\n};\n\n/**\n * Closes the IndexedDB database\n *\n * @param esDB - The database\n */\nexport const closeDatabase = (esDB: MailDB): void => {\n return esDB.close();\n};\n\n/**\n * Deletes IndexedDB database for the given user\n *\n * @param userID - The user ID\n * @returns The database\n */\nexport const deleteDatabase = async (userID: string): Promise<void> => {\n const dbName = getDatabaseName(userID);\n return deleteDB(dbName);\n};\n\n/**\n * Derives database encryption key for the given user\n *\n * @param userID - The user ID\n * @returns The symmetric CryptoKey for protecting database\n */\nexport const deriveIndexKey = async (baseKey: Uint8Array): Promise<CryptoKey> => {\n return deriveSymmetricCryptoKeyFromContext(CONTEXT_INDEX, baseKey);\n};\n\n/**\n * Encrypts the given email and stores it in the IndexedDB database\n *\n * @param newEmailToStore - The email for storing\n * @param indexKey - The symmetric CryptoKey key for protecting database\n * @param esDB - The database\n */\nexport const encryptAndStoreEmail = async (\n newEmailToStore: Email,\n indexKey: CryptoKey,\n esDB: MailDB,\n): Promise<void> => {\n try {\n const aux = getAux(newEmailToStore.params);\n const ciphertext = await encryptEmailContentSymmetricallyWithKey(\n newEmailToStore.body,\n indexKey,\n aux,\n newEmailToStore.id,\n );\n const encryptedEmail = { content: ciphertext, params: newEmailToStore.params, id: newEmailToStore.id };\n await esDB.put(DB_LABEL, encryptedEmail);\n } catch (error) {\n throw new Error('Cannot encrypt and add the given email to the database', { cause: error });\n }\n};\n\n/**\n * Encrypts the given set of emails and stores it in the IndexedDB database\n *\n * @param newEmailsToStore - The set of emails for storing\n * @param indexKey - The symmetric CryptoKey key for protecting database\n * @param esDB - The database\n */\nexport const encryptAndStoreManyEmail = async (\n newEmailsToStore: Email[],\n indexKey: CryptoKey,\n esDB: MailDB,\n): Promise<void> => {\n try {\n const encryptedEmails = await Promise.all(\n newEmailsToStore.map(async (email: Email) => {\n const aux = getAux(email.params);\n const ciphertext = await encryptEmailContentSymmetricallyWithKey(email.body, indexKey, aux, email.id);\n\n return { content: ciphertext, params: email.params, id: email.id };\n }),\n );\n\n const tr = esDB.transaction(DB_LABEL, 'readwrite');\n await Promise.all([...encryptedEmails.map((encEmail) => tr.store.put(encEmail)), tr.done]);\n } catch (error) {\n throw new Error('Cannot encrypt and add emails to the database', { cause: error });\n }\n};\n\n/**\n * Decrypts the given email\n *\n * @param indexKey - The symmetric CryptoKey key for protecting database\n * @param encryptedEmail - The encrypted email\n * @returns The decrypted email\n */\nconst decryptEmail = async (indexKey: CryptoKey, encryptedEmail: StoredEmail): Promise<Email> => {\n try {\n const aux = getAux(encryptedEmail.params);\n const email = await decryptEmailSymmetrically(encryptedEmail.content, indexKey, aux);\n return { body: email, params: encryptedEmail.params, id: encryptedEmail.id };\n } catch (error) {\n throw new Error('Cannot decrypt the given email', { cause: error });\n }\n};\n\n/**\n * Fetches the email from the database and decrypts it\n *\n * @param emailID - The email identifier\n * @param indexKey - The symmetric CryptoKey key for protecting database\n * @param encryptedEmail - The encrypted email\n * @returns The decrypted email\n */\nexport const getAndDecryptEmail = async (emailID: string, indexKey: CryptoKey, esDB: MailDB): Promise<Email> => {\n try {\n const encryptedEmail = await esDB.get(DB_LABEL, emailID);\n if (!encryptedEmail) {\n throw new Error(`DB cannot find email with id ${emailID}`);\n }\n return decryptEmail(indexKey, encryptedEmail);\n } catch (error) {\n throw new Error(`Cannot fetch the email ${emailID} from the database`, { cause: error });\n }\n};\n\n/**\n * Fetches all email from the database and decrypts them\n *\n * @param indexKey - The symmetric CryptoKey key for protecting database\n * @param esDB - The database\n * @returns The decrypted emails\n */\nexport const getAndDecryptAllEmails = async (indexKey: CryptoKey, esDB: MailDB): Promise<Email[]> => {\n try {\n const encryptedEmails = await esDB.getAll(DB_LABEL);\n\n const decryptedEmails = await Promise.all(\n encryptedEmails.map(async (encEmail) => {\n const aux = getAux(encEmail.params);\n const body = await decryptEmailSymmetrically(encEmail.content, indexKey, aux);\n return { body, params: encEmail.params, id: encEmail.id };\n }),\n );\n\n return decryptedEmails.filter((email): email is Email => email !== null);\n } catch (error) {\n throw new Error('Cannot fetch and decrypt all emails from the database', { cause: error });\n }\n};\n\n/**\n * Deletes the email from the database\n *\n * @param emailID - The email identifier\n * @param esDB - The database\n */\nexport const deleteEmail = async (emailID: string, esDB: MailDB): Promise<void> => {\n await esDB.delete(DB_LABEL, emailID);\n};\n\n/**\n * Returns the number of stored email\n *\n * @param esDB - The database\n * @returns The number of stored emails\n */\nexport const getEmailCount = async (esDB: MailDB): Promise<number> => {\n return await esDB.count(DB_LABEL);\n};\n\n/**\n * Removes the given number of oldests emails from the database\n *\n * @param emailsToDelete - The number of emails to delete\n * @param esDB - The database\n */\nexport const deleteOldestEmails = async (emailsToDelete: number, esDB: MailDB): Promise<void> => {\n try {\n const tx = esDB.transaction(DB_LABEL, 'readwrite');\n const index = tx.store.index('byTime');\n\n let cursor = await index.openCursor();\n let deletedCount = 0;\n\n while (cursor && deletedCount < emailsToDelete) {\n await cursor.delete();\n deletedCount++;\n cursor = await cursor.continue();\n }\n\n await tx.done;\n } catch (error) {\n throw new Error(`Cannot delete ${emailsToDelete} oldests emails from the database`, { cause: error });\n }\n};\n\n/**\n * Enforces the maximum email number in the database\n *\n * @param esDB - The database\n * @param max - The maximum allowed number of emails\n */\nexport const enforceMaxEmailNumber = async (esDB: MailDB, max: number): Promise<void> => {\n try {\n const currentCount = await getEmailCount(esDB);\n if (currentCount <= max) {\n return;\n }\n await deleteOldestEmails(currentCount - max, esDB);\n } catch (error) {\n throw new Error(`Cannot enforce the maximum of ${max} emails on the database`, { cause: error });\n }\n};\n\n/**\n * Fetches all emails from the database, decrypts them and sortes the results in the specified order\n *\n * @param esDB - The database\n * @param indexKey - The symmetric CryptoKey key for protecting database\n * @param direction - The order of sorting. If 'next' - oldest first, if 'prev' - newest first\n * @returns Decryped emails in the specified order\n */\nconst fetchEmails = async (esDB: MailDB, indexKey: CryptoKey, direction: 'next' | 'prev'): Promise<Email[]> => {\n try {\n const tx = esDB.transaction(DB_LABEL, 'readonly');\n const index = tx.store.index('byTime');\n\n const encryptedEmails: StoredEmail[] = [];\n let cursor = await index.openCursor(null, direction);\n\n while (cursor) {\n encryptedEmails.push(cursor.value);\n cursor = await cursor.continue();\n }\n\n const emails = await Promise.all(encryptedEmails.map((encryptedEmail) => decryptEmail(indexKey, encryptedEmail)));\n\n return emails;\n } catch (error) {\n throw new Error('Cannot fetch emails from database', { cause: error });\n }\n};\n\n/**\n * Fetches all emails from the database, decrypts them and sortes the results based on the creation time (newest first)\n *\n * @param esDB - The database\n * @param indexKey - The symmetric CryptoKey key for protecting database\n * @returns The number of stored emails\n */\nexport const getAllEmailsSortedNewestFirst = async (esDB: MailDB, indexKey: CryptoKey): Promise<Email[]> => {\n return fetchEmails(esDB, indexKey, 'prev');\n};\n\n/**\n * Fetches all emails from the database, decrypts them and sortes the results based on the creation time (oldest first)\n *\n * @param esDB - The database\n * @param indexKey - The symmetric CryptoKey key for protecting database\n * @returns The number of stored emails\n */\nexport const getAllEmailsSortedOldestFirst = async (esDB: MailDB, indexKey: CryptoKey): Promise<Email[]> => {\n return fetchEmails(esDB, indexKey, 'next');\n};\n\n/**\n * Fetches a batch of emails from the database, decrypts them and sortes the results based on the creation time (newest first)\n *\n * @param esDB - The database\n * @param indexKey - The symmetric CryptoKey key for protecting database\n * @param batchSize - The size of the batch\n * @param startCursor - The starting point (optional). If not given, starts from the beginning\n * @returns The number of stored emails\n */\nexport const getEmailBatch = async (\n esDB: MailDB,\n indexKey: CryptoKey,\n batchSize: number,\n startCursor?: IDBValidKey,\n): Promise<{ emails: Email[]; nextCursor?: IDBValidKey }> => {\n try {\n const tx = esDB.transaction(DB_LABEL, 'readonly');\n const index = tx.store.index('byTime');\n\n const encryptedEmails: StoredEmail[] = [];\n let cursor;\n\n if (startCursor) {\n const range = IDBKeyRange.upperBound(startCursor, true);\n cursor = await index.openCursor(range, 'prev');\n } else {\n cursor = await index.openCursor(null, 'prev');\n }\n\n let count = 0;\n let nextCursor: IDBValidKey | undefined;\n\n while (cursor && count < batchSize) {\n encryptedEmails.push(cursor.value);\n nextCursor = cursor.key;\n count++;\n cursor = await cursor.continue();\n }\n\n const emails = await Promise.all(encryptedEmails.map((encryptedEmail) => decryptEmail(indexKey, encryptedEmail)));\n\n return {\n emails,\n nextCursor: count === batchSize ? nextCursor : undefined,\n };\n } catch (error) {\n throw new Error(`Cannot fetch email batch of ${batchSize} from the database`, { cause: error });\n }\n};\n","import { MAX_CACHE_SIZE, MAX_EMAIL_PER_BATCH } from '../constants';\nimport { getEmailBatch, getAllEmailsSortedNewestFirst, getEmailCount, MailDB } from './indexedDB';\nimport { Email, MailCache } from '../types';\nimport { emailToBinary } from '../email-crypto';\n\n/**\n * Estimates the email size in the memory\n *\n * @param email - The email\n * @returns The estimation of the email size\n */\nfunction sizeOfEmail(email: Email): number {\n return emailToBinary(email).byteLength;\n}\n\n/**\n * Creates an empty cache variable\n *\n * @returns The empty cache\n */\nfunction createEmptyCache(): MailCache<Email> {\n return {\n esCache: new Map(),\n cacheSize: 0,\n isCacheLimited: false,\n isCacheReady: true,\n };\n}\n\n/**\n * Fetches all emails from the database in batches and cahces them\n *\n * @param indexKey - The symmetric CryptoKey key for protecting database\n * @param esCache - The cache to add emails too\n * @param esDB - The database\n */\nexport const createCacheFromDB = async (indexKey: CryptoKey, esDB: MailDB): Promise<MailCache<Email>> => {\n const esCache = createEmptyCache();\n esCache.isCacheReady = false;\n try {\n const count = await getEmailCount(esDB);\n if (!count) {\n esCache.isCacheReady = true;\n return esCache;\n }\n\n if (count <= MAX_EMAIL_PER_BATCH) {\n const emails = await getAllEmailsSortedNewestFirst(esDB, indexKey);\n addEmailsToCache(emails, esCache);\n } else {\n let nextCursor: IDBValidKey | undefined = undefined;\n\n let cacheFull = false;\n while (!cacheFull) {\n const { emails, nextCursor: newCursor } = await getEmailBatch(esDB, indexKey, MAX_EMAIL_PER_BATCH, nextCursor);\n if (!newCursor || !emails.length) break;\n nextCursor = newCursor;\n\n const success = addEmailsToCache(emails, esCache);\n if (!success) cacheFull = true;\n }\n }\n return esCache;\n } catch (error) {\n throw new Error(`Email caching failed: ${error}`);\n }\n};\n\n/**\n * Gets an email from the cache\n *\n * @param emailID - The email identifier\n * @param esCache - The email cache\n * @returns The found email or throws an error\n */\nexport const getEmailFromCache = async (emailID: string, esCache: MailCache<Email>): Promise<Email> => {\n const email = esCache.esCache.get(emailID);\n if (!email) {\n throw new Error(`Email not found in cache for ID: ${emailID}`);\n }\n return email;\n};\n\n/**\n * Removes the email from cache\n *\n * @param emailID - The email identifier\n * @param esCache - The email cache\n */\nexport const deleteEmailFromCache = async (emailID: string, esCache: MailCache<Email>): Promise<void> => {\n try {\n const email = await getEmailFromCache(emailID, esCache);\n const size = sizeOfEmail(email);\n const removed = esCache.esCache.delete(emailID);\n if (removed) esCache.cacheSize -= size;\n } catch (error) {\n throw new Error(`Failed to delete email with ID ${emailID}`, { cause: error });\n }\n};\n\n/**\n * Adds emails to the cache\n *\n * @param emails - The emails to add\n * @param esCache - The email cache\n * @returns TRUE if all emails were added sucessfully, or FALSE and error reason.\n */\nexport function addEmailsToCache(emails: Email[], esCache: MailCache<Email>): { success: boolean; reason?: string } {\n try {\n for (const email of emails) {\n const result = addEmailToCache(email, esCache);\n if (!result.success) return result;\n }\n return { success: true };\n } catch (error) {\n throw new Error('Failed to add emails to the cache', { cause: error });\n }\n}\n\n/**\n * Adds email to the cache\n *\n * @param email - The email to add\n * @param esCache - The email cache\n * @returns TRUE if the email was added sucessfully, or FALSE and error reason.\n */\nexport const addEmailToCache = (email: Email, esCache: MailCache<Email>): { success: boolean; reason?: string } => {\n try {\n if (esCache.esCache.has(email.id)) {\n return { success: false, reason: 'email already exists in cache' };\n }\n\n const emailSize = sizeOfEmail(email);\n\n if (esCache.cacheSize + emailSize > MAX_CACHE_SIZE) {\n esCache.isCacheLimited = true;\n return { success: false, reason: 'hit cache limit' };\n }\n\n esCache.esCache.set(email.id, email);\n esCache.cacheSize += emailSize;\n\n return { success: true };\n } catch (error) {\n throw new Error('Failed to add email to the cache', { cause: error });\n }\n};\n","/**!\r\n * FlexSearch.js v0.8.212 (Bundle/Module)\r\n * Author and Copyright: Thomas Wilkerling\r\n * Licence: Apache-2.0\r\n * Hosted by Nextapps GmbH\r\n * https://github.com/nextapps-de/flexsearch\r\n */\nvar w;function H(a,c,b){const e=typeof b,d=typeof a;if(e!==\"undefined\"){if(d!==\"undefined\"){if(b){if(d===\"function\"&&e===d)return function(k){return a(b(k))};c=a.constructor;if(c===b.constructor){if(c===Array)return b.concat(a);if(c===Map){var f=new Map(b);for(var g of a)f.set(g[0],g[1]);return f}if(c===Set){g=new Set(b);for(f of a.values())g.add(f);return g}}}return a}return b}return d===\"undefined\"?c:a}function aa(a,c){return typeof a===\"undefined\"?c:a}function I(){return Object.create(null)}\nfunction M(a){return typeof a===\"string\"}function ba(a){return typeof a===\"object\"}function ca(a,c){if(M(c))a=a[c];else for(let b=0;a&&b<c.length;b++)a=a[c[b]];return a};const ea=/[^\\p{L}\\p{N}]+/u,fa=/(\\d{3})/g,ha=/(\\D)(\\d{3})/g,ia=/(\\d{3})(\\D)/g,ja=/[\\u0300-\\u036f]/g;function ka(a={}){if(!this||this.constructor!==ka)return new ka(...arguments);if(arguments.length)for(a=0;a<arguments.length;a++)this.assign(arguments[a]);else this.assign(a)}w=ka.prototype;\nw.assign=function(a){this.normalize=H(a.normalize,!0,this.normalize);let c=a.include,b=c||a.exclude||a.split,e;if(b||b===\"\"){if(typeof b===\"object\"&&b.constructor!==RegExp){let d=\"\";e=!c;c||(d+=\"\\\\p{Z}\");b.letter&&(d+=\"\\\\p{L}\");b.number&&(d+=\"\\\\p{N}\",e=!!c);b.symbol&&(d+=\"\\\\p{S}\");b.punctuation&&(d+=\"\\\\p{P}\");b.control&&(d+=\"\\\\p{C}\");if(b=b.char)d+=typeof b===\"object\"?b.join(\"\"):b;try{this.split=new RegExp(\"[\"+(c?\"^\":\"\")+d+\"]+\",\"u\")}catch(f){this.split=/\\s+/}}else this.split=b,e=b===!1||\"a1a\".split(b).length<\n2;this.numeric=H(a.numeric,e)}else{try{this.split=H(this.split,ea)}catch(d){this.split=/\\s+/}this.numeric=H(a.numeric,H(this.numeric,!0))}this.prepare=H(a.prepare,null,this.prepare);this.finalize=H(a.finalize,null,this.finalize);b=a.filter;this.filter=typeof b===\"function\"?b:H(b&&new Set(b),null,this.filter);this.dedupe=H(a.dedupe,!0,this.dedupe);this.matcher=H((b=a.matcher)&&new Map(b),null,this.matcher);this.mapper=H((b=a.mapper)&&new Map(b),null,this.mapper);this.stemmer=H((b=a.stemmer)&&new Map(b),\nnull,this.stemmer);this.replacer=H(a.replacer,null,this.replacer);this.minlength=H(a.minlength,1,this.minlength);this.maxlength=H(a.maxlength,1024,this.maxlength);this.rtl=H(a.rtl,!1,this.rtl);if(this.cache=b=H(a.cache,!0,this.cache))this.F=null,this.L=typeof b===\"number\"?b:2E5,this.B=new Map,this.D=new Map,this.I=this.H=128;this.h=\"\";this.J=null;this.A=\"\";this.K=null;if(this.matcher)for(const d of this.matcher.keys())this.h+=(this.h?\"|\":\"\")+d;if(this.stemmer)for(const d of this.stemmer.keys())this.A+=\n(this.A?\"|\":\"\")+d;return this};w.addStemmer=function(a,c){this.stemmer||(this.stemmer=new Map);this.stemmer.set(a,c);this.A+=(this.A?\"|\":\"\")+a;this.K=null;this.cache&&Q(this);return this};w.addFilter=function(a){typeof a===\"function\"?this.filter=a:(this.filter||(this.filter=new Set),this.filter.add(a));this.cache&&Q(this);return this};\nw.addMapper=function(a,c){if(typeof a===\"object\")return this.addReplacer(a,c);if(a.length>1)return this.addMatcher(a,c);this.mapper||(this.mapper=new Map);this.mapper.set(a,c);this.cache&&Q(this);return this};w.addMatcher=function(a,c){if(typeof a===\"object\")return this.addReplacer(a,c);if(a.length<2&&(this.dedupe||this.mapper))return this.addMapper(a,c);this.matcher||(this.matcher=new Map);this.matcher.set(a,c);this.h+=(this.h?\"|\":\"\")+a;this.J=null;this.cache&&Q(this);return this};\nw.addReplacer=function(a,c){if(typeof a===\"string\")return this.addMatcher(a,c);this.replacer||(this.replacer=[]);this.replacer.push(a,c);this.cache&&Q(this);return this};\nw.encode=function(a,c){if(this.cache&&a.length<=this.H)if(this.F){if(this.B.has(a))return this.B.get(a)}else this.F=setTimeout(Q,50,this);this.normalize&&(typeof this.normalize===\"function\"?a=this.normalize(a):a=ja?a.normalize(\"NFKD\").replace(ja,\"\").toLowerCase():a.toLowerCase());this.prepare&&(a=this.prepare(a));this.numeric&&a.length>3&&(a=a.replace(ha,\"$1 $2\").replace(ia,\"$1 $2\").replace(fa,\"$1 \"));const b=!(this.dedupe||this.mapper||this.filter||this.matcher||this.stemmer||this.replacer);let e=\n[],d=I(),f,g,k=this.split||this.split===\"\"?a.split(this.split):[a];for(let l=0,m,p;l<k.length;l++)if((m=p=k[l])&&!(m.length<this.minlength||m.length>this.maxlength)){if(c){if(d[m])continue;d[m]=1}else{if(f===m)continue;f=m}if(b)e.push(m);else if(!this.filter||(typeof this.filter===\"function\"?this.filter(m):!this.filter.has(m))){if(this.cache&&m.length<=this.I)if(this.F){var h=this.D.get(m);if(h||h===\"\"){h&&e.push(h);continue}}else this.F=setTimeout(Q,50,this);if(this.stemmer){this.K||(this.K=new RegExp(\"(?!^)(\"+\nthis.A+\")$\"));let u;for(;u!==m&&m.length>2;)u=m,m=m.replace(this.K,r=>this.stemmer.get(r))}if(m&&(this.mapper||this.dedupe&&m.length>1)){h=\"\";for(let u=0,r=\"\",t,n;u<m.length;u++)t=m.charAt(u),t===r&&this.dedupe||((n=this.mapper&&this.mapper.get(t))||n===\"\"?n===r&&this.dedupe||!(r=n)||(h+=n):h+=r=t);m=h}this.matcher&&m.length>1&&(this.J||(this.J=new RegExp(\"(\"+this.h+\")\",\"g\")),m=m.replace(this.J,u=>this.matcher.get(u)));if(m&&this.replacer)for(h=0;m&&h<this.replacer.length;h+=2)m=m.replace(this.replacer[h],\nthis.replacer[h+1]);this.cache&&p.length<=this.I&&(this.D.set(p,m),this.D.size>this.L&&(this.D.clear(),this.I=this.I/1.1|0));if(m){if(m!==p)if(c){if(d[m])continue;d[m]=1}else{if(g===m)continue;g=m}e.push(m)}}}this.finalize&&(e=this.finalize(e)||e);this.cache&&a.length<=this.H&&(this.B.set(a,e),this.B.size>this.L&&(this.B.clear(),this.H=this.H/1.1|0));return e};function Q(a){a.F=null;a.B.clear();a.D.clear()};function la(a,c,b){b||(c||typeof a!==\"object\"?typeof c===\"object\"&&(b=c,c=0):b=a);b&&(a=b.query||a,c=b.limit||c);let e=\"\"+(c||0);b&&(e+=(b.offset||0)+!!b.context+!!b.suggest+(b.resolve!==!1)+(b.resolution||this.resolution)+(b.boost||0));a=(\"\"+a).toLowerCase();this.cache||(this.cache=new ma);let d=this.cache.get(a+e);if(!d){const f=b&&b.cache;f&&(b.cache=!1);d=this.search(a,c,b);f&&(b.cache=f);this.cache.set(a+e,d)}return d}function ma(a){this.limit=a&&a!==!0?a:1E3;this.cache=new Map;this.h=\"\"}\nma.prototype.set=function(a,c){this.cache.set(this.h=a,c);this.cache.size>this.limit&&this.cache.delete(this.cache.keys().next().value)};ma.prototype.get=function(a){const c=this.cache.get(a);c&&this.h!==a&&(this.cache.delete(a),this.cache.set(this.h=a,c));return c};ma.prototype.remove=function(a){for(const c of this.cache){const b=c[0];c[1].includes(a)&&this.cache.delete(b)}};ma.prototype.clear=function(){this.cache.clear();this.h=\"\"};const na={normalize:!1,numeric:!1,dedupe:!1};const oa={};const ra=new Map([[\"b\",\"p\"],[\"v\",\"f\"],[\"w\",\"f\"],[\"z\",\"s\"],[\"x\",\"s\"],[\"d\",\"t\"],[\"n\",\"m\"],[\"c\",\"k\"],[\"g\",\"k\"],[\"j\",\"k\"],[\"q\",\"k\"],[\"i\",\"e\"],[\"y\",\"e\"],[\"u\",\"o\"]]);const sa=new Map([[\"ae\",\"a\"],[\"oe\",\"o\"],[\"sh\",\"s\"],[\"kh\",\"k\"],[\"th\",\"t\"],[\"ph\",\"f\"],[\"pf\",\"f\"]]),ta=[/([^aeo])h(.)/g,\"$1$2\",/([aeo])h([^aeo]|$)/g,\"$1$2\",/(.)\\1+/g,\"$1\"];const ua={a:\"\",e:\"\",i:\"\",o:\"\",u:\"\",y:\"\",b:1,f:1,p:1,v:1,c:2,g:2,j:2,k:2,q:2,s:2,x:2,z:2,\"\\u00df\":2,d:3,t:3,l:4,m:5,n:5,r:6};var va={Exact:na,Default:oa,Normalize:oa,LatinBalance:{mapper:ra},LatinAdvanced:{mapper:ra,matcher:sa,replacer:ta},LatinExtra:{mapper:ra,replacer:ta.concat([/(?!^)[aeo]/g,\"\"]),matcher:sa},LatinSoundex:{dedupe:!1,include:{letter:!0},finalize:function(a){for(let b=0;b<a.length;b++){var c=a[b];let e=c.charAt(0),d=ua[e];for(let f=1,g;f<c.length&&(g=c.charAt(f),g===\"h\"||g===\"w\"||!(g=ua[g])||g===d||(e+=g,d=g,e.length!==4));f++);a[b]=e}}},CJK:{split:\"\"},LatinExact:na,LatinDefault:oa,LatinSimple:oa};function wa(a,c,b,e){let d=[];for(let f=0,g;f<a.index.length;f++)if(g=a.index[f],c>=g.length)c-=g.length;else{c=g[e?\"splice\":\"slice\"](c,b);const k=c.length;if(k&&(d=d.length?d.concat(c):c,b-=k,e&&(a.length-=k),!b))break;c=0}return d}\nfunction xa(a){if(!this||this.constructor!==xa)return new xa(a);this.index=a?[a]:[];this.length=a?a.length:0;const c=this;return new Proxy([],{get(b,e){if(e===\"length\")return c.length;if(e===\"push\")return function(d){c.index[c.index.length-1].push(d);c.length++};if(e===\"pop\")return function(){if(c.length)return c.length--,c.index[c.index.length-1].pop()};if(e===\"indexOf\")return function(d){let f=0;for(let g=0,k,h;g<c.index.length;g++){k=c.index[g];h=k.indexOf(d);if(h>=0)return f+h;f+=k.length}return-1};\nif(e===\"includes\")return function(d){for(let f=0;f<c.index.length;f++)if(c.index[f].includes(d))return!0;return!1};if(e===\"slice\")return function(d,f){return wa(c,d||0,f||c.length,!1)};if(e===\"splice\")return function(d,f){return wa(c,d||0,f||c.length,!0)};if(e===\"constructor\")return Array;if(typeof e!==\"symbol\")return(b=c.index[e/2**31|0])&&b[e]},set(b,e,d){b=e/2**31|0;(c.index[b]||(c.index[b]=[]))[e]=d;c.length++;return!0}})}xa.prototype.clear=function(){this.index.length=0};xa.prototype.push=function(){};\nfunction R(a=8){if(!this||this.constructor!==R)return new R(a);this.index=I();this.h=[];this.size=0;a>32?(this.B=Aa,this.A=BigInt(a)):(this.B=Ba,this.A=a)}R.prototype.get=function(a){const c=this.index[this.B(a)];return c&&c.get(a)};R.prototype.set=function(a,c){var b=this.B(a);let e=this.index[b];e?(b=e.size,e.set(a,c),(b-=e.size)&&this.size++):(this.index[b]=e=new Map([[a,c]]),this.h.push(e),this.size++)};\nfunction S(a=8){if(!this||this.constructor!==S)return new S(a);this.index=I();this.h=[];this.size=0;a>32?(this.B=Aa,this.A=BigInt(a)):(this.B=Ba,this.A=a)}S.prototype.add=function(a){var c=this.B(a);let b=this.index[c];b?(c=b.size,b.add(a),(c-=b.size)&&this.size++):(this.index[c]=b=new Set([a]),this.h.push(b),this.size++)};w=R.prototype;w.has=S.prototype.has=function(a){const c=this.index[this.B(a)];return c&&c.has(a)};\nw.delete=S.prototype.delete=function(a){const c=this.index[this.B(a)];c&&c.delete(a)&&this.size--};w.clear=S.prototype.clear=function(){this.index=I();this.h=[];this.size=0};w.values=S.prototype.values=function*(){for(let a=0;a<this.h.length;a++)for(let c of this.h[a].values())yield c};w.keys=S.prototype.keys=function*(){for(let a=0;a<this.h.length;a++)for(let c of this.h[a].keys())yield c};w.entries=S.prototype.entries=function*(){for(let a=0;a<this.h.length;a++)for(let c of this.h[a].entries())yield c};\nfunction Ba(a){let c=2**this.A-1;if(typeof a==\"number\")return a&c;let b=0,e=this.A+1;for(let d=0;d<a.length;d++)b=(b*e^a.charCodeAt(d))&c;return this.A===32?b+2**31:b}function Aa(a){let c=BigInt(2)**this.A-BigInt(1);var b=typeof a;if(b===\"bigint\")return a&c;if(b===\"number\")return BigInt(a)&c;b=BigInt(0);let e=this.A+BigInt(1);for(let d=0;d<a.length;d++)b=(b*e^BigInt(a.charCodeAt(d)))&c;return b};let Ca,Da;\nasync function Ea(a){a=a.data;var c=a.task;const b=a.id;let e=a.args;switch(c){case \"init\":Da=a.options||{};(c=a.factory)?(Function(\"return \"+c)()(self),Ca=new self.FlexSearch.Index(Da),delete self.FlexSearch):Ca=new T(Da);postMessage({id:b});break;default:let d;c===\"export\"&&(e[1]?(e[0]=Da.export,e[2]=0,e[3]=1):e=null);c===\"import\"?e[0]&&(a=await Da.import.call(Ca,e[0]),Ca.import(e[0],a)):((d=e&&Ca[c].apply(Ca,e))&&d.then&&(d=await d),d&&d.await&&(d=await d.await),c===\"search\"&&d.result&&(d=d.result));\npostMessage(c===\"search\"?{id:b,msg:d}:{id:b})}};function Fa(a){Ga.call(a,\"add\");Ga.call(a,\"append\");Ga.call(a,\"search\");Ga.call(a,\"update\");Ga.call(a,\"remove\");Ga.call(a,\"searchCache\")}let Ha,Ia,Ja;function Ka(){Ha=Ja=0}\nfunction Ga(a){this[a+\"Async\"]=function(){const c=arguments;var b=c[c.length-1];let e;typeof b===\"function\"&&(e=b,delete c[c.length-1]);Ha?Ja||(Ja=Date.now()-Ia>=this.priority*this.priority*3):(Ha=setTimeout(Ka,0),Ia=Date.now());if(Ja){const f=this;return new Promise(g=>{setTimeout(function(){g(f[a+\"Async\"].apply(f,c))},0)})}const d=this[a].apply(this,c);b=d.then?d:new Promise(f=>f(d));e&&b.then(e);return b}};let V=0;\nfunction La(a={},c){function b(k){function h(l){l=l.data||l;const m=l.id,p=m&&f.h[m];p&&(p(l.msg),delete f.h[m])}this.worker=k;this.h=I();if(this.worker){d?this.worker.on(\"message\",h):this.worker.onmessage=h;if(a.config)return new Promise(function(l){V>1E9&&(V=0);f.h[++V]=function(){l(f)};f.worker.postMessage({id:V,task:\"init\",factory:e,options:a})});this.priority=a.priority||4;this.encoder=c||null;this.worker.postMessage({task:\"init\",factory:e,options:a});return this}}if(!this||this.constructor!==La)return new La(a);\nlet e=typeof self!==\"undefined\"?self._factory:typeof window!==\"undefined\"?window._factory:null;e&&(e=e.toString());const d=typeof window===\"undefined\",f=this,g=Ma(e,d,a.worker);return g.then?g.then(function(k){return b.call(f,k)}):b.call(this,g)}W(\"add\");W(\"append\");W(\"search\");W(\"update\");W(\"remove\");W(\"clear\");W(\"export\");W(\"import\");La.prototype.searchCache=la;Fa(La.prototype);\nfunction W(a){La.prototype[a]=function(){const c=this,b=[].slice.call(arguments);var e=b[b.length-1];let d;typeof e===\"function\"&&(d=e,b.pop());e=new Promise(function(f){a===\"export\"&&typeof b[0]===\"function\"&&(b[0]=null);V>1E9&&(V=0);c.h[++V]=f;c.worker.postMessage({task:a,id:V,args:b})});return d?(e.then(d),this):e}}\nfunction Ma(a,c,b){return c?typeof module!==\"undefined\"?new(require(\"worker_threads\")[\"Worker\"])(__dirname+\"/worker/node.js\"):import(\"worker_threads\").then(function(worker){return new worker[\"Worker\"](import.meta.dirname+\"/node/node.mjs\")}):a?new window.Worker(URL.createObjectURL(new Blob([\"onmessage=\"+Ea.toString()],{type:\"text/javascript\"}))):new window.Worker(typeof b===\"string\"?b:import.meta.url.replace(\"/worker.js\",\"/worker/worker.js\").replace(\"flexsearch.bundle.module.min.js\",\n\"module/worker/worker.js\").replace(\"flexsearch.bundle.module.min.mjs\",\"module/worker/worker.js\"),{type:\"module\"})};Na.prototype.add=function(a,c,b){ba(a)&&(c=a,a=ca(c,this.key));if(c&&(a||a===0)){if(!b&&this.reg.has(a))return this.update(a,c);for(let k=0,h;k<this.field.length;k++){h=this.B[k];var e=this.index.get(this.field[k]);if(typeof h===\"function\"){var d=h(c);d&&e.add(a,d,b,!0)}else if(d=h.G,!d||d(c))h.constructor===String?h=[\"\"+h]:M(h)&&(h=[h]),Qa(c,h,this.D,0,e,a,h[0],b)}if(this.tag)for(e=0;e<this.A.length;e++){var f=this.A[e];d=this.tag.get(this.F[e]);let k=I();if(typeof f===\"function\"){if(f=f(c),!f)continue}else{var g=\nf.G;if(g&&!g(c))continue;f.constructor===String&&(f=\"\"+f);f=ca(c,f)}if(d&&f){M(f)&&(f=[f]);for(let h=0,l,m;h<f.length;h++)if(l=f[h],!k[l]&&(k[l]=1,(g=d.get(l))?m=g:d.set(l,m=[]),!b||!m.includes(a))){if(m.length===2**31-1){g=new xa(m);if(this.fastupdate)for(let p of this.reg.values())p.includes(m)&&(p[p.indexOf(m)]=g);d.set(l,m=g)}m.push(a);this.fastupdate&&((g=this.reg.get(a))?g.push(m):this.reg.set(a,[m]))}}}if(this.store&&(!b||!this.store.has(a))){let k;if(this.h){k=I();for(let h=0,l;h<this.h.length;h++){l=\nthis.h[h];if((b=l.G)&&!b(c))continue;let m;if(typeof l===\"function\"){m=l(c);if(!m)continue;l=[l.O]}else if(M(l)||l.constructor===String){k[l]=c[l];continue}Ra(c,k,l,0,l[0],m)}}this.store.set(a,k||c)}this.worker&&(this.fastupdate||this.reg.add(a))}return this};function Ra(a,c,b,e,d,f){a=a[d];if(e===b.length-1)c[d]=f||a;else if(a)if(a.constructor===Array)for(c=c[d]=Array(a.length),d=0;d<a.length;d++)Ra(a,c,b,e,d);else c=c[d]||(c[d]=I()),d=b[++e],Ra(a,c,b,e,d)}\nfunction Qa(a,c,b,e,d,f,g,k){if(a=a[g])if(e===c.length-1){if(a.constructor===Array){if(b[e]){for(c=0;c<a.length;c++)d.add(f,a[c],!0,!0);return}a=a.join(\" \")}d.add(f,a,k,!0)}else if(a.constructor===Array)for(g=0;g<a.length;g++)Qa(a,c,b,e,d,f,g,k);else g=c[++e],Qa(a,c,b,e,d,f,g,k)};function Sa(a,c,b,e){if(!a.length)return a;if(a.length===1)return a=a[0],a=b||a.length>c?a.slice(b,b+c):a,e?Ta.call(this,a):a;let d=[];for(let f=0,g,k;f<a.length;f++)if((g=a[f])&&(k=g.length)){if(b){if(b>=k){b-=k;continue}g=g.slice(b,b+c);k=g.length;b=0}k>c&&(g=g.slice(0,c),k=c);if(!d.length&&k>=c)return e?Ta.call(this,g):g;d.push(g);c-=k;if(!c)break}d=d.length>1?[].concat.apply([],d):d[0];return e?Ta.call(this,d):d};function Ua(a,c,b,e){var d=e[0];if(d[0]&&d[0].query)return a[c].apply(a,d);if(!(c!==\"and\"&&c!==\"not\"||a.result.length||a.await||d.suggest))return e.length>1&&(d=e[e.length-1]),(e=d.resolve)?a.await||a.result:a;let f=[],g=0,k=0,h,l,m,p,u;for(c=0;c<e.length;c++)if(d=e[c]){var r=void 0;if(d.constructor===X)r=d.await||d.result;else if(d.then||d.constructor===Array)r=d;else{g=d.limit||0;k=d.offset||0;m=d.suggest;l=d.resolve;h=((p=d.highlight||a.highlight)||d.enrich)&&l;r=d.queue;let t=d.async||r,n=d.index,\nq=d.query;n?a.index||(a.index=n):n=a.index;if(q||d.tag){const x=d.field||d.pluck;x&&(!q||a.query&&!p||(a.query=q,a.field=x,a.highlight=p),n=n.index.get(x));if(r&&(u||a.await)){u=1;let v;const A=a.C.length,D=new Promise(function(F){v=F});(function(F,E){D.h=function(){E.index=null;E.resolve=!1;let B=t?F.searchAsync(E):F.search(E);if(B.then)return B.then(function(z){a.C[A]=z=z.result||z;v(z);return z});B=B.result||B;v(B);return B}})(n,Object.assign({},d));a.C.push(D);f[c]=D;continue}else d.resolve=!1,\nd.index=null,r=t?n.searchAsync(d):n.search(d),d.resolve=l,d.index=n}else if(d.and)r=Va(d,\"and\",n);else if(d.or)r=Va(d,\"or\",n);else if(d.not)r=Va(d,\"not\",n);else if(d.xor)r=Va(d,\"xor\",n);else continue}r.await?(u=1,r=r.await):r.then?(u=1,r=r.then(function(t){return t.result||t})):r=r.result||r;f[c]=r}u&&!a.await&&(a.await=new Promise(function(t){a.return=t}));if(u){const t=Promise.all(f).then(function(n){for(let q=0;q<a.C.length;q++)if(a.C[q]===t){a.C[q]=function(){return b.call(a,n,g,k,h,l,m,p)};break}Wa(a)});\na.C.push(t)}else if(a.await)a.C.push(function(){return b.call(a,f,g,k,h,l,m,p)});else return b.call(a,f,g,k,h,l,m,p);return l?a.await||a.result:a}function Va(a,c,b){a=a[c];const e=a[0]||a;e.index||(e.index=b);b=new X(e);a.length>1&&(b=b[c].apply(b,a.slice(1)));return b};X.prototype.or=function(){return Ua(this,\"or\",Xa,arguments)};function Xa(a,c,b,e,d,f,g){a.length&&(this.result.length&&a.push(this.result),a.length<2?this.result=a[0]:(this.result=Ya(a,c,b,!1,this.h),b=0));d&&(this.await=null);return d?this.resolve(c,b,e,g):this};X.prototype.and=function(){return Ua(this,\"and\",Za,arguments)};function Za(a,c,b,e,d,f,g){if(!f&&!this.result.length)return d?this.result:this;let k;if(a.length)if(this.result.length&&a.unshift(this.result),a.length<2)this.result=a[0];else{let h=0;for(let l=0,m,p;l<a.length;l++)if((m=a[l])&&(p=m.length))h<p&&(h=p);else if(!f){h=0;break}h?(this.result=$a(a,h,c,b,f,this.h,d),k=!0):this.result=[]}else f||(this.result=a);d&&(this.await=null);return d?this.resolve(c,b,e,g,k):this};X.prototype.xor=function(){return Ua(this,\"xor\",ab,arguments)};\nfunction ab(a,c,b,e,d,f,g){if(a.length)if(this.result.length&&a.unshift(this.result),a.length<2)this.result=a[0];else{a:{f=b;var k=this.h;const h=[],l=I();let m=0;for(let p=0,u;p<a.length;p++)if(u=a[p]){m<u.length&&(m=u.length);for(let r=0,t;r<u.length;r++)if(t=u[r])for(let n=0,q;n<t.length;n++)q=t[n],l[q]=l[q]?2:1}for(let p=0,u,r=0;p<m;p++)for(let t=0,n;t<a.length;t++)if(n=a[t])if(u=n[p])for(let q=0,x;q<u.length;q++)if(x=u[q],l[x]===1)if(f)f--;else if(d){if(h.push(x),h.length===c){a=h;break a}}else{const v=\np+(t?k:0);h[v]||(h[v]=[]);h[v].push(x);if(++r===c){a=h;break a}}a=h}this.result=a;k=!0}else f||(this.result=a);d&&(this.await=null);return d?this.resolve(c,b,e,g,k):this};X.prototype.not=function(){return Ua(this,\"not\",bb,arguments)};\nfunction bb(a,c,b,e,d,f,g){if(!f&&!this.result.length)return d?this.result:this;if(a.length&&this.result.length){a:{f=b;var k=[];a=new Set(a.flat().flat());for(let h=0,l,m=0;h<this.result.length;h++)if(l=this.result[h])for(let p=0,u;p<l.length;p++)if(u=l[p],!a.has(u))if(f)f--;else if(d){if(k.push(u),k.length===c){a=k;break a}}else if(k[h]||(k[h]=[]),k[h].push(u),++m===c){a=k;break a}a=k}this.result=a;k=!0}d&&(this.await=null);return d?this.resolve(c,b,e,g,k):this};function cb(a,c,b,e,d){let f,g,k;typeof d===\"string\"?(f=d,d=\"\"):f=d.template;g=f.indexOf(\"$1\");k=f.substring(g+2);g=f.substring(0,g);let h=d&&d.boundary,l=!d||d.clip!==!1,m=d&&d.merge&&k&&g&&new RegExp(k+\" \"+g,\"g\");d=d&&d.ellipsis;var p=0;if(typeof d===\"object\"){var u=d.template;p=u.length-2;d=d.pattern}typeof d!==\"string\"&&(d=d===!1?\"\":\"...\");p&&(d=u.replace(\"$1\",d));u=d.length-p;let r,t;typeof h===\"object\"&&(r=h.before,r===0&&(r=-1),t=h.after,t===0&&(t=-1),h=h.total||9E5);p=new Map;for(let Oa=0,\nda,db,pa;Oa<c.length;Oa++){let qa;if(e)qa=c,pa=e;else{var n=c[Oa];pa=n.field;if(!pa)continue;qa=n.result}db=b.get(pa);da=db.encoder;n=p.get(da);typeof n!==\"string\"&&(n=da.encode(a),p.set(da,n));for(let ya=0;ya<qa.length;ya++){var q=qa[ya].doc;if(!q)continue;q=ca(q,pa);if(!q)continue;var x=q.trim().split(/\\s+/);if(!x.length)continue;q=\"\";var v=[];let za=[];var A=-1,D=-1,F=0;for(var E=0;E<x.length;E++){var B=x[E],z=da.encode(B);z=z.length>1?z.join(\" \"):z[0];let y;if(z&&B){var C=B.length,J=(da.split?\nB.replace(da.split,\"\"):B).length-z.length,G=\"\",N=0;for(var O=0;O<n.length;O++){var P=n[O];if(P){var L=P.length;L+=J<0?0:J;N&&L<=N||(P=z.indexOf(P),P>-1&&(G=(P?B.substring(0,P):\"\")+g+B.substring(P,P+L)+k+(P+L<C?B.substring(P+L):\"\"),N=L,y=!0))}}G&&(h&&(A<0&&(A=q.length+(q?1:0)),D=q.length+(q?1:0)+G.length,F+=C,za.push(v.length),v.push({match:G})),q+=(q?\" \":\"\")+G)}if(!y)B=x[E],q+=(q?\" \":\"\")+B,h&&v.push({text:B});else if(h&&F>=h)break}F=za.length*(f.length-2);if(r||t||h&&q.length-F>h)if(F=h+F-u*2,E=D-\nA,r>0&&(E+=r),t>0&&(E+=t),E<=F)x=r?A-(r>0?r:0):A-((F-E)/2|0),v=t?D+(t>0?t:0):x+F,l||(x>0&&q.charAt(x)!==\" \"&&q.charAt(x-1)!==\" \"&&(x=q.indexOf(\" \",x),x<0&&(x=0)),v<q.length&&q.charAt(v-1)!==\" \"&&q.charAt(v)!==\" \"&&(v=q.lastIndexOf(\" \",v),v<D?v=D:++v)),q=(x?d:\"\")+q.substring(x,v)+(v<q.length?d:\"\");else{D=[];A={};F={};E={};B={};z={};G=J=C=0;for(O=N=1;;){var U=void 0;for(let y=0,K;y<za.length;y++){K=za[y];if(G)if(J!==G){if(E[y+1])continue;K+=G;if(A[K]){C-=u;F[y+1]=1;E[y+1]=1;continue}if(K>=v.length-\n1){if(K>=v.length){E[y+1]=1;K>=x.length&&(F[y+1]=1);continue}C-=u}q=v[K].text;if(L=t&&z[y])if(L>0){if(q.length>L)if(E[y+1]=1,l)q=q.substring(0,L);else continue;(L-=q.length)||(L=-1);z[y]=L}else{E[y+1]=1;continue}if(C+q.length+1<=h)q=\" \"+q,D[y]+=q;else if(l)U=h-C-1,U>0&&(q=\" \"+q.substring(0,U),D[y]+=q),E[y+1]=1;else{E[y+1]=1;continue}}else{if(E[y])continue;K-=J;if(A[K]){C-=u;E[y]=1;F[y]=1;continue}if(K<=0){if(K<0){E[y]=1;F[y]=1;continue}C-=u}q=v[K].text;if(L=r&&B[y])if(L>0){if(q.length>L)if(E[y]=1,\nl)q=q.substring(q.length-L);else continue;(L-=q.length)||(L=-1);B[y]=L}else{E[y]=1;continue}if(C+q.length+1<=h)q+=\" \",D[y]=q+D[y];else if(l)U=q.length+1-(h-C),U>=0&&U<q.length&&(q=q.substring(U)+\" \",D[y]=q+D[y]),E[y]=1;else{E[y]=1;continue}}else{q=v[K].match;r&&(B[y]=r);t&&(z[y]=t);y&&C++;let Pa;K?!y&&u&&(C+=u):(F[y]=1,E[y]=1);K>=x.length-1?Pa=1:K<v.length-1&&v[K+1].match?Pa=1:u&&(C+=u);C-=f.length-2;if(!y||C+q.length<=h)D[y]=q;else{U=N=O=F[y]=0;break}Pa&&(F[y+1]=1,E[y+1]=1)}C+=q.length;U=A[K]=1}if(U)J===\nG?G++:J++;else{J===G?N=0:O=0;if(!N&&!O)break;N?(J++,G=J):G++}}q=\"\";for(let y=0,K;y<D.length;y++)K=(F[y]?y?\" \":\"\":(y&&!d?\" \":\"\")+d)+D[y],q+=K;d&&!F[D.length]&&(q+=d)}m&&(q=q.replace(m,\" \"));qa[ya].highlight=q}if(e)break}return c};function X(a,c){if(!this||this.constructor!==X)return new X(a,c);let b=0,e,d,f,g,k,h;if(a&&a.index){const l=a;c=l.index;b=l.boost||0;if(d=l.query){f=l.field||l.pluck;g=l.highlight;const m=l.resolve;a=l.async||l.queue;l.resolve=!1;l.index=null;a=a?c.searchAsync(l):c.search(l);l.resolve=m;l.index=c;a=a.result||a}else a=[]}if(a&&a.then){const l=this;a=a.then(function(m){l.C[0]=l.result=m.result||m;Wa(l)});e=[a];a=[];k=new Promise(function(m){h=m})}this.index=c||null;this.result=a||[];this.h=b;this.C=\ne||[];this.await=k||null;this.return=h||null;this.highlight=g||null;this.query=d||\"\";this.field=f||\"\"}w=X.prototype;w.limit=function(a){if(this.await){const c=this;this.C.push(function(){return c.limit(a).result})}else if(this.result.length){const c=[];for(let b=0,e;b<this.result.length;b++)if(e=this.result[b])if(e.length<=a){if(c[b]=e,a-=e.length,!a)break}else{c[b]=e.slice(0,a);break}this.result=c}return this};\nw.offset=function(a){if(this.await){const c=this;this.C.push(function(){return c.offset(a).result})}else if(this.result.length){const c=[];for(let b=0,e;b<this.result.length;b++)if(e=this.result[b])e.length<=a?a-=e.length:(c[b]=e.slice(a),a=0);this.result=c}return this};w.boost=function(a){if(this.await){const c=this;this.C.push(function(){return c.boost(a).result})}else this.h+=a;return this};\nfunction Wa(a,c){let b=a.result;var e=a.await;a.await=null;for(let d=0,f;d<a.C.length;d++)if(f=a.C[d])if(typeof f===\"function\")b=f(),a.C[d]=b=b.result||b,d--;else if(f.h)b=f.h(),a.C[d]=b=b.result||b,d--;else if(f.then)return a.await=e;e=a.return;a.C=[];a.return=null;c||e(b);return b}\nw.resolve=function(a,c,b,e,d){let f=this.await?Wa(this,!0):this.result;if(f.then){const g=this;return f.then(function(){return g.resolve(a,c,b,e,d)})}f.length&&(typeof a===\"object\"?(e=a.highlight||this.highlight,b=!!e||a.enrich,c=a.offset,a=a.limit):(e=e||this.highlight,b=!!e||b),f=d?b?Ta.call(this.index,f):f:Sa.call(this.index,f,a||100,c,b));return this.finalize(f,e)};\nw.finalize=function(a,c){if(a.then){const e=this;return a.then(function(d){return e.finalize(d,c)})}c&&a.length&&this.query&&(a=cb(this.query,a,this.index.index,this.field,c));const b=this.return;this.highlight=this.index=this.result=this.C=this.await=this.return=null;this.query=this.field=\"\";b&&b(a);return a};function $a(a,c,b,e,d,f,g){const k=a.length;let h=[],l,m;l=I();for(let p=0,u,r,t,n;p<c;p++)for(let q=0;q<k;q++)if(t=a[q],p<t.length&&(u=t[p]))for(let x=0;x<u.length;x++){r=u[x];(m=l[r])?l[r]++:(m=0,l[r]=1);n=h[m]||(h[m]=[]);if(!g){let v=p+(q||!d?0:f||0);n=n[v]||(n[v]=[])}n.push(r);if(g&&b&&m===k-1&&n.length-e===b)return e?n.slice(e):n}if(a=h.length)if(d)h=h.length>1?Ya(h,b,e,g,f):(h=h[0])&&b&&h.length>b||e?h.slice(e,b+e):h;else{if(a<k)return[];h=h[a-1];if(b||e)if(g){if(h.length>b||e)h=h.slice(e,b+\ne)}else{d=[];for(let p=0,u;p<h.length;p++)if(u=h[p])if(e&&u.length>e)e-=u.length;else{if(b&&u.length>b||e)u=u.slice(e,b+e),b-=u.length,e&&(e-=u.length);d.push(u);if(!b)break}h=d}}return h}\nfunction Ya(a,c,b,e,d){const f=[],g=I();let k;var h=a.length;let l;if(e)for(d=h-1;d>=0;d--){if(l=(e=a[d])&&e.length)for(h=0;h<l;h++)if(k=e[h],!g[k])if(g[k]=1,b)b--;else if(f.push(k),f.length===c)return f}else for(let m=h-1,p,u=0;m>=0;m--){p=a[m];for(let r=0;r<p.length;r++)if(l=(e=p[r])&&e.length)for(let t=0;t<l;t++)if(k=e[t],!g[k])if(g[k]=1,b)b--;else{let n=(r+(m<h-1?d||0:0))/(m+1)|0;(f[n]||(f[n]=[])).push(k);if(++u===c)return f}}return f}\nfunction eb(a,c,b,e,d){const f=I(),g=[];for(let k=0,h;k<c.length;k++){h=c[k];for(let l=0;l<h.length;l++)f[h[l]]=1}if(d)for(let k=0,h;k<a.length;k++){if(h=a[k],f[h])if(e)e--;else if(g.push(h),f[h]=0,b&&--b===0)break}else for(let k=0,h,l;k<a.result.length;k++)for(h=a.result[k],c=0;c<h.length;c++)l=h[c],f[l]&&((g[k]||(g[k]=[])).push(l),f[l]=0);return g};I();Na.prototype.search=function(a,c,b,e){b||(!c&&ba(a)?(b=a,a=\"\"):ba(c)&&(b=c,c=0));let d=[];var f=[];let g;let k,h,l,m,p;let u=0,r=!0,t;if(b){b.constructor===Array&&(b={index:b});a=b.query||a;g=b.pluck;k=b.merge;l=b.boost;p=g||b.field||(p=b.index)&&(p.index?null:p);var n=this.tag&&b.tag;h=b.suggest;r=b.resolve!==!1;m=b.cache;t=r&&this.store&&b.highlight;var q=!!t||r&&this.store&&b.enrich;c=b.limit||c;var x=b.offset||0;c||(c=r?100:0);if(n&&(!this.db||!e)){n.constructor!==Array&&(n=[n]);var v=[];for(let B=\n0,z;B<n.length;B++)if(z=n[B],z.field&&z.tag){var A=z.tag;if(A.constructor===Array)for(var D=0;D<A.length;D++)v.push(z.field,A[D]);else v.push(z.field,A)}else{A=Object.keys(z);for(let C=0,J,G;C<A.length;C++)if(J=A[C],G=z[J],G.constructor===Array)for(D=0;D<G.length;D++)v.push(J,G[D]);else v.push(J,G)}n=v;if(!a){f=[];if(v.length)for(n=0;n<v.length;n+=2){if(this.db){e=this.index.get(v[n]);if(!e)continue;f.push(e=e.db.tag(v[n+1],c,x,q))}else e=fb.call(this,v[n],v[n+1],c,x,q);d.push(r?{field:v[n],tag:v[n+\n1],result:e}:[e])}if(f.length){const B=this;return Promise.all(f).then(function(z){for(let C=0;C<z.length;C++)r?d[C].result=z[C]:d[C]=z[C];return r?d:new X(d.length>1?$a(d,1,0,0,h,l):d[0],B)})}return r?d:new X(d.length>1?$a(d,1,0,0,h,l):d[0],this)}}r||g||!(p=p||this.field)||(M(p)?g=p:(p.constructor===Array&&p.length===1&&(p=p[0]),g=p.field||p.index));p&&p.constructor!==Array&&(p=[p])}p||(p=this.field);let F;v=(this.worker||this.db)&&!e&&[];for(let B=0,z,C,J;B<p.length;B++){C=p[B];if(this.db&&this.tag&&\n!this.B[B])continue;let G;M(C)||(G=C,C=G.field,a=G.query||a,c=aa(G.limit,c),x=aa(G.offset,x),h=aa(G.suggest,h),t=r&&this.store&&aa(G.highlight,t),q=!!t||r&&this.store&&aa(G.enrich,q),m=aa(G.cache,m));if(e)z=e[B];else{A=G||b||{};D=A.enrich;var E=this.index.get(C);n&&(this.db&&(A.tag=n,A.field=p,F=E.db.support_tag_search),!F&&D&&(A.enrich=!1),F||(A.limit=0,A.offset=0));z=m?E.searchCache(a,n&&!F?0:c,A):E.search(a,n&&!F?0:c,A);n&&!F&&(A.limit=c,A.offset=x);D&&(A.enrich=D);if(v){v[B]=z;continue}}J=(z=\nz.result||z)&&z.length;if(n&&J){A=[];D=0;if(this.db&&e){if(!F)for(E=p.length;E<e.length;E++){let N=e[E];if(N&&N.length)D++,A.push(N);else if(!h)return r?d:new X(d,this)}}else for(let N=0,O,P;N<n.length;N+=2){O=this.tag.get(n[N]);if(!O)if(h)continue;else return r?d:new X(d,this);if(P=(O=O&&O.get(n[N+1]))&&O.length)D++,A.push(O);else if(!h)return r?d:new X(d,this)}if(D){z=eb(z,A,c,x,r);J=z.length;if(!J&&!h)return r?z:new X(z,this);D--}}if(J)f[u]=C,d.push(z),u++;else if(p.length===1)return r?d:new X(d,\nthis)}if(v){if(this.db&&n&&n.length&&!F)for(q=0;q<n.length;q+=2){f=this.index.get(n[q]);if(!f)if(h)continue;else return r?d:new X(d,this);v.push(f.db.tag(n[q+1],c,x,!1))}const B=this;return Promise.all(v).then(function(z){b&&(b.resolve=r);z.length&&(z=B.search(a,c,b,z));return z})}if(!u)return r?d:new X(d,this);if(g&&(!q||!this.store))return d=d[0],r?d:new X(d,this);v=[];for(x=0;x<f.length;x++){n=d[x];q&&n.length&&typeof n[0].doc===\"undefined\"&&(this.db?v.push(n=this.index.get(this.field[0]).db.enrich(n)):\nn=Ta.call(this,n));if(g)return r?t?cb(a,n,this.index,g,t):n:new X(n,this);d[x]={field:f[x],result:n}}if(q&&this.db&&v.length){const B=this;return Promise.all(v).then(function(z){for(let C=0;C<z.length;C++)d[C].result=z[C];t&&(d=cb(a,d,B.index,g,t));return k?gb(d):d})}t&&(d=cb(a,d,this.index,g,t));return k?gb(d):d};\nfunction gb(a){const c=[],b=I(),e=I();for(let d=0,f,g,k,h,l,m,p;d<a.length;d++){f=a[d];g=f.field;k=f.result;for(let u=0;u<k.length;u++)if(l=k[u],typeof l!==\"object\"?l={id:h=l}:h=l.id,(m=b[h])?m.push(g):(l.field=b[h]=[g],c.push(l)),p=l.highlight)m=e[h],m||(e[h]=m={},l.highlight=m),m[g]=p}return c}function fb(a,c,b,e,d){a=this.tag.get(a);if(!a)return[];a=a.get(c);if(!a)return[];c=a.length-e;if(c>0){if(b&&c>b||e)a=a.slice(e,e+b);d&&(a=Ta.call(this,a))}return a}\nfunction Ta(a){if(!this||!this.store)return a;if(this.db)return this.index.get(this.field[0]).db.enrich(a);const c=Array(a.length);for(let b=0,e;b<a.length;b++)e=a[b],c[b]={id:e,doc:this.store.get(e)};return c};function Na(a){if(!this||this.constructor!==Na)return new Na(a);const c=a.document||a.doc||a;let b,e;this.B=[];this.field=[];this.D=[];this.key=(b=c.key||c.id)&&hb(b,this.D)||\"id\";(e=a.keystore||0)&&(this.keystore=e);this.fastupdate=!!a.fastupdate;this.reg=!this.fastupdate||a.worker||a.db?e?new S(e):new Set:e?new R(e):new Map;this.h=(b=c.store||null)&&b&&b!==!0&&[];this.store=b?e?new R(e):new Map:null;this.cache=(b=a.cache||null)&&new ma(b);a.cache=!1;this.worker=a.worker||!1;this.priority=a.priority||\n4;this.index=ib.call(this,a,c);this.tag=null;if(b=c.tag)if(typeof b===\"string\"&&(b=[b]),b.length){this.tag=new Map;this.A=[];this.F=[];for(let d=0,f,g;d<b.length;d++){f=b[d];g=f.field||f;if(!g)throw Error(\"The tag field from the document descriptor is undefined.\");f.custom?this.A[d]=f.custom:(this.A[d]=hb(g,this.D),f.filter&&(typeof this.A[d]===\"string\"&&(this.A[d]=new String(this.A[d])),this.A[d].G=f.filter));this.F[d]=g;this.tag.set(g,new Map)}}if(this.worker){this.fastupdate=!1;a=[];for(const d of this.index.values())d.then&&\na.push(d);if(a.length){const d=this;return Promise.all(a).then(function(f){let g=0;for(const k of d.index.entries()){const h=k[0];let l=k[1];l.then&&(l=f[g],d.index.set(h,l),g++)}return d})}}else a.db&&(this.fastupdate=!1,this.mount(a.db))}w=Na.prototype;\nw.mount=function(a){let c=this.field;if(this.tag)for(let f=0,g;f<this.F.length;f++){g=this.F[f];var b=void 0;this.index.set(g,b=new T({},this.reg));c===this.field&&(c=c.slice(0));c.push(g);b.tag=this.tag.get(g)}b=[];const e={db:a.db,type:a.type,fastupdate:a.fastupdate};for(let f=0,g,k;f<c.length;f++){e.field=k=c[f];g=this.index.get(k);const h=new a.constructor(a.id,e);h.id=a.id;b[f]=h.mount(g);g.document=!0;f?g.bypass=!0:g.store=this.store}const d=this;return this.db=Promise.all(b).then(function(){d.db=\n!0})};w.commit=async function(){const a=[];for(const c of this.index.values())a.push(c.commit());await Promise.all(a);this.reg.clear()};w.destroy=function(){const a=[];for(const c of this.index.values())a.push(c.destroy());return Promise.all(a)};\nfunction ib(a,c){const b=new Map;let e=c.index||c.field||c;M(e)&&(e=[e]);for(let f=0,g,k;f<e.length;f++){g=e[f];M(g)||(k=g,g=g.field);k=ba(k)?Object.assign({},a,k):a;if(this.worker){var d=void 0;d=(d=k.encoder)&&d.encode?d:new ka(typeof d===\"string\"?va[d]:d||{});d=new La(k,d);b.set(g,d)}this.worker||b.set(g,new T(k,this.reg));k.custom?this.B[f]=k.custom:(this.B[f]=hb(g,this.D),k.filter&&(typeof this.B[f]===\"string\"&&(this.B[f]=new String(this.B[f])),this.B[f].G=k.filter));this.field[f]=g}if(this.h){a=\nc.store;M(a)&&(a=[a]);for(let f=0,g,k;f<a.length;f++)g=a[f],k=g.field||g,g.custom?(this.h[f]=g.custom,g.custom.O=k):(this.h[f]=hb(k,this.D),g.filter&&(typeof this.h[f]===\"string\"&&(this.h[f]=new String(this.h[f])),this.h[f].G=g.filter))}return b}function hb(a,c){const b=a.split(\":\");let e=0;for(let d=0;d<b.length;d++)a=b[d],a[a.length-1]===\"]\"&&(a=a.substring(0,a.length-2))&&(c[e]=!0),a&&(b[e++]=a);e<b.length&&(b.length=e);return e>1?b:b[0]}w.append=function(a,c){return this.add(a,c,!0)};\nw.update=function(a,c){return this.remove(a).add(a,c)};w.remove=function(a){ba(a)&&(a=ca(a,this.key));for(var c of this.index.values())c.remove(a,!0);if(this.reg.has(a)){if(this.tag&&!this.fastupdate)for(let b of this.tag.values())for(let e of b){c=e[0];const d=e[1],f=d.indexOf(a);f>-1&&(d.length>1?d.splice(f,1):b.delete(c))}this.store&&this.store.delete(a);this.reg.delete(a)}this.cache&&this.cache.remove(a);return this};\nw.clear=function(){const a=[];for(const c of this.index.values()){const b=c.clear();b.then&&a.push(b)}if(this.tag)for(const c of this.tag.values())c.clear();this.store&&this.store.clear();this.cache&&this.cache.clear();return a.length?Promise.all(a):this};w.contain=function(a){return this.db?this.index.get(this.field[0]).db.has(a):this.reg.has(a)};w.cleanup=function(){for(const a of this.index.values())a.cleanup();return this};\nw.get=function(a){return this.db?this.index.get(this.field[0]).db.enrich(a).then(function(c){return c[0]&&c[0].doc||null}):this.store.get(a)||null};w.set=function(a,c){typeof a===\"object\"&&(c=a,a=ca(c,this.key));this.store.set(a,c);return this};w.searchCache=la;w.export=jb;w.import=kb;Fa(Na.prototype);function lb(a,c=0){let b=[],e=[];c&&(c=25E4/c*5E3|0);for(const d of a.entries())e.push(d),e.length===c&&(b.push(e),e=[]);e.length&&b.push(e);return b}function mb(a,c){c||(c=new Map);for(let b=0,e;b<a.length;b++)e=a[b],c.set(e[0],e[1]);return c}function nb(a,c=0){let b=[],e=[];c&&(c=25E4/c*1E3|0);for(const d of a.entries())e.push([d[0],lb(d[1])[0]||[]]),e.length===c&&(b.push(e),e=[]);e.length&&b.push(e);return b}\nfunction ob(a,c){c||(c=new Map);for(let b=0,e,d;b<a.length;b++)e=a[b],d=c.get(e[0]),c.set(e[0],mb(e[1],d));return c}function pb(a){let c=[],b=[];for(const e of a.keys())b.push(e),b.length===25E4&&(c.push(b),b=[]);b.length&&c.push(b);return c}function qb(a,c){c||(c=new Set);for(let b=0;b<a.length;b++)c.add(a[b]);return c}\nfunction rb(a,c,b,e,d,f,g=0){const k=e&&e.constructor===Array;var h=k?e.shift():e;if(!h)return this.export(a,c,d,f+1);if((h=a((c?c+\".\":\"\")+(g+1)+\".\"+b,JSON.stringify(h)))&&h.then){const l=this;return h.then(function(){return rb.call(l,a,c,b,k?e:null,d,f,g+1)})}return rb.call(this,a,c,b,k?e:null,d,f,g+1)}\nfunction jb(a,c,b=0,e=0){if(b<this.field.length){const g=this.field[b];if((c=this.index.get(g).export(a,g,b,e=1))&&c.then){const k=this;return c.then(function(){return k.export(a,g,b+1)})}return this.export(a,g,b+1)}let d,f;switch(e){case 0:d=\"reg\";f=pb(this.reg);c=null;break;case 1:d=\"tag\";f=this.tag&&nb(this.tag,this.reg.size);c=null;break;case 2:d=\"doc\";f=this.store&&lb(this.store);c=null;break;default:return}return rb.call(this,a,c,d,f||null,b,e)}\nfunction kb(a,c){var b=a.split(\".\");b[b.length-1]===\"json\"&&b.pop();const e=b.length>2?b[0]:\"\";b=b.length>2?b[2]:b[1];if(this.worker&&e)return this.index.get(e).import(a);if(c){typeof c===\"string\"&&(c=JSON.parse(c));if(e)return this.index.get(e).import(b,c);switch(b){case \"reg\":this.fastupdate=!1;this.reg=qb(c,this.reg);for(let d=0,f;d<this.field.length;d++)f=this.index.get(this.field[d]),f.fastupdate=!1,f.reg=this.reg;if(this.worker){c=[];for(const d of this.index.values())c.push(d.import(a));return Promise.all(c)}break;\ncase \"tag\":this.tag=ob(c,this.tag);break;case \"doc\":this.store=mb(c,this.store)}}}function sb(a,c){let b=\"\";for(const e of a.entries()){a=e[0];const d=e[1];let f=\"\";for(let g=0,k;g<d.length;g++){k=d[g]||[\"\"];let h=\"\";for(let l=0;l<k.length;l++)h+=(h?\",\":\"\")+(c===\"string\"?'\"'+k[l]+'\"':k[l]);h=\"[\"+h+\"]\";f+=(f?\",\":\"\")+h}f='[\"'+a+'\",['+f+\"]]\";b+=(b?\",\":\"\")+f}return b};T.prototype.remove=function(a,c){const b=this.reg.size&&(this.fastupdate?this.reg.get(a):this.reg.has(a));if(b){if(this.fastupdate)for(let e=0,d,f;e<b.length;e++){if((d=b[e])&&(f=d.length))if(d[f-1]===a)d.pop();else{const g=d.indexOf(a);g>=0&&d.splice(g,1)}}else tb(this.map,a),this.depth&&tb(this.ctx,a);c||this.reg.delete(a)}this.db&&(this.commit_task.push({del:a}),this.M&&ub(this));this.cache&&this.cache.remove(a);return this};\nfunction tb(a,c){let b=0;var e=typeof c===\"undefined\";if(a.constructor===Array)for(let d=0,f,g,k;d<a.length;d++){if((f=a[d])&&f.length){if(e)return 1;g=f.indexOf(c);if(g>=0){if(f.length>1)return f.splice(g,1),1;delete a[d];if(b)return 1;k=1}else{if(k)return 1;b++}}}else for(let d of a.entries())e=d[0],tb(d[1],c)?b++:a.delete(e);return b};const vb={memory:{resolution:1},performance:{resolution:3,fastupdate:!0,context:{depth:1,resolution:1}},match:{tokenize:\"forward\"},score:{resolution:9,context:{depth:2,resolution:3}}};T.prototype.add=function(a,c,b,e){if(c&&(a||a===0)){if(!e&&!b&&this.reg.has(a))return this.update(a,c);e=this.depth;c=this.encoder.encode(c,!e);const l=c.length;if(l){const m=I(),p=I(),u=this.resolution;for(let r=0;r<l;r++){let t=c[this.rtl?l-1-r:r];var d=t.length;if(d&&(e||!p[t])){var f=this.score?this.score(c,t,r,null,0):wb(u,l,r),g=\"\";switch(this.tokenize){case \"tolerant\":Y(this,p,t,f,a,b);if(d>2){for(let n=1,q,x,v,A;n<d-1;n++)q=t.charAt(n),x=t.charAt(n+1),v=t.substring(0,n)+x,A=t.substring(n+\n2),g=v+q+A,Y(this,p,g,f,a,b),g=v+A,Y(this,p,g,f,a,b);Y(this,p,t.substring(0,t.length-1),f,a,b)}break;case \"full\":if(d>2){for(let n=0,q;n<d;n++)for(f=d;f>n;f--){g=t.substring(n,f);q=this.rtl?d-1-n:n;var k=this.score?this.score(c,t,r,g,q):wb(u,l,r,d,q);Y(this,p,g,k,a,b)}break}case \"bidirectional\":case \"reverse\":if(d>1){for(k=d-1;k>0;k--){g=t[this.rtl?d-1-k:k]+g;var h=this.score?this.score(c,t,r,g,k):wb(u,l,r,d,k);Y(this,p,g,h,a,b)}g=\"\"}case \"forward\":if(d>1){for(k=0;k<d;k++)g+=t[this.rtl?d-1-k:k],Y(this,\np,g,f,a,b);break}default:if(Y(this,p,t,f,a,b),e&&l>1&&r<l-1)for(d=this.N,g=t,f=Math.min(e+1,this.rtl?r+1:l-r),k=1;k<f;k++){t=c[this.rtl?l-1-r-k:r+k];h=this.bidirectional&&t>g;const n=this.score?this.score(c,g,r,t,k-1):wb(d+(l/2>d?0:1),l,r,f-1,k-1);Y(this,m,h?g:t,n,a,b,h?t:g)}}}}this.fastupdate||this.reg.add(a)}}this.db&&(this.commit_task.push(b?{ins:a}:{del:a}),this.M&&ub(this));return this};\nfunction Y(a,c,b,e,d,f,g){let k,h;if(!(k=c[b])||g&&!k[g]){g?(c=k||(c[b]=I()),c[g]=1,h=a.ctx,(k=h.get(g))?h=k:h.set(g,h=a.keystore?new R(a.keystore):new Map)):(h=a.map,c[b]=1);(k=h.get(b))?h=k:h.set(b,h=k=[]);if(f)for(let l=0,m;l<k.length;l++)if((m=k[l])&&m.includes(d)){if(l<=e)return;m.splice(m.indexOf(d),1);a.fastupdate&&(c=a.reg.get(d))&&c.splice(c.indexOf(m),1);break}h=h[e]||(h[e]=[]);h.push(d);if(h.length===2**31-1){c=new xa(h);if(a.fastupdate)for(let l of a.reg.values())l.includes(h)&&(l[l.indexOf(h)]=\nc);k[e]=h=c}a.fastupdate&&((e=a.reg.get(d))?e.push(h):a.reg.set(d,[h]))}}function wb(a,c,b,e,d){return b&&a>1?c+(e||0)<=a?b+(d||0):(a-1)/(c+(e||0))*(b+(d||0))+1|0:0};T.prototype.search=function(a,c,b){b||(c||typeof a!==\"object\"?typeof c===\"object\"&&(b=c,c=0):(b=a,a=\"\"));if(b&&b.cache)return b.cache=!1,a=this.searchCache(a,c,b),b.cache=!0,a;let e=[],d,f,g,k=0,h,l,m,p,u;b&&(a=b.query||a,c=b.limit||c,k=b.offset||0,f=b.context,g=b.suggest,u=(h=b.resolve)&&b.enrich,m=b.boost,p=b.resolution,l=this.db&&b.tag);typeof h===\"undefined\"&&(h=this.resolve);f=this.depth&&f!==!1;let r=this.encoder.encode(a,!f);d=r.length;c=c||(h?100:0);if(d===1)return xb.call(this,r[0],\"\",c,\nk,h,u,l);if(d===2&&f&&!g)return xb.call(this,r[1],r[0],c,k,h,u,l);let t=I(),n=0,q;f&&(q=r[0],n=1);p||p===0||(p=q?this.N:this.resolution);if(this.db){if(this.db.search&&(b=this.db.search(this,r,c,k,g,h,u,l),b!==!1))return b;const x=this;return async function(){for(let v,A;n<d;n++){if((A=r[n])&&!t[A]){t[A]=1;v=await yb(x,A,q,0,0,!1,!1);if(v=zb(v,e,g,p)){e=v;break}q&&(g&&v&&e.length||(q=A))}g&&q&&n===d-1&&!e.length&&(p=x.resolution,q=\"\",n=-1,t=I())}return Ab(e,p,c,k,g,m,h)}()}for(let x,v;n<d;n++){if((v=\nr[n])&&!t[v]){t[v]=1;x=yb(this,v,q,0,0,!1,!1);if(x=zb(x,e,g,p)){e=x;break}q&&(g&&x&&e.length||(q=v))}g&&q&&n===d-1&&!e.length&&(p=this.resolution,q=\"\",n=-1,t=I())}return Ab(e,p,c,k,g,m,h)};function Ab(a,c,b,e,d,f,g){let k=a.length,h=a;if(k>1)h=$a(a,c,b,e,d,f,g);else if(k===1)return g?Sa.call(null,a[0],b,e):new X(a[0],this);return g?h:new X(h,this)}\nfunction xb(a,c,b,e,d,f,g){a=yb(this,a,c,b,e,d,f,g);return this.db?a.then(function(k){return d?k||[]:new X(k,this)}):a&&a.length?d?Sa.call(this,a,b,e):new X(a,this):d?[]:new X([],this)}function zb(a,c,b,e){let d=[];if(a&&a.length){if(a.length<=e){c.push(a);return}for(let f=0,g;f<e;f++)if(g=a[f])d[f]=g;if(d.length){c.push(d);return}}if(!b)return d}\nfunction yb(a,c,b,e,d,f,g,k){let h;b&&(h=a.bidirectional&&c>b)&&(h=b,b=c,c=h);if(a.db)return a.db.get(c,b,e,d,f,g,k);a=b?(a=a.ctx.get(b))&&a.get(c):a.map.get(c);return a};function T(a,c){if(!this||this.constructor!==T)return new T(a);if(a){var b=M(a)?a:a.preset;b&&(a=Object.assign({},vb[b],a))}else a={};b=a.context;const e=b===!0?{depth:1}:b||{},d=M(a.encoder)?va[a.encoder]:a.encode||a.encoder||{};this.encoder=d.encode?d:typeof d===\"object\"?new ka(d):{encode:d};this.resolution=a.resolution||9;this.tokenize=b=(b=a.tokenize)&&b!==\"default\"&&b!==\"exact\"&&b||\"strict\";this.depth=b===\"strict\"&&e.depth||0;this.bidirectional=e.bidirectional!==!1;this.fastupdate=!!a.fastupdate;\nthis.score=a.score||null;(b=a.keystore||0)&&(this.keystore=b);this.map=b?new R(b):new Map;this.ctx=b?new R(b):new Map;this.reg=c||(this.fastupdate?b?new R(b):new Map:b?new S(b):new Set);this.N=e.resolution||3;this.rtl=d.rtl||a.rtl||!1;this.cache=(b=a.cache||null)&&new ma(b);this.resolve=a.resolve!==!1;if(b=a.db)this.db=this.mount(b);this.M=a.commit!==!1;this.commit_task=[];this.commit_timer=null;this.priority=a.priority||4}w=T.prototype;\nw.mount=function(a){this.commit_timer&&(clearTimeout(this.commit_timer),this.commit_timer=null);return a.mount(this)};w.commit=function(){this.commit_timer&&(clearTimeout(this.commit_timer),this.commit_timer=null);return this.db.commit(this)};w.destroy=function(){this.commit_timer&&(clearTimeout(this.commit_timer),this.commit_timer=null);return this.db.destroy()};function ub(a){a.commit_timer||(a.commit_timer=setTimeout(function(){a.commit_timer=null;a.db.commit(a)},1))}\nw.clear=function(){this.map.clear();this.ctx.clear();this.reg.clear();this.cache&&this.cache.clear();return this.db?(this.commit_timer&&clearTimeout(this.commit_timer),this.commit_timer=null,this.commit_task=[],this.db.clear()):this};w.append=function(a,c){return this.add(a,c,!0)};w.contain=function(a){return this.db?this.db.has(a):this.reg.has(a)};w.update=function(a,c){const b=this,e=this.remove(a);return e&&e.then?e.then(()=>b.add(a,c)):this.add(a,c)};\nw.cleanup=function(){if(!this.fastupdate)return this;tb(this.map);this.depth&&tb(this.ctx);return this};w.searchCache=la;w.export=function(a,c,b=0,e=0){let d,f;switch(e){case 0:d=\"reg\";f=pb(this.reg);break;case 1:d=\"cfg\";f=null;break;case 2:d=\"map\";f=lb(this.map,this.reg.size);break;case 3:d=\"ctx\";f=nb(this.ctx,this.reg.size);break;default:return}return rb.call(this,a,c,d,f,b,e)};\nw.import=function(a,c){if(c)switch(typeof c===\"string\"&&(c=JSON.parse(c)),a=a.split(\".\"),a[a.length-1]===\"json\"&&a.pop(),a.length===3&&a.shift(),a=a.length>1?a[1]:a[0],a){case \"reg\":this.fastupdate=!1;this.reg=qb(c,this.reg);break;case \"map\":this.map=mb(c,this.map);break;case \"ctx\":this.ctx=ob(c,this.ctx)}};\nw.serialize=function(a=!0){let c=\"\",b=\"\",e=\"\";if(this.reg.size){let f;for(var d of this.reg.keys())f||(f=typeof d),c+=(c?\",\":\"\")+(f===\"string\"?'\"'+d+'\"':d);c=\"index.reg=new Set([\"+c+\"]);\";b=sb(this.map,f);b=\"index.map=new Map([\"+b+\"]);\";for(const g of this.ctx.entries()){d=g[0];let k=sb(g[1],f);k=\"new Map([\"+k+\"])\";k='[\"'+d+'\",'+k+\"]\";e+=(e?\",\":\"\")+k}e=\"index.ctx=new Map([\"+e+\"]);\"}return a?\"function inject(index){\"+c+b+e+\"}\":c+b+e};Fa(T.prototype);const Bb=typeof window!==\"undefined\"&&(window.indexedDB||window.mozIndexedDB||window.webkitIndexedDB||window.msIndexedDB),Cb=[\"map\",\"ctx\",\"tag\",\"reg\",\"cfg\"],Db=I();\nfunction Eb(a,c={}){if(!this||this.constructor!==Eb)return new Eb(a,c);typeof a===\"object\"&&(c=a,a=a.name);a||console.info(\"Default storage space was used, because a name was not passed.\");this.id=\"flexsearch\"+(a?\":\"+a.toLowerCase().replace(/[^a-z0-9_\\-]/g,\"\"):\"\");this.field=c.field?c.field.toLowerCase().replace(/[^a-z0-9_\\-]/g,\"\"):\"\";this.type=c.type;this.fastupdate=this.support_tag_search=!1;this.db=null;this.h={}}w=Eb.prototype;w.mount=function(a){if(a.index)return a.mount(this);a.db=this;return this.open()};\nw.open=function(){if(this.db)return this.db;let a=this;navigator.storage&&navigator.storage.persist&&navigator.storage.persist();Db[a.id]||(Db[a.id]=[]);Db[a.id].push(a.field);const c=Bb.open(a.id,1);c.onupgradeneeded=function(){const b=a.db=this.result;for(let e=0,d;e<Cb.length;e++){d=Cb[e];for(let f=0,g;f<Db[a.id].length;f++)g=Db[a.id][f],b.objectStoreNames.contains(d+(d!==\"reg\"?g?\":\"+g:\"\":\"\"))||b.createObjectStore(d+(d!==\"reg\"?g?\":\"+g:\"\":\"\"))}};return a.db=Z(c,function(b){a.db=b;a.db.onversionchange=\nfunction(){a.close()}})};w.close=function(){this.db&&this.db.close();this.db=null};w.destroy=function(){const a=Bb.deleteDatabase(this.id);return Z(a)};w.clear=function(){const a=[];for(let b=0,e;b<Cb.length;b++){e=Cb[b];for(let d=0,f;d<Db[this.id].length;d++)f=Db[this.id][d],a.push(e+(e!==\"reg\"?f?\":\"+f:\"\":\"\"))}const c=this.db.transaction(a,\"readwrite\");for(let b=0;b<a.length;b++)c.objectStore(a[b]).clear();return Z(c)};\nw.get=function(a,c,b=0,e=0,d=!0,f=!1){a=this.db.transaction((c?\"ctx\":\"map\")+(this.field?\":\"+this.field:\"\"),\"readonly\").objectStore((c?\"ctx\":\"map\")+(this.field?\":\"+this.field:\"\")).get(c?c+\":\"+a:a);const g=this;return Z(a).then(function(k){let h=[];if(!k||!k.length)return h;if(d){if(!b&&!e&&k.length===1)return k[0];for(let l=0,m;l<k.length;l++)if((m=k[l])&&m.length){if(e>=m.length){e-=m.length;continue}const p=b?e+Math.min(m.length-e,b):m.length;for(let u=e;u<p;u++)h.push(m[u]);e=0;if(h.length===b)break}return f?\ng.enrich(h):h}return k})};w.tag=function(a,c=0,b=0,e=!1){a=this.db.transaction(\"tag\"+(this.field?\":\"+this.field:\"\"),\"readonly\").objectStore(\"tag\"+(this.field?\":\"+this.field:\"\")).get(a);const d=this;return Z(a).then(function(f){if(!f||!f.length||b>=f.length)return[];if(!c&&!b)return f;f=f.slice(b,b+c);return e?d.enrich(f):f})};\nw.enrich=function(a){typeof a!==\"object\"&&(a=[a]);const c=this.db.transaction(\"reg\",\"readonly\").objectStore(\"reg\"),b=[];for(let e=0;e<a.length;e++)b[e]=Z(c.get(a[e]));return Promise.all(b).then(function(e){for(let d=0;d<e.length;d++)e[d]={id:a[d],doc:e[d]?JSON.parse(e[d]):null};return e})};w.has=function(a){a=this.db.transaction(\"reg\",\"readonly\").objectStore(\"reg\").getKey(a);return Z(a).then(function(c){return!!c})};w.search=null;w.info=function(){};\nw.transaction=function(a,c,b){a+=a!==\"reg\"?this.field?\":\"+this.field:\"\":\"\";let e=this.h[a+\":\"+c];if(e)return b.call(this,e);let d=this.db.transaction(a,c);this.h[a+\":\"+c]=e=d.objectStore(a);const f=b.call(this,e);this.h[a+\":\"+c]=null;return Z(d).finally(function(){return f})};\nw.commit=async function(a){let c=a.commit_task,b=[];a.commit_task=[];for(let e=0,d;e<c.length;e++)d=c[e],d.del&&b.push(d.del);b.length&&await this.remove(b);a.reg.size&&(await this.transaction(\"map\",\"readwrite\",function(e){for(const d of a.map){const f=d[0],g=d[1];g.length&&(e.get(f).onsuccess=function(){let k=this.result;var h;if(k&&k.length){const l=Math.max(k.length,g.length);for(let m=0,p,u;m<l;m++)if((u=g[m])&&u.length){if((p=k[m])&&p.length)for(h=0;h<u.length;h++)p.push(u[h]);else k[m]=u;h=\n1}}else k=g,h=1;h&&e.put(k,f)})}}),await this.transaction(\"ctx\",\"readwrite\",function(e){for(const d of a.ctx){const f=d[0],g=d[1];for(const k of g){const h=k[0],l=k[1];l.length&&(e.get(f+\":\"+h).onsuccess=function(){let m=this.result;var p;if(m&&m.length){const u=Math.max(m.length,l.length);for(let r=0,t,n;r<u;r++)if((n=l[r])&&n.length){if((t=m[r])&&t.length)for(p=0;p<n.length;p++)t.push(n[p]);else m[r]=n;p=1}}else m=l,p=1;p&&e.put(m,f+\":\"+h)})}}}),a.store?await this.transaction(\"reg\",\"readwrite\",\nfunction(e){for(const d of a.store){const f=d[0],g=d[1];e.put(typeof g===\"object\"?JSON.stringify(g):1,f)}}):a.bypass||await this.transaction(\"reg\",\"readwrite\",function(e){for(const d of a.reg.keys())e.put(1,d)}),a.tag&&await this.transaction(\"tag\",\"readwrite\",function(e){for(const d of a.tag){const f=d[0],g=d[1];g.length&&(e.get(f).onsuccess=function(){let k=this.result;k=k&&k.length?k.concat(g):g;e.put(k,f)})}}),a.map.clear(),a.ctx.clear(),a.tag&&a.tag.clear(),a.store&&a.store.clear(),a.document||\na.reg.clear())};function Fb(a,c,b){const e=a.value;let d,f=0;for(let g=0,k;g<e.length;g++){if(k=b?e:e[g]){for(let h=0,l,m;h<c.length;h++)if(m=c[h],l=k.indexOf(m),l>=0)if(d=1,k.length>1)k.splice(l,1);else{e[g]=[];break}f+=k.length}if(b)break}f?d&&a.update(e):a.delete();a.continue()}\nw.remove=function(a){typeof a!==\"object\"&&(a=[a]);return Promise.all([this.transaction(\"map\",\"readwrite\",function(c){c.openCursor().onsuccess=function(){const b=this.result;b&&Fb(b,a)}}),this.transaction(\"ctx\",\"readwrite\",function(c){c.openCursor().onsuccess=function(){const b=this.result;b&&Fb(b,a)}}),this.transaction(\"tag\",\"readwrite\",function(c){c.openCursor().onsuccess=function(){const b=this.result;b&&Fb(b,a,!0)}}),this.transaction(\"reg\",\"readwrite\",function(c){for(let b=0;b<a.length;b++)c.delete(a[b])})])};\nfunction Z(a,c){return new Promise((b,e)=>{a.onsuccess=a.oncomplete=function(){c&&c(this.result);c=null;b(this.result)};a.onerror=a.onblocked=e;a=null})};export default {Index:T,Charset:va,Encoder:ka,Document:Na,Worker:La,Resolver:X,IndexedDB:Eb,Language:{}};\nexport const Index=T;export const Charset=va;export const Encoder=ka;export const Document=Na;export const Worker=La;export const Resolver=X;export const IndexedDB=Eb;export const Language={};","import { Index, DefaultSearchResults } from 'flexsearch';\nimport type { IndexOptions } from 'flexsearch';\nimport { Email, MailCache, EmailSearchResult } from '../types';\n\ntype ExtendedIndexOptions = IndexOptions & {\n minlength?: number;\n resolution?: number;\n optimize?: boolean;\n fastupdate?: boolean;\n cache?: boolean;\n};\n\nconst SUBJECT_OPTIONS: ExtendedIndexOptions = {\n preset: 'match',\n tokenize: 'forward',\n resolution: 9,\n minlength: 2,\n optimize: true,\n fastupdate: true,\n cache: true,\n};\nconst BODY_OPTIONS: ExtendedIndexOptions = {\n ...SUBJECT_OPTIONS,\n minlength: 3,\n resolution: 6,\n};\n\nconst FROM_OPTIONS: ExtendedIndexOptions = {\n ...SUBJECT_OPTIONS,\n tokenize: 'strict',\n minlength: 1,\n};\n\nconst TO_OPTIONS: ExtendedIndexOptions = {\n ...SUBJECT_OPTIONS,\n tokenize: 'strict',\n minlength: 1,\n};\n\nexport interface EmailSearchIndex {\n subjectIndex: Index;\n bodyIndex: Index;\n fromIndex: Index;\n toIndex: Index;\n isReady: boolean;\n}\n\n/**\n * Creates new email search index\n *\n * @returns The email search index\n */\nconst createSearchIndex = (): EmailSearchIndex => ({\n subjectIndex: new Index(SUBJECT_OPTIONS),\n bodyIndex: new Index(BODY_OPTIONS),\n fromIndex: new Index(FROM_OPTIONS),\n toIndex: new Index(TO_OPTIONS),\n isReady: false,\n});\n\n/**\n * Adds the given email to the email search index\n *\n * @param email - The email to add\n * @param searchIndex - The email search index\n */\nexport const addEmailToSearchIndex = (email: Email, searchIndex: EmailSearchIndex): void => {\n try {\n const emailId = email.id;\n\n if (email.params.subject) {\n searchIndex.subjectIndex.add(emailId, email.params.subject);\n }\n\n if (email.body?.text) {\n searchIndex.bodyIndex.add(emailId, email.body.text);\n }\n\n if (email.params.sender) {\n const senderText = `${email.params.sender.name || ''} ${email.params.sender.email || ''}`.trim();\n searchIndex.fromIndex.add(emailId, senderText);\n }\n\n const recipientsList = email.params.recipients?.length ? email.params.recipients : [email.params.recipient];\n\n const recipientsText = recipientsList\n .map((recipient) => `${recipient.name || ''} ${recipient.email || ''}`.trim())\n .join(' ');\n searchIndex.toIndex.add(emailId, recipientsText);\n } catch (error) {\n throw new Error('Failed to add email to the search index', { cause: error });\n }\n};\n\n/**\n * Removes the email from the email search index\n *\n * @param emailID - The email identifier\n * @param searchIndex - The email search index\n */\nexport const removeEmailFromSearchIndex = (emailID: string, searchIndex: EmailSearchIndex): void => {\n try {\n searchIndex.subjectIndex.remove(emailID);\n searchIndex.bodyIndex.remove(emailID);\n searchIndex.fromIndex.remove(emailID);\n searchIndex.toIndex.remove(emailID);\n } catch (error) {\n throw new Error(`Failed to remove email with ID ${emailID} from the search index`, { cause: error });\n }\n};\n\n/**\n * Buils the email search index from the email cache\n *\n * @param esCache - The email cache\n * @returns The email search index\n */\nexport const buildSearchIndexFromCache = async (esCache: MailCache<Email>): Promise<EmailSearchIndex> => {\n try {\n const searchIndex = createSearchIndex();\n searchIndex.isReady = false;\n\n for (const email of esCache.esCache.values()) {\n addEmailToSearchIndex(email, searchIndex);\n }\n\n searchIndex.isReady = true;\n return searchIndex;\n } catch (error) {\n throw new Error('Failed build an email search index from the cache', { cause: error });\n }\n};\n\nexport interface SearchOptions {\n fields?: ('subject' | 'body' | 'from' | 'to')[];\n limit?: number;\n boost?: {\n subject?: number;\n body?: number;\n from?: number;\n to?: number;\n };\n}\n\n/**\n * Searches in teh\n *\n * @param query - The string to search for\n * @param esCache - The email cache\n * @param searchIndex - The email search index\n * @param opetions - The optional search limitations\n * @returns The result of the email search (emails ans their corresponding result weights)\n */\nexport const searchEmails = async (\n query: string,\n esCache: MailCache<Email>,\n searchIndex: EmailSearchIndex,\n options: SearchOptions = {},\n): Promise<EmailSearchResult[]> => {\n try {\n if (!searchIndex.isReady || !query.trim()) {\n return [];\n }\n\n const {\n fields = ['subject', 'body', 'from', 'to'],\n limit = 50,\n boost = { subject: 3, body: 1, from: 2, to: 2 },\n } = options;\n\n const results = new Map<string, number>();\n\n const searchPromises = fields.map(async (field) => {\n let fieldResults: DefaultSearchResults;\n\n switch (field) {\n case 'subject':\n fieldResults = await searchIndex.subjectIndex.searchAsync(query);\n break;\n case 'body':\n fieldResults = await searchIndex.bodyIndex.searchAsync(query);\n break;\n case 'from':\n fieldResults = await searchIndex.fromIndex.searchAsync(query);\n break;\n case 'to':\n fieldResults = await searchIndex.toIndex.searchAsync(query);\n break;\n default:\n return;\n }\n\n const fieldBoost = boost[field] || 1;\n\n fieldResults.forEach((emailId) => {\n const currentScore = results.get(String(emailId)) || 0;\n results.set(String(emailId), currentScore + fieldBoost);\n });\n });\n\n await Promise.all(searchPromises);\n\n const emailResults: EmailSearchResult[] = [];\n\n for (const [emailId, score] of results) {\n const email = esCache.esCache.get(emailId);\n if (email) {\n emailResults.push({ email, score });\n }\n }\n emailResults.sort((a, b) => (b.score || 0) - (a.score || 0));\n return emailResults.slice(0, limit);\n } catch (error) {\n throw new Error('Email search failed', { cause: error });\n }\n};\n","export class EmailJSResponseStatus {\n constructor(_status = 0, _text = 'Network Error') {\n this.status = _status;\n this.text = _text;\n }\n}\n","export const createWebStorage = () => {\n if (typeof localStorage === 'undefined')\n return;\n return {\n get: (key) => Promise.resolve(localStorage.getItem(key)),\n set: (key, value) => Promise.resolve(localStorage.setItem(key, value)),\n remove: (key) => Promise.resolve(localStorage.removeItem(key)),\n };\n};\n","import { createWebStorage } from '../utils/createWebStorage/createWebStorage';\nexport const store = {\n origin: 'https://api.emailjs.com',\n blockHeadless: false,\n storageProvider: createWebStorage(),\n};\n","export const buildOptions = (options) => {\n if (!options)\n return {};\n // support compatibility with SDK v3\n if (typeof options === 'string') {\n return {\n publicKey: options,\n };\n }\n // eslint-disable-next-line @typescript-eslint/no-base-to-string\n if (options.toString() === '[object Object]') {\n return options;\n }\n return {};\n};\n","import { store } from '../../store/store';\nimport { buildOptions } from '../../utils/buildOptions/buildOptions';\n/**\n * EmailJS global SDK config\n * @param {object} options - the EmailJS global SDK config options\n * @param {string} origin - the non-default EmailJS origin\n */\nexport const init = (options, origin = 'https://api.emailjs.com') => {\n if (!options)\n return;\n const opts = buildOptions(options);\n store.publicKey = opts.publicKey;\n store.blockHeadless = opts.blockHeadless;\n store.storageProvider = opts.storageProvider;\n store.blockList = opts.blockList;\n store.limitRate = opts.limitRate;\n store.origin = opts.origin || origin;\n};\n","import { EmailJSResponseStatus } from '../models/EmailJSResponseStatus';\nimport { store } from '../store/store';\nexport const sendPost = async (url, data, headers = {}) => {\n const response = await fetch(store.origin + url, {\n method: 'POST',\n headers,\n body: data,\n });\n const message = await response.text();\n const responseStatus = new EmailJSResponseStatus(response.status, message);\n if (response.ok) {\n return responseStatus;\n }\n throw responseStatus;\n};\n","export const validateParams = (publicKey, serviceID, templateID) => {\n if (!publicKey || typeof publicKey !== 'string') {\n throw 'The public key is required. Visit https://dashboard.emailjs.com/admin/account';\n }\n if (!serviceID || typeof serviceID !== 'string') {\n throw 'The service ID is required. Visit https://dashboard.emailjs.com/admin';\n }\n if (!templateID || typeof templateID !== 'string') {\n throw 'The template ID is required. Visit https://dashboard.emailjs.com/admin/templates';\n }\n};\n","export const validateTemplateParams = (templateParams) => {\n // eslint-disable-next-line @typescript-eslint/no-base-to-string\n if (templateParams && templateParams.toString() !== '[object Object]') {\n throw 'The template params have to be the object. Visit https://www.emailjs.com/docs/sdk/send/';\n }\n};\n","export const isHeadless = (navigator) => {\n return navigator.webdriver || !navigator.languages || navigator.languages.length === 0;\n};\n","import { EmailJSResponseStatus } from '../../models/EmailJSResponseStatus';\nexport const headlessError = () => {\n return new EmailJSResponseStatus(451, 'Unavailable For Headless Browser');\n};\n","export const validateBlockListParams = (list, watchVariable) => {\n if (!Array.isArray(list)) {\n throw 'The BlockList list has to be an array';\n }\n if (typeof watchVariable !== 'string') {\n throw 'The BlockList watchVariable has to be a string';\n }\n};\n","import { validateBlockListParams } from '../validateBlockListParams/validateBlockListParams';\nconst isBlockListDisabled = (options) => {\n return !options.list?.length || !options.watchVariable;\n};\nconst getValue = (data, name) => {\n return data instanceof FormData ? data.get(name) : data[name];\n};\nexport const isBlockedValueInParams = (options, params) => {\n if (isBlockListDisabled(options))\n return false;\n validateBlockListParams(options.list, options.watchVariable);\n const value = getValue(params, options.watchVariable);\n if (typeof value !== 'string')\n return false;\n return options.list.includes(value);\n};\n","import { EmailJSResponseStatus } from '../../models/EmailJSResponseStatus';\nexport const blockedEmailError = () => {\n return new EmailJSResponseStatus(403, 'Forbidden');\n};\n","export const validateLimitRateParams = (throttle, id) => {\n if (typeof throttle !== 'number' || throttle < 0) {\n throw 'The LimitRate throttle has to be a positive number';\n }\n if (id && typeof id !== 'string') {\n throw 'The LimitRate ID has to be a non-empty string';\n }\n};\n","import { validateLimitRateParams } from '../validateLimitRateParams/validateLimitRateParams';\nconst getLeftTime = async (id, throttle, storage) => {\n const lastTime = Number((await storage.get(id)) || 0);\n return throttle - Date.now() + lastTime;\n};\nexport const isLimitRateHit = async (defaultID, options, storage) => {\n if (!options.throttle || !storage) {\n return false;\n }\n validateLimitRateParams(options.throttle, options.id);\n const id = options.id || defaultID;\n const leftTime = await getLeftTime(id, options.throttle, storage);\n if (leftTime > 0) {\n return true;\n }\n await storage.set(id, Date.now().toString());\n return false;\n};\n","import { EmailJSResponseStatus } from '../../models/EmailJSResponseStatus';\nexport const limitRateError = () => {\n return new EmailJSResponseStatus(429, 'Too Many Requests');\n};\n","import { store } from '../../store/store';\nimport { sendPost } from '../../api/sendPost';\nimport { buildOptions } from '../../utils/buildOptions/buildOptions';\nimport { validateParams } from '../../utils/validateParams/validateParams';\nimport { validateTemplateParams } from '../../utils/validateTemplateParams/validateTemplateParams';\nimport { isHeadless } from '../../utils/isHeadless/isHeadless';\nimport { headlessError } from '../../errors/headlessError/headlessError';\nimport { isBlockedValueInParams } from '../../utils/isBlockedValueInParams/isBlockedValueInParams';\nimport { blockedEmailError } from '../../errors/blockedEmailError/blockedEmailError';\nimport { isLimitRateHit } from '../../utils/isLimitRateHit/isLimitRateHit';\nimport { limitRateError } from '../../errors/limitRateError/limitRateError';\n/**\n * Send a template to the specific EmailJS service\n * @param {string} serviceID - the EmailJS service ID\n * @param {string} templateID - the EmailJS template ID\n * @param {object} templateParams - the template params, what will be set to the EmailJS template\n * @param {object} options - the EmailJS SDK config options\n * @returns {Promise<EmailJSResponseStatus>}\n */\nexport const send = async (serviceID, templateID, templateParams, options) => {\n const opts = buildOptions(options);\n const publicKey = opts.publicKey || store.publicKey;\n const blockHeadless = opts.blockHeadless || store.blockHeadless;\n const storageProvider = opts.storageProvider || store.storageProvider;\n const blockList = { ...store.blockList, ...opts.blockList };\n const limitRate = { ...store.limitRate, ...opts.limitRate };\n if (blockHeadless && isHeadless(navigator)) {\n return Promise.reject(headlessError());\n }\n validateParams(publicKey, serviceID, templateID);\n validateTemplateParams(templateParams);\n if (templateParams && isBlockedValueInParams(blockList, templateParams)) {\n return Promise.reject(blockedEmailError());\n }\n if (await isLimitRateHit(location.pathname, limitRate, storageProvider)) {\n return Promise.reject(limitRateError());\n }\n const params = {\n lib_version: '4.4.1',\n user_id: publicKey,\n service_id: serviceID,\n template_id: templateID,\n template_params: templateParams,\n };\n return sendPost('/api/v1.0/email/send', JSON.stringify(params), {\n 'Content-type': 'application/json',\n });\n};\n","export const validateForm = (form) => {\n if (!form || form.nodeName !== 'FORM') {\n throw 'The 3rd parameter is expected to be the HTML form element or the style selector of the form';\n }\n};\n","import { store } from '../../store/store';\nimport { sendPost } from '../../api/sendPost';\nimport { buildOptions } from '../../utils/buildOptions/buildOptions';\nimport { validateForm } from '../../utils/validateForm/validateForm';\nimport { validateParams } from '../../utils/validateParams/validateParams';\nimport { isHeadless } from '../../utils/isHeadless/isHeadless';\nimport { headlessError } from '../../errors/headlessError/headlessError';\nimport { isBlockedValueInParams } from '../../utils/isBlockedValueInParams/isBlockedValueInParams';\nimport { blockedEmailError } from '../../errors/blockedEmailError/blockedEmailError';\nimport { isLimitRateHit } from '../../utils/isLimitRateHit/isLimitRateHit';\nimport { limitRateError } from '../../errors/limitRateError/limitRateError';\nconst findHTMLForm = (form) => {\n return typeof form === 'string' ? document.querySelector(form) : form;\n};\n/**\n * Send a form the specific EmailJS service\n * @param {string} serviceID - the EmailJS service ID\n * @param {string} templateID - the EmailJS template ID\n * @param {string | HTMLFormElement} form - the form element or selector\n * @param {object} options - the EmailJS SDK config options\n * @returns {Promise<EmailJSResponseStatus>}\n */\nexport const sendForm = async (serviceID, templateID, form, options) => {\n const opts = buildOptions(options);\n const publicKey = opts.publicKey || store.publicKey;\n const blockHeadless = opts.blockHeadless || store.blockHeadless;\n const storageProvider = store.storageProvider || opts.storageProvider;\n const blockList = { ...store.blockList, ...opts.blockList };\n const limitRate = { ...store.limitRate, ...opts.limitRate };\n if (blockHeadless && isHeadless(navigator)) {\n return Promise.reject(headlessError());\n }\n const currentForm = findHTMLForm(form);\n validateParams(publicKey, serviceID, templateID);\n validateForm(currentForm);\n const formData = new FormData(currentForm);\n if (isBlockedValueInParams(blockList, formData)) {\n return Promise.reject(blockedEmailError());\n }\n if (await isLimitRateHit(location.pathname, limitRate, storageProvider)) {\n return Promise.reject(limitRateError());\n }\n formData.append('lib_version', '4.4.1');\n formData.append('service_id', serviceID);\n formData.append('template_id', templateID);\n formData.append('user_id', publicKey);\n return sendPost('/api/v1.0/email/send-form', formData);\n};\n","import { EmailJSResponseStatus } from './models/EmailJSResponseStatus';\nimport { init } from './methods/init/init';\nimport { send } from './methods/send/send';\nimport { sendForm } from './methods/sendForm/sendForm';\nexport { init, send, sendForm, EmailJSResponseStatus };\nexport default {\n init,\n send,\n sendForm,\n EmailJSResponseStatus,\n};\n","import emailjs from '@emailjs/browser';\nimport { EmailPublicParameters, HybridEncryptedEmail, PwdProtectedEmail } from '../types';\nimport { hybridEncyptedEmailToBase64, pwdProtectedEmailToBase64 } from '../email-crypto/converters';\n\n/**\n * Email sender class\n *\n */\nexport class EmailServiceAPI {\n private readonly serviceId: string;\n private readonly templateId: string;\n private readonly publicKey: string;\n\n constructor(serviceId: string, templateId: string, publicKey: string) {\n this.serviceId = serviceId;\n this.templateId = templateId;\n this.publicKey = publicKey;\n }\n\n /**\n * Sends an email to the server\n *\n * @param content - The email content (encrypted)\n * @param param - The email public parameters\n * @returns The server response\n */\n async sendEmail(content: string, param: EmailPublicParameters) {\n try {\n const templateParams = {\n from_email: param.sender.email,\n from_name: param.sender.name,\n to_email: param.recipient.email,\n to_name: param.recipient.name,\n email_subject: param.subject,\n email_body: content,\n timestamp: new Date().toISOString(),\n };\n\n await emailjs.send(this.serviceId, this.templateId, templateParams, this.publicKey);\n } catch (error) {\n throw new Error(`Failed to send an email ${(error as Error).message}`, { cause: error });\n }\n }\n\n /**\n * Sends a hybridly encrypted email to a particular recipient recipient\n *\n * @param encryptedEmail - The hybridly encrypted email\n * @returns The server reply\n */\n async sendHybridEmail(encryptedEmail: HybridEncryptedEmail) {\n try {\n if (encryptedEmail.recipientEmail !== encryptedEmail.params.recipient.email) {\n throw new Error('Email is encrypted for another recipient');\n }\n const body = hybridEncyptedEmailToBase64(encryptedEmail);\n await this.sendEmail(body, encryptedEmail.params);\n } catch (error) {\n throw new Error(`Failed to email to the recipient: ${(error as Error).message}`, { cause: error });\n }\n }\n\n /**\n * Sends a password-protected email to a particular recipient\n *\n * @param protectedEmail - The password protected email\n * @param recipient - The email recipient\n * @returns The server reply\n */\n async sendPwdProtectedEmail(protectedEmail: PwdProtectedEmail) {\n try {\n const body = pwdProtectedEmailToBase64(protectedEmail);\n await this.sendEmail(body, protectedEmail.params);\n } catch (error) {\n throw new Error(`Failed to email to the recipient ${(error as Error).message}`, { cause: error });\n }\n }\n}\n\nexport function getEmailServiceAPI(serviceId: string, templateId: string, publicKey: string): EmailServiceAPI {\n return new EmailServiceAPI(serviceId, templateId, publicKey);\n}\n","export enum KeystoreType {\n IDENTITY = 'identity',\n ENCRYPTION = 'encryption',\n RECOVERY = 'recovery',\n INDEX = 'index',\n}\n\nexport type EncryptedKeystore = {\n userID: string;\n type: KeystoreType;\n encryptedKeys: SymmetricCiphertext;\n};\n\nexport type User = {\n email: string;\n name: string;\n};\n\nexport type UserWithPublicKeys = User & {\n publicKeys: PublicKeys;\n};\n\nexport type PublicKeys = {\n eccPublicKey: CryptoKey;\n kyberPublicKey: Uint8Array;\n};\n\nexport type MediaKeys = {\n olmKey: Uint8Array;\n pqKey: Uint8Array;\n index: number;\n userID: string;\n};\n\nexport type PrivateKeys = {\n eccPrivateKey: CryptoKey;\n kyberPrivateKey: Uint8Array;\n};\n\nexport type IdentityKeys = {\n userPublicKey: CryptoKey;\n userPrivateKey: CryptoKey;\n};\n\nexport type EncryptionKeys = {\n userPublicKey: CryptoKey;\n userPrivateKey: CryptoKey;\n userPublicKyberKey: Uint8Array;\n userPrivateKyberKey: Uint8Array;\n};\n\nexport type HybridEncryptedEmail = {\n encryptedKey: HybridEncKey;\n enc: SymmetricCiphertext;\n recipientEmail: string;\n params: EmailPublicParameters;\n id: string;\n};\n\nexport type PwdProtectedEmail = {\n encryptedKey: PwdProtectedKey;\n enc: SymmetricCiphertext;\n params: EmailPublicParameters;\n id: string;\n};\n\nexport type SymmetricCiphertext = {\n ciphertext: Uint8Array;\n iv: Uint8Array;\n};\n\nexport type StoredEmail = {\n params: EmailPublicParameters;\n content: SymmetricCiphertext;\n id: string;\n};\n\nexport type HybridEncKey = {\n kyberCiphertext: Uint8Array;\n encryptedKey: Uint8Array;\n};\n\nexport type PwdProtectedKey = {\n encryptedKey: Uint8Array;\n salt: Uint8Array;\n};\n\nexport type EmailBody = {\n text: string;\n attachments?: string[];\n};\n\nexport type EmailPublicParameters = {\n subject: string;\n createdAt: string;\n sender: User;\n recipient: User;\n recipients?: User[];\n replyToEmailID?: number;\n labels?: string[];\n};\n\nexport type Email = {\n id: string;\n body: EmailBody;\n params: EmailPublicParameters;\n};\n\nexport interface MailCache<Email> {\n esCache: Map<string, Email>;\n cacheSize: number;\n isCacheLimited: boolean;\n isCacheReady: boolean;\n}\nexport interface EmailSearchResult {\n email: Email;\n score?: number;\n}\n","function get(key: string): string | null {\n return sessionStorage.getItem(key);\n}\n\nfunction set(key: string, value: string): void {\n return sessionStorage.setItem(key, value);\n}\n\nfunction removeItem(key: string): void {\n sessionStorage.removeItem(key);\n}\n\nfunction exists(key: string): boolean {\n return !!sessionStorage.getItem(key);\n}\n\nfunction clear(): void {\n sessionStorage.clear();\n}\n\nconst sessionStorageService = {\n set,\n get,\n removeItem,\n exists,\n clear,\n};\n\nexport default sessionStorageService;\n\nexport interface SessionStorageService {\n set: (key: string, value: string) => void;\n get: (key: string) => string | null;\n removeItem: (key: string) => void;\n exists: (key: string) => boolean;\n clear: () => void;\n}\n","import { encryptSymmetrically, decryptSymmetrically } from '../symmetric-crypto';\nimport { base64ToUint8Array, uint8ArrayToBase64 } from '../utils';\nimport { SymmetricCiphertext } from '../types';\nimport sessionStorageService from '../storage-service/sessionStorageService';\nimport { deriveSymmetricCryptoKeyFromContext } from '../derive-key';\nimport { CONTEXT_LOGIN, CONTEXT_ENC_KEYSTORE, AES_KEY_BIT_LENGTH, CONTEXT_RECOVERY } from '../constants';\nimport { getBitsFromString } from '../hash';\n\n/**\n * Encrypts the keystore content using symmetric encryption\n *\n * @param secretKey - The symmetric key to encrypt the keystore content\n * @param content - The content of the keystore\n * @param userID - The ID of the user\n * @param tag - The keystore type-specific tag string\n * @returns The encrypted keystore content\n */\nexport async function encryptKeystoreContent(\n secretKey: CryptoKey,\n content: string,\n userID: string,\n tag: string,\n): Promise<SymmetricCiphertext> {\n try {\n const aux = userID + tag;\n const message = base64ToUint8Array(content);\n const result = await encryptSymmetrically(secretKey, message, aux);\n return result;\n } catch (error) {\n throw new Error('Failed to encrypt keystore content', { cause: error });\n }\n}\n\n/**\n * Decrypts the keystore content using symmetric encryption\n *\n * @param secretKey - The symmetric key to decrypt the keystore content\n * @param encryptedKeys - The encrypted keystore content\n * @param userID - The ID of the user\n * @param tag - The keystore type-specific tag string\n * @returns The decrypted keystore content\n */\nexport async function decryptKeystoreContent(\n secretKey: CryptoKey,\n encryptedKeys: SymmetricCiphertext,\n userID: string,\n tag: string,\n): Promise<string> {\n try {\n const aux = userID + tag;\n const content = await decryptSymmetrically(secretKey, encryptedKeys, aux);\n const result = uint8ArrayToBase64(content);\n return result;\n } catch (error) {\n throw new Error('Failed to decrypt keystore content', { cause: error });\n }\n}\n\n/**\n * Gets User ID from the session storage\n *\n * @returns The ID of the user\n */\nexport function getUserID(): string {\n try {\n const userID = sessionStorageService.get('userID');\n if (!userID) {\n throw new Error('No UserID');\n }\n return userID;\n } catch (error) {\n throw new Error('Failed to get UserID from session storage', { cause: error });\n }\n}\n\n/**\n * Gets user's base key from the session storage\n *\n * @returns The user's base key\n */\nexport function getBaseKey(): Uint8Array {\n try {\n const baseKeyBase64 = sessionStorageService.get('baseKey');\n if (!baseKeyBase64) {\n throw new Error('No base key');\n }\n return base64ToUint8Array(baseKeyBase64);\n } catch (error) {\n throw new Error('Failed to get base key from session storage', { cause: error });\n }\n}\n\n/**\n * Derives a secret key for protecting the idenity keystore\n *\n * @param baseKey - The base secret key from which a new key secret will be derived\n * @returns The derived secret key for protecting the idenity keystore\n */\nexport async function deriveIdentityKeystoreKey(baseKey: Uint8Array): Promise<CryptoKey> {\n return deriveSymmetricCryptoKeyFromContext(CONTEXT_LOGIN, baseKey);\n}\n\n/**\n * Derives a secret key for protecting the recovery keystore\n *\n * @param recoveryCodes - The recovery codes\n * @returns The derived secret key for protecting the recovery keystore\n */\nexport async function deriveRecoveryKey(recoveryCodes: string): Promise<CryptoKey> {\n const recoveryCodesBuffer = await getBitsFromString(AES_KEY_BIT_LENGTH, recoveryCodes);\n return deriveSymmetricCryptoKeyFromContext(CONTEXT_RECOVERY, recoveryCodesBuffer);\n}\n\n/**\n * Derives a secret key for protecting the encryption keystore\n * \n * @param baseKey - The base secret key from which a new key secret will be derived\n * @returns The derived secret key for protecting the encryption keystore\n\n*/\nexport async function deriveEncryptionKeystoreKey(baseKey: Uint8Array): Promise<CryptoKey> {\n return deriveSymmetricCryptoKeyFromContext(CONTEXT_ENC_KEYSTORE, baseKey);\n}\n","import { EncryptionKeys, EncryptedKeystore, KeystoreType } from '../types';\nimport { encryptionKeysToBase64, base64ToEncryptionKeys, genMnemonic } from '../utils';\nimport { ENCRYPTION_KEYSTORE_TAG, RECOVERY_KEYSTORE_TAG, AES_KEY_BIT_LENGTH } from '../constants';\nimport {\n encryptKeystoreContent,\n decryptKeystoreContent,\n getUserID,\n getBaseKey,\n deriveEncryptionKeystoreKey,\n deriveRecoveryKey,\n} from './core';\nimport { generateEccKeys } from '../asymmetric-crypto';\nimport { generateKyberKeys } from '../post-quantum-crypto';\n\n/**\n * Generates recovery codes\n *\n * @returns The generated recovery codes\n */\nexport function generateRecoveryCodes(): string {\n return genMnemonic(AES_KEY_BIT_LENGTH);\n}\n\n/**\n * Generates encryption keys\n *\n * @returns The generated encryption keys\n */\nexport async function generateEncryptionKeys(): Promise<EncryptionKeys> {\n try {\n const keyPair = await generateEccKeys();\n const keyPairKyber = generateKyberKeys();\n const result: EncryptionKeys = {\n userPrivateKey: keyPair.privateKey,\n userPublicKey: keyPair.publicKey,\n userPublicKyberKey: keyPairKyber.publicKey,\n userPrivateKyberKey: keyPairKyber.secretKey,\n };\n return result;\n } catch (error) {\n throw new Error('Failed to generate encryption keys', { cause: error });\n }\n}\n\n/**\n * Generates email encryption keys and creates encrypted encryption and recovery keystores\n * The encryption key is derived from the base key (stored in session storage)\n *\n * @returns The encryption and recovery keystores\n */\nexport async function createEncryptionAndRecoveryKeystores(): Promise<{\n encryptionKeystore: EncryptedKeystore;\n recoveryKeystore: EncryptedKeystore;\n recoveryCodes: string;\n}> {\n try {\n const userID = getUserID();\n const baseKey = getBaseKey();\n const keys = await generateEncryptionKeys();\n const content = await encryptionKeysToBase64(keys);\n\n const secretKey = await deriveEncryptionKeystoreKey(baseKey);\n const ciphertext = await encryptKeystoreContent(secretKey, content, userID, ENCRYPTION_KEYSTORE_TAG);\n const encryptionKeystore: EncryptedKeystore = {\n userID,\n type: KeystoreType.ENCRYPTION,\n encryptedKeys: ciphertext,\n };\n const recoveryCodes = generateRecoveryCodes();\n const recoveryKey = await deriveRecoveryKey(recoveryCodes);\n const encKeys = await encryptKeystoreContent(recoveryKey, content, userID, RECOVERY_KEYSTORE_TAG);\n const recoveryKeystore: EncryptedKeystore = {\n userID,\n type: KeystoreType.RECOVERY,\n encryptedKeys: encKeys,\n };\n return { encryptionKeystore, recoveryKeystore, recoveryCodes };\n } catch (error) {\n throw new Error('Failed to create encryption and recovery keystores', { cause: error });\n }\n}\n\n/**\n * Opens the encryption keystore and returns the email encryption keys\n * The decryption key is derived from the base key (stored in session storage)\n *\n * @param encryptedKeystore - The encrypted keystore containing encryption keys\n * @returns The encryption keys\n */\nexport async function openEncryptionKeystore(encryptedKeystore: EncryptedKeystore): Promise<EncryptionKeys> {\n try {\n if (encryptedKeystore.type != KeystoreType.ENCRYPTION) {\n throw new Error('Input is invalid');\n }\n const baseKey = getBaseKey();\n const secretKey = await deriveEncryptionKeystoreKey(baseKey);\n const json = await decryptKeystoreContent(\n secretKey,\n encryptedKeystore.encryptedKeys,\n encryptedKeystore.userID,\n ENCRYPTION_KEYSTORE_TAG,\n );\n const keys: EncryptionKeys = await base64ToEncryptionKeys(json);\n return keys;\n } catch (error) {\n throw new Error('Failed to open encryption keystore', { cause: error });\n }\n}\n\n/**\n * Opens the recovery keystore and returns the email encryption keys\n * The decryption key is derived from the base key (stored in session storage)\n *\n * @param recoveryCodes - The user's recovery codes\n * @param encryptedKeystore - The encrypted keystore containing encryption keys\n * @returns The encryption keys\n */\nexport async function openRecoveryKeystore(\n recoveryCodes: string,\n encryptedKeystore: EncryptedKeystore,\n): Promise<EncryptionKeys> {\n try {\n if (encryptedKeystore.type != KeystoreType.RECOVERY) {\n throw new Error('Input is invalid');\n }\n const recoveryKey = await deriveRecoveryKey(recoveryCodes);\n const json = await decryptKeystoreContent(\n recoveryKey,\n encryptedKeystore.encryptedKeys,\n encryptedKeystore.userID,\n RECOVERY_KEYSTORE_TAG,\n );\n const keys: EncryptionKeys = await base64ToEncryptionKeys(json);\n return keys;\n } catch (error) {\n throw new Error('Failed to open recovery keystore', { cause: error });\n }\n}\n","import { IdentityKeys, EncryptedKeystore, KeystoreType } from '../types';\nimport { IDENTITY_KEYSTORE_TAG } from '../constants';\nimport {\n encryptKeystoreContent,\n decryptKeystoreContent,\n getUserID,\n getBaseKey,\n deriveIdentityKeystoreKey,\n} from './core';\nimport { base64ToIdentityKeys, identityKeysToBase64 } from '../utils';\nimport { generateEccKeys } from '../asymmetric-crypto';\n\n/**\n * Generates user idenity keys\n *\n * @returns The user identity keys\n */\nexport async function generateIdentityKeys(): Promise<IdentityKeys> {\n try {\n const keyPair = await generateEccKeys();\n const result: IdentityKeys = {\n userPrivateKey: keyPair.privateKey,\n userPublicKey: keyPair.publicKey,\n };\n return result;\n } catch (error) {\n throw new Error('Failed to generate idenity keys', { cause: error });\n }\n}\n\n/**\n * Generates user identity keys and creates an encrypted identity keystore\n * The encryption key is derived from the base key (stored in session storage)\n *\n * @returns The encrypted idenity keystore\n */\nexport async function createIdentityKeystore(): Promise<EncryptedKeystore> {\n try {\n const type = KeystoreType.IDENTITY;\n const userID = getUserID();\n const baseKey = getBaseKey();\n const keys = await generateIdentityKeys();\n const content = await identityKeysToBase64(keys);\n const secretKey = await deriveIdentityKeystoreKey(baseKey);\n const encryptedKeys = await encryptKeystoreContent(secretKey, content, userID, IDENTITY_KEYSTORE_TAG);\n const result: EncryptedKeystore = {\n userID,\n type,\n encryptedKeys,\n };\n return result;\n } catch (error) {\n throw new Error('Failed to create identity keystore', { cause: error });\n }\n}\n\n/**\n * Opens the encrypted identity keystore\n * The decryption key is derived from the base key (stored in session storage)\n *\n * @param encryptedKeystore - The encrypted identity keystore\n * @returns The identity keys\n */\nexport async function openIdentityKeystore(encryptedKeystore: EncryptedKeystore): Promise<IdentityKeys> {\n try {\n if (encryptedKeystore.type != KeystoreType.IDENTITY) {\n throw new Error('Input is invalid');\n }\n const baseKey = getBaseKey();\n const secretKey = await deriveIdentityKeystoreKey(baseKey);\n const json = await decryptKeystoreContent(\n secretKey,\n encryptedKeystore.encryptedKeys,\n encryptedKeystore.userID,\n IDENTITY_KEYSTORE_TAG,\n );\n const keys: IdentityKeys = await base64ToIdentityKeys(json);\n return keys;\n } catch (error) {\n throw new Error('Failed to open identity keystore', { cause: error });\n }\n}\n","'use strict';\n\n/**\n * Create a bound version of a function with a specified `this` context\n *\n * @param {Function} fn - The function to bind\n * @param {*} thisArg - The value to be passed as the `this` parameter\n * @returns {Function} A new function that will call the original function with the specified `this` context\n */\nexport default function bind(fn, thisArg) {\n return function wrap() {\n return fn.apply(thisArg, arguments);\n };\n}\n","'use strict';\n\nimport bind from './helpers/bind.js';\n\n// utils is a library of generic helper functions non-specific to axios\n\nconst {toString} = Object.prototype;\nconst {getPrototypeOf} = Object;\nconst {iterator, toStringTag} = Symbol;\n\nconst kindOf = (cache => thing => {\n const str = toString.call(thing);\n return cache[str] || (cache[str] = str.slice(8, -1).toLowerCase());\n})(Object.create(null));\n\nconst kindOfTest = (type) => {\n type = type.toLowerCase();\n return (thing) => kindOf(thing) === type\n}\n\nconst typeOfTest = type => thing => typeof thing === type;\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n *\n * @returns {boolean} True if value is an Array, otherwise false\n */\nconst {isArray} = Array;\n\n/**\n * Determine if a value is undefined\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nconst isUndefined = typeOfTest('undefined');\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\nfunction isBuffer(val) {\n return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor)\n && isFunction(val.constructor.isBuffer) && val.constructor.isBuffer(val);\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nconst isArrayBuffer = kindOfTest('ArrayBuffer');\n\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n let result;\n if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n result = ArrayBuffer.isView(val);\n } else {\n result = (val) && (val.buffer) && (isArrayBuffer(val.buffer));\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a String, otherwise false\n */\nconst isString = typeOfTest('string');\n\n/**\n * Determine if a value is a Function\n *\n * @param {*} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nconst isFunction = typeOfTest('function');\n\n/**\n * Determine if a value is a Number\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Number, otherwise false\n */\nconst isNumber = typeOfTest('number');\n\n/**\n * Determine if a value is an Object\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value is an Object, otherwise false\n */\nconst isObject = (thing) => thing !== null && typeof thing === 'object';\n\n/**\n * Determine if a value is a Boolean\n *\n * @param {*} thing The value to test\n * @returns {boolean} True if value is a Boolean, otherwise false\n */\nconst isBoolean = thing => thing === true || thing === false;\n\n/**\n * Determine if a value is a plain Object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a plain Object, otherwise false\n */\nconst isPlainObject = (val) => {\n if (kindOf(val) !== 'object') {\n return false;\n }\n\n const prototype = getPrototypeOf(val);\n return (prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null) && !(toStringTag in val) && !(iterator in val);\n}\n\n/**\n * Determine if a value is an empty object (safely handles Buffers)\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is an empty object, otherwise false\n */\nconst isEmptyObject = (val) => {\n // Early return for non-objects or Buffers to prevent RangeError\n if (!isObject(val) || isBuffer(val)) {\n return false;\n }\n\n try {\n return Object.keys(val).length === 0 && Object.getPrototypeOf(val) === Object.prototype;\n } catch (e) {\n // Fallback for any other objects that might cause RangeError with Object.keys()\n return false;\n }\n}\n\n/**\n * Determine if a value is a Date\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Date, otherwise false\n */\nconst isDate = kindOfTest('Date');\n\n/**\n * Determine if a value is a File\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a File, otherwise false\n */\nconst isFile = kindOfTest('File');\n\n/**\n * Determine if a value is a Blob\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nconst isBlob = kindOfTest('Blob');\n\n/**\n * Determine if a value is a FileList\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a File, otherwise false\n */\nconst isFileList = kindOfTest('FileList');\n\n/**\n * Determine if a value is a Stream\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nconst isStream = (val) => isObject(val) && isFunction(val.pipe);\n\n/**\n * Determine if a value is a FormData\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nconst isFormData = (thing) => {\n let kind;\n return thing && (\n (typeof FormData === 'function' && thing instanceof FormData) || (\n isFunction(thing.append) && (\n (kind = kindOf(thing)) === 'formdata' ||\n // detect form-data instance\n (kind === 'object' && isFunction(thing.toString) && thing.toString() === '[object FormData]')\n )\n )\n )\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nconst isURLSearchParams = kindOfTest('URLSearchParams');\n\nconst [isReadableStream, isRequest, isResponse, isHeaders] = ['ReadableStream', 'Request', 'Response', 'Headers'].map(kindOfTest);\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n *\n * @returns {String} The String freed of excess whitespace\n */\nconst trim = (str) => str.trim ?\n str.trim() : str.replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, '');\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n *\n * @param {Boolean} [allOwnKeys = false]\n * @returns {any}\n */\nfunction forEach(obj, fn, {allOwnKeys = false} = {}) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n let i;\n let l;\n\n // Force an array if not already something iterable\n if (typeof obj !== 'object') {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Buffer check\n if (isBuffer(obj)) {\n return;\n }\n\n // Iterate over object keys\n const keys = allOwnKeys ? Object.getOwnPropertyNames(obj) : Object.keys(obj);\n const len = keys.length;\n let key;\n\n for (i = 0; i < len; i++) {\n key = keys[i];\n fn.call(null, obj[key], key, obj);\n }\n }\n}\n\nfunction findKey(obj, key) {\n if (isBuffer(obj)){\n return null;\n }\n\n key = key.toLowerCase();\n const keys = Object.keys(obj);\n let i = keys.length;\n let _key;\n while (i-- > 0) {\n _key = keys[i];\n if (key === _key.toLowerCase()) {\n return _key;\n }\n }\n return null;\n}\n\nconst _global = (() => {\n /*eslint no-undef:0*/\n if (typeof globalThis !== \"undefined\") return globalThis;\n return typeof self !== \"undefined\" ? self : (typeof window !== 'undefined' ? window : global)\n})();\n\nconst isContextDefined = (context) => !isUndefined(context) && context !== _global;\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n *\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n const {caseless, skipUndefined} = isContextDefined(this) && this || {};\n const result = {};\n const assignValue = (val, key) => {\n const targetKey = caseless && findKey(result, key) || key;\n if (isPlainObject(result[targetKey]) && isPlainObject(val)) {\n result[targetKey] = merge(result[targetKey], val);\n } else if (isPlainObject(val)) {\n result[targetKey] = merge({}, val);\n } else if (isArray(val)) {\n result[targetKey] = val.slice();\n } else if (!skipUndefined || !isUndefined(val)) {\n result[targetKey] = val;\n }\n }\n\n for (let i = 0, l = arguments.length; i < l; i++) {\n arguments[i] && forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n *\n * @param {Boolean} [allOwnKeys]\n * @returns {Object} The resulting value of object a\n */\nconst extend = (a, b, thisArg, {allOwnKeys}= {}) => {\n forEach(b, (val, key) => {\n if (thisArg && isFunction(val)) {\n a[key] = bind(val, thisArg);\n } else {\n a[key] = val;\n }\n }, {allOwnKeys});\n return a;\n}\n\n/**\n * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)\n *\n * @param {string} content with BOM\n *\n * @returns {string} content value without BOM\n */\nconst stripBOM = (content) => {\n if (content.charCodeAt(0) === 0xFEFF) {\n content = content.slice(1);\n }\n return content;\n}\n\n/**\n * Inherit the prototype methods from one constructor into another\n * @param {function} constructor\n * @param {function} superConstructor\n * @param {object} [props]\n * @param {object} [descriptors]\n *\n * @returns {void}\n */\nconst inherits = (constructor, superConstructor, props, descriptors) => {\n constructor.prototype = Object.create(superConstructor.prototype, descriptors);\n constructor.prototype.constructor = constructor;\n Object.defineProperty(constructor, 'super', {\n value: superConstructor.prototype\n });\n props && Object.assign(constructor.prototype, props);\n}\n\n/**\n * Resolve object with deep prototype chain to a flat object\n * @param {Object} sourceObj source object\n * @param {Object} [destObj]\n * @param {Function|Boolean} [filter]\n * @param {Function} [propFilter]\n *\n * @returns {Object}\n */\nconst toFlatObject = (sourceObj, destObj, filter, propFilter) => {\n let props;\n let i;\n let prop;\n const merged = {};\n\n destObj = destObj || {};\n // eslint-disable-next-line no-eq-null,eqeqeq\n if (sourceObj == null) return destObj;\n\n do {\n props = Object.getOwnPropertyNames(sourceObj);\n i = props.length;\n while (i-- > 0) {\n prop = props[i];\n if ((!propFilter || propFilter(prop, sourceObj, destObj)) && !merged[prop]) {\n destObj[prop] = sourceObj[prop];\n merged[prop] = true;\n }\n }\n sourceObj = filter !== false && getPrototypeOf(sourceObj);\n } while (sourceObj && (!filter || filter(sourceObj, destObj)) && sourceObj !== Object.prototype);\n\n return destObj;\n}\n\n/**\n * Determines whether a string ends with the characters of a specified string\n *\n * @param {String} str\n * @param {String} searchString\n * @param {Number} [position= 0]\n *\n * @returns {boolean}\n */\nconst endsWith = (str, searchString, position) => {\n str = String(str);\n if (position === undefined || position > str.length) {\n position = str.length;\n }\n position -= searchString.length;\n const lastIndex = str.indexOf(searchString, position);\n return lastIndex !== -1 && lastIndex === position;\n}\n\n\n/**\n * Returns new array from array like object or null if failed\n *\n * @param {*} [thing]\n *\n * @returns {?Array}\n */\nconst toArray = (thing) => {\n if (!thing) return null;\n if (isArray(thing)) return thing;\n let i = thing.length;\n if (!isNumber(i)) return null;\n const arr = new Array(i);\n while (i-- > 0) {\n arr[i] = thing[i];\n }\n return arr;\n}\n\n/**\n * Checking if the Uint8Array exists and if it does, it returns a function that checks if the\n * thing passed in is an instance of Uint8Array\n *\n * @param {TypedArray}\n *\n * @returns {Array}\n */\n// eslint-disable-next-line func-names\nconst isTypedArray = (TypedArray => {\n // eslint-disable-next-line func-names\n return thing => {\n return TypedArray && thing instanceof TypedArray;\n };\n})(typeof Uint8Array !== 'undefined' && getPrototypeOf(Uint8Array));\n\n/**\n * For each entry in the object, call the function with the key and value.\n *\n * @param {Object<any, any>} obj - The object to iterate over.\n * @param {Function} fn - The function to call for each entry.\n *\n * @returns {void}\n */\nconst forEachEntry = (obj, fn) => {\n const generator = obj && obj[iterator];\n\n const _iterator = generator.call(obj);\n\n let result;\n\n while ((result = _iterator.next()) && !result.done) {\n const pair = result.value;\n fn.call(obj, pair[0], pair[1]);\n }\n}\n\n/**\n * It takes a regular expression and a string, and returns an array of all the matches\n *\n * @param {string} regExp - The regular expression to match against.\n * @param {string} str - The string to search.\n *\n * @returns {Array<boolean>}\n */\nconst matchAll = (regExp, str) => {\n let matches;\n const arr = [];\n\n while ((matches = regExp.exec(str)) !== null) {\n arr.push(matches);\n }\n\n return arr;\n}\n\n/* Checking if the kindOfTest function returns true when passed an HTMLFormElement. */\nconst isHTMLForm = kindOfTest('HTMLFormElement');\n\nconst toCamelCase = str => {\n return str.toLowerCase().replace(/[-_\\s]([a-z\\d])(\\w*)/g,\n function replacer(m, p1, p2) {\n return p1.toUpperCase() + p2;\n }\n );\n};\n\n/* Creating a function that will check if an object has a property. */\nconst hasOwnProperty = (({hasOwnProperty}) => (obj, prop) => hasOwnProperty.call(obj, prop))(Object.prototype);\n\n/**\n * Determine if a value is a RegExp object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a RegExp object, otherwise false\n */\nconst isRegExp = kindOfTest('RegExp');\n\nconst reduceDescriptors = (obj, reducer) => {\n const descriptors = Object.getOwnPropertyDescriptors(obj);\n const reducedDescriptors = {};\n\n forEach(descriptors, (descriptor, name) => {\n let ret;\n if ((ret = reducer(descriptor, name, obj)) !== false) {\n reducedDescriptors[name] = ret || descriptor;\n }\n });\n\n Object.defineProperties(obj, reducedDescriptors);\n}\n\n/**\n * Makes all methods read-only\n * @param {Object} obj\n */\n\nconst freezeMethods = (obj) => {\n reduceDescriptors(obj, (descriptor, name) => {\n // skip restricted props in strict mode\n if (isFunction(obj) && ['arguments', 'caller', 'callee'].indexOf(name) !== -1) {\n return false;\n }\n\n const value = obj[name];\n\n if (!isFunction(value)) return;\n\n descriptor.enumerable = false;\n\n if ('writable' in descriptor) {\n descriptor.writable = false;\n return;\n }\n\n if (!descriptor.set) {\n descriptor.set = () => {\n throw Error('Can not rewrite read-only method \\'' + name + '\\'');\n };\n }\n });\n}\n\nconst toObjectSet = (arrayOrString, delimiter) => {\n const obj = {};\n\n const define = (arr) => {\n arr.forEach(value => {\n obj[value] = true;\n });\n }\n\n isArray(arrayOrString) ? define(arrayOrString) : define(String(arrayOrString).split(delimiter));\n\n return obj;\n}\n\nconst noop = () => {}\n\nconst toFiniteNumber = (value, defaultValue) => {\n return value != null && Number.isFinite(value = +value) ? value : defaultValue;\n}\n\n\n\n/**\n * If the thing is a FormData object, return true, otherwise return false.\n *\n * @param {unknown} thing - The thing to check.\n *\n * @returns {boolean}\n */\nfunction isSpecCompliantForm(thing) {\n return !!(thing && isFunction(thing.append) && thing[toStringTag] === 'FormData' && thing[iterator]);\n}\n\nconst toJSONObject = (obj) => {\n const stack = new Array(10);\n\n const visit = (source, i) => {\n\n if (isObject(source)) {\n if (stack.indexOf(source) >= 0) {\n return;\n }\n\n //Buffer check\n if (isBuffer(source)) {\n return source;\n }\n\n if(!('toJSON' in source)) {\n stack[i] = source;\n const target = isArray(source) ? [] : {};\n\n forEach(source, (value, key) => {\n const reducedValue = visit(value, i + 1);\n !isUndefined(reducedValue) && (target[key] = reducedValue);\n });\n\n stack[i] = undefined;\n\n return target;\n }\n }\n\n return source;\n }\n\n return visit(obj, 0);\n}\n\nconst isAsyncFn = kindOfTest('AsyncFunction');\n\nconst isThenable = (thing) =>\n thing && (isObject(thing) || isFunction(thing)) && isFunction(thing.then) && isFunction(thing.catch);\n\n// original code\n// https://github.com/DigitalBrainJS/AxiosPromise/blob/16deab13710ec09779922131f3fa5954320f83ab/lib/utils.js#L11-L34\n\nconst _setImmediate = ((setImmediateSupported, postMessageSupported) => {\n if (setImmediateSupported) {\n return setImmediate;\n }\n\n return postMessageSupported ? ((token, callbacks) => {\n _global.addEventListener(\"message\", ({source, data}) => {\n if (source === _global && data === token) {\n callbacks.length && callbacks.shift()();\n }\n }, false);\n\n return (cb) => {\n callbacks.push(cb);\n _global.postMessage(token, \"*\");\n }\n })(`axios@${Math.random()}`, []) : (cb) => setTimeout(cb);\n})(\n typeof setImmediate === 'function',\n isFunction(_global.postMessage)\n);\n\nconst asap = typeof queueMicrotask !== 'undefined' ?\n queueMicrotask.bind(_global) : ( typeof process !== 'undefined' && process.nextTick || _setImmediate);\n\n// *********************\n\n\nconst isIterable = (thing) => thing != null && isFunction(thing[iterator]);\n\n\nexport default {\n isArray,\n isArrayBuffer,\n isBuffer,\n isFormData,\n isArrayBufferView,\n isString,\n isNumber,\n isBoolean,\n isObject,\n isPlainObject,\n isEmptyObject,\n isReadableStream,\n isRequest,\n isResponse,\n isHeaders,\n isUndefined,\n isDate,\n isFile,\n isBlob,\n isRegExp,\n isFunction,\n isStream,\n isURLSearchParams,\n isTypedArray,\n isFileList,\n forEach,\n merge,\n extend,\n trim,\n stripBOM,\n inherits,\n toFlatObject,\n kindOf,\n kindOfTest,\n endsWith,\n toArray,\n forEachEntry,\n matchAll,\n isHTMLForm,\n hasOwnProperty,\n hasOwnProp: hasOwnProperty, // an alias to avoid ESLint no-prototype-builtins detection\n reduceDescriptors,\n freezeMethods,\n toObjectSet,\n toCamelCase,\n noop,\n toFiniteNumber,\n findKey,\n global: _global,\n isContextDefined,\n isSpecCompliantForm,\n toJSONObject,\n isAsyncFn,\n isThenable,\n setImmediate: _setImmediate,\n asap,\n isIterable\n};\n","'use strict';\n\nimport utils from '../utils.js';\n\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [config] The config.\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n *\n * @returns {Error} The created error.\n */\nfunction AxiosError(message, code, config, request, response) {\n Error.call(this);\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n } else {\n this.stack = (new Error()).stack;\n }\n\n this.message = message;\n this.name = 'AxiosError';\n code && (this.code = code);\n config && (this.config = config);\n request && (this.request = request);\n if (response) {\n this.response = response;\n this.status = response.status ? response.status : null;\n }\n}\n\nutils.inherits(AxiosError, Error, {\n toJSON: function toJSON() {\n return {\n // Standard\n message: this.message,\n name: this.name,\n // Microsoft\n description: this.description,\n number: this.number,\n // Mozilla\n fileName: this.fileName,\n lineNumber: this.lineNumber,\n columnNumber: this.columnNumber,\n stack: this.stack,\n // Axios\n config: utils.toJSONObject(this.config),\n code: this.code,\n status: this.status\n };\n }\n});\n\nconst prototype = AxiosError.prototype;\nconst descriptors = {};\n\n[\n 'ERR_BAD_OPTION_VALUE',\n 'ERR_BAD_OPTION',\n 'ECONNABORTED',\n 'ETIMEDOUT',\n 'ERR_NETWORK',\n 'ERR_FR_TOO_MANY_REDIRECTS',\n 'ERR_DEPRECATED',\n 'ERR_BAD_RESPONSE',\n 'ERR_BAD_REQUEST',\n 'ERR_CANCELED',\n 'ERR_NOT_SUPPORT',\n 'ERR_INVALID_URL'\n// eslint-disable-next-line func-names\n].forEach(code => {\n descriptors[code] = {value: code};\n});\n\nObject.defineProperties(AxiosError, descriptors);\nObject.defineProperty(prototype, 'isAxiosError', {value: true});\n\n// eslint-disable-next-line func-names\nAxiosError.from = (error, code, config, request, response, customProps) => {\n const axiosError = Object.create(prototype);\n\n utils.toFlatObject(error, axiosError, function filter(obj) {\n return obj !== Error.prototype;\n }, prop => {\n return prop !== 'isAxiosError';\n });\n\n const msg = error && error.message ? error.message : 'Error';\n\n // Prefer explicit code; otherwise copy the low-level error's code (e.g. ECONNREFUSED)\n const errCode = code == null && error ? error.code : code;\n AxiosError.call(axiosError, msg, errCode, config, request, response);\n\n // Chain the original error on the standard field; non-enumerable to avoid JSON noise\n if (error && axiosError.cause == null) {\n Object.defineProperty(axiosError, 'cause', { value: error, configurable: true });\n }\n\n axiosError.name = (error && error.name) || 'Error';\n\n customProps && Object.assign(axiosError, customProps);\n\n return axiosError;\n};\n\nexport default AxiosError;\n","// eslint-disable-next-line strict\nexport default null;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosError from '../core/AxiosError.js';\n// temporary hotfix to avoid circular references until AxiosURLSearchParams is refactored\nimport PlatformFormData from '../platform/node/classes/FormData.js';\n\n/**\n * Determines if the given thing is a array or js object.\n *\n * @param {string} thing - The object or array to be visited.\n *\n * @returns {boolean}\n */\nfunction isVisitable(thing) {\n return utils.isPlainObject(thing) || utils.isArray(thing);\n}\n\n/**\n * It removes the brackets from the end of a string\n *\n * @param {string} key - The key of the parameter.\n *\n * @returns {string} the key without the brackets.\n */\nfunction removeBrackets(key) {\n return utils.endsWith(key, '[]') ? key.slice(0, -2) : key;\n}\n\n/**\n * It takes a path, a key, and a boolean, and returns a string\n *\n * @param {string} path - The path to the current key.\n * @param {string} key - The key of the current object being iterated over.\n * @param {string} dots - If true, the key will be rendered with dots instead of brackets.\n *\n * @returns {string} The path to the current key.\n */\nfunction renderKey(path, key, dots) {\n if (!path) return key;\n return path.concat(key).map(function each(token, i) {\n // eslint-disable-next-line no-param-reassign\n token = removeBrackets(token);\n return !dots && i ? '[' + token + ']' : token;\n }).join(dots ? '.' : '');\n}\n\n/**\n * If the array is an array and none of its elements are visitable, then it's a flat array.\n *\n * @param {Array<any>} arr - The array to check\n *\n * @returns {boolean}\n */\nfunction isFlatArray(arr) {\n return utils.isArray(arr) && !arr.some(isVisitable);\n}\n\nconst predicates = utils.toFlatObject(utils, {}, null, function filter(prop) {\n return /^is[A-Z]/.test(prop);\n});\n\n/**\n * Convert a data object to FormData\n *\n * @param {Object} obj\n * @param {?Object} [formData]\n * @param {?Object} [options]\n * @param {Function} [options.visitor]\n * @param {Boolean} [options.metaTokens = true]\n * @param {Boolean} [options.dots = false]\n * @param {?Boolean} [options.indexes = false]\n *\n * @returns {Object}\n **/\n\n/**\n * It converts an object into a FormData object\n *\n * @param {Object<any, any>} obj - The object to convert to form data.\n * @param {string} formData - The FormData object to append to.\n * @param {Object<string, any>} options\n *\n * @returns\n */\nfunction toFormData(obj, formData, options) {\n if (!utils.isObject(obj)) {\n throw new TypeError('target must be an object');\n }\n\n // eslint-disable-next-line no-param-reassign\n formData = formData || new (PlatformFormData || FormData)();\n\n // eslint-disable-next-line no-param-reassign\n options = utils.toFlatObject(options, {\n metaTokens: true,\n dots: false,\n indexes: false\n }, false, function defined(option, source) {\n // eslint-disable-next-line no-eq-null,eqeqeq\n return !utils.isUndefined(source[option]);\n });\n\n const metaTokens = options.metaTokens;\n // eslint-disable-next-line no-use-before-define\n const visitor = options.visitor || defaultVisitor;\n const dots = options.dots;\n const indexes = options.indexes;\n const _Blob = options.Blob || typeof Blob !== 'undefined' && Blob;\n const useBlob = _Blob && utils.isSpecCompliantForm(formData);\n\n if (!utils.isFunction(visitor)) {\n throw new TypeError('visitor must be a function');\n }\n\n function convertValue(value) {\n if (value === null) return '';\n\n if (utils.isDate(value)) {\n return value.toISOString();\n }\n\n if (utils.isBoolean(value)) {\n return value.toString();\n }\n\n if (!useBlob && utils.isBlob(value)) {\n throw new AxiosError('Blob is not supported. Use a Buffer instead.');\n }\n\n if (utils.isArrayBuffer(value) || utils.isTypedArray(value)) {\n return useBlob && typeof Blob === 'function' ? new Blob([value]) : Buffer.from(value);\n }\n\n return value;\n }\n\n /**\n * Default visitor.\n *\n * @param {*} value\n * @param {String|Number} key\n * @param {Array<String|Number>} path\n * @this {FormData}\n *\n * @returns {boolean} return true to visit the each prop of the value recursively\n */\n function defaultVisitor(value, key, path) {\n let arr = value;\n\n if (value && !path && typeof value === 'object') {\n if (utils.endsWith(key, '{}')) {\n // eslint-disable-next-line no-param-reassign\n key = metaTokens ? key : key.slice(0, -2);\n // eslint-disable-next-line no-param-reassign\n value = JSON.stringify(value);\n } else if (\n (utils.isArray(value) && isFlatArray(value)) ||\n ((utils.isFileList(value) || utils.endsWith(key, '[]')) && (arr = utils.toArray(value))\n )) {\n // eslint-disable-next-line no-param-reassign\n key = removeBrackets(key);\n\n arr.forEach(function each(el, index) {\n !(utils.isUndefined(el) || el === null) && formData.append(\n // eslint-disable-next-line no-nested-ternary\n indexes === true ? renderKey([key], index, dots) : (indexes === null ? key : key + '[]'),\n convertValue(el)\n );\n });\n return false;\n }\n }\n\n if (isVisitable(value)) {\n return true;\n }\n\n formData.append(renderKey(path, key, dots), convertValue(value));\n\n return false;\n }\n\n const stack = [];\n\n const exposedHelpers = Object.assign(predicates, {\n defaultVisitor,\n convertValue,\n isVisitable\n });\n\n function build(value, path) {\n if (utils.isUndefined(value)) return;\n\n if (stack.indexOf(value) !== -1) {\n throw Error('Circular reference detected in ' + path.join('.'));\n }\n\n stack.push(value);\n\n utils.forEach(value, function each(el, key) {\n const result = !(utils.isUndefined(el) || el === null) && visitor.call(\n formData, el, utils.isString(key) ? key.trim() : key, path, exposedHelpers\n );\n\n if (result === true) {\n build(el, path ? path.concat(key) : [key]);\n }\n });\n\n stack.pop();\n }\n\n if (!utils.isObject(obj)) {\n throw new TypeError('data must be an object');\n }\n\n build(obj);\n\n return formData;\n}\n\nexport default toFormData;\n","'use strict';\n\nimport toFormData from './toFormData.js';\n\n/**\n * It encodes a string by replacing all characters that are not in the unreserved set with\n * their percent-encoded equivalents\n *\n * @param {string} str - The string to encode.\n *\n * @returns {string} The encoded string.\n */\nfunction encode(str) {\n const charMap = {\n '!': '%21',\n \"'\": '%27',\n '(': '%28',\n ')': '%29',\n '~': '%7E',\n '%20': '+',\n '%00': '\\x00'\n };\n return encodeURIComponent(str).replace(/[!'()~]|%20|%00/g, function replacer(match) {\n return charMap[match];\n });\n}\n\n/**\n * It takes a params object and converts it to a FormData object\n *\n * @param {Object<string, any>} params - The parameters to be converted to a FormData object.\n * @param {Object<string, any>} options - The options object passed to the Axios constructor.\n *\n * @returns {void}\n */\nfunction AxiosURLSearchParams(params, options) {\n this._pairs = [];\n\n params && toFormData(params, this, options);\n}\n\nconst prototype = AxiosURLSearchParams.prototype;\n\nprototype.append = function append(name, value) {\n this._pairs.push([name, value]);\n};\n\nprototype.toString = function toString(encoder) {\n const _encode = encoder ? function(value) {\n return encoder.call(this, value, encode);\n } : encode;\n\n return this._pairs.map(function each(pair) {\n return _encode(pair[0]) + '=' + _encode(pair[1]);\n }, '').join('&');\n};\n\nexport default AxiosURLSearchParams;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosURLSearchParams from '../helpers/AxiosURLSearchParams.js';\n\n/**\n * It replaces all instances of the characters `:`, `$`, `,`, `+`, `[`, and `]` with their\n * URI encoded counterparts\n *\n * @param {string} val The value to be encoded.\n *\n * @returns {string} The encoded value.\n */\nfunction encode(val) {\n return encodeURIComponent(val).\n replace(/%3A/gi, ':').\n replace(/%24/g, '$').\n replace(/%2C/gi, ',').\n replace(/%20/g, '+');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @param {?(object|Function)} options\n *\n * @returns {string} The formatted url\n */\nexport default function buildURL(url, params, options) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n \n const _encode = options && options.encode || encode;\n\n if (utils.isFunction(options)) {\n options = {\n serialize: options\n };\n } \n\n const serializeFn = options && options.serialize;\n\n let serializedParams;\n\n if (serializeFn) {\n serializedParams = serializeFn(params, options);\n } else {\n serializedParams = utils.isURLSearchParams(params) ?\n params.toString() :\n new AxiosURLSearchParams(params, options).toString(_encode);\n }\n\n if (serializedParams) {\n const hashmarkIndex = url.indexOf(\"#\");\n\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n}\n","'use strict';\n\nimport utils from './../utils.js';\n\nclass InterceptorManager {\n constructor() {\n this.handlers = [];\n }\n\n /**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\n use(fulfilled, rejected, options) {\n this.handlers.push({\n fulfilled,\n rejected,\n synchronous: options ? options.synchronous : false,\n runWhen: options ? options.runWhen : null\n });\n return this.handlers.length - 1;\n }\n\n /**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n *\n * @returns {void}\n */\n eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n }\n\n /**\n * Clear all interceptors from the stack\n *\n * @returns {void}\n */\n clear() {\n if (this.handlers) {\n this.handlers = [];\n }\n }\n\n /**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n *\n * @returns {void}\n */\n forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n }\n}\n\nexport default InterceptorManager;\n","'use strict';\n\nexport default {\n silentJSONParsing: true,\n forcedJSONParsing: true,\n clarifyTimeoutError: false\n};\n","'use strict';\n\nimport AxiosURLSearchParams from '../../../helpers/AxiosURLSearchParams.js';\nexport default typeof URLSearchParams !== 'undefined' ? URLSearchParams : AxiosURLSearchParams;\n","'use strict';\n\nexport default typeof FormData !== 'undefined' ? FormData : null;\n","'use strict'\n\nexport default typeof Blob !== 'undefined' ? Blob : null\n","import URLSearchParams from './classes/URLSearchParams.js'\nimport FormData from './classes/FormData.js'\nimport Blob from './classes/Blob.js'\n\nexport default {\n isBrowser: true,\n classes: {\n URLSearchParams,\n FormData,\n Blob\n },\n protocols: ['http', 'https', 'file', 'blob', 'url', 'data']\n};\n","const hasBrowserEnv = typeof window !== 'undefined' && typeof document !== 'undefined';\n\nconst _navigator = typeof navigator === 'object' && navigator || undefined;\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n * nativescript\n * navigator.product -> 'NativeScript' or 'NS'\n *\n * @returns {boolean}\n */\nconst hasStandardBrowserEnv = hasBrowserEnv &&\n (!_navigator || ['ReactNative', 'NativeScript', 'NS'].indexOf(_navigator.product) < 0);\n\n/**\n * Determine if we're running in a standard browser webWorker environment\n *\n * Although the `isStandardBrowserEnv` method indicates that\n * `allows axios to run in a web worker`, the WebWorker will still be\n * filtered out due to its judgment standard\n * `typeof window !== 'undefined' && typeof document !== 'undefined'`.\n * This leads to a problem when axios post `FormData` in webWorker\n */\nconst hasStandardBrowserWebWorkerEnv = (() => {\n return (\n typeof WorkerGlobalScope !== 'undefined' &&\n // eslint-disable-next-line no-undef\n self instanceof WorkerGlobalScope &&\n typeof self.importScripts === 'function'\n );\n})();\n\nconst origin = hasBrowserEnv && window.location.href || 'http://localhost';\n\nexport {\n hasBrowserEnv,\n hasStandardBrowserWebWorkerEnv,\n hasStandardBrowserEnv,\n _navigator as navigator,\n origin\n}\n","import platform from './node/index.js';\nimport * as utils from './common/utils.js';\n\nexport default {\n ...utils,\n ...platform\n}\n","'use strict';\n\nimport utils from '../utils.js';\nimport toFormData from './toFormData.js';\nimport platform from '../platform/index.js';\n\nexport default function toURLEncodedForm(data, options) {\n return toFormData(data, new platform.classes.URLSearchParams(), {\n visitor: function(value, key, path, helpers) {\n if (platform.isNode && utils.isBuffer(value)) {\n this.append(key, value.toString('base64'));\n return false;\n }\n\n return helpers.defaultVisitor.apply(this, arguments);\n },\n ...options\n });\n}\n","'use strict';\n\nimport utils from '../utils.js';\n\n/**\n * It takes a string like `foo[x][y][z]` and returns an array like `['foo', 'x', 'y', 'z']\n *\n * @param {string} name - The name of the property to get.\n *\n * @returns An array of strings.\n */\nfunction parsePropPath(name) {\n // foo[x][y][z]\n // foo.x.y.z\n // foo-x-y-z\n // foo x y z\n return utils.matchAll(/\\w+|\\[(\\w*)]/g, name).map(match => {\n return match[0] === '[]' ? '' : match[1] || match[0];\n });\n}\n\n/**\n * Convert an array to an object.\n *\n * @param {Array<any>} arr - The array to convert to an object.\n *\n * @returns An object with the same keys and values as the array.\n */\nfunction arrayToObject(arr) {\n const obj = {};\n const keys = Object.keys(arr);\n let i;\n const len = keys.length;\n let key;\n for (i = 0; i < len; i++) {\n key = keys[i];\n obj[key] = arr[key];\n }\n return obj;\n}\n\n/**\n * It takes a FormData object and returns a JavaScript object\n *\n * @param {string} formData The FormData object to convert to JSON.\n *\n * @returns {Object<string, any> | null} The converted object.\n */\nfunction formDataToJSON(formData) {\n function buildPath(path, value, target, index) {\n let name = path[index++];\n\n if (name === '__proto__') return true;\n\n const isNumericKey = Number.isFinite(+name);\n const isLast = index >= path.length;\n name = !name && utils.isArray(target) ? target.length : name;\n\n if (isLast) {\n if (utils.hasOwnProp(target, name)) {\n target[name] = [target[name], value];\n } else {\n target[name] = value;\n }\n\n return !isNumericKey;\n }\n\n if (!target[name] || !utils.isObject(target[name])) {\n target[name] = [];\n }\n\n const result = buildPath(path, value, target[name], index);\n\n if (result && utils.isArray(target[name])) {\n target[name] = arrayToObject(target[name]);\n }\n\n return !isNumericKey;\n }\n\n if (utils.isFormData(formData) && utils.isFunction(formData.entries)) {\n const obj = {};\n\n utils.forEachEntry(formData, (name, value) => {\n buildPath(parsePropPath(name), value, obj, 0);\n });\n\n return obj;\n }\n\n return null;\n}\n\nexport default formDataToJSON;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosError from '../core/AxiosError.js';\nimport transitionalDefaults from './transitional.js';\nimport toFormData from '../helpers/toFormData.js';\nimport toURLEncodedForm from '../helpers/toURLEncodedForm.js';\nimport platform from '../platform/index.js';\nimport formDataToJSON from '../helpers/formDataToJSON.js';\n\n/**\n * It takes a string, tries to parse it, and if it fails, it returns the stringified version\n * of the input\n *\n * @param {any} rawValue - The value to be stringified.\n * @param {Function} parser - A function that parses a string into a JavaScript object.\n * @param {Function} encoder - A function that takes a value and returns a string.\n *\n * @returns {string} A stringified version of the rawValue.\n */\nfunction stringifySafely(rawValue, parser, encoder) {\n if (utils.isString(rawValue)) {\n try {\n (parser || JSON.parse)(rawValue);\n return utils.trim(rawValue);\n } catch (e) {\n if (e.name !== 'SyntaxError') {\n throw e;\n }\n }\n }\n\n return (encoder || JSON.stringify)(rawValue);\n}\n\nconst defaults = {\n\n transitional: transitionalDefaults,\n\n adapter: ['xhr', 'http', 'fetch'],\n\n transformRequest: [function transformRequest(data, headers) {\n const contentType = headers.getContentType() || '';\n const hasJSONContentType = contentType.indexOf('application/json') > -1;\n const isObjectPayload = utils.isObject(data);\n\n if (isObjectPayload && utils.isHTMLForm(data)) {\n data = new FormData(data);\n }\n\n const isFormData = utils.isFormData(data);\n\n if (isFormData) {\n return hasJSONContentType ? JSON.stringify(formDataToJSON(data)) : data;\n }\n\n if (utils.isArrayBuffer(data) ||\n utils.isBuffer(data) ||\n utils.isStream(data) ||\n utils.isFile(data) ||\n utils.isBlob(data) ||\n utils.isReadableStream(data)\n ) {\n return data;\n }\n if (utils.isArrayBufferView(data)) {\n return data.buffer;\n }\n if (utils.isURLSearchParams(data)) {\n headers.setContentType('application/x-www-form-urlencoded;charset=utf-8', false);\n return data.toString();\n }\n\n let isFileList;\n\n if (isObjectPayload) {\n if (contentType.indexOf('application/x-www-form-urlencoded') > -1) {\n return toURLEncodedForm(data, this.formSerializer).toString();\n }\n\n if ((isFileList = utils.isFileList(data)) || contentType.indexOf('multipart/form-data') > -1) {\n const _FormData = this.env && this.env.FormData;\n\n return toFormData(\n isFileList ? {'files[]': data} : data,\n _FormData && new _FormData(),\n this.formSerializer\n );\n }\n }\n\n if (isObjectPayload || hasJSONContentType ) {\n headers.setContentType('application/json', false);\n return stringifySafely(data);\n }\n\n return data;\n }],\n\n transformResponse: [function transformResponse(data) {\n const transitional = this.transitional || defaults.transitional;\n const forcedJSONParsing = transitional && transitional.forcedJSONParsing;\n const JSONRequested = this.responseType === 'json';\n\n if (utils.isResponse(data) || utils.isReadableStream(data)) {\n return data;\n }\n\n if (data && utils.isString(data) && ((forcedJSONParsing && !this.responseType) || JSONRequested)) {\n const silentJSONParsing = transitional && transitional.silentJSONParsing;\n const strictJSONParsing = !silentJSONParsing && JSONRequested;\n\n try {\n return JSON.parse(data, this.parseReviver);\n } catch (e) {\n if (strictJSONParsing) {\n if (e.name === 'SyntaxError') {\n throw AxiosError.from(e, AxiosError.ERR_BAD_RESPONSE, this, null, this.response);\n }\n throw e;\n }\n }\n }\n\n return data;\n }],\n\n /**\n * A timeout in milliseconds to abort a request. If set to 0 (default) a\n * timeout is not created.\n */\n timeout: 0,\n\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n\n maxContentLength: -1,\n maxBodyLength: -1,\n\n env: {\n FormData: platform.classes.FormData,\n Blob: platform.classes.Blob\n },\n\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n },\n\n headers: {\n common: {\n 'Accept': 'application/json, text/plain, */*',\n 'Content-Type': undefined\n }\n }\n};\n\nutils.forEach(['delete', 'get', 'head', 'post', 'put', 'patch'], (method) => {\n defaults.headers[method] = {};\n});\n\nexport default defaults;\n","'use strict';\n\nimport utils from './../utils.js';\n\n// RawAxiosHeaders whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nconst ignoreDuplicateOf = utils.toObjectSet([\n 'age', 'authorization', 'content-length', 'content-type', 'etag',\n 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\n 'last-modified', 'location', 'max-forwards', 'proxy-authorization',\n 'referer', 'retry-after', 'user-agent'\n]);\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} rawHeaders Headers needing to be parsed\n *\n * @returns {Object} Headers parsed into an object\n */\nexport default rawHeaders => {\n const parsed = {};\n let key;\n let val;\n let i;\n\n rawHeaders && rawHeaders.split('\\n').forEach(function parser(line) {\n i = line.indexOf(':');\n key = line.substring(0, i).trim().toLowerCase();\n val = line.substring(i + 1).trim();\n\n if (!key || (parsed[key] && ignoreDuplicateOf[key])) {\n return;\n }\n\n if (key === 'set-cookie') {\n if (parsed[key]) {\n parsed[key].push(val);\n } else {\n parsed[key] = [val];\n }\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n });\n\n return parsed;\n};\n","'use strict';\n\nimport utils from '../utils.js';\nimport parseHeaders from '../helpers/parseHeaders.js';\n\nconst $internals = Symbol('internals');\n\nfunction normalizeHeader(header) {\n return header && String(header).trim().toLowerCase();\n}\n\nfunction normalizeValue(value) {\n if (value === false || value == null) {\n return value;\n }\n\n return utils.isArray(value) ? value.map(normalizeValue) : String(value);\n}\n\nfunction parseTokens(str) {\n const tokens = Object.create(null);\n const tokensRE = /([^\\s,;=]+)\\s*(?:=\\s*([^,;]+))?/g;\n let match;\n\n while ((match = tokensRE.exec(str))) {\n tokens[match[1]] = match[2];\n }\n\n return tokens;\n}\n\nconst isValidHeaderName = (str) => /^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(str.trim());\n\nfunction matchHeaderValue(context, value, header, filter, isHeaderNameFilter) {\n if (utils.isFunction(filter)) {\n return filter.call(this, value, header);\n }\n\n if (isHeaderNameFilter) {\n value = header;\n }\n\n if (!utils.isString(value)) return;\n\n if (utils.isString(filter)) {\n return value.indexOf(filter) !== -1;\n }\n\n if (utils.isRegExp(filter)) {\n return filter.test(value);\n }\n}\n\nfunction formatHeader(header) {\n return header.trim()\n .toLowerCase().replace(/([a-z\\d])(\\w*)/g, (w, char, str) => {\n return char.toUpperCase() + str;\n });\n}\n\nfunction buildAccessors(obj, header) {\n const accessorName = utils.toCamelCase(' ' + header);\n\n ['get', 'set', 'has'].forEach(methodName => {\n Object.defineProperty(obj, methodName + accessorName, {\n value: function(arg1, arg2, arg3) {\n return this[methodName].call(this, header, arg1, arg2, arg3);\n },\n configurable: true\n });\n });\n}\n\nclass AxiosHeaders {\n constructor(headers) {\n headers && this.set(headers);\n }\n\n set(header, valueOrRewrite, rewrite) {\n const self = this;\n\n function setHeader(_value, _header, _rewrite) {\n const lHeader = normalizeHeader(_header);\n\n if (!lHeader) {\n throw new Error('header name must be a non-empty string');\n }\n\n const key = utils.findKey(self, lHeader);\n\n if(!key || self[key] === undefined || _rewrite === true || (_rewrite === undefined && self[key] !== false)) {\n self[key || _header] = normalizeValue(_value);\n }\n }\n\n const setHeaders = (headers, _rewrite) =>\n utils.forEach(headers, (_value, _header) => setHeader(_value, _header, _rewrite));\n\n if (utils.isPlainObject(header) || header instanceof this.constructor) {\n setHeaders(header, valueOrRewrite)\n } else if(utils.isString(header) && (header = header.trim()) && !isValidHeaderName(header)) {\n setHeaders(parseHeaders(header), valueOrRewrite);\n } else if (utils.isObject(header) && utils.isIterable(header)) {\n let obj = {}, dest, key;\n for (const entry of header) {\n if (!utils.isArray(entry)) {\n throw TypeError('Object iterator must return a key-value pair');\n }\n\n obj[key = entry[0]] = (dest = obj[key]) ?\n (utils.isArray(dest) ? [...dest, entry[1]] : [dest, entry[1]]) : entry[1];\n }\n\n setHeaders(obj, valueOrRewrite)\n } else {\n header != null && setHeader(valueOrRewrite, header, rewrite);\n }\n\n return this;\n }\n\n get(header, parser) {\n header = normalizeHeader(header);\n\n if (header) {\n const key = utils.findKey(this, header);\n\n if (key) {\n const value = this[key];\n\n if (!parser) {\n return value;\n }\n\n if (parser === true) {\n return parseTokens(value);\n }\n\n if (utils.isFunction(parser)) {\n return parser.call(this, value, key);\n }\n\n if (utils.isRegExp(parser)) {\n return parser.exec(value);\n }\n\n throw new TypeError('parser must be boolean|regexp|function');\n }\n }\n }\n\n has(header, matcher) {\n header = normalizeHeader(header);\n\n if (header) {\n const key = utils.findKey(this, header);\n\n return !!(key && this[key] !== undefined && (!matcher || matchHeaderValue(this, this[key], key, matcher)));\n }\n\n return false;\n }\n\n delete(header, matcher) {\n const self = this;\n let deleted = false;\n\n function deleteHeader(_header) {\n _header = normalizeHeader(_header);\n\n if (_header) {\n const key = utils.findKey(self, _header);\n\n if (key && (!matcher || matchHeaderValue(self, self[key], key, matcher))) {\n delete self[key];\n\n deleted = true;\n }\n }\n }\n\n if (utils.isArray(header)) {\n header.forEach(deleteHeader);\n } else {\n deleteHeader(header);\n }\n\n return deleted;\n }\n\n clear(matcher) {\n const keys = Object.keys(this);\n let i = keys.length;\n let deleted = false;\n\n while (i--) {\n const key = keys[i];\n if(!matcher || matchHeaderValue(this, this[key], key, matcher, true)) {\n delete this[key];\n deleted = true;\n }\n }\n\n return deleted;\n }\n\n normalize(format) {\n const self = this;\n const headers = {};\n\n utils.forEach(this, (value, header) => {\n const key = utils.findKey(headers, header);\n\n if (key) {\n self[key] = normalizeValue(value);\n delete self[header];\n return;\n }\n\n const normalized = format ? formatHeader(header) : String(header).trim();\n\n if (normalized !== header) {\n delete self[header];\n }\n\n self[normalized] = normalizeValue(value);\n\n headers[normalized] = true;\n });\n\n return this;\n }\n\n concat(...targets) {\n return this.constructor.concat(this, ...targets);\n }\n\n toJSON(asStrings) {\n const obj = Object.create(null);\n\n utils.forEach(this, (value, header) => {\n value != null && value !== false && (obj[header] = asStrings && utils.isArray(value) ? value.join(', ') : value);\n });\n\n return obj;\n }\n\n [Symbol.iterator]() {\n return Object.entries(this.toJSON())[Symbol.iterator]();\n }\n\n toString() {\n return Object.entries(this.toJSON()).map(([header, value]) => header + ': ' + value).join('\\n');\n }\n\n getSetCookie() {\n return this.get(\"set-cookie\") || [];\n }\n\n get [Symbol.toStringTag]() {\n return 'AxiosHeaders';\n }\n\n static from(thing) {\n return thing instanceof this ? thing : new this(thing);\n }\n\n static concat(first, ...targets) {\n const computed = new this(first);\n\n targets.forEach((target) => computed.set(target));\n\n return computed;\n }\n\n static accessor(header) {\n const internals = this[$internals] = (this[$internals] = {\n accessors: {}\n });\n\n const accessors = internals.accessors;\n const prototype = this.prototype;\n\n function defineAccessor(_header) {\n const lHeader = normalizeHeader(_header);\n\n if (!accessors[lHeader]) {\n buildAccessors(prototype, _header);\n accessors[lHeader] = true;\n }\n }\n\n utils.isArray(header) ? header.forEach(defineAccessor) : defineAccessor(header);\n\n return this;\n }\n}\n\nAxiosHeaders.accessor(['Content-Type', 'Content-Length', 'Accept', 'Accept-Encoding', 'User-Agent', 'Authorization']);\n\n// reserved names hotfix\nutils.reduceDescriptors(AxiosHeaders.prototype, ({value}, key) => {\n let mapped = key[0].toUpperCase() + key.slice(1); // map `set` => `Set`\n return {\n get: () => value,\n set(headerValue) {\n this[mapped] = headerValue;\n }\n }\n});\n\nutils.freezeMethods(AxiosHeaders);\n\nexport default AxiosHeaders;\n","'use strict';\n\nimport utils from './../utils.js';\nimport defaults from '../defaults/index.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Array|Function} fns A single function or Array of functions\n * @param {?Object} response The response object\n *\n * @returns {*} The resulting transformed data\n */\nexport default function transformData(fns, response) {\n const config = this || defaults;\n const context = response || config;\n const headers = AxiosHeaders.from(context.headers);\n let data = context.data;\n\n utils.forEach(fns, function transform(fn) {\n data = fn.call(config, data, headers.normalize(), response ? response.status : undefined);\n });\n\n headers.normalize();\n\n return data;\n}\n","'use strict';\n\nexport default function isCancel(value) {\n return !!(value && value.__CANCEL__);\n}\n","'use strict';\n\nimport AxiosError from '../core/AxiosError.js';\nimport utils from '../utils.js';\n\n/**\n * A `CanceledError` is an object that is thrown when an operation is canceled.\n *\n * @param {string=} message The message.\n * @param {Object=} config The config.\n * @param {Object=} request The request.\n *\n * @returns {CanceledError} The created error.\n */\nfunction CanceledError(message, config, request) {\n // eslint-disable-next-line no-eq-null,eqeqeq\n AxiosError.call(this, message == null ? 'canceled' : message, AxiosError.ERR_CANCELED, config, request);\n this.name = 'CanceledError';\n}\n\nutils.inherits(CanceledError, AxiosError, {\n __CANCEL__: true\n});\n\nexport default CanceledError;\n","'use strict';\n\nimport AxiosError from './AxiosError.js';\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n *\n * @returns {object} The response.\n */\nexport default function settle(resolve, reject, response) {\n const validateStatus = response.config.validateStatus;\n if (!response.status || !validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(new AxiosError(\n 'Request failed with status code ' + response.status,\n [AxiosError.ERR_BAD_REQUEST, AxiosError.ERR_BAD_RESPONSE][Math.floor(response.status / 100) - 4],\n response.config,\n response.request,\n response\n ));\n }\n}\n","'use strict';\n\nexport default function parseProtocol(url) {\n const match = /^([-+\\w]{1,25})(:?\\/\\/|:)/.exec(url);\n return match && match[1] || '';\n}\n","'use strict';\n\n/**\n * Calculate data maxRate\n * @param {Number} [samplesCount= 10]\n * @param {Number} [min= 1000]\n * @returns {Function}\n */\nfunction speedometer(samplesCount, min) {\n samplesCount = samplesCount || 10;\n const bytes = new Array(samplesCount);\n const timestamps = new Array(samplesCount);\n let head = 0;\n let tail = 0;\n let firstSampleTS;\n\n min = min !== undefined ? min : 1000;\n\n return function push(chunkLength) {\n const now = Date.now();\n\n const startedAt = timestamps[tail];\n\n if (!firstSampleTS) {\n firstSampleTS = now;\n }\n\n bytes[head] = chunkLength;\n timestamps[head] = now;\n\n let i = tail;\n let bytesCount = 0;\n\n while (i !== head) {\n bytesCount += bytes[i++];\n i = i % samplesCount;\n }\n\n head = (head + 1) % samplesCount;\n\n if (head === tail) {\n tail = (tail + 1) % samplesCount;\n }\n\n if (now - firstSampleTS < min) {\n return;\n }\n\n const passed = startedAt && now - startedAt;\n\n return passed ? Math.round(bytesCount * 1000 / passed) : undefined;\n };\n}\n\nexport default speedometer;\n","/**\n * Throttle decorator\n * @param {Function} fn\n * @param {Number} freq\n * @return {Function}\n */\nfunction throttle(fn, freq) {\n let timestamp = 0;\n let threshold = 1000 / freq;\n let lastArgs;\n let timer;\n\n const invoke = (args, now = Date.now()) => {\n timestamp = now;\n lastArgs = null;\n if (timer) {\n clearTimeout(timer);\n timer = null;\n }\n fn(...args);\n }\n\n const throttled = (...args) => {\n const now = Date.now();\n const passed = now - timestamp;\n if ( passed >= threshold) {\n invoke(args, now);\n } else {\n lastArgs = args;\n if (!timer) {\n timer = setTimeout(() => {\n timer = null;\n invoke(lastArgs)\n }, threshold - passed);\n }\n }\n }\n\n const flush = () => lastArgs && invoke(lastArgs);\n\n return [throttled, flush];\n}\n\nexport default throttle;\n","import speedometer from \"./speedometer.js\";\nimport throttle from \"./throttle.js\";\nimport utils from \"../utils.js\";\n\nexport const progressEventReducer = (listener, isDownloadStream, freq = 3) => {\n let bytesNotified = 0;\n const _speedometer = speedometer(50, 250);\n\n return throttle(e => {\n const loaded = e.loaded;\n const total = e.lengthComputable ? e.total : undefined;\n const progressBytes = loaded - bytesNotified;\n const rate = _speedometer(progressBytes);\n const inRange = loaded <= total;\n\n bytesNotified = loaded;\n\n const data = {\n loaded,\n total,\n progress: total ? (loaded / total) : undefined,\n bytes: progressBytes,\n rate: rate ? rate : undefined,\n estimated: rate && total && inRange ? (total - loaded) / rate : undefined,\n event: e,\n lengthComputable: total != null,\n [isDownloadStream ? 'download' : 'upload']: true\n };\n\n listener(data);\n }, freq);\n}\n\nexport const progressEventDecorator = (total, throttled) => {\n const lengthComputable = total != null;\n\n return [(loaded) => throttled[0]({\n lengthComputable,\n total,\n loaded\n }), throttled[1]];\n}\n\nexport const asyncDecorator = (fn) => (...args) => utils.asap(() => fn(...args));\n","import platform from '../platform/index.js';\n\nexport default platform.hasStandardBrowserEnv ? ((origin, isMSIE) => (url) => {\n url = new URL(url, platform.origin);\n\n return (\n origin.protocol === url.protocol &&\n origin.host === url.host &&\n (isMSIE || origin.port === url.port)\n );\n})(\n new URL(platform.origin),\n platform.navigator && /(msie|trident)/i.test(platform.navigator.userAgent)\n) : () => true;\n","import utils from './../utils.js';\nimport platform from '../platform/index.js';\n\nexport default platform.hasStandardBrowserEnv ?\n\n // Standard browser envs support document.cookie\n {\n write(name, value, expires, path, domain, secure, sameSite) {\n if (typeof document === 'undefined') return;\n\n const cookie = [`${name}=${encodeURIComponent(value)}`];\n\n if (utils.isNumber(expires)) {\n cookie.push(`expires=${new Date(expires).toUTCString()}`);\n }\n if (utils.isString(path)) {\n cookie.push(`path=${path}`);\n }\n if (utils.isString(domain)) {\n cookie.push(`domain=${domain}`);\n }\n if (secure === true) {\n cookie.push('secure');\n }\n if (utils.isString(sameSite)) {\n cookie.push(`SameSite=${sameSite}`);\n }\n\n document.cookie = cookie.join('; ');\n },\n\n read(name) {\n if (typeof document === 'undefined') return null;\n const match = document.cookie.match(new RegExp('(?:^|; )' + name + '=([^;]*)'));\n return match ? decodeURIComponent(match[1]) : null;\n },\n\n remove(name) {\n this.write(name, '', Date.now() - 86400000, '/');\n }\n }\n\n :\n\n // Non-standard browser env (web workers, react-native) lack needed support.\n {\n write() {},\n read() {\n return null;\n },\n remove() {}\n };\n\n","'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n *\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nexport default function isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"<scheme>://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n return /^([a-z][a-z\\d+\\-.]*:)?\\/\\//i.test(url);\n}\n","'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n *\n * @returns {string} The combined URL\n */\nexport default function combineURLs(baseURL, relativeURL) {\n return relativeURL\n ? baseURL.replace(/\\/?\\/$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n : baseURL;\n}\n","'use strict';\n\nimport isAbsoluteURL from '../helpers/isAbsoluteURL.js';\nimport combineURLs from '../helpers/combineURLs.js';\n\n/**\n * Creates a new URL by combining the baseURL with the requestedURL,\n * only when the requestedURL is not already an absolute URL.\n * If the requestURL is absolute, this function returns the requestedURL untouched.\n *\n * @param {string} baseURL The base URL\n * @param {string} requestedURL Absolute or relative URL to combine\n *\n * @returns {string} The combined full path\n */\nexport default function buildFullPath(baseURL, requestedURL, allowAbsoluteUrls) {\n let isRelativeUrl = !isAbsoluteURL(requestedURL);\n if (baseURL && (isRelativeUrl || allowAbsoluteUrls == false)) {\n return combineURLs(baseURL, requestedURL);\n }\n return requestedURL;\n}\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosHeaders from \"./AxiosHeaders.js\";\n\nconst headersToObject = (thing) => thing instanceof AxiosHeaders ? { ...thing } : thing;\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n *\n * @returns {Object} New object resulting from merging config2 to config1\n */\nexport default function mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n const config = {};\n\n function getMergedValue(target, source, prop, caseless) {\n if (utils.isPlainObject(target) && utils.isPlainObject(source)) {\n return utils.merge.call({caseless}, target, source);\n } else if (utils.isPlainObject(source)) {\n return utils.merge({}, source);\n } else if (utils.isArray(source)) {\n return source.slice();\n }\n return source;\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDeepProperties(a, b, prop, caseless) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(a, b, prop, caseless);\n } else if (!utils.isUndefined(a)) {\n return getMergedValue(undefined, a, prop, caseless);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function valueFromConfig2(a, b) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(undefined, b);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function defaultToConfig2(a, b) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(undefined, b);\n } else if (!utils.isUndefined(a)) {\n return getMergedValue(undefined, a);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDirectKeys(a, b, prop) {\n if (prop in config2) {\n return getMergedValue(a, b);\n } else if (prop in config1) {\n return getMergedValue(undefined, a);\n }\n }\n\n const mergeMap = {\n url: valueFromConfig2,\n method: valueFromConfig2,\n data: valueFromConfig2,\n baseURL: defaultToConfig2,\n transformRequest: defaultToConfig2,\n transformResponse: defaultToConfig2,\n paramsSerializer: defaultToConfig2,\n timeout: defaultToConfig2,\n timeoutMessage: defaultToConfig2,\n withCredentials: defaultToConfig2,\n withXSRFToken: defaultToConfig2,\n adapter: defaultToConfig2,\n responseType: defaultToConfig2,\n xsrfCookieName: defaultToConfig2,\n xsrfHeaderName: defaultToConfig2,\n onUploadProgress: defaultToConfig2,\n onDownloadProgress: defaultToConfig2,\n decompress: defaultToConfig2,\n maxContentLength: defaultToConfig2,\n maxBodyLength: defaultToConfig2,\n beforeRedirect: defaultToConfig2,\n transport: defaultToConfig2,\n httpAgent: defaultToConfig2,\n httpsAgent: defaultToConfig2,\n cancelToken: defaultToConfig2,\n socketPath: defaultToConfig2,\n responseEncoding: defaultToConfig2,\n validateStatus: mergeDirectKeys,\n headers: (a, b, prop) => mergeDeepProperties(headersToObject(a), headersToObject(b), prop, true)\n };\n\n utils.forEach(Object.keys({...config1, ...config2}), function computeConfigValue(prop) {\n const merge = mergeMap[prop] || mergeDeepProperties;\n const configValue = merge(config1[prop], config2[prop], prop);\n (utils.isUndefined(configValue) && merge !== mergeDirectKeys) || (config[prop] = configValue);\n });\n\n return config;\n}\n","import platform from \"../platform/index.js\";\nimport utils from \"../utils.js\";\nimport isURLSameOrigin from \"./isURLSameOrigin.js\";\nimport cookies from \"./cookies.js\";\nimport buildFullPath from \"../core/buildFullPath.js\";\nimport mergeConfig from \"../core/mergeConfig.js\";\nimport AxiosHeaders from \"../core/AxiosHeaders.js\";\nimport buildURL from \"./buildURL.js\";\n\nexport default (config) => {\n const newConfig = mergeConfig({}, config);\n\n let { data, withXSRFToken, xsrfHeaderName, xsrfCookieName, headers, auth } = newConfig;\n\n newConfig.headers = headers = AxiosHeaders.from(headers);\n\n newConfig.url = buildURL(buildFullPath(newConfig.baseURL, newConfig.url, newConfig.allowAbsoluteUrls), config.params, config.paramsSerializer);\n\n // HTTP basic authentication\n if (auth) {\n headers.set('Authorization', 'Basic ' +\n btoa((auth.username || '') + ':' + (auth.password ? unescape(encodeURIComponent(auth.password)) : ''))\n );\n }\n\n if (utils.isFormData(data)) {\n if (platform.hasStandardBrowserEnv || platform.hasStandardBrowserWebWorkerEnv) {\n headers.setContentType(undefined); // browser handles it\n } else if (utils.isFunction(data.getHeaders)) {\n // Node.js FormData (like form-data package)\n const formHeaders = data.getHeaders();\n // Only set safe headers to avoid overwriting security headers\n const allowedHeaders = ['content-type', 'content-length'];\n Object.entries(formHeaders).forEach(([key, val]) => {\n if (allowedHeaders.includes(key.toLowerCase())) {\n headers.set(key, val);\n }\n });\n }\n } \n\n // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n\n if (platform.hasStandardBrowserEnv) {\n withXSRFToken && utils.isFunction(withXSRFToken) && (withXSRFToken = withXSRFToken(newConfig));\n\n if (withXSRFToken || (withXSRFToken !== false && isURLSameOrigin(newConfig.url))) {\n // Add xsrf header\n const xsrfValue = xsrfHeaderName && xsrfCookieName && cookies.read(xsrfCookieName);\n\n if (xsrfValue) {\n headers.set(xsrfHeaderName, xsrfValue);\n }\n }\n }\n\n return newConfig;\n}\n\n","import utils from './../utils.js';\nimport settle from './../core/settle.js';\nimport transitionalDefaults from '../defaults/transitional.js';\nimport AxiosError from '../core/AxiosError.js';\nimport CanceledError from '../cancel/CanceledError.js';\nimport parseProtocol from '../helpers/parseProtocol.js';\nimport platform from '../platform/index.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport {progressEventReducer} from '../helpers/progressEventReducer.js';\nimport resolveConfig from \"../helpers/resolveConfig.js\";\n\nconst isXHRAdapterSupported = typeof XMLHttpRequest !== 'undefined';\n\nexport default isXHRAdapterSupported && function (config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n const _config = resolveConfig(config);\n let requestData = _config.data;\n const requestHeaders = AxiosHeaders.from(_config.headers).normalize();\n let {responseType, onUploadProgress, onDownloadProgress} = _config;\n let onCanceled;\n let uploadThrottled, downloadThrottled;\n let flushUpload, flushDownload;\n\n function done() {\n flushUpload && flushUpload(); // flush events\n flushDownload && flushDownload(); // flush events\n\n _config.cancelToken && _config.cancelToken.unsubscribe(onCanceled);\n\n _config.signal && _config.signal.removeEventListener('abort', onCanceled);\n }\n\n let request = new XMLHttpRequest();\n\n request.open(_config.method.toUpperCase(), _config.url, true);\n\n // Set the request timeout in MS\n request.timeout = _config.timeout;\n\n function onloadend() {\n if (!request) {\n return;\n }\n // Prepare the response\n const responseHeaders = AxiosHeaders.from(\n 'getAllResponseHeaders' in request && request.getAllResponseHeaders()\n );\n const responseData = !responseType || responseType === 'text' || responseType === 'json' ?\n request.responseText : request.response;\n const response = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config,\n request\n };\n\n settle(function _resolve(value) {\n resolve(value);\n done();\n }, function _reject(err) {\n reject(err);\n done();\n }, response);\n\n // Clean up request\n request = null;\n }\n\n if ('onloadend' in request) {\n // Use onloadend if available\n request.onloadend = onloadend;\n } else {\n // Listen for ready state to emulate onloadend\n request.onreadystatechange = function handleLoad() {\n if (!request || request.readyState !== 4) {\n return;\n }\n\n // The request errored out and we didn't get a response, this will be\n // handled by onerror instead\n // With one exception: request that using file: protocol, most browsers\n // will return status as 0 even though it's a successful request\n if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n return;\n }\n // readystate handler is calling before onerror or ontimeout handlers,\n // so we should call onloadend on the next 'tick'\n setTimeout(onloadend);\n };\n }\n\n // Handle browser request cancellation (as opposed to a manual cancellation)\n request.onabort = function handleAbort() {\n if (!request) {\n return;\n }\n\n reject(new AxiosError('Request aborted', AxiosError.ECONNABORTED, config, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle low level network errors\n request.onerror = function handleError(event) {\n // Browsers deliver a ProgressEvent in XHR onerror\n // (message may be empty; when present, surface it)\n // See https://developer.mozilla.org/docs/Web/API/XMLHttpRequest/error_event\n const msg = event && event.message ? event.message : 'Network Error';\n const err = new AxiosError(msg, AxiosError.ERR_NETWORK, config, request);\n // attach the underlying event for consumers who want details\n err.event = event || null;\n reject(err);\n request = null;\n };\n \n // Handle timeout\n request.ontimeout = function handleTimeout() {\n let timeoutErrorMessage = _config.timeout ? 'timeout of ' + _config.timeout + 'ms exceeded' : 'timeout exceeded';\n const transitional = _config.transitional || transitionalDefaults;\n if (_config.timeoutErrorMessage) {\n timeoutErrorMessage = _config.timeoutErrorMessage;\n }\n reject(new AxiosError(\n timeoutErrorMessage,\n transitional.clarifyTimeoutError ? AxiosError.ETIMEDOUT : AxiosError.ECONNABORTED,\n config,\n request));\n\n // Clean up request\n request = null;\n };\n\n // Remove Content-Type if data is undefined\n requestData === undefined && requestHeaders.setContentType(null);\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n utils.forEach(requestHeaders.toJSON(), function setRequestHeader(val, key) {\n request.setRequestHeader(key, val);\n });\n }\n\n // Add withCredentials to request if needed\n if (!utils.isUndefined(_config.withCredentials)) {\n request.withCredentials = !!_config.withCredentials;\n }\n\n // Add responseType to request if needed\n if (responseType && responseType !== 'json') {\n request.responseType = _config.responseType;\n }\n\n // Handle progress if needed\n if (onDownloadProgress) {\n ([downloadThrottled, flushDownload] = progressEventReducer(onDownloadProgress, true));\n request.addEventListener('progress', downloadThrottled);\n }\n\n // Not all browsers support upload events\n if (onUploadProgress && request.upload) {\n ([uploadThrottled, flushUpload] = progressEventReducer(onUploadProgress));\n\n request.upload.addEventListener('progress', uploadThrottled);\n\n request.upload.addEventListener('loadend', flushUpload);\n }\n\n if (_config.cancelToken || _config.signal) {\n // Handle cancellation\n // eslint-disable-next-line func-names\n onCanceled = cancel => {\n if (!request) {\n return;\n }\n reject(!cancel || cancel.type ? new CanceledError(null, config, request) : cancel);\n request.abort();\n request = null;\n };\n\n _config.cancelToken && _config.cancelToken.subscribe(onCanceled);\n if (_config.signal) {\n _config.signal.aborted ? onCanceled() : _config.signal.addEventListener('abort', onCanceled);\n }\n }\n\n const protocol = parseProtocol(_config.url);\n\n if (protocol && platform.protocols.indexOf(protocol) === -1) {\n reject(new AxiosError('Unsupported protocol ' + protocol + ':', AxiosError.ERR_BAD_REQUEST, config));\n return;\n }\n\n\n // Send the request\n request.send(requestData || null);\n });\n}\n","import CanceledError from \"../cancel/CanceledError.js\";\nimport AxiosError from \"../core/AxiosError.js\";\nimport utils from '../utils.js';\n\nconst composeSignals = (signals, timeout) => {\n const {length} = (signals = signals ? signals.filter(Boolean) : []);\n\n if (timeout || length) {\n let controller = new AbortController();\n\n let aborted;\n\n const onabort = function (reason) {\n if (!aborted) {\n aborted = true;\n unsubscribe();\n const err = reason instanceof Error ? reason : this.reason;\n controller.abort(err instanceof AxiosError ? err : new CanceledError(err instanceof Error ? err.message : err));\n }\n }\n\n let timer = timeout && setTimeout(() => {\n timer = null;\n onabort(new AxiosError(`timeout ${timeout} of ms exceeded`, AxiosError.ETIMEDOUT))\n }, timeout)\n\n const unsubscribe = () => {\n if (signals) {\n timer && clearTimeout(timer);\n timer = null;\n signals.forEach(signal => {\n signal.unsubscribe ? signal.unsubscribe(onabort) : signal.removeEventListener('abort', onabort);\n });\n signals = null;\n }\n }\n\n signals.forEach((signal) => signal.addEventListener('abort', onabort));\n\n const {signal} = controller;\n\n signal.unsubscribe = () => utils.asap(unsubscribe);\n\n return signal;\n }\n}\n\nexport default composeSignals;\n","\nexport const streamChunk = function* (chunk, chunkSize) {\n let len = chunk.byteLength;\n\n if (!chunkSize || len < chunkSize) {\n yield chunk;\n return;\n }\n\n let pos = 0;\n let end;\n\n while (pos < len) {\n end = pos + chunkSize;\n yield chunk.slice(pos, end);\n pos = end;\n }\n}\n\nexport const readBytes = async function* (iterable, chunkSize) {\n for await (const chunk of readStream(iterable)) {\n yield* streamChunk(chunk, chunkSize);\n }\n}\n\nconst readStream = async function* (stream) {\n if (stream[Symbol.asyncIterator]) {\n yield* stream;\n return;\n }\n\n const reader = stream.getReader();\n try {\n for (;;) {\n const {done, value} = await reader.read();\n if (done) {\n break;\n }\n yield value;\n }\n } finally {\n await reader.cancel();\n }\n}\n\nexport const trackStream = (stream, chunkSize, onProgress, onFinish) => {\n const iterator = readBytes(stream, chunkSize);\n\n let bytes = 0;\n let done;\n let _onFinish = (e) => {\n if (!done) {\n done = true;\n onFinish && onFinish(e);\n }\n }\n\n return new ReadableStream({\n async pull(controller) {\n try {\n const {done, value} = await iterator.next();\n\n if (done) {\n _onFinish();\n controller.close();\n return;\n }\n\n let len = value.byteLength;\n if (onProgress) {\n let loadedBytes = bytes += len;\n onProgress(loadedBytes);\n }\n controller.enqueue(new Uint8Array(value));\n } catch (err) {\n _onFinish(err);\n throw err;\n }\n },\n cancel(reason) {\n _onFinish(reason);\n return iterator.return();\n }\n }, {\n highWaterMark: 2\n })\n}\n","import platform from \"../platform/index.js\";\nimport utils from \"../utils.js\";\nimport AxiosError from \"../core/AxiosError.js\";\nimport composeSignals from \"../helpers/composeSignals.js\";\nimport {trackStream} from \"../helpers/trackStream.js\";\nimport AxiosHeaders from \"../core/AxiosHeaders.js\";\nimport {progressEventReducer, progressEventDecorator, asyncDecorator} from \"../helpers/progressEventReducer.js\";\nimport resolveConfig from \"../helpers/resolveConfig.js\";\nimport settle from \"../core/settle.js\";\n\nconst DEFAULT_CHUNK_SIZE = 64 * 1024;\n\nconst {isFunction} = utils;\n\nconst globalFetchAPI = (({Request, Response}) => ({\n Request, Response\n}))(utils.global);\n\nconst {\n ReadableStream, TextEncoder\n} = utils.global;\n\n\nconst test = (fn, ...args) => {\n try {\n return !!fn(...args);\n } catch (e) {\n return false\n }\n}\n\nconst factory = (env) => {\n env = utils.merge.call({\n skipUndefined: true\n }, globalFetchAPI, env);\n\n const {fetch: envFetch, Request, Response} = env;\n const isFetchSupported = envFetch ? isFunction(envFetch) : typeof fetch === 'function';\n const isRequestSupported = isFunction(Request);\n const isResponseSupported = isFunction(Response);\n\n if (!isFetchSupported) {\n return false;\n }\n\n const isReadableStreamSupported = isFetchSupported && isFunction(ReadableStream);\n\n const encodeText = isFetchSupported && (typeof TextEncoder === 'function' ?\n ((encoder) => (str) => encoder.encode(str))(new TextEncoder()) :\n async (str) => new Uint8Array(await new Request(str).arrayBuffer())\n );\n\n const supportsRequestStream = isRequestSupported && isReadableStreamSupported && test(() => {\n let duplexAccessed = false;\n\n const hasContentType = new Request(platform.origin, {\n body: new ReadableStream(),\n method: 'POST',\n get duplex() {\n duplexAccessed = true;\n return 'half';\n },\n }).headers.has('Content-Type');\n\n return duplexAccessed && !hasContentType;\n });\n\n const supportsResponseStream = isResponseSupported && isReadableStreamSupported &&\n test(() => utils.isReadableStream(new Response('').body));\n\n const resolvers = {\n stream: supportsResponseStream && ((res) => res.body)\n };\n\n isFetchSupported && ((() => {\n ['text', 'arrayBuffer', 'blob', 'formData', 'stream'].forEach(type => {\n !resolvers[type] && (resolvers[type] = (res, config) => {\n let method = res && res[type];\n\n if (method) {\n return method.call(res);\n }\n\n throw new AxiosError(`Response type '${type}' is not supported`, AxiosError.ERR_NOT_SUPPORT, config);\n })\n });\n })());\n\n const getBodyLength = async (body) => {\n if (body == null) {\n return 0;\n }\n\n if (utils.isBlob(body)) {\n return body.size;\n }\n\n if (utils.isSpecCompliantForm(body)) {\n const _request = new Request(platform.origin, {\n method: 'POST',\n body,\n });\n return (await _request.arrayBuffer()).byteLength;\n }\n\n if (utils.isArrayBufferView(body) || utils.isArrayBuffer(body)) {\n return body.byteLength;\n }\n\n if (utils.isURLSearchParams(body)) {\n body = body + '';\n }\n\n if (utils.isString(body)) {\n return (await encodeText(body)).byteLength;\n }\n }\n\n const resolveBodyLength = async (headers, body) => {\n const length = utils.toFiniteNumber(headers.getContentLength());\n\n return length == null ? getBodyLength(body) : length;\n }\n\n return async (config) => {\n let {\n url,\n method,\n data,\n signal,\n cancelToken,\n timeout,\n onDownloadProgress,\n onUploadProgress,\n responseType,\n headers,\n withCredentials = 'same-origin',\n fetchOptions\n } = resolveConfig(config);\n\n let _fetch = envFetch || fetch;\n\n responseType = responseType ? (responseType + '').toLowerCase() : 'text';\n\n let composedSignal = composeSignals([signal, cancelToken && cancelToken.toAbortSignal()], timeout);\n\n let request = null;\n\n const unsubscribe = composedSignal && composedSignal.unsubscribe && (() => {\n composedSignal.unsubscribe();\n });\n\n let requestContentLength;\n\n try {\n if (\n onUploadProgress && supportsRequestStream && method !== 'get' && method !== 'head' &&\n (requestContentLength = await resolveBodyLength(headers, data)) !== 0\n ) {\n let _request = new Request(url, {\n method: 'POST',\n body: data,\n duplex: \"half\"\n });\n\n let contentTypeHeader;\n\n if (utils.isFormData(data) && (contentTypeHeader = _request.headers.get('content-type'))) {\n headers.setContentType(contentTypeHeader)\n }\n\n if (_request.body) {\n const [onProgress, flush] = progressEventDecorator(\n requestContentLength,\n progressEventReducer(asyncDecorator(onUploadProgress))\n );\n\n data = trackStream(_request.body, DEFAULT_CHUNK_SIZE, onProgress, flush);\n }\n }\n\n if (!utils.isString(withCredentials)) {\n withCredentials = withCredentials ? 'include' : 'omit';\n }\n\n // Cloudflare Workers throws when credentials are defined\n // see https://github.com/cloudflare/workerd/issues/902\n const isCredentialsSupported = isRequestSupported && \"credentials\" in Request.prototype;\n\n const resolvedOptions = {\n ...fetchOptions,\n signal: composedSignal,\n method: method.toUpperCase(),\n headers: headers.normalize().toJSON(),\n body: data,\n duplex: \"half\",\n credentials: isCredentialsSupported ? withCredentials : undefined\n };\n\n request = isRequestSupported && new Request(url, resolvedOptions);\n\n let response = await (isRequestSupported ? _fetch(request, fetchOptions) : _fetch(url, resolvedOptions));\n\n const isStreamResponse = supportsResponseStream && (responseType === 'stream' || responseType === 'response');\n\n if (supportsResponseStream && (onDownloadProgress || (isStreamResponse && unsubscribe))) {\n const options = {};\n\n ['status', 'statusText', 'headers'].forEach(prop => {\n options[prop] = response[prop];\n });\n\n const responseContentLength = utils.toFiniteNumber(response.headers.get('content-length'));\n\n const [onProgress, flush] = onDownloadProgress && progressEventDecorator(\n responseContentLength,\n progressEventReducer(asyncDecorator(onDownloadProgress), true)\n ) || [];\n\n response = new Response(\n trackStream(response.body, DEFAULT_CHUNK_SIZE, onProgress, () => {\n flush && flush();\n unsubscribe && unsubscribe();\n }),\n options\n );\n }\n\n responseType = responseType || 'text';\n\n let responseData = await resolvers[utils.findKey(resolvers, responseType) || 'text'](response, config);\n\n !isStreamResponse && unsubscribe && unsubscribe();\n\n return await new Promise((resolve, reject) => {\n settle(resolve, reject, {\n data: responseData,\n headers: AxiosHeaders.from(response.headers),\n status: response.status,\n statusText: response.statusText,\n config,\n request\n })\n })\n } catch (err) {\n unsubscribe && unsubscribe();\n\n if (err && err.name === 'TypeError' && /Load failed|fetch/i.test(err.message)) {\n throw Object.assign(\n new AxiosError('Network Error', AxiosError.ERR_NETWORK, config, request),\n {\n cause: err.cause || err\n }\n )\n }\n\n throw AxiosError.from(err, err && err.code, config, request);\n }\n }\n}\n\nconst seedCache = new Map();\n\nexport const getFetch = (config) => {\n let env = (config && config.env) || {};\n const {fetch, Request, Response} = env;\n const seeds = [\n Request, Response, fetch\n ];\n\n let len = seeds.length, i = len,\n seed, target, map = seedCache;\n\n while (i--) {\n seed = seeds[i];\n target = map.get(seed);\n\n target === undefined && map.set(seed, target = (i ? new Map() : factory(env)))\n\n map = target;\n }\n\n return target;\n};\n\nconst adapter = getFetch();\n\nexport default adapter;\n","import utils from '../utils.js';\nimport httpAdapter from './http.js';\nimport xhrAdapter from './xhr.js';\nimport * as fetchAdapter from './fetch.js';\nimport AxiosError from \"../core/AxiosError.js\";\n\n/**\n * Known adapters mapping.\n * Provides environment-specific adapters for Axios:\n * - `http` for Node.js\n * - `xhr` for browsers\n * - `fetch` for fetch API-based requests\n * \n * @type {Object<string, Function|Object>}\n */\nconst knownAdapters = {\n http: httpAdapter,\n xhr: xhrAdapter,\n fetch: {\n get: fetchAdapter.getFetch,\n }\n};\n\n// Assign adapter names for easier debugging and identification\nutils.forEach(knownAdapters, (fn, value) => {\n if (fn) {\n try {\n Object.defineProperty(fn, 'name', { value });\n } catch (e) {\n // eslint-disable-next-line no-empty\n }\n Object.defineProperty(fn, 'adapterName', { value });\n }\n});\n\n/**\n * Render a rejection reason string for unknown or unsupported adapters\n * \n * @param {string} reason\n * @returns {string}\n */\nconst renderReason = (reason) => `- ${reason}`;\n\n/**\n * Check if the adapter is resolved (function, null, or false)\n * \n * @param {Function|null|false} adapter\n * @returns {boolean}\n */\nconst isResolvedHandle = (adapter) => utils.isFunction(adapter) || adapter === null || adapter === false;\n\n/**\n * Get the first suitable adapter from the provided list.\n * Tries each adapter in order until a supported one is found.\n * Throws an AxiosError if no adapter is suitable.\n * \n * @param {Array<string|Function>|string|Function} adapters - Adapter(s) by name or function.\n * @param {Object} config - Axios request configuration\n * @throws {AxiosError} If no suitable adapter is available\n * @returns {Function} The resolved adapter function\n */\nfunction getAdapter(adapters, config) {\n adapters = utils.isArray(adapters) ? adapters : [adapters];\n\n const { length } = adapters;\n let nameOrAdapter;\n let adapter;\n\n const rejectedReasons = {};\n\n for (let i = 0; i < length; i++) {\n nameOrAdapter = adapters[i];\n let id;\n\n adapter = nameOrAdapter;\n\n if (!isResolvedHandle(nameOrAdapter)) {\n adapter = knownAdapters[(id = String(nameOrAdapter)).toLowerCase()];\n\n if (adapter === undefined) {\n throw new AxiosError(`Unknown adapter '${id}'`);\n }\n }\n\n if (adapter && (utils.isFunction(adapter) || (adapter = adapter.get(config)))) {\n break;\n }\n\n rejectedReasons[id || '#' + i] = adapter;\n }\n\n if (!adapter) {\n const reasons = Object.entries(rejectedReasons)\n .map(([id, state]) => `adapter ${id} ` +\n (state === false ? 'is not supported by the environment' : 'is not available in the build')\n );\n\n let s = length ?\n (reasons.length > 1 ? 'since :\\n' + reasons.map(renderReason).join('\\n') : ' ' + renderReason(reasons[0])) :\n 'as no adapter specified';\n\n throw new AxiosError(\n `There is no suitable adapter to dispatch the request ` + s,\n 'ERR_NOT_SUPPORT'\n );\n }\n\n return adapter;\n}\n\n/**\n * Exports Axios adapters and utility to resolve an adapter\n */\nexport default {\n /**\n * Resolve an adapter from a list of adapter names or functions.\n * @type {Function}\n */\n getAdapter,\n\n /**\n * Exposes all known adapters\n * @type {Object<string, Function|Object>}\n */\n adapters: knownAdapters\n};\n","'use strict';\n\nimport transformData from './transformData.js';\nimport isCancel from '../cancel/isCancel.js';\nimport defaults from '../defaults/index.js';\nimport CanceledError from '../cancel/CanceledError.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport adapters from \"../adapters/adapters.js\";\n\n/**\n * Throws a `CanceledError` if cancellation has been requested.\n *\n * @param {Object} config The config that is to be used for the request\n *\n * @returns {void}\n */\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n\n if (config.signal && config.signal.aborted) {\n throw new CanceledError(null, config);\n }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n *\n * @returns {Promise} The Promise to be fulfilled\n */\nexport default function dispatchRequest(config) {\n throwIfCancellationRequested(config);\n\n config.headers = AxiosHeaders.from(config.headers);\n\n // Transform request data\n config.data = transformData.call(\n config,\n config.transformRequest\n );\n\n if (['post', 'put', 'patch'].indexOf(config.method) !== -1) {\n config.headers.setContentType('application/x-www-form-urlencoded', false);\n }\n\n const adapter = adapters.getAdapter(config.adapter || defaults.adapter, config);\n\n return adapter(config).then(function onAdapterResolution(response) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n response.data = transformData.call(\n config,\n config.transformResponse,\n response\n );\n\n response.headers = AxiosHeaders.from(response.headers);\n\n return response;\n }, function onAdapterRejection(reason) {\n if (!isCancel(reason)) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n if (reason && reason.response) {\n reason.response.data = transformData.call(\n config,\n config.transformResponse,\n reason.response\n );\n reason.response.headers = AxiosHeaders.from(reason.response.headers);\n }\n }\n\n return Promise.reject(reason);\n });\n}\n","export const VERSION = \"1.13.1\";","'use strict';\n\nimport {VERSION} from '../env/data.js';\nimport AxiosError from '../core/AxiosError.js';\n\nconst validators = {};\n\n// eslint-disable-next-line func-names\n['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach((type, i) => {\n validators[type] = function validator(thing) {\n return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type;\n };\n});\n\nconst deprecatedWarnings = {};\n\n/**\n * Transitional option validator\n *\n * @param {function|boolean?} validator - set to false if the transitional option has been removed\n * @param {string?} version - deprecated version / removed since version\n * @param {string?} message - some message with additional info\n *\n * @returns {function}\n */\nvalidators.transitional = function transitional(validator, version, message) {\n function formatMessage(opt, desc) {\n return '[Axios v' + VERSION + '] Transitional option \\'' + opt + '\\'' + desc + (message ? '. ' + message : '');\n }\n\n // eslint-disable-next-line func-names\n return (value, opt, opts) => {\n if (validator === false) {\n throw new AxiosError(\n formatMessage(opt, ' has been removed' + (version ? ' in ' + version : '')),\n AxiosError.ERR_DEPRECATED\n );\n }\n\n if (version && !deprecatedWarnings[opt]) {\n deprecatedWarnings[opt] = true;\n // eslint-disable-next-line no-console\n console.warn(\n formatMessage(\n opt,\n ' has been deprecated since v' + version + ' and will be removed in the near future'\n )\n );\n }\n\n return validator ? validator(value, opt, opts) : true;\n };\n};\n\nvalidators.spelling = function spelling(correctSpelling) {\n return (value, opt) => {\n // eslint-disable-next-line no-console\n console.warn(`${opt} is likely a misspelling of ${correctSpelling}`);\n return true;\n }\n};\n\n/**\n * Assert object's properties type\n *\n * @param {object} options\n * @param {object} schema\n * @param {boolean?} allowUnknown\n *\n * @returns {object}\n */\n\nfunction assertOptions(options, schema, allowUnknown) {\n if (typeof options !== 'object') {\n throw new AxiosError('options must be an object', AxiosError.ERR_BAD_OPTION_VALUE);\n }\n const keys = Object.keys(options);\n let i = keys.length;\n while (i-- > 0) {\n const opt = keys[i];\n const validator = schema[opt];\n if (validator) {\n const value = options[opt];\n const result = value === undefined || validator(value, opt, options);\n if (result !== true) {\n throw new AxiosError('option ' + opt + ' must be ' + result, AxiosError.ERR_BAD_OPTION_VALUE);\n }\n continue;\n }\n if (allowUnknown !== true) {\n throw new AxiosError('Unknown option ' + opt, AxiosError.ERR_BAD_OPTION);\n }\n }\n}\n\nexport default {\n assertOptions,\n validators\n};\n","'use strict';\n\nimport utils from './../utils.js';\nimport buildURL from '../helpers/buildURL.js';\nimport InterceptorManager from './InterceptorManager.js';\nimport dispatchRequest from './dispatchRequest.js';\nimport mergeConfig from './mergeConfig.js';\nimport buildFullPath from './buildFullPath.js';\nimport validator from '../helpers/validator.js';\nimport AxiosHeaders from './AxiosHeaders.js';\n\nconst validators = validator.validators;\n\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n *\n * @return {Axios} A new instance of Axios\n */\nclass Axios {\n constructor(instanceConfig) {\n this.defaults = instanceConfig || {};\n this.interceptors = {\n request: new InterceptorManager(),\n response: new InterceptorManager()\n };\n }\n\n /**\n * Dispatch a request\n *\n * @param {String|Object} configOrUrl The config specific for this request (merged with this.defaults)\n * @param {?Object} config\n *\n * @returns {Promise} The Promise to be fulfilled\n */\n async request(configOrUrl, config) {\n try {\n return await this._request(configOrUrl, config);\n } catch (err) {\n if (err instanceof Error) {\n let dummy = {};\n\n Error.captureStackTrace ? Error.captureStackTrace(dummy) : (dummy = new Error());\n\n // slice off the Error: ... line\n const stack = dummy.stack ? dummy.stack.replace(/^.+\\n/, '') : '';\n try {\n if (!err.stack) {\n err.stack = stack;\n // match without the 2 top stack lines\n } else if (stack && !String(err.stack).endsWith(stack.replace(/^.+\\n.+\\n/, ''))) {\n err.stack += '\\n' + stack\n }\n } catch (e) {\n // ignore the case where \"stack\" is an un-writable property\n }\n }\n\n throw err;\n }\n }\n\n _request(configOrUrl, config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof configOrUrl === 'string') {\n config = config || {};\n config.url = configOrUrl;\n } else {\n config = configOrUrl || {};\n }\n\n config = mergeConfig(this.defaults, config);\n\n const {transitional, paramsSerializer, headers} = config;\n\n if (transitional !== undefined) {\n validator.assertOptions(transitional, {\n silentJSONParsing: validators.transitional(validators.boolean),\n forcedJSONParsing: validators.transitional(validators.boolean),\n clarifyTimeoutError: validators.transitional(validators.boolean)\n }, false);\n }\n\n if (paramsSerializer != null) {\n if (utils.isFunction(paramsSerializer)) {\n config.paramsSerializer = {\n serialize: paramsSerializer\n }\n } else {\n validator.assertOptions(paramsSerializer, {\n encode: validators.function,\n serialize: validators.function\n }, true);\n }\n }\n\n // Set config.allowAbsoluteUrls\n if (config.allowAbsoluteUrls !== undefined) {\n // do nothing\n } else if (this.defaults.allowAbsoluteUrls !== undefined) {\n config.allowAbsoluteUrls = this.defaults.allowAbsoluteUrls;\n } else {\n config.allowAbsoluteUrls = true;\n }\n\n validator.assertOptions(config, {\n baseUrl: validators.spelling('baseURL'),\n withXsrfToken: validators.spelling('withXSRFToken')\n }, true);\n\n // Set config.method\n config.method = (config.method || this.defaults.method || 'get').toLowerCase();\n\n // Flatten headers\n let contextHeaders = headers && utils.merge(\n headers.common,\n headers[config.method]\n );\n\n headers && utils.forEach(\n ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n (method) => {\n delete headers[method];\n }\n );\n\n config.headers = AxiosHeaders.concat(contextHeaders, headers);\n\n // filter out skipped interceptors\n const requestInterceptorChain = [];\n let synchronousRequestInterceptors = true;\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) {\n return;\n }\n\n synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous;\n\n requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected);\n });\n\n const responseInterceptorChain = [];\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n let promise;\n let i = 0;\n let len;\n\n if (!synchronousRequestInterceptors) {\n const chain = [dispatchRequest.bind(this), undefined];\n chain.unshift(...requestInterceptorChain);\n chain.push(...responseInterceptorChain);\n len = chain.length;\n\n promise = Promise.resolve(config);\n\n while (i < len) {\n promise = promise.then(chain[i++], chain[i++]);\n }\n\n return promise;\n }\n\n len = requestInterceptorChain.length;\n\n let newConfig = config;\n\n while (i < len) {\n const onFulfilled = requestInterceptorChain[i++];\n const onRejected = requestInterceptorChain[i++];\n try {\n newConfig = onFulfilled(newConfig);\n } catch (error) {\n onRejected.call(this, error);\n break;\n }\n }\n\n try {\n promise = dispatchRequest.call(this, newConfig);\n } catch (error) {\n return Promise.reject(error);\n }\n\n i = 0;\n len = responseInterceptorChain.length;\n\n while (i < len) {\n promise = promise.then(responseInterceptorChain[i++], responseInterceptorChain[i++]);\n }\n\n return promise;\n }\n\n getUri(config) {\n config = mergeConfig(this.defaults, config);\n const fullPath = buildFullPath(config.baseURL, config.url, config.allowAbsoluteUrls);\n return buildURL(fullPath, config.params, config.paramsSerializer);\n }\n}\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, config) {\n return this.request(mergeConfig(config || {}, {\n method,\n url,\n data: (config || {}).data\n }));\n };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n\n function generateHTTPMethod(isForm) {\n return function httpMethod(url, data, config) {\n return this.request(mergeConfig(config || {}, {\n method,\n headers: isForm ? {\n 'Content-Type': 'multipart/form-data'\n } : {},\n url,\n data\n }));\n };\n }\n\n Axios.prototype[method] = generateHTTPMethod();\n\n Axios.prototype[method + 'Form'] = generateHTTPMethod(true);\n});\n\nexport default Axios;\n","'use strict';\n\nimport CanceledError from './CanceledError.js';\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @param {Function} executor The executor function.\n *\n * @returns {CancelToken}\n */\nclass CancelToken {\n constructor(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n let resolvePromise;\n\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n const token = this;\n\n // eslint-disable-next-line func-names\n this.promise.then(cancel => {\n if (!token._listeners) return;\n\n let i = token._listeners.length;\n\n while (i-- > 0) {\n token._listeners[i](cancel);\n }\n token._listeners = null;\n });\n\n // eslint-disable-next-line func-names\n this.promise.then = onfulfilled => {\n let _resolve;\n // eslint-disable-next-line func-names\n const promise = new Promise(resolve => {\n token.subscribe(resolve);\n _resolve = resolve;\n }).then(onfulfilled);\n\n promise.cancel = function reject() {\n token.unsubscribe(_resolve);\n };\n\n return promise;\n };\n\n executor(function cancel(message, config, request) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new CanceledError(message, config, request);\n resolvePromise(token.reason);\n });\n }\n\n /**\n * Throws a `CanceledError` if cancellation has been requested.\n */\n throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n }\n\n /**\n * Subscribe to the cancel signal\n */\n\n subscribe(listener) {\n if (this.reason) {\n listener(this.reason);\n return;\n }\n\n if (this._listeners) {\n this._listeners.push(listener);\n } else {\n this._listeners = [listener];\n }\n }\n\n /**\n * Unsubscribe from the cancel signal\n */\n\n unsubscribe(listener) {\n if (!this._listeners) {\n return;\n }\n const index = this._listeners.indexOf(listener);\n if (index !== -1) {\n this._listeners.splice(index, 1);\n }\n }\n\n toAbortSignal() {\n const controller = new AbortController();\n\n const abort = (err) => {\n controller.abort(err);\n };\n\n this.subscribe(abort);\n\n controller.signal.unsubscribe = () => this.unsubscribe(abort);\n\n return controller.signal;\n }\n\n /**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\n static source() {\n let cancel;\n const token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token,\n cancel\n };\n }\n}\n\nexport default CancelToken;\n","'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * var args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n *\n * @returns {Function}\n */\nexport default function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n}\n","'use strict';\n\nimport utils from './../utils.js';\n\n/**\n * Determines whether the payload is an error thrown by Axios\n *\n * @param {*} payload The value to test\n *\n * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false\n */\nexport default function isAxiosError(payload) {\n return utils.isObject(payload) && (payload.isAxiosError === true);\n}\n","const HttpStatusCode = {\n Continue: 100,\n SwitchingProtocols: 101,\n Processing: 102,\n EarlyHints: 103,\n Ok: 200,\n Created: 201,\n Accepted: 202,\n NonAuthoritativeInformation: 203,\n NoContent: 204,\n ResetContent: 205,\n PartialContent: 206,\n MultiStatus: 207,\n AlreadyReported: 208,\n ImUsed: 226,\n MultipleChoices: 300,\n MovedPermanently: 301,\n Found: 302,\n SeeOther: 303,\n NotModified: 304,\n UseProxy: 305,\n Unused: 306,\n TemporaryRedirect: 307,\n PermanentRedirect: 308,\n BadRequest: 400,\n Unauthorized: 401,\n PaymentRequired: 402,\n Forbidden: 403,\n NotFound: 404,\n MethodNotAllowed: 405,\n NotAcceptable: 406,\n ProxyAuthenticationRequired: 407,\n RequestTimeout: 408,\n Conflict: 409,\n Gone: 410,\n LengthRequired: 411,\n PreconditionFailed: 412,\n PayloadTooLarge: 413,\n UriTooLong: 414,\n UnsupportedMediaType: 415,\n RangeNotSatisfiable: 416,\n ExpectationFailed: 417,\n ImATeapot: 418,\n MisdirectedRequest: 421,\n UnprocessableEntity: 422,\n Locked: 423,\n FailedDependency: 424,\n TooEarly: 425,\n UpgradeRequired: 426,\n PreconditionRequired: 428,\n TooManyRequests: 429,\n RequestHeaderFieldsTooLarge: 431,\n UnavailableForLegalReasons: 451,\n InternalServerError: 500,\n NotImplemented: 501,\n BadGateway: 502,\n ServiceUnavailable: 503,\n GatewayTimeout: 504,\n HttpVersionNotSupported: 505,\n VariantAlsoNegotiates: 506,\n InsufficientStorage: 507,\n LoopDetected: 508,\n NotExtended: 510,\n NetworkAuthenticationRequired: 511,\n WebServerIsDown: 521,\n ConnectionTimedOut: 522,\n OriginIsUnreachable: 523,\n TimeoutOccurred: 524,\n SslHandshakeFailed: 525,\n InvalidSslCertificate: 526,\n};\n\nObject.entries(HttpStatusCode).forEach(([key, value]) => {\n HttpStatusCode[value] = key;\n});\n\nexport default HttpStatusCode;\n","'use strict';\n\nimport utils from './utils.js';\nimport bind from './helpers/bind.js';\nimport Axios from './core/Axios.js';\nimport mergeConfig from './core/mergeConfig.js';\nimport defaults from './defaults/index.js';\nimport formDataToJSON from './helpers/formDataToJSON.js';\nimport CanceledError from './cancel/CanceledError.js';\nimport CancelToken from './cancel/CancelToken.js';\nimport isCancel from './cancel/isCancel.js';\nimport {VERSION} from './env/data.js';\nimport toFormData from './helpers/toFormData.js';\nimport AxiosError from './core/AxiosError.js';\nimport spread from './helpers/spread.js';\nimport isAxiosError from './helpers/isAxiosError.js';\nimport AxiosHeaders from \"./core/AxiosHeaders.js\";\nimport adapters from './adapters/adapters.js';\nimport HttpStatusCode from './helpers/HttpStatusCode.js';\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n *\n * @returns {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n const context = new Axios(defaultConfig);\n const instance = bind(Axios.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils.extend(instance, Axios.prototype, context, {allOwnKeys: true});\n\n // Copy context to instance\n utils.extend(instance, context, null, {allOwnKeys: true});\n\n // Factory for creating new instances\n instance.create = function create(instanceConfig) {\n return createInstance(mergeConfig(defaultConfig, instanceConfig));\n };\n\n return instance;\n}\n\n// Create the default instance to be exported\nconst axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Expose Cancel & CancelToken\naxios.CanceledError = CanceledError;\naxios.CancelToken = CancelToken;\naxios.isCancel = isCancel;\naxios.VERSION = VERSION;\naxios.toFormData = toFormData;\n\n// Expose AxiosError class\naxios.AxiosError = AxiosError;\n\n// alias for CanceledError for backward compatibility\naxios.Cancel = axios.CanceledError;\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\n\naxios.spread = spread;\n\n// Expose isAxiosError\naxios.isAxiosError = isAxiosError;\n\n// Expose mergeConfig\naxios.mergeConfig = mergeConfig;\n\naxios.AxiosHeaders = AxiosHeaders;\n\naxios.formToJSON = thing => formDataToJSON(utils.isHTMLForm(thing) ? new FormData(thing) : thing);\n\naxios.getAdapter = adapters.getAdapter;\n\naxios.HttpStatusCode = HttpStatusCode;\n\naxios.default = axios;\n\n// this module should only have a default export\nexport default axios\n","import axios from './lib/axios.js';\n\n// This module is intended to unwrap Axios default export as named.\n// Keep top-level export same with static properties\n// so that it can keep same with es module or cjs\nconst {\n Axios,\n AxiosError,\n CanceledError,\n isCancel,\n CancelToken,\n VERSION,\n all,\n Cancel,\n isAxiosError,\n spread,\n toFormData,\n AxiosHeaders,\n HttpStatusCode,\n formToJSON,\n getAdapter,\n mergeConfig\n} = axios;\n\nexport {\n axios as default,\n Axios,\n AxiosError,\n CanceledError,\n isCancel,\n CancelToken,\n VERSION,\n all,\n Cancel,\n isAxiosError,\n spread,\n toFormData,\n AxiosHeaders,\n HttpStatusCode,\n formToJSON,\n getAdapter,\n mergeConfig\n}\n","import axios, { AxiosResponse, AxiosError } from 'axios';\nimport { KeystoreType, EncryptedKeystore, PublicKeys } from '../types';\nimport { getUserID } from '../keystore-crypto/core';\nimport { base64ToEncryptedKeystore, encryptedKeystoreToBase64, base64ToPublicKey } from '../utils';\n\nexport class KeyServiceAPI {\n private readonly baseUrl: string;\n\n constructor(baseUrl: string) {\n this.baseUrl = baseUrl;\n }\n\n /**\n * Converts the specific client error into a proprietary error for our apps\n * @param error\n * @private\n */\n private normalizeError(error: AxiosError) {\n let errorMessage: string;\n if (error.response?.status === 401) {\n errorMessage = 'Unauthorized: Invalid or expired token';\n } else if (error.response?.status === 403) {\n errorMessage = 'Forbidden: Insufficient permissions';\n } else if (error.response?.status === 404) {\n errorMessage = 'Keystore not found for the specified user';\n } else {\n errorMessage = 'AxiosError:' + (error.message ?? 'Unknown error');\n }\n\n throw new Error(errorMessage);\n }\n\n /**\n * Sends a user's encrypted keystore to the server\n * @param keystore - The encrypted keystore\n * @param url - The user specific part of the url\n * @returns Server response\n */\n async sendEncryptedKeystoreToServer(encryptedKeystore: string, url: string): Promise<AxiosResponse> {\n try {\n const response = await axios.post(\n this.baseUrl + `${url}`,\n { encryptedKeystore },\n {\n withCredentials: true,\n headers: {\n 'Content-Type': 'application/json',\n },\n },\n );\n return response;\n } catch (error) {\n if (axios.isAxiosError(error)) {\n this.normalizeError(error);\n }\n throw new Error('Failed to send keystore', { cause: error });\n }\n }\n\n /**\n * Requests a user's encrypted keystore from the server\n * @param url - The user-specific part of the url\n * @returns The user's encrypted keystore as base64 string\n */\n async requestEncryptedKeystore(userID: string, keystoreType: KeystoreType): Promise<string> {\n try {\n const url = `/downloadKeystore/${userID}/${keystoreType.toString()}`;\n const response = await axios.get<string>(this.baseUrl + `${url}`, {\n withCredentials: true,\n headers: {\n 'Content-Type': 'application/json',\n },\n });\n return response.data;\n } catch (error) {\n if (axios.isAxiosError(error)) {\n this.normalizeError(error);\n }\n\n throw new Error('Failed to retrive keystore', { cause: error });\n }\n }\n\n /**\n * Uploads encrypted keystore to the server\n *\n * @param encryptedKeystore - The encrypted keystore\n * @param type - The keystore's type\n * @returns Server response\n */\n async uploadKeystoreToServer(encryptedKeystore: EncryptedKeystore): Promise<AxiosResponse> {\n try {\n const userID = getUserID();\n const keystoreType = encryptedKeystore.type;\n const url = `/uploadKeystore/${userID}/${keystoreType}`;\n const ciphertextBase64 = encryptedKeystoreToBase64(encryptedKeystore);\n const result = await this.sendEncryptedKeystoreToServer(ciphertextBase64, url);\n return result;\n } catch (error) {\n throw new Error('Failed to upload keystore to the server', { cause: error });\n }\n }\n\n /**\n * Gets a user's encrypted keystore containing encryption keys from the server\n *\n * @returns Encrypted keystore containing encryption keys\n */\n async getEncryptionKeystoreFromServer(): Promise<EncryptedKeystore> {\n return this.getKeystoreFromServer(KeystoreType.ENCRYPTION);\n }\n\n /**\n * Gets a user's encrypted Identity Keystore from the server\n *\n * @returns Encrypted Identity Keystore\n */\n async getIdentityKeystoreFromServer(): Promise<EncryptedKeystore> {\n return this.getKeystoreFromServer(KeystoreType.IDENTITY);\n }\n\n /**\n * Gets a user's encrypted Recovery Keystore from the server\n *\n * @returns Encrypted Recovery Keystore\n */\n async getRecoveryKeystoreFromServer(): Promise<EncryptedKeystore> {\n return this.getKeystoreFromServer(KeystoreType.RECOVERY);\n }\n\n /**\n * Gets a user's encrypted Index Keystore from the server\n *\n * @returns Encrypted Index Keytore\n */\n async getIndexKeystoreFromServer(): Promise<EncryptedKeystore> {\n return this.getKeystoreFromServer(KeystoreType.INDEX);\n }\n\n /**\n * Gets a user's encrypted keystore from the server\n *\n * @param type - The requested keystore's type\n * @returns Encrypted Keytore\n */\n async getKeystoreFromServer(type: KeystoreType): Promise<EncryptedKeystore> {\n try {\n const userID = getUserID();\n const response = await this.requestEncryptedKeystore(userID, type);\n const result = base64ToEncryptedKeystore(response);\n return result;\n } catch (error) {\n throw new Error('Failed to retrieve keystore from the server', { cause: error });\n }\n }\n /**\n * Obtains recipients public keys from the server\n *\n * @param emails - The recipients' emails\n * @returns The list of recipients' public keys\n */\n async getRecipientsPublicKeysFromServer(emails: string[]): Promise<string[]> {\n try {\n const response = await axios.get<string[]>('/api/getPublicKeys', {\n params: {\n emails: emails,\n },\n withCredentials: true,\n headers: {\n 'Content-Type': 'application/json',\n },\n });\n return response.data;\n } catch (error) {\n if (axios.isAxiosError(error)) {\n this.normalizeError(error);\n }\n throw new Error('Failed to retrieve public keys', { cause: error });\n }\n }\n\n /**\n * Obtains the recipient public keys from the server\n *\n * @param email - The recipients' emails\n * @returns The list of recipients' public keys\n */\n async getRecipientsPublicKeys(emails: string[]): Promise<PublicKeys[]> {\n try {\n const publicKeysBase64: string[] = await this.getRecipientsPublicKeysFromServer(emails);\n const result: PublicKeys[] = [];\n for (const keyBase64 of publicKeysBase64) {\n const publicKeys = await base64ToPublicKey(keyBase64);\n result.push(publicKeys);\n }\n return result;\n } catch (error) {\n throw new Error('Failed to get recipients public keys', { cause: error });\n }\n }\n}\n\nexport function getKeyServiceAPI(baseUrl: string): KeyServiceAPI {\n return new KeyServiceAPI(baseUrl);\n}\n","function get(key: string): string | null {\n return localStorage.getItem(key);\n}\n\nfunction set(key: string, value: string): void {\n return localStorage.setItem(key, value);\n}\n\nfunction removeItem(key: string): void {\n localStorage.removeItem(key);\n}\n\nfunction exists(key: string): boolean {\n return !!localStorage.getItem(key);\n}\n\nfunction clear(): void {\n localStorage.clear();\n}\n\nconst localStorageService = {\n set,\n get,\n removeItem,\n exists,\n clear,\n};\n\nexport default localStorageService;\n\nexport interface LocalStorageService {\n set: (key: string, value: string) => void;\n get: (key: string) => string | null;\n removeItem: (key: string) => void;\n exists: (key: string) => boolean;\n clear: () => void;\n}\n"],"names":["AES_ALGORITHM","AES_KEY_BIT_LENGTH","AUX_LEN","IV_LEN_BYTES","KEY_WRAPPING_ALGORITHM","KEY_FORMAT","CONTEXT_WRAPPING","ECC_ALGORITHM","CONTEXT_LOGIN","CONTEXT_ENC_KEYSTORE","CONTEXT_RECOVERY","CONTEXT_INDEX","CONTEXT_DERIVE","CONTEXT_RATCHET","PREFIX_MEDIA_KEY_COMMITMENT","PREFIX_PUBLIC_KEY_COMMITMENT","PREFIX_IDENTITY_KEY_COMMITMENT","ARGON2ID_PARALLELISM","ARGON2ID_ITERATIONS","ARGON2ID_MEMORY_SIZE","ARGON2ID_SALT_BYTE_LENGTH","ARGON2ID_OUTPUT_BYTE_LENGTH","IDENTITY_KEYSTORE_TAG","ENCRYPTION_KEYSTORE_TAG","RECOVERY_KEYSTORE_TAG","INDEX_KEYSTORE_TAG","KYBER512_PUBLIC_KEY_LENGTH","KYBER512_SECRET_KEY_LENGTH","KYBER768_PUBLIC_KEY_LENGTH","KYBER768_SECRET_KEY_LENGTH","KYBER1024_PUBLIC_KEY_LENGTH","KYBER1024_SECRET_KEY_LENGTH","KYBER_SEED_LENGTH","HASH_BIT_LEN","MAX_CACHE_SIZE","MAX_EMAIL_PER_BATCH","DB_LABEL","DB_VERSION","deriveSecretKey","otherUserPublicKey","ownPrivateKey","result","error","generateEccKeys","exportPublicKey","key","importPublicKey","spkiKeyData","exportPrivateKey","importPrivateKey","pkcs8KeyData","uint8ArrayToHex","array","Buffer","UTF8ToUint8","str","uint8ToUTF8","hexToUint8Array","hex","uint8ArrayToBase64","base64ToUint8Array","ciphertextToBase64","encryptedMessage","ivBase64","ciphertextBase64","json","base64ToCiphertext","base64","obj","iv","identityKeysToBase64","keys","pkArray","skArray","encryptionKeysToBase64","encryptedKeystoreToBase64","keystore","ciphertext","base64ToIdentityKeys","pkCryptoKey","skCryptoKey","base64ToEncryptionKeys","pkKyber","skKyber","base64ToEncryptedKeystore","mediaKeysToBase64","base64ToMediaKeys","base64ToPublicKey","eccPublicKeyBytes","eccPublicKey","kyberPublicKey","publicKeyToBase64","eccPublicKeyArray","crypto","isBytes","a","anumber","n","abytes","b","lengths","aexists","instance","checkFinished","aoutput","out","min","u32","arr","clean","arrays","i","createView","rotr","word","shift","isLE","byteSwap","byteSwap32","swap32IfBE","u","hasHexBuiltin","asciis","asciiToBase16","ch","hexToBytes","hl","al","ai","hi","n1","n2","char","utf8ToBytes","toBytes","data","Hash","createHasher","hashCons","hashC","msg","tmp","createXOFer","opts","randomBytes","bytesLength","setBigUint64","view","byteOffset","value","_32n","_u32_max","wh","wl","h","Chi","c","Maj","HashMD","blockLen","outputLen","padOffset","buffer","len","pos","take","dataView","oview","outLen","state","res","to","length","finished","destroyed","SHA256_IV","U32_MASK64","fromBig","le","split","lst","Ah","Al","l","rotlSH","s","rotlSL","rotlBH","rotlBL","SHA256_K","SHA256_W","SHA256","A","B","C","D","E","F","G","H","offset","W15","W2","s0","s1","sigma1","T1","T2","sha256","isArrayOf","isString","item","afn","input","astr","label","aArr","astrArr","anumArr","chain","args","id","wrap","encode","x","decode","alphabet","letters","lettersA","indexes","digits","letter","join","separator","from","padding","bits","chr","end","convertRadix","d","dlen","carry","done","digit","fromCarry","digitBase","div","rounded","gcd","radix2carry","powers","convertRadix2","max","mask","pow","radix","num","_256","bytes","radix2","revPadding","checksum","fn","sum","payload","oldChecksum","newChecksum","utils","isJapanese","wordlist","aentropy","ent","generateMnemonic","strength","entropyToMnemonic","calcChecksum","entropy","bitsLeft","getCoder","baseUtils","genMnemonic","bip39.generateMnemonic","computeHash","hasher","createBLAKE3","chunk","computeKeyedHash","hashData","getBitsFromData","getBitsFromString","comitToMediaKey","keysBase64","computeMac","keyMaterial","importSymmetricCryptoKey","keyData","exportSymmetricCryptoKey","rawKey","genSymmetricCryptoKey","genSymmetricKey","deriveSymmetricCryptoKey","hashBuffer","_0n","_1n","_2n","_7n","_256n","_0x71n","SHA3_PI","SHA3_ROTL","_SHA3_IOTA","round","R","y","t","j","IOTAS","SHA3_IOTA_H","SHA3_IOTA_L","rotlH","rotlL","keccakP","rounds","idx1","idx0","B0","B1","Th","Tl","curH","curL","PI","Keccak","suffix","enableXOF","bufferOut","gen","sha3_256","sha3_512","genShake","shake128","shake256","ensureBytes","randb","equalBytes","diff","splitCoder","getLength","bytesLen","bufs","buf","vecCoder","vecLen","r","cleanBytes","list","getMask","createNISTbasedIV","freeField","randFiled","freeFiledFixedLength","makeAuxFixedLength","aux","encryptMessage","message","encryptionKey","additionalData","encrypted","decryptMessage","decrypted","encryptSymmetrically","decryptSymmetrically","deriveSymmetricKeyFromContext","context","baseKey","context_key","blake3","buffer_context_key","deriveSymmetricCryptoKeyFromContext","keyBytes","argon2","password","salt","parallelism","iterations","memorySize","hashLength","argon2id","sampleSalt","deriveKeyFromTwoKeysAndContext","key1","key2","combined_key","getKeyFromPassword","getKeyFromPasswordAndSalt","getKeyFromPasswordHex","getKeyFromPasswordAndSaltHex","saltHex","verifyKeyFromPasswordHex","keyHex","deriveSymmetricKeyFromTwoKeys","deriveSymmetricCryptoKeyFromTwoKeys","ratchetMediaKey","olmKey","pqKey","index","userID","userToBase64","user","base64ToUser","emailBodyToBinary","body","binaryToEmailBody","encHybridKeyToBase64","encHybridKey","base64ToEncHybridKey","pwdProtectedKeyToBase64","pwdProtectedKey","base64ToPwdProtectedKey","paramsToBase64","params","base64ToParams","hybridEncyptedEmailToBase64","email","pwdProtectedEmailToBase64","emailToBinary","bitReversal","revrsd","genCrystals","newPoly","N","Q","ROOT_OF_UNITY","brvBits","mod","modulo","smod","getZettas","p","nttZetas","LEN1","LEN2","k","start","zeta","poly","bufLen","createXofShake","shake","seed","_seed","seedLen","calls","xofs","XOF128","NTT","bitsCoder","PARAMS","compress","polyCoder","polyAdd","polySub","BaseCaseMultiply","a0","a1","b0","b1","c0","c1","MultiplyNTTs","f","g","z","SampleNTT","xof","d1","d2","sampleCBD","PRF","nonce","eta","b32","bb","t0","genKPKE","K","XOF","HASH512","ETA1","ETA2","du","dv","poly1","polyV","polyU","publicCoder","secretCoder","cipherCoder","seedCoder","seedDst","seedHash","rho","sigma","sHat","tHat","e","aji","publicKey","rHat","tmp2","e1","aij","e2","v","cipherText","privateKey","sk","createKyber","KPKE","HASH256","KDF","KPKESecretCoder","cipherTextLen","publicKeyLen","secretKeyLen","msgLen","publicKeyHash","secretKey","eke","ek","kr","Khat","cipherText2","isValid","Kbar","shakePRF","dkLen","ml_kem512","ml_kem768","ml_kem1024","generateKyberKeys","encapsulateKyber","decapsulateKyber","importWrappingKey","deriveWrappingKey","eccSecret","kyberSecret","unwrapKey","encryptedKey","wrappingKey","wrapKey","encryptEmailContentSymmetrically","emailID","encryptEmailContentSymmetricallyWithKey","encryptEmailContentAndSubjectSymmetrically","subject","enc","subjectBuff","subjectEnc","decryptEmailAndSubjectSymmetrically","emailCiphertext","encSubject","binaryEmail","emailBody","decryptEmailSymmetrically","encryptKeysHybrid","emailEncryptionKey","recipientPublicKey","senderPrivateKey","kyberCiphertext","decryptKeysHybrid","senderPublicKey","recipientPrivateKey","passwordProtectKey","removePasswordProtection","getAux","replyToEmailID","sender","recipients","getAuxWithoutSubject","generateEmailID","uuidv4","encryptEmailHybrid","recipient","encryptEmailHybridForMultipleRecipients","encryptedEmails","decryptEmailHybrid","encryptedEmail","senderPublicKeys","recipientPrivateKeys","encryptEmailAndSubjectHybrid","encSubjectStr","encryptEmailAndSubjectHybridForMultipleRecipients","decryptEmailAndSubjectHybrid","createPwdProtectedEmail","decryptPwdProtectedEmail","createPwdProtectedEmailAndSubject","decryptPwdProtectedEmailAndSubject","generateEmailKeys","kyberKeys","privateKeys","instanceOfAny","object","constructors","idbProxyableTypes","cursorAdvanceMethods","getIdbProxyableTypes","getCursorAdvanceMethods","transactionDoneMap","transformCache","reverseTransformCache","promisifyRequest","request","promise","resolve","reject","unlisten","success","cacheDonePromiseForTransaction","tx","complete","idbProxyTraps","target","prop","receiver","replaceTraps","callback","wrapFunction","func","unwrap","transformCachableValue","newValue","openDB","name","version","blocked","upgrade","blocking","terminated","openPromise","event","db","deleteDB","readMethods","writeMethods","cachedMethods","getMethod","targetFuncName","useIndex","isWrite","method","storeName","oldTraps","advanceMethodProps","methodMap","advanceResults","ittrProxiedCursorToOriginalProxy","cursorIteratorTraps","cachedFunc","iterate","cursor","proxiedCursor","isIteratorProp","getDatabaseName","openDatabase","dbName","closeDatabase","esDB","deleteDatabase","deriveIndexKey","encryptAndStoreEmail","newEmailToStore","indexKey","encryptAndStoreManyEmail","newEmailsToStore","tr","encEmail","decryptEmail","getAndDecryptEmail","getAndDecryptAllEmails","deleteEmail","getEmailCount","deleteOldestEmails","emailsToDelete","deletedCount","enforceMaxEmailNumber","currentCount","fetchEmails","direction","getAllEmailsSortedNewestFirst","getAllEmailsSortedOldestFirst","getEmailBatch","batchSize","startCursor","range","count","nextCursor","sizeOfEmail","createEmptyCache","createCacheFromDB","esCache","emails","addEmailsToCache","cacheFull","newCursor","getEmailFromCache","deleteEmailFromCache","size","addEmailToCache","emailSize","w","aa","I","M","ba","ca","ea","fa","ha","ia","ja","ka","m","la","ma","na","oa","ra","sa","ta","ua","va","wa","xa","Aa","Ba","S","Ca","Da","Ea","T","Fa","Ga","Ha","Ia","Ja","Ka","V","La","Ma","W","worker","Na","Qa","Ra","Sa","Ta","Ua","X","q","Va","Wa","Xa","Ya","Za","$a","ab","cb","Oa","da","pa","qa","ya","za","J","O","L","Pa","eb","fb","gb","hb","ib","jb","kb","lb","mb","nb","ob","pb","qb","rb","sb","tb","ub","vb","wb","Y","xb","yb","zb","Ab","Bb","Cb","Db","Eb","Z","Fb","Index","SUBJECT_OPTIONS","BODY_OPTIONS","FROM_OPTIONS","TO_OPTIONS","createSearchIndex","addEmailToSearchIndex","searchIndex","emailId","senderText","recipientsText","removeEmailFromSearchIndex","buildSearchIndexFromCache","searchEmails","query","options","fields","limit","boost","results","searchPromises","field","fieldResults","fieldBoost","currentScore","emailResults","score","EmailJSResponseStatus","_status","_text","createWebStorage","store","buildOptions","init","origin","sendPost","url","headers","response","responseStatus","validateParams","serviceID","templateID","validateTemplateParams","templateParams","isHeadless","navigator","headlessError","validateBlockListParams","watchVariable","isBlockListDisabled","getValue","isBlockedValueInParams","blockedEmailError","validateLimitRateParams","throttle","getLeftTime","storage","lastTime","isLimitRateHit","defaultID","limitRateError","send","blockHeadless","storageProvider","blockList","limitRate","validateForm","form","findHTMLForm","sendForm","currentForm","formData","emailjs","EmailServiceAPI","serviceId","templateId","content","param","protectedEmail","getEmailServiceAPI","KeystoreType","get","set","removeItem","exists","clear","sessionStorageService","encryptKeystoreContent","tag","decryptKeystoreContent","encryptedKeys","getUserID","getBaseKey","baseKeyBase64","deriveIdentityKeystoreKey","deriveRecoveryKey","recoveryCodes","recoveryCodesBuffer","deriveEncryptionKeystoreKey","generateRecoveryCodes","generateEncryptionKeys","keyPair","keyPairKyber","createEncryptionAndRecoveryKeystores","encryptionKeystore","recoveryKey","encKeys","recoveryKeystore","openEncryptionKeystore","encryptedKeystore","openRecoveryKeystore","generateIdentityKeys","createIdentityKeystore","type","openIdentityKeystore","bind","thisArg","toString","getPrototypeOf","iterator","toStringTag","kindOf","thing","cache","kindOfTest","typeOfTest","isArray","isUndefined","isBuffer","val","isFunction","isArrayBuffer","isArrayBufferView","isNumber","isObject","isBoolean","isPlainObject","prototype","isEmptyObject","isDate","isFile","isBlob","isFileList","isStream","isFormData","kind","isURLSearchParams","isReadableStream","isRequest","isResponse","isHeaders","trim","forEach","allOwnKeys","findKey","_key","_global","isContextDefined","merge","caseless","skipUndefined","assignValue","targetKey","extend","stripBOM","inherits","constructor","superConstructor","props","descriptors","toFlatObject","sourceObj","destObj","filter","propFilter","merged","endsWith","searchString","position","lastIndex","toArray","isTypedArray","TypedArray","forEachEntry","_iterator","pair","matchAll","regExp","matches","isHTMLForm","toCamelCase","p1","p2","hasOwnProperty","isRegExp","reduceDescriptors","reducer","reducedDescriptors","descriptor","ret","freezeMethods","toObjectSet","arrayOrString","delimiter","define","noop","toFiniteNumber","defaultValue","isSpecCompliantForm","toJSONObject","stack","visit","source","reducedValue","isAsyncFn","isThenable","_setImmediate","setImmediateSupported","postMessageSupported","token","callbacks","asap","isIterable","utils$1","AxiosError","code","config","customProps","axiosError","errCode","httpAdapter","isVisitable","removeBrackets","renderKey","path","dots","isFlatArray","predicates","toFormData","option","metaTokens","visitor","defaultVisitor","useBlob","convertValue","el","exposedHelpers","build","charMap","match","AxiosURLSearchParams","encoder","_encode","buildURL","serializeFn","serializedParams","hashmarkIndex","InterceptorManager","fulfilled","rejected","transitionalDefaults","URLSearchParams$1","FormData$1","Blob$1","platform$1","URLSearchParams","FormData","Blob","hasBrowserEnv","_navigator","hasStandardBrowserEnv","hasStandardBrowserWebWorkerEnv","platform","toURLEncodedForm","helpers","parsePropPath","arrayToObject","formDataToJSON","buildPath","isNumericKey","isLast","stringifySafely","rawValue","parser","defaults","contentType","hasJSONContentType","isObjectPayload","_FormData","transitional","forcedJSONParsing","JSONRequested","strictJSONParsing","status","ignoreDuplicateOf","parseHeaders","rawHeaders","parsed","line","$internals","normalizeHeader","header","normalizeValue","parseTokens","tokens","tokensRE","isValidHeaderName","matchHeaderValue","isHeaderNameFilter","formatHeader","buildAccessors","accessorName","methodName","arg1","arg2","arg3","AxiosHeaders$1","valueOrRewrite","rewrite","self","setHeader","_value","_header","_rewrite","lHeader","setHeaders","dest","entry","matcher","deleted","deleteHeader","format","normalized","targets","asStrings","first","computed","accessors","defineAccessor","AxiosHeaders","mapped","headerValue","transformData","fns","isCancel","CanceledError","settle","validateStatus","parseProtocol","speedometer","samplesCount","timestamps","head","tail","firstSampleTS","chunkLength","now","startedAt","bytesCount","passed","freq","timestamp","threshold","lastArgs","timer","invoke","progressEventReducer","listener","isDownloadStream","bytesNotified","_speedometer","loaded","total","progressBytes","rate","inRange","progressEventDecorator","throttled","lengthComputable","asyncDecorator","isURLSameOrigin","isMSIE","cookies","expires","domain","secure","sameSite","cookie","isAbsoluteURL","combineURLs","baseURL","relativeURL","buildFullPath","requestedURL","allowAbsoluteUrls","isRelativeUrl","headersToObject","mergeConfig","config1","config2","getMergedValue","mergeDeepProperties","valueFromConfig2","defaultToConfig2","mergeDirectKeys","mergeMap","configValue","resolveConfig","newConfig","withXSRFToken","xsrfHeaderName","xsrfCookieName","auth","formHeaders","allowedHeaders","xsrfValue","isXHRAdapterSupported","xhrAdapter","_config","requestData","requestHeaders","responseType","onUploadProgress","onDownloadProgress","onCanceled","uploadThrottled","downloadThrottled","flushUpload","flushDownload","onloadend","responseHeaders","err","timeoutErrorMessage","cancel","protocol","composeSignals","signals","timeout","controller","aborted","onabort","reason","unsubscribe","signal","streamChunk","chunkSize","readBytes","iterable","readStream","stream","reader","trackStream","onProgress","onFinish","_onFinish","loadedBytes","DEFAULT_CHUNK_SIZE","globalFetchAPI","Request","Response","ReadableStream","TextEncoder","test","factory","env","envFetch","isFetchSupported","isRequestSupported","isResponseSupported","isReadableStreamSupported","encodeText","supportsRequestStream","duplexAccessed","hasContentType","supportsResponseStream","resolvers","getBodyLength","resolveBodyLength","cancelToken","withCredentials","fetchOptions","_fetch","composedSignal","requestContentLength","_request","contentTypeHeader","flush","isCredentialsSupported","resolvedOptions","isStreamResponse","responseContentLength","responseData","seedCache","getFetch","fetch","seeds","map","knownAdapters","fetchAdapter.getFetch","renderReason","isResolvedHandle","adapter","getAdapter","adapters","nameOrAdapter","rejectedReasons","reasons","throwIfCancellationRequested","dispatchRequest","VERSION","validators","deprecatedWarnings","validator","formatMessage","opt","desc","correctSpelling","assertOptions","schema","allowUnknown","Axios$1","instanceConfig","configOrUrl","dummy","paramsSerializer","contextHeaders","requestInterceptorChain","synchronousRequestInterceptors","interceptor","responseInterceptorChain","onFulfilled","onRejected","fullPath","Axios","generateHTTPMethod","isForm","CancelToken$1","CancelToken","executor","resolvePromise","onfulfilled","_resolve","abort","spread","isAxiosError","HttpStatusCode","createInstance","defaultConfig","axios","promises","all","Cancel","formToJSON","KeyServiceAPI","baseUrl","errorMessage","keystoreType","publicKeysBase64","keyBase64","publicKeys","getKeyServiceAPI","localStorageService"],"mappings":"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AA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AA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","x_google_ignoreList":[6,7,8,9,10,11,12,13,20,21,30,31,43,46,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123]}
|