@tonconnect/sdk 0.0.35 → 0.0.37
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 +100 -3
- package/dist/tonconnect-sdk.min.js +1 -1
- package/dist/tonconnect-sdk.min.js.map +1 -1
- package/lib/errors/protocol/events/connect/manifest-content-error.error.d.ts +8 -0
- package/lib/errors/protocol/events/connect/manifest-content-error.error.js +15 -0
- package/lib/errors/protocol/events/connect/manifest-not-found.error.d.ts +8 -0
- package/lib/errors/protocol/events/connect/manifest-not-found.error.js +15 -0
- package/lib/errors/ton-connect.error.d.ts +2 -1
- package/lib/errors/ton-connect.error.js +6 -2
- package/lib/models/methods/send-transaction/send-transaction-request.d.ts +2 -2
- package/lib/models/ton-connect-options.d.ts +3 -4
- package/lib/models/wallet/account.d.ts +5 -0
- package/lib/parsers/connect-errors-parser.js +5 -1
- package/lib/parsers/send-transaction-parser.d.ts +3 -1
- package/lib/ton-connect.js +28 -9
- package/lib/utils/web-api.d.ts +1 -2
- package/lib/utils/web-api.js +7 -57
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tonconnect-sdk.min.js","mappings":"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","sources":["webpack://TonConnectSDK/../../node_modules/deepmerge/dist/cjs.js","webpack://TonConnectSDK/./src/errors/dapp/dapp-metadata.error.ts","webpack://TonConnectSDK/./src/errors/index.ts","webpack://TonConnectSDK/./src/errors/protocol/events/connect/index.ts","webpack://TonConnectSDK/./src/errors/protocol/events/connect/user-rejects.error.ts","webpack://TonConnectSDK/./src/errors/protocol/events/index.ts","webpack://TonConnectSDK/./src/errors/protocol/index.ts","webpack://TonConnectSDK/./src/errors/protocol/responses/bad-request.error.ts","webpack://TonConnectSDK/./src/errors/protocol/responses/index.ts","webpack://TonConnectSDK/./src/errors/protocol/responses/unknown-app.error.ts","webpack://TonConnectSDK/./src/errors/storage/index.ts","webpack://TonConnectSDK/./src/errors/storage/localstorage-not-found.error.ts","webpack://TonConnectSDK/./src/errors/ton-connect.error.ts","webpack://TonConnectSDK/./src/errors/unknown.error.ts","webpack://TonConnectSDK/./src/errors/wallet/index.ts","webpack://TonConnectSDK/./src/errors/wallet/wallet-already-connected.error.ts","webpack://TonConnectSDK/./src/errors/wallet/wallet-not-connected.error.ts","webpack://TonConnectSDK/./src/errors/wallet/wallet-not-injected.error.ts","webpack://TonConnectSDK/./src/errors/wallets-manager/fetch-wallets.error.ts","webpack://TonConnectSDK/./src/errors/wallets-manager/index.ts","webpack://TonConnectSDK/./src/index.ts","webpack://TonConnectSDK/./src/models/index.ts","webpack://TonConnectSDK/./src/models/methods/index.ts","webpack://TonConnectSDK/./src/models/wallet/index.ts","webpack://TonConnectSDK/./src/models/wallet/wallet-connection-source.ts","webpack://TonConnectSDK/./src/models/wallet/wallet-info.ts","webpack://TonConnectSDK/./src/parsers/connect-errors-parser.ts","webpack://TonConnectSDK/./src/parsers/rpc-parser.ts","webpack://TonConnectSDK/./src/parsers/send-transaction-parser.ts","webpack://TonConnectSDK/./src/provider/bridge/bridge-gateway.ts","webpack://TonConnectSDK/./src/provider/bridge/bridge-provider.ts","webpack://TonConnectSDK/./src/provider/injected/injected-provider.ts","webpack://TonConnectSDK/./src/storage/bridge-connection-storage.ts","webpack://TonConnectSDK/./src/storage/default-storage.ts","webpack://TonConnectSDK/./src/storage/http-bridge-gateway-storage.ts","webpack://TonConnectSDK/./src/ton-connect.ts","webpack://TonConnectSDK/./src/utils/options.ts","webpack://TonConnectSDK/./src/utils/url.ts","webpack://TonConnectSDK/./src/utils/web-api.ts","webpack://TonConnectSDK/./src/wallets-list-manager.ts","webpack://TonConnectSDK/../../node_modules/tweetnacl-util/nacl-util.js","webpack://TonConnectSDK/../../node_modules/tweetnacl/nacl-fast.js","webpack://TonConnectSDK/../protocol/lib/crypto/index.js","webpack://TonConnectSDK/../protocol/lib/crypto/session-crypto.js","webpack://TonConnectSDK/../protocol/lib/index.js","webpack://TonConnectSDK/../protocol/lib/models/CHAIN.js","webpack://TonConnectSDK/../protocol/lib/models/app-message/connect-request/index.js","webpack://TonConnectSDK/../protocol/lib/models/app-message/index.js","webpack://TonConnectSDK/../protocol/lib/models/app-message/request/index.js","webpack://TonConnectSDK/../protocol/lib/models/index.js","webpack://TonConnectSDK/../protocol/lib/models/wallet-message/index.js","webpack://TonConnectSDK/../protocol/lib/models/wallet-message/wallet-event/connect-event.js","webpack://TonConnectSDK/../protocol/lib/models/wallet-message/wallet-event/index.js","webpack://TonConnectSDK/../protocol/lib/models/wallet-message/wallet-response/index.js","webpack://TonConnectSDK/../protocol/lib/models/wallet-message/wallet-response/send-transaction-rpc-response.js","webpack://TonConnectSDK/../protocol/lib/utils/base64.js","webpack://TonConnectSDK/../protocol/lib/utils/binary.js","webpack://TonConnectSDK/../protocol/lib/utils/index.js","webpack://TonConnectSDK/../protocol/lib/utils/web-api.js","webpack://TonConnectSDK/webpack/bootstrap","webpack://TonConnectSDK/webpack/startup"],"sourcesContent":["'use strict';\n\nvar isMergeableObject = function isMergeableObject(value) {\n\treturn isNonNullObject(value)\n\t\t&& !isSpecial(value)\n};\n\nfunction isNonNullObject(value) {\n\treturn !!value && typeof value === 'object'\n}\n\nfunction isSpecial(value) {\n\tvar stringValue = Object.prototype.toString.call(value);\n\n\treturn stringValue === '[object RegExp]'\n\t\t|| stringValue === '[object Date]'\n\t\t|| isReactElement(value)\n}\n\n// see https://github.com/facebook/react/blob/b5ac963fb791d1298e7f396236383bc955f916c1/src/isomorphic/classic/element/ReactElement.js#L21-L25\nvar canUseSymbol = typeof Symbol === 'function' && Symbol.for;\nvar REACT_ELEMENT_TYPE = canUseSymbol ? Symbol.for('react.element') : 0xeac7;\n\nfunction isReactElement(value) {\n\treturn value.$$typeof === REACT_ELEMENT_TYPE\n}\n\nfunction emptyTarget(val) {\n\treturn Array.isArray(val) ? [] : {}\n}\n\nfunction cloneUnlessOtherwiseSpecified(value, options) {\n\treturn (options.clone !== false && options.isMergeableObject(value))\n\t\t? deepmerge(emptyTarget(value), value, options)\n\t\t: value\n}\n\nfunction defaultArrayMerge(target, source, options) {\n\treturn target.concat(source).map(function(element) {\n\t\treturn cloneUnlessOtherwiseSpecified(element, options)\n\t})\n}\n\nfunction getMergeFunction(key, options) {\n\tif (!options.customMerge) {\n\t\treturn deepmerge\n\t}\n\tvar customMerge = options.customMerge(key);\n\treturn typeof customMerge === 'function' ? customMerge : deepmerge\n}\n\nfunction getEnumerableOwnPropertySymbols(target) {\n\treturn Object.getOwnPropertySymbols\n\t\t? Object.getOwnPropertySymbols(target).filter(function(symbol) {\n\t\t\treturn target.propertyIsEnumerable(symbol)\n\t\t})\n\t\t: []\n}\n\nfunction getKeys(target) {\n\treturn Object.keys(target).concat(getEnumerableOwnPropertySymbols(target))\n}\n\nfunction propertyIsOnObject(object, property) {\n\ttry {\n\t\treturn property in object\n\t} catch(_) {\n\t\treturn false\n\t}\n}\n\n// Protects from prototype poisoning and unexpected merging up the prototype chain.\nfunction propertyIsUnsafe(target, key) {\n\treturn propertyIsOnObject(target, key) // Properties are safe to merge if they don't exist in the target yet,\n\t\t&& !(Object.hasOwnProperty.call(target, key) // unsafe if they exist up the prototype chain,\n\t\t\t&& Object.propertyIsEnumerable.call(target, key)) // and also unsafe if they're nonenumerable.\n}\n\nfunction mergeObject(target, source, options) {\n\tvar destination = {};\n\tif (options.isMergeableObject(target)) {\n\t\tgetKeys(target).forEach(function(key) {\n\t\t\tdestination[key] = cloneUnlessOtherwiseSpecified(target[key], options);\n\t\t});\n\t}\n\tgetKeys(source).forEach(function(key) {\n\t\tif (propertyIsUnsafe(target, key)) {\n\t\t\treturn\n\t\t}\n\n\t\tif (propertyIsOnObject(target, key) && options.isMergeableObject(source[key])) {\n\t\t\tdestination[key] = getMergeFunction(key, options)(target[key], source[key], options);\n\t\t} else {\n\t\t\tdestination[key] = cloneUnlessOtherwiseSpecified(source[key], options);\n\t\t}\n\t});\n\treturn destination\n}\n\nfunction deepmerge(target, source, options) {\n\toptions = options || {};\n\toptions.arrayMerge = options.arrayMerge || defaultArrayMerge;\n\toptions.isMergeableObject = options.isMergeableObject || isMergeableObject;\n\t// cloneUnlessOtherwiseSpecified is added to `options` so that custom arrayMerge()\n\t// implementations can use it. The caller may not replace it.\n\toptions.cloneUnlessOtherwiseSpecified = cloneUnlessOtherwiseSpecified;\n\n\tvar sourceIsArray = Array.isArray(source);\n\tvar targetIsArray = Array.isArray(target);\n\tvar sourceAndTargetTypesMatch = sourceIsArray === targetIsArray;\n\n\tif (!sourceAndTargetTypesMatch) {\n\t\treturn cloneUnlessOtherwiseSpecified(source, options)\n\t} else if (sourceIsArray) {\n\t\treturn options.arrayMerge(target, source, options)\n\t} else {\n\t\treturn mergeObject(target, source, options)\n\t}\n}\n\ndeepmerge.all = function deepmergeAll(array, options) {\n\tif (!Array.isArray(array)) {\n\t\tthrow new Error('first argument should be an array')\n\t}\n\n\treturn array.reduce(function(prev, next) {\n\t\treturn deepmerge(prev, next, options)\n\t}, {})\n};\n\nvar deepmerge_1 = deepmerge;\n\nmodule.exports = deepmerge_1;\n","import { TonConnectError } from 'src/errors/ton-connect.error';\n\n/**\n * Thrown when passed DappMetadata is in incorrect format.\n */\nexport class DappMetadataError extends TonConnectError {\n constructor(...args: ConstructorParameters<typeof TonConnectError>) {\n super(...args);\n\n Object.setPrototypeOf(this, DappMetadataError.prototype);\n }\n}\n","export * from './protocol';\nexport * from './wallet';\nexport * from './storage';\nexport * from './wallets-manager';\nexport { TonConnectError } from './ton-connect.error';\nexport { UnknownError } from './unknown.error';\n","export { UserRejectsError } from 'src/errors/protocol/events/connect/user-rejects.error';\n","import { TonConnectError } from 'src/errors/ton-connect.error';\n\n/**\n * Thrown when user rejects the action in the wallet.\n */\nexport class UserRejectsError extends TonConnectError {\n constructor(...args: ConstructorParameters<typeof TonConnectError>) {\n super(...args);\n\n Object.setPrototypeOf(this, UserRejectsError.prototype);\n }\n}\n","export * from './connect';\n","export * from './events';\nexport * from './responses';\n","import { TonConnectError } from 'src/errors/ton-connect.error';\n\n/**\n * Thrown when request to the wallet contains errors.\n */\nexport class BadRequestError extends TonConnectError {\n constructor(...args: ConstructorParameters<typeof TonConnectError>) {\n super(...args);\n\n Object.setPrototypeOf(this, BadRequestError.prototype);\n }\n}\n","export { BadRequestError } from './bad-request.error';\nexport { UnknownAppError } from './unknown-app.error';\n","import { TonConnectError } from 'src/errors/ton-connect.error';\n\n/**\n * Thrown when app tries to send rpc request to the injected wallet while not connected.\n */\nexport class UnknownAppError extends TonConnectError {\n constructor(...args: ConstructorParameters<typeof TonConnectError>) {\n super(...args);\n\n Object.setPrototypeOf(this, UnknownAppError.prototype);\n }\n}\n","export { LocalstorageNotFoundError } from './localstorage-not-found.error';\n","import { TonConnectError } from 'src/errors/ton-connect.error';\n\n/**\n * Thrown when `Storage` was not specified in the `DappMetadata` and default `localStorage` was not detected in the environment.\n */\nexport class LocalstorageNotFoundError extends TonConnectError {\n constructor(...args: ConstructorParameters<typeof TonConnectError>) {\n super(...args);\n\n Object.setPrototypeOf(this, LocalstorageNotFoundError.prototype);\n }\n}\n","/**\n * Base class for TonConnect errors. You can check if the error was triggered by the @tonconnect/sdk using `err instanceof TonConnectError`.\n */\nexport class TonConnectError extends Error {\n constructor(...args: ConstructorParameters<typeof Error>) {\n super(...args);\n\n Object.setPrototypeOf(this, TonConnectError.prototype);\n }\n}\n","import { TonConnectError } from 'src/errors/ton-connect.error';\n\n/**\n * Unhanded unknown error.\n */\nexport class UnknownError extends TonConnectError {\n constructor(...args: ConstructorParameters<typeof TonConnectError>) {\n super(...args);\n\n Object.setPrototypeOf(this, UnknownError.prototype);\n }\n}\n","export { WalletAlreadyConnectedError } from './wallet-already-connected.error';\nexport { WalletNotConnectedError } from './wallet-not-connected.error';\nexport { WalletNotInjectedError } from './wallet-not-injected.error';\n","import { TonConnectError } from 'src/errors/ton-connect.error';\n\n/**\n * Thrown when wallet connection called but wallet already connected. To avoid the error, disconnect the wallet before doing a new connection.\n */\nexport class WalletAlreadyConnectedError extends TonConnectError {\n constructor(...args: ConstructorParameters<typeof TonConnectError>) {\n super(...args);\n\n Object.setPrototypeOf(this, WalletAlreadyConnectedError.prototype);\n }\n}\n","import { TonConnectError } from 'src/errors/ton-connect.error';\n\n/**\n * Thrown when send transaction or other protocol methods called while wallet is not connected.\n */\nexport class WalletNotConnectedError extends TonConnectError {\n constructor(...args: ConstructorParameters<typeof TonConnectError>) {\n super(...args);\n\n Object.setPrototypeOf(this, WalletNotConnectedError.prototype);\n }\n}\n","import { TonConnectError } from 'src/errors/ton-connect.error';\n\n/**\n * Thrown when there is an attempt to connect to the injected wallet while it is not exists in the webpage.\n */\nexport class WalletNotInjectedError extends TonConnectError {\n constructor(...args: ConstructorParameters<typeof TonConnectError>) {\n super(...args);\n\n Object.setPrototypeOf(this, WalletNotInjectedError.prototype);\n }\n}\n","import { TonConnectError } from 'src/errors/ton-connect.error';\n\n/**\n * Thrown when an error occurred while fetching the wallets list.\n */\nexport class FetchWalletsError extends TonConnectError {\n constructor(...args: ConstructorParameters<typeof TonConnectError>) {\n super(...args);\n\n Object.setPrototypeOf(this, FetchWalletsError.prototype);\n }\n}\n","export { FetchWalletsError } from './fetch-wallets.error';\n","export * from './ton-connect';\nexport * from './models';\nexport * from './errors';\nexport { IStorage } from './storage/models/storage.interface';\nexport { TonConnect as default } from './ton-connect';\nexport { ITonConnect } from './ton-connect.interface';\nexport { CHAIN, DeviceInfo } from '@tonconnect/protocol';\n","export * from './wallet';\nexport * from './methods';\nexport { DappMetadata } from './dapp/dapp-metadata';\nexport { TonConnectOptions } from './ton-connect-options';\n","export * from './connect';\nexport * from './send-transaction';\n","export type { Account } from './account';\nexport type { Wallet } from './wallet';\nexport type {\n WalletConnectionSource,\n WalletConnectionSourceHTTP,\n WalletConnectionSourceJS\n} from './wallet-connection-source';\nexport {\n WalletInfo,\n WalletInfoInjected,\n WalletInfoRemote,\n isWalletInfoInjected\n} from './wallet-info';\n","export type WalletConnectionSource = WalletConnectionSourceHTTP | WalletConnectionSourceJS;\n\nexport interface WalletConnectionSourceHTTP {\n /**\n * Base part of the wallet universal url. The link should support [Ton Connect parameters]{@link https://github.com/ton-connect/docs/blob/main/bridge.md#universal-link}.\n */\n universalLink: string;\n\n /**\n * Url of the wallet's implementation of the [HTTP bridge]{@link https://github.com/ton-connect/docs/blob/main/bridge.md#http-bridge}.\n */\n bridgeUrl: string;\n}\n\nexport interface WalletConnectionSourceJS {\n /**\n * If the wallet handles JS Bridge connection, specifies the binding for the bridge object accessible through window. Example: the key \"tonkeeper\" means the bridge can be accessed as window.tonkeeper.\n */\n jsBridgeKey: string;\n}\n\nexport function isWalletConnectionSourceJS(\n value: WalletConnectionSource\n): value is WalletConnectionSourceJS {\n return 'jsBridgeKey' in value;\n}\n","export interface WalletInfoBase {\n /**\n * Name of the wallet.\n */\n name: string;\n\n /**\n * Url to the icon of the wallet. Resolution 288×288px. On non-transparent background, without rounded corners. PNG format.\n */\n imageUrl: string;\n\n /**\n * Will be used in the protocol later.\n */\n tondns?: string;\n\n /**\n * Info or landing page of your wallet. May be useful for TON newcomers.\n */\n aboutUrl: string;\n}\n\nexport interface WalletInfoRemote extends WalletInfoBase {\n /**\n * Base part of the wallet universal url. The link should support [Ton Connect parameters]{@link https://github.com/ton-connect/docs/blob/main/bridge.md#universal-link}.\n */\n universalLink: string;\n\n /**\n * Url of the wallet's implementation of the [HTTP bridge]{@link https://github.com/ton-connect/docs/blob/main/bridge.md#http-bridge}.\n */\n bridgeUrl: string;\n}\n\nexport interface WalletInfoInjected extends WalletInfoBase {\n /**\n * If the wallet handles JS Bridge connection, specifies the binding for the bridge object accessible through window. Example: the key \"tonkeeper\" means the bridge can be accessed as window.tonkeeper.\n */\n jsBridgeKey: string;\n\n /**\n * Indicates if the wallet currently is injected to the webpage.\n */\n injected: boolean;\n\n /**\n * Indicates if the dapp is opened inside this wallet's browser.\n */\n embedded: boolean;\n}\n\nexport type WalletInfo =\n | WalletInfoRemote\n | WalletInfoInjected\n | (WalletInfoRemote & WalletInfoInjected);\n\nexport interface WalletInfoDTOBase {\n name: string;\n image: string;\n tondns?: string;\n about_url: string;\n}\n\nexport interface WalletInfoRemoteDTO extends WalletInfoDTOBase {\n universal_url: string;\n bridge_url: string;\n}\n\nexport interface WalletInfoInjectedDTO extends WalletInfoDTOBase {\n js_bridge_key: string;\n}\n\nexport type WalletInfoDTO =\n | WalletInfoRemoteDTO\n | WalletInfoInjectedDTO\n | (WalletInfoRemoteDTO & WalletInfoInjectedDTO);\n\nexport function isWalletInfoInjected(value: WalletInfo): value is WalletInfoInjected {\n return 'jsBridgeKey' in value;\n}\n","import { BadRequestError, UnknownAppError, UserRejectsError } from 'src/errors';\nimport { TonConnectError } from 'src/errors/ton-connect.error';\nimport { UnknownError } from 'src/errors/unknown.error';\nimport { CONNECT_EVENT_ERROR_CODES, ConnectEventError } from '@tonconnect/protocol';\n\nconst connectEventErrorsCodes: Partial<Record<CONNECT_EVENT_ERROR_CODES, typeof TonConnectError>> =\n {\n [CONNECT_EVENT_ERROR_CODES.UNKNOWN_ERROR]: UnknownError,\n [CONNECT_EVENT_ERROR_CODES.USER_REJECTS_ERROR]: UserRejectsError,\n [CONNECT_EVENT_ERROR_CODES.BAD_REQUEST_ERROR]: BadRequestError,\n [CONNECT_EVENT_ERROR_CODES.UNKNOWN_APP_ERROR]: UnknownAppError\n };\n\nclass ConnectErrorsParser {\n parseError(error: ConnectEventError['payload']): TonConnectError {\n let ErrorConstructor: typeof TonConnectError = UnknownError;\n\n if (error.code in connectEventErrorsCodes) {\n ErrorConstructor = connectEventErrorsCodes[error.code] || UnknownError;\n }\n\n return new ErrorConstructor(error.message);\n }\n}\n\nexport const connectErrorsParser = new ConnectErrorsParser();\n","import {\n AppRequest,\n RpcMethod,\n WalletResponse,\n WalletResponseError,\n WalletResponseSuccess\n} from '@tonconnect/protocol';\nimport { WithoutId } from 'src/utils/types';\n\nexport abstract class RpcParser<T extends RpcMethod> {\n abstract convertToRpcRequest(...args: unknown[]): WithoutId<AppRequest<T>>;\n\n abstract convertFromRpcResponse(rpcResponse: WithoutId<WalletResponseSuccess<T>>): unknown;\n\n abstract parseAndThrowError(response: WithoutId<WalletResponseError<T>>): never;\n\n public isError(\n response: WithoutId<WalletResponse<T>>\n ): response is WithoutId<WalletResponseError<T>> {\n return 'error' in response;\n }\n}\n","import {\n CONNECT_EVENT_ERROR_CODES,\n SEND_TRANSACTION_ERROR_CODES,\n SendTransactionRpcRequest,\n SendTransactionRpcResponseError,\n SendTransactionRpcResponseSuccess\n} from '@tonconnect/protocol';\nimport { BadRequestError, TonConnectError, UnknownAppError, UserRejectsError } from 'src/errors';\nimport { UnknownError } from 'src/errors/unknown.error';\nimport { SendTransactionRequest, SendTransactionResponse } from 'src/models/methods';\nimport { RpcParser } from 'src/parsers/rpc-parser';\nimport { WithoutId } from 'src/utils/types';\n\nconst sendTransactionErrors: Partial<Record<CONNECT_EVENT_ERROR_CODES, typeof TonConnectError>> = {\n [SEND_TRANSACTION_ERROR_CODES.UNKNOWN_ERROR]: UnknownError,\n [SEND_TRANSACTION_ERROR_CODES.USER_REJECTS_ERROR]: UserRejectsError,\n [SEND_TRANSACTION_ERROR_CODES.BAD_REQUEST_ERROR]: BadRequestError,\n [SEND_TRANSACTION_ERROR_CODES.UNKNOWN_APP_ERROR]: UnknownAppError\n};\n\nclass SendTransactionParser extends RpcParser<'sendTransaction'> {\n convertToRpcRequest(request: SendTransactionRequest): WithoutId<SendTransactionRpcRequest> {\n return {\n method: 'sendTransaction',\n params: [JSON.stringify(request)]\n };\n }\n\n parseAndThrowError(response: WithoutId<SendTransactionRpcResponseError>): never {\n let ErrorConstructor: typeof TonConnectError = UnknownError;\n\n if (response.error.code in sendTransactionErrors) {\n ErrorConstructor = sendTransactionErrors[response.error.code] || UnknownError;\n }\n\n throw new ErrorConstructor(response.error.message);\n }\n\n convertFromRpcResponse(\n rpcResponse: WithoutId<SendTransactionRpcResponseSuccess>\n ): SendTransactionResponse {\n return {\n boc: rpcResponse.result\n };\n }\n}\n\nexport const sendTransactionParser = new SendTransactionParser();\n","import { Base64, isNode } from '@tonconnect/protocol';\nimport { TonConnectError } from 'src/errors';\nimport { BridgeIncomingMessage } from 'src/provider/bridge/models/bridge-incomming-message';\nimport { HttpBridgeGatewayStorage } from 'src/storage/http-bridge-gateway-storage';\nimport { IStorage } from 'src/storage/models/storage.interface';\nimport { addPathToUrl } from 'src/utils/url';\n\nif (isNode()) {\n try {\n eval(\"global.EventSource = require('eventsource')\");\n eval(\"global.fetch = require('node-fetch')\");\n } catch (err) {\n console.error(err);\n }\n}\n\nexport class BridgeGateway {\n private readonly ssePath = 'events';\n\n private readonly postPath = 'message';\n\n private readonly defaultTtl = 300;\n\n private eventSource: EventSource | undefined;\n\n private isClosed = false;\n\n private readonly bridgeGatewayStorage: HttpBridgeGatewayStorage;\n\n constructor(\n storage: IStorage,\n private readonly bridgeUrl: string,\n public readonly sessionId: string,\n private readonly listener: (msg: BridgeIncomingMessage) => void,\n private readonly errorsListener: (err: Event) => void\n ) {\n this.bridgeGatewayStorage = new HttpBridgeGatewayStorage(storage);\n }\n\n public async registerSession(): Promise<void> {\n const url = new URL(addPathToUrl(this.bridgeUrl, this.ssePath));\n url.searchParams.append('client_id', this.sessionId);\n\n const lastEventId = await this.bridgeGatewayStorage.getLastEventId();\n if (lastEventId) {\n url.searchParams.append('last_event_id', lastEventId);\n }\n\n this.eventSource = new EventSource(url.toString());\n\n return new Promise((resolve, reject) => {\n this.eventSource!.onerror = reject;\n this.eventSource!.onopen! = (): void => {\n this.eventSource!.onerror = this.errorsHandler.bind(this);\n this.eventSource!.onmessage = this.messagesHandler.bind(this);\n resolve();\n };\n });\n }\n\n public async send(message: Uint8Array, receiver: string, ttl?: number): Promise<void> {\n const url = new URL(addPathToUrl(this.bridgeUrl, this.postPath));\n url.searchParams.append('client_id', this.sessionId);\n url.searchParams.append('to', receiver);\n url.searchParams.append('ttl', (ttl || this.defaultTtl).toString());\n await fetch(url, {\n method: 'post',\n body: Base64.encode(message)\n });\n }\n\n public close(): void {\n this.isClosed = true;\n this.eventSource?.close();\n }\n\n private errorsHandler(e: Event): void {\n if (!this.isClosed) {\n this.errorsListener(e);\n }\n }\n\n private async messagesHandler(e: MessageEvent<string>): Promise<void> {\n await this.bridgeGatewayStorage.storeLastEventId(e.lastEventId);\n\n if (!this.isClosed) {\n let bridgeIncomingMessage: BridgeIncomingMessage;\n\n try {\n bridgeIncomingMessage = JSON.parse(e.data);\n } catch (e) {\n throw new TonConnectError(`Bridge message parse failed, message ${e.data}`);\n }\n\n this.listener(bridgeIncomingMessage);\n }\n }\n}\n","import {\n Base64,\n SessionCrypto,\n AppRequest,\n ConnectRequest,\n RpcMethod,\n WalletEvent,\n WalletResponse,\n WalletMessage,\n hexToByteArray,\n ConnectEventSuccess,\n TonAddressItemReply\n} from '@tonconnect/protocol';\nimport { TonConnectError } from 'src/errors/ton-connect.error';\nimport { WalletConnectionSourceHTTP } from 'src/models/wallet/wallet-connection-source';\nimport { BridgeGateway } from 'src/provider/bridge/bridge-gateway';\nimport { BridgeConnectionHttp } from 'src/provider/bridge/models/bridge-connection';\nimport { BridgeIncomingMessage } from 'src/provider/bridge/models/bridge-incomming-message';\nimport { BridgePartialSession, BridgeSession } from 'src/provider/bridge/models/bridge-session';\nimport { HTTPProvider } from 'src/provider/provider';\nimport { BridgeConnectionStorage } from 'src/storage/bridge-connection-storage';\nimport { IStorage } from 'src/storage/models/storage.interface';\nimport { WithoutId } from 'src/utils/types';\nimport * as protocol from 'src/resources/protocol.json';\n\nexport class BridgeProvider implements HTTPProvider {\n public static async fromStorage(storage: IStorage): Promise<BridgeProvider> {\n const bridgeConnectionStorage = new BridgeConnectionStorage(storage);\n const connection = await bridgeConnectionStorage.getHttpConnection();\n return new BridgeProvider(storage, connection.session.walletConnectionSource);\n }\n\n public readonly type = 'http';\n\n private readonly connectionStorage: BridgeConnectionStorage;\n\n private readonly pendingRequests = new Map<\n string,\n (response: WithoutId<WalletResponse<RpcMethod>>) => void\n >();\n\n private nextRequestId = 0;\n\n private session: BridgeSession | BridgePartialSession | null = null;\n\n private bridge: BridgeGateway | null = null;\n\n private listeners: Array<(e: WalletEvent) => void> = [];\n\n constructor(\n private readonly storage: IStorage,\n private readonly walletConnectionSource: WalletConnectionSourceHTTP\n ) {\n this.connectionStorage = new BridgeConnectionStorage(storage);\n }\n\n public connect(message: ConnectRequest): string {\n this.bridge?.close();\n const sessionCrypto = new SessionCrypto();\n\n this.session = {\n sessionCrypto,\n walletConnectionSource: this.walletConnectionSource\n };\n\n this.bridge = new BridgeGateway(\n this.storage,\n this.walletConnectionSource.bridgeUrl,\n sessionCrypto.sessionId,\n this.gatewayListener.bind(this),\n this.gatewayErrorsListener.bind(this)\n );\n this.bridge.registerSession();\n\n return this.generateUniversalLink(message);\n }\n\n public async restoreConnection(): Promise<void> {\n this.bridge?.close();\n const storedConnection = await this.connectionStorage.getHttpConnection();\n if (!storedConnection) {\n return;\n }\n\n this.session = storedConnection.session;\n\n this.bridge = new BridgeGateway(\n this.storage,\n this.walletConnectionSource.bridgeUrl,\n storedConnection.session.sessionCrypto.sessionId,\n this.gatewayListener.bind(this),\n this.gatewayErrorsListener.bind(this)\n );\n\n await this.bridge.registerSession();\n\n this.listeners.forEach(listener => listener(storedConnection.connectEvent));\n }\n\n public sendRequest<T extends RpcMethod>(\n request: WithoutId<AppRequest<T>>\n ): Promise<WithoutId<WalletResponse<T>>> {\n return new Promise((resolve, reject) => {\n const id = this.nextRequestId;\n this.nextRequestId++;\n if (!this.bridge || !this.session || !('walletPublicKey' in this.session)) {\n throw new TonConnectError('Trying to send bridge request without session');\n }\n\n const encodedRequest = this.session!.sessionCrypto.encrypt(\n JSON.stringify({ ...request, id }),\n hexToByteArray(this.session.walletPublicKey)\n );\n\n this.bridge.send(encodedRequest, this.session.walletPublicKey).catch(reject);\n this.pendingRequests.set(id.toString(), resolve);\n });\n }\n\n public closeConnection(): void {\n this.bridge?.close();\n this.listeners = [];\n }\n\n public disconnect(): Promise<void> {\n this.bridge?.close();\n this.listeners = [];\n return this.removeBridgeAndSession();\n }\n\n public listen(callback: (e: WalletEvent) => void): () => void {\n this.listeners.push(callback);\n return () => (this.listeners = this.listeners.filter(listener => listener !== callback));\n }\n\n private async gatewayListener(bridgeIncomingMessage: BridgeIncomingMessage): Promise<void> {\n const walletMessage: WalletMessage = JSON.parse(\n this.session!.sessionCrypto.decrypt(\n Base64.decode(bridgeIncomingMessage.message).toUint8Array(),\n hexToByteArray(bridgeIncomingMessage.from)\n )\n );\n\n if (!('event' in walletMessage)) {\n const id = walletMessage.id.toString();\n const resolve = this.pendingRequests.get(id);\n if (!resolve) {\n throw new TonConnectError(`Response id ${id} doesn't match any request's id`);\n }\n\n resolve(walletMessage);\n this.pendingRequests.delete(id);\n return;\n }\n\n if (walletMessage.event === 'connect') {\n await this.updateSession(walletMessage, bridgeIncomingMessage.from);\n }\n\n this.listeners.forEach(listener => listener(walletMessage));\n }\n\n private async gatewayErrorsListener(e: Event): Promise<void> {\n throw new TonConnectError(`Bridge error ${JSON.stringify(e)}`);\n }\n\n private async updateSession(\n connectEvent: ConnectEventSuccess,\n walletPublicKey: string\n ): Promise<void> {\n this.session = {\n ...this.session!,\n walletPublicKey\n };\n\n const tonAddrItem: TonAddressItemReply = connectEvent.payload.items.find(\n item => item.name === 'ton_addr'\n ) as TonAddressItemReply;\n\n const connectEventToSave: BridgeConnectionHttp['connectEvent'] = {\n ...connectEvent,\n payload: {\n ...connectEvent.payload,\n items: [tonAddrItem]\n }\n };\n\n await this.connectionStorage.storeConnection({\n type: 'http',\n session: this.session,\n connectEvent: connectEventToSave\n });\n }\n\n private async removeBridgeAndSession(): Promise<void> {\n this.session = null;\n this.bridge = null;\n await this.connectionStorage.removeConnection();\n }\n\n private generateUniversalLink(message: ConnectRequest): string {\n const url = new URL(this.walletConnectionSource.universalLink);\n url.searchParams.append('v', protocol.version.toString());\n url.searchParams.append('id', this.session!.sessionCrypto.sessionId);\n url.searchParams.append('r', Base64.encode(JSON.stringify(message), true));\n return url.toString();\n }\n}\n","import { WalletNotInjectedError } from 'src/errors/wallet/wallet-not-injected.error';\nimport {\n AppRequest,\n RpcMethod,\n WalletResponse,\n ConnectRequest,\n WalletEvent,\n ConnectEvent\n} from '@tonconnect/protocol';\nimport { InjectedWalletApi } from 'src/provider/injected/models/injected-wallet-api';\nimport { InternalProvider } from 'src/provider/provider';\nimport * as protocol from 'src/resources/protocol.json';\nimport { BridgeConnectionStorage } from 'src/storage/bridge-connection-storage';\nimport { IStorage } from 'src/storage/models/storage.interface';\nimport { WithoutId } from 'src/utils/types';\nimport { getWindow } from 'src/utils/web-api';\n\ntype WindowWithTon<T extends string> = {\n [key in T]: {\n tonconnect: InjectedWalletApi;\n };\n} & Window;\n\nexport class InjectedProvider<T extends string = string> implements InternalProvider {\n private static window = getWindow();\n\n public static async fromStorage(storage: IStorage): Promise<InjectedProvider> {\n const bridgeConnectionStorage = new BridgeConnectionStorage(storage);\n const connection = await bridgeConnectionStorage.getInjectedConnection();\n return new InjectedProvider(connection.jsBridgeKey);\n }\n\n public static isWalletInjected(injectedWalletKey: string): boolean {\n return InjectedProvider.isWindowContainsWallet(this.window, injectedWalletKey);\n }\n\n public static isInsideWalletBrowser(injectedWalletKey: string): boolean {\n if (InjectedProvider.isWindowContainsWallet(this.window, injectedWalletKey)) {\n return this.window[injectedWalletKey]!.tonconnect.isWalletBrowser;\n }\n\n return false;\n }\n\n private static isWindowContainsWallet<T extends string>(\n window: Window | undefined,\n injectedWalletKey: string\n ): window is WindowWithTon<T> {\n return (\n !!window &&\n injectedWalletKey in window &&\n typeof window[injectedWalletKey as keyof Window] === 'object' &&\n 'tonconnect' in window[injectedWalletKey as keyof Window]\n );\n }\n\n public readonly type = 'injected';\n\n private unsubscribeCallback: (() => void) | null = null;\n\n private injectedWallet: InjectedWalletApi;\n\n private listenSubscriptions = false;\n\n private listeners: Array<(e: WalletEvent) => void> = [];\n\n constructor(injectedWalletKey: T) {\n const window: Window | undefined | WindowWithTon<T> = InjectedProvider.window;\n if (!InjectedProvider.isWindowContainsWallet(window, injectedWalletKey)) {\n throw new WalletNotInjectedError();\n }\n\n this.injectedWallet = window[injectedWalletKey]!.tonconnect!;\n }\n\n public connect(message: ConnectRequest, auto = false): void {\n this.injectedWallet\n .connect(protocol.version, message, auto)\n .then(connectEvent => {\n if (connectEvent.event === 'connect') {\n this.makeSubscriptions();\n this.listenSubscriptions = true;\n }\n this.listeners.forEach(listener => listener(connectEvent));\n })\n .catch(e => {\n const connectEventError: ConnectEvent = {\n event: 'connect_error',\n payload: {\n code: 0,\n message: e?.toString()\n }\n };\n\n this.listeners.forEach(listener => listener(connectEventError));\n });\n }\n\n public async restoreConnection(): Promise<void> {\n try {\n const connectEvent = await this.injectedWallet.restoreConnection();\n if (connectEvent.event === 'connect') {\n this.makeSubscriptions();\n this.listenSubscriptions = true;\n this.listeners.forEach(listener => listener(connectEvent));\n }\n } catch (e) {\n console.error(e);\n }\n }\n\n public closeConnection(): void {\n if (this.listenSubscriptions) {\n this.injectedWallet.disconnect();\n }\n this.closeAllListeners();\n }\n\n public disconnect(): Promise<void> {\n this.closeAllListeners();\n this.injectedWallet.disconnect();\n return Promise.resolve();\n }\n\n private closeAllListeners(): void {\n this.listenSubscriptions = false;\n this.listeners = [];\n this.unsubscribeCallback?.();\n }\n\n public listen(eventsCallback: (e: WalletEvent) => void): () => void {\n this.listeners.push(eventsCallback);\n return () =>\n (this.listeners = this.listeners.filter(listener => listener !== eventsCallback));\n }\n\n public async sendRequest<T extends RpcMethod>(\n request: WithoutId<AppRequest<T>>\n ): Promise<WithoutId<WalletResponse<T>>> {\n return this.injectedWallet.send<T>({ ...request, id: '0' });\n }\n\n private makeSubscriptions(): void {\n this.unsubscribeCallback = this.injectedWallet.listen(e => {\n if (this.listenSubscriptions) {\n this.listeners.forEach(listener => listener(e));\n }\n\n if (e.event === 'disconnect') {\n this.disconnect();\n }\n });\n }\n}\n","import { SessionCrypto } from '@tonconnect/protocol';\nimport { TonConnectError } from 'src/errors';\nimport { BridgeSessionRaw } from 'src/provider/bridge/models/bridge-session-raw';\nimport {\n BridgeConnection,\n BridgeConnectionHttp,\n BridgeConnectionHttpRaw,\n BridgeConnectionInjected,\n BridgeConnectionRaw\n} from 'src/provider/bridge/models/bridge-connection';\nimport { IStorage } from 'src/storage/models/storage.interface';\n\nexport class BridgeConnectionStorage {\n private readonly storeKey = 'ton-connect-storage_bridge-connection';\n\n constructor(private readonly storage: IStorage) {}\n\n public async storeConnection(connection: BridgeConnection): Promise<void> {\n if (connection.type === 'injected') {\n return this.storage.setItem(this.storeKey, JSON.stringify(connection));\n }\n\n const rawSession: BridgeSessionRaw = {\n sessionKeyPair: connection.session.sessionCrypto.stringifyKeypair(),\n walletPublicKey: connection.session.walletPublicKey,\n walletConnectionSource: connection.session.walletConnectionSource\n };\n\n const rawConnection: BridgeConnectionHttpRaw = {\n type: 'http',\n connectEvent: connection.connectEvent,\n session: rawSession\n };\n return this.storage.setItem(this.storeKey, JSON.stringify(rawConnection));\n }\n\n public async removeConnection(): Promise<void> {\n return this.storage.removeItem(this.storeKey);\n }\n\n public async getConnection(): Promise<BridgeConnection | null> {\n const stored = await this.storage.getItem(this.storeKey);\n if (!stored) {\n return null;\n }\n\n const connection: BridgeConnectionRaw = JSON.parse(stored);\n\n if (connection.type === 'injected') {\n return connection;\n }\n\n const sessionCrypto = new SessionCrypto(connection.session.sessionKeyPair);\n return {\n type: 'http',\n connectEvent: connection.connectEvent,\n session: {\n sessionCrypto,\n walletConnectionSource: connection.session.walletConnectionSource,\n walletPublicKey: connection.session.walletPublicKey\n }\n };\n }\n\n public async getHttpConnection(): Promise<BridgeConnectionHttp> {\n const connection = await this.getConnection();\n if (!connection) {\n throw new TonConnectError(\n 'Trying to read HTTP connection source while nothing is stored'\n );\n }\n\n if (connection.type === 'injected') {\n throw new TonConnectError(\n 'Trying to read HTTP connection source while injected connection is stored'\n );\n }\n\n return connection;\n }\n\n public async getInjectedConnection(): Promise<BridgeConnectionInjected> {\n const connection = await this.getConnection();\n\n if (!connection) {\n throw new TonConnectError(\n 'Trying to read Injected bridge connection source while nothing is stored'\n );\n }\n\n if (connection?.type === 'http') {\n throw new TonConnectError(\n 'Trying to read Injected bridge connection source while HTTP connection is stored'\n );\n }\n\n return connection;\n }\n\n public async storedConnectionType(): Promise<BridgeConnection['type'] | null> {\n const stored = await this.storage.getItem(this.storeKey);\n if (!stored) {\n return null;\n }\n const connection: BridgeConnection = JSON.parse(stored);\n return connection.type;\n }\n}\n","import { LocalstorageNotFoundError } from 'src/errors/storage/localstorage-not-found.error';\nimport { IStorage } from 'src/storage/models/storage.interface';\nimport { getWindow } from 'src/utils/web-api';\n\nexport class DefaultStorage implements IStorage {\n private readonly window: Window;\n\n constructor() {\n const window = getWindow();\n\n if (!window?.localStorage) {\n throw new LocalstorageNotFoundError();\n }\n\n this.window = window;\n }\n\n public async getItem(key: string): Promise<string | null> {\n return Promise.resolve(this.window.localStorage.getItem(key));\n }\n\n public async removeItem(key: string): Promise<void> {\n this.window.localStorage.removeItem(key);\n return Promise.resolve();\n }\n\n setItem(key: string, value: string): Promise<void> {\n this.window.localStorage.setItem(key, value);\n return Promise.resolve();\n }\n}\n","import { IStorage } from 'src/storage/models/storage.interface';\n\nexport class HttpBridgeGatewayStorage {\n private readonly storeKey = 'ton-connect-storage_http-bridge-gateway';\n\n constructor(private readonly storage: IStorage) {}\n\n public async storeLastEventId(lastEventId: string): Promise<void> {\n return this.storage.setItem(this.storeKey, lastEventId);\n }\n\n public async removeLastEventId(): Promise<void> {\n return this.storage.removeItem(this.storeKey);\n }\n\n public async getLastEventId(): Promise<string | null> {\n const stored = await this.storage.getItem(this.storeKey);\n if (!stored) {\n return null;\n }\n\n return stored;\n }\n}\n","import {\n ConnectEventError,\n ConnectEventSuccess,\n ConnectRequest,\n SendTransactionRpcResponseSuccess,\n TonAddressItemReply,\n WalletEvent,\n TonProofItemReply,\n ConnectItem\n} from '@tonconnect/protocol';\nimport { DappMetadataError } from 'src/errors/dapp/dapp-metadata.error';\nimport { TonConnectError } from 'src/errors/ton-connect.error';\nimport { WalletAlreadyConnectedError } from 'src/errors/wallet/wallet-already-connected.error';\nimport { WalletNotConnectedError } from 'src/errors/wallet/wallet-not-connected.error';\nimport { Account, Wallet, WalletConnectionSource, WalletInfo } from 'src/models';\nimport { SendTransactionRequest, SendTransactionResponse } from 'src/models/methods';\nimport { ConnectAdditionalRequest } from 'src/models/methods/connect/connect-additional-request';\nimport { TonConnectOptions } from 'src/models/ton-connect-options';\nimport {\n isWalletConnectionSourceJS,\n WalletConnectionSourceJS\n} from 'src/models/wallet/wallet-connection-source';\nimport { connectErrorsParser } from 'src/parsers/connect-errors-parser';\nimport { sendTransactionParser } from 'src/parsers/send-transaction-parser';\nimport { BridgeProvider } from 'src/provider/bridge/bridge-provider';\nimport { InjectedProvider } from 'src/provider/injected/injected-provider';\nimport { Provider } from 'src/provider/provider';\nimport { BridgeConnectionStorage } from 'src/storage/bridge-connection-storage';\nimport { DefaultStorage } from 'src/storage/default-storage';\nimport { ITonConnect } from 'src/ton-connect.interface';\nimport { mergeOptions } from 'src/utils/options';\nimport { getWebPageMetadata } from 'src/utils/web-api';\nimport { WalletsListManager } from 'src/wallets-list-manager';\n\nexport class TonConnect implements ITonConnect {\n private readonly walletsList = new WalletsListManager();\n\n private readonly dappSettings: Required<TonConnectOptions>;\n\n private readonly bridgeConnectionStorage: BridgeConnectionStorage;\n\n private _wallet: Wallet | null = null;\n\n private provider: Provider | null = null;\n\n private statusChangeSubscriptions: ((walletInfo: Wallet | null) => void)[] = [];\n\n private statusChangeErrorSubscriptions: ((err: TonConnectError) => void)[] = [];\n\n /**\n * Shows if the wallet is connected right now.\n */\n public get connected(): boolean {\n return this._wallet !== null;\n }\n\n /**\n * Current connected account or null if no account is connected.\n */\n public get account(): Account | null {\n return this._wallet?.account || null;\n }\n\n /**\n * Current connected wallet or null if no account is connected.\n */\n public get wallet(): Wallet | null {\n return this._wallet;\n }\n\n private set wallet(value: Wallet | null) {\n this._wallet = value;\n this.statusChangeSubscriptions.forEach(callback => callback(this._wallet));\n }\n\n constructor(options?: TonConnectOptions) {\n this.dappSettings = {\n dappMetedata: mergeOptions(options?.dappMetedata, getWebPageMetadata()),\n storage: options?.storage || new DefaultStorage()\n };\n\n if (!this.dappSettings.dappMetedata.url) {\n throw new DappMetadataError(\n 'Dapp url must be specified if window.location.origin is undefined.'\n );\n }\n\n this.bridgeConnectionStorage = new BridgeConnectionStorage(this.dappSettings.storage);\n }\n\n /**\n * Returns available wallets list.\n */\n public getWallets(): Promise<WalletInfo[]> {\n return this.walletsList.getWallets();\n }\n\n /**\n * Allows to subscribe to connection status changes and handle connection errors.\n * @param callback will be called after connections status changes with actual wallet or null.\n * @param errorsHandler (optional) will be called with some instance of TonConnectError when connect error is received.\n * @returns unsubscribe callback.\n */\n public onStatusChange(\n callback: (wallet: Wallet | null) => void,\n errorsHandler?: (err: TonConnectError) => void\n ): () => void {\n this.statusChangeSubscriptions.push(callback);\n if (errorsHandler) {\n this.statusChangeErrorSubscriptions.push(errorsHandler);\n }\n\n return () => {\n this.statusChangeSubscriptions = this.statusChangeSubscriptions.filter(\n item => item !== callback\n );\n if (errorsHandler) {\n this.statusChangeErrorSubscriptions = this.statusChangeErrorSubscriptions.filter(\n item => item !== errorsHandler\n );\n }\n };\n }\n\n /**\n * Generates universal link for an external wallet and subscribes to the wallet's bridge, or sends connect request to the injected wallet.\n * @param wallet wallet's bridge url and universal link for an external wallet or jsBridge key for the injected wallet.\n * @param request (optional) additional request to pass to the wallet while connect (currently only ton_proof is available).\n * @returns universal link if external wallet was passed or void for the injected wallet.\n */\n public connect<T extends WalletConnectionSource>(\n wallet: T,\n request?: ConnectAdditionalRequest\n ): T extends WalletConnectionSourceJS ? void : string;\n public connect(\n wallet: WalletConnectionSource,\n request?: ConnectAdditionalRequest\n ): void | string {\n if (this.connected) {\n throw new WalletAlreadyConnectedError();\n }\n\n this.provider?.closeConnection();\n this.provider = this.createProvider(wallet);\n\n return this.provider.connect(this.createConnectRequest(request));\n }\n\n /**\n * Try to restore existing session and reconnect to the corresponding wallet. Call it immediately when your app is loaded.\n */\n public async restoreConnection(): Promise<void> {\n const [bridgeConnectionType, embeddedWallet] = await Promise.all([\n this.bridgeConnectionStorage.storedConnectionType(),\n this.walletsList.getEmbeddedWallet()\n ]);\n\n switch (bridgeConnectionType) {\n case 'http':\n this.provider = await BridgeProvider.fromStorage(this.dappSettings.storage);\n break;\n case 'injected':\n this.provider = await InjectedProvider.fromStorage(this.dappSettings.storage);\n break;\n default:\n if (embeddedWallet) {\n this.provider = await this.createProvider(embeddedWallet);\n } else {\n return;\n }\n }\n\n this.provider.listen(this.walletEventsListener.bind(this));\n return this.provider.restoreConnection();\n }\n\n /**\n * Asks connected wallet to sign and send the transaction.\n * @param transaction transaction to send.\n * @returns signed transaction boc that allows you to find the transaction in the blockchain.\n * If user rejects transaction, method will throw the corresponding error.\n */\n public async sendTransaction(\n transaction: SendTransactionRequest\n ): Promise<SendTransactionResponse> {\n this.checkConnection();\n const response = await this.provider!.sendRequest(\n sendTransactionParser.convertToRpcRequest(transaction)\n );\n\n if (sendTransactionParser.isError(response)) {\n return sendTransactionParser.parseAndThrowError(response);\n }\n\n return sendTransactionParser.convertFromRpcResponse(\n response as SendTransactionRpcResponseSuccess\n );\n }\n\n /**\n * Disconnect form thw connected wallet and drop current session.\n */\n public async disconnect(): Promise<void> {\n if (!this.connected) {\n throw new WalletNotConnectedError();\n }\n await this.provider!.disconnect();\n this.onWalletDisconnected();\n }\n\n private createProvider(wallet: WalletConnectionSource): Provider {\n let provider: Provider;\n\n if (isWalletConnectionSourceJS(wallet)) {\n provider = new InjectedProvider(wallet.jsBridgeKey);\n } else {\n provider = new BridgeProvider(this.dappSettings.storage, wallet);\n }\n\n provider.listen(this.walletEventsListener.bind(this));\n return provider;\n }\n\n private walletEventsListener(e: WalletEvent): void {\n switch (e.event) {\n case 'connect':\n this.onWalletConnected(e.payload);\n break;\n case 'connect_error':\n this.onWalletConnectError(e.payload);\n break;\n case 'disconnect':\n this.onWalletDisconnected();\n }\n }\n\n private onWalletConnected(connectEvent: ConnectEventSuccess['payload']): void {\n const tonAccountItem: TonAddressItemReply | undefined = connectEvent.items.find(\n item => item.name === 'ton_addr'\n ) as TonAddressItemReply | undefined;\n\n const tonProofItem: TonProofItemReply | undefined = connectEvent.items.find(\n item => item.name === 'ton_proof'\n ) as TonProofItemReply | undefined;\n\n if (!tonAccountItem) {\n throw new TonConnectError('ton_addr connection item was not found');\n }\n\n const wallet: Wallet = {\n device: connectEvent.device,\n provider: this.provider!.type,\n account: {\n address: tonAccountItem.address,\n chain: tonAccountItem.network\n }\n };\n\n if (tonProofItem) {\n wallet.connectItems = {\n tonProof: tonProofItem\n };\n }\n\n this.wallet = wallet;\n }\n\n private onWalletConnectError(connectEventError: ConnectEventError['payload']): void {\n const error = connectErrorsParser.parseError(connectEventError);\n this.statusChangeErrorSubscriptions.forEach(errorsHandler => errorsHandler(error));\n }\n\n private onWalletDisconnected(): void {\n this.wallet = null;\n }\n\n private checkConnection(): void | never {\n if (!this.connected) {\n throw new WalletNotConnectedError();\n }\n }\n\n private createConnectRequest(request?: ConnectAdditionalRequest): ConnectRequest {\n const webPageMetadata = getWebPageMetadata();\n const metadata = mergeOptions(this.dappSettings.dappMetedata, webPageMetadata);\n\n const items: ConnectItem[] = [\n {\n name: 'ton_addr'\n }\n ];\n\n if (request) {\n items.push({\n name: 'ton_proof',\n payload: request.tonProof\n });\n }\n\n return {\n ...metadata,\n items\n };\n }\n}\n","import deepmerge from 'deepmerge';\n\nexport function mergeOptions<T>(options: Partial<T> | undefined | null, defaultOptions: T): T {\n if (!options) {\n return defaultOptions;\n }\n\n const overwriteMerge = (_: unknown[], sourceArray: unknown[], __: unknown): unknown[] =>\n sourceArray;\n\n return deepmerge(defaultOptions, options, { arrayMerge: overwriteMerge });\n}\n","export function removeUrlLastSlash(url: string): string {\n if (url.slice(-1) === '/') {\n return url.slice(0, -1);\n }\n\n return url;\n}\n\nexport function addPathToUrl(url: string, path: string): string {\n return removeUrlLastSlash(url) + '/' + path;\n}\n","import { DappMetadata } from 'src/models';\n\nexport function getWindow(): Window | undefined {\n if (typeof window === 'undefined') {\n return undefined;\n }\n\n return window;\n}\n\nexport function getDocument(): Document | undefined {\n if (typeof document === 'undefined') {\n return undefined;\n }\n\n return document;\n}\n\nexport function getWebPageMetadata(): DappMetadata {\n return {\n url: getWindow()?.location.origin || '',\n icon: getIconUrl(),\n name: getDocument()?.title || 'Unknown dapp'\n };\n}\n\nfunction getIconUrl(): string {\n const document = getDocument();\n if (!document) {\n return '';\n }\n\n const appleTouchIcons = document.querySelectorAll<HTMLLinkElement>(\n \"link[rel='apple-touch-icon']\"\n );\n\n if (appleTouchIcons?.length) {\n return getLargestSizeIconUrl(Array.from(appleTouchIcons));\n }\n\n const links = Array.from(document.querySelectorAll<HTMLLinkElement>(\"link[rel*='icon']\"));\n\n const pngLinks = links.filter(link => link.href.endsWith('.png'));\n\n if (pngLinks.length) {\n return getLargestSizeIconUrl(pngLinks);\n }\n\n const icoIcon = links.filter(link => link.href.endsWith('.ico'))[0];\n\n return icoIcon?.href || '';\n}\n\nfunction getLargestSizeIconUrl(links: HTMLLinkElement[]): string {\n const parsedLinks = links.map(parseIconLink);\n\n const maxSizeIcon = parsedLinks.sort((a, b) => (b.size > a.size ? 1 : -1))[0];\n\n return maxSizeIcon?.href || '';\n}\n\nfunction parseIconLink(link: HTMLLinkElement): { href: string; size: number } {\n if (!link.sizes?.value) {\n return {\n href: link.href,\n size: 0\n };\n }\n\n const sizes: number[] = Array.from(link.sizes)\n .map(size => {\n const groups = size.match(/(\\d+)x(\\d+)/i);\n if (!groups || !groups[1] || !groups[2]) {\n return undefined;\n }\n\n return parseInt(groups[1]) * parseInt(groups[2]);\n })\n .filter(item => !!item) as number[];\n\n if (sizes.length === 0) {\n return {\n href: link.href,\n size: 0\n };\n }\n\n return {\n href: link.href,\n size: Math.max.apply(Math, sizes)\n };\n}\n","import { FetchWalletsError } from 'src/errors/wallets-manager/fetch-wallets.error';\nimport {\n WalletInfoRemote,\n WalletInfoInjected,\n WalletInfo,\n WalletInfoDTO,\n isWalletInfoInjected\n} from 'src/models/wallet/wallet-info';\nimport { InjectedProvider } from 'src/provider/injected/injected-provider';\n\nexport class WalletsListManager {\n private walletsListCache: Promise<WalletInfo[]> | null = null;\n\n private readonly walletsListSource =\n 'https://raw.githubusercontent.com/ton-connect/wallets-list/main/wallets.json';\n\n public async getWallets(): Promise<WalletInfo[]> {\n if (!this.walletsListCache) {\n this.walletsListCache = this.fetchWalletsList();\n this.walletsListCache.catch(() => (this.walletsListCache = null));\n }\n\n return this.walletsListCache;\n }\n\n public async getEmbeddedWallet(): Promise<WalletInfoInjected | null> {\n const walletsList = await this.getWallets();\n const injectedWallets = walletsList.filter(isWalletInfoInjected);\n\n if (injectedWallets.length !== 1) {\n return null;\n }\n\n return injectedWallets[0]!.embedded ? injectedWallets[0]! : null;\n }\n\n private async fetchWalletsList(): Promise<WalletInfo[]> {\n try {\n const walletsResponse = await fetch(this.walletsListSource);\n const walletsList: WalletInfoDTO[] = await walletsResponse.json();\n\n if (\n !Array.isArray(walletsList) ||\n !walletsList.every(wallet => this.isCorrectWalletConfigDTO(wallet))\n ) {\n throw new FetchWalletsError('Wrong wallets list format');\n }\n\n return this.walletConfigDTOListToWalletConfigList(walletsList);\n } catch (e) {\n throw new FetchWalletsError(e);\n }\n }\n\n private walletConfigDTOListToWalletConfigList(walletConfigDTO: WalletInfoDTO[]): WalletInfo[] {\n return walletConfigDTO.map(walletConfigDTO => {\n const walletConfig: WalletInfo = {\n name: walletConfigDTO.name,\n imageUrl: walletConfigDTO.image,\n aboutUrl: walletConfigDTO.about_url,\n tondns: walletConfigDTO.tondns\n } as WalletInfo;\n\n if ('bridge_url' in walletConfigDTO) {\n (walletConfig as WalletInfoRemote).bridgeUrl = walletConfigDTO.bridge_url;\n (walletConfig as WalletInfoRemote).universalLink = walletConfigDTO.universal_url;\n }\n\n if ('js_bridge_key' in walletConfigDTO) {\n const jsBridgeKey = walletConfigDTO.js_bridge_key;\n (walletConfig as WalletInfoInjected).jsBridgeKey = jsBridgeKey;\n (walletConfig as WalletInfoInjected).injected =\n InjectedProvider.isWalletInjected(jsBridgeKey);\n (walletConfig as WalletInfoInjected).embedded =\n InjectedProvider.isInsideWalletBrowser(jsBridgeKey);\n }\n\n return walletConfig;\n });\n }\n\n private isCorrectWalletConfigDTO(value: unknown): value is WalletInfoDTO {\n if (!value || !(typeof value === 'object')) {\n return false;\n }\n\n const containsName = 'name' in value;\n const containsImage = 'image' in value;\n const containsAbout = 'about_url' in value;\n\n if (!containsName || !containsImage || !containsAbout) {\n return false;\n }\n\n const containsUniversalUrl = 'universal_url' in value;\n const containsHttpBridge = 'bridge_url' in value;\n const containsJsBridge = 'js_bridge_key' in value;\n\n return (containsHttpBridge && containsUniversalUrl) || containsJsBridge;\n }\n}\n","// Written in 2014-2016 by Dmitry Chestnykh and Devi Mandiri.\n// Public domain.\n(function(root, f) {\n 'use strict';\n if (typeof module !== 'undefined' && module.exports) module.exports = f();\n else if (root.nacl) root.nacl.util = f();\n else {\n root.nacl = {};\n root.nacl.util = f();\n }\n}(this, function() {\n 'use strict';\n\n var util = {};\n\n function validateBase64(s) {\n if (!(/^(?:[A-Za-z0-9+\\/]{2}[A-Za-z0-9+\\/]{2})*(?:[A-Za-z0-9+\\/]{2}==|[A-Za-z0-9+\\/]{3}=)?$/.test(s))) {\n throw new TypeError('invalid encoding');\n }\n }\n\n util.decodeUTF8 = function(s) {\n if (typeof s !== 'string') throw new TypeError('expected string');\n var i, d = unescape(encodeURIComponent(s)), b = new Uint8Array(d.length);\n for (i = 0; i < d.length; i++) b[i] = d.charCodeAt(i);\n return b;\n };\n\n util.encodeUTF8 = function(arr) {\n var i, s = [];\n for (i = 0; i < arr.length; i++) s.push(String.fromCharCode(arr[i]));\n return decodeURIComponent(escape(s.join('')));\n };\n\n if (typeof atob === 'undefined') {\n // Node.js\n\n if (typeof Buffer.from !== 'undefined') {\n // Node v6 and later\n util.encodeBase64 = function (arr) { // v6 and later\n return Buffer.from(arr).toString('base64');\n };\n\n util.decodeBase64 = function (s) {\n validateBase64(s);\n return new Uint8Array(Array.prototype.slice.call(Buffer.from(s, 'base64'), 0));\n };\n\n } else {\n // Node earlier than v6\n util.encodeBase64 = function (arr) { // v6 and later\n return (new Buffer(arr)).toString('base64');\n };\n\n util.decodeBase64 = function(s) {\n validateBase64(s);\n return new Uint8Array(Array.prototype.slice.call(new Buffer(s, 'base64'), 0));\n };\n }\n\n } else {\n // Browsers\n\n util.encodeBase64 = function(arr) {\n var i, s = [], len = arr.length;\n for (i = 0; i < len; i++) s.push(String.fromCharCode(arr[i]));\n return btoa(s.join(''));\n };\n\n util.decodeBase64 = function(s) {\n validateBase64(s);\n var i, d = atob(s), b = new Uint8Array(d.length);\n for (i = 0; i < d.length; i++) b[i] = d.charCodeAt(i);\n return b;\n };\n\n }\n\n return util;\n\n}));\n","(function(nacl) {\n'use strict';\n\n// Ported in 2014 by Dmitry Chestnykh and Devi Mandiri.\n// Public domain.\n//\n// Implementation derived from TweetNaCl version 20140427.\n// See for details: http://tweetnacl.cr.yp.to/\n\nvar gf = function(init) {\n var i, r = new Float64Array(16);\n if (init) for (i = 0; i < init.length; i++) r[i] = init[i];\n return r;\n};\n\n// Pluggable, initialized in high-level API below.\nvar randombytes = function(/* x, n */) { throw new Error('no PRNG'); };\n\nvar _0 = new Uint8Array(16);\nvar _9 = new Uint8Array(32); _9[0] = 9;\n\nvar gf0 = gf(),\n gf1 = gf([1]),\n _121665 = gf([0xdb41, 1]),\n D = gf([0x78a3, 0x1359, 0x4dca, 0x75eb, 0xd8ab, 0x4141, 0x0a4d, 0x0070, 0xe898, 0x7779, 0x4079, 0x8cc7, 0xfe73, 0x2b6f, 0x6cee, 0x5203]),\n D2 = gf([0xf159, 0x26b2, 0x9b94, 0xebd6, 0xb156, 0x8283, 0x149a, 0x00e0, 0xd130, 0xeef3, 0x80f2, 0x198e, 0xfce7, 0x56df, 0xd9dc, 0x2406]),\n X = gf([0xd51a, 0x8f25, 0x2d60, 0xc956, 0xa7b2, 0x9525, 0xc760, 0x692c, 0xdc5c, 0xfdd6, 0xe231, 0xc0a4, 0x53fe, 0xcd6e, 0x36d3, 0x2169]),\n Y = gf([0x6658, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666]),\n I = gf([0xa0b0, 0x4a0e, 0x1b27, 0xc4ee, 0xe478, 0xad2f, 0x1806, 0x2f43, 0xd7a7, 0x3dfb, 0x0099, 0x2b4d, 0xdf0b, 0x4fc1, 0x2480, 0x2b83]);\n\nfunction ts64(x, i, h, l) {\n x[i] = (h >> 24) & 0xff;\n x[i+1] = (h >> 16) & 0xff;\n x[i+2] = (h >> 8) & 0xff;\n x[i+3] = h & 0xff;\n x[i+4] = (l >> 24) & 0xff;\n x[i+5] = (l >> 16) & 0xff;\n x[i+6] = (l >> 8) & 0xff;\n x[i+7] = l & 0xff;\n}\n\nfunction vn(x, xi, y, yi, n) {\n var i,d = 0;\n for (i = 0; i < n; i++) d |= x[xi+i]^y[yi+i];\n return (1 & ((d - 1) >>> 8)) - 1;\n}\n\nfunction crypto_verify_16(x, xi, y, yi) {\n return vn(x,xi,y,yi,16);\n}\n\nfunction crypto_verify_32(x, xi, y, yi) {\n return vn(x,xi,y,yi,32);\n}\n\nfunction core_salsa20(o, p, k, c) {\n var j0 = c[ 0] & 0xff | (c[ 1] & 0xff)<<8 | (c[ 2] & 0xff)<<16 | (c[ 3] & 0xff)<<24,\n j1 = k[ 0] & 0xff | (k[ 1] & 0xff)<<8 | (k[ 2] & 0xff)<<16 | (k[ 3] & 0xff)<<24,\n j2 = k[ 4] & 0xff | (k[ 5] & 0xff)<<8 | (k[ 6] & 0xff)<<16 | (k[ 7] & 0xff)<<24,\n j3 = k[ 8] & 0xff | (k[ 9] & 0xff)<<8 | (k[10] & 0xff)<<16 | (k[11] & 0xff)<<24,\n j4 = k[12] & 0xff | (k[13] & 0xff)<<8 | (k[14] & 0xff)<<16 | (k[15] & 0xff)<<24,\n j5 = c[ 4] & 0xff | (c[ 5] & 0xff)<<8 | (c[ 6] & 0xff)<<16 | (c[ 7] & 0xff)<<24,\n j6 = p[ 0] & 0xff | (p[ 1] & 0xff)<<8 | (p[ 2] & 0xff)<<16 | (p[ 3] & 0xff)<<24,\n j7 = p[ 4] & 0xff | (p[ 5] & 0xff)<<8 | (p[ 6] & 0xff)<<16 | (p[ 7] & 0xff)<<24,\n j8 = p[ 8] & 0xff | (p[ 9] & 0xff)<<8 | (p[10] & 0xff)<<16 | (p[11] & 0xff)<<24,\n j9 = p[12] & 0xff | (p[13] & 0xff)<<8 | (p[14] & 0xff)<<16 | (p[15] & 0xff)<<24,\n j10 = c[ 8] & 0xff | (c[ 9] & 0xff)<<8 | (c[10] & 0xff)<<16 | (c[11] & 0xff)<<24,\n j11 = k[16] & 0xff | (k[17] & 0xff)<<8 | (k[18] & 0xff)<<16 | (k[19] & 0xff)<<24,\n j12 = k[20] & 0xff | (k[21] & 0xff)<<8 | (k[22] & 0xff)<<16 | (k[23] & 0xff)<<24,\n j13 = k[24] & 0xff | (k[25] & 0xff)<<8 | (k[26] & 0xff)<<16 | (k[27] & 0xff)<<24,\n j14 = k[28] & 0xff | (k[29] & 0xff)<<8 | (k[30] & 0xff)<<16 | (k[31] & 0xff)<<24,\n j15 = c[12] & 0xff | (c[13] & 0xff)<<8 | (c[14] & 0xff)<<16 | (c[15] & 0xff)<<24;\n\n var x0 = j0, x1 = j1, x2 = j2, x3 = j3, x4 = j4, x5 = j5, x6 = j6, x7 = j7,\n x8 = j8, x9 = j9, x10 = j10, x11 = j11, x12 = j12, x13 = j13, x14 = j14,\n x15 = j15, u;\n\n for (var i = 0; i < 20; i += 2) {\n u = x0 + x12 | 0;\n x4 ^= u<<7 | u>>>(32-7);\n u = x4 + x0 | 0;\n x8 ^= u<<9 | u>>>(32-9);\n u = x8 + x4 | 0;\n x12 ^= u<<13 | u>>>(32-13);\n u = x12 + x8 | 0;\n x0 ^= u<<18 | u>>>(32-18);\n\n u = x5 + x1 | 0;\n x9 ^= u<<7 | u>>>(32-7);\n u = x9 + x5 | 0;\n x13 ^= u<<9 | u>>>(32-9);\n u = x13 + x9 | 0;\n x1 ^= u<<13 | u>>>(32-13);\n u = x1 + x13 | 0;\n x5 ^= u<<18 | u>>>(32-18);\n\n u = x10 + x6 | 0;\n x14 ^= u<<7 | u>>>(32-7);\n u = x14 + x10 | 0;\n x2 ^= u<<9 | u>>>(32-9);\n u = x2 + x14 | 0;\n x6 ^= u<<13 | u>>>(32-13);\n u = x6 + x2 | 0;\n x10 ^= u<<18 | u>>>(32-18);\n\n u = x15 + x11 | 0;\n x3 ^= u<<7 | u>>>(32-7);\n u = x3 + x15 | 0;\n x7 ^= u<<9 | u>>>(32-9);\n u = x7 + x3 | 0;\n x11 ^= u<<13 | u>>>(32-13);\n u = x11 + x7 | 0;\n x15 ^= u<<18 | u>>>(32-18);\n\n u = x0 + x3 | 0;\n x1 ^= u<<7 | u>>>(32-7);\n u = x1 + x0 | 0;\n x2 ^= u<<9 | u>>>(32-9);\n u = x2 + x1 | 0;\n x3 ^= u<<13 | u>>>(32-13);\n u = x3 + x2 | 0;\n x0 ^= u<<18 | u>>>(32-18);\n\n u = x5 + x4 | 0;\n x6 ^= u<<7 | u>>>(32-7);\n u = x6 + x5 | 0;\n x7 ^= u<<9 | u>>>(32-9);\n u = x7 + x6 | 0;\n x4 ^= u<<13 | u>>>(32-13);\n u = x4 + x7 | 0;\n x5 ^= u<<18 | u>>>(32-18);\n\n u = x10 + x9 | 0;\n x11 ^= u<<7 | u>>>(32-7);\n u = x11 + x10 | 0;\n x8 ^= u<<9 | u>>>(32-9);\n u = x8 + x11 | 0;\n x9 ^= u<<13 | u>>>(32-13);\n u = x9 + x8 | 0;\n x10 ^= u<<18 | u>>>(32-18);\n\n u = x15 + x14 | 0;\n x12 ^= u<<7 | u>>>(32-7);\n u = x12 + x15 | 0;\n x13 ^= u<<9 | u>>>(32-9);\n u = x13 + x12 | 0;\n x14 ^= u<<13 | u>>>(32-13);\n u = x14 + x13 | 0;\n x15 ^= u<<18 | u>>>(32-18);\n }\n x0 = x0 + j0 | 0;\n x1 = x1 + j1 | 0;\n x2 = x2 + j2 | 0;\n x3 = x3 + j3 | 0;\n x4 = x4 + j4 | 0;\n x5 = x5 + j5 | 0;\n x6 = x6 + j6 | 0;\n x7 = x7 + j7 | 0;\n x8 = x8 + j8 | 0;\n x9 = x9 + j9 | 0;\n x10 = x10 + j10 | 0;\n x11 = x11 + j11 | 0;\n x12 = x12 + j12 | 0;\n x13 = x13 + j13 | 0;\n x14 = x14 + j14 | 0;\n x15 = x15 + j15 | 0;\n\n o[ 0] = x0 >>> 0 & 0xff;\n o[ 1] = x0 >>> 8 & 0xff;\n o[ 2] = x0 >>> 16 & 0xff;\n o[ 3] = x0 >>> 24 & 0xff;\n\n o[ 4] = x1 >>> 0 & 0xff;\n o[ 5] = x1 >>> 8 & 0xff;\n o[ 6] = x1 >>> 16 & 0xff;\n o[ 7] = x1 >>> 24 & 0xff;\n\n o[ 8] = x2 >>> 0 & 0xff;\n o[ 9] = x2 >>> 8 & 0xff;\n o[10] = x2 >>> 16 & 0xff;\n o[11] = x2 >>> 24 & 0xff;\n\n o[12] = x3 >>> 0 & 0xff;\n o[13] = x3 >>> 8 & 0xff;\n o[14] = x3 >>> 16 & 0xff;\n o[15] = x3 >>> 24 & 0xff;\n\n o[16] = x4 >>> 0 & 0xff;\n o[17] = x4 >>> 8 & 0xff;\n o[18] = x4 >>> 16 & 0xff;\n o[19] = x4 >>> 24 & 0xff;\n\n o[20] = x5 >>> 0 & 0xff;\n o[21] = x5 >>> 8 & 0xff;\n o[22] = x5 >>> 16 & 0xff;\n o[23] = x5 >>> 24 & 0xff;\n\n o[24] = x6 >>> 0 & 0xff;\n o[25] = x6 >>> 8 & 0xff;\n o[26] = x6 >>> 16 & 0xff;\n o[27] = x6 >>> 24 & 0xff;\n\n o[28] = x7 >>> 0 & 0xff;\n o[29] = x7 >>> 8 & 0xff;\n o[30] = x7 >>> 16 & 0xff;\n o[31] = x7 >>> 24 & 0xff;\n\n o[32] = x8 >>> 0 & 0xff;\n o[33] = x8 >>> 8 & 0xff;\n o[34] = x8 >>> 16 & 0xff;\n o[35] = x8 >>> 24 & 0xff;\n\n o[36] = x9 >>> 0 & 0xff;\n o[37] = x9 >>> 8 & 0xff;\n o[38] = x9 >>> 16 & 0xff;\n o[39] = x9 >>> 24 & 0xff;\n\n o[40] = x10 >>> 0 & 0xff;\n o[41] = x10 >>> 8 & 0xff;\n o[42] = x10 >>> 16 & 0xff;\n o[43] = x10 >>> 24 & 0xff;\n\n o[44] = x11 >>> 0 & 0xff;\n o[45] = x11 >>> 8 & 0xff;\n o[46] = x11 >>> 16 & 0xff;\n o[47] = x11 >>> 24 & 0xff;\n\n o[48] = x12 >>> 0 & 0xff;\n o[49] = x12 >>> 8 & 0xff;\n o[50] = x12 >>> 16 & 0xff;\n o[51] = x12 >>> 24 & 0xff;\n\n o[52] = x13 >>> 0 & 0xff;\n o[53] = x13 >>> 8 & 0xff;\n o[54] = x13 >>> 16 & 0xff;\n o[55] = x13 >>> 24 & 0xff;\n\n o[56] = x14 >>> 0 & 0xff;\n o[57] = x14 >>> 8 & 0xff;\n o[58] = x14 >>> 16 & 0xff;\n o[59] = x14 >>> 24 & 0xff;\n\n o[60] = x15 >>> 0 & 0xff;\n o[61] = x15 >>> 8 & 0xff;\n o[62] = x15 >>> 16 & 0xff;\n o[63] = x15 >>> 24 & 0xff;\n}\n\nfunction core_hsalsa20(o,p,k,c) {\n var j0 = c[ 0] & 0xff | (c[ 1] & 0xff)<<8 | (c[ 2] & 0xff)<<16 | (c[ 3] & 0xff)<<24,\n j1 = k[ 0] & 0xff | (k[ 1] & 0xff)<<8 | (k[ 2] & 0xff)<<16 | (k[ 3] & 0xff)<<24,\n j2 = k[ 4] & 0xff | (k[ 5] & 0xff)<<8 | (k[ 6] & 0xff)<<16 | (k[ 7] & 0xff)<<24,\n j3 = k[ 8] & 0xff | (k[ 9] & 0xff)<<8 | (k[10] & 0xff)<<16 | (k[11] & 0xff)<<24,\n j4 = k[12] & 0xff | (k[13] & 0xff)<<8 | (k[14] & 0xff)<<16 | (k[15] & 0xff)<<24,\n j5 = c[ 4] & 0xff | (c[ 5] & 0xff)<<8 | (c[ 6] & 0xff)<<16 | (c[ 7] & 0xff)<<24,\n j6 = p[ 0] & 0xff | (p[ 1] & 0xff)<<8 | (p[ 2] & 0xff)<<16 | (p[ 3] & 0xff)<<24,\n j7 = p[ 4] & 0xff | (p[ 5] & 0xff)<<8 | (p[ 6] & 0xff)<<16 | (p[ 7] & 0xff)<<24,\n j8 = p[ 8] & 0xff | (p[ 9] & 0xff)<<8 | (p[10] & 0xff)<<16 | (p[11] & 0xff)<<24,\n j9 = p[12] & 0xff | (p[13] & 0xff)<<8 | (p[14] & 0xff)<<16 | (p[15] & 0xff)<<24,\n j10 = c[ 8] & 0xff | (c[ 9] & 0xff)<<8 | (c[10] & 0xff)<<16 | (c[11] & 0xff)<<24,\n j11 = k[16] & 0xff | (k[17] & 0xff)<<8 | (k[18] & 0xff)<<16 | (k[19] & 0xff)<<24,\n j12 = k[20] & 0xff | (k[21] & 0xff)<<8 | (k[22] & 0xff)<<16 | (k[23] & 0xff)<<24,\n j13 = k[24] & 0xff | (k[25] & 0xff)<<8 | (k[26] & 0xff)<<16 | (k[27] & 0xff)<<24,\n j14 = k[28] & 0xff | (k[29] & 0xff)<<8 | (k[30] & 0xff)<<16 | (k[31] & 0xff)<<24,\n j15 = c[12] & 0xff | (c[13] & 0xff)<<8 | (c[14] & 0xff)<<16 | (c[15] & 0xff)<<24;\n\n var x0 = j0, x1 = j1, x2 = j2, x3 = j3, x4 = j4, x5 = j5, x6 = j6, x7 = j7,\n x8 = j8, x9 = j9, x10 = j10, x11 = j11, x12 = j12, x13 = j13, x14 = j14,\n x15 = j15, u;\n\n for (var i = 0; i < 20; i += 2) {\n u = x0 + x12 | 0;\n x4 ^= u<<7 | u>>>(32-7);\n u = x4 + x0 | 0;\n x8 ^= u<<9 | u>>>(32-9);\n u = x8 + x4 | 0;\n x12 ^= u<<13 | u>>>(32-13);\n u = x12 + x8 | 0;\n x0 ^= u<<18 | u>>>(32-18);\n\n u = x5 + x1 | 0;\n x9 ^= u<<7 | u>>>(32-7);\n u = x9 + x5 | 0;\n x13 ^= u<<9 | u>>>(32-9);\n u = x13 + x9 | 0;\n x1 ^= u<<13 | u>>>(32-13);\n u = x1 + x13 | 0;\n x5 ^= u<<18 | u>>>(32-18);\n\n u = x10 + x6 | 0;\n x14 ^= u<<7 | u>>>(32-7);\n u = x14 + x10 | 0;\n x2 ^= u<<9 | u>>>(32-9);\n u = x2 + x14 | 0;\n x6 ^= u<<13 | u>>>(32-13);\n u = x6 + x2 | 0;\n x10 ^= u<<18 | u>>>(32-18);\n\n u = x15 + x11 | 0;\n x3 ^= u<<7 | u>>>(32-7);\n u = x3 + x15 | 0;\n x7 ^= u<<9 | u>>>(32-9);\n u = x7 + x3 | 0;\n x11 ^= u<<13 | u>>>(32-13);\n u = x11 + x7 | 0;\n x15 ^= u<<18 | u>>>(32-18);\n\n u = x0 + x3 | 0;\n x1 ^= u<<7 | u>>>(32-7);\n u = x1 + x0 | 0;\n x2 ^= u<<9 | u>>>(32-9);\n u = x2 + x1 | 0;\n x3 ^= u<<13 | u>>>(32-13);\n u = x3 + x2 | 0;\n x0 ^= u<<18 | u>>>(32-18);\n\n u = x5 + x4 | 0;\n x6 ^= u<<7 | u>>>(32-7);\n u = x6 + x5 | 0;\n x7 ^= u<<9 | u>>>(32-9);\n u = x7 + x6 | 0;\n x4 ^= u<<13 | u>>>(32-13);\n u = x4 + x7 | 0;\n x5 ^= u<<18 | u>>>(32-18);\n\n u = x10 + x9 | 0;\n x11 ^= u<<7 | u>>>(32-7);\n u = x11 + x10 | 0;\n x8 ^= u<<9 | u>>>(32-9);\n u = x8 + x11 | 0;\n x9 ^= u<<13 | u>>>(32-13);\n u = x9 + x8 | 0;\n x10 ^= u<<18 | u>>>(32-18);\n\n u = x15 + x14 | 0;\n x12 ^= u<<7 | u>>>(32-7);\n u = x12 + x15 | 0;\n x13 ^= u<<9 | u>>>(32-9);\n u = x13 + x12 | 0;\n x14 ^= u<<13 | u>>>(32-13);\n u = x14 + x13 | 0;\n x15 ^= u<<18 | u>>>(32-18);\n }\n\n o[ 0] = x0 >>> 0 & 0xff;\n o[ 1] = x0 >>> 8 & 0xff;\n o[ 2] = x0 >>> 16 & 0xff;\n o[ 3] = x0 >>> 24 & 0xff;\n\n o[ 4] = x5 >>> 0 & 0xff;\n o[ 5] = x5 >>> 8 & 0xff;\n o[ 6] = x5 >>> 16 & 0xff;\n o[ 7] = x5 >>> 24 & 0xff;\n\n o[ 8] = x10 >>> 0 & 0xff;\n o[ 9] = x10 >>> 8 & 0xff;\n o[10] = x10 >>> 16 & 0xff;\n o[11] = x10 >>> 24 & 0xff;\n\n o[12] = x15 >>> 0 & 0xff;\n o[13] = x15 >>> 8 & 0xff;\n o[14] = x15 >>> 16 & 0xff;\n o[15] = x15 >>> 24 & 0xff;\n\n o[16] = x6 >>> 0 & 0xff;\n o[17] = x6 >>> 8 & 0xff;\n o[18] = x6 >>> 16 & 0xff;\n o[19] = x6 >>> 24 & 0xff;\n\n o[20] = x7 >>> 0 & 0xff;\n o[21] = x7 >>> 8 & 0xff;\n o[22] = x7 >>> 16 & 0xff;\n o[23] = x7 >>> 24 & 0xff;\n\n o[24] = x8 >>> 0 & 0xff;\n o[25] = x8 >>> 8 & 0xff;\n o[26] = x8 >>> 16 & 0xff;\n o[27] = x8 >>> 24 & 0xff;\n\n o[28] = x9 >>> 0 & 0xff;\n o[29] = x9 >>> 8 & 0xff;\n o[30] = x9 >>> 16 & 0xff;\n o[31] = x9 >>> 24 & 0xff;\n}\n\nfunction crypto_core_salsa20(out,inp,k,c) {\n core_salsa20(out,inp,k,c);\n}\n\nfunction crypto_core_hsalsa20(out,inp,k,c) {\n core_hsalsa20(out,inp,k,c);\n}\n\nvar sigma = new Uint8Array([101, 120, 112, 97, 110, 100, 32, 51, 50, 45, 98, 121, 116, 101, 32, 107]);\n // \"expand 32-byte k\"\n\nfunction crypto_stream_salsa20_xor(c,cpos,m,mpos,b,n,k) {\n var z = new Uint8Array(16), x = new Uint8Array(64);\n var u, i;\n for (i = 0; i < 16; i++) z[i] = 0;\n for (i = 0; i < 8; i++) z[i] = n[i];\n while (b >= 64) {\n crypto_core_salsa20(x,z,k,sigma);\n for (i = 0; i < 64; i++) c[cpos+i] = m[mpos+i] ^ x[i];\n u = 1;\n for (i = 8; i < 16; i++) {\n u = u + (z[i] & 0xff) | 0;\n z[i] = u & 0xff;\n u >>>= 8;\n }\n b -= 64;\n cpos += 64;\n mpos += 64;\n }\n if (b > 0) {\n crypto_core_salsa20(x,z,k,sigma);\n for (i = 0; i < b; i++) c[cpos+i] = m[mpos+i] ^ x[i];\n }\n return 0;\n}\n\nfunction crypto_stream_salsa20(c,cpos,b,n,k) {\n var z = new Uint8Array(16), x = new Uint8Array(64);\n var u, i;\n for (i = 0; i < 16; i++) z[i] = 0;\n for (i = 0; i < 8; i++) z[i] = n[i];\n while (b >= 64) {\n crypto_core_salsa20(x,z,k,sigma);\n for (i = 0; i < 64; i++) c[cpos+i] = x[i];\n u = 1;\n for (i = 8; i < 16; i++) {\n u = u + (z[i] & 0xff) | 0;\n z[i] = u & 0xff;\n u >>>= 8;\n }\n b -= 64;\n cpos += 64;\n }\n if (b > 0) {\n crypto_core_salsa20(x,z,k,sigma);\n for (i = 0; i < b; i++) c[cpos+i] = x[i];\n }\n return 0;\n}\n\nfunction crypto_stream(c,cpos,d,n,k) {\n var s = new Uint8Array(32);\n crypto_core_hsalsa20(s,n,k,sigma);\n var sn = new Uint8Array(8);\n for (var i = 0; i < 8; i++) sn[i] = n[i+16];\n return crypto_stream_salsa20(c,cpos,d,sn,s);\n}\n\nfunction crypto_stream_xor(c,cpos,m,mpos,d,n,k) {\n var s = new Uint8Array(32);\n crypto_core_hsalsa20(s,n,k,sigma);\n var sn = new Uint8Array(8);\n for (var i = 0; i < 8; i++) sn[i] = n[i+16];\n return crypto_stream_salsa20_xor(c,cpos,m,mpos,d,sn,s);\n}\n\n/*\n* Port of Andrew Moon's Poly1305-donna-16. Public domain.\n* https://github.com/floodyberry/poly1305-donna\n*/\n\nvar poly1305 = function(key) {\n this.buffer = new Uint8Array(16);\n this.r = new Uint16Array(10);\n this.h = new Uint16Array(10);\n this.pad = new Uint16Array(8);\n this.leftover = 0;\n this.fin = 0;\n\n var t0, t1, t2, t3, t4, t5, t6, t7;\n\n t0 = key[ 0] & 0xff | (key[ 1] & 0xff) << 8; this.r[0] = ( t0 ) & 0x1fff;\n t1 = key[ 2] & 0xff | (key[ 3] & 0xff) << 8; this.r[1] = ((t0 >>> 13) | (t1 << 3)) & 0x1fff;\n t2 = key[ 4] & 0xff | (key[ 5] & 0xff) << 8; this.r[2] = ((t1 >>> 10) | (t2 << 6)) & 0x1f03;\n t3 = key[ 6] & 0xff | (key[ 7] & 0xff) << 8; this.r[3] = ((t2 >>> 7) | (t3 << 9)) & 0x1fff;\n t4 = key[ 8] & 0xff | (key[ 9] & 0xff) << 8; this.r[4] = ((t3 >>> 4) | (t4 << 12)) & 0x00ff;\n this.r[5] = ((t4 >>> 1)) & 0x1ffe;\n t5 = key[10] & 0xff | (key[11] & 0xff) << 8; this.r[6] = ((t4 >>> 14) | (t5 << 2)) & 0x1fff;\n t6 = key[12] & 0xff | (key[13] & 0xff) << 8; this.r[7] = ((t5 >>> 11) | (t6 << 5)) & 0x1f81;\n t7 = key[14] & 0xff | (key[15] & 0xff) << 8; this.r[8] = ((t6 >>> 8) | (t7 << 8)) & 0x1fff;\n this.r[9] = ((t7 >>> 5)) & 0x007f;\n\n this.pad[0] = key[16] & 0xff | (key[17] & 0xff) << 8;\n this.pad[1] = key[18] & 0xff | (key[19] & 0xff) << 8;\n this.pad[2] = key[20] & 0xff | (key[21] & 0xff) << 8;\n this.pad[3] = key[22] & 0xff | (key[23] & 0xff) << 8;\n this.pad[4] = key[24] & 0xff | (key[25] & 0xff) << 8;\n this.pad[5] = key[26] & 0xff | (key[27] & 0xff) << 8;\n this.pad[6] = key[28] & 0xff | (key[29] & 0xff) << 8;\n this.pad[7] = key[30] & 0xff | (key[31] & 0xff) << 8;\n};\n\npoly1305.prototype.blocks = function(m, mpos, bytes) {\n var hibit = this.fin ? 0 : (1 << 11);\n var t0, t1, t2, t3, t4, t5, t6, t7, c;\n var d0, d1, d2, d3, d4, d5, d6, d7, d8, d9;\n\n var h0 = this.h[0],\n h1 = this.h[1],\n h2 = this.h[2],\n h3 = this.h[3],\n h4 = this.h[4],\n h5 = this.h[5],\n h6 = this.h[6],\n h7 = this.h[7],\n h8 = this.h[8],\n h9 = this.h[9];\n\n var r0 = this.r[0],\n r1 = this.r[1],\n r2 = this.r[2],\n r3 = this.r[3],\n r4 = this.r[4],\n r5 = this.r[5],\n r6 = this.r[6],\n r7 = this.r[7],\n r8 = this.r[8],\n r9 = this.r[9];\n\n while (bytes >= 16) {\n t0 = m[mpos+ 0] & 0xff | (m[mpos+ 1] & 0xff) << 8; h0 += ( t0 ) & 0x1fff;\n t1 = m[mpos+ 2] & 0xff | (m[mpos+ 3] & 0xff) << 8; h1 += ((t0 >>> 13) | (t1 << 3)) & 0x1fff;\n t2 = m[mpos+ 4] & 0xff | (m[mpos+ 5] & 0xff) << 8; h2 += ((t1 >>> 10) | (t2 << 6)) & 0x1fff;\n t3 = m[mpos+ 6] & 0xff | (m[mpos+ 7] & 0xff) << 8; h3 += ((t2 >>> 7) | (t3 << 9)) & 0x1fff;\n t4 = m[mpos+ 8] & 0xff | (m[mpos+ 9] & 0xff) << 8; h4 += ((t3 >>> 4) | (t4 << 12)) & 0x1fff;\n h5 += ((t4 >>> 1)) & 0x1fff;\n t5 = m[mpos+10] & 0xff | (m[mpos+11] & 0xff) << 8; h6 += ((t4 >>> 14) | (t5 << 2)) & 0x1fff;\n t6 = m[mpos+12] & 0xff | (m[mpos+13] & 0xff) << 8; h7 += ((t5 >>> 11) | (t6 << 5)) & 0x1fff;\n t7 = m[mpos+14] & 0xff | (m[mpos+15] & 0xff) << 8; h8 += ((t6 >>> 8) | (t7 << 8)) & 0x1fff;\n h9 += ((t7 >>> 5)) | hibit;\n\n c = 0;\n\n d0 = c;\n d0 += h0 * r0;\n d0 += h1 * (5 * r9);\n d0 += h2 * (5 * r8);\n d0 += h3 * (5 * r7);\n d0 += h4 * (5 * r6);\n c = (d0 >>> 13); d0 &= 0x1fff;\n d0 += h5 * (5 * r5);\n d0 += h6 * (5 * r4);\n d0 += h7 * (5 * r3);\n d0 += h8 * (5 * r2);\n d0 += h9 * (5 * r1);\n c += (d0 >>> 13); d0 &= 0x1fff;\n\n d1 = c;\n d1 += h0 * r1;\n d1 += h1 * r0;\n d1 += h2 * (5 * r9);\n d1 += h3 * (5 * r8);\n d1 += h4 * (5 * r7);\n c = (d1 >>> 13); d1 &= 0x1fff;\n d1 += h5 * (5 * r6);\n d1 += h6 * (5 * r5);\n d1 += h7 * (5 * r4);\n d1 += h8 * (5 * r3);\n d1 += h9 * (5 * r2);\n c += (d1 >>> 13); d1 &= 0x1fff;\n\n d2 = c;\n d2 += h0 * r2;\n d2 += h1 * r1;\n d2 += h2 * r0;\n d2 += h3 * (5 * r9);\n d2 += h4 * (5 * r8);\n c = (d2 >>> 13); d2 &= 0x1fff;\n d2 += h5 * (5 * r7);\n d2 += h6 * (5 * r6);\n d2 += h7 * (5 * r5);\n d2 += h8 * (5 * r4);\n d2 += h9 * (5 * r3);\n c += (d2 >>> 13); d2 &= 0x1fff;\n\n d3 = c;\n d3 += h0 * r3;\n d3 += h1 * r2;\n d3 += h2 * r1;\n d3 += h3 * r0;\n d3 += h4 * (5 * r9);\n c = (d3 >>> 13); d3 &= 0x1fff;\n d3 += h5 * (5 * r8);\n d3 += h6 * (5 * r7);\n d3 += h7 * (5 * r6);\n d3 += h8 * (5 * r5);\n d3 += h9 * (5 * r4);\n c += (d3 >>> 13); d3 &= 0x1fff;\n\n d4 = c;\n d4 += h0 * r4;\n d4 += h1 * r3;\n d4 += h2 * r2;\n d4 += h3 * r1;\n d4 += h4 * r0;\n c = (d4 >>> 13); d4 &= 0x1fff;\n d4 += h5 * (5 * r9);\n d4 += h6 * (5 * r8);\n d4 += h7 * (5 * r7);\n d4 += h8 * (5 * r6);\n d4 += h9 * (5 * r5);\n c += (d4 >>> 13); d4 &= 0x1fff;\n\n d5 = c;\n d5 += h0 * r5;\n d5 += h1 * r4;\n d5 += h2 * r3;\n d5 += h3 * r2;\n d5 += h4 * r1;\n c = (d5 >>> 13); d5 &= 0x1fff;\n d5 += h5 * r0;\n d5 += h6 * (5 * r9);\n d5 += h7 * (5 * r8);\n d5 += h8 * (5 * r7);\n d5 += h9 * (5 * r6);\n c += (d5 >>> 13); d5 &= 0x1fff;\n\n d6 = c;\n d6 += h0 * r6;\n d6 += h1 * r5;\n d6 += h2 * r4;\n d6 += h3 * r3;\n d6 += h4 * r2;\n c = (d6 >>> 13); d6 &= 0x1fff;\n d6 += h5 * r1;\n d6 += h6 * r0;\n d6 += h7 * (5 * r9);\n d6 += h8 * (5 * r8);\n d6 += h9 * (5 * r7);\n c += (d6 >>> 13); d6 &= 0x1fff;\n\n d7 = c;\n d7 += h0 * r7;\n d7 += h1 * r6;\n d7 += h2 * r5;\n d7 += h3 * r4;\n d7 += h4 * r3;\n c = (d7 >>> 13); d7 &= 0x1fff;\n d7 += h5 * r2;\n d7 += h6 * r1;\n d7 += h7 * r0;\n d7 += h8 * (5 * r9);\n d7 += h9 * (5 * r8);\n c += (d7 >>> 13); d7 &= 0x1fff;\n\n d8 = c;\n d8 += h0 * r8;\n d8 += h1 * r7;\n d8 += h2 * r6;\n d8 += h3 * r5;\n d8 += h4 * r4;\n c = (d8 >>> 13); d8 &= 0x1fff;\n d8 += h5 * r3;\n d8 += h6 * r2;\n d8 += h7 * r1;\n d8 += h8 * r0;\n d8 += h9 * (5 * r9);\n c += (d8 >>> 13); d8 &= 0x1fff;\n\n d9 = c;\n d9 += h0 * r9;\n d9 += h1 * r8;\n d9 += h2 * r7;\n d9 += h3 * r6;\n d9 += h4 * r5;\n c = (d9 >>> 13); d9 &= 0x1fff;\n d9 += h5 * r4;\n d9 += h6 * r3;\n d9 += h7 * r2;\n d9 += h8 * r1;\n d9 += h9 * r0;\n c += (d9 >>> 13); d9 &= 0x1fff;\n\n c = (((c << 2) + c)) | 0;\n c = (c + d0) | 0;\n d0 = c & 0x1fff;\n c = (c >>> 13);\n d1 += c;\n\n h0 = d0;\n h1 = d1;\n h2 = d2;\n h3 = d3;\n h4 = d4;\n h5 = d5;\n h6 = d6;\n h7 = d7;\n h8 = d8;\n h9 = d9;\n\n mpos += 16;\n bytes -= 16;\n }\n this.h[0] = h0;\n this.h[1] = h1;\n this.h[2] = h2;\n this.h[3] = h3;\n this.h[4] = h4;\n this.h[5] = h5;\n this.h[6] = h6;\n this.h[7] = h7;\n this.h[8] = h8;\n this.h[9] = h9;\n};\n\npoly1305.prototype.finish = function(mac, macpos) {\n var g = new Uint16Array(10);\n var c, mask, f, i;\n\n if (this.leftover) {\n i = this.leftover;\n this.buffer[i++] = 1;\n for (; i < 16; i++) this.buffer[i] = 0;\n this.fin = 1;\n this.blocks(this.buffer, 0, 16);\n }\n\n c = this.h[1] >>> 13;\n this.h[1] &= 0x1fff;\n for (i = 2; i < 10; i++) {\n this.h[i] += c;\n c = this.h[i] >>> 13;\n this.h[i] &= 0x1fff;\n }\n this.h[0] += (c * 5);\n c = this.h[0] >>> 13;\n this.h[0] &= 0x1fff;\n this.h[1] += c;\n c = this.h[1] >>> 13;\n this.h[1] &= 0x1fff;\n this.h[2] += c;\n\n g[0] = this.h[0] + 5;\n c = g[0] >>> 13;\n g[0] &= 0x1fff;\n for (i = 1; i < 10; i++) {\n g[i] = this.h[i] + c;\n c = g[i] >>> 13;\n g[i] &= 0x1fff;\n }\n g[9] -= (1 << 13);\n\n mask = (c ^ 1) - 1;\n for (i = 0; i < 10; i++) g[i] &= mask;\n mask = ~mask;\n for (i = 0; i < 10; i++) this.h[i] = (this.h[i] & mask) | g[i];\n\n this.h[0] = ((this.h[0] ) | (this.h[1] << 13) ) & 0xffff;\n this.h[1] = ((this.h[1] >>> 3) | (this.h[2] << 10) ) & 0xffff;\n this.h[2] = ((this.h[2] >>> 6) | (this.h[3] << 7) ) & 0xffff;\n this.h[3] = ((this.h[3] >>> 9) | (this.h[4] << 4) ) & 0xffff;\n this.h[4] = ((this.h[4] >>> 12) | (this.h[5] << 1) | (this.h[6] << 14)) & 0xffff;\n this.h[5] = ((this.h[6] >>> 2) | (this.h[7] << 11) ) & 0xffff;\n this.h[6] = ((this.h[7] >>> 5) | (this.h[8] << 8) ) & 0xffff;\n this.h[7] = ((this.h[8] >>> 8) | (this.h[9] << 5) ) & 0xffff;\n\n f = this.h[0] + this.pad[0];\n this.h[0] = f & 0xffff;\n for (i = 1; i < 8; i++) {\n f = (((this.h[i] + this.pad[i]) | 0) + (f >>> 16)) | 0;\n this.h[i] = f & 0xffff;\n }\n\n mac[macpos+ 0] = (this.h[0] >>> 0) & 0xff;\n mac[macpos+ 1] = (this.h[0] >>> 8) & 0xff;\n mac[macpos+ 2] = (this.h[1] >>> 0) & 0xff;\n mac[macpos+ 3] = (this.h[1] >>> 8) & 0xff;\n mac[macpos+ 4] = (this.h[2] >>> 0) & 0xff;\n mac[macpos+ 5] = (this.h[2] >>> 8) & 0xff;\n mac[macpos+ 6] = (this.h[3] >>> 0) & 0xff;\n mac[macpos+ 7] = (this.h[3] >>> 8) & 0xff;\n mac[macpos+ 8] = (this.h[4] >>> 0) & 0xff;\n mac[macpos+ 9] = (this.h[4] >>> 8) & 0xff;\n mac[macpos+10] = (this.h[5] >>> 0) & 0xff;\n mac[macpos+11] = (this.h[5] >>> 8) & 0xff;\n mac[macpos+12] = (this.h[6] >>> 0) & 0xff;\n mac[macpos+13] = (this.h[6] >>> 8) & 0xff;\n mac[macpos+14] = (this.h[7] >>> 0) & 0xff;\n mac[macpos+15] = (this.h[7] >>> 8) & 0xff;\n};\n\npoly1305.prototype.update = function(m, mpos, bytes) {\n var i, want;\n\n if (this.leftover) {\n want = (16 - this.leftover);\n if (want > bytes)\n want = bytes;\n for (i = 0; i < want; i++)\n this.buffer[this.leftover + i] = m[mpos+i];\n bytes -= want;\n mpos += want;\n this.leftover += want;\n if (this.leftover < 16)\n return;\n this.blocks(this.buffer, 0, 16);\n this.leftover = 0;\n }\n\n if (bytes >= 16) {\n want = bytes - (bytes % 16);\n this.blocks(m, mpos, want);\n mpos += want;\n bytes -= want;\n }\n\n if (bytes) {\n for (i = 0; i < bytes; i++)\n this.buffer[this.leftover + i] = m[mpos+i];\n this.leftover += bytes;\n }\n};\n\nfunction crypto_onetimeauth(out, outpos, m, mpos, n, k) {\n var s = new poly1305(k);\n s.update(m, mpos, n);\n s.finish(out, outpos);\n return 0;\n}\n\nfunction crypto_onetimeauth_verify(h, hpos, m, mpos, n, k) {\n var x = new Uint8Array(16);\n crypto_onetimeauth(x,0,m,mpos,n,k);\n return crypto_verify_16(h,hpos,x,0);\n}\n\nfunction crypto_secretbox(c,m,d,n,k) {\n var i;\n if (d < 32) return -1;\n crypto_stream_xor(c,0,m,0,d,n,k);\n crypto_onetimeauth(c, 16, c, 32, d - 32, c);\n for (i = 0; i < 16; i++) c[i] = 0;\n return 0;\n}\n\nfunction crypto_secretbox_open(m,c,d,n,k) {\n var i;\n var x = new Uint8Array(32);\n if (d < 32) return -1;\n crypto_stream(x,0,32,n,k);\n if (crypto_onetimeauth_verify(c, 16,c, 32,d - 32,x) !== 0) return -1;\n crypto_stream_xor(m,0,c,0,d,n,k);\n for (i = 0; i < 32; i++) m[i] = 0;\n return 0;\n}\n\nfunction set25519(r, a) {\n var i;\n for (i = 0; i < 16; i++) r[i] = a[i]|0;\n}\n\nfunction car25519(o) {\n var i, v, c = 1;\n for (i = 0; i < 16; i++) {\n v = o[i] + c + 65535;\n c = Math.floor(v / 65536);\n o[i] = v - c * 65536;\n }\n o[0] += c-1 + 37 * (c-1);\n}\n\nfunction sel25519(p, q, b) {\n var t, c = ~(b-1);\n for (var i = 0; i < 16; i++) {\n t = c & (p[i] ^ q[i]);\n p[i] ^= t;\n q[i] ^= t;\n }\n}\n\nfunction pack25519(o, n) {\n var i, j, b;\n var m = gf(), t = gf();\n for (i = 0; i < 16; i++) t[i] = n[i];\n car25519(t);\n car25519(t);\n car25519(t);\n for (j = 0; j < 2; j++) {\n m[0] = t[0] - 0xffed;\n for (i = 1; i < 15; i++) {\n m[i] = t[i] - 0xffff - ((m[i-1]>>16) & 1);\n m[i-1] &= 0xffff;\n }\n m[15] = t[15] - 0x7fff - ((m[14]>>16) & 1);\n b = (m[15]>>16) & 1;\n m[14] &= 0xffff;\n sel25519(t, m, 1-b);\n }\n for (i = 0; i < 16; i++) {\n o[2*i] = t[i] & 0xff;\n o[2*i+1] = t[i]>>8;\n }\n}\n\nfunction neq25519(a, b) {\n var c = new Uint8Array(32), d = new Uint8Array(32);\n pack25519(c, a);\n pack25519(d, b);\n return crypto_verify_32(c, 0, d, 0);\n}\n\nfunction par25519(a) {\n var d = new Uint8Array(32);\n pack25519(d, a);\n return d[0] & 1;\n}\n\nfunction unpack25519(o, n) {\n var i;\n for (i = 0; i < 16; i++) o[i] = n[2*i] + (n[2*i+1] << 8);\n o[15] &= 0x7fff;\n}\n\nfunction A(o, a, b) {\n for (var i = 0; i < 16; i++) o[i] = a[i] + b[i];\n}\n\nfunction Z(o, a, b) {\n for (var i = 0; i < 16; i++) o[i] = a[i] - b[i];\n}\n\nfunction M(o, a, b) {\n var v, c,\n t0 = 0, t1 = 0, t2 = 0, t3 = 0, t4 = 0, t5 = 0, t6 = 0, t7 = 0,\n t8 = 0, t9 = 0, t10 = 0, t11 = 0, t12 = 0, t13 = 0, t14 = 0, t15 = 0,\n t16 = 0, t17 = 0, t18 = 0, t19 = 0, t20 = 0, t21 = 0, t22 = 0, t23 = 0,\n t24 = 0, t25 = 0, t26 = 0, t27 = 0, t28 = 0, t29 = 0, t30 = 0,\n b0 = b[0],\n b1 = b[1],\n b2 = b[2],\n b3 = b[3],\n b4 = b[4],\n b5 = b[5],\n b6 = b[6],\n b7 = b[7],\n b8 = b[8],\n b9 = b[9],\n b10 = b[10],\n b11 = b[11],\n b12 = b[12],\n b13 = b[13],\n b14 = b[14],\n b15 = b[15];\n\n v = a[0];\n t0 += v * b0;\n t1 += v * b1;\n t2 += v * b2;\n t3 += v * b3;\n t4 += v * b4;\n t5 += v * b5;\n t6 += v * b6;\n t7 += v * b7;\n t8 += v * b8;\n t9 += v * b9;\n t10 += v * b10;\n t11 += v * b11;\n t12 += v * b12;\n t13 += v * b13;\n t14 += v * b14;\n t15 += v * b15;\n v = a[1];\n t1 += v * b0;\n t2 += v * b1;\n t3 += v * b2;\n t4 += v * b3;\n t5 += v * b4;\n t6 += v * b5;\n t7 += v * b6;\n t8 += v * b7;\n t9 += v * b8;\n t10 += v * b9;\n t11 += v * b10;\n t12 += v * b11;\n t13 += v * b12;\n t14 += v * b13;\n t15 += v * b14;\n t16 += v * b15;\n v = a[2];\n t2 += v * b0;\n t3 += v * b1;\n t4 += v * b2;\n t5 += v * b3;\n t6 += v * b4;\n t7 += v * b5;\n t8 += v * b6;\n t9 += v * b7;\n t10 += v * b8;\n t11 += v * b9;\n t12 += v * b10;\n t13 += v * b11;\n t14 += v * b12;\n t15 += v * b13;\n t16 += v * b14;\n t17 += v * b15;\n v = a[3];\n t3 += v * b0;\n t4 += v * b1;\n t5 += v * b2;\n t6 += v * b3;\n t7 += v * b4;\n t8 += v * b5;\n t9 += v * b6;\n t10 += v * b7;\n t11 += v * b8;\n t12 += v * b9;\n t13 += v * b10;\n t14 += v * b11;\n t15 += v * b12;\n t16 += v * b13;\n t17 += v * b14;\n t18 += v * b15;\n v = a[4];\n t4 += v * b0;\n t5 += v * b1;\n t6 += v * b2;\n t7 += v * b3;\n t8 += v * b4;\n t9 += v * b5;\n t10 += v * b6;\n t11 += v * b7;\n t12 += v * b8;\n t13 += v * b9;\n t14 += v * b10;\n t15 += v * b11;\n t16 += v * b12;\n t17 += v * b13;\n t18 += v * b14;\n t19 += v * b15;\n v = a[5];\n t5 += v * b0;\n t6 += v * b1;\n t7 += v * b2;\n t8 += v * b3;\n t9 += v * b4;\n t10 += v * b5;\n t11 += v * b6;\n t12 += v * b7;\n t13 += v * b8;\n t14 += v * b9;\n t15 += v * b10;\n t16 += v * b11;\n t17 += v * b12;\n t18 += v * b13;\n t19 += v * b14;\n t20 += v * b15;\n v = a[6];\n t6 += v * b0;\n t7 += v * b1;\n t8 += v * b2;\n t9 += v * b3;\n t10 += v * b4;\n t11 += v * b5;\n t12 += v * b6;\n t13 += v * b7;\n t14 += v * b8;\n t15 += v * b9;\n t16 += v * b10;\n t17 += v * b11;\n t18 += v * b12;\n t19 += v * b13;\n t20 += v * b14;\n t21 += v * b15;\n v = a[7];\n t7 += v * b0;\n t8 += v * b1;\n t9 += v * b2;\n t10 += v * b3;\n t11 += v * b4;\n t12 += v * b5;\n t13 += v * b6;\n t14 += v * b7;\n t15 += v * b8;\n t16 += v * b9;\n t17 += v * b10;\n t18 += v * b11;\n t19 += v * b12;\n t20 += v * b13;\n t21 += v * b14;\n t22 += v * b15;\n v = a[8];\n t8 += v * b0;\n t9 += v * b1;\n t10 += v * b2;\n t11 += v * b3;\n t12 += v * b4;\n t13 += v * b5;\n t14 += v * b6;\n t15 += v * b7;\n t16 += v * b8;\n t17 += v * b9;\n t18 += v * b10;\n t19 += v * b11;\n t20 += v * b12;\n t21 += v * b13;\n t22 += v * b14;\n t23 += v * b15;\n v = a[9];\n t9 += v * b0;\n t10 += v * b1;\n t11 += v * b2;\n t12 += v * b3;\n t13 += v * b4;\n t14 += v * b5;\n t15 += v * b6;\n t16 += v * b7;\n t17 += v * b8;\n t18 += v * b9;\n t19 += v * b10;\n t20 += v * b11;\n t21 += v * b12;\n t22 += v * b13;\n t23 += v * b14;\n t24 += v * b15;\n v = a[10];\n t10 += v * b0;\n t11 += v * b1;\n t12 += v * b2;\n t13 += v * b3;\n t14 += v * b4;\n t15 += v * b5;\n t16 += v * b6;\n t17 += v * b7;\n t18 += v * b8;\n t19 += v * b9;\n t20 += v * b10;\n t21 += v * b11;\n t22 += v * b12;\n t23 += v * b13;\n t24 += v * b14;\n t25 += v * b15;\n v = a[11];\n t11 += v * b0;\n t12 += v * b1;\n t13 += v * b2;\n t14 += v * b3;\n t15 += v * b4;\n t16 += v * b5;\n t17 += v * b6;\n t18 += v * b7;\n t19 += v * b8;\n t20 += v * b9;\n t21 += v * b10;\n t22 += v * b11;\n t23 += v * b12;\n t24 += v * b13;\n t25 += v * b14;\n t26 += v * b15;\n v = a[12];\n t12 += v * b0;\n t13 += v * b1;\n t14 += v * b2;\n t15 += v * b3;\n t16 += v * b4;\n t17 += v * b5;\n t18 += v * b6;\n t19 += v * b7;\n t20 += v * b8;\n t21 += v * b9;\n t22 += v * b10;\n t23 += v * b11;\n t24 += v * b12;\n t25 += v * b13;\n t26 += v * b14;\n t27 += v * b15;\n v = a[13];\n t13 += v * b0;\n t14 += v * b1;\n t15 += v * b2;\n t16 += v * b3;\n t17 += v * b4;\n t18 += v * b5;\n t19 += v * b6;\n t20 += v * b7;\n t21 += v * b8;\n t22 += v * b9;\n t23 += v * b10;\n t24 += v * b11;\n t25 += v * b12;\n t26 += v * b13;\n t27 += v * b14;\n t28 += v * b15;\n v = a[14];\n t14 += v * b0;\n t15 += v * b1;\n t16 += v * b2;\n t17 += v * b3;\n t18 += v * b4;\n t19 += v * b5;\n t20 += v * b6;\n t21 += v * b7;\n t22 += v * b8;\n t23 += v * b9;\n t24 += v * b10;\n t25 += v * b11;\n t26 += v * b12;\n t27 += v * b13;\n t28 += v * b14;\n t29 += v * b15;\n v = a[15];\n t15 += v * b0;\n t16 += v * b1;\n t17 += v * b2;\n t18 += v * b3;\n t19 += v * b4;\n t20 += v * b5;\n t21 += v * b6;\n t22 += v * b7;\n t23 += v * b8;\n t24 += v * b9;\n t25 += v * b10;\n t26 += v * b11;\n t27 += v * b12;\n t28 += v * b13;\n t29 += v * b14;\n t30 += v * b15;\n\n t0 += 38 * t16;\n t1 += 38 * t17;\n t2 += 38 * t18;\n t3 += 38 * t19;\n t4 += 38 * t20;\n t5 += 38 * t21;\n t6 += 38 * t22;\n t7 += 38 * t23;\n t8 += 38 * t24;\n t9 += 38 * t25;\n t10 += 38 * t26;\n t11 += 38 * t27;\n t12 += 38 * t28;\n t13 += 38 * t29;\n t14 += 38 * t30;\n // t15 left as is\n\n // first car\n c = 1;\n v = t0 + c + 65535; c = Math.floor(v / 65536); t0 = v - c * 65536;\n v = t1 + c + 65535; c = Math.floor(v / 65536); t1 = v - c * 65536;\n v = t2 + c + 65535; c = Math.floor(v / 65536); t2 = v - c * 65536;\n v = t3 + c + 65535; c = Math.floor(v / 65536); t3 = v - c * 65536;\n v = t4 + c + 65535; c = Math.floor(v / 65536); t4 = v - c * 65536;\n v = t5 + c + 65535; c = Math.floor(v / 65536); t5 = v - c * 65536;\n v = t6 + c + 65535; c = Math.floor(v / 65536); t6 = v - c * 65536;\n v = t7 + c + 65535; c = Math.floor(v / 65536); t7 = v - c * 65536;\n v = t8 + c + 65535; c = Math.floor(v / 65536); t8 = v - c * 65536;\n v = t9 + c + 65535; c = Math.floor(v / 65536); t9 = v - c * 65536;\n v = t10 + c + 65535; c = Math.floor(v / 65536); t10 = v - c * 65536;\n v = t11 + c + 65535; c = Math.floor(v / 65536); t11 = v - c * 65536;\n v = t12 + c + 65535; c = Math.floor(v / 65536); t12 = v - c * 65536;\n v = t13 + c + 65535; c = Math.floor(v / 65536); t13 = v - c * 65536;\n v = t14 + c + 65535; c = Math.floor(v / 65536); t14 = v - c * 65536;\n v = t15 + c + 65535; c = Math.floor(v / 65536); t15 = v - c * 65536;\n t0 += c-1 + 37 * (c-1);\n\n // second car\n c = 1;\n v = t0 + c + 65535; c = Math.floor(v / 65536); t0 = v - c * 65536;\n v = t1 + c + 65535; c = Math.floor(v / 65536); t1 = v - c * 65536;\n v = t2 + c + 65535; c = Math.floor(v / 65536); t2 = v - c * 65536;\n v = t3 + c + 65535; c = Math.floor(v / 65536); t3 = v - c * 65536;\n v = t4 + c + 65535; c = Math.floor(v / 65536); t4 = v - c * 65536;\n v = t5 + c + 65535; c = Math.floor(v / 65536); t5 = v - c * 65536;\n v = t6 + c + 65535; c = Math.floor(v / 65536); t6 = v - c * 65536;\n v = t7 + c + 65535; c = Math.floor(v / 65536); t7 = v - c * 65536;\n v = t8 + c + 65535; c = Math.floor(v / 65536); t8 = v - c * 65536;\n v = t9 + c + 65535; c = Math.floor(v / 65536); t9 = v - c * 65536;\n v = t10 + c + 65535; c = Math.floor(v / 65536); t10 = v - c * 65536;\n v = t11 + c + 65535; c = Math.floor(v / 65536); t11 = v - c * 65536;\n v = t12 + c + 65535; c = Math.floor(v / 65536); t12 = v - c * 65536;\n v = t13 + c + 65535; c = Math.floor(v / 65536); t13 = v - c * 65536;\n v = t14 + c + 65535; c = Math.floor(v / 65536); t14 = v - c * 65536;\n v = t15 + c + 65535; c = Math.floor(v / 65536); t15 = v - c * 65536;\n t0 += c-1 + 37 * (c-1);\n\n o[ 0] = t0;\n o[ 1] = t1;\n o[ 2] = t2;\n o[ 3] = t3;\n o[ 4] = t4;\n o[ 5] = t5;\n o[ 6] = t6;\n o[ 7] = t7;\n o[ 8] = t8;\n o[ 9] = t9;\n o[10] = t10;\n o[11] = t11;\n o[12] = t12;\n o[13] = t13;\n o[14] = t14;\n o[15] = t15;\n}\n\nfunction S(o, a) {\n M(o, a, a);\n}\n\nfunction inv25519(o, i) {\n var c = gf();\n var a;\n for (a = 0; a < 16; a++) c[a] = i[a];\n for (a = 253; a >= 0; a--) {\n S(c, c);\n if(a !== 2 && a !== 4) M(c, c, i);\n }\n for (a = 0; a < 16; a++) o[a] = c[a];\n}\n\nfunction pow2523(o, i) {\n var c = gf();\n var a;\n for (a = 0; a < 16; a++) c[a] = i[a];\n for (a = 250; a >= 0; a--) {\n S(c, c);\n if(a !== 1) M(c, c, i);\n }\n for (a = 0; a < 16; a++) o[a] = c[a];\n}\n\nfunction crypto_scalarmult(q, n, p) {\n var z = new Uint8Array(32);\n var x = new Float64Array(80), r, i;\n var a = gf(), b = gf(), c = gf(),\n d = gf(), e = gf(), f = gf();\n for (i = 0; i < 31; i++) z[i] = n[i];\n z[31]=(n[31]&127)|64;\n z[0]&=248;\n unpack25519(x,p);\n for (i = 0; i < 16; i++) {\n b[i]=x[i];\n d[i]=a[i]=c[i]=0;\n }\n a[0]=d[0]=1;\n for (i=254; i>=0; --i) {\n r=(z[i>>>3]>>>(i&7))&1;\n sel25519(a,b,r);\n sel25519(c,d,r);\n A(e,a,c);\n Z(a,a,c);\n A(c,b,d);\n Z(b,b,d);\n S(d,e);\n S(f,a);\n M(a,c,a);\n M(c,b,e);\n A(e,a,c);\n Z(a,a,c);\n S(b,a);\n Z(c,d,f);\n M(a,c,_121665);\n A(a,a,d);\n M(c,c,a);\n M(a,d,f);\n M(d,b,x);\n S(b,e);\n sel25519(a,b,r);\n sel25519(c,d,r);\n }\n for (i = 0; i < 16; i++) {\n x[i+16]=a[i];\n x[i+32]=c[i];\n x[i+48]=b[i];\n x[i+64]=d[i];\n }\n var x32 = x.subarray(32);\n var x16 = x.subarray(16);\n inv25519(x32,x32);\n M(x16,x16,x32);\n pack25519(q,x16);\n return 0;\n}\n\nfunction crypto_scalarmult_base(q, n) {\n return crypto_scalarmult(q, n, _9);\n}\n\nfunction crypto_box_keypair(y, x) {\n randombytes(x, 32);\n return crypto_scalarmult_base(y, x);\n}\n\nfunction crypto_box_beforenm(k, y, x) {\n var s = new Uint8Array(32);\n crypto_scalarmult(s, x, y);\n return crypto_core_hsalsa20(k, _0, s, sigma);\n}\n\nvar crypto_box_afternm = crypto_secretbox;\nvar crypto_box_open_afternm = crypto_secretbox_open;\n\nfunction crypto_box(c, m, d, n, y, x) {\n var k = new Uint8Array(32);\n crypto_box_beforenm(k, y, x);\n return crypto_box_afternm(c, m, d, n, k);\n}\n\nfunction crypto_box_open(m, c, d, n, y, x) {\n var k = new Uint8Array(32);\n crypto_box_beforenm(k, y, x);\n return crypto_box_open_afternm(m, c, d, n, k);\n}\n\nvar K = [\n 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd,\n 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,\n 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,\n 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,\n 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe,\n 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,\n 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1,\n 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,\n 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,\n 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,\n 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483,\n 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,\n 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210,\n 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,\n 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,\n 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,\n 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926,\n 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,\n 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8,\n 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,\n 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,\n 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,\n 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910,\n 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,\n 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53,\n 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,\n 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,\n 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,\n 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60,\n 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,\n 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9,\n 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,\n 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,\n 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,\n 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6,\n 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,\n 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493,\n 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,\n 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,\n 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817\n];\n\nfunction crypto_hashblocks_hl(hh, hl, m, n) {\n var wh = new Int32Array(16), wl = new Int32Array(16),\n bh0, bh1, bh2, bh3, bh4, bh5, bh6, bh7,\n bl0, bl1, bl2, bl3, bl4, bl5, bl6, bl7,\n th, tl, i, j, h, l, a, b, c, d;\n\n var ah0 = hh[0],\n ah1 = hh[1],\n ah2 = hh[2],\n ah3 = hh[3],\n ah4 = hh[4],\n ah5 = hh[5],\n ah6 = hh[6],\n ah7 = hh[7],\n\n al0 = hl[0],\n al1 = hl[1],\n al2 = hl[2],\n al3 = hl[3],\n al4 = hl[4],\n al5 = hl[5],\n al6 = hl[6],\n al7 = hl[7];\n\n var pos = 0;\n while (n >= 128) {\n for (i = 0; i < 16; i++) {\n j = 8 * i + pos;\n wh[i] = (m[j+0] << 24) | (m[j+1] << 16) | (m[j+2] << 8) | m[j+3];\n wl[i] = (m[j+4] << 24) | (m[j+5] << 16) | (m[j+6] << 8) | m[j+7];\n }\n for (i = 0; i < 80; i++) {\n bh0 = ah0;\n bh1 = ah1;\n bh2 = ah2;\n bh3 = ah3;\n bh4 = ah4;\n bh5 = ah5;\n bh6 = ah6;\n bh7 = ah7;\n\n bl0 = al0;\n bl1 = al1;\n bl2 = al2;\n bl3 = al3;\n bl4 = al4;\n bl5 = al5;\n bl6 = al6;\n bl7 = al7;\n\n // add\n h = ah7;\n l = al7;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n // Sigma1\n h = ((ah4 >>> 14) | (al4 << (32-14))) ^ ((ah4 >>> 18) | (al4 << (32-18))) ^ ((al4 >>> (41-32)) | (ah4 << (32-(41-32))));\n l = ((al4 >>> 14) | (ah4 << (32-14))) ^ ((al4 >>> 18) | (ah4 << (32-18))) ^ ((ah4 >>> (41-32)) | (al4 << (32-(41-32))));\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // Ch\n h = (ah4 & ah5) ^ (~ah4 & ah6);\n l = (al4 & al5) ^ (~al4 & al6);\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // K\n h = K[i*2];\n l = K[i*2+1];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // w\n h = wh[i%16];\n l = wl[i%16];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n th = c & 0xffff | d << 16;\n tl = a & 0xffff | b << 16;\n\n // add\n h = th;\n l = tl;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n // Sigma0\n h = ((ah0 >>> 28) | (al0 << (32-28))) ^ ((al0 >>> (34-32)) | (ah0 << (32-(34-32)))) ^ ((al0 >>> (39-32)) | (ah0 << (32-(39-32))));\n l = ((al0 >>> 28) | (ah0 << (32-28))) ^ ((ah0 >>> (34-32)) | (al0 << (32-(34-32)))) ^ ((ah0 >>> (39-32)) | (al0 << (32-(39-32))));\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // Maj\n h = (ah0 & ah1) ^ (ah0 & ah2) ^ (ah1 & ah2);\n l = (al0 & al1) ^ (al0 & al2) ^ (al1 & al2);\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n bh7 = (c & 0xffff) | (d << 16);\n bl7 = (a & 0xffff) | (b << 16);\n\n // add\n h = bh3;\n l = bl3;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = th;\n l = tl;\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n bh3 = (c & 0xffff) | (d << 16);\n bl3 = (a & 0xffff) | (b << 16);\n\n ah1 = bh0;\n ah2 = bh1;\n ah3 = bh2;\n ah4 = bh3;\n ah5 = bh4;\n ah6 = bh5;\n ah7 = bh6;\n ah0 = bh7;\n\n al1 = bl0;\n al2 = bl1;\n al3 = bl2;\n al4 = bl3;\n al5 = bl4;\n al6 = bl5;\n al7 = bl6;\n al0 = bl7;\n\n if (i%16 === 15) {\n for (j = 0; j < 16; j++) {\n // add\n h = wh[j];\n l = wl[j];\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = wh[(j+9)%16];\n l = wl[(j+9)%16];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // sigma0\n th = wh[(j+1)%16];\n tl = wl[(j+1)%16];\n h = ((th >>> 1) | (tl << (32-1))) ^ ((th >>> 8) | (tl << (32-8))) ^ (th >>> 7);\n l = ((tl >>> 1) | (th << (32-1))) ^ ((tl >>> 8) | (th << (32-8))) ^ ((tl >>> 7) | (th << (32-7)));\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // sigma1\n th = wh[(j+14)%16];\n tl = wl[(j+14)%16];\n h = ((th >>> 19) | (tl << (32-19))) ^ ((tl >>> (61-32)) | (th << (32-(61-32)))) ^ (th >>> 6);\n l = ((tl >>> 19) | (th << (32-19))) ^ ((th >>> (61-32)) | (tl << (32-(61-32)))) ^ ((tl >>> 6) | (th << (32-6)));\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n wh[j] = (c & 0xffff) | (d << 16);\n wl[j] = (a & 0xffff) | (b << 16);\n }\n }\n }\n\n // add\n h = ah0;\n l = al0;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[0];\n l = hl[0];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[0] = ah0 = (c & 0xffff) | (d << 16);\n hl[0] = al0 = (a & 0xffff) | (b << 16);\n\n h = ah1;\n l = al1;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[1];\n l = hl[1];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[1] = ah1 = (c & 0xffff) | (d << 16);\n hl[1] = al1 = (a & 0xffff) | (b << 16);\n\n h = ah2;\n l = al2;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[2];\n l = hl[2];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[2] = ah2 = (c & 0xffff) | (d << 16);\n hl[2] = al2 = (a & 0xffff) | (b << 16);\n\n h = ah3;\n l = al3;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[3];\n l = hl[3];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[3] = ah3 = (c & 0xffff) | (d << 16);\n hl[3] = al3 = (a & 0xffff) | (b << 16);\n\n h = ah4;\n l = al4;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[4];\n l = hl[4];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[4] = ah4 = (c & 0xffff) | (d << 16);\n hl[4] = al4 = (a & 0xffff) | (b << 16);\n\n h = ah5;\n l = al5;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[5];\n l = hl[5];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[5] = ah5 = (c & 0xffff) | (d << 16);\n hl[5] = al5 = (a & 0xffff) | (b << 16);\n\n h = ah6;\n l = al6;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[6];\n l = hl[6];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[6] = ah6 = (c & 0xffff) | (d << 16);\n hl[6] = al6 = (a & 0xffff) | (b << 16);\n\n h = ah7;\n l = al7;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[7];\n l = hl[7];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[7] = ah7 = (c & 0xffff) | (d << 16);\n hl[7] = al7 = (a & 0xffff) | (b << 16);\n\n pos += 128;\n n -= 128;\n }\n\n return n;\n}\n\nfunction crypto_hash(out, m, n) {\n var hh = new Int32Array(8),\n hl = new Int32Array(8),\n x = new Uint8Array(256),\n i, b = n;\n\n hh[0] = 0x6a09e667;\n hh[1] = 0xbb67ae85;\n hh[2] = 0x3c6ef372;\n hh[3] = 0xa54ff53a;\n hh[4] = 0x510e527f;\n hh[5] = 0x9b05688c;\n hh[6] = 0x1f83d9ab;\n hh[7] = 0x5be0cd19;\n\n hl[0] = 0xf3bcc908;\n hl[1] = 0x84caa73b;\n hl[2] = 0xfe94f82b;\n hl[3] = 0x5f1d36f1;\n hl[4] = 0xade682d1;\n hl[5] = 0x2b3e6c1f;\n hl[6] = 0xfb41bd6b;\n hl[7] = 0x137e2179;\n\n crypto_hashblocks_hl(hh, hl, m, n);\n n %= 128;\n\n for (i = 0; i < n; i++) x[i] = m[b-n+i];\n x[n] = 128;\n\n n = 256-128*(n<112?1:0);\n x[n-9] = 0;\n ts64(x, n-8, (b / 0x20000000) | 0, b << 3);\n crypto_hashblocks_hl(hh, hl, x, n);\n\n for (i = 0; i < 8; i++) ts64(out, 8*i, hh[i], hl[i]);\n\n return 0;\n}\n\nfunction add(p, q) {\n var a = gf(), b = gf(), c = gf(),\n d = gf(), e = gf(), f = gf(),\n g = gf(), h = gf(), t = gf();\n\n Z(a, p[1], p[0]);\n Z(t, q[1], q[0]);\n M(a, a, t);\n A(b, p[0], p[1]);\n A(t, q[0], q[1]);\n M(b, b, t);\n M(c, p[3], q[3]);\n M(c, c, D2);\n M(d, p[2], q[2]);\n A(d, d, d);\n Z(e, b, a);\n Z(f, d, c);\n A(g, d, c);\n A(h, b, a);\n\n M(p[0], e, f);\n M(p[1], h, g);\n M(p[2], g, f);\n M(p[3], e, h);\n}\n\nfunction cswap(p, q, b) {\n var i;\n for (i = 0; i < 4; i++) {\n sel25519(p[i], q[i], b);\n }\n}\n\nfunction pack(r, p) {\n var tx = gf(), ty = gf(), zi = gf();\n inv25519(zi, p[2]);\n M(tx, p[0], zi);\n M(ty, p[1], zi);\n pack25519(r, ty);\n r[31] ^= par25519(tx) << 7;\n}\n\nfunction scalarmult(p, q, s) {\n var b, i;\n set25519(p[0], gf0);\n set25519(p[1], gf1);\n set25519(p[2], gf1);\n set25519(p[3], gf0);\n for (i = 255; i >= 0; --i) {\n b = (s[(i/8)|0] >> (i&7)) & 1;\n cswap(p, q, b);\n add(q, p);\n add(p, p);\n cswap(p, q, b);\n }\n}\n\nfunction scalarbase(p, s) {\n var q = [gf(), gf(), gf(), gf()];\n set25519(q[0], X);\n set25519(q[1], Y);\n set25519(q[2], gf1);\n M(q[3], X, Y);\n scalarmult(p, q, s);\n}\n\nfunction crypto_sign_keypair(pk, sk, seeded) {\n var d = new Uint8Array(64);\n var p = [gf(), gf(), gf(), gf()];\n var i;\n\n if (!seeded) randombytes(sk, 32);\n crypto_hash(d, sk, 32);\n d[0] &= 248;\n d[31] &= 127;\n d[31] |= 64;\n\n scalarbase(p, d);\n pack(pk, p);\n\n for (i = 0; i < 32; i++) sk[i+32] = pk[i];\n return 0;\n}\n\nvar L = new Float64Array([0xed, 0xd3, 0xf5, 0x5c, 0x1a, 0x63, 0x12, 0x58, 0xd6, 0x9c, 0xf7, 0xa2, 0xde, 0xf9, 0xde, 0x14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x10]);\n\nfunction modL(r, x) {\n var carry, i, j, k;\n for (i = 63; i >= 32; --i) {\n carry = 0;\n for (j = i - 32, k = i - 12; j < k; ++j) {\n x[j] += carry - 16 * x[i] * L[j - (i - 32)];\n carry = Math.floor((x[j] + 128) / 256);\n x[j] -= carry * 256;\n }\n x[j] += carry;\n x[i] = 0;\n }\n carry = 0;\n for (j = 0; j < 32; j++) {\n x[j] += carry - (x[31] >> 4) * L[j];\n carry = x[j] >> 8;\n x[j] &= 255;\n }\n for (j = 0; j < 32; j++) x[j] -= carry * L[j];\n for (i = 0; i < 32; i++) {\n x[i+1] += x[i] >> 8;\n r[i] = x[i] & 255;\n }\n}\n\nfunction reduce(r) {\n var x = new Float64Array(64), i;\n for (i = 0; i < 64; i++) x[i] = r[i];\n for (i = 0; i < 64; i++) r[i] = 0;\n modL(r, x);\n}\n\n// Note: difference from C - smlen returned, not passed as argument.\nfunction crypto_sign(sm, m, n, sk) {\n var d = new Uint8Array(64), h = new Uint8Array(64), r = new Uint8Array(64);\n var i, j, x = new Float64Array(64);\n var p = [gf(), gf(), gf(), gf()];\n\n crypto_hash(d, sk, 32);\n d[0] &= 248;\n d[31] &= 127;\n d[31] |= 64;\n\n var smlen = n + 64;\n for (i = 0; i < n; i++) sm[64 + i] = m[i];\n for (i = 0; i < 32; i++) sm[32 + i] = d[32 + i];\n\n crypto_hash(r, sm.subarray(32), n+32);\n reduce(r);\n scalarbase(p, r);\n pack(sm, p);\n\n for (i = 32; i < 64; i++) sm[i] = sk[i];\n crypto_hash(h, sm, n + 64);\n reduce(h);\n\n for (i = 0; i < 64; i++) x[i] = 0;\n for (i = 0; i < 32; i++) x[i] = r[i];\n for (i = 0; i < 32; i++) {\n for (j = 0; j < 32; j++) {\n x[i+j] += h[i] * d[j];\n }\n }\n\n modL(sm.subarray(32), x);\n return smlen;\n}\n\nfunction unpackneg(r, p) {\n var t = gf(), chk = gf(), num = gf(),\n den = gf(), den2 = gf(), den4 = gf(),\n den6 = gf();\n\n set25519(r[2], gf1);\n unpack25519(r[1], p);\n S(num, r[1]);\n M(den, num, D);\n Z(num, num, r[2]);\n A(den, r[2], den);\n\n S(den2, den);\n S(den4, den2);\n M(den6, den4, den2);\n M(t, den6, num);\n M(t, t, den);\n\n pow2523(t, t);\n M(t, t, num);\n M(t, t, den);\n M(t, t, den);\n M(r[0], t, den);\n\n S(chk, r[0]);\n M(chk, chk, den);\n if (neq25519(chk, num)) M(r[0], r[0], I);\n\n S(chk, r[0]);\n M(chk, chk, den);\n if (neq25519(chk, num)) return -1;\n\n if (par25519(r[0]) === (p[31]>>7)) Z(r[0], gf0, r[0]);\n\n M(r[3], r[0], r[1]);\n return 0;\n}\n\nfunction crypto_sign_open(m, sm, n, pk) {\n var i;\n var t = new Uint8Array(32), h = new Uint8Array(64);\n var p = [gf(), gf(), gf(), gf()],\n q = [gf(), gf(), gf(), gf()];\n\n if (n < 64) return -1;\n\n if (unpackneg(q, pk)) return -1;\n\n for (i = 0; i < n; i++) m[i] = sm[i];\n for (i = 0; i < 32; i++) m[i+32] = pk[i];\n crypto_hash(h, m, n);\n reduce(h);\n scalarmult(p, q, h);\n\n scalarbase(q, sm.subarray(32));\n add(p, q);\n pack(t, p);\n\n n -= 64;\n if (crypto_verify_32(sm, 0, t, 0)) {\n for (i = 0; i < n; i++) m[i] = 0;\n return -1;\n }\n\n for (i = 0; i < n; i++) m[i] = sm[i + 64];\n return n;\n}\n\nvar crypto_secretbox_KEYBYTES = 32,\n crypto_secretbox_NONCEBYTES = 24,\n crypto_secretbox_ZEROBYTES = 32,\n crypto_secretbox_BOXZEROBYTES = 16,\n crypto_scalarmult_BYTES = 32,\n crypto_scalarmult_SCALARBYTES = 32,\n crypto_box_PUBLICKEYBYTES = 32,\n crypto_box_SECRETKEYBYTES = 32,\n crypto_box_BEFORENMBYTES = 32,\n crypto_box_NONCEBYTES = crypto_secretbox_NONCEBYTES,\n crypto_box_ZEROBYTES = crypto_secretbox_ZEROBYTES,\n crypto_box_BOXZEROBYTES = crypto_secretbox_BOXZEROBYTES,\n crypto_sign_BYTES = 64,\n crypto_sign_PUBLICKEYBYTES = 32,\n crypto_sign_SECRETKEYBYTES = 64,\n crypto_sign_SEEDBYTES = 32,\n crypto_hash_BYTES = 64;\n\nnacl.lowlevel = {\n crypto_core_hsalsa20: crypto_core_hsalsa20,\n crypto_stream_xor: crypto_stream_xor,\n crypto_stream: crypto_stream,\n crypto_stream_salsa20_xor: crypto_stream_salsa20_xor,\n crypto_stream_salsa20: crypto_stream_salsa20,\n crypto_onetimeauth: crypto_onetimeauth,\n crypto_onetimeauth_verify: crypto_onetimeauth_verify,\n crypto_verify_16: crypto_verify_16,\n crypto_verify_32: crypto_verify_32,\n crypto_secretbox: crypto_secretbox,\n crypto_secretbox_open: crypto_secretbox_open,\n crypto_scalarmult: crypto_scalarmult,\n crypto_scalarmult_base: crypto_scalarmult_base,\n crypto_box_beforenm: crypto_box_beforenm,\n crypto_box_afternm: crypto_box_afternm,\n crypto_box: crypto_box,\n crypto_box_open: crypto_box_open,\n crypto_box_keypair: crypto_box_keypair,\n crypto_hash: crypto_hash,\n crypto_sign: crypto_sign,\n crypto_sign_keypair: crypto_sign_keypair,\n crypto_sign_open: crypto_sign_open,\n\n crypto_secretbox_KEYBYTES: crypto_secretbox_KEYBYTES,\n crypto_secretbox_NONCEBYTES: crypto_secretbox_NONCEBYTES,\n crypto_secretbox_ZEROBYTES: crypto_secretbox_ZEROBYTES,\n crypto_secretbox_BOXZEROBYTES: crypto_secretbox_BOXZEROBYTES,\n crypto_scalarmult_BYTES: crypto_scalarmult_BYTES,\n crypto_scalarmult_SCALARBYTES: crypto_scalarmult_SCALARBYTES,\n crypto_box_PUBLICKEYBYTES: crypto_box_PUBLICKEYBYTES,\n crypto_box_SECRETKEYBYTES: crypto_box_SECRETKEYBYTES,\n crypto_box_BEFORENMBYTES: crypto_box_BEFORENMBYTES,\n crypto_box_NONCEBYTES: crypto_box_NONCEBYTES,\n crypto_box_ZEROBYTES: crypto_box_ZEROBYTES,\n crypto_box_BOXZEROBYTES: crypto_box_BOXZEROBYTES,\n crypto_sign_BYTES: crypto_sign_BYTES,\n crypto_sign_PUBLICKEYBYTES: crypto_sign_PUBLICKEYBYTES,\n crypto_sign_SECRETKEYBYTES: crypto_sign_SECRETKEYBYTES,\n crypto_sign_SEEDBYTES: crypto_sign_SEEDBYTES,\n crypto_hash_BYTES: crypto_hash_BYTES,\n\n gf: gf,\n D: D,\n L: L,\n pack25519: pack25519,\n unpack25519: unpack25519,\n M: M,\n A: A,\n S: S,\n Z: Z,\n pow2523: pow2523,\n add: add,\n set25519: set25519,\n modL: modL,\n scalarmult: scalarmult,\n scalarbase: scalarbase,\n};\n\n/* High-level API */\n\nfunction checkLengths(k, n) {\n if (k.length !== crypto_secretbox_KEYBYTES) throw new Error('bad key size');\n if (n.length !== crypto_secretbox_NONCEBYTES) throw new Error('bad nonce size');\n}\n\nfunction checkBoxLengths(pk, sk) {\n if (pk.length !== crypto_box_PUBLICKEYBYTES) throw new Error('bad public key size');\n if (sk.length !== crypto_box_SECRETKEYBYTES) throw new Error('bad secret key size');\n}\n\nfunction checkArrayTypes() {\n for (var i = 0; i < arguments.length; i++) {\n if (!(arguments[i] instanceof Uint8Array))\n throw new TypeError('unexpected type, use Uint8Array');\n }\n}\n\nfunction cleanup(arr) {\n for (var i = 0; i < arr.length; i++) arr[i] = 0;\n}\n\nnacl.randomBytes = function(n) {\n var b = new Uint8Array(n);\n randombytes(b, n);\n return b;\n};\n\nnacl.secretbox = function(msg, nonce, key) {\n checkArrayTypes(msg, nonce, key);\n checkLengths(key, nonce);\n var m = new Uint8Array(crypto_secretbox_ZEROBYTES + msg.length);\n var c = new Uint8Array(m.length);\n for (var i = 0; i < msg.length; i++) m[i+crypto_secretbox_ZEROBYTES] = msg[i];\n crypto_secretbox(c, m, m.length, nonce, key);\n return c.subarray(crypto_secretbox_BOXZEROBYTES);\n};\n\nnacl.secretbox.open = function(box, nonce, key) {\n checkArrayTypes(box, nonce, key);\n checkLengths(key, nonce);\n var c = new Uint8Array(crypto_secretbox_BOXZEROBYTES + box.length);\n var m = new Uint8Array(c.length);\n for (var i = 0; i < box.length; i++) c[i+crypto_secretbox_BOXZEROBYTES] = box[i];\n if (c.length < 32) return null;\n if (crypto_secretbox_open(m, c, c.length, nonce, key) !== 0) return null;\n return m.subarray(crypto_secretbox_ZEROBYTES);\n};\n\nnacl.secretbox.keyLength = crypto_secretbox_KEYBYTES;\nnacl.secretbox.nonceLength = crypto_secretbox_NONCEBYTES;\nnacl.secretbox.overheadLength = crypto_secretbox_BOXZEROBYTES;\n\nnacl.scalarMult = function(n, p) {\n checkArrayTypes(n, p);\n if (n.length !== crypto_scalarmult_SCALARBYTES) throw new Error('bad n size');\n if (p.length !== crypto_scalarmult_BYTES) throw new Error('bad p size');\n var q = new Uint8Array(crypto_scalarmult_BYTES);\n crypto_scalarmult(q, n, p);\n return q;\n};\n\nnacl.scalarMult.base = function(n) {\n checkArrayTypes(n);\n if (n.length !== crypto_scalarmult_SCALARBYTES) throw new Error('bad n size');\n var q = new Uint8Array(crypto_scalarmult_BYTES);\n crypto_scalarmult_base(q, n);\n return q;\n};\n\nnacl.scalarMult.scalarLength = crypto_scalarmult_SCALARBYTES;\nnacl.scalarMult.groupElementLength = crypto_scalarmult_BYTES;\n\nnacl.box = function(msg, nonce, publicKey, secretKey) {\n var k = nacl.box.before(publicKey, secretKey);\n return nacl.secretbox(msg, nonce, k);\n};\n\nnacl.box.before = function(publicKey, secretKey) {\n checkArrayTypes(publicKey, secretKey);\n checkBoxLengths(publicKey, secretKey);\n var k = new Uint8Array(crypto_box_BEFORENMBYTES);\n crypto_box_beforenm(k, publicKey, secretKey);\n return k;\n};\n\nnacl.box.after = nacl.secretbox;\n\nnacl.box.open = function(msg, nonce, publicKey, secretKey) {\n var k = nacl.box.before(publicKey, secretKey);\n return nacl.secretbox.open(msg, nonce, k);\n};\n\nnacl.box.open.after = nacl.secretbox.open;\n\nnacl.box.keyPair = function() {\n var pk = new Uint8Array(crypto_box_PUBLICKEYBYTES);\n var sk = new Uint8Array(crypto_box_SECRETKEYBYTES);\n crypto_box_keypair(pk, sk);\n return {publicKey: pk, secretKey: sk};\n};\n\nnacl.box.keyPair.fromSecretKey = function(secretKey) {\n checkArrayTypes(secretKey);\n if (secretKey.length !== crypto_box_SECRETKEYBYTES)\n throw new Error('bad secret key size');\n var pk = new Uint8Array(crypto_box_PUBLICKEYBYTES);\n crypto_scalarmult_base(pk, secretKey);\n return {publicKey: pk, secretKey: new Uint8Array(secretKey)};\n};\n\nnacl.box.publicKeyLength = crypto_box_PUBLICKEYBYTES;\nnacl.box.secretKeyLength = crypto_box_SECRETKEYBYTES;\nnacl.box.sharedKeyLength = crypto_box_BEFORENMBYTES;\nnacl.box.nonceLength = crypto_box_NONCEBYTES;\nnacl.box.overheadLength = nacl.secretbox.overheadLength;\n\nnacl.sign = function(msg, secretKey) {\n checkArrayTypes(msg, secretKey);\n if (secretKey.length !== crypto_sign_SECRETKEYBYTES)\n throw new Error('bad secret key size');\n var signedMsg = new Uint8Array(crypto_sign_BYTES+msg.length);\n crypto_sign(signedMsg, msg, msg.length, secretKey);\n return signedMsg;\n};\n\nnacl.sign.open = function(signedMsg, publicKey) {\n checkArrayTypes(signedMsg, publicKey);\n if (publicKey.length !== crypto_sign_PUBLICKEYBYTES)\n throw new Error('bad public key size');\n var tmp = new Uint8Array(signedMsg.length);\n var mlen = crypto_sign_open(tmp, signedMsg, signedMsg.length, publicKey);\n if (mlen < 0) return null;\n var m = new Uint8Array(mlen);\n for (var i = 0; i < m.length; i++) m[i] = tmp[i];\n return m;\n};\n\nnacl.sign.detached = function(msg, secretKey) {\n var signedMsg = nacl.sign(msg, secretKey);\n var sig = new Uint8Array(crypto_sign_BYTES);\n for (var i = 0; i < sig.length; i++) sig[i] = signedMsg[i];\n return sig;\n};\n\nnacl.sign.detached.verify = function(msg, sig, publicKey) {\n checkArrayTypes(msg, sig, publicKey);\n if (sig.length !== crypto_sign_BYTES)\n throw new Error('bad signature size');\n if (publicKey.length !== crypto_sign_PUBLICKEYBYTES)\n throw new Error('bad public key size');\n var sm = new Uint8Array(crypto_sign_BYTES + msg.length);\n var m = new Uint8Array(crypto_sign_BYTES + msg.length);\n var i;\n for (i = 0; i < crypto_sign_BYTES; i++) sm[i] = sig[i];\n for (i = 0; i < msg.length; i++) sm[i+crypto_sign_BYTES] = msg[i];\n return (crypto_sign_open(m, sm, sm.length, publicKey) >= 0);\n};\n\nnacl.sign.keyPair = function() {\n var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES);\n var sk = new Uint8Array(crypto_sign_SECRETKEYBYTES);\n crypto_sign_keypair(pk, sk);\n return {publicKey: pk, secretKey: sk};\n};\n\nnacl.sign.keyPair.fromSecretKey = function(secretKey) {\n checkArrayTypes(secretKey);\n if (secretKey.length !== crypto_sign_SECRETKEYBYTES)\n throw new Error('bad secret key size');\n var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES);\n for (var i = 0; i < pk.length; i++) pk[i] = secretKey[32+i];\n return {publicKey: pk, secretKey: new Uint8Array(secretKey)};\n};\n\nnacl.sign.keyPair.fromSeed = function(seed) {\n checkArrayTypes(seed);\n if (seed.length !== crypto_sign_SEEDBYTES)\n throw new Error('bad seed size');\n var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES);\n var sk = new Uint8Array(crypto_sign_SECRETKEYBYTES);\n for (var i = 0; i < 32; i++) sk[i] = seed[i];\n crypto_sign_keypair(pk, sk, true);\n return {publicKey: pk, secretKey: sk};\n};\n\nnacl.sign.publicKeyLength = crypto_sign_PUBLICKEYBYTES;\nnacl.sign.secretKeyLength = crypto_sign_SECRETKEYBYTES;\nnacl.sign.seedLength = crypto_sign_SEEDBYTES;\nnacl.sign.signatureLength = crypto_sign_BYTES;\n\nnacl.hash = function(msg) {\n checkArrayTypes(msg);\n var h = new Uint8Array(crypto_hash_BYTES);\n crypto_hash(h, msg, msg.length);\n return h;\n};\n\nnacl.hash.hashLength = crypto_hash_BYTES;\n\nnacl.verify = function(x, y) {\n checkArrayTypes(x, y);\n // Zero length arguments are considered not equal.\n if (x.length === 0 || y.length === 0) return false;\n if (x.length !== y.length) return false;\n return (vn(x, 0, y, 0, x.length) === 0) ? true : false;\n};\n\nnacl.setPRNG = function(fn) {\n randombytes = fn;\n};\n\n(function() {\n // Initialize PRNG if environment provides CSPRNG.\n // If not, methods calling randombytes will throw.\n var crypto = typeof self !== 'undefined' ? (self.crypto || self.msCrypto) : null;\n if (crypto && crypto.getRandomValues) {\n // Browsers.\n var QUOTA = 65536;\n nacl.setPRNG(function(x, n) {\n var i, v = new Uint8Array(n);\n for (i = 0; i < n; i += QUOTA) {\n crypto.getRandomValues(v.subarray(i, i + Math.min(n - i, QUOTA)));\n }\n for (i = 0; i < n; i++) x[i] = v[i];\n cleanup(v);\n });\n } else if (typeof require !== 'undefined') {\n // Node.js.\n crypto = require('crypto');\n if (crypto && crypto.randomBytes) {\n nacl.setPRNG(function(x, n) {\n var i, v = crypto.randomBytes(n);\n for (i = 0; i < n; i++) x[i] = v[i];\n cleanup(v);\n });\n }\n }\n})();\n\n})(typeof module !== 'undefined' && module.exports ? module.exports : (self.nacl = self.nacl || {}));\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SessionCrypto = void 0;\nvar session_crypto_1 = require(\"./session-crypto\");\nObject.defineProperty(exports, \"SessionCrypto\", { enumerable: true, get: function () { return session_crypto_1.SessionCrypto; } });\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SessionCrypto = void 0;\nconst utils_1 = require(\"../utils\");\nconst tweetnacl_1 = __importDefault(require(\"tweetnacl\"));\nif ((0, utils_1.isNode)()) {\n try {\n eval(\"global.crypto = require('crypto').webcrypto\");\n }\n catch (err) { }\n}\nclass SessionCrypto {\n constructor(keyPair) {\n this.nonceLength = 24;\n this.keyPair = keyPair ? this.createKeypairFromString(keyPair) : this.createKeypair();\n this.sessionId = (0, utils_1.toHexString)(this.keyPair.publicKey);\n }\n createKeypair() {\n return tweetnacl_1.default.box.keyPair();\n }\n createKeypairFromString(keyPair) {\n return {\n publicKey: (0, utils_1.hexToByteArray)(keyPair.publicKey),\n secretKey: (0, utils_1.hexToByteArray)(keyPair.secretKey)\n };\n }\n createNonce() {\n const buffer = new Uint8Array(this.nonceLength);\n return crypto.getRandomValues(buffer);\n }\n encrypt(message, receiverPublicKey) {\n const encodedMessage = new TextEncoder().encode(message);\n const nonce = this.createNonce();\n const encrypted = tweetnacl_1.default.box(encodedMessage, nonce, receiverPublicKey, this.keyPair.secretKey);\n return (0, utils_1.concatUint8Arrays)(nonce, encrypted);\n }\n decrypt(message, senderPublicKey) {\n const [nonce, internalMessage] = (0, utils_1.splitToUint8Arrays)(message, this.nonceLength);\n const decrypted = tweetnacl_1.default.box.open(internalMessage, nonce, senderPublicKey, this.keyPair.secretKey);\n if (!decrypted) {\n throw new Error('Decryption error');\n }\n return new TextDecoder().decode(decrypted);\n }\n stringifyKeypair() {\n return {\n publicKey: (0, utils_1.toHexString)(this.keyPair.publicKey),\n secretKey: (0, utils_1.toHexString)(this.keyPair.secretKey)\n };\n }\n}\nexports.SessionCrypto = SessionCrypto;\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./models\"), exports);\n__exportStar(require(\"./crypto\"), exports);\n__exportStar(require(\"./utils\"), exports);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.CHAIN = void 0;\nvar CHAIN;\n(function (CHAIN) {\n CHAIN[\"MAINNET\"] = \"-239\";\n CHAIN[\"TESTNET\"] = \"-3\";\n})(CHAIN = exports.CHAIN || (exports.CHAIN = {}));\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./request\"), exports);\n__exportStar(require(\"./connect-request\"), exports);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.CHAIN = void 0;\n__exportStar(require(\"./app-message\"), exports);\n__exportStar(require(\"./wallet-message\"), exports);\nvar CHAIN_1 = require(\"./CHAIN\");\nObject.defineProperty(exports, \"CHAIN\", { enumerable: true, get: function () { return CHAIN_1.CHAIN; } });\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./wallet-event\"), exports);\n__exportStar(require(\"./wallet-response\"), exports);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.CONNECT_ITEM_ERROR_CODES = exports.CONNECT_EVENT_ERROR_CODES = void 0;\nvar CONNECT_EVENT_ERROR_CODES;\n(function (CONNECT_EVENT_ERROR_CODES) {\n CONNECT_EVENT_ERROR_CODES[CONNECT_EVENT_ERROR_CODES[\"UNKNOWN_ERROR\"] = 0] = \"UNKNOWN_ERROR\";\n CONNECT_EVENT_ERROR_CODES[CONNECT_EVENT_ERROR_CODES[\"BAD_REQUEST_ERROR\"] = 1] = \"BAD_REQUEST_ERROR\";\n CONNECT_EVENT_ERROR_CODES[CONNECT_EVENT_ERROR_CODES[\"UNKNOWN_APP_ERROR\"] = 100] = \"UNKNOWN_APP_ERROR\";\n CONNECT_EVENT_ERROR_CODES[CONNECT_EVENT_ERROR_CODES[\"USER_REJECTS_ERROR\"] = 300] = \"USER_REJECTS_ERROR\";\n CONNECT_EVENT_ERROR_CODES[CONNECT_EVENT_ERROR_CODES[\"METHOD_NOT_SUPPORTED\"] = 400] = \"METHOD_NOT_SUPPORTED\";\n})(CONNECT_EVENT_ERROR_CODES = exports.CONNECT_EVENT_ERROR_CODES || (exports.CONNECT_EVENT_ERROR_CODES = {}));\nvar CONNECT_ITEM_ERROR_CODES;\n(function (CONNECT_ITEM_ERROR_CODES) {\n CONNECT_ITEM_ERROR_CODES[CONNECT_ITEM_ERROR_CODES[\"UNKNOWN_ERROR\"] = 0] = \"UNKNOWN_ERROR\";\n CONNECT_ITEM_ERROR_CODES[CONNECT_ITEM_ERROR_CODES[\"METHOD_NOT_SUPPORTED\"] = 400] = \"METHOD_NOT_SUPPORTED\";\n})(CONNECT_ITEM_ERROR_CODES = exports.CONNECT_ITEM_ERROR_CODES || (exports.CONNECT_ITEM_ERROR_CODES = {}));\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.CONNECT_EVENT_ERROR_CODES = void 0;\nvar connect_event_1 = require(\"./connect-event\");\nObject.defineProperty(exports, \"CONNECT_EVENT_ERROR_CODES\", { enumerable: true, get: function () { return connect_event_1.CONNECT_EVENT_ERROR_CODES; } });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SEND_TRANSACTION_ERROR_CODES = void 0;\nvar send_transaction_rpc_response_1 = require(\"./send-transaction-rpc-response\");\nObject.defineProperty(exports, \"SEND_TRANSACTION_ERROR_CODES\", { enumerable: true, get: function () { return send_transaction_rpc_response_1.SEND_TRANSACTION_ERROR_CODES; } });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SEND_TRANSACTION_ERROR_CODES = void 0;\nvar SEND_TRANSACTION_ERROR_CODES;\n(function (SEND_TRANSACTION_ERROR_CODES) {\n SEND_TRANSACTION_ERROR_CODES[SEND_TRANSACTION_ERROR_CODES[\"UNKNOWN_ERROR\"] = 0] = \"UNKNOWN_ERROR\";\n SEND_TRANSACTION_ERROR_CODES[SEND_TRANSACTION_ERROR_CODES[\"BAD_REQUEST_ERROR\"] = 1] = \"BAD_REQUEST_ERROR\";\n SEND_TRANSACTION_ERROR_CODES[SEND_TRANSACTION_ERROR_CODES[\"UNKNOWN_APP_ERROR\"] = 100] = \"UNKNOWN_APP_ERROR\";\n SEND_TRANSACTION_ERROR_CODES[SEND_TRANSACTION_ERROR_CODES[\"USER_REJECTS_ERROR\"] = 300] = \"USER_REJECTS_ERROR\";\n SEND_TRANSACTION_ERROR_CODES[SEND_TRANSACTION_ERROR_CODES[\"METHOD_NOT_SUPPORTED\"] = 400] = \"METHOD_NOT_SUPPORTED\";\n})(SEND_TRANSACTION_ERROR_CODES = exports.SEND_TRANSACTION_ERROR_CODES || (exports.SEND_TRANSACTION_ERROR_CODES = {}));\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Base64 = void 0;\nconst tweetnacl_util_1 = __importDefault(require(\"tweetnacl-util\"));\nfunction encodeUint8Array(value, urlSafe) {\n const encoded = tweetnacl_util_1.default.encodeBase64(value);\n if (!urlSafe) {\n return encoded;\n }\n return encodeURIComponent(encoded);\n}\nfunction decodeToUint8Array(value, urlSafe) {\n if (urlSafe) {\n value = decodeURIComponent(value);\n }\n return tweetnacl_util_1.default.decodeBase64(value);\n}\nfunction encode(value, urlSafe = false) {\n let uint8Array;\n if (value instanceof Uint8Array) {\n uint8Array = value;\n }\n else {\n if (typeof value !== 'string') {\n value = JSON.stringify(value);\n }\n uint8Array = tweetnacl_util_1.default.decodeUTF8(value);\n }\n return encodeUint8Array(uint8Array, urlSafe);\n}\nfunction decode(value, urlSafe = false) {\n const decodedUint8Array = decodeToUint8Array(value, urlSafe);\n return {\n toString() {\n return tweetnacl_util_1.default.encodeUTF8(decodedUint8Array);\n },\n toObject() {\n try {\n return JSON.parse(tweetnacl_util_1.default.encodeUTF8(decodedUint8Array));\n }\n catch (e) {\n return null;\n }\n },\n toUint8Array() {\n return decodedUint8Array;\n }\n };\n}\nexports.Base64 = {\n encode,\n decode\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.hexToByteArray = exports.toHexString = exports.splitToUint8Arrays = exports.concatUint8Arrays = void 0;\nfunction concatUint8Arrays(buffer1, buffer2) {\n const mergedArray = new Uint8Array(buffer1.length + buffer2.length);\n mergedArray.set(buffer1);\n mergedArray.set(buffer2, buffer1.length);\n return mergedArray;\n}\nexports.concatUint8Arrays = concatUint8Arrays;\nfunction splitToUint8Arrays(array, index) {\n if (index >= array.length) {\n throw new Error('Index is out of buffer');\n }\n const subArray1 = array.slice(0, index);\n const subArray2 = array.slice(index);\n return [subArray1, subArray2];\n}\nexports.splitToUint8Arrays = splitToUint8Arrays;\nfunction toHexString(byteArray) {\n let hexString = '';\n byteArray.forEach(byte => {\n hexString += ('0' + (byte & 0xff).toString(16)).slice(-2);\n });\n return hexString;\n}\nexports.toHexString = toHexString;\nfunction hexToByteArray(hexString) {\n if (hexString.length % 2 !== 0) {\n throw new Error(`Cannot convert ${hexString} to bytesArray`);\n }\n const result = new Uint8Array(hexString.length / 2);\n for (let i = 0; i < hexString.length; i += 2) {\n result[i / 2] = parseInt(hexString.slice(i, i + 2), 16);\n }\n return result;\n}\nexports.hexToByteArray = hexToByteArray;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isNode = exports.hexToByteArray = exports.toHexString = exports.splitToUint8Arrays = exports.concatUint8Arrays = exports.Base64 = void 0;\nvar base64_1 = require(\"./base64\");\nObject.defineProperty(exports, \"Base64\", { enumerable: true, get: function () { return base64_1.Base64; } });\nvar binary_1 = require(\"./binary\");\nObject.defineProperty(exports, \"concatUint8Arrays\", { enumerable: true, get: function () { return binary_1.concatUint8Arrays; } });\nObject.defineProperty(exports, \"splitToUint8Arrays\", { enumerable: true, get: function () { return binary_1.splitToUint8Arrays; } });\nObject.defineProperty(exports, \"toHexString\", { enumerable: true, get: function () { return binary_1.toHexString; } });\nObject.defineProperty(exports, \"hexToByteArray\", { enumerable: true, get: function () { return binary_1.hexToByteArray; } });\nvar web_api_1 = require(\"./web-api\");\nObject.defineProperty(exports, \"isNode\", { enumerable: true, get: function () { return web_api_1.isNode; } });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isNode = void 0;\nfunction isNode() {\n return (typeof process !== 'undefined' && process.versions != null && process.versions.node != null);\n}\nexports.isNode = isNode;\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// startup\n// Load entry module and return exports\n// This entry module is referenced by other modules so it can't be inlined\nvar __webpack_exports__ = __webpack_require__(4027);\n"],"names":["isMergeableObject","value","isNonNullObject","stringValue","Object","prototype","toString","call","$$typeof","REACT_ELEMENT_TYPE","isReactElement","isSpecial","Symbol","for","cloneUnlessOtherwiseSpecified","options","clone","deepmerge","val","Array","isArray","defaultArrayMerge","target","source","concat","map","element","getKeys","keys","getOwnPropertySymbols","filter","symbol","propertyIsEnumerable","getEnumerableOwnPropertySymbols","propertyIsOnObject","object","property","_","arrayMerge","sourceIsArray","destination","forEach","key","hasOwnProperty","propertyIsUnsafe","customMerge","getMergeFunction","mergeObject","all","array","Error","reduce","prev","next","deepmerge_1","module","exports","DappMetadataError","TonConnectError","constructor","args","super","setPrototypeOf","this","UnknownError","UserRejectsError","BadRequestError","UnknownAppError","LocalstorageNotFoundError","WalletAlreadyConnectedError","WalletNotConnectedError","WalletNotInjectedError","FetchWalletsError","TonConnect","CHAIN","isWalletInfoInjected","connectEventErrorsCodes","CONNECT_EVENT_ERROR_CODES","UNKNOWN_ERROR","USER_REJECTS_ERROR","BAD_REQUEST_ERROR","UNKNOWN_APP_ERROR","connectErrorsParser","parseError","error","ErrorConstructor","code","message","isError","response","sendTransactionErrors","SEND_TRANSACTION_ERROR_CODES","SendTransactionParser","RpcParser","convertToRpcRequest","request","method","params","JSON","stringify","parseAndThrowError","convertFromRpcResponse","rpcResponse","boc","result","sendTransactionParser","isNode","eval","err","console","BridgeGateway","storage","bridgeUrl","sessionId","listener","errorsListener","ssePath","postPath","defaultTtl","isClosed","bridgeGatewayStorage","HttpBridgeGatewayStorage","registerSession","url","URL","addPathToUrl","searchParams","append","lastEventId","getLastEventId","eventSource","EventSource","Promise","resolve","reject","onerror","onopen","errorsHandler","bind","onmessage","messagesHandler","send","receiver","ttl","fetch","body","Base64","encode","close","e","storeLastEventId","bridgeIncomingMessage","parse","data","BridgeProvider","walletConnectionSource","type","pendingRequests","Map","nextRequestId","session","bridge","listeners","connectionStorage","BridgeConnectionStorage","static","bridgeConnectionStorage","connection","getHttpConnection","connect","sessionCrypto","SessionCrypto","gatewayListener","gatewayErrorsListener","generateUniversalLink","restoreConnection","storedConnection","connectEvent","sendRequest","id","encodedRequest","encrypt","hexToByteArray","walletPublicKey","catch","set","closeConnection","disconnect","removeBridgeAndSession","listen","callback","push","walletMessage","decrypt","decode","toUint8Array","from","get","delete","event","updateSession","tonAddrItem","payload","items","find","item","name","connectEventToSave","storeConnection","removeConnection","universalLink","protocol","version","InjectedProvider","injectedWalletKey","unsubscribeCallback","listenSubscriptions","window","isWindowContainsWallet","injectedWallet","tonconnect","getInjectedConnection","jsBridgeKey","isWalletBrowser","auto","then","makeSubscriptions","connectEventError","closeAllListeners","eventsCallback","getWindow","storeKey","setItem","rawSession","sessionKeyPair","stringifyKeypair","rawConnection","removeItem","getConnection","stored","getItem","storedConnectionType","localStorage","removeLastEventId","walletsList","WalletsListManager","_wallet","provider","statusChangeSubscriptions","statusChangeErrorSubscriptions","dappSettings","dappMetedata","mergeOptions","getWebPageMetadata","DefaultStorage","connected","account","wallet","getWallets","onStatusChange","createProvider","createConnectRequest","bridgeConnectionType","embeddedWallet","getEmbeddedWallet","fromStorage","walletEventsListener","sendTransaction","transaction","checkConnection","onWalletDisconnected","isWalletConnectionSourceJS","onWalletConnected","onWalletConnectError","tonAccountItem","tonProofItem","device","address","chain","network","connectItems","tonProof","webPageMetadata","metadata","defaultOptions","sourceArray","__","removeUrlLastSlash","slice","path","getDocument","document","getIconUrl","appleTouchIcons","querySelectorAll","length","getLargestSizeIconUrl","links","pngLinks","link","href","endsWith","icoIcon","maxSizeIcon","parseIconLink","sort","a","b","size","sizes","groups","match","parseInt","Math","max","apply","location","origin","icon","title","walletsListCache","walletsListSource","fetchWalletsList","injectedWallets","embedded","walletsResponse","json","every","isCorrectWalletConfigDTO","walletConfigDTOListToWalletConfigList","walletConfigDTO","walletConfig","imageUrl","image","aboutUrl","about_url","tondns","bridge_url","universal_url","js_bridge_key","injected","isWalletInjected","isInsideWalletBrowser","root","f","nacl","util","validateBase64","s","test","TypeError","decodeUTF8","i","d","unescape","encodeURIComponent","Uint8Array","charCodeAt","encodeUTF8","arr","String","fromCharCode","decodeURIComponent","escape","join","atob","Buffer","encodeBase64","decodeBase64","len","btoa","gf","init","r","Float64Array","randombytes","_0","_9","gf0","gf1","_121665","D","D2","X","Y","I","ts64","x","h","l","vn","xi","y","yi","n","crypto_verify_16","crypto_verify_32","crypto_core_salsa20","out","inp","k","c","o","p","u","j0","j1","j2","j3","j4","j5","j6","j7","j8","j9","j10","j11","j12","j13","j14","j15","x0","x1","x2","x3","x4","x5","x6","x7","x8","x9","x10","x11","x12","x13","x14","x15","core_salsa20","crypto_core_hsalsa20","core_hsalsa20","sigma","crypto_stream_salsa20_xor","cpos","m","mpos","z","crypto_stream_salsa20","crypto_stream","sn","crypto_stream_xor","poly1305","t0","t1","t2","t3","t4","t5","t6","t7","buffer","Uint16Array","pad","leftover","fin","crypto_onetimeauth","outpos","update","finish","crypto_onetimeauth_verify","hpos","crypto_secretbox","crypto_secretbox_open","set25519","car25519","v","floor","sel25519","q","t","pack25519","j","neq25519","par25519","unpack25519","A","Z","M","t8","t9","t10","t11","t12","t13","t14","t15","t16","t17","t18","t19","t20","t21","t22","t23","t24","t25","t26","t27","t28","t29","t30","b0","b1","b2","b3","b4","b5","b6","b7","b8","b9","b10","b11","b12","b13","b14","b15","S","inv25519","pow2523","crypto_scalarmult","x32","subarray","x16","crypto_scalarmult_base","crypto_box_keypair","crypto_box_beforenm","blocks","bytes","d0","d1","d2","d3","d4","d5","d6","d7","d8","d9","hibit","h0","h1","h2","h3","h4","h5","h6","h7","h8","h9","r0","r1","r2","r3","r4","r5","r6","r7","r8","r9","mac","macpos","mask","g","want","crypto_box_afternm","crypto_box_open_afternm","K","crypto_hashblocks_hl","hh","hl","bh0","bh1","bh2","bh3","bh4","bh5","bh6","bh7","bl0","bl1","bl2","bl3","bl4","bl5","bl6","bl7","th","tl","wh","Int32Array","wl","ah0","ah1","ah2","ah3","ah4","ah5","ah6","ah7","al0","al1","al2","al3","al4","al5","al6","al7","pos","crypto_hash","add","cswap","pack","tx","ty","zi","scalarmult","scalarbase","crypto_sign_keypair","pk","sk","seeded","L","modL","carry","crypto_sign","sm","smlen","crypto_sign_open","chk","num","den","den2","den4","den6","unpackneg","crypto_sign_BYTES","crypto_sign_PUBLICKEYBYTES","crypto_sign_SECRETKEYBYTES","checkLengths","checkArrayTypes","arguments","cleanup","lowlevel","crypto_box","crypto_box_open","crypto_secretbox_KEYBYTES","crypto_secretbox_NONCEBYTES","crypto_secretbox_ZEROBYTES","crypto_secretbox_BOXZEROBYTES","crypto_scalarmult_BYTES","crypto_scalarmult_SCALARBYTES","crypto_box_PUBLICKEYBYTES","crypto_box_SECRETKEYBYTES","crypto_box_BEFORENMBYTES","crypto_box_NONCEBYTES","crypto_box_ZEROBYTES","crypto_box_BOXZEROBYTES","crypto_sign_SEEDBYTES","crypto_hash_BYTES","randomBytes","secretbox","msg","nonce","open","box","keyLength","nonceLength","overheadLength","scalarMult","base","scalarLength","groupElementLength","publicKey","secretKey","before","checkBoxLengths","after","keyPair","fromSecretKey","publicKeyLength","secretKeyLength","sharedKeyLength","sign","signedMsg","tmp","mlen","detached","sig","verify","fromSeed","seed","seedLength","signatureLength","hash","hashLength","setPRNG","fn","crypto","self","msCrypto","getRandomValues","min","defineProperty","session_crypto_1","enumerable","__importDefault","mod","__esModule","utils_1","tweetnacl_1","createKeypairFromString","createKeypair","toHexString","default","createNonce","receiverPublicKey","encodedMessage","TextEncoder","encrypted","concatUint8Arrays","senderPublicKey","internalMessage","splitToUint8Arrays","decrypted","TextDecoder","__createBinding","create","k2","undefined","desc","getOwnPropertyDescriptor","writable","configurable","__exportStar","CHAIN_1","CONNECT_ITEM_ERROR_CODES","connect_event_1","send_transaction_rpc_response_1","tweetnacl_util_1","urlSafe","uint8Array","encoded","encodeUint8Array","decodedUint8Array","decodeToUint8Array","toObject","buffer1","buffer2","mergedArray","index","byteArray","hexString","byte","base64_1","binary_1","web_api_1","process","versions","node","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","__webpack_exports__"],"sourceRoot":""}
|
|
1
|
+
{"version":3,"file":"tonconnect-sdk.min.js","mappings":"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","sources":["webpack://TonConnectSDK/./src/errors/dapp/dapp-metadata.error.ts","webpack://TonConnectSDK/./src/errors/index.ts","webpack://TonConnectSDK/./src/errors/protocol/events/connect/index.ts","webpack://TonConnectSDK/./src/errors/protocol/events/connect/manifest-content-error.error.ts","webpack://TonConnectSDK/./src/errors/protocol/events/connect/manifest-not-found.error.ts","webpack://TonConnectSDK/./src/errors/protocol/events/connect/user-rejects.error.ts","webpack://TonConnectSDK/./src/errors/protocol/events/index.ts","webpack://TonConnectSDK/./src/errors/protocol/index.ts","webpack://TonConnectSDK/./src/errors/protocol/responses/bad-request.error.ts","webpack://TonConnectSDK/./src/errors/protocol/responses/index.ts","webpack://TonConnectSDK/./src/errors/protocol/responses/unknown-app.error.ts","webpack://TonConnectSDK/./src/errors/storage/index.ts","webpack://TonConnectSDK/./src/errors/storage/localstorage-not-found.error.ts","webpack://TonConnectSDK/./src/errors/ton-connect.error.ts","webpack://TonConnectSDK/./src/errors/unknown.error.ts","webpack://TonConnectSDK/./src/errors/wallet/index.ts","webpack://TonConnectSDK/./src/errors/wallet/wallet-already-connected.error.ts","webpack://TonConnectSDK/./src/errors/wallet/wallet-not-connected.error.ts","webpack://TonConnectSDK/./src/errors/wallet/wallet-not-injected.error.ts","webpack://TonConnectSDK/./src/errors/wallets-manager/fetch-wallets.error.ts","webpack://TonConnectSDK/./src/errors/wallets-manager/index.ts","webpack://TonConnectSDK/./src/index.ts","webpack://TonConnectSDK/./src/models/index.ts","webpack://TonConnectSDK/./src/models/methods/index.ts","webpack://TonConnectSDK/./src/models/wallet/index.ts","webpack://TonConnectSDK/./src/models/wallet/wallet-connection-source.ts","webpack://TonConnectSDK/./src/models/wallet/wallet-info.ts","webpack://TonConnectSDK/./src/parsers/connect-errors-parser.ts","webpack://TonConnectSDK/./src/parsers/rpc-parser.ts","webpack://TonConnectSDK/./src/parsers/send-transaction-parser.ts","webpack://TonConnectSDK/./src/provider/bridge/bridge-gateway.ts","webpack://TonConnectSDK/./src/provider/bridge/bridge-provider.ts","webpack://TonConnectSDK/./src/provider/injected/injected-provider.ts","webpack://TonConnectSDK/./src/storage/bridge-connection-storage.ts","webpack://TonConnectSDK/./src/storage/default-storage.ts","webpack://TonConnectSDK/./src/storage/http-bridge-gateway-storage.ts","webpack://TonConnectSDK/./src/ton-connect.ts","webpack://TonConnectSDK/./src/utils/url.ts","webpack://TonConnectSDK/./src/utils/web-api.ts","webpack://TonConnectSDK/./src/wallets-list-manager.ts","webpack://TonConnectSDK/../../node_modules/tweetnacl-util/nacl-util.js","webpack://TonConnectSDK/../../node_modules/tweetnacl/nacl-fast.js","webpack://TonConnectSDK/../protocol/lib/crypto/index.js","webpack://TonConnectSDK/../protocol/lib/crypto/session-crypto.js","webpack://TonConnectSDK/../protocol/lib/index.js","webpack://TonConnectSDK/../protocol/lib/models/CHAIN.js","webpack://TonConnectSDK/../protocol/lib/models/app-message/connect-request/index.js","webpack://TonConnectSDK/../protocol/lib/models/app-message/index.js","webpack://TonConnectSDK/../protocol/lib/models/app-message/request/index.js","webpack://TonConnectSDK/../protocol/lib/models/index.js","webpack://TonConnectSDK/../protocol/lib/models/wallet-message/index.js","webpack://TonConnectSDK/../protocol/lib/models/wallet-message/wallet-event/connect-event.js","webpack://TonConnectSDK/../protocol/lib/models/wallet-message/wallet-event/index.js","webpack://TonConnectSDK/../protocol/lib/models/wallet-message/wallet-response/index.js","webpack://TonConnectSDK/../protocol/lib/models/wallet-message/wallet-response/send-transaction-rpc-response.js","webpack://TonConnectSDK/../protocol/lib/utils/base64.js","webpack://TonConnectSDK/../protocol/lib/utils/binary.js","webpack://TonConnectSDK/../protocol/lib/utils/index.js","webpack://TonConnectSDK/../protocol/lib/utils/web-api.js","webpack://TonConnectSDK/webpack/bootstrap","webpack://TonConnectSDK/webpack/startup"],"sourcesContent":["import { TonConnectError } from 'src/errors/ton-connect.error';\n\n/**\n * Thrown when passed DappMetadata is in incorrect format.\n */\nexport class DappMetadataError extends TonConnectError {\n constructor(...args: ConstructorParameters<typeof TonConnectError>) {\n super(...args);\n\n Object.setPrototypeOf(this, DappMetadataError.prototype);\n }\n}\n","export * from './protocol';\nexport * from './wallet';\nexport * from './storage';\nexport * from './wallets-manager';\nexport { TonConnectError } from './ton-connect.error';\nexport { UnknownError } from './unknown.error';\n","export { UserRejectsError } from 'src/errors/protocol/events/connect/user-rejects.error';\n","import { TonConnectError } from 'src/errors/ton-connect.error';\n\n/**\n * Thrown when passed manifest contains errors.\n */\nexport class ManifestContentErrorError extends TonConnectError {\n private static additionalMessage =\n '\\nPassed `tonconnect-manifest.json` contains errors. Check format of your manifest. See more https://github.com/ton-connect/docs/blob/main/requests-responses.md#app-manifest';\n\n constructor(message?: string) {\n super(message || '' + ManifestContentErrorError.additionalMessage);\n\n Object.setPrototypeOf(this, ManifestContentErrorError.prototype);\n }\n}\n","import { TonConnectError } from 'src/errors/ton-connect.error';\n\n/**\n * Thrown when wallet can't get manifest by passed manifestUrl.\n */\nexport class ManifestNotFoundError extends TonConnectError {\n private static additionalMessage =\n '\\nManifest not found. Make sure you added `tonconnect-manifest.json` to the root of your app or passed correct manifestUrl. See more https://github.com/ton-connect/docs/blob/main/requests-responses.md#app-manifest';\n\n constructor(message?: string) {\n super(message || '' + ManifestNotFoundError.additionalMessage);\n\n Object.setPrototypeOf(this, ManifestNotFoundError.prototype);\n }\n}\n","import { TonConnectError } from 'src/errors/ton-connect.error';\n\n/**\n * Thrown when user rejects the action in the wallet.\n */\nexport class UserRejectsError extends TonConnectError {\n constructor(...args: ConstructorParameters<typeof TonConnectError>) {\n super(...args);\n\n Object.setPrototypeOf(this, UserRejectsError.prototype);\n }\n}\n","export * from './connect';\n","export * from './events';\nexport * from './responses';\n","import { TonConnectError } from 'src/errors/ton-connect.error';\n\n/**\n * Thrown when request to the wallet contains errors.\n */\nexport class BadRequestError extends TonConnectError {\n constructor(...args: ConstructorParameters<typeof TonConnectError>) {\n super(...args);\n\n Object.setPrototypeOf(this, BadRequestError.prototype);\n }\n}\n","export { BadRequestError } from './bad-request.error';\nexport { UnknownAppError } from './unknown-app.error';\n","import { TonConnectError } from 'src/errors/ton-connect.error';\n\n/**\n * Thrown when app tries to send rpc request to the injected wallet while not connected.\n */\nexport class UnknownAppError extends TonConnectError {\n constructor(...args: ConstructorParameters<typeof TonConnectError>) {\n super(...args);\n\n Object.setPrototypeOf(this, UnknownAppError.prototype);\n }\n}\n","export { LocalstorageNotFoundError } from './localstorage-not-found.error';\n","import { TonConnectError } from 'src/errors/ton-connect.error';\n\n/**\n * Thrown when `Storage` was not specified in the `DappMetadata` and default `localStorage` was not detected in the environment.\n */\nexport class LocalstorageNotFoundError extends TonConnectError {\n constructor(...args: ConstructorParameters<typeof TonConnectError>) {\n super(...args);\n\n Object.setPrototypeOf(this, LocalstorageNotFoundError.prototype);\n }\n}\n","/**\n * Base class for TonConnect errors. You can check if the error was triggered by the @tonconnect/sdk using `err instanceof TonConnectError`.\n */\nexport class TonConnectError extends Error {\n private static prefix = '[TON_CONNECT_SDK_ERROR]';\n\n constructor(message?: string, options?: ErrorOptions) {\n if (message) {\n message = TonConnectError.prefix + ' ' + message;\n }\n super(message, options);\n\n Object.setPrototypeOf(this, TonConnectError.prototype);\n }\n}\n","import { TonConnectError } from 'src/errors/ton-connect.error';\n\n/**\n * Unhanded unknown error.\n */\nexport class UnknownError extends TonConnectError {\n constructor(...args: ConstructorParameters<typeof TonConnectError>) {\n super(...args);\n\n Object.setPrototypeOf(this, UnknownError.prototype);\n }\n}\n","export { WalletAlreadyConnectedError } from './wallet-already-connected.error';\nexport { WalletNotConnectedError } from './wallet-not-connected.error';\nexport { WalletNotInjectedError } from './wallet-not-injected.error';\n","import { TonConnectError } from 'src/errors/ton-connect.error';\n\n/**\n * Thrown when wallet connection called but wallet already connected. To avoid the error, disconnect the wallet before doing a new connection.\n */\nexport class WalletAlreadyConnectedError extends TonConnectError {\n constructor(...args: ConstructorParameters<typeof TonConnectError>) {\n super(...args);\n\n Object.setPrototypeOf(this, WalletAlreadyConnectedError.prototype);\n }\n}\n","import { TonConnectError } from 'src/errors/ton-connect.error';\n\n/**\n * Thrown when send transaction or other protocol methods called while wallet is not connected.\n */\nexport class WalletNotConnectedError extends TonConnectError {\n constructor(...args: ConstructorParameters<typeof TonConnectError>) {\n super(...args);\n\n Object.setPrototypeOf(this, WalletNotConnectedError.prototype);\n }\n}\n","import { TonConnectError } from 'src/errors/ton-connect.error';\n\n/**\n * Thrown when there is an attempt to connect to the injected wallet while it is not exists in the webpage.\n */\nexport class WalletNotInjectedError extends TonConnectError {\n constructor(...args: ConstructorParameters<typeof TonConnectError>) {\n super(...args);\n\n Object.setPrototypeOf(this, WalletNotInjectedError.prototype);\n }\n}\n","import { TonConnectError } from 'src/errors/ton-connect.error';\n\n/**\n * Thrown when an error occurred while fetching the wallets list.\n */\nexport class FetchWalletsError extends TonConnectError {\n constructor(...args: ConstructorParameters<typeof TonConnectError>) {\n super(...args);\n\n Object.setPrototypeOf(this, FetchWalletsError.prototype);\n }\n}\n","export { FetchWalletsError } from './fetch-wallets.error';\n","export * from './ton-connect';\nexport * from './models';\nexport * from './errors';\nexport { IStorage } from './storage/models/storage.interface';\nexport { TonConnect as default } from './ton-connect';\nexport { ITonConnect } from './ton-connect.interface';\nexport { CHAIN, DeviceInfo } from '@tonconnect/protocol';\n","export * from './wallet';\nexport * from './methods';\nexport { DappMetadata } from './dapp/dapp-metadata';\nexport { TonConnectOptions } from './ton-connect-options';\n","export * from './connect';\nexport * from './send-transaction';\n","export type { Account } from './account';\nexport type { Wallet } from './wallet';\nexport type {\n WalletConnectionSource,\n WalletConnectionSourceHTTP,\n WalletConnectionSourceJS\n} from './wallet-connection-source';\nexport {\n WalletInfo,\n WalletInfoInjected,\n WalletInfoRemote,\n isWalletInfoInjected\n} from './wallet-info';\n","export type WalletConnectionSource = WalletConnectionSourceHTTP | WalletConnectionSourceJS;\n\nexport interface WalletConnectionSourceHTTP {\n /**\n * Base part of the wallet universal url. The link should support [Ton Connect parameters]{@link https://github.com/ton-connect/docs/blob/main/bridge.md#universal-link}.\n */\n universalLink: string;\n\n /**\n * Url of the wallet's implementation of the [HTTP bridge]{@link https://github.com/ton-connect/docs/blob/main/bridge.md#http-bridge}.\n */\n bridgeUrl: string;\n}\n\nexport interface WalletConnectionSourceJS {\n /**\n * If the wallet handles JS Bridge connection, specifies the binding for the bridge object accessible through window. Example: the key \"tonkeeper\" means the bridge can be accessed as window.tonkeeper.\n */\n jsBridgeKey: string;\n}\n\nexport function isWalletConnectionSourceJS(\n value: WalletConnectionSource\n): value is WalletConnectionSourceJS {\n return 'jsBridgeKey' in value;\n}\n","export interface WalletInfoBase {\n /**\n * Name of the wallet.\n */\n name: string;\n\n /**\n * Url to the icon of the wallet. Resolution 288×288px. On non-transparent background, without rounded corners. PNG format.\n */\n imageUrl: string;\n\n /**\n * Will be used in the protocol later.\n */\n tondns?: string;\n\n /**\n * Info or landing page of your wallet. May be useful for TON newcomers.\n */\n aboutUrl: string;\n}\n\nexport interface WalletInfoRemote extends WalletInfoBase {\n /**\n * Base part of the wallet universal url. The link should support [Ton Connect parameters]{@link https://github.com/ton-connect/docs/blob/main/bridge.md#universal-link}.\n */\n universalLink: string;\n\n /**\n * Url of the wallet's implementation of the [HTTP bridge]{@link https://github.com/ton-connect/docs/blob/main/bridge.md#http-bridge}.\n */\n bridgeUrl: string;\n}\n\nexport interface WalletInfoInjected extends WalletInfoBase {\n /**\n * If the wallet handles JS Bridge connection, specifies the binding for the bridge object accessible through window. Example: the key \"tonkeeper\" means the bridge can be accessed as window.tonkeeper.\n */\n jsBridgeKey: string;\n\n /**\n * Indicates if the wallet currently is injected to the webpage.\n */\n injected: boolean;\n\n /**\n * Indicates if the dapp is opened inside this wallet's browser.\n */\n embedded: boolean;\n}\n\nexport type WalletInfo =\n | WalletInfoRemote\n | WalletInfoInjected\n | (WalletInfoRemote & WalletInfoInjected);\n\nexport interface WalletInfoDTOBase {\n name: string;\n image: string;\n tondns?: string;\n about_url: string;\n}\n\nexport interface WalletInfoRemoteDTO extends WalletInfoDTOBase {\n universal_url: string;\n bridge_url: string;\n}\n\nexport interface WalletInfoInjectedDTO extends WalletInfoDTOBase {\n js_bridge_key: string;\n}\n\nexport type WalletInfoDTO =\n | WalletInfoRemoteDTO\n | WalletInfoInjectedDTO\n | (WalletInfoRemoteDTO & WalletInfoInjectedDTO);\n\nexport function isWalletInfoInjected(value: WalletInfo): value is WalletInfoInjected {\n return 'jsBridgeKey' in value;\n}\n","import { BadRequestError, UnknownAppError, UserRejectsError } from 'src/errors';\nimport { ManifestContentErrorError } from 'src/errors/protocol/events/connect/manifest-content-error.error';\nimport { ManifestNotFoundError } from 'src/errors/protocol/events/connect/manifest-not-found.error';\nimport { TonConnectError } from 'src/errors/ton-connect.error';\nimport { UnknownError } from 'src/errors/unknown.error';\nimport { CONNECT_EVENT_ERROR_CODES, ConnectEventError } from '@tonconnect/protocol';\n\nconst connectEventErrorsCodes: Partial<Record<CONNECT_EVENT_ERROR_CODES, typeof TonConnectError>> =\n {\n [CONNECT_EVENT_ERROR_CODES.UNKNOWN_ERROR]: UnknownError,\n [CONNECT_EVENT_ERROR_CODES.USER_REJECTS_ERROR]: UserRejectsError,\n [CONNECT_EVENT_ERROR_CODES.BAD_REQUEST_ERROR]: BadRequestError,\n [CONNECT_EVENT_ERROR_CODES.UNKNOWN_APP_ERROR]: UnknownAppError,\n [CONNECT_EVENT_ERROR_CODES.MANIFEST_NOT_FOUND_ERROR]: ManifestNotFoundError,\n [CONNECT_EVENT_ERROR_CODES.MANIFEST_CONTENT_ERROR]: ManifestContentErrorError\n };\n\nclass ConnectErrorsParser {\n parseError(error: ConnectEventError['payload']): TonConnectError {\n let ErrorConstructor: typeof TonConnectError = UnknownError;\n\n if (error.code in connectEventErrorsCodes) {\n ErrorConstructor = connectEventErrorsCodes[error.code] || UnknownError;\n }\n\n return new ErrorConstructor(error.message);\n }\n}\n\nexport const connectErrorsParser = new ConnectErrorsParser();\n","import {\n AppRequest,\n RpcMethod,\n WalletResponse,\n WalletResponseError,\n WalletResponseSuccess\n} from '@tonconnect/protocol';\nimport { WithoutId } from 'src/utils/types';\n\nexport abstract class RpcParser<T extends RpcMethod> {\n abstract convertToRpcRequest(...args: unknown[]): WithoutId<AppRequest<T>>;\n\n abstract convertFromRpcResponse(rpcResponse: WithoutId<WalletResponseSuccess<T>>): unknown;\n\n abstract parseAndThrowError(response: WithoutId<WalletResponseError<T>>): never;\n\n public isError(\n response: WithoutId<WalletResponse<T>>\n ): response is WithoutId<WalletResponseError<T>> {\n return 'error' in response;\n }\n}\n","import {\n CONNECT_EVENT_ERROR_CODES,\n SEND_TRANSACTION_ERROR_CODES,\n SendTransactionRpcRequest,\n SendTransactionRpcResponseError,\n SendTransactionRpcResponseSuccess\n} from '@tonconnect/protocol';\nimport { BadRequestError, TonConnectError, UnknownAppError, UserRejectsError } from 'src/errors';\nimport { UnknownError } from 'src/errors/unknown.error';\nimport { SendTransactionRequest, SendTransactionResponse } from 'src/models/methods';\nimport { RpcParser } from 'src/parsers/rpc-parser';\nimport { WithoutId } from 'src/utils/types';\n\nconst sendTransactionErrors: Partial<Record<CONNECT_EVENT_ERROR_CODES, typeof TonConnectError>> = {\n [SEND_TRANSACTION_ERROR_CODES.UNKNOWN_ERROR]: UnknownError,\n [SEND_TRANSACTION_ERROR_CODES.USER_REJECTS_ERROR]: UserRejectsError,\n [SEND_TRANSACTION_ERROR_CODES.BAD_REQUEST_ERROR]: BadRequestError,\n [SEND_TRANSACTION_ERROR_CODES.UNKNOWN_APP_ERROR]: UnknownAppError\n};\n\nclass SendTransactionParser extends RpcParser<'sendTransaction'> {\n convertToRpcRequest(\n request: Omit<SendTransactionRequest, 'validUntil'> & { valid_until: number }\n ): WithoutId<SendTransactionRpcRequest> {\n return {\n method: 'sendTransaction',\n params: [JSON.stringify(request)]\n };\n }\n\n parseAndThrowError(response: WithoutId<SendTransactionRpcResponseError>): never {\n let ErrorConstructor: typeof TonConnectError = UnknownError;\n\n if (response.error.code in sendTransactionErrors) {\n ErrorConstructor = sendTransactionErrors[response.error.code] || UnknownError;\n }\n\n throw new ErrorConstructor(response.error.message);\n }\n\n convertFromRpcResponse(\n rpcResponse: WithoutId<SendTransactionRpcResponseSuccess>\n ): SendTransactionResponse {\n return {\n boc: rpcResponse.result\n };\n }\n}\n\nexport const sendTransactionParser = new SendTransactionParser();\n","import { Base64, isNode } from '@tonconnect/protocol';\nimport { TonConnectError } from 'src/errors';\nimport { BridgeIncomingMessage } from 'src/provider/bridge/models/bridge-incomming-message';\nimport { HttpBridgeGatewayStorage } from 'src/storage/http-bridge-gateway-storage';\nimport { IStorage } from 'src/storage/models/storage.interface';\nimport { addPathToUrl } from 'src/utils/url';\n\nif (isNode()) {\n try {\n eval(\"global.EventSource = require('eventsource')\");\n eval(\"global.fetch = require('node-fetch')\");\n } catch (err) {\n console.error(err);\n }\n}\n\nexport class BridgeGateway {\n private readonly ssePath = 'events';\n\n private readonly postPath = 'message';\n\n private readonly defaultTtl = 300;\n\n private eventSource: EventSource | undefined;\n\n private isClosed = false;\n\n private readonly bridgeGatewayStorage: HttpBridgeGatewayStorage;\n\n constructor(\n storage: IStorage,\n private readonly bridgeUrl: string,\n public readonly sessionId: string,\n private readonly listener: (msg: BridgeIncomingMessage) => void,\n private readonly errorsListener: (err: Event) => void\n ) {\n this.bridgeGatewayStorage = new HttpBridgeGatewayStorage(storage);\n }\n\n public async registerSession(): Promise<void> {\n const url = new URL(addPathToUrl(this.bridgeUrl, this.ssePath));\n url.searchParams.append('client_id', this.sessionId);\n\n const lastEventId = await this.bridgeGatewayStorage.getLastEventId();\n if (lastEventId) {\n url.searchParams.append('last_event_id', lastEventId);\n }\n\n this.eventSource = new EventSource(url.toString());\n\n return new Promise((resolve, reject) => {\n this.eventSource!.onerror = reject;\n this.eventSource!.onopen! = (): void => {\n this.eventSource!.onerror = this.errorsHandler.bind(this);\n this.eventSource!.onmessage = this.messagesHandler.bind(this);\n resolve();\n };\n });\n }\n\n public async send(message: Uint8Array, receiver: string, ttl?: number): Promise<void> {\n const url = new URL(addPathToUrl(this.bridgeUrl, this.postPath));\n url.searchParams.append('client_id', this.sessionId);\n url.searchParams.append('to', receiver);\n url.searchParams.append('ttl', (ttl || this.defaultTtl).toString());\n await fetch(url, {\n method: 'post',\n body: Base64.encode(message)\n });\n }\n\n public close(): void {\n this.isClosed = true;\n this.eventSource?.close();\n }\n\n private errorsHandler(e: Event): void {\n if (!this.isClosed) {\n this.errorsListener(e);\n }\n }\n\n private async messagesHandler(e: MessageEvent<string>): Promise<void> {\n await this.bridgeGatewayStorage.storeLastEventId(e.lastEventId);\n\n if (!this.isClosed) {\n let bridgeIncomingMessage: BridgeIncomingMessage;\n\n try {\n bridgeIncomingMessage = JSON.parse(e.data);\n } catch (e) {\n throw new TonConnectError(`Bridge message parse failed, message ${e.data}`);\n }\n\n this.listener(bridgeIncomingMessage);\n }\n }\n}\n","import {\n Base64,\n SessionCrypto,\n AppRequest,\n ConnectRequest,\n RpcMethod,\n WalletEvent,\n WalletResponse,\n WalletMessage,\n hexToByteArray,\n ConnectEventSuccess,\n TonAddressItemReply\n} from '@tonconnect/protocol';\nimport { TonConnectError } from 'src/errors/ton-connect.error';\nimport { WalletConnectionSourceHTTP } from 'src/models/wallet/wallet-connection-source';\nimport { BridgeGateway } from 'src/provider/bridge/bridge-gateway';\nimport { BridgeConnectionHttp } from 'src/provider/bridge/models/bridge-connection';\nimport { BridgeIncomingMessage } from 'src/provider/bridge/models/bridge-incomming-message';\nimport { BridgePartialSession, BridgeSession } from 'src/provider/bridge/models/bridge-session';\nimport { HTTPProvider } from 'src/provider/provider';\nimport { BridgeConnectionStorage } from 'src/storage/bridge-connection-storage';\nimport { IStorage } from 'src/storage/models/storage.interface';\nimport { WithoutId } from 'src/utils/types';\nimport * as protocol from 'src/resources/protocol.json';\n\nexport class BridgeProvider implements HTTPProvider {\n public static async fromStorage(storage: IStorage): Promise<BridgeProvider> {\n const bridgeConnectionStorage = new BridgeConnectionStorage(storage);\n const connection = await bridgeConnectionStorage.getHttpConnection();\n return new BridgeProvider(storage, connection.session.walletConnectionSource);\n }\n\n public readonly type = 'http';\n\n private readonly connectionStorage: BridgeConnectionStorage;\n\n private readonly pendingRequests = new Map<\n string,\n (response: WithoutId<WalletResponse<RpcMethod>>) => void\n >();\n\n private nextRequestId = 0;\n\n private session: BridgeSession | BridgePartialSession | null = null;\n\n private bridge: BridgeGateway | null = null;\n\n private listeners: Array<(e: WalletEvent) => void> = [];\n\n constructor(\n private readonly storage: IStorage,\n private readonly walletConnectionSource: WalletConnectionSourceHTTP\n ) {\n this.connectionStorage = new BridgeConnectionStorage(storage);\n }\n\n public connect(message: ConnectRequest): string {\n this.bridge?.close();\n const sessionCrypto = new SessionCrypto();\n\n this.session = {\n sessionCrypto,\n walletConnectionSource: this.walletConnectionSource\n };\n\n this.bridge = new BridgeGateway(\n this.storage,\n this.walletConnectionSource.bridgeUrl,\n sessionCrypto.sessionId,\n this.gatewayListener.bind(this),\n this.gatewayErrorsListener.bind(this)\n );\n this.bridge.registerSession();\n\n return this.generateUniversalLink(message);\n }\n\n public async restoreConnection(): Promise<void> {\n this.bridge?.close();\n const storedConnection = await this.connectionStorage.getHttpConnection();\n if (!storedConnection) {\n return;\n }\n\n this.session = storedConnection.session;\n\n this.bridge = new BridgeGateway(\n this.storage,\n this.walletConnectionSource.bridgeUrl,\n storedConnection.session.sessionCrypto.sessionId,\n this.gatewayListener.bind(this),\n this.gatewayErrorsListener.bind(this)\n );\n\n await this.bridge.registerSession();\n\n this.listeners.forEach(listener => listener(storedConnection.connectEvent));\n }\n\n public sendRequest<T extends RpcMethod>(\n request: WithoutId<AppRequest<T>>\n ): Promise<WithoutId<WalletResponse<T>>> {\n return new Promise((resolve, reject) => {\n const id = this.nextRequestId;\n this.nextRequestId++;\n if (!this.bridge || !this.session || !('walletPublicKey' in this.session)) {\n throw new TonConnectError('Trying to send bridge request without session');\n }\n\n const encodedRequest = this.session!.sessionCrypto.encrypt(\n JSON.stringify({ ...request, id }),\n hexToByteArray(this.session.walletPublicKey)\n );\n\n this.bridge.send(encodedRequest, this.session.walletPublicKey).catch(reject);\n this.pendingRequests.set(id.toString(), resolve);\n });\n }\n\n public closeConnection(): void {\n this.bridge?.close();\n this.listeners = [];\n }\n\n public disconnect(): Promise<void> {\n this.bridge?.close();\n this.listeners = [];\n return this.removeBridgeAndSession();\n }\n\n public listen(callback: (e: WalletEvent) => void): () => void {\n this.listeners.push(callback);\n return () => (this.listeners = this.listeners.filter(listener => listener !== callback));\n }\n\n private async gatewayListener(bridgeIncomingMessage: BridgeIncomingMessage): Promise<void> {\n const walletMessage: WalletMessage = JSON.parse(\n this.session!.sessionCrypto.decrypt(\n Base64.decode(bridgeIncomingMessage.message).toUint8Array(),\n hexToByteArray(bridgeIncomingMessage.from)\n )\n );\n\n if (!('event' in walletMessage)) {\n const id = walletMessage.id.toString();\n const resolve = this.pendingRequests.get(id);\n if (!resolve) {\n throw new TonConnectError(`Response id ${id} doesn't match any request's id`);\n }\n\n resolve(walletMessage);\n this.pendingRequests.delete(id);\n return;\n }\n\n if (walletMessage.event === 'connect') {\n await this.updateSession(walletMessage, bridgeIncomingMessage.from);\n }\n\n this.listeners.forEach(listener => listener(walletMessage));\n }\n\n private async gatewayErrorsListener(e: Event): Promise<void> {\n throw new TonConnectError(`Bridge error ${JSON.stringify(e)}`);\n }\n\n private async updateSession(\n connectEvent: ConnectEventSuccess,\n walletPublicKey: string\n ): Promise<void> {\n this.session = {\n ...this.session!,\n walletPublicKey\n };\n\n const tonAddrItem: TonAddressItemReply = connectEvent.payload.items.find(\n item => item.name === 'ton_addr'\n ) as TonAddressItemReply;\n\n const connectEventToSave: BridgeConnectionHttp['connectEvent'] = {\n ...connectEvent,\n payload: {\n ...connectEvent.payload,\n items: [tonAddrItem]\n }\n };\n\n await this.connectionStorage.storeConnection({\n type: 'http',\n session: this.session,\n connectEvent: connectEventToSave\n });\n }\n\n private async removeBridgeAndSession(): Promise<void> {\n this.session = null;\n this.bridge = null;\n await this.connectionStorage.removeConnection();\n }\n\n private generateUniversalLink(message: ConnectRequest): string {\n const url = new URL(this.walletConnectionSource.universalLink);\n url.searchParams.append('v', protocol.version.toString());\n url.searchParams.append('id', this.session!.sessionCrypto.sessionId);\n url.searchParams.append('r', Base64.encode(JSON.stringify(message), true));\n return url.toString();\n }\n}\n","import { WalletNotInjectedError } from 'src/errors/wallet/wallet-not-injected.error';\nimport {\n AppRequest,\n RpcMethod,\n WalletResponse,\n ConnectRequest,\n WalletEvent,\n ConnectEvent\n} from '@tonconnect/protocol';\nimport { InjectedWalletApi } from 'src/provider/injected/models/injected-wallet-api';\nimport { InternalProvider } from 'src/provider/provider';\nimport * as protocol from 'src/resources/protocol.json';\nimport { BridgeConnectionStorage } from 'src/storage/bridge-connection-storage';\nimport { IStorage } from 'src/storage/models/storage.interface';\nimport { WithoutId } from 'src/utils/types';\nimport { getWindow } from 'src/utils/web-api';\n\ntype WindowWithTon<T extends string> = {\n [key in T]: {\n tonconnect: InjectedWalletApi;\n };\n} & Window;\n\nexport class InjectedProvider<T extends string = string> implements InternalProvider {\n private static window = getWindow();\n\n public static async fromStorage(storage: IStorage): Promise<InjectedProvider> {\n const bridgeConnectionStorage = new BridgeConnectionStorage(storage);\n const connection = await bridgeConnectionStorage.getInjectedConnection();\n return new InjectedProvider(connection.jsBridgeKey);\n }\n\n public static isWalletInjected(injectedWalletKey: string): boolean {\n return InjectedProvider.isWindowContainsWallet(this.window, injectedWalletKey);\n }\n\n public static isInsideWalletBrowser(injectedWalletKey: string): boolean {\n if (InjectedProvider.isWindowContainsWallet(this.window, injectedWalletKey)) {\n return this.window[injectedWalletKey]!.tonconnect.isWalletBrowser;\n }\n\n return false;\n }\n\n private static isWindowContainsWallet<T extends string>(\n window: Window | undefined,\n injectedWalletKey: string\n ): window is WindowWithTon<T> {\n return (\n !!window &&\n injectedWalletKey in window &&\n typeof window[injectedWalletKey as keyof Window] === 'object' &&\n 'tonconnect' in window[injectedWalletKey as keyof Window]\n );\n }\n\n public readonly type = 'injected';\n\n private unsubscribeCallback: (() => void) | null = null;\n\n private injectedWallet: InjectedWalletApi;\n\n private listenSubscriptions = false;\n\n private listeners: Array<(e: WalletEvent) => void> = [];\n\n constructor(injectedWalletKey: T) {\n const window: Window | undefined | WindowWithTon<T> = InjectedProvider.window;\n if (!InjectedProvider.isWindowContainsWallet(window, injectedWalletKey)) {\n throw new WalletNotInjectedError();\n }\n\n this.injectedWallet = window[injectedWalletKey]!.tonconnect!;\n }\n\n public connect(message: ConnectRequest, auto = false): void {\n this.injectedWallet\n .connect(protocol.version, message, auto)\n .then(connectEvent => {\n if (connectEvent.event === 'connect') {\n this.makeSubscriptions();\n this.listenSubscriptions = true;\n }\n this.listeners.forEach(listener => listener(connectEvent));\n })\n .catch(e => {\n const connectEventError: ConnectEvent = {\n event: 'connect_error',\n payload: {\n code: 0,\n message: e?.toString()\n }\n };\n\n this.listeners.forEach(listener => listener(connectEventError));\n });\n }\n\n public async restoreConnection(): Promise<void> {\n try {\n const connectEvent = await this.injectedWallet.restoreConnection();\n if (connectEvent.event === 'connect') {\n this.makeSubscriptions();\n this.listenSubscriptions = true;\n this.listeners.forEach(listener => listener(connectEvent));\n }\n } catch (e) {\n console.error(e);\n }\n }\n\n public closeConnection(): void {\n if (this.listenSubscriptions) {\n this.injectedWallet.disconnect();\n }\n this.closeAllListeners();\n }\n\n public disconnect(): Promise<void> {\n this.closeAllListeners();\n this.injectedWallet.disconnect();\n return Promise.resolve();\n }\n\n private closeAllListeners(): void {\n this.listenSubscriptions = false;\n this.listeners = [];\n this.unsubscribeCallback?.();\n }\n\n public listen(eventsCallback: (e: WalletEvent) => void): () => void {\n this.listeners.push(eventsCallback);\n return () =>\n (this.listeners = this.listeners.filter(listener => listener !== eventsCallback));\n }\n\n public async sendRequest<T extends RpcMethod>(\n request: WithoutId<AppRequest<T>>\n ): Promise<WithoutId<WalletResponse<T>>> {\n return this.injectedWallet.send<T>({ ...request, id: '0' });\n }\n\n private makeSubscriptions(): void {\n this.unsubscribeCallback = this.injectedWallet.listen(e => {\n if (this.listenSubscriptions) {\n this.listeners.forEach(listener => listener(e));\n }\n\n if (e.event === 'disconnect') {\n this.disconnect();\n }\n });\n }\n}\n","import { SessionCrypto } from '@tonconnect/protocol';\nimport { TonConnectError } from 'src/errors';\nimport { BridgeSessionRaw } from 'src/provider/bridge/models/bridge-session-raw';\nimport {\n BridgeConnection,\n BridgeConnectionHttp,\n BridgeConnectionHttpRaw,\n BridgeConnectionInjected,\n BridgeConnectionRaw\n} from 'src/provider/bridge/models/bridge-connection';\nimport { IStorage } from 'src/storage/models/storage.interface';\n\nexport class BridgeConnectionStorage {\n private readonly storeKey = 'ton-connect-storage_bridge-connection';\n\n constructor(private readonly storage: IStorage) {}\n\n public async storeConnection(connection: BridgeConnection): Promise<void> {\n if (connection.type === 'injected') {\n return this.storage.setItem(this.storeKey, JSON.stringify(connection));\n }\n\n const rawSession: BridgeSessionRaw = {\n sessionKeyPair: connection.session.sessionCrypto.stringifyKeypair(),\n walletPublicKey: connection.session.walletPublicKey,\n walletConnectionSource: connection.session.walletConnectionSource\n };\n\n const rawConnection: BridgeConnectionHttpRaw = {\n type: 'http',\n connectEvent: connection.connectEvent,\n session: rawSession\n };\n return this.storage.setItem(this.storeKey, JSON.stringify(rawConnection));\n }\n\n public async removeConnection(): Promise<void> {\n return this.storage.removeItem(this.storeKey);\n }\n\n public async getConnection(): Promise<BridgeConnection | null> {\n const stored = await this.storage.getItem(this.storeKey);\n if (!stored) {\n return null;\n }\n\n const connection: BridgeConnectionRaw = JSON.parse(stored);\n\n if (connection.type === 'injected') {\n return connection;\n }\n\n const sessionCrypto = new SessionCrypto(connection.session.sessionKeyPair);\n return {\n type: 'http',\n connectEvent: connection.connectEvent,\n session: {\n sessionCrypto,\n walletConnectionSource: connection.session.walletConnectionSource,\n walletPublicKey: connection.session.walletPublicKey\n }\n };\n }\n\n public async getHttpConnection(): Promise<BridgeConnectionHttp> {\n const connection = await this.getConnection();\n if (!connection) {\n throw new TonConnectError(\n 'Trying to read HTTP connection source while nothing is stored'\n );\n }\n\n if (connection.type === 'injected') {\n throw new TonConnectError(\n 'Trying to read HTTP connection source while injected connection is stored'\n );\n }\n\n return connection;\n }\n\n public async getInjectedConnection(): Promise<BridgeConnectionInjected> {\n const connection = await this.getConnection();\n\n if (!connection) {\n throw new TonConnectError(\n 'Trying to read Injected bridge connection source while nothing is stored'\n );\n }\n\n if (connection?.type === 'http') {\n throw new TonConnectError(\n 'Trying to read Injected bridge connection source while HTTP connection is stored'\n );\n }\n\n return connection;\n }\n\n public async storedConnectionType(): Promise<BridgeConnection['type'] | null> {\n const stored = await this.storage.getItem(this.storeKey);\n if (!stored) {\n return null;\n }\n const connection: BridgeConnection = JSON.parse(stored);\n return connection.type;\n }\n}\n","import { LocalstorageNotFoundError } from 'src/errors/storage/localstorage-not-found.error';\nimport { IStorage } from 'src/storage/models/storage.interface';\nimport { getWindow } from 'src/utils/web-api';\n\nexport class DefaultStorage implements IStorage {\n private readonly window: Window;\n\n constructor() {\n const window = getWindow();\n\n if (!window?.localStorage) {\n throw new LocalstorageNotFoundError();\n }\n\n this.window = window;\n }\n\n public async getItem(key: string): Promise<string | null> {\n return Promise.resolve(this.window.localStorage.getItem(key));\n }\n\n public async removeItem(key: string): Promise<void> {\n this.window.localStorage.removeItem(key);\n return Promise.resolve();\n }\n\n setItem(key: string, value: string): Promise<void> {\n this.window.localStorage.setItem(key, value);\n return Promise.resolve();\n }\n}\n","import { IStorage } from 'src/storage/models/storage.interface';\n\nexport class HttpBridgeGatewayStorage {\n private readonly storeKey = 'ton-connect-storage_http-bridge-gateway';\n\n constructor(private readonly storage: IStorage) {}\n\n public async storeLastEventId(lastEventId: string): Promise<void> {\n return this.storage.setItem(this.storeKey, lastEventId);\n }\n\n public async removeLastEventId(): Promise<void> {\n return this.storage.removeItem(this.storeKey);\n }\n\n public async getLastEventId(): Promise<string | null> {\n const stored = await this.storage.getItem(this.storeKey);\n if (!stored) {\n return null;\n }\n\n return stored;\n }\n}\n","import {\n ConnectEventError,\n ConnectEventSuccess,\n ConnectRequest,\n SendTransactionRpcResponseSuccess,\n TonAddressItemReply,\n WalletEvent,\n TonProofItemReply,\n ConnectItem\n} from '@tonconnect/protocol';\nimport { DappMetadataError } from 'src/errors/dapp/dapp-metadata.error';\nimport { ManifestContentErrorError } from 'src/errors/protocol/events/connect/manifest-content-error.error';\nimport { ManifestNotFoundError } from 'src/errors/protocol/events/connect/manifest-not-found.error';\nimport { TonConnectError } from 'src/errors/ton-connect.error';\nimport { WalletAlreadyConnectedError } from 'src/errors/wallet/wallet-already-connected.error';\nimport { WalletNotConnectedError } from 'src/errors/wallet/wallet-not-connected.error';\nimport { Account, Wallet, WalletConnectionSource, WalletInfo } from 'src/models';\nimport { SendTransactionRequest, SendTransactionResponse } from 'src/models/methods';\nimport { ConnectAdditionalRequest } from 'src/models/methods/connect/connect-additional-request';\nimport { TonConnectOptions } from 'src/models/ton-connect-options';\nimport {\n isWalletConnectionSourceJS,\n WalletConnectionSourceJS\n} from 'src/models/wallet/wallet-connection-source';\nimport { connectErrorsParser } from 'src/parsers/connect-errors-parser';\nimport { sendTransactionParser } from 'src/parsers/send-transaction-parser';\nimport { BridgeProvider } from 'src/provider/bridge/bridge-provider';\nimport { InjectedProvider } from 'src/provider/injected/injected-provider';\nimport { Provider } from 'src/provider/provider';\nimport { BridgeConnectionStorage } from 'src/storage/bridge-connection-storage';\nimport { DefaultStorage } from 'src/storage/default-storage';\nimport { ITonConnect } from 'src/ton-connect.interface';\nimport { getWebPageManifest } from 'src/utils/web-api';\nimport { WalletsListManager } from 'src/wallets-list-manager';\n\nexport class TonConnect implements ITonConnect {\n private readonly walletsList = new WalletsListManager();\n\n private readonly dappSettings: Required<TonConnectOptions>;\n\n private readonly bridgeConnectionStorage: BridgeConnectionStorage;\n\n private _wallet: Wallet | null = null;\n\n private provider: Provider | null = null;\n\n private statusChangeSubscriptions: ((walletInfo: Wallet | null) => void)[] = [];\n\n private statusChangeErrorSubscriptions: ((err: TonConnectError) => void)[] = [];\n\n /**\n * Shows if the wallet is connected right now.\n */\n public get connected(): boolean {\n return this._wallet !== null;\n }\n\n /**\n * Current connected account or null if no account is connected.\n */\n public get account(): Account | null {\n return this._wallet?.account || null;\n }\n\n /**\n * Current connected wallet or null if no account is connected.\n */\n public get wallet(): Wallet | null {\n return this._wallet;\n }\n\n private set wallet(value: Wallet | null) {\n this._wallet = value;\n this.statusChangeSubscriptions.forEach(callback => callback(this._wallet));\n }\n\n constructor(options?: TonConnectOptions) {\n this.dappSettings = {\n manifestUrl: options?.manifestUrl || getWebPageManifest(),\n storage: options?.storage || new DefaultStorage()\n };\n\n if (!this.dappSettings.manifestUrl) {\n throw new DappMetadataError(\n 'Dapp tonconnect-manifest.json must be specified if window.location.origin is undefined. See more https://github.com/ton-connect/docs/blob/main/requests-responses.md#app-manifest'\n );\n }\n\n this.bridgeConnectionStorage = new BridgeConnectionStorage(this.dappSettings.storage);\n }\n\n /**\n * Returns available wallets list.\n */\n public getWallets(): Promise<WalletInfo[]> {\n return this.walletsList.getWallets();\n }\n\n /**\n * Allows to subscribe to connection status changes and handle connection errors.\n * @param callback will be called after connections status changes with actual wallet or null.\n * @param errorsHandler (optional) will be called with some instance of TonConnectError when connect error is received.\n * @returns unsubscribe callback.\n */\n public onStatusChange(\n callback: (wallet: Wallet | null) => void,\n errorsHandler?: (err: TonConnectError) => void\n ): () => void {\n this.statusChangeSubscriptions.push(callback);\n if (errorsHandler) {\n this.statusChangeErrorSubscriptions.push(errorsHandler);\n }\n\n return () => {\n this.statusChangeSubscriptions = this.statusChangeSubscriptions.filter(\n item => item !== callback\n );\n if (errorsHandler) {\n this.statusChangeErrorSubscriptions = this.statusChangeErrorSubscriptions.filter(\n item => item !== errorsHandler\n );\n }\n };\n }\n\n /**\n * Generates universal link for an external wallet and subscribes to the wallet's bridge, or sends connect request to the injected wallet.\n * @param wallet wallet's bridge url and universal link for an external wallet or jsBridge key for the injected wallet.\n * @param request (optional) additional request to pass to the wallet while connect (currently only ton_proof is available).\n * @returns universal link if external wallet was passed or void for the injected wallet.\n */\n public connect<T extends WalletConnectionSource>(\n wallet: T,\n request?: ConnectAdditionalRequest\n ): T extends WalletConnectionSourceJS ? void : string;\n public connect(\n wallet: WalletConnectionSource,\n request?: ConnectAdditionalRequest\n ): void | string {\n if (this.connected) {\n throw new WalletAlreadyConnectedError();\n }\n\n this.provider?.closeConnection();\n this.provider = this.createProvider(wallet);\n\n return this.provider.connect(this.createConnectRequest(request));\n }\n\n /**\n * Try to restore existing session and reconnect to the corresponding wallet. Call it immediately when your app is loaded.\n */\n public async restoreConnection(): Promise<void> {\n const [bridgeConnectionType, embeddedWallet] = await Promise.all([\n this.bridgeConnectionStorage.storedConnectionType(),\n this.walletsList.getEmbeddedWallet()\n ]);\n\n switch (bridgeConnectionType) {\n case 'http':\n this.provider = await BridgeProvider.fromStorage(this.dappSettings.storage);\n break;\n case 'injected':\n this.provider = await InjectedProvider.fromStorage(this.dappSettings.storage);\n break;\n default:\n if (embeddedWallet) {\n this.provider = await this.createProvider(embeddedWallet);\n } else {\n return;\n }\n }\n\n this.provider.listen(this.walletEventsListener.bind(this));\n return this.provider.restoreConnection();\n }\n\n /**\n * Asks connected wallet to sign and send the transaction.\n * @param transaction transaction to send.\n * @returns signed transaction boc that allows you to find the transaction in the blockchain.\n * If user rejects transaction, method will throw the corresponding error.\n */\n public async sendTransaction(\n transaction: SendTransactionRequest\n ): Promise<SendTransactionResponse> {\n const { validUntil, ...tx } = transaction;\n\n this.checkConnection();\n const response = await this.provider!.sendRequest(\n sendTransactionParser.convertToRpcRequest({ ...tx, valid_until: validUntil })\n );\n\n if (sendTransactionParser.isError(response)) {\n return sendTransactionParser.parseAndThrowError(response);\n }\n\n return sendTransactionParser.convertFromRpcResponse(\n response as SendTransactionRpcResponseSuccess\n );\n }\n\n /**\n * Disconnect form thw connected wallet and drop current session.\n */\n public async disconnect(): Promise<void> {\n if (!this.connected) {\n throw new WalletNotConnectedError();\n }\n await this.provider!.disconnect();\n this.onWalletDisconnected();\n }\n\n private createProvider(wallet: WalletConnectionSource): Provider {\n let provider: Provider;\n\n if (isWalletConnectionSourceJS(wallet)) {\n provider = new InjectedProvider(wallet.jsBridgeKey);\n } else {\n provider = new BridgeProvider(this.dappSettings.storage, wallet);\n }\n\n provider.listen(this.walletEventsListener.bind(this));\n return provider;\n }\n\n private walletEventsListener(e: WalletEvent): void {\n switch (e.event) {\n case 'connect':\n this.onWalletConnected(e.payload);\n break;\n case 'connect_error':\n this.onWalletConnectError(e.payload);\n break;\n case 'disconnect':\n this.onWalletDisconnected();\n }\n }\n\n private onWalletConnected(connectEvent: ConnectEventSuccess['payload']): void {\n const tonAccountItem: TonAddressItemReply | undefined = connectEvent.items.find(\n item => item.name === 'ton_addr'\n ) as TonAddressItemReply | undefined;\n\n const tonProofItem: TonProofItemReply | undefined = connectEvent.items.find(\n item => item.name === 'ton_proof'\n ) as TonProofItemReply | undefined;\n\n if (!tonAccountItem) {\n throw new TonConnectError('ton_addr connection item was not found');\n }\n\n const wallet: Wallet = {\n device: connectEvent.device,\n provider: this.provider!.type,\n account: {\n address: tonAccountItem.address,\n chain: tonAccountItem.network,\n walletStateInit: tonAccountItem.walletStateInit\n }\n };\n\n if (tonProofItem) {\n wallet.connectItems = {\n tonProof: tonProofItem\n };\n }\n\n this.wallet = wallet;\n }\n\n private onWalletConnectError(connectEventError: ConnectEventError['payload']): void {\n const error = connectErrorsParser.parseError(connectEventError);\n this.statusChangeErrorSubscriptions.forEach(errorsHandler => errorsHandler(error));\n\n if (error instanceof ManifestNotFoundError || error instanceof ManifestContentErrorError) {\n console.error(error);\n throw error;\n }\n }\n\n private onWalletDisconnected(): void {\n this.wallet = null;\n }\n\n private checkConnection(): void | never {\n if (!this.connected) {\n throw new WalletNotConnectedError();\n }\n }\n\n private createConnectRequest(request?: ConnectAdditionalRequest): ConnectRequest {\n const items: ConnectItem[] = [\n {\n name: 'ton_addr'\n }\n ];\n\n if (request) {\n items.push({\n name: 'ton_proof',\n payload: request.tonProof\n });\n }\n\n return {\n manifestUrl: this.dappSettings.manifestUrl,\n items\n };\n }\n}\n","export function removeUrlLastSlash(url: string): string {\n if (url.slice(-1) === '/') {\n return url.slice(0, -1);\n }\n\n return url;\n}\n\nexport function addPathToUrl(url: string, path: string): string {\n return removeUrlLastSlash(url) + '/' + path;\n}\n","export function getWindow(): Window | undefined {\n if (typeof window === 'undefined') {\n return undefined;\n }\n\n return window;\n}\n\nexport function getDocument(): Document | undefined {\n if (typeof document === 'undefined') {\n return undefined;\n }\n\n return document;\n}\n\nexport function getWebPageManifest(): string {\n const origin = getWindow()?.location.origin;\n if (origin) {\n return origin + '/tonconnect-manifest.json';\n }\n\n return '';\n}\n","import { FetchWalletsError } from 'src/errors/wallets-manager/fetch-wallets.error';\nimport {\n WalletInfoRemote,\n WalletInfoInjected,\n WalletInfo,\n WalletInfoDTO,\n isWalletInfoInjected\n} from 'src/models/wallet/wallet-info';\nimport { InjectedProvider } from 'src/provider/injected/injected-provider';\n\nexport class WalletsListManager {\n private walletsListCache: Promise<WalletInfo[]> | null = null;\n\n private readonly walletsListSource =\n 'https://raw.githubusercontent.com/ton-connect/wallets-list/main/wallets.json';\n\n public async getWallets(): Promise<WalletInfo[]> {\n if (!this.walletsListCache) {\n this.walletsListCache = this.fetchWalletsList();\n this.walletsListCache.catch(() => (this.walletsListCache = null));\n }\n\n return this.walletsListCache;\n }\n\n public async getEmbeddedWallet(): Promise<WalletInfoInjected | null> {\n const walletsList = await this.getWallets();\n const injectedWallets = walletsList.filter(isWalletInfoInjected);\n\n if (injectedWallets.length !== 1) {\n return null;\n }\n\n return injectedWallets[0]!.embedded ? injectedWallets[0]! : null;\n }\n\n private async fetchWalletsList(): Promise<WalletInfo[]> {\n try {\n const walletsResponse = await fetch(this.walletsListSource);\n const walletsList: WalletInfoDTO[] = await walletsResponse.json();\n\n if (\n !Array.isArray(walletsList) ||\n !walletsList.every(wallet => this.isCorrectWalletConfigDTO(wallet))\n ) {\n throw new FetchWalletsError('Wrong wallets list format');\n }\n\n return this.walletConfigDTOListToWalletConfigList(walletsList);\n } catch (e) {\n throw new FetchWalletsError(e);\n }\n }\n\n private walletConfigDTOListToWalletConfigList(walletConfigDTO: WalletInfoDTO[]): WalletInfo[] {\n return walletConfigDTO.map(walletConfigDTO => {\n const walletConfig: WalletInfo = {\n name: walletConfigDTO.name,\n imageUrl: walletConfigDTO.image,\n aboutUrl: walletConfigDTO.about_url,\n tondns: walletConfigDTO.tondns\n } as WalletInfo;\n\n if ('bridge_url' in walletConfigDTO) {\n (walletConfig as WalletInfoRemote).bridgeUrl = walletConfigDTO.bridge_url;\n (walletConfig as WalletInfoRemote).universalLink = walletConfigDTO.universal_url;\n }\n\n if ('js_bridge_key' in walletConfigDTO) {\n const jsBridgeKey = walletConfigDTO.js_bridge_key;\n (walletConfig as WalletInfoInjected).jsBridgeKey = jsBridgeKey;\n (walletConfig as WalletInfoInjected).injected =\n InjectedProvider.isWalletInjected(jsBridgeKey);\n (walletConfig as WalletInfoInjected).embedded =\n InjectedProvider.isInsideWalletBrowser(jsBridgeKey);\n }\n\n return walletConfig;\n });\n }\n\n private isCorrectWalletConfigDTO(value: unknown): value is WalletInfoDTO {\n if (!value || !(typeof value === 'object')) {\n return false;\n }\n\n const containsName = 'name' in value;\n const containsImage = 'image' in value;\n const containsAbout = 'about_url' in value;\n\n if (!containsName || !containsImage || !containsAbout) {\n return false;\n }\n\n const containsUniversalUrl = 'universal_url' in value;\n const containsHttpBridge = 'bridge_url' in value;\n const containsJsBridge = 'js_bridge_key' in value;\n\n return (containsHttpBridge && containsUniversalUrl) || containsJsBridge;\n }\n}\n","// Written in 2014-2016 by Dmitry Chestnykh and Devi Mandiri.\n// Public domain.\n(function(root, f) {\n 'use strict';\n if (typeof module !== 'undefined' && module.exports) module.exports = f();\n else if (root.nacl) root.nacl.util = f();\n else {\n root.nacl = {};\n root.nacl.util = f();\n }\n}(this, function() {\n 'use strict';\n\n var util = {};\n\n function validateBase64(s) {\n if (!(/^(?:[A-Za-z0-9+\\/]{2}[A-Za-z0-9+\\/]{2})*(?:[A-Za-z0-9+\\/]{2}==|[A-Za-z0-9+\\/]{3}=)?$/.test(s))) {\n throw new TypeError('invalid encoding');\n }\n }\n\n util.decodeUTF8 = function(s) {\n if (typeof s !== 'string') throw new TypeError('expected string');\n var i, d = unescape(encodeURIComponent(s)), b = new Uint8Array(d.length);\n for (i = 0; i < d.length; i++) b[i] = d.charCodeAt(i);\n return b;\n };\n\n util.encodeUTF8 = function(arr) {\n var i, s = [];\n for (i = 0; i < arr.length; i++) s.push(String.fromCharCode(arr[i]));\n return decodeURIComponent(escape(s.join('')));\n };\n\n if (typeof atob === 'undefined') {\n // Node.js\n\n if (typeof Buffer.from !== 'undefined') {\n // Node v6 and later\n util.encodeBase64 = function (arr) { // v6 and later\n return Buffer.from(arr).toString('base64');\n };\n\n util.decodeBase64 = function (s) {\n validateBase64(s);\n return new Uint8Array(Array.prototype.slice.call(Buffer.from(s, 'base64'), 0));\n };\n\n } else {\n // Node earlier than v6\n util.encodeBase64 = function (arr) { // v6 and later\n return (new Buffer(arr)).toString('base64');\n };\n\n util.decodeBase64 = function(s) {\n validateBase64(s);\n return new Uint8Array(Array.prototype.slice.call(new Buffer(s, 'base64'), 0));\n };\n }\n\n } else {\n // Browsers\n\n util.encodeBase64 = function(arr) {\n var i, s = [], len = arr.length;\n for (i = 0; i < len; i++) s.push(String.fromCharCode(arr[i]));\n return btoa(s.join(''));\n };\n\n util.decodeBase64 = function(s) {\n validateBase64(s);\n var i, d = atob(s), b = new Uint8Array(d.length);\n for (i = 0; i < d.length; i++) b[i] = d.charCodeAt(i);\n return b;\n };\n\n }\n\n return util;\n\n}));\n","(function(nacl) {\n'use strict';\n\n// Ported in 2014 by Dmitry Chestnykh and Devi Mandiri.\n// Public domain.\n//\n// Implementation derived from TweetNaCl version 20140427.\n// See for details: http://tweetnacl.cr.yp.to/\n\nvar gf = function(init) {\n var i, r = new Float64Array(16);\n if (init) for (i = 0; i < init.length; i++) r[i] = init[i];\n return r;\n};\n\n// Pluggable, initialized in high-level API below.\nvar randombytes = function(/* x, n */) { throw new Error('no PRNG'); };\n\nvar _0 = new Uint8Array(16);\nvar _9 = new Uint8Array(32); _9[0] = 9;\n\nvar gf0 = gf(),\n gf1 = gf([1]),\n _121665 = gf([0xdb41, 1]),\n D = gf([0x78a3, 0x1359, 0x4dca, 0x75eb, 0xd8ab, 0x4141, 0x0a4d, 0x0070, 0xe898, 0x7779, 0x4079, 0x8cc7, 0xfe73, 0x2b6f, 0x6cee, 0x5203]),\n D2 = gf([0xf159, 0x26b2, 0x9b94, 0xebd6, 0xb156, 0x8283, 0x149a, 0x00e0, 0xd130, 0xeef3, 0x80f2, 0x198e, 0xfce7, 0x56df, 0xd9dc, 0x2406]),\n X = gf([0xd51a, 0x8f25, 0x2d60, 0xc956, 0xa7b2, 0x9525, 0xc760, 0x692c, 0xdc5c, 0xfdd6, 0xe231, 0xc0a4, 0x53fe, 0xcd6e, 0x36d3, 0x2169]),\n Y = gf([0x6658, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666]),\n I = gf([0xa0b0, 0x4a0e, 0x1b27, 0xc4ee, 0xe478, 0xad2f, 0x1806, 0x2f43, 0xd7a7, 0x3dfb, 0x0099, 0x2b4d, 0xdf0b, 0x4fc1, 0x2480, 0x2b83]);\n\nfunction ts64(x, i, h, l) {\n x[i] = (h >> 24) & 0xff;\n x[i+1] = (h >> 16) & 0xff;\n x[i+2] = (h >> 8) & 0xff;\n x[i+3] = h & 0xff;\n x[i+4] = (l >> 24) & 0xff;\n x[i+5] = (l >> 16) & 0xff;\n x[i+6] = (l >> 8) & 0xff;\n x[i+7] = l & 0xff;\n}\n\nfunction vn(x, xi, y, yi, n) {\n var i,d = 0;\n for (i = 0; i < n; i++) d |= x[xi+i]^y[yi+i];\n return (1 & ((d - 1) >>> 8)) - 1;\n}\n\nfunction crypto_verify_16(x, xi, y, yi) {\n return vn(x,xi,y,yi,16);\n}\n\nfunction crypto_verify_32(x, xi, y, yi) {\n return vn(x,xi,y,yi,32);\n}\n\nfunction core_salsa20(o, p, k, c) {\n var j0 = c[ 0] & 0xff | (c[ 1] & 0xff)<<8 | (c[ 2] & 0xff)<<16 | (c[ 3] & 0xff)<<24,\n j1 = k[ 0] & 0xff | (k[ 1] & 0xff)<<8 | (k[ 2] & 0xff)<<16 | (k[ 3] & 0xff)<<24,\n j2 = k[ 4] & 0xff | (k[ 5] & 0xff)<<8 | (k[ 6] & 0xff)<<16 | (k[ 7] & 0xff)<<24,\n j3 = k[ 8] & 0xff | (k[ 9] & 0xff)<<8 | (k[10] & 0xff)<<16 | (k[11] & 0xff)<<24,\n j4 = k[12] & 0xff | (k[13] & 0xff)<<8 | (k[14] & 0xff)<<16 | (k[15] & 0xff)<<24,\n j5 = c[ 4] & 0xff | (c[ 5] & 0xff)<<8 | (c[ 6] & 0xff)<<16 | (c[ 7] & 0xff)<<24,\n j6 = p[ 0] & 0xff | (p[ 1] & 0xff)<<8 | (p[ 2] & 0xff)<<16 | (p[ 3] & 0xff)<<24,\n j7 = p[ 4] & 0xff | (p[ 5] & 0xff)<<8 | (p[ 6] & 0xff)<<16 | (p[ 7] & 0xff)<<24,\n j8 = p[ 8] & 0xff | (p[ 9] & 0xff)<<8 | (p[10] & 0xff)<<16 | (p[11] & 0xff)<<24,\n j9 = p[12] & 0xff | (p[13] & 0xff)<<8 | (p[14] & 0xff)<<16 | (p[15] & 0xff)<<24,\n j10 = c[ 8] & 0xff | (c[ 9] & 0xff)<<8 | (c[10] & 0xff)<<16 | (c[11] & 0xff)<<24,\n j11 = k[16] & 0xff | (k[17] & 0xff)<<8 | (k[18] & 0xff)<<16 | (k[19] & 0xff)<<24,\n j12 = k[20] & 0xff | (k[21] & 0xff)<<8 | (k[22] & 0xff)<<16 | (k[23] & 0xff)<<24,\n j13 = k[24] & 0xff | (k[25] & 0xff)<<8 | (k[26] & 0xff)<<16 | (k[27] & 0xff)<<24,\n j14 = k[28] & 0xff | (k[29] & 0xff)<<8 | (k[30] & 0xff)<<16 | (k[31] & 0xff)<<24,\n j15 = c[12] & 0xff | (c[13] & 0xff)<<8 | (c[14] & 0xff)<<16 | (c[15] & 0xff)<<24;\n\n var x0 = j0, x1 = j1, x2 = j2, x3 = j3, x4 = j4, x5 = j5, x6 = j6, x7 = j7,\n x8 = j8, x9 = j9, x10 = j10, x11 = j11, x12 = j12, x13 = j13, x14 = j14,\n x15 = j15, u;\n\n for (var i = 0; i < 20; i += 2) {\n u = x0 + x12 | 0;\n x4 ^= u<<7 | u>>>(32-7);\n u = x4 + x0 | 0;\n x8 ^= u<<9 | u>>>(32-9);\n u = x8 + x4 | 0;\n x12 ^= u<<13 | u>>>(32-13);\n u = x12 + x8 | 0;\n x0 ^= u<<18 | u>>>(32-18);\n\n u = x5 + x1 | 0;\n x9 ^= u<<7 | u>>>(32-7);\n u = x9 + x5 | 0;\n x13 ^= u<<9 | u>>>(32-9);\n u = x13 + x9 | 0;\n x1 ^= u<<13 | u>>>(32-13);\n u = x1 + x13 | 0;\n x5 ^= u<<18 | u>>>(32-18);\n\n u = x10 + x6 | 0;\n x14 ^= u<<7 | u>>>(32-7);\n u = x14 + x10 | 0;\n x2 ^= u<<9 | u>>>(32-9);\n u = x2 + x14 | 0;\n x6 ^= u<<13 | u>>>(32-13);\n u = x6 + x2 | 0;\n x10 ^= u<<18 | u>>>(32-18);\n\n u = x15 + x11 | 0;\n x3 ^= u<<7 | u>>>(32-7);\n u = x3 + x15 | 0;\n x7 ^= u<<9 | u>>>(32-9);\n u = x7 + x3 | 0;\n x11 ^= u<<13 | u>>>(32-13);\n u = x11 + x7 | 0;\n x15 ^= u<<18 | u>>>(32-18);\n\n u = x0 + x3 | 0;\n x1 ^= u<<7 | u>>>(32-7);\n u = x1 + x0 | 0;\n x2 ^= u<<9 | u>>>(32-9);\n u = x2 + x1 | 0;\n x3 ^= u<<13 | u>>>(32-13);\n u = x3 + x2 | 0;\n x0 ^= u<<18 | u>>>(32-18);\n\n u = x5 + x4 | 0;\n x6 ^= u<<7 | u>>>(32-7);\n u = x6 + x5 | 0;\n x7 ^= u<<9 | u>>>(32-9);\n u = x7 + x6 | 0;\n x4 ^= u<<13 | u>>>(32-13);\n u = x4 + x7 | 0;\n x5 ^= u<<18 | u>>>(32-18);\n\n u = x10 + x9 | 0;\n x11 ^= u<<7 | u>>>(32-7);\n u = x11 + x10 | 0;\n x8 ^= u<<9 | u>>>(32-9);\n u = x8 + x11 | 0;\n x9 ^= u<<13 | u>>>(32-13);\n u = x9 + x8 | 0;\n x10 ^= u<<18 | u>>>(32-18);\n\n u = x15 + x14 | 0;\n x12 ^= u<<7 | u>>>(32-7);\n u = x12 + x15 | 0;\n x13 ^= u<<9 | u>>>(32-9);\n u = x13 + x12 | 0;\n x14 ^= u<<13 | u>>>(32-13);\n u = x14 + x13 | 0;\n x15 ^= u<<18 | u>>>(32-18);\n }\n x0 = x0 + j0 | 0;\n x1 = x1 + j1 | 0;\n x2 = x2 + j2 | 0;\n x3 = x3 + j3 | 0;\n x4 = x4 + j4 | 0;\n x5 = x5 + j5 | 0;\n x6 = x6 + j6 | 0;\n x7 = x7 + j7 | 0;\n x8 = x8 + j8 | 0;\n x9 = x9 + j9 | 0;\n x10 = x10 + j10 | 0;\n x11 = x11 + j11 | 0;\n x12 = x12 + j12 | 0;\n x13 = x13 + j13 | 0;\n x14 = x14 + j14 | 0;\n x15 = x15 + j15 | 0;\n\n o[ 0] = x0 >>> 0 & 0xff;\n o[ 1] = x0 >>> 8 & 0xff;\n o[ 2] = x0 >>> 16 & 0xff;\n o[ 3] = x0 >>> 24 & 0xff;\n\n o[ 4] = x1 >>> 0 & 0xff;\n o[ 5] = x1 >>> 8 & 0xff;\n o[ 6] = x1 >>> 16 & 0xff;\n o[ 7] = x1 >>> 24 & 0xff;\n\n o[ 8] = x2 >>> 0 & 0xff;\n o[ 9] = x2 >>> 8 & 0xff;\n o[10] = x2 >>> 16 & 0xff;\n o[11] = x2 >>> 24 & 0xff;\n\n o[12] = x3 >>> 0 & 0xff;\n o[13] = x3 >>> 8 & 0xff;\n o[14] = x3 >>> 16 & 0xff;\n o[15] = x3 >>> 24 & 0xff;\n\n o[16] = x4 >>> 0 & 0xff;\n o[17] = x4 >>> 8 & 0xff;\n o[18] = x4 >>> 16 & 0xff;\n o[19] = x4 >>> 24 & 0xff;\n\n o[20] = x5 >>> 0 & 0xff;\n o[21] = x5 >>> 8 & 0xff;\n o[22] = x5 >>> 16 & 0xff;\n o[23] = x5 >>> 24 & 0xff;\n\n o[24] = x6 >>> 0 & 0xff;\n o[25] = x6 >>> 8 & 0xff;\n o[26] = x6 >>> 16 & 0xff;\n o[27] = x6 >>> 24 & 0xff;\n\n o[28] = x7 >>> 0 & 0xff;\n o[29] = x7 >>> 8 & 0xff;\n o[30] = x7 >>> 16 & 0xff;\n o[31] = x7 >>> 24 & 0xff;\n\n o[32] = x8 >>> 0 & 0xff;\n o[33] = x8 >>> 8 & 0xff;\n o[34] = x8 >>> 16 & 0xff;\n o[35] = x8 >>> 24 & 0xff;\n\n o[36] = x9 >>> 0 & 0xff;\n o[37] = x9 >>> 8 & 0xff;\n o[38] = x9 >>> 16 & 0xff;\n o[39] = x9 >>> 24 & 0xff;\n\n o[40] = x10 >>> 0 & 0xff;\n o[41] = x10 >>> 8 & 0xff;\n o[42] = x10 >>> 16 & 0xff;\n o[43] = x10 >>> 24 & 0xff;\n\n o[44] = x11 >>> 0 & 0xff;\n o[45] = x11 >>> 8 & 0xff;\n o[46] = x11 >>> 16 & 0xff;\n o[47] = x11 >>> 24 & 0xff;\n\n o[48] = x12 >>> 0 & 0xff;\n o[49] = x12 >>> 8 & 0xff;\n o[50] = x12 >>> 16 & 0xff;\n o[51] = x12 >>> 24 & 0xff;\n\n o[52] = x13 >>> 0 & 0xff;\n o[53] = x13 >>> 8 & 0xff;\n o[54] = x13 >>> 16 & 0xff;\n o[55] = x13 >>> 24 & 0xff;\n\n o[56] = x14 >>> 0 & 0xff;\n o[57] = x14 >>> 8 & 0xff;\n o[58] = x14 >>> 16 & 0xff;\n o[59] = x14 >>> 24 & 0xff;\n\n o[60] = x15 >>> 0 & 0xff;\n o[61] = x15 >>> 8 & 0xff;\n o[62] = x15 >>> 16 & 0xff;\n o[63] = x15 >>> 24 & 0xff;\n}\n\nfunction core_hsalsa20(o,p,k,c) {\n var j0 = c[ 0] & 0xff | (c[ 1] & 0xff)<<8 | (c[ 2] & 0xff)<<16 | (c[ 3] & 0xff)<<24,\n j1 = k[ 0] & 0xff | (k[ 1] & 0xff)<<8 | (k[ 2] & 0xff)<<16 | (k[ 3] & 0xff)<<24,\n j2 = k[ 4] & 0xff | (k[ 5] & 0xff)<<8 | (k[ 6] & 0xff)<<16 | (k[ 7] & 0xff)<<24,\n j3 = k[ 8] & 0xff | (k[ 9] & 0xff)<<8 | (k[10] & 0xff)<<16 | (k[11] & 0xff)<<24,\n j4 = k[12] & 0xff | (k[13] & 0xff)<<8 | (k[14] & 0xff)<<16 | (k[15] & 0xff)<<24,\n j5 = c[ 4] & 0xff | (c[ 5] & 0xff)<<8 | (c[ 6] & 0xff)<<16 | (c[ 7] & 0xff)<<24,\n j6 = p[ 0] & 0xff | (p[ 1] & 0xff)<<8 | (p[ 2] & 0xff)<<16 | (p[ 3] & 0xff)<<24,\n j7 = p[ 4] & 0xff | (p[ 5] & 0xff)<<8 | (p[ 6] & 0xff)<<16 | (p[ 7] & 0xff)<<24,\n j8 = p[ 8] & 0xff | (p[ 9] & 0xff)<<8 | (p[10] & 0xff)<<16 | (p[11] & 0xff)<<24,\n j9 = p[12] & 0xff | (p[13] & 0xff)<<8 | (p[14] & 0xff)<<16 | (p[15] & 0xff)<<24,\n j10 = c[ 8] & 0xff | (c[ 9] & 0xff)<<8 | (c[10] & 0xff)<<16 | (c[11] & 0xff)<<24,\n j11 = k[16] & 0xff | (k[17] & 0xff)<<8 | (k[18] & 0xff)<<16 | (k[19] & 0xff)<<24,\n j12 = k[20] & 0xff | (k[21] & 0xff)<<8 | (k[22] & 0xff)<<16 | (k[23] & 0xff)<<24,\n j13 = k[24] & 0xff | (k[25] & 0xff)<<8 | (k[26] & 0xff)<<16 | (k[27] & 0xff)<<24,\n j14 = k[28] & 0xff | (k[29] & 0xff)<<8 | (k[30] & 0xff)<<16 | (k[31] & 0xff)<<24,\n j15 = c[12] & 0xff | (c[13] & 0xff)<<8 | (c[14] & 0xff)<<16 | (c[15] & 0xff)<<24;\n\n var x0 = j0, x1 = j1, x2 = j2, x3 = j3, x4 = j4, x5 = j5, x6 = j6, x7 = j7,\n x8 = j8, x9 = j9, x10 = j10, x11 = j11, x12 = j12, x13 = j13, x14 = j14,\n x15 = j15, u;\n\n for (var i = 0; i < 20; i += 2) {\n u = x0 + x12 | 0;\n x4 ^= u<<7 | u>>>(32-7);\n u = x4 + x0 | 0;\n x8 ^= u<<9 | u>>>(32-9);\n u = x8 + x4 | 0;\n x12 ^= u<<13 | u>>>(32-13);\n u = x12 + x8 | 0;\n x0 ^= u<<18 | u>>>(32-18);\n\n u = x5 + x1 | 0;\n x9 ^= u<<7 | u>>>(32-7);\n u = x9 + x5 | 0;\n x13 ^= u<<9 | u>>>(32-9);\n u = x13 + x9 | 0;\n x1 ^= u<<13 | u>>>(32-13);\n u = x1 + x13 | 0;\n x5 ^= u<<18 | u>>>(32-18);\n\n u = x10 + x6 | 0;\n x14 ^= u<<7 | u>>>(32-7);\n u = x14 + x10 | 0;\n x2 ^= u<<9 | u>>>(32-9);\n u = x2 + x14 | 0;\n x6 ^= u<<13 | u>>>(32-13);\n u = x6 + x2 | 0;\n x10 ^= u<<18 | u>>>(32-18);\n\n u = x15 + x11 | 0;\n x3 ^= u<<7 | u>>>(32-7);\n u = x3 + x15 | 0;\n x7 ^= u<<9 | u>>>(32-9);\n u = x7 + x3 | 0;\n x11 ^= u<<13 | u>>>(32-13);\n u = x11 + x7 | 0;\n x15 ^= u<<18 | u>>>(32-18);\n\n u = x0 + x3 | 0;\n x1 ^= u<<7 | u>>>(32-7);\n u = x1 + x0 | 0;\n x2 ^= u<<9 | u>>>(32-9);\n u = x2 + x1 | 0;\n x3 ^= u<<13 | u>>>(32-13);\n u = x3 + x2 | 0;\n x0 ^= u<<18 | u>>>(32-18);\n\n u = x5 + x4 | 0;\n x6 ^= u<<7 | u>>>(32-7);\n u = x6 + x5 | 0;\n x7 ^= u<<9 | u>>>(32-9);\n u = x7 + x6 | 0;\n x4 ^= u<<13 | u>>>(32-13);\n u = x4 + x7 | 0;\n x5 ^= u<<18 | u>>>(32-18);\n\n u = x10 + x9 | 0;\n x11 ^= u<<7 | u>>>(32-7);\n u = x11 + x10 | 0;\n x8 ^= u<<9 | u>>>(32-9);\n u = x8 + x11 | 0;\n x9 ^= u<<13 | u>>>(32-13);\n u = x9 + x8 | 0;\n x10 ^= u<<18 | u>>>(32-18);\n\n u = x15 + x14 | 0;\n x12 ^= u<<7 | u>>>(32-7);\n u = x12 + x15 | 0;\n x13 ^= u<<9 | u>>>(32-9);\n u = x13 + x12 | 0;\n x14 ^= u<<13 | u>>>(32-13);\n u = x14 + x13 | 0;\n x15 ^= u<<18 | u>>>(32-18);\n }\n\n o[ 0] = x0 >>> 0 & 0xff;\n o[ 1] = x0 >>> 8 & 0xff;\n o[ 2] = x0 >>> 16 & 0xff;\n o[ 3] = x0 >>> 24 & 0xff;\n\n o[ 4] = x5 >>> 0 & 0xff;\n o[ 5] = x5 >>> 8 & 0xff;\n o[ 6] = x5 >>> 16 & 0xff;\n o[ 7] = x5 >>> 24 & 0xff;\n\n o[ 8] = x10 >>> 0 & 0xff;\n o[ 9] = x10 >>> 8 & 0xff;\n o[10] = x10 >>> 16 & 0xff;\n o[11] = x10 >>> 24 & 0xff;\n\n o[12] = x15 >>> 0 & 0xff;\n o[13] = x15 >>> 8 & 0xff;\n o[14] = x15 >>> 16 & 0xff;\n o[15] = x15 >>> 24 & 0xff;\n\n o[16] = x6 >>> 0 & 0xff;\n o[17] = x6 >>> 8 & 0xff;\n o[18] = x6 >>> 16 & 0xff;\n o[19] = x6 >>> 24 & 0xff;\n\n o[20] = x7 >>> 0 & 0xff;\n o[21] = x7 >>> 8 & 0xff;\n o[22] = x7 >>> 16 & 0xff;\n o[23] = x7 >>> 24 & 0xff;\n\n o[24] = x8 >>> 0 & 0xff;\n o[25] = x8 >>> 8 & 0xff;\n o[26] = x8 >>> 16 & 0xff;\n o[27] = x8 >>> 24 & 0xff;\n\n o[28] = x9 >>> 0 & 0xff;\n o[29] = x9 >>> 8 & 0xff;\n o[30] = x9 >>> 16 & 0xff;\n o[31] = x9 >>> 24 & 0xff;\n}\n\nfunction crypto_core_salsa20(out,inp,k,c) {\n core_salsa20(out,inp,k,c);\n}\n\nfunction crypto_core_hsalsa20(out,inp,k,c) {\n core_hsalsa20(out,inp,k,c);\n}\n\nvar sigma = new Uint8Array([101, 120, 112, 97, 110, 100, 32, 51, 50, 45, 98, 121, 116, 101, 32, 107]);\n // \"expand 32-byte k\"\n\nfunction crypto_stream_salsa20_xor(c,cpos,m,mpos,b,n,k) {\n var z = new Uint8Array(16), x = new Uint8Array(64);\n var u, i;\n for (i = 0; i < 16; i++) z[i] = 0;\n for (i = 0; i < 8; i++) z[i] = n[i];\n while (b >= 64) {\n crypto_core_salsa20(x,z,k,sigma);\n for (i = 0; i < 64; i++) c[cpos+i] = m[mpos+i] ^ x[i];\n u = 1;\n for (i = 8; i < 16; i++) {\n u = u + (z[i] & 0xff) | 0;\n z[i] = u & 0xff;\n u >>>= 8;\n }\n b -= 64;\n cpos += 64;\n mpos += 64;\n }\n if (b > 0) {\n crypto_core_salsa20(x,z,k,sigma);\n for (i = 0; i < b; i++) c[cpos+i] = m[mpos+i] ^ x[i];\n }\n return 0;\n}\n\nfunction crypto_stream_salsa20(c,cpos,b,n,k) {\n var z = new Uint8Array(16), x = new Uint8Array(64);\n var u, i;\n for (i = 0; i < 16; i++) z[i] = 0;\n for (i = 0; i < 8; i++) z[i] = n[i];\n while (b >= 64) {\n crypto_core_salsa20(x,z,k,sigma);\n for (i = 0; i < 64; i++) c[cpos+i] = x[i];\n u = 1;\n for (i = 8; i < 16; i++) {\n u = u + (z[i] & 0xff) | 0;\n z[i] = u & 0xff;\n u >>>= 8;\n }\n b -= 64;\n cpos += 64;\n }\n if (b > 0) {\n crypto_core_salsa20(x,z,k,sigma);\n for (i = 0; i < b; i++) c[cpos+i] = x[i];\n }\n return 0;\n}\n\nfunction crypto_stream(c,cpos,d,n,k) {\n var s = new Uint8Array(32);\n crypto_core_hsalsa20(s,n,k,sigma);\n var sn = new Uint8Array(8);\n for (var i = 0; i < 8; i++) sn[i] = n[i+16];\n return crypto_stream_salsa20(c,cpos,d,sn,s);\n}\n\nfunction crypto_stream_xor(c,cpos,m,mpos,d,n,k) {\n var s = new Uint8Array(32);\n crypto_core_hsalsa20(s,n,k,sigma);\n var sn = new Uint8Array(8);\n for (var i = 0; i < 8; i++) sn[i] = n[i+16];\n return crypto_stream_salsa20_xor(c,cpos,m,mpos,d,sn,s);\n}\n\n/*\n* Port of Andrew Moon's Poly1305-donna-16. Public domain.\n* https://github.com/floodyberry/poly1305-donna\n*/\n\nvar poly1305 = function(key) {\n this.buffer = new Uint8Array(16);\n this.r = new Uint16Array(10);\n this.h = new Uint16Array(10);\n this.pad = new Uint16Array(8);\n this.leftover = 0;\n this.fin = 0;\n\n var t0, t1, t2, t3, t4, t5, t6, t7;\n\n t0 = key[ 0] & 0xff | (key[ 1] & 0xff) << 8; this.r[0] = ( t0 ) & 0x1fff;\n t1 = key[ 2] & 0xff | (key[ 3] & 0xff) << 8; this.r[1] = ((t0 >>> 13) | (t1 << 3)) & 0x1fff;\n t2 = key[ 4] & 0xff | (key[ 5] & 0xff) << 8; this.r[2] = ((t1 >>> 10) | (t2 << 6)) & 0x1f03;\n t3 = key[ 6] & 0xff | (key[ 7] & 0xff) << 8; this.r[3] = ((t2 >>> 7) | (t3 << 9)) & 0x1fff;\n t4 = key[ 8] & 0xff | (key[ 9] & 0xff) << 8; this.r[4] = ((t3 >>> 4) | (t4 << 12)) & 0x00ff;\n this.r[5] = ((t4 >>> 1)) & 0x1ffe;\n t5 = key[10] & 0xff | (key[11] & 0xff) << 8; this.r[6] = ((t4 >>> 14) | (t5 << 2)) & 0x1fff;\n t6 = key[12] & 0xff | (key[13] & 0xff) << 8; this.r[7] = ((t5 >>> 11) | (t6 << 5)) & 0x1f81;\n t7 = key[14] & 0xff | (key[15] & 0xff) << 8; this.r[8] = ((t6 >>> 8) | (t7 << 8)) & 0x1fff;\n this.r[9] = ((t7 >>> 5)) & 0x007f;\n\n this.pad[0] = key[16] & 0xff | (key[17] & 0xff) << 8;\n this.pad[1] = key[18] & 0xff | (key[19] & 0xff) << 8;\n this.pad[2] = key[20] & 0xff | (key[21] & 0xff) << 8;\n this.pad[3] = key[22] & 0xff | (key[23] & 0xff) << 8;\n this.pad[4] = key[24] & 0xff | (key[25] & 0xff) << 8;\n this.pad[5] = key[26] & 0xff | (key[27] & 0xff) << 8;\n this.pad[6] = key[28] & 0xff | (key[29] & 0xff) << 8;\n this.pad[7] = key[30] & 0xff | (key[31] & 0xff) << 8;\n};\n\npoly1305.prototype.blocks = function(m, mpos, bytes) {\n var hibit = this.fin ? 0 : (1 << 11);\n var t0, t1, t2, t3, t4, t5, t6, t7, c;\n var d0, d1, d2, d3, d4, d5, d6, d7, d8, d9;\n\n var h0 = this.h[0],\n h1 = this.h[1],\n h2 = this.h[2],\n h3 = this.h[3],\n h4 = this.h[4],\n h5 = this.h[5],\n h6 = this.h[6],\n h7 = this.h[7],\n h8 = this.h[8],\n h9 = this.h[9];\n\n var r0 = this.r[0],\n r1 = this.r[1],\n r2 = this.r[2],\n r3 = this.r[3],\n r4 = this.r[4],\n r5 = this.r[5],\n r6 = this.r[6],\n r7 = this.r[7],\n r8 = this.r[8],\n r9 = this.r[9];\n\n while (bytes >= 16) {\n t0 = m[mpos+ 0] & 0xff | (m[mpos+ 1] & 0xff) << 8; h0 += ( t0 ) & 0x1fff;\n t1 = m[mpos+ 2] & 0xff | (m[mpos+ 3] & 0xff) << 8; h1 += ((t0 >>> 13) | (t1 << 3)) & 0x1fff;\n t2 = m[mpos+ 4] & 0xff | (m[mpos+ 5] & 0xff) << 8; h2 += ((t1 >>> 10) | (t2 << 6)) & 0x1fff;\n t3 = m[mpos+ 6] & 0xff | (m[mpos+ 7] & 0xff) << 8; h3 += ((t2 >>> 7) | (t3 << 9)) & 0x1fff;\n t4 = m[mpos+ 8] & 0xff | (m[mpos+ 9] & 0xff) << 8; h4 += ((t3 >>> 4) | (t4 << 12)) & 0x1fff;\n h5 += ((t4 >>> 1)) & 0x1fff;\n t5 = m[mpos+10] & 0xff | (m[mpos+11] & 0xff) << 8; h6 += ((t4 >>> 14) | (t5 << 2)) & 0x1fff;\n t6 = m[mpos+12] & 0xff | (m[mpos+13] & 0xff) << 8; h7 += ((t5 >>> 11) | (t6 << 5)) & 0x1fff;\n t7 = m[mpos+14] & 0xff | (m[mpos+15] & 0xff) << 8; h8 += ((t6 >>> 8) | (t7 << 8)) & 0x1fff;\n h9 += ((t7 >>> 5)) | hibit;\n\n c = 0;\n\n d0 = c;\n d0 += h0 * r0;\n d0 += h1 * (5 * r9);\n d0 += h2 * (5 * r8);\n d0 += h3 * (5 * r7);\n d0 += h4 * (5 * r6);\n c = (d0 >>> 13); d0 &= 0x1fff;\n d0 += h5 * (5 * r5);\n d0 += h6 * (5 * r4);\n d0 += h7 * (5 * r3);\n d0 += h8 * (5 * r2);\n d0 += h9 * (5 * r1);\n c += (d0 >>> 13); d0 &= 0x1fff;\n\n d1 = c;\n d1 += h0 * r1;\n d1 += h1 * r0;\n d1 += h2 * (5 * r9);\n d1 += h3 * (5 * r8);\n d1 += h4 * (5 * r7);\n c = (d1 >>> 13); d1 &= 0x1fff;\n d1 += h5 * (5 * r6);\n d1 += h6 * (5 * r5);\n d1 += h7 * (5 * r4);\n d1 += h8 * (5 * r3);\n d1 += h9 * (5 * r2);\n c += (d1 >>> 13); d1 &= 0x1fff;\n\n d2 = c;\n d2 += h0 * r2;\n d2 += h1 * r1;\n d2 += h2 * r0;\n d2 += h3 * (5 * r9);\n d2 += h4 * (5 * r8);\n c = (d2 >>> 13); d2 &= 0x1fff;\n d2 += h5 * (5 * r7);\n d2 += h6 * (5 * r6);\n d2 += h7 * (5 * r5);\n d2 += h8 * (5 * r4);\n d2 += h9 * (5 * r3);\n c += (d2 >>> 13); d2 &= 0x1fff;\n\n d3 = c;\n d3 += h0 * r3;\n d3 += h1 * r2;\n d3 += h2 * r1;\n d3 += h3 * r0;\n d3 += h4 * (5 * r9);\n c = (d3 >>> 13); d3 &= 0x1fff;\n d3 += h5 * (5 * r8);\n d3 += h6 * (5 * r7);\n d3 += h7 * (5 * r6);\n d3 += h8 * (5 * r5);\n d3 += h9 * (5 * r4);\n c += (d3 >>> 13); d3 &= 0x1fff;\n\n d4 = c;\n d4 += h0 * r4;\n d4 += h1 * r3;\n d4 += h2 * r2;\n d4 += h3 * r1;\n d4 += h4 * r0;\n c = (d4 >>> 13); d4 &= 0x1fff;\n d4 += h5 * (5 * r9);\n d4 += h6 * (5 * r8);\n d4 += h7 * (5 * r7);\n d4 += h8 * (5 * r6);\n d4 += h9 * (5 * r5);\n c += (d4 >>> 13); d4 &= 0x1fff;\n\n d5 = c;\n d5 += h0 * r5;\n d5 += h1 * r4;\n d5 += h2 * r3;\n d5 += h3 * r2;\n d5 += h4 * r1;\n c = (d5 >>> 13); d5 &= 0x1fff;\n d5 += h5 * r0;\n d5 += h6 * (5 * r9);\n d5 += h7 * (5 * r8);\n d5 += h8 * (5 * r7);\n d5 += h9 * (5 * r6);\n c += (d5 >>> 13); d5 &= 0x1fff;\n\n d6 = c;\n d6 += h0 * r6;\n d6 += h1 * r5;\n d6 += h2 * r4;\n d6 += h3 * r3;\n d6 += h4 * r2;\n c = (d6 >>> 13); d6 &= 0x1fff;\n d6 += h5 * r1;\n d6 += h6 * r0;\n d6 += h7 * (5 * r9);\n d6 += h8 * (5 * r8);\n d6 += h9 * (5 * r7);\n c += (d6 >>> 13); d6 &= 0x1fff;\n\n d7 = c;\n d7 += h0 * r7;\n d7 += h1 * r6;\n d7 += h2 * r5;\n d7 += h3 * r4;\n d7 += h4 * r3;\n c = (d7 >>> 13); d7 &= 0x1fff;\n d7 += h5 * r2;\n d7 += h6 * r1;\n d7 += h7 * r0;\n d7 += h8 * (5 * r9);\n d7 += h9 * (5 * r8);\n c += (d7 >>> 13); d7 &= 0x1fff;\n\n d8 = c;\n d8 += h0 * r8;\n d8 += h1 * r7;\n d8 += h2 * r6;\n d8 += h3 * r5;\n d8 += h4 * r4;\n c = (d8 >>> 13); d8 &= 0x1fff;\n d8 += h5 * r3;\n d8 += h6 * r2;\n d8 += h7 * r1;\n d8 += h8 * r0;\n d8 += h9 * (5 * r9);\n c += (d8 >>> 13); d8 &= 0x1fff;\n\n d9 = c;\n d9 += h0 * r9;\n d9 += h1 * r8;\n d9 += h2 * r7;\n d9 += h3 * r6;\n d9 += h4 * r5;\n c = (d9 >>> 13); d9 &= 0x1fff;\n d9 += h5 * r4;\n d9 += h6 * r3;\n d9 += h7 * r2;\n d9 += h8 * r1;\n d9 += h9 * r0;\n c += (d9 >>> 13); d9 &= 0x1fff;\n\n c = (((c << 2) + c)) | 0;\n c = (c + d0) | 0;\n d0 = c & 0x1fff;\n c = (c >>> 13);\n d1 += c;\n\n h0 = d0;\n h1 = d1;\n h2 = d2;\n h3 = d3;\n h4 = d4;\n h5 = d5;\n h6 = d6;\n h7 = d7;\n h8 = d8;\n h9 = d9;\n\n mpos += 16;\n bytes -= 16;\n }\n this.h[0] = h0;\n this.h[1] = h1;\n this.h[2] = h2;\n this.h[3] = h3;\n this.h[4] = h4;\n this.h[5] = h5;\n this.h[6] = h6;\n this.h[7] = h7;\n this.h[8] = h8;\n this.h[9] = h9;\n};\n\npoly1305.prototype.finish = function(mac, macpos) {\n var g = new Uint16Array(10);\n var c, mask, f, i;\n\n if (this.leftover) {\n i = this.leftover;\n this.buffer[i++] = 1;\n for (; i < 16; i++) this.buffer[i] = 0;\n this.fin = 1;\n this.blocks(this.buffer, 0, 16);\n }\n\n c = this.h[1] >>> 13;\n this.h[1] &= 0x1fff;\n for (i = 2; i < 10; i++) {\n this.h[i] += c;\n c = this.h[i] >>> 13;\n this.h[i] &= 0x1fff;\n }\n this.h[0] += (c * 5);\n c = this.h[0] >>> 13;\n this.h[0] &= 0x1fff;\n this.h[1] += c;\n c = this.h[1] >>> 13;\n this.h[1] &= 0x1fff;\n this.h[2] += c;\n\n g[0] = this.h[0] + 5;\n c = g[0] >>> 13;\n g[0] &= 0x1fff;\n for (i = 1; i < 10; i++) {\n g[i] = this.h[i] + c;\n c = g[i] >>> 13;\n g[i] &= 0x1fff;\n }\n g[9] -= (1 << 13);\n\n mask = (c ^ 1) - 1;\n for (i = 0; i < 10; i++) g[i] &= mask;\n mask = ~mask;\n for (i = 0; i < 10; i++) this.h[i] = (this.h[i] & mask) | g[i];\n\n this.h[0] = ((this.h[0] ) | (this.h[1] << 13) ) & 0xffff;\n this.h[1] = ((this.h[1] >>> 3) | (this.h[2] << 10) ) & 0xffff;\n this.h[2] = ((this.h[2] >>> 6) | (this.h[3] << 7) ) & 0xffff;\n this.h[3] = ((this.h[3] >>> 9) | (this.h[4] << 4) ) & 0xffff;\n this.h[4] = ((this.h[4] >>> 12) | (this.h[5] << 1) | (this.h[6] << 14)) & 0xffff;\n this.h[5] = ((this.h[6] >>> 2) | (this.h[7] << 11) ) & 0xffff;\n this.h[6] = ((this.h[7] >>> 5) | (this.h[8] << 8) ) & 0xffff;\n this.h[7] = ((this.h[8] >>> 8) | (this.h[9] << 5) ) & 0xffff;\n\n f = this.h[0] + this.pad[0];\n this.h[0] = f & 0xffff;\n for (i = 1; i < 8; i++) {\n f = (((this.h[i] + this.pad[i]) | 0) + (f >>> 16)) | 0;\n this.h[i] = f & 0xffff;\n }\n\n mac[macpos+ 0] = (this.h[0] >>> 0) & 0xff;\n mac[macpos+ 1] = (this.h[0] >>> 8) & 0xff;\n mac[macpos+ 2] = (this.h[1] >>> 0) & 0xff;\n mac[macpos+ 3] = (this.h[1] >>> 8) & 0xff;\n mac[macpos+ 4] = (this.h[2] >>> 0) & 0xff;\n mac[macpos+ 5] = (this.h[2] >>> 8) & 0xff;\n mac[macpos+ 6] = (this.h[3] >>> 0) & 0xff;\n mac[macpos+ 7] = (this.h[3] >>> 8) & 0xff;\n mac[macpos+ 8] = (this.h[4] >>> 0) & 0xff;\n mac[macpos+ 9] = (this.h[4] >>> 8) & 0xff;\n mac[macpos+10] = (this.h[5] >>> 0) & 0xff;\n mac[macpos+11] = (this.h[5] >>> 8) & 0xff;\n mac[macpos+12] = (this.h[6] >>> 0) & 0xff;\n mac[macpos+13] = (this.h[6] >>> 8) & 0xff;\n mac[macpos+14] = (this.h[7] >>> 0) & 0xff;\n mac[macpos+15] = (this.h[7] >>> 8) & 0xff;\n};\n\npoly1305.prototype.update = function(m, mpos, bytes) {\n var i, want;\n\n if (this.leftover) {\n want = (16 - this.leftover);\n if (want > bytes)\n want = bytes;\n for (i = 0; i < want; i++)\n this.buffer[this.leftover + i] = m[mpos+i];\n bytes -= want;\n mpos += want;\n this.leftover += want;\n if (this.leftover < 16)\n return;\n this.blocks(this.buffer, 0, 16);\n this.leftover = 0;\n }\n\n if (bytes >= 16) {\n want = bytes - (bytes % 16);\n this.blocks(m, mpos, want);\n mpos += want;\n bytes -= want;\n }\n\n if (bytes) {\n for (i = 0; i < bytes; i++)\n this.buffer[this.leftover + i] = m[mpos+i];\n this.leftover += bytes;\n }\n};\n\nfunction crypto_onetimeauth(out, outpos, m, mpos, n, k) {\n var s = new poly1305(k);\n s.update(m, mpos, n);\n s.finish(out, outpos);\n return 0;\n}\n\nfunction crypto_onetimeauth_verify(h, hpos, m, mpos, n, k) {\n var x = new Uint8Array(16);\n crypto_onetimeauth(x,0,m,mpos,n,k);\n return crypto_verify_16(h,hpos,x,0);\n}\n\nfunction crypto_secretbox(c,m,d,n,k) {\n var i;\n if (d < 32) return -1;\n crypto_stream_xor(c,0,m,0,d,n,k);\n crypto_onetimeauth(c, 16, c, 32, d - 32, c);\n for (i = 0; i < 16; i++) c[i] = 0;\n return 0;\n}\n\nfunction crypto_secretbox_open(m,c,d,n,k) {\n var i;\n var x = new Uint8Array(32);\n if (d < 32) return -1;\n crypto_stream(x,0,32,n,k);\n if (crypto_onetimeauth_verify(c, 16,c, 32,d - 32,x) !== 0) return -1;\n crypto_stream_xor(m,0,c,0,d,n,k);\n for (i = 0; i < 32; i++) m[i] = 0;\n return 0;\n}\n\nfunction set25519(r, a) {\n var i;\n for (i = 0; i < 16; i++) r[i] = a[i]|0;\n}\n\nfunction car25519(o) {\n var i, v, c = 1;\n for (i = 0; i < 16; i++) {\n v = o[i] + c + 65535;\n c = Math.floor(v / 65536);\n o[i] = v - c * 65536;\n }\n o[0] += c-1 + 37 * (c-1);\n}\n\nfunction sel25519(p, q, b) {\n var t, c = ~(b-1);\n for (var i = 0; i < 16; i++) {\n t = c & (p[i] ^ q[i]);\n p[i] ^= t;\n q[i] ^= t;\n }\n}\n\nfunction pack25519(o, n) {\n var i, j, b;\n var m = gf(), t = gf();\n for (i = 0; i < 16; i++) t[i] = n[i];\n car25519(t);\n car25519(t);\n car25519(t);\n for (j = 0; j < 2; j++) {\n m[0] = t[0] - 0xffed;\n for (i = 1; i < 15; i++) {\n m[i] = t[i] - 0xffff - ((m[i-1]>>16) & 1);\n m[i-1] &= 0xffff;\n }\n m[15] = t[15] - 0x7fff - ((m[14]>>16) & 1);\n b = (m[15]>>16) & 1;\n m[14] &= 0xffff;\n sel25519(t, m, 1-b);\n }\n for (i = 0; i < 16; i++) {\n o[2*i] = t[i] & 0xff;\n o[2*i+1] = t[i]>>8;\n }\n}\n\nfunction neq25519(a, b) {\n var c = new Uint8Array(32), d = new Uint8Array(32);\n pack25519(c, a);\n pack25519(d, b);\n return crypto_verify_32(c, 0, d, 0);\n}\n\nfunction par25519(a) {\n var d = new Uint8Array(32);\n pack25519(d, a);\n return d[0] & 1;\n}\n\nfunction unpack25519(o, n) {\n var i;\n for (i = 0; i < 16; i++) o[i] = n[2*i] + (n[2*i+1] << 8);\n o[15] &= 0x7fff;\n}\n\nfunction A(o, a, b) {\n for (var i = 0; i < 16; i++) o[i] = a[i] + b[i];\n}\n\nfunction Z(o, a, b) {\n for (var i = 0; i < 16; i++) o[i] = a[i] - b[i];\n}\n\nfunction M(o, a, b) {\n var v, c,\n t0 = 0, t1 = 0, t2 = 0, t3 = 0, t4 = 0, t5 = 0, t6 = 0, t7 = 0,\n t8 = 0, t9 = 0, t10 = 0, t11 = 0, t12 = 0, t13 = 0, t14 = 0, t15 = 0,\n t16 = 0, t17 = 0, t18 = 0, t19 = 0, t20 = 0, t21 = 0, t22 = 0, t23 = 0,\n t24 = 0, t25 = 0, t26 = 0, t27 = 0, t28 = 0, t29 = 0, t30 = 0,\n b0 = b[0],\n b1 = b[1],\n b2 = b[2],\n b3 = b[3],\n b4 = b[4],\n b5 = b[5],\n b6 = b[6],\n b7 = b[7],\n b8 = b[8],\n b9 = b[9],\n b10 = b[10],\n b11 = b[11],\n b12 = b[12],\n b13 = b[13],\n b14 = b[14],\n b15 = b[15];\n\n v = a[0];\n t0 += v * b0;\n t1 += v * b1;\n t2 += v * b2;\n t3 += v * b3;\n t4 += v * b4;\n t5 += v * b5;\n t6 += v * b6;\n t7 += v * b7;\n t8 += v * b8;\n t9 += v * b9;\n t10 += v * b10;\n t11 += v * b11;\n t12 += v * b12;\n t13 += v * b13;\n t14 += v * b14;\n t15 += v * b15;\n v = a[1];\n t1 += v * b0;\n t2 += v * b1;\n t3 += v * b2;\n t4 += v * b3;\n t5 += v * b4;\n t6 += v * b5;\n t7 += v * b6;\n t8 += v * b7;\n t9 += v * b8;\n t10 += v * b9;\n t11 += v * b10;\n t12 += v * b11;\n t13 += v * b12;\n t14 += v * b13;\n t15 += v * b14;\n t16 += v * b15;\n v = a[2];\n t2 += v * b0;\n t3 += v * b1;\n t4 += v * b2;\n t5 += v * b3;\n t6 += v * b4;\n t7 += v * b5;\n t8 += v * b6;\n t9 += v * b7;\n t10 += v * b8;\n t11 += v * b9;\n t12 += v * b10;\n t13 += v * b11;\n t14 += v * b12;\n t15 += v * b13;\n t16 += v * b14;\n t17 += v * b15;\n v = a[3];\n t3 += v * b0;\n t4 += v * b1;\n t5 += v * b2;\n t6 += v * b3;\n t7 += v * b4;\n t8 += v * b5;\n t9 += v * b6;\n t10 += v * b7;\n t11 += v * b8;\n t12 += v * b9;\n t13 += v * b10;\n t14 += v * b11;\n t15 += v * b12;\n t16 += v * b13;\n t17 += v * b14;\n t18 += v * b15;\n v = a[4];\n t4 += v * b0;\n t5 += v * b1;\n t6 += v * b2;\n t7 += v * b3;\n t8 += v * b4;\n t9 += v * b5;\n t10 += v * b6;\n t11 += v * b7;\n t12 += v * b8;\n t13 += v * b9;\n t14 += v * b10;\n t15 += v * b11;\n t16 += v * b12;\n t17 += v * b13;\n t18 += v * b14;\n t19 += v * b15;\n v = a[5];\n t5 += v * b0;\n t6 += v * b1;\n t7 += v * b2;\n t8 += v * b3;\n t9 += v * b4;\n t10 += v * b5;\n t11 += v * b6;\n t12 += v * b7;\n t13 += v * b8;\n t14 += v * b9;\n t15 += v * b10;\n t16 += v * b11;\n t17 += v * b12;\n t18 += v * b13;\n t19 += v * b14;\n t20 += v * b15;\n v = a[6];\n t6 += v * b0;\n t7 += v * b1;\n t8 += v * b2;\n t9 += v * b3;\n t10 += v * b4;\n t11 += v * b5;\n t12 += v * b6;\n t13 += v * b7;\n t14 += v * b8;\n t15 += v * b9;\n t16 += v * b10;\n t17 += v * b11;\n t18 += v * b12;\n t19 += v * b13;\n t20 += v * b14;\n t21 += v * b15;\n v = a[7];\n t7 += v * b0;\n t8 += v * b1;\n t9 += v * b2;\n t10 += v * b3;\n t11 += v * b4;\n t12 += v * b5;\n t13 += v * b6;\n t14 += v * b7;\n t15 += v * b8;\n t16 += v * b9;\n t17 += v * b10;\n t18 += v * b11;\n t19 += v * b12;\n t20 += v * b13;\n t21 += v * b14;\n t22 += v * b15;\n v = a[8];\n t8 += v * b0;\n t9 += v * b1;\n t10 += v * b2;\n t11 += v * b3;\n t12 += v * b4;\n t13 += v * b5;\n t14 += v * b6;\n t15 += v * b7;\n t16 += v * b8;\n t17 += v * b9;\n t18 += v * b10;\n t19 += v * b11;\n t20 += v * b12;\n t21 += v * b13;\n t22 += v * b14;\n t23 += v * b15;\n v = a[9];\n t9 += v * b0;\n t10 += v * b1;\n t11 += v * b2;\n t12 += v * b3;\n t13 += v * b4;\n t14 += v * b5;\n t15 += v * b6;\n t16 += v * b7;\n t17 += v * b8;\n t18 += v * b9;\n t19 += v * b10;\n t20 += v * b11;\n t21 += v * b12;\n t22 += v * b13;\n t23 += v * b14;\n t24 += v * b15;\n v = a[10];\n t10 += v * b0;\n t11 += v * b1;\n t12 += v * b2;\n t13 += v * b3;\n t14 += v * b4;\n t15 += v * b5;\n t16 += v * b6;\n t17 += v * b7;\n t18 += v * b8;\n t19 += v * b9;\n t20 += v * b10;\n t21 += v * b11;\n t22 += v * b12;\n t23 += v * b13;\n t24 += v * b14;\n t25 += v * b15;\n v = a[11];\n t11 += v * b0;\n t12 += v * b1;\n t13 += v * b2;\n t14 += v * b3;\n t15 += v * b4;\n t16 += v * b5;\n t17 += v * b6;\n t18 += v * b7;\n t19 += v * b8;\n t20 += v * b9;\n t21 += v * b10;\n t22 += v * b11;\n t23 += v * b12;\n t24 += v * b13;\n t25 += v * b14;\n t26 += v * b15;\n v = a[12];\n t12 += v * b0;\n t13 += v * b1;\n t14 += v * b2;\n t15 += v * b3;\n t16 += v * b4;\n t17 += v * b5;\n t18 += v * b6;\n t19 += v * b7;\n t20 += v * b8;\n t21 += v * b9;\n t22 += v * b10;\n t23 += v * b11;\n t24 += v * b12;\n t25 += v * b13;\n t26 += v * b14;\n t27 += v * b15;\n v = a[13];\n t13 += v * b0;\n t14 += v * b1;\n t15 += v * b2;\n t16 += v * b3;\n t17 += v * b4;\n t18 += v * b5;\n t19 += v * b6;\n t20 += v * b7;\n t21 += v * b8;\n t22 += v * b9;\n t23 += v * b10;\n t24 += v * b11;\n t25 += v * b12;\n t26 += v * b13;\n t27 += v * b14;\n t28 += v * b15;\n v = a[14];\n t14 += v * b0;\n t15 += v * b1;\n t16 += v * b2;\n t17 += v * b3;\n t18 += v * b4;\n t19 += v * b5;\n t20 += v * b6;\n t21 += v * b7;\n t22 += v * b8;\n t23 += v * b9;\n t24 += v * b10;\n t25 += v * b11;\n t26 += v * b12;\n t27 += v * b13;\n t28 += v * b14;\n t29 += v * b15;\n v = a[15];\n t15 += v * b0;\n t16 += v * b1;\n t17 += v * b2;\n t18 += v * b3;\n t19 += v * b4;\n t20 += v * b5;\n t21 += v * b6;\n t22 += v * b7;\n t23 += v * b8;\n t24 += v * b9;\n t25 += v * b10;\n t26 += v * b11;\n t27 += v * b12;\n t28 += v * b13;\n t29 += v * b14;\n t30 += v * b15;\n\n t0 += 38 * t16;\n t1 += 38 * t17;\n t2 += 38 * t18;\n t3 += 38 * t19;\n t4 += 38 * t20;\n t5 += 38 * t21;\n t6 += 38 * t22;\n t7 += 38 * t23;\n t8 += 38 * t24;\n t9 += 38 * t25;\n t10 += 38 * t26;\n t11 += 38 * t27;\n t12 += 38 * t28;\n t13 += 38 * t29;\n t14 += 38 * t30;\n // t15 left as is\n\n // first car\n c = 1;\n v = t0 + c + 65535; c = Math.floor(v / 65536); t0 = v - c * 65536;\n v = t1 + c + 65535; c = Math.floor(v / 65536); t1 = v - c * 65536;\n v = t2 + c + 65535; c = Math.floor(v / 65536); t2 = v - c * 65536;\n v = t3 + c + 65535; c = Math.floor(v / 65536); t3 = v - c * 65536;\n v = t4 + c + 65535; c = Math.floor(v / 65536); t4 = v - c * 65536;\n v = t5 + c + 65535; c = Math.floor(v / 65536); t5 = v - c * 65536;\n v = t6 + c + 65535; c = Math.floor(v / 65536); t6 = v - c * 65536;\n v = t7 + c + 65535; c = Math.floor(v / 65536); t7 = v - c * 65536;\n v = t8 + c + 65535; c = Math.floor(v / 65536); t8 = v - c * 65536;\n v = t9 + c + 65535; c = Math.floor(v / 65536); t9 = v - c * 65536;\n v = t10 + c + 65535; c = Math.floor(v / 65536); t10 = v - c * 65536;\n v = t11 + c + 65535; c = Math.floor(v / 65536); t11 = v - c * 65536;\n v = t12 + c + 65535; c = Math.floor(v / 65536); t12 = v - c * 65536;\n v = t13 + c + 65535; c = Math.floor(v / 65536); t13 = v - c * 65536;\n v = t14 + c + 65535; c = Math.floor(v / 65536); t14 = v - c * 65536;\n v = t15 + c + 65535; c = Math.floor(v / 65536); t15 = v - c * 65536;\n t0 += c-1 + 37 * (c-1);\n\n // second car\n c = 1;\n v = t0 + c + 65535; c = Math.floor(v / 65536); t0 = v - c * 65536;\n v = t1 + c + 65535; c = Math.floor(v / 65536); t1 = v - c * 65536;\n v = t2 + c + 65535; c = Math.floor(v / 65536); t2 = v - c * 65536;\n v = t3 + c + 65535; c = Math.floor(v / 65536); t3 = v - c * 65536;\n v = t4 + c + 65535; c = Math.floor(v / 65536); t4 = v - c * 65536;\n v = t5 + c + 65535; c = Math.floor(v / 65536); t5 = v - c * 65536;\n v = t6 + c + 65535; c = Math.floor(v / 65536); t6 = v - c * 65536;\n v = t7 + c + 65535; c = Math.floor(v / 65536); t7 = v - c * 65536;\n v = t8 + c + 65535; c = Math.floor(v / 65536); t8 = v - c * 65536;\n v = t9 + c + 65535; c = Math.floor(v / 65536); t9 = v - c * 65536;\n v = t10 + c + 65535; c = Math.floor(v / 65536); t10 = v - c * 65536;\n v = t11 + c + 65535; c = Math.floor(v / 65536); t11 = v - c * 65536;\n v = t12 + c + 65535; c = Math.floor(v / 65536); t12 = v - c * 65536;\n v = t13 + c + 65535; c = Math.floor(v / 65536); t13 = v - c * 65536;\n v = t14 + c + 65535; c = Math.floor(v / 65536); t14 = v - c * 65536;\n v = t15 + c + 65535; c = Math.floor(v / 65536); t15 = v - c * 65536;\n t0 += c-1 + 37 * (c-1);\n\n o[ 0] = t0;\n o[ 1] = t1;\n o[ 2] = t2;\n o[ 3] = t3;\n o[ 4] = t4;\n o[ 5] = t5;\n o[ 6] = t6;\n o[ 7] = t7;\n o[ 8] = t8;\n o[ 9] = t9;\n o[10] = t10;\n o[11] = t11;\n o[12] = t12;\n o[13] = t13;\n o[14] = t14;\n o[15] = t15;\n}\n\nfunction S(o, a) {\n M(o, a, a);\n}\n\nfunction inv25519(o, i) {\n var c = gf();\n var a;\n for (a = 0; a < 16; a++) c[a] = i[a];\n for (a = 253; a >= 0; a--) {\n S(c, c);\n if(a !== 2 && a !== 4) M(c, c, i);\n }\n for (a = 0; a < 16; a++) o[a] = c[a];\n}\n\nfunction pow2523(o, i) {\n var c = gf();\n var a;\n for (a = 0; a < 16; a++) c[a] = i[a];\n for (a = 250; a >= 0; a--) {\n S(c, c);\n if(a !== 1) M(c, c, i);\n }\n for (a = 0; a < 16; a++) o[a] = c[a];\n}\n\nfunction crypto_scalarmult(q, n, p) {\n var z = new Uint8Array(32);\n var x = new Float64Array(80), r, i;\n var a = gf(), b = gf(), c = gf(),\n d = gf(), e = gf(), f = gf();\n for (i = 0; i < 31; i++) z[i] = n[i];\n z[31]=(n[31]&127)|64;\n z[0]&=248;\n unpack25519(x,p);\n for (i = 0; i < 16; i++) {\n b[i]=x[i];\n d[i]=a[i]=c[i]=0;\n }\n a[0]=d[0]=1;\n for (i=254; i>=0; --i) {\n r=(z[i>>>3]>>>(i&7))&1;\n sel25519(a,b,r);\n sel25519(c,d,r);\n A(e,a,c);\n Z(a,a,c);\n A(c,b,d);\n Z(b,b,d);\n S(d,e);\n S(f,a);\n M(a,c,a);\n M(c,b,e);\n A(e,a,c);\n Z(a,a,c);\n S(b,a);\n Z(c,d,f);\n M(a,c,_121665);\n A(a,a,d);\n M(c,c,a);\n M(a,d,f);\n M(d,b,x);\n S(b,e);\n sel25519(a,b,r);\n sel25519(c,d,r);\n }\n for (i = 0; i < 16; i++) {\n x[i+16]=a[i];\n x[i+32]=c[i];\n x[i+48]=b[i];\n x[i+64]=d[i];\n }\n var x32 = x.subarray(32);\n var x16 = x.subarray(16);\n inv25519(x32,x32);\n M(x16,x16,x32);\n pack25519(q,x16);\n return 0;\n}\n\nfunction crypto_scalarmult_base(q, n) {\n return crypto_scalarmult(q, n, _9);\n}\n\nfunction crypto_box_keypair(y, x) {\n randombytes(x, 32);\n return crypto_scalarmult_base(y, x);\n}\n\nfunction crypto_box_beforenm(k, y, x) {\n var s = new Uint8Array(32);\n crypto_scalarmult(s, x, y);\n return crypto_core_hsalsa20(k, _0, s, sigma);\n}\n\nvar crypto_box_afternm = crypto_secretbox;\nvar crypto_box_open_afternm = crypto_secretbox_open;\n\nfunction crypto_box(c, m, d, n, y, x) {\n var k = new Uint8Array(32);\n crypto_box_beforenm(k, y, x);\n return crypto_box_afternm(c, m, d, n, k);\n}\n\nfunction crypto_box_open(m, c, d, n, y, x) {\n var k = new Uint8Array(32);\n crypto_box_beforenm(k, y, x);\n return crypto_box_open_afternm(m, c, d, n, k);\n}\n\nvar K = [\n 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd,\n 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,\n 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,\n 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,\n 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe,\n 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,\n 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1,\n 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,\n 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,\n 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,\n 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483,\n 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,\n 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210,\n 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,\n 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,\n 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,\n 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926,\n 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,\n 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8,\n 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,\n 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,\n 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,\n 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910,\n 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,\n 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53,\n 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,\n 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,\n 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,\n 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60,\n 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,\n 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9,\n 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,\n 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,\n 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,\n 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6,\n 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,\n 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493,\n 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,\n 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,\n 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817\n];\n\nfunction crypto_hashblocks_hl(hh, hl, m, n) {\n var wh = new Int32Array(16), wl = new Int32Array(16),\n bh0, bh1, bh2, bh3, bh4, bh5, bh6, bh7,\n bl0, bl1, bl2, bl3, bl4, bl5, bl6, bl7,\n th, tl, i, j, h, l, a, b, c, d;\n\n var ah0 = hh[0],\n ah1 = hh[1],\n ah2 = hh[2],\n ah3 = hh[3],\n ah4 = hh[4],\n ah5 = hh[5],\n ah6 = hh[6],\n ah7 = hh[7],\n\n al0 = hl[0],\n al1 = hl[1],\n al2 = hl[2],\n al3 = hl[3],\n al4 = hl[4],\n al5 = hl[5],\n al6 = hl[6],\n al7 = hl[7];\n\n var pos = 0;\n while (n >= 128) {\n for (i = 0; i < 16; i++) {\n j = 8 * i + pos;\n wh[i] = (m[j+0] << 24) | (m[j+1] << 16) | (m[j+2] << 8) | m[j+3];\n wl[i] = (m[j+4] << 24) | (m[j+5] << 16) | (m[j+6] << 8) | m[j+7];\n }\n for (i = 0; i < 80; i++) {\n bh0 = ah0;\n bh1 = ah1;\n bh2 = ah2;\n bh3 = ah3;\n bh4 = ah4;\n bh5 = ah5;\n bh6 = ah6;\n bh7 = ah7;\n\n bl0 = al0;\n bl1 = al1;\n bl2 = al2;\n bl3 = al3;\n bl4 = al4;\n bl5 = al5;\n bl6 = al6;\n bl7 = al7;\n\n // add\n h = ah7;\n l = al7;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n // Sigma1\n h = ((ah4 >>> 14) | (al4 << (32-14))) ^ ((ah4 >>> 18) | (al4 << (32-18))) ^ ((al4 >>> (41-32)) | (ah4 << (32-(41-32))));\n l = ((al4 >>> 14) | (ah4 << (32-14))) ^ ((al4 >>> 18) | (ah4 << (32-18))) ^ ((ah4 >>> (41-32)) | (al4 << (32-(41-32))));\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // Ch\n h = (ah4 & ah5) ^ (~ah4 & ah6);\n l = (al4 & al5) ^ (~al4 & al6);\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // K\n h = K[i*2];\n l = K[i*2+1];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // w\n h = wh[i%16];\n l = wl[i%16];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n th = c & 0xffff | d << 16;\n tl = a & 0xffff | b << 16;\n\n // add\n h = th;\n l = tl;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n // Sigma0\n h = ((ah0 >>> 28) | (al0 << (32-28))) ^ ((al0 >>> (34-32)) | (ah0 << (32-(34-32)))) ^ ((al0 >>> (39-32)) | (ah0 << (32-(39-32))));\n l = ((al0 >>> 28) | (ah0 << (32-28))) ^ ((ah0 >>> (34-32)) | (al0 << (32-(34-32)))) ^ ((ah0 >>> (39-32)) | (al0 << (32-(39-32))));\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // Maj\n h = (ah0 & ah1) ^ (ah0 & ah2) ^ (ah1 & ah2);\n l = (al0 & al1) ^ (al0 & al2) ^ (al1 & al2);\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n bh7 = (c & 0xffff) | (d << 16);\n bl7 = (a & 0xffff) | (b << 16);\n\n // add\n h = bh3;\n l = bl3;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = th;\n l = tl;\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n bh3 = (c & 0xffff) | (d << 16);\n bl3 = (a & 0xffff) | (b << 16);\n\n ah1 = bh0;\n ah2 = bh1;\n ah3 = bh2;\n ah4 = bh3;\n ah5 = bh4;\n ah6 = bh5;\n ah7 = bh6;\n ah0 = bh7;\n\n al1 = bl0;\n al2 = bl1;\n al3 = bl2;\n al4 = bl3;\n al5 = bl4;\n al6 = bl5;\n al7 = bl6;\n al0 = bl7;\n\n if (i%16 === 15) {\n for (j = 0; j < 16; j++) {\n // add\n h = wh[j];\n l = wl[j];\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = wh[(j+9)%16];\n l = wl[(j+9)%16];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // sigma0\n th = wh[(j+1)%16];\n tl = wl[(j+1)%16];\n h = ((th >>> 1) | (tl << (32-1))) ^ ((th >>> 8) | (tl << (32-8))) ^ (th >>> 7);\n l = ((tl >>> 1) | (th << (32-1))) ^ ((tl >>> 8) | (th << (32-8))) ^ ((tl >>> 7) | (th << (32-7)));\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // sigma1\n th = wh[(j+14)%16];\n tl = wl[(j+14)%16];\n h = ((th >>> 19) | (tl << (32-19))) ^ ((tl >>> (61-32)) | (th << (32-(61-32)))) ^ (th >>> 6);\n l = ((tl >>> 19) | (th << (32-19))) ^ ((th >>> (61-32)) | (tl << (32-(61-32)))) ^ ((tl >>> 6) | (th << (32-6)));\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n wh[j] = (c & 0xffff) | (d << 16);\n wl[j] = (a & 0xffff) | (b << 16);\n }\n }\n }\n\n // add\n h = ah0;\n l = al0;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[0];\n l = hl[0];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[0] = ah0 = (c & 0xffff) | (d << 16);\n hl[0] = al0 = (a & 0xffff) | (b << 16);\n\n h = ah1;\n l = al1;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[1];\n l = hl[1];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[1] = ah1 = (c & 0xffff) | (d << 16);\n hl[1] = al1 = (a & 0xffff) | (b << 16);\n\n h = ah2;\n l = al2;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[2];\n l = hl[2];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[2] = ah2 = (c & 0xffff) | (d << 16);\n hl[2] = al2 = (a & 0xffff) | (b << 16);\n\n h = ah3;\n l = al3;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[3];\n l = hl[3];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[3] = ah3 = (c & 0xffff) | (d << 16);\n hl[3] = al3 = (a & 0xffff) | (b << 16);\n\n h = ah4;\n l = al4;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[4];\n l = hl[4];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[4] = ah4 = (c & 0xffff) | (d << 16);\n hl[4] = al4 = (a & 0xffff) | (b << 16);\n\n h = ah5;\n l = al5;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[5];\n l = hl[5];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[5] = ah5 = (c & 0xffff) | (d << 16);\n hl[5] = al5 = (a & 0xffff) | (b << 16);\n\n h = ah6;\n l = al6;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[6];\n l = hl[6];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[6] = ah6 = (c & 0xffff) | (d << 16);\n hl[6] = al6 = (a & 0xffff) | (b << 16);\n\n h = ah7;\n l = al7;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[7];\n l = hl[7];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[7] = ah7 = (c & 0xffff) | (d << 16);\n hl[7] = al7 = (a & 0xffff) | (b << 16);\n\n pos += 128;\n n -= 128;\n }\n\n return n;\n}\n\nfunction crypto_hash(out, m, n) {\n var hh = new Int32Array(8),\n hl = new Int32Array(8),\n x = new Uint8Array(256),\n i, b = n;\n\n hh[0] = 0x6a09e667;\n hh[1] = 0xbb67ae85;\n hh[2] = 0x3c6ef372;\n hh[3] = 0xa54ff53a;\n hh[4] = 0x510e527f;\n hh[5] = 0x9b05688c;\n hh[6] = 0x1f83d9ab;\n hh[7] = 0x5be0cd19;\n\n hl[0] = 0xf3bcc908;\n hl[1] = 0x84caa73b;\n hl[2] = 0xfe94f82b;\n hl[3] = 0x5f1d36f1;\n hl[4] = 0xade682d1;\n hl[5] = 0x2b3e6c1f;\n hl[6] = 0xfb41bd6b;\n hl[7] = 0x137e2179;\n\n crypto_hashblocks_hl(hh, hl, m, n);\n n %= 128;\n\n for (i = 0; i < n; i++) x[i] = m[b-n+i];\n x[n] = 128;\n\n n = 256-128*(n<112?1:0);\n x[n-9] = 0;\n ts64(x, n-8, (b / 0x20000000) | 0, b << 3);\n crypto_hashblocks_hl(hh, hl, x, n);\n\n for (i = 0; i < 8; i++) ts64(out, 8*i, hh[i], hl[i]);\n\n return 0;\n}\n\nfunction add(p, q) {\n var a = gf(), b = gf(), c = gf(),\n d = gf(), e = gf(), f = gf(),\n g = gf(), h = gf(), t = gf();\n\n Z(a, p[1], p[0]);\n Z(t, q[1], q[0]);\n M(a, a, t);\n A(b, p[0], p[1]);\n A(t, q[0], q[1]);\n M(b, b, t);\n M(c, p[3], q[3]);\n M(c, c, D2);\n M(d, p[2], q[2]);\n A(d, d, d);\n Z(e, b, a);\n Z(f, d, c);\n A(g, d, c);\n A(h, b, a);\n\n M(p[0], e, f);\n M(p[1], h, g);\n M(p[2], g, f);\n M(p[3], e, h);\n}\n\nfunction cswap(p, q, b) {\n var i;\n for (i = 0; i < 4; i++) {\n sel25519(p[i], q[i], b);\n }\n}\n\nfunction pack(r, p) {\n var tx = gf(), ty = gf(), zi = gf();\n inv25519(zi, p[2]);\n M(tx, p[0], zi);\n M(ty, p[1], zi);\n pack25519(r, ty);\n r[31] ^= par25519(tx) << 7;\n}\n\nfunction scalarmult(p, q, s) {\n var b, i;\n set25519(p[0], gf0);\n set25519(p[1], gf1);\n set25519(p[2], gf1);\n set25519(p[3], gf0);\n for (i = 255; i >= 0; --i) {\n b = (s[(i/8)|0] >> (i&7)) & 1;\n cswap(p, q, b);\n add(q, p);\n add(p, p);\n cswap(p, q, b);\n }\n}\n\nfunction scalarbase(p, s) {\n var q = [gf(), gf(), gf(), gf()];\n set25519(q[0], X);\n set25519(q[1], Y);\n set25519(q[2], gf1);\n M(q[3], X, Y);\n scalarmult(p, q, s);\n}\n\nfunction crypto_sign_keypair(pk, sk, seeded) {\n var d = new Uint8Array(64);\n var p = [gf(), gf(), gf(), gf()];\n var i;\n\n if (!seeded) randombytes(sk, 32);\n crypto_hash(d, sk, 32);\n d[0] &= 248;\n d[31] &= 127;\n d[31] |= 64;\n\n scalarbase(p, d);\n pack(pk, p);\n\n for (i = 0; i < 32; i++) sk[i+32] = pk[i];\n return 0;\n}\n\nvar L = new Float64Array([0xed, 0xd3, 0xf5, 0x5c, 0x1a, 0x63, 0x12, 0x58, 0xd6, 0x9c, 0xf7, 0xa2, 0xde, 0xf9, 0xde, 0x14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x10]);\n\nfunction modL(r, x) {\n var carry, i, j, k;\n for (i = 63; i >= 32; --i) {\n carry = 0;\n for (j = i - 32, k = i - 12; j < k; ++j) {\n x[j] += carry - 16 * x[i] * L[j - (i - 32)];\n carry = Math.floor((x[j] + 128) / 256);\n x[j] -= carry * 256;\n }\n x[j] += carry;\n x[i] = 0;\n }\n carry = 0;\n for (j = 0; j < 32; j++) {\n x[j] += carry - (x[31] >> 4) * L[j];\n carry = x[j] >> 8;\n x[j] &= 255;\n }\n for (j = 0; j < 32; j++) x[j] -= carry * L[j];\n for (i = 0; i < 32; i++) {\n x[i+1] += x[i] >> 8;\n r[i] = x[i] & 255;\n }\n}\n\nfunction reduce(r) {\n var x = new Float64Array(64), i;\n for (i = 0; i < 64; i++) x[i] = r[i];\n for (i = 0; i < 64; i++) r[i] = 0;\n modL(r, x);\n}\n\n// Note: difference from C - smlen returned, not passed as argument.\nfunction crypto_sign(sm, m, n, sk) {\n var d = new Uint8Array(64), h = new Uint8Array(64), r = new Uint8Array(64);\n var i, j, x = new Float64Array(64);\n var p = [gf(), gf(), gf(), gf()];\n\n crypto_hash(d, sk, 32);\n d[0] &= 248;\n d[31] &= 127;\n d[31] |= 64;\n\n var smlen = n + 64;\n for (i = 0; i < n; i++) sm[64 + i] = m[i];\n for (i = 0; i < 32; i++) sm[32 + i] = d[32 + i];\n\n crypto_hash(r, sm.subarray(32), n+32);\n reduce(r);\n scalarbase(p, r);\n pack(sm, p);\n\n for (i = 32; i < 64; i++) sm[i] = sk[i];\n crypto_hash(h, sm, n + 64);\n reduce(h);\n\n for (i = 0; i < 64; i++) x[i] = 0;\n for (i = 0; i < 32; i++) x[i] = r[i];\n for (i = 0; i < 32; i++) {\n for (j = 0; j < 32; j++) {\n x[i+j] += h[i] * d[j];\n }\n }\n\n modL(sm.subarray(32), x);\n return smlen;\n}\n\nfunction unpackneg(r, p) {\n var t = gf(), chk = gf(), num = gf(),\n den = gf(), den2 = gf(), den4 = gf(),\n den6 = gf();\n\n set25519(r[2], gf1);\n unpack25519(r[1], p);\n S(num, r[1]);\n M(den, num, D);\n Z(num, num, r[2]);\n A(den, r[2], den);\n\n S(den2, den);\n S(den4, den2);\n M(den6, den4, den2);\n M(t, den6, num);\n M(t, t, den);\n\n pow2523(t, t);\n M(t, t, num);\n M(t, t, den);\n M(t, t, den);\n M(r[0], t, den);\n\n S(chk, r[0]);\n M(chk, chk, den);\n if (neq25519(chk, num)) M(r[0], r[0], I);\n\n S(chk, r[0]);\n M(chk, chk, den);\n if (neq25519(chk, num)) return -1;\n\n if (par25519(r[0]) === (p[31]>>7)) Z(r[0], gf0, r[0]);\n\n M(r[3], r[0], r[1]);\n return 0;\n}\n\nfunction crypto_sign_open(m, sm, n, pk) {\n var i;\n var t = new Uint8Array(32), h = new Uint8Array(64);\n var p = [gf(), gf(), gf(), gf()],\n q = [gf(), gf(), gf(), gf()];\n\n if (n < 64) return -1;\n\n if (unpackneg(q, pk)) return -1;\n\n for (i = 0; i < n; i++) m[i] = sm[i];\n for (i = 0; i < 32; i++) m[i+32] = pk[i];\n crypto_hash(h, m, n);\n reduce(h);\n scalarmult(p, q, h);\n\n scalarbase(q, sm.subarray(32));\n add(p, q);\n pack(t, p);\n\n n -= 64;\n if (crypto_verify_32(sm, 0, t, 0)) {\n for (i = 0; i < n; i++) m[i] = 0;\n return -1;\n }\n\n for (i = 0; i < n; i++) m[i] = sm[i + 64];\n return n;\n}\n\nvar crypto_secretbox_KEYBYTES = 32,\n crypto_secretbox_NONCEBYTES = 24,\n crypto_secretbox_ZEROBYTES = 32,\n crypto_secretbox_BOXZEROBYTES = 16,\n crypto_scalarmult_BYTES = 32,\n crypto_scalarmult_SCALARBYTES = 32,\n crypto_box_PUBLICKEYBYTES = 32,\n crypto_box_SECRETKEYBYTES = 32,\n crypto_box_BEFORENMBYTES = 32,\n crypto_box_NONCEBYTES = crypto_secretbox_NONCEBYTES,\n crypto_box_ZEROBYTES = crypto_secretbox_ZEROBYTES,\n crypto_box_BOXZEROBYTES = crypto_secretbox_BOXZEROBYTES,\n crypto_sign_BYTES = 64,\n crypto_sign_PUBLICKEYBYTES = 32,\n crypto_sign_SECRETKEYBYTES = 64,\n crypto_sign_SEEDBYTES = 32,\n crypto_hash_BYTES = 64;\n\nnacl.lowlevel = {\n crypto_core_hsalsa20: crypto_core_hsalsa20,\n crypto_stream_xor: crypto_stream_xor,\n crypto_stream: crypto_stream,\n crypto_stream_salsa20_xor: crypto_stream_salsa20_xor,\n crypto_stream_salsa20: crypto_stream_salsa20,\n crypto_onetimeauth: crypto_onetimeauth,\n crypto_onetimeauth_verify: crypto_onetimeauth_verify,\n crypto_verify_16: crypto_verify_16,\n crypto_verify_32: crypto_verify_32,\n crypto_secretbox: crypto_secretbox,\n crypto_secretbox_open: crypto_secretbox_open,\n crypto_scalarmult: crypto_scalarmult,\n crypto_scalarmult_base: crypto_scalarmult_base,\n crypto_box_beforenm: crypto_box_beforenm,\n crypto_box_afternm: crypto_box_afternm,\n crypto_box: crypto_box,\n crypto_box_open: crypto_box_open,\n crypto_box_keypair: crypto_box_keypair,\n crypto_hash: crypto_hash,\n crypto_sign: crypto_sign,\n crypto_sign_keypair: crypto_sign_keypair,\n crypto_sign_open: crypto_sign_open,\n\n crypto_secretbox_KEYBYTES: crypto_secretbox_KEYBYTES,\n crypto_secretbox_NONCEBYTES: crypto_secretbox_NONCEBYTES,\n crypto_secretbox_ZEROBYTES: crypto_secretbox_ZEROBYTES,\n crypto_secretbox_BOXZEROBYTES: crypto_secretbox_BOXZEROBYTES,\n crypto_scalarmult_BYTES: crypto_scalarmult_BYTES,\n crypto_scalarmult_SCALARBYTES: crypto_scalarmult_SCALARBYTES,\n crypto_box_PUBLICKEYBYTES: crypto_box_PUBLICKEYBYTES,\n crypto_box_SECRETKEYBYTES: crypto_box_SECRETKEYBYTES,\n crypto_box_BEFORENMBYTES: crypto_box_BEFORENMBYTES,\n crypto_box_NONCEBYTES: crypto_box_NONCEBYTES,\n crypto_box_ZEROBYTES: crypto_box_ZEROBYTES,\n crypto_box_BOXZEROBYTES: crypto_box_BOXZEROBYTES,\n crypto_sign_BYTES: crypto_sign_BYTES,\n crypto_sign_PUBLICKEYBYTES: crypto_sign_PUBLICKEYBYTES,\n crypto_sign_SECRETKEYBYTES: crypto_sign_SECRETKEYBYTES,\n crypto_sign_SEEDBYTES: crypto_sign_SEEDBYTES,\n crypto_hash_BYTES: crypto_hash_BYTES,\n\n gf: gf,\n D: D,\n L: L,\n pack25519: pack25519,\n unpack25519: unpack25519,\n M: M,\n A: A,\n S: S,\n Z: Z,\n pow2523: pow2523,\n add: add,\n set25519: set25519,\n modL: modL,\n scalarmult: scalarmult,\n scalarbase: scalarbase,\n};\n\n/* High-level API */\n\nfunction checkLengths(k, n) {\n if (k.length !== crypto_secretbox_KEYBYTES) throw new Error('bad key size');\n if (n.length !== crypto_secretbox_NONCEBYTES) throw new Error('bad nonce size');\n}\n\nfunction checkBoxLengths(pk, sk) {\n if (pk.length !== crypto_box_PUBLICKEYBYTES) throw new Error('bad public key size');\n if (sk.length !== crypto_box_SECRETKEYBYTES) throw new Error('bad secret key size');\n}\n\nfunction checkArrayTypes() {\n for (var i = 0; i < arguments.length; i++) {\n if (!(arguments[i] instanceof Uint8Array))\n throw new TypeError('unexpected type, use Uint8Array');\n }\n}\n\nfunction cleanup(arr) {\n for (var i = 0; i < arr.length; i++) arr[i] = 0;\n}\n\nnacl.randomBytes = function(n) {\n var b = new Uint8Array(n);\n randombytes(b, n);\n return b;\n};\n\nnacl.secretbox = function(msg, nonce, key) {\n checkArrayTypes(msg, nonce, key);\n checkLengths(key, nonce);\n var m = new Uint8Array(crypto_secretbox_ZEROBYTES + msg.length);\n var c = new Uint8Array(m.length);\n for (var i = 0; i < msg.length; i++) m[i+crypto_secretbox_ZEROBYTES] = msg[i];\n crypto_secretbox(c, m, m.length, nonce, key);\n return c.subarray(crypto_secretbox_BOXZEROBYTES);\n};\n\nnacl.secretbox.open = function(box, nonce, key) {\n checkArrayTypes(box, nonce, key);\n checkLengths(key, nonce);\n var c = new Uint8Array(crypto_secretbox_BOXZEROBYTES + box.length);\n var m = new Uint8Array(c.length);\n for (var i = 0; i < box.length; i++) c[i+crypto_secretbox_BOXZEROBYTES] = box[i];\n if (c.length < 32) return null;\n if (crypto_secretbox_open(m, c, c.length, nonce, key) !== 0) return null;\n return m.subarray(crypto_secretbox_ZEROBYTES);\n};\n\nnacl.secretbox.keyLength = crypto_secretbox_KEYBYTES;\nnacl.secretbox.nonceLength = crypto_secretbox_NONCEBYTES;\nnacl.secretbox.overheadLength = crypto_secretbox_BOXZEROBYTES;\n\nnacl.scalarMult = function(n, p) {\n checkArrayTypes(n, p);\n if (n.length !== crypto_scalarmult_SCALARBYTES) throw new Error('bad n size');\n if (p.length !== crypto_scalarmult_BYTES) throw new Error('bad p size');\n var q = new Uint8Array(crypto_scalarmult_BYTES);\n crypto_scalarmult(q, n, p);\n return q;\n};\n\nnacl.scalarMult.base = function(n) {\n checkArrayTypes(n);\n if (n.length !== crypto_scalarmult_SCALARBYTES) throw new Error('bad n size');\n var q = new Uint8Array(crypto_scalarmult_BYTES);\n crypto_scalarmult_base(q, n);\n return q;\n};\n\nnacl.scalarMult.scalarLength = crypto_scalarmult_SCALARBYTES;\nnacl.scalarMult.groupElementLength = crypto_scalarmult_BYTES;\n\nnacl.box = function(msg, nonce, publicKey, secretKey) {\n var k = nacl.box.before(publicKey, secretKey);\n return nacl.secretbox(msg, nonce, k);\n};\n\nnacl.box.before = function(publicKey, secretKey) {\n checkArrayTypes(publicKey, secretKey);\n checkBoxLengths(publicKey, secretKey);\n var k = new Uint8Array(crypto_box_BEFORENMBYTES);\n crypto_box_beforenm(k, publicKey, secretKey);\n return k;\n};\n\nnacl.box.after = nacl.secretbox;\n\nnacl.box.open = function(msg, nonce, publicKey, secretKey) {\n var k = nacl.box.before(publicKey, secretKey);\n return nacl.secretbox.open(msg, nonce, k);\n};\n\nnacl.box.open.after = nacl.secretbox.open;\n\nnacl.box.keyPair = function() {\n var pk = new Uint8Array(crypto_box_PUBLICKEYBYTES);\n var sk = new Uint8Array(crypto_box_SECRETKEYBYTES);\n crypto_box_keypair(pk, sk);\n return {publicKey: pk, secretKey: sk};\n};\n\nnacl.box.keyPair.fromSecretKey = function(secretKey) {\n checkArrayTypes(secretKey);\n if (secretKey.length !== crypto_box_SECRETKEYBYTES)\n throw new Error('bad secret key size');\n var pk = new Uint8Array(crypto_box_PUBLICKEYBYTES);\n crypto_scalarmult_base(pk, secretKey);\n return {publicKey: pk, secretKey: new Uint8Array(secretKey)};\n};\n\nnacl.box.publicKeyLength = crypto_box_PUBLICKEYBYTES;\nnacl.box.secretKeyLength = crypto_box_SECRETKEYBYTES;\nnacl.box.sharedKeyLength = crypto_box_BEFORENMBYTES;\nnacl.box.nonceLength = crypto_box_NONCEBYTES;\nnacl.box.overheadLength = nacl.secretbox.overheadLength;\n\nnacl.sign = function(msg, secretKey) {\n checkArrayTypes(msg, secretKey);\n if (secretKey.length !== crypto_sign_SECRETKEYBYTES)\n throw new Error('bad secret key size');\n var signedMsg = new Uint8Array(crypto_sign_BYTES+msg.length);\n crypto_sign(signedMsg, msg, msg.length, secretKey);\n return signedMsg;\n};\n\nnacl.sign.open = function(signedMsg, publicKey) {\n checkArrayTypes(signedMsg, publicKey);\n if (publicKey.length !== crypto_sign_PUBLICKEYBYTES)\n throw new Error('bad public key size');\n var tmp = new Uint8Array(signedMsg.length);\n var mlen = crypto_sign_open(tmp, signedMsg, signedMsg.length, publicKey);\n if (mlen < 0) return null;\n var m = new Uint8Array(mlen);\n for (var i = 0; i < m.length; i++) m[i] = tmp[i];\n return m;\n};\n\nnacl.sign.detached = function(msg, secretKey) {\n var signedMsg = nacl.sign(msg, secretKey);\n var sig = new Uint8Array(crypto_sign_BYTES);\n for (var i = 0; i < sig.length; i++) sig[i] = signedMsg[i];\n return sig;\n};\n\nnacl.sign.detached.verify = function(msg, sig, publicKey) {\n checkArrayTypes(msg, sig, publicKey);\n if (sig.length !== crypto_sign_BYTES)\n throw new Error('bad signature size');\n if (publicKey.length !== crypto_sign_PUBLICKEYBYTES)\n throw new Error('bad public key size');\n var sm = new Uint8Array(crypto_sign_BYTES + msg.length);\n var m = new Uint8Array(crypto_sign_BYTES + msg.length);\n var i;\n for (i = 0; i < crypto_sign_BYTES; i++) sm[i] = sig[i];\n for (i = 0; i < msg.length; i++) sm[i+crypto_sign_BYTES] = msg[i];\n return (crypto_sign_open(m, sm, sm.length, publicKey) >= 0);\n};\n\nnacl.sign.keyPair = function() {\n var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES);\n var sk = new Uint8Array(crypto_sign_SECRETKEYBYTES);\n crypto_sign_keypair(pk, sk);\n return {publicKey: pk, secretKey: sk};\n};\n\nnacl.sign.keyPair.fromSecretKey = function(secretKey) {\n checkArrayTypes(secretKey);\n if (secretKey.length !== crypto_sign_SECRETKEYBYTES)\n throw new Error('bad secret key size');\n var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES);\n for (var i = 0; i < pk.length; i++) pk[i] = secretKey[32+i];\n return {publicKey: pk, secretKey: new Uint8Array(secretKey)};\n};\n\nnacl.sign.keyPair.fromSeed = function(seed) {\n checkArrayTypes(seed);\n if (seed.length !== crypto_sign_SEEDBYTES)\n throw new Error('bad seed size');\n var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES);\n var sk = new Uint8Array(crypto_sign_SECRETKEYBYTES);\n for (var i = 0; i < 32; i++) sk[i] = seed[i];\n crypto_sign_keypair(pk, sk, true);\n return {publicKey: pk, secretKey: sk};\n};\n\nnacl.sign.publicKeyLength = crypto_sign_PUBLICKEYBYTES;\nnacl.sign.secretKeyLength = crypto_sign_SECRETKEYBYTES;\nnacl.sign.seedLength = crypto_sign_SEEDBYTES;\nnacl.sign.signatureLength = crypto_sign_BYTES;\n\nnacl.hash = function(msg) {\n checkArrayTypes(msg);\n var h = new Uint8Array(crypto_hash_BYTES);\n crypto_hash(h, msg, msg.length);\n return h;\n};\n\nnacl.hash.hashLength = crypto_hash_BYTES;\n\nnacl.verify = function(x, y) {\n checkArrayTypes(x, y);\n // Zero length arguments are considered not equal.\n if (x.length === 0 || y.length === 0) return false;\n if (x.length !== y.length) return false;\n return (vn(x, 0, y, 0, x.length) === 0) ? true : false;\n};\n\nnacl.setPRNG = function(fn) {\n randombytes = fn;\n};\n\n(function() {\n // Initialize PRNG if environment provides CSPRNG.\n // If not, methods calling randombytes will throw.\n var crypto = typeof self !== 'undefined' ? (self.crypto || self.msCrypto) : null;\n if (crypto && crypto.getRandomValues) {\n // Browsers.\n var QUOTA = 65536;\n nacl.setPRNG(function(x, n) {\n var i, v = new Uint8Array(n);\n for (i = 0; i < n; i += QUOTA) {\n crypto.getRandomValues(v.subarray(i, i + Math.min(n - i, QUOTA)));\n }\n for (i = 0; i < n; i++) x[i] = v[i];\n cleanup(v);\n });\n } else if (typeof require !== 'undefined') {\n // Node.js.\n crypto = require('crypto');\n if (crypto && crypto.randomBytes) {\n nacl.setPRNG(function(x, n) {\n var i, v = crypto.randomBytes(n);\n for (i = 0; i < n; i++) x[i] = v[i];\n cleanup(v);\n });\n }\n }\n})();\n\n})(typeof module !== 'undefined' && module.exports ? module.exports : (self.nacl = self.nacl || {}));\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SessionCrypto = void 0;\nvar session_crypto_1 = require(\"./session-crypto\");\nObject.defineProperty(exports, \"SessionCrypto\", { enumerable: true, get: function () { return session_crypto_1.SessionCrypto; } });\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SessionCrypto = void 0;\nconst utils_1 = require(\"../utils\");\nconst tweetnacl_1 = __importDefault(require(\"tweetnacl\"));\nif ((0, utils_1.isNode)()) {\n try {\n eval(\"global.crypto = require('crypto').webcrypto\");\n }\n catch (err) { }\n}\nclass SessionCrypto {\n constructor(keyPair) {\n this.nonceLength = 24;\n this.keyPair = keyPair ? this.createKeypairFromString(keyPair) : this.createKeypair();\n this.sessionId = (0, utils_1.toHexString)(this.keyPair.publicKey);\n }\n createKeypair() {\n return tweetnacl_1.default.box.keyPair();\n }\n createKeypairFromString(keyPair) {\n return {\n publicKey: (0, utils_1.hexToByteArray)(keyPair.publicKey),\n secretKey: (0, utils_1.hexToByteArray)(keyPair.secretKey)\n };\n }\n createNonce() {\n const buffer = new Uint8Array(this.nonceLength);\n return crypto.getRandomValues(buffer);\n }\n encrypt(message, receiverPublicKey) {\n const encodedMessage = new TextEncoder().encode(message);\n const nonce = this.createNonce();\n const encrypted = tweetnacl_1.default.box(encodedMessage, nonce, receiverPublicKey, this.keyPair.secretKey);\n return (0, utils_1.concatUint8Arrays)(nonce, encrypted);\n }\n decrypt(message, senderPublicKey) {\n const [nonce, internalMessage] = (0, utils_1.splitToUint8Arrays)(message, this.nonceLength);\n const decrypted = tweetnacl_1.default.box.open(internalMessage, nonce, senderPublicKey, this.keyPair.secretKey);\n if (!decrypted) {\n throw new Error('Decryption error');\n }\n return new TextDecoder().decode(decrypted);\n }\n stringifyKeypair() {\n return {\n publicKey: (0, utils_1.toHexString)(this.keyPair.publicKey),\n secretKey: (0, utils_1.toHexString)(this.keyPair.secretKey)\n };\n }\n}\nexports.SessionCrypto = SessionCrypto;\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./models\"), exports);\n__exportStar(require(\"./crypto\"), exports);\n__exportStar(require(\"./utils\"), exports);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.CHAIN = void 0;\nvar CHAIN;\n(function (CHAIN) {\n CHAIN[\"MAINNET\"] = \"-239\";\n CHAIN[\"TESTNET\"] = \"-3\";\n})(CHAIN = exports.CHAIN || (exports.CHAIN = {}));\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./request\"), exports);\n__exportStar(require(\"./connect-request\"), exports);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.CHAIN = void 0;\n__exportStar(require(\"./app-message\"), exports);\n__exportStar(require(\"./wallet-message\"), exports);\nvar CHAIN_1 = require(\"./CHAIN\");\nObject.defineProperty(exports, \"CHAIN\", { enumerable: true, get: function () { return CHAIN_1.CHAIN; } });\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./wallet-event\"), exports);\n__exportStar(require(\"./wallet-response\"), exports);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.CONNECT_ITEM_ERROR_CODES = exports.CONNECT_EVENT_ERROR_CODES = void 0;\nvar CONNECT_EVENT_ERROR_CODES;\n(function (CONNECT_EVENT_ERROR_CODES) {\n CONNECT_EVENT_ERROR_CODES[CONNECT_EVENT_ERROR_CODES[\"UNKNOWN_ERROR\"] = 0] = \"UNKNOWN_ERROR\";\n CONNECT_EVENT_ERROR_CODES[CONNECT_EVENT_ERROR_CODES[\"BAD_REQUEST_ERROR\"] = 1] = \"BAD_REQUEST_ERROR\";\n CONNECT_EVENT_ERROR_CODES[CONNECT_EVENT_ERROR_CODES[\"MANIFEST_NOT_FOUND_ERROR\"] = 2] = \"MANIFEST_NOT_FOUND_ERROR\";\n CONNECT_EVENT_ERROR_CODES[CONNECT_EVENT_ERROR_CODES[\"MANIFEST_CONTENT_ERROR\"] = 3] = \"MANIFEST_CONTENT_ERROR\";\n CONNECT_EVENT_ERROR_CODES[CONNECT_EVENT_ERROR_CODES[\"UNKNOWN_APP_ERROR\"] = 100] = \"UNKNOWN_APP_ERROR\";\n CONNECT_EVENT_ERROR_CODES[CONNECT_EVENT_ERROR_CODES[\"USER_REJECTS_ERROR\"] = 300] = \"USER_REJECTS_ERROR\";\n CONNECT_EVENT_ERROR_CODES[CONNECT_EVENT_ERROR_CODES[\"METHOD_NOT_SUPPORTED\"] = 400] = \"METHOD_NOT_SUPPORTED\";\n})(CONNECT_EVENT_ERROR_CODES = exports.CONNECT_EVENT_ERROR_CODES || (exports.CONNECT_EVENT_ERROR_CODES = {}));\nvar CONNECT_ITEM_ERROR_CODES;\n(function (CONNECT_ITEM_ERROR_CODES) {\n CONNECT_ITEM_ERROR_CODES[CONNECT_ITEM_ERROR_CODES[\"UNKNOWN_ERROR\"] = 0] = \"UNKNOWN_ERROR\";\n CONNECT_ITEM_ERROR_CODES[CONNECT_ITEM_ERROR_CODES[\"METHOD_NOT_SUPPORTED\"] = 400] = \"METHOD_NOT_SUPPORTED\";\n})(CONNECT_ITEM_ERROR_CODES = exports.CONNECT_ITEM_ERROR_CODES || (exports.CONNECT_ITEM_ERROR_CODES = {}));\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.CONNECT_EVENT_ERROR_CODES = void 0;\nvar connect_event_1 = require(\"./connect-event\");\nObject.defineProperty(exports, \"CONNECT_EVENT_ERROR_CODES\", { enumerable: true, get: function () { return connect_event_1.CONNECT_EVENT_ERROR_CODES; } });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SEND_TRANSACTION_ERROR_CODES = void 0;\nvar send_transaction_rpc_response_1 = require(\"./send-transaction-rpc-response\");\nObject.defineProperty(exports, \"SEND_TRANSACTION_ERROR_CODES\", { enumerable: true, get: function () { return send_transaction_rpc_response_1.SEND_TRANSACTION_ERROR_CODES; } });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SEND_TRANSACTION_ERROR_CODES = void 0;\nvar SEND_TRANSACTION_ERROR_CODES;\n(function (SEND_TRANSACTION_ERROR_CODES) {\n SEND_TRANSACTION_ERROR_CODES[SEND_TRANSACTION_ERROR_CODES[\"UNKNOWN_ERROR\"] = 0] = \"UNKNOWN_ERROR\";\n SEND_TRANSACTION_ERROR_CODES[SEND_TRANSACTION_ERROR_CODES[\"BAD_REQUEST_ERROR\"] = 1] = \"BAD_REQUEST_ERROR\";\n SEND_TRANSACTION_ERROR_CODES[SEND_TRANSACTION_ERROR_CODES[\"UNKNOWN_APP_ERROR\"] = 100] = \"UNKNOWN_APP_ERROR\";\n SEND_TRANSACTION_ERROR_CODES[SEND_TRANSACTION_ERROR_CODES[\"USER_REJECTS_ERROR\"] = 300] = \"USER_REJECTS_ERROR\";\n SEND_TRANSACTION_ERROR_CODES[SEND_TRANSACTION_ERROR_CODES[\"METHOD_NOT_SUPPORTED\"] = 400] = \"METHOD_NOT_SUPPORTED\";\n})(SEND_TRANSACTION_ERROR_CODES = exports.SEND_TRANSACTION_ERROR_CODES || (exports.SEND_TRANSACTION_ERROR_CODES = {}));\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Base64 = void 0;\nconst tweetnacl_util_1 = __importDefault(require(\"tweetnacl-util\"));\nfunction encodeUint8Array(value, urlSafe) {\n const encoded = tweetnacl_util_1.default.encodeBase64(value);\n if (!urlSafe) {\n return encoded;\n }\n return encodeURIComponent(encoded);\n}\nfunction decodeToUint8Array(value, urlSafe) {\n if (urlSafe) {\n value = decodeURIComponent(value);\n }\n return tweetnacl_util_1.default.decodeBase64(value);\n}\nfunction encode(value, urlSafe = false) {\n let uint8Array;\n if (value instanceof Uint8Array) {\n uint8Array = value;\n }\n else {\n if (typeof value !== 'string') {\n value = JSON.stringify(value);\n }\n uint8Array = tweetnacl_util_1.default.decodeUTF8(value);\n }\n return encodeUint8Array(uint8Array, urlSafe);\n}\nfunction decode(value, urlSafe = false) {\n const decodedUint8Array = decodeToUint8Array(value, urlSafe);\n return {\n toString() {\n return tweetnacl_util_1.default.encodeUTF8(decodedUint8Array);\n },\n toObject() {\n try {\n return JSON.parse(tweetnacl_util_1.default.encodeUTF8(decodedUint8Array));\n }\n catch (e) {\n return null;\n }\n },\n toUint8Array() {\n return decodedUint8Array;\n }\n };\n}\nexports.Base64 = {\n encode,\n decode\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.hexToByteArray = exports.toHexString = exports.splitToUint8Arrays = exports.concatUint8Arrays = void 0;\nfunction concatUint8Arrays(buffer1, buffer2) {\n const mergedArray = new Uint8Array(buffer1.length + buffer2.length);\n mergedArray.set(buffer1);\n mergedArray.set(buffer2, buffer1.length);\n return mergedArray;\n}\nexports.concatUint8Arrays = concatUint8Arrays;\nfunction splitToUint8Arrays(array, index) {\n if (index >= array.length) {\n throw new Error('Index is out of buffer');\n }\n const subArray1 = array.slice(0, index);\n const subArray2 = array.slice(index);\n return [subArray1, subArray2];\n}\nexports.splitToUint8Arrays = splitToUint8Arrays;\nfunction toHexString(byteArray) {\n let hexString = '';\n byteArray.forEach(byte => {\n hexString += ('0' + (byte & 0xff).toString(16)).slice(-2);\n });\n return hexString;\n}\nexports.toHexString = toHexString;\nfunction hexToByteArray(hexString) {\n if (hexString.length % 2 !== 0) {\n throw new Error(`Cannot convert ${hexString} to bytesArray`);\n }\n const result = new Uint8Array(hexString.length / 2);\n for (let i = 0; i < hexString.length; i += 2) {\n result[i / 2] = parseInt(hexString.slice(i, i + 2), 16);\n }\n return result;\n}\nexports.hexToByteArray = hexToByteArray;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isNode = exports.hexToByteArray = exports.toHexString = exports.splitToUint8Arrays = exports.concatUint8Arrays = exports.Base64 = void 0;\nvar base64_1 = require(\"./base64\");\nObject.defineProperty(exports, \"Base64\", { enumerable: true, get: function () { return base64_1.Base64; } });\nvar binary_1 = require(\"./binary\");\nObject.defineProperty(exports, \"concatUint8Arrays\", { enumerable: true, get: function () { return binary_1.concatUint8Arrays; } });\nObject.defineProperty(exports, \"splitToUint8Arrays\", { enumerable: true, get: function () { return binary_1.splitToUint8Arrays; } });\nObject.defineProperty(exports, \"toHexString\", { enumerable: true, get: function () { return binary_1.toHexString; } });\nObject.defineProperty(exports, \"hexToByteArray\", { enumerable: true, get: function () { return binary_1.hexToByteArray; } });\nvar web_api_1 = require(\"./web-api\");\nObject.defineProperty(exports, \"isNode\", { enumerable: true, get: function () { return web_api_1.isNode; } });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isNode = void 0;\nfunction isNode() {\n return (typeof process !== 'undefined' && process.versions != null && process.versions.node != null);\n}\nexports.isNode = isNode;\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// startup\n// Load entry module and return exports\n// This entry module is referenced by other modules so it can't be inlined\nvar __webpack_exports__ = __webpack_require__(4027);\n"],"names":["DappMetadataError","TonConnectError","constructor","args","super","Object","setPrototypeOf","this","prototype","UnknownError","UserRejectsError","ManifestContentErrorError","message","additionalMessage","ManifestNotFoundError","BadRequestError","UnknownAppError","LocalstorageNotFoundError","Error","options","prefix","WalletAlreadyConnectedError","WalletNotConnectedError","WalletNotInjectedError","FetchWalletsError","TonConnect","CHAIN","isWalletInfoInjected","value","connectEventErrorsCodes","CONNECT_EVENT_ERROR_CODES","UNKNOWN_ERROR","USER_REJECTS_ERROR","BAD_REQUEST_ERROR","UNKNOWN_APP_ERROR","MANIFEST_NOT_FOUND_ERROR","MANIFEST_CONTENT_ERROR","connectErrorsParser","parseError","error","ErrorConstructor","code","isError","response","sendTransactionErrors","SEND_TRANSACTION_ERROR_CODES","SendTransactionParser","RpcParser","convertToRpcRequest","request","method","params","JSON","stringify","parseAndThrowError","convertFromRpcResponse","rpcResponse","boc","result","sendTransactionParser","isNode","eval","err","console","BridgeGateway","storage","bridgeUrl","sessionId","listener","errorsListener","ssePath","postPath","defaultTtl","isClosed","bridgeGatewayStorage","HttpBridgeGatewayStorage","registerSession","url","URL","addPathToUrl","searchParams","append","lastEventId","getLastEventId","eventSource","EventSource","toString","Promise","resolve","reject","onerror","onopen","errorsHandler","bind","onmessage","messagesHandler","send","receiver","ttl","fetch","body","Base64","encode","close","e","storeLastEventId","bridgeIncomingMessage","parse","data","BridgeProvider","walletConnectionSource","type","pendingRequests","Map","nextRequestId","session","bridge","listeners","connectionStorage","BridgeConnectionStorage","static","bridgeConnectionStorage","connection","getHttpConnection","connect","sessionCrypto","SessionCrypto","gatewayListener","gatewayErrorsListener","generateUniversalLink","restoreConnection","storedConnection","forEach","connectEvent","sendRequest","id","encodedRequest","encrypt","hexToByteArray","walletPublicKey","catch","set","closeConnection","disconnect","removeBridgeAndSession","listen","callback","push","filter","walletMessage","decrypt","decode","toUint8Array","from","get","delete","event","updateSession","tonAddrItem","payload","items","find","item","name","connectEventToSave","storeConnection","removeConnection","universalLink","protocol","version","InjectedProvider","injectedWalletKey","unsubscribeCallback","listenSubscriptions","window","isWindowContainsWallet","injectedWallet","tonconnect","getInjectedConnection","jsBridgeKey","isWalletBrowser","auto","then","makeSubscriptions","connectEventError","closeAllListeners","eventsCallback","getWindow","storeKey","setItem","rawSession","sessionKeyPair","stringifyKeypair","rawConnection","removeItem","getConnection","stored","getItem","storedConnectionType","localStorage","key","removeLastEventId","walletsList","WalletsListManager","_wallet","provider","statusChangeSubscriptions","statusChangeErrorSubscriptions","dappSettings","manifestUrl","getWebPageManifest","DefaultStorage","connected","account","wallet","getWallets","onStatusChange","createProvider","createConnectRequest","bridgeConnectionType","embeddedWallet","all","getEmbeddedWallet","fromStorage","walletEventsListener","sendTransaction","transaction","validUntil","tx","checkConnection","valid_until","onWalletDisconnected","isWalletConnectionSourceJS","onWalletConnected","onWalletConnectError","tonAccountItem","tonProofItem","device","address","chain","network","walletStateInit","connectItems","tonProof","removeUrlLastSlash","slice","path","document","origin","location","walletsListCache","walletsListSource","fetchWalletsList","injectedWallets","length","embedded","walletsResponse","json","Array","isArray","every","isCorrectWalletConfigDTO","walletConfigDTOListToWalletConfigList","walletConfigDTO","map","walletConfig","imageUrl","image","aboutUrl","about_url","tondns","bridge_url","universal_url","js_bridge_key","injected","isWalletInjected","isInsideWalletBrowser","root","f","module","exports","nacl","util","validateBase64","s","test","TypeError","decodeUTF8","i","d","unescape","encodeURIComponent","b","Uint8Array","charCodeAt","encodeUTF8","arr","String","fromCharCode","decodeURIComponent","escape","join","atob","Buffer","encodeBase64","decodeBase64","call","len","btoa","gf","init","r","Float64Array","randombytes","_0","_9","gf0","gf1","_121665","D","D2","X","Y","I","ts64","x","h","l","vn","xi","y","yi","n","crypto_verify_16","crypto_verify_32","crypto_core_salsa20","out","inp","k","c","o","p","u","j0","j1","j2","j3","j4","j5","j6","j7","j8","j9","j10","j11","j12","j13","j14","j15","x0","x1","x2","x3","x4","x5","x6","x7","x8","x9","x10","x11","x12","x13","x14","x15","core_salsa20","crypto_core_hsalsa20","core_hsalsa20","sigma","crypto_stream_salsa20_xor","cpos","m","mpos","z","crypto_stream_salsa20","crypto_stream","sn","crypto_stream_xor","poly1305","t0","t1","t2","t3","t4","t5","t6","t7","buffer","Uint16Array","pad","leftover","fin","crypto_onetimeauth","outpos","update","finish","crypto_onetimeauth_verify","hpos","crypto_secretbox","crypto_secretbox_open","set25519","a","car25519","v","Math","floor","sel25519","q","t","pack25519","j","neq25519","par25519","unpack25519","A","Z","M","t8","t9","t10","t11","t12","t13","t14","t15","t16","t17","t18","t19","t20","t21","t22","t23","t24","t25","t26","t27","t28","t29","t30","b0","b1","b2","b3","b4","b5","b6","b7","b8","b9","b10","b11","b12","b13","b14","b15","S","inv25519","pow2523","crypto_scalarmult","x32","subarray","x16","crypto_scalarmult_base","crypto_box_keypair","crypto_box_beforenm","blocks","bytes","d0","d1","d2","d3","d4","d5","d6","d7","d8","d9","hibit","h0","h1","h2","h3","h4","h5","h6","h7","h8","h9","r0","r1","r2","r3","r4","r5","r6","r7","r8","r9","mac","macpos","mask","g","want","crypto_box_afternm","crypto_box_open_afternm","K","crypto_hashblocks_hl","hh","hl","bh0","bh1","bh2","bh3","bh4","bh5","bh6","bh7","bl0","bl1","bl2","bl3","bl4","bl5","bl6","bl7","th","tl","wh","Int32Array","wl","ah0","ah1","ah2","ah3","ah4","ah5","ah6","ah7","al0","al1","al2","al3","al4","al5","al6","al7","pos","crypto_hash","add","cswap","pack","ty","zi","scalarmult","scalarbase","crypto_sign_keypair","pk","sk","seeded","L","modL","carry","reduce","crypto_sign","sm","smlen","crypto_sign_open","chk","num","den","den2","den4","den6","unpackneg","crypto_sign_BYTES","crypto_sign_PUBLICKEYBYTES","crypto_sign_SECRETKEYBYTES","checkLengths","checkArrayTypes","arguments","cleanup","lowlevel","crypto_box","crypto_box_open","crypto_secretbox_KEYBYTES","crypto_secretbox_NONCEBYTES","crypto_secretbox_ZEROBYTES","crypto_secretbox_BOXZEROBYTES","crypto_scalarmult_BYTES","crypto_scalarmult_SCALARBYTES","crypto_box_PUBLICKEYBYTES","crypto_box_SECRETKEYBYTES","crypto_box_BEFORENMBYTES","crypto_box_NONCEBYTES","crypto_box_ZEROBYTES","crypto_box_BOXZEROBYTES","crypto_sign_SEEDBYTES","crypto_hash_BYTES","randomBytes","secretbox","msg","nonce","open","box","keyLength","nonceLength","overheadLength","scalarMult","base","scalarLength","groupElementLength","publicKey","secretKey","before","checkBoxLengths","after","keyPair","fromSecretKey","publicKeyLength","secretKeyLength","sharedKeyLength","sign","signedMsg","tmp","mlen","detached","sig","verify","fromSeed","seed","seedLength","signatureLength","hash","hashLength","setPRNG","fn","crypto","self","msCrypto","getRandomValues","min","defineProperty","session_crypto_1","enumerable","__importDefault","mod","__esModule","utils_1","tweetnacl_1","createKeypairFromString","createKeypair","toHexString","default","createNonce","receiverPublicKey","encodedMessage","TextEncoder","encrypted","concatUint8Arrays","senderPublicKey","internalMessage","splitToUint8Arrays","decrypted","TextDecoder","__createBinding","create","k2","undefined","desc","getOwnPropertyDescriptor","writable","configurable","__exportStar","hasOwnProperty","CHAIN_1","CONNECT_ITEM_ERROR_CODES","connect_event_1","send_transaction_rpc_response_1","tweetnacl_util_1","urlSafe","uint8Array","encoded","encodeUint8Array","decodedUint8Array","decodeToUint8Array","toObject","buffer1","buffer2","mergedArray","array","index","byteArray","hexString","byte","parseInt","base64_1","binary_1","web_api_1","process","versions","node","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","__webpack_exports__"],"sourceRoot":""}
|