diff --git a/.github/workflows/pull_request.yml b/.github/workflows/pull_request.yml index 969aaf3d7..2274dff15 100644 --- a/.github/workflows/pull_request.yml +++ b/.github/workflows/pull_request.yml @@ -19,5 +19,5 @@ jobs: env: PUBLIC_STAGE: ${{ env.STAGE }} - - name: Test cdk stacks - run: npm run test --workspace @casimir/cdk \ No newline at end of file + - name: Test cdk deployment + run: npm run test:cdk \ No newline at end of file diff --git a/.github/workflows/push.yml b/.github/workflows/push.yml index 6ca19dc04..eca6620aa 100644 --- a/.github/workflows/push.yml +++ b/.github/workflows/push.yml @@ -41,7 +41,7 @@ jobs: PUBLIC_STAGE: ${{ env.STAGE }} - name: Deploy cdk infrastructure - run: npm run deploy + run: npm run deploy:cdk - name: Select success emoji if: ${{ success() }} diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index d5a90e0d6..2b0eeef4a 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -42,7 +42,7 @@ jobs: PUBLIC_STAGE: ${{ env.STAGE }} - name: Deploy cdk infrastructure - run: npm run deploy + run: npm run deploy:cdk - name: Sync new version with develop if: ${{ github.actor != 'nektos/act' }} diff --git a/.husky/post-merge b/.husky/post-merge index 72c61e883..44490b52c 100755 --- a/.husky/post-merge +++ b/.husky/post-merge @@ -1,6 +1,4 @@ #!/usr/bin/env sh . "$(dirname -- "$0")/_/husky.sh" -git submodule update --init --recursive - git diff-tree -r --name-only --no-commit-id ORIG_HEAD HEAD --exit-code -- package-lock.json > /dev/null 2>&1 || echo "📦 package-lock.json changed. Running npm install..." && npm install diff --git a/README.md b/README.md index 44209bcf1..65b5e4a2f 100644 --- a/README.md +++ b/README.md @@ -11,7 +11,7 @@ ## About -Casimir is an all-in-one platform that allows users to trade, stake and track their assets while holding their own keys. One of Casimir's primary objectives is to reward crypto users for directly participating-in and strengthening the networks they rely on – by helping them stake directly to the most reliable (big and small) validators on PoS networks. +Casimir is a complete platform that allows users to monitor, move, and stake their assets while holding their own keys. With Casimir staking, users can easily and securely move funds in and out of decentralized staking pools that are operated by high-performing validators. ## Status @@ -33,14 +33,8 @@ Make sure your development environment has these prerequisites. 3. [AWS CLI (v2.x)](https://aws.amazon.com/cli/) – create an [AWS profile](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-profiles.html) named `consensus-networks-dev`. -4. [SAM CLI (v1.x)](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/serverless-sam-cli-install-mac.html) - tool for mocking backend services locally. - > 🚩 You also need to make sure to have at least one SSH authentication key on your GitHub account (for the git cloning of submodules in various scripts). See [Adding a new SSH key to your GitHub account](https://docs.github.com/en/authentication/connecting-to-github-with-ssh/adding-a-new-ssh-key-to-your-github-account). -### Scripts and Dependencies - -We are using [npm workspaces](https://docs.npmjs.com/cli/v8/using-npm/workspaces) to simplify monorepo development workflows while keeping project-wide resources accessible. - ### Setup Clone the repository, checkout a new branch from develop, and install all workspace dependencies. @@ -54,123 +48,107 @@ npm install > 🚩 'All workspace dependencies' includes `package.json` dependencies listed in the project root and any workspace subdirectories. See [Scripts and dependencies](#-scripts-and-dependencies). -### Apps +### Serve You can get up and running without configuration. You can also mock local backend changes and customize your environment. -1. For frontend changes – run the development server and use the `dev` stage backend services. - - ```zsh - npm run dev - ``` +For frontend changes – run the development server and use the `dev` stage backend services. - > 🚩 This will also preconfigure the application environment with the AWS credentials for the `consensus-networks-dev` profile (set PROFILE="some-other-name" in a [.env](.env) if you want to override). - -2. For fullstack changes – run the development server and mock the local backend services. - - ```zsh - npm run dev --mock - ``` - - > 🚩 You will need the [SAM CLI](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/serverless-sam-cli-install-mac.html) for local mocking. +```zsh +npm run dev +``` -3. Emulate a Ledger hardware wallet. The default application is ethereum, and we also currently have support for the bitcoin and solana applications. +> 🚩 This will also preconfigure the application environment with the AWS credentials for the `consensus-networks-dev` profile (set AWS_PROFILE="some-other-name" in a [.env](.env) if you want to override). - ```zsh - npm run dev --ledger # or specify --ledger=ethereum, --ledger=bitcoin, or --ledger=solana - ``` +For fullstack changes – run the development server and mock the local backend services. - > 🚩 On MacOS, if you get an error because port 5000 is in use, go to  > System Preferences... > Sharing and uncheck Airplay Receiver. +```zsh +npm run dev --mock +``` -4. Emulate a Trezor hardware wallet. You also need to make sure to add [these prerequisites](https://github.com/trezor/trezor-user-env#prerequisites). +Emulate a Ledger hardware wallet. The default application is ethereum, and we also currently have support for the bitcoin and solana applications. - ```zsh - npm run dev --trezor - ``` +```zsh +npm run dev --ledger # or specify --ledger=ethereum, --ledger=bitcoin, or --ledger=solana +``` -5. Expose any servers running on local ports using local tunnel. +> 🚩 On MacOS, if you get an error because port 5000 is in use, go to  > System Preferences... > Sharing and uncheck Airplay Receiver. - ```zsh - npm run dev --external - ``` - -6. The commands and flags above apply to any package in the [apps](apps/) directory. While the default app is [@casimir/web](apps/web/), you can specify others by passing a subcommand to `npm run dev`. +Emulate a Trezor hardware wallet. You also need to make sure to add [these prerequisites](https://github.com/trezor/trezor-user-env#prerequisites). - ```zsh - # @casimir/web - npm run dev # or - npm run dev:web +```zsh +npm run dev --trezor +``` - # @casimir/landing - npm run dev:landing - ``` +Expose any servers running on local ports using local tunnel. -### Hardhat +```zsh +npm run dev --external +``` -Ethereum contract development is serviced through [Hardhat](https://hardhat.io/). The Hardhat development environment is configured in the [contracts/ethereum/hardhat.config.ts](contracts/ethereum/hardhat.config.ts) file. +The commands above apply to any package in the [apps](apps/) directory. While the default app is [@casimir/web](apps/web/), you can specify others by passing a subcommand to `npm run dev`. -1. Compile the contracts in [contracts/ethereum](contracts/ethereum). - - ```zsh - npm run task:compile --workspace @casimir/ethereum - ``` +```zsh +# @casimir/web +npm run dev # or +npm run dev:web -2. Deploy a contract, specifically [contracts/ethereum/src/SSVManager.sol](contracts/ethereum/src/Sample.sol) with [contracts/ethereum/deploy/ssv.deploy.ts](contracts/ethereum/deploy/ssv.deploy.ts). +# @casimir/landing +npm run dev:landing +``` - ```zsh - npm run deploy:ssv --workspace @casimir/ethereum - ``` +### Contracts -3. Test the Sample with the tests in [contracts/ethereum/test/sample.ts](contracts/ethereum/test/sample.ts). +Ethereum contracts are configured with a Hardhat development environment in the [contracts/ethereum/hardhat.config.ts](contracts/ethereum/hardhat.config.ts) file. - ```zsh - npm run test --workspace @casimir/ethereum - ``` +Run all contract tests. -4. Use a contract in the Casimir web app. +```zsh +npm run test:ethereum +``` - ```typescript - // Todo add Casimir Typescript usage - ``` +Compile the contracts in [contracts/ethereum](contracts/ethereum). -5. Clean [contracts/ethereum/build/artifacts](contracts/ethereum/build/artifacts) and [contracts/ethereum/build/cache](contracts/ethereum/build/cache)). +```zsh +npm run task:compile --workspace @casimir/ethereum +``` - ```zsh - npm run task:clean --workspace @casimir/ethereum - ``` +Deploy a contract, specifically [contracts/ethereum/src/SSVManager.sol](contracts/ethereum/src/SSVManager.sol) with [contracts/ethereum/scripts/ssv.deploy.ts](contracts/ethereum/deploy/ssv.deploy.ts). - > 🚩 Note, this is required if you change the Hardhat configuration. +```zsh +npm run deploy:ssv --workspace @casimir/ethereum +``` ### Local Nodes Run local cryptonodes for fast and flexible development. -1. Run a local Ethereum node without archived data. +Run a local Ethereum node without archived data. - ```zsh - npm run dev:ethereum - ``` +```zsh +npm run dev:ethereum +``` -2. Run a local Ethereum node with archived data from mainnet. +Run a local Ethereum node with archived data from mainnet. - ```zsh - npm run dev:ethereum --fork=mainnet - ``` +```zsh +npm run dev:ethereum --fork=mainnet +``` -3. Run a local Ethereum node with archived data from Goerli testnet. +Run a local Ethereum node with archived data from Goerli testnet. - ```zsh - npm run dev:ethereum --fork=goerli - ``` +```zsh +npm run dev:ethereum --fork=goerli +``` -> 🚩 Note, while the fork starts with the same state as the specified network, it lives as a local development network. +> 🚩 Note, while the fork starts with the same state as the specified network, it lives as a local development network independent of the live network. ### Environment Optionally customize and override the defaults for your *local development environment* by creating a [.env](.env) file in the project root and adding values for any supported variables. ```zsh -PROFILE="some-other-aws-name" +AWS_PROFILE="some-other-aws-name" STAGE="sandbox" ``` @@ -178,7 +156,7 @@ STAGE="sandbox" | Name | Description | Default | | --- | --- | --- | -| `PROFILE` | AWS profile name | `"consensus-networks-dev"` | +| `AWS_PROFILE` | AWS profile name | `"consensus-networks-dev"` | | `STAGE` | Environment stage name | `"dev"` | ### Scripts and dependencies @@ -191,7 +169,7 @@ Install all monorepo dependencies. npm install ``` -Clean all monorepo dependencies (remove all `node_modules` before a fresh install). +Clean all monorepo dependencies (remove all `node_modules` and `package-lock.json` before a fresh install). ```zsh npm run clean @@ -232,7 +210,7 @@ Code is organized into work directories (apps, services, infrastructure – and ├── scripts/ (devops and build scripts) | └── local/ (mock and serve tasks) ├── services/ (backend services) -| └── auth/ (auth lambda api) +| └── users/ (users express api) └── package.json (project-wide npm dependencies and scripts) ``` @@ -253,4 +231,3 @@ Feel free to use any editor, but here's a configuration that works with this cod This respository is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT). [![License: MIT](https://img.shields.io/badge/License-MIT-green.svg)](LICENSE.md) - diff --git a/apps/web/src/composables/auth.ts b/apps/web/src/composables/auth.ts index 402fcd582..fead73128 100644 --- a/apps/web/src/composables/auth.ts +++ b/apps/web/src/composables/auth.ts @@ -3,7 +3,7 @@ import { LoginCredentials } from '@casimir/types' import useEnvironment from '@/composables/environment' import { ProviderString } from '@casimir/types' -const { authBaseURL } = useEnvironment() +const { usersBaseURL } = useEnvironment() export default function useAuth() { async function getMessage(provider: ProviderString, address: string) { @@ -13,7 +13,7 @@ export default function useAuth() { 'Content-Type': 'application/json' } } - return await fetch(`${authBaseURL}/auth/${provider}/${address}`, requestOptions) + return await fetch(`${usersBaseURL}/auth/${provider}/${address}`, requestOptions) } async function signupOrLoginAuth(signupCredentials: SignupLoginCredentials) { @@ -24,7 +24,7 @@ export default function useAuth() { }, body: JSON.stringify(signupCredentials) } - return await fetch(`${authBaseURL}/signupLogin`, requestOptions) + return await fetch(`${usersBaseURL}/signupLogin`, requestOptions) } async function signUpAuth(signupCredentials: SignupLoginCredentials) { @@ -35,7 +35,7 @@ export default function useAuth() { }, body: JSON.stringify(signupCredentials) } - const response = await fetch(`${authBaseURL}/signup`, requestOptions) + const response = await fetch(`${usersBaseURL}/signup`, requestOptions) return response } @@ -53,7 +53,7 @@ export default function useAuth() { }, body: JSON.stringify(loginCredentials) } - return await fetch(`${authBaseURL}/login`, requestOptions) + return await fetch(`${usersBaseURL}/login`, requestOptions) } return { diff --git a/apps/web/src/composables/environment.ts b/apps/web/src/composables/environment.ts index 2db7169c7..9964c5aa1 100644 --- a/apps/web/src/composables/environment.ts +++ b/apps/web/src/composables/environment.ts @@ -1,24 +1,26 @@ export default function useEnvironment() { - const authBaseURL = _getAuthBaseURL() + const usersBaseURL = getUsersBaseURL() const ethereumURL = import.meta.env.PUBLIC_ETHEREUM_URL || 'http://127.0.0.1:8545' const ledgerType = import.meta.env.PUBLIC_SPECULOS_PORT ? 'speculos' : 'usb' const speculosURL = import.meta.env.PUBLIC_SPECULOS_PORT ? `http://127.0.0.1:${import.meta.env.PUBLIC_SPECULOS_PORT}` : undefined const walletConnectURL = 'https://bridge.walletconnect.org' /** - * Get the auth base url for the current environment + * Get the users base url for the current environment * - * @returns {string} The base URL for the auth API + * @returns {string} The base URL for the users API */ - function _getAuthBaseURL(): string { + function getUsersBaseURL(): string { if (import.meta.env.PUBLIC_AUTH_PORT) { return `http://localhost:${import.meta.env.PUBLIC_AUTH_PORT}` } else { - return `https://auth.${import.meta.env.PUBLIC_STAGE || 'dev'}.casimir.co` + const stage = import.meta.env.PUBLIC_STAGE + const subdomain = stage === 'prod' ? '' : `${stage}.` + return `https://users.${subdomain}casimir.co` } } return { - authBaseURL, + usersBaseURL, ethereumURL, ledgerType, speculosURL, diff --git a/apps/web/src/composables/users.ts b/apps/web/src/composables/users.ts index f80bc2b2b..84989e497 100644 --- a/apps/web/src/composables/users.ts +++ b/apps/web/src/composables/users.ts @@ -8,10 +8,8 @@ import { Account } from '@casimir/types' import { Currency } from '@casimir/types' import { ProviderString } from '@casimir/types' -// Demo const for user +const { usersBaseURL, ethereumURL } = useEnvironment() import { dummy_user_account } from '@/pages/user-dash/composables/dummy_data.js' - -const { authBaseURL, ethereumURL } = useEnvironment() // 0xd557a5745d4560B24D36A68b52351ffF9c86A212 const user = ref(null) @@ -80,7 +78,7 @@ export default function useUsers () { account: accountToAdd }) } - const response = await fetch(`${authBaseURL}/users/add-sub-account`, requestOptions) + const response = await fetch(`${usersBaseURL}/users/add-sub-account`, requestOptions) const json = await response.json() return json } @@ -102,11 +100,11 @@ export default function useUsers () { currency }) } - return await fetch(`${authBaseURL}/users/remove-sub-account`, requestOptions) + return await fetch(`${usersBaseURL}/users/remove-sub-account`, requestOptions) } async function getMessage(address: string) { - const response = await fetch(`${authBaseURL}/auth/${address}`) + const response = await fetch(`${usersBaseURL}/auth/${address}`) const json = await response.json() const { message } = json return message @@ -120,7 +118,7 @@ export default function useUsers () { }, body: JSON.stringify({ primaryAddress, updatedProvider, updatedAddress }) } - return await fetch(`${authBaseURL}/users/update-primary-account`, requestOptions) + return await fetch(`${usersBaseURL}/users/update-primary-account`, requestOptions) } const createDemoUser = (toggle: boolean) => { diff --git a/common/aws-helpers/src/index.ts b/common/aws-helpers/src/index.ts index cfc84f5bd..2fbc541e4 100644 --- a/common/aws-helpers/src/index.ts +++ b/common/aws-helpers/src/index.ts @@ -5,30 +5,37 @@ import { AthenaClient, AthenaClientConfig, StartQueryExecutionCommand, GetQueryE import { defaultProvider } from '@aws-sdk/credential-provider-node' import { EventTableSchema } from '@casimir/data' -export async function getCredentials() { - const profile = getProfile() - return await fromIni({ profile })() -} - -export function getProfile() { - return process.env.PROFILE || 'consensus-networks-dev' -} - export async function getSecret(id: string) { - const profile = getProfile() - const aws = new SecretsManagerClient({ credentials: fromIni({ profile }) }) - + const aws = new SecretsManagerClient({}) const { SecretString } = await aws.send( new GetSecretValueCommand( - { + { SecretId: id } ) ) - return SecretString } +/** + * Ensures AWS credentials are available and returns them. + * Checks for AWS credentials in the environment variables. + * If not found, loads credentials from `AWS_PROFILE` or the default profile. + * + * @returns AWS credentials + */ +export async function loadCredentials() { + const defaultProfile = 'consensus-networks-dev' + if (!process.env.AWS_ACCESS_KEY_ID || !process.env.AWS_SECRET_ACCESS_KEY) { + process.env.AWS_PROFILE = process.env.AWS_PROFILE || defaultProfile + return await fromIni()() + } + return { + accessKeyId: process.env.AWS_ACCESS_KEY_ID, + secretAccessKey: process.env.AWS_SECRET_ACCESS_KEY + } +} + const defaultQueryOutputBucket = 'casimir-etl-output-bucket-dev' let athena: AthenaClient | null = null diff --git a/common/bitcoin-ledger-signer/dist/index.js b/common/bitcoin-ledger-signer/dist/index.js index c00d4e35b..7c8ef5960 100644 --- a/common/bitcoin-ledger-signer/dist/index.js +++ b/common/bitcoin-ledger-signer/dist/index.js @@ -12,6 +12,6 @@ CAUSE: `+c.stack)}return u}return n}(Error);return g6[e]=t,t};Bt.createCustomErr match expected `).concat(l.toString("hex")," for input ").concat(r));this.psbt.setInputRedeemScript(r,l),this.psbt.setInputWitnessUtxo(r,i.amount,i.cond.scriptPubKey)},t.prototype.setSingleKeyOutput=function(r,n,i,s){this.psbt.setOutputRedeemScript(r,n.redeemScript),this.psbt.setOutputBip32Derivation(r,i,this.masterFp,s)},t.prototype.getDescriptorTemplate=function(){return"sh(wpkh(@0))"},t.prototype.createRedeemScript=function(r){var n=Fn(r);return Buffer.concat([Buffer.from("0014","hex"),n])},t}(Wu);var Ry=function(e){pa(t,e);function t(){return e!==null&&e.apply(this,arguments)||this}return t.prototype.singleKeyCondition=function(r){var n=new ot,i=Fn(r);return n.writeSlice(Buffer.from([0,Hs])),n.writeSlice(i),{scriptPubKey:n.buffer()}},t.prototype.setSingleKeyInput=function(r,n,i,s,o){if(!n)throw new Error("Full input base transaction required");this.psbt.setInputNonWitnessUtxo(r,n),this.psbt.setInputBip32Derivation(r,s,this.masterFp,o),this.psbt.setInputWitnessUtxo(r,i.amount,i.cond.scriptPubKey)},t.prototype.setSingleKeyOutput=function(r,n,i,s){this.psbt.setOutputBip32Derivation(r,i,this.masterFp,s)},t.prototype.getDescriptorTemplate=function(){return"wpkh(@0)"},t}(Wu);var Cy=Qe(qs());var A0=Qe(qs()),ky=function(e,t){var r=typeof Symbol=="function"&&e[Symbol.iterator];if(!r)return e;var n=r.call(e),i,s=[],o;try{for(;(t===void 0||t-- >0)&&!(i=n.next()).done;)s.push(i.value)}catch(u){o={error:u}}finally{try{i&&!i.done&&(r=n.return)&&r.call(n)}finally{if(o)throw o.error}}return s},Ny=function(e,t,r){if(r||arguments.length===2)for(var n=0,i=t.length,s;n=this.leaves.length)throw Error("Index out of bounds");return M0(this.leafNodes[t])},e.prototype.calculateRoot=function(t){var r=t.length;if(r==0)return{root:new T0(void 0,void 0,Buffer.alloc(32,0)),leaves:[]};if(r==1){var n=new T0(void 0,void 0,t[0]);return{root:n,leaves:[n]}}var i=rM(r),s=this.calculateRoot(t.slice(0,i)),o=this.calculateRoot(t.slice(i)),u=s.root,l=o.root,c=this.hashNode(u.hash,l.hash),p=new T0(u,l,c);return u.parent=p,l.parent=p,{root:p,leaves:s.leaves.concat(o.leaves)}},e.prototype.hashNode=function(t,r){return this.h(Buffer.concat([Buffer.from([1]),t,r]))},e}();function Dr(e,t){return t===void 0&&(t=A0.crypto.sha256),tM(Buffer.from([0]),e,t)}function tM(e,t,r){return r(Buffer.concat([e,t]))}var T0=function(){function e(t,r,n){this.leftChild=t,this.rightChild=r,this.hash=n}return e.prototype.isLeaf=function(){return this.leftChild==null},e}();function M0(e){if(!e.parent)return[];if(e.parent.leftChild==e){if(!e.parent.rightChild)throw new Error("Expected right child to exist");return Ny([e.parent.rightChild.hash],ky(M0(e.parent)),!1)}else{if(!e.parent.leftChild)throw new Error("Expected left child to exist");return Ny([e.parent.leftChild.hash],ky(M0(e.parent)),!1)}}function rM(e){if(e<2)throw Error("Expected n >= 2");return nM(e)?e/2:1<0){if(n.length>1)throw Error("Expected exactly one signature, got ".concat(n.length));if(i)throw Error("Both taproot and non-taproot signatures present.");var s=!!e.getInputWitnessUtxo(r),o=e.getInputRedeemScript(r),u=!!o,l=e.getInputPartialSig(r,n[0]);if(!l)throw new Error("Expected partial signature for input "+r);if(s){var c=new ot;if(c.writeVarInt(2),c.writeVarInt(l.length),c.writeSlice(l),c.writeVarInt(n[0].length),c.writeSlice(n[0]),e.setInputFinalScriptwitness(r,c.buffer()),u){if(!o||o.length==0)throw new Error("Expected non-empty redeemscript. Can't finalize intput "+r);var p=new ot;p.writeUInt8(o.length),p.writeSlice(o),e.setInputFinalScriptsig(r,p.buffer())}}else{var w=new ot;Dy(w,l),Dy(w,n[0]),e.setInputFinalScriptsig(r,w.buffer())}}else{var l=e.getInputTapKeySig(r);if(!l)throw Error("No taproot signature found");if(l.length!=64&&l.length!=65)throw Error("Unexpected length of schnorr signature.");var c=new ot;c.writeVarInt(1),c.writeVarSlice(l),e.setInputFinalScriptwitness(r,c.buffer())}cM(e,r)}}function cM(e,t){var r=[Ce.BIP32_DERIVATION,Ce.PARTIAL_SIG,Ce.TAP_BIP32_DERIVATION,Ce.TAP_KEY_SIG],n=!!e.getInputWitnessUtxo(t),i=!!e.getInputNonWitnessUtxo(t);n&&i&&r.push(Ce.NON_WITNESS_UTXO),e.deleteInputEntries(t,r)}function Dy(e,t){if(t.length<=75)e.writeUInt8(t.length);else if(t.length<=256)e.writeUInt8(76),e.writeUInt8(t.length);else if(t.length<=256*256){e.writeUInt8(77);var r=Buffer.alloc(2);r.writeUInt16LE(t.length,0),e.writeSlice(r)}e.writeSlice(t)}function $i(e,t){if(e[t]<253)return[e[t],1];if(e[t]===253)return[(e[t+2]<<8)+e[t+1],3];if(e[t]===254)return[(e[t+4]<<24)+(e[t+3]<<16)+(e[t+2]<<8)+e[t+1],5];throw new Error("getVarint called with unexpected parameters")}function rt(e){if(e<253){var t=Buffer.alloc(1);return t[0]=e,t}if(e<=65535){var r=Buffer.alloc(3);return r[0]=253,r[1]=e&255,r[2]=e>>8&255,r}var n=Buffer.alloc(5);return n[0]=254,n[1]=e&255,n[2]=e>>8&255,n[3]=e>>16&255,n[4]=e>>24&255,n}function N0(e){var t=e.outputs,r=Buffer.alloc(0);return typeof t<"u"&&(r=Buffer.concat([r,rt(t.length)]),t.forEach(function(n){r=Buffer.concat([r,n.amount,rt(n.script.length),n.script])})),r}function zs(e,t,r,n){n===void 0&&(n=[]);var i=n.includes("decred"),s=n.includes("zcash"),o=n.includes("bech32"),u=Buffer.alloc(0),l=typeof e.witness<"u"&&!t;e.inputs.forEach(function(p){u=i||o?Buffer.concat([u,p.prevout,Buffer.from([0]),p.sequence]):Buffer.concat([u,p.prevout,rt(p.script.length),p.script,p.sequence])});var c=N0(e);return typeof e.outputs<"u"&&typeof e.locktime<"u"&&(c=Buffer.concat([c,l&&e.witness||Buffer.alloc(0),e.locktime,e.nExpiryHeight||Buffer.alloc(0),e.extraData||Buffer.alloc(0)])),s?Buffer.concat([e.version,e.nVersionGroupId||Buffer.alloc(0),Buffer.from([180,208,214,194]),e.locktime||Buffer.from([0,0,0,0]),e.nExpiryHeight||Buffer.from([0,0,0,0]),l?Buffer.from("0001","hex"):Buffer.alloc(0),rt(e.inputs.length),u,c]):Buffer.concat([e.version,r||Buffer.alloc(0),e.nVersionGroupId||Buffer.alloc(0),l?Buffer.from("0001","hex"):Buffer.alloc(0),rt(e.inputs.length),u,c])}var ji=function(e,t,r,n){function i(s){return s instanceof r?s:new r(function(o){o(s)})}return new(r||(r=Promise))(function(s,o){function u(p){try{c(n.next(p))}catch(w){o(w)}}function l(p){try{c(n.throw(p))}catch(w){o(w)}}function c(p){p.done?s(p.value):i(p.value).then(u,l)}c((n=n.apply(e,t||[])).next())})},Xi=function(e,t){var r={label:0,sent:function(){if(s[0]&1)throw s[1];return s[1]},trys:[],ops:[]},n,i,s,o;return o={next:u(0),throw:u(1),return:u(2)},typeof Symbol=="function"&&(o[Symbol.iterator]=function(){return this}),o;function u(c){return function(p){return l([c,p])}}function l(c){if(n)throw new TypeError("Generator is already executing.");for(;r;)try{if(n=1,i&&(s=c[0]&2?i.return:c[0]?i.throw||((s=i.return)&&s.call(i),0):i.next)&&!(s=s.call(i,c[1])).done)return s;switch(i=0,s&&(c=[c[0]&2,s.value]),c[0]){case 0:case 1:s=c;break;case 4:return r.label++,{value:c[1],done:!1};case 5:r.label++,i=c[1],c=[0];continue;case 7:c=r.ops.pop(),r.trys.pop();continue;default:if(s=r.trys,!(s=s.length>0&&s[s.length-1])&&(c[0]===6||c[0]===2)){r=0;continue}if(c[0]===3&&(!s||c[1]>s[0]&&c[1]=t},i=function(o){return o===void 0||o=3&&r.length<=5&&[44+t,49+t,84+t,86+t].some(function(o){return o==r[0]})&&[0+t,1+t].some(function(o){return o==r[1]})&&n(r[2])&&s(r[3])&&i(r[4])||r.length>=4&&r.length<=6&&48+t==r[0]&&[0+t,1+t].some(function(o){return o==r[1]})&&n(r[2])&&n(r[3])&&s(r[4])&&i(r[5]))}var r6=Qe(yc()),n6=Qe(E0()),i6=Qe(Gu());var Y3=Qe($u());var q0=function(){return q0=Object.assign||function(e){for(var t,r=1,n=arguments.length;r0&&s[s.length-1])&&(c[0]===6||c[0]===2)){r=0;continue}if(c[0]===3&&(!s||c[1]>s[0]&&c[1]0&&s[s.length-1])&&(c[0]===6||c[0]===2)){r=0;continue}if(c[0]===3&&(!s||c[1]>s[0]&&c[1]=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")};function $s(e,t,r){return D0(this,void 0,void 0,function(){var n,i,s,o,u;return H0(this,function(l){switch(l.label){case 0:return i=!1,typeof r=="number"?(i=!0,s=Buffer.alloc(4),s.writeUInt32BE(r,0),n=Buffer.concat([s,t],t.length+4)):n=t,[4,e.send(224,66,i?0:128,0,n)];case 1:return o=l.sent(),u=o.slice(0,o.length-2).toString("hex"),[2,u]}})})}function js(e,t,r,n){return n===void 0&&(n=[]),D0(this,void 0,void 0,function(){var i,s,o,u,l,c,p,w,x,S,M,O,P,B,N,y,L,H,W,K,y,X,q,ee,y,a,h,d,v,m,_=this;return H0(this,function(E){switch(E.label){case 0:if(i=r.version,s=r.inputs,o=r.outputs,u=r.locktime,l=r.nExpiryHeight,c=r.extraData,!o||!u)throw new Error("getTrustedInput: locktime & outputs is expected");return p=n.includes("decred"),w=n.includes("stealthcoin"),x=function(b,f){return D0(_,void 0,void 0,function(){var g,A,R,k,U,G,F,Le,V,j,fr;return H0(this,function(Y){switch(Y.label){case 0:for(g=f||Buffer.alloc(0),A=[],R=0;R!==b.length;)k=b.length-R>rr?rr:b.length-R,R+k!==b.length?A.push(b.slice(R,R+k)):A.push(Buffer.concat([b.slice(R,R+k),g])),R+=k;b.length===0&&A.push(g),Y.label=1;case 1:Y.trys.push([1,6,7,8]),G=U0(A),F=G.next(),Y.label=2;case 2:return F.done?[3,5]:(Le=F.value,[4,$s(e,Le)]);case 3:U=Y.sent(),Y.label=4;case 4:return F=G.next(),[3,2];case 5:return[3,8];case 6:return V=Y.sent(),j={error:V},[3,8];case 7:try{F&&!F.done&&(fr=G.return)&&fr.call(G)}finally{if(j)throw j.error}return[7];case 8:return[2,U]}})})},S=function(b){return $s(e,b)},[4,$s(e,Buffer.concat([r.version,r.timestamp||Buffer.alloc(0),r.nVersionGroupId||Buffer.alloc(0),rt(s.length)]),t)];case 1:E.sent(),E.label=2;case 2:E.trys.push([2,8,9,10]),M=U0(s),O=M.next(),E.label=3;case 3:return O.done?[3,7]:(P=O.value,B=w&&Buffer.compare(i,Buffer.from([2,0,0,0]))===0,N=p?P.tree||Buffer.from([0]):Buffer.alloc(0),y=Buffer.concat([P.prevout,N,B?Buffer.from([0]):rt(P.script.length)]),[4,$s(e,y)]);case 4:return E.sent(),[4,p?S(Buffer.concat([P.script,P.sequence])):B?S(P.sequence):x(P.script,P.sequence)];case 5:E.sent(),E.label=6;case 6:return O=M.next(),[3,3];case 7:return[3,10];case 8:return L=E.sent(),h={error:L},[3,10];case 9:try{O&&!O.done&&(d=M.return)&&d.call(M)}finally{if(h)throw h.error}return[7];case 10:return[4,$s(e,rt(o.length))];case 11:E.sent(),E.label=12;case 12:E.trys.push([12,17,18,19]),H=U0(o),W=H.next(),E.label=13;case 13:return W.done?[3,16]:(K=W.value,y=Buffer.concat([K.amount,p?Buffer.from([0,0]):Buffer.alloc(0),rt(K.script.length),K.script]),[4,$s(e,y)]);case 14:E.sent(),E.label=15;case 15:return W=H.next(),[3,13];case 16:return[3,19];case 17:return X=E.sent(),v={error:X},[3,19];case 18:try{W&&!W.done&&(m=H.return)&&m.call(H)}finally{if(v)throw v.error}return[7];case 19:return q=[],l&&l.length>0&&q.push(l),c&&c.length>0&&q.push(c),q.length&&(y=Buffer.concat(q),ee=p?y:Buffer.concat([rt(y.length),y])),[4,x(Buffer.concat([u,ee||Buffer.alloc(0)]))];case 20:return a=E.sent(),(0,Vy.default)(a,"missing result in processScriptBlocks"),[2,a]}})})}var xM=function(e,t,r,n){function i(s){return s instanceof r?s:new r(function(o){o(s)})}return new(r||(r=Promise))(function(s,o){function u(p){try{c(n.next(p))}catch(w){o(w)}}function l(p){try{c(n.throw(p))}catch(w){o(w)}}function c(p){p.done?s(p.value):i(p.value).then(u,l)}c((n=n.apply(e,t||[])).next())})},SM=function(e,t){var r={label:0,sent:function(){if(s[0]&1)throw s[1];return s[1]},trys:[],ops:[]},n,i,s,o;return o={next:u(0),throw:u(1),return:u(2)},typeof Symbol=="function"&&(o[Symbol.iterator]=function(){return this}),o;function u(c){return function(p){return l([c,p])}}function l(c){if(n)throw new TypeError("Generator is already executing.");for(;r;)try{if(n=1,i&&(s=c[0]&2?i.return:c[0]?i.throw||((s=i.return)&&s.call(i),0):i.next)&&!(s=s.call(i,c[1])).done)return s;switch(i=0,s&&(c=[c[0]&2,s.value]),c[0]){case 0:case 1:s=c;break;case 4:return r.label++,{value:c[1],done:!1};case 5:r.label++,i=c[1],c=[0];continue;case 7:c=r.ops.pop(),r.trys.pop();continue;default:if(s=r.trys,!(s=s.length>0&&s[s.length-1])&&(c[0]===6||c[0]===2)){r=0;continue}if(c[0]===3&&(!s||c[1]>s[0]&&c[1]=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")};function F0(e,t,r,n,i,s,o){i===void 0&&(i=!1),s===void 0&&(s=!1),o===void 0&&(o=[]);var u=o.includes("cashaddr")?3:i?o.includes("sapling")?5:s?4:2:0;return e.send(224,68,r?0:128,t?u:128,n)}function Xs(e,t,r,n,i,s,o,u){return i===void 0&&(i=!1),s===void 0&&(s=!1),o===void 0&&(o=[]),u===void 0&&(u=!1),xM(this,void 0,void 0,function(){var l,c,p,w,x,S,M,O,P,B,N,L,H,W,K,X,q,ee,y,a;return SM(this,function(h){switch(h.label){case 0:return l=Buffer.concat([r.version,r.timestamp||Buffer.alloc(0),r.nVersionGroupId||Buffer.alloc(0),rt(r.inputs.length)]),[4,F0(e,t,!0,l,i,s,o)];case 1:h.sent(),c=0,p=o.includes("decred"),h.label=2;case 2:h.trys.push([2,15,16,17]),w=zy(r.inputs),x=w.next(),h.label=3;case 3:return x.done?[3,14]:(S=x.value,M=void 0,O=n[c].value,i?u&&n[c].trustedInput?M=Buffer.from([1,O.length]):M=Buffer.from([2]):n[c].trustedInput?M=Buffer.from([1,n[c].value.length]):M=Buffer.from([0]),l=Buffer.concat([M,O,p?Buffer.from([0]):Buffer.alloc(0),rt(S.script.length)]),[4,F0(e,t,!1,l,i,s,o)]);case 4:if(h.sent(),P=[],B=0,S.script.length===0)P.push(S.sequence);else for(;B!==S.script.length;)N=S.script.length-B>rr?rr:S.script.length-B,B+N!==S.script.length?P.push(S.script.slice(B,B+N)):P.push(Buffer.concat([S.script.slice(B,B+N),S.sequence])),B+=N;h.label=5;case 5:h.trys.push([5,10,11,12]),L=(y=void 0,zy(P)),H=L.next(),h.label=6;case 6:return H.done?[3,9]:(W=H.value,[4,F0(e,t,!1,W,i,s,o)]);case 7:h.sent(),h.label=8;case 8:return H=L.next(),[3,6];case 9:return[3,12];case 10:return K=h.sent(),y={error:K},[3,12];case 11:try{H&&!H.done&&(a=L.return)&&a.call(L)}finally{if(y)throw y.error}return[7];case 12:c++,h.label=13;case 13:return x=w.next(),[3,3];case 14:return[3,17];case 15:return X=h.sent(),q={error:X},[3,17];case 16:try{x&&!x.done&&(ee=w.return)&&ee.call(w)}finally{if(q)throw q.error}return[7];case 17:return[2]}})})}var K0=Qe(Gu());function Ys(e,t,r,n){if(n===void 0&&(n=[]),!r)throw new Error("getTrustedInputBIP143: missing tx");var i=n.includes("decred");if(i)throw new Error("Decred does not implement BIP143");var s=(0,K0.default)("sha256").update((0,K0.default)("sha256").update(zs(r,!0)).digest()).digest(),o=Buffer.alloc(4);o.writeUInt32LE(t,0);var u=r.outputs,l=r.locktime;if(!u||!l)throw new Error("getTrustedInputBIP143: locktime & outputs is expected");if(!u[t])throw new Error("getTrustedInputBIP143: wrong index");return s=Buffer.concat([s,o,u[t].amount]),s.toString("hex")}function $y(e){var t=(e[64]&1)!==0?3:2,r=Buffer.alloc(1);return r[0]=t,Buffer.concat([r,e.slice(1,1+32)])}function ga(e,t,r,n,i,s){s===void 0&&(s=[]);var o=s.includes("decred"),u=Ls(t),l=Buffer.alloc(4);l.writeUInt32BE(r,0);var c=o?Buffer.concat([u,l,i||Buffer.from([0,0,0,0]),Buffer.from([n])]):Buffer.concat([u,Buffer.from([0]),l,Buffer.from([n])]);return i&&!o&&(c=Buffer.concat([c,i])),e.send(224,72,0,0,c).then(function(p){return p.length>0?(p[0]=48,p.slice(0,p.length-2)):p})}var IM=function(e,t,r,n){function i(s){return s instanceof r?s:new r(function(o){o(s)})}return new(r||(r=Promise))(function(s,o){function u(p){try{c(n.next(p))}catch(w){o(w)}}function l(p){try{c(n.throw(p))}catch(w){o(w)}}function c(p){p.done?s(p.value):i(p.value).then(u,l)}c((n=n.apply(e,t||[])).next())})},TM=function(e,t){var r={label:0,sent:function(){if(s[0]&1)throw s[1];return s[1]},trys:[],ops:[]},n,i,s,o;return o={next:u(0),throw:u(1),return:u(2)},typeof Symbol=="function"&&(o[Symbol.iterator]=function(){return this}),o;function u(c){return function(p){return l([c,p])}}function l(c){if(n)throw new TypeError("Generator is already executing.");for(;r;)try{if(n=1,i&&(s=c[0]&2?i.return:c[0]?i.throw||((s=i.return)&&s.call(i),0):i.next)&&!(s=s.call(i,c[1])).done)return s;switch(i=0,s&&(c=[c[0]&2,s.value]),c[0]){case 0:case 1:s=c;break;case 4:return r.label++,{value:c[1],done:!1};case 5:r.label++,i=c[1],c=[0];continue;case 7:c=r.ops.pop(),r.trys.pop();continue;default:if(s=r.trys,!(s=s.length>0&&s[s.length-1])&&(c[0]===6||c[0]===2)){r=0;continue}if(c[0]===3&&(!s||c[1]>s[0]&&c[1]=t.length?t.length-n:rr,u=n+o===t.length?128:0,l=t.slice(n,n+o),[4,e.send(224,74,u,0,l)]):[3,3];case 2:return c.sent(),n+=o,[3,1];case 3:return[2]}})})}var Yy=Qe(L0()),jy=function(e,t,r,n){function i(s){return s instanceof r?s:new r(function(o){o(s)})}return new(r||(r=Promise))(function(s,o){function u(p){try{c(n.next(p))}catch(w){o(w)}}function l(p){try{c(n.throw(p))}catch(w){o(w)}}function c(p){p.done?s(p.value):i(p.value).then(u,l)}c((n=n.apply(e,t||[])).next())})},Xy=function(e,t){var r={label:0,sent:function(){if(s[0]&1)throw s[1];return s[1]},trys:[],ops:[]},n,i,s,o;return o={next:u(0),throw:u(1),return:u(2)},typeof Symbol=="function"&&(o[Symbol.iterator]=function(){return this}),o;function u(c){return function(p){return l([c,p])}}function l(c){if(n)throw new TypeError("Generator is already executing.");for(;r;)try{if(n=1,i&&(s=c[0]&2?i.return:c[0]?i.throw||((s=i.return)&&s.call(i),0):i.next)&&!(s=s.call(i,c[1])).done)return s;switch(i=0,s&&(c=[c[0]&2,s.value]),c[0]){case 0:case 1:s=c;break;case 4:return r.label++,{value:c[1],done:!1};case 5:r.label++,i=c[1],c=[0];continue;case 7:c=r.ops.pop(),r.trys.pop();continue;default:if(s=r.trys,!(s=s.length>0&&s[s.length-1])&&(c[0]===6||c[0]===2)){r=0;continue}if(c[0]===3&&(!s||c[1]>s[0]&&c[1]0&&s[s.length-1])&&(c[0]===6||c[0]===2)){r=0;continue}if(c[0]===3&&(!s||c[1]>s[0]&&c[1]=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")},_P={lockTime:wu,sigHashType:$o,segwit:!1,additionals:[],onDeviceStreaming:function(e){},onDeviceSignatureGranted:function(){},onDeviceSignatureRequested:function(){}};function J3(e,t){return mP(this,void 0,void 0,function(){var r,n,i,s,o,u,l,c,p,w,x,S,M,O,P,B,N,L,H,W,K,X,q,ee,y,a,h,d,v,m,_,E,b,f,g,A,R,k,U,G,ct,F,Le,V,j,fr,Y,D,oe,D,D,ct,re,te,hn,ae,D,ne,Hr,ie,J,yr,D,fe,wr,se,ue;return yP(this,function(qe){switch(qe.label){case 0:if(r=ro(ro({},_P),t),n=r.inputs,i=r.associatedKeysets,s=r.changePath,o=r.outputScriptHex,u=r.lockTime,l=r.sigHashType,c=r.segwit,p=r.initialTimestamp,w=r.additionals,x=r.expiryHeight,S=r.onDeviceStreaming,M=r.onDeviceSignatureGranted,O=r.onDeviceSignatureRequested,P=r.useTrustedInputForSegwit,P!==void 0)return[3,4];qe.label=1;case 1:return qe.trys.push([1,3,,4]),[4,ju(e)];case 2:return B=qe.sent(),P=X3(B),[3,4];case 3:if(N=qe.sent(),N.statusCode===27904)P=!1;else throw N;return[3,4];case 4:L=function(Z,Q){var Jt=n.length;if(!(Jt<3)){var ce=Jt*Z+Q,he=2*Jt,Wn=ce/he;S({progress:Wn,total:he,index:ce})}},H=w.includes("decred"),W=w.includes("zcash"),K=w.includes("stealthcoin"),X=Date.now(),q=w.includes("sapling"),ee=c&&w.includes("bech32"),y=c||!!w&&(w.includes("abc")||w.includes("gold")||w.includes("bip143"))||!!x&&!H,a=Buffer.alloc(4),a.writeUInt32LE(u,0),h=Buffer.alloc(0),d=Buffer.alloc(0),v=Buffer.alloc(4),!!x&&!H?v.writeUInt32LE(W?2147483653:q?2147483652:2147483651,0):K?v.writeUInt32LE(2,0):v.writeUInt32LE(1,0),m=[],_=[],E=[],b=[],f=!0,g=!1,A={inputs:[],version:v,timestamp:Buffer.alloc(0)},R=y&&!P?Ys:js,k=Buffer.from(o,"hex"),L(0,0),qe.label=5;case 5:qe.trys.push([5,11,12,13]),U=wP(n),G=U.next(),qe.label=6;case 6:return G.done?[3,10]:(ct=G.value,g?[3,8]:[4,R(e,ct[1],ct[0],w)]);case 7:F=qe.sent(),(0,Y3.log)("hw","got trustedInput="+F),Le=Buffer.alloc(4),Le.writeUInt32LE(ct.length>=4&&typeof ct[3]=="number"?ct[3]:Ds,0),m.push({trustedInput:!0,value:Buffer.from(F,"hex"),sequence:Le}),qe.label=8;case 8:V=ct[0].outputs,j=ct[1],V&&j<=V.length-1&&_.push(V[j]),x&&!H?(A.nVersionGroupId=Buffer.from(W?[10,39,167,38]:q?[133,32,47,137]:[112,130,196,3]),A.nExpiryHeight=x,A.extraData=Buffer.from(q?[0,0,0,0,0,0,0,0,0,0,0]:[0])):H&&(A.nExpiryHeight=x),qe.label=9;case 9:return G=U.next(),[3,6];case 10:return[3,13];case 11:return fr=qe.sent(),se={error:fr},[3,13];case 12:try{G&&!G.done&&(ue=U.return)&&ue.call(U)}finally{if(se)throw se.error}return[7];case 13:if(A.inputs=n.map(function(Z,Q){var Jt=Buffer.alloc(4);return Jt.writeUInt32LE(Z.length>=4&&typeof Z[3]=="number"?Z[3]:Ds,0),{script:W?_[Q].script:h,prevout:d,sequence:Jt}}),g)return[3,18];Y=[],D=0,qe.label=14;case 14:return D=3&&typeof ct[2]=="string"?Buffer.from(ct[2],"hex"):c?Buffer.concat([Buffer.from([_u,jo,Hs]),Fn(b[D]),Buffer.from([Eu,xu])]):_[D].script,te=Object.assign({},A),hn=y?[m[D]]:m,y?te.inputs=[ro(ro({},te.inputs[D]),{script:re})]:te.inputs[D].script=re,[4,Xs(e,!y&&f,te,hn,y,!!x&&!H,w,P)]):[3,34];case 27:return qe.sent(),y?[3,31]:!g&&s?[4,G0(e,s)]:[3,29];case 28:qe.sent(),qe.label=29;case 29:return[4,Js(e,k,w)];case 30:qe.sent(),qe.label=31;case 31:return f&&(M(),L(1,0)),[4,ga(e,i[D],u,l,x,w)];case 32:ae=qe.sent(),L(1,D+1),E.push(ae),A.inputs[D].script=h,f&&(f=!1),qe.label=33;case 33:return D++,[3,26];case 34:for(D=0;D0&&s[s.length-1])&&(c[0]===6||c[0]===2)){r=0;continue}if(c[0]===3&&(!s||c[1]>s[0]&&c[1]1)throw new Error("@ledgerhq/hw-app-btc: createPaymentTransaction multi argument signature is deprecated. please switch to named parameters.");return J3(this.transport,t)},e}(),ad=EP;function xP(e){return MP(e).slice(0,4)}function e6(e){var t=Buffer.allocUnsafe(4);return t.writeUInt32BE(e,0),t}var t6=function(e){return Buffer.concat([Buffer.from([2+(e[64]&1)]),e.slice(1,33)])};function SP(e,t,r,n,i,s){var o=e6(n);o[0]|=128;var u=Buffer.concat([e6(e),Buffer.from([t]),r,o,i,s]),l=IP(u).slice(0,4);return r6.default.encode(Buffer.concat([u,l]))}function od(e){return(0,i6.default)("sha256").update(e).digest()}function IP(e){return od(od(e))}function TP(e){return new n6.default().update(e).digest()}function MP(e){return TP(od(e))}var s6=function(){function e(t,r){if(t.length!=r.length)throw new Error("keys and values should have the same length");for(var n=0;n=t[n+1].toString("hex"))throw new Error("keys must be in strictly increasing order");this.keys=t,this.keysTree=new Ur(t.map(function(i){return Dr(i)})),this.values=r,this.valuesTree=new Ur(r.map(function(i){return Dr(i)}))}return e.prototype.commitment=function(){return Buffer.concat([rt(this.keys.length),this.keysTree.getRoot(),this.valuesTree.getRoot()])},e}();var AP=function(){var e=function(t,r){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,i){n.__proto__=i}||function(n,i){for(var s in i)Object.prototype.hasOwnProperty.call(i,s)&&(n[s]=i[s])},e(t,r)};return function(t,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");e(t,r);function n(){this.constructor=t}t.prototype=r===null?Object.create(r):(n.prototype=r.prototype,new n)}}(),fd=function(e,t){var r=typeof Symbol=="function"&&e[Symbol.iterator];if(!r)return e;var n=r.call(e),i,s=[],o;try{for(;(t===void 0||t-- >0)&&!(i=n.next()).done;)s.push(i.value)}catch(u){o={error:u}}finally{try{i&&!i.done&&(r=n.return)&&r.call(n)}finally{if(o)throw o.error}}return s},ud=function(e,t,r){if(r||arguments.length===2)for(var n=0,i=t.length,s;n0)&&!(i=n.next()).done;)s.push(i.value)}catch(u){o={error:u}}finally{try{i&&!i.done&&(r=n.return)&&r.call(n)}finally{if(o)throw o.error}}return s},hd=function(e,t,r){if(r||arguments.length===2)for(var n=0,i=t.length,s;n=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")},ns;(function(e){e[e.YIELD=16]="YIELD",e[e.GET_PREIMAGE=64]="GET_PREIMAGE",e[e.GET_MERKLE_LEAF_PROOF=65]="GET_MERKLE_LEAF_PROOF",e[e.GET_MERKLE_LEAF_INDEX=66]="GET_MERKLE_LEAF_INDEX",e[e.GET_MORE_ELEMENTS=160]="GET_MORE_ELEMENTS"})(ns||(ns={}));var Oa=function(){function e(){}return e}(),OP=function(e){Aa(t,e);function t(r,n){var i=e.call(this)||this;return i.progressCallback=n,i.code=ns.YIELD,i.results=r,i}return t.prototype.execute=function(r){return this.results.push(Buffer.from(r.subarray(1))),this.progressCallback(),Buffer.from("")},t}(Oa);var PP=function(e){Aa(t,e);function t(r,n){var i=e.call(this)||this;return i.code=ns.GET_PREIMAGE,i.known_preimages=r,i.queue=n,i}return t.prototype.execute=function(r){var n=Buffer.from(r.subarray(1));if(n.length!=1+32)throw new Error("Invalid request, unexpected trailing data");if(n[0]!=0)throw new Error("Unsupported request, the first byte should be 0");for(var i=Buffer.alloc(32),s=0;s<32;s++)i[s]=n[1+s];var o=i.toString("hex"),u=this.known_preimages.get(o);if(u!=null){var l=rt(u.length),c=255-l.length-1,p=Math.min(c,u.length);if(p=l||p.size()!=l)throw Error("Invalid index or tree size.");if(this.queue.length!=0)throw Error("This command should not execute when the queue is not empty.");var w=p.getProof(c),x=Math.min(Math.floor((255-32-1-1)/32),w.length),S=w.length-x;return S>0&&(n=this.queue).push.apply(n,hd([],cd(w.slice(-S)),!1)),Buffer.concat(hd([p.getLeafHash(c),Buffer.from([w.length]),Buffer.from([x])],cd(w.slice(0,x)),!1))},t}(Oa);var RP=function(e){Aa(t,e);function t(r){var n=e.call(this)||this;return n.code=ns.GET_MERKLE_LEAF_INDEX,n.known_trees=r,n}return t.prototype.execute=function(r){var n=Buffer.from(r.subarray(1));if(n.length!=32+32)throw new Error("Invalid request, unexpected trailing data");for(var i=Buffer.alloc(32),s=0;s<32;s++)i[s]=n.readUInt8(s);for(var o=i.toString("hex"),u=Buffer.alloc(32),s=0;s<32;s++)u[s]=n.readUInt8(32+s);var l=u.toString("hex"),c=this.known_trees.get(o);if(!c)throw Error("Requested Merkle leaf index for unknown root: ".concat(o));for(var p=0,w=0,s=0;s0&&s[s.length-1])&&(c[0]===6||c[0]===2)){r=0;continue}if(c[0]===3&&(!s||c[1]>s[0]&&c[1]=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")},NP=225,CP=248,no;(function(e){e[e.GET_PUBKEY=0]="GET_PUBKEY",e[e.REGISTER_WALLET=2]="REGISTER_WALLET",e[e.GET_WALLET_ADDRESS=3]="GET_WALLET_ADDRESS",e[e.SIGN_PSBT=4]="SIGN_PSBT",e[e.GET_MASTER_FINGERPRINT=5]="GET_MASTER_FINGERPRINT"})(no||(no={}));var pd;(function(e){e[e.CONTINUE_INTERRUPTED=1]="CONTINUE_INTERRUPTED"})(pd||(pd={}));var u6=function(){function e(t){this.transport=t}return e.prototype.makeRequest=function(t,r,n){return Pa(this,void 0,void 0,function(){var i,s,o;return Ba(this,function(u){switch(u.label){case 0:return[4,this.transport.send(NP,t,0,0,r,[36864,57344])];case 1:i=u.sent(),u.label=2;case 2:if(i.readUInt16BE(i.length-2)!==57344)return[3,4];if(!n)throw new Error("Unexpected SW_INTERRUPTED_EXECUTION");return s=i.slice(0,-2),o=n.execute(s),[4,this.transport.send(CP,pd.CONTINUE_INTERRUPTED,0,0,o,[36864,57344])];case 3:return i=u.sent(),[3,2];case 4:return[2,i.slice(0,-2)]}})})},e.prototype.getExtendedPubkey=function(t,r){return Pa(this,void 0,void 0,function(){var n;return Ba(this,function(i){switch(i.label){case 0:if(r.length>6)throw new Error("Path too long. At most 6 levels allowed.");return[4,this.makeRequest(no.GET_PUBKEY,Buffer.concat([Buffer.from(t?[1]:[0]),Wl(r)]))];case 1:return n=i.sent(),[2,n.toString("ascii")]}})})},e.prototype.getWalletAddress=function(t,r,n,i,s){return Pa(this,void 0,void 0,function(){var o,u,l;return Ba(this,function(c){switch(c.label){case 0:if(n!==0&&n!==1)throw new Error("Change can only be 0 or 1");if(i<0||!Number.isInteger(i))throw new Error("Invalid address index");if(r!=null&&r.length!=32)throw new Error("Invalid HMAC length");return o=new ld(function(){}),o.addKnownList(t.keys.map(function(p){return Buffer.from(p,"ascii")})),o.addKnownPreimage(t.serialize()),u=Buffer.alloc(4),u.writeUInt32BE(i,0),[4,this.makeRequest(no.GET_WALLET_ADDRESS,Buffer.concat([Buffer.from(s?[1]:[0]),t.getWalletId(),r||Buffer.alloc(32,0),Buffer.from([n]),u]),o)];case 1:return l=c.sent(),[2,l.toString("ascii")]}})})},e.prototype.signPsbt=function(t,r,n,i){return Pa(this,void 0,void 0,function(){var s,o,u,l,w,c,p,w,x,S,M,O,P,B,N,L,H,W,K,X,q;return Ba(this,function(ee){switch(ee.label){case 0:if(s=new o6(t),n!=null&&n.length!=32)throw new Error("Invalid HMAC length");o=new ld(i),o.addKnownList(r.keys.map(function(y){return Buffer.from(y,"ascii")})),o.addKnownPreimage(r.serialize()),o.addKnownMapping(s.globalMerkleMap);try{for(u=dd(s.inputMerkleMaps),l=u.next();!l.done;l=u.next())w=l.value,o.addKnownMapping(w)}catch(y){L={error:y}}finally{try{l&&!l.done&&(H=u.return)&&H.call(u)}finally{if(L)throw L.error}}try{for(c=dd(s.outputMerkleMaps),p=c.next();!p.done;p=c.next())w=p.value,o.addKnownMapping(w)}catch(y){W={error:y}}finally{try{p&&!p.done&&(K=c.return)&&K.call(c)}finally{if(W)throw W.error}}return o.addKnownList(s.inputMapCommitments),x=new Ur(s.inputMapCommitments.map(function(y){return Dr(y)})).getRoot(),o.addKnownList(s.outputMapCommitments),S=new Ur(s.outputMapCommitments.map(function(y){return Dr(y)})).getRoot(),[4,this.makeRequest(no.SIGN_PSBT,Buffer.concat([s.getGlobalKeysValuesRoot(),rt(s.getGlobalInputCount()),x,rt(s.getGlobalOutputCount()),S,r.getWalletId(),n||Buffer.alloc(32,0)]),o)];case 1:ee.sent(),M=o.getYielded(),O=new Map;try{for(P=dd(M),B=P.next();!B.done;B=P.next())N=B.value,O.set(N[0],N.slice(1))}catch(y){X={error:y}}finally{try{B&&!B.done&&(q=P.return)&&q.call(P)}finally{if(X)throw X.error}}return[2,O]}})})},e.prototype.getMasterFingerprint=function(){return Pa(this,void 0,void 0,function(){return Ba(this,function(t){return[2,this.makeRequest(no.GET_MASTER_FINGERPRINT,Buffer.from([]))]})})},e}();var h6=Qe($u());function c6(e){var t="TX";return t+=" version "+e.version.toString("hex"),e.locktime&&(t+=" locktime "+e.locktime.toString("hex")),e.witness&&(t+=" witness "+e.witness.toString("hex")),e.timestamp&&(t+=" timestamp "+e.timestamp.toString("hex")),e.nVersionGroupId&&(t+=" nVersionGroupId "+e.nVersionGroupId.toString("hex")),e.nExpiryHeight&&(t+=" nExpiryHeight "+e.nExpiryHeight.toString("hex")),e.extraData&&(t+=" extraData "+e.extraData.toString("hex")),e.inputs.forEach(function(r,n){var i=r.prevout,s=r.script,o=r.sequence;t+=` input `.concat(n,":"),t+=" prevout ".concat(i.toString("hex")),t+=" script ".concat(s.toString("hex")),t+=" sequence ".concat(o.toString("hex"))}),(e.outputs||[]).forEach(function(r,n){var i=r.amount,s=r.script;t+=` output `.concat(n,":"),t+=" amount ".concat(i.toString("hex")),t+=" script ".concat(s.toString("hex"))}),t}function l6(e,t,r,n,i){t===void 0&&(t=!1),r===void 0&&(r=!1),n===void 0&&(n=!1),i===void 0&&(i=[]);var s=[],o=[],u=!1,l=0,c=Buffer.alloc(0),p=Buffer.alloc(0),w=Buffer.alloc(0),x=Buffer.alloc(0),S,M,O=i.includes("decred"),P=i.includes("zencash"),B=i.includes("zcash"),N=Buffer.from(e,"hex"),L=N.slice(l,l+4),H=L.equals(Buffer.from([3,0,0,128]))||L.equals(Buffer.from([4,0,0,128]))||L.equals(Buffer.from([5,0,0,128])),W=B&&L.equals(Buffer.from([5,0,0,128]));l+=4,!r&&t&&N[l]===0&&N[l+1]!==0&&!P&&(l+=2,u=!0),r&&(c=N.slice(l,4+l),l+=4),H&&(w=N.slice(l,4+l),l+=4),W&&(M=N.slice(l+4,l+8),p=N.slice(l+8,l+12),l+=12);var K=$i(N,l),X=K[0];l+=K[1];for(var q=0;q0&&s[s.length-1])&&(c[0]===6||c[0]===2)){r=0;continue}if(c[0]===3&&(!s||c[1]>s[0]&&c[1]=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")},DP={lockTime:wu,sigHashType:$o,segwit:!1,transactionVersion:$g};function d6(e,t){return qP(this,void 0,void 0,function(){var r,n,i,s,o,u,l,c,p,w,x,S,M,O,P,B,N,L,H,W,K,d,X,a,q,ee,y,h,a,h,d,v,m,_,E,b,f;return LP(this,function(g){switch(g.label){case 0:r=io(io({},DP),t),n=r.inputs,i=r.associatedKeysets,s=r.outputScriptHex,o=r.lockTime,u=r.sigHashType,l=r.segwit,c=r.transactionVersion,p=Buffer.alloc(0),w=Buffer.alloc(0),x=Buffer.alloc(4),x.writeUInt32LE(c,0),S=[],M=[],O=[],P=!0,B=!1,N={inputs:[],version:x},L=l?Ys:js,H=Buffer.from(s,"hex"),g.label=1;case 1:g.trys.push([1,7,8,9]),W=UP(n),K=W.next(),g.label=2;case 2:return K.done?[3,6]:(d=K.value,B?[3,4]:[4,L(e,d[1],d[0])]);case 3:X=g.sent(),a=Buffer.alloc(4),a.writeUInt32LE(d.length>=4&&typeof d[3]=="number"?d[3]:Ds,0),S.push({trustedInput:!1,value:l?Buffer.from(X,"hex"):Buffer.from(X,"hex").slice(4,4+36),sequence:a}),g.label=4;case 4:q=d[0].outputs,ee=d[1],q&&ee<=q.length-1&&M.push(q[ee]),g.label=5;case 5:return K=W.next(),[3,2];case 6:return[3,9];case 7:return y=g.sent(),b={error:y},[3,9];case 8:try{K&&!K.done&&(f=W.return)&&f.call(W)}finally{if(b)throw b.error}return[7];case 9:for(h=0;h=4&&typeof n[h][3]=="number"?n[h][3]:Ds,0),N.inputs.push({script:p,prevout:w,sequence:a});return l?[4,Xs(e,!0,N,S,!0)]:[3,12];case 10:return g.sent(),[4,Js(e,H)];case 11:g.sent(),g.label=12;case 12:h=0,g.label=13;case 13:return h=3&&typeof d[2]=="string"?Buffer.from(d[2],"hex"):M[h].script,m=Object.assign({},N),_=l?[S[h]]:S,l?m.inputs=[io(io({},m.inputs[h]),{script:v})]:m.inputs[h].script=v,[4,Xs(e,!l&&P,m,_,l)]):[3,19];case 14:return g.sent(),l?[3,16]:[4,Js(e,H)];case 15:g.sent(),g.label=16;case 16:return[4,ga(e,i[h],o,u)];case 17:E=g.sent(),O.push(l?E.toString("hex"):E.slice(0,E.length-1).toString("hex")),N.inputs[h].script=p,P&&(P=!1),g.label=18;case 18:return h++,[3,13];case 19:return[2,O]}})})}var v6=Qe(Fl());var HP=function(e,t,r,n){function i(s){return s instanceof r?s:new r(function(o){o(s)})}return new(r||(r=Promise))(function(s,o){function u(p){try{c(n.next(p))}catch(w){o(w)}}function l(p){try{c(n.throw(p))}catch(w){o(w)}}function c(p){p.done?s(p.value):i(p.value).then(u,l)}c((n=n.apply(e,t||[])).next())})},p6=function(e,t){var r={label:0,sent:function(){if(s[0]&1)throw s[1];return s[1]},trys:[],ops:[]},n,i,s,o;return o={next:u(0),throw:u(1),return:u(2)},typeof Symbol=="function"&&(o[Symbol.iterator]=function(){return this}),o;function u(c){return function(p){return l([c,p])}}function l(c){if(n)throw new TypeError("Generator is already executing.");for(;r;)try{if(n=1,i&&(s=c[0]&2?i.return:c[0]?i.throw||((s=i.return)&&s.call(i),0):i.next)&&!(s=s.call(i,c[1])).done)return s;switch(i=0,s&&(c=[c[0]&2,s.value]),c[0]){case 0:case 1:s=c;break;case 4:return r.label++,{value:c[1],done:!1};case 5:r.label++,i=c[1],c=[0];continue;case 7:c=r.ops.pop(),r.trys.pop();continue;default:if(s=r.trys,!(s=s.length>0&&s[s.length-1])&&(c[0]===6||c[0]===2)){r=0;continue}if(c[0]===3&&(!s||c[1]>s[0]&&c[1]s.length?s.length-o:S,O=Buffer.alloc(o===0?1+i.length*4+2+M:M),o===0?(O[0]=i.length,i.forEach(function(B,N){O.writeUInt32BE(B,1+4*N)}),O.writeUInt16BE(s.length,1+4*i.length),s.copy(O,1+4*i.length+2,o,o+M)):s.copy(O,0,o,o+M),[4,e.send(224,78,0,o===0?1:128,O)];case 1:return P.sent(),o+=M,[2]}})},x.label=1;case 1:return o===s.length?[3,3]:[5,u()];case 2:return x.sent(),[3,1];case 3:return[4,e.send(224,78,128,0,Buffer.from([0]))];case 4:return l=x.sent(),c=l[0]-48,p=l.slice(4,4+l[3]),p[0]===0&&(p=p.slice(1)),p=p.toString("hex"),o=4+l[3]+2,w=l.slice(o,o+l[o-1]),w[0]===0&&(w=w.slice(1)),w=w.toString("hex"),[2,{v:c,r:p,s:w}]}})})}var FP=function(e,t,r,n){function i(s){return s instanceof r?s:new r(function(o){o(s)})}return new(r||(r=Promise))(function(s,o){function u(p){try{c(n.next(p))}catch(w){o(w)}}function l(p){try{c(n.throw(p))}catch(w){o(w)}}function c(p){p.done?s(p.value):i(p.value).then(u,l)}c((n=n.apply(e,t||[])).next())})},KP=function(e,t){var r={label:0,sent:function(){if(s[0]&1)throw s[1];return s[1]},trys:[],ops:[]},n,i,s,o;return o={next:u(0),throw:u(1),return:u(2)},typeof Symbol=="function"&&(o[Symbol.iterator]=function(){return this}),o;function u(c){return function(p){return l([c,p])}}function l(c){if(n)throw new TypeError("Generator is already executing.");for(;r;)try{if(n=1,i&&(s=c[0]&2?i.return:c[0]?i.throw||((s=i.return)&&s.call(i),0):i.next)&&!(s=s.call(i,c[1])).done)return s;switch(i=0,s&&(c=[c[0]&2,s.value]),c[0]){case 0:case 1:s=c;break;case 4:return r.label++,{value:c[1],done:!1};case 5:r.label++,i=c[1],c=[0];continue;case 7:c=r.ops.pop(),r.trys.pop();continue;default:if(s=r.trys,!(s=s.length>0&&s[s.length-1])&&(c[0]===6||c[0]===2)){r=0;continue}if(c[0]===3&&(!s||c[1]>s[0]&&c[1]2||typeof r=="boolean"?(console.warn("btc.getWalletPublicKey deprecated signature used. Please switch to getWalletPublicKey(path, { format, verify })"),n={verify:!!r,format:arguments[2]?"p2sh":"legacy"}):n=r||{},this.changeImplIfNecessary().then(function(i){return i.getWalletPublicKey(t,n)})},e.prototype.signMessage=function(t,r){return b6(this._transport,{path:t,messageHex:r})},e.prototype.createPaymentTransaction=function(t){if(arguments.length>1)throw new Error("@ledgerhq/hw-app-btc: createPaymentTransaction multi argument signature is deprecated. please switch to named parameters.");return this.changeImplIfNecessary().then(function(r){return r.createPaymentTransaction(t)})},e.prototype.signP2SHTransaction=function(t){return d6(this._transport,t)},e.prototype.splitTransaction=function(t,r,n,i,s){return r===void 0&&(r=!1),n===void 0&&(n=!1),i===void 0&&(i=!1),s===void 0&&(s=[]),l6(t,r,n,i,s)},e.prototype.serializeTransactionOutputs=function(t){return N0(t)},e.prototype.getTrustedInput=function(t,r,n){return n===void 0&&(n=[]),js(this._transport,t,r,n)},e.prototype.getTrustedInputBIP143=function(t,r,n){return n===void 0&&(n=[]),Ys(this._transport,t,r,n)},e.prototype.changeImplIfNecessary=function(){return FP(this,void 0,void 0,function(){var t,r;return KP(this,function(n){switch(n.label){case 0:return[4,ju(this._transport)];case 1:return t=n.sent(),t.name==="Exchange"&&this._impl instanceof C0?[4,Jy(this._transport)]:[3,3];case 2:r=n.sent(),r&&(this._impl=new ad(this._transport)),n.label=3;case 3:return[2,this._impl]}})})},e}(),vd=GP;var I6=Qe(gd());var md=class extends I6.default{baseURL;eventStream;constructor(t){super(),this.baseURL=t}button=async t=>{let r={action:"press-and-release"};await fetch(`${this.baseURL}/button/${t}`,{method:"POST",body:JSON.stringify(r)})};async exchange(t){let r=t.toString("hex"),i=await(await fetch(`${this.baseURL}/apdu`,{method:"POST",body:JSON.stringify({data:r})})).json(),{data:s}=i;return Buffer.from(s,"hex")}async close(){return this.eventStream.close(),Promise.resolve()}},cn=md;bo(cn,"isSupported",()=>Promise.resolve(!0)),bo(cn,"list",()=>Promise.resolve([])),bo(cn,"listen",()=>({unsubscribe:()=>{}})),bo(cn,"open",async t=>{try{t=t||"http://127.0.0.1:5000";let r=new md(t),n=new EventSource(`${t}/events?stream=true`);return r.eventStream=n,r}catch(r){throw console.log(r),r}});var F6=Qe(H6());function Md(){async function e(){return await F6.default.create()}async function t(r){return await cn.open(r)}return{createUSBTransport:e,createSpeculosTransport:t}}var xB="84'/0'/0'/0/0",SB="usb",{createUSBTransport:IB,createSpeculosTransport:TB}=Md(),MB={usb:IB,speculos:TB},vc=class{type;path;baseURL;_btc;constructor(t){t.type||(t.type=SB),t.path||(t.path=xB),this.type=t.type,this.path=t.path,this.baseURL=t.baseURL;let r=this.type,n=MB[r];n||console.log("Unknown or unsupported type",this.type),this._btc=n(this.baseURL).then(i=>new vd({transport:i,currency:"bitcoin_testnet"}))}_retry(t,r){return new Promise(async(n,i)=>{let s="Please make sure Ledger is ready and retry";r&&r>0&&setTimeout(()=>i(new Error(s)),r);let o=await this._btc;for(let u=0;u<50;u++){try{let l=await t(o);return n(l)}catch(l){if(l.id!=="TransportLocked")return i(l)}await new Promise(l=>{setTimeout(l,100)})}return i(new Error(s))})}async getAddress(){let{bitcoinAddress:t}=await this._retry(r=>r.getWalletPublicKey(this.path,{verify:!1,format:"bech32"}));return t}async signMessage(t){try{let r=Buffer.from(t).toString("hex"),n=await this._retry(o=>o.signMessage(this.path,r)),i=n.v+27+4,s=Buffer.from(i.toString(16)+n.r+n.s,"hex").toString("base64");return console.log("Signature : "+s),s}catch(r){throw console.log(r),r}}async signTransaction(t,r){}async sendTransaction({from:t,to:r,value:n}){try{let i="f85f49b51366f7150d2adea6544bc256743707a38e2bdfbf839349ba1ff2875c",o=await this._retry(async u=>u.splitTransaction(i,!1));return new Promise(u=>u(""))}catch(i){throw console.log("Error in bitcoin-ledger-signer sendTransaction: ",i),i}}};0&&(module.exports={}); +`).concat(c6(m))),m}var io=function(){return io=Object.assign||function(e){for(var t,r=1,n=arguments.length;r0&&s[s.length-1])&&(c[0]===6||c[0]===2)){r=0;continue}if(c[0]===3&&(!s||c[1]>s[0]&&c[1]=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")},DP={lockTime:wu,sigHashType:$o,segwit:!1,transactionVersion:$g};function d6(e,t){return qP(this,void 0,void 0,function(){var r,n,i,s,o,u,l,c,p,w,x,S,M,O,P,B,N,L,H,W,K,d,X,a,q,ee,y,h,a,h,d,v,m,_,E,b,f;return LP(this,function(g){switch(g.label){case 0:r=io(io({},DP),t),n=r.inputs,i=r.associatedKeysets,s=r.outputScriptHex,o=r.lockTime,u=r.sigHashType,l=r.segwit,c=r.transactionVersion,p=Buffer.alloc(0),w=Buffer.alloc(0),x=Buffer.alloc(4),x.writeUInt32LE(c,0),S=[],M=[],O=[],P=!0,B=!1,N={inputs:[],version:x},L=l?Ys:js,H=Buffer.from(s,"hex"),g.label=1;case 1:g.trys.push([1,7,8,9]),W=UP(n),K=W.next(),g.label=2;case 2:return K.done?[3,6]:(d=K.value,B?[3,4]:[4,L(e,d[1],d[0])]);case 3:X=g.sent(),a=Buffer.alloc(4),a.writeUInt32LE(d.length>=4&&typeof d[3]=="number"?d[3]:Ds,0),S.push({trustedInput:!1,value:l?Buffer.from(X,"hex"):Buffer.from(X,"hex").slice(4,4+36),sequence:a}),g.label=4;case 4:q=d[0].outputs,ee=d[1],q&&ee<=q.length-1&&M.push(q[ee]),g.label=5;case 5:return K=W.next(),[3,2];case 6:return[3,9];case 7:return y=g.sent(),b={error:y},[3,9];case 8:try{K&&!K.done&&(f=W.return)&&f.call(W)}finally{if(b)throw b.error}return[7];case 9:for(h=0;h=4&&typeof n[h][3]=="number"?n[h][3]:Ds,0),N.inputs.push({script:p,prevout:w,sequence:a});return l?[4,Xs(e,!0,N,S,!0)]:[3,12];case 10:return g.sent(),[4,Js(e,H)];case 11:g.sent(),g.label=12;case 12:h=0,g.label=13;case 13:return h=3&&typeof d[2]=="string"?Buffer.from(d[2],"hex"):M[h].script,m=Object.assign({},N),_=l?[S[h]]:S,l?m.inputs=[io(io({},m.inputs[h]),{script:v})]:m.inputs[h].script=v,[4,Xs(e,!l&&P,m,_,l)]):[3,19];case 14:return g.sent(),l?[3,16]:[4,Js(e,H)];case 15:g.sent(),g.label=16;case 16:return[4,ga(e,i[h],o,u)];case 17:E=g.sent(),O.push(l?E.toString("hex"):E.slice(0,E.length-1).toString("hex")),N.inputs[h].script=p,P&&(P=!1),g.label=18;case 18:return h++,[3,13];case 19:return[2,O]}})})}var v6=Qe(Fl());var HP=function(e,t,r,n){function i(s){return s instanceof r?s:new r(function(o){o(s)})}return new(r||(r=Promise))(function(s,o){function u(p){try{c(n.next(p))}catch(w){o(w)}}function l(p){try{c(n.throw(p))}catch(w){o(w)}}function c(p){p.done?s(p.value):i(p.value).then(u,l)}c((n=n.apply(e,t||[])).next())})},p6=function(e,t){var r={label:0,sent:function(){if(s[0]&1)throw s[1];return s[1]},trys:[],ops:[]},n,i,s,o;return o={next:u(0),throw:u(1),return:u(2)},typeof Symbol=="function"&&(o[Symbol.iterator]=function(){return this}),o;function u(c){return function(p){return l([c,p])}}function l(c){if(n)throw new TypeError("Generator is already executing.");for(;r;)try{if(n=1,i&&(s=c[0]&2?i.return:c[0]?i.throw||((s=i.return)&&s.call(i),0):i.next)&&!(s=s.call(i,c[1])).done)return s;switch(i=0,s&&(c=[c[0]&2,s.value]),c[0]){case 0:case 1:s=c;break;case 4:return r.label++,{value:c[1],done:!1};case 5:r.label++,i=c[1],c=[0];continue;case 7:c=r.ops.pop(),r.trys.pop();continue;default:if(s=r.trys,!(s=s.length>0&&s[s.length-1])&&(c[0]===6||c[0]===2)){r=0;continue}if(c[0]===3&&(!s||c[1]>s[0]&&c[1]s.length?s.length-o:S,O=Buffer.alloc(o===0?1+i.length*4+2+M:M),o===0?(O[0]=i.length,i.forEach(function(B,N){O.writeUInt32BE(B,1+4*N)}),O.writeUInt16BE(s.length,1+4*i.length),s.copy(O,1+4*i.length+2,o,o+M)):s.copy(O,0,o,o+M),[4,e.send(224,78,0,o===0?1:128,O)];case 1:return P.sent(),o+=M,[2]}})},x.label=1;case 1:return o===s.length?[3,3]:[5,u()];case 2:return x.sent(),[3,1];case 3:return[4,e.send(224,78,128,0,Buffer.from([0]))];case 4:return l=x.sent(),c=l[0]-48,p=l.slice(4,4+l[3]),p[0]===0&&(p=p.slice(1)),p=p.toString("hex"),o=4+l[3]+2,w=l.slice(o,o+l[o-1]),w[0]===0&&(w=w.slice(1)),w=w.toString("hex"),[2,{v:c,r:p,s:w}]}})})}var FP=function(e,t,r,n){function i(s){return s instanceof r?s:new r(function(o){o(s)})}return new(r||(r=Promise))(function(s,o){function u(p){try{c(n.next(p))}catch(w){o(w)}}function l(p){try{c(n.throw(p))}catch(w){o(w)}}function c(p){p.done?s(p.value):i(p.value).then(u,l)}c((n=n.apply(e,t||[])).next())})},KP=function(e,t){var r={label:0,sent:function(){if(s[0]&1)throw s[1];return s[1]},trys:[],ops:[]},n,i,s,o;return o={next:u(0),throw:u(1),return:u(2)},typeof Symbol=="function"&&(o[Symbol.iterator]=function(){return this}),o;function u(c){return function(p){return l([c,p])}}function l(c){if(n)throw new TypeError("Generator is already executing.");for(;r;)try{if(n=1,i&&(s=c[0]&2?i.return:c[0]?i.throw||((s=i.return)&&s.call(i),0):i.next)&&!(s=s.call(i,c[1])).done)return s;switch(i=0,s&&(c=[c[0]&2,s.value]),c[0]){case 0:case 1:s=c;break;case 4:return r.label++,{value:c[1],done:!1};case 5:r.label++,i=c[1],c=[0];continue;case 7:c=r.ops.pop(),r.trys.pop();continue;default:if(s=r.trys,!(s=s.length>0&&s[s.length-1])&&(c[0]===6||c[0]===2)){r=0;continue}if(c[0]===3&&(!s||c[1]>s[0]&&c[1]2||typeof r=="boolean"?(console.warn("btc.getWalletPublicKey deprecated signature used. Please switch to getWalletPublicKey(path, { format, verify })"),n={verify:!!r,format:arguments[2]?"p2sh":"legacy"}):n=r||{},this.changeImplIfNecessary().then(function(i){return i.getWalletPublicKey(t,n)})},e.prototype.signMessage=function(t,r){return b6(this._transport,{path:t,messageHex:r})},e.prototype.createPaymentTransaction=function(t){if(arguments.length>1)throw new Error("@ledgerhq/hw-app-btc: createPaymentTransaction multi argument signature is deprecated. please switch to named parameters.");return this.changeImplIfNecessary().then(function(r){return r.createPaymentTransaction(t)})},e.prototype.signP2SHTransaction=function(t){return d6(this._transport,t)},e.prototype.splitTransaction=function(t,r,n,i,s){return r===void 0&&(r=!1),n===void 0&&(n=!1),i===void 0&&(i=!1),s===void 0&&(s=[]),l6(t,r,n,i,s)},e.prototype.serializeTransactionOutputs=function(t){return N0(t)},e.prototype.getTrustedInput=function(t,r,n){return n===void 0&&(n=[]),js(this._transport,t,r,n)},e.prototype.getTrustedInputBIP143=function(t,r,n){return n===void 0&&(n=[]),Ys(this._transport,t,r,n)},e.prototype.changeImplIfNecessary=function(){return FP(this,void 0,void 0,function(){var t,r;return KP(this,function(n){switch(n.label){case 0:return[4,ju(this._transport)];case 1:return t=n.sent(),t.name==="Exchange"&&this._impl instanceof C0?[4,Jy(this._transport)]:[3,3];case 2:r=n.sent(),r&&(this._impl=new ad(this._transport)),n.label=3;case 3:return[2,this._impl]}})})},e}(),vd=GP;var I6=Qe(gd());var md=class extends I6.default{baseURL;eventStream;constructor(t){super(),this.baseURL=t}button=async t=>{let r={action:"press-and-release"};await fetch(`${this.baseURL}/button/${t}`,{method:"POST",body:JSON.stringify(r)})};async exchange(t){let r=t.toString("hex"),i=await(await fetch(`${this.baseURL}/apdu`,{method:"POST",body:JSON.stringify({data:r})})).json(),{data:s}=i;return Buffer.from(s,"hex")}async close(){return this.eventStream.close(),Promise.resolve()}},cn=md;bo(cn,"isSupported",()=>Promise.resolve(!0)),bo(cn,"list",()=>Promise.resolve([])),bo(cn,"listen",()=>({unsubscribe:()=>{}})),bo(cn,"open",async t=>{try{t=t||"http://127.0.0.1:5000";let r=new md(t),n=new EventSource(`${t}/events?stream=true`);return r.eventStream=n,r}catch(r){throw console.log(r),r}});var F6=Qe(H6());function Md(){async function e(){return await F6.default.create()}async function t(r){return await cn.open(r)}return{createUSBTransport:e,createSpeculosTransport:t}}var xB="84'/0'/0'/0/0",SB="usb",{createUSBTransport:IB,createSpeculosTransport:TB}=Md(),MB={usb:IB,speculos:TB},vc=class{type;path;baseURL;_btc;constructor(t){t.type||(t.type=SB),t.path||(t.path=xB),this.type=t.type,this.path=t.path,this.baseURL=t.baseURL;let r=this.type,n=MB[r];n||console.log("Unknown or unsupported type",this.type),this._btc=n(this.baseURL).then(i=>new vd({transport:i,currency:"bitcoin_testnet"}))}_retry(t,r){return new Promise(async(n,i)=>{let s="Please make sure Ledger is ready and retry";r&&r>0&&setTimeout(()=>i(new Error(s)),r);let o=await this._btc;for(let u=0;u<50;u++){try{let l=await t(o);return n(l)}catch(l){if(l.id!=="TransportLocked")return i(l)}await new Promise(l=>{setTimeout(l,100)})}return i(new Error(s))})}async getAddress(){let{bitcoinAddress:t}=await this._retry(r=>r.getWalletPublicKey(this.path,{verify:!1,format:"bech32"}));return t}async signMessage(t){try{let r=Buffer.from(t).toString("hex"),n=await this._retry(o=>o.signMessage(this.path,r)),i=n.v+27+4,s=Buffer.from(i.toString(16)+n.r+n.s,"hex").toString("base64");return console.log("Signature : "+s),s}catch(r){throw console.log(r),r}}async sendTransaction({from:t,to:r,value:n}){try{let i="f85f49b51366f7150d2adea6544bc256743707a38e2bdfbf839349ba1ff2875c",o=await this._retry(async u=>u.splitTransaction(i,!1));return new Promise(u=>u(""))}catch(i){throw console.log("Error in bitcoin-ledger-signer sendTransaction: ",i),i}}};0&&(module.exports={}); /*! safe-buffer. MIT License. Feross Aboukhadijeh */ //# sourceMappingURL=index.js.map diff --git a/common/bitcoin-ledger-signer/dist/index.js.map b/common/bitcoin-ledger-signer/dist/index.js.map index 3d5d42785..8819ad00e 100644 --- a/common/bitcoin-ledger-signer/dist/index.js.map +++ b/common/bitcoin-ledger-signer/dist/index.js.map @@ -1,7 +1,7 @@ { "version": 3, "sources": ["../../../node_modules/create-hash/index.js", "../../../node_modules/create-hmac/index.js", "../../../node_modules/bip32/src/crypto.js", "../../../node_modules/safe-buffer/index.js", "../../../node_modules/base-x/src/index.js", "../../../node_modules/bs58/index.js", "../../../node_modules/bs58check/base.js", "../../../node_modules/bs58check/index.js", "../../../node_modules/file-uri-to-path/index.js", "../../../node_modules/bindings/bindings.js", "../../../node_modules/tiny-secp256k1/native.js", "../../../node_modules/tiny-secp256k1/node_modules/bn.js/lib/bn.js", "../../../node_modules/elliptic/node_modules/bn.js/lib/bn.js", "../../../node_modules/minimalistic-assert/index.js", "../../../node_modules/minimalistic-crypto-utils/lib/utils.js", "../../../node_modules/elliptic/lib/elliptic/utils.js", "../../../node_modules/brorand/index.js", "../../../node_modules/elliptic/lib/elliptic/curve/base.js", "../../../node_modules/inherits/inherits_browser.js", "../../../node_modules/inherits/inherits.js", "../../../node_modules/elliptic/lib/elliptic/curve/short.js", "../../../node_modules/elliptic/lib/elliptic/curve/mont.js", "../../../node_modules/elliptic/lib/elliptic/curve/edwards.js", "../../../node_modules/elliptic/lib/elliptic/curve/index.js", "../../../node_modules/hash.js/lib/hash/utils.js", "../../../node_modules/hash.js/lib/hash/common.js", "../../../node_modules/hash.js/lib/hash/sha/common.js", "../../../node_modules/hash.js/lib/hash/sha/1.js", "../../../node_modules/hash.js/lib/hash/sha/256.js", "../../../node_modules/hash.js/lib/hash/sha/224.js", "../../../node_modules/hash.js/lib/hash/sha/512.js", "../../../node_modules/hash.js/lib/hash/sha/384.js", "../../../node_modules/hash.js/lib/hash/sha.js", "../../../node_modules/hash.js/lib/hash/ripemd.js", "../../../node_modules/hash.js/lib/hash/hmac.js", "../../../node_modules/hash.js/lib/hash.js", "../../../node_modules/elliptic/lib/elliptic/precomputed/secp256k1.js", "../../../node_modules/elliptic/lib/elliptic/curves.js", "../../../node_modules/hmac-drbg/lib/hmac-drbg.js", "../../../node_modules/elliptic/lib/elliptic/ec/key.js", "../../../node_modules/elliptic/lib/elliptic/ec/signature.js", "../../../node_modules/elliptic/lib/elliptic/ec/index.js", "../../../node_modules/elliptic/lib/elliptic/eddsa/key.js", "../../../node_modules/elliptic/lib/elliptic/eddsa/signature.js", "../../../node_modules/elliptic/lib/elliptic/eddsa/index.js", "../../../node_modules/elliptic/lib/elliptic.js", "../../../node_modules/tiny-secp256k1/rfc6979.js", "../../../node_modules/tiny-secp256k1/js.js", "../../../node_modules/tiny-secp256k1/index.js", "../../../node_modules/typeforce/native.js", "../../../node_modules/typeforce/errors.js", "../../../node_modules/typeforce/extra.js", "../../../node_modules/typeforce/index.js", "../../../node_modules/wif/index.js", "../../../node_modules/bip32/src/bip32.js", "../../../node_modules/bip32/src/index.js", "../../../node_modules/bitcoinjs-lib/src/networks.js", "../../../node_modules/bitcoinjs-lib/src/script_number.js", "../../../node_modules/bitcoinjs-lib/src/types.js", "../../../node_modules/bip66/index.js", "../../../node_modules/bitcoinjs-lib/src/script_signature.js", "../../../node_modules/pushdata-bitcoin/index.js", "../../../node_modules/bitcoin-ops/map.js", "../../../node_modules/bitcoinjs-lib/src/script.js", "../../../node_modules/bitcoinjs-lib/src/payments/lazy.js", "../../../node_modules/bitcoinjs-lib/src/payments/embed.js", "../../../node_modules/bitcoinjs-lib/src/payments/p2ms.js", "../../../node_modules/bitcoinjs-lib/src/payments/p2pk.js", "../../../node_modules/bitcoinjs-lib/src/crypto.js", "../../../node_modules/bitcoinjs-lib/src/payments/p2pkh.js", "../../../node_modules/bitcoinjs-lib/src/payments/p2sh.js", "../../../node_modules/bech32/index.js", "../../../node_modules/bitcoinjs-lib/src/payments/p2wpkh.js", "../../../node_modules/bitcoinjs-lib/src/payments/p2wsh.js", "../../../node_modules/bitcoinjs-lib/src/payments/index.js", "../../../node_modules/bitcoinjs-lib/src/address.js", "../../../node_modules/randombytes/index.js", "../../../node_modules/bitcoinjs-lib/src/ecpair.js", "../../../node_modules/varuint-bitcoin/index.js", "../../../node_modules/bitcoinjs-lib/src/bufferutils.js", "../../../node_modules/bitcoinjs-lib/src/transaction.js", "../../../node_modules/merkle-lib/fastRoot.js", "../../../node_modules/bitcoinjs-lib/src/block.js", "../../../node_modules/bip174/src/lib/typeFields.js", "../../../node_modules/bip174/src/lib/converter/global/globalXpub.js", "../../../node_modules/bip174/src/lib/converter/global/unsignedTx.js", "../../../node_modules/bip174/src/lib/converter/input/finalScriptSig.js", "../../../node_modules/bip174/src/lib/converter/input/finalScriptWitness.js", "../../../node_modules/bip174/src/lib/converter/input/nonWitnessUtxo.js", "../../../node_modules/bip174/src/lib/converter/input/partialSig.js", "../../../node_modules/bip174/src/lib/converter/input/porCommitment.js", "../../../node_modules/bip174/src/lib/converter/input/sighashType.js", "../../../node_modules/bip174/src/lib/converter/input/tapKeySig.js", "../../../node_modules/bip174/src/lib/converter/input/tapLeafScript.js", "../../../node_modules/bip174/src/lib/converter/input/tapMerkleRoot.js", "../../../node_modules/bip174/src/lib/converter/input/tapScriptSig.js", "../../../node_modules/bip174/src/lib/converter/varint.js", "../../../node_modules/bip174/src/lib/converter/tools.js", "../../../node_modules/bip174/src/lib/converter/input/witnessUtxo.js", "../../../node_modules/bip174/src/lib/converter/output/tapTree.js", "../../../node_modules/bip174/src/lib/converter/shared/bip32Derivation.js", "../../../node_modules/bip174/src/lib/converter/shared/checkPubkey.js", "../../../node_modules/bip174/src/lib/converter/shared/redeemScript.js", "../../../node_modules/bip174/src/lib/converter/shared/tapBip32Derivation.js", "../../../node_modules/bip174/src/lib/converter/shared/tapInternalKey.js", "../../../node_modules/bip174/src/lib/converter/shared/witnessScript.js", "../../../node_modules/bip174/src/lib/converter/index.js", "../../../node_modules/bip174/src/lib/parser/fromBuffer.js", "../../../node_modules/bip174/src/lib/parser/toBuffer.js", "../../../node_modules/bip174/src/lib/parser/index.js", "../../../node_modules/bip174/src/lib/combiner/index.js", "../../../node_modules/bip174/src/lib/utils.js", "../../../node_modules/bip174/src/lib/psbt.js", "../../../node_modules/bitcoinjs-lib/src/psbt.js", "../../../node_modules/bitcoinjs-lib/src/templates/multisig/input.js", "../../../node_modules/bitcoinjs-lib/src/templates/multisig/output.js", "../../../node_modules/bitcoinjs-lib/src/templates/multisig/index.js", "../../../node_modules/bitcoinjs-lib/src/templates/nulldata.js", "../../../node_modules/bitcoinjs-lib/src/templates/pubkey/input.js", "../../../node_modules/bitcoinjs-lib/src/templates/pubkey/output.js", "../../../node_modules/bitcoinjs-lib/src/templates/pubkey/index.js", "../../../node_modules/bitcoinjs-lib/src/templates/pubkeyhash/input.js", "../../../node_modules/bitcoinjs-lib/src/templates/pubkeyhash/output.js", "../../../node_modules/bitcoinjs-lib/src/templates/pubkeyhash/index.js", "../../../node_modules/bitcoinjs-lib/src/templates/witnesspubkeyhash/output.js", "../../../node_modules/bitcoinjs-lib/src/templates/witnessscripthash/output.js", "../../../node_modules/bitcoinjs-lib/src/templates/scripthash/input.js", "../../../node_modules/bitcoinjs-lib/src/templates/scripthash/output.js", "../../../node_modules/bitcoinjs-lib/src/templates/scripthash/index.js", "../../../node_modules/bitcoinjs-lib/src/templates/witnesscommitment/output.js", "../../../node_modules/bitcoinjs-lib/src/templates/witnesscommitment/index.js", "../../../node_modules/bitcoinjs-lib/src/templates/witnesspubkeyhash/input.js", "../../../node_modules/bitcoinjs-lib/src/templates/witnesspubkeyhash/index.js", "../../../node_modules/bitcoinjs-lib/src/templates/witnessscripthash/input.js", "../../../node_modules/bitcoinjs-lib/src/templates/witnessscripthash/index.js", "../../../node_modules/bitcoinjs-lib/src/classify.js", "../../../node_modules/bitcoinjs-lib/src/transaction_builder.js", "../../../node_modules/bitcoinjs-lib/src/index.js", "../../../node_modules/bip32-path/index.js", "../../../node_modules/readable-stream/lib/internal/streams/stream.js", "../../../node_modules/readable-stream/lib/internal/streams/buffer_list.js", "../../../node_modules/readable-stream/lib/internal/streams/destroy.js", "../../../node_modules/readable-stream/errors.js", "../../../node_modules/readable-stream/lib/internal/streams/state.js", "../../../node_modules/util-deprecate/node.js", "../../../node_modules/readable-stream/lib/_stream_writable.js", "../../../node_modules/readable-stream/lib/_stream_duplex.js", "../../../node_modules/string_decoder/lib/string_decoder.js", "../../../node_modules/readable-stream/lib/internal/streams/end-of-stream.js", "../../../node_modules/readable-stream/lib/internal/streams/async_iterator.js", "../../../node_modules/readable-stream/lib/internal/streams/from.js", "../../../node_modules/readable-stream/lib/_stream_readable.js", "../../../node_modules/readable-stream/lib/_stream_transform.js", "../../../node_modules/readable-stream/lib/_stream_passthrough.js", "../../../node_modules/readable-stream/lib/internal/streams/pipeline.js", "../../../node_modules/readable-stream/readable.js", "../../../node_modules/hash-base/index.js", "../../../node_modules/ripemd160/index.js", "../../../node_modules/sha.js/hash.js", "../../../node_modules/sha.js/sha.js", "../../../node_modules/sha.js/sha1.js", "../../../node_modules/sha.js/sha256.js", "../../../node_modules/sha.js/sha224.js", "../../../node_modules/sha.js/sha512.js", "../../../node_modules/sha.js/sha384.js", "../../../node_modules/sha.js/index.js", "../../../node_modules/@ledgerhq/logs/src/index.ts", "../../../node_modules/invariant/invariant.js", "../../../node_modules/semver/internal/constants.js", "../../../node_modules/semver/internal/debug.js", "../../../node_modules/semver/internal/re.js", "../../../node_modules/semver/internal/parse-options.js", "../../../node_modules/semver/internal/identifiers.js", "../../../node_modules/semver/classes/semver.js", "../../../node_modules/semver/functions/parse.js", "../../../node_modules/semver/functions/valid.js", "../../../node_modules/semver/functions/clean.js", "../../../node_modules/semver/functions/inc.js", "../../../node_modules/semver/functions/compare.js", "../../../node_modules/semver/functions/eq.js", "../../../node_modules/semver/functions/diff.js", "../../../node_modules/semver/functions/major.js", "../../../node_modules/semver/functions/minor.js", "../../../node_modules/semver/functions/patch.js", "../../../node_modules/semver/functions/prerelease.js", "../../../node_modules/semver/functions/rcompare.js", "../../../node_modules/semver/functions/compare-loose.js", "../../../node_modules/semver/functions/compare-build.js", "../../../node_modules/semver/functions/sort.js", "../../../node_modules/semver/functions/rsort.js", "../../../node_modules/semver/functions/gt.js", "../../../node_modules/semver/functions/lt.js", "../../../node_modules/semver/functions/neq.js", "../../../node_modules/semver/functions/gte.js", "../../../node_modules/semver/functions/lte.js", "../../../node_modules/semver/functions/cmp.js", "../../../node_modules/semver/functions/coerce.js", "../../../node_modules/semver/node_modules/yallist/iterator.js", "../../../node_modules/semver/node_modules/yallist/yallist.js", "../../../node_modules/semver/node_modules/lru-cache/index.js", "../../../node_modules/semver/classes/range.js", "../../../node_modules/semver/classes/comparator.js", "../../../node_modules/semver/functions/satisfies.js", "../../../node_modules/semver/ranges/to-comparators.js", "../../../node_modules/semver/ranges/max-satisfying.js", "../../../node_modules/semver/ranges/min-satisfying.js", "../../../node_modules/semver/ranges/min-version.js", "../../../node_modules/semver/ranges/valid.js", "../../../node_modules/semver/ranges/outside.js", "../../../node_modules/semver/ranges/gtr.js", "../../../node_modules/semver/ranges/ltr.js", "../../../node_modules/semver/ranges/intersects.js", "../../../node_modules/semver/ranges/simplify.js", "../../../node_modules/semver/ranges/subset.js", "../../../node_modules/semver/index.js", "../../../node_modules/@ledgerhq/errors/src/helpers.ts", "../../../node_modules/@ledgerhq/errors/src/index.ts", "../../../node_modules/@ledgerhq/hw-transport/src/Transport.ts", "../../../node_modules/@ledgerhq/devices/src/hid-framing.ts", "../../../node_modules/@ledgerhq/devices/src/index.ts", "../../../node_modules/@ledgerhq/hw-transport-webusb/src/webusb.ts", "../../../node_modules/@ledgerhq/hw-transport-webusb/src/TransportWebUSB.ts", "../src/index.ts", "../../../node_modules/@ledgerhq/hw-app-btc/src/BtcNew.ts", "../../../node_modules/@ledgerhq/hw-app-btc/src/bip32.ts", "../../../node_modules/@ledgerhq/hw-app-btc/src/buffertools.ts", "../../../node_modules/@ledgerhq/hw-app-btc/src/newops/accounttype.ts", "../../../node_modules/@ledgerhq/hw-app-btc/src/constants.ts", "../../../node_modules/@ledgerhq/hw-app-btc/src/hashPublicKey.ts", "../../../node_modules/@ledgerhq/hw-app-btc/src/newops/policy.ts", "../../../node_modules/@ledgerhq/hw-app-btc/src/newops/merkle.ts", "../../../node_modules/@ledgerhq/hw-app-btc/src/newops/psbtExtractor.ts", "../../../node_modules/@ledgerhq/hw-app-btc/src/newops/psbtv2.ts", "../../../node_modules/@ledgerhq/hw-app-btc/src/newops/psbtFinalizer.ts", "../../../node_modules/@ledgerhq/hw-app-btc/src/varint.ts", "../../../node_modules/@ledgerhq/hw-app-btc/src/serializeTransaction.ts", "../../../node_modules/@ledgerhq/hw-app-btc/src/BtcOld.ts", "../../../node_modules/@ledgerhq/hw-app-btc/src/createTransaction.ts", "../../../node_modules/@ledgerhq/hw-app-btc/src/getWalletPublicKey.ts", "../../../node_modules/@ledgerhq/hw-app-btc/src/getTrustedInput.ts", "../../../node_modules/@ledgerhq/hw-app-btc/src/startUntrustedHashTransactionInput.ts", "../../../node_modules/@ledgerhq/hw-app-btc/src/getTrustedInputBIP143.ts", "../../../node_modules/@ledgerhq/hw-app-btc/src/compressPublicKey.ts", "../../../node_modules/@ledgerhq/hw-app-btc/src/signTransaction.ts", "../../../node_modules/@ledgerhq/hw-app-btc/src/finalizeInput.ts", "../../../node_modules/@ledgerhq/hw-app-btc/src/getAppAndVersion.ts", "../../../node_modules/@ledgerhq/hw-app-btc/src/shouldUseTrustedInputForSegwit.ts", "../../../node_modules/@ledgerhq/hw-app-btc/src/newops/merkleMap.ts", "../../../node_modules/@ledgerhq/hw-app-btc/src/newops/merkelizedPsbt.ts", "../../../node_modules/@ledgerhq/hw-app-btc/src/newops/clientCommands.ts", "../../../node_modules/@ledgerhq/hw-app-btc/src/newops/appClient.ts", "../../../node_modules/@ledgerhq/hw-app-btc/src/splitTransaction.ts", "../../../node_modules/@ledgerhq/hw-app-btc/src/debug.ts", "../../../node_modules/@ledgerhq/hw-app-btc/src/signP2SHTransaction.ts", "../../../node_modules/@ledgerhq/hw-app-btc/src/signMessage.ts", "../../../node_modules/@ledgerhq/hw-app-btc/src/Btc.ts", "../../transport-speculos-http/src/index.ts", "../src/providers/transports.ts"], - "sourcesContent": ["module.exports = require('crypto').createHash\n", "module.exports = require('crypto').createHmac\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst createHash = require('create-hash');\nconst createHmac = require('create-hmac');\nfunction hash160(buffer) {\n const sha256Hash = createHash('sha256')\n .update(buffer)\n .digest();\n try {\n return createHash('rmd160')\n .update(sha256Hash)\n .digest();\n }\n catch (err) {\n return createHash('ripemd160')\n .update(sha256Hash)\n .digest();\n }\n}\nexports.hash160 = hash160;\nfunction hmacSHA512(key, data) {\n return createHmac('sha512', key)\n .update(data)\n .digest();\n}\nexports.hmacSHA512 = hmacSHA512;\n", "/*! safe-buffer. MIT License. Feross Aboukhadijeh */\n/* eslint-disable node/no-deprecated-api */\nvar buffer = require('buffer')\nvar Buffer = buffer.Buffer\n\n// alternative to using Object.keys for old browsers\nfunction copyProps (src, dst) {\n for (var key in src) {\n dst[key] = src[key]\n }\n}\nif (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {\n module.exports = buffer\n} else {\n // Copy properties from require('buffer')\n copyProps(buffer, exports)\n exports.Buffer = SafeBuffer\n}\n\nfunction SafeBuffer (arg, encodingOrOffset, length) {\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.prototype = Object.create(Buffer.prototype)\n\n// Copy static methods from Buffer\ncopyProps(Buffer, SafeBuffer)\n\nSafeBuffer.from = function (arg, encodingOrOffset, length) {\n if (typeof arg === 'number') {\n throw new TypeError('Argument must not be a number')\n }\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.alloc = function (size, fill, encoding) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n var buf = Buffer(size)\n if (fill !== undefined) {\n if (typeof encoding === 'string') {\n buf.fill(fill, encoding)\n } else {\n buf.fill(fill)\n }\n } else {\n buf.fill(0)\n }\n return buf\n}\n\nSafeBuffer.allocUnsafe = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return Buffer(size)\n}\n\nSafeBuffer.allocUnsafeSlow = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return buffer.SlowBuffer(size)\n}\n", "'use strict'\n// base-x encoding / decoding\n// Copyright (c) 2018 base-x contributors\n// Copyright (c) 2014-2018 The Bitcoin Core developers (base58.cpp)\n// Distributed under the MIT software license, see the accompanying\n// file LICENSE or http://www.opensource.org/licenses/mit-license.php.\n// @ts-ignore\nvar _Buffer = require('safe-buffer').Buffer\nfunction base (ALPHABET) {\n if (ALPHABET.length >= 255) { throw new TypeError('Alphabet too long') }\n var BASE_MAP = new Uint8Array(256)\n for (var j = 0; j < BASE_MAP.length; j++) {\n BASE_MAP[j] = 255\n }\n for (var i = 0; i < ALPHABET.length; i++) {\n var x = ALPHABET.charAt(i)\n var xc = x.charCodeAt(0)\n if (BASE_MAP[xc] !== 255) { throw new TypeError(x + ' is ambiguous') }\n BASE_MAP[xc] = i\n }\n var BASE = ALPHABET.length\n var LEADER = ALPHABET.charAt(0)\n var FACTOR = Math.log(BASE) / Math.log(256) // log(BASE) / log(256), rounded up\n var iFACTOR = Math.log(256) / Math.log(BASE) // log(256) / log(BASE), rounded up\n function encode (source) {\n if (Array.isArray(source) || source instanceof Uint8Array) { source = _Buffer.from(source) }\n if (!_Buffer.isBuffer(source)) { throw new TypeError('Expected Buffer') }\n if (source.length === 0) { return '' }\n // Skip & count leading zeroes.\n var zeroes = 0\n var length = 0\n var pbegin = 0\n var pend = source.length\n while (pbegin !== pend && source[pbegin] === 0) {\n pbegin++\n zeroes++\n }\n // Allocate enough space in big-endian base58 representation.\n var size = ((pend - pbegin) * iFACTOR + 1) >>> 0\n var b58 = new Uint8Array(size)\n // Process the bytes.\n while (pbegin !== pend) {\n var carry = source[pbegin]\n // Apply \"b58 = b58 * 256 + ch\".\n var i = 0\n for (var it1 = size - 1; (carry !== 0 || i < length) && (it1 !== -1); it1--, i++) {\n carry += (256 * b58[it1]) >>> 0\n b58[it1] = (carry % BASE) >>> 0\n carry = (carry / BASE) >>> 0\n }\n if (carry !== 0) { throw new Error('Non-zero carry') }\n length = i\n pbegin++\n }\n // Skip leading zeroes in base58 result.\n var it2 = size - length\n while (it2 !== size && b58[it2] === 0) {\n it2++\n }\n // Translate the result into a string.\n var str = LEADER.repeat(zeroes)\n for (; it2 < size; ++it2) { str += ALPHABET.charAt(b58[it2]) }\n return str\n }\n function decodeUnsafe (source) {\n if (typeof source !== 'string') { throw new TypeError('Expected String') }\n if (source.length === 0) { return _Buffer.alloc(0) }\n var psz = 0\n // Skip and count leading '1's.\n var zeroes = 0\n var length = 0\n while (source[psz] === LEADER) {\n zeroes++\n psz++\n }\n // Allocate enough space in big-endian base256 representation.\n var size = (((source.length - psz) * FACTOR) + 1) >>> 0 // log(58) / log(256), rounded up.\n var b256 = new Uint8Array(size)\n // Process the characters.\n while (source[psz]) {\n // Decode character\n var carry = BASE_MAP[source.charCodeAt(psz)]\n // Invalid character\n if (carry === 255) { return }\n var i = 0\n for (var it3 = size - 1; (carry !== 0 || i < length) && (it3 !== -1); it3--, i++) {\n carry += (BASE * b256[it3]) >>> 0\n b256[it3] = (carry % 256) >>> 0\n carry = (carry / 256) >>> 0\n }\n if (carry !== 0) { throw new Error('Non-zero carry') }\n length = i\n psz++\n }\n // Skip leading zeroes in b256.\n var it4 = size - length\n while (it4 !== size && b256[it4] === 0) {\n it4++\n }\n var vch = _Buffer.allocUnsafe(zeroes + (size - it4))\n vch.fill(0x00, 0, zeroes)\n var j = zeroes\n while (it4 !== size) {\n vch[j++] = b256[it4++]\n }\n return vch\n }\n function decode (string) {\n var buffer = decodeUnsafe(string)\n if (buffer) { return buffer }\n throw new Error('Non-base' + BASE + ' character')\n }\n return {\n encode: encode,\n decodeUnsafe: decodeUnsafe,\n decode: decode\n }\n}\nmodule.exports = base\n", "var basex = require('base-x')\nvar ALPHABET = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz'\n\nmodule.exports = basex(ALPHABET)\n", "'use strict'\n\nvar base58 = require('bs58')\nvar Buffer = require('safe-buffer').Buffer\n\nmodule.exports = function (checksumFn) {\n // Encode a buffer as a base58-check encoded string\n function encode (payload) {\n var checksum = checksumFn(payload)\n\n return base58.encode(Buffer.concat([\n payload,\n checksum\n ], payload.length + 4))\n }\n\n function decodeRaw (buffer) {\n var payload = buffer.slice(0, -4)\n var checksum = buffer.slice(-4)\n var newChecksum = checksumFn(payload)\n\n if (checksum[0] ^ newChecksum[0] |\n checksum[1] ^ newChecksum[1] |\n checksum[2] ^ newChecksum[2] |\n checksum[3] ^ newChecksum[3]) return\n\n return payload\n }\n\n // Decode a base58-check encoded string to a buffer, no result if checksum is wrong\n function decodeUnsafe (string) {\n var buffer = base58.decodeUnsafe(string)\n if (!buffer) return\n\n return decodeRaw(buffer)\n }\n\n function decode (string) {\n var buffer = base58.decode(string)\n var payload = decodeRaw(buffer, checksumFn)\n if (!payload) throw new Error('Invalid checksum')\n return payload\n }\n\n return {\n encode: encode,\n decode: decode,\n decodeUnsafe: decodeUnsafe\n }\n}\n", "'use strict'\n\nvar createHash = require('create-hash')\nvar bs58checkBase = require('./base')\n\n// SHA256(SHA256(buffer))\nfunction sha256x2 (buffer) {\n var tmp = createHash('sha256').update(buffer).digest()\n return createHash('sha256').update(tmp).digest()\n}\n\nmodule.exports = bs58checkBase(sha256x2)\n", "\n/**\n * Module dependencies.\n */\n\nvar sep = require('path').sep || '/';\n\n/**\n * Module exports.\n */\n\nmodule.exports = fileUriToPath;\n\n/**\n * File URI to Path function.\n *\n * @param {String} uri\n * @return {String} path\n * @api public\n */\n\nfunction fileUriToPath (uri) {\n if ('string' != typeof uri ||\n uri.length <= 7 ||\n 'file://' != uri.substring(0, 7)) {\n throw new TypeError('must pass in a file:// URI to convert to a file path');\n }\n\n var rest = decodeURI(uri.substring(7));\n var firstSlash = rest.indexOf('/');\n var host = rest.substring(0, firstSlash);\n var path = rest.substring(firstSlash + 1);\n\n // 2. Scheme Definition\n // As a special case, can be the string \"localhost\" or the empty\n // string; this is interpreted as \"the machine from which the URL is\n // being interpreted\".\n if ('localhost' == host) host = '';\n\n if (host) {\n host = sep + sep + host;\n }\n\n // 3.2 Drives, drive letters, mount points, file system root\n // Drive letters are mapped into the top of a file URI in various ways,\n // depending on the implementation; some applications substitute\n // vertical bar (\"|\") for the colon after the drive letter, yielding\n // \"file:///c|/tmp/test.txt\". In some cases, the colon is left\n // unchanged, as in \"file:///c:/tmp/test.txt\". In other cases, the\n // colon is simply omitted, as in \"file:///c/tmp/test.txt\".\n path = path.replace(/^(.+)\\|/, '$1:');\n\n // for Windows, we need to invert the path separators from what a URI uses\n if (sep == '\\\\') {\n path = path.replace(/\\//g, '\\\\');\n }\n\n if (/^.+\\:/.test(path)) {\n // has Windows drive at beginning of path\n } else {\n // unix path\u2026\n path = sep + path;\n }\n\n return host + path;\n}\n", "/**\n * Module dependencies.\n */\n\nvar fs = require('fs'),\n path = require('path'),\n fileURLToPath = require('file-uri-to-path'),\n join = path.join,\n dirname = path.dirname,\n exists =\n (fs.accessSync &&\n function(path) {\n try {\n fs.accessSync(path);\n } catch (e) {\n return false;\n }\n return true;\n }) ||\n fs.existsSync ||\n path.existsSync,\n defaults = {\n arrow: process.env.NODE_BINDINGS_ARROW || ' \u2192 ',\n compiled: process.env.NODE_BINDINGS_COMPILED_DIR || 'compiled',\n platform: process.platform,\n arch: process.arch,\n nodePreGyp:\n 'node-v' +\n process.versions.modules +\n '-' +\n process.platform +\n '-' +\n process.arch,\n version: process.versions.node,\n bindings: 'bindings.node',\n try: [\n // node-gyp's linked version in the \"build\" dir\n ['module_root', 'build', 'bindings'],\n // node-waf and gyp_addon (a.k.a node-gyp)\n ['module_root', 'build', 'Debug', 'bindings'],\n ['module_root', 'build', 'Release', 'bindings'],\n // Debug files, for development (legacy behavior, remove for node v0.9)\n ['module_root', 'out', 'Debug', 'bindings'],\n ['module_root', 'Debug', 'bindings'],\n // Release files, but manually compiled (legacy behavior, remove for node v0.9)\n ['module_root', 'out', 'Release', 'bindings'],\n ['module_root', 'Release', 'bindings'],\n // Legacy from node-waf, node <= 0.4.x\n ['module_root', 'build', 'default', 'bindings'],\n // Production \"Release\" buildtype binary (meh...)\n ['module_root', 'compiled', 'version', 'platform', 'arch', 'bindings'],\n // node-qbs builds\n ['module_root', 'addon-build', 'release', 'install-root', 'bindings'],\n ['module_root', 'addon-build', 'debug', 'install-root', 'bindings'],\n ['module_root', 'addon-build', 'default', 'install-root', 'bindings'],\n // node-pre-gyp path ./lib/binding/{node_abi}-{platform}-{arch}\n ['module_root', 'lib', 'binding', 'nodePreGyp', 'bindings']\n ]\n };\n\n/**\n * The main `bindings()` function loads the compiled bindings for a given module.\n * It uses V8's Error API to determine the parent filename that this function is\n * being invoked from, which is then used to find the root directory.\n */\n\nfunction bindings(opts) {\n // Argument surgery\n if (typeof opts == 'string') {\n opts = { bindings: opts };\n } else if (!opts) {\n opts = {};\n }\n\n // maps `defaults` onto `opts` object\n Object.keys(defaults).map(function(i) {\n if (!(i in opts)) opts[i] = defaults[i];\n });\n\n // Get the module root\n if (!opts.module_root) {\n opts.module_root = exports.getRoot(exports.getFileName());\n }\n\n // Ensure the given bindings name ends with .node\n if (path.extname(opts.bindings) != '.node') {\n opts.bindings += '.node';\n }\n\n // https://github.com/webpack/webpack/issues/4175#issuecomment-342931035\n var requireFunc =\n typeof __webpack_require__ === 'function'\n ? __non_webpack_require__\n : require;\n\n var tries = [],\n i = 0,\n l = opts.try.length,\n n,\n b,\n err;\n\n for (; i < l; i++) {\n n = join.apply(\n null,\n opts.try[i].map(function(p) {\n return opts[p] || p;\n })\n );\n tries.push(n);\n try {\n b = opts.path ? requireFunc.resolve(n) : requireFunc(n);\n if (!opts.path) {\n b.path = n;\n }\n return b;\n } catch (e) {\n if (e.code !== 'MODULE_NOT_FOUND' &&\n e.code !== 'QUALIFIED_PATH_RESOLUTION_FAILED' &&\n !/not find/i.test(e.message)) {\n throw e;\n }\n }\n }\n\n err = new Error(\n 'Could not locate the bindings file. Tried:\\n' +\n tries\n .map(function(a) {\n return opts.arrow + a;\n })\n .join('\\n')\n );\n err.tries = tries;\n throw err;\n}\nmodule.exports = exports = bindings;\n\n/**\n * Gets the filename of the JavaScript file that invokes this function.\n * Used to help find the root directory of a module.\n * Optionally accepts an filename argument to skip when searching for the invoking filename\n */\n\nexports.getFileName = function getFileName(calling_file) {\n var origPST = Error.prepareStackTrace,\n origSTL = Error.stackTraceLimit,\n dummy = {},\n fileName;\n\n Error.stackTraceLimit = 10;\n\n Error.prepareStackTrace = function(e, st) {\n for (var i = 0, l = st.length; i < l; i++) {\n fileName = st[i].getFileName();\n if (fileName !== __filename) {\n if (calling_file) {\n if (fileName !== calling_file) {\n return;\n }\n } else {\n return;\n }\n }\n }\n };\n\n // run the 'prepareStackTrace' function above\n Error.captureStackTrace(dummy);\n dummy.stack;\n\n // cleanup\n Error.prepareStackTrace = origPST;\n Error.stackTraceLimit = origSTL;\n\n // handle filename that starts with \"file://\"\n var fileSchema = 'file://';\n if (fileName.indexOf(fileSchema) === 0) {\n fileName = fileURLToPath(fileName);\n }\n\n return fileName;\n};\n\n/**\n * Gets the root directory of a module, given an arbitrary filename\n * somewhere in the module tree. The \"root directory\" is the directory\n * containing the `package.json` file.\n *\n * In: /home/nate/node-native-module/lib/index.js\n * Out: /home/nate/node-native-module\n */\n\nexports.getRoot = function getRoot(file) {\n var dir = dirname(file),\n prev;\n while (true) {\n if (dir === '.') {\n // Avoids an infinite loop in rare cases, like the REPL\n dir = process.cwd();\n }\n if (\n exists(join(dir, 'package.json')) ||\n exists(join(dir, 'node_modules'))\n ) {\n // Found the 'package.json' file or 'node_modules' dir; we're done\n return dir;\n }\n if (prev === dir) {\n // Got to the top\n throw new Error(\n 'Could not find module root given file: \"' +\n file +\n '\". Do you have a `package.json` file? '\n );\n }\n // Try the parent dir next\n prev = dir;\n dir = join(dir, '..');\n }\n};\n", "'use strict'\n\nlet binding = require('bindings')('secp256k1')\ndelete binding.path\n\n// NaN drops function names, add them for is* (via toJSON)\nfor (let key in binding) {\n if (key.indexOf('is') !== 0) continue\n\n binding[key].toJSON = function () { return key }\n}\n\nmodule.exports = binding\n", "(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits (ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n\n // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n Buffer = window.Buffer;\n } else {\n Buffer = require('buffer').Buffer;\n }\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n this.negative = 1;\n }\n\n if (start < number.length) {\n if (base === 16) {\n this._parseHex(number, start, endian);\n } else {\n this._parseBase(number, base, start);\n if (endian === 'le') {\n this._initArray(this.toArray(), base, endian);\n }\n }\n }\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [ number & 0x3ffffff ];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [ 0 ];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this.strip();\n };\n\n function parseHex4Bits (string, index) {\n var c = string.charCodeAt(index);\n // 'A' - 'F'\n if (c >= 65 && c <= 70) {\n return c - 55;\n // 'a' - 'f'\n } else if (c >= 97 && c <= 102) {\n return c - 87;\n // '0' - '9'\n } else {\n return (c - 48) & 0xf;\n }\n }\n\n function parseHexByte (string, lowerBound, index) {\n var r = parseHex4Bits(string, index);\n if (index - 1 >= lowerBound) {\n r |= parseHex4Bits(string, index - 1) << 4;\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start, endian) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n // 24-bits chunks\n var off = 0;\n var j = 0;\n\n var w;\n if (endian === 'be') {\n for (i = number.length - 1; i >= start; i -= 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n } else {\n var parseLength = number.length - start;\n for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n }\n\n this.strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n r += c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n r += c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n r += c;\n }\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [ 0 ];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n this.strip();\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype.strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n BN.prototype.inspect = function inspect () {\n return (this.red ? '';\n };\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16);\n };\n\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n assert(typeof Buffer !== 'undefined');\n return this.toArrayLike(Buffer, endian, length);\n };\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n this.strip();\n var littleEndian = endian === 'le';\n var res = new ArrayType(reqLength);\n\n var b, i;\n var q = this.clone();\n if (!littleEndian) {\n // Assume big-endian\n for (i = 0; i < reqLength - byteLength; i++) {\n res[i] = 0;\n }\n\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[reqLength - i - 1] = b;\n }\n } else {\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[i] = b;\n }\n\n for (; i < reqLength; i++) {\n res[i] = 0;\n }\n }\n\n return res;\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] & (1 << wbit)) >>> wbit;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this.strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this.strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this.strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this.strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this.strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this.strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n function jumboMulTo (self, num, out) {\n var fftm = new FFTM();\n return fftm.mulp(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out.strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this.strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) < num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this.strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this.strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this.strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q.strip();\n }\n a.strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || r2 === 1 && cmp === 0) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modn = function modn (num) {\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return acc;\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n return this.strip();\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this.strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is BN v4 instance\n r.strip();\n } else {\n // r is BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n return a.umod(this.m)._forceRed(this);\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);\n", "(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits (ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n\n // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n Buffer = window.Buffer;\n } else {\n Buffer = require('buffer').Buffer;\n }\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n this.negative = 1;\n }\n\n if (start < number.length) {\n if (base === 16) {\n this._parseHex(number, start, endian);\n } else {\n this._parseBase(number, base, start);\n if (endian === 'le') {\n this._initArray(this.toArray(), base, endian);\n }\n }\n }\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [ number & 0x3ffffff ];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [ 0 ];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this.strip();\n };\n\n function parseHex4Bits (string, index) {\n var c = string.charCodeAt(index);\n // 'A' - 'F'\n if (c >= 65 && c <= 70) {\n return c - 55;\n // 'a' - 'f'\n } else if (c >= 97 && c <= 102) {\n return c - 87;\n // '0' - '9'\n } else {\n return (c - 48) & 0xf;\n }\n }\n\n function parseHexByte (string, lowerBound, index) {\n var r = parseHex4Bits(string, index);\n if (index - 1 >= lowerBound) {\n r |= parseHex4Bits(string, index - 1) << 4;\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start, endian) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n // 24-bits chunks\n var off = 0;\n var j = 0;\n\n var w;\n if (endian === 'be') {\n for (i = number.length - 1; i >= start; i -= 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n } else {\n var parseLength = number.length - start;\n for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n }\n\n this.strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n r += c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n r += c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n r += c;\n }\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [ 0 ];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n this.strip();\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype.strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n BN.prototype.inspect = function inspect () {\n return (this.red ? '';\n };\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16);\n };\n\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n assert(typeof Buffer !== 'undefined');\n return this.toArrayLike(Buffer, endian, length);\n };\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n this.strip();\n var littleEndian = endian === 'le';\n var res = new ArrayType(reqLength);\n\n var b, i;\n var q = this.clone();\n if (!littleEndian) {\n // Assume big-endian\n for (i = 0; i < reqLength - byteLength; i++) {\n res[i] = 0;\n }\n\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[reqLength - i - 1] = b;\n }\n } else {\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[i] = b;\n }\n\n for (; i < reqLength; i++) {\n res[i] = 0;\n }\n }\n\n return res;\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] & (1 << wbit)) >>> wbit;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this.strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this.strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this.strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this.strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this.strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this.strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n function jumboMulTo (self, num, out) {\n var fftm = new FFTM();\n return fftm.mulp(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out.strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this.strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) < num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this.strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this.strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this.strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q.strip();\n }\n a.strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || r2 === 1 && cmp === 0) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modn = function modn (num) {\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return acc;\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n return this.strip();\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this.strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is BN v4 instance\n r.strip();\n } else {\n // r is BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n return a.umod(this.m)._forceRed(this);\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);\n", "module.exports = assert;\n\nfunction assert(val, msg) {\n if (!val)\n throw new Error(msg || 'Assertion failed');\n}\n\nassert.equal = function assertEqual(l, r, msg) {\n if (l != r)\n throw new Error(msg || ('Assertion failed: ' + l + ' != ' + r));\n};\n", "'use strict';\n\nvar utils = exports;\n\nfunction toArray(msg, enc) {\n if (Array.isArray(msg))\n return msg.slice();\n if (!msg)\n return [];\n var res = [];\n if (typeof msg !== 'string') {\n for (var i = 0; i < msg.length; i++)\n res[i] = msg[i] | 0;\n return res;\n }\n if (enc === 'hex') {\n msg = msg.replace(/[^a-z0-9]+/ig, '');\n if (msg.length % 2 !== 0)\n msg = '0' + msg;\n for (var i = 0; i < msg.length; i += 2)\n res.push(parseInt(msg[i] + msg[i + 1], 16));\n } else {\n for (var i = 0; i < msg.length; i++) {\n var c = msg.charCodeAt(i);\n var hi = c >> 8;\n var lo = c & 0xff;\n if (hi)\n res.push(hi, lo);\n else\n res.push(lo);\n }\n }\n return res;\n}\nutils.toArray = toArray;\n\nfunction zero2(word) {\n if (word.length === 1)\n return '0' + word;\n else\n return word;\n}\nutils.zero2 = zero2;\n\nfunction toHex(msg) {\n var res = '';\n for (var i = 0; i < msg.length; i++)\n res += zero2(msg[i].toString(16));\n return res;\n}\nutils.toHex = toHex;\n\nutils.encode = function encode(arr, enc) {\n if (enc === 'hex')\n return toHex(arr);\n else\n return arr;\n};\n", "'use strict';\n\nvar utils = exports;\nvar BN = require('bn.js');\nvar minAssert = require('minimalistic-assert');\nvar minUtils = require('minimalistic-crypto-utils');\n\nutils.assert = minAssert;\nutils.toArray = minUtils.toArray;\nutils.zero2 = minUtils.zero2;\nutils.toHex = minUtils.toHex;\nutils.encode = minUtils.encode;\n\n// Represent num in a w-NAF form\nfunction getNAF(num, w, bits) {\n var naf = new Array(Math.max(num.bitLength(), bits) + 1);\n naf.fill(0);\n\n var ws = 1 << (w + 1);\n var k = num.clone();\n\n for (var i = 0; i < naf.length; i++) {\n var z;\n var mod = k.andln(ws - 1);\n if (k.isOdd()) {\n if (mod > (ws >> 1) - 1)\n z = (ws >> 1) - mod;\n else\n z = mod;\n k.isubn(z);\n } else {\n z = 0;\n }\n\n naf[i] = z;\n k.iushrn(1);\n }\n\n return naf;\n}\nutils.getNAF = getNAF;\n\n// Represent k1, k2 in a Joint Sparse Form\nfunction getJSF(k1, k2) {\n var jsf = [\n [],\n [],\n ];\n\n k1 = k1.clone();\n k2 = k2.clone();\n var d1 = 0;\n var d2 = 0;\n var m8;\n while (k1.cmpn(-d1) > 0 || k2.cmpn(-d2) > 0) {\n // First phase\n var m14 = (k1.andln(3) + d1) & 3;\n var m24 = (k2.andln(3) + d2) & 3;\n if (m14 === 3)\n m14 = -1;\n if (m24 === 3)\n m24 = -1;\n var u1;\n if ((m14 & 1) === 0) {\n u1 = 0;\n } else {\n m8 = (k1.andln(7) + d1) & 7;\n if ((m8 === 3 || m8 === 5) && m24 === 2)\n u1 = -m14;\n else\n u1 = m14;\n }\n jsf[0].push(u1);\n\n var u2;\n if ((m24 & 1) === 0) {\n u2 = 0;\n } else {\n m8 = (k2.andln(7) + d2) & 7;\n if ((m8 === 3 || m8 === 5) && m14 === 2)\n u2 = -m24;\n else\n u2 = m24;\n }\n jsf[1].push(u2);\n\n // Second phase\n if (2 * d1 === u1 + 1)\n d1 = 1 - d1;\n if (2 * d2 === u2 + 1)\n d2 = 1 - d2;\n k1.iushrn(1);\n k2.iushrn(1);\n }\n\n return jsf;\n}\nutils.getJSF = getJSF;\n\nfunction cachedProperty(obj, name, computer) {\n var key = '_' + name;\n obj.prototype[name] = function cachedProperty() {\n return this[key] !== undefined ? this[key] :\n this[key] = computer.call(this);\n };\n}\nutils.cachedProperty = cachedProperty;\n\nfunction parseBytes(bytes) {\n return typeof bytes === 'string' ? utils.toArray(bytes, 'hex') :\n bytes;\n}\nutils.parseBytes = parseBytes;\n\nfunction intFromLE(bytes) {\n return new BN(bytes, 'hex', 'le');\n}\nutils.intFromLE = intFromLE;\n\n", "var r;\n\nmodule.exports = function rand(len) {\n if (!r)\n r = new Rand(null);\n\n return r.generate(len);\n};\n\nfunction Rand(rand) {\n this.rand = rand;\n}\nmodule.exports.Rand = Rand;\n\nRand.prototype.generate = function generate(len) {\n return this._rand(len);\n};\n\n// Emulate crypto API using randy\nRand.prototype._rand = function _rand(n) {\n if (this.rand.getBytes)\n return this.rand.getBytes(n);\n\n var res = new Uint8Array(n);\n for (var i = 0; i < res.length; i++)\n res[i] = this.rand.getByte();\n return res;\n};\n\nif (typeof self === 'object') {\n if (self.crypto && self.crypto.getRandomValues) {\n // Modern browsers\n Rand.prototype._rand = function _rand(n) {\n var arr = new Uint8Array(n);\n self.crypto.getRandomValues(arr);\n return arr;\n };\n } else if (self.msCrypto && self.msCrypto.getRandomValues) {\n // IE\n Rand.prototype._rand = function _rand(n) {\n var arr = new Uint8Array(n);\n self.msCrypto.getRandomValues(arr);\n return arr;\n };\n\n // Safari's WebWorkers do not have `crypto`\n } else if (typeof window === 'object') {\n // Old junk\n Rand.prototype._rand = function() {\n throw new Error('Not implemented yet');\n };\n }\n} else {\n // Node.js or Web worker with no crypto support\n try {\n var crypto = require('crypto');\n if (typeof crypto.randomBytes !== 'function')\n throw new Error('Not supported');\n\n Rand.prototype._rand = function _rand(n) {\n return crypto.randomBytes(n);\n };\n } catch (e) {\n }\n}\n", "'use strict';\n\nvar BN = require('bn.js');\nvar utils = require('../utils');\nvar getNAF = utils.getNAF;\nvar getJSF = utils.getJSF;\nvar assert = utils.assert;\n\nfunction BaseCurve(type, conf) {\n this.type = type;\n this.p = new BN(conf.p, 16);\n\n // Use Montgomery, when there is no fast reduction for the prime\n this.red = conf.prime ? BN.red(conf.prime) : BN.mont(this.p);\n\n // Useful for many curves\n this.zero = new BN(0).toRed(this.red);\n this.one = new BN(1).toRed(this.red);\n this.two = new BN(2).toRed(this.red);\n\n // Curve configuration, optional\n this.n = conf.n && new BN(conf.n, 16);\n this.g = conf.g && this.pointFromJSON(conf.g, conf.gRed);\n\n // Temporary arrays\n this._wnafT1 = new Array(4);\n this._wnafT2 = new Array(4);\n this._wnafT3 = new Array(4);\n this._wnafT4 = new Array(4);\n\n this._bitLength = this.n ? this.n.bitLength() : 0;\n\n // Generalized Greg Maxwell's trick\n var adjustCount = this.n && this.p.div(this.n);\n if (!adjustCount || adjustCount.cmpn(100) > 0) {\n this.redN = null;\n } else {\n this._maxwellTrick = true;\n this.redN = this.n.toRed(this.red);\n }\n}\nmodule.exports = BaseCurve;\n\nBaseCurve.prototype.point = function point() {\n throw new Error('Not implemented');\n};\n\nBaseCurve.prototype.validate = function validate() {\n throw new Error('Not implemented');\n};\n\nBaseCurve.prototype._fixedNafMul = function _fixedNafMul(p, k) {\n assert(p.precomputed);\n var doubles = p._getDoubles();\n\n var naf = getNAF(k, 1, this._bitLength);\n var I = (1 << (doubles.step + 1)) - (doubles.step % 2 === 0 ? 2 : 1);\n I /= 3;\n\n // Translate into more windowed form\n var repr = [];\n var j;\n var nafW;\n for (j = 0; j < naf.length; j += doubles.step) {\n nafW = 0;\n for (var l = j + doubles.step - 1; l >= j; l--)\n nafW = (nafW << 1) + naf[l];\n repr.push(nafW);\n }\n\n var a = this.jpoint(null, null, null);\n var b = this.jpoint(null, null, null);\n for (var i = I; i > 0; i--) {\n for (j = 0; j < repr.length; j++) {\n nafW = repr[j];\n if (nafW === i)\n b = b.mixedAdd(doubles.points[j]);\n else if (nafW === -i)\n b = b.mixedAdd(doubles.points[j].neg());\n }\n a = a.add(b);\n }\n return a.toP();\n};\n\nBaseCurve.prototype._wnafMul = function _wnafMul(p, k) {\n var w = 4;\n\n // Precompute window\n var nafPoints = p._getNAFPoints(w);\n w = nafPoints.wnd;\n var wnd = nafPoints.points;\n\n // Get NAF form\n var naf = getNAF(k, w, this._bitLength);\n\n // Add `this`*(N+1) for every w-NAF index\n var acc = this.jpoint(null, null, null);\n for (var i = naf.length - 1; i >= 0; i--) {\n // Count zeroes\n for (var l = 0; i >= 0 && naf[i] === 0; i--)\n l++;\n if (i >= 0)\n l++;\n acc = acc.dblp(l);\n\n if (i < 0)\n break;\n var z = naf[i];\n assert(z !== 0);\n if (p.type === 'affine') {\n // J +- P\n if (z > 0)\n acc = acc.mixedAdd(wnd[(z - 1) >> 1]);\n else\n acc = acc.mixedAdd(wnd[(-z - 1) >> 1].neg());\n } else {\n // J +- J\n if (z > 0)\n acc = acc.add(wnd[(z - 1) >> 1]);\n else\n acc = acc.add(wnd[(-z - 1) >> 1].neg());\n }\n }\n return p.type === 'affine' ? acc.toP() : acc;\n};\n\nBaseCurve.prototype._wnafMulAdd = function _wnafMulAdd(defW,\n points,\n coeffs,\n len,\n jacobianResult) {\n var wndWidth = this._wnafT1;\n var wnd = this._wnafT2;\n var naf = this._wnafT3;\n\n // Fill all arrays\n var max = 0;\n var i;\n var j;\n var p;\n for (i = 0; i < len; i++) {\n p = points[i];\n var nafPoints = p._getNAFPoints(defW);\n wndWidth[i] = nafPoints.wnd;\n wnd[i] = nafPoints.points;\n }\n\n // Comb small window NAFs\n for (i = len - 1; i >= 1; i -= 2) {\n var a = i - 1;\n var b = i;\n if (wndWidth[a] !== 1 || wndWidth[b] !== 1) {\n naf[a] = getNAF(coeffs[a], wndWidth[a], this._bitLength);\n naf[b] = getNAF(coeffs[b], wndWidth[b], this._bitLength);\n max = Math.max(naf[a].length, max);\n max = Math.max(naf[b].length, max);\n continue;\n }\n\n var comb = [\n points[a], /* 1 */\n null, /* 3 */\n null, /* 5 */\n points[b], /* 7 */\n ];\n\n // Try to avoid Projective points, if possible\n if (points[a].y.cmp(points[b].y) === 0) {\n comb[1] = points[a].add(points[b]);\n comb[2] = points[a].toJ().mixedAdd(points[b].neg());\n } else if (points[a].y.cmp(points[b].y.redNeg()) === 0) {\n comb[1] = points[a].toJ().mixedAdd(points[b]);\n comb[2] = points[a].add(points[b].neg());\n } else {\n comb[1] = points[a].toJ().mixedAdd(points[b]);\n comb[2] = points[a].toJ().mixedAdd(points[b].neg());\n }\n\n var index = [\n -3, /* -1 -1 */\n -1, /* -1 0 */\n -5, /* -1 1 */\n -7, /* 0 -1 */\n 0, /* 0 0 */\n 7, /* 0 1 */\n 5, /* 1 -1 */\n 1, /* 1 0 */\n 3, /* 1 1 */\n ];\n\n var jsf = getJSF(coeffs[a], coeffs[b]);\n max = Math.max(jsf[0].length, max);\n naf[a] = new Array(max);\n naf[b] = new Array(max);\n for (j = 0; j < max; j++) {\n var ja = jsf[0][j] | 0;\n var jb = jsf[1][j] | 0;\n\n naf[a][j] = index[(ja + 1) * 3 + (jb + 1)];\n naf[b][j] = 0;\n wnd[a] = comb;\n }\n }\n\n var acc = this.jpoint(null, null, null);\n var tmp = this._wnafT4;\n for (i = max; i >= 0; i--) {\n var k = 0;\n\n while (i >= 0) {\n var zero = true;\n for (j = 0; j < len; j++) {\n tmp[j] = naf[j][i] | 0;\n if (tmp[j] !== 0)\n zero = false;\n }\n if (!zero)\n break;\n k++;\n i--;\n }\n if (i >= 0)\n k++;\n acc = acc.dblp(k);\n if (i < 0)\n break;\n\n for (j = 0; j < len; j++) {\n var z = tmp[j];\n p;\n if (z === 0)\n continue;\n else if (z > 0)\n p = wnd[j][(z - 1) >> 1];\n else if (z < 0)\n p = wnd[j][(-z - 1) >> 1].neg();\n\n if (p.type === 'affine')\n acc = acc.mixedAdd(p);\n else\n acc = acc.add(p);\n }\n }\n // Zeroify references\n for (i = 0; i < len; i++)\n wnd[i] = null;\n\n if (jacobianResult)\n return acc;\n else\n return acc.toP();\n};\n\nfunction BasePoint(curve, type) {\n this.curve = curve;\n this.type = type;\n this.precomputed = null;\n}\nBaseCurve.BasePoint = BasePoint;\n\nBasePoint.prototype.eq = function eq(/*other*/) {\n throw new Error('Not implemented');\n};\n\nBasePoint.prototype.validate = function validate() {\n return this.curve.validate(this);\n};\n\nBaseCurve.prototype.decodePoint = function decodePoint(bytes, enc) {\n bytes = utils.toArray(bytes, enc);\n\n var len = this.p.byteLength();\n\n // uncompressed, hybrid-odd, hybrid-even\n if ((bytes[0] === 0x04 || bytes[0] === 0x06 || bytes[0] === 0x07) &&\n bytes.length - 1 === 2 * len) {\n if (bytes[0] === 0x06)\n assert(bytes[bytes.length - 1] % 2 === 0);\n else if (bytes[0] === 0x07)\n assert(bytes[bytes.length - 1] % 2 === 1);\n\n var res = this.point(bytes.slice(1, 1 + len),\n bytes.slice(1 + len, 1 + 2 * len));\n\n return res;\n } else if ((bytes[0] === 0x02 || bytes[0] === 0x03) &&\n bytes.length - 1 === len) {\n return this.pointFromX(bytes.slice(1, 1 + len), bytes[0] === 0x03);\n }\n throw new Error('Unknown point format');\n};\n\nBasePoint.prototype.encodeCompressed = function encodeCompressed(enc) {\n return this.encode(enc, true);\n};\n\nBasePoint.prototype._encode = function _encode(compact) {\n var len = this.curve.p.byteLength();\n var x = this.getX().toArray('be', len);\n\n if (compact)\n return [ this.getY().isEven() ? 0x02 : 0x03 ].concat(x);\n\n return [ 0x04 ].concat(x, this.getY().toArray('be', len));\n};\n\nBasePoint.prototype.encode = function encode(enc, compact) {\n return utils.encode(this._encode(compact), enc);\n};\n\nBasePoint.prototype.precompute = function precompute(power) {\n if (this.precomputed)\n return this;\n\n var precomputed = {\n doubles: null,\n naf: null,\n beta: null,\n };\n precomputed.naf = this._getNAFPoints(8);\n precomputed.doubles = this._getDoubles(4, power);\n precomputed.beta = this._getBeta();\n this.precomputed = precomputed;\n\n return this;\n};\n\nBasePoint.prototype._hasDoubles = function _hasDoubles(k) {\n if (!this.precomputed)\n return false;\n\n var doubles = this.precomputed.doubles;\n if (!doubles)\n return false;\n\n return doubles.points.length >= Math.ceil((k.bitLength() + 1) / doubles.step);\n};\n\nBasePoint.prototype._getDoubles = function _getDoubles(step, power) {\n if (this.precomputed && this.precomputed.doubles)\n return this.precomputed.doubles;\n\n var doubles = [ this ];\n var acc = this;\n for (var i = 0; i < power; i += step) {\n for (var j = 0; j < step; j++)\n acc = acc.dbl();\n doubles.push(acc);\n }\n return {\n step: step,\n points: doubles,\n };\n};\n\nBasePoint.prototype._getNAFPoints = function _getNAFPoints(wnd) {\n if (this.precomputed && this.precomputed.naf)\n return this.precomputed.naf;\n\n var res = [ this ];\n var max = (1 << wnd) - 1;\n var dbl = max === 1 ? null : this.dbl();\n for (var i = 1; i < max; i++)\n res[i] = res[i - 1].add(dbl);\n return {\n wnd: wnd,\n points: res,\n };\n};\n\nBasePoint.prototype._getBeta = function _getBeta() {\n return null;\n};\n\nBasePoint.prototype.dblp = function dblp(k) {\n var r = this;\n for (var i = 0; i < k; i++)\n r = r.dbl();\n return r;\n};\n", "if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n })\n }\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n }\n}\n", "try {\n var util = require('util');\n /* istanbul ignore next */\n if (typeof util.inherits !== 'function') throw '';\n module.exports = util.inherits;\n} catch (e) {\n /* istanbul ignore next */\n module.exports = require('./inherits_browser.js');\n}\n", "'use strict';\n\nvar utils = require('../utils');\nvar BN = require('bn.js');\nvar inherits = require('inherits');\nvar Base = require('./base');\n\nvar assert = utils.assert;\n\nfunction ShortCurve(conf) {\n Base.call(this, 'short', conf);\n\n this.a = new BN(conf.a, 16).toRed(this.red);\n this.b = new BN(conf.b, 16).toRed(this.red);\n this.tinv = this.two.redInvm();\n\n this.zeroA = this.a.fromRed().cmpn(0) === 0;\n this.threeA = this.a.fromRed().sub(this.p).cmpn(-3) === 0;\n\n // If the curve is endomorphic, precalculate beta and lambda\n this.endo = this._getEndomorphism(conf);\n this._endoWnafT1 = new Array(4);\n this._endoWnafT2 = new Array(4);\n}\ninherits(ShortCurve, Base);\nmodule.exports = ShortCurve;\n\nShortCurve.prototype._getEndomorphism = function _getEndomorphism(conf) {\n // No efficient endomorphism\n if (!this.zeroA || !this.g || !this.n || this.p.modn(3) !== 1)\n return;\n\n // Compute beta and lambda, that lambda * P = (beta * Px; Py)\n var beta;\n var lambda;\n if (conf.beta) {\n beta = new BN(conf.beta, 16).toRed(this.red);\n } else {\n var betas = this._getEndoRoots(this.p);\n // Choose the smallest beta\n beta = betas[0].cmp(betas[1]) < 0 ? betas[0] : betas[1];\n beta = beta.toRed(this.red);\n }\n if (conf.lambda) {\n lambda = new BN(conf.lambda, 16);\n } else {\n // Choose the lambda that is matching selected beta\n var lambdas = this._getEndoRoots(this.n);\n if (this.g.mul(lambdas[0]).x.cmp(this.g.x.redMul(beta)) === 0) {\n lambda = lambdas[0];\n } else {\n lambda = lambdas[1];\n assert(this.g.mul(lambda).x.cmp(this.g.x.redMul(beta)) === 0);\n }\n }\n\n // Get basis vectors, used for balanced length-two representation\n var basis;\n if (conf.basis) {\n basis = conf.basis.map(function(vec) {\n return {\n a: new BN(vec.a, 16),\n b: new BN(vec.b, 16),\n };\n });\n } else {\n basis = this._getEndoBasis(lambda);\n }\n\n return {\n beta: beta,\n lambda: lambda,\n basis: basis,\n };\n};\n\nShortCurve.prototype._getEndoRoots = function _getEndoRoots(num) {\n // Find roots of for x^2 + x + 1 in F\n // Root = (-1 +- Sqrt(-3)) / 2\n //\n var red = num === this.p ? this.red : BN.mont(num);\n var tinv = new BN(2).toRed(red).redInvm();\n var ntinv = tinv.redNeg();\n\n var s = new BN(3).toRed(red).redNeg().redSqrt().redMul(tinv);\n\n var l1 = ntinv.redAdd(s).fromRed();\n var l2 = ntinv.redSub(s).fromRed();\n return [ l1, l2 ];\n};\n\nShortCurve.prototype._getEndoBasis = function _getEndoBasis(lambda) {\n // aprxSqrt >= sqrt(this.n)\n var aprxSqrt = this.n.ushrn(Math.floor(this.n.bitLength() / 2));\n\n // 3.74\n // Run EGCD, until r(L + 1) < aprxSqrt\n var u = lambda;\n var v = this.n.clone();\n var x1 = new BN(1);\n var y1 = new BN(0);\n var x2 = new BN(0);\n var y2 = new BN(1);\n\n // NOTE: all vectors are roots of: a + b * lambda = 0 (mod n)\n var a0;\n var b0;\n // First vector\n var a1;\n var b1;\n // Second vector\n var a2;\n var b2;\n\n var prevR;\n var i = 0;\n var r;\n var x;\n while (u.cmpn(0) !== 0) {\n var q = v.div(u);\n r = v.sub(q.mul(u));\n x = x2.sub(q.mul(x1));\n var y = y2.sub(q.mul(y1));\n\n if (!a1 && r.cmp(aprxSqrt) < 0) {\n a0 = prevR.neg();\n b0 = x1;\n a1 = r.neg();\n b1 = x;\n } else if (a1 && ++i === 2) {\n break;\n }\n prevR = r;\n\n v = u;\n u = r;\n x2 = x1;\n x1 = x;\n y2 = y1;\n y1 = y;\n }\n a2 = r.neg();\n b2 = x;\n\n var len1 = a1.sqr().add(b1.sqr());\n var len2 = a2.sqr().add(b2.sqr());\n if (len2.cmp(len1) >= 0) {\n a2 = a0;\n b2 = b0;\n }\n\n // Normalize signs\n if (a1.negative) {\n a1 = a1.neg();\n b1 = b1.neg();\n }\n if (a2.negative) {\n a2 = a2.neg();\n b2 = b2.neg();\n }\n\n return [\n { a: a1, b: b1 },\n { a: a2, b: b2 },\n ];\n};\n\nShortCurve.prototype._endoSplit = function _endoSplit(k) {\n var basis = this.endo.basis;\n var v1 = basis[0];\n var v2 = basis[1];\n\n var c1 = v2.b.mul(k).divRound(this.n);\n var c2 = v1.b.neg().mul(k).divRound(this.n);\n\n var p1 = c1.mul(v1.a);\n var p2 = c2.mul(v2.a);\n var q1 = c1.mul(v1.b);\n var q2 = c2.mul(v2.b);\n\n // Calculate answer\n var k1 = k.sub(p1).sub(p2);\n var k2 = q1.add(q2).neg();\n return { k1: k1, k2: k2 };\n};\n\nShortCurve.prototype.pointFromX = function pointFromX(x, odd) {\n x = new BN(x, 16);\n if (!x.red)\n x = x.toRed(this.red);\n\n var y2 = x.redSqr().redMul(x).redIAdd(x.redMul(this.a)).redIAdd(this.b);\n var y = y2.redSqrt();\n if (y.redSqr().redSub(y2).cmp(this.zero) !== 0)\n throw new Error('invalid point');\n\n // XXX Is there any way to tell if the number is odd without converting it\n // to non-red form?\n var isOdd = y.fromRed().isOdd();\n if (odd && !isOdd || !odd && isOdd)\n y = y.redNeg();\n\n return this.point(x, y);\n};\n\nShortCurve.prototype.validate = function validate(point) {\n if (point.inf)\n return true;\n\n var x = point.x;\n var y = point.y;\n\n var ax = this.a.redMul(x);\n var rhs = x.redSqr().redMul(x).redIAdd(ax).redIAdd(this.b);\n return y.redSqr().redISub(rhs).cmpn(0) === 0;\n};\n\nShortCurve.prototype._endoWnafMulAdd =\n function _endoWnafMulAdd(points, coeffs, jacobianResult) {\n var npoints = this._endoWnafT1;\n var ncoeffs = this._endoWnafT2;\n for (var i = 0; i < points.length; i++) {\n var split = this._endoSplit(coeffs[i]);\n var p = points[i];\n var beta = p._getBeta();\n\n if (split.k1.negative) {\n split.k1.ineg();\n p = p.neg(true);\n }\n if (split.k2.negative) {\n split.k2.ineg();\n beta = beta.neg(true);\n }\n\n npoints[i * 2] = p;\n npoints[i * 2 + 1] = beta;\n ncoeffs[i * 2] = split.k1;\n ncoeffs[i * 2 + 1] = split.k2;\n }\n var res = this._wnafMulAdd(1, npoints, ncoeffs, i * 2, jacobianResult);\n\n // Clean-up references to points and coefficients\n for (var j = 0; j < i * 2; j++) {\n npoints[j] = null;\n ncoeffs[j] = null;\n }\n return res;\n };\n\nfunction Point(curve, x, y, isRed) {\n Base.BasePoint.call(this, curve, 'affine');\n if (x === null && y === null) {\n this.x = null;\n this.y = null;\n this.inf = true;\n } else {\n this.x = new BN(x, 16);\n this.y = new BN(y, 16);\n // Force redgomery representation when loading from JSON\n if (isRed) {\n this.x.forceRed(this.curve.red);\n this.y.forceRed(this.curve.red);\n }\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.y.red)\n this.y = this.y.toRed(this.curve.red);\n this.inf = false;\n }\n}\ninherits(Point, Base.BasePoint);\n\nShortCurve.prototype.point = function point(x, y, isRed) {\n return new Point(this, x, y, isRed);\n};\n\nShortCurve.prototype.pointFromJSON = function pointFromJSON(obj, red) {\n return Point.fromJSON(this, obj, red);\n};\n\nPoint.prototype._getBeta = function _getBeta() {\n if (!this.curve.endo)\n return;\n\n var pre = this.precomputed;\n if (pre && pre.beta)\n return pre.beta;\n\n var beta = this.curve.point(this.x.redMul(this.curve.endo.beta), this.y);\n if (pre) {\n var curve = this.curve;\n var endoMul = function(p) {\n return curve.point(p.x.redMul(curve.endo.beta), p.y);\n };\n pre.beta = beta;\n beta.precomputed = {\n beta: null,\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: pre.naf.points.map(endoMul),\n },\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: pre.doubles.points.map(endoMul),\n },\n };\n }\n return beta;\n};\n\nPoint.prototype.toJSON = function toJSON() {\n if (!this.precomputed)\n return [ this.x, this.y ];\n\n return [ this.x, this.y, this.precomputed && {\n doubles: this.precomputed.doubles && {\n step: this.precomputed.doubles.step,\n points: this.precomputed.doubles.points.slice(1),\n },\n naf: this.precomputed.naf && {\n wnd: this.precomputed.naf.wnd,\n points: this.precomputed.naf.points.slice(1),\n },\n } ];\n};\n\nPoint.fromJSON = function fromJSON(curve, obj, red) {\n if (typeof obj === 'string')\n obj = JSON.parse(obj);\n var res = curve.point(obj[0], obj[1], red);\n if (!obj[2])\n return res;\n\n function obj2point(obj) {\n return curve.point(obj[0], obj[1], red);\n }\n\n var pre = obj[2];\n res.precomputed = {\n beta: null,\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: [ res ].concat(pre.doubles.points.map(obj2point)),\n },\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: [ res ].concat(pre.naf.points.map(obj2point)),\n },\n };\n return res;\n};\n\nPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '';\n return '';\n};\n\nPoint.prototype.isInfinity = function isInfinity() {\n return this.inf;\n};\n\nPoint.prototype.add = function add(p) {\n // O + P = P\n if (this.inf)\n return p;\n\n // P + O = P\n if (p.inf)\n return this;\n\n // P + P = 2P\n if (this.eq(p))\n return this.dbl();\n\n // P + (-P) = O\n if (this.neg().eq(p))\n return this.curve.point(null, null);\n\n // P + Q = O\n if (this.x.cmp(p.x) === 0)\n return this.curve.point(null, null);\n\n var c = this.y.redSub(p.y);\n if (c.cmpn(0) !== 0)\n c = c.redMul(this.x.redSub(p.x).redInvm());\n var nx = c.redSqr().redISub(this.x).redISub(p.x);\n var ny = c.redMul(this.x.redSub(nx)).redISub(this.y);\n return this.curve.point(nx, ny);\n};\n\nPoint.prototype.dbl = function dbl() {\n if (this.inf)\n return this;\n\n // 2P = O\n var ys1 = this.y.redAdd(this.y);\n if (ys1.cmpn(0) === 0)\n return this.curve.point(null, null);\n\n var a = this.curve.a;\n\n var x2 = this.x.redSqr();\n var dyinv = ys1.redInvm();\n var c = x2.redAdd(x2).redIAdd(x2).redIAdd(a).redMul(dyinv);\n\n var nx = c.redSqr().redISub(this.x.redAdd(this.x));\n var ny = c.redMul(this.x.redSub(nx)).redISub(this.y);\n return this.curve.point(nx, ny);\n};\n\nPoint.prototype.getX = function getX() {\n return this.x.fromRed();\n};\n\nPoint.prototype.getY = function getY() {\n return this.y.fromRed();\n};\n\nPoint.prototype.mul = function mul(k) {\n k = new BN(k, 16);\n if (this.isInfinity())\n return this;\n else if (this._hasDoubles(k))\n return this.curve._fixedNafMul(this, k);\n else if (this.curve.endo)\n return this.curve._endoWnafMulAdd([ this ], [ k ]);\n else\n return this.curve._wnafMul(this, k);\n};\n\nPoint.prototype.mulAdd = function mulAdd(k1, p2, k2) {\n var points = [ this, p2 ];\n var coeffs = [ k1, k2 ];\n if (this.curve.endo)\n return this.curve._endoWnafMulAdd(points, coeffs);\n else\n return this.curve._wnafMulAdd(1, points, coeffs, 2);\n};\n\nPoint.prototype.jmulAdd = function jmulAdd(k1, p2, k2) {\n var points = [ this, p2 ];\n var coeffs = [ k1, k2 ];\n if (this.curve.endo)\n return this.curve._endoWnafMulAdd(points, coeffs, true);\n else\n return this.curve._wnafMulAdd(1, points, coeffs, 2, true);\n};\n\nPoint.prototype.eq = function eq(p) {\n return this === p ||\n this.inf === p.inf &&\n (this.inf || this.x.cmp(p.x) === 0 && this.y.cmp(p.y) === 0);\n};\n\nPoint.prototype.neg = function neg(_precompute) {\n if (this.inf)\n return this;\n\n var res = this.curve.point(this.x, this.y.redNeg());\n if (_precompute && this.precomputed) {\n var pre = this.precomputed;\n var negate = function(p) {\n return p.neg();\n };\n res.precomputed = {\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: pre.naf.points.map(negate),\n },\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: pre.doubles.points.map(negate),\n },\n };\n }\n return res;\n};\n\nPoint.prototype.toJ = function toJ() {\n if (this.inf)\n return this.curve.jpoint(null, null, null);\n\n var res = this.curve.jpoint(this.x, this.y, this.curve.one);\n return res;\n};\n\nfunction JPoint(curve, x, y, z) {\n Base.BasePoint.call(this, curve, 'jacobian');\n if (x === null && y === null && z === null) {\n this.x = this.curve.one;\n this.y = this.curve.one;\n this.z = new BN(0);\n } else {\n this.x = new BN(x, 16);\n this.y = new BN(y, 16);\n this.z = new BN(z, 16);\n }\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.y.red)\n this.y = this.y.toRed(this.curve.red);\n if (!this.z.red)\n this.z = this.z.toRed(this.curve.red);\n\n this.zOne = this.z === this.curve.one;\n}\ninherits(JPoint, Base.BasePoint);\n\nShortCurve.prototype.jpoint = function jpoint(x, y, z) {\n return new JPoint(this, x, y, z);\n};\n\nJPoint.prototype.toP = function toP() {\n if (this.isInfinity())\n return this.curve.point(null, null);\n\n var zinv = this.z.redInvm();\n var zinv2 = zinv.redSqr();\n var ax = this.x.redMul(zinv2);\n var ay = this.y.redMul(zinv2).redMul(zinv);\n\n return this.curve.point(ax, ay);\n};\n\nJPoint.prototype.neg = function neg() {\n return this.curve.jpoint(this.x, this.y.redNeg(), this.z);\n};\n\nJPoint.prototype.add = function add(p) {\n // O + P = P\n if (this.isInfinity())\n return p;\n\n // P + O = P\n if (p.isInfinity())\n return this;\n\n // 12M + 4S + 7A\n var pz2 = p.z.redSqr();\n var z2 = this.z.redSqr();\n var u1 = this.x.redMul(pz2);\n var u2 = p.x.redMul(z2);\n var s1 = this.y.redMul(pz2.redMul(p.z));\n var s2 = p.y.redMul(z2.redMul(this.z));\n\n var h = u1.redSub(u2);\n var r = s1.redSub(s2);\n if (h.cmpn(0) === 0) {\n if (r.cmpn(0) !== 0)\n return this.curve.jpoint(null, null, null);\n else\n return this.dbl();\n }\n\n var h2 = h.redSqr();\n var h3 = h2.redMul(h);\n var v = u1.redMul(h2);\n\n var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v);\n var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3));\n var nz = this.z.redMul(p.z).redMul(h);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.mixedAdd = function mixedAdd(p) {\n // O + P = P\n if (this.isInfinity())\n return p.toJ();\n\n // P + O = P\n if (p.isInfinity())\n return this;\n\n // 8M + 3S + 7A\n var z2 = this.z.redSqr();\n var u1 = this.x;\n var u2 = p.x.redMul(z2);\n var s1 = this.y;\n var s2 = p.y.redMul(z2).redMul(this.z);\n\n var h = u1.redSub(u2);\n var r = s1.redSub(s2);\n if (h.cmpn(0) === 0) {\n if (r.cmpn(0) !== 0)\n return this.curve.jpoint(null, null, null);\n else\n return this.dbl();\n }\n\n var h2 = h.redSqr();\n var h3 = h2.redMul(h);\n var v = u1.redMul(h2);\n\n var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v);\n var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3));\n var nz = this.z.redMul(h);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.dblp = function dblp(pow) {\n if (pow === 0)\n return this;\n if (this.isInfinity())\n return this;\n if (!pow)\n return this.dbl();\n\n var i;\n if (this.curve.zeroA || this.curve.threeA) {\n var r = this;\n for (i = 0; i < pow; i++)\n r = r.dbl();\n return r;\n }\n\n // 1M + 2S + 1A + N * (4S + 5M + 8A)\n // N = 1 => 6M + 6S + 9A\n var a = this.curve.a;\n var tinv = this.curve.tinv;\n\n var jx = this.x;\n var jy = this.y;\n var jz = this.z;\n var jz4 = jz.redSqr().redSqr();\n\n // Reuse results\n var jyd = jy.redAdd(jy);\n for (i = 0; i < pow; i++) {\n var jx2 = jx.redSqr();\n var jyd2 = jyd.redSqr();\n var jyd4 = jyd2.redSqr();\n var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4));\n\n var t1 = jx.redMul(jyd2);\n var nx = c.redSqr().redISub(t1.redAdd(t1));\n var t2 = t1.redISub(nx);\n var dny = c.redMul(t2);\n dny = dny.redIAdd(dny).redISub(jyd4);\n var nz = jyd.redMul(jz);\n if (i + 1 < pow)\n jz4 = jz4.redMul(jyd4);\n\n jx = nx;\n jz = nz;\n jyd = dny;\n }\n\n return this.curve.jpoint(jx, jyd.redMul(tinv), jz);\n};\n\nJPoint.prototype.dbl = function dbl() {\n if (this.isInfinity())\n return this;\n\n if (this.curve.zeroA)\n return this._zeroDbl();\n else if (this.curve.threeA)\n return this._threeDbl();\n else\n return this._dbl();\n};\n\nJPoint.prototype._zeroDbl = function _zeroDbl() {\n var nx;\n var ny;\n var nz;\n // Z = 1\n if (this.zOne) {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html\n // #doubling-mdbl-2007-bl\n // 1M + 5S + 14A\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // S = 2 * ((X1 + YY)^2 - XX - YYYY)\n var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n s = s.redIAdd(s);\n // M = 3 * XX + a; a = 0\n var m = xx.redAdd(xx).redIAdd(xx);\n // T = M ^ 2 - 2*S\n var t = m.redSqr().redISub(s).redISub(s);\n\n // 8 * YYYY\n var yyyy8 = yyyy.redIAdd(yyyy);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n\n // X3 = T\n nx = t;\n // Y3 = M * (S - T) - 8 * YYYY\n ny = m.redMul(s.redISub(t)).redISub(yyyy8);\n // Z3 = 2*Y1\n nz = this.y.redAdd(this.y);\n } else {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html\n // #doubling-dbl-2009-l\n // 2M + 5S + 13A\n\n // A = X1^2\n var a = this.x.redSqr();\n // B = Y1^2\n var b = this.y.redSqr();\n // C = B^2\n var c = b.redSqr();\n // D = 2 * ((X1 + B)^2 - A - C)\n var d = this.x.redAdd(b).redSqr().redISub(a).redISub(c);\n d = d.redIAdd(d);\n // E = 3 * A\n var e = a.redAdd(a).redIAdd(a);\n // F = E^2\n var f = e.redSqr();\n\n // 8 * C\n var c8 = c.redIAdd(c);\n c8 = c8.redIAdd(c8);\n c8 = c8.redIAdd(c8);\n\n // X3 = F - 2 * D\n nx = f.redISub(d).redISub(d);\n // Y3 = E * (D - X3) - 8 * C\n ny = e.redMul(d.redISub(nx)).redISub(c8);\n // Z3 = 2 * Y1 * Z1\n nz = this.y.redMul(this.z);\n nz = nz.redIAdd(nz);\n }\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype._threeDbl = function _threeDbl() {\n var nx;\n var ny;\n var nz;\n // Z = 1\n if (this.zOne) {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html\n // #doubling-mdbl-2007-bl\n // 1M + 5S + 15A\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // S = 2 * ((X1 + YY)^2 - XX - YYYY)\n var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n s = s.redIAdd(s);\n // M = 3 * XX + a\n var m = xx.redAdd(xx).redIAdd(xx).redIAdd(this.curve.a);\n // T = M^2 - 2 * S\n var t = m.redSqr().redISub(s).redISub(s);\n // X3 = T\n nx = t;\n // Y3 = M * (S - T) - 8 * YYYY\n var yyyy8 = yyyy.redIAdd(yyyy);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n ny = m.redMul(s.redISub(t)).redISub(yyyy8);\n // Z3 = 2 * Y1\n nz = this.y.redAdd(this.y);\n } else {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html#doubling-dbl-2001-b\n // 3M + 5S\n\n // delta = Z1^2\n var delta = this.z.redSqr();\n // gamma = Y1^2\n var gamma = this.y.redSqr();\n // beta = X1 * gamma\n var beta = this.x.redMul(gamma);\n // alpha = 3 * (X1 - delta) * (X1 + delta)\n var alpha = this.x.redSub(delta).redMul(this.x.redAdd(delta));\n alpha = alpha.redAdd(alpha).redIAdd(alpha);\n // X3 = alpha^2 - 8 * beta\n var beta4 = beta.redIAdd(beta);\n beta4 = beta4.redIAdd(beta4);\n var beta8 = beta4.redAdd(beta4);\n nx = alpha.redSqr().redISub(beta8);\n // Z3 = (Y1 + Z1)^2 - gamma - delta\n nz = this.y.redAdd(this.z).redSqr().redISub(gamma).redISub(delta);\n // Y3 = alpha * (4 * beta - X3) - 8 * gamma^2\n var ggamma8 = gamma.redSqr();\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ny = alpha.redMul(beta4.redISub(nx)).redISub(ggamma8);\n }\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype._dbl = function _dbl() {\n var a = this.curve.a;\n\n // 4M + 6S + 10A\n var jx = this.x;\n var jy = this.y;\n var jz = this.z;\n var jz4 = jz.redSqr().redSqr();\n\n var jx2 = jx.redSqr();\n var jy2 = jy.redSqr();\n\n var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4));\n\n var jxd4 = jx.redAdd(jx);\n jxd4 = jxd4.redIAdd(jxd4);\n var t1 = jxd4.redMul(jy2);\n var nx = c.redSqr().redISub(t1.redAdd(t1));\n var t2 = t1.redISub(nx);\n\n var jyd8 = jy2.redSqr();\n jyd8 = jyd8.redIAdd(jyd8);\n jyd8 = jyd8.redIAdd(jyd8);\n jyd8 = jyd8.redIAdd(jyd8);\n var ny = c.redMul(t2).redISub(jyd8);\n var nz = jy.redAdd(jy).redMul(jz);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.trpl = function trpl() {\n if (!this.curve.zeroA)\n return this.dbl().add(this);\n\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html#tripling-tpl-2007-bl\n // 5M + 10S + ...\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // ZZ = Z1^2\n var zz = this.z.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // M = 3 * XX + a * ZZ2; a = 0\n var m = xx.redAdd(xx).redIAdd(xx);\n // MM = M^2\n var mm = m.redSqr();\n // E = 6 * ((X1 + YY)^2 - XX - YYYY) - MM\n var e = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n e = e.redIAdd(e);\n e = e.redAdd(e).redIAdd(e);\n e = e.redISub(mm);\n // EE = E^2\n var ee = e.redSqr();\n // T = 16*YYYY\n var t = yyyy.redIAdd(yyyy);\n t = t.redIAdd(t);\n t = t.redIAdd(t);\n t = t.redIAdd(t);\n // U = (M + E)^2 - MM - EE - T\n var u = m.redIAdd(e).redSqr().redISub(mm).redISub(ee).redISub(t);\n // X3 = 4 * (X1 * EE - 4 * YY * U)\n var yyu4 = yy.redMul(u);\n yyu4 = yyu4.redIAdd(yyu4);\n yyu4 = yyu4.redIAdd(yyu4);\n var nx = this.x.redMul(ee).redISub(yyu4);\n nx = nx.redIAdd(nx);\n nx = nx.redIAdd(nx);\n // Y3 = 8 * Y1 * (U * (T - U) - E * EE)\n var ny = this.y.redMul(u.redMul(t.redISub(u)).redISub(e.redMul(ee)));\n ny = ny.redIAdd(ny);\n ny = ny.redIAdd(ny);\n ny = ny.redIAdd(ny);\n // Z3 = (Z1 + E)^2 - ZZ - EE\n var nz = this.z.redAdd(e).redSqr().redISub(zz).redISub(ee);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.mul = function mul(k, kbase) {\n k = new BN(k, kbase);\n\n return this.curve._wnafMul(this, k);\n};\n\nJPoint.prototype.eq = function eq(p) {\n if (p.type === 'affine')\n return this.eq(p.toJ());\n\n if (this === p)\n return true;\n\n // x1 * z2^2 == x2 * z1^2\n var z2 = this.z.redSqr();\n var pz2 = p.z.redSqr();\n if (this.x.redMul(pz2).redISub(p.x.redMul(z2)).cmpn(0) !== 0)\n return false;\n\n // y1 * z2^3 == y2 * z1^3\n var z3 = z2.redMul(this.z);\n var pz3 = pz2.redMul(p.z);\n return this.y.redMul(pz3).redISub(p.y.redMul(z3)).cmpn(0) === 0;\n};\n\nJPoint.prototype.eqXToP = function eqXToP(x) {\n var zs = this.z.redSqr();\n var rx = x.toRed(this.curve.red).redMul(zs);\n if (this.x.cmp(rx) === 0)\n return true;\n\n var xc = x.clone();\n var t = this.curve.redN.redMul(zs);\n for (;;) {\n xc.iadd(this.curve.n);\n if (xc.cmp(this.curve.p) >= 0)\n return false;\n\n rx.redIAdd(t);\n if (this.x.cmp(rx) === 0)\n return true;\n }\n};\n\nJPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '';\n return '';\n};\n\nJPoint.prototype.isInfinity = function isInfinity() {\n // XXX This code assumes that zero is always zero in red\n return this.z.cmpn(0) === 0;\n};\n", "'use strict';\n\nvar BN = require('bn.js');\nvar inherits = require('inherits');\nvar Base = require('./base');\n\nvar utils = require('../utils');\n\nfunction MontCurve(conf) {\n Base.call(this, 'mont', conf);\n\n this.a = new BN(conf.a, 16).toRed(this.red);\n this.b = new BN(conf.b, 16).toRed(this.red);\n this.i4 = new BN(4).toRed(this.red).redInvm();\n this.two = new BN(2).toRed(this.red);\n this.a24 = this.i4.redMul(this.a.redAdd(this.two));\n}\ninherits(MontCurve, Base);\nmodule.exports = MontCurve;\n\nMontCurve.prototype.validate = function validate(point) {\n var x = point.normalize().x;\n var x2 = x.redSqr();\n var rhs = x2.redMul(x).redAdd(x2.redMul(this.a)).redAdd(x);\n var y = rhs.redSqrt();\n\n return y.redSqr().cmp(rhs) === 0;\n};\n\nfunction Point(curve, x, z) {\n Base.BasePoint.call(this, curve, 'projective');\n if (x === null && z === null) {\n this.x = this.curve.one;\n this.z = this.curve.zero;\n } else {\n this.x = new BN(x, 16);\n this.z = new BN(z, 16);\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.z.red)\n this.z = this.z.toRed(this.curve.red);\n }\n}\ninherits(Point, Base.BasePoint);\n\nMontCurve.prototype.decodePoint = function decodePoint(bytes, enc) {\n return this.point(utils.toArray(bytes, enc), 1);\n};\n\nMontCurve.prototype.point = function point(x, z) {\n return new Point(this, x, z);\n};\n\nMontCurve.prototype.pointFromJSON = function pointFromJSON(obj) {\n return Point.fromJSON(this, obj);\n};\n\nPoint.prototype.precompute = function precompute() {\n // No-op\n};\n\nPoint.prototype._encode = function _encode() {\n return this.getX().toArray('be', this.curve.p.byteLength());\n};\n\nPoint.fromJSON = function fromJSON(curve, obj) {\n return new Point(curve, obj[0], obj[1] || curve.one);\n};\n\nPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '';\n return '';\n};\n\nPoint.prototype.isInfinity = function isInfinity() {\n // XXX This code assumes that zero is always zero in red\n return this.z.cmpn(0) === 0;\n};\n\nPoint.prototype.dbl = function dbl() {\n // http://hyperelliptic.org/EFD/g1p/auto-montgom-xz.html#doubling-dbl-1987-m-3\n // 2M + 2S + 4A\n\n // A = X1 + Z1\n var a = this.x.redAdd(this.z);\n // AA = A^2\n var aa = a.redSqr();\n // B = X1 - Z1\n var b = this.x.redSub(this.z);\n // BB = B^2\n var bb = b.redSqr();\n // C = AA - BB\n var c = aa.redSub(bb);\n // X3 = AA * BB\n var nx = aa.redMul(bb);\n // Z3 = C * (BB + A24 * C)\n var nz = c.redMul(bb.redAdd(this.curve.a24.redMul(c)));\n return this.curve.point(nx, nz);\n};\n\nPoint.prototype.add = function add() {\n throw new Error('Not supported on Montgomery curve');\n};\n\nPoint.prototype.diffAdd = function diffAdd(p, diff) {\n // http://hyperelliptic.org/EFD/g1p/auto-montgom-xz.html#diffadd-dadd-1987-m-3\n // 4M + 2S + 6A\n\n // A = X2 + Z2\n var a = this.x.redAdd(this.z);\n // B = X2 - Z2\n var b = this.x.redSub(this.z);\n // C = X3 + Z3\n var c = p.x.redAdd(p.z);\n // D = X3 - Z3\n var d = p.x.redSub(p.z);\n // DA = D * A\n var da = d.redMul(a);\n // CB = C * B\n var cb = c.redMul(b);\n // X5 = Z1 * (DA + CB)^2\n var nx = diff.z.redMul(da.redAdd(cb).redSqr());\n // Z5 = X1 * (DA - CB)^2\n var nz = diff.x.redMul(da.redISub(cb).redSqr());\n return this.curve.point(nx, nz);\n};\n\nPoint.prototype.mul = function mul(k) {\n var t = k.clone();\n var a = this; // (N / 2) * Q + Q\n var b = this.curve.point(null, null); // (N / 2) * Q\n var c = this; // Q\n\n for (var bits = []; t.cmpn(0) !== 0; t.iushrn(1))\n bits.push(t.andln(1));\n\n for (var i = bits.length - 1; i >= 0; i--) {\n if (bits[i] === 0) {\n // N * Q + Q = ((N / 2) * Q + Q)) + (N / 2) * Q\n a = a.diffAdd(b, c);\n // N * Q = 2 * ((N / 2) * Q + Q))\n b = b.dbl();\n } else {\n // N * Q = ((N / 2) * Q + Q) + ((N / 2) * Q)\n b = a.diffAdd(b, c);\n // N * Q + Q = 2 * ((N / 2) * Q + Q)\n a = a.dbl();\n }\n }\n return b;\n};\n\nPoint.prototype.mulAdd = function mulAdd() {\n throw new Error('Not supported on Montgomery curve');\n};\n\nPoint.prototype.jumlAdd = function jumlAdd() {\n throw new Error('Not supported on Montgomery curve');\n};\n\nPoint.prototype.eq = function eq(other) {\n return this.getX().cmp(other.getX()) === 0;\n};\n\nPoint.prototype.normalize = function normalize() {\n this.x = this.x.redMul(this.z.redInvm());\n this.z = this.curve.one;\n return this;\n};\n\nPoint.prototype.getX = function getX() {\n // Normalize coordinates\n this.normalize();\n\n return this.x.fromRed();\n};\n", "'use strict';\n\nvar utils = require('../utils');\nvar BN = require('bn.js');\nvar inherits = require('inherits');\nvar Base = require('./base');\n\nvar assert = utils.assert;\n\nfunction EdwardsCurve(conf) {\n // NOTE: Important as we are creating point in Base.call()\n this.twisted = (conf.a | 0) !== 1;\n this.mOneA = this.twisted && (conf.a | 0) === -1;\n this.extended = this.mOneA;\n\n Base.call(this, 'edwards', conf);\n\n this.a = new BN(conf.a, 16).umod(this.red.m);\n this.a = this.a.toRed(this.red);\n this.c = new BN(conf.c, 16).toRed(this.red);\n this.c2 = this.c.redSqr();\n this.d = new BN(conf.d, 16).toRed(this.red);\n this.dd = this.d.redAdd(this.d);\n\n assert(!this.twisted || this.c.fromRed().cmpn(1) === 0);\n this.oneC = (conf.c | 0) === 1;\n}\ninherits(EdwardsCurve, Base);\nmodule.exports = EdwardsCurve;\n\nEdwardsCurve.prototype._mulA = function _mulA(num) {\n if (this.mOneA)\n return num.redNeg();\n else\n return this.a.redMul(num);\n};\n\nEdwardsCurve.prototype._mulC = function _mulC(num) {\n if (this.oneC)\n return num;\n else\n return this.c.redMul(num);\n};\n\n// Just for compatibility with Short curve\nEdwardsCurve.prototype.jpoint = function jpoint(x, y, z, t) {\n return this.point(x, y, z, t);\n};\n\nEdwardsCurve.prototype.pointFromX = function pointFromX(x, odd) {\n x = new BN(x, 16);\n if (!x.red)\n x = x.toRed(this.red);\n\n var x2 = x.redSqr();\n var rhs = this.c2.redSub(this.a.redMul(x2));\n var lhs = this.one.redSub(this.c2.redMul(this.d).redMul(x2));\n\n var y2 = rhs.redMul(lhs.redInvm());\n var y = y2.redSqrt();\n if (y.redSqr().redSub(y2).cmp(this.zero) !== 0)\n throw new Error('invalid point');\n\n var isOdd = y.fromRed().isOdd();\n if (odd && !isOdd || !odd && isOdd)\n y = y.redNeg();\n\n return this.point(x, y);\n};\n\nEdwardsCurve.prototype.pointFromY = function pointFromY(y, odd) {\n y = new BN(y, 16);\n if (!y.red)\n y = y.toRed(this.red);\n\n // x^2 = (y^2 - c^2) / (c^2 d y^2 - a)\n var y2 = y.redSqr();\n var lhs = y2.redSub(this.c2);\n var rhs = y2.redMul(this.d).redMul(this.c2).redSub(this.a);\n var x2 = lhs.redMul(rhs.redInvm());\n\n if (x2.cmp(this.zero) === 0) {\n if (odd)\n throw new Error('invalid point');\n else\n return this.point(this.zero, y);\n }\n\n var x = x2.redSqrt();\n if (x.redSqr().redSub(x2).cmp(this.zero) !== 0)\n throw new Error('invalid point');\n\n if (x.fromRed().isOdd() !== odd)\n x = x.redNeg();\n\n return this.point(x, y);\n};\n\nEdwardsCurve.prototype.validate = function validate(point) {\n if (point.isInfinity())\n return true;\n\n // Curve: A * X^2 + Y^2 = C^2 * (1 + D * X^2 * Y^2)\n point.normalize();\n\n var x2 = point.x.redSqr();\n var y2 = point.y.redSqr();\n var lhs = x2.redMul(this.a).redAdd(y2);\n var rhs = this.c2.redMul(this.one.redAdd(this.d.redMul(x2).redMul(y2)));\n\n return lhs.cmp(rhs) === 0;\n};\n\nfunction Point(curve, x, y, z, t) {\n Base.BasePoint.call(this, curve, 'projective');\n if (x === null && y === null && z === null) {\n this.x = this.curve.zero;\n this.y = this.curve.one;\n this.z = this.curve.one;\n this.t = this.curve.zero;\n this.zOne = true;\n } else {\n this.x = new BN(x, 16);\n this.y = new BN(y, 16);\n this.z = z ? new BN(z, 16) : this.curve.one;\n this.t = t && new BN(t, 16);\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.y.red)\n this.y = this.y.toRed(this.curve.red);\n if (!this.z.red)\n this.z = this.z.toRed(this.curve.red);\n if (this.t && !this.t.red)\n this.t = this.t.toRed(this.curve.red);\n this.zOne = this.z === this.curve.one;\n\n // Use extended coordinates\n if (this.curve.extended && !this.t) {\n this.t = this.x.redMul(this.y);\n if (!this.zOne)\n this.t = this.t.redMul(this.z.redInvm());\n }\n }\n}\ninherits(Point, Base.BasePoint);\n\nEdwardsCurve.prototype.pointFromJSON = function pointFromJSON(obj) {\n return Point.fromJSON(this, obj);\n};\n\nEdwardsCurve.prototype.point = function point(x, y, z, t) {\n return new Point(this, x, y, z, t);\n};\n\nPoint.fromJSON = function fromJSON(curve, obj) {\n return new Point(curve, obj[0], obj[1], obj[2]);\n};\n\nPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '';\n return '';\n};\n\nPoint.prototype.isInfinity = function isInfinity() {\n // XXX This code assumes that zero is always zero in red\n return this.x.cmpn(0) === 0 &&\n (this.y.cmp(this.z) === 0 ||\n (this.zOne && this.y.cmp(this.curve.c) === 0));\n};\n\nPoint.prototype._extDbl = function _extDbl() {\n // hyperelliptic.org/EFD/g1p/auto-twisted-extended-1.html\n // #doubling-dbl-2008-hwcd\n // 4M + 4S\n\n // A = X1^2\n var a = this.x.redSqr();\n // B = Y1^2\n var b = this.y.redSqr();\n // C = 2 * Z1^2\n var c = this.z.redSqr();\n c = c.redIAdd(c);\n // D = a * A\n var d = this.curve._mulA(a);\n // E = (X1 + Y1)^2 - A - B\n var e = this.x.redAdd(this.y).redSqr().redISub(a).redISub(b);\n // G = D + B\n var g = d.redAdd(b);\n // F = G - C\n var f = g.redSub(c);\n // H = D - B\n var h = d.redSub(b);\n // X3 = E * F\n var nx = e.redMul(f);\n // Y3 = G * H\n var ny = g.redMul(h);\n // T3 = E * H\n var nt = e.redMul(h);\n // Z3 = F * G\n var nz = f.redMul(g);\n return this.curve.point(nx, ny, nz, nt);\n};\n\nPoint.prototype._projDbl = function _projDbl() {\n // hyperelliptic.org/EFD/g1p/auto-twisted-projective.html\n // #doubling-dbl-2008-bbjlp\n // #doubling-dbl-2007-bl\n // and others\n // Generally 3M + 4S or 2M + 4S\n\n // B = (X1 + Y1)^2\n var b = this.x.redAdd(this.y).redSqr();\n // C = X1^2\n var c = this.x.redSqr();\n // D = Y1^2\n var d = this.y.redSqr();\n\n var nx;\n var ny;\n var nz;\n var e;\n var h;\n var j;\n if (this.curve.twisted) {\n // E = a * C\n e = this.curve._mulA(c);\n // F = E + D\n var f = e.redAdd(d);\n if (this.zOne) {\n // X3 = (B - C - D) * (F - 2)\n nx = b.redSub(c).redSub(d).redMul(f.redSub(this.curve.two));\n // Y3 = F * (E - D)\n ny = f.redMul(e.redSub(d));\n // Z3 = F^2 - 2 * F\n nz = f.redSqr().redSub(f).redSub(f);\n } else {\n // H = Z1^2\n h = this.z.redSqr();\n // J = F - 2 * H\n j = f.redSub(h).redISub(h);\n // X3 = (B-C-D)*J\n nx = b.redSub(c).redISub(d).redMul(j);\n // Y3 = F * (E - D)\n ny = f.redMul(e.redSub(d));\n // Z3 = F * J\n nz = f.redMul(j);\n }\n } else {\n // E = C + D\n e = c.redAdd(d);\n // H = (c * Z1)^2\n h = this.curve._mulC(this.z).redSqr();\n // J = E - 2 * H\n j = e.redSub(h).redSub(h);\n // X3 = c * (B - E) * J\n nx = this.curve._mulC(b.redISub(e)).redMul(j);\n // Y3 = c * E * (C - D)\n ny = this.curve._mulC(e).redMul(c.redISub(d));\n // Z3 = E * J\n nz = e.redMul(j);\n }\n return this.curve.point(nx, ny, nz);\n};\n\nPoint.prototype.dbl = function dbl() {\n if (this.isInfinity())\n return this;\n\n // Double in extended coordinates\n if (this.curve.extended)\n return this._extDbl();\n else\n return this._projDbl();\n};\n\nPoint.prototype._extAdd = function _extAdd(p) {\n // hyperelliptic.org/EFD/g1p/auto-twisted-extended-1.html\n // #addition-add-2008-hwcd-3\n // 8M\n\n // A = (Y1 - X1) * (Y2 - X2)\n var a = this.y.redSub(this.x).redMul(p.y.redSub(p.x));\n // B = (Y1 + X1) * (Y2 + X2)\n var b = this.y.redAdd(this.x).redMul(p.y.redAdd(p.x));\n // C = T1 * k * T2\n var c = this.t.redMul(this.curve.dd).redMul(p.t);\n // D = Z1 * 2 * Z2\n var d = this.z.redMul(p.z.redAdd(p.z));\n // E = B - A\n var e = b.redSub(a);\n // F = D - C\n var f = d.redSub(c);\n // G = D + C\n var g = d.redAdd(c);\n // H = B + A\n var h = b.redAdd(a);\n // X3 = E * F\n var nx = e.redMul(f);\n // Y3 = G * H\n var ny = g.redMul(h);\n // T3 = E * H\n var nt = e.redMul(h);\n // Z3 = F * G\n var nz = f.redMul(g);\n return this.curve.point(nx, ny, nz, nt);\n};\n\nPoint.prototype._projAdd = function _projAdd(p) {\n // hyperelliptic.org/EFD/g1p/auto-twisted-projective.html\n // #addition-add-2008-bbjlp\n // #addition-add-2007-bl\n // 10M + 1S\n\n // A = Z1 * Z2\n var a = this.z.redMul(p.z);\n // B = A^2\n var b = a.redSqr();\n // C = X1 * X2\n var c = this.x.redMul(p.x);\n // D = Y1 * Y2\n var d = this.y.redMul(p.y);\n // E = d * C * D\n var e = this.curve.d.redMul(c).redMul(d);\n // F = B - E\n var f = b.redSub(e);\n // G = B + E\n var g = b.redAdd(e);\n // X3 = A * F * ((X1 + Y1) * (X2 + Y2) - C - D)\n var tmp = this.x.redAdd(this.y).redMul(p.x.redAdd(p.y)).redISub(c).redISub(d);\n var nx = a.redMul(f).redMul(tmp);\n var ny;\n var nz;\n if (this.curve.twisted) {\n // Y3 = A * G * (D - a * C)\n ny = a.redMul(g).redMul(d.redSub(this.curve._mulA(c)));\n // Z3 = F * G\n nz = f.redMul(g);\n } else {\n // Y3 = A * G * (D - C)\n ny = a.redMul(g).redMul(d.redSub(c));\n // Z3 = c * F * G\n nz = this.curve._mulC(f).redMul(g);\n }\n return this.curve.point(nx, ny, nz);\n};\n\nPoint.prototype.add = function add(p) {\n if (this.isInfinity())\n return p;\n if (p.isInfinity())\n return this;\n\n if (this.curve.extended)\n return this._extAdd(p);\n else\n return this._projAdd(p);\n};\n\nPoint.prototype.mul = function mul(k) {\n if (this._hasDoubles(k))\n return this.curve._fixedNafMul(this, k);\n else\n return this.curve._wnafMul(this, k);\n};\n\nPoint.prototype.mulAdd = function mulAdd(k1, p, k2) {\n return this.curve._wnafMulAdd(1, [ this, p ], [ k1, k2 ], 2, false);\n};\n\nPoint.prototype.jmulAdd = function jmulAdd(k1, p, k2) {\n return this.curve._wnafMulAdd(1, [ this, p ], [ k1, k2 ], 2, true);\n};\n\nPoint.prototype.normalize = function normalize() {\n if (this.zOne)\n return this;\n\n // Normalize coordinates\n var zi = this.z.redInvm();\n this.x = this.x.redMul(zi);\n this.y = this.y.redMul(zi);\n if (this.t)\n this.t = this.t.redMul(zi);\n this.z = this.curve.one;\n this.zOne = true;\n return this;\n};\n\nPoint.prototype.neg = function neg() {\n return this.curve.point(this.x.redNeg(),\n this.y,\n this.z,\n this.t && this.t.redNeg());\n};\n\nPoint.prototype.getX = function getX() {\n this.normalize();\n return this.x.fromRed();\n};\n\nPoint.prototype.getY = function getY() {\n this.normalize();\n return this.y.fromRed();\n};\n\nPoint.prototype.eq = function eq(other) {\n return this === other ||\n this.getX().cmp(other.getX()) === 0 &&\n this.getY().cmp(other.getY()) === 0;\n};\n\nPoint.prototype.eqXToP = function eqXToP(x) {\n var rx = x.toRed(this.curve.red).redMul(this.z);\n if (this.x.cmp(rx) === 0)\n return true;\n\n var xc = x.clone();\n var t = this.curve.redN.redMul(this.z);\n for (;;) {\n xc.iadd(this.curve.n);\n if (xc.cmp(this.curve.p) >= 0)\n return false;\n\n rx.redIAdd(t);\n if (this.x.cmp(rx) === 0)\n return true;\n }\n};\n\n// Compatibility with BaseCurve\nPoint.prototype.toP = Point.prototype.normalize;\nPoint.prototype.mixedAdd = Point.prototype.add;\n", "'use strict';\n\nvar curve = exports;\n\ncurve.base = require('./base');\ncurve.short = require('./short');\ncurve.mont = require('./mont');\ncurve.edwards = require('./edwards');\n", "'use strict';\n\nvar assert = require('minimalistic-assert');\nvar inherits = require('inherits');\n\nexports.inherits = inherits;\n\nfunction isSurrogatePair(msg, i) {\n if ((msg.charCodeAt(i) & 0xFC00) !== 0xD800) {\n return false;\n }\n if (i < 0 || i + 1 >= msg.length) {\n return false;\n }\n return (msg.charCodeAt(i + 1) & 0xFC00) === 0xDC00;\n}\n\nfunction toArray(msg, enc) {\n if (Array.isArray(msg))\n return msg.slice();\n if (!msg)\n return [];\n var res = [];\n if (typeof msg === 'string') {\n if (!enc) {\n // Inspired by stringToUtf8ByteArray() in closure-library by Google\n // https://github.com/google/closure-library/blob/8598d87242af59aac233270742c8984e2b2bdbe0/closure/goog/crypt/crypt.js#L117-L143\n // Apache License 2.0\n // https://github.com/google/closure-library/blob/master/LICENSE\n var p = 0;\n for (var i = 0; i < msg.length; i++) {\n var c = msg.charCodeAt(i);\n if (c < 128) {\n res[p++] = c;\n } else if (c < 2048) {\n res[p++] = (c >> 6) | 192;\n res[p++] = (c & 63) | 128;\n } else if (isSurrogatePair(msg, i)) {\n c = 0x10000 + ((c & 0x03FF) << 10) + (msg.charCodeAt(++i) & 0x03FF);\n res[p++] = (c >> 18) | 240;\n res[p++] = ((c >> 12) & 63) | 128;\n res[p++] = ((c >> 6) & 63) | 128;\n res[p++] = (c & 63) | 128;\n } else {\n res[p++] = (c >> 12) | 224;\n res[p++] = ((c >> 6) & 63) | 128;\n res[p++] = (c & 63) | 128;\n }\n }\n } else if (enc === 'hex') {\n msg = msg.replace(/[^a-z0-9]+/ig, '');\n if (msg.length % 2 !== 0)\n msg = '0' + msg;\n for (i = 0; i < msg.length; i += 2)\n res.push(parseInt(msg[i] + msg[i + 1], 16));\n }\n } else {\n for (i = 0; i < msg.length; i++)\n res[i] = msg[i] | 0;\n }\n return res;\n}\nexports.toArray = toArray;\n\nfunction toHex(msg) {\n var res = '';\n for (var i = 0; i < msg.length; i++)\n res += zero2(msg[i].toString(16));\n return res;\n}\nexports.toHex = toHex;\n\nfunction htonl(w) {\n var res = (w >>> 24) |\n ((w >>> 8) & 0xff00) |\n ((w << 8) & 0xff0000) |\n ((w & 0xff) << 24);\n return res >>> 0;\n}\nexports.htonl = htonl;\n\nfunction toHex32(msg, endian) {\n var res = '';\n for (var i = 0; i < msg.length; i++) {\n var w = msg[i];\n if (endian === 'little')\n w = htonl(w);\n res += zero8(w.toString(16));\n }\n return res;\n}\nexports.toHex32 = toHex32;\n\nfunction zero2(word) {\n if (word.length === 1)\n return '0' + word;\n else\n return word;\n}\nexports.zero2 = zero2;\n\nfunction zero8(word) {\n if (word.length === 7)\n return '0' + word;\n else if (word.length === 6)\n return '00' + word;\n else if (word.length === 5)\n return '000' + word;\n else if (word.length === 4)\n return '0000' + word;\n else if (word.length === 3)\n return '00000' + word;\n else if (word.length === 2)\n return '000000' + word;\n else if (word.length === 1)\n return '0000000' + word;\n else\n return word;\n}\nexports.zero8 = zero8;\n\nfunction join32(msg, start, end, endian) {\n var len = end - start;\n assert(len % 4 === 0);\n var res = new Array(len / 4);\n for (var i = 0, k = start; i < res.length; i++, k += 4) {\n var w;\n if (endian === 'big')\n w = (msg[k] << 24) | (msg[k + 1] << 16) | (msg[k + 2] << 8) | msg[k + 3];\n else\n w = (msg[k + 3] << 24) | (msg[k + 2] << 16) | (msg[k + 1] << 8) | msg[k];\n res[i] = w >>> 0;\n }\n return res;\n}\nexports.join32 = join32;\n\nfunction split32(msg, endian) {\n var res = new Array(msg.length * 4);\n for (var i = 0, k = 0; i < msg.length; i++, k += 4) {\n var m = msg[i];\n if (endian === 'big') {\n res[k] = m >>> 24;\n res[k + 1] = (m >>> 16) & 0xff;\n res[k + 2] = (m >>> 8) & 0xff;\n res[k + 3] = m & 0xff;\n } else {\n res[k + 3] = m >>> 24;\n res[k + 2] = (m >>> 16) & 0xff;\n res[k + 1] = (m >>> 8) & 0xff;\n res[k] = m & 0xff;\n }\n }\n return res;\n}\nexports.split32 = split32;\n\nfunction rotr32(w, b) {\n return (w >>> b) | (w << (32 - b));\n}\nexports.rotr32 = rotr32;\n\nfunction rotl32(w, b) {\n return (w << b) | (w >>> (32 - b));\n}\nexports.rotl32 = rotl32;\n\nfunction sum32(a, b) {\n return (a + b) >>> 0;\n}\nexports.sum32 = sum32;\n\nfunction sum32_3(a, b, c) {\n return (a + b + c) >>> 0;\n}\nexports.sum32_3 = sum32_3;\n\nfunction sum32_4(a, b, c, d) {\n return (a + b + c + d) >>> 0;\n}\nexports.sum32_4 = sum32_4;\n\nfunction sum32_5(a, b, c, d, e) {\n return (a + b + c + d + e) >>> 0;\n}\nexports.sum32_5 = sum32_5;\n\nfunction sum64(buf, pos, ah, al) {\n var bh = buf[pos];\n var bl = buf[pos + 1];\n\n var lo = (al + bl) >>> 0;\n var hi = (lo < al ? 1 : 0) + ah + bh;\n buf[pos] = hi >>> 0;\n buf[pos + 1] = lo;\n}\nexports.sum64 = sum64;\n\nfunction sum64_hi(ah, al, bh, bl) {\n var lo = (al + bl) >>> 0;\n var hi = (lo < al ? 1 : 0) + ah + bh;\n return hi >>> 0;\n}\nexports.sum64_hi = sum64_hi;\n\nfunction sum64_lo(ah, al, bh, bl) {\n var lo = al + bl;\n return lo >>> 0;\n}\nexports.sum64_lo = sum64_lo;\n\nfunction sum64_4_hi(ah, al, bh, bl, ch, cl, dh, dl) {\n var carry = 0;\n var lo = al;\n lo = (lo + bl) >>> 0;\n carry += lo < al ? 1 : 0;\n lo = (lo + cl) >>> 0;\n carry += lo < cl ? 1 : 0;\n lo = (lo + dl) >>> 0;\n carry += lo < dl ? 1 : 0;\n\n var hi = ah + bh + ch + dh + carry;\n return hi >>> 0;\n}\nexports.sum64_4_hi = sum64_4_hi;\n\nfunction sum64_4_lo(ah, al, bh, bl, ch, cl, dh, dl) {\n var lo = al + bl + cl + dl;\n return lo >>> 0;\n}\nexports.sum64_4_lo = sum64_4_lo;\n\nfunction sum64_5_hi(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {\n var carry = 0;\n var lo = al;\n lo = (lo + bl) >>> 0;\n carry += lo < al ? 1 : 0;\n lo = (lo + cl) >>> 0;\n carry += lo < cl ? 1 : 0;\n lo = (lo + dl) >>> 0;\n carry += lo < dl ? 1 : 0;\n lo = (lo + el) >>> 0;\n carry += lo < el ? 1 : 0;\n\n var hi = ah + bh + ch + dh + eh + carry;\n return hi >>> 0;\n}\nexports.sum64_5_hi = sum64_5_hi;\n\nfunction sum64_5_lo(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {\n var lo = al + bl + cl + dl + el;\n\n return lo >>> 0;\n}\nexports.sum64_5_lo = sum64_5_lo;\n\nfunction rotr64_hi(ah, al, num) {\n var r = (al << (32 - num)) | (ah >>> num);\n return r >>> 0;\n}\nexports.rotr64_hi = rotr64_hi;\n\nfunction rotr64_lo(ah, al, num) {\n var r = (ah << (32 - num)) | (al >>> num);\n return r >>> 0;\n}\nexports.rotr64_lo = rotr64_lo;\n\nfunction shr64_hi(ah, al, num) {\n return ah >>> num;\n}\nexports.shr64_hi = shr64_hi;\n\nfunction shr64_lo(ah, al, num) {\n var r = (ah << (32 - num)) | (al >>> num);\n return r >>> 0;\n}\nexports.shr64_lo = shr64_lo;\n", "'use strict';\n\nvar utils = require('./utils');\nvar assert = require('minimalistic-assert');\n\nfunction BlockHash() {\n this.pending = null;\n this.pendingTotal = 0;\n this.blockSize = this.constructor.blockSize;\n this.outSize = this.constructor.outSize;\n this.hmacStrength = this.constructor.hmacStrength;\n this.padLength = this.constructor.padLength / 8;\n this.endian = 'big';\n\n this._delta8 = this.blockSize / 8;\n this._delta32 = this.blockSize / 32;\n}\nexports.BlockHash = BlockHash;\n\nBlockHash.prototype.update = function update(msg, enc) {\n // Convert message to array, pad it, and join into 32bit blocks\n msg = utils.toArray(msg, enc);\n if (!this.pending)\n this.pending = msg;\n else\n this.pending = this.pending.concat(msg);\n this.pendingTotal += msg.length;\n\n // Enough data, try updating\n if (this.pending.length >= this._delta8) {\n msg = this.pending;\n\n // Process pending data in blocks\n var r = msg.length % this._delta8;\n this.pending = msg.slice(msg.length - r, msg.length);\n if (this.pending.length === 0)\n this.pending = null;\n\n msg = utils.join32(msg, 0, msg.length - r, this.endian);\n for (var i = 0; i < msg.length; i += this._delta32)\n this._update(msg, i, i + this._delta32);\n }\n\n return this;\n};\n\nBlockHash.prototype.digest = function digest(enc) {\n this.update(this._pad());\n assert(this.pending === null);\n\n return this._digest(enc);\n};\n\nBlockHash.prototype._pad = function pad() {\n var len = this.pendingTotal;\n var bytes = this._delta8;\n var k = bytes - ((len + this.padLength) % bytes);\n var res = new Array(k + this.padLength);\n res[0] = 0x80;\n for (var i = 1; i < k; i++)\n res[i] = 0;\n\n // Append length\n len <<= 3;\n if (this.endian === 'big') {\n for (var t = 8; t < this.padLength; t++)\n res[i++] = 0;\n\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = (len >>> 24) & 0xff;\n res[i++] = (len >>> 16) & 0xff;\n res[i++] = (len >>> 8) & 0xff;\n res[i++] = len & 0xff;\n } else {\n res[i++] = len & 0xff;\n res[i++] = (len >>> 8) & 0xff;\n res[i++] = (len >>> 16) & 0xff;\n res[i++] = (len >>> 24) & 0xff;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n\n for (t = 8; t < this.padLength; t++)\n res[i++] = 0;\n }\n\n return res;\n};\n", "'use strict';\n\nvar utils = require('../utils');\nvar rotr32 = utils.rotr32;\n\nfunction ft_1(s, x, y, z) {\n if (s === 0)\n return ch32(x, y, z);\n if (s === 1 || s === 3)\n return p32(x, y, z);\n if (s === 2)\n return maj32(x, y, z);\n}\nexports.ft_1 = ft_1;\n\nfunction ch32(x, y, z) {\n return (x & y) ^ ((~x) & z);\n}\nexports.ch32 = ch32;\n\nfunction maj32(x, y, z) {\n return (x & y) ^ (x & z) ^ (y & z);\n}\nexports.maj32 = maj32;\n\nfunction p32(x, y, z) {\n return x ^ y ^ z;\n}\nexports.p32 = p32;\n\nfunction s0_256(x) {\n return rotr32(x, 2) ^ rotr32(x, 13) ^ rotr32(x, 22);\n}\nexports.s0_256 = s0_256;\n\nfunction s1_256(x) {\n return rotr32(x, 6) ^ rotr32(x, 11) ^ rotr32(x, 25);\n}\nexports.s1_256 = s1_256;\n\nfunction g0_256(x) {\n return rotr32(x, 7) ^ rotr32(x, 18) ^ (x >>> 3);\n}\nexports.g0_256 = g0_256;\n\nfunction g1_256(x) {\n return rotr32(x, 17) ^ rotr32(x, 19) ^ (x >>> 10);\n}\nexports.g1_256 = g1_256;\n", "'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar shaCommon = require('./common');\n\nvar rotl32 = utils.rotl32;\nvar sum32 = utils.sum32;\nvar sum32_5 = utils.sum32_5;\nvar ft_1 = shaCommon.ft_1;\nvar BlockHash = common.BlockHash;\n\nvar sha1_K = [\n 0x5A827999, 0x6ED9EBA1,\n 0x8F1BBCDC, 0xCA62C1D6\n];\n\nfunction SHA1() {\n if (!(this instanceof SHA1))\n return new SHA1();\n\n BlockHash.call(this);\n this.h = [\n 0x67452301, 0xefcdab89, 0x98badcfe,\n 0x10325476, 0xc3d2e1f0 ];\n this.W = new Array(80);\n}\n\nutils.inherits(SHA1, BlockHash);\nmodule.exports = SHA1;\n\nSHA1.blockSize = 512;\nSHA1.outSize = 160;\nSHA1.hmacStrength = 80;\nSHA1.padLength = 64;\n\nSHA1.prototype._update = function _update(msg, start) {\n var W = this.W;\n\n for (var i = 0; i < 16; i++)\n W[i] = msg[start + i];\n\n for(; i < W.length; i++)\n W[i] = rotl32(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16], 1);\n\n var a = this.h[0];\n var b = this.h[1];\n var c = this.h[2];\n var d = this.h[3];\n var e = this.h[4];\n\n for (i = 0; i < W.length; i++) {\n var s = ~~(i / 20);\n var t = sum32_5(rotl32(a, 5), ft_1(s, b, c, d), e, W[i], sha1_K[s]);\n e = d;\n d = c;\n c = rotl32(b, 30);\n b = a;\n a = t;\n }\n\n this.h[0] = sum32(this.h[0], a);\n this.h[1] = sum32(this.h[1], b);\n this.h[2] = sum32(this.h[2], c);\n this.h[3] = sum32(this.h[3], d);\n this.h[4] = sum32(this.h[4], e);\n};\n\nSHA1.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n", "'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar shaCommon = require('./common');\nvar assert = require('minimalistic-assert');\n\nvar sum32 = utils.sum32;\nvar sum32_4 = utils.sum32_4;\nvar sum32_5 = utils.sum32_5;\nvar ch32 = shaCommon.ch32;\nvar maj32 = shaCommon.maj32;\nvar s0_256 = shaCommon.s0_256;\nvar s1_256 = shaCommon.s1_256;\nvar g0_256 = shaCommon.g0_256;\nvar g1_256 = shaCommon.g1_256;\n\nvar BlockHash = common.BlockHash;\n\nvar sha256_K = [\n 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5,\n 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,\n 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3,\n 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,\n 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc,\n 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,\n 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7,\n 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,\n 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13,\n 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\n 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3,\n 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,\n 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5,\n 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,\n 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208,\n 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2\n];\n\nfunction SHA256() {\n if (!(this instanceof SHA256))\n return new SHA256();\n\n BlockHash.call(this);\n this.h = [\n 0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a,\n 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19\n ];\n this.k = sha256_K;\n this.W = new Array(64);\n}\nutils.inherits(SHA256, BlockHash);\nmodule.exports = SHA256;\n\nSHA256.blockSize = 512;\nSHA256.outSize = 256;\nSHA256.hmacStrength = 192;\nSHA256.padLength = 64;\n\nSHA256.prototype._update = function _update(msg, start) {\n var W = this.W;\n\n for (var i = 0; i < 16; i++)\n W[i] = msg[start + i];\n for (; i < W.length; i++)\n W[i] = sum32_4(g1_256(W[i - 2]), W[i - 7], g0_256(W[i - 15]), W[i - 16]);\n\n var a = this.h[0];\n var b = this.h[1];\n var c = this.h[2];\n var d = this.h[3];\n var e = this.h[4];\n var f = this.h[5];\n var g = this.h[6];\n var h = this.h[7];\n\n assert(this.k.length === W.length);\n for (i = 0; i < W.length; i++) {\n var T1 = sum32_5(h, s1_256(e), ch32(e, f, g), this.k[i], W[i]);\n var T2 = sum32(s0_256(a), maj32(a, b, c));\n h = g;\n g = f;\n f = e;\n e = sum32(d, T1);\n d = c;\n c = b;\n b = a;\n a = sum32(T1, T2);\n }\n\n this.h[0] = sum32(this.h[0], a);\n this.h[1] = sum32(this.h[1], b);\n this.h[2] = sum32(this.h[2], c);\n this.h[3] = sum32(this.h[3], d);\n this.h[4] = sum32(this.h[4], e);\n this.h[5] = sum32(this.h[5], f);\n this.h[6] = sum32(this.h[6], g);\n this.h[7] = sum32(this.h[7], h);\n};\n\nSHA256.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n", "'use strict';\n\nvar utils = require('../utils');\nvar SHA256 = require('./256');\n\nfunction SHA224() {\n if (!(this instanceof SHA224))\n return new SHA224();\n\n SHA256.call(this);\n this.h = [\n 0xc1059ed8, 0x367cd507, 0x3070dd17, 0xf70e5939,\n 0xffc00b31, 0x68581511, 0x64f98fa7, 0xbefa4fa4 ];\n}\nutils.inherits(SHA224, SHA256);\nmodule.exports = SHA224;\n\nSHA224.blockSize = 512;\nSHA224.outSize = 224;\nSHA224.hmacStrength = 192;\nSHA224.padLength = 64;\n\nSHA224.prototype._digest = function digest(enc) {\n // Just truncate output\n if (enc === 'hex')\n return utils.toHex32(this.h.slice(0, 7), 'big');\n else\n return utils.split32(this.h.slice(0, 7), 'big');\n};\n\n", "'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar assert = require('minimalistic-assert');\n\nvar rotr64_hi = utils.rotr64_hi;\nvar rotr64_lo = utils.rotr64_lo;\nvar shr64_hi = utils.shr64_hi;\nvar shr64_lo = utils.shr64_lo;\nvar sum64 = utils.sum64;\nvar sum64_hi = utils.sum64_hi;\nvar sum64_lo = utils.sum64_lo;\nvar sum64_4_hi = utils.sum64_4_hi;\nvar sum64_4_lo = utils.sum64_4_lo;\nvar sum64_5_hi = utils.sum64_5_hi;\nvar sum64_5_lo = utils.sum64_5_lo;\n\nvar BlockHash = common.BlockHash;\n\nvar sha512_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 SHA512() {\n if (!(this instanceof SHA512))\n return new SHA512();\n\n BlockHash.call(this);\n this.h = [\n 0x6a09e667, 0xf3bcc908,\n 0xbb67ae85, 0x84caa73b,\n 0x3c6ef372, 0xfe94f82b,\n 0xa54ff53a, 0x5f1d36f1,\n 0x510e527f, 0xade682d1,\n 0x9b05688c, 0x2b3e6c1f,\n 0x1f83d9ab, 0xfb41bd6b,\n 0x5be0cd19, 0x137e2179 ];\n this.k = sha512_K;\n this.W = new Array(160);\n}\nutils.inherits(SHA512, BlockHash);\nmodule.exports = SHA512;\n\nSHA512.blockSize = 1024;\nSHA512.outSize = 512;\nSHA512.hmacStrength = 192;\nSHA512.padLength = 128;\n\nSHA512.prototype._prepareBlock = function _prepareBlock(msg, start) {\n var W = this.W;\n\n // 32 x 32bit words\n for (var i = 0; i < 32; i++)\n W[i] = msg[start + i];\n for (; i < W.length; i += 2) {\n var c0_hi = g1_512_hi(W[i - 4], W[i - 3]); // i - 2\n var c0_lo = g1_512_lo(W[i - 4], W[i - 3]);\n var c1_hi = W[i - 14]; // i - 7\n var c1_lo = W[i - 13];\n var c2_hi = g0_512_hi(W[i - 30], W[i - 29]); // i - 15\n var c2_lo = g0_512_lo(W[i - 30], W[i - 29]);\n var c3_hi = W[i - 32]; // i - 16\n var c3_lo = W[i - 31];\n\n W[i] = sum64_4_hi(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo);\n W[i + 1] = sum64_4_lo(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo);\n }\n};\n\nSHA512.prototype._update = function _update(msg, start) {\n this._prepareBlock(msg, start);\n\n var W = this.W;\n\n var ah = this.h[0];\n var al = this.h[1];\n var bh = this.h[2];\n var bl = this.h[3];\n var ch = this.h[4];\n var cl = this.h[5];\n var dh = this.h[6];\n var dl = this.h[7];\n var eh = this.h[8];\n var el = this.h[9];\n var fh = this.h[10];\n var fl = this.h[11];\n var gh = this.h[12];\n var gl = this.h[13];\n var hh = this.h[14];\n var hl = this.h[15];\n\n assert(this.k.length === W.length);\n for (var i = 0; i < W.length; i += 2) {\n var c0_hi = hh;\n var c0_lo = hl;\n var c1_hi = s1_512_hi(eh, el);\n var c1_lo = s1_512_lo(eh, el);\n var c2_hi = ch64_hi(eh, el, fh, fl, gh, gl);\n var c2_lo = ch64_lo(eh, el, fh, fl, gh, gl);\n var c3_hi = this.k[i];\n var c3_lo = this.k[i + 1];\n var c4_hi = W[i];\n var c4_lo = W[i + 1];\n\n var T1_hi = sum64_5_hi(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo,\n c4_hi, c4_lo);\n var T1_lo = sum64_5_lo(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo,\n c4_hi, c4_lo);\n\n c0_hi = s0_512_hi(ah, al);\n c0_lo = s0_512_lo(ah, al);\n c1_hi = maj64_hi(ah, al, bh, bl, ch, cl);\n c1_lo = maj64_lo(ah, al, bh, bl, ch, cl);\n\n var T2_hi = sum64_hi(c0_hi, c0_lo, c1_hi, c1_lo);\n var T2_lo = sum64_lo(c0_hi, c0_lo, c1_hi, c1_lo);\n\n hh = gh;\n hl = gl;\n\n gh = fh;\n gl = fl;\n\n fh = eh;\n fl = el;\n\n eh = sum64_hi(dh, dl, T1_hi, T1_lo);\n el = sum64_lo(dl, dl, T1_hi, T1_lo);\n\n dh = ch;\n dl = cl;\n\n ch = bh;\n cl = bl;\n\n bh = ah;\n bl = al;\n\n ah = sum64_hi(T1_hi, T1_lo, T2_hi, T2_lo);\n al = sum64_lo(T1_hi, T1_lo, T2_hi, T2_lo);\n }\n\n sum64(this.h, 0, ah, al);\n sum64(this.h, 2, bh, bl);\n sum64(this.h, 4, ch, cl);\n sum64(this.h, 6, dh, dl);\n sum64(this.h, 8, eh, el);\n sum64(this.h, 10, fh, fl);\n sum64(this.h, 12, gh, gl);\n sum64(this.h, 14, hh, hl);\n};\n\nSHA512.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n\nfunction ch64_hi(xh, xl, yh, yl, zh) {\n var r = (xh & yh) ^ ((~xh) & zh);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction ch64_lo(xh, xl, yh, yl, zh, zl) {\n var r = (xl & yl) ^ ((~xl) & zl);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction maj64_hi(xh, xl, yh, yl, zh) {\n var r = (xh & yh) ^ (xh & zh) ^ (yh & zh);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction maj64_lo(xh, xl, yh, yl, zh, zl) {\n var r = (xl & yl) ^ (xl & zl) ^ (yl & zl);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s0_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 28);\n var c1_hi = rotr64_hi(xl, xh, 2); // 34\n var c2_hi = rotr64_hi(xl, xh, 7); // 39\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s0_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 28);\n var c1_lo = rotr64_lo(xl, xh, 2); // 34\n var c2_lo = rotr64_lo(xl, xh, 7); // 39\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s1_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 14);\n var c1_hi = rotr64_hi(xh, xl, 18);\n var c2_hi = rotr64_hi(xl, xh, 9); // 41\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s1_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 14);\n var c1_lo = rotr64_lo(xh, xl, 18);\n var c2_lo = rotr64_lo(xl, xh, 9); // 41\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g0_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 1);\n var c1_hi = rotr64_hi(xh, xl, 8);\n var c2_hi = shr64_hi(xh, xl, 7);\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g0_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 1);\n var c1_lo = rotr64_lo(xh, xl, 8);\n var c2_lo = shr64_lo(xh, xl, 7);\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g1_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 19);\n var c1_hi = rotr64_hi(xl, xh, 29); // 61\n var c2_hi = shr64_hi(xh, xl, 6);\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g1_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 19);\n var c1_lo = rotr64_lo(xl, xh, 29); // 61\n var c2_lo = shr64_lo(xh, xl, 6);\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n", "'use strict';\n\nvar utils = require('../utils');\n\nvar SHA512 = require('./512');\n\nfunction SHA384() {\n if (!(this instanceof SHA384))\n return new SHA384();\n\n SHA512.call(this);\n this.h = [\n 0xcbbb9d5d, 0xc1059ed8,\n 0x629a292a, 0x367cd507,\n 0x9159015a, 0x3070dd17,\n 0x152fecd8, 0xf70e5939,\n 0x67332667, 0xffc00b31,\n 0x8eb44a87, 0x68581511,\n 0xdb0c2e0d, 0x64f98fa7,\n 0x47b5481d, 0xbefa4fa4 ];\n}\nutils.inherits(SHA384, SHA512);\nmodule.exports = SHA384;\n\nSHA384.blockSize = 1024;\nSHA384.outSize = 384;\nSHA384.hmacStrength = 192;\nSHA384.padLength = 128;\n\nSHA384.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h.slice(0, 12), 'big');\n else\n return utils.split32(this.h.slice(0, 12), 'big');\n};\n", "'use strict';\n\nexports.sha1 = require('./sha/1');\nexports.sha224 = require('./sha/224');\nexports.sha256 = require('./sha/256');\nexports.sha384 = require('./sha/384');\nexports.sha512 = require('./sha/512');\n", "'use strict';\n\nvar utils = require('./utils');\nvar common = require('./common');\n\nvar rotl32 = utils.rotl32;\nvar sum32 = utils.sum32;\nvar sum32_3 = utils.sum32_3;\nvar sum32_4 = utils.sum32_4;\nvar BlockHash = common.BlockHash;\n\nfunction RIPEMD160() {\n if (!(this instanceof RIPEMD160))\n return new RIPEMD160();\n\n BlockHash.call(this);\n\n this.h = [ 0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0 ];\n this.endian = 'little';\n}\nutils.inherits(RIPEMD160, BlockHash);\nexports.ripemd160 = RIPEMD160;\n\nRIPEMD160.blockSize = 512;\nRIPEMD160.outSize = 160;\nRIPEMD160.hmacStrength = 192;\nRIPEMD160.padLength = 64;\n\nRIPEMD160.prototype._update = function update(msg, start) {\n var A = this.h[0];\n var B = this.h[1];\n var C = this.h[2];\n var D = this.h[3];\n var E = this.h[4];\n var Ah = A;\n var Bh = B;\n var Ch = C;\n var Dh = D;\n var Eh = E;\n for (var j = 0; j < 80; j++) {\n var T = sum32(\n rotl32(\n sum32_4(A, f(j, B, C, D), msg[r[j] + start], K(j)),\n s[j]),\n E);\n A = E;\n E = D;\n D = rotl32(C, 10);\n C = B;\n B = T;\n T = sum32(\n rotl32(\n sum32_4(Ah, f(79 - j, Bh, Ch, Dh), msg[rh[j] + start], Kh(j)),\n sh[j]),\n Eh);\n Ah = Eh;\n Eh = Dh;\n Dh = rotl32(Ch, 10);\n Ch = Bh;\n Bh = T;\n }\n T = sum32_3(this.h[1], C, Dh);\n this.h[1] = sum32_3(this.h[2], D, Eh);\n this.h[2] = sum32_3(this.h[3], E, Ah);\n this.h[3] = sum32_3(this.h[4], A, Bh);\n this.h[4] = sum32_3(this.h[0], B, Ch);\n this.h[0] = T;\n};\n\nRIPEMD160.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'little');\n else\n return utils.split32(this.h, 'little');\n};\n\nfunction f(j, x, y, z) {\n if (j <= 15)\n return x ^ y ^ z;\n else if (j <= 31)\n return (x & y) | ((~x) & z);\n else if (j <= 47)\n return (x | (~y)) ^ z;\n else if (j <= 63)\n return (x & z) | (y & (~z));\n else\n return x ^ (y | (~z));\n}\n\nfunction K(j) {\n if (j <= 15)\n return 0x00000000;\n else if (j <= 31)\n return 0x5a827999;\n else if (j <= 47)\n return 0x6ed9eba1;\n else if (j <= 63)\n return 0x8f1bbcdc;\n else\n return 0xa953fd4e;\n}\n\nfunction Kh(j) {\n if (j <= 15)\n return 0x50a28be6;\n else if (j <= 31)\n return 0x5c4dd124;\n else if (j <= 47)\n return 0x6d703ef3;\n else if (j <= 63)\n return 0x7a6d76e9;\n else\n return 0x00000000;\n}\n\nvar r = [\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,\n 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8,\n 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12,\n 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2,\n 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13\n];\n\nvar rh = [\n 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12,\n 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2,\n 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13,\n 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14,\n 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11\n];\n\nvar s = [\n 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8,\n 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12,\n 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5,\n 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12,\n 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6\n];\n\nvar sh = [\n 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6,\n 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11,\n 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5,\n 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8,\n 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11\n];\n", "'use strict';\n\nvar utils = require('./utils');\nvar assert = require('minimalistic-assert');\n\nfunction Hmac(hash, key, enc) {\n if (!(this instanceof Hmac))\n return new Hmac(hash, key, enc);\n this.Hash = hash;\n this.blockSize = hash.blockSize / 8;\n this.outSize = hash.outSize / 8;\n this.inner = null;\n this.outer = null;\n\n this._init(utils.toArray(key, enc));\n}\nmodule.exports = Hmac;\n\nHmac.prototype._init = function init(key) {\n // Shorten key, if needed\n if (key.length > this.blockSize)\n key = new this.Hash().update(key).digest();\n assert(key.length <= this.blockSize);\n\n // Add padding to key\n for (var i = key.length; i < this.blockSize; i++)\n key.push(0);\n\n for (i = 0; i < key.length; i++)\n key[i] ^= 0x36;\n this.inner = new this.Hash().update(key);\n\n // 0x36 ^ 0x5c = 0x6a\n for (i = 0; i < key.length; i++)\n key[i] ^= 0x6a;\n this.outer = new this.Hash().update(key);\n};\n\nHmac.prototype.update = function update(msg, enc) {\n this.inner.update(msg, enc);\n return this;\n};\n\nHmac.prototype.digest = function digest(enc) {\n this.outer.update(this.inner.digest());\n return this.outer.digest(enc);\n};\n", "var hash = exports;\n\nhash.utils = require('./hash/utils');\nhash.common = require('./hash/common');\nhash.sha = require('./hash/sha');\nhash.ripemd = require('./hash/ripemd');\nhash.hmac = require('./hash/hmac');\n\n// Proxy hash functions to the main object\nhash.sha1 = hash.sha.sha1;\nhash.sha256 = hash.sha.sha256;\nhash.sha224 = hash.sha.sha224;\nhash.sha384 = hash.sha.sha384;\nhash.sha512 = hash.sha.sha512;\nhash.ripemd160 = hash.ripemd.ripemd160;\n", "module.exports = {\n doubles: {\n step: 4,\n points: [\n [\n 'e60fce93b59e9ec53011aabc21c23e97b2a31369b87a5ae9c44ee89e2a6dec0a',\n 'f7e3507399e595929db99f34f57937101296891e44d23f0be1f32cce69616821',\n ],\n [\n '8282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f51508',\n '11f8a8098557dfe45e8256e830b60ace62d613ac2f7b17bed31b6eaff6e26caf',\n ],\n [\n '175e159f728b865a72f99cc6c6fc846de0b93833fd2222ed73fce5b551e5b739',\n 'd3506e0d9e3c79eba4ef97a51ff71f5eacb5955add24345c6efa6ffee9fed695',\n ],\n [\n '363d90d447b00c9c99ceac05b6262ee053441c7e55552ffe526bad8f83ff4640',\n '4e273adfc732221953b445397f3363145b9a89008199ecb62003c7f3bee9de9',\n ],\n [\n '8b4b5f165df3c2be8c6244b5b745638843e4a781a15bcd1b69f79a55dffdf80c',\n '4aad0a6f68d308b4b3fbd7813ab0da04f9e336546162ee56b3eff0c65fd4fd36',\n ],\n [\n '723cbaa6e5db996d6bf771c00bd548c7b700dbffa6c0e77bcb6115925232fcda',\n '96e867b5595cc498a921137488824d6e2660a0653779494801dc069d9eb39f5f',\n ],\n [\n 'eebfa4d493bebf98ba5feec812c2d3b50947961237a919839a533eca0e7dd7fa',\n '5d9a8ca3970ef0f269ee7edaf178089d9ae4cdc3a711f712ddfd4fdae1de8999',\n ],\n [\n '100f44da696e71672791d0a09b7bde459f1215a29b3c03bfefd7835b39a48db0',\n 'cdd9e13192a00b772ec8f3300c090666b7ff4a18ff5195ac0fbd5cd62bc65a09',\n ],\n [\n 'e1031be262c7ed1b1dc9227a4a04c017a77f8d4464f3b3852c8acde6e534fd2d',\n '9d7061928940405e6bb6a4176597535af292dd419e1ced79a44f18f29456a00d',\n ],\n [\n 'feea6cae46d55b530ac2839f143bd7ec5cf8b266a41d6af52d5e688d9094696d',\n 'e57c6b6c97dce1bab06e4e12bf3ecd5c981c8957cc41442d3155debf18090088',\n ],\n [\n 'da67a91d91049cdcb367be4be6ffca3cfeed657d808583de33fa978bc1ec6cb1',\n '9bacaa35481642bc41f463f7ec9780e5dec7adc508f740a17e9ea8e27a68be1d',\n ],\n [\n '53904faa0b334cdda6e000935ef22151ec08d0f7bb11069f57545ccc1a37b7c0',\n '5bc087d0bc80106d88c9eccac20d3c1c13999981e14434699dcb096b022771c8',\n ],\n [\n '8e7bcd0bd35983a7719cca7764ca906779b53a043a9b8bcaeff959f43ad86047',\n '10b7770b2a3da4b3940310420ca9514579e88e2e47fd68b3ea10047e8460372a',\n ],\n [\n '385eed34c1cdff21e6d0818689b81bde71a7f4f18397e6690a841e1599c43862',\n '283bebc3e8ea23f56701de19e9ebf4576b304eec2086dc8cc0458fe5542e5453',\n ],\n [\n '6f9d9b803ecf191637c73a4413dfa180fddf84a5947fbc9c606ed86c3fac3a7',\n '7c80c68e603059ba69b8e2a30e45c4d47ea4dd2f5c281002d86890603a842160',\n ],\n [\n '3322d401243c4e2582a2147c104d6ecbf774d163db0f5e5313b7e0e742d0e6bd',\n '56e70797e9664ef5bfb019bc4ddaf9b72805f63ea2873af624f3a2e96c28b2a0',\n ],\n [\n '85672c7d2de0b7da2bd1770d89665868741b3f9af7643397721d74d28134ab83',\n '7c481b9b5b43b2eb6374049bfa62c2e5e77f17fcc5298f44c8e3094f790313a6',\n ],\n [\n '948bf809b1988a46b06c9f1919413b10f9226c60f668832ffd959af60c82a0a',\n '53a562856dcb6646dc6b74c5d1c3418c6d4dff08c97cd2bed4cb7f88d8c8e589',\n ],\n [\n '6260ce7f461801c34f067ce0f02873a8f1b0e44dfc69752accecd819f38fd8e8',\n 'bc2da82b6fa5b571a7f09049776a1ef7ecd292238051c198c1a84e95b2b4ae17',\n ],\n [\n 'e5037de0afc1d8d43d8348414bbf4103043ec8f575bfdc432953cc8d2037fa2d',\n '4571534baa94d3b5f9f98d09fb990bddbd5f5b03ec481f10e0e5dc841d755bda',\n ],\n [\n 'e06372b0f4a207adf5ea905e8f1771b4e7e8dbd1c6a6c5b725866a0ae4fce725',\n '7a908974bce18cfe12a27bb2ad5a488cd7484a7787104870b27034f94eee31dd',\n ],\n [\n '213c7a715cd5d45358d0bbf9dc0ce02204b10bdde2a3f58540ad6908d0559754',\n '4b6dad0b5ae462507013ad06245ba190bb4850f5f36a7eeddff2c27534b458f2',\n ],\n [\n '4e7c272a7af4b34e8dbb9352a5419a87e2838c70adc62cddf0cc3a3b08fbd53c',\n '17749c766c9d0b18e16fd09f6def681b530b9614bff7dd33e0b3941817dcaae6',\n ],\n [\n 'fea74e3dbe778b1b10f238ad61686aa5c76e3db2be43057632427e2840fb27b6',\n '6e0568db9b0b13297cf674deccb6af93126b596b973f7b77701d3db7f23cb96f',\n ],\n [\n '76e64113f677cf0e10a2570d599968d31544e179b760432952c02a4417bdde39',\n 'c90ddf8dee4e95cf577066d70681f0d35e2a33d2b56d2032b4b1752d1901ac01',\n ],\n [\n 'c738c56b03b2abe1e8281baa743f8f9a8f7cc643df26cbee3ab150242bcbb891',\n '893fb578951ad2537f718f2eacbfbbbb82314eef7880cfe917e735d9699a84c3',\n ],\n [\n 'd895626548b65b81e264c7637c972877d1d72e5f3a925014372e9f6588f6c14b',\n 'febfaa38f2bc7eae728ec60818c340eb03428d632bb067e179363ed75d7d991f',\n ],\n [\n 'b8da94032a957518eb0f6433571e8761ceffc73693e84edd49150a564f676e03',\n '2804dfa44805a1e4d7c99cc9762808b092cc584d95ff3b511488e4e74efdf6e7',\n ],\n [\n 'e80fea14441fb33a7d8adab9475d7fab2019effb5156a792f1a11778e3c0df5d',\n 'eed1de7f638e00771e89768ca3ca94472d155e80af322ea9fcb4291b6ac9ec78',\n ],\n [\n 'a301697bdfcd704313ba48e51d567543f2a182031efd6915ddc07bbcc4e16070',\n '7370f91cfb67e4f5081809fa25d40f9b1735dbf7c0a11a130c0d1a041e177ea1',\n ],\n [\n '90ad85b389d6b936463f9d0512678de208cc330b11307fffab7ac63e3fb04ed4',\n 'e507a3620a38261affdcbd9427222b839aefabe1582894d991d4d48cb6ef150',\n ],\n [\n '8f68b9d2f63b5f339239c1ad981f162ee88c5678723ea3351b7b444c9ec4c0da',\n '662a9f2dba063986de1d90c2b6be215dbbea2cfe95510bfdf23cbf79501fff82',\n ],\n [\n 'e4f3fb0176af85d65ff99ff9198c36091f48e86503681e3e6686fd5053231e11',\n '1e63633ad0ef4f1c1661a6d0ea02b7286cc7e74ec951d1c9822c38576feb73bc',\n ],\n [\n '8c00fa9b18ebf331eb961537a45a4266c7034f2f0d4e1d0716fb6eae20eae29e',\n 'efa47267fea521a1a9dc343a3736c974c2fadafa81e36c54e7d2a4c66702414b',\n ],\n [\n 'e7a26ce69dd4829f3e10cec0a9e98ed3143d084f308b92c0997fddfc60cb3e41',\n '2a758e300fa7984b471b006a1aafbb18d0a6b2c0420e83e20e8a9421cf2cfd51',\n ],\n [\n 'b6459e0ee3662ec8d23540c223bcbdc571cbcb967d79424f3cf29eb3de6b80ef',\n '67c876d06f3e06de1dadf16e5661db3c4b3ae6d48e35b2ff30bf0b61a71ba45',\n ],\n [\n 'd68a80c8280bb840793234aa118f06231d6f1fc67e73c5a5deda0f5b496943e8',\n 'db8ba9fff4b586d00c4b1f9177b0e28b5b0e7b8f7845295a294c84266b133120',\n ],\n [\n '324aed7df65c804252dc0270907a30b09612aeb973449cea4095980fc28d3d5d',\n '648a365774b61f2ff130c0c35aec1f4f19213b0c7e332843967224af96ab7c84',\n ],\n [\n '4df9c14919cde61f6d51dfdbe5fee5dceec4143ba8d1ca888e8bd373fd054c96',\n '35ec51092d8728050974c23a1d85d4b5d506cdc288490192ebac06cad10d5d',\n ],\n [\n '9c3919a84a474870faed8a9c1cc66021523489054d7f0308cbfc99c8ac1f98cd',\n 'ddb84f0f4a4ddd57584f044bf260e641905326f76c64c8e6be7e5e03d4fc599d',\n ],\n [\n '6057170b1dd12fdf8de05f281d8e06bb91e1493a8b91d4cc5a21382120a959e5',\n '9a1af0b26a6a4807add9a2daf71df262465152bc3ee24c65e899be932385a2a8',\n ],\n [\n 'a576df8e23a08411421439a4518da31880cef0fba7d4df12b1a6973eecb94266',\n '40a6bf20e76640b2c92b97afe58cd82c432e10a7f514d9f3ee8be11ae1b28ec8',\n ],\n [\n '7778a78c28dec3e30a05fe9629de8c38bb30d1f5cf9a3a208f763889be58ad71',\n '34626d9ab5a5b22ff7098e12f2ff580087b38411ff24ac563b513fc1fd9f43ac',\n ],\n [\n '928955ee637a84463729fd30e7afd2ed5f96274e5ad7e5cb09eda9c06d903ac',\n 'c25621003d3f42a827b78a13093a95eeac3d26efa8a8d83fc5180e935bcd091f',\n ],\n [\n '85d0fef3ec6db109399064f3a0e3b2855645b4a907ad354527aae75163d82751',\n '1f03648413a38c0be29d496e582cf5663e8751e96877331582c237a24eb1f962',\n ],\n [\n 'ff2b0dce97eece97c1c9b6041798b85dfdfb6d8882da20308f5404824526087e',\n '493d13fef524ba188af4c4dc54d07936c7b7ed6fb90e2ceb2c951e01f0c29907',\n ],\n [\n '827fbbe4b1e880ea9ed2b2e6301b212b57f1ee148cd6dd28780e5e2cf856e241',\n 'c60f9c923c727b0b71bef2c67d1d12687ff7a63186903166d605b68baec293ec',\n ],\n [\n 'eaa649f21f51bdbae7be4ae34ce6e5217a58fdce7f47f9aa7f3b58fa2120e2b3',\n 'be3279ed5bbbb03ac69a80f89879aa5a01a6b965f13f7e59d47a5305ba5ad93d',\n ],\n [\n 'e4a42d43c5cf169d9391df6decf42ee541b6d8f0c9a137401e23632dda34d24f',\n '4d9f92e716d1c73526fc99ccfb8ad34ce886eedfa8d8e4f13a7f7131deba9414',\n ],\n [\n '1ec80fef360cbdd954160fadab352b6b92b53576a88fea4947173b9d4300bf19',\n 'aeefe93756b5340d2f3a4958a7abbf5e0146e77f6295a07b671cdc1cc107cefd',\n ],\n [\n '146a778c04670c2f91b00af4680dfa8bce3490717d58ba889ddb5928366642be',\n 'b318e0ec3354028add669827f9d4b2870aaa971d2f7e5ed1d0b297483d83efd0',\n ],\n [\n 'fa50c0f61d22e5f07e3acebb1aa07b128d0012209a28b9776d76a8793180eef9',\n '6b84c6922397eba9b72cd2872281a68a5e683293a57a213b38cd8d7d3f4f2811',\n ],\n [\n 'da1d61d0ca721a11b1a5bf6b7d88e8421a288ab5d5bba5220e53d32b5f067ec2',\n '8157f55a7c99306c79c0766161c91e2966a73899d279b48a655fba0f1ad836f1',\n ],\n [\n 'a8e282ff0c9706907215ff98e8fd416615311de0446f1e062a73b0610d064e13',\n '7f97355b8db81c09abfb7f3c5b2515888b679a3e50dd6bd6cef7c73111f4cc0c',\n ],\n [\n '174a53b9c9a285872d39e56e6913cab15d59b1fa512508c022f382de8319497c',\n 'ccc9dc37abfc9c1657b4155f2c47f9e6646b3a1d8cb9854383da13ac079afa73',\n ],\n [\n '959396981943785c3d3e57edf5018cdbe039e730e4918b3d884fdff09475b7ba',\n '2e7e552888c331dd8ba0386a4b9cd6849c653f64c8709385e9b8abf87524f2fd',\n ],\n [\n 'd2a63a50ae401e56d645a1153b109a8fcca0a43d561fba2dbb51340c9d82b151',\n 'e82d86fb6443fcb7565aee58b2948220a70f750af484ca52d4142174dcf89405',\n ],\n [\n '64587e2335471eb890ee7896d7cfdc866bacbdbd3839317b3436f9b45617e073',\n 'd99fcdd5bf6902e2ae96dd6447c299a185b90a39133aeab358299e5e9faf6589',\n ],\n [\n '8481bde0e4e4d885b3a546d3e549de042f0aa6cea250e7fd358d6c86dd45e458',\n '38ee7b8cba5404dd84a25bf39cecb2ca900a79c42b262e556d64b1b59779057e',\n ],\n [\n '13464a57a78102aa62b6979ae817f4637ffcfed3c4b1ce30bcd6303f6caf666b',\n '69be159004614580ef7e433453ccb0ca48f300a81d0942e13f495a907f6ecc27',\n ],\n [\n 'bc4a9df5b713fe2e9aef430bcc1dc97a0cd9ccede2f28588cada3a0d2d83f366',\n 'd3a81ca6e785c06383937adf4b798caa6e8a9fbfa547b16d758d666581f33c1',\n ],\n [\n '8c28a97bf8298bc0d23d8c749452a32e694b65e30a9472a3954ab30fe5324caa',\n '40a30463a3305193378fedf31f7cc0eb7ae784f0451cb9459e71dc73cbef9482',\n ],\n [\n '8ea9666139527a8c1dd94ce4f071fd23c8b350c5a4bb33748c4ba111faccae0',\n '620efabbc8ee2782e24e7c0cfb95c5d735b783be9cf0f8e955af34a30e62b945',\n ],\n [\n 'dd3625faef5ba06074669716bbd3788d89bdde815959968092f76cc4eb9a9787',\n '7a188fa3520e30d461da2501045731ca941461982883395937f68d00c644a573',\n ],\n [\n 'f710d79d9eb962297e4f6232b40e8f7feb2bc63814614d692c12de752408221e',\n 'ea98e67232d3b3295d3b535532115ccac8612c721851617526ae47a9c77bfc82',\n ],\n ],\n },\n naf: {\n wnd: 7,\n points: [\n [\n 'f9308a019258c31049344f85f89d5229b531c845836f99b08601f113bce036f9',\n '388f7b0f632de8140fe337e62a37f3566500a99934c2231b6cb9fd7584b8e672',\n ],\n [\n '2f8bde4d1a07209355b4a7250a5c5128e88b84bddc619ab7cba8d569b240efe4',\n 'd8ac222636e5e3d6d4dba9dda6c9c426f788271bab0d6840dca87d3aa6ac62d6',\n ],\n [\n '5cbdf0646e5db4eaa398f365f2ea7a0e3d419b7e0330e39ce92bddedcac4f9bc',\n '6aebca40ba255960a3178d6d861a54dba813d0b813fde7b5a5082628087264da',\n ],\n [\n 'acd484e2f0c7f65309ad178a9f559abde09796974c57e714c35f110dfc27ccbe',\n 'cc338921b0a7d9fd64380971763b61e9add888a4375f8e0f05cc262ac64f9c37',\n ],\n [\n '774ae7f858a9411e5ef4246b70c65aac5649980be5c17891bbec17895da008cb',\n 'd984a032eb6b5e190243dd56d7b7b365372db1e2dff9d6a8301d74c9c953c61b',\n ],\n [\n 'f28773c2d975288bc7d1d205c3748651b075fbc6610e58cddeeddf8f19405aa8',\n 'ab0902e8d880a89758212eb65cdaf473a1a06da521fa91f29b5cb52db03ed81',\n ],\n [\n 'd7924d4f7d43ea965a465ae3095ff41131e5946f3c85f79e44adbcf8e27e080e',\n '581e2872a86c72a683842ec228cc6defea40af2bd896d3a5c504dc9ff6a26b58',\n ],\n [\n 'defdea4cdb677750a420fee807eacf21eb9898ae79b9768766e4faa04a2d4a34',\n '4211ab0694635168e997b0ead2a93daeced1f4a04a95c0f6cfb199f69e56eb77',\n ],\n [\n '2b4ea0a797a443d293ef5cff444f4979f06acfebd7e86d277475656138385b6c',\n '85e89bc037945d93b343083b5a1c86131a01f60c50269763b570c854e5c09b7a',\n ],\n [\n '352bbf4a4cdd12564f93fa332ce333301d9ad40271f8107181340aef25be59d5',\n '321eb4075348f534d59c18259dda3e1f4a1b3b2e71b1039c67bd3d8bcf81998c',\n ],\n [\n '2fa2104d6b38d11b0230010559879124e42ab8dfeff5ff29dc9cdadd4ecacc3f',\n '2de1068295dd865b64569335bd5dd80181d70ecfc882648423ba76b532b7d67',\n ],\n [\n '9248279b09b4d68dab21a9b066edda83263c3d84e09572e269ca0cd7f5453714',\n '73016f7bf234aade5d1aa71bdea2b1ff3fc0de2a887912ffe54a32ce97cb3402',\n ],\n [\n 'daed4f2be3a8bf278e70132fb0beb7522f570e144bf615c07e996d443dee8729',\n 'a69dce4a7d6c98e8d4a1aca87ef8d7003f83c230f3afa726ab40e52290be1c55',\n ],\n [\n 'c44d12c7065d812e8acf28d7cbb19f9011ecd9e9fdf281b0e6a3b5e87d22e7db',\n '2119a460ce326cdc76c45926c982fdac0e106e861edf61c5a039063f0e0e6482',\n ],\n [\n '6a245bf6dc698504c89a20cfded60853152b695336c28063b61c65cbd269e6b4',\n 'e022cf42c2bd4a708b3f5126f16a24ad8b33ba48d0423b6efd5e6348100d8a82',\n ],\n [\n '1697ffa6fd9de627c077e3d2fe541084ce13300b0bec1146f95ae57f0d0bd6a5',\n 'b9c398f186806f5d27561506e4557433a2cf15009e498ae7adee9d63d01b2396',\n ],\n [\n '605bdb019981718b986d0f07e834cb0d9deb8360ffb7f61df982345ef27a7479',\n '2972d2de4f8d20681a78d93ec96fe23c26bfae84fb14db43b01e1e9056b8c49',\n ],\n [\n '62d14dab4150bf497402fdc45a215e10dcb01c354959b10cfe31c7e9d87ff33d',\n '80fc06bd8cc5b01098088a1950eed0db01aa132967ab472235f5642483b25eaf',\n ],\n [\n '80c60ad0040f27dade5b4b06c408e56b2c50e9f56b9b8b425e555c2f86308b6f',\n '1c38303f1cc5c30f26e66bad7fe72f70a65eed4cbe7024eb1aa01f56430bd57a',\n ],\n [\n '7a9375ad6167ad54aa74c6348cc54d344cc5dc9487d847049d5eabb0fa03c8fb',\n 'd0e3fa9eca8726909559e0d79269046bdc59ea10c70ce2b02d499ec224dc7f7',\n ],\n [\n 'd528ecd9b696b54c907a9ed045447a79bb408ec39b68df504bb51f459bc3ffc9',\n 'eecf41253136e5f99966f21881fd656ebc4345405c520dbc063465b521409933',\n ],\n [\n '49370a4b5f43412ea25f514e8ecdad05266115e4a7ecb1387231808f8b45963',\n '758f3f41afd6ed428b3081b0512fd62a54c3f3afbb5b6764b653052a12949c9a',\n ],\n [\n '77f230936ee88cbbd73df930d64702ef881d811e0e1498e2f1c13eb1fc345d74',\n '958ef42a7886b6400a08266e9ba1b37896c95330d97077cbbe8eb3c7671c60d6',\n ],\n [\n 'f2dac991cc4ce4b9ea44887e5c7c0bce58c80074ab9d4dbaeb28531b7739f530',\n 'e0dedc9b3b2f8dad4da1f32dec2531df9eb5fbeb0598e4fd1a117dba703a3c37',\n ],\n [\n '463b3d9f662621fb1b4be8fbbe2520125a216cdfc9dae3debcba4850c690d45b',\n '5ed430d78c296c3543114306dd8622d7c622e27c970a1de31cb377b01af7307e',\n ],\n [\n 'f16f804244e46e2a09232d4aff3b59976b98fac14328a2d1a32496b49998f247',\n 'cedabd9b82203f7e13d206fcdf4e33d92a6c53c26e5cce26d6579962c4e31df6',\n ],\n [\n 'caf754272dc84563b0352b7a14311af55d245315ace27c65369e15f7151d41d1',\n 'cb474660ef35f5f2a41b643fa5e460575f4fa9b7962232a5c32f908318a04476',\n ],\n [\n '2600ca4b282cb986f85d0f1709979d8b44a09c07cb86d7c124497bc86f082120',\n '4119b88753c15bd6a693b03fcddbb45d5ac6be74ab5f0ef44b0be9475a7e4b40',\n ],\n [\n '7635ca72d7e8432c338ec53cd12220bc01c48685e24f7dc8c602a7746998e435',\n '91b649609489d613d1d5e590f78e6d74ecfc061d57048bad9e76f302c5b9c61',\n ],\n [\n '754e3239f325570cdbbf4a87deee8a66b7f2b33479d468fbc1a50743bf56cc18',\n '673fb86e5bda30fb3cd0ed304ea49a023ee33d0197a695d0c5d98093c536683',\n ],\n [\n 'e3e6bd1071a1e96aff57859c82d570f0330800661d1c952f9fe2694691d9b9e8',\n '59c9e0bba394e76f40c0aa58379a3cb6a5a2283993e90c4167002af4920e37f5',\n ],\n [\n '186b483d056a033826ae73d88f732985c4ccb1f32ba35f4b4cc47fdcf04aa6eb',\n '3b952d32c67cf77e2e17446e204180ab21fb8090895138b4a4a797f86e80888b',\n ],\n [\n 'df9d70a6b9876ce544c98561f4be4f725442e6d2b737d9c91a8321724ce0963f',\n '55eb2dafd84d6ccd5f862b785dc39d4ab157222720ef9da217b8c45cf2ba2417',\n ],\n [\n '5edd5cc23c51e87a497ca815d5dce0f8ab52554f849ed8995de64c5f34ce7143',\n 'efae9c8dbc14130661e8cec030c89ad0c13c66c0d17a2905cdc706ab7399a868',\n ],\n [\n '290798c2b6476830da12fe02287e9e777aa3fba1c355b17a722d362f84614fba',\n 'e38da76dcd440621988d00bcf79af25d5b29c094db2a23146d003afd41943e7a',\n ],\n [\n 'af3c423a95d9f5b3054754efa150ac39cd29552fe360257362dfdecef4053b45',\n 'f98a3fd831eb2b749a93b0e6f35cfb40c8cd5aa667a15581bc2feded498fd9c6',\n ],\n [\n '766dbb24d134e745cccaa28c99bf274906bb66b26dcf98df8d2fed50d884249a',\n '744b1152eacbe5e38dcc887980da38b897584a65fa06cedd2c924f97cbac5996',\n ],\n [\n '59dbf46f8c94759ba21277c33784f41645f7b44f6c596a58ce92e666191abe3e',\n 'c534ad44175fbc300f4ea6ce648309a042ce739a7919798cd85e216c4a307f6e',\n ],\n [\n 'f13ada95103c4537305e691e74e9a4a8dd647e711a95e73cb62dc6018cfd87b8',\n 'e13817b44ee14de663bf4bc808341f326949e21a6a75c2570778419bdaf5733d',\n ],\n [\n '7754b4fa0e8aced06d4167a2c59cca4cda1869c06ebadfb6488550015a88522c',\n '30e93e864e669d82224b967c3020b8fa8d1e4e350b6cbcc537a48b57841163a2',\n ],\n [\n '948dcadf5990e048aa3874d46abef9d701858f95de8041d2a6828c99e2262519',\n 'e491a42537f6e597d5d28a3224b1bc25df9154efbd2ef1d2cbba2cae5347d57e',\n ],\n [\n '7962414450c76c1689c7b48f8202ec37fb224cf5ac0bfa1570328a8a3d7c77ab',\n '100b610ec4ffb4760d5c1fc133ef6f6b12507a051f04ac5760afa5b29db83437',\n ],\n [\n '3514087834964b54b15b160644d915485a16977225b8847bb0dd085137ec47ca',\n 'ef0afbb2056205448e1652c48e8127fc6039e77c15c2378b7e7d15a0de293311',\n ],\n [\n 'd3cc30ad6b483e4bc79ce2c9dd8bc54993e947eb8df787b442943d3f7b527eaf',\n '8b378a22d827278d89c5e9be8f9508ae3c2ad46290358630afb34db04eede0a4',\n ],\n [\n '1624d84780732860ce1c78fcbfefe08b2b29823db913f6493975ba0ff4847610',\n '68651cf9b6da903e0914448c6cd9d4ca896878f5282be4c8cc06e2a404078575',\n ],\n [\n '733ce80da955a8a26902c95633e62a985192474b5af207da6df7b4fd5fc61cd4',\n 'f5435a2bd2badf7d485a4d8b8db9fcce3e1ef8e0201e4578c54673bc1dc5ea1d',\n ],\n [\n '15d9441254945064cf1a1c33bbd3b49f8966c5092171e699ef258dfab81c045c',\n 'd56eb30b69463e7234f5137b73b84177434800bacebfc685fc37bbe9efe4070d',\n ],\n [\n 'a1d0fcf2ec9de675b612136e5ce70d271c21417c9d2b8aaaac138599d0717940',\n 'edd77f50bcb5a3cab2e90737309667f2641462a54070f3d519212d39c197a629',\n ],\n [\n 'e22fbe15c0af8ccc5780c0735f84dbe9a790badee8245c06c7ca37331cb36980',\n 'a855babad5cd60c88b430a69f53a1a7a38289154964799be43d06d77d31da06',\n ],\n [\n '311091dd9860e8e20ee13473c1155f5f69635e394704eaa74009452246cfa9b3',\n '66db656f87d1f04fffd1f04788c06830871ec5a64feee685bd80f0b1286d8374',\n ],\n [\n '34c1fd04d301be89b31c0442d3e6ac24883928b45a9340781867d4232ec2dbdf',\n '9414685e97b1b5954bd46f730174136d57f1ceeb487443dc5321857ba73abee',\n ],\n [\n 'f219ea5d6b54701c1c14de5b557eb42a8d13f3abbcd08affcc2a5e6b049b8d63',\n '4cb95957e83d40b0f73af4544cccf6b1f4b08d3c07b27fb8d8c2962a400766d1',\n ],\n [\n 'd7b8740f74a8fbaab1f683db8f45de26543a5490bca627087236912469a0b448',\n 'fa77968128d9c92ee1010f337ad4717eff15db5ed3c049b3411e0315eaa4593b',\n ],\n [\n '32d31c222f8f6f0ef86f7c98d3a3335ead5bcd32abdd94289fe4d3091aa824bf',\n '5f3032f5892156e39ccd3d7915b9e1da2e6dac9e6f26e961118d14b8462e1661',\n ],\n [\n '7461f371914ab32671045a155d9831ea8793d77cd59592c4340f86cbc18347b5',\n '8ec0ba238b96bec0cbdddcae0aa442542eee1ff50c986ea6b39847b3cc092ff6',\n ],\n [\n 'ee079adb1df1860074356a25aa38206a6d716b2c3e67453d287698bad7b2b2d6',\n '8dc2412aafe3be5c4c5f37e0ecc5f9f6a446989af04c4e25ebaac479ec1c8c1e',\n ],\n [\n '16ec93e447ec83f0467b18302ee620f7e65de331874c9dc72bfd8616ba9da6b5',\n '5e4631150e62fb40d0e8c2a7ca5804a39d58186a50e497139626778e25b0674d',\n ],\n [\n 'eaa5f980c245f6f038978290afa70b6bd8855897f98b6aa485b96065d537bd99',\n 'f65f5d3e292c2e0819a528391c994624d784869d7e6ea67fb18041024edc07dc',\n ],\n [\n '78c9407544ac132692ee1910a02439958ae04877151342ea96c4b6b35a49f51',\n 'f3e0319169eb9b85d5404795539a5e68fa1fbd583c064d2462b675f194a3ddb4',\n ],\n [\n '494f4be219a1a77016dcd838431aea0001cdc8ae7a6fc688726578d9702857a5',\n '42242a969283a5f339ba7f075e36ba2af925ce30d767ed6e55f4b031880d562c',\n ],\n [\n 'a598a8030da6d86c6bc7f2f5144ea549d28211ea58faa70ebf4c1e665c1fe9b5',\n '204b5d6f84822c307e4b4a7140737aec23fc63b65b35f86a10026dbd2d864e6b',\n ],\n [\n 'c41916365abb2b5d09192f5f2dbeafec208f020f12570a184dbadc3e58595997',\n '4f14351d0087efa49d245b328984989d5caf9450f34bfc0ed16e96b58fa9913',\n ],\n [\n '841d6063a586fa475a724604da03bc5b92a2e0d2e0a36acfe4c73a5514742881',\n '73867f59c0659e81904f9a1c7543698e62562d6744c169ce7a36de01a8d6154',\n ],\n [\n '5e95bb399a6971d376026947f89bde2f282b33810928be4ded112ac4d70e20d5',\n '39f23f366809085beebfc71181313775a99c9aed7d8ba38b161384c746012865',\n ],\n [\n '36e4641a53948fd476c39f8a99fd974e5ec07564b5315d8bf99471bca0ef2f66',\n 'd2424b1b1abe4eb8164227b085c9aa9456ea13493fd563e06fd51cf5694c78fc',\n ],\n [\n '336581ea7bfbbb290c191a2f507a41cf5643842170e914faeab27c2c579f726',\n 'ead12168595fe1be99252129b6e56b3391f7ab1410cd1e0ef3dcdcabd2fda224',\n ],\n [\n '8ab89816dadfd6b6a1f2634fcf00ec8403781025ed6890c4849742706bd43ede',\n '6fdcef09f2f6d0a044e654aef624136f503d459c3e89845858a47a9129cdd24e',\n ],\n [\n '1e33f1a746c9c5778133344d9299fcaa20b0938e8acff2544bb40284b8c5fb94',\n '60660257dd11b3aa9c8ed618d24edff2306d320f1d03010e33a7d2057f3b3b6',\n ],\n [\n '85b7c1dcb3cec1b7ee7f30ded79dd20a0ed1f4cc18cbcfcfa410361fd8f08f31',\n '3d98a9cdd026dd43f39048f25a8847f4fcafad1895d7a633c6fed3c35e999511',\n ],\n [\n '29df9fbd8d9e46509275f4b125d6d45d7fbe9a3b878a7af872a2800661ac5f51',\n 'b4c4fe99c775a606e2d8862179139ffda61dc861c019e55cd2876eb2a27d84b',\n ],\n [\n 'a0b1cae06b0a847a3fea6e671aaf8adfdfe58ca2f768105c8082b2e449fce252',\n 'ae434102edde0958ec4b19d917a6a28e6b72da1834aff0e650f049503a296cf2',\n ],\n [\n '4e8ceafb9b3e9a136dc7ff67e840295b499dfb3b2133e4ba113f2e4c0e121e5',\n 'cf2174118c8b6d7a4b48f6d534ce5c79422c086a63460502b827ce62a326683c',\n ],\n [\n 'd24a44e047e19b6f5afb81c7ca2f69080a5076689a010919f42725c2b789a33b',\n '6fb8d5591b466f8fc63db50f1c0f1c69013f996887b8244d2cdec417afea8fa3',\n ],\n [\n 'ea01606a7a6c9cdd249fdfcfacb99584001edd28abbab77b5104e98e8e3b35d4',\n '322af4908c7312b0cfbfe369f7a7b3cdb7d4494bc2823700cfd652188a3ea98d',\n ],\n [\n 'af8addbf2b661c8a6c6328655eb96651252007d8c5ea31be4ad196de8ce2131f',\n '6749e67c029b85f52a034eafd096836b2520818680e26ac8f3dfbcdb71749700',\n ],\n [\n 'e3ae1974566ca06cc516d47e0fb165a674a3dabcfca15e722f0e3450f45889',\n '2aeabe7e4531510116217f07bf4d07300de97e4874f81f533420a72eeb0bd6a4',\n ],\n [\n '591ee355313d99721cf6993ffed1e3e301993ff3ed258802075ea8ced397e246',\n 'b0ea558a113c30bea60fc4775460c7901ff0b053d25ca2bdeee98f1a4be5d196',\n ],\n [\n '11396d55fda54c49f19aa97318d8da61fa8584e47b084945077cf03255b52984',\n '998c74a8cd45ac01289d5833a7beb4744ff536b01b257be4c5767bea93ea57a4',\n ],\n [\n '3c5d2a1ba39c5a1790000738c9e0c40b8dcdfd5468754b6405540157e017aa7a',\n 'b2284279995a34e2f9d4de7396fc18b80f9b8b9fdd270f6661f79ca4c81bd257',\n ],\n [\n 'cc8704b8a60a0defa3a99a7299f2e9c3fbc395afb04ac078425ef8a1793cc030',\n 'bdd46039feed17881d1e0862db347f8cf395b74fc4bcdc4e940b74e3ac1f1b13',\n ],\n [\n 'c533e4f7ea8555aacd9777ac5cad29b97dd4defccc53ee7ea204119b2889b197',\n '6f0a256bc5efdf429a2fb6242f1a43a2d9b925bb4a4b3a26bb8e0f45eb596096',\n ],\n [\n 'c14f8f2ccb27d6f109f6d08d03cc96a69ba8c34eec07bbcf566d48e33da6593',\n 'c359d6923bb398f7fd4473e16fe1c28475b740dd098075e6c0e8649113dc3a38',\n ],\n [\n 'a6cbc3046bc6a450bac24789fa17115a4c9739ed75f8f21ce441f72e0b90e6ef',\n '21ae7f4680e889bb130619e2c0f95a360ceb573c70603139862afd617fa9b9f',\n ],\n [\n '347d6d9a02c48927ebfb86c1359b1caf130a3c0267d11ce6344b39f99d43cc38',\n '60ea7f61a353524d1c987f6ecec92f086d565ab687870cb12689ff1e31c74448',\n ],\n [\n 'da6545d2181db8d983f7dcb375ef5866d47c67b1bf31c8cf855ef7437b72656a',\n '49b96715ab6878a79e78f07ce5680c5d6673051b4935bd897fea824b77dc208a',\n ],\n [\n 'c40747cc9d012cb1a13b8148309c6de7ec25d6945d657146b9d5994b8feb1111',\n '5ca560753be2a12fc6de6caf2cb489565db936156b9514e1bb5e83037e0fa2d4',\n ],\n [\n '4e42c8ec82c99798ccf3a610be870e78338c7f713348bd34c8203ef4037f3502',\n '7571d74ee5e0fb92a7a8b33a07783341a5492144cc54bcc40a94473693606437',\n ],\n [\n '3775ab7089bc6af823aba2e1af70b236d251cadb0c86743287522a1b3b0dedea',\n 'be52d107bcfa09d8bcb9736a828cfa7fac8db17bf7a76a2c42ad961409018cf7',\n ],\n [\n 'cee31cbf7e34ec379d94fb814d3d775ad954595d1314ba8846959e3e82f74e26',\n '8fd64a14c06b589c26b947ae2bcf6bfa0149ef0be14ed4d80f448a01c43b1c6d',\n ],\n [\n 'b4f9eaea09b6917619f6ea6a4eb5464efddb58fd45b1ebefcdc1a01d08b47986',\n '39e5c9925b5a54b07433a4f18c61726f8bb131c012ca542eb24a8ac07200682a',\n ],\n [\n 'd4263dfc3d2df923a0179a48966d30ce84e2515afc3dccc1b77907792ebcc60e',\n '62dfaf07a0f78feb30e30d6295853ce189e127760ad6cf7fae164e122a208d54',\n ],\n [\n '48457524820fa65a4f8d35eb6930857c0032acc0a4a2de422233eeda897612c4',\n '25a748ab367979d98733c38a1fa1c2e7dc6cc07db2d60a9ae7a76aaa49bd0f77',\n ],\n [\n 'dfeeef1881101f2cb11644f3a2afdfc2045e19919152923f367a1767c11cceda',\n 'ecfb7056cf1de042f9420bab396793c0c390bde74b4bbdff16a83ae09a9a7517',\n ],\n [\n '6d7ef6b17543f8373c573f44e1f389835d89bcbc6062ced36c82df83b8fae859',\n 'cd450ec335438986dfefa10c57fea9bcc521a0959b2d80bbf74b190dca712d10',\n ],\n [\n 'e75605d59102a5a2684500d3b991f2e3f3c88b93225547035af25af66e04541f',\n 'f5c54754a8f71ee540b9b48728473e314f729ac5308b06938360990e2bfad125',\n ],\n [\n 'eb98660f4c4dfaa06a2be453d5020bc99a0c2e60abe388457dd43fefb1ed620c',\n '6cb9a8876d9cb8520609af3add26cd20a0a7cd8a9411131ce85f44100099223e',\n ],\n [\n '13e87b027d8514d35939f2e6892b19922154596941888336dc3563e3b8dba942',\n 'fef5a3c68059a6dec5d624114bf1e91aac2b9da568d6abeb2570d55646b8adf1',\n ],\n [\n 'ee163026e9fd6fe017c38f06a5be6fc125424b371ce2708e7bf4491691e5764a',\n '1acb250f255dd61c43d94ccc670d0f58f49ae3fa15b96623e5430da0ad6c62b2',\n ],\n [\n 'b268f5ef9ad51e4d78de3a750c2dc89b1e626d43505867999932e5db33af3d80',\n '5f310d4b3c99b9ebb19f77d41c1dee018cf0d34fd4191614003e945a1216e423',\n ],\n [\n 'ff07f3118a9df035e9fad85eb6c7bfe42b02f01ca99ceea3bf7ffdba93c4750d',\n '438136d603e858a3a5c440c38eccbaddc1d2942114e2eddd4740d098ced1f0d8',\n ],\n [\n '8d8b9855c7c052a34146fd20ffb658bea4b9f69e0d825ebec16e8c3ce2b526a1',\n 'cdb559eedc2d79f926baf44fb84ea4d44bcf50fee51d7ceb30e2e7f463036758',\n ],\n [\n '52db0b5384dfbf05bfa9d472d7ae26dfe4b851ceca91b1eba54263180da32b63',\n 'c3b997d050ee5d423ebaf66a6db9f57b3180c902875679de924b69d84a7b375',\n ],\n [\n 'e62f9490d3d51da6395efd24e80919cc7d0f29c3f3fa48c6fff543becbd43352',\n '6d89ad7ba4876b0b22c2ca280c682862f342c8591f1daf5170e07bfd9ccafa7d',\n ],\n [\n '7f30ea2476b399b4957509c88f77d0191afa2ff5cb7b14fd6d8e7d65aaab1193',\n 'ca5ef7d4b231c94c3b15389a5f6311e9daff7bb67b103e9880ef4bff637acaec',\n ],\n [\n '5098ff1e1d9f14fb46a210fada6c903fef0fb7b4a1dd1d9ac60a0361800b7a00',\n '9731141d81fc8f8084d37c6e7542006b3ee1b40d60dfe5362a5b132fd17ddc0',\n ],\n [\n '32b78c7de9ee512a72895be6b9cbefa6e2f3c4ccce445c96b9f2c81e2778ad58',\n 'ee1849f513df71e32efc3896ee28260c73bb80547ae2275ba497237794c8753c',\n ],\n [\n 'e2cb74fddc8e9fbcd076eef2a7c72b0ce37d50f08269dfc074b581550547a4f7',\n 'd3aa2ed71c9dd2247a62df062736eb0baddea9e36122d2be8641abcb005cc4a4',\n ],\n [\n '8438447566d4d7bedadc299496ab357426009a35f235cb141be0d99cd10ae3a8',\n 'c4e1020916980a4da5d01ac5e6ad330734ef0d7906631c4f2390426b2edd791f',\n ],\n [\n '4162d488b89402039b584c6fc6c308870587d9c46f660b878ab65c82c711d67e',\n '67163e903236289f776f22c25fb8a3afc1732f2b84b4e95dbda47ae5a0852649',\n ],\n [\n '3fad3fa84caf0f34f0f89bfd2dcf54fc175d767aec3e50684f3ba4a4bf5f683d',\n 'cd1bc7cb6cc407bb2f0ca647c718a730cf71872e7d0d2a53fa20efcdfe61826',\n ],\n [\n '674f2600a3007a00568c1a7ce05d0816c1fb84bf1370798f1c69532faeb1a86b',\n '299d21f9413f33b3edf43b257004580b70db57da0b182259e09eecc69e0d38a5',\n ],\n [\n 'd32f4da54ade74abb81b815ad1fb3b263d82d6c692714bcff87d29bd5ee9f08f',\n 'f9429e738b8e53b968e99016c059707782e14f4535359d582fc416910b3eea87',\n ],\n [\n '30e4e670435385556e593657135845d36fbb6931f72b08cb1ed954f1e3ce3ff6',\n '462f9bce619898638499350113bbc9b10a878d35da70740dc695a559eb88db7b',\n ],\n [\n 'be2062003c51cc3004682904330e4dee7f3dcd10b01e580bf1971b04d4cad297',\n '62188bc49d61e5428573d48a74e1c655b1c61090905682a0d5558ed72dccb9bc',\n ],\n [\n '93144423ace3451ed29e0fb9ac2af211cb6e84a601df5993c419859fff5df04a',\n '7c10dfb164c3425f5c71a3f9d7992038f1065224f72bb9d1d902a6d13037b47c',\n ],\n [\n 'b015f8044f5fcbdcf21ca26d6c34fb8197829205c7b7d2a7cb66418c157b112c',\n 'ab8c1e086d04e813744a655b2df8d5f83b3cdc6faa3088c1d3aea1454e3a1d5f',\n ],\n [\n 'd5e9e1da649d97d89e4868117a465a3a4f8a18de57a140d36b3f2af341a21b52',\n '4cb04437f391ed73111a13cc1d4dd0db1693465c2240480d8955e8592f27447a',\n ],\n [\n 'd3ae41047dd7ca065dbf8ed77b992439983005cd72e16d6f996a5316d36966bb',\n 'bd1aeb21ad22ebb22a10f0303417c6d964f8cdd7df0aca614b10dc14d125ac46',\n ],\n [\n '463e2763d885f958fc66cdd22800f0a487197d0a82e377b49f80af87c897b065',\n 'bfefacdb0e5d0fd7df3a311a94de062b26b80c61fbc97508b79992671ef7ca7f',\n ],\n [\n '7985fdfd127c0567c6f53ec1bb63ec3158e597c40bfe747c83cddfc910641917',\n '603c12daf3d9862ef2b25fe1de289aed24ed291e0ec6708703a5bd567f32ed03',\n ],\n [\n '74a1ad6b5f76e39db2dd249410eac7f99e74c59cb83d2d0ed5ff1543da7703e9',\n 'cc6157ef18c9c63cd6193d83631bbea0093e0968942e8c33d5737fd790e0db08',\n ],\n [\n '30682a50703375f602d416664ba19b7fc9bab42c72747463a71d0896b22f6da3',\n '553e04f6b018b4fa6c8f39e7f311d3176290d0e0f19ca73f17714d9977a22ff8',\n ],\n [\n '9e2158f0d7c0d5f26c3791efefa79597654e7a2b2464f52b1ee6c1347769ef57',\n '712fcdd1b9053f09003a3481fa7762e9ffd7c8ef35a38509e2fbf2629008373',\n ],\n [\n '176e26989a43c9cfeba4029c202538c28172e566e3c4fce7322857f3be327d66',\n 'ed8cc9d04b29eb877d270b4878dc43c19aefd31f4eee09ee7b47834c1fa4b1c3',\n ],\n [\n '75d46efea3771e6e68abb89a13ad747ecf1892393dfc4f1b7004788c50374da8',\n '9852390a99507679fd0b86fd2b39a868d7efc22151346e1a3ca4726586a6bed8',\n ],\n [\n '809a20c67d64900ffb698c4c825f6d5f2310fb0451c869345b7319f645605721',\n '9e994980d9917e22b76b061927fa04143d096ccc54963e6a5ebfa5f3f8e286c1',\n ],\n [\n '1b38903a43f7f114ed4500b4eac7083fdefece1cf29c63528d563446f972c180',\n '4036edc931a60ae889353f77fd53de4a2708b26b6f5da72ad3394119daf408f9',\n ],\n ],\n },\n};\n", "'use strict';\n\nvar curves = exports;\n\nvar hash = require('hash.js');\nvar curve = require('./curve');\nvar utils = require('./utils');\n\nvar assert = utils.assert;\n\nfunction PresetCurve(options) {\n if (options.type === 'short')\n this.curve = new curve.short(options);\n else if (options.type === 'edwards')\n this.curve = new curve.edwards(options);\n else\n this.curve = new curve.mont(options);\n this.g = this.curve.g;\n this.n = this.curve.n;\n this.hash = options.hash;\n\n assert(this.g.validate(), 'Invalid curve');\n assert(this.g.mul(this.n).isInfinity(), 'Invalid curve, G*N != O');\n}\ncurves.PresetCurve = PresetCurve;\n\nfunction defineCurve(name, options) {\n Object.defineProperty(curves, name, {\n configurable: true,\n enumerable: true,\n get: function() {\n var curve = new PresetCurve(options);\n Object.defineProperty(curves, name, {\n configurable: true,\n enumerable: true,\n value: curve,\n });\n return curve;\n },\n });\n}\n\ndefineCurve('p192', {\n type: 'short',\n prime: 'p192',\n p: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff',\n a: 'ffffffff ffffffff ffffffff fffffffe ffffffff fffffffc',\n b: '64210519 e59c80e7 0fa7e9ab 72243049 feb8deec c146b9b1',\n n: 'ffffffff ffffffff ffffffff 99def836 146bc9b1 b4d22831',\n hash: hash.sha256,\n gRed: false,\n g: [\n '188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012',\n '07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811',\n ],\n});\n\ndefineCurve('p224', {\n type: 'short',\n prime: 'p224',\n p: 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001',\n a: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff fffffffe',\n b: 'b4050a85 0c04b3ab f5413256 5044b0b7 d7bfd8ba 270b3943 2355ffb4',\n n: 'ffffffff ffffffff ffffffff ffff16a2 e0b8f03e 13dd2945 5c5c2a3d',\n hash: hash.sha256,\n gRed: false,\n g: [\n 'b70e0cbd 6bb4bf7f 321390b9 4a03c1d3 56c21122 343280d6 115c1d21',\n 'bd376388 b5f723fb 4c22dfe6 cd4375a0 5a074764 44d58199 85007e34',\n ],\n});\n\ndefineCurve('p256', {\n type: 'short',\n prime: null,\n p: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff ffffffff',\n a: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff fffffffc',\n b: '5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6 3bce3c3e 27d2604b',\n n: 'ffffffff 00000000 ffffffff ffffffff bce6faad a7179e84 f3b9cac2 fc632551',\n hash: hash.sha256,\n gRed: false,\n g: [\n '6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296',\n '4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5',\n ],\n});\n\ndefineCurve('p384', {\n type: 'short',\n prime: null,\n p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'fffffffe ffffffff 00000000 00000000 ffffffff',\n a: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'fffffffe ffffffff 00000000 00000000 fffffffc',\n b: 'b3312fa7 e23ee7e4 988e056b e3f82d19 181d9c6e fe814112 0314088f ' +\n '5013875a c656398d 8a2ed19d 2a85c8ed d3ec2aef',\n n: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff c7634d81 ' +\n 'f4372ddf 581a0db2 48b0a77a ecec196a ccc52973',\n hash: hash.sha384,\n gRed: false,\n g: [\n 'aa87ca22 be8b0537 8eb1c71e f320ad74 6e1d3b62 8ba79b98 59f741e0 82542a38 ' +\n '5502f25d bf55296c 3a545e38 72760ab7',\n '3617de4a 96262c6f 5d9e98bf 9292dc29 f8f41dbd 289a147c e9da3113 b5f0b8c0 ' +\n '0a60b1ce 1d7e819d 7a431d7c 90ea0e5f',\n ],\n});\n\ndefineCurve('p521', {\n type: 'short',\n prime: null,\n p: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff',\n a: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff fffffffc',\n b: '00000051 953eb961 8e1c9a1f 929a21a0 b68540ee a2da725b ' +\n '99b315f3 b8b48991 8ef109e1 56193951 ec7e937b 1652c0bd ' +\n '3bb1bf07 3573df88 3d2c34f1 ef451fd4 6b503f00',\n n: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff fffffffa 51868783 bf2f966b 7fcc0148 ' +\n 'f709a5d0 3bb5c9b8 899c47ae bb6fb71e 91386409',\n hash: hash.sha512,\n gRed: false,\n g: [\n '000000c6 858e06b7 0404e9cd 9e3ecb66 2395b442 9c648139 ' +\n '053fb521 f828af60 6b4d3dba a14b5e77 efe75928 fe1dc127 ' +\n 'a2ffa8de 3348b3c1 856a429b f97e7e31 c2e5bd66',\n '00000118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9 98f54449 ' +\n '579b4468 17afbd17 273e662c 97ee7299 5ef42640 c550b901 ' +\n '3fad0761 353c7086 a272c240 88be9476 9fd16650',\n ],\n});\n\ndefineCurve('curve25519', {\n type: 'mont',\n prime: 'p25519',\n p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed',\n a: '76d06',\n b: '1',\n n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed',\n hash: hash.sha256,\n gRed: false,\n g: [\n '9',\n ],\n});\n\ndefineCurve('ed25519', {\n type: 'edwards',\n prime: 'p25519',\n p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed',\n a: '-1',\n c: '1',\n // -121665 * (121666^(-1)) (mod P)\n d: '52036cee2b6ffe73 8cc740797779e898 00700a4d4141d8ab 75eb4dca135978a3',\n n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed',\n hash: hash.sha256,\n gRed: false,\n g: [\n '216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a',\n\n // 4/5\n '6666666666666666666666666666666666666666666666666666666666666658',\n ],\n});\n\nvar pre;\ntry {\n pre = require('./precomputed/secp256k1');\n} catch (e) {\n pre = undefined;\n}\n\ndefineCurve('secp256k1', {\n type: 'short',\n prime: 'k256',\n p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f',\n a: '0',\n b: '7',\n n: 'ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141',\n h: '1',\n hash: hash.sha256,\n\n // Precomputed endomorphism\n beta: '7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee',\n lambda: '5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72',\n basis: [\n {\n a: '3086d221a7d46bcde86c90e49284eb15',\n b: '-e4437ed6010e88286f547fa90abfe4c3',\n },\n {\n a: '114ca50f7a8e2f3f657c1108d9d44cfd8',\n b: '3086d221a7d46bcde86c90e49284eb15',\n },\n ],\n\n gRed: false,\n g: [\n '79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798',\n '483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8',\n pre,\n ],\n});\n", "'use strict';\n\nvar hash = require('hash.js');\nvar utils = require('minimalistic-crypto-utils');\nvar assert = require('minimalistic-assert');\n\nfunction HmacDRBG(options) {\n if (!(this instanceof HmacDRBG))\n return new HmacDRBG(options);\n this.hash = options.hash;\n this.predResist = !!options.predResist;\n\n this.outLen = this.hash.outSize;\n this.minEntropy = options.minEntropy || this.hash.hmacStrength;\n\n this._reseed = null;\n this.reseedInterval = null;\n this.K = null;\n this.V = null;\n\n var entropy = utils.toArray(options.entropy, options.entropyEnc || 'hex');\n var nonce = utils.toArray(options.nonce, options.nonceEnc || 'hex');\n var pers = utils.toArray(options.pers, options.persEnc || 'hex');\n assert(entropy.length >= (this.minEntropy / 8),\n 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');\n this._init(entropy, nonce, pers);\n}\nmodule.exports = HmacDRBG;\n\nHmacDRBG.prototype._init = function init(entropy, nonce, pers) {\n var seed = entropy.concat(nonce).concat(pers);\n\n this.K = new Array(this.outLen / 8);\n this.V = new Array(this.outLen / 8);\n for (var i = 0; i < this.V.length; i++) {\n this.K[i] = 0x00;\n this.V[i] = 0x01;\n }\n\n this._update(seed);\n this._reseed = 1;\n this.reseedInterval = 0x1000000000000; // 2^48\n};\n\nHmacDRBG.prototype._hmac = function hmac() {\n return new hash.hmac(this.hash, this.K);\n};\n\nHmacDRBG.prototype._update = function update(seed) {\n var kmac = this._hmac()\n .update(this.V)\n .update([ 0x00 ]);\n if (seed)\n kmac = kmac.update(seed);\n this.K = kmac.digest();\n this.V = this._hmac().update(this.V).digest();\n if (!seed)\n return;\n\n this.K = this._hmac()\n .update(this.V)\n .update([ 0x01 ])\n .update(seed)\n .digest();\n this.V = this._hmac().update(this.V).digest();\n};\n\nHmacDRBG.prototype.reseed = function reseed(entropy, entropyEnc, add, addEnc) {\n // Optional entropy enc\n if (typeof entropyEnc !== 'string') {\n addEnc = add;\n add = entropyEnc;\n entropyEnc = null;\n }\n\n entropy = utils.toArray(entropy, entropyEnc);\n add = utils.toArray(add, addEnc);\n\n assert(entropy.length >= (this.minEntropy / 8),\n 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');\n\n this._update(entropy.concat(add || []));\n this._reseed = 1;\n};\n\nHmacDRBG.prototype.generate = function generate(len, enc, add, addEnc) {\n if (this._reseed > this.reseedInterval)\n throw new Error('Reseed is required');\n\n // Optional encoding\n if (typeof enc !== 'string') {\n addEnc = add;\n add = enc;\n enc = null;\n }\n\n // Optional additional data\n if (add) {\n add = utils.toArray(add, addEnc || 'hex');\n this._update(add);\n }\n\n var temp = [];\n while (temp.length < len) {\n this.V = this._hmac().update(this.V).digest();\n temp = temp.concat(this.V);\n }\n\n var res = temp.slice(0, len);\n this._update(add);\n this._reseed++;\n return utils.encode(res, enc);\n};\n", "'use strict';\n\nvar BN = require('bn.js');\nvar utils = require('../utils');\nvar assert = utils.assert;\n\nfunction KeyPair(ec, options) {\n this.ec = ec;\n this.priv = null;\n this.pub = null;\n\n // KeyPair(ec, { priv: ..., pub: ... })\n if (options.priv)\n this._importPrivate(options.priv, options.privEnc);\n if (options.pub)\n this._importPublic(options.pub, options.pubEnc);\n}\nmodule.exports = KeyPair;\n\nKeyPair.fromPublic = function fromPublic(ec, pub, enc) {\n if (pub instanceof KeyPair)\n return pub;\n\n return new KeyPair(ec, {\n pub: pub,\n pubEnc: enc,\n });\n};\n\nKeyPair.fromPrivate = function fromPrivate(ec, priv, enc) {\n if (priv instanceof KeyPair)\n return priv;\n\n return new KeyPair(ec, {\n priv: priv,\n privEnc: enc,\n });\n};\n\nKeyPair.prototype.validate = function validate() {\n var pub = this.getPublic();\n\n if (pub.isInfinity())\n return { result: false, reason: 'Invalid public key' };\n if (!pub.validate())\n return { result: false, reason: 'Public key is not a point' };\n if (!pub.mul(this.ec.curve.n).isInfinity())\n return { result: false, reason: 'Public key * N != O' };\n\n return { result: true, reason: null };\n};\n\nKeyPair.prototype.getPublic = function getPublic(compact, enc) {\n // compact is optional argument\n if (typeof compact === 'string') {\n enc = compact;\n compact = null;\n }\n\n if (!this.pub)\n this.pub = this.ec.g.mul(this.priv);\n\n if (!enc)\n return this.pub;\n\n return this.pub.encode(enc, compact);\n};\n\nKeyPair.prototype.getPrivate = function getPrivate(enc) {\n if (enc === 'hex')\n return this.priv.toString(16, 2);\n else\n return this.priv;\n};\n\nKeyPair.prototype._importPrivate = function _importPrivate(key, enc) {\n this.priv = new BN(key, enc || 16);\n\n // Ensure that the priv won't be bigger than n, otherwise we may fail\n // in fixed multiplication method\n this.priv = this.priv.umod(this.ec.curve.n);\n};\n\nKeyPair.prototype._importPublic = function _importPublic(key, enc) {\n if (key.x || key.y) {\n // Montgomery points only have an `x` coordinate.\n // Weierstrass/Edwards points on the other hand have both `x` and\n // `y` coordinates.\n if (this.ec.curve.type === 'mont') {\n assert(key.x, 'Need x coordinate');\n } else if (this.ec.curve.type === 'short' ||\n this.ec.curve.type === 'edwards') {\n assert(key.x && key.y, 'Need both x and y coordinate');\n }\n this.pub = this.ec.curve.point(key.x, key.y);\n return;\n }\n this.pub = this.ec.curve.decodePoint(key, enc);\n};\n\n// ECDH\nKeyPair.prototype.derive = function derive(pub) {\n if(!pub.validate()) {\n assert(pub.validate(), 'public point not validated');\n }\n return pub.mul(this.priv).getX();\n};\n\n// ECDSA\nKeyPair.prototype.sign = function sign(msg, enc, options) {\n return this.ec.sign(msg, this, enc, options);\n};\n\nKeyPair.prototype.verify = function verify(msg, signature) {\n return this.ec.verify(msg, signature, this);\n};\n\nKeyPair.prototype.inspect = function inspect() {\n return '';\n};\n", "'use strict';\n\nvar BN = require('bn.js');\n\nvar utils = require('../utils');\nvar assert = utils.assert;\n\nfunction Signature(options, enc) {\n if (options instanceof Signature)\n return options;\n\n if (this._importDER(options, enc))\n return;\n\n assert(options.r && options.s, 'Signature without r or s');\n this.r = new BN(options.r, 16);\n this.s = new BN(options.s, 16);\n if (options.recoveryParam === undefined)\n this.recoveryParam = null;\n else\n this.recoveryParam = options.recoveryParam;\n}\nmodule.exports = Signature;\n\nfunction Position() {\n this.place = 0;\n}\n\nfunction getLength(buf, p) {\n var initial = buf[p.place++];\n if (!(initial & 0x80)) {\n return initial;\n }\n var octetLen = initial & 0xf;\n\n // Indefinite length or overflow\n if (octetLen === 0 || octetLen > 4) {\n return false;\n }\n\n var val = 0;\n for (var i = 0, off = p.place; i < octetLen; i++, off++) {\n val <<= 8;\n val |= buf[off];\n val >>>= 0;\n }\n\n // Leading zeroes\n if (val <= 0x7f) {\n return false;\n }\n\n p.place = off;\n return val;\n}\n\nfunction rmPadding(buf) {\n var i = 0;\n var len = buf.length - 1;\n while (!buf[i] && !(buf[i + 1] & 0x80) && i < len) {\n i++;\n }\n if (i === 0) {\n return buf;\n }\n return buf.slice(i);\n}\n\nSignature.prototype._importDER = function _importDER(data, enc) {\n data = utils.toArray(data, enc);\n var p = new Position();\n if (data[p.place++] !== 0x30) {\n return false;\n }\n var len = getLength(data, p);\n if (len === false) {\n return false;\n }\n if ((len + p.place) !== data.length) {\n return false;\n }\n if (data[p.place++] !== 0x02) {\n return false;\n }\n var rlen = getLength(data, p);\n if (rlen === false) {\n return false;\n }\n var r = data.slice(p.place, rlen + p.place);\n p.place += rlen;\n if (data[p.place++] !== 0x02) {\n return false;\n }\n var slen = getLength(data, p);\n if (slen === false) {\n return false;\n }\n if (data.length !== slen + p.place) {\n return false;\n }\n var s = data.slice(p.place, slen + p.place);\n if (r[0] === 0) {\n if (r[1] & 0x80) {\n r = r.slice(1);\n } else {\n // Leading zeroes\n return false;\n }\n }\n if (s[0] === 0) {\n if (s[1] & 0x80) {\n s = s.slice(1);\n } else {\n // Leading zeroes\n return false;\n }\n }\n\n this.r = new BN(r);\n this.s = new BN(s);\n this.recoveryParam = null;\n\n return true;\n};\n\nfunction constructLength(arr, len) {\n if (len < 0x80) {\n arr.push(len);\n return;\n }\n var octets = 1 + (Math.log(len) / Math.LN2 >>> 3);\n arr.push(octets | 0x80);\n while (--octets) {\n arr.push((len >>> (octets << 3)) & 0xff);\n }\n arr.push(len);\n}\n\nSignature.prototype.toDER = function toDER(enc) {\n var r = this.r.toArray();\n var s = this.s.toArray();\n\n // Pad values\n if (r[0] & 0x80)\n r = [ 0 ].concat(r);\n // Pad values\n if (s[0] & 0x80)\n s = [ 0 ].concat(s);\n\n r = rmPadding(r);\n s = rmPadding(s);\n\n while (!s[0] && !(s[1] & 0x80)) {\n s = s.slice(1);\n }\n var arr = [ 0x02 ];\n constructLength(arr, r.length);\n arr = arr.concat(r);\n arr.push(0x02);\n constructLength(arr, s.length);\n var backHalf = arr.concat(s);\n var res = [ 0x30 ];\n constructLength(res, backHalf.length);\n res = res.concat(backHalf);\n return utils.encode(res, enc);\n};\n", "'use strict';\n\nvar BN = require('bn.js');\nvar HmacDRBG = require('hmac-drbg');\nvar utils = require('../utils');\nvar curves = require('../curves');\nvar rand = require('brorand');\nvar assert = utils.assert;\n\nvar KeyPair = require('./key');\nvar Signature = require('./signature');\n\nfunction EC(options) {\n if (!(this instanceof EC))\n return new EC(options);\n\n // Shortcut `elliptic.ec(curve-name)`\n if (typeof options === 'string') {\n assert(Object.prototype.hasOwnProperty.call(curves, options),\n 'Unknown curve ' + options);\n\n options = curves[options];\n }\n\n // Shortcut for `elliptic.ec(elliptic.curves.curveName)`\n if (options instanceof curves.PresetCurve)\n options = { curve: options };\n\n this.curve = options.curve.curve;\n this.n = this.curve.n;\n this.nh = this.n.ushrn(1);\n this.g = this.curve.g;\n\n // Point on curve\n this.g = options.curve.g;\n this.g.precompute(options.curve.n.bitLength() + 1);\n\n // Hash for function for DRBG\n this.hash = options.hash || options.curve.hash;\n}\nmodule.exports = EC;\n\nEC.prototype.keyPair = function keyPair(options) {\n return new KeyPair(this, options);\n};\n\nEC.prototype.keyFromPrivate = function keyFromPrivate(priv, enc) {\n return KeyPair.fromPrivate(this, priv, enc);\n};\n\nEC.prototype.keyFromPublic = function keyFromPublic(pub, enc) {\n return KeyPair.fromPublic(this, pub, enc);\n};\n\nEC.prototype.genKeyPair = function genKeyPair(options) {\n if (!options)\n options = {};\n\n // Instantiate Hmac_DRBG\n var drbg = new HmacDRBG({\n hash: this.hash,\n pers: options.pers,\n persEnc: options.persEnc || 'utf8',\n entropy: options.entropy || rand(this.hash.hmacStrength),\n entropyEnc: options.entropy && options.entropyEnc || 'utf8',\n nonce: this.n.toArray(),\n });\n\n var bytes = this.n.byteLength();\n var ns2 = this.n.sub(new BN(2));\n for (;;) {\n var priv = new BN(drbg.generate(bytes));\n if (priv.cmp(ns2) > 0)\n continue;\n\n priv.iaddn(1);\n return this.keyFromPrivate(priv);\n }\n};\n\nEC.prototype._truncateToN = function _truncateToN(msg, truncOnly) {\n var delta = msg.byteLength() * 8 - this.n.bitLength();\n if (delta > 0)\n msg = msg.ushrn(delta);\n if (!truncOnly && msg.cmp(this.n) >= 0)\n return msg.sub(this.n);\n else\n return msg;\n};\n\nEC.prototype.sign = function sign(msg, key, enc, options) {\n if (typeof enc === 'object') {\n options = enc;\n enc = null;\n }\n if (!options)\n options = {};\n\n key = this.keyFromPrivate(key, enc);\n msg = this._truncateToN(new BN(msg, 16));\n\n // Zero-extend key to provide enough entropy\n var bytes = this.n.byteLength();\n var bkey = key.getPrivate().toArray('be', bytes);\n\n // Zero-extend nonce to have the same byte size as N\n var nonce = msg.toArray('be', bytes);\n\n // Instantiate Hmac_DRBG\n var drbg = new HmacDRBG({\n hash: this.hash,\n entropy: bkey,\n nonce: nonce,\n pers: options.pers,\n persEnc: options.persEnc || 'utf8',\n });\n\n // Number of bytes to generate\n var ns1 = this.n.sub(new BN(1));\n\n for (var iter = 0; ; iter++) {\n var k = options.k ?\n options.k(iter) :\n new BN(drbg.generate(this.n.byteLength()));\n k = this._truncateToN(k, true);\n if (k.cmpn(1) <= 0 || k.cmp(ns1) >= 0)\n continue;\n\n var kp = this.g.mul(k);\n if (kp.isInfinity())\n continue;\n\n var kpX = kp.getX();\n var r = kpX.umod(this.n);\n if (r.cmpn(0) === 0)\n continue;\n\n var s = k.invm(this.n).mul(r.mul(key.getPrivate()).iadd(msg));\n s = s.umod(this.n);\n if (s.cmpn(0) === 0)\n continue;\n\n var recoveryParam = (kp.getY().isOdd() ? 1 : 0) |\n (kpX.cmp(r) !== 0 ? 2 : 0);\n\n // Use complement of `s`, if it is > `n / 2`\n if (options.canonical && s.cmp(this.nh) > 0) {\n s = this.n.sub(s);\n recoveryParam ^= 1;\n }\n\n return new Signature({ r: r, s: s, recoveryParam: recoveryParam });\n }\n};\n\nEC.prototype.verify = function verify(msg, signature, key, enc) {\n msg = this._truncateToN(new BN(msg, 16));\n key = this.keyFromPublic(key, enc);\n signature = new Signature(signature, 'hex');\n\n // Perform primitive values validation\n var r = signature.r;\n var s = signature.s;\n if (r.cmpn(1) < 0 || r.cmp(this.n) >= 0)\n return false;\n if (s.cmpn(1) < 0 || s.cmp(this.n) >= 0)\n return false;\n\n // Validate signature\n var sinv = s.invm(this.n);\n var u1 = sinv.mul(msg).umod(this.n);\n var u2 = sinv.mul(r).umod(this.n);\n var p;\n\n if (!this.curve._maxwellTrick) {\n p = this.g.mulAdd(u1, key.getPublic(), u2);\n if (p.isInfinity())\n return false;\n\n return p.getX().umod(this.n).cmp(r) === 0;\n }\n\n // NOTE: Greg Maxwell's trick, inspired by:\n // https://git.io/vad3K\n\n p = this.g.jmulAdd(u1, key.getPublic(), u2);\n if (p.isInfinity())\n return false;\n\n // Compare `p.x` of Jacobian point with `r`,\n // this will do `p.x == r * p.z^2` instead of multiplying `p.x` by the\n // inverse of `p.z^2`\n return p.eqXToP(r);\n};\n\nEC.prototype.recoverPubKey = function(msg, signature, j, enc) {\n assert((3 & j) === j, 'The recovery param is more than two bits');\n signature = new Signature(signature, enc);\n\n var n = this.n;\n var e = new BN(msg);\n var r = signature.r;\n var s = signature.s;\n\n // A set LSB signifies that the y-coordinate is odd\n var isYOdd = j & 1;\n var isSecondKey = j >> 1;\n if (r.cmp(this.curve.p.umod(this.curve.n)) >= 0 && isSecondKey)\n throw new Error('Unable to find sencond key candinate');\n\n // 1.1. Let x = r + jn.\n if (isSecondKey)\n r = this.curve.pointFromX(r.add(this.curve.n), isYOdd);\n else\n r = this.curve.pointFromX(r, isYOdd);\n\n var rInv = signature.r.invm(n);\n var s1 = n.sub(e).mul(rInv).umod(n);\n var s2 = s.mul(rInv).umod(n);\n\n // 1.6.1 Compute Q = r^-1 (sR - eG)\n // Q = r^-1 (sR + -eG)\n return this.g.mulAdd(s1, r, s2);\n};\n\nEC.prototype.getKeyRecoveryParam = function(e, signature, Q, enc) {\n signature = new Signature(signature, enc);\n if (signature.recoveryParam !== null)\n return signature.recoveryParam;\n\n for (var i = 0; i < 4; i++) {\n var Qprime;\n try {\n Qprime = this.recoverPubKey(e, signature, i);\n } catch (e) {\n continue;\n }\n\n if (Qprime.eq(Q))\n return i;\n }\n throw new Error('Unable to find valid recovery factor');\n};\n", "'use strict';\n\nvar utils = require('../utils');\nvar assert = utils.assert;\nvar parseBytes = utils.parseBytes;\nvar cachedProperty = utils.cachedProperty;\n\n/**\n* @param {EDDSA} eddsa - instance\n* @param {Object} params - public/private key parameters\n*\n* @param {Array} [params.secret] - secret seed bytes\n* @param {Point} [params.pub] - public key point (aka `A` in eddsa terms)\n* @param {Array} [params.pub] - public key point encoded as bytes\n*\n*/\nfunction KeyPair(eddsa, params) {\n this.eddsa = eddsa;\n this._secret = parseBytes(params.secret);\n if (eddsa.isPoint(params.pub))\n this._pub = params.pub;\n else\n this._pubBytes = parseBytes(params.pub);\n}\n\nKeyPair.fromPublic = function fromPublic(eddsa, pub) {\n if (pub instanceof KeyPair)\n return pub;\n return new KeyPair(eddsa, { pub: pub });\n};\n\nKeyPair.fromSecret = function fromSecret(eddsa, secret) {\n if (secret instanceof KeyPair)\n return secret;\n return new KeyPair(eddsa, { secret: secret });\n};\n\nKeyPair.prototype.secret = function secret() {\n return this._secret;\n};\n\ncachedProperty(KeyPair, 'pubBytes', function pubBytes() {\n return this.eddsa.encodePoint(this.pub());\n});\n\ncachedProperty(KeyPair, 'pub', function pub() {\n if (this._pubBytes)\n return this.eddsa.decodePoint(this._pubBytes);\n return this.eddsa.g.mul(this.priv());\n});\n\ncachedProperty(KeyPair, 'privBytes', function privBytes() {\n var eddsa = this.eddsa;\n var hash = this.hash();\n var lastIx = eddsa.encodingLength - 1;\n\n var a = hash.slice(0, eddsa.encodingLength);\n a[0] &= 248;\n a[lastIx] &= 127;\n a[lastIx] |= 64;\n\n return a;\n});\n\ncachedProperty(KeyPair, 'priv', function priv() {\n return this.eddsa.decodeInt(this.privBytes());\n});\n\ncachedProperty(KeyPair, 'hash', function hash() {\n return this.eddsa.hash().update(this.secret()).digest();\n});\n\ncachedProperty(KeyPair, 'messagePrefix', function messagePrefix() {\n return this.hash().slice(this.eddsa.encodingLength);\n});\n\nKeyPair.prototype.sign = function sign(message) {\n assert(this._secret, 'KeyPair can only verify');\n return this.eddsa.sign(message, this);\n};\n\nKeyPair.prototype.verify = function verify(message, sig) {\n return this.eddsa.verify(message, sig, this);\n};\n\nKeyPair.prototype.getSecret = function getSecret(enc) {\n assert(this._secret, 'KeyPair is public only');\n return utils.encode(this.secret(), enc);\n};\n\nKeyPair.prototype.getPublic = function getPublic(enc) {\n return utils.encode(this.pubBytes(), enc);\n};\n\nmodule.exports = KeyPair;\n", "'use strict';\n\nvar BN = require('bn.js');\nvar utils = require('../utils');\nvar assert = utils.assert;\nvar cachedProperty = utils.cachedProperty;\nvar parseBytes = utils.parseBytes;\n\n/**\n* @param {EDDSA} eddsa - eddsa instance\n* @param {Array|Object} sig -\n* @param {Array|Point} [sig.R] - R point as Point or bytes\n* @param {Array|bn} [sig.S] - S scalar as bn or bytes\n* @param {Array} [sig.Rencoded] - R point encoded\n* @param {Array} [sig.Sencoded] - S scalar encoded\n*/\nfunction Signature(eddsa, sig) {\n this.eddsa = eddsa;\n\n if (typeof sig !== 'object')\n sig = parseBytes(sig);\n\n if (Array.isArray(sig)) {\n sig = {\n R: sig.slice(0, eddsa.encodingLength),\n S: sig.slice(eddsa.encodingLength),\n };\n }\n\n assert(sig.R && sig.S, 'Signature without R or S');\n\n if (eddsa.isPoint(sig.R))\n this._R = sig.R;\n if (sig.S instanceof BN)\n this._S = sig.S;\n\n this._Rencoded = Array.isArray(sig.R) ? sig.R : sig.Rencoded;\n this._Sencoded = Array.isArray(sig.S) ? sig.S : sig.Sencoded;\n}\n\ncachedProperty(Signature, 'S', function S() {\n return this.eddsa.decodeInt(this.Sencoded());\n});\n\ncachedProperty(Signature, 'R', function R() {\n return this.eddsa.decodePoint(this.Rencoded());\n});\n\ncachedProperty(Signature, 'Rencoded', function Rencoded() {\n return this.eddsa.encodePoint(this.R());\n});\n\ncachedProperty(Signature, 'Sencoded', function Sencoded() {\n return this.eddsa.encodeInt(this.S());\n});\n\nSignature.prototype.toBytes = function toBytes() {\n return this.Rencoded().concat(this.Sencoded());\n};\n\nSignature.prototype.toHex = function toHex() {\n return utils.encode(this.toBytes(), 'hex').toUpperCase();\n};\n\nmodule.exports = Signature;\n", "'use strict';\n\nvar hash = require('hash.js');\nvar curves = require('../curves');\nvar utils = require('../utils');\nvar assert = utils.assert;\nvar parseBytes = utils.parseBytes;\nvar KeyPair = require('./key');\nvar Signature = require('./signature');\n\nfunction EDDSA(curve) {\n assert(curve === 'ed25519', 'only tested with ed25519 so far');\n\n if (!(this instanceof EDDSA))\n return new EDDSA(curve);\n\n curve = curves[curve].curve;\n this.curve = curve;\n this.g = curve.g;\n this.g.precompute(curve.n.bitLength() + 1);\n\n this.pointClass = curve.point().constructor;\n this.encodingLength = Math.ceil(curve.n.bitLength() / 8);\n this.hash = hash.sha512;\n}\n\nmodule.exports = EDDSA;\n\n/**\n* @param {Array|String} message - message bytes\n* @param {Array|String|KeyPair} secret - secret bytes or a keypair\n* @returns {Signature} - signature\n*/\nEDDSA.prototype.sign = function sign(message, secret) {\n message = parseBytes(message);\n var key = this.keyFromSecret(secret);\n var r = this.hashInt(key.messagePrefix(), message);\n var R = this.g.mul(r);\n var Rencoded = this.encodePoint(R);\n var s_ = this.hashInt(Rencoded, key.pubBytes(), message)\n .mul(key.priv());\n var S = r.add(s_).umod(this.curve.n);\n return this.makeSignature({ R: R, S: S, Rencoded: Rencoded });\n};\n\n/**\n* @param {Array} message - message bytes\n* @param {Array|String|Signature} sig - sig bytes\n* @param {Array|String|Point|KeyPair} pub - public key\n* @returns {Boolean} - true if public key matches sig of message\n*/\nEDDSA.prototype.verify = function verify(message, sig, pub) {\n message = parseBytes(message);\n sig = this.makeSignature(sig);\n var key = this.keyFromPublic(pub);\n var h = this.hashInt(sig.Rencoded(), key.pubBytes(), message);\n var SG = this.g.mul(sig.S());\n var RplusAh = sig.R().add(key.pub().mul(h));\n return RplusAh.eq(SG);\n};\n\nEDDSA.prototype.hashInt = function hashInt() {\n var hash = this.hash();\n for (var i = 0; i < arguments.length; i++)\n hash.update(arguments[i]);\n return utils.intFromLE(hash.digest()).umod(this.curve.n);\n};\n\nEDDSA.prototype.keyFromPublic = function keyFromPublic(pub) {\n return KeyPair.fromPublic(this, pub);\n};\n\nEDDSA.prototype.keyFromSecret = function keyFromSecret(secret) {\n return KeyPair.fromSecret(this, secret);\n};\n\nEDDSA.prototype.makeSignature = function makeSignature(sig) {\n if (sig instanceof Signature)\n return sig;\n return new Signature(this, sig);\n};\n\n/**\n* * https://tools.ietf.org/html/draft-josefsson-eddsa-ed25519-03#section-5.2\n*\n* EDDSA defines methods for encoding and decoding points and integers. These are\n* helper convenience methods, that pass along to utility functions implied\n* parameters.\n*\n*/\nEDDSA.prototype.encodePoint = function encodePoint(point) {\n var enc = point.getY().toArray('le', this.encodingLength);\n enc[this.encodingLength - 1] |= point.getX().isOdd() ? 0x80 : 0;\n return enc;\n};\n\nEDDSA.prototype.decodePoint = function decodePoint(bytes) {\n bytes = utils.parseBytes(bytes);\n\n var lastIx = bytes.length - 1;\n var normed = bytes.slice(0, lastIx).concat(bytes[lastIx] & ~0x80);\n var xIsOdd = (bytes[lastIx] & 0x80) !== 0;\n\n var y = utils.intFromLE(normed);\n return this.curve.pointFromY(y, xIsOdd);\n};\n\nEDDSA.prototype.encodeInt = function encodeInt(num) {\n return num.toArray('le', this.encodingLength);\n};\n\nEDDSA.prototype.decodeInt = function decodeInt(bytes) {\n return utils.intFromLE(bytes);\n};\n\nEDDSA.prototype.isPoint = function isPoint(val) {\n return val instanceof this.pointClass;\n};\n", "'use strict';\n\nvar elliptic = exports;\n\nelliptic.version = require('../package.json').version;\nelliptic.utils = require('./elliptic/utils');\nelliptic.rand = require('brorand');\nelliptic.curve = require('./elliptic/curve');\nelliptic.curves = require('./elliptic/curves');\n\n// Protocols\nelliptic.ec = require('./elliptic/ec');\nelliptic.eddsa = require('./elliptic/eddsa');\n", "const createHmac = require('create-hmac')\n\nconst ONE1 = Buffer.alloc(1, 1)\nconst ZERO1 = Buffer.alloc(1, 0)\n\n// https://tools.ietf.org/html/rfc6979#section-3.2\nfunction deterministicGenerateK (hash, x, checkSig, isPrivate, extraEntropy) {\n // Step A, ignored as hash already provided\n // Step B\n // Step C\n let k = Buffer.alloc(32, 0)\n let v = Buffer.alloc(32, 1)\n\n // Step D\n k = createHmac('sha256', k)\n .update(v)\n .update(ZERO1)\n .update(x)\n .update(hash)\n .update(extraEntropy || '')\n .digest()\n\n // Step E\n v = createHmac('sha256', k).update(v).digest()\n\n // Step F\n k = createHmac('sha256', k)\n .update(v)\n .update(ONE1)\n .update(x)\n .update(hash)\n .update(extraEntropy || '')\n .digest()\n\n // Step G\n v = createHmac('sha256', k).update(v).digest()\n\n // Step H1/H2a, ignored as tlen === qlen (256 bit)\n // Step H2b\n v = createHmac('sha256', k).update(v).digest()\n\n let T = v\n\n // Step H3, repeat until T is within the interval [1, n - 1] and is suitable for ECDSA\n while (!isPrivate(T) || !checkSig(T)) {\n k = createHmac('sha256', k)\n .update(v)\n .update(ZERO1)\n .digest()\n\n v = createHmac('sha256', k).update(v).digest()\n\n // Step H1/H2a, again, ignored as tlen === qlen (256 bit)\n // Step H2b again\n v = createHmac('sha256', k).update(v).digest()\n T = v\n }\n\n return T\n}\n\nmodule.exports = deterministicGenerateK\n", "const BN = require('bn.js')\nconst EC = require('elliptic').ec\nconst secp256k1 = new EC('secp256k1')\nconst deterministicGenerateK = require('./rfc6979')\n\nconst ZERO32 = Buffer.alloc(32, 0)\nconst EC_GROUP_ORDER = Buffer.from('fffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141', 'hex')\nconst EC_P = Buffer.from('fffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f', 'hex')\n\nconst n = secp256k1.curve.n\nconst nDiv2 = n.shrn(1)\nconst G = secp256k1.curve.g\n\nconst THROW_BAD_PRIVATE = 'Expected Private'\nconst THROW_BAD_POINT = 'Expected Point'\nconst THROW_BAD_TWEAK = 'Expected Tweak'\nconst THROW_BAD_HASH = 'Expected Hash'\nconst THROW_BAD_SIGNATURE = 'Expected Signature'\nconst THROW_BAD_EXTRA_DATA = 'Expected Extra Data (32 bytes)'\n\nfunction isScalar (x) {\n return Buffer.isBuffer(x) && x.length === 32\n}\n\nfunction isOrderScalar (x) {\n if (!isScalar(x)) return false\n return x.compare(EC_GROUP_ORDER) < 0 // < G\n}\n\nfunction isPoint (p) {\n if (!Buffer.isBuffer(p)) return false\n if (p.length < 33) return false\n\n const t = p[0]\n const x = p.slice(1, 33)\n if (x.compare(ZERO32) === 0) return false\n if (x.compare(EC_P) >= 0) return false\n if ((t === 0x02 || t === 0x03) && p.length === 33) {\n try { decodeFrom(p) } catch (e) { return false } // TODO: temporary\n return true\n }\n\n const y = p.slice(33)\n if (y.compare(ZERO32) === 0) return false\n if (y.compare(EC_P) >= 0) return false\n if (t === 0x04 && p.length === 65) return true\n return false\n}\n\nfunction __isPointCompressed (p) {\n return p[0] !== 0x04\n}\n\nfunction isPointCompressed (p) {\n if (!isPoint(p)) return false\n return __isPointCompressed(p)\n}\n\nfunction isPrivate (x) {\n if (!isScalar(x)) return false\n return x.compare(ZERO32) > 0 && // > 0\n x.compare(EC_GROUP_ORDER) < 0 // < G\n}\n\nfunction isSignature (value) {\n const r = value.slice(0, 32)\n const s = value.slice(32, 64)\n return Buffer.isBuffer(value) && value.length === 64 &&\n r.compare(EC_GROUP_ORDER) < 0 &&\n s.compare(EC_GROUP_ORDER) < 0\n}\n\nfunction assumeCompression (value, pubkey) {\n if (value === undefined && pubkey !== undefined) return __isPointCompressed(pubkey)\n if (value === undefined) return true\n return value\n}\n\nfunction fromBuffer (d) { return new BN(d) }\nfunction toBuffer (d) { return d.toArrayLike(Buffer, 'be', 32) }\nfunction decodeFrom (P) { return secp256k1.curve.decodePoint(P) }\nfunction getEncoded (P, compressed) { return Buffer.from(P._encode(compressed)) }\n\nfunction pointAdd (pA, pB, __compressed) {\n if (!isPoint(pA)) throw new TypeError(THROW_BAD_POINT)\n if (!isPoint(pB)) throw new TypeError(THROW_BAD_POINT)\n\n const a = decodeFrom(pA)\n const b = decodeFrom(pB)\n const pp = a.add(b)\n if (pp.isInfinity()) return null\n\n const compressed = assumeCompression(__compressed, pA)\n return getEncoded(pp, compressed)\n}\n\nfunction pointAddScalar (p, tweak, __compressed) {\n if (!isPoint(p)) throw new TypeError(THROW_BAD_POINT)\n if (!isOrderScalar(tweak)) throw new TypeError(THROW_BAD_TWEAK)\n\n const compressed = assumeCompression(__compressed, p)\n const pp = decodeFrom(p)\n if (tweak.compare(ZERO32) === 0) return getEncoded(pp, compressed)\n\n const tt = fromBuffer(tweak)\n const qq = G.mul(tt)\n const uu = pp.add(qq)\n if (uu.isInfinity()) return null\n\n return getEncoded(uu, compressed)\n}\n\nfunction pointCompress (p, __compressed) {\n if (!isPoint(p)) throw new TypeError(THROW_BAD_POINT)\n\n const pp = decodeFrom(p)\n if (pp.isInfinity()) throw new TypeError(THROW_BAD_POINT)\n\n const compressed = assumeCompression(__compressed, p)\n\n return getEncoded(pp, compressed)\n}\n\nfunction pointFromScalar (d, __compressed) {\n if (!isPrivate(d)) throw new TypeError(THROW_BAD_PRIVATE)\n\n const dd = fromBuffer(d)\n const pp = G.mul(dd)\n if (pp.isInfinity()) return null\n\n const compressed = assumeCompression(__compressed)\n return getEncoded(pp, compressed)\n}\n\nfunction pointMultiply (p, tweak, __compressed) {\n if (!isPoint(p)) throw new TypeError(THROW_BAD_POINT)\n if (!isOrderScalar(tweak)) throw new TypeError(THROW_BAD_TWEAK)\n\n const compressed = assumeCompression(__compressed, p)\n const pp = decodeFrom(p)\n const tt = fromBuffer(tweak)\n const qq = pp.mul(tt)\n if (qq.isInfinity()) return null\n\n return getEncoded(qq, compressed)\n}\n\nfunction privateAdd (d, tweak) {\n if (!isPrivate(d)) throw new TypeError(THROW_BAD_PRIVATE)\n if (!isOrderScalar(tweak)) throw new TypeError(THROW_BAD_TWEAK)\n\n const dd = fromBuffer(d)\n const tt = fromBuffer(tweak)\n const dt = toBuffer(dd.add(tt).umod(n))\n if (!isPrivate(dt)) return null\n\n return dt\n}\n\nfunction privateSub (d, tweak) {\n if (!isPrivate(d)) throw new TypeError(THROW_BAD_PRIVATE)\n if (!isOrderScalar(tweak)) throw new TypeError(THROW_BAD_TWEAK)\n\n const dd = fromBuffer(d)\n const tt = fromBuffer(tweak)\n const dt = toBuffer(dd.sub(tt).umod(n))\n if (!isPrivate(dt)) return null\n\n return dt\n}\n\nfunction sign (hash, x) {\n return __sign(hash, x)\n}\n\nfunction signWithEntropy (hash, x, addData) {\n return __sign(hash, x, addData)\n}\n\nfunction __sign (hash, x, addData) {\n if (!isScalar(hash)) throw new TypeError(THROW_BAD_HASH)\n if (!isPrivate(x)) throw new TypeError(THROW_BAD_PRIVATE)\n if (addData !== undefined && !isScalar(addData)) throw new TypeError(THROW_BAD_EXTRA_DATA)\n\n const d = fromBuffer(x)\n const e = fromBuffer(hash)\n\n let r, s\n const checkSig = function (k) {\n const kI = fromBuffer(k)\n const Q = G.mul(kI)\n\n if (Q.isInfinity()) return false\n\n r = Q.x.umod(n)\n if (r.isZero() === 0) return false\n\n s = kI\n .invm(n)\n .mul(e.add(d.mul(r)))\n .umod(n)\n if (s.isZero() === 0) return false\n\n return true\n }\n\n deterministicGenerateK(hash, x, checkSig, isPrivate, addData)\n\n // enforce low S values, see bip62: 'low s values in signatures'\n if (s.cmp(nDiv2) > 0) {\n s = n.sub(s)\n }\n\n const buffer = Buffer.allocUnsafe(64)\n toBuffer(r).copy(buffer, 0)\n toBuffer(s).copy(buffer, 32)\n return buffer\n}\n\nfunction verify (hash, q, signature, strict) {\n if (!isScalar(hash)) throw new TypeError(THROW_BAD_HASH)\n if (!isPoint(q)) throw new TypeError(THROW_BAD_POINT)\n\n // 1.4.1 Enforce r and s are both integers in the interval [1, n \u2212 1] (1, isSignature enforces '< n - 1')\n if (!isSignature(signature)) throw new TypeError(THROW_BAD_SIGNATURE)\n\n const Q = decodeFrom(q)\n const r = fromBuffer(signature.slice(0, 32))\n const s = fromBuffer(signature.slice(32, 64))\n\n if (strict && s.cmp(nDiv2) > 0) {\n return false\n }\n\n // 1.4.1 Enforce r and s are both integers in the interval [1, n \u2212 1] (2, enforces '> 0')\n if (r.gtn(0) <= 0 /* || r.compareTo(n) >= 0 */) return false\n if (s.gtn(0) <= 0 /* || s.compareTo(n) >= 0 */) return false\n\n // 1.4.2 H = Hash(M), already done by the user\n // 1.4.3 e = H\n const e = fromBuffer(hash)\n\n // Compute s^-1\n const sInv = s.invm(n)\n\n // 1.4.4 Compute u1 = es^\u22121 mod n\n // u2 = rs^\u22121 mod n\n const u1 = e.mul(sInv).umod(n)\n const u2 = r.mul(sInv).umod(n)\n\n // 1.4.5 Compute R = (xR, yR)\n // R = u1G + u2Q\n const R = G.mulAdd(u1, Q, u2)\n\n // 1.4.5 (cont.) Enforce R is not at infinity\n if (R.isInfinity()) return false\n\n // 1.4.6 Convert the field element R.x to an integer\n const xR = R.x\n\n // 1.4.7 Set v = xR mod n\n const v = xR.umod(n)\n\n // 1.4.8 If v = r, output \"valid\", and if v != r, output \"invalid\"\n return v.eq(r)\n}\n\nmodule.exports = {\n isPoint,\n isPointCompressed,\n isPrivate,\n pointAdd,\n pointAddScalar,\n pointCompress,\n pointFromScalar,\n pointMultiply,\n privateAdd,\n privateSub,\n sign,\n signWithEntropy,\n verify\n}\n", "'use strict'\n\ntry {\n module.exports = require('./native')\n} catch (err) {\n module.exports = require('./js')\n}\n", "var types = {\n Array: function (value) { return value !== null && value !== undefined && value.constructor === Array },\n Boolean: function (value) { return typeof value === 'boolean' },\n Function: function (value) { return typeof value === 'function' },\n Nil: function (value) { return value === undefined || value === null },\n Number: function (value) { return typeof value === 'number' },\n Object: function (value) { return typeof value === 'object' },\n String: function (value) { return typeof value === 'string' },\n '': function () { return true }\n}\n\n// TODO: deprecate\ntypes.Null = types.Nil\n\nfor (var typeName in types) {\n types[typeName].toJSON = function (t) {\n return t\n }.bind(null, typeName)\n}\n\nmodule.exports = types\n", "var native = require('./native')\n\nfunction getTypeName (fn) {\n return fn.name || fn.toString().match(/function (.*?)\\s*\\(/)[1]\n}\n\nfunction getValueTypeName (value) {\n return native.Nil(value) ? '' : getTypeName(value.constructor)\n}\n\nfunction getValue (value) {\n if (native.Function(value)) return ''\n if (native.String(value)) return JSON.stringify(value)\n if (value && native.Object(value)) return ''\n return value\n}\n\nfunction captureStackTrace (e, t) {\n if (Error.captureStackTrace) {\n Error.captureStackTrace(e, t)\n }\n}\n\nfunction tfJSON (type) {\n if (native.Function(type)) return type.toJSON ? type.toJSON() : getTypeName(type)\n if (native.Array(type)) return 'Array'\n if (type && native.Object(type)) return 'Object'\n\n return type !== undefined ? type : ''\n}\n\nfunction tfErrorString (type, value, valueTypeName) {\n var valueJson = getValue(value)\n\n return 'Expected ' + tfJSON(type) + ', got' +\n (valueTypeName !== '' ? ' ' + valueTypeName : '') +\n (valueJson !== '' ? ' ' + valueJson : '')\n}\n\nfunction TfTypeError (type, value, valueTypeName) {\n valueTypeName = valueTypeName || getValueTypeName(value)\n this.message = tfErrorString(type, value, valueTypeName)\n\n captureStackTrace(this, TfTypeError)\n this.__type = type\n this.__value = value\n this.__valueTypeName = valueTypeName\n}\n\nTfTypeError.prototype = Object.create(Error.prototype)\nTfTypeError.prototype.constructor = TfTypeError\n\nfunction tfPropertyErrorString (type, label, name, value, valueTypeName) {\n var description = '\" of type '\n if (label === 'key') description = '\" with key type '\n\n return tfErrorString('property \"' + tfJSON(name) + description + tfJSON(type), value, valueTypeName)\n}\n\nfunction TfPropertyTypeError (type, property, label, value, valueTypeName) {\n if (type) {\n valueTypeName = valueTypeName || getValueTypeName(value)\n this.message = tfPropertyErrorString(type, label, property, value, valueTypeName)\n } else {\n this.message = 'Unexpected property \"' + property + '\"'\n }\n\n captureStackTrace(this, TfTypeError)\n this.__label = label\n this.__property = property\n this.__type = type\n this.__value = value\n this.__valueTypeName = valueTypeName\n}\n\nTfPropertyTypeError.prototype = Object.create(Error.prototype)\nTfPropertyTypeError.prototype.constructor = TfTypeError\n\nfunction tfCustomError (expected, actual) {\n return new TfTypeError(expected, {}, actual)\n}\n\nfunction tfSubError (e, property, label) {\n // sub child?\n if (e instanceof TfPropertyTypeError) {\n property = property + '.' + e.__property\n\n e = new TfPropertyTypeError(\n e.__type, property, e.__label, e.__value, e.__valueTypeName\n )\n\n // child?\n } else if (e instanceof TfTypeError) {\n e = new TfPropertyTypeError(\n e.__type, property, label, e.__value, e.__valueTypeName\n )\n }\n\n captureStackTrace(e)\n return e\n}\n\nmodule.exports = {\n TfTypeError: TfTypeError,\n TfPropertyTypeError: TfPropertyTypeError,\n tfCustomError: tfCustomError,\n tfSubError: tfSubError,\n tfJSON: tfJSON,\n getValueTypeName: getValueTypeName\n}\n", "var NATIVE = require('./native')\nvar ERRORS = require('./errors')\n\nfunction _Buffer (value) {\n return Buffer.isBuffer(value)\n}\n\nfunction Hex (value) {\n return typeof value === 'string' && /^([0-9a-f]{2})+$/i.test(value)\n}\n\nfunction _LengthN (type, length) {\n var name = type.toJSON()\n\n function Length (value) {\n if (!type(value)) return false\n if (value.length === length) return true\n\n throw ERRORS.tfCustomError(name + '(Length: ' + length + ')', name + '(Length: ' + value.length + ')')\n }\n Length.toJSON = function () { return name }\n\n return Length\n}\n\nvar _ArrayN = _LengthN.bind(null, NATIVE.Array)\nvar _BufferN = _LengthN.bind(null, _Buffer)\nvar _HexN = _LengthN.bind(null, Hex)\nvar _StringN = _LengthN.bind(null, NATIVE.String)\n\nfunction Range (a, b, f) {\n f = f || NATIVE.Number\n function _range (value, strict) {\n return f(value, strict) && (value > a) && (value < b)\n }\n _range.toJSON = function () {\n return `${f.toJSON()} between [${a}, ${b}]`\n }\n return _range\n}\n\nvar INT53_MAX = Math.pow(2, 53) - 1\n\nfunction Finite (value) {\n return typeof value === 'number' && isFinite(value)\n}\nfunction Int8 (value) { return ((value << 24) >> 24) === value }\nfunction Int16 (value) { return ((value << 16) >> 16) === value }\nfunction Int32 (value) { return (value | 0) === value }\nfunction Int53 (value) {\n return typeof value === 'number' &&\n value >= -INT53_MAX &&\n value <= INT53_MAX &&\n Math.floor(value) === value\n}\nfunction UInt8 (value) { return (value & 0xff) === value }\nfunction UInt16 (value) { return (value & 0xffff) === value }\nfunction UInt32 (value) { return (value >>> 0) === value }\nfunction UInt53 (value) {\n return typeof value === 'number' &&\n value >= 0 &&\n value <= INT53_MAX &&\n Math.floor(value) === value\n}\n\nvar types = {\n ArrayN: _ArrayN,\n Buffer: _Buffer,\n BufferN: _BufferN,\n Finite: Finite,\n Hex: Hex,\n HexN: _HexN,\n Int8: Int8,\n Int16: Int16,\n Int32: Int32,\n Int53: Int53,\n Range: Range,\n StringN: _StringN,\n UInt8: UInt8,\n UInt16: UInt16,\n UInt32: UInt32,\n UInt53: UInt53\n}\n\nfor (var typeName in types) {\n types[typeName].toJSON = function (t) {\n return t\n }.bind(null, typeName)\n}\n\nmodule.exports = types\n", "var ERRORS = require('./errors')\nvar NATIVE = require('./native')\n\n// short-hand\nvar tfJSON = ERRORS.tfJSON\nvar TfTypeError = ERRORS.TfTypeError\nvar TfPropertyTypeError = ERRORS.TfPropertyTypeError\nvar tfSubError = ERRORS.tfSubError\nvar getValueTypeName = ERRORS.getValueTypeName\n\nvar TYPES = {\n arrayOf: function arrayOf (type, options) {\n type = compile(type)\n options = options || {}\n\n function _arrayOf (array, strict) {\n if (!NATIVE.Array(array)) return false\n if (NATIVE.Nil(array)) return false\n if (options.minLength !== undefined && array.length < options.minLength) return false\n if (options.maxLength !== undefined && array.length > options.maxLength) return false\n if (options.length !== undefined && array.length !== options.length) return false\n\n return array.every(function (value, i) {\n try {\n return typeforce(type, value, strict)\n } catch (e) {\n throw tfSubError(e, i)\n }\n })\n }\n _arrayOf.toJSON = function () {\n var str = '[' + tfJSON(type) + ']'\n if (options.length !== undefined) {\n str += '{' + options.length + '}'\n } else if (options.minLength !== undefined || options.maxLength !== undefined) {\n str += '{' +\n (options.minLength === undefined ? 0 : options.minLength) + ',' +\n (options.maxLength === undefined ? Infinity : options.maxLength) + '}'\n }\n return str\n }\n\n return _arrayOf\n },\n\n maybe: function maybe (type) {\n type = compile(type)\n\n function _maybe (value, strict) {\n return NATIVE.Nil(value) || type(value, strict, maybe)\n }\n _maybe.toJSON = function () { return '?' + tfJSON(type) }\n\n return _maybe\n },\n\n map: function map (propertyType, propertyKeyType) {\n propertyType = compile(propertyType)\n if (propertyKeyType) propertyKeyType = compile(propertyKeyType)\n\n function _map (value, strict) {\n if (!NATIVE.Object(value)) return false\n if (NATIVE.Nil(value)) return false\n\n for (var propertyName in value) {\n try {\n if (propertyKeyType) {\n typeforce(propertyKeyType, propertyName, strict)\n }\n } catch (e) {\n throw tfSubError(e, propertyName, 'key')\n }\n\n try {\n var propertyValue = value[propertyName]\n typeforce(propertyType, propertyValue, strict)\n } catch (e) {\n throw tfSubError(e, propertyName)\n }\n }\n\n return true\n }\n\n if (propertyKeyType) {\n _map.toJSON = function () {\n return '{' + tfJSON(propertyKeyType) + ': ' + tfJSON(propertyType) + '}'\n }\n } else {\n _map.toJSON = function () { return '{' + tfJSON(propertyType) + '}' }\n }\n\n return _map\n },\n\n object: function object (uncompiled) {\n var type = {}\n\n for (var typePropertyName in uncompiled) {\n type[typePropertyName] = compile(uncompiled[typePropertyName])\n }\n\n function _object (value, strict) {\n if (!NATIVE.Object(value)) return false\n if (NATIVE.Nil(value)) return false\n\n var propertyName\n\n try {\n for (propertyName in type) {\n var propertyType = type[propertyName]\n var propertyValue = value[propertyName]\n\n typeforce(propertyType, propertyValue, strict)\n }\n } catch (e) {\n throw tfSubError(e, propertyName)\n }\n\n if (strict) {\n for (propertyName in value) {\n if (type[propertyName]) continue\n\n throw new TfPropertyTypeError(undefined, propertyName)\n }\n }\n\n return true\n }\n _object.toJSON = function () { return tfJSON(type) }\n\n return _object\n },\n\n anyOf: function anyOf () {\n var types = [].slice.call(arguments).map(compile)\n\n function _anyOf (value, strict) {\n return types.some(function (type) {\n try {\n return typeforce(type, value, strict)\n } catch (e) {\n return false\n }\n })\n }\n _anyOf.toJSON = function () { return types.map(tfJSON).join('|') }\n\n return _anyOf\n },\n\n allOf: function allOf () {\n var types = [].slice.call(arguments).map(compile)\n\n function _allOf (value, strict) {\n return types.every(function (type) {\n try {\n return typeforce(type, value, strict)\n } catch (e) {\n return false\n }\n })\n }\n _allOf.toJSON = function () { return types.map(tfJSON).join(' & ') }\n\n return _allOf\n },\n\n quacksLike: function quacksLike (type) {\n function _quacksLike (value) {\n return type === getValueTypeName(value)\n }\n _quacksLike.toJSON = function () { return type }\n\n return _quacksLike\n },\n\n tuple: function tuple () {\n var types = [].slice.call(arguments).map(compile)\n\n function _tuple (values, strict) {\n if (NATIVE.Nil(values)) return false\n if (NATIVE.Nil(values.length)) return false\n if (strict && (values.length !== types.length)) return false\n\n return types.every(function (type, i) {\n try {\n return typeforce(type, values[i], strict)\n } catch (e) {\n throw tfSubError(e, i)\n }\n })\n }\n _tuple.toJSON = function () { return '(' + types.map(tfJSON).join(', ') + ')' }\n\n return _tuple\n },\n\n value: function value (expected) {\n function _value (actual) {\n return actual === expected\n }\n _value.toJSON = function () { return expected }\n\n return _value\n }\n}\n\n// TODO: deprecate\nTYPES.oneOf = TYPES.anyOf\n\nfunction compile (type) {\n if (NATIVE.String(type)) {\n if (type[0] === '?') return TYPES.maybe(type.slice(1))\n\n return NATIVE[type] || TYPES.quacksLike(type)\n } else if (type && NATIVE.Object(type)) {\n if (NATIVE.Array(type)) {\n if (type.length !== 1) throw new TypeError('Expected compile() parameter of type Array of length 1')\n return TYPES.arrayOf(type[0])\n }\n\n return TYPES.object(type)\n } else if (NATIVE.Function(type)) {\n return type\n }\n\n return TYPES.value(type)\n}\n\nfunction typeforce (type, value, strict, surrogate) {\n if (NATIVE.Function(type)) {\n if (type(value, strict)) return true\n\n throw new TfTypeError(surrogate || type, value)\n }\n\n // JIT\n return typeforce(compile(type), value, strict)\n}\n\n// assign types to typeforce function\nfor (var typeName in NATIVE) {\n typeforce[typeName] = NATIVE[typeName]\n}\n\nfor (typeName in TYPES) {\n typeforce[typeName] = TYPES[typeName]\n}\n\nvar EXTRA = require('./extra')\nfor (typeName in EXTRA) {\n typeforce[typeName] = EXTRA[typeName]\n}\n\ntypeforce.compile = compile\ntypeforce.TfTypeError = TfTypeError\ntypeforce.TfPropertyTypeError = TfPropertyTypeError\n\nmodule.exports = typeforce\n", "var bs58check = require('bs58check')\n\nfunction decodeRaw (buffer, version) {\n // check version only if defined\n if (version !== undefined && buffer[0] !== version) throw new Error('Invalid network version')\n\n // uncompressed\n if (buffer.length === 33) {\n return {\n version: buffer[0],\n privateKey: buffer.slice(1, 33),\n compressed: false\n }\n }\n\n // invalid length\n if (buffer.length !== 34) throw new Error('Invalid WIF length')\n\n // invalid compression flag\n if (buffer[33] !== 0x01) throw new Error('Invalid compression flag')\n\n return {\n version: buffer[0],\n privateKey: buffer.slice(1, 33),\n compressed: true\n }\n}\n\nfunction encodeRaw (version, privateKey, compressed) {\n var result = new Buffer(compressed ? 34 : 33)\n\n result.writeUInt8(version, 0)\n privateKey.copy(result, 1)\n\n if (compressed) {\n result[33] = 0x01\n }\n\n return result\n}\n\nfunction decode (string, version) {\n return decodeRaw(bs58check.decode(string), version)\n}\n\nfunction encode (version, privateKey, compressed) {\n if (typeof version === 'number') return bs58check.encode(encodeRaw(version, privateKey, compressed))\n\n return bs58check.encode(\n encodeRaw(\n version.version,\n version.privateKey,\n version.compressed\n )\n )\n}\n\nmodule.exports = {\n decode: decode,\n decodeRaw: decodeRaw,\n encode: encode,\n encodeRaw: encodeRaw\n}\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst crypto = require(\"./crypto\");\nconst bs58check = require('bs58check');\nconst ecc = require('tiny-secp256k1');\nconst typeforce = require('typeforce');\nconst wif = require('wif');\nconst UINT256_TYPE = typeforce.BufferN(32);\nconst NETWORK_TYPE = typeforce.compile({\n wif: typeforce.UInt8,\n bip32: {\n public: typeforce.UInt32,\n private: typeforce.UInt32,\n },\n});\nconst BITCOIN = {\n messagePrefix: '\\x18Bitcoin Signed Message:\\n',\n bech32: 'bc',\n bip32: {\n public: 0x0488b21e,\n private: 0x0488ade4,\n },\n pubKeyHash: 0x00,\n scriptHash: 0x05,\n wif: 0x80,\n};\nconst HIGHEST_BIT = 0x80000000;\nconst UINT31_MAX = Math.pow(2, 31) - 1;\nfunction BIP32Path(value) {\n return (typeforce.String(value) && value.match(/^(m\\/)?(\\d+'?\\/)*\\d+'?$/) !== null);\n}\nfunction UInt31(value) {\n return typeforce.UInt32(value) && value <= UINT31_MAX;\n}\nclass BIP32 {\n constructor(__D, __Q, chainCode, network, __DEPTH = 0, __INDEX = 0, __PARENT_FINGERPRINT = 0x00000000) {\n this.__D = __D;\n this.__Q = __Q;\n this.chainCode = chainCode;\n this.network = network;\n this.__DEPTH = __DEPTH;\n this.__INDEX = __INDEX;\n this.__PARENT_FINGERPRINT = __PARENT_FINGERPRINT;\n typeforce(NETWORK_TYPE, network);\n this.lowR = false;\n }\n get depth() {\n return this.__DEPTH;\n }\n get index() {\n return this.__INDEX;\n }\n get parentFingerprint() {\n return this.__PARENT_FINGERPRINT;\n }\n get publicKey() {\n if (this.__Q === undefined)\n this.__Q = ecc.pointFromScalar(this.__D, true);\n return this.__Q;\n }\n get privateKey() {\n return this.__D;\n }\n get identifier() {\n return crypto.hash160(this.publicKey);\n }\n get fingerprint() {\n return this.identifier.slice(0, 4);\n }\n get compressed() {\n return true;\n }\n // Private === not neutered\n // Public === neutered\n isNeutered() {\n return this.__D === undefined;\n }\n neutered() {\n return fromPublicKeyLocal(this.publicKey, this.chainCode, this.network, this.depth, this.index, this.parentFingerprint);\n }\n toBase58() {\n const network = this.network;\n const version = !this.isNeutered()\n ? network.bip32.private\n : network.bip32.public;\n const buffer = Buffer.allocUnsafe(78);\n // 4 bytes: version bytes\n buffer.writeUInt32BE(version, 0);\n // 1 byte: depth: 0x00 for master nodes, 0x01 for level-1 descendants, ....\n buffer.writeUInt8(this.depth, 4);\n // 4 bytes: the fingerprint of the parent's key (0x00000000 if master key)\n buffer.writeUInt32BE(this.parentFingerprint, 5);\n // 4 bytes: child number. This is the number i in xi = xpar/i, with xi the key being serialized.\n // This is encoded in big endian. (0x00000000 if master key)\n buffer.writeUInt32BE(this.index, 9);\n // 32 bytes: the chain code\n this.chainCode.copy(buffer, 13);\n // 33 bytes: the public key or private key data\n if (!this.isNeutered()) {\n // 0x00 + k for private keys\n buffer.writeUInt8(0, 45);\n this.privateKey.copy(buffer, 46);\n // 33 bytes: the public key\n }\n else {\n // X9.62 encoding for public keys\n this.publicKey.copy(buffer, 45);\n }\n return bs58check.encode(buffer);\n }\n toWIF() {\n if (!this.privateKey)\n throw new TypeError('Missing private key');\n return wif.encode(this.network.wif, this.privateKey, true);\n }\n // https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki#child-key-derivation-ckd-functions\n derive(index) {\n typeforce(typeforce.UInt32, index);\n const isHardened = index >= HIGHEST_BIT;\n const data = Buffer.allocUnsafe(37);\n // Hardened child\n if (isHardened) {\n if (this.isNeutered())\n throw new TypeError('Missing private key for hardened child key');\n // data = 0x00 || ser256(kpar) || ser32(index)\n data[0] = 0x00;\n this.privateKey.copy(data, 1);\n data.writeUInt32BE(index, 33);\n // Normal child\n }\n else {\n // data = serP(point(kpar)) || ser32(index)\n // = serP(Kpar) || ser32(index)\n this.publicKey.copy(data, 0);\n data.writeUInt32BE(index, 33);\n }\n const I = crypto.hmacSHA512(this.chainCode, data);\n const IL = I.slice(0, 32);\n const IR = I.slice(32);\n // if parse256(IL) >= n, proceed with the next value for i\n if (!ecc.isPrivate(IL))\n return this.derive(index + 1);\n // Private parent key -> private child key\n let hd;\n if (!this.isNeutered()) {\n // ki = parse256(IL) + kpar (mod n)\n const ki = ecc.privateAdd(this.privateKey, IL);\n // In case ki == 0, proceed with the next value for i\n if (ki == null)\n return this.derive(index + 1);\n hd = fromPrivateKeyLocal(ki, IR, this.network, this.depth + 1, index, this.fingerprint.readUInt32BE(0));\n // Public parent key -> public child key\n }\n else {\n // Ki = point(parse256(IL)) + Kpar\n // = G*IL + Kpar\n const Ki = ecc.pointAddScalar(this.publicKey, IL, true);\n // In case Ki is the point at infinity, proceed with the next value for i\n if (Ki === null)\n return this.derive(index + 1);\n hd = fromPublicKeyLocal(Ki, IR, this.network, this.depth + 1, index, this.fingerprint.readUInt32BE(0));\n }\n return hd;\n }\n deriveHardened(index) {\n typeforce(UInt31, index);\n // Only derives hardened private keys by default\n return this.derive(index + HIGHEST_BIT);\n }\n derivePath(path) {\n typeforce(BIP32Path, path);\n let splitPath = path.split('/');\n if (splitPath[0] === 'm') {\n if (this.parentFingerprint)\n throw new TypeError('Expected master, got child');\n splitPath = splitPath.slice(1);\n }\n return splitPath.reduce((prevHd, indexStr) => {\n let index;\n if (indexStr.slice(-1) === `'`) {\n index = parseInt(indexStr.slice(0, -1), 10);\n return prevHd.deriveHardened(index);\n }\n else {\n index = parseInt(indexStr, 10);\n return prevHd.derive(index);\n }\n }, this);\n }\n sign(hash, lowR) {\n if (!this.privateKey)\n throw new Error('Missing private key');\n if (lowR === undefined)\n lowR = this.lowR;\n if (lowR === false) {\n return ecc.sign(hash, this.privateKey);\n }\n else {\n let sig = ecc.sign(hash, this.privateKey);\n const extraData = Buffer.alloc(32, 0);\n let counter = 0;\n // if first try is lowR, skip the loop\n // for second try and on, add extra entropy counting up\n while (sig[0] > 0x7f) {\n counter++;\n extraData.writeUIntLE(counter, 0, 6);\n sig = ecc.signWithEntropy(hash, this.privateKey, extraData);\n }\n return sig;\n }\n }\n verify(hash, signature) {\n return ecc.verify(hash, this.publicKey, signature);\n }\n}\nfunction fromBase58(inString, network) {\n const buffer = bs58check.decode(inString);\n if (buffer.length !== 78)\n throw new TypeError('Invalid buffer length');\n network = network || BITCOIN;\n // 4 bytes: version bytes\n const version = buffer.readUInt32BE(0);\n if (version !== network.bip32.private && version !== network.bip32.public)\n throw new TypeError('Invalid network version');\n // 1 byte: depth: 0x00 for master nodes, 0x01 for level-1 descendants, ...\n const depth = buffer[4];\n // 4 bytes: the fingerprint of the parent's key (0x00000000 if master key)\n const parentFingerprint = buffer.readUInt32BE(5);\n if (depth === 0) {\n if (parentFingerprint !== 0x00000000)\n throw new TypeError('Invalid parent fingerprint');\n }\n // 4 bytes: child number. This is the number i in xi = xpar/i, with xi the key being serialized.\n // This is encoded in MSB order. (0x00000000 if master key)\n const index = buffer.readUInt32BE(9);\n if (depth === 0 && index !== 0)\n throw new TypeError('Invalid index');\n // 32 bytes: the chain code\n const chainCode = buffer.slice(13, 45);\n let hd;\n // 33 bytes: private key data (0x00 + k)\n if (version === network.bip32.private) {\n if (buffer.readUInt8(45) !== 0x00)\n throw new TypeError('Invalid private key');\n const k = buffer.slice(46, 78);\n hd = fromPrivateKeyLocal(k, chainCode, network, depth, index, parentFingerprint);\n // 33 bytes: public key data (0x02 + X or 0x03 + X)\n }\n else {\n const X = buffer.slice(45, 78);\n hd = fromPublicKeyLocal(X, chainCode, network, depth, index, parentFingerprint);\n }\n return hd;\n}\nexports.fromBase58 = fromBase58;\nfunction fromPrivateKey(privateKey, chainCode, network) {\n return fromPrivateKeyLocal(privateKey, chainCode, network);\n}\nexports.fromPrivateKey = fromPrivateKey;\nfunction fromPrivateKeyLocal(privateKey, chainCode, network, depth, index, parentFingerprint) {\n typeforce({\n privateKey: UINT256_TYPE,\n chainCode: UINT256_TYPE,\n }, { privateKey, chainCode });\n network = network || BITCOIN;\n if (!ecc.isPrivate(privateKey))\n throw new TypeError('Private key not in range [1, n)');\n return new BIP32(privateKey, undefined, chainCode, network, depth, index, parentFingerprint);\n}\nfunction fromPublicKey(publicKey, chainCode, network) {\n return fromPublicKeyLocal(publicKey, chainCode, network);\n}\nexports.fromPublicKey = fromPublicKey;\nfunction fromPublicKeyLocal(publicKey, chainCode, network, depth, index, parentFingerprint) {\n typeforce({\n publicKey: typeforce.BufferN(33),\n chainCode: UINT256_TYPE,\n }, { publicKey, chainCode });\n network = network || BITCOIN;\n // verify the X coordinate is a point on the curve\n if (!ecc.isPoint(publicKey))\n throw new TypeError('Point is not on the curve');\n return new BIP32(undefined, publicKey, chainCode, network, depth, index, parentFingerprint);\n}\nfunction fromSeed(seed, network) {\n typeforce(typeforce.Buffer, seed);\n if (seed.length < 16)\n throw new TypeError('Seed should be at least 128 bits');\n if (seed.length > 64)\n throw new TypeError('Seed should be at most 512 bits');\n network = network || BITCOIN;\n const I = crypto.hmacSHA512(Buffer.from('Bitcoin seed', 'utf8'), seed);\n const IL = I.slice(0, 32);\n const IR = I.slice(32);\n return fromPrivateKey(IL, IR, network);\n}\nexports.fromSeed = fromSeed;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar bip32_1 = require(\"./bip32\");\nexports.fromSeed = bip32_1.fromSeed;\nexports.fromBase58 = bip32_1.fromBase58;\nexports.fromPublicKey = bip32_1.fromPublicKey;\nexports.fromPrivateKey = bip32_1.fromPrivateKey;\n", "'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nexports.bitcoin = {\n messagePrefix: '\\x18Bitcoin Signed Message:\\n',\n bech32: 'bc',\n bip32: {\n public: 0x0488b21e,\n private: 0x0488ade4,\n },\n pubKeyHash: 0x00,\n scriptHash: 0x05,\n wif: 0x80,\n};\nexports.regtest = {\n messagePrefix: '\\x18Bitcoin Signed Message:\\n',\n bech32: 'bcrt',\n bip32: {\n public: 0x043587cf,\n private: 0x04358394,\n },\n pubKeyHash: 0x6f,\n scriptHash: 0xc4,\n wif: 0xef,\n};\nexports.testnet = {\n messagePrefix: '\\x18Bitcoin Signed Message:\\n',\n bech32: 'tb',\n bip32: {\n public: 0x043587cf,\n private: 0x04358394,\n },\n pubKeyHash: 0x6f,\n scriptHash: 0xc4,\n wif: 0xef,\n};\n", "'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nfunction decode(buffer, maxLength, minimal) {\n maxLength = maxLength || 4;\n minimal = minimal === undefined ? true : minimal;\n const length = buffer.length;\n if (length === 0) return 0;\n if (length > maxLength) throw new TypeError('Script number overflow');\n if (minimal) {\n if ((buffer[length - 1] & 0x7f) === 0) {\n if (length <= 1 || (buffer[length - 2] & 0x80) === 0)\n throw new Error('Non-minimally encoded script number');\n }\n }\n // 40-bit\n if (length === 5) {\n const a = buffer.readUInt32LE(0);\n const b = buffer.readUInt8(4);\n if (b & 0x80) return -((b & ~0x80) * 0x100000000 + a);\n return b * 0x100000000 + a;\n }\n // 32-bit / 24-bit / 16-bit / 8-bit\n let result = 0;\n for (let i = 0; i < length; ++i) {\n result |= buffer[i] << (8 * i);\n }\n if (buffer[length - 1] & 0x80)\n return -(result & ~(0x80 << (8 * (length - 1))));\n return result;\n}\nexports.decode = decode;\nfunction scriptNumSize(i) {\n return i > 0x7fffffff\n ? 5\n : i > 0x7fffff\n ? 4\n : i > 0x7fff\n ? 3\n : i > 0x7f\n ? 2\n : i > 0x00\n ? 1\n : 0;\n}\nfunction encode(_number) {\n let value = Math.abs(_number);\n const size = scriptNumSize(value);\n const buffer = Buffer.allocUnsafe(size);\n const negative = _number < 0;\n for (let i = 0; i < size; ++i) {\n buffer.writeUInt8(value & 0xff, i);\n value >>= 8;\n }\n if (buffer[size - 1] & 0x80) {\n buffer.writeUInt8(negative ? 0x80 : 0x00, size - 1);\n } else if (negative) {\n buffer[size - 1] |= 0x80;\n }\n return buffer;\n}\nexports.encode = encode;\n", "'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst typeforce = require('typeforce');\nconst UINT31_MAX = Math.pow(2, 31) - 1;\nfunction UInt31(value) {\n return typeforce.UInt32(value) && value <= UINT31_MAX;\n}\nexports.UInt31 = UInt31;\nfunction BIP32Path(value) {\n return typeforce.String(value) && !!value.match(/^(m\\/)?(\\d+'?\\/)*\\d+'?$/);\n}\nexports.BIP32Path = BIP32Path;\nBIP32Path.toJSON = () => {\n return 'BIP32 derivation path';\n};\nfunction Signer(obj) {\n return (\n (typeforce.Buffer(obj.publicKey) ||\n typeof obj.getPublicKey === 'function') &&\n typeof obj.sign === 'function'\n );\n}\nexports.Signer = Signer;\nconst SATOSHI_MAX = 21 * 1e14;\nfunction Satoshi(value) {\n return typeforce.UInt53(value) && value <= SATOSHI_MAX;\n}\nexports.Satoshi = Satoshi;\n// external dependent types\nexports.ECPoint = typeforce.quacksLike('Point');\n// exposed, external API\nexports.Network = typeforce.compile({\n messagePrefix: typeforce.oneOf(typeforce.Buffer, typeforce.String),\n bip32: {\n public: typeforce.UInt32,\n private: typeforce.UInt32,\n },\n pubKeyHash: typeforce.UInt8,\n scriptHash: typeforce.UInt8,\n wif: typeforce.UInt8,\n});\nexports.Buffer256bit = typeforce.BufferN(32);\nexports.Hash160bit = typeforce.BufferN(20);\nexports.Hash256bit = typeforce.BufferN(32);\nexports.Number = typeforce.Number; // tslint:disable-line variable-name\nexports.Array = typeforce.Array;\nexports.Boolean = typeforce.Boolean; // tslint:disable-line variable-name\nexports.String = typeforce.String; // tslint:disable-line variable-name\nexports.Buffer = typeforce.Buffer;\nexports.Hex = typeforce.Hex;\nexports.maybe = typeforce.maybe;\nexports.tuple = typeforce.tuple;\nexports.UInt8 = typeforce.UInt8;\nexports.UInt32 = typeforce.UInt32;\nexports.Function = typeforce.Function;\nexports.BufferN = typeforce.BufferN;\nexports.Null = typeforce.Null;\nexports.oneOf = typeforce.oneOf;\n", "// Reference https://github.com/bitcoin/bips/blob/master/bip-0066.mediawiki\n// Format: 0x30 [total-length] 0x02 [R-length] [R] 0x02 [S-length] [S]\n// NOTE: SIGHASH byte ignored AND restricted, truncate before use\n\nvar Buffer = require('safe-buffer').Buffer\n\nfunction check (buffer) {\n if (buffer.length < 8) return false\n if (buffer.length > 72) return false\n if (buffer[0] !== 0x30) return false\n if (buffer[1] !== buffer.length - 2) return false\n if (buffer[2] !== 0x02) return false\n\n var lenR = buffer[3]\n if (lenR === 0) return false\n if (5 + lenR >= buffer.length) return false\n if (buffer[4 + lenR] !== 0x02) return false\n\n var lenS = buffer[5 + lenR]\n if (lenS === 0) return false\n if ((6 + lenR + lenS) !== buffer.length) return false\n\n if (buffer[4] & 0x80) return false\n if (lenR > 1 && (buffer[4] === 0x00) && !(buffer[5] & 0x80)) return false\n\n if (buffer[lenR + 6] & 0x80) return false\n if (lenS > 1 && (buffer[lenR + 6] === 0x00) && !(buffer[lenR + 7] & 0x80)) return false\n return true\n}\n\nfunction decode (buffer) {\n if (buffer.length < 8) throw new Error('DER sequence length is too short')\n if (buffer.length > 72) throw new Error('DER sequence length is too long')\n if (buffer[0] !== 0x30) throw new Error('Expected DER sequence')\n if (buffer[1] !== buffer.length - 2) throw new Error('DER sequence length is invalid')\n if (buffer[2] !== 0x02) throw new Error('Expected DER integer')\n\n var lenR = buffer[3]\n if (lenR === 0) throw new Error('R length is zero')\n if (5 + lenR >= buffer.length) throw new Error('R length is too long')\n if (buffer[4 + lenR] !== 0x02) throw new Error('Expected DER integer (2)')\n\n var lenS = buffer[5 + lenR]\n if (lenS === 0) throw new Error('S length is zero')\n if ((6 + lenR + lenS) !== buffer.length) throw new Error('S length is invalid')\n\n if (buffer[4] & 0x80) throw new Error('R value is negative')\n if (lenR > 1 && (buffer[4] === 0x00) && !(buffer[5] & 0x80)) throw new Error('R value excessively padded')\n\n if (buffer[lenR + 6] & 0x80) throw new Error('S value is negative')\n if (lenS > 1 && (buffer[lenR + 6] === 0x00) && !(buffer[lenR + 7] & 0x80)) throw new Error('S value excessively padded')\n\n // non-BIP66 - extract R, S values\n return {\n r: buffer.slice(4, 4 + lenR),\n s: buffer.slice(6 + lenR)\n }\n}\n\n/*\n * Expects r and s to be positive DER integers.\n *\n * The DER format uses the most significant bit as a sign bit (& 0x80).\n * If the significant bit is set AND the integer is positive, a 0x00 is prepended.\n *\n * Examples:\n *\n * 0 => 0x00\n * 1 => 0x01\n * -1 => 0xff\n * 127 => 0x7f\n * -127 => 0x81\n * 128 => 0x0080\n * -128 => 0x80\n * 255 => 0x00ff\n * -255 => 0xff01\n * 16300 => 0x3fac\n * -16300 => 0xc054\n * 62300 => 0x00f35c\n * -62300 => 0xff0ca4\n*/\nfunction encode (r, s) {\n var lenR = r.length\n var lenS = s.length\n if (lenR === 0) throw new Error('R length is zero')\n if (lenS === 0) throw new Error('S length is zero')\n if (lenR > 33) throw new Error('R length is too long')\n if (lenS > 33) throw new Error('S length is too long')\n if (r[0] & 0x80) throw new Error('R value is negative')\n if (s[0] & 0x80) throw new Error('S value is negative')\n if (lenR > 1 && (r[0] === 0x00) && !(r[1] & 0x80)) throw new Error('R value excessively padded')\n if (lenS > 1 && (s[0] === 0x00) && !(s[1] & 0x80)) throw new Error('S value excessively padded')\n\n var signature = Buffer.allocUnsafe(6 + lenR + lenS)\n\n // 0x30 [total-length] 0x02 [R-length] [R] 0x02 [S-length] [S]\n signature[0] = 0x30\n signature[1] = signature.length - 2\n signature[2] = 0x02\n signature[3] = r.length\n r.copy(signature, 4)\n signature[4 + lenR] = 0x02\n signature[5 + lenR] = s.length\n s.copy(signature, 6 + lenR)\n\n return signature\n}\n\nmodule.exports = {\n check: check,\n decode: decode,\n encode: encode\n}\n", "'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst types = require('./types');\nconst bip66 = require('bip66');\nconst typeforce = require('typeforce');\nconst ZERO = Buffer.alloc(1, 0);\nfunction toDER(x) {\n let i = 0;\n while (x[i] === 0) ++i;\n if (i === x.length) return ZERO;\n x = x.slice(i);\n if (x[0] & 0x80) return Buffer.concat([ZERO, x], 1 + x.length);\n return x;\n}\nfunction fromDER(x) {\n if (x[0] === 0x00) x = x.slice(1);\n const buffer = Buffer.alloc(32, 0);\n const bstart = Math.max(0, 32 - x.length);\n x.copy(buffer, bstart);\n return buffer;\n}\n// BIP62: 1 byte hashType flag (only 0x01, 0x02, 0x03, 0x81, 0x82 and 0x83 are allowed)\nfunction decode(buffer) {\n const hashType = buffer.readUInt8(buffer.length - 1);\n const hashTypeMod = hashType & ~0x80;\n if (hashTypeMod <= 0 || hashTypeMod >= 4)\n throw new Error('Invalid hashType ' + hashType);\n const decoded = bip66.decode(buffer.slice(0, -1));\n const r = fromDER(decoded.r);\n const s = fromDER(decoded.s);\n const signature = Buffer.concat([r, s], 64);\n return { signature, hashType };\n}\nexports.decode = decode;\nfunction encode(signature, hashType) {\n typeforce(\n {\n signature: types.BufferN(64),\n hashType: types.UInt8,\n },\n { signature, hashType },\n );\n const hashTypeMod = hashType & ~0x80;\n if (hashTypeMod <= 0 || hashTypeMod >= 4)\n throw new Error('Invalid hashType ' + hashType);\n const hashTypeBuffer = Buffer.allocUnsafe(1);\n hashTypeBuffer.writeUInt8(hashType, 0);\n const r = toDER(signature.slice(0, 32));\n const s = toDER(signature.slice(32, 64));\n return Buffer.concat([bip66.encode(r, s), hashTypeBuffer]);\n}\nexports.encode = encode;\n", "var OPS = require('bitcoin-ops')\n\nfunction encodingLength (i) {\n return i < OPS.OP_PUSHDATA1 ? 1\n : i <= 0xff ? 2\n : i <= 0xffff ? 3\n : 5\n}\n\nfunction encode (buffer, number, offset) {\n var size = encodingLength(number)\n\n // ~6 bit\n if (size === 1) {\n buffer.writeUInt8(number, offset)\n\n // 8 bit\n } else if (size === 2) {\n buffer.writeUInt8(OPS.OP_PUSHDATA1, offset)\n buffer.writeUInt8(number, offset + 1)\n\n // 16 bit\n } else if (size === 3) {\n buffer.writeUInt8(OPS.OP_PUSHDATA2, offset)\n buffer.writeUInt16LE(number, offset + 1)\n\n // 32 bit\n } else {\n buffer.writeUInt8(OPS.OP_PUSHDATA4, offset)\n buffer.writeUInt32LE(number, offset + 1)\n }\n\n return size\n}\n\nfunction decode (buffer, offset) {\n var opcode = buffer.readUInt8(offset)\n var number, size\n\n // ~6 bit\n if (opcode < OPS.OP_PUSHDATA1) {\n number = opcode\n size = 1\n\n // 8 bit\n } else if (opcode === OPS.OP_PUSHDATA1) {\n if (offset + 2 > buffer.length) return null\n number = buffer.readUInt8(offset + 1)\n size = 2\n\n // 16 bit\n } else if (opcode === OPS.OP_PUSHDATA2) {\n if (offset + 3 > buffer.length) return null\n number = buffer.readUInt16LE(offset + 1)\n size = 3\n\n // 32 bit\n } else {\n if (offset + 5 > buffer.length) return null\n if (opcode !== OPS.OP_PUSHDATA4) throw new Error('Unexpected opcode')\n\n number = buffer.readUInt32LE(offset + 1)\n size = 5\n }\n\n return {\n opcode: opcode,\n number: number,\n size: size\n }\n}\n\nmodule.exports = {\n encodingLength: encodingLength,\n encode: encode,\n decode: decode\n}\n", "var OPS = require('./index.json')\n\nvar map = {}\nfor (var op in OPS) {\n var code = OPS[op]\n map[code] = op\n}\n\nmodule.exports = map\n", "'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst scriptNumber = require('./script_number');\nconst scriptSignature = require('./script_signature');\nconst types = require('./types');\nconst bip66 = require('bip66');\nconst ecc = require('tiny-secp256k1');\nconst pushdata = require('pushdata-bitcoin');\nconst typeforce = require('typeforce');\nexports.OPS = require('bitcoin-ops');\nconst REVERSE_OPS = require('bitcoin-ops/map');\nconst OP_INT_BASE = exports.OPS.OP_RESERVED; // OP_1 - 1\nfunction isOPInt(value) {\n return (\n types.Number(value) &&\n (value === exports.OPS.OP_0 ||\n (value >= exports.OPS.OP_1 && value <= exports.OPS.OP_16) ||\n value === exports.OPS.OP_1NEGATE)\n );\n}\nfunction isPushOnlyChunk(value) {\n return types.Buffer(value) || isOPInt(value);\n}\nfunction isPushOnly(value) {\n return types.Array(value) && value.every(isPushOnlyChunk);\n}\nexports.isPushOnly = isPushOnly;\nfunction asMinimalOP(buffer) {\n if (buffer.length === 0) return exports.OPS.OP_0;\n if (buffer.length !== 1) return;\n if (buffer[0] >= 1 && buffer[0] <= 16) return OP_INT_BASE + buffer[0];\n if (buffer[0] === 0x81) return exports.OPS.OP_1NEGATE;\n}\nfunction chunksIsBuffer(buf) {\n return Buffer.isBuffer(buf);\n}\nfunction chunksIsArray(buf) {\n return types.Array(buf);\n}\nfunction singleChunkIsBuffer(buf) {\n return Buffer.isBuffer(buf);\n}\nfunction compile(chunks) {\n // TODO: remove me\n if (chunksIsBuffer(chunks)) return chunks;\n typeforce(types.Array, chunks);\n const bufferSize = chunks.reduce((accum, chunk) => {\n // data chunk\n if (singleChunkIsBuffer(chunk)) {\n // adhere to BIP62.3, minimal push policy\n if (chunk.length === 1 && asMinimalOP(chunk) !== undefined) {\n return accum + 1;\n }\n return accum + pushdata.encodingLength(chunk.length) + chunk.length;\n }\n // opcode\n return accum + 1;\n }, 0.0);\n const buffer = Buffer.allocUnsafe(bufferSize);\n let offset = 0;\n chunks.forEach(chunk => {\n // data chunk\n if (singleChunkIsBuffer(chunk)) {\n // adhere to BIP62.3, minimal push policy\n const opcode = asMinimalOP(chunk);\n if (opcode !== undefined) {\n buffer.writeUInt8(opcode, offset);\n offset += 1;\n return;\n }\n offset += pushdata.encode(buffer, chunk.length, offset);\n chunk.copy(buffer, offset);\n offset += chunk.length;\n // opcode\n } else {\n buffer.writeUInt8(chunk, offset);\n offset += 1;\n }\n });\n if (offset !== buffer.length) throw new Error('Could not decode chunks');\n return buffer;\n}\nexports.compile = compile;\nfunction decompile(buffer) {\n // TODO: remove me\n if (chunksIsArray(buffer)) return buffer;\n typeforce(types.Buffer, buffer);\n const chunks = [];\n let i = 0;\n while (i < buffer.length) {\n const opcode = buffer[i];\n // data chunk\n if (opcode > exports.OPS.OP_0 && opcode <= exports.OPS.OP_PUSHDATA4) {\n const d = pushdata.decode(buffer, i);\n // did reading a pushDataInt fail?\n if (d === null) return null;\n i += d.size;\n // attempt to read too much data?\n if (i + d.number > buffer.length) return null;\n const data = buffer.slice(i, i + d.number);\n i += d.number;\n // decompile minimally\n const op = asMinimalOP(data);\n if (op !== undefined) {\n chunks.push(op);\n } else {\n chunks.push(data);\n }\n // opcode\n } else {\n chunks.push(opcode);\n i += 1;\n }\n }\n return chunks;\n}\nexports.decompile = decompile;\nfunction toASM(chunks) {\n if (chunksIsBuffer(chunks)) {\n chunks = decompile(chunks);\n }\n return chunks\n .map(chunk => {\n // data?\n if (singleChunkIsBuffer(chunk)) {\n const op = asMinimalOP(chunk);\n if (op === undefined) return chunk.toString('hex');\n chunk = op;\n }\n // opcode!\n return REVERSE_OPS[chunk];\n })\n .join(' ');\n}\nexports.toASM = toASM;\nfunction fromASM(asm) {\n typeforce(types.String, asm);\n return compile(\n asm.split(' ').map(chunkStr => {\n // opcode?\n if (exports.OPS[chunkStr] !== undefined) return exports.OPS[chunkStr];\n typeforce(types.Hex, chunkStr);\n // data!\n return Buffer.from(chunkStr, 'hex');\n }),\n );\n}\nexports.fromASM = fromASM;\nfunction toStack(chunks) {\n chunks = decompile(chunks);\n typeforce(isPushOnly, chunks);\n return chunks.map(op => {\n if (singleChunkIsBuffer(op)) return op;\n if (op === exports.OPS.OP_0) return Buffer.allocUnsafe(0);\n return scriptNumber.encode(op - OP_INT_BASE);\n });\n}\nexports.toStack = toStack;\nfunction isCanonicalPubKey(buffer) {\n return ecc.isPoint(buffer);\n}\nexports.isCanonicalPubKey = isCanonicalPubKey;\nfunction isDefinedHashType(hashType) {\n const hashTypeMod = hashType & ~0x80;\n // return hashTypeMod > SIGHASH_ALL && hashTypeMod < SIGHASH_SINGLE\n return hashTypeMod > 0x00 && hashTypeMod < 0x04;\n}\nexports.isDefinedHashType = isDefinedHashType;\nfunction isCanonicalScriptSignature(buffer) {\n if (!Buffer.isBuffer(buffer)) return false;\n if (!isDefinedHashType(buffer[buffer.length - 1])) return false;\n return bip66.check(buffer.slice(0, -1));\n}\nexports.isCanonicalScriptSignature = isCanonicalScriptSignature;\n// tslint:disable-next-line variable-name\nexports.number = scriptNumber;\nexports.signature = scriptSignature;\n", "'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nfunction prop(object, name, f) {\n Object.defineProperty(object, name, {\n configurable: true,\n enumerable: true,\n get() {\n const _value = f.call(this);\n this[name] = _value;\n return _value;\n },\n set(_value) {\n Object.defineProperty(this, name, {\n configurable: true,\n enumerable: true,\n value: _value,\n writable: true,\n });\n },\n });\n}\nexports.prop = prop;\nfunction value(f) {\n let _value;\n return () => {\n if (_value !== undefined) return _value;\n _value = f();\n return _value;\n };\n}\nexports.value = value;\n", "'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst networks_1 = require('../networks');\nconst bscript = require('../script');\nconst lazy = require('./lazy');\nconst typef = require('typeforce');\nconst OPS = bscript.OPS;\nfunction stacksEqual(a, b) {\n if (a.length !== b.length) return false;\n return a.every((x, i) => {\n return x.equals(b[i]);\n });\n}\n// output: OP_RETURN ...\nfunction p2data(a, opts) {\n if (!a.data && !a.output) throw new TypeError('Not enough data');\n opts = Object.assign({ validate: true }, opts || {});\n typef(\n {\n network: typef.maybe(typef.Object),\n output: typef.maybe(typef.Buffer),\n data: typef.maybe(typef.arrayOf(typef.Buffer)),\n },\n a,\n );\n const network = a.network || networks_1.bitcoin;\n const o = { name: 'embed', network };\n lazy.prop(o, 'output', () => {\n if (!a.data) return;\n return bscript.compile([OPS.OP_RETURN].concat(a.data));\n });\n lazy.prop(o, 'data', () => {\n if (!a.output) return;\n return bscript.decompile(a.output).slice(1);\n });\n // extended validation\n if (opts.validate) {\n if (a.output) {\n const chunks = bscript.decompile(a.output);\n if (chunks[0] !== OPS.OP_RETURN) throw new TypeError('Output is invalid');\n if (!chunks.slice(1).every(typef.Buffer))\n throw new TypeError('Output is invalid');\n if (a.data && !stacksEqual(a.data, o.data))\n throw new TypeError('Data mismatch');\n }\n }\n return Object.assign(o, a);\n}\nexports.p2data = p2data;\n", "'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst networks_1 = require('../networks');\nconst bscript = require('../script');\nconst lazy = require('./lazy');\nconst OPS = bscript.OPS;\nconst typef = require('typeforce');\nconst ecc = require('tiny-secp256k1');\nconst OP_INT_BASE = OPS.OP_RESERVED; // OP_1 - 1\nfunction stacksEqual(a, b) {\n if (a.length !== b.length) return false;\n return a.every((x, i) => {\n return x.equals(b[i]);\n });\n}\n// input: OP_0 [signatures ...]\n// output: m [pubKeys ...] n OP_CHECKMULTISIG\nfunction p2ms(a, opts) {\n if (\n !a.input &&\n !a.output &&\n !(a.pubkeys && a.m !== undefined) &&\n !a.signatures\n )\n throw new TypeError('Not enough data');\n opts = Object.assign({ validate: true }, opts || {});\n function isAcceptableSignature(x) {\n return (\n bscript.isCanonicalScriptSignature(x) ||\n (opts.allowIncomplete && x === OPS.OP_0) !== undefined\n );\n }\n typef(\n {\n network: typef.maybe(typef.Object),\n m: typef.maybe(typef.Number),\n n: typef.maybe(typef.Number),\n output: typef.maybe(typef.Buffer),\n pubkeys: typef.maybe(typef.arrayOf(ecc.isPoint)),\n signatures: typef.maybe(typef.arrayOf(isAcceptableSignature)),\n input: typef.maybe(typef.Buffer),\n },\n a,\n );\n const network = a.network || networks_1.bitcoin;\n const o = { network };\n let chunks = [];\n let decoded = false;\n function decode(output) {\n if (decoded) return;\n decoded = true;\n chunks = bscript.decompile(output);\n o.m = chunks[0] - OP_INT_BASE;\n o.n = chunks[chunks.length - 2] - OP_INT_BASE;\n o.pubkeys = chunks.slice(1, -2);\n }\n lazy.prop(o, 'output', () => {\n if (!a.m) return;\n if (!o.n) return;\n if (!a.pubkeys) return;\n return bscript.compile(\n [].concat(\n OP_INT_BASE + a.m,\n a.pubkeys,\n OP_INT_BASE + o.n,\n OPS.OP_CHECKMULTISIG,\n ),\n );\n });\n lazy.prop(o, 'm', () => {\n if (!o.output) return;\n decode(o.output);\n return o.m;\n });\n lazy.prop(o, 'n', () => {\n if (!o.pubkeys) return;\n return o.pubkeys.length;\n });\n lazy.prop(o, 'pubkeys', () => {\n if (!a.output) return;\n decode(a.output);\n return o.pubkeys;\n });\n lazy.prop(o, 'signatures', () => {\n if (!a.input) return;\n return bscript.decompile(a.input).slice(1);\n });\n lazy.prop(o, 'input', () => {\n if (!a.signatures) return;\n return bscript.compile([OPS.OP_0].concat(a.signatures));\n });\n lazy.prop(o, 'witness', () => {\n if (!o.input) return;\n return [];\n });\n lazy.prop(o, 'name', () => {\n if (!o.m || !o.n) return;\n return `p2ms(${o.m} of ${o.n})`;\n });\n // extended validation\n if (opts.validate) {\n if (a.output) {\n decode(a.output);\n if (!typef.Number(chunks[0])) throw new TypeError('Output is invalid');\n if (!typef.Number(chunks[chunks.length - 2]))\n throw new TypeError('Output is invalid');\n if (chunks[chunks.length - 1] !== OPS.OP_CHECKMULTISIG)\n throw new TypeError('Output is invalid');\n if (o.m <= 0 || o.n > 16 || o.m > o.n || o.n !== chunks.length - 3)\n throw new TypeError('Output is invalid');\n if (!o.pubkeys.every(x => ecc.isPoint(x)))\n throw new TypeError('Output is invalid');\n if (a.m !== undefined && a.m !== o.m) throw new TypeError('m mismatch');\n if (a.n !== undefined && a.n !== o.n) throw new TypeError('n mismatch');\n if (a.pubkeys && !stacksEqual(a.pubkeys, o.pubkeys))\n throw new TypeError('Pubkeys mismatch');\n }\n if (a.pubkeys) {\n if (a.n !== undefined && a.n !== a.pubkeys.length)\n throw new TypeError('Pubkey count mismatch');\n o.n = a.pubkeys.length;\n if (o.n < o.m) throw new TypeError('Pubkey count cannot be less than m');\n }\n if (a.signatures) {\n if (a.signatures.length < o.m)\n throw new TypeError('Not enough signatures provided');\n if (a.signatures.length > o.m)\n throw new TypeError('Too many signatures provided');\n }\n if (a.input) {\n if (a.input[0] !== OPS.OP_0) throw new TypeError('Input is invalid');\n if (\n o.signatures.length === 0 ||\n !o.signatures.every(isAcceptableSignature)\n )\n throw new TypeError('Input has invalid signature(s)');\n if (a.signatures && !stacksEqual(a.signatures, o.signatures))\n throw new TypeError('Signature mismatch');\n if (a.m !== undefined && a.m !== a.signatures.length)\n throw new TypeError('Signature count mismatch');\n }\n }\n return Object.assign(o, a);\n}\nexports.p2ms = p2ms;\n", "'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst networks_1 = require('../networks');\nconst bscript = require('../script');\nconst lazy = require('./lazy');\nconst typef = require('typeforce');\nconst OPS = bscript.OPS;\nconst ecc = require('tiny-secp256k1');\n// input: {signature}\n// output: {pubKey} OP_CHECKSIG\nfunction p2pk(a, opts) {\n if (!a.input && !a.output && !a.pubkey && !a.input && !a.signature)\n throw new TypeError('Not enough data');\n opts = Object.assign({ validate: true }, opts || {});\n typef(\n {\n network: typef.maybe(typef.Object),\n output: typef.maybe(typef.Buffer),\n pubkey: typef.maybe(ecc.isPoint),\n signature: typef.maybe(bscript.isCanonicalScriptSignature),\n input: typef.maybe(typef.Buffer),\n },\n a,\n );\n const _chunks = lazy.value(() => {\n return bscript.decompile(a.input);\n });\n const network = a.network || networks_1.bitcoin;\n const o = { name: 'p2pk', network };\n lazy.prop(o, 'output', () => {\n if (!a.pubkey) return;\n return bscript.compile([a.pubkey, OPS.OP_CHECKSIG]);\n });\n lazy.prop(o, 'pubkey', () => {\n if (!a.output) return;\n return a.output.slice(1, -1);\n });\n lazy.prop(o, 'signature', () => {\n if (!a.input) return;\n return _chunks()[0];\n });\n lazy.prop(o, 'input', () => {\n if (!a.signature) return;\n return bscript.compile([a.signature]);\n });\n lazy.prop(o, 'witness', () => {\n if (!o.input) return;\n return [];\n });\n // extended validation\n if (opts.validate) {\n if (a.output) {\n if (a.output[a.output.length - 1] !== OPS.OP_CHECKSIG)\n throw new TypeError('Output is invalid');\n if (!ecc.isPoint(o.pubkey))\n throw new TypeError('Output pubkey is invalid');\n if (a.pubkey && !a.pubkey.equals(o.pubkey))\n throw new TypeError('Pubkey mismatch');\n }\n if (a.signature) {\n if (a.input && !a.input.equals(o.input))\n throw new TypeError('Signature mismatch');\n }\n if (a.input) {\n if (_chunks().length !== 1) throw new TypeError('Input is invalid');\n if (!bscript.isCanonicalScriptSignature(o.signature))\n throw new TypeError('Input has invalid signature');\n }\n }\n return Object.assign(o, a);\n}\nexports.p2pk = p2pk;\n", "'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst createHash = require('create-hash');\nfunction ripemd160(buffer) {\n try {\n return createHash('rmd160')\n .update(buffer)\n .digest();\n } catch (err) {\n return createHash('ripemd160')\n .update(buffer)\n .digest();\n }\n}\nexports.ripemd160 = ripemd160;\nfunction sha1(buffer) {\n return createHash('sha1')\n .update(buffer)\n .digest();\n}\nexports.sha1 = sha1;\nfunction sha256(buffer) {\n return createHash('sha256')\n .update(buffer)\n .digest();\n}\nexports.sha256 = sha256;\nfunction hash160(buffer) {\n return ripemd160(sha256(buffer));\n}\nexports.hash160 = hash160;\nfunction hash256(buffer) {\n return sha256(sha256(buffer));\n}\nexports.hash256 = hash256;\n", "'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst bcrypto = require('../crypto');\nconst networks_1 = require('../networks');\nconst bscript = require('../script');\nconst lazy = require('./lazy');\nconst typef = require('typeforce');\nconst OPS = bscript.OPS;\nconst ecc = require('tiny-secp256k1');\nconst bs58check = require('bs58check');\n// input: {signature} {pubkey}\n// output: OP_DUP OP_HASH160 {hash160(pubkey)} OP_EQUALVERIFY OP_CHECKSIG\nfunction p2pkh(a, opts) {\n if (!a.address && !a.hash && !a.output && !a.pubkey && !a.input)\n throw new TypeError('Not enough data');\n opts = Object.assign({ validate: true }, opts || {});\n typef(\n {\n network: typef.maybe(typef.Object),\n address: typef.maybe(typef.String),\n hash: typef.maybe(typef.BufferN(20)),\n output: typef.maybe(typef.BufferN(25)),\n pubkey: typef.maybe(ecc.isPoint),\n signature: typef.maybe(bscript.isCanonicalScriptSignature),\n input: typef.maybe(typef.Buffer),\n },\n a,\n );\n const _address = lazy.value(() => {\n const payload = bs58check.decode(a.address);\n const version = payload.readUInt8(0);\n const hash = payload.slice(1);\n return { version, hash };\n });\n const _chunks = lazy.value(() => {\n return bscript.decompile(a.input);\n });\n const network = a.network || networks_1.bitcoin;\n const o = { name: 'p2pkh', network };\n lazy.prop(o, 'address', () => {\n if (!o.hash) return;\n const payload = Buffer.allocUnsafe(21);\n payload.writeUInt8(network.pubKeyHash, 0);\n o.hash.copy(payload, 1);\n return bs58check.encode(payload);\n });\n lazy.prop(o, 'hash', () => {\n if (a.output) return a.output.slice(3, 23);\n if (a.address) return _address().hash;\n if (a.pubkey || o.pubkey) return bcrypto.hash160(a.pubkey || o.pubkey);\n });\n lazy.prop(o, 'output', () => {\n if (!o.hash) return;\n return bscript.compile([\n OPS.OP_DUP,\n OPS.OP_HASH160,\n o.hash,\n OPS.OP_EQUALVERIFY,\n OPS.OP_CHECKSIG,\n ]);\n });\n lazy.prop(o, 'pubkey', () => {\n if (!a.input) return;\n return _chunks()[1];\n });\n lazy.prop(o, 'signature', () => {\n if (!a.input) return;\n return _chunks()[0];\n });\n lazy.prop(o, 'input', () => {\n if (!a.pubkey) return;\n if (!a.signature) return;\n return bscript.compile([a.signature, a.pubkey]);\n });\n lazy.prop(o, 'witness', () => {\n if (!o.input) return;\n return [];\n });\n // extended validation\n if (opts.validate) {\n let hash = Buffer.from([]);\n if (a.address) {\n if (_address().version !== network.pubKeyHash)\n throw new TypeError('Invalid version or Network mismatch');\n if (_address().hash.length !== 20) throw new TypeError('Invalid address');\n hash = _address().hash;\n }\n if (a.hash) {\n if (hash.length > 0 && !hash.equals(a.hash))\n throw new TypeError('Hash mismatch');\n else hash = a.hash;\n }\n if (a.output) {\n if (\n a.output.length !== 25 ||\n a.output[0] !== OPS.OP_DUP ||\n a.output[1] !== OPS.OP_HASH160 ||\n a.output[2] !== 0x14 ||\n a.output[23] !== OPS.OP_EQUALVERIFY ||\n a.output[24] !== OPS.OP_CHECKSIG\n )\n throw new TypeError('Output is invalid');\n const hash2 = a.output.slice(3, 23);\n if (hash.length > 0 && !hash.equals(hash2))\n throw new TypeError('Hash mismatch');\n else hash = hash2;\n }\n if (a.pubkey) {\n const pkh = bcrypto.hash160(a.pubkey);\n if (hash.length > 0 && !hash.equals(pkh))\n throw new TypeError('Hash mismatch');\n else hash = pkh;\n }\n if (a.input) {\n const chunks = _chunks();\n if (chunks.length !== 2) throw new TypeError('Input is invalid');\n if (!bscript.isCanonicalScriptSignature(chunks[0]))\n throw new TypeError('Input has invalid signature');\n if (!ecc.isPoint(chunks[1]))\n throw new TypeError('Input has invalid pubkey');\n if (a.signature && !a.signature.equals(chunks[0]))\n throw new TypeError('Signature mismatch');\n if (a.pubkey && !a.pubkey.equals(chunks[1]))\n throw new TypeError('Pubkey mismatch');\n const pkh = bcrypto.hash160(chunks[1]);\n if (hash.length > 0 && !hash.equals(pkh))\n throw new TypeError('Hash mismatch');\n }\n }\n return Object.assign(o, a);\n}\nexports.p2pkh = p2pkh;\n", "'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst bcrypto = require('../crypto');\nconst networks_1 = require('../networks');\nconst bscript = require('../script');\nconst lazy = require('./lazy');\nconst typef = require('typeforce');\nconst OPS = bscript.OPS;\nconst bs58check = require('bs58check');\nfunction stacksEqual(a, b) {\n if (a.length !== b.length) return false;\n return a.every((x, i) => {\n return x.equals(b[i]);\n });\n}\n// input: [redeemScriptSig ...] {redeemScript}\n// witness: \n// output: OP_HASH160 {hash160(redeemScript)} OP_EQUAL\nfunction p2sh(a, opts) {\n if (!a.address && !a.hash && !a.output && !a.redeem && !a.input)\n throw new TypeError('Not enough data');\n opts = Object.assign({ validate: true }, opts || {});\n typef(\n {\n network: typef.maybe(typef.Object),\n address: typef.maybe(typef.String),\n hash: typef.maybe(typef.BufferN(20)),\n output: typef.maybe(typef.BufferN(23)),\n redeem: typef.maybe({\n network: typef.maybe(typef.Object),\n output: typef.maybe(typef.Buffer),\n input: typef.maybe(typef.Buffer),\n witness: typef.maybe(typef.arrayOf(typef.Buffer)),\n }),\n input: typef.maybe(typef.Buffer),\n witness: typef.maybe(typef.arrayOf(typef.Buffer)),\n },\n a,\n );\n let network = a.network;\n if (!network) {\n network = (a.redeem && a.redeem.network) || networks_1.bitcoin;\n }\n const o = { network };\n const _address = lazy.value(() => {\n const payload = bs58check.decode(a.address);\n const version = payload.readUInt8(0);\n const hash = payload.slice(1);\n return { version, hash };\n });\n const _chunks = lazy.value(() => {\n return bscript.decompile(a.input);\n });\n const _redeem = lazy.value(() => {\n const chunks = _chunks();\n return {\n network,\n output: chunks[chunks.length - 1],\n input: bscript.compile(chunks.slice(0, -1)),\n witness: a.witness || [],\n };\n });\n // output dependents\n lazy.prop(o, 'address', () => {\n if (!o.hash) return;\n const payload = Buffer.allocUnsafe(21);\n payload.writeUInt8(o.network.scriptHash, 0);\n o.hash.copy(payload, 1);\n return bs58check.encode(payload);\n });\n lazy.prop(o, 'hash', () => {\n // in order of least effort\n if (a.output) return a.output.slice(2, 22);\n if (a.address) return _address().hash;\n if (o.redeem && o.redeem.output) return bcrypto.hash160(o.redeem.output);\n });\n lazy.prop(o, 'output', () => {\n if (!o.hash) return;\n return bscript.compile([OPS.OP_HASH160, o.hash, OPS.OP_EQUAL]);\n });\n // input dependents\n lazy.prop(o, 'redeem', () => {\n if (!a.input) return;\n return _redeem();\n });\n lazy.prop(o, 'input', () => {\n if (!a.redeem || !a.redeem.input || !a.redeem.output) return;\n return bscript.compile(\n [].concat(bscript.decompile(a.redeem.input), a.redeem.output),\n );\n });\n lazy.prop(o, 'witness', () => {\n if (o.redeem && o.redeem.witness) return o.redeem.witness;\n if (o.input) return [];\n });\n lazy.prop(o, 'name', () => {\n const nameParts = ['p2sh'];\n if (o.redeem !== undefined) nameParts.push(o.redeem.name);\n return nameParts.join('-');\n });\n if (opts.validate) {\n let hash = Buffer.from([]);\n if (a.address) {\n if (_address().version !== network.scriptHash)\n throw new TypeError('Invalid version or Network mismatch');\n if (_address().hash.length !== 20) throw new TypeError('Invalid address');\n hash = _address().hash;\n }\n if (a.hash) {\n if (hash.length > 0 && !hash.equals(a.hash))\n throw new TypeError('Hash mismatch');\n else hash = a.hash;\n }\n if (a.output) {\n if (\n a.output.length !== 23 ||\n a.output[0] !== OPS.OP_HASH160 ||\n a.output[1] !== 0x14 ||\n a.output[22] !== OPS.OP_EQUAL\n )\n throw new TypeError('Output is invalid');\n const hash2 = a.output.slice(2, 22);\n if (hash.length > 0 && !hash.equals(hash2))\n throw new TypeError('Hash mismatch');\n else hash = hash2;\n }\n // inlined to prevent 'no-inner-declarations' failing\n const checkRedeem = redeem => {\n // is the redeem output empty/invalid?\n if (redeem.output) {\n const decompile = bscript.decompile(redeem.output);\n if (!decompile || decompile.length < 1)\n throw new TypeError('Redeem.output too short');\n // match hash against other sources\n const hash2 = bcrypto.hash160(redeem.output);\n if (hash.length > 0 && !hash.equals(hash2))\n throw new TypeError('Hash mismatch');\n else hash = hash2;\n }\n if (redeem.input) {\n const hasInput = redeem.input.length > 0;\n const hasWitness = redeem.witness && redeem.witness.length > 0;\n if (!hasInput && !hasWitness) throw new TypeError('Empty input');\n if (hasInput && hasWitness)\n throw new TypeError('Input and witness provided');\n if (hasInput) {\n const richunks = bscript.decompile(redeem.input);\n if (!bscript.isPushOnly(richunks))\n throw new TypeError('Non push-only scriptSig');\n }\n }\n };\n if (a.input) {\n const chunks = _chunks();\n if (!chunks || chunks.length < 1) throw new TypeError('Input too short');\n if (!Buffer.isBuffer(_redeem().output))\n throw new TypeError('Input is invalid');\n checkRedeem(_redeem());\n }\n if (a.redeem) {\n if (a.redeem.network && a.redeem.network !== network)\n throw new TypeError('Network mismatch');\n if (a.input) {\n const redeem = _redeem();\n if (a.redeem.output && !a.redeem.output.equals(redeem.output))\n throw new TypeError('Redeem.output mismatch');\n if (a.redeem.input && !a.redeem.input.equals(redeem.input))\n throw new TypeError('Redeem.input mismatch');\n }\n checkRedeem(a.redeem);\n }\n if (a.witness) {\n if (\n a.redeem &&\n a.redeem.witness &&\n !stacksEqual(a.redeem.witness, a.witness)\n )\n throw new TypeError('Witness and redeem.witness mismatch');\n }\n }\n return Object.assign(o, a);\n}\nexports.p2sh = p2sh;\n", "'use strict'\nvar ALPHABET = 'qpzry9x8gf2tvdw0s3jn54khce6mua7l'\n\n// pre-compute lookup table\nvar ALPHABET_MAP = {}\nfor (var z = 0; z < ALPHABET.length; z++) {\n var x = ALPHABET.charAt(z)\n\n if (ALPHABET_MAP[x] !== undefined) throw new TypeError(x + ' is ambiguous')\n ALPHABET_MAP[x] = z\n}\n\nfunction polymodStep (pre) {\n var b = pre >> 25\n return ((pre & 0x1FFFFFF) << 5) ^\n (-((b >> 0) & 1) & 0x3b6a57b2) ^\n (-((b >> 1) & 1) & 0x26508e6d) ^\n (-((b >> 2) & 1) & 0x1ea119fa) ^\n (-((b >> 3) & 1) & 0x3d4233dd) ^\n (-((b >> 4) & 1) & 0x2a1462b3)\n}\n\nfunction prefixChk (prefix) {\n var chk = 1\n for (var i = 0; i < prefix.length; ++i) {\n var c = prefix.charCodeAt(i)\n if (c < 33 || c > 126) return 'Invalid prefix (' + prefix + ')'\n\n chk = polymodStep(chk) ^ (c >> 5)\n }\n chk = polymodStep(chk)\n\n for (i = 0; i < prefix.length; ++i) {\n var v = prefix.charCodeAt(i)\n chk = polymodStep(chk) ^ (v & 0x1f)\n }\n return chk\n}\n\nfunction encode (prefix, words, LIMIT) {\n LIMIT = LIMIT || 90\n if ((prefix.length + 7 + words.length) > LIMIT) throw new TypeError('Exceeds length limit')\n\n prefix = prefix.toLowerCase()\n\n // determine chk mod\n var chk = prefixChk(prefix)\n if (typeof chk === 'string') throw new Error(chk)\n\n var result = prefix + '1'\n for (var i = 0; i < words.length; ++i) {\n var x = words[i]\n if ((x >> 5) !== 0) throw new Error('Non 5-bit word')\n\n chk = polymodStep(chk) ^ x\n result += ALPHABET.charAt(x)\n }\n\n for (i = 0; i < 6; ++i) {\n chk = polymodStep(chk)\n }\n chk ^= 1\n\n for (i = 0; i < 6; ++i) {\n var v = (chk >> ((5 - i) * 5)) & 0x1f\n result += ALPHABET.charAt(v)\n }\n\n return result\n}\n\nfunction __decode (str, LIMIT) {\n LIMIT = LIMIT || 90\n if (str.length < 8) return str + ' too short'\n if (str.length > LIMIT) return 'Exceeds length limit'\n\n // don't allow mixed case\n var lowered = str.toLowerCase()\n var uppered = str.toUpperCase()\n if (str !== lowered && str !== uppered) return 'Mixed-case string ' + str\n str = lowered\n\n var split = str.lastIndexOf('1')\n if (split === -1) return 'No separator character for ' + str\n if (split === 0) return 'Missing prefix for ' + str\n\n var prefix = str.slice(0, split)\n var wordChars = str.slice(split + 1)\n if (wordChars.length < 6) return 'Data too short'\n\n var chk = prefixChk(prefix)\n if (typeof chk === 'string') return chk\n\n var words = []\n for (var i = 0; i < wordChars.length; ++i) {\n var c = wordChars.charAt(i)\n var v = ALPHABET_MAP[c]\n if (v === undefined) return 'Unknown character ' + c\n chk = polymodStep(chk) ^ v\n\n // not in the checksum?\n if (i + 6 >= wordChars.length) continue\n words.push(v)\n }\n\n if (chk !== 1) return 'Invalid checksum for ' + str\n return { prefix: prefix, words: words }\n}\n\nfunction decodeUnsafe () {\n var res = __decode.apply(null, arguments)\n if (typeof res === 'object') return res\n}\n\nfunction decode (str) {\n var res = __decode.apply(null, arguments)\n if (typeof res === 'object') return res\n\n throw new Error(res)\n}\n\nfunction convert (data, inBits, outBits, pad) {\n var value = 0\n var bits = 0\n var maxV = (1 << outBits) - 1\n\n var result = []\n for (var i = 0; i < data.length; ++i) {\n value = (value << inBits) | data[i]\n bits += inBits\n\n while (bits >= outBits) {\n bits -= outBits\n result.push((value >> bits) & maxV)\n }\n }\n\n if (pad) {\n if (bits > 0) {\n result.push((value << (outBits - bits)) & maxV)\n }\n } else {\n if (bits >= inBits) return 'Excess padding'\n if ((value << (outBits - bits)) & maxV) return 'Non-zero padding'\n }\n\n return result\n}\n\nfunction toWordsUnsafe (bytes) {\n var res = convert(bytes, 8, 5, true)\n if (Array.isArray(res)) return res\n}\n\nfunction toWords (bytes) {\n var res = convert(bytes, 8, 5, true)\n if (Array.isArray(res)) return res\n\n throw new Error(res)\n}\n\nfunction fromWordsUnsafe (words) {\n var res = convert(words, 5, 8, false)\n if (Array.isArray(res)) return res\n}\n\nfunction fromWords (words) {\n var res = convert(words, 5, 8, false)\n if (Array.isArray(res)) return res\n\n throw new Error(res)\n}\n\nmodule.exports = {\n decodeUnsafe: decodeUnsafe,\n decode: decode,\n encode: encode,\n toWordsUnsafe: toWordsUnsafe,\n toWords: toWords,\n fromWordsUnsafe: fromWordsUnsafe,\n fromWords: fromWords\n}\n", "'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst bcrypto = require('../crypto');\nconst networks_1 = require('../networks');\nconst bscript = require('../script');\nconst lazy = require('./lazy');\nconst typef = require('typeforce');\nconst OPS = bscript.OPS;\nconst ecc = require('tiny-secp256k1');\nconst bech32 = require('bech32');\nconst EMPTY_BUFFER = Buffer.alloc(0);\n// witness: {signature} {pubKey}\n// input: <>\n// output: OP_0 {pubKeyHash}\nfunction p2wpkh(a, opts) {\n if (!a.address && !a.hash && !a.output && !a.pubkey && !a.witness)\n throw new TypeError('Not enough data');\n opts = Object.assign({ validate: true }, opts || {});\n typef(\n {\n address: typef.maybe(typef.String),\n hash: typef.maybe(typef.BufferN(20)),\n input: typef.maybe(typef.BufferN(0)),\n network: typef.maybe(typef.Object),\n output: typef.maybe(typef.BufferN(22)),\n pubkey: typef.maybe(ecc.isPoint),\n signature: typef.maybe(bscript.isCanonicalScriptSignature),\n witness: typef.maybe(typef.arrayOf(typef.Buffer)),\n },\n a,\n );\n const _address = lazy.value(() => {\n const result = bech32.decode(a.address);\n const version = result.words.shift();\n const data = bech32.fromWords(result.words);\n return {\n version,\n prefix: result.prefix,\n data: Buffer.from(data),\n };\n });\n const network = a.network || networks_1.bitcoin;\n const o = { name: 'p2wpkh', network };\n lazy.prop(o, 'address', () => {\n if (!o.hash) return;\n const words = bech32.toWords(o.hash);\n words.unshift(0x00);\n return bech32.encode(network.bech32, words);\n });\n lazy.prop(o, 'hash', () => {\n if (a.output) return a.output.slice(2, 22);\n if (a.address) return _address().data;\n if (a.pubkey || o.pubkey) return bcrypto.hash160(a.pubkey || o.pubkey);\n });\n lazy.prop(o, 'output', () => {\n if (!o.hash) return;\n return bscript.compile([OPS.OP_0, o.hash]);\n });\n lazy.prop(o, 'pubkey', () => {\n if (a.pubkey) return a.pubkey;\n if (!a.witness) return;\n return a.witness[1];\n });\n lazy.prop(o, 'signature', () => {\n if (!a.witness) return;\n return a.witness[0];\n });\n lazy.prop(o, 'input', () => {\n if (!o.witness) return;\n return EMPTY_BUFFER;\n });\n lazy.prop(o, 'witness', () => {\n if (!a.pubkey) return;\n if (!a.signature) return;\n return [a.signature, a.pubkey];\n });\n // extended validation\n if (opts.validate) {\n let hash = Buffer.from([]);\n if (a.address) {\n if (network && network.bech32 !== _address().prefix)\n throw new TypeError('Invalid prefix or Network mismatch');\n if (_address().version !== 0x00)\n throw new TypeError('Invalid address version');\n if (_address().data.length !== 20)\n throw new TypeError('Invalid address data');\n hash = _address().data;\n }\n if (a.hash) {\n if (hash.length > 0 && !hash.equals(a.hash))\n throw new TypeError('Hash mismatch');\n else hash = a.hash;\n }\n if (a.output) {\n if (\n a.output.length !== 22 ||\n a.output[0] !== OPS.OP_0 ||\n a.output[1] !== 0x14\n )\n throw new TypeError('Output is invalid');\n if (hash.length > 0 && !hash.equals(a.output.slice(2)))\n throw new TypeError('Hash mismatch');\n else hash = a.output.slice(2);\n }\n if (a.pubkey) {\n const pkh = bcrypto.hash160(a.pubkey);\n if (hash.length > 0 && !hash.equals(pkh))\n throw new TypeError('Hash mismatch');\n else hash = pkh;\n if (!ecc.isPoint(a.pubkey) || a.pubkey.length !== 33)\n throw new TypeError('Invalid pubkey for p2wpkh');\n }\n if (a.witness) {\n if (a.witness.length !== 2) throw new TypeError('Witness is invalid');\n if (!bscript.isCanonicalScriptSignature(a.witness[0]))\n throw new TypeError('Witness has invalid signature');\n if (!ecc.isPoint(a.witness[1]) || a.witness[1].length !== 33)\n throw new TypeError('Witness has invalid pubkey');\n if (a.signature && !a.signature.equals(a.witness[0]))\n throw new TypeError('Signature mismatch');\n if (a.pubkey && !a.pubkey.equals(a.witness[1]))\n throw new TypeError('Pubkey mismatch');\n const pkh = bcrypto.hash160(a.witness[1]);\n if (hash.length > 0 && !hash.equals(pkh))\n throw new TypeError('Hash mismatch');\n }\n }\n return Object.assign(o, a);\n}\nexports.p2wpkh = p2wpkh;\n", "'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst bcrypto = require('../crypto');\nconst networks_1 = require('../networks');\nconst bscript = require('../script');\nconst lazy = require('./lazy');\nconst typef = require('typeforce');\nconst OPS = bscript.OPS;\nconst ecc = require('tiny-secp256k1');\nconst bech32 = require('bech32');\nconst EMPTY_BUFFER = Buffer.alloc(0);\nfunction stacksEqual(a, b) {\n if (a.length !== b.length) return false;\n return a.every((x, i) => {\n return x.equals(b[i]);\n });\n}\nfunction chunkHasUncompressedPubkey(chunk) {\n if (\n Buffer.isBuffer(chunk) &&\n chunk.length === 65 &&\n chunk[0] === 0x04 &&\n ecc.isPoint(chunk)\n ) {\n return true;\n } else {\n return false;\n }\n}\n// input: <>\n// witness: [redeemScriptSig ...] {redeemScript}\n// output: OP_0 {sha256(redeemScript)}\nfunction p2wsh(a, opts) {\n if (!a.address && !a.hash && !a.output && !a.redeem && !a.witness)\n throw new TypeError('Not enough data');\n opts = Object.assign({ validate: true }, opts || {});\n typef(\n {\n network: typef.maybe(typef.Object),\n address: typef.maybe(typef.String),\n hash: typef.maybe(typef.BufferN(32)),\n output: typef.maybe(typef.BufferN(34)),\n redeem: typef.maybe({\n input: typef.maybe(typef.Buffer),\n network: typef.maybe(typef.Object),\n output: typef.maybe(typef.Buffer),\n witness: typef.maybe(typef.arrayOf(typef.Buffer)),\n }),\n input: typef.maybe(typef.BufferN(0)),\n witness: typef.maybe(typef.arrayOf(typef.Buffer)),\n },\n a,\n );\n const _address = lazy.value(() => {\n const result = bech32.decode(a.address);\n const version = result.words.shift();\n const data = bech32.fromWords(result.words);\n return {\n version,\n prefix: result.prefix,\n data: Buffer.from(data),\n };\n });\n const _rchunks = lazy.value(() => {\n return bscript.decompile(a.redeem.input);\n });\n let network = a.network;\n if (!network) {\n network = (a.redeem && a.redeem.network) || networks_1.bitcoin;\n }\n const o = { network };\n lazy.prop(o, 'address', () => {\n if (!o.hash) return;\n const words = bech32.toWords(o.hash);\n words.unshift(0x00);\n return bech32.encode(network.bech32, words);\n });\n lazy.prop(o, 'hash', () => {\n if (a.output) return a.output.slice(2);\n if (a.address) return _address().data;\n if (o.redeem && o.redeem.output) return bcrypto.sha256(o.redeem.output);\n });\n lazy.prop(o, 'output', () => {\n if (!o.hash) return;\n return bscript.compile([OPS.OP_0, o.hash]);\n });\n lazy.prop(o, 'redeem', () => {\n if (!a.witness) return;\n return {\n output: a.witness[a.witness.length - 1],\n input: EMPTY_BUFFER,\n witness: a.witness.slice(0, -1),\n };\n });\n lazy.prop(o, 'input', () => {\n if (!o.witness) return;\n return EMPTY_BUFFER;\n });\n lazy.prop(o, 'witness', () => {\n // transform redeem input to witness stack?\n if (\n a.redeem &&\n a.redeem.input &&\n a.redeem.input.length > 0 &&\n a.redeem.output &&\n a.redeem.output.length > 0\n ) {\n const stack = bscript.toStack(_rchunks());\n // assign, and blank the existing input\n o.redeem = Object.assign({ witness: stack }, a.redeem);\n o.redeem.input = EMPTY_BUFFER;\n return [].concat(stack, a.redeem.output);\n }\n if (!a.redeem) return;\n if (!a.redeem.output) return;\n if (!a.redeem.witness) return;\n return [].concat(a.redeem.witness, a.redeem.output);\n });\n lazy.prop(o, 'name', () => {\n const nameParts = ['p2wsh'];\n if (o.redeem !== undefined) nameParts.push(o.redeem.name);\n return nameParts.join('-');\n });\n // extended validation\n if (opts.validate) {\n let hash = Buffer.from([]);\n if (a.address) {\n if (_address().prefix !== network.bech32)\n throw new TypeError('Invalid prefix or Network mismatch');\n if (_address().version !== 0x00)\n throw new TypeError('Invalid address version');\n if (_address().data.length !== 32)\n throw new TypeError('Invalid address data');\n hash = _address().data;\n }\n if (a.hash) {\n if (hash.length > 0 && !hash.equals(a.hash))\n throw new TypeError('Hash mismatch');\n else hash = a.hash;\n }\n if (a.output) {\n if (\n a.output.length !== 34 ||\n a.output[0] !== OPS.OP_0 ||\n a.output[1] !== 0x20\n )\n throw new TypeError('Output is invalid');\n const hash2 = a.output.slice(2);\n if (hash.length > 0 && !hash.equals(hash2))\n throw new TypeError('Hash mismatch');\n else hash = hash2;\n }\n if (a.redeem) {\n if (a.redeem.network && a.redeem.network !== network)\n throw new TypeError('Network mismatch');\n // is there two redeem sources?\n if (\n a.redeem.input &&\n a.redeem.input.length > 0 &&\n a.redeem.witness &&\n a.redeem.witness.length > 0\n )\n throw new TypeError('Ambiguous witness source');\n // is the redeem output non-empty?\n if (a.redeem.output) {\n if (bscript.decompile(a.redeem.output).length === 0)\n throw new TypeError('Redeem.output is invalid');\n // match hash against other sources\n const hash2 = bcrypto.sha256(a.redeem.output);\n if (hash.length > 0 && !hash.equals(hash2))\n throw new TypeError('Hash mismatch');\n else hash = hash2;\n }\n if (a.redeem.input && !bscript.isPushOnly(_rchunks()))\n throw new TypeError('Non push-only scriptSig');\n if (\n a.witness &&\n a.redeem.witness &&\n !stacksEqual(a.witness, a.redeem.witness)\n )\n throw new TypeError('Witness and redeem.witness mismatch');\n if (\n (a.redeem.input && _rchunks().some(chunkHasUncompressedPubkey)) ||\n (a.redeem.output &&\n (bscript.decompile(a.redeem.output) || []).some(\n chunkHasUncompressedPubkey,\n ))\n ) {\n throw new TypeError(\n 'redeem.input or redeem.output contains uncompressed pubkey',\n );\n }\n }\n if (a.witness && a.witness.length > 0) {\n const wScript = a.witness[a.witness.length - 1];\n if (a.redeem && a.redeem.output && !a.redeem.output.equals(wScript))\n throw new TypeError('Witness and redeem.output mismatch');\n if (\n a.witness.some(chunkHasUncompressedPubkey) ||\n (bscript.decompile(wScript) || []).some(chunkHasUncompressedPubkey)\n )\n throw new TypeError('Witness contains uncompressed pubkey');\n }\n }\n return Object.assign(o, a);\n}\nexports.p2wsh = p2wsh;\n", "'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst embed_1 = require('./embed');\nexports.embed = embed_1.p2data;\nconst p2ms_1 = require('./p2ms');\nexports.p2ms = p2ms_1.p2ms;\nconst p2pk_1 = require('./p2pk');\nexports.p2pk = p2pk_1.p2pk;\nconst p2pkh_1 = require('./p2pkh');\nexports.p2pkh = p2pkh_1.p2pkh;\nconst p2sh_1 = require('./p2sh');\nexports.p2sh = p2sh_1.p2sh;\nconst p2wpkh_1 = require('./p2wpkh');\nexports.p2wpkh = p2wpkh_1.p2wpkh;\nconst p2wsh_1 = require('./p2wsh');\nexports.p2wsh = p2wsh_1.p2wsh;\n// TODO\n// witness commitment\n", "'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst networks = require('./networks');\nconst payments = require('./payments');\nconst bscript = require('./script');\nconst types = require('./types');\nconst bech32 = require('bech32');\nconst bs58check = require('bs58check');\nconst typeforce = require('typeforce');\nfunction fromBase58Check(address) {\n const payload = bs58check.decode(address);\n // TODO: 4.0.0, move to \"toOutputScript\"\n if (payload.length < 21) throw new TypeError(address + ' is too short');\n if (payload.length > 21) throw new TypeError(address + ' is too long');\n const version = payload.readUInt8(0);\n const hash = payload.slice(1);\n return { version, hash };\n}\nexports.fromBase58Check = fromBase58Check;\nfunction fromBech32(address) {\n const result = bech32.decode(address);\n const data = bech32.fromWords(result.words.slice(1));\n return {\n version: result.words[0],\n prefix: result.prefix,\n data: Buffer.from(data),\n };\n}\nexports.fromBech32 = fromBech32;\nfunction toBase58Check(hash, version) {\n typeforce(types.tuple(types.Hash160bit, types.UInt8), arguments);\n const payload = Buffer.allocUnsafe(21);\n payload.writeUInt8(version, 0);\n hash.copy(payload, 1);\n return bs58check.encode(payload);\n}\nexports.toBase58Check = toBase58Check;\nfunction toBech32(data, version, prefix) {\n const words = bech32.toWords(data);\n words.unshift(version);\n return bech32.encode(prefix, words);\n}\nexports.toBech32 = toBech32;\nfunction fromOutputScript(output, network) {\n // TODO: Network\n network = network || networks.bitcoin;\n try {\n return payments.p2pkh({ output, network }).address;\n } catch (e) {}\n try {\n return payments.p2sh({ output, network }).address;\n } catch (e) {}\n try {\n return payments.p2wpkh({ output, network }).address;\n } catch (e) {}\n try {\n return payments.p2wsh({ output, network }).address;\n } catch (e) {}\n throw new Error(bscript.toASM(output) + ' has no matching Address');\n}\nexports.fromOutputScript = fromOutputScript;\nfunction toOutputScript(address, network) {\n network = network || networks.bitcoin;\n let decodeBase58;\n let decodeBech32;\n try {\n decodeBase58 = fromBase58Check(address);\n } catch (e) {}\n if (decodeBase58) {\n if (decodeBase58.version === network.pubKeyHash)\n return payments.p2pkh({ hash: decodeBase58.hash }).output;\n if (decodeBase58.version === network.scriptHash)\n return payments.p2sh({ hash: decodeBase58.hash }).output;\n } else {\n try {\n decodeBech32 = fromBech32(address);\n } catch (e) {}\n if (decodeBech32) {\n if (decodeBech32.prefix !== network.bech32)\n throw new Error(address + ' has an invalid prefix');\n if (decodeBech32.version === 0) {\n if (decodeBech32.data.length === 20)\n return payments.p2wpkh({ hash: decodeBech32.data }).output;\n if (decodeBech32.data.length === 32)\n return payments.p2wsh({ hash: decodeBech32.data }).output;\n }\n }\n }\n throw new Error(address + ' has no matching Script');\n}\nexports.toOutputScript = toOutputScript;\n", "module.exports = require('crypto').randomBytes\n", "'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst NETWORKS = require('./networks');\nconst types = require('./types');\nconst ecc = require('tiny-secp256k1');\nconst randomBytes = require('randombytes');\nconst typeforce = require('typeforce');\nconst wif = require('wif');\nconst isOptions = typeforce.maybe(\n typeforce.compile({\n compressed: types.maybe(types.Boolean),\n network: types.maybe(types.Network),\n }),\n);\nclass ECPair {\n constructor(__D, __Q, options) {\n this.__D = __D;\n this.__Q = __Q;\n this.lowR = false;\n if (options === undefined) options = {};\n this.compressed =\n options.compressed === undefined ? true : options.compressed;\n this.network = options.network || NETWORKS.bitcoin;\n if (__Q !== undefined) this.__Q = ecc.pointCompress(__Q, this.compressed);\n }\n get privateKey() {\n return this.__D;\n }\n get publicKey() {\n if (!this.__Q) this.__Q = ecc.pointFromScalar(this.__D, this.compressed);\n return this.__Q;\n }\n toWIF() {\n if (!this.__D) throw new Error('Missing private key');\n return wif.encode(this.network.wif, this.__D, this.compressed);\n }\n sign(hash, lowR) {\n if (!this.__D) throw new Error('Missing private key');\n if (lowR === undefined) lowR = this.lowR;\n if (lowR === false) {\n return ecc.sign(hash, this.__D);\n } else {\n let sig = ecc.sign(hash, this.__D);\n const extraData = Buffer.alloc(32, 0);\n let counter = 0;\n // if first try is lowR, skip the loop\n // for second try and on, add extra entropy counting up\n while (sig[0] > 0x7f) {\n counter++;\n extraData.writeUIntLE(counter, 0, 6);\n sig = ecc.signWithEntropy(hash, this.__D, extraData);\n }\n return sig;\n }\n }\n verify(hash, signature) {\n return ecc.verify(hash, this.publicKey, signature);\n }\n}\nfunction fromPrivateKey(buffer, options) {\n typeforce(types.Buffer256bit, buffer);\n if (!ecc.isPrivate(buffer))\n throw new TypeError('Private key not in range [1, n)');\n typeforce(isOptions, options);\n return new ECPair(buffer, undefined, options);\n}\nexports.fromPrivateKey = fromPrivateKey;\nfunction fromPublicKey(buffer, options) {\n typeforce(ecc.isPoint, buffer);\n typeforce(isOptions, options);\n return new ECPair(undefined, buffer, options);\n}\nexports.fromPublicKey = fromPublicKey;\nfunction fromWIF(wifString, network) {\n const decoded = wif.decode(wifString);\n const version = decoded.version;\n // list of networks?\n if (types.Array(network)) {\n network = network\n .filter(x => {\n return version === x.wif;\n })\n .pop();\n if (!network) throw new Error('Unknown network version');\n // otherwise, assume a network object (or default to bitcoin)\n } else {\n network = network || NETWORKS.bitcoin;\n if (version !== network.wif) throw new Error('Invalid network version');\n }\n return fromPrivateKey(decoded.privateKey, {\n compressed: decoded.compressed,\n network: network,\n });\n}\nexports.fromWIF = fromWIF;\nfunction makeRandom(options) {\n typeforce(isOptions, options);\n if (options === undefined) options = {};\n const rng = options.rng || randomBytes;\n let d;\n do {\n d = rng(32);\n typeforce(types.Buffer256bit, d);\n } while (!ecc.isPrivate(d));\n return fromPrivateKey(d, options);\n}\nexports.makeRandom = makeRandom;\n", "'use strict'\nvar Buffer = require('safe-buffer').Buffer\n\n// Number.MAX_SAFE_INTEGER\nvar MAX_SAFE_INTEGER = 9007199254740991\n\nfunction checkUInt53 (n) {\n if (n < 0 || n > MAX_SAFE_INTEGER || n % 1 !== 0) throw new RangeError('value out of range')\n}\n\nfunction encode (number, buffer, offset) {\n checkUInt53(number)\n\n if (!buffer) buffer = Buffer.allocUnsafe(encodingLength(number))\n if (!Buffer.isBuffer(buffer)) throw new TypeError('buffer must be a Buffer instance')\n if (!offset) offset = 0\n\n // 8 bit\n if (number < 0xfd) {\n buffer.writeUInt8(number, offset)\n encode.bytes = 1\n\n // 16 bit\n } else if (number <= 0xffff) {\n buffer.writeUInt8(0xfd, offset)\n buffer.writeUInt16LE(number, offset + 1)\n encode.bytes = 3\n\n // 32 bit\n } else if (number <= 0xffffffff) {\n buffer.writeUInt8(0xfe, offset)\n buffer.writeUInt32LE(number, offset + 1)\n encode.bytes = 5\n\n // 64 bit\n } else {\n buffer.writeUInt8(0xff, offset)\n buffer.writeUInt32LE(number >>> 0, offset + 1)\n buffer.writeUInt32LE((number / 0x100000000) | 0, offset + 5)\n encode.bytes = 9\n }\n\n return buffer\n}\n\nfunction decode (buffer, offset) {\n if (!Buffer.isBuffer(buffer)) throw new TypeError('buffer must be a Buffer instance')\n if (!offset) offset = 0\n\n var first = buffer.readUInt8(offset)\n\n // 8 bit\n if (first < 0xfd) {\n decode.bytes = 1\n return first\n\n // 16 bit\n } else if (first === 0xfd) {\n decode.bytes = 3\n return buffer.readUInt16LE(offset + 1)\n\n // 32 bit\n } else if (first === 0xfe) {\n decode.bytes = 5\n return buffer.readUInt32LE(offset + 1)\n\n // 64 bit\n } else {\n decode.bytes = 9\n var lo = buffer.readUInt32LE(offset + 1)\n var hi = buffer.readUInt32LE(offset + 5)\n var number = hi * 0x0100000000 + lo\n checkUInt53(number)\n\n return number\n }\n}\n\nfunction encodingLength (number) {\n checkUInt53(number)\n\n return (\n number < 0xfd ? 1\n : number <= 0xffff ? 3\n : number <= 0xffffffff ? 5\n : 9\n )\n}\n\nmodule.exports = { encode: encode, decode: decode, encodingLength: encodingLength }\n", "'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst types = require('./types');\nconst typeforce = require('typeforce');\nconst varuint = require('varuint-bitcoin');\n// https://github.com/feross/buffer/blob/master/index.js#L1127\nfunction verifuint(value, max) {\n if (typeof value !== 'number')\n throw new Error('cannot write a non-number as a number');\n if (value < 0)\n throw new Error('specified a negative value for writing an unsigned value');\n if (value > max) throw new Error('RangeError: value out of range');\n if (Math.floor(value) !== value)\n throw new Error('value has a fractional component');\n}\nfunction readUInt64LE(buffer, offset) {\n const a = buffer.readUInt32LE(offset);\n let b = buffer.readUInt32LE(offset + 4);\n b *= 0x100000000;\n verifuint(b + a, 0x001fffffffffffff);\n return b + a;\n}\nexports.readUInt64LE = readUInt64LE;\nfunction writeUInt64LE(buffer, value, offset) {\n verifuint(value, 0x001fffffffffffff);\n buffer.writeInt32LE(value & -1, offset);\n buffer.writeUInt32LE(Math.floor(value / 0x100000000), offset + 4);\n return offset + 8;\n}\nexports.writeUInt64LE = writeUInt64LE;\nfunction reverseBuffer(buffer) {\n if (buffer.length < 1) return buffer;\n let j = buffer.length - 1;\n let tmp = 0;\n for (let i = 0; i < buffer.length / 2; i++) {\n tmp = buffer[i];\n buffer[i] = buffer[j];\n buffer[j] = tmp;\n j--;\n }\n return buffer;\n}\nexports.reverseBuffer = reverseBuffer;\nfunction cloneBuffer(buffer) {\n const clone = Buffer.allocUnsafe(buffer.length);\n buffer.copy(clone);\n return clone;\n}\nexports.cloneBuffer = cloneBuffer;\n/**\n * Helper class for serialization of bitcoin data types into a pre-allocated buffer.\n */\nclass BufferWriter {\n constructor(buffer, offset = 0) {\n this.buffer = buffer;\n this.offset = offset;\n typeforce(types.tuple(types.Buffer, types.UInt32), [buffer, offset]);\n }\n writeUInt8(i) {\n this.offset = this.buffer.writeUInt8(i, this.offset);\n }\n writeInt32(i) {\n this.offset = this.buffer.writeInt32LE(i, this.offset);\n }\n writeUInt32(i) {\n this.offset = this.buffer.writeUInt32LE(i, this.offset);\n }\n writeUInt64(i) {\n this.offset = writeUInt64LE(this.buffer, i, this.offset);\n }\n writeVarInt(i) {\n varuint.encode(i, this.buffer, this.offset);\n this.offset += varuint.encode.bytes;\n }\n writeSlice(slice) {\n if (this.buffer.length < this.offset + slice.length) {\n throw new Error('Cannot write slice out of bounds');\n }\n this.offset += slice.copy(this.buffer, this.offset);\n }\n writeVarSlice(slice) {\n this.writeVarInt(slice.length);\n this.writeSlice(slice);\n }\n writeVector(vector) {\n this.writeVarInt(vector.length);\n vector.forEach(buf => this.writeVarSlice(buf));\n }\n}\nexports.BufferWriter = BufferWriter;\n/**\n * Helper class for reading of bitcoin data types from a buffer.\n */\nclass BufferReader {\n constructor(buffer, offset = 0) {\n this.buffer = buffer;\n this.offset = offset;\n typeforce(types.tuple(types.Buffer, types.UInt32), [buffer, offset]);\n }\n readUInt8() {\n const result = this.buffer.readUInt8(this.offset);\n this.offset++;\n return result;\n }\n readInt32() {\n const result = this.buffer.readInt32LE(this.offset);\n this.offset += 4;\n return result;\n }\n readUInt32() {\n const result = this.buffer.readUInt32LE(this.offset);\n this.offset += 4;\n return result;\n }\n readUInt64() {\n const result = readUInt64LE(this.buffer, this.offset);\n this.offset += 8;\n return result;\n }\n readVarInt() {\n const vi = varuint.decode(this.buffer, this.offset);\n this.offset += varuint.decode.bytes;\n return vi;\n }\n readSlice(n) {\n if (this.buffer.length < this.offset + n) {\n throw new Error('Cannot read slice out of bounds');\n }\n const result = this.buffer.slice(this.offset, this.offset + n);\n this.offset += n;\n return result;\n }\n readVarSlice() {\n return this.readSlice(this.readVarInt());\n }\n readVector() {\n const count = this.readVarInt();\n const vector = [];\n for (let i = 0; i < count; i++) vector.push(this.readVarSlice());\n return vector;\n }\n}\nexports.BufferReader = BufferReader;\n", "'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst bufferutils_1 = require('./bufferutils');\nconst bcrypto = require('./crypto');\nconst bscript = require('./script');\nconst script_1 = require('./script');\nconst types = require('./types');\nconst typeforce = require('typeforce');\nconst varuint = require('varuint-bitcoin');\nfunction varSliceSize(someScript) {\n const length = someScript.length;\n return varuint.encodingLength(length) + length;\n}\nfunction vectorSize(someVector) {\n const length = someVector.length;\n return (\n varuint.encodingLength(length) +\n someVector.reduce((sum, witness) => {\n return sum + varSliceSize(witness);\n }, 0)\n );\n}\nconst EMPTY_SCRIPT = Buffer.allocUnsafe(0);\nconst EMPTY_WITNESS = [];\nconst ZERO = Buffer.from(\n '0000000000000000000000000000000000000000000000000000000000000000',\n 'hex',\n);\nconst ONE = Buffer.from(\n '0000000000000000000000000000000000000000000000000000000000000001',\n 'hex',\n);\nconst VALUE_UINT64_MAX = Buffer.from('ffffffffffffffff', 'hex');\nconst BLANK_OUTPUT = {\n script: EMPTY_SCRIPT,\n valueBuffer: VALUE_UINT64_MAX,\n};\nfunction isOutput(out) {\n return out.value !== undefined;\n}\nclass Transaction {\n constructor() {\n this.version = 1;\n this.locktime = 0;\n this.ins = [];\n this.outs = [];\n }\n static fromBuffer(buffer, _NO_STRICT) {\n const bufferReader = new bufferutils_1.BufferReader(buffer);\n const tx = new Transaction();\n tx.version = bufferReader.readInt32();\n const marker = bufferReader.readUInt8();\n const flag = bufferReader.readUInt8();\n let hasWitnesses = false;\n if (\n marker === Transaction.ADVANCED_TRANSACTION_MARKER &&\n flag === Transaction.ADVANCED_TRANSACTION_FLAG\n ) {\n hasWitnesses = true;\n } else {\n bufferReader.offset -= 2;\n }\n const vinLen = bufferReader.readVarInt();\n for (let i = 0; i < vinLen; ++i) {\n tx.ins.push({\n hash: bufferReader.readSlice(32),\n index: bufferReader.readUInt32(),\n script: bufferReader.readVarSlice(),\n sequence: bufferReader.readUInt32(),\n witness: EMPTY_WITNESS,\n });\n }\n const voutLen = bufferReader.readVarInt();\n for (let i = 0; i < voutLen; ++i) {\n tx.outs.push({\n value: bufferReader.readUInt64(),\n script: bufferReader.readVarSlice(),\n });\n }\n if (hasWitnesses) {\n for (let i = 0; i < vinLen; ++i) {\n tx.ins[i].witness = bufferReader.readVector();\n }\n // was this pointless?\n if (!tx.hasWitnesses())\n throw new Error('Transaction has superfluous witness data');\n }\n tx.locktime = bufferReader.readUInt32();\n if (_NO_STRICT) return tx;\n if (bufferReader.offset !== buffer.length)\n throw new Error('Transaction has unexpected data');\n return tx;\n }\n static fromHex(hex) {\n return Transaction.fromBuffer(Buffer.from(hex, 'hex'), false);\n }\n static isCoinbaseHash(buffer) {\n typeforce(types.Hash256bit, buffer);\n for (let i = 0; i < 32; ++i) {\n if (buffer[i] !== 0) return false;\n }\n return true;\n }\n isCoinbase() {\n return (\n this.ins.length === 1 && Transaction.isCoinbaseHash(this.ins[0].hash)\n );\n }\n addInput(hash, index, sequence, scriptSig) {\n typeforce(\n types.tuple(\n types.Hash256bit,\n types.UInt32,\n types.maybe(types.UInt32),\n types.maybe(types.Buffer),\n ),\n arguments,\n );\n if (types.Null(sequence)) {\n sequence = Transaction.DEFAULT_SEQUENCE;\n }\n // Add the input and return the input's index\n return (\n this.ins.push({\n hash,\n index,\n script: scriptSig || EMPTY_SCRIPT,\n sequence: sequence,\n witness: EMPTY_WITNESS,\n }) - 1\n );\n }\n addOutput(scriptPubKey, value) {\n typeforce(types.tuple(types.Buffer, types.Satoshi), arguments);\n // Add the output and return the output's index\n return (\n this.outs.push({\n script: scriptPubKey,\n value,\n }) - 1\n );\n }\n hasWitnesses() {\n return this.ins.some(x => {\n return x.witness.length !== 0;\n });\n }\n weight() {\n const base = this.byteLength(false);\n const total = this.byteLength(true);\n return base * 3 + total;\n }\n virtualSize() {\n return Math.ceil(this.weight() / 4);\n }\n byteLength(_ALLOW_WITNESS = true) {\n const hasWitnesses = _ALLOW_WITNESS && this.hasWitnesses();\n return (\n (hasWitnesses ? 10 : 8) +\n varuint.encodingLength(this.ins.length) +\n varuint.encodingLength(this.outs.length) +\n this.ins.reduce((sum, input) => {\n return sum + 40 + varSliceSize(input.script);\n }, 0) +\n this.outs.reduce((sum, output) => {\n return sum + 8 + varSliceSize(output.script);\n }, 0) +\n (hasWitnesses\n ? this.ins.reduce((sum, input) => {\n return sum + vectorSize(input.witness);\n }, 0)\n : 0)\n );\n }\n clone() {\n const newTx = new Transaction();\n newTx.version = this.version;\n newTx.locktime = this.locktime;\n newTx.ins = this.ins.map(txIn => {\n return {\n hash: txIn.hash,\n index: txIn.index,\n script: txIn.script,\n sequence: txIn.sequence,\n witness: txIn.witness,\n };\n });\n newTx.outs = this.outs.map(txOut => {\n return {\n script: txOut.script,\n value: txOut.value,\n };\n });\n return newTx;\n }\n /**\n * Hash transaction for signing a specific input.\n *\n * Bitcoin uses a different hash for each signed transaction input.\n * This method copies the transaction, makes the necessary changes based on the\n * hashType, and then hashes the result.\n * This hash can then be used to sign the provided transaction input.\n */\n hashForSignature(inIndex, prevOutScript, hashType) {\n typeforce(\n types.tuple(types.UInt32, types.Buffer, /* types.UInt8 */ types.Number),\n arguments,\n );\n // https://github.com/bitcoin/bitcoin/blob/master/src/test/sighash_tests.cpp#L29\n if (inIndex >= this.ins.length) return ONE;\n // ignore OP_CODESEPARATOR\n const ourScript = bscript.compile(\n bscript.decompile(prevOutScript).filter(x => {\n return x !== script_1.OPS.OP_CODESEPARATOR;\n }),\n );\n const txTmp = this.clone();\n // SIGHASH_NONE: ignore all outputs? (wildcard payee)\n if ((hashType & 0x1f) === Transaction.SIGHASH_NONE) {\n txTmp.outs = [];\n // ignore sequence numbers (except at inIndex)\n txTmp.ins.forEach((input, i) => {\n if (i === inIndex) return;\n input.sequence = 0;\n });\n // SIGHASH_SINGLE: ignore all outputs, except at the same index?\n } else if ((hashType & 0x1f) === Transaction.SIGHASH_SINGLE) {\n // https://github.com/bitcoin/bitcoin/blob/master/src/test/sighash_tests.cpp#L60\n if (inIndex >= this.outs.length) return ONE;\n // truncate outputs after\n txTmp.outs.length = inIndex + 1;\n // \"blank\" outputs before\n for (let i = 0; i < inIndex; i++) {\n txTmp.outs[i] = BLANK_OUTPUT;\n }\n // ignore sequence numbers (except at inIndex)\n txTmp.ins.forEach((input, y) => {\n if (y === inIndex) return;\n input.sequence = 0;\n });\n }\n // SIGHASH_ANYONECANPAY: ignore inputs entirely?\n if (hashType & Transaction.SIGHASH_ANYONECANPAY) {\n txTmp.ins = [txTmp.ins[inIndex]];\n txTmp.ins[0].script = ourScript;\n // SIGHASH_ALL: only ignore input scripts\n } else {\n // \"blank\" others input scripts\n txTmp.ins.forEach(input => {\n input.script = EMPTY_SCRIPT;\n });\n txTmp.ins[inIndex].script = ourScript;\n }\n // serialize and hash\n const buffer = Buffer.allocUnsafe(txTmp.byteLength(false) + 4);\n buffer.writeInt32LE(hashType, buffer.length - 4);\n txTmp.__toBuffer(buffer, 0, false);\n return bcrypto.hash256(buffer);\n }\n hashForWitnessV0(inIndex, prevOutScript, value, hashType) {\n typeforce(\n types.tuple(types.UInt32, types.Buffer, types.Satoshi, types.UInt32),\n arguments,\n );\n let tbuffer = Buffer.from([]);\n let bufferWriter;\n let hashOutputs = ZERO;\n let hashPrevouts = ZERO;\n let hashSequence = ZERO;\n if (!(hashType & Transaction.SIGHASH_ANYONECANPAY)) {\n tbuffer = Buffer.allocUnsafe(36 * this.ins.length);\n bufferWriter = new bufferutils_1.BufferWriter(tbuffer, 0);\n this.ins.forEach(txIn => {\n bufferWriter.writeSlice(txIn.hash);\n bufferWriter.writeUInt32(txIn.index);\n });\n hashPrevouts = bcrypto.hash256(tbuffer);\n }\n if (\n !(hashType & Transaction.SIGHASH_ANYONECANPAY) &&\n (hashType & 0x1f) !== Transaction.SIGHASH_SINGLE &&\n (hashType & 0x1f) !== Transaction.SIGHASH_NONE\n ) {\n tbuffer = Buffer.allocUnsafe(4 * this.ins.length);\n bufferWriter = new bufferutils_1.BufferWriter(tbuffer, 0);\n this.ins.forEach(txIn => {\n bufferWriter.writeUInt32(txIn.sequence);\n });\n hashSequence = bcrypto.hash256(tbuffer);\n }\n if (\n (hashType & 0x1f) !== Transaction.SIGHASH_SINGLE &&\n (hashType & 0x1f) !== Transaction.SIGHASH_NONE\n ) {\n const txOutsSize = this.outs.reduce((sum, output) => {\n return sum + 8 + varSliceSize(output.script);\n }, 0);\n tbuffer = Buffer.allocUnsafe(txOutsSize);\n bufferWriter = new bufferutils_1.BufferWriter(tbuffer, 0);\n this.outs.forEach(out => {\n bufferWriter.writeUInt64(out.value);\n bufferWriter.writeVarSlice(out.script);\n });\n hashOutputs = bcrypto.hash256(tbuffer);\n } else if (\n (hashType & 0x1f) === Transaction.SIGHASH_SINGLE &&\n inIndex < this.outs.length\n ) {\n const output = this.outs[inIndex];\n tbuffer = Buffer.allocUnsafe(8 + varSliceSize(output.script));\n bufferWriter = new bufferutils_1.BufferWriter(tbuffer, 0);\n bufferWriter.writeUInt64(output.value);\n bufferWriter.writeVarSlice(output.script);\n hashOutputs = bcrypto.hash256(tbuffer);\n }\n tbuffer = Buffer.allocUnsafe(156 + varSliceSize(prevOutScript));\n bufferWriter = new bufferutils_1.BufferWriter(tbuffer, 0);\n const input = this.ins[inIndex];\n bufferWriter.writeUInt32(this.version);\n bufferWriter.writeSlice(hashPrevouts);\n bufferWriter.writeSlice(hashSequence);\n bufferWriter.writeSlice(input.hash);\n bufferWriter.writeUInt32(input.index);\n bufferWriter.writeVarSlice(prevOutScript);\n bufferWriter.writeUInt64(value);\n bufferWriter.writeUInt32(input.sequence);\n bufferWriter.writeSlice(hashOutputs);\n bufferWriter.writeUInt32(this.locktime);\n bufferWriter.writeUInt32(hashType);\n return bcrypto.hash256(tbuffer);\n }\n getHash(forWitness) {\n // wtxid for coinbase is always 32 bytes of 0x00\n if (forWitness && this.isCoinbase()) return Buffer.alloc(32, 0);\n return bcrypto.hash256(this.__toBuffer(undefined, undefined, forWitness));\n }\n getId() {\n // transaction hash's are displayed in reverse order\n return bufferutils_1.reverseBuffer(this.getHash(false)).toString('hex');\n }\n toBuffer(buffer, initialOffset) {\n return this.__toBuffer(buffer, initialOffset, true);\n }\n toHex() {\n return this.toBuffer(undefined, undefined).toString('hex');\n }\n setInputScript(index, scriptSig) {\n typeforce(types.tuple(types.Number, types.Buffer), arguments);\n this.ins[index].script = scriptSig;\n }\n setWitness(index, witness) {\n typeforce(types.tuple(types.Number, [types.Buffer]), arguments);\n this.ins[index].witness = witness;\n }\n __toBuffer(buffer, initialOffset, _ALLOW_WITNESS = false) {\n if (!buffer) buffer = Buffer.allocUnsafe(this.byteLength(_ALLOW_WITNESS));\n const bufferWriter = new bufferutils_1.BufferWriter(\n buffer,\n initialOffset || 0,\n );\n bufferWriter.writeInt32(this.version);\n const hasWitnesses = _ALLOW_WITNESS && this.hasWitnesses();\n if (hasWitnesses) {\n bufferWriter.writeUInt8(Transaction.ADVANCED_TRANSACTION_MARKER);\n bufferWriter.writeUInt8(Transaction.ADVANCED_TRANSACTION_FLAG);\n }\n bufferWriter.writeVarInt(this.ins.length);\n this.ins.forEach(txIn => {\n bufferWriter.writeSlice(txIn.hash);\n bufferWriter.writeUInt32(txIn.index);\n bufferWriter.writeVarSlice(txIn.script);\n bufferWriter.writeUInt32(txIn.sequence);\n });\n bufferWriter.writeVarInt(this.outs.length);\n this.outs.forEach(txOut => {\n if (isOutput(txOut)) {\n bufferWriter.writeUInt64(txOut.value);\n } else {\n bufferWriter.writeSlice(txOut.valueBuffer);\n }\n bufferWriter.writeVarSlice(txOut.script);\n });\n if (hasWitnesses) {\n this.ins.forEach(input => {\n bufferWriter.writeVector(input.witness);\n });\n }\n bufferWriter.writeUInt32(this.locktime);\n // avoid slicing unless necessary\n if (initialOffset !== undefined)\n return buffer.slice(initialOffset, bufferWriter.offset);\n return buffer;\n }\n}\nTransaction.DEFAULT_SEQUENCE = 0xffffffff;\nTransaction.SIGHASH_ALL = 0x01;\nTransaction.SIGHASH_NONE = 0x02;\nTransaction.SIGHASH_SINGLE = 0x03;\nTransaction.SIGHASH_ANYONECANPAY = 0x80;\nTransaction.ADVANCED_TRANSACTION_MARKER = 0x00;\nTransaction.ADVANCED_TRANSACTION_FLAG = 0x01;\nexports.Transaction = Transaction;\n", "// constant-space merkle root calculation algorithm\nmodule.exports = function fastRoot (values, digestFn) {\n if (!Array.isArray(values)) throw TypeError('Expected values Array')\n if (typeof digestFn !== 'function') throw TypeError('Expected digest Function')\n\n var length = values.length\n var results = values.concat()\n\n while (length > 1) {\n var j = 0\n\n for (var i = 0; i < length; i += 2, ++j) {\n var left = results[i]\n var right = i + 1 === length ? left : results[i + 1]\n var data = Buffer.concat([left, right])\n\n results[j] = digestFn(data)\n }\n\n length = j\n }\n\n return results[0]\n}\n", "'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst bufferutils_1 = require('./bufferutils');\nconst bcrypto = require('./crypto');\nconst transaction_1 = require('./transaction');\nconst types = require('./types');\nconst fastMerkleRoot = require('merkle-lib/fastRoot');\nconst typeforce = require('typeforce');\nconst varuint = require('varuint-bitcoin');\nconst errorMerkleNoTxes = new TypeError(\n 'Cannot compute merkle root for zero transactions',\n);\nconst errorWitnessNotSegwit = new TypeError(\n 'Cannot compute witness commit for non-segwit block',\n);\nclass Block {\n constructor() {\n this.version = 1;\n this.prevHash = undefined;\n this.merkleRoot = undefined;\n this.timestamp = 0;\n this.witnessCommit = undefined;\n this.bits = 0;\n this.nonce = 0;\n this.transactions = undefined;\n }\n static fromBuffer(buffer) {\n if (buffer.length < 80) throw new Error('Buffer too small (< 80 bytes)');\n const bufferReader = new bufferutils_1.BufferReader(buffer);\n const block = new Block();\n block.version = bufferReader.readInt32();\n block.prevHash = bufferReader.readSlice(32);\n block.merkleRoot = bufferReader.readSlice(32);\n block.timestamp = bufferReader.readUInt32();\n block.bits = bufferReader.readUInt32();\n block.nonce = bufferReader.readUInt32();\n if (buffer.length === 80) return block;\n const readTransaction = () => {\n const tx = transaction_1.Transaction.fromBuffer(\n bufferReader.buffer.slice(bufferReader.offset),\n true,\n );\n bufferReader.offset += tx.byteLength();\n return tx;\n };\n const nTransactions = bufferReader.readVarInt();\n block.transactions = [];\n for (let i = 0; i < nTransactions; ++i) {\n const tx = readTransaction();\n block.transactions.push(tx);\n }\n const witnessCommit = block.getWitnessCommit();\n // This Block contains a witness commit\n if (witnessCommit) block.witnessCommit = witnessCommit;\n return block;\n }\n static fromHex(hex) {\n return Block.fromBuffer(Buffer.from(hex, 'hex'));\n }\n static calculateTarget(bits) {\n const exponent = ((bits & 0xff000000) >> 24) - 3;\n const mantissa = bits & 0x007fffff;\n const target = Buffer.alloc(32, 0);\n target.writeUIntBE(mantissa, 29 - exponent, 3);\n return target;\n }\n static calculateMerkleRoot(transactions, forWitness) {\n typeforce([{ getHash: types.Function }], transactions);\n if (transactions.length === 0) throw errorMerkleNoTxes;\n if (forWitness && !txesHaveWitnessCommit(transactions))\n throw errorWitnessNotSegwit;\n const hashes = transactions.map(transaction =>\n transaction.getHash(forWitness),\n );\n const rootHash = fastMerkleRoot(hashes, bcrypto.hash256);\n return forWitness\n ? bcrypto.hash256(\n Buffer.concat([rootHash, transactions[0].ins[0].witness[0]]),\n )\n : rootHash;\n }\n getWitnessCommit() {\n if (!txesHaveWitnessCommit(this.transactions)) return null;\n // The merkle root for the witness data is in an OP_RETURN output.\n // There is no rule for the index of the output, so use filter to find it.\n // The root is prepended with 0xaa21a9ed so check for 0x6a24aa21a9ed\n // If multiple commits are found, the output with highest index is assumed.\n const witnessCommits = this.transactions[0].outs\n .filter(out =>\n out.script.slice(0, 6).equals(Buffer.from('6a24aa21a9ed', 'hex')),\n )\n .map(out => out.script.slice(6, 38));\n if (witnessCommits.length === 0) return null;\n // Use the commit with the highest output (should only be one though)\n const result = witnessCommits[witnessCommits.length - 1];\n if (!(result instanceof Buffer && result.length === 32)) return null;\n return result;\n }\n hasWitnessCommit() {\n if (\n this.witnessCommit instanceof Buffer &&\n this.witnessCommit.length === 32\n )\n return true;\n if (this.getWitnessCommit() !== null) return true;\n return false;\n }\n hasWitness() {\n return anyTxHasWitness(this.transactions);\n }\n weight() {\n const base = this.byteLength(false, false);\n const total = this.byteLength(false, true);\n return base * 3 + total;\n }\n byteLength(headersOnly, allowWitness = true) {\n if (headersOnly || !this.transactions) return 80;\n return (\n 80 +\n varuint.encodingLength(this.transactions.length) +\n this.transactions.reduce((a, x) => a + x.byteLength(allowWitness), 0)\n );\n }\n getHash() {\n return bcrypto.hash256(this.toBuffer(true));\n }\n getId() {\n return bufferutils_1.reverseBuffer(this.getHash()).toString('hex');\n }\n getUTCDate() {\n const date = new Date(0); // epoch\n date.setUTCSeconds(this.timestamp);\n return date;\n }\n // TODO: buffer, offset compatibility\n toBuffer(headersOnly) {\n const buffer = Buffer.allocUnsafe(this.byteLength(headersOnly));\n const bufferWriter = new bufferutils_1.BufferWriter(buffer);\n bufferWriter.writeInt32(this.version);\n bufferWriter.writeSlice(this.prevHash);\n bufferWriter.writeSlice(this.merkleRoot);\n bufferWriter.writeUInt32(this.timestamp);\n bufferWriter.writeUInt32(this.bits);\n bufferWriter.writeUInt32(this.nonce);\n if (headersOnly || !this.transactions) return buffer;\n varuint.encode(this.transactions.length, buffer, bufferWriter.offset);\n bufferWriter.offset += varuint.encode.bytes;\n this.transactions.forEach(tx => {\n const txSize = tx.byteLength(); // TODO: extract from toBuffer?\n tx.toBuffer(buffer, bufferWriter.offset);\n bufferWriter.offset += txSize;\n });\n return buffer;\n }\n toHex(headersOnly) {\n return this.toBuffer(headersOnly).toString('hex');\n }\n checkTxRoots() {\n // If the Block has segwit transactions but no witness commit,\n // there's no way it can be valid, so fail the check.\n const hasWitnessCommit = this.hasWitnessCommit();\n if (!hasWitnessCommit && this.hasWitness()) return false;\n return (\n this.__checkMerkleRoot() &&\n (hasWitnessCommit ? this.__checkWitnessCommit() : true)\n );\n }\n checkProofOfWork() {\n const hash = bufferutils_1.reverseBuffer(this.getHash());\n const target = Block.calculateTarget(this.bits);\n return hash.compare(target) <= 0;\n }\n __checkMerkleRoot() {\n if (!this.transactions) throw errorMerkleNoTxes;\n const actualMerkleRoot = Block.calculateMerkleRoot(this.transactions);\n return this.merkleRoot.compare(actualMerkleRoot) === 0;\n }\n __checkWitnessCommit() {\n if (!this.transactions) throw errorMerkleNoTxes;\n if (!this.hasWitnessCommit()) throw errorWitnessNotSegwit;\n const actualWitnessCommit = Block.calculateMerkleRoot(\n this.transactions,\n true,\n );\n return this.witnessCommit.compare(actualWitnessCommit) === 0;\n }\n}\nexports.Block = Block;\nfunction txesHaveWitnessCommit(transactions) {\n return (\n transactions instanceof Array &&\n transactions[0] &&\n transactions[0].ins &&\n transactions[0].ins instanceof Array &&\n transactions[0].ins[0] &&\n transactions[0].ins[0].witness &&\n transactions[0].ins[0].witness instanceof Array &&\n transactions[0].ins[0].witness.length > 0\n );\n}\nfunction anyTxHasWitness(transactions) {\n return (\n transactions instanceof Array &&\n transactions.some(\n tx =>\n typeof tx === 'object' &&\n tx.ins instanceof Array &&\n tx.ins.some(\n input =>\n typeof input === 'object' &&\n input.witness instanceof Array &&\n input.witness.length > 0,\n ),\n )\n );\n}\n", "'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nvar GlobalTypes;\n(function(GlobalTypes) {\n GlobalTypes[(GlobalTypes['UNSIGNED_TX'] = 0)] = 'UNSIGNED_TX';\n GlobalTypes[(GlobalTypes['GLOBAL_XPUB'] = 1)] = 'GLOBAL_XPUB';\n})((GlobalTypes = exports.GlobalTypes || (exports.GlobalTypes = {})));\nexports.GLOBAL_TYPE_NAMES = ['unsignedTx', 'globalXpub'];\nvar InputTypes;\n(function(InputTypes) {\n InputTypes[(InputTypes['NON_WITNESS_UTXO'] = 0)] = 'NON_WITNESS_UTXO';\n InputTypes[(InputTypes['WITNESS_UTXO'] = 1)] = 'WITNESS_UTXO';\n InputTypes[(InputTypes['PARTIAL_SIG'] = 2)] = 'PARTIAL_SIG';\n InputTypes[(InputTypes['SIGHASH_TYPE'] = 3)] = 'SIGHASH_TYPE';\n InputTypes[(InputTypes['REDEEM_SCRIPT'] = 4)] = 'REDEEM_SCRIPT';\n InputTypes[(InputTypes['WITNESS_SCRIPT'] = 5)] = 'WITNESS_SCRIPT';\n InputTypes[(InputTypes['BIP32_DERIVATION'] = 6)] = 'BIP32_DERIVATION';\n InputTypes[(InputTypes['FINAL_SCRIPTSIG'] = 7)] = 'FINAL_SCRIPTSIG';\n InputTypes[(InputTypes['FINAL_SCRIPTWITNESS'] = 8)] = 'FINAL_SCRIPTWITNESS';\n InputTypes[(InputTypes['POR_COMMITMENT'] = 9)] = 'POR_COMMITMENT';\n InputTypes[(InputTypes['TAP_KEY_SIG'] = 19)] = 'TAP_KEY_SIG';\n InputTypes[(InputTypes['TAP_SCRIPT_SIG'] = 20)] = 'TAP_SCRIPT_SIG';\n InputTypes[(InputTypes['TAP_LEAF_SCRIPT'] = 21)] = 'TAP_LEAF_SCRIPT';\n InputTypes[(InputTypes['TAP_BIP32_DERIVATION'] = 22)] =\n 'TAP_BIP32_DERIVATION';\n InputTypes[(InputTypes['TAP_INTERNAL_KEY'] = 23)] = 'TAP_INTERNAL_KEY';\n InputTypes[(InputTypes['TAP_MERKLE_ROOT'] = 24)] = 'TAP_MERKLE_ROOT';\n})((InputTypes = exports.InputTypes || (exports.InputTypes = {})));\nexports.INPUT_TYPE_NAMES = [\n 'nonWitnessUtxo',\n 'witnessUtxo',\n 'partialSig',\n 'sighashType',\n 'redeemScript',\n 'witnessScript',\n 'bip32Derivation',\n 'finalScriptSig',\n 'finalScriptWitness',\n 'porCommitment',\n 'tapKeySig',\n 'tapScriptSig',\n 'tapLeafScript',\n 'tapBip32Derivation',\n 'tapInternalKey',\n 'tapMerkleRoot',\n];\nvar OutputTypes;\n(function(OutputTypes) {\n OutputTypes[(OutputTypes['REDEEM_SCRIPT'] = 0)] = 'REDEEM_SCRIPT';\n OutputTypes[(OutputTypes['WITNESS_SCRIPT'] = 1)] = 'WITNESS_SCRIPT';\n OutputTypes[(OutputTypes['BIP32_DERIVATION'] = 2)] = 'BIP32_DERIVATION';\n OutputTypes[(OutputTypes['TAP_INTERNAL_KEY'] = 5)] = 'TAP_INTERNAL_KEY';\n OutputTypes[(OutputTypes['TAP_TREE'] = 6)] = 'TAP_TREE';\n OutputTypes[(OutputTypes['TAP_BIP32_DERIVATION'] = 7)] =\n 'TAP_BIP32_DERIVATION';\n})((OutputTypes = exports.OutputTypes || (exports.OutputTypes = {})));\nexports.OUTPUT_TYPE_NAMES = [\n 'redeemScript',\n 'witnessScript',\n 'bip32Derivation',\n 'tapInternalKey',\n 'tapTree',\n 'tapBip32Derivation',\n];\n", "'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst typeFields_1 = require('../../typeFields');\nconst range = n => [...Array(n).keys()];\nfunction decode(keyVal) {\n if (keyVal.key[0] !== typeFields_1.GlobalTypes.GLOBAL_XPUB) {\n throw new Error(\n 'Decode Error: could not decode globalXpub with key 0x' +\n keyVal.key.toString('hex'),\n );\n }\n if (keyVal.key.length !== 79 || ![2, 3].includes(keyVal.key[46])) {\n throw new Error(\n 'Decode Error: globalXpub has invalid extended pubkey in key 0x' +\n keyVal.key.toString('hex'),\n );\n }\n if ((keyVal.value.length / 4) % 1 !== 0) {\n throw new Error(\n 'Decode Error: Global GLOBAL_XPUB value length should be multiple of 4',\n );\n }\n const extendedPubkey = keyVal.key.slice(1);\n const data = {\n masterFingerprint: keyVal.value.slice(0, 4),\n extendedPubkey,\n path: 'm',\n };\n for (const i of range(keyVal.value.length / 4 - 1)) {\n const val = keyVal.value.readUInt32LE(i * 4 + 4);\n const isHard = !!(val & 0x80000000);\n const idx = val & 0x7fffffff;\n data.path += '/' + idx.toString(10) + (isHard ? \"'\" : '');\n }\n return data;\n}\nexports.decode = decode;\nfunction encode(data) {\n const head = Buffer.from([typeFields_1.GlobalTypes.GLOBAL_XPUB]);\n const key = Buffer.concat([head, data.extendedPubkey]);\n const splitPath = data.path.split('/');\n const value = Buffer.allocUnsafe(splitPath.length * 4);\n data.masterFingerprint.copy(value, 0);\n let offset = 4;\n splitPath.slice(1).forEach(level => {\n const isHard = level.slice(-1) === \"'\";\n let num = 0x7fffffff & parseInt(isHard ? level.slice(0, -1) : level, 10);\n if (isHard) num += 0x80000000;\n value.writeUInt32LE(num, offset);\n offset += 4;\n });\n return {\n key,\n value,\n };\n}\nexports.encode = encode;\nexports.expected =\n '{ masterFingerprint: Buffer; extendedPubkey: Buffer; path: string; }';\nfunction check(data) {\n const epk = data.extendedPubkey;\n const mfp = data.masterFingerprint;\n const p = data.path;\n return (\n Buffer.isBuffer(epk) &&\n epk.length === 78 &&\n [2, 3].indexOf(epk[45]) > -1 &&\n Buffer.isBuffer(mfp) &&\n mfp.length === 4 &&\n typeof p === 'string' &&\n !!p.match(/^m(\\/\\d+'?)*$/)\n );\n}\nexports.check = check;\nfunction canAddToArray(array, item, dupeSet) {\n const dupeString = item.extendedPubkey.toString('hex');\n if (dupeSet.has(dupeString)) return false;\n dupeSet.add(dupeString);\n return (\n array.filter(v => v.extendedPubkey.equals(item.extendedPubkey)).length === 0\n );\n}\nexports.canAddToArray = canAddToArray;\n", "'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst typeFields_1 = require('../../typeFields');\nfunction encode(data) {\n return {\n key: Buffer.from([typeFields_1.GlobalTypes.UNSIGNED_TX]),\n value: data.toBuffer(),\n };\n}\nexports.encode = encode;\n", "'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst typeFields_1 = require('../../typeFields');\nfunction decode(keyVal) {\n if (keyVal.key[0] !== typeFields_1.InputTypes.FINAL_SCRIPTSIG) {\n throw new Error(\n 'Decode Error: could not decode finalScriptSig with key 0x' +\n keyVal.key.toString('hex'),\n );\n }\n return keyVal.value;\n}\nexports.decode = decode;\nfunction encode(data) {\n const key = Buffer.from([typeFields_1.InputTypes.FINAL_SCRIPTSIG]);\n return {\n key,\n value: data,\n };\n}\nexports.encode = encode;\nexports.expected = 'Buffer';\nfunction check(data) {\n return Buffer.isBuffer(data);\n}\nexports.check = check;\nfunction canAdd(currentData, newData) {\n return !!currentData && !!newData && currentData.finalScriptSig === undefined;\n}\nexports.canAdd = canAdd;\n", "'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst typeFields_1 = require('../../typeFields');\nfunction decode(keyVal) {\n if (keyVal.key[0] !== typeFields_1.InputTypes.FINAL_SCRIPTWITNESS) {\n throw new Error(\n 'Decode Error: could not decode finalScriptWitness with key 0x' +\n keyVal.key.toString('hex'),\n );\n }\n return keyVal.value;\n}\nexports.decode = decode;\nfunction encode(data) {\n const key = Buffer.from([typeFields_1.InputTypes.FINAL_SCRIPTWITNESS]);\n return {\n key,\n value: data,\n };\n}\nexports.encode = encode;\nexports.expected = 'Buffer';\nfunction check(data) {\n return Buffer.isBuffer(data);\n}\nexports.check = check;\nfunction canAdd(currentData, newData) {\n return (\n !!currentData && !!newData && currentData.finalScriptWitness === undefined\n );\n}\nexports.canAdd = canAdd;\n", "'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst typeFields_1 = require('../../typeFields');\nfunction decode(keyVal) {\n if (keyVal.key[0] !== typeFields_1.InputTypes.NON_WITNESS_UTXO) {\n throw new Error(\n 'Decode Error: could not decode nonWitnessUtxo with key 0x' +\n keyVal.key.toString('hex'),\n );\n }\n return keyVal.value;\n}\nexports.decode = decode;\nfunction encode(data) {\n return {\n key: Buffer.from([typeFields_1.InputTypes.NON_WITNESS_UTXO]),\n value: data,\n };\n}\nexports.encode = encode;\nexports.expected = 'Buffer';\nfunction check(data) {\n return Buffer.isBuffer(data);\n}\nexports.check = check;\nfunction canAdd(currentData, newData) {\n return !!currentData && !!newData && currentData.nonWitnessUtxo === undefined;\n}\nexports.canAdd = canAdd;\n", "'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst typeFields_1 = require('../../typeFields');\nfunction decode(keyVal) {\n if (keyVal.key[0] !== typeFields_1.InputTypes.PARTIAL_SIG) {\n throw new Error(\n 'Decode Error: could not decode partialSig with key 0x' +\n keyVal.key.toString('hex'),\n );\n }\n if (\n !(keyVal.key.length === 34 || keyVal.key.length === 66) ||\n ![2, 3, 4].includes(keyVal.key[1])\n ) {\n throw new Error(\n 'Decode Error: partialSig has invalid pubkey in key 0x' +\n keyVal.key.toString('hex'),\n );\n }\n const pubkey = keyVal.key.slice(1);\n return {\n pubkey,\n signature: keyVal.value,\n };\n}\nexports.decode = decode;\nfunction encode(pSig) {\n const head = Buffer.from([typeFields_1.InputTypes.PARTIAL_SIG]);\n return {\n key: Buffer.concat([head, pSig.pubkey]),\n value: pSig.signature,\n };\n}\nexports.encode = encode;\nexports.expected = '{ pubkey: Buffer; signature: Buffer; }';\nfunction check(data) {\n return (\n Buffer.isBuffer(data.pubkey) &&\n Buffer.isBuffer(data.signature) &&\n [33, 65].includes(data.pubkey.length) &&\n [2, 3, 4].includes(data.pubkey[0]) &&\n isDerSigWithSighash(data.signature)\n );\n}\nexports.check = check;\nfunction isDerSigWithSighash(buf) {\n if (!Buffer.isBuffer(buf) || buf.length < 9) return false;\n if (buf[0] !== 0x30) return false;\n if (buf.length !== buf[1] + 3) return false;\n if (buf[2] !== 0x02) return false;\n const rLen = buf[3];\n if (rLen > 33 || rLen < 1) return false;\n if (buf[3 + rLen + 1] !== 0x02) return false;\n const sLen = buf[3 + rLen + 2];\n if (sLen > 33 || sLen < 1) return false;\n if (buf.length !== 3 + rLen + 2 + sLen + 2) return false;\n return true;\n}\nfunction canAddToArray(array, item, dupeSet) {\n const dupeString = item.pubkey.toString('hex');\n if (dupeSet.has(dupeString)) return false;\n dupeSet.add(dupeString);\n return array.filter(v => v.pubkey.equals(item.pubkey)).length === 0;\n}\nexports.canAddToArray = canAddToArray;\n", "'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst typeFields_1 = require('../../typeFields');\nfunction decode(keyVal) {\n if (keyVal.key[0] !== typeFields_1.InputTypes.POR_COMMITMENT) {\n throw new Error(\n 'Decode Error: could not decode porCommitment with key 0x' +\n keyVal.key.toString('hex'),\n );\n }\n return keyVal.value.toString('utf8');\n}\nexports.decode = decode;\nfunction encode(data) {\n const key = Buffer.from([typeFields_1.InputTypes.POR_COMMITMENT]);\n return {\n key,\n value: Buffer.from(data, 'utf8'),\n };\n}\nexports.encode = encode;\nexports.expected = 'string';\nfunction check(data) {\n return typeof data === 'string';\n}\nexports.check = check;\nfunction canAdd(currentData, newData) {\n return !!currentData && !!newData && currentData.porCommitment === undefined;\n}\nexports.canAdd = canAdd;\n", "'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst typeFields_1 = require('../../typeFields');\nfunction decode(keyVal) {\n if (keyVal.key[0] !== typeFields_1.InputTypes.SIGHASH_TYPE) {\n throw new Error(\n 'Decode Error: could not decode sighashType with key 0x' +\n keyVal.key.toString('hex'),\n );\n }\n return keyVal.value.readUInt32LE(0);\n}\nexports.decode = decode;\nfunction encode(data) {\n const key = Buffer.from([typeFields_1.InputTypes.SIGHASH_TYPE]);\n const value = Buffer.allocUnsafe(4);\n value.writeUInt32LE(data, 0);\n return {\n key,\n value,\n };\n}\nexports.encode = encode;\nexports.expected = 'number';\nfunction check(data) {\n return typeof data === 'number';\n}\nexports.check = check;\nfunction canAdd(currentData, newData) {\n return !!currentData && !!newData && currentData.sighashType === undefined;\n}\nexports.canAdd = canAdd;\n", "'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst typeFields_1 = require('../../typeFields');\nfunction decode(keyVal) {\n if (\n keyVal.key[0] !== typeFields_1.InputTypes.TAP_KEY_SIG ||\n keyVal.key.length !== 1\n ) {\n throw new Error(\n 'Decode Error: could not decode tapKeySig with key 0x' +\n keyVal.key.toString('hex'),\n );\n }\n if (!check(keyVal.value)) {\n throw new Error(\n 'Decode Error: tapKeySig not a valid 64-65-byte BIP340 signature',\n );\n }\n return keyVal.value;\n}\nexports.decode = decode;\nfunction encode(value) {\n const key = Buffer.from([typeFields_1.InputTypes.TAP_KEY_SIG]);\n return { key, value };\n}\nexports.encode = encode;\nexports.expected = 'Buffer';\nfunction check(data) {\n return Buffer.isBuffer(data) && (data.length === 64 || data.length === 65);\n}\nexports.check = check;\nfunction canAdd(currentData, newData) {\n return !!currentData && !!newData && currentData.tapKeySig === undefined;\n}\nexports.canAdd = canAdd;\n", "'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst typeFields_1 = require('../../typeFields');\nfunction decode(keyVal) {\n if (keyVal.key[0] !== typeFields_1.InputTypes.TAP_LEAF_SCRIPT) {\n throw new Error(\n 'Decode Error: could not decode tapLeafScript with key 0x' +\n keyVal.key.toString('hex'),\n );\n }\n if ((keyVal.key.length - 2) % 32 !== 0) {\n throw new Error(\n 'Decode Error: tapLeafScript has invalid control block in key 0x' +\n keyVal.key.toString('hex'),\n );\n }\n const leafVersion = keyVal.value[keyVal.value.length - 1];\n if ((keyVal.key[1] & 0xfe) !== leafVersion) {\n throw new Error(\n 'Decode Error: tapLeafScript bad leaf version in key 0x' +\n keyVal.key.toString('hex'),\n );\n }\n const script = keyVal.value.slice(0, -1);\n const controlBlock = keyVal.key.slice(1);\n return { controlBlock, script, leafVersion };\n}\nexports.decode = decode;\nfunction encode(tScript) {\n const head = Buffer.from([typeFields_1.InputTypes.TAP_LEAF_SCRIPT]);\n const verBuf = Buffer.from([tScript.leafVersion]);\n return {\n key: Buffer.concat([head, tScript.controlBlock]),\n value: Buffer.concat([tScript.script, verBuf]),\n };\n}\nexports.encode = encode;\nexports.expected =\n '{ controlBlock: Buffer; leafVersion: number, script: Buffer; }';\nfunction check(data) {\n return (\n Buffer.isBuffer(data.controlBlock) &&\n (data.controlBlock.length - 1) % 32 === 0 &&\n (data.controlBlock[0] & 0xfe) === data.leafVersion &&\n Buffer.isBuffer(data.script)\n );\n}\nexports.check = check;\nfunction canAddToArray(array, item, dupeSet) {\n const dupeString = item.controlBlock.toString('hex');\n if (dupeSet.has(dupeString)) return false;\n dupeSet.add(dupeString);\n return (\n array.filter(v => v.controlBlock.equals(item.controlBlock)).length === 0\n );\n}\nexports.canAddToArray = canAddToArray;\n", "'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst typeFields_1 = require('../../typeFields');\nfunction decode(keyVal) {\n if (\n keyVal.key[0] !== typeFields_1.InputTypes.TAP_MERKLE_ROOT ||\n keyVal.key.length !== 1\n ) {\n throw new Error(\n 'Decode Error: could not decode tapMerkleRoot with key 0x' +\n keyVal.key.toString('hex'),\n );\n }\n if (!check(keyVal.value)) {\n throw new Error('Decode Error: tapMerkleRoot not a 32-byte hash');\n }\n return keyVal.value;\n}\nexports.decode = decode;\nfunction encode(value) {\n const key = Buffer.from([typeFields_1.InputTypes.TAP_MERKLE_ROOT]);\n return { key, value };\n}\nexports.encode = encode;\nexports.expected = 'Buffer';\nfunction check(data) {\n return Buffer.isBuffer(data) && data.length === 32;\n}\nexports.check = check;\nfunction canAdd(currentData, newData) {\n return !!currentData && !!newData && currentData.tapMerkleRoot === undefined;\n}\nexports.canAdd = canAdd;\n", "'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst typeFields_1 = require('../../typeFields');\nfunction decode(keyVal) {\n if (keyVal.key[0] !== typeFields_1.InputTypes.TAP_SCRIPT_SIG) {\n throw new Error(\n 'Decode Error: could not decode tapScriptSig with key 0x' +\n keyVal.key.toString('hex'),\n );\n }\n if (keyVal.key.length !== 65) {\n throw new Error(\n 'Decode Error: tapScriptSig has invalid key 0x' +\n keyVal.key.toString('hex'),\n );\n }\n if (keyVal.value.length !== 64 && keyVal.value.length !== 65) {\n throw new Error(\n 'Decode Error: tapScriptSig has invalid signature in key 0x' +\n keyVal.key.toString('hex'),\n );\n }\n const pubkey = keyVal.key.slice(1, 33);\n const leafHash = keyVal.key.slice(33);\n return {\n pubkey,\n leafHash,\n signature: keyVal.value,\n };\n}\nexports.decode = decode;\nfunction encode(tSig) {\n const head = Buffer.from([typeFields_1.InputTypes.TAP_SCRIPT_SIG]);\n return {\n key: Buffer.concat([head, tSig.pubkey, tSig.leafHash]),\n value: tSig.signature,\n };\n}\nexports.encode = encode;\nexports.expected = '{ pubkey: Buffer; leafHash: Buffer; signature: Buffer; }';\nfunction check(data) {\n return (\n Buffer.isBuffer(data.pubkey) &&\n Buffer.isBuffer(data.leafHash) &&\n Buffer.isBuffer(data.signature) &&\n data.pubkey.length === 32 &&\n data.leafHash.length === 32 &&\n (data.signature.length === 64 || data.signature.length === 65)\n );\n}\nexports.check = check;\nfunction canAddToArray(array, item, dupeSet) {\n const dupeString =\n item.pubkey.toString('hex') + item.leafHash.toString('hex');\n if (dupeSet.has(dupeString)) return false;\n dupeSet.add(dupeString);\n return (\n array.filter(\n v => v.pubkey.equals(item.pubkey) && v.leafHash.equals(item.leafHash),\n ).length === 0\n );\n}\nexports.canAddToArray = canAddToArray;\n", "'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\n// Number.MAX_SAFE_INTEGER\nconst MAX_SAFE_INTEGER = 9007199254740991;\nfunction checkUInt53(n) {\n if (n < 0 || n > MAX_SAFE_INTEGER || n % 1 !== 0)\n throw new RangeError('value out of range');\n}\nfunction encode(_number, buffer, offset) {\n checkUInt53(_number);\n if (!buffer) buffer = Buffer.allocUnsafe(encodingLength(_number));\n if (!Buffer.isBuffer(buffer))\n throw new TypeError('buffer must be a Buffer instance');\n if (!offset) offset = 0;\n // 8 bit\n if (_number < 0xfd) {\n buffer.writeUInt8(_number, offset);\n Object.assign(encode, { bytes: 1 });\n // 16 bit\n } else if (_number <= 0xffff) {\n buffer.writeUInt8(0xfd, offset);\n buffer.writeUInt16LE(_number, offset + 1);\n Object.assign(encode, { bytes: 3 });\n // 32 bit\n } else if (_number <= 0xffffffff) {\n buffer.writeUInt8(0xfe, offset);\n buffer.writeUInt32LE(_number, offset + 1);\n Object.assign(encode, { bytes: 5 });\n // 64 bit\n } else {\n buffer.writeUInt8(0xff, offset);\n buffer.writeUInt32LE(_number >>> 0, offset + 1);\n buffer.writeUInt32LE((_number / 0x100000000) | 0, offset + 5);\n Object.assign(encode, { bytes: 9 });\n }\n return buffer;\n}\nexports.encode = encode;\nfunction decode(buffer, offset) {\n if (!Buffer.isBuffer(buffer))\n throw new TypeError('buffer must be a Buffer instance');\n if (!offset) offset = 0;\n const first = buffer.readUInt8(offset);\n // 8 bit\n if (first < 0xfd) {\n Object.assign(decode, { bytes: 1 });\n return first;\n // 16 bit\n } else if (first === 0xfd) {\n Object.assign(decode, { bytes: 3 });\n return buffer.readUInt16LE(offset + 1);\n // 32 bit\n } else if (first === 0xfe) {\n Object.assign(decode, { bytes: 5 });\n return buffer.readUInt32LE(offset + 1);\n // 64 bit\n } else {\n Object.assign(decode, { bytes: 9 });\n const lo = buffer.readUInt32LE(offset + 1);\n const hi = buffer.readUInt32LE(offset + 5);\n const _number = hi * 0x0100000000 + lo;\n checkUInt53(_number);\n return _number;\n }\n}\nexports.decode = decode;\nfunction encodingLength(_number) {\n checkUInt53(_number);\n return _number < 0xfd\n ? 1\n : _number <= 0xffff\n ? 3\n : _number <= 0xffffffff\n ? 5\n : 9;\n}\nexports.encodingLength = encodingLength;\n", "'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst varuint = require('./varint');\nexports.range = n => [...Array(n).keys()];\nfunction reverseBuffer(buffer) {\n if (buffer.length < 1) return buffer;\n let j = buffer.length - 1;\n let tmp = 0;\n for (let i = 0; i < buffer.length / 2; i++) {\n tmp = buffer[i];\n buffer[i] = buffer[j];\n buffer[j] = tmp;\n j--;\n }\n return buffer;\n}\nexports.reverseBuffer = reverseBuffer;\nfunction keyValsToBuffer(keyVals) {\n const buffers = keyVals.map(keyValToBuffer);\n buffers.push(Buffer.from([0]));\n return Buffer.concat(buffers);\n}\nexports.keyValsToBuffer = keyValsToBuffer;\nfunction keyValToBuffer(keyVal) {\n const keyLen = keyVal.key.length;\n const valLen = keyVal.value.length;\n const keyVarIntLen = varuint.encodingLength(keyLen);\n const valVarIntLen = varuint.encodingLength(valLen);\n const buffer = Buffer.allocUnsafe(\n keyVarIntLen + keyLen + valVarIntLen + valLen,\n );\n varuint.encode(keyLen, buffer, 0);\n keyVal.key.copy(buffer, keyVarIntLen);\n varuint.encode(valLen, buffer, keyVarIntLen + keyLen);\n keyVal.value.copy(buffer, keyVarIntLen + keyLen + valVarIntLen);\n return buffer;\n}\nexports.keyValToBuffer = keyValToBuffer;\n// https://github.com/feross/buffer/blob/master/index.js#L1127\nfunction verifuint(value, max) {\n if (typeof value !== 'number')\n throw new Error('cannot write a non-number as a number');\n if (value < 0)\n throw new Error('specified a negative value for writing an unsigned value');\n if (value > max) throw new Error('RangeError: value out of range');\n if (Math.floor(value) !== value)\n throw new Error('value has a fractional component');\n}\nfunction readUInt64LE(buffer, offset) {\n const a = buffer.readUInt32LE(offset);\n let b = buffer.readUInt32LE(offset + 4);\n b *= 0x100000000;\n verifuint(b + a, 0x001fffffffffffff);\n return b + a;\n}\nexports.readUInt64LE = readUInt64LE;\nfunction writeUInt64LE(buffer, value, offset) {\n verifuint(value, 0x001fffffffffffff);\n buffer.writeInt32LE(value & -1, offset);\n buffer.writeUInt32LE(Math.floor(value / 0x100000000), offset + 4);\n return offset + 8;\n}\nexports.writeUInt64LE = writeUInt64LE;\n", "'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst typeFields_1 = require('../../typeFields');\nconst tools_1 = require('../tools');\nconst varuint = require('../varint');\nfunction decode(keyVal) {\n if (keyVal.key[0] !== typeFields_1.InputTypes.WITNESS_UTXO) {\n throw new Error(\n 'Decode Error: could not decode witnessUtxo with key 0x' +\n keyVal.key.toString('hex'),\n );\n }\n const value = tools_1.readUInt64LE(keyVal.value, 0);\n let _offset = 8;\n const scriptLen = varuint.decode(keyVal.value, _offset);\n _offset += varuint.encodingLength(scriptLen);\n const script = keyVal.value.slice(_offset);\n if (script.length !== scriptLen) {\n throw new Error('Decode Error: WITNESS_UTXO script is not proper length');\n }\n return {\n script,\n value,\n };\n}\nexports.decode = decode;\nfunction encode(data) {\n const { script, value } = data;\n const varintLen = varuint.encodingLength(script.length);\n const result = Buffer.allocUnsafe(8 + varintLen + script.length);\n tools_1.writeUInt64LE(result, value, 0);\n varuint.encode(script.length, result, 8);\n script.copy(result, 8 + varintLen);\n return {\n key: Buffer.from([typeFields_1.InputTypes.WITNESS_UTXO]),\n value: result,\n };\n}\nexports.encode = encode;\nexports.expected = '{ script: Buffer; value: number; }';\nfunction check(data) {\n return Buffer.isBuffer(data.script) && typeof data.value === 'number';\n}\nexports.check = check;\nfunction canAdd(currentData, newData) {\n return !!currentData && !!newData && currentData.witnessUtxo === undefined;\n}\nexports.canAdd = canAdd;\n", "'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst typeFields_1 = require('../../typeFields');\nconst varuint = require('../varint');\nfunction decode(keyVal) {\n if (\n keyVal.key[0] !== typeFields_1.OutputTypes.TAP_TREE ||\n keyVal.key.length !== 1\n ) {\n throw new Error(\n 'Decode Error: could not decode tapTree with key 0x' +\n keyVal.key.toString('hex'),\n );\n }\n let _offset = 0;\n const data = [];\n while (_offset < keyVal.value.length) {\n const depth = keyVal.value[_offset++];\n const leafVersion = keyVal.value[_offset++];\n const scriptLen = varuint.decode(keyVal.value, _offset);\n _offset += varuint.encodingLength(scriptLen);\n data.push({\n depth,\n leafVersion,\n script: keyVal.value.slice(_offset, _offset + scriptLen),\n });\n _offset += scriptLen;\n }\n return { leaves: data };\n}\nexports.decode = decode;\nfunction encode(tree) {\n const key = Buffer.from([typeFields_1.OutputTypes.TAP_TREE]);\n const bufs = [].concat(\n ...tree.leaves.map(tapLeaf => [\n Buffer.of(tapLeaf.depth, tapLeaf.leafVersion),\n varuint.encode(tapLeaf.script.length),\n tapLeaf.script,\n ]),\n );\n return {\n key,\n value: Buffer.concat(bufs),\n };\n}\nexports.encode = encode;\nexports.expected =\n '{ leaves: [{ depth: number; leafVersion: number, script: Buffer; }] }';\nfunction check(data) {\n return (\n Array.isArray(data.leaves) &&\n data.leaves.every(\n tapLeaf =>\n tapLeaf.depth >= 0 &&\n tapLeaf.depth <= 128 &&\n (tapLeaf.leafVersion & 0xfe) === tapLeaf.leafVersion &&\n Buffer.isBuffer(tapLeaf.script),\n )\n );\n}\nexports.check = check;\nfunction canAdd(currentData, newData) {\n return !!currentData && !!newData && currentData.tapTree === undefined;\n}\nexports.canAdd = canAdd;\n", "'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst range = n => [...Array(n).keys()];\nconst isValidDERKey = pubkey =>\n (pubkey.length === 33 && [2, 3].includes(pubkey[0])) ||\n (pubkey.length === 65 && 4 === pubkey[0]);\nfunction makeConverter(TYPE_BYTE, isValidPubkey = isValidDERKey) {\n function decode(keyVal) {\n if (keyVal.key[0] !== TYPE_BYTE) {\n throw new Error(\n 'Decode Error: could not decode bip32Derivation with key 0x' +\n keyVal.key.toString('hex'),\n );\n }\n const pubkey = keyVal.key.slice(1);\n if (!isValidPubkey(pubkey)) {\n throw new Error(\n 'Decode Error: bip32Derivation has invalid pubkey in key 0x' +\n keyVal.key.toString('hex'),\n );\n }\n if ((keyVal.value.length / 4) % 1 !== 0) {\n throw new Error(\n 'Decode Error: Input BIP32_DERIVATION value length should be multiple of 4',\n );\n }\n const data = {\n masterFingerprint: keyVal.value.slice(0, 4),\n pubkey,\n path: 'm',\n };\n for (const i of range(keyVal.value.length / 4 - 1)) {\n const val = keyVal.value.readUInt32LE(i * 4 + 4);\n const isHard = !!(val & 0x80000000);\n const idx = val & 0x7fffffff;\n data.path += '/' + idx.toString(10) + (isHard ? \"'\" : '');\n }\n return data;\n }\n function encode(data) {\n const head = Buffer.from([TYPE_BYTE]);\n const key = Buffer.concat([head, data.pubkey]);\n const splitPath = data.path.split('/');\n const value = Buffer.allocUnsafe(splitPath.length * 4);\n data.masterFingerprint.copy(value, 0);\n let offset = 4;\n splitPath.slice(1).forEach(level => {\n const isHard = level.slice(-1) === \"'\";\n let num = 0x7fffffff & parseInt(isHard ? level.slice(0, -1) : level, 10);\n if (isHard) num += 0x80000000;\n value.writeUInt32LE(num, offset);\n offset += 4;\n });\n return {\n key,\n value,\n };\n }\n const expected =\n '{ masterFingerprint: Buffer; pubkey: Buffer; path: string; }';\n function check(data) {\n return (\n Buffer.isBuffer(data.pubkey) &&\n Buffer.isBuffer(data.masterFingerprint) &&\n typeof data.path === 'string' &&\n isValidPubkey(data.pubkey) &&\n data.masterFingerprint.length === 4\n );\n }\n function canAddToArray(array, item, dupeSet) {\n const dupeString = item.pubkey.toString('hex');\n if (dupeSet.has(dupeString)) return false;\n dupeSet.add(dupeString);\n return array.filter(v => v.pubkey.equals(item.pubkey)).length === 0;\n }\n return {\n decode,\n encode,\n check,\n expected,\n canAddToArray,\n };\n}\nexports.makeConverter = makeConverter;\n", "'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nfunction makeChecker(pubkeyTypes) {\n return checkPubkey;\n function checkPubkey(keyVal) {\n let pubkey;\n if (pubkeyTypes.includes(keyVal.key[0])) {\n pubkey = keyVal.key.slice(1);\n if (\n !(pubkey.length === 33 || pubkey.length === 65) ||\n ![2, 3, 4].includes(pubkey[0])\n ) {\n throw new Error(\n 'Format Error: invalid pubkey in key 0x' + keyVal.key.toString('hex'),\n );\n }\n }\n return pubkey;\n }\n}\nexports.makeChecker = makeChecker;\n", "'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nfunction makeConverter(TYPE_BYTE) {\n function decode(keyVal) {\n if (keyVal.key[0] !== TYPE_BYTE) {\n throw new Error(\n 'Decode Error: could not decode redeemScript with key 0x' +\n keyVal.key.toString('hex'),\n );\n }\n return keyVal.value;\n }\n function encode(data) {\n const key = Buffer.from([TYPE_BYTE]);\n return {\n key,\n value: data,\n };\n }\n const expected = 'Buffer';\n function check(data) {\n return Buffer.isBuffer(data);\n }\n function canAdd(currentData, newData) {\n return !!currentData && !!newData && currentData.redeemScript === undefined;\n }\n return {\n decode,\n encode,\n check,\n expected,\n canAdd,\n };\n}\nexports.makeConverter = makeConverter;\n", "'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst varuint = require('../varint');\nconst bip32Derivation = require('./bip32Derivation');\nconst isValidBIP340Key = pubkey => pubkey.length === 32;\nfunction makeConverter(TYPE_BYTE) {\n const parent = bip32Derivation.makeConverter(TYPE_BYTE, isValidBIP340Key);\n function decode(keyVal) {\n const nHashes = varuint.decode(keyVal.value);\n const nHashesLen = varuint.encodingLength(nHashes);\n const base = parent.decode({\n key: keyVal.key,\n value: keyVal.value.slice(nHashesLen + nHashes * 32),\n });\n const leafHashes = new Array(nHashes);\n for (let i = 0, _offset = nHashesLen; i < nHashes; i++, _offset += 32) {\n leafHashes[i] = keyVal.value.slice(_offset, _offset + 32);\n }\n return Object.assign({}, base, { leafHashes });\n }\n function encode(data) {\n const base = parent.encode(data);\n const nHashesLen = varuint.encodingLength(data.leafHashes.length);\n const nHashesBuf = Buffer.allocUnsafe(nHashesLen);\n varuint.encode(data.leafHashes.length, nHashesBuf);\n const value = Buffer.concat([nHashesBuf, ...data.leafHashes, base.value]);\n return Object.assign({}, base, { value });\n }\n const expected =\n '{ ' +\n 'masterFingerprint: Buffer; ' +\n 'pubkey: Buffer; ' +\n 'path: string; ' +\n 'leafHashes: Buffer[]; ' +\n '}';\n function check(data) {\n return (\n Array.isArray(data.leafHashes) &&\n data.leafHashes.every(\n leafHash => Buffer.isBuffer(leafHash) && leafHash.length === 32,\n ) &&\n parent.check(data)\n );\n }\n return {\n decode,\n encode,\n check,\n expected,\n canAddToArray: parent.canAddToArray,\n };\n}\nexports.makeConverter = makeConverter;\n", "'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nfunction makeConverter(TYPE_BYTE) {\n function decode(keyVal) {\n if (keyVal.key[0] !== TYPE_BYTE || keyVal.key.length !== 1) {\n throw new Error(\n 'Decode Error: could not decode tapInternalKey with key 0x' +\n keyVal.key.toString('hex'),\n );\n }\n if (keyVal.value.length !== 32) {\n throw new Error(\n 'Decode Error: tapInternalKey not a 32-byte x-only pubkey',\n );\n }\n return keyVal.value;\n }\n function encode(value) {\n const key = Buffer.from([TYPE_BYTE]);\n return { key, value };\n }\n const expected = 'Buffer';\n function check(data) {\n return Buffer.isBuffer(data) && data.length === 32;\n }\n function canAdd(currentData, newData) {\n return (\n !!currentData && !!newData && currentData.tapInternalKey === undefined\n );\n }\n return {\n decode,\n encode,\n check,\n expected,\n canAdd,\n };\n}\nexports.makeConverter = makeConverter;\n", "'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nfunction makeConverter(TYPE_BYTE) {\n function decode(keyVal) {\n if (keyVal.key[0] !== TYPE_BYTE) {\n throw new Error(\n 'Decode Error: could not decode witnessScript with key 0x' +\n keyVal.key.toString('hex'),\n );\n }\n return keyVal.value;\n }\n function encode(data) {\n const key = Buffer.from([TYPE_BYTE]);\n return {\n key,\n value: data,\n };\n }\n const expected = 'Buffer';\n function check(data) {\n return Buffer.isBuffer(data);\n }\n function canAdd(currentData, newData) {\n return (\n !!currentData && !!newData && currentData.witnessScript === undefined\n );\n }\n return {\n decode,\n encode,\n check,\n expected,\n canAdd,\n };\n}\nexports.makeConverter = makeConverter;\n", "'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst typeFields_1 = require('../typeFields');\nconst globalXpub = require('./global/globalXpub');\nconst unsignedTx = require('./global/unsignedTx');\nconst finalScriptSig = require('./input/finalScriptSig');\nconst finalScriptWitness = require('./input/finalScriptWitness');\nconst nonWitnessUtxo = require('./input/nonWitnessUtxo');\nconst partialSig = require('./input/partialSig');\nconst porCommitment = require('./input/porCommitment');\nconst sighashType = require('./input/sighashType');\nconst tapKeySig = require('./input/tapKeySig');\nconst tapLeafScript = require('./input/tapLeafScript');\nconst tapMerkleRoot = require('./input/tapMerkleRoot');\nconst tapScriptSig = require('./input/tapScriptSig');\nconst witnessUtxo = require('./input/witnessUtxo');\nconst tapTree = require('./output/tapTree');\nconst bip32Derivation = require('./shared/bip32Derivation');\nconst checkPubkey = require('./shared/checkPubkey');\nconst redeemScript = require('./shared/redeemScript');\nconst tapBip32Derivation = require('./shared/tapBip32Derivation');\nconst tapInternalKey = require('./shared/tapInternalKey');\nconst witnessScript = require('./shared/witnessScript');\nconst globals = {\n unsignedTx,\n globalXpub,\n // pass an Array of key bytes that require pubkey beside the key\n checkPubkey: checkPubkey.makeChecker([]),\n};\nexports.globals = globals;\nconst inputs = {\n nonWitnessUtxo,\n partialSig,\n sighashType,\n finalScriptSig,\n finalScriptWitness,\n porCommitment,\n witnessUtxo,\n bip32Derivation: bip32Derivation.makeConverter(\n typeFields_1.InputTypes.BIP32_DERIVATION,\n ),\n redeemScript: redeemScript.makeConverter(\n typeFields_1.InputTypes.REDEEM_SCRIPT,\n ),\n witnessScript: witnessScript.makeConverter(\n typeFields_1.InputTypes.WITNESS_SCRIPT,\n ),\n checkPubkey: checkPubkey.makeChecker([\n typeFields_1.InputTypes.PARTIAL_SIG,\n typeFields_1.InputTypes.BIP32_DERIVATION,\n ]),\n tapKeySig,\n tapScriptSig,\n tapLeafScript,\n tapBip32Derivation: tapBip32Derivation.makeConverter(\n typeFields_1.InputTypes.TAP_BIP32_DERIVATION,\n ),\n tapInternalKey: tapInternalKey.makeConverter(\n typeFields_1.InputTypes.TAP_INTERNAL_KEY,\n ),\n tapMerkleRoot,\n};\nexports.inputs = inputs;\nconst outputs = {\n bip32Derivation: bip32Derivation.makeConverter(\n typeFields_1.OutputTypes.BIP32_DERIVATION,\n ),\n redeemScript: redeemScript.makeConverter(\n typeFields_1.OutputTypes.REDEEM_SCRIPT,\n ),\n witnessScript: witnessScript.makeConverter(\n typeFields_1.OutputTypes.WITNESS_SCRIPT,\n ),\n checkPubkey: checkPubkey.makeChecker([\n typeFields_1.OutputTypes.BIP32_DERIVATION,\n ]),\n tapBip32Derivation: tapBip32Derivation.makeConverter(\n typeFields_1.OutputTypes.TAP_BIP32_DERIVATION,\n ),\n tapTree,\n tapInternalKey: tapInternalKey.makeConverter(\n typeFields_1.OutputTypes.TAP_INTERNAL_KEY,\n ),\n};\nexports.outputs = outputs;\n", "'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst convert = require('../converter');\nconst tools_1 = require('../converter/tools');\nconst varuint = require('../converter/varint');\nconst typeFields_1 = require('../typeFields');\nfunction psbtFromBuffer(buffer, txGetter) {\n let offset = 0;\n function varSlice() {\n const keyLen = varuint.decode(buffer, offset);\n offset += varuint.encodingLength(keyLen);\n const key = buffer.slice(offset, offset + keyLen);\n offset += keyLen;\n return key;\n }\n function readUInt32BE() {\n const num = buffer.readUInt32BE(offset);\n offset += 4;\n return num;\n }\n function readUInt8() {\n const num = buffer.readUInt8(offset);\n offset += 1;\n return num;\n }\n function getKeyValue() {\n const key = varSlice();\n const value = varSlice();\n return {\n key,\n value,\n };\n }\n function checkEndOfKeyValPairs() {\n if (offset >= buffer.length) {\n throw new Error('Format Error: Unexpected End of PSBT');\n }\n const isEnd = buffer.readUInt8(offset) === 0;\n if (isEnd) {\n offset++;\n }\n return isEnd;\n }\n if (readUInt32BE() !== 0x70736274) {\n throw new Error('Format Error: Invalid Magic Number');\n }\n if (readUInt8() !== 0xff) {\n throw new Error(\n 'Format Error: Magic Number must be followed by 0xff separator',\n );\n }\n const globalMapKeyVals = [];\n const globalKeyIndex = {};\n while (!checkEndOfKeyValPairs()) {\n const keyVal = getKeyValue();\n const hexKey = keyVal.key.toString('hex');\n if (globalKeyIndex[hexKey]) {\n throw new Error(\n 'Format Error: Keys must be unique for global keymap: key ' + hexKey,\n );\n }\n globalKeyIndex[hexKey] = 1;\n globalMapKeyVals.push(keyVal);\n }\n const unsignedTxMaps = globalMapKeyVals.filter(\n keyVal => keyVal.key[0] === typeFields_1.GlobalTypes.UNSIGNED_TX,\n );\n if (unsignedTxMaps.length !== 1) {\n throw new Error('Format Error: Only one UNSIGNED_TX allowed');\n }\n const unsignedTx = txGetter(unsignedTxMaps[0].value);\n // Get input and output counts to loop the respective fields\n const { inputCount, outputCount } = unsignedTx.getInputOutputCounts();\n const inputKeyVals = [];\n const outputKeyVals = [];\n // Get input fields\n for (const index of tools_1.range(inputCount)) {\n const inputKeyIndex = {};\n const input = [];\n while (!checkEndOfKeyValPairs()) {\n const keyVal = getKeyValue();\n const hexKey = keyVal.key.toString('hex');\n if (inputKeyIndex[hexKey]) {\n throw new Error(\n 'Format Error: Keys must be unique for each input: ' +\n 'input index ' +\n index +\n ' key ' +\n hexKey,\n );\n }\n inputKeyIndex[hexKey] = 1;\n input.push(keyVal);\n }\n inputKeyVals.push(input);\n }\n for (const index of tools_1.range(outputCount)) {\n const outputKeyIndex = {};\n const output = [];\n while (!checkEndOfKeyValPairs()) {\n const keyVal = getKeyValue();\n const hexKey = keyVal.key.toString('hex');\n if (outputKeyIndex[hexKey]) {\n throw new Error(\n 'Format Error: Keys must be unique for each output: ' +\n 'output index ' +\n index +\n ' key ' +\n hexKey,\n );\n }\n outputKeyIndex[hexKey] = 1;\n output.push(keyVal);\n }\n outputKeyVals.push(output);\n }\n return psbtFromKeyVals(unsignedTx, {\n globalMapKeyVals,\n inputKeyVals,\n outputKeyVals,\n });\n}\nexports.psbtFromBuffer = psbtFromBuffer;\nfunction checkKeyBuffer(type, keyBuf, keyNum) {\n if (!keyBuf.equals(Buffer.from([keyNum]))) {\n throw new Error(\n `Format Error: Invalid ${type} key: ${keyBuf.toString('hex')}`,\n );\n }\n}\nexports.checkKeyBuffer = checkKeyBuffer;\nfunction psbtFromKeyVals(\n unsignedTx,\n { globalMapKeyVals, inputKeyVals, outputKeyVals },\n) {\n // That was easy :-)\n const globalMap = {\n unsignedTx,\n };\n let txCount = 0;\n for (const keyVal of globalMapKeyVals) {\n // If a globalMap item needs pubkey, uncomment\n // const pubkey = convert.globals.checkPubkey(keyVal);\n switch (keyVal.key[0]) {\n case typeFields_1.GlobalTypes.UNSIGNED_TX:\n checkKeyBuffer(\n 'global',\n keyVal.key,\n typeFields_1.GlobalTypes.UNSIGNED_TX,\n );\n if (txCount > 0) {\n throw new Error('Format Error: GlobalMap has multiple UNSIGNED_TX');\n }\n txCount++;\n break;\n case typeFields_1.GlobalTypes.GLOBAL_XPUB:\n if (globalMap.globalXpub === undefined) {\n globalMap.globalXpub = [];\n }\n globalMap.globalXpub.push(convert.globals.globalXpub.decode(keyVal));\n break;\n default:\n // This will allow inclusion during serialization.\n if (!globalMap.unknownKeyVals) globalMap.unknownKeyVals = [];\n globalMap.unknownKeyVals.push(keyVal);\n }\n }\n // Get input and output counts to loop the respective fields\n const inputCount = inputKeyVals.length;\n const outputCount = outputKeyVals.length;\n const inputs = [];\n const outputs = [];\n // Get input fields\n for (const index of tools_1.range(inputCount)) {\n const input = {};\n for (const keyVal of inputKeyVals[index]) {\n convert.inputs.checkPubkey(keyVal);\n switch (keyVal.key[0]) {\n case typeFields_1.InputTypes.NON_WITNESS_UTXO:\n checkKeyBuffer(\n 'input',\n keyVal.key,\n typeFields_1.InputTypes.NON_WITNESS_UTXO,\n );\n if (input.nonWitnessUtxo !== undefined) {\n throw new Error(\n 'Format Error: Input has multiple NON_WITNESS_UTXO',\n );\n }\n input.nonWitnessUtxo = convert.inputs.nonWitnessUtxo.decode(keyVal);\n break;\n case typeFields_1.InputTypes.WITNESS_UTXO:\n checkKeyBuffer(\n 'input',\n keyVal.key,\n typeFields_1.InputTypes.WITNESS_UTXO,\n );\n if (input.witnessUtxo !== undefined) {\n throw new Error('Format Error: Input has multiple WITNESS_UTXO');\n }\n input.witnessUtxo = convert.inputs.witnessUtxo.decode(keyVal);\n break;\n case typeFields_1.InputTypes.PARTIAL_SIG:\n if (input.partialSig === undefined) {\n input.partialSig = [];\n }\n input.partialSig.push(convert.inputs.partialSig.decode(keyVal));\n break;\n case typeFields_1.InputTypes.SIGHASH_TYPE:\n checkKeyBuffer(\n 'input',\n keyVal.key,\n typeFields_1.InputTypes.SIGHASH_TYPE,\n );\n if (input.sighashType !== undefined) {\n throw new Error('Format Error: Input has multiple SIGHASH_TYPE');\n }\n input.sighashType = convert.inputs.sighashType.decode(keyVal);\n break;\n case typeFields_1.InputTypes.REDEEM_SCRIPT:\n checkKeyBuffer(\n 'input',\n keyVal.key,\n typeFields_1.InputTypes.REDEEM_SCRIPT,\n );\n if (input.redeemScript !== undefined) {\n throw new Error('Format Error: Input has multiple REDEEM_SCRIPT');\n }\n input.redeemScript = convert.inputs.redeemScript.decode(keyVal);\n break;\n case typeFields_1.InputTypes.WITNESS_SCRIPT:\n checkKeyBuffer(\n 'input',\n keyVal.key,\n typeFields_1.InputTypes.WITNESS_SCRIPT,\n );\n if (input.witnessScript !== undefined) {\n throw new Error('Format Error: Input has multiple WITNESS_SCRIPT');\n }\n input.witnessScript = convert.inputs.witnessScript.decode(keyVal);\n break;\n case typeFields_1.InputTypes.BIP32_DERIVATION:\n if (input.bip32Derivation === undefined) {\n input.bip32Derivation = [];\n }\n input.bip32Derivation.push(\n convert.inputs.bip32Derivation.decode(keyVal),\n );\n break;\n case typeFields_1.InputTypes.FINAL_SCRIPTSIG:\n checkKeyBuffer(\n 'input',\n keyVal.key,\n typeFields_1.InputTypes.FINAL_SCRIPTSIG,\n );\n input.finalScriptSig = convert.inputs.finalScriptSig.decode(keyVal);\n break;\n case typeFields_1.InputTypes.FINAL_SCRIPTWITNESS:\n checkKeyBuffer(\n 'input',\n keyVal.key,\n typeFields_1.InputTypes.FINAL_SCRIPTWITNESS,\n );\n input.finalScriptWitness = convert.inputs.finalScriptWitness.decode(\n keyVal,\n );\n break;\n case typeFields_1.InputTypes.POR_COMMITMENT:\n checkKeyBuffer(\n 'input',\n keyVal.key,\n typeFields_1.InputTypes.POR_COMMITMENT,\n );\n input.porCommitment = convert.inputs.porCommitment.decode(keyVal);\n break;\n case typeFields_1.InputTypes.TAP_KEY_SIG:\n checkKeyBuffer(\n 'input',\n keyVal.key,\n typeFields_1.InputTypes.TAP_KEY_SIG,\n );\n input.tapKeySig = convert.inputs.tapKeySig.decode(keyVal);\n break;\n case typeFields_1.InputTypes.TAP_SCRIPT_SIG:\n if (input.tapScriptSig === undefined) {\n input.tapScriptSig = [];\n }\n input.tapScriptSig.push(convert.inputs.tapScriptSig.decode(keyVal));\n break;\n case typeFields_1.InputTypes.TAP_LEAF_SCRIPT:\n if (input.tapLeafScript === undefined) {\n input.tapLeafScript = [];\n }\n input.tapLeafScript.push(convert.inputs.tapLeafScript.decode(keyVal));\n break;\n case typeFields_1.InputTypes.TAP_BIP32_DERIVATION:\n if (input.tapBip32Derivation === undefined) {\n input.tapBip32Derivation = [];\n }\n input.tapBip32Derivation.push(\n convert.inputs.tapBip32Derivation.decode(keyVal),\n );\n break;\n case typeFields_1.InputTypes.TAP_INTERNAL_KEY:\n checkKeyBuffer(\n 'input',\n keyVal.key,\n typeFields_1.InputTypes.TAP_INTERNAL_KEY,\n );\n input.tapInternalKey = convert.inputs.tapInternalKey.decode(keyVal);\n break;\n case typeFields_1.InputTypes.TAP_MERKLE_ROOT:\n checkKeyBuffer(\n 'input',\n keyVal.key,\n typeFields_1.InputTypes.TAP_MERKLE_ROOT,\n );\n input.tapMerkleRoot = convert.inputs.tapMerkleRoot.decode(keyVal);\n break;\n default:\n // This will allow inclusion during serialization.\n if (!input.unknownKeyVals) input.unknownKeyVals = [];\n input.unknownKeyVals.push(keyVal);\n }\n }\n inputs.push(input);\n }\n for (const index of tools_1.range(outputCount)) {\n const output = {};\n for (const keyVal of outputKeyVals[index]) {\n convert.outputs.checkPubkey(keyVal);\n switch (keyVal.key[0]) {\n case typeFields_1.OutputTypes.REDEEM_SCRIPT:\n checkKeyBuffer(\n 'output',\n keyVal.key,\n typeFields_1.OutputTypes.REDEEM_SCRIPT,\n );\n if (output.redeemScript !== undefined) {\n throw new Error('Format Error: Output has multiple REDEEM_SCRIPT');\n }\n output.redeemScript = convert.outputs.redeemScript.decode(keyVal);\n break;\n case typeFields_1.OutputTypes.WITNESS_SCRIPT:\n checkKeyBuffer(\n 'output',\n keyVal.key,\n typeFields_1.OutputTypes.WITNESS_SCRIPT,\n );\n if (output.witnessScript !== undefined) {\n throw new Error('Format Error: Output has multiple WITNESS_SCRIPT');\n }\n output.witnessScript = convert.outputs.witnessScript.decode(keyVal);\n break;\n case typeFields_1.OutputTypes.BIP32_DERIVATION:\n if (output.bip32Derivation === undefined) {\n output.bip32Derivation = [];\n }\n output.bip32Derivation.push(\n convert.outputs.bip32Derivation.decode(keyVal),\n );\n break;\n case typeFields_1.OutputTypes.TAP_INTERNAL_KEY:\n checkKeyBuffer(\n 'output',\n keyVal.key,\n typeFields_1.OutputTypes.TAP_INTERNAL_KEY,\n );\n output.tapInternalKey = convert.outputs.tapInternalKey.decode(keyVal);\n break;\n case typeFields_1.OutputTypes.TAP_TREE:\n checkKeyBuffer(\n 'output',\n keyVal.key,\n typeFields_1.OutputTypes.TAP_TREE,\n );\n output.tapTree = convert.outputs.tapTree.decode(keyVal);\n break;\n case typeFields_1.OutputTypes.TAP_BIP32_DERIVATION:\n if (output.tapBip32Derivation === undefined) {\n output.tapBip32Derivation = [];\n }\n output.tapBip32Derivation.push(\n convert.outputs.tapBip32Derivation.decode(keyVal),\n );\n break;\n default:\n if (!output.unknownKeyVals) output.unknownKeyVals = [];\n output.unknownKeyVals.push(keyVal);\n }\n }\n outputs.push(output);\n }\n return { globalMap, inputs, outputs };\n}\nexports.psbtFromKeyVals = psbtFromKeyVals;\n", "'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst convert = require('../converter');\nconst tools_1 = require('../converter/tools');\nfunction psbtToBuffer({ globalMap, inputs, outputs }) {\n const { globalKeyVals, inputKeyVals, outputKeyVals } = psbtToKeyVals({\n globalMap,\n inputs,\n outputs,\n });\n const globalBuffer = tools_1.keyValsToBuffer(globalKeyVals);\n const keyValsOrEmptyToBuffer = keyVals =>\n keyVals.length === 0\n ? [Buffer.from([0])]\n : keyVals.map(tools_1.keyValsToBuffer);\n const inputBuffers = keyValsOrEmptyToBuffer(inputKeyVals);\n const outputBuffers = keyValsOrEmptyToBuffer(outputKeyVals);\n const header = Buffer.allocUnsafe(5);\n header.writeUIntBE(0x70736274ff, 0, 5);\n return Buffer.concat(\n [header, globalBuffer].concat(inputBuffers, outputBuffers),\n );\n}\nexports.psbtToBuffer = psbtToBuffer;\nconst sortKeyVals = (a, b) => {\n return a.key.compare(b.key);\n};\nfunction keyValsFromMap(keyValMap, converterFactory) {\n const keyHexSet = new Set();\n const keyVals = Object.entries(keyValMap).reduce((result, [key, value]) => {\n if (key === 'unknownKeyVals') return result;\n // We are checking for undefined anyways. So ignore TS error\n // @ts-ignore\n const converter = converterFactory[key];\n if (converter === undefined) return result;\n const encodedKeyVals = (Array.isArray(value) ? value : [value]).map(\n converter.encode,\n );\n const keyHexes = encodedKeyVals.map(kv => kv.key.toString('hex'));\n keyHexes.forEach(hex => {\n if (keyHexSet.has(hex))\n throw new Error('Serialize Error: Duplicate key: ' + hex);\n keyHexSet.add(hex);\n });\n return result.concat(encodedKeyVals);\n }, []);\n // Get other keyVals that have not yet been gotten\n const otherKeyVals = keyValMap.unknownKeyVals\n ? keyValMap.unknownKeyVals.filter(keyVal => {\n return !keyHexSet.has(keyVal.key.toString('hex'));\n })\n : [];\n return keyVals.concat(otherKeyVals).sort(sortKeyVals);\n}\nfunction psbtToKeyVals({ globalMap, inputs, outputs }) {\n // First parse the global keyVals\n // Get any extra keyvals to pass along\n return {\n globalKeyVals: keyValsFromMap(globalMap, convert.globals),\n inputKeyVals: inputs.map(i => keyValsFromMap(i, convert.inputs)),\n outputKeyVals: outputs.map(o => keyValsFromMap(o, convert.outputs)),\n };\n}\nexports.psbtToKeyVals = psbtToKeyVals;\n", "'use strict';\nfunction __export(m) {\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\n}\nObject.defineProperty(exports, '__esModule', { value: true });\n__export(require('./fromBuffer'));\n__export(require('./toBuffer'));\n", "'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst parser_1 = require('../parser');\nfunction combine(psbts) {\n const self = psbts[0];\n const selfKeyVals = parser_1.psbtToKeyVals(self);\n const others = psbts.slice(1);\n if (others.length === 0) throw new Error('Combine: Nothing to combine');\n const selfTx = getTx(self);\n if (selfTx === undefined) {\n throw new Error('Combine: Self missing transaction');\n }\n const selfGlobalSet = getKeySet(selfKeyVals.globalKeyVals);\n const selfInputSets = selfKeyVals.inputKeyVals.map(getKeySet);\n const selfOutputSets = selfKeyVals.outputKeyVals.map(getKeySet);\n for (const other of others) {\n const otherTx = getTx(other);\n if (\n otherTx === undefined ||\n !otherTx.toBuffer().equals(selfTx.toBuffer())\n ) {\n throw new Error(\n 'Combine: One of the Psbts does not have the same transaction.',\n );\n }\n const otherKeyVals = parser_1.psbtToKeyVals(other);\n const otherGlobalSet = getKeySet(otherKeyVals.globalKeyVals);\n otherGlobalSet.forEach(\n keyPusher(\n selfGlobalSet,\n selfKeyVals.globalKeyVals,\n otherKeyVals.globalKeyVals,\n ),\n );\n const otherInputSets = otherKeyVals.inputKeyVals.map(getKeySet);\n otherInputSets.forEach((inputSet, idx) =>\n inputSet.forEach(\n keyPusher(\n selfInputSets[idx],\n selfKeyVals.inputKeyVals[idx],\n otherKeyVals.inputKeyVals[idx],\n ),\n ),\n );\n const otherOutputSets = otherKeyVals.outputKeyVals.map(getKeySet);\n otherOutputSets.forEach((outputSet, idx) =>\n outputSet.forEach(\n keyPusher(\n selfOutputSets[idx],\n selfKeyVals.outputKeyVals[idx],\n otherKeyVals.outputKeyVals[idx],\n ),\n ),\n );\n }\n return parser_1.psbtFromKeyVals(selfTx, {\n globalMapKeyVals: selfKeyVals.globalKeyVals,\n inputKeyVals: selfKeyVals.inputKeyVals,\n outputKeyVals: selfKeyVals.outputKeyVals,\n });\n}\nexports.combine = combine;\nfunction keyPusher(selfSet, selfKeyVals, otherKeyVals) {\n return key => {\n if (selfSet.has(key)) return;\n const newKv = otherKeyVals.filter(kv => kv.key.toString('hex') === key)[0];\n selfKeyVals.push(newKv);\n selfSet.add(key);\n };\n}\nfunction getTx(psbt) {\n return psbt.globalMap.unsignedTx;\n}\nfunction getKeySet(keyVals) {\n const set = new Set();\n keyVals.forEach(keyVal => {\n const hex = keyVal.key.toString('hex');\n if (set.has(hex))\n throw new Error('Combine: KeyValue Map keys should be unique');\n set.add(hex);\n });\n return set;\n}\n", "'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst converter = require('./converter');\nfunction checkForInput(inputs, inputIndex) {\n const input = inputs[inputIndex];\n if (input === undefined) throw new Error(`No input #${inputIndex}`);\n return input;\n}\nexports.checkForInput = checkForInput;\nfunction checkForOutput(outputs, outputIndex) {\n const output = outputs[outputIndex];\n if (output === undefined) throw new Error(`No output #${outputIndex}`);\n return output;\n}\nexports.checkForOutput = checkForOutput;\nfunction checkHasKey(checkKeyVal, keyVals, enumLength) {\n if (checkKeyVal.key[0] < enumLength) {\n throw new Error(\n `Use the method for your specific key instead of addUnknownKeyVal*`,\n );\n }\n if (\n keyVals &&\n keyVals.filter(kv => kv.key.equals(checkKeyVal.key)).length !== 0\n ) {\n throw new Error(`Duplicate Key: ${checkKeyVal.key.toString('hex')}`);\n }\n}\nexports.checkHasKey = checkHasKey;\nfunction getEnumLength(myenum) {\n let count = 0;\n Object.keys(myenum).forEach(val => {\n if (Number(isNaN(Number(val)))) {\n count++;\n }\n });\n return count;\n}\nexports.getEnumLength = getEnumLength;\nfunction inputCheckUncleanFinalized(inputIndex, input) {\n let result = false;\n if (input.nonWitnessUtxo || input.witnessUtxo) {\n const needScriptSig = !!input.redeemScript;\n const needWitnessScript = !!input.witnessScript;\n const scriptSigOK = !needScriptSig || !!input.finalScriptSig;\n const witnessScriptOK = !needWitnessScript || !!input.finalScriptWitness;\n const hasOneFinal = !!input.finalScriptSig || !!input.finalScriptWitness;\n result = scriptSigOK && witnessScriptOK && hasOneFinal;\n }\n if (result === false) {\n throw new Error(\n `Input #${inputIndex} has too much or too little data to clean`,\n );\n }\n}\nexports.inputCheckUncleanFinalized = inputCheckUncleanFinalized;\nfunction throwForUpdateMaker(typeName, name, expected, data) {\n throw new Error(\n `Data for ${typeName} key ${name} is incorrect: Expected ` +\n `${expected} and got ${JSON.stringify(data)}`,\n );\n}\nfunction updateMaker(typeName) {\n return (updateData, mainData) => {\n for (const name of Object.keys(updateData)) {\n // @ts-ignore\n const data = updateData[name];\n // @ts-ignore\n const { canAdd, canAddToArray, check, expected } =\n // @ts-ignore\n converter[typeName + 's'][name] || {};\n const isArray = !!canAddToArray;\n // If unknown data. ignore and do not add\n if (check) {\n if (isArray) {\n if (\n !Array.isArray(data) ||\n // @ts-ignore\n (mainData[name] && !Array.isArray(mainData[name]))\n ) {\n throw new Error(`Key type ${name} must be an array`);\n }\n if (!data.every(check)) {\n throwForUpdateMaker(typeName, name, expected, data);\n }\n // @ts-ignore\n const arr = mainData[name] || [];\n const dupeCheckSet = new Set();\n if (!data.every(v => canAddToArray(arr, v, dupeCheckSet))) {\n throw new Error('Can not add duplicate data to array');\n }\n // @ts-ignore\n mainData[name] = arr.concat(data);\n } else {\n if (!check(data)) {\n throwForUpdateMaker(typeName, name, expected, data);\n }\n if (!canAdd(mainData, data)) {\n throw new Error(`Can not add duplicate data to ${typeName}`);\n }\n // @ts-ignore\n mainData[name] = data;\n }\n }\n }\n };\n}\nexports.updateGlobal = updateMaker('global');\nexports.updateInput = updateMaker('input');\nexports.updateOutput = updateMaker('output');\nfunction addInputAttributes(inputs, data) {\n const index = inputs.length - 1;\n const input = checkForInput(inputs, index);\n exports.updateInput(data, input);\n}\nexports.addInputAttributes = addInputAttributes;\nfunction addOutputAttributes(outputs, data) {\n const index = outputs.length - 1;\n const output = checkForOutput(outputs, index);\n exports.updateOutput(data, output);\n}\nexports.addOutputAttributes = addOutputAttributes;\nfunction defaultVersionSetter(version, txBuf) {\n if (!Buffer.isBuffer(txBuf) || txBuf.length < 4) {\n throw new Error('Set Version: Invalid Transaction');\n }\n txBuf.writeUInt32LE(version, 0);\n return txBuf;\n}\nexports.defaultVersionSetter = defaultVersionSetter;\nfunction defaultLocktimeSetter(locktime, txBuf) {\n if (!Buffer.isBuffer(txBuf) || txBuf.length < 4) {\n throw new Error('Set Locktime: Invalid Transaction');\n }\n txBuf.writeUInt32LE(locktime, txBuf.length - 4);\n return txBuf;\n}\nexports.defaultLocktimeSetter = defaultLocktimeSetter;\n", "'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst combiner_1 = require('./combiner');\nconst parser_1 = require('./parser');\nconst typeFields_1 = require('./typeFields');\nconst utils_1 = require('./utils');\nclass Psbt {\n constructor(tx) {\n this.inputs = [];\n this.outputs = [];\n this.globalMap = {\n unsignedTx: tx,\n };\n }\n static fromBase64(data, txFromBuffer) {\n const buffer = Buffer.from(data, 'base64');\n return this.fromBuffer(buffer, txFromBuffer);\n }\n static fromHex(data, txFromBuffer) {\n const buffer = Buffer.from(data, 'hex');\n return this.fromBuffer(buffer, txFromBuffer);\n }\n static fromBuffer(buffer, txFromBuffer) {\n const results = parser_1.psbtFromBuffer(buffer, txFromBuffer);\n const psbt = new this(results.globalMap.unsignedTx);\n Object.assign(psbt, results);\n return psbt;\n }\n toBase64() {\n const buffer = this.toBuffer();\n return buffer.toString('base64');\n }\n toHex() {\n const buffer = this.toBuffer();\n return buffer.toString('hex');\n }\n toBuffer() {\n return parser_1.psbtToBuffer(this);\n }\n updateGlobal(updateData) {\n utils_1.updateGlobal(updateData, this.globalMap);\n return this;\n }\n updateInput(inputIndex, updateData) {\n const input = utils_1.checkForInput(this.inputs, inputIndex);\n utils_1.updateInput(updateData, input);\n return this;\n }\n updateOutput(outputIndex, updateData) {\n const output = utils_1.checkForOutput(this.outputs, outputIndex);\n utils_1.updateOutput(updateData, output);\n return this;\n }\n addUnknownKeyValToGlobal(keyVal) {\n utils_1.checkHasKey(\n keyVal,\n this.globalMap.unknownKeyVals,\n utils_1.getEnumLength(typeFields_1.GlobalTypes),\n );\n if (!this.globalMap.unknownKeyVals) this.globalMap.unknownKeyVals = [];\n this.globalMap.unknownKeyVals.push(keyVal);\n return this;\n }\n addUnknownKeyValToInput(inputIndex, keyVal) {\n const input = utils_1.checkForInput(this.inputs, inputIndex);\n utils_1.checkHasKey(\n keyVal,\n input.unknownKeyVals,\n utils_1.getEnumLength(typeFields_1.InputTypes),\n );\n if (!input.unknownKeyVals) input.unknownKeyVals = [];\n input.unknownKeyVals.push(keyVal);\n return this;\n }\n addUnknownKeyValToOutput(outputIndex, keyVal) {\n const output = utils_1.checkForOutput(this.outputs, outputIndex);\n utils_1.checkHasKey(\n keyVal,\n output.unknownKeyVals,\n utils_1.getEnumLength(typeFields_1.OutputTypes),\n );\n if (!output.unknownKeyVals) output.unknownKeyVals = [];\n output.unknownKeyVals.push(keyVal);\n return this;\n }\n addInput(inputData) {\n this.globalMap.unsignedTx.addInput(inputData);\n this.inputs.push({\n unknownKeyVals: [],\n });\n const addKeyVals = inputData.unknownKeyVals || [];\n const inputIndex = this.inputs.length - 1;\n if (!Array.isArray(addKeyVals)) {\n throw new Error('unknownKeyVals must be an Array');\n }\n addKeyVals.forEach(keyVal =>\n this.addUnknownKeyValToInput(inputIndex, keyVal),\n );\n utils_1.addInputAttributes(this.inputs, inputData);\n return this;\n }\n addOutput(outputData) {\n this.globalMap.unsignedTx.addOutput(outputData);\n this.outputs.push({\n unknownKeyVals: [],\n });\n const addKeyVals = outputData.unknownKeyVals || [];\n const outputIndex = this.outputs.length - 1;\n if (!Array.isArray(addKeyVals)) {\n throw new Error('unknownKeyVals must be an Array');\n }\n addKeyVals.forEach(keyVal =>\n this.addUnknownKeyValToInput(outputIndex, keyVal),\n );\n utils_1.addOutputAttributes(this.outputs, outputData);\n return this;\n }\n clearFinalizedInput(inputIndex) {\n const input = utils_1.checkForInput(this.inputs, inputIndex);\n utils_1.inputCheckUncleanFinalized(inputIndex, input);\n for (const key of Object.keys(input)) {\n if (\n ![\n 'witnessUtxo',\n 'nonWitnessUtxo',\n 'finalScriptSig',\n 'finalScriptWitness',\n 'unknownKeyVals',\n ].includes(key)\n ) {\n // @ts-ignore\n delete input[key];\n }\n }\n return this;\n }\n combine(...those) {\n // Combine this with those.\n // Return self for chaining.\n const result = combiner_1.combine([this].concat(those));\n Object.assign(this, result);\n return this;\n }\n getTransaction() {\n return this.globalMap.unsignedTx.toBuffer();\n }\n}\nexports.Psbt = Psbt;\n", "'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst bip174_1 = require('bip174');\nconst varuint = require('bip174/src/lib/converter/varint');\nconst utils_1 = require('bip174/src/lib/utils');\nconst address_1 = require('./address');\nconst bufferutils_1 = require('./bufferutils');\nconst crypto_1 = require('./crypto');\nconst ecpair_1 = require('./ecpair');\nconst networks_1 = require('./networks');\nconst payments = require('./payments');\nconst bscript = require('./script');\nconst transaction_1 = require('./transaction');\n/**\n * These are the default arguments for a Psbt instance.\n */\nconst DEFAULT_OPTS = {\n /**\n * A bitcoinjs Network object. This is only used if you pass an `address`\n * parameter to addOutput. Otherwise it is not needed and can be left default.\n */\n network: networks_1.bitcoin,\n /**\n * When extractTransaction is called, the fee rate is checked.\n * THIS IS NOT TO BE RELIED ON.\n * It is only here as a last ditch effort to prevent sending a 500 BTC fee etc.\n */\n maximumFeeRate: 5000,\n};\n/**\n * Psbt class can parse and generate a PSBT binary based off of the BIP174.\n * There are 6 roles that this class fulfills. (Explained in BIP174)\n *\n * Creator: This can be done with `new Psbt()`\n * Updater: This can be done with `psbt.addInput(input)`, `psbt.addInputs(inputs)`,\n * `psbt.addOutput(output)`, `psbt.addOutputs(outputs)` when you are looking to\n * add new inputs and outputs to the PSBT, and `psbt.updateGlobal(itemObject)`,\n * `psbt.updateInput(itemObject)`, `psbt.updateOutput(itemObject)`\n * addInput requires hash: Buffer | string; and index: number; as attributes\n * and can also include any attributes that are used in updateInput method.\n * addOutput requires script: Buffer; and value: number; and likewise can include\n * data for updateOutput.\n * For a list of what attributes should be what types. Check the bip174 library.\n * Also, check the integration tests for some examples of usage.\n * Signer: There are a few methods. signAllInputs and signAllInputsAsync, which will search all input\n * information for your pubkey or pubkeyhash, and only sign inputs where it finds\n * your info. Or you can explicitly sign a specific input with signInput and\n * signInputAsync. For the async methods you can create a SignerAsync object\n * and use something like a hardware wallet to sign with. (You must implement this)\n * Combiner: psbts can be combined easily with `psbt.combine(psbt2, psbt3, psbt4 ...)`\n * the psbt calling combine will always have precedence when a conflict occurs.\n * Combine checks if the internal bitcoin transaction is the same, so be sure that\n * all sequences, version, locktime, etc. are the same before combining.\n * Input Finalizer: This role is fairly important. Not only does it need to construct\n * the input scriptSigs and witnesses, but it SHOULD verify the signatures etc.\n * Before running `psbt.finalizeAllInputs()` please run `psbt.validateSignaturesOfAllInputs()`\n * Running any finalize method will delete any data in the input(s) that are no longer\n * needed due to the finalized scripts containing the information.\n * Transaction Extractor: This role will perform some checks before returning a\n * Transaction object. Such as fee rate not being larger than maximumFeeRate etc.\n */\nclass Psbt {\n constructor(opts = {}, data = new bip174_1.Psbt(new PsbtTransaction())) {\n this.data = data;\n // set defaults\n this.opts = Object.assign({}, DEFAULT_OPTS, opts);\n this.__CACHE = {\n __NON_WITNESS_UTXO_TX_CACHE: [],\n __NON_WITNESS_UTXO_BUF_CACHE: [],\n __TX_IN_CACHE: {},\n __TX: this.data.globalMap.unsignedTx.tx,\n // Old TransactionBuilder behavior was to not confirm input values\n // before signing. Even though we highly encourage people to get\n // the full parent transaction to verify values, the ability to\n // sign non-segwit inputs without the full transaction was often\n // requested. So the only way to activate is to use @ts-ignore.\n // We will disable exporting the Psbt when unsafe sign is active.\n // because it is not BIP174 compliant.\n __UNSAFE_SIGN_NONSEGWIT: false,\n };\n if (this.data.inputs.length === 0) this.setVersion(2);\n // Make data hidden when enumerating\n const dpew = (obj, attr, enumerable, writable) =>\n Object.defineProperty(obj, attr, {\n enumerable,\n writable,\n });\n dpew(this, '__CACHE', false, true);\n dpew(this, 'opts', false, true);\n }\n static fromBase64(data, opts = {}) {\n const buffer = Buffer.from(data, 'base64');\n return this.fromBuffer(buffer, opts);\n }\n static fromHex(data, opts = {}) {\n const buffer = Buffer.from(data, 'hex');\n return this.fromBuffer(buffer, opts);\n }\n static fromBuffer(buffer, opts = {}) {\n const psbtBase = bip174_1.Psbt.fromBuffer(buffer, transactionFromBuffer);\n const psbt = new Psbt(opts, psbtBase);\n checkTxForDupeIns(psbt.__CACHE.__TX, psbt.__CACHE);\n return psbt;\n }\n get inputCount() {\n return this.data.inputs.length;\n }\n get version() {\n return this.__CACHE.__TX.version;\n }\n set version(version) {\n this.setVersion(version);\n }\n get locktime() {\n return this.__CACHE.__TX.locktime;\n }\n set locktime(locktime) {\n this.setLocktime(locktime);\n }\n get txInputs() {\n return this.__CACHE.__TX.ins.map(input => ({\n hash: bufferutils_1.cloneBuffer(input.hash),\n index: input.index,\n sequence: input.sequence,\n }));\n }\n get txOutputs() {\n return this.__CACHE.__TX.outs.map(output => {\n let address;\n try {\n address = address_1.fromOutputScript(output.script, this.opts.network);\n } catch (_) {}\n return {\n script: bufferutils_1.cloneBuffer(output.script),\n value: output.value,\n address,\n };\n });\n }\n combine(...those) {\n this.data.combine(...those.map(o => o.data));\n return this;\n }\n clone() {\n // TODO: more efficient cloning\n const res = Psbt.fromBuffer(this.data.toBuffer());\n res.opts = JSON.parse(JSON.stringify(this.opts));\n return res;\n }\n setMaximumFeeRate(satoshiPerByte) {\n check32Bit(satoshiPerByte); // 42.9 BTC per byte IS excessive... so throw\n this.opts.maximumFeeRate = satoshiPerByte;\n }\n setVersion(version) {\n check32Bit(version);\n checkInputsForPartialSig(this.data.inputs, 'setVersion');\n const c = this.__CACHE;\n c.__TX.version = version;\n c.__EXTRACTED_TX = undefined;\n return this;\n }\n setLocktime(locktime) {\n check32Bit(locktime);\n checkInputsForPartialSig(this.data.inputs, 'setLocktime');\n const c = this.__CACHE;\n c.__TX.locktime = locktime;\n c.__EXTRACTED_TX = undefined;\n return this;\n }\n setInputSequence(inputIndex, sequence) {\n check32Bit(sequence);\n checkInputsForPartialSig(this.data.inputs, 'setInputSequence');\n const c = this.__CACHE;\n if (c.__TX.ins.length <= inputIndex) {\n throw new Error('Input index too high');\n }\n c.__TX.ins[inputIndex].sequence = sequence;\n c.__EXTRACTED_TX = undefined;\n return this;\n }\n addInputs(inputDatas) {\n inputDatas.forEach(inputData => this.addInput(inputData));\n return this;\n }\n addInput(inputData) {\n if (\n arguments.length > 1 ||\n !inputData ||\n inputData.hash === undefined ||\n inputData.index === undefined\n ) {\n throw new Error(\n `Invalid arguments for Psbt.addInput. ` +\n `Requires single object with at least [hash] and [index]`,\n );\n }\n checkInputsForPartialSig(this.data.inputs, 'addInput');\n if (inputData.witnessScript) checkInvalidP2WSH(inputData.witnessScript);\n const c = this.__CACHE;\n this.data.addInput(inputData);\n const txIn = c.__TX.ins[c.__TX.ins.length - 1];\n checkTxInputCache(c, txIn);\n const inputIndex = this.data.inputs.length - 1;\n const input = this.data.inputs[inputIndex];\n if (input.nonWitnessUtxo) {\n addNonWitnessTxCache(this.__CACHE, input, inputIndex);\n }\n c.__FEE = undefined;\n c.__FEE_RATE = undefined;\n c.__EXTRACTED_TX = undefined;\n return this;\n }\n addOutputs(outputDatas) {\n outputDatas.forEach(outputData => this.addOutput(outputData));\n return this;\n }\n addOutput(outputData) {\n if (\n arguments.length > 1 ||\n !outputData ||\n outputData.value === undefined ||\n (outputData.address === undefined && outputData.script === undefined)\n ) {\n throw new Error(\n `Invalid arguments for Psbt.addOutput. ` +\n `Requires single object with at least [script or address] and [value]`,\n );\n }\n checkInputsForPartialSig(this.data.inputs, 'addOutput');\n const { address } = outputData;\n if (typeof address === 'string') {\n const { network } = this.opts;\n const script = address_1.toOutputScript(address, network);\n outputData = Object.assign(outputData, { script });\n }\n const c = this.__CACHE;\n this.data.addOutput(outputData);\n c.__FEE = undefined;\n c.__FEE_RATE = undefined;\n c.__EXTRACTED_TX = undefined;\n return this;\n }\n extractTransaction(disableFeeCheck) {\n if (!this.data.inputs.every(isFinalized)) throw new Error('Not finalized');\n const c = this.__CACHE;\n if (!disableFeeCheck) {\n checkFees(this, c, this.opts);\n }\n if (c.__EXTRACTED_TX) return c.__EXTRACTED_TX;\n const tx = c.__TX.clone();\n inputFinalizeGetAmts(this.data.inputs, tx, c, true);\n return tx;\n }\n getFeeRate() {\n return getTxCacheValue(\n '__FEE_RATE',\n 'fee rate',\n this.data.inputs,\n this.__CACHE,\n );\n }\n getFee() {\n return getTxCacheValue('__FEE', 'fee', this.data.inputs, this.__CACHE);\n }\n finalizeAllInputs() {\n utils_1.checkForInput(this.data.inputs, 0); // making sure we have at least one\n range(this.data.inputs.length).forEach(idx => this.finalizeInput(idx));\n return this;\n }\n finalizeInput(inputIndex, finalScriptsFunc = getFinalScripts) {\n const input = utils_1.checkForInput(this.data.inputs, inputIndex);\n const { script, isP2SH, isP2WSH, isSegwit } = getScriptFromInput(\n inputIndex,\n input,\n this.__CACHE,\n );\n if (!script) throw new Error(`No script found for input #${inputIndex}`);\n checkPartialSigSighashes(input);\n const { finalScriptSig, finalScriptWitness } = finalScriptsFunc(\n inputIndex,\n input,\n script,\n isSegwit,\n isP2SH,\n isP2WSH,\n );\n if (finalScriptSig) this.data.updateInput(inputIndex, { finalScriptSig });\n if (finalScriptWitness)\n this.data.updateInput(inputIndex, { finalScriptWitness });\n if (!finalScriptSig && !finalScriptWitness)\n throw new Error(`Unknown error finalizing input #${inputIndex}`);\n this.data.clearFinalizedInput(inputIndex);\n return this;\n }\n getInputType(inputIndex) {\n const input = utils_1.checkForInput(this.data.inputs, inputIndex);\n const script = getScriptFromUtxo(inputIndex, input, this.__CACHE);\n const result = getMeaningfulScript(\n script,\n inputIndex,\n 'input',\n input.redeemScript || redeemFromFinalScriptSig(input.finalScriptSig),\n input.witnessScript ||\n redeemFromFinalWitnessScript(input.finalScriptWitness),\n );\n const type = result.type === 'raw' ? '' : result.type + '-';\n const mainType = classifyScript(result.meaningfulScript);\n return type + mainType;\n }\n inputHasPubkey(inputIndex, pubkey) {\n const input = utils_1.checkForInput(this.data.inputs, inputIndex);\n return pubkeyInInput(pubkey, input, inputIndex, this.__CACHE);\n }\n inputHasHDKey(inputIndex, root) {\n const input = utils_1.checkForInput(this.data.inputs, inputIndex);\n const derivationIsMine = bip32DerivationIsMine(root);\n return (\n !!input.bip32Derivation && input.bip32Derivation.some(derivationIsMine)\n );\n }\n outputHasPubkey(outputIndex, pubkey) {\n const output = utils_1.checkForOutput(this.data.outputs, outputIndex);\n return pubkeyInOutput(pubkey, output, outputIndex, this.__CACHE);\n }\n outputHasHDKey(outputIndex, root) {\n const output = utils_1.checkForOutput(this.data.outputs, outputIndex);\n const derivationIsMine = bip32DerivationIsMine(root);\n return (\n !!output.bip32Derivation && output.bip32Derivation.some(derivationIsMine)\n );\n }\n validateSignaturesOfAllInputs() {\n utils_1.checkForInput(this.data.inputs, 0); // making sure we have at least one\n const results = range(this.data.inputs.length).map(idx =>\n this.validateSignaturesOfInput(idx),\n );\n return results.reduce((final, res) => res === true && final, true);\n }\n validateSignaturesOfInput(inputIndex, pubkey) {\n const input = this.data.inputs[inputIndex];\n const partialSig = (input || {}).partialSig;\n if (!input || !partialSig || partialSig.length < 1)\n throw new Error('No signatures to validate');\n const mySigs = pubkey\n ? partialSig.filter(sig => sig.pubkey.equals(pubkey))\n : partialSig;\n if (mySigs.length < 1) throw new Error('No signatures for this pubkey');\n const results = [];\n let hashCache;\n let scriptCache;\n let sighashCache;\n for (const pSig of mySigs) {\n const sig = bscript.signature.decode(pSig.signature);\n const { hash, script } =\n sighashCache !== sig.hashType\n ? getHashForSig(\n inputIndex,\n Object.assign({}, input, { sighashType: sig.hashType }),\n this.__CACHE,\n true,\n )\n : { hash: hashCache, script: scriptCache };\n sighashCache = sig.hashType;\n hashCache = hash;\n scriptCache = script;\n checkScriptForPubkey(pSig.pubkey, script, 'verify');\n const keypair = ecpair_1.fromPublicKey(pSig.pubkey);\n results.push(keypair.verify(hash, sig.signature));\n }\n return results.every(res => res === true);\n }\n signAllInputsHD(\n hdKeyPair,\n sighashTypes = [transaction_1.Transaction.SIGHASH_ALL],\n ) {\n if (!hdKeyPair || !hdKeyPair.publicKey || !hdKeyPair.fingerprint) {\n throw new Error('Need HDSigner to sign input');\n }\n const results = [];\n for (const i of range(this.data.inputs.length)) {\n try {\n this.signInputHD(i, hdKeyPair, sighashTypes);\n results.push(true);\n } catch (err) {\n results.push(false);\n }\n }\n if (results.every(v => v === false)) {\n throw new Error('No inputs were signed');\n }\n return this;\n }\n signAllInputsHDAsync(\n hdKeyPair,\n sighashTypes = [transaction_1.Transaction.SIGHASH_ALL],\n ) {\n return new Promise((resolve, reject) => {\n if (!hdKeyPair || !hdKeyPair.publicKey || !hdKeyPair.fingerprint) {\n return reject(new Error('Need HDSigner to sign input'));\n }\n const results = [];\n const promises = [];\n for (const i of range(this.data.inputs.length)) {\n promises.push(\n this.signInputHDAsync(i, hdKeyPair, sighashTypes).then(\n () => {\n results.push(true);\n },\n () => {\n results.push(false);\n },\n ),\n );\n }\n return Promise.all(promises).then(() => {\n if (results.every(v => v === false)) {\n return reject(new Error('No inputs were signed'));\n }\n resolve();\n });\n });\n }\n signInputHD(\n inputIndex,\n hdKeyPair,\n sighashTypes = [transaction_1.Transaction.SIGHASH_ALL],\n ) {\n if (!hdKeyPair || !hdKeyPair.publicKey || !hdKeyPair.fingerprint) {\n throw new Error('Need HDSigner to sign input');\n }\n const signers = getSignersFromHD(inputIndex, this.data.inputs, hdKeyPair);\n signers.forEach(signer => this.signInput(inputIndex, signer, sighashTypes));\n return this;\n }\n signInputHDAsync(\n inputIndex,\n hdKeyPair,\n sighashTypes = [transaction_1.Transaction.SIGHASH_ALL],\n ) {\n return new Promise((resolve, reject) => {\n if (!hdKeyPair || !hdKeyPair.publicKey || !hdKeyPair.fingerprint) {\n return reject(new Error('Need HDSigner to sign input'));\n }\n const signers = getSignersFromHD(inputIndex, this.data.inputs, hdKeyPair);\n const promises = signers.map(signer =>\n this.signInputAsync(inputIndex, signer, sighashTypes),\n );\n return Promise.all(promises)\n .then(() => {\n resolve();\n })\n .catch(reject);\n });\n }\n signAllInputs(\n keyPair,\n sighashTypes = [transaction_1.Transaction.SIGHASH_ALL],\n ) {\n if (!keyPair || !keyPair.publicKey)\n throw new Error('Need Signer to sign input');\n // TODO: Add a pubkey/pubkeyhash cache to each input\n // as input information is added, then eventually\n // optimize this method.\n const results = [];\n for (const i of range(this.data.inputs.length)) {\n try {\n this.signInput(i, keyPair, sighashTypes);\n results.push(true);\n } catch (err) {\n results.push(false);\n }\n }\n if (results.every(v => v === false)) {\n throw new Error('No inputs were signed');\n }\n return this;\n }\n signAllInputsAsync(\n keyPair,\n sighashTypes = [transaction_1.Transaction.SIGHASH_ALL],\n ) {\n return new Promise((resolve, reject) => {\n if (!keyPair || !keyPair.publicKey)\n return reject(new Error('Need Signer to sign input'));\n // TODO: Add a pubkey/pubkeyhash cache to each input\n // as input information is added, then eventually\n // optimize this method.\n const results = [];\n const promises = [];\n for (const [i] of this.data.inputs.entries()) {\n promises.push(\n this.signInputAsync(i, keyPair, sighashTypes).then(\n () => {\n results.push(true);\n },\n () => {\n results.push(false);\n },\n ),\n );\n }\n return Promise.all(promises).then(() => {\n if (results.every(v => v === false)) {\n return reject(new Error('No inputs were signed'));\n }\n resolve();\n });\n });\n }\n signInput(\n inputIndex,\n keyPair,\n sighashTypes = [transaction_1.Transaction.SIGHASH_ALL],\n ) {\n if (!keyPair || !keyPair.publicKey)\n throw new Error('Need Signer to sign input');\n const { hash, sighashType } = getHashAndSighashType(\n this.data.inputs,\n inputIndex,\n keyPair.publicKey,\n this.__CACHE,\n sighashTypes,\n );\n const partialSig = [\n {\n pubkey: keyPair.publicKey,\n signature: bscript.signature.encode(keyPair.sign(hash), sighashType),\n },\n ];\n this.data.updateInput(inputIndex, { partialSig });\n return this;\n }\n signInputAsync(\n inputIndex,\n keyPair,\n sighashTypes = [transaction_1.Transaction.SIGHASH_ALL],\n ) {\n return Promise.resolve().then(() => {\n if (!keyPair || !keyPair.publicKey)\n throw new Error('Need Signer to sign input');\n const { hash, sighashType } = getHashAndSighashType(\n this.data.inputs,\n inputIndex,\n keyPair.publicKey,\n this.__CACHE,\n sighashTypes,\n );\n return Promise.resolve(keyPair.sign(hash)).then(signature => {\n const partialSig = [\n {\n pubkey: keyPair.publicKey,\n signature: bscript.signature.encode(signature, sighashType),\n },\n ];\n this.data.updateInput(inputIndex, { partialSig });\n });\n });\n }\n toBuffer() {\n checkCache(this.__CACHE);\n return this.data.toBuffer();\n }\n toHex() {\n checkCache(this.__CACHE);\n return this.data.toHex();\n }\n toBase64() {\n checkCache(this.__CACHE);\n return this.data.toBase64();\n }\n updateGlobal(updateData) {\n this.data.updateGlobal(updateData);\n return this;\n }\n updateInput(inputIndex, updateData) {\n if (updateData.witnessScript) checkInvalidP2WSH(updateData.witnessScript);\n this.data.updateInput(inputIndex, updateData);\n if (updateData.nonWitnessUtxo) {\n addNonWitnessTxCache(\n this.__CACHE,\n this.data.inputs[inputIndex],\n inputIndex,\n );\n }\n return this;\n }\n updateOutput(outputIndex, updateData) {\n this.data.updateOutput(outputIndex, updateData);\n return this;\n }\n addUnknownKeyValToGlobal(keyVal) {\n this.data.addUnknownKeyValToGlobal(keyVal);\n return this;\n }\n addUnknownKeyValToInput(inputIndex, keyVal) {\n this.data.addUnknownKeyValToInput(inputIndex, keyVal);\n return this;\n }\n addUnknownKeyValToOutput(outputIndex, keyVal) {\n this.data.addUnknownKeyValToOutput(outputIndex, keyVal);\n return this;\n }\n clearFinalizedInput(inputIndex) {\n this.data.clearFinalizedInput(inputIndex);\n return this;\n }\n}\nexports.Psbt = Psbt;\n/**\n * This function is needed to pass to the bip174 base class's fromBuffer.\n * It takes the \"transaction buffer\" portion of the psbt buffer and returns a\n * Transaction (From the bip174 library) interface.\n */\nconst transactionFromBuffer = buffer => new PsbtTransaction(buffer);\n/**\n * This class implements the Transaction interface from bip174 library.\n * It contains a bitcoinjs-lib Transaction object.\n */\nclass PsbtTransaction {\n constructor(buffer = Buffer.from([2, 0, 0, 0, 0, 0, 0, 0, 0, 0])) {\n this.tx = transaction_1.Transaction.fromBuffer(buffer);\n checkTxEmpty(this.tx);\n Object.defineProperty(this, 'tx', {\n enumerable: false,\n writable: true,\n });\n }\n getInputOutputCounts() {\n return {\n inputCount: this.tx.ins.length,\n outputCount: this.tx.outs.length,\n };\n }\n addInput(input) {\n if (\n input.hash === undefined ||\n input.index === undefined ||\n (!Buffer.isBuffer(input.hash) && typeof input.hash !== 'string') ||\n typeof input.index !== 'number'\n ) {\n throw new Error('Error adding input.');\n }\n const hash =\n typeof input.hash === 'string'\n ? bufferutils_1.reverseBuffer(Buffer.from(input.hash, 'hex'))\n : input.hash;\n this.tx.addInput(hash, input.index, input.sequence);\n }\n addOutput(output) {\n if (\n output.script === undefined ||\n output.value === undefined ||\n !Buffer.isBuffer(output.script) ||\n typeof output.value !== 'number'\n ) {\n throw new Error('Error adding output.');\n }\n this.tx.addOutput(output.script, output.value);\n }\n toBuffer() {\n return this.tx.toBuffer();\n }\n}\nfunction canFinalize(input, script, scriptType) {\n switch (scriptType) {\n case 'pubkey':\n case 'pubkeyhash':\n case 'witnesspubkeyhash':\n return hasSigs(1, input.partialSig);\n case 'multisig':\n const p2ms = payments.p2ms({ output: script });\n return hasSigs(p2ms.m, input.partialSig, p2ms.pubkeys);\n default:\n return false;\n }\n}\nfunction checkCache(cache) {\n if (cache.__UNSAFE_SIGN_NONSEGWIT !== false) {\n throw new Error('Not BIP174 compliant, can not export');\n }\n}\nfunction hasSigs(neededSigs, partialSig, pubkeys) {\n if (!partialSig) return false;\n let sigs;\n if (pubkeys) {\n sigs = pubkeys\n .map(pkey => {\n const pubkey = ecpair_1.fromPublicKey(pkey, { compressed: true })\n .publicKey;\n return partialSig.find(pSig => pSig.pubkey.equals(pubkey));\n })\n .filter(v => !!v);\n } else {\n sigs = partialSig;\n }\n if (sigs.length > neededSigs) throw new Error('Too many signatures');\n return sigs.length === neededSigs;\n}\nfunction isFinalized(input) {\n return !!input.finalScriptSig || !!input.finalScriptWitness;\n}\nfunction isPaymentFactory(payment) {\n return script => {\n try {\n payment({ output: script });\n return true;\n } catch (err) {\n return false;\n }\n };\n}\nconst isP2MS = isPaymentFactory(payments.p2ms);\nconst isP2PK = isPaymentFactory(payments.p2pk);\nconst isP2PKH = isPaymentFactory(payments.p2pkh);\nconst isP2WPKH = isPaymentFactory(payments.p2wpkh);\nconst isP2WSHScript = isPaymentFactory(payments.p2wsh);\nconst isP2SHScript = isPaymentFactory(payments.p2sh);\nfunction bip32DerivationIsMine(root) {\n return d => {\n if (!d.masterFingerprint.equals(root.fingerprint)) return false;\n if (!root.derivePath(d.path).publicKey.equals(d.pubkey)) return false;\n return true;\n };\n}\nfunction check32Bit(num) {\n if (\n typeof num !== 'number' ||\n num !== Math.floor(num) ||\n num > 0xffffffff ||\n num < 0\n ) {\n throw new Error('Invalid 32 bit integer');\n }\n}\nfunction checkFees(psbt, cache, opts) {\n const feeRate = cache.__FEE_RATE || psbt.getFeeRate();\n const vsize = cache.__EXTRACTED_TX.virtualSize();\n const satoshis = feeRate * vsize;\n if (feeRate >= opts.maximumFeeRate) {\n throw new Error(\n `Warning: You are paying around ${(satoshis / 1e8).toFixed(8)} in ` +\n `fees, which is ${feeRate} satoshi per byte for a transaction ` +\n `with a VSize of ${vsize} bytes (segwit counted as 0.25 byte per ` +\n `byte). Use setMaximumFeeRate method to raise your threshold, or ` +\n `pass true to the first arg of extractTransaction.`,\n );\n }\n}\nfunction checkInputsForPartialSig(inputs, action) {\n inputs.forEach(input => {\n let throws = false;\n let pSigs = [];\n if ((input.partialSig || []).length === 0) {\n if (!input.finalScriptSig && !input.finalScriptWitness) return;\n pSigs = getPsigsFromInputFinalScripts(input);\n } else {\n pSigs = input.partialSig;\n }\n pSigs.forEach(pSig => {\n const { hashType } = bscript.signature.decode(pSig.signature);\n const whitelist = [];\n const isAnyoneCanPay =\n hashType & transaction_1.Transaction.SIGHASH_ANYONECANPAY;\n if (isAnyoneCanPay) whitelist.push('addInput');\n const hashMod = hashType & 0x1f;\n switch (hashMod) {\n case transaction_1.Transaction.SIGHASH_ALL:\n break;\n case transaction_1.Transaction.SIGHASH_SINGLE:\n case transaction_1.Transaction.SIGHASH_NONE:\n whitelist.push('addOutput');\n whitelist.push('setInputSequence');\n break;\n }\n if (whitelist.indexOf(action) === -1) {\n throws = true;\n }\n });\n if (throws) {\n throw new Error('Can not modify transaction, signatures exist.');\n }\n });\n}\nfunction checkPartialSigSighashes(input) {\n if (!input.sighashType || !input.partialSig) return;\n const { partialSig, sighashType } = input;\n partialSig.forEach(pSig => {\n const { hashType } = bscript.signature.decode(pSig.signature);\n if (sighashType !== hashType) {\n throw new Error('Signature sighash does not match input sighash type');\n }\n });\n}\nfunction checkScriptForPubkey(pubkey, script, action) {\n if (!pubkeyInScript(pubkey, script)) {\n throw new Error(\n `Can not ${action} for this input with the key ${pubkey.toString('hex')}`,\n );\n }\n}\nfunction checkTxEmpty(tx) {\n const isEmpty = tx.ins.every(\n input =>\n input.script &&\n input.script.length === 0 &&\n input.witness &&\n input.witness.length === 0,\n );\n if (!isEmpty) {\n throw new Error('Format Error: Transaction ScriptSigs are not empty');\n }\n}\nfunction checkTxForDupeIns(tx, cache) {\n tx.ins.forEach(input => {\n checkTxInputCache(cache, input);\n });\n}\nfunction checkTxInputCache(cache, input) {\n const key =\n bufferutils_1.reverseBuffer(Buffer.from(input.hash)).toString('hex') +\n ':' +\n input.index;\n if (cache.__TX_IN_CACHE[key]) throw new Error('Duplicate input detected.');\n cache.__TX_IN_CACHE[key] = 1;\n}\nfunction scriptCheckerFactory(payment, paymentScriptName) {\n return (inputIndex, scriptPubKey, redeemScript, ioType) => {\n const redeemScriptOutput = payment({\n redeem: { output: redeemScript },\n }).output;\n if (!scriptPubKey.equals(redeemScriptOutput)) {\n throw new Error(\n `${paymentScriptName} for ${ioType} #${inputIndex} doesn't match the scriptPubKey in the prevout`,\n );\n }\n };\n}\nconst checkRedeemScript = scriptCheckerFactory(payments.p2sh, 'Redeem script');\nconst checkWitnessScript = scriptCheckerFactory(\n payments.p2wsh,\n 'Witness script',\n);\nfunction getTxCacheValue(key, name, inputs, c) {\n if (!inputs.every(isFinalized))\n throw new Error(`PSBT must be finalized to calculate ${name}`);\n if (key === '__FEE_RATE' && c.__FEE_RATE) return c.__FEE_RATE;\n if (key === '__FEE' && c.__FEE) return c.__FEE;\n let tx;\n let mustFinalize = true;\n if (c.__EXTRACTED_TX) {\n tx = c.__EXTRACTED_TX;\n mustFinalize = false;\n } else {\n tx = c.__TX.clone();\n }\n inputFinalizeGetAmts(inputs, tx, c, mustFinalize);\n if (key === '__FEE_RATE') return c.__FEE_RATE;\n else if (key === '__FEE') return c.__FEE;\n}\nfunction getFinalScripts(inputIndex, input, script, isSegwit, isP2SH, isP2WSH) {\n const scriptType = classifyScript(script);\n if (!canFinalize(input, script, scriptType))\n throw new Error(`Can not finalize input #${inputIndex}`);\n return prepareFinalScripts(\n script,\n scriptType,\n input.partialSig,\n isSegwit,\n isP2SH,\n isP2WSH,\n );\n}\nfunction prepareFinalScripts(\n script,\n scriptType,\n partialSig,\n isSegwit,\n isP2SH,\n isP2WSH,\n) {\n let finalScriptSig;\n let finalScriptWitness;\n // Wow, the payments API is very handy\n const payment = getPayment(script, scriptType, partialSig);\n const p2wsh = !isP2WSH ? null : payments.p2wsh({ redeem: payment });\n const p2sh = !isP2SH ? null : payments.p2sh({ redeem: p2wsh || payment });\n if (isSegwit) {\n if (p2wsh) {\n finalScriptWitness = witnessStackToScriptWitness(p2wsh.witness);\n } else {\n finalScriptWitness = witnessStackToScriptWitness(payment.witness);\n }\n if (p2sh) {\n finalScriptSig = p2sh.input;\n }\n } else {\n if (p2sh) {\n finalScriptSig = p2sh.input;\n } else {\n finalScriptSig = payment.input;\n }\n }\n return {\n finalScriptSig,\n finalScriptWitness,\n };\n}\nfunction getHashAndSighashType(\n inputs,\n inputIndex,\n pubkey,\n cache,\n sighashTypes,\n) {\n const input = utils_1.checkForInput(inputs, inputIndex);\n const { hash, sighashType, script } = getHashForSig(\n inputIndex,\n input,\n cache,\n false,\n sighashTypes,\n );\n checkScriptForPubkey(pubkey, script, 'sign');\n return {\n hash,\n sighashType,\n };\n}\nfunction getHashForSig(inputIndex, input, cache, forValidate, sighashTypes) {\n const unsignedTx = cache.__TX;\n const sighashType =\n input.sighashType || transaction_1.Transaction.SIGHASH_ALL;\n if (sighashTypes && sighashTypes.indexOf(sighashType) < 0) {\n const str = sighashTypeToString(sighashType);\n throw new Error(\n `Sighash type is not allowed. Retry the sign method passing the ` +\n `sighashTypes array of whitelisted types. Sighash type: ${str}`,\n );\n }\n let hash;\n let prevout;\n if (input.nonWitnessUtxo) {\n const nonWitnessUtxoTx = nonWitnessUtxoTxFromCache(\n cache,\n input,\n inputIndex,\n );\n const prevoutHash = unsignedTx.ins[inputIndex].hash;\n const utxoHash = nonWitnessUtxoTx.getHash();\n // If a non-witness UTXO is provided, its hash must match the hash specified in the prevout\n if (!prevoutHash.equals(utxoHash)) {\n throw new Error(\n `Non-witness UTXO hash for input #${inputIndex} doesn't match the hash specified in the prevout`,\n );\n }\n const prevoutIndex = unsignedTx.ins[inputIndex].index;\n prevout = nonWitnessUtxoTx.outs[prevoutIndex];\n } else if (input.witnessUtxo) {\n prevout = input.witnessUtxo;\n } else {\n throw new Error('Need a Utxo input item for signing');\n }\n const { meaningfulScript, type } = getMeaningfulScript(\n prevout.script,\n inputIndex,\n 'input',\n input.redeemScript,\n input.witnessScript,\n );\n if (['p2sh-p2wsh', 'p2wsh'].indexOf(type) >= 0) {\n hash = unsignedTx.hashForWitnessV0(\n inputIndex,\n meaningfulScript,\n prevout.value,\n sighashType,\n );\n } else if (isP2WPKH(meaningfulScript)) {\n // P2WPKH uses the P2PKH template for prevoutScript when signing\n const signingScript = payments.p2pkh({ hash: meaningfulScript.slice(2) })\n .output;\n hash = unsignedTx.hashForWitnessV0(\n inputIndex,\n signingScript,\n prevout.value,\n sighashType,\n );\n } else {\n // non-segwit\n if (\n input.nonWitnessUtxo === undefined &&\n cache.__UNSAFE_SIGN_NONSEGWIT === false\n )\n throw new Error(\n `Input #${inputIndex} has witnessUtxo but non-segwit script: ` +\n `${meaningfulScript.toString('hex')}`,\n );\n if (!forValidate && cache.__UNSAFE_SIGN_NONSEGWIT !== false)\n console.warn(\n 'Warning: Signing non-segwit inputs without the full parent transaction ' +\n 'means there is a chance that a miner could feed you incorrect information ' +\n 'to trick you into paying large fees. This behavior is the same as the old ' +\n 'TransactionBuilder class when signing non-segwit scripts. You are not ' +\n 'able to export this Psbt with toBuffer|toBase64|toHex since it is not ' +\n 'BIP174 compliant.\\n*********************\\nPROCEED WITH CAUTION!\\n' +\n '*********************',\n );\n hash = unsignedTx.hashForSignature(\n inputIndex,\n meaningfulScript,\n sighashType,\n );\n }\n return {\n script: meaningfulScript,\n sighashType,\n hash,\n };\n}\nfunction getPayment(script, scriptType, partialSig) {\n let payment;\n switch (scriptType) {\n case 'multisig':\n const sigs = getSortedSigs(script, partialSig);\n payment = payments.p2ms({\n output: script,\n signatures: sigs,\n });\n break;\n case 'pubkey':\n payment = payments.p2pk({\n output: script,\n signature: partialSig[0].signature,\n });\n break;\n case 'pubkeyhash':\n payment = payments.p2pkh({\n output: script,\n pubkey: partialSig[0].pubkey,\n signature: partialSig[0].signature,\n });\n break;\n case 'witnesspubkeyhash':\n payment = payments.p2wpkh({\n output: script,\n pubkey: partialSig[0].pubkey,\n signature: partialSig[0].signature,\n });\n break;\n }\n return payment;\n}\nfunction getPsigsFromInputFinalScripts(input) {\n const scriptItems = !input.finalScriptSig\n ? []\n : bscript.decompile(input.finalScriptSig) || [];\n const witnessItems = !input.finalScriptWitness\n ? []\n : bscript.decompile(input.finalScriptWitness) || [];\n return scriptItems\n .concat(witnessItems)\n .filter(item => {\n return Buffer.isBuffer(item) && bscript.isCanonicalScriptSignature(item);\n })\n .map(sig => ({ signature: sig }));\n}\nfunction getScriptFromInput(inputIndex, input, cache) {\n const unsignedTx = cache.__TX;\n const res = {\n script: null,\n isSegwit: false,\n isP2SH: false,\n isP2WSH: false,\n };\n res.isP2SH = !!input.redeemScript;\n res.isP2WSH = !!input.witnessScript;\n if (input.witnessScript) {\n res.script = input.witnessScript;\n } else if (input.redeemScript) {\n res.script = input.redeemScript;\n } else {\n if (input.nonWitnessUtxo) {\n const nonWitnessUtxoTx = nonWitnessUtxoTxFromCache(\n cache,\n input,\n inputIndex,\n );\n const prevoutIndex = unsignedTx.ins[inputIndex].index;\n res.script = nonWitnessUtxoTx.outs[prevoutIndex].script;\n } else if (input.witnessUtxo) {\n res.script = input.witnessUtxo.script;\n }\n }\n if (input.witnessScript || isP2WPKH(res.script)) {\n res.isSegwit = true;\n }\n return res;\n}\nfunction getSignersFromHD(inputIndex, inputs, hdKeyPair) {\n const input = utils_1.checkForInput(inputs, inputIndex);\n if (!input.bip32Derivation || input.bip32Derivation.length === 0) {\n throw new Error('Need bip32Derivation to sign with HD');\n }\n const myDerivations = input.bip32Derivation\n .map(bipDv => {\n if (bipDv.masterFingerprint.equals(hdKeyPair.fingerprint)) {\n return bipDv;\n } else {\n return;\n }\n })\n .filter(v => !!v);\n if (myDerivations.length === 0) {\n throw new Error(\n 'Need one bip32Derivation masterFingerprint to match the HDSigner fingerprint',\n );\n }\n const signers = myDerivations.map(bipDv => {\n const node = hdKeyPair.derivePath(bipDv.path);\n if (!bipDv.pubkey.equals(node.publicKey)) {\n throw new Error('pubkey did not match bip32Derivation');\n }\n return node;\n });\n return signers;\n}\nfunction getSortedSigs(script, partialSig) {\n const p2ms = payments.p2ms({ output: script });\n // for each pubkey in order of p2ms script\n return p2ms.pubkeys\n .map(pk => {\n // filter partialSig array by pubkey being equal\n return (\n partialSig.filter(ps => {\n return ps.pubkey.equals(pk);\n })[0] || {}\n ).signature;\n // Any pubkey without a match will return undefined\n // this last filter removes all the undefined items in the array.\n })\n .filter(v => !!v);\n}\nfunction scriptWitnessToWitnessStack(buffer) {\n let offset = 0;\n function readSlice(n) {\n offset += n;\n return buffer.slice(offset - n, offset);\n }\n function readVarInt() {\n const vi = varuint.decode(buffer, offset);\n offset += varuint.decode.bytes;\n return vi;\n }\n function readVarSlice() {\n return readSlice(readVarInt());\n }\n function readVector() {\n const count = readVarInt();\n const vector = [];\n for (let i = 0; i < count; i++) vector.push(readVarSlice());\n return vector;\n }\n return readVector();\n}\nfunction sighashTypeToString(sighashType) {\n let text =\n sighashType & transaction_1.Transaction.SIGHASH_ANYONECANPAY\n ? 'SIGHASH_ANYONECANPAY | '\n : '';\n const sigMod = sighashType & 0x1f;\n switch (sigMod) {\n case transaction_1.Transaction.SIGHASH_ALL:\n text += 'SIGHASH_ALL';\n break;\n case transaction_1.Transaction.SIGHASH_SINGLE:\n text += 'SIGHASH_SINGLE';\n break;\n case transaction_1.Transaction.SIGHASH_NONE:\n text += 'SIGHASH_NONE';\n break;\n }\n return text;\n}\nfunction witnessStackToScriptWitness(witness) {\n let buffer = Buffer.allocUnsafe(0);\n function writeSlice(slice) {\n buffer = Buffer.concat([buffer, Buffer.from(slice)]);\n }\n function writeVarInt(i) {\n const currentLen = buffer.length;\n const varintLen = varuint.encodingLength(i);\n buffer = Buffer.concat([buffer, Buffer.allocUnsafe(varintLen)]);\n varuint.encode(i, buffer, currentLen);\n }\n function writeVarSlice(slice) {\n writeVarInt(slice.length);\n writeSlice(slice);\n }\n function writeVector(vector) {\n writeVarInt(vector.length);\n vector.forEach(writeVarSlice);\n }\n writeVector(witness);\n return buffer;\n}\nfunction addNonWitnessTxCache(cache, input, inputIndex) {\n cache.__NON_WITNESS_UTXO_BUF_CACHE[inputIndex] = input.nonWitnessUtxo;\n const tx = transaction_1.Transaction.fromBuffer(input.nonWitnessUtxo);\n cache.__NON_WITNESS_UTXO_TX_CACHE[inputIndex] = tx;\n const self = cache;\n const selfIndex = inputIndex;\n delete input.nonWitnessUtxo;\n Object.defineProperty(input, 'nonWitnessUtxo', {\n enumerable: true,\n get() {\n const buf = self.__NON_WITNESS_UTXO_BUF_CACHE[selfIndex];\n const txCache = self.__NON_WITNESS_UTXO_TX_CACHE[selfIndex];\n if (buf !== undefined) {\n return buf;\n } else {\n const newBuf = txCache.toBuffer();\n self.__NON_WITNESS_UTXO_BUF_CACHE[selfIndex] = newBuf;\n return newBuf;\n }\n },\n set(data) {\n self.__NON_WITNESS_UTXO_BUF_CACHE[selfIndex] = data;\n },\n });\n}\nfunction inputFinalizeGetAmts(inputs, tx, cache, mustFinalize) {\n let inputAmount = 0;\n inputs.forEach((input, idx) => {\n if (mustFinalize && input.finalScriptSig)\n tx.ins[idx].script = input.finalScriptSig;\n if (mustFinalize && input.finalScriptWitness) {\n tx.ins[idx].witness = scriptWitnessToWitnessStack(\n input.finalScriptWitness,\n );\n }\n if (input.witnessUtxo) {\n inputAmount += input.witnessUtxo.value;\n } else if (input.nonWitnessUtxo) {\n const nwTx = nonWitnessUtxoTxFromCache(cache, input, idx);\n const vout = tx.ins[idx].index;\n const out = nwTx.outs[vout];\n inputAmount += out.value;\n }\n });\n const outputAmount = tx.outs.reduce((total, o) => total + o.value, 0);\n const fee = inputAmount - outputAmount;\n if (fee < 0) {\n throw new Error('Outputs are spending more than Inputs');\n }\n const bytes = tx.virtualSize();\n cache.__FEE = fee;\n cache.__EXTRACTED_TX = tx;\n cache.__FEE_RATE = Math.floor(fee / bytes);\n}\nfunction nonWitnessUtxoTxFromCache(cache, input, inputIndex) {\n const c = cache.__NON_WITNESS_UTXO_TX_CACHE;\n if (!c[inputIndex]) {\n addNonWitnessTxCache(cache, input, inputIndex);\n }\n return c[inputIndex];\n}\nfunction getScriptFromUtxo(inputIndex, input, cache) {\n if (input.witnessUtxo !== undefined) {\n return input.witnessUtxo.script;\n } else if (input.nonWitnessUtxo !== undefined) {\n const nonWitnessUtxoTx = nonWitnessUtxoTxFromCache(\n cache,\n input,\n inputIndex,\n );\n return nonWitnessUtxoTx.outs[cache.__TX.ins[inputIndex].index].script;\n } else {\n throw new Error(\"Can't find pubkey in input without Utxo data\");\n }\n}\nfunction pubkeyInInput(pubkey, input, inputIndex, cache) {\n const script = getScriptFromUtxo(inputIndex, input, cache);\n const { meaningfulScript } = getMeaningfulScript(\n script,\n inputIndex,\n 'input',\n input.redeemScript,\n input.witnessScript,\n );\n return pubkeyInScript(pubkey, meaningfulScript);\n}\nfunction pubkeyInOutput(pubkey, output, outputIndex, cache) {\n const script = cache.__TX.outs[outputIndex].script;\n const { meaningfulScript } = getMeaningfulScript(\n script,\n outputIndex,\n 'output',\n output.redeemScript,\n output.witnessScript,\n );\n return pubkeyInScript(pubkey, meaningfulScript);\n}\nfunction redeemFromFinalScriptSig(finalScript) {\n if (!finalScript) return;\n const decomp = bscript.decompile(finalScript);\n if (!decomp) return;\n const lastItem = decomp[decomp.length - 1];\n if (\n !Buffer.isBuffer(lastItem) ||\n isPubkeyLike(lastItem) ||\n isSigLike(lastItem)\n )\n return;\n const sDecomp = bscript.decompile(lastItem);\n if (!sDecomp) return;\n return lastItem;\n}\nfunction redeemFromFinalWitnessScript(finalScript) {\n if (!finalScript) return;\n const decomp = scriptWitnessToWitnessStack(finalScript);\n const lastItem = decomp[decomp.length - 1];\n if (isPubkeyLike(lastItem)) return;\n const sDecomp = bscript.decompile(lastItem);\n if (!sDecomp) return;\n return lastItem;\n}\nfunction isPubkeyLike(buf) {\n return buf.length === 33 && bscript.isCanonicalPubKey(buf);\n}\nfunction isSigLike(buf) {\n return bscript.isCanonicalScriptSignature(buf);\n}\nfunction getMeaningfulScript(\n script,\n index,\n ioType,\n redeemScript,\n witnessScript,\n) {\n const isP2SH = isP2SHScript(script);\n const isP2SHP2WSH = isP2SH && redeemScript && isP2WSHScript(redeemScript);\n const isP2WSH = isP2WSHScript(script);\n if (isP2SH && redeemScript === undefined)\n throw new Error('scriptPubkey is P2SH but redeemScript missing');\n if ((isP2WSH || isP2SHP2WSH) && witnessScript === undefined)\n throw new Error(\n 'scriptPubkey or redeemScript is P2WSH but witnessScript missing',\n );\n let meaningfulScript;\n if (isP2SHP2WSH) {\n meaningfulScript = witnessScript;\n checkRedeemScript(index, script, redeemScript, ioType);\n checkWitnessScript(index, redeemScript, witnessScript, ioType);\n checkInvalidP2WSH(meaningfulScript);\n } else if (isP2WSH) {\n meaningfulScript = witnessScript;\n checkWitnessScript(index, script, witnessScript, ioType);\n checkInvalidP2WSH(meaningfulScript);\n } else if (isP2SH) {\n meaningfulScript = redeemScript;\n checkRedeemScript(index, script, redeemScript, ioType);\n } else {\n meaningfulScript = script;\n }\n return {\n meaningfulScript,\n type: isP2SHP2WSH\n ? 'p2sh-p2wsh'\n : isP2SH\n ? 'p2sh'\n : isP2WSH\n ? 'p2wsh'\n : 'raw',\n };\n}\nfunction checkInvalidP2WSH(script) {\n if (isP2WPKH(script) || isP2SHScript(script)) {\n throw new Error('P2WPKH or P2SH can not be contained within P2WSH');\n }\n}\nfunction pubkeyInScript(pubkey, script) {\n const pubkeyHash = crypto_1.hash160(pubkey);\n const decompiled = bscript.decompile(script);\n if (decompiled === null) throw new Error('Unknown script error');\n return decompiled.some(element => {\n if (typeof element === 'number') return false;\n return element.equals(pubkey) || element.equals(pubkeyHash);\n });\n}\nfunction classifyScript(script) {\n if (isP2WPKH(script)) return 'witnesspubkeyhash';\n if (isP2PKH(script)) return 'pubkeyhash';\n if (isP2MS(script)) return 'multisig';\n if (isP2PK(script)) return 'pubkey';\n return 'nonstandard';\n}\nfunction range(n) {\n return [...Array(n).keys()];\n}\n", "'use strict';\n// OP_0 [signatures ...]\nObject.defineProperty(exports, '__esModule', { value: true });\nconst bscript = require('../../script');\nconst script_1 = require('../../script');\nfunction partialSignature(value) {\n return (\n value === script_1.OPS.OP_0 || bscript.isCanonicalScriptSignature(value)\n );\n}\nfunction check(script, allowIncomplete) {\n const chunks = bscript.decompile(script);\n if (chunks.length < 2) return false;\n if (chunks[0] !== script_1.OPS.OP_0) return false;\n if (allowIncomplete) {\n return chunks.slice(1).every(partialSignature);\n }\n return chunks.slice(1).every(bscript.isCanonicalScriptSignature);\n}\nexports.check = check;\ncheck.toJSON = () => {\n return 'multisig input';\n};\n", "'use strict';\n// m [pubKeys ...] n OP_CHECKMULTISIG\nObject.defineProperty(exports, '__esModule', { value: true });\nconst bscript = require('../../script');\nconst script_1 = require('../../script');\nconst types = require('../../types');\nconst OP_INT_BASE = script_1.OPS.OP_RESERVED; // OP_1 - 1\nfunction check(script, allowIncomplete) {\n const chunks = bscript.decompile(script);\n if (chunks.length < 4) return false;\n if (chunks[chunks.length - 1] !== script_1.OPS.OP_CHECKMULTISIG) return false;\n if (!types.Number(chunks[0])) return false;\n if (!types.Number(chunks[chunks.length - 2])) return false;\n const m = chunks[0] - OP_INT_BASE;\n const n = chunks[chunks.length - 2] - OP_INT_BASE;\n if (m <= 0) return false;\n if (n > 16) return false;\n if (m > n) return false;\n if (n !== chunks.length - 3) return false;\n if (allowIncomplete) return true;\n const keys = chunks.slice(1, -2);\n return keys.every(bscript.isCanonicalPubKey);\n}\nexports.check = check;\ncheck.toJSON = () => {\n return 'multi-sig output';\n};\n", "'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst input = require('./input');\nexports.input = input;\nconst output = require('./output');\nexports.output = output;\n", "'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\n// OP_RETURN {data}\nconst bscript = require('../script');\nconst OPS = bscript.OPS;\nfunction check(script) {\n const buffer = bscript.compile(script);\n return buffer.length > 1 && buffer[0] === OPS.OP_RETURN;\n}\nexports.check = check;\ncheck.toJSON = () => {\n return 'null data output';\n};\nconst output = { check };\nexports.output = output;\n", "'use strict';\n// {signature}\nObject.defineProperty(exports, '__esModule', { value: true });\nconst bscript = require('../../script');\nfunction check(script) {\n const chunks = bscript.decompile(script);\n return chunks.length === 1 && bscript.isCanonicalScriptSignature(chunks[0]);\n}\nexports.check = check;\ncheck.toJSON = () => {\n return 'pubKey input';\n};\n", "'use strict';\n// {pubKey} OP_CHECKSIG\nObject.defineProperty(exports, '__esModule', { value: true });\nconst bscript = require('../../script');\nconst script_1 = require('../../script');\nfunction check(script) {\n const chunks = bscript.decompile(script);\n return (\n chunks.length === 2 &&\n bscript.isCanonicalPubKey(chunks[0]) &&\n chunks[1] === script_1.OPS.OP_CHECKSIG\n );\n}\nexports.check = check;\ncheck.toJSON = () => {\n return 'pubKey output';\n};\n", "'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst input = require('./input');\nexports.input = input;\nconst output = require('./output');\nexports.output = output;\n", "'use strict';\n// {signature} {pubKey}\nObject.defineProperty(exports, '__esModule', { value: true });\nconst bscript = require('../../script');\nfunction check(script) {\n const chunks = bscript.decompile(script);\n return (\n chunks.length === 2 &&\n bscript.isCanonicalScriptSignature(chunks[0]) &&\n bscript.isCanonicalPubKey(chunks[1])\n );\n}\nexports.check = check;\ncheck.toJSON = () => {\n return 'pubKeyHash input';\n};\n", "'use strict';\n// OP_DUP OP_HASH160 {pubKeyHash} OP_EQUALVERIFY OP_CHECKSIG\nObject.defineProperty(exports, '__esModule', { value: true });\nconst bscript = require('../../script');\nconst script_1 = require('../../script');\nfunction check(script) {\n const buffer = bscript.compile(script);\n return (\n buffer.length === 25 &&\n buffer[0] === script_1.OPS.OP_DUP &&\n buffer[1] === script_1.OPS.OP_HASH160 &&\n buffer[2] === 0x14 &&\n buffer[23] === script_1.OPS.OP_EQUALVERIFY &&\n buffer[24] === script_1.OPS.OP_CHECKSIG\n );\n}\nexports.check = check;\ncheck.toJSON = () => {\n return 'pubKeyHash output';\n};\n", "'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst input = require('./input');\nexports.input = input;\nconst output = require('./output');\nexports.output = output;\n", "'use strict';\n// OP_0 {pubKeyHash}\nObject.defineProperty(exports, '__esModule', { value: true });\nconst bscript = require('../../script');\nconst script_1 = require('../../script');\nfunction check(script) {\n const buffer = bscript.compile(script);\n return (\n buffer.length === 22 &&\n buffer[0] === script_1.OPS.OP_0 &&\n buffer[1] === 0x14\n );\n}\nexports.check = check;\ncheck.toJSON = () => {\n return 'Witness pubKeyHash output';\n};\n", "'use strict';\n// OP_0 {scriptHash}\nObject.defineProperty(exports, '__esModule', { value: true });\nconst bscript = require('../../script');\nconst script_1 = require('../../script');\nfunction check(script) {\n const buffer = bscript.compile(script);\n return (\n buffer.length === 34 &&\n buffer[0] === script_1.OPS.OP_0 &&\n buffer[1] === 0x20\n );\n}\nexports.check = check;\ncheck.toJSON = () => {\n return 'Witness scriptHash output';\n};\n", "'use strict';\n// {serialized scriptPubKey script}\nObject.defineProperty(exports, '__esModule', { value: true });\nconst bscript = require('../../script');\nconst p2ms = require('../multisig');\nconst p2pk = require('../pubkey');\nconst p2pkh = require('../pubkeyhash');\nconst p2wpkho = require('../witnesspubkeyhash/output');\nconst p2wsho = require('../witnessscripthash/output');\nfunction check(script, allowIncomplete) {\n const chunks = bscript.decompile(script);\n if (chunks.length < 1) return false;\n const lastChunk = chunks[chunks.length - 1];\n if (!Buffer.isBuffer(lastChunk)) return false;\n const scriptSigChunks = bscript.decompile(\n bscript.compile(chunks.slice(0, -1)),\n );\n const redeemScriptChunks = bscript.decompile(lastChunk);\n // is redeemScript a valid script?\n if (!redeemScriptChunks) return false;\n // is redeemScriptSig push only?\n if (!bscript.isPushOnly(scriptSigChunks)) return false;\n // is witness?\n if (chunks.length === 1) {\n return (\n p2wsho.check(redeemScriptChunks) || p2wpkho.check(redeemScriptChunks)\n );\n }\n // match types\n if (\n p2pkh.input.check(scriptSigChunks) &&\n p2pkh.output.check(redeemScriptChunks)\n )\n return true;\n if (\n p2ms.input.check(scriptSigChunks, allowIncomplete) &&\n p2ms.output.check(redeemScriptChunks)\n )\n return true;\n if (\n p2pk.input.check(scriptSigChunks) &&\n p2pk.output.check(redeemScriptChunks)\n )\n return true;\n return false;\n}\nexports.check = check;\ncheck.toJSON = () => {\n return 'scriptHash input';\n};\n", "'use strict';\n// OP_HASH160 {scriptHash} OP_EQUAL\nObject.defineProperty(exports, '__esModule', { value: true });\nconst bscript = require('../../script');\nconst script_1 = require('../../script');\nfunction check(script) {\n const buffer = bscript.compile(script);\n return (\n buffer.length === 23 &&\n buffer[0] === script_1.OPS.OP_HASH160 &&\n buffer[1] === 0x14 &&\n buffer[22] === script_1.OPS.OP_EQUAL\n );\n}\nexports.check = check;\ncheck.toJSON = () => {\n return 'scriptHash output';\n};\n", "'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst input = require('./input');\nexports.input = input;\nconst output = require('./output');\nexports.output = output;\n", "'use strict';\n// OP_RETURN {aa21a9ed} {commitment}\nObject.defineProperty(exports, '__esModule', { value: true });\nconst bscript = require('../../script');\nconst script_1 = require('../../script');\nconst types = require('../../types');\nconst typeforce = require('typeforce');\nconst HEADER = Buffer.from('aa21a9ed', 'hex');\nfunction check(script) {\n const buffer = bscript.compile(script);\n return (\n buffer.length > 37 &&\n buffer[0] === script_1.OPS.OP_RETURN &&\n buffer[1] === 0x24 &&\n buffer.slice(2, 6).equals(HEADER)\n );\n}\nexports.check = check;\ncheck.toJSON = () => {\n return 'Witness commitment output';\n};\nfunction encode(commitment) {\n typeforce(types.Hash256bit, commitment);\n const buffer = Buffer.allocUnsafe(36);\n HEADER.copy(buffer, 0);\n commitment.copy(buffer, 4);\n return bscript.compile([script_1.OPS.OP_RETURN, buffer]);\n}\nexports.encode = encode;\nfunction decode(buffer) {\n typeforce(check, buffer);\n return bscript.decompile(buffer)[1].slice(4, 36);\n}\nexports.decode = decode;\n", "'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst output = require('./output');\nexports.output = output;\n", "'use strict';\n// {signature} {pubKey}\nObject.defineProperty(exports, '__esModule', { value: true });\nconst bscript = require('../../script');\nfunction isCompressedCanonicalPubKey(pubKey) {\n return bscript.isCanonicalPubKey(pubKey) && pubKey.length === 33;\n}\nfunction check(script) {\n const chunks = bscript.decompile(script);\n return (\n chunks.length === 2 &&\n bscript.isCanonicalScriptSignature(chunks[0]) &&\n isCompressedCanonicalPubKey(chunks[1])\n );\n}\nexports.check = check;\ncheck.toJSON = () => {\n return 'witnessPubKeyHash input';\n};\n", "'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst input = require('./input');\nexports.input = input;\nconst output = require('./output');\nexports.output = output;\n", "'use strict';\n// {serialized scriptPubKey script}\nObject.defineProperty(exports, '__esModule', { value: true });\nconst bscript = require('../../script');\nconst typeforce = require('typeforce');\nconst p2ms = require('../multisig');\nconst p2pk = require('../pubkey');\nconst p2pkh = require('../pubkeyhash');\nfunction check(chunks, allowIncomplete) {\n typeforce(typeforce.Array, chunks);\n if (chunks.length < 1) return false;\n const witnessScript = chunks[chunks.length - 1];\n if (!Buffer.isBuffer(witnessScript)) return false;\n const witnessScriptChunks = bscript.decompile(witnessScript);\n // is witnessScript a valid script?\n if (!witnessScriptChunks || witnessScriptChunks.length === 0) return false;\n const witnessRawScriptSig = bscript.compile(chunks.slice(0, -1));\n // match types\n if (\n p2pkh.input.check(witnessRawScriptSig) &&\n p2pkh.output.check(witnessScriptChunks)\n )\n return true;\n if (\n p2ms.input.check(witnessRawScriptSig, allowIncomplete) &&\n p2ms.output.check(witnessScriptChunks)\n )\n return true;\n if (\n p2pk.input.check(witnessRawScriptSig) &&\n p2pk.output.check(witnessScriptChunks)\n )\n return true;\n return false;\n}\nexports.check = check;\ncheck.toJSON = () => {\n return 'witnessScriptHash input';\n};\n", "'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst input = require('./input');\nexports.input = input;\nconst output = require('./output');\nexports.output = output;\n", "'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst script_1 = require('./script');\nconst multisig = require('./templates/multisig');\nconst nullData = require('./templates/nulldata');\nconst pubKey = require('./templates/pubkey');\nconst pubKeyHash = require('./templates/pubkeyhash');\nconst scriptHash = require('./templates/scripthash');\nconst witnessCommitment = require('./templates/witnesscommitment');\nconst witnessPubKeyHash = require('./templates/witnesspubkeyhash');\nconst witnessScriptHash = require('./templates/witnessscripthash');\nconst types = {\n P2MS: 'multisig',\n NONSTANDARD: 'nonstandard',\n NULLDATA: 'nulldata',\n P2PK: 'pubkey',\n P2PKH: 'pubkeyhash',\n P2SH: 'scripthash',\n P2WPKH: 'witnesspubkeyhash',\n P2WSH: 'witnessscripthash',\n WITNESS_COMMITMENT: 'witnesscommitment',\n};\nexports.types = types;\nfunction classifyOutput(script) {\n if (witnessPubKeyHash.output.check(script)) return types.P2WPKH;\n if (witnessScriptHash.output.check(script)) return types.P2WSH;\n if (pubKeyHash.output.check(script)) return types.P2PKH;\n if (scriptHash.output.check(script)) return types.P2SH;\n // XXX: optimization, below functions .decompile before use\n const chunks = script_1.decompile(script);\n if (!chunks) throw new TypeError('Invalid script');\n if (multisig.output.check(chunks)) return types.P2MS;\n if (pubKey.output.check(chunks)) return types.P2PK;\n if (witnessCommitment.output.check(chunks)) return types.WITNESS_COMMITMENT;\n if (nullData.output.check(chunks)) return types.NULLDATA;\n return types.NONSTANDARD;\n}\nexports.output = classifyOutput;\nfunction classifyInput(script, allowIncomplete) {\n // XXX: optimization, below functions .decompile before use\n const chunks = script_1.decompile(script);\n if (!chunks) throw new TypeError('Invalid script');\n if (pubKeyHash.input.check(chunks)) return types.P2PKH;\n if (scriptHash.input.check(chunks, allowIncomplete)) return types.P2SH;\n if (multisig.input.check(chunks, allowIncomplete)) return types.P2MS;\n if (pubKey.input.check(chunks)) return types.P2PK;\n return types.NONSTANDARD;\n}\nexports.input = classifyInput;\nfunction classifyWitness(script, allowIncomplete) {\n // XXX: optimization, below functions .decompile before use\n const chunks = script_1.decompile(script);\n if (!chunks) throw new TypeError('Invalid script');\n if (witnessPubKeyHash.input.check(chunks)) return types.P2WPKH;\n if (witnessScriptHash.input.check(chunks, allowIncomplete))\n return types.P2WSH;\n return types.NONSTANDARD;\n}\nexports.witness = classifyWitness;\n", "'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst baddress = require('./address');\nconst bufferutils_1 = require('./bufferutils');\nconst classify = require('./classify');\nconst bcrypto = require('./crypto');\nconst ECPair = require('./ecpair');\nconst networks = require('./networks');\nconst payments = require('./payments');\nconst bscript = require('./script');\nconst script_1 = require('./script');\nconst transaction_1 = require('./transaction');\nconst types = require('./types');\nconst typeforce = require('typeforce');\nconst SCRIPT_TYPES = classify.types;\nconst PREVOUT_TYPES = new Set([\n // Raw\n 'p2pkh',\n 'p2pk',\n 'p2wpkh',\n 'p2ms',\n // P2SH wrapped\n 'p2sh-p2pkh',\n 'p2sh-p2pk',\n 'p2sh-p2wpkh',\n 'p2sh-p2ms',\n // P2WSH wrapped\n 'p2wsh-p2pkh',\n 'p2wsh-p2pk',\n 'p2wsh-p2ms',\n // P2SH-P2WSH wrapper\n 'p2sh-p2wsh-p2pkh',\n 'p2sh-p2wsh-p2pk',\n 'p2sh-p2wsh-p2ms',\n]);\nfunction tfMessage(type, value, message) {\n try {\n typeforce(type, value);\n } catch (err) {\n throw new Error(message);\n }\n}\nfunction txIsString(tx) {\n return typeof tx === 'string' || tx instanceof String;\n}\nfunction txIsTransaction(tx) {\n return tx instanceof transaction_1.Transaction;\n}\nclass TransactionBuilder {\n // WARNING: maximumFeeRate is __NOT__ to be relied on,\n // it's just another potential safety mechanism (safety in-depth)\n constructor(network = networks.bitcoin, maximumFeeRate = 2500) {\n this.network = network;\n this.maximumFeeRate = maximumFeeRate;\n this.__PREV_TX_SET = {};\n this.__INPUTS = [];\n this.__TX = new transaction_1.Transaction();\n this.__TX.version = 2;\n this.__USE_LOW_R = false;\n console.warn(\n 'Deprecation Warning: TransactionBuilder will be removed in the future. ' +\n '(v6.x.x or later) Please use the Psbt class instead. Examples of usage ' +\n 'are available in the transactions-psbt.js integration test file on our ' +\n 'Github. A high level explanation is available in the psbt.ts and psbt.js ' +\n 'files as well.',\n );\n }\n static fromTransaction(transaction, network) {\n const txb = new TransactionBuilder(network);\n // Copy transaction fields\n txb.setVersion(transaction.version);\n txb.setLockTime(transaction.locktime);\n // Copy outputs (done first to avoid signature invalidation)\n transaction.outs.forEach(txOut => {\n txb.addOutput(txOut.script, txOut.value);\n });\n // Copy inputs\n transaction.ins.forEach(txIn => {\n txb.__addInputUnsafe(txIn.hash, txIn.index, {\n sequence: txIn.sequence,\n script: txIn.script,\n witness: txIn.witness,\n });\n });\n // fix some things not possible through the public API\n txb.__INPUTS.forEach((input, i) => {\n fixMultisigOrder(input, transaction, i);\n });\n return txb;\n }\n setLowR(setting) {\n typeforce(typeforce.maybe(typeforce.Boolean), setting);\n if (setting === undefined) {\n setting = true;\n }\n this.__USE_LOW_R = setting;\n return setting;\n }\n setLockTime(locktime) {\n typeforce(types.UInt32, locktime);\n // if any signatures exist, throw\n if (\n this.__INPUTS.some(input => {\n if (!input.signatures) return false;\n return input.signatures.some(s => s !== undefined);\n })\n ) {\n throw new Error('No, this would invalidate signatures');\n }\n this.__TX.locktime = locktime;\n }\n setVersion(version) {\n typeforce(types.UInt32, version);\n // XXX: this might eventually become more complex depending on what the versions represent\n this.__TX.version = version;\n }\n addInput(txHash, vout, sequence, prevOutScript) {\n if (!this.__canModifyInputs()) {\n throw new Error('No, this would invalidate signatures');\n }\n let value;\n // is it a hex string?\n if (txIsString(txHash)) {\n // transaction hashs's are displayed in reverse order, un-reverse it\n txHash = bufferutils_1.reverseBuffer(Buffer.from(txHash, 'hex'));\n // is it a Transaction object?\n } else if (txIsTransaction(txHash)) {\n const txOut = txHash.outs[vout];\n prevOutScript = txOut.script;\n value = txOut.value;\n txHash = txHash.getHash(false);\n }\n return this.__addInputUnsafe(txHash, vout, {\n sequence,\n prevOutScript,\n value,\n });\n }\n addOutput(scriptPubKey, value) {\n if (!this.__canModifyOutputs()) {\n throw new Error('No, this would invalidate signatures');\n }\n // Attempt to get a script if it's a base58 or bech32 address string\n if (typeof scriptPubKey === 'string') {\n scriptPubKey = baddress.toOutputScript(scriptPubKey, this.network);\n }\n return this.__TX.addOutput(scriptPubKey, value);\n }\n build() {\n return this.__build(false);\n }\n buildIncomplete() {\n return this.__build(true);\n }\n sign(\n signParams,\n keyPair,\n redeemScript,\n hashType,\n witnessValue,\n witnessScript,\n ) {\n trySign(\n getSigningData(\n this.network,\n this.__INPUTS,\n this.__needsOutputs.bind(this),\n this.__TX,\n signParams,\n keyPair,\n redeemScript,\n hashType,\n witnessValue,\n witnessScript,\n this.__USE_LOW_R,\n ),\n );\n }\n __addInputUnsafe(txHash, vout, options) {\n if (transaction_1.Transaction.isCoinbaseHash(txHash)) {\n throw new Error('coinbase inputs not supported');\n }\n const prevTxOut = txHash.toString('hex') + ':' + vout;\n if (this.__PREV_TX_SET[prevTxOut] !== undefined)\n throw new Error('Duplicate TxOut: ' + prevTxOut);\n let input = {};\n // derive what we can from the scriptSig\n if (options.script !== undefined) {\n input = expandInput(options.script, options.witness || []);\n }\n // if an input value was given, retain it\n if (options.value !== undefined) {\n input.value = options.value;\n }\n // derive what we can from the previous transactions output script\n if (!input.prevOutScript && options.prevOutScript) {\n let prevOutType;\n if (!input.pubkeys && !input.signatures) {\n const expanded = expandOutput(options.prevOutScript);\n if (expanded.pubkeys) {\n input.pubkeys = expanded.pubkeys;\n input.signatures = expanded.signatures;\n }\n prevOutType = expanded.type;\n }\n input.prevOutScript = options.prevOutScript;\n input.prevOutType = prevOutType || classify.output(options.prevOutScript);\n }\n const vin = this.__TX.addInput(\n txHash,\n vout,\n options.sequence,\n options.scriptSig,\n );\n this.__INPUTS[vin] = input;\n this.__PREV_TX_SET[prevTxOut] = true;\n return vin;\n }\n __build(allowIncomplete) {\n if (!allowIncomplete) {\n if (!this.__TX.ins.length) throw new Error('Transaction has no inputs');\n if (!this.__TX.outs.length) throw new Error('Transaction has no outputs');\n }\n const tx = this.__TX.clone();\n // create script signatures from inputs\n this.__INPUTS.forEach((input, i) => {\n if (!input.prevOutType && !allowIncomplete)\n throw new Error('Transaction is not complete');\n const result = build(input.prevOutType, input, allowIncomplete);\n if (!result) {\n if (!allowIncomplete && input.prevOutType === SCRIPT_TYPES.NONSTANDARD)\n throw new Error('Unknown input type');\n if (!allowIncomplete) throw new Error('Not enough information');\n return;\n }\n tx.setInputScript(i, result.input);\n tx.setWitness(i, result.witness);\n });\n if (!allowIncomplete) {\n // do not rely on this, its merely a last resort\n if (this.__overMaximumFees(tx.virtualSize())) {\n throw new Error('Transaction has absurd fees');\n }\n }\n return tx;\n }\n __canModifyInputs() {\n return this.__INPUTS.every(input => {\n if (!input.signatures) return true;\n return input.signatures.every(signature => {\n if (!signature) return true;\n const hashType = signatureHashType(signature);\n // if SIGHASH_ANYONECANPAY is set, signatures would not\n // be invalidated by more inputs\n return (\n (hashType & transaction_1.Transaction.SIGHASH_ANYONECANPAY) !== 0\n );\n });\n });\n }\n __needsOutputs(signingHashType) {\n if (signingHashType === transaction_1.Transaction.SIGHASH_ALL) {\n return this.__TX.outs.length === 0;\n }\n // if inputs are being signed with SIGHASH_NONE, we don't strictly need outputs\n // .build() will fail, but .buildIncomplete() is OK\n return (\n this.__TX.outs.length === 0 &&\n this.__INPUTS.some(input => {\n if (!input.signatures) return false;\n return input.signatures.some(signature => {\n if (!signature) return false; // no signature, no issue\n const hashType = signatureHashType(signature);\n if (hashType & transaction_1.Transaction.SIGHASH_NONE) return false; // SIGHASH_NONE doesn't care about outputs\n return true; // SIGHASH_* does care\n });\n })\n );\n }\n __canModifyOutputs() {\n const nInputs = this.__TX.ins.length;\n const nOutputs = this.__TX.outs.length;\n return this.__INPUTS.every(input => {\n if (input.signatures === undefined) return true;\n return input.signatures.every(signature => {\n if (!signature) return true;\n const hashType = signatureHashType(signature);\n const hashTypeMod = hashType & 0x1f;\n if (hashTypeMod === transaction_1.Transaction.SIGHASH_NONE) return true;\n if (hashTypeMod === transaction_1.Transaction.SIGHASH_SINGLE) {\n // if SIGHASH_SINGLE is set, and nInputs > nOutputs\n // some signatures would be invalidated by the addition\n // of more outputs\n return nInputs <= nOutputs;\n }\n return false;\n });\n });\n }\n __overMaximumFees(bytes) {\n // not all inputs will have .value defined\n const incoming = this.__INPUTS.reduce((a, x) => a + (x.value >>> 0), 0);\n // but all outputs do, and if we have any input value\n // we can immediately determine if the outputs are too small\n const outgoing = this.__TX.outs.reduce((a, x) => a + x.value, 0);\n const fee = incoming - outgoing;\n const feeRate = fee / bytes;\n return feeRate > this.maximumFeeRate;\n }\n}\nexports.TransactionBuilder = TransactionBuilder;\nfunction expandInput(scriptSig, witnessStack, type, scriptPubKey) {\n if (scriptSig.length === 0 && witnessStack.length === 0) return {};\n if (!type) {\n let ssType = classify.input(scriptSig, true);\n let wsType = classify.witness(witnessStack, true);\n if (ssType === SCRIPT_TYPES.NONSTANDARD) ssType = undefined;\n if (wsType === SCRIPT_TYPES.NONSTANDARD) wsType = undefined;\n type = ssType || wsType;\n }\n switch (type) {\n case SCRIPT_TYPES.P2WPKH: {\n const { output, pubkey, signature } = payments.p2wpkh({\n witness: witnessStack,\n });\n return {\n prevOutScript: output,\n prevOutType: SCRIPT_TYPES.P2WPKH,\n pubkeys: [pubkey],\n signatures: [signature],\n };\n }\n case SCRIPT_TYPES.P2PKH: {\n const { output, pubkey, signature } = payments.p2pkh({\n input: scriptSig,\n });\n return {\n prevOutScript: output,\n prevOutType: SCRIPT_TYPES.P2PKH,\n pubkeys: [pubkey],\n signatures: [signature],\n };\n }\n case SCRIPT_TYPES.P2PK: {\n const { signature } = payments.p2pk({ input: scriptSig });\n return {\n prevOutType: SCRIPT_TYPES.P2PK,\n pubkeys: [undefined],\n signatures: [signature],\n };\n }\n case SCRIPT_TYPES.P2MS: {\n const { m, pubkeys, signatures } = payments.p2ms(\n {\n input: scriptSig,\n output: scriptPubKey,\n },\n { allowIncomplete: true },\n );\n return {\n prevOutType: SCRIPT_TYPES.P2MS,\n pubkeys,\n signatures,\n maxSignatures: m,\n };\n }\n }\n if (type === SCRIPT_TYPES.P2SH) {\n const { output, redeem } = payments.p2sh({\n input: scriptSig,\n witness: witnessStack,\n });\n const outputType = classify.output(redeem.output);\n const expanded = expandInput(\n redeem.input,\n redeem.witness,\n outputType,\n redeem.output,\n );\n if (!expanded.prevOutType) return {};\n return {\n prevOutScript: output,\n prevOutType: SCRIPT_TYPES.P2SH,\n redeemScript: redeem.output,\n redeemScriptType: expanded.prevOutType,\n witnessScript: expanded.witnessScript,\n witnessScriptType: expanded.witnessScriptType,\n pubkeys: expanded.pubkeys,\n signatures: expanded.signatures,\n };\n }\n if (type === SCRIPT_TYPES.P2WSH) {\n const { output, redeem } = payments.p2wsh({\n input: scriptSig,\n witness: witnessStack,\n });\n const outputType = classify.output(redeem.output);\n let expanded;\n if (outputType === SCRIPT_TYPES.P2WPKH) {\n expanded = expandInput(redeem.input, redeem.witness, outputType);\n } else {\n expanded = expandInput(\n bscript.compile(redeem.witness),\n [],\n outputType,\n redeem.output,\n );\n }\n if (!expanded.prevOutType) return {};\n return {\n prevOutScript: output,\n prevOutType: SCRIPT_TYPES.P2WSH,\n witnessScript: redeem.output,\n witnessScriptType: expanded.prevOutType,\n pubkeys: expanded.pubkeys,\n signatures: expanded.signatures,\n };\n }\n return {\n prevOutType: SCRIPT_TYPES.NONSTANDARD,\n prevOutScript: scriptSig,\n };\n}\n// could be done in expandInput, but requires the original Transaction for hashForSignature\nfunction fixMultisigOrder(input, transaction, vin) {\n if (input.redeemScriptType !== SCRIPT_TYPES.P2MS || !input.redeemScript)\n return;\n if (input.pubkeys.length === input.signatures.length) return;\n const unmatched = input.signatures.concat();\n input.signatures = input.pubkeys.map(pubKey => {\n const keyPair = ECPair.fromPublicKey(pubKey);\n let match;\n // check for a signature\n unmatched.some((signature, i) => {\n // skip if undefined || OP_0\n if (!signature) return false;\n // TODO: avoid O(n) hashForSignature\n const parsed = bscript.signature.decode(signature);\n const hash = transaction.hashForSignature(\n vin,\n input.redeemScript,\n parsed.hashType,\n );\n // skip if signature does not match pubKey\n if (!keyPair.verify(hash, parsed.signature)) return false;\n // remove matched signature from unmatched\n unmatched[i] = undefined;\n match = signature;\n return true;\n });\n return match;\n });\n}\nfunction expandOutput(script, ourPubKey) {\n typeforce(types.Buffer, script);\n const type = classify.output(script);\n switch (type) {\n case SCRIPT_TYPES.P2PKH: {\n if (!ourPubKey) return { type };\n // does our hash160(pubKey) match the output scripts?\n const pkh1 = payments.p2pkh({ output: script }).hash;\n const pkh2 = bcrypto.hash160(ourPubKey);\n if (!pkh1.equals(pkh2)) return { type };\n return {\n type,\n pubkeys: [ourPubKey],\n signatures: [undefined],\n };\n }\n case SCRIPT_TYPES.P2WPKH: {\n if (!ourPubKey) return { type };\n // does our hash160(pubKey) match the output scripts?\n const wpkh1 = payments.p2wpkh({ output: script }).hash;\n const wpkh2 = bcrypto.hash160(ourPubKey);\n if (!wpkh1.equals(wpkh2)) return { type };\n return {\n type,\n pubkeys: [ourPubKey],\n signatures: [undefined],\n };\n }\n case SCRIPT_TYPES.P2PK: {\n const p2pk = payments.p2pk({ output: script });\n return {\n type,\n pubkeys: [p2pk.pubkey],\n signatures: [undefined],\n };\n }\n case SCRIPT_TYPES.P2MS: {\n const p2ms = payments.p2ms({ output: script });\n return {\n type,\n pubkeys: p2ms.pubkeys,\n signatures: p2ms.pubkeys.map(() => undefined),\n maxSignatures: p2ms.m,\n };\n }\n }\n return { type };\n}\nfunction prepareInput(input, ourPubKey, redeemScript, witnessScript) {\n if (redeemScript && witnessScript) {\n const p2wsh = payments.p2wsh({\n redeem: { output: witnessScript },\n });\n const p2wshAlt = payments.p2wsh({ output: redeemScript });\n const p2sh = payments.p2sh({ redeem: { output: redeemScript } });\n const p2shAlt = payments.p2sh({ redeem: p2wsh });\n // enforces P2SH(P2WSH(...))\n if (!p2wsh.hash.equals(p2wshAlt.hash))\n throw new Error('Witness script inconsistent with prevOutScript');\n if (!p2sh.hash.equals(p2shAlt.hash))\n throw new Error('Redeem script inconsistent with prevOutScript');\n const expanded = expandOutput(p2wsh.redeem.output, ourPubKey);\n if (!expanded.pubkeys)\n throw new Error(\n expanded.type +\n ' not supported as witnessScript (' +\n bscript.toASM(witnessScript) +\n ')',\n );\n if (input.signatures && input.signatures.some(x => x !== undefined)) {\n expanded.signatures = input.signatures;\n }\n const signScript = witnessScript;\n if (expanded.type === SCRIPT_TYPES.P2WPKH)\n throw new Error('P2SH(P2WSH(P2WPKH)) is a consensus failure');\n return {\n redeemScript,\n redeemScriptType: SCRIPT_TYPES.P2WSH,\n witnessScript,\n witnessScriptType: expanded.type,\n prevOutType: SCRIPT_TYPES.P2SH,\n prevOutScript: p2sh.output,\n hasWitness: true,\n signScript,\n signType: expanded.type,\n pubkeys: expanded.pubkeys,\n signatures: expanded.signatures,\n maxSignatures: expanded.maxSignatures,\n };\n }\n if (redeemScript) {\n const p2sh = payments.p2sh({ redeem: { output: redeemScript } });\n if (input.prevOutScript) {\n let p2shAlt;\n try {\n p2shAlt = payments.p2sh({ output: input.prevOutScript });\n } catch (e) {\n throw new Error('PrevOutScript must be P2SH');\n }\n if (!p2sh.hash.equals(p2shAlt.hash))\n throw new Error('Redeem script inconsistent with prevOutScript');\n }\n const expanded = expandOutput(p2sh.redeem.output, ourPubKey);\n if (!expanded.pubkeys)\n throw new Error(\n expanded.type +\n ' not supported as redeemScript (' +\n bscript.toASM(redeemScript) +\n ')',\n );\n if (input.signatures && input.signatures.some(x => x !== undefined)) {\n expanded.signatures = input.signatures;\n }\n let signScript = redeemScript;\n if (expanded.type === SCRIPT_TYPES.P2WPKH) {\n signScript = payments.p2pkh({ pubkey: expanded.pubkeys[0] }).output;\n }\n return {\n redeemScript,\n redeemScriptType: expanded.type,\n prevOutType: SCRIPT_TYPES.P2SH,\n prevOutScript: p2sh.output,\n hasWitness: expanded.type === SCRIPT_TYPES.P2WPKH,\n signScript,\n signType: expanded.type,\n pubkeys: expanded.pubkeys,\n signatures: expanded.signatures,\n maxSignatures: expanded.maxSignatures,\n };\n }\n if (witnessScript) {\n const p2wsh = payments.p2wsh({ redeem: { output: witnessScript } });\n if (input.prevOutScript) {\n const p2wshAlt = payments.p2wsh({ output: input.prevOutScript });\n if (!p2wsh.hash.equals(p2wshAlt.hash))\n throw new Error('Witness script inconsistent with prevOutScript');\n }\n const expanded = expandOutput(p2wsh.redeem.output, ourPubKey);\n if (!expanded.pubkeys)\n throw new Error(\n expanded.type +\n ' not supported as witnessScript (' +\n bscript.toASM(witnessScript) +\n ')',\n );\n if (input.signatures && input.signatures.some(x => x !== undefined)) {\n expanded.signatures = input.signatures;\n }\n const signScript = witnessScript;\n if (expanded.type === SCRIPT_TYPES.P2WPKH)\n throw new Error('P2WSH(P2WPKH) is a consensus failure');\n return {\n witnessScript,\n witnessScriptType: expanded.type,\n prevOutType: SCRIPT_TYPES.P2WSH,\n prevOutScript: p2wsh.output,\n hasWitness: true,\n signScript,\n signType: expanded.type,\n pubkeys: expanded.pubkeys,\n signatures: expanded.signatures,\n maxSignatures: expanded.maxSignatures,\n };\n }\n if (input.prevOutType && input.prevOutScript) {\n // embedded scripts are not possible without extra information\n if (input.prevOutType === SCRIPT_TYPES.P2SH)\n throw new Error(\n 'PrevOutScript is ' + input.prevOutType + ', requires redeemScript',\n );\n if (input.prevOutType === SCRIPT_TYPES.P2WSH)\n throw new Error(\n 'PrevOutScript is ' + input.prevOutType + ', requires witnessScript',\n );\n if (!input.prevOutScript) throw new Error('PrevOutScript is missing');\n const expanded = expandOutput(input.prevOutScript, ourPubKey);\n if (!expanded.pubkeys)\n throw new Error(\n expanded.type +\n ' not supported (' +\n bscript.toASM(input.prevOutScript) +\n ')',\n );\n if (input.signatures && input.signatures.some(x => x !== undefined)) {\n expanded.signatures = input.signatures;\n }\n let signScript = input.prevOutScript;\n if (expanded.type === SCRIPT_TYPES.P2WPKH) {\n signScript = payments.p2pkh({ pubkey: expanded.pubkeys[0] }).output;\n }\n return {\n prevOutType: expanded.type,\n prevOutScript: input.prevOutScript,\n hasWitness: expanded.type === SCRIPT_TYPES.P2WPKH,\n signScript,\n signType: expanded.type,\n pubkeys: expanded.pubkeys,\n signatures: expanded.signatures,\n maxSignatures: expanded.maxSignatures,\n };\n }\n const prevOutScript = payments.p2pkh({ pubkey: ourPubKey }).output;\n return {\n prevOutType: SCRIPT_TYPES.P2PKH,\n prevOutScript,\n hasWitness: false,\n signScript: prevOutScript,\n signType: SCRIPT_TYPES.P2PKH,\n pubkeys: [ourPubKey],\n signatures: [undefined],\n };\n}\nfunction build(type, input, allowIncomplete) {\n const pubkeys = input.pubkeys || [];\n let signatures = input.signatures || [];\n switch (type) {\n case SCRIPT_TYPES.P2PKH: {\n if (pubkeys.length === 0) break;\n if (signatures.length === 0) break;\n return payments.p2pkh({ pubkey: pubkeys[0], signature: signatures[0] });\n }\n case SCRIPT_TYPES.P2WPKH: {\n if (pubkeys.length === 0) break;\n if (signatures.length === 0) break;\n return payments.p2wpkh({ pubkey: pubkeys[0], signature: signatures[0] });\n }\n case SCRIPT_TYPES.P2PK: {\n if (pubkeys.length === 0) break;\n if (signatures.length === 0) break;\n return payments.p2pk({ signature: signatures[0] });\n }\n case SCRIPT_TYPES.P2MS: {\n const m = input.maxSignatures;\n if (allowIncomplete) {\n signatures = signatures.map(x => x || script_1.OPS.OP_0);\n } else {\n signatures = signatures.filter(x => x);\n }\n // if the transaction is not not complete (complete), or if signatures.length === m, validate\n // otherwise, the number of OP_0's may be >= m, so don't validate (boo)\n const validate = !allowIncomplete || m === signatures.length;\n return payments.p2ms(\n { m, pubkeys, signatures },\n { allowIncomplete, validate },\n );\n }\n case SCRIPT_TYPES.P2SH: {\n const redeem = build(input.redeemScriptType, input, allowIncomplete);\n if (!redeem) return;\n return payments.p2sh({\n redeem: {\n output: redeem.output || input.redeemScript,\n input: redeem.input,\n witness: redeem.witness,\n },\n });\n }\n case SCRIPT_TYPES.P2WSH: {\n const redeem = build(input.witnessScriptType, input, allowIncomplete);\n if (!redeem) return;\n return payments.p2wsh({\n redeem: {\n output: input.witnessScript,\n input: redeem.input,\n witness: redeem.witness,\n },\n });\n }\n }\n}\nfunction canSign(input) {\n return (\n input.signScript !== undefined &&\n input.signType !== undefined &&\n input.pubkeys !== undefined &&\n input.signatures !== undefined &&\n input.signatures.length === input.pubkeys.length &&\n input.pubkeys.length > 0 &&\n (input.hasWitness === false || input.value !== undefined)\n );\n}\nfunction signatureHashType(buffer) {\n return buffer.readUInt8(buffer.length - 1);\n}\nfunction checkSignArgs(inputs, signParams) {\n if (!PREVOUT_TYPES.has(signParams.prevOutScriptType)) {\n throw new TypeError(\n `Unknown prevOutScriptType \"${signParams.prevOutScriptType}\"`,\n );\n }\n tfMessage(\n typeforce.Number,\n signParams.vin,\n `sign must include vin parameter as Number (input index)`,\n );\n tfMessage(\n types.Signer,\n signParams.keyPair,\n `sign must include keyPair parameter as Signer interface`,\n );\n tfMessage(\n typeforce.maybe(typeforce.Number),\n signParams.hashType,\n `sign hashType parameter must be a number`,\n );\n const prevOutType = (inputs[signParams.vin] || []).prevOutType;\n const posType = signParams.prevOutScriptType;\n switch (posType) {\n case 'p2pkh':\n if (prevOutType && prevOutType !== 'pubkeyhash') {\n throw new TypeError(\n `input #${signParams.vin} is not of type p2pkh: ${prevOutType}`,\n );\n }\n tfMessage(\n typeforce.value(undefined),\n signParams.witnessScript,\n `${posType} requires NO witnessScript`,\n );\n tfMessage(\n typeforce.value(undefined),\n signParams.redeemScript,\n `${posType} requires NO redeemScript`,\n );\n tfMessage(\n typeforce.value(undefined),\n signParams.witnessValue,\n `${posType} requires NO witnessValue`,\n );\n break;\n case 'p2pk':\n if (prevOutType && prevOutType !== 'pubkey') {\n throw new TypeError(\n `input #${signParams.vin} is not of type p2pk: ${prevOutType}`,\n );\n }\n tfMessage(\n typeforce.value(undefined),\n signParams.witnessScript,\n `${posType} requires NO witnessScript`,\n );\n tfMessage(\n typeforce.value(undefined),\n signParams.redeemScript,\n `${posType} requires NO redeemScript`,\n );\n tfMessage(\n typeforce.value(undefined),\n signParams.witnessValue,\n `${posType} requires NO witnessValue`,\n );\n break;\n case 'p2wpkh':\n if (prevOutType && prevOutType !== 'witnesspubkeyhash') {\n throw new TypeError(\n `input #${signParams.vin} is not of type p2wpkh: ${prevOutType}`,\n );\n }\n tfMessage(\n typeforce.value(undefined),\n signParams.witnessScript,\n `${posType} requires NO witnessScript`,\n );\n tfMessage(\n typeforce.value(undefined),\n signParams.redeemScript,\n `${posType} requires NO redeemScript`,\n );\n tfMessage(\n types.Satoshi,\n signParams.witnessValue,\n `${posType} requires witnessValue`,\n );\n break;\n case 'p2ms':\n if (prevOutType && prevOutType !== 'multisig') {\n throw new TypeError(\n `input #${signParams.vin} is not of type p2ms: ${prevOutType}`,\n );\n }\n tfMessage(\n typeforce.value(undefined),\n signParams.witnessScript,\n `${posType} requires NO witnessScript`,\n );\n tfMessage(\n typeforce.value(undefined),\n signParams.redeemScript,\n `${posType} requires NO redeemScript`,\n );\n tfMessage(\n typeforce.value(undefined),\n signParams.witnessValue,\n `${posType} requires NO witnessValue`,\n );\n break;\n case 'p2sh-p2wpkh':\n if (prevOutType && prevOutType !== 'scripthash') {\n throw new TypeError(\n `input #${signParams.vin} is not of type p2sh-p2wpkh: ${prevOutType}`,\n );\n }\n tfMessage(\n typeforce.value(undefined),\n signParams.witnessScript,\n `${posType} requires NO witnessScript`,\n );\n tfMessage(\n typeforce.Buffer,\n signParams.redeemScript,\n `${posType} requires redeemScript`,\n );\n tfMessage(\n types.Satoshi,\n signParams.witnessValue,\n `${posType} requires witnessValue`,\n );\n break;\n case 'p2sh-p2ms':\n case 'p2sh-p2pk':\n case 'p2sh-p2pkh':\n if (prevOutType && prevOutType !== 'scripthash') {\n throw new TypeError(\n `input #${signParams.vin} is not of type ${posType}: ${prevOutType}`,\n );\n }\n tfMessage(\n typeforce.value(undefined),\n signParams.witnessScript,\n `${posType} requires NO witnessScript`,\n );\n tfMessage(\n typeforce.Buffer,\n signParams.redeemScript,\n `${posType} requires redeemScript`,\n );\n tfMessage(\n typeforce.value(undefined),\n signParams.witnessValue,\n `${posType} requires NO witnessValue`,\n );\n break;\n case 'p2wsh-p2ms':\n case 'p2wsh-p2pk':\n case 'p2wsh-p2pkh':\n if (prevOutType && prevOutType !== 'witnessscripthash') {\n throw new TypeError(\n `input #${signParams.vin} is not of type ${posType}: ${prevOutType}`,\n );\n }\n tfMessage(\n typeforce.Buffer,\n signParams.witnessScript,\n `${posType} requires witnessScript`,\n );\n tfMessage(\n typeforce.value(undefined),\n signParams.redeemScript,\n `${posType} requires NO redeemScript`,\n );\n tfMessage(\n types.Satoshi,\n signParams.witnessValue,\n `${posType} requires witnessValue`,\n );\n break;\n case 'p2sh-p2wsh-p2ms':\n case 'p2sh-p2wsh-p2pk':\n case 'p2sh-p2wsh-p2pkh':\n if (prevOutType && prevOutType !== 'scripthash') {\n throw new TypeError(\n `input #${signParams.vin} is not of type ${posType}: ${prevOutType}`,\n );\n }\n tfMessage(\n typeforce.Buffer,\n signParams.witnessScript,\n `${posType} requires witnessScript`,\n );\n tfMessage(\n typeforce.Buffer,\n signParams.redeemScript,\n `${posType} requires witnessScript`,\n );\n tfMessage(\n types.Satoshi,\n signParams.witnessValue,\n `${posType} requires witnessScript`,\n );\n break;\n }\n}\nfunction trySign({\n input,\n ourPubKey,\n keyPair,\n signatureHash,\n hashType,\n useLowR,\n}) {\n // enforce in order signing of public keys\n let signed = false;\n for (const [i, pubKey] of input.pubkeys.entries()) {\n if (!ourPubKey.equals(pubKey)) continue;\n if (input.signatures[i]) throw new Error('Signature already exists');\n // TODO: add tests\n if (ourPubKey.length !== 33 && input.hasWitness) {\n throw new Error(\n 'BIP143 rejects uncompressed public keys in P2WPKH or P2WSH',\n );\n }\n const signature = keyPair.sign(signatureHash, useLowR);\n input.signatures[i] = bscript.signature.encode(signature, hashType);\n signed = true;\n }\n if (!signed) throw new Error('Key pair cannot sign for this input');\n}\nfunction getSigningData(\n network,\n inputs,\n needsOutputs,\n tx,\n signParams,\n keyPair,\n redeemScript,\n hashType,\n witnessValue,\n witnessScript,\n useLowR,\n) {\n let vin;\n if (typeof signParams === 'number') {\n console.warn(\n 'DEPRECATED: TransactionBuilder sign method arguments ' +\n 'will change in v6, please use the TxbSignArg interface',\n );\n vin = signParams;\n } else if (typeof signParams === 'object') {\n checkSignArgs(inputs, signParams);\n ({\n vin,\n keyPair,\n redeemScript,\n hashType,\n witnessValue,\n witnessScript,\n } = signParams);\n } else {\n throw new TypeError(\n 'TransactionBuilder sign first arg must be TxbSignArg or number',\n );\n }\n if (keyPair === undefined) {\n throw new Error('sign requires keypair');\n }\n // TODO: remove keyPair.network matching in 4.0.0\n if (keyPair.network && keyPair.network !== network)\n throw new TypeError('Inconsistent network');\n if (!inputs[vin]) throw new Error('No input at index: ' + vin);\n hashType = hashType || transaction_1.Transaction.SIGHASH_ALL;\n if (needsOutputs(hashType)) throw new Error('Transaction needs outputs');\n const input = inputs[vin];\n // if redeemScript was previously provided, enforce consistency\n if (\n input.redeemScript !== undefined &&\n redeemScript &&\n !input.redeemScript.equals(redeemScript)\n ) {\n throw new Error('Inconsistent redeemScript');\n }\n const ourPubKey =\n keyPair.publicKey || (keyPair.getPublicKey && keyPair.getPublicKey());\n if (!canSign(input)) {\n if (witnessValue !== undefined) {\n if (input.value !== undefined && input.value !== witnessValue)\n throw new Error('Input did not match witnessValue');\n typeforce(types.Satoshi, witnessValue);\n input.value = witnessValue;\n }\n if (!canSign(input)) {\n const prepared = prepareInput(\n input,\n ourPubKey,\n redeemScript,\n witnessScript,\n );\n // updates inline\n Object.assign(input, prepared);\n }\n if (!canSign(input)) throw Error(input.prevOutType + ' not supported');\n }\n // ready to sign\n let signatureHash;\n if (input.hasWitness) {\n signatureHash = tx.hashForWitnessV0(\n vin,\n input.signScript,\n input.value,\n hashType,\n );\n } else {\n signatureHash = tx.hashForSignature(vin, input.signScript, hashType);\n }\n return {\n input,\n ourPubKey,\n keyPair,\n signatureHash,\n hashType,\n useLowR: !!useLowR,\n };\n}\n", "'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst bip32 = require('bip32');\nexports.bip32 = bip32;\nconst address = require('./address');\nexports.address = address;\nconst crypto = require('./crypto');\nexports.crypto = crypto;\nconst ECPair = require('./ecpair');\nexports.ECPair = ECPair;\nconst networks = require('./networks');\nexports.networks = networks;\nconst payments = require('./payments');\nexports.payments = payments;\nconst script = require('./script');\nexports.script = script;\nvar block_1 = require('./block');\nexports.Block = block_1.Block;\nvar psbt_1 = require('./psbt');\nexports.Psbt = psbt_1.Psbt;\nvar script_1 = require('./script');\nexports.opcodes = script_1.OPS;\nvar transaction_1 = require('./transaction');\nexports.Transaction = transaction_1.Transaction;\nvar transaction_builder_1 = require('./transaction_builder');\nexports.TransactionBuilder = transaction_builder_1.TransactionBuilder;\n", "/*\n * Bitcoin BIP32 path helpers\n * (C) 2016 Alex Beregszaszi\n */\n\nconst HARDENED = 0x80000000\n\nvar BIPPath = function (path) {\n if (!Array.isArray(path)) {\n throw new Error('Input must be an Array')\n }\n if (path.length === 0) {\n throw new Error('Path must contain at least one level')\n }\n for (var i = 0; i < path.length; i++) {\n if (typeof path[i] !== 'number') {\n throw new Error('Path element is not a number')\n }\n }\n this.path = path\n}\n\nBIPPath.validatePathArray = function (path) {\n try {\n BIPPath.fromPathArray(path)\n return true\n } catch (e) {\n return false\n }\n}\n\nBIPPath.validateString = function (text, reqRoot) {\n try {\n BIPPath.fromString(text, reqRoot)\n return true\n } catch (e) {\n return false\n }\n}\n\nBIPPath.fromPathArray = function (path) {\n return new BIPPath(path)\n}\n\nBIPPath.fromString = function (text, reqRoot) {\n // skip the root\n if (/^m\\//i.test(text)) {\n text = text.slice(2)\n } else if (reqRoot) {\n throw new Error('Root element is required')\n }\n\n var path = text.split('/')\n var ret = new Array(path.length)\n for (var i = 0; i < path.length; i++) {\n var tmp = /(\\d+)([hH\\']?)/.exec(path[i])\n if (tmp === null) {\n throw new Error('Invalid input')\n }\n ret[i] = parseInt(tmp[1], 10)\n\n if (ret[i] >= HARDENED) {\n throw new Error('Invalid child index')\n }\n\n if (tmp[2] === 'h' || tmp[2] === 'H' || tmp[2] === '\\'') {\n ret[i] += HARDENED\n } else if (tmp[2].length != 0) {\n throw new Error('Invalid modifier')\n }\n }\n return new BIPPath(ret)\n}\n\nBIPPath.prototype.toPathArray = function () {\n return this.path\n}\n\nBIPPath.prototype.toString = function (noRoot, oldStyle) {\n var ret = new Array(this.path.length)\n for (var i = 0; i < this.path.length; i++) {\n var tmp = this.path[i]\n if (tmp & HARDENED) {\n ret[i] = (tmp & ~HARDENED) + (oldStyle ? 'h' : '\\'')\n } else {\n ret[i] = tmp\n }\n }\n return (noRoot ? '' : 'm/') + ret.join('/')\n}\n\nBIPPath.prototype.inspect = function () {\n return 'BIPPath <' + this.toString() + '>'\n}\n\nmodule.exports = BIPPath\n", "module.exports = require('stream');\n", "'use strict';\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nvar _require = require('buffer'),\n Buffer = _require.Buffer;\n\nvar _require2 = require('util'),\n inspect = _require2.inspect;\n\nvar custom = inspect && inspect.custom || 'inspect';\n\nfunction copyBuffer(src, target, offset) {\n Buffer.prototype.copy.call(src, target, offset);\n}\n\nmodule.exports =\n/*#__PURE__*/\nfunction () {\n function BufferList() {\n _classCallCheck(this, BufferList);\n\n this.head = null;\n this.tail = null;\n this.length = 0;\n }\n\n _createClass(BufferList, [{\n key: \"push\",\n value: function push(v) {\n var entry = {\n data: v,\n next: null\n };\n if (this.length > 0) this.tail.next = entry;else this.head = entry;\n this.tail = entry;\n ++this.length;\n }\n }, {\n key: \"unshift\",\n value: function unshift(v) {\n var entry = {\n data: v,\n next: this.head\n };\n if (this.length === 0) this.tail = entry;\n this.head = entry;\n ++this.length;\n }\n }, {\n key: \"shift\",\n value: function shift() {\n if (this.length === 0) return;\n var ret = this.head.data;\n if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next;\n --this.length;\n return ret;\n }\n }, {\n key: \"clear\",\n value: function clear() {\n this.head = this.tail = null;\n this.length = 0;\n }\n }, {\n key: \"join\",\n value: function join(s) {\n if (this.length === 0) return '';\n var p = this.head;\n var ret = '' + p.data;\n\n while (p = p.next) {\n ret += s + p.data;\n }\n\n return ret;\n }\n }, {\n key: \"concat\",\n value: function concat(n) {\n if (this.length === 0) return Buffer.alloc(0);\n var ret = Buffer.allocUnsafe(n >>> 0);\n var p = this.head;\n var i = 0;\n\n while (p) {\n copyBuffer(p.data, ret, i);\n i += p.data.length;\n p = p.next;\n }\n\n return ret;\n } // Consumes a specified amount of bytes or characters from the buffered data.\n\n }, {\n key: \"consume\",\n value: function consume(n, hasStrings) {\n var ret;\n\n if (n < this.head.data.length) {\n // `slice` is the same for buffers and strings.\n ret = this.head.data.slice(0, n);\n this.head.data = this.head.data.slice(n);\n } else if (n === this.head.data.length) {\n // First chunk is a perfect match.\n ret = this.shift();\n } else {\n // Result spans more than one buffer.\n ret = hasStrings ? this._getString(n) : this._getBuffer(n);\n }\n\n return ret;\n }\n }, {\n key: \"first\",\n value: function first() {\n return this.head.data;\n } // Consumes a specified amount of characters from the buffered data.\n\n }, {\n key: \"_getString\",\n value: function _getString(n) {\n var p = this.head;\n var c = 1;\n var ret = p.data;\n n -= ret.length;\n\n while (p = p.next) {\n var str = p.data;\n var nb = n > str.length ? str.length : n;\n if (nb === str.length) ret += str;else ret += str.slice(0, n);\n n -= nb;\n\n if (n === 0) {\n if (nb === str.length) {\n ++c;\n if (p.next) this.head = p.next;else this.head = this.tail = null;\n } else {\n this.head = p;\n p.data = str.slice(nb);\n }\n\n break;\n }\n\n ++c;\n }\n\n this.length -= c;\n return ret;\n } // Consumes a specified amount of bytes from the buffered data.\n\n }, {\n key: \"_getBuffer\",\n value: function _getBuffer(n) {\n var ret = Buffer.allocUnsafe(n);\n var p = this.head;\n var c = 1;\n p.data.copy(ret);\n n -= p.data.length;\n\n while (p = p.next) {\n var buf = p.data;\n var nb = n > buf.length ? buf.length : n;\n buf.copy(ret, ret.length - n, 0, nb);\n n -= nb;\n\n if (n === 0) {\n if (nb === buf.length) {\n ++c;\n if (p.next) this.head = p.next;else this.head = this.tail = null;\n } else {\n this.head = p;\n p.data = buf.slice(nb);\n }\n\n break;\n }\n\n ++c;\n }\n\n this.length -= c;\n return ret;\n } // Make sure the linked list only shows the minimal necessary information.\n\n }, {\n key: custom,\n value: function value(_, options) {\n return inspect(this, _objectSpread({}, options, {\n // Only inspect one level.\n depth: 0,\n // It should not recurse.\n customInspect: false\n }));\n }\n }]);\n\n return BufferList;\n}();", "'use strict'; // undocumented cb() API, needed for core, not for public API\n\nfunction destroy(err, cb) {\n var _this = this;\n\n var readableDestroyed = this._readableState && this._readableState.destroyed;\n var writableDestroyed = this._writableState && this._writableState.destroyed;\n\n if (readableDestroyed || writableDestroyed) {\n if (cb) {\n cb(err);\n } else if (err) {\n if (!this._writableState) {\n process.nextTick(emitErrorNT, this, err);\n } else if (!this._writableState.errorEmitted) {\n this._writableState.errorEmitted = true;\n process.nextTick(emitErrorNT, this, err);\n }\n }\n\n return this;\n } // we set destroyed to true before firing error callbacks in order\n // to make it re-entrance safe in case destroy() is called within callbacks\n\n\n if (this._readableState) {\n this._readableState.destroyed = true;\n } // if this is a duplex stream mark the writable part as destroyed as well\n\n\n if (this._writableState) {\n this._writableState.destroyed = true;\n }\n\n this._destroy(err || null, function (err) {\n if (!cb && err) {\n if (!_this._writableState) {\n process.nextTick(emitErrorAndCloseNT, _this, err);\n } else if (!_this._writableState.errorEmitted) {\n _this._writableState.errorEmitted = true;\n process.nextTick(emitErrorAndCloseNT, _this, err);\n } else {\n process.nextTick(emitCloseNT, _this);\n }\n } else if (cb) {\n process.nextTick(emitCloseNT, _this);\n cb(err);\n } else {\n process.nextTick(emitCloseNT, _this);\n }\n });\n\n return this;\n}\n\nfunction emitErrorAndCloseNT(self, err) {\n emitErrorNT(self, err);\n emitCloseNT(self);\n}\n\nfunction emitCloseNT(self) {\n if (self._writableState && !self._writableState.emitClose) return;\n if (self._readableState && !self._readableState.emitClose) return;\n self.emit('close');\n}\n\nfunction undestroy() {\n if (this._readableState) {\n this._readableState.destroyed = false;\n this._readableState.reading = false;\n this._readableState.ended = false;\n this._readableState.endEmitted = false;\n }\n\n if (this._writableState) {\n this._writableState.destroyed = false;\n this._writableState.ended = false;\n this._writableState.ending = false;\n this._writableState.finalCalled = false;\n this._writableState.prefinished = false;\n this._writableState.finished = false;\n this._writableState.errorEmitted = false;\n }\n}\n\nfunction emitErrorNT(self, err) {\n self.emit('error', err);\n}\n\nfunction errorOrDestroy(stream, err) {\n // We have tests that rely on errors being emitted\n // in the same tick, so changing this is semver major.\n // For now when you opt-in to autoDestroy we allow\n // the error to be emitted nextTick. In a future\n // semver major update we should change the default to this.\n var rState = stream._readableState;\n var wState = stream._writableState;\n if (rState && rState.autoDestroy || wState && wState.autoDestroy) stream.destroy(err);else stream.emit('error', err);\n}\n\nmodule.exports = {\n destroy: destroy,\n undestroy: undestroy,\n errorOrDestroy: errorOrDestroy\n};", "'use strict';\n\nconst codes = {};\n\nfunction createErrorType(code, message, Base) {\n if (!Base) {\n Base = Error\n }\n\n function getMessage (arg1, arg2, arg3) {\n if (typeof message === 'string') {\n return message\n } else {\n return message(arg1, arg2, arg3)\n }\n }\n\n class NodeError extends Base {\n constructor (arg1, arg2, arg3) {\n super(getMessage(arg1, arg2, arg3));\n }\n }\n\n NodeError.prototype.name = Base.name;\n NodeError.prototype.code = code;\n\n codes[code] = NodeError;\n}\n\n// https://github.com/nodejs/node/blob/v10.8.0/lib/internal/errors.js\nfunction oneOf(expected, thing) {\n if (Array.isArray(expected)) {\n const len = expected.length;\n expected = expected.map((i) => String(i));\n if (len > 2) {\n return `one of ${thing} ${expected.slice(0, len - 1).join(', ')}, or ` +\n expected[len - 1];\n } else if (len === 2) {\n return `one of ${thing} ${expected[0]} or ${expected[1]}`;\n } else {\n return `of ${thing} ${expected[0]}`;\n }\n } else {\n return `of ${thing} ${String(expected)}`;\n }\n}\n\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/startsWith\nfunction startsWith(str, search, pos) {\n\treturn str.substr(!pos || pos < 0 ? 0 : +pos, search.length) === search;\n}\n\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/endsWith\nfunction endsWith(str, search, this_len) {\n\tif (this_len === undefined || this_len > str.length) {\n\t\tthis_len = str.length;\n\t}\n\treturn str.substring(this_len - search.length, this_len) === search;\n}\n\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/includes\nfunction includes(str, search, start) {\n if (typeof start !== 'number') {\n start = 0;\n }\n\n if (start + search.length > str.length) {\n return false;\n } else {\n return str.indexOf(search, start) !== -1;\n }\n}\n\ncreateErrorType('ERR_INVALID_OPT_VALUE', function (name, value) {\n return 'The value \"' + value + '\" is invalid for option \"' + name + '\"'\n}, TypeError);\ncreateErrorType('ERR_INVALID_ARG_TYPE', function (name, expected, actual) {\n // determiner: 'must be' or 'must not be'\n let determiner;\n if (typeof expected === 'string' && startsWith(expected, 'not ')) {\n determiner = 'must not be';\n expected = expected.replace(/^not /, '');\n } else {\n determiner = 'must be';\n }\n\n let msg;\n if (endsWith(name, ' argument')) {\n // For cases like 'first argument'\n msg = `The ${name} ${determiner} ${oneOf(expected, 'type')}`;\n } else {\n const type = includes(name, '.') ? 'property' : 'argument';\n msg = `The \"${name}\" ${type} ${determiner} ${oneOf(expected, 'type')}`;\n }\n\n msg += `. Received type ${typeof actual}`;\n return msg;\n}, TypeError);\ncreateErrorType('ERR_STREAM_PUSH_AFTER_EOF', 'stream.push() after EOF');\ncreateErrorType('ERR_METHOD_NOT_IMPLEMENTED', function (name) {\n return 'The ' + name + ' method is not implemented'\n});\ncreateErrorType('ERR_STREAM_PREMATURE_CLOSE', 'Premature close');\ncreateErrorType('ERR_STREAM_DESTROYED', function (name) {\n return 'Cannot call ' + name + ' after a stream was destroyed';\n});\ncreateErrorType('ERR_MULTIPLE_CALLBACK', 'Callback called multiple times');\ncreateErrorType('ERR_STREAM_CANNOT_PIPE', 'Cannot pipe, not readable');\ncreateErrorType('ERR_STREAM_WRITE_AFTER_END', 'write after end');\ncreateErrorType('ERR_STREAM_NULL_VALUES', 'May not write null values to stream', TypeError);\ncreateErrorType('ERR_UNKNOWN_ENCODING', function (arg) {\n return 'Unknown encoding: ' + arg\n}, TypeError);\ncreateErrorType('ERR_STREAM_UNSHIFT_AFTER_END_EVENT', 'stream.unshift() after end event');\n\nmodule.exports.codes = codes;\n", "'use strict';\n\nvar ERR_INVALID_OPT_VALUE = require('../../../errors').codes.ERR_INVALID_OPT_VALUE;\n\nfunction highWaterMarkFrom(options, isDuplex, duplexKey) {\n return options.highWaterMark != null ? options.highWaterMark : isDuplex ? options[duplexKey] : null;\n}\n\nfunction getHighWaterMark(state, options, duplexKey, isDuplex) {\n var hwm = highWaterMarkFrom(options, isDuplex, duplexKey);\n\n if (hwm != null) {\n if (!(isFinite(hwm) && Math.floor(hwm) === hwm) || hwm < 0) {\n var name = isDuplex ? duplexKey : 'highWaterMark';\n throw new ERR_INVALID_OPT_VALUE(name, hwm);\n }\n\n return Math.floor(hwm);\n } // Default value\n\n\n return state.objectMode ? 16 : 16 * 1024;\n}\n\nmodule.exports = {\n getHighWaterMark: getHighWaterMark\n};", "\n/**\n * For Node.js, simply re-export the core `util.deprecate` function.\n */\n\nmodule.exports = require('util').deprecate;\n", "// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n// A bit simpler than readable streams.\n// Implement an async ._write(chunk, encoding, cb), and it'll handle all\n// the drain event emission and buffering.\n'use strict';\n\nmodule.exports = Writable;\n/* */\n\nfunction WriteReq(chunk, encoding, cb) {\n this.chunk = chunk;\n this.encoding = encoding;\n this.callback = cb;\n this.next = null;\n} // It seems a linked list but it is not\n// there will be only 2 of these for each stream\n\n\nfunction CorkedRequest(state) {\n var _this = this;\n\n this.next = null;\n this.entry = null;\n\n this.finish = function () {\n onCorkedFinish(_this, state);\n };\n}\n/* */\n\n/**/\n\n\nvar Duplex;\n/**/\n\nWritable.WritableState = WritableState;\n/**/\n\nvar internalUtil = {\n deprecate: require('util-deprecate')\n};\n/**/\n\n/**/\n\nvar Stream = require('./internal/streams/stream');\n/**/\n\n\nvar Buffer = require('buffer').Buffer;\n\nvar OurUint8Array = global.Uint8Array || function () {};\n\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\n\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n\nvar destroyImpl = require('./internal/streams/destroy');\n\nvar _require = require('./internal/streams/state'),\n getHighWaterMark = _require.getHighWaterMark;\n\nvar _require$codes = require('../errors').codes,\n ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK,\n ERR_STREAM_CANNOT_PIPE = _require$codes.ERR_STREAM_CANNOT_PIPE,\n ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED,\n ERR_STREAM_NULL_VALUES = _require$codes.ERR_STREAM_NULL_VALUES,\n ERR_STREAM_WRITE_AFTER_END = _require$codes.ERR_STREAM_WRITE_AFTER_END,\n ERR_UNKNOWN_ENCODING = _require$codes.ERR_UNKNOWN_ENCODING;\n\nvar errorOrDestroy = destroyImpl.errorOrDestroy;\n\nrequire('inherits')(Writable, Stream);\n\nfunction nop() {}\n\nfunction WritableState(options, stream, isDuplex) {\n Duplex = Duplex || require('./_stream_duplex');\n options = options || {}; // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream,\n // e.g. options.readableObjectMode vs. options.writableObjectMode, etc.\n\n if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex; // object stream flag to indicate whether or not this stream\n // contains buffers or objects.\n\n this.objectMode = !!options.objectMode;\n if (isDuplex) this.objectMode = this.objectMode || !!options.writableObjectMode; // the point at which write() starts returning false\n // Note: 0 is a valid value, means that we always return false if\n // the entire buffer is not flushed immediately on write()\n\n this.highWaterMark = getHighWaterMark(this, options, 'writableHighWaterMark', isDuplex); // if _final has been called\n\n this.finalCalled = false; // drain event flag.\n\n this.needDrain = false; // at the start of calling end()\n\n this.ending = false; // when end() has been called, and returned\n\n this.ended = false; // when 'finish' is emitted\n\n this.finished = false; // has it been destroyed\n\n this.destroyed = false; // should we decode strings into buffers before passing to _write?\n // this is here so that some node-core streams can optimize string\n // handling at a lower level.\n\n var noDecode = options.decodeStrings === false;\n this.decodeStrings = !noDecode; // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n\n this.defaultEncoding = options.defaultEncoding || 'utf8'; // not an actual buffer we keep track of, but a measurement\n // of how much we're waiting to get pushed to some underlying\n // socket or file.\n\n this.length = 0; // a flag to see when we're in the middle of a write.\n\n this.writing = false; // when true all writes will be buffered until .uncork() call\n\n this.corked = 0; // a flag to be able to tell if the onwrite cb is called immediately,\n // or on a later tick. We set this to true at first, because any\n // actions that shouldn't happen until \"later\" should generally also\n // not happen before the first write call.\n\n this.sync = true; // a flag to know if we're processing previously buffered items, which\n // may call the _write() callback in the same tick, so that we don't\n // end up in an overlapped onwrite situation.\n\n this.bufferProcessing = false; // the callback that's passed to _write(chunk,cb)\n\n this.onwrite = function (er) {\n onwrite(stream, er);\n }; // the callback that the user supplies to write(chunk,encoding,cb)\n\n\n this.writecb = null; // the amount that is being written when _write is called.\n\n this.writelen = 0;\n this.bufferedRequest = null;\n this.lastBufferedRequest = null; // number of pending user-supplied write callbacks\n // this must be 0 before 'finish' can be emitted\n\n this.pendingcb = 0; // emit prefinish if the only thing we're waiting for is _write cbs\n // This is relevant for synchronous Transform streams\n\n this.prefinished = false; // True if the error was already emitted and should not be thrown again\n\n this.errorEmitted = false; // Should close be emitted on destroy. Defaults to true.\n\n this.emitClose = options.emitClose !== false; // Should .destroy() be called after 'finish' (and potentially 'end')\n\n this.autoDestroy = !!options.autoDestroy; // count buffered requests\n\n this.bufferedRequestCount = 0; // allocate the first CorkedRequest, there is always\n // one allocated and free to use, and we maintain at most two\n\n this.corkedRequestsFree = new CorkedRequest(this);\n}\n\nWritableState.prototype.getBuffer = function getBuffer() {\n var current = this.bufferedRequest;\n var out = [];\n\n while (current) {\n out.push(current);\n current = current.next;\n }\n\n return out;\n};\n\n(function () {\n try {\n Object.defineProperty(WritableState.prototype, 'buffer', {\n get: internalUtil.deprecate(function writableStateBufferGetter() {\n return this.getBuffer();\n }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.', 'DEP0003')\n });\n } catch (_) {}\n})(); // Test _writableState for inheritance to account for Duplex streams,\n// whose prototype chain only points to Readable.\n\n\nvar realHasInstance;\n\nif (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') {\n realHasInstance = Function.prototype[Symbol.hasInstance];\n Object.defineProperty(Writable, Symbol.hasInstance, {\n value: function value(object) {\n if (realHasInstance.call(this, object)) return true;\n if (this !== Writable) return false;\n return object && object._writableState instanceof WritableState;\n }\n });\n} else {\n realHasInstance = function realHasInstance(object) {\n return object instanceof this;\n };\n}\n\nfunction Writable(options) {\n Duplex = Duplex || require('./_stream_duplex'); // Writable ctor is applied to Duplexes, too.\n // `realHasInstance` is necessary because using plain `instanceof`\n // would return false, as no `_writableState` property is attached.\n // Trying to use the custom `instanceof` for Writable here will also break the\n // Node.js LazyTransform implementation, which has a non-trivial getter for\n // `_writableState` that would lead to infinite recursion.\n // Checking for a Stream.Duplex instance is faster here instead of inside\n // the WritableState constructor, at least with V8 6.5\n\n var isDuplex = this instanceof Duplex;\n if (!isDuplex && !realHasInstance.call(Writable, this)) return new Writable(options);\n this._writableState = new WritableState(options, this, isDuplex); // legacy.\n\n this.writable = true;\n\n if (options) {\n if (typeof options.write === 'function') this._write = options.write;\n if (typeof options.writev === 'function') this._writev = options.writev;\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n if (typeof options.final === 'function') this._final = options.final;\n }\n\n Stream.call(this);\n} // Otherwise people can pipe Writable streams, which is just wrong.\n\n\nWritable.prototype.pipe = function () {\n errorOrDestroy(this, new ERR_STREAM_CANNOT_PIPE());\n};\n\nfunction writeAfterEnd(stream, cb) {\n var er = new ERR_STREAM_WRITE_AFTER_END(); // TODO: defer error events consistently everywhere, not just the cb\n\n errorOrDestroy(stream, er);\n process.nextTick(cb, er);\n} // Checks that a user-supplied chunk is valid, especially for the particular\n// mode the stream is in. Currently this means that `null` is never accepted\n// and undefined/non-string values are only allowed in object mode.\n\n\nfunction validChunk(stream, state, chunk, cb) {\n var er;\n\n if (chunk === null) {\n er = new ERR_STREAM_NULL_VALUES();\n } else if (typeof chunk !== 'string' && !state.objectMode) {\n er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer'], chunk);\n }\n\n if (er) {\n errorOrDestroy(stream, er);\n process.nextTick(cb, er);\n return false;\n }\n\n return true;\n}\n\nWritable.prototype.write = function (chunk, encoding, cb) {\n var state = this._writableState;\n var ret = false;\n\n var isBuf = !state.objectMode && _isUint8Array(chunk);\n\n if (isBuf && !Buffer.isBuffer(chunk)) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n\n if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n\n if (isBuf) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding;\n if (typeof cb !== 'function') cb = nop;\n if (state.ending) writeAfterEnd(this, cb);else if (isBuf || validChunk(this, state, chunk, cb)) {\n state.pendingcb++;\n ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb);\n }\n return ret;\n};\n\nWritable.prototype.cork = function () {\n this._writableState.corked++;\n};\n\nWritable.prototype.uncork = function () {\n var state = this._writableState;\n\n if (state.corked) {\n state.corked--;\n if (!state.writing && !state.corked && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);\n }\n};\n\nWritable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {\n // node::ParseEncoding() requires lower case.\n if (typeof encoding === 'string') encoding = encoding.toLowerCase();\n if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'raw'].indexOf((encoding + '').toLowerCase()) > -1)) throw new ERR_UNKNOWN_ENCODING(encoding);\n this._writableState.defaultEncoding = encoding;\n return this;\n};\n\nObject.defineProperty(Writable.prototype, 'writableBuffer', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState && this._writableState.getBuffer();\n }\n});\n\nfunction decodeChunk(state, chunk, encoding) {\n if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') {\n chunk = Buffer.from(chunk, encoding);\n }\n\n return chunk;\n}\n\nObject.defineProperty(Writable.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.highWaterMark;\n }\n}); // if we're already writing something, then just put this\n// in the queue, and wait our turn. Otherwise, call _write\n// If we return false, then we need a drain event, so set that flag.\n\nfunction writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) {\n if (!isBuf) {\n var newChunk = decodeChunk(state, chunk, encoding);\n\n if (chunk !== newChunk) {\n isBuf = true;\n encoding = 'buffer';\n chunk = newChunk;\n }\n }\n\n var len = state.objectMode ? 1 : chunk.length;\n state.length += len;\n var ret = state.length < state.highWaterMark; // we must ensure that previous needDrain will not be reset to false.\n\n if (!ret) state.needDrain = true;\n\n if (state.writing || state.corked) {\n var last = state.lastBufferedRequest;\n state.lastBufferedRequest = {\n chunk: chunk,\n encoding: encoding,\n isBuf: isBuf,\n callback: cb,\n next: null\n };\n\n if (last) {\n last.next = state.lastBufferedRequest;\n } else {\n state.bufferedRequest = state.lastBufferedRequest;\n }\n\n state.bufferedRequestCount += 1;\n } else {\n doWrite(stream, state, false, len, chunk, encoding, cb);\n }\n\n return ret;\n}\n\nfunction doWrite(stream, state, writev, len, chunk, encoding, cb) {\n state.writelen = len;\n state.writecb = cb;\n state.writing = true;\n state.sync = true;\n if (state.destroyed) state.onwrite(new ERR_STREAM_DESTROYED('write'));else if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite);\n state.sync = false;\n}\n\nfunction onwriteError(stream, state, sync, er, cb) {\n --state.pendingcb;\n\n if (sync) {\n // defer the callback if we are being called synchronously\n // to avoid piling up things on the stack\n process.nextTick(cb, er); // this can emit finish, and it will always happen\n // after error\n\n process.nextTick(finishMaybe, stream, state);\n stream._writableState.errorEmitted = true;\n errorOrDestroy(stream, er);\n } else {\n // the caller expect this to happen before if\n // it is async\n cb(er);\n stream._writableState.errorEmitted = true;\n errorOrDestroy(stream, er); // this can emit finish, but finish must\n // always follow error\n\n finishMaybe(stream, state);\n }\n}\n\nfunction onwriteStateUpdate(state) {\n state.writing = false;\n state.writecb = null;\n state.length -= state.writelen;\n state.writelen = 0;\n}\n\nfunction onwrite(stream, er) {\n var state = stream._writableState;\n var sync = state.sync;\n var cb = state.writecb;\n if (typeof cb !== 'function') throw new ERR_MULTIPLE_CALLBACK();\n onwriteStateUpdate(state);\n if (er) onwriteError(stream, state, sync, er, cb);else {\n // Check if we're actually ready to finish, but don't emit yet\n var finished = needFinish(state) || stream.destroyed;\n\n if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {\n clearBuffer(stream, state);\n }\n\n if (sync) {\n process.nextTick(afterWrite, stream, state, finished, cb);\n } else {\n afterWrite(stream, state, finished, cb);\n }\n }\n}\n\nfunction afterWrite(stream, state, finished, cb) {\n if (!finished) onwriteDrain(stream, state);\n state.pendingcb--;\n cb();\n finishMaybe(stream, state);\n} // Must force callback to be called on nextTick, so that we don't\n// emit 'drain' before the write() consumer gets the 'false' return\n// value, and has a chance to attach a 'drain' listener.\n\n\nfunction onwriteDrain(stream, state) {\n if (state.length === 0 && state.needDrain) {\n state.needDrain = false;\n stream.emit('drain');\n }\n} // if there's something in the buffer waiting, then process it\n\n\nfunction clearBuffer(stream, state) {\n state.bufferProcessing = true;\n var entry = state.bufferedRequest;\n\n if (stream._writev && entry && entry.next) {\n // Fast case, write everything using _writev()\n var l = state.bufferedRequestCount;\n var buffer = new Array(l);\n var holder = state.corkedRequestsFree;\n holder.entry = entry;\n var count = 0;\n var allBuffers = true;\n\n while (entry) {\n buffer[count] = entry;\n if (!entry.isBuf) allBuffers = false;\n entry = entry.next;\n count += 1;\n }\n\n buffer.allBuffers = allBuffers;\n doWrite(stream, state, true, state.length, buffer, '', holder.finish); // doWrite is almost always async, defer these to save a bit of time\n // as the hot path ends with doWrite\n\n state.pendingcb++;\n state.lastBufferedRequest = null;\n\n if (holder.next) {\n state.corkedRequestsFree = holder.next;\n holder.next = null;\n } else {\n state.corkedRequestsFree = new CorkedRequest(state);\n }\n\n state.bufferedRequestCount = 0;\n } else {\n // Slow case, write chunks one-by-one\n while (entry) {\n var chunk = entry.chunk;\n var encoding = entry.encoding;\n var cb = entry.callback;\n var len = state.objectMode ? 1 : chunk.length;\n doWrite(stream, state, false, len, chunk, encoding, cb);\n entry = entry.next;\n state.bufferedRequestCount--; // if we didn't call the onwrite immediately, then\n // it means that we need to wait until it does.\n // also, that means that the chunk and cb are currently\n // being processed, so move the buffer counter past them.\n\n if (state.writing) {\n break;\n }\n }\n\n if (entry === null) state.lastBufferedRequest = null;\n }\n\n state.bufferedRequest = entry;\n state.bufferProcessing = false;\n}\n\nWritable.prototype._write = function (chunk, encoding, cb) {\n cb(new ERR_METHOD_NOT_IMPLEMENTED('_write()'));\n};\n\nWritable.prototype._writev = null;\n\nWritable.prototype.end = function (chunk, encoding, cb) {\n var state = this._writableState;\n\n if (typeof chunk === 'function') {\n cb = chunk;\n chunk = null;\n encoding = null;\n } else if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n\n if (chunk !== null && chunk !== undefined) this.write(chunk, encoding); // .end() fully uncorks\n\n if (state.corked) {\n state.corked = 1;\n this.uncork();\n } // ignore unnecessary end() calls.\n\n\n if (!state.ending) endWritable(this, state, cb);\n return this;\n};\n\nObject.defineProperty(Writable.prototype, 'writableLength', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.length;\n }\n});\n\nfunction needFinish(state) {\n return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;\n}\n\nfunction callFinal(stream, state) {\n stream._final(function (err) {\n state.pendingcb--;\n\n if (err) {\n errorOrDestroy(stream, err);\n }\n\n state.prefinished = true;\n stream.emit('prefinish');\n finishMaybe(stream, state);\n });\n}\n\nfunction prefinish(stream, state) {\n if (!state.prefinished && !state.finalCalled) {\n if (typeof stream._final === 'function' && !state.destroyed) {\n state.pendingcb++;\n state.finalCalled = true;\n process.nextTick(callFinal, stream, state);\n } else {\n state.prefinished = true;\n stream.emit('prefinish');\n }\n }\n}\n\nfunction finishMaybe(stream, state) {\n var need = needFinish(state);\n\n if (need) {\n prefinish(stream, state);\n\n if (state.pendingcb === 0) {\n state.finished = true;\n stream.emit('finish');\n\n if (state.autoDestroy) {\n // In case of duplex streams we need a way to detect\n // if the readable side is ready for autoDestroy as well\n var rState = stream._readableState;\n\n if (!rState || rState.autoDestroy && rState.endEmitted) {\n stream.destroy();\n }\n }\n }\n }\n\n return need;\n}\n\nfunction endWritable(stream, state, cb) {\n state.ending = true;\n finishMaybe(stream, state);\n\n if (cb) {\n if (state.finished) process.nextTick(cb);else stream.once('finish', cb);\n }\n\n state.ended = true;\n stream.writable = false;\n}\n\nfunction onCorkedFinish(corkReq, state, err) {\n var entry = corkReq.entry;\n corkReq.entry = null;\n\n while (entry) {\n var cb = entry.callback;\n state.pendingcb--;\n cb(err);\n entry = entry.next;\n } // reuse the free corkReq.\n\n\n state.corkedRequestsFree.next = corkReq;\n}\n\nObject.defineProperty(Writable.prototype, 'destroyed', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n if (this._writableState === undefined) {\n return false;\n }\n\n return this._writableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._writableState) {\n return;\n } // backward compatibility, the user is explicitly\n // managing destroyed\n\n\n this._writableState.destroyed = value;\n }\n});\nWritable.prototype.destroy = destroyImpl.destroy;\nWritable.prototype._undestroy = destroyImpl.undestroy;\n\nWritable.prototype._destroy = function (err, cb) {\n cb(err);\n};", "// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n// a duplex stream is just a stream that is both readable and writable.\n// Since JS doesn't have multiple prototypal inheritance, this class\n// prototypally inherits from Readable, and then parasitically from\n// Writable.\n'use strict';\n/**/\n\nvar objectKeys = Object.keys || function (obj) {\n var keys = [];\n\n for (var key in obj) {\n keys.push(key);\n }\n\n return keys;\n};\n/**/\n\n\nmodule.exports = Duplex;\n\nvar Readable = require('./_stream_readable');\n\nvar Writable = require('./_stream_writable');\n\nrequire('inherits')(Duplex, Readable);\n\n{\n // Allow the keys array to be GC'ed.\n var keys = objectKeys(Writable.prototype);\n\n for (var v = 0; v < keys.length; v++) {\n var method = keys[v];\n if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method];\n }\n}\n\nfunction Duplex(options) {\n if (!(this instanceof Duplex)) return new Duplex(options);\n Readable.call(this, options);\n Writable.call(this, options);\n this.allowHalfOpen = true;\n\n if (options) {\n if (options.readable === false) this.readable = false;\n if (options.writable === false) this.writable = false;\n\n if (options.allowHalfOpen === false) {\n this.allowHalfOpen = false;\n this.once('end', onend);\n }\n }\n}\n\nObject.defineProperty(Duplex.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.highWaterMark;\n }\n});\nObject.defineProperty(Duplex.prototype, 'writableBuffer', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState && this._writableState.getBuffer();\n }\n});\nObject.defineProperty(Duplex.prototype, 'writableLength', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.length;\n }\n}); // the no-half-open enforcer\n\nfunction onend() {\n // If the writable side ended, then we're ok.\n if (this._writableState.ended) return; // no more data can be written.\n // But allow more writes to happen in this tick.\n\n process.nextTick(onEndNT, this);\n}\n\nfunction onEndNT(self) {\n self.end();\n}\n\nObject.defineProperty(Duplex.prototype, 'destroyed', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n if (this._readableState === undefined || this._writableState === undefined) {\n return false;\n }\n\n return this._readableState.destroyed && this._writableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (this._readableState === undefined || this._writableState === undefined) {\n return;\n } // backward compatibility, the user is explicitly\n // managing destroyed\n\n\n this._readableState.destroyed = value;\n this._writableState.destroyed = value;\n }\n});", "// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\n/**/\n\nvar Buffer = require('safe-buffer').Buffer;\n/**/\n\nvar isEncoding = Buffer.isEncoding || function (encoding) {\n encoding = '' + encoding;\n switch (encoding && encoding.toLowerCase()) {\n case 'hex':case 'utf8':case 'utf-8':case 'ascii':case 'binary':case 'base64':case 'ucs2':case 'ucs-2':case 'utf16le':case 'utf-16le':case 'raw':\n return true;\n default:\n return false;\n }\n};\n\nfunction _normalizeEncoding(enc) {\n if (!enc) return 'utf8';\n var retried;\n while (true) {\n switch (enc) {\n case 'utf8':\n case 'utf-8':\n return 'utf8';\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return 'utf16le';\n case 'latin1':\n case 'binary':\n return 'latin1';\n case 'base64':\n case 'ascii':\n case 'hex':\n return enc;\n default:\n if (retried) return; // undefined\n enc = ('' + enc).toLowerCase();\n retried = true;\n }\n }\n};\n\n// Do not cache `Buffer.isEncoding` when checking encoding names as some\n// modules monkey-patch it to support additional encodings\nfunction normalizeEncoding(enc) {\n var nenc = _normalizeEncoding(enc);\n if (typeof nenc !== 'string' && (Buffer.isEncoding === isEncoding || !isEncoding(enc))) throw new Error('Unknown encoding: ' + enc);\n return nenc || enc;\n}\n\n// StringDecoder provides an interface for efficiently splitting a series of\n// buffers into a series of JS strings without breaking apart multi-byte\n// characters.\nexports.StringDecoder = StringDecoder;\nfunction StringDecoder(encoding) {\n this.encoding = normalizeEncoding(encoding);\n var nb;\n switch (this.encoding) {\n case 'utf16le':\n this.text = utf16Text;\n this.end = utf16End;\n nb = 4;\n break;\n case 'utf8':\n this.fillLast = utf8FillLast;\n nb = 4;\n break;\n case 'base64':\n this.text = base64Text;\n this.end = base64End;\n nb = 3;\n break;\n default:\n this.write = simpleWrite;\n this.end = simpleEnd;\n return;\n }\n this.lastNeed = 0;\n this.lastTotal = 0;\n this.lastChar = Buffer.allocUnsafe(nb);\n}\n\nStringDecoder.prototype.write = function (buf) {\n if (buf.length === 0) return '';\n var r;\n var i;\n if (this.lastNeed) {\n r = this.fillLast(buf);\n if (r === undefined) return '';\n i = this.lastNeed;\n this.lastNeed = 0;\n } else {\n i = 0;\n }\n if (i < buf.length) return r ? r + this.text(buf, i) : this.text(buf, i);\n return r || '';\n};\n\nStringDecoder.prototype.end = utf8End;\n\n// Returns only complete characters in a Buffer\nStringDecoder.prototype.text = utf8Text;\n\n// Attempts to complete a partial non-UTF-8 character using bytes from a Buffer\nStringDecoder.prototype.fillLast = function (buf) {\n if (this.lastNeed <= buf.length) {\n buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, this.lastNeed);\n return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n }\n buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, buf.length);\n this.lastNeed -= buf.length;\n};\n\n// Checks the type of a UTF-8 byte, whether it's ASCII, a leading byte, or a\n// continuation byte. If an invalid byte is detected, -2 is returned.\nfunction utf8CheckByte(byte) {\n if (byte <= 0x7F) return 0;else if (byte >> 5 === 0x06) return 2;else if (byte >> 4 === 0x0E) return 3;else if (byte >> 3 === 0x1E) return 4;\n return byte >> 6 === 0x02 ? -1 : -2;\n}\n\n// Checks at most 3 bytes at the end of a Buffer in order to detect an\n// incomplete multi-byte UTF-8 character. The total number of bytes (2, 3, or 4)\n// needed to complete the UTF-8 character (if applicable) are returned.\nfunction utf8CheckIncomplete(self, buf, i) {\n var j = buf.length - 1;\n if (j < i) return 0;\n var nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) self.lastNeed = nb - 1;\n return nb;\n }\n if (--j < i || nb === -2) return 0;\n nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) self.lastNeed = nb - 2;\n return nb;\n }\n if (--j < i || nb === -2) return 0;\n nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) {\n if (nb === 2) nb = 0;else self.lastNeed = nb - 3;\n }\n return nb;\n }\n return 0;\n}\n\n// Validates as many continuation bytes for a multi-byte UTF-8 character as\n// needed or are available. If we see a non-continuation byte where we expect\n// one, we \"replace\" the validated continuation bytes we've seen so far with\n// a single UTF-8 replacement character ('\\ufffd'), to match v8's UTF-8 decoding\n// behavior. The continuation byte check is included three times in the case\n// where all of the continuation bytes for a character exist in the same buffer.\n// It is also done this way as a slight performance increase instead of using a\n// loop.\nfunction utf8CheckExtraBytes(self, buf, p) {\n if ((buf[0] & 0xC0) !== 0x80) {\n self.lastNeed = 0;\n return '\\ufffd';\n }\n if (self.lastNeed > 1 && buf.length > 1) {\n if ((buf[1] & 0xC0) !== 0x80) {\n self.lastNeed = 1;\n return '\\ufffd';\n }\n if (self.lastNeed > 2 && buf.length > 2) {\n if ((buf[2] & 0xC0) !== 0x80) {\n self.lastNeed = 2;\n return '\\ufffd';\n }\n }\n }\n}\n\n// Attempts to complete a multi-byte UTF-8 character using bytes from a Buffer.\nfunction utf8FillLast(buf) {\n var p = this.lastTotal - this.lastNeed;\n var r = utf8CheckExtraBytes(this, buf, p);\n if (r !== undefined) return r;\n if (this.lastNeed <= buf.length) {\n buf.copy(this.lastChar, p, 0, this.lastNeed);\n return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n }\n buf.copy(this.lastChar, p, 0, buf.length);\n this.lastNeed -= buf.length;\n}\n\n// Returns all complete UTF-8 characters in a Buffer. If the Buffer ended on a\n// partial character, the character's bytes are buffered until the required\n// number of bytes are available.\nfunction utf8Text(buf, i) {\n var total = utf8CheckIncomplete(this, buf, i);\n if (!this.lastNeed) return buf.toString('utf8', i);\n this.lastTotal = total;\n var end = buf.length - (total - this.lastNeed);\n buf.copy(this.lastChar, 0, end);\n return buf.toString('utf8', i, end);\n}\n\n// For UTF-8, a replacement character is added when ending on a partial\n// character.\nfunction utf8End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) return r + '\\ufffd';\n return r;\n}\n\n// UTF-16LE typically needs two bytes per character, but even if we have an even\n// number of bytes available, we need to check if we end on a leading/high\n// surrogate. In that case, we need to wait for the next two bytes in order to\n// decode the last character properly.\nfunction utf16Text(buf, i) {\n if ((buf.length - i) % 2 === 0) {\n var r = buf.toString('utf16le', i);\n if (r) {\n var c = r.charCodeAt(r.length - 1);\n if (c >= 0xD800 && c <= 0xDBFF) {\n this.lastNeed = 2;\n this.lastTotal = 4;\n this.lastChar[0] = buf[buf.length - 2];\n this.lastChar[1] = buf[buf.length - 1];\n return r.slice(0, -1);\n }\n }\n return r;\n }\n this.lastNeed = 1;\n this.lastTotal = 2;\n this.lastChar[0] = buf[buf.length - 1];\n return buf.toString('utf16le', i, buf.length - 1);\n}\n\n// For UTF-16LE we do not explicitly append special replacement characters if we\n// end on a partial character, we simply let v8 handle that.\nfunction utf16End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) {\n var end = this.lastTotal - this.lastNeed;\n return r + this.lastChar.toString('utf16le', 0, end);\n }\n return r;\n}\n\nfunction base64Text(buf, i) {\n var n = (buf.length - i) % 3;\n if (n === 0) return buf.toString('base64', i);\n this.lastNeed = 3 - n;\n this.lastTotal = 3;\n if (n === 1) {\n this.lastChar[0] = buf[buf.length - 1];\n } else {\n this.lastChar[0] = buf[buf.length - 2];\n this.lastChar[1] = buf[buf.length - 1];\n }\n return buf.toString('base64', i, buf.length - n);\n}\n\nfunction base64End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) return r + this.lastChar.toString('base64', 0, 3 - this.lastNeed);\n return r;\n}\n\n// Pass bytes on through for single-byte encodings (e.g. ascii, latin1, hex)\nfunction simpleWrite(buf) {\n return buf.toString(this.encoding);\n}\n\nfunction simpleEnd(buf) {\n return buf && buf.length ? this.write(buf) : '';\n}", "// Ported from https://github.com/mafintosh/end-of-stream with\n// permission from the author, Mathias Buus (@mafintosh).\n'use strict';\n\nvar ERR_STREAM_PREMATURE_CLOSE = require('../../../errors').codes.ERR_STREAM_PREMATURE_CLOSE;\n\nfunction once(callback) {\n var called = false;\n return function () {\n if (called) return;\n called = true;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n callback.apply(this, args);\n };\n}\n\nfunction noop() {}\n\nfunction isRequest(stream) {\n return stream.setHeader && typeof stream.abort === 'function';\n}\n\nfunction eos(stream, opts, callback) {\n if (typeof opts === 'function') return eos(stream, null, opts);\n if (!opts) opts = {};\n callback = once(callback || noop);\n var readable = opts.readable || opts.readable !== false && stream.readable;\n var writable = opts.writable || opts.writable !== false && stream.writable;\n\n var onlegacyfinish = function onlegacyfinish() {\n if (!stream.writable) onfinish();\n };\n\n var writableEnded = stream._writableState && stream._writableState.finished;\n\n var onfinish = function onfinish() {\n writable = false;\n writableEnded = true;\n if (!readable) callback.call(stream);\n };\n\n var readableEnded = stream._readableState && stream._readableState.endEmitted;\n\n var onend = function onend() {\n readable = false;\n readableEnded = true;\n if (!writable) callback.call(stream);\n };\n\n var onerror = function onerror(err) {\n callback.call(stream, err);\n };\n\n var onclose = function onclose() {\n var err;\n\n if (readable && !readableEnded) {\n if (!stream._readableState || !stream._readableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE();\n return callback.call(stream, err);\n }\n\n if (writable && !writableEnded) {\n if (!stream._writableState || !stream._writableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE();\n return callback.call(stream, err);\n }\n };\n\n var onrequest = function onrequest() {\n stream.req.on('finish', onfinish);\n };\n\n if (isRequest(stream)) {\n stream.on('complete', onfinish);\n stream.on('abort', onclose);\n if (stream.req) onrequest();else stream.on('request', onrequest);\n } else if (writable && !stream._writableState) {\n // legacy streams\n stream.on('end', onlegacyfinish);\n stream.on('close', onlegacyfinish);\n }\n\n stream.on('end', onend);\n stream.on('finish', onfinish);\n if (opts.error !== false) stream.on('error', onerror);\n stream.on('close', onclose);\n return function () {\n stream.removeListener('complete', onfinish);\n stream.removeListener('abort', onclose);\n stream.removeListener('request', onrequest);\n if (stream.req) stream.req.removeListener('finish', onfinish);\n stream.removeListener('end', onlegacyfinish);\n stream.removeListener('close', onlegacyfinish);\n stream.removeListener('finish', onfinish);\n stream.removeListener('end', onend);\n stream.removeListener('error', onerror);\n stream.removeListener('close', onclose);\n };\n}\n\nmodule.exports = eos;", "'use strict';\n\nvar _Object$setPrototypeO;\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar finished = require('./end-of-stream');\n\nvar kLastResolve = Symbol('lastResolve');\nvar kLastReject = Symbol('lastReject');\nvar kError = Symbol('error');\nvar kEnded = Symbol('ended');\nvar kLastPromise = Symbol('lastPromise');\nvar kHandlePromise = Symbol('handlePromise');\nvar kStream = Symbol('stream');\n\nfunction createIterResult(value, done) {\n return {\n value: value,\n done: done\n };\n}\n\nfunction readAndResolve(iter) {\n var resolve = iter[kLastResolve];\n\n if (resolve !== null) {\n var data = iter[kStream].read(); // we defer if data is null\n // we can be expecting either 'end' or\n // 'error'\n\n if (data !== null) {\n iter[kLastPromise] = null;\n iter[kLastResolve] = null;\n iter[kLastReject] = null;\n resolve(createIterResult(data, false));\n }\n }\n}\n\nfunction onReadable(iter) {\n // we wait for the next tick, because it might\n // emit an error with process.nextTick\n process.nextTick(readAndResolve, iter);\n}\n\nfunction wrapForNext(lastPromise, iter) {\n return function (resolve, reject) {\n lastPromise.then(function () {\n if (iter[kEnded]) {\n resolve(createIterResult(undefined, true));\n return;\n }\n\n iter[kHandlePromise](resolve, reject);\n }, reject);\n };\n}\n\nvar AsyncIteratorPrototype = Object.getPrototypeOf(function () {});\nvar ReadableStreamAsyncIteratorPrototype = Object.setPrototypeOf((_Object$setPrototypeO = {\n get stream() {\n return this[kStream];\n },\n\n next: function next() {\n var _this = this;\n\n // if we have detected an error in the meanwhile\n // reject straight away\n var error = this[kError];\n\n if (error !== null) {\n return Promise.reject(error);\n }\n\n if (this[kEnded]) {\n return Promise.resolve(createIterResult(undefined, true));\n }\n\n if (this[kStream].destroyed) {\n // We need to defer via nextTick because if .destroy(err) is\n // called, the error will be emitted via nextTick, and\n // we cannot guarantee that there is no error lingering around\n // waiting to be emitted.\n return new Promise(function (resolve, reject) {\n process.nextTick(function () {\n if (_this[kError]) {\n reject(_this[kError]);\n } else {\n resolve(createIterResult(undefined, true));\n }\n });\n });\n } // if we have multiple next() calls\n // we will wait for the previous Promise to finish\n // this logic is optimized to support for await loops,\n // where next() is only called once at a time\n\n\n var lastPromise = this[kLastPromise];\n var promise;\n\n if (lastPromise) {\n promise = new Promise(wrapForNext(lastPromise, this));\n } else {\n // fast path needed to support multiple this.push()\n // without triggering the next() queue\n var data = this[kStream].read();\n\n if (data !== null) {\n return Promise.resolve(createIterResult(data, false));\n }\n\n promise = new Promise(this[kHandlePromise]);\n }\n\n this[kLastPromise] = promise;\n return promise;\n }\n}, _defineProperty(_Object$setPrototypeO, Symbol.asyncIterator, function () {\n return this;\n}), _defineProperty(_Object$setPrototypeO, \"return\", function _return() {\n var _this2 = this;\n\n // destroy(err, cb) is a private API\n // we can guarantee we have that here, because we control the\n // Readable class this is attached to\n return new Promise(function (resolve, reject) {\n _this2[kStream].destroy(null, function (err) {\n if (err) {\n reject(err);\n return;\n }\n\n resolve(createIterResult(undefined, true));\n });\n });\n}), _Object$setPrototypeO), AsyncIteratorPrototype);\n\nvar createReadableStreamAsyncIterator = function createReadableStreamAsyncIterator(stream) {\n var _Object$create;\n\n var iterator = Object.create(ReadableStreamAsyncIteratorPrototype, (_Object$create = {}, _defineProperty(_Object$create, kStream, {\n value: stream,\n writable: true\n }), _defineProperty(_Object$create, kLastResolve, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kLastReject, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kError, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kEnded, {\n value: stream._readableState.endEmitted,\n writable: true\n }), _defineProperty(_Object$create, kHandlePromise, {\n value: function value(resolve, reject) {\n var data = iterator[kStream].read();\n\n if (data) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n resolve(createIterResult(data, false));\n } else {\n iterator[kLastResolve] = resolve;\n iterator[kLastReject] = reject;\n }\n },\n writable: true\n }), _Object$create));\n iterator[kLastPromise] = null;\n finished(stream, function (err) {\n if (err && err.code !== 'ERR_STREAM_PREMATURE_CLOSE') {\n var reject = iterator[kLastReject]; // reject if we are waiting for data in the Promise\n // returned by next() and store the error\n\n if (reject !== null) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n reject(err);\n }\n\n iterator[kError] = err;\n return;\n }\n\n var resolve = iterator[kLastResolve];\n\n if (resolve !== null) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n resolve(createIterResult(undefined, true));\n }\n\n iterator[kEnded] = true;\n });\n stream.on('readable', onReadable.bind(null, iterator));\n return iterator;\n};\n\nmodule.exports = createReadableStreamAsyncIterator;", "'use strict';\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar ERR_INVALID_ARG_TYPE = require('../../../errors').codes.ERR_INVALID_ARG_TYPE;\n\nfunction from(Readable, iterable, opts) {\n var iterator;\n\n if (iterable && typeof iterable.next === 'function') {\n iterator = iterable;\n } else if (iterable && iterable[Symbol.asyncIterator]) iterator = iterable[Symbol.asyncIterator]();else if (iterable && iterable[Symbol.iterator]) iterator = iterable[Symbol.iterator]();else throw new ERR_INVALID_ARG_TYPE('iterable', ['Iterable'], iterable);\n\n var readable = new Readable(_objectSpread({\n objectMode: true\n }, opts)); // Reading boolean to protect against _read\n // being called before last iteration completion.\n\n var reading = false;\n\n readable._read = function () {\n if (!reading) {\n reading = true;\n next();\n }\n };\n\n function next() {\n return _next2.apply(this, arguments);\n }\n\n function _next2() {\n _next2 = _asyncToGenerator(function* () {\n try {\n var _ref = yield iterator.next(),\n value = _ref.value,\n done = _ref.done;\n\n if (done) {\n readable.push(null);\n } else if (readable.push((yield value))) {\n next();\n } else {\n reading = false;\n }\n } catch (err) {\n readable.destroy(err);\n }\n });\n return _next2.apply(this, arguments);\n }\n\n return readable;\n}\n\nmodule.exports = from;", "// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n'use strict';\n\nmodule.exports = Readable;\n/**/\n\nvar Duplex;\n/**/\n\nReadable.ReadableState = ReadableState;\n/**/\n\nvar EE = require('events').EventEmitter;\n\nvar EElistenerCount = function EElistenerCount(emitter, type) {\n return emitter.listeners(type).length;\n};\n/**/\n\n/**/\n\n\nvar Stream = require('./internal/streams/stream');\n/**/\n\n\nvar Buffer = require('buffer').Buffer;\n\nvar OurUint8Array = global.Uint8Array || function () {};\n\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\n\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n/**/\n\n\nvar debugUtil = require('util');\n\nvar debug;\n\nif (debugUtil && debugUtil.debuglog) {\n debug = debugUtil.debuglog('stream');\n} else {\n debug = function debug() {};\n}\n/**/\n\n\nvar BufferList = require('./internal/streams/buffer_list');\n\nvar destroyImpl = require('./internal/streams/destroy');\n\nvar _require = require('./internal/streams/state'),\n getHighWaterMark = _require.getHighWaterMark;\n\nvar _require$codes = require('../errors').codes,\n ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,\n ERR_STREAM_PUSH_AFTER_EOF = _require$codes.ERR_STREAM_PUSH_AFTER_EOF,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_STREAM_UNSHIFT_AFTER_END_EVENT = _require$codes.ERR_STREAM_UNSHIFT_AFTER_END_EVENT; // Lazy loaded to improve the startup performance.\n\n\nvar StringDecoder;\nvar createReadableStreamAsyncIterator;\nvar from;\n\nrequire('inherits')(Readable, Stream);\n\nvar errorOrDestroy = destroyImpl.errorOrDestroy;\nvar kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume'];\n\nfunction prependListener(emitter, event, fn) {\n // Sadly this is not cacheable as some libraries bundle their own\n // event emitter implementation with them.\n if (typeof emitter.prependListener === 'function') return emitter.prependListener(event, fn); // This is a hack to make sure that our error handler is attached before any\n // userland ones. NEVER DO THIS. This is here only because this code needs\n // to continue to work with older versions of Node.js that do not include\n // the prependListener() method. The goal is to eventually remove this hack.\n\n if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (Array.isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]];\n}\n\nfunction ReadableState(options, stream, isDuplex) {\n Duplex = Duplex || require('./_stream_duplex');\n options = options || {}; // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream.\n // These options can be provided separately as readableXXX and writableXXX.\n\n if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex; // object stream flag. Used to make read(n) ignore n and to\n // make all the buffer merging and length checks go away\n\n this.objectMode = !!options.objectMode;\n if (isDuplex) this.objectMode = this.objectMode || !!options.readableObjectMode; // the point at which it stops calling _read() to fill the buffer\n // Note: 0 is a valid value, means \"don't call _read preemptively ever\"\n\n this.highWaterMark = getHighWaterMark(this, options, 'readableHighWaterMark', isDuplex); // A linked list is used to store data chunks instead of an array because the\n // linked list can remove elements from the beginning faster than\n // array.shift()\n\n this.buffer = new BufferList();\n this.length = 0;\n this.pipes = null;\n this.pipesCount = 0;\n this.flowing = null;\n this.ended = false;\n this.endEmitted = false;\n this.reading = false; // a flag to be able to tell if the event 'readable'/'data' is emitted\n // immediately, or on a later tick. We set this to true at first, because\n // any actions that shouldn't happen until \"later\" should generally also\n // not happen before the first read call.\n\n this.sync = true; // whenever we return null, then we set a flag to say\n // that we're awaiting a 'readable' event emission.\n\n this.needReadable = false;\n this.emittedReadable = false;\n this.readableListening = false;\n this.resumeScheduled = false;\n this.paused = true; // Should close be emitted on destroy. Defaults to true.\n\n this.emitClose = options.emitClose !== false; // Should .destroy() be called after 'end' (and potentially 'finish')\n\n this.autoDestroy = !!options.autoDestroy; // has it been destroyed\n\n this.destroyed = false; // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n\n this.defaultEncoding = options.defaultEncoding || 'utf8'; // the number of writers that are awaiting a drain event in .pipe()s\n\n this.awaitDrain = 0; // if true, a maybeReadMore has been scheduled\n\n this.readingMore = false;\n this.decoder = null;\n this.encoding = null;\n\n if (options.encoding) {\n if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n this.decoder = new StringDecoder(options.encoding);\n this.encoding = options.encoding;\n }\n}\n\nfunction Readable(options) {\n Duplex = Duplex || require('./_stream_duplex');\n if (!(this instanceof Readable)) return new Readable(options); // Checking for a Stream.Duplex instance is faster here instead of inside\n // the ReadableState constructor, at least with V8 6.5\n\n var isDuplex = this instanceof Duplex;\n this._readableState = new ReadableState(options, this, isDuplex); // legacy\n\n this.readable = true;\n\n if (options) {\n if (typeof options.read === 'function') this._read = options.read;\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n }\n\n Stream.call(this);\n}\n\nObject.defineProperty(Readable.prototype, 'destroyed', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n if (this._readableState === undefined) {\n return false;\n }\n\n return this._readableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._readableState) {\n return;\n } // backward compatibility, the user is explicitly\n // managing destroyed\n\n\n this._readableState.destroyed = value;\n }\n});\nReadable.prototype.destroy = destroyImpl.destroy;\nReadable.prototype._undestroy = destroyImpl.undestroy;\n\nReadable.prototype._destroy = function (err, cb) {\n cb(err);\n}; // Manually shove something into the read() buffer.\n// This returns true if the highWaterMark has not been hit yet,\n// similar to how Writable.write() returns true if you should\n// write() some more.\n\n\nReadable.prototype.push = function (chunk, encoding) {\n var state = this._readableState;\n var skipChunkCheck;\n\n if (!state.objectMode) {\n if (typeof chunk === 'string') {\n encoding = encoding || state.defaultEncoding;\n\n if (encoding !== state.encoding) {\n chunk = Buffer.from(chunk, encoding);\n encoding = '';\n }\n\n skipChunkCheck = true;\n }\n } else {\n skipChunkCheck = true;\n }\n\n return readableAddChunk(this, chunk, encoding, false, skipChunkCheck);\n}; // Unshift should *always* be something directly out of read()\n\n\nReadable.prototype.unshift = function (chunk) {\n return readableAddChunk(this, chunk, null, true, false);\n};\n\nfunction readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) {\n debug('readableAddChunk', chunk);\n var state = stream._readableState;\n\n if (chunk === null) {\n state.reading = false;\n onEofChunk(stream, state);\n } else {\n var er;\n if (!skipChunkCheck) er = chunkInvalid(state, chunk);\n\n if (er) {\n errorOrDestroy(stream, er);\n } else if (state.objectMode || chunk && chunk.length > 0) {\n if (typeof chunk !== 'string' && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer.prototype) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n\n if (addToFront) {\n if (state.endEmitted) errorOrDestroy(stream, new ERR_STREAM_UNSHIFT_AFTER_END_EVENT());else addChunk(stream, state, chunk, true);\n } else if (state.ended) {\n errorOrDestroy(stream, new ERR_STREAM_PUSH_AFTER_EOF());\n } else if (state.destroyed) {\n return false;\n } else {\n state.reading = false;\n\n if (state.decoder && !encoding) {\n chunk = state.decoder.write(chunk);\n if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false);else maybeReadMore(stream, state);\n } else {\n addChunk(stream, state, chunk, false);\n }\n }\n } else if (!addToFront) {\n state.reading = false;\n maybeReadMore(stream, state);\n }\n } // We can push more data if we are below the highWaterMark.\n // Also, if we have no data yet, we can stand some more bytes.\n // This is to work around cases where hwm=0, such as the repl.\n\n\n return !state.ended && (state.length < state.highWaterMark || state.length === 0);\n}\n\nfunction addChunk(stream, state, chunk, addToFront) {\n if (state.flowing && state.length === 0 && !state.sync) {\n state.awaitDrain = 0;\n stream.emit('data', chunk);\n } else {\n // update the buffer info.\n state.length += state.objectMode ? 1 : chunk.length;\n if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk);\n if (state.needReadable) emitReadable(stream);\n }\n\n maybeReadMore(stream, state);\n}\n\nfunction chunkInvalid(state, chunk) {\n var er;\n\n if (!_isUint8Array(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {\n er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer', 'Uint8Array'], chunk);\n }\n\n return er;\n}\n\nReadable.prototype.isPaused = function () {\n return this._readableState.flowing === false;\n}; // backwards compatibility.\n\n\nReadable.prototype.setEncoding = function (enc) {\n if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n var decoder = new StringDecoder(enc);\n this._readableState.decoder = decoder; // If setEncoding(null), decoder.encoding equals utf8\n\n this._readableState.encoding = this._readableState.decoder.encoding; // Iterate over current buffer to convert already stored Buffers:\n\n var p = this._readableState.buffer.head;\n var content = '';\n\n while (p !== null) {\n content += decoder.write(p.data);\n p = p.next;\n }\n\n this._readableState.buffer.clear();\n\n if (content !== '') this._readableState.buffer.push(content);\n this._readableState.length = content.length;\n return this;\n}; // Don't raise the hwm > 1GB\n\n\nvar MAX_HWM = 0x40000000;\n\nfunction computeNewHighWaterMark(n) {\n if (n >= MAX_HWM) {\n // TODO(ronag): Throw ERR_VALUE_OUT_OF_RANGE.\n n = MAX_HWM;\n } else {\n // Get the next highest power of 2 to prevent increasing hwm excessively in\n // tiny amounts\n n--;\n n |= n >>> 1;\n n |= n >>> 2;\n n |= n >>> 4;\n n |= n >>> 8;\n n |= n >>> 16;\n n++;\n }\n\n return n;\n} // This function is designed to be inlinable, so please take care when making\n// changes to the function body.\n\n\nfunction howMuchToRead(n, state) {\n if (n <= 0 || state.length === 0 && state.ended) return 0;\n if (state.objectMode) return 1;\n\n if (n !== n) {\n // Only flow one buffer at a time\n if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length;\n } // If we're asking for more than the current hwm, then raise the hwm.\n\n\n if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);\n if (n <= state.length) return n; // Don't have enough\n\n if (!state.ended) {\n state.needReadable = true;\n return 0;\n }\n\n return state.length;\n} // you can override either this method, or the async _read(n) below.\n\n\nReadable.prototype.read = function (n) {\n debug('read', n);\n n = parseInt(n, 10);\n var state = this._readableState;\n var nOrig = n;\n if (n !== 0) state.emittedReadable = false; // if we're doing read(0) to trigger a readable event, but we\n // already have a bunch of data in the buffer, then just trigger\n // the 'readable' event and move on.\n\n if (n === 0 && state.needReadable && ((state.highWaterMark !== 0 ? state.length >= state.highWaterMark : state.length > 0) || state.ended)) {\n debug('read: emitReadable', state.length, state.ended);\n if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this);\n return null;\n }\n\n n = howMuchToRead(n, state); // if we've ended, and we're now clear, then finish it up.\n\n if (n === 0 && state.ended) {\n if (state.length === 0) endReadable(this);\n return null;\n } // All the actual chunk generation logic needs to be\n // *below* the call to _read. The reason is that in certain\n // synthetic stream cases, such as passthrough streams, _read\n // may be a completely synchronous operation which may change\n // the state of the read buffer, providing enough data when\n // before there was *not* enough.\n //\n // So, the steps are:\n // 1. Figure out what the state of things will be after we do\n // a read from the buffer.\n //\n // 2. If that resulting state will trigger a _read, then call _read.\n // Note that this may be asynchronous, or synchronous. Yes, it is\n // deeply ugly to write APIs this way, but that still doesn't mean\n // that the Readable class should behave improperly, as streams are\n // designed to be sync/async agnostic.\n // Take note if the _read call is sync or async (ie, if the read call\n // has returned yet), so that we know whether or not it's safe to emit\n // 'readable' etc.\n //\n // 3. Actually pull the requested chunks out of the buffer and return.\n // if we need a readable event, then we need to do some reading.\n\n\n var doRead = state.needReadable;\n debug('need readable', doRead); // if we currently have less than the highWaterMark, then also read some\n\n if (state.length === 0 || state.length - n < state.highWaterMark) {\n doRead = true;\n debug('length less than watermark', doRead);\n } // however, if we've ended, then there's no point, and if we're already\n // reading, then it's unnecessary.\n\n\n if (state.ended || state.reading) {\n doRead = false;\n debug('reading or ended', doRead);\n } else if (doRead) {\n debug('do read');\n state.reading = true;\n state.sync = true; // if the length is currently zero, then we *need* a readable event.\n\n if (state.length === 0) state.needReadable = true; // call internal read method\n\n this._read(state.highWaterMark);\n\n state.sync = false; // If _read pushed data synchronously, then `reading` will be false,\n // and we need to re-evaluate how much data we can return to the user.\n\n if (!state.reading) n = howMuchToRead(nOrig, state);\n }\n\n var ret;\n if (n > 0) ret = fromList(n, state);else ret = null;\n\n if (ret === null) {\n state.needReadable = state.length <= state.highWaterMark;\n n = 0;\n } else {\n state.length -= n;\n state.awaitDrain = 0;\n }\n\n if (state.length === 0) {\n // If we have nothing in the buffer, then we want to know\n // as soon as we *do* get something into the buffer.\n if (!state.ended) state.needReadable = true; // If we tried to read() past the EOF, then emit end on the next tick.\n\n if (nOrig !== n && state.ended) endReadable(this);\n }\n\n if (ret !== null) this.emit('data', ret);\n return ret;\n};\n\nfunction onEofChunk(stream, state) {\n debug('onEofChunk');\n if (state.ended) return;\n\n if (state.decoder) {\n var chunk = state.decoder.end();\n\n if (chunk && chunk.length) {\n state.buffer.push(chunk);\n state.length += state.objectMode ? 1 : chunk.length;\n }\n }\n\n state.ended = true;\n\n if (state.sync) {\n // if we are sync, wait until next tick to emit the data.\n // Otherwise we risk emitting data in the flow()\n // the readable code triggers during a read() call\n emitReadable(stream);\n } else {\n // emit 'readable' now to make sure it gets picked up.\n state.needReadable = false;\n\n if (!state.emittedReadable) {\n state.emittedReadable = true;\n emitReadable_(stream);\n }\n }\n} // Don't emit readable right away in sync mode, because this can trigger\n// another read() call => stack overflow. This way, it might trigger\n// a nextTick recursion warning, but that's not so bad.\n\n\nfunction emitReadable(stream) {\n var state = stream._readableState;\n debug('emitReadable', state.needReadable, state.emittedReadable);\n state.needReadable = false;\n\n if (!state.emittedReadable) {\n debug('emitReadable', state.flowing);\n state.emittedReadable = true;\n process.nextTick(emitReadable_, stream);\n }\n}\n\nfunction emitReadable_(stream) {\n var state = stream._readableState;\n debug('emitReadable_', state.destroyed, state.length, state.ended);\n\n if (!state.destroyed && (state.length || state.ended)) {\n stream.emit('readable');\n state.emittedReadable = false;\n } // The stream needs another readable event if\n // 1. It is not flowing, as the flow mechanism will take\n // care of it.\n // 2. It is not ended.\n // 3. It is below the highWaterMark, so we can schedule\n // another readable later.\n\n\n state.needReadable = !state.flowing && !state.ended && state.length <= state.highWaterMark;\n flow(stream);\n} // at this point, the user has presumably seen the 'readable' event,\n// and called read() to consume some data. that may have triggered\n// in turn another _read(n) call, in which case reading = true if\n// it's in progress.\n// However, if we're not ended, or reading, and the length < hwm,\n// then go ahead and try to read some more preemptively.\n\n\nfunction maybeReadMore(stream, state) {\n if (!state.readingMore) {\n state.readingMore = true;\n process.nextTick(maybeReadMore_, stream, state);\n }\n}\n\nfunction maybeReadMore_(stream, state) {\n // Attempt to read more data if we should.\n //\n // The conditions for reading more data are (one of):\n // - Not enough data buffered (state.length < state.highWaterMark). The loop\n // is responsible for filling the buffer with enough data if such data\n // is available. If highWaterMark is 0 and we are not in the flowing mode\n // we should _not_ attempt to buffer any extra data. We'll get more data\n // when the stream consumer calls read() instead.\n // - No data in the buffer, and the stream is in flowing mode. In this mode\n // the loop below is responsible for ensuring read() is called. Failing to\n // call read here would abort the flow and there's no other mechanism for\n // continuing the flow if the stream consumer has just subscribed to the\n // 'data' event.\n //\n // In addition to the above conditions to keep reading data, the following\n // conditions prevent the data from being read:\n // - The stream has ended (state.ended).\n // - There is already a pending 'read' operation (state.reading). This is a\n // case where the the stream has called the implementation defined _read()\n // method, but they are processing the call asynchronously and have _not_\n // called push() with new data. In this case we skip performing more\n // read()s. The execution ends in this method again after the _read() ends\n // up calling push() with more data.\n while (!state.reading && !state.ended && (state.length < state.highWaterMark || state.flowing && state.length === 0)) {\n var len = state.length;\n debug('maybeReadMore read 0');\n stream.read(0);\n if (len === state.length) // didn't get any data, stop spinning.\n break;\n }\n\n state.readingMore = false;\n} // abstract method. to be overridden in specific implementation classes.\n// call cb(er, data) where data is <= n in length.\n// for virtual (non-string, non-buffer) streams, \"length\" is somewhat\n// arbitrary, and perhaps not very meaningful.\n\n\nReadable.prototype._read = function (n) {\n errorOrDestroy(this, new ERR_METHOD_NOT_IMPLEMENTED('_read()'));\n};\n\nReadable.prototype.pipe = function (dest, pipeOpts) {\n var src = this;\n var state = this._readableState;\n\n switch (state.pipesCount) {\n case 0:\n state.pipes = dest;\n break;\n\n case 1:\n state.pipes = [state.pipes, dest];\n break;\n\n default:\n state.pipes.push(dest);\n break;\n }\n\n state.pipesCount += 1;\n debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts);\n var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr;\n var endFn = doEnd ? onend : unpipe;\n if (state.endEmitted) process.nextTick(endFn);else src.once('end', endFn);\n dest.on('unpipe', onunpipe);\n\n function onunpipe(readable, unpipeInfo) {\n debug('onunpipe');\n\n if (readable === src) {\n if (unpipeInfo && unpipeInfo.hasUnpiped === false) {\n unpipeInfo.hasUnpiped = true;\n cleanup();\n }\n }\n }\n\n function onend() {\n debug('onend');\n dest.end();\n } // when the dest drains, it reduces the awaitDrain counter\n // on the source. This would be more elegant with a .once()\n // handler in flow(), but adding and removing repeatedly is\n // too slow.\n\n\n var ondrain = pipeOnDrain(src);\n dest.on('drain', ondrain);\n var cleanedUp = false;\n\n function cleanup() {\n debug('cleanup'); // cleanup event handlers once the pipe is broken\n\n dest.removeListener('close', onclose);\n dest.removeListener('finish', onfinish);\n dest.removeListener('drain', ondrain);\n dest.removeListener('error', onerror);\n dest.removeListener('unpipe', onunpipe);\n src.removeListener('end', onend);\n src.removeListener('end', unpipe);\n src.removeListener('data', ondata);\n cleanedUp = true; // if the reader is waiting for a drain event from this\n // specific writer, then it would cause it to never start\n // flowing again.\n // So, if this is awaiting a drain, then we just call it now.\n // If we don't know, then assume that we are waiting for one.\n\n if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();\n }\n\n src.on('data', ondata);\n\n function ondata(chunk) {\n debug('ondata');\n var ret = dest.write(chunk);\n debug('dest.write', ret);\n\n if (ret === false) {\n // If the user unpiped during `dest.write()`, it is possible\n // to get stuck in a permanently paused state if that write\n // also returned false.\n // => Check whether `dest` is still a piping destination.\n if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) {\n debug('false write response, pause', state.awaitDrain);\n state.awaitDrain++;\n }\n\n src.pause();\n }\n } // if the dest has an error, then stop piping into it.\n // however, don't suppress the throwing behavior for this.\n\n\n function onerror(er) {\n debug('onerror', er);\n unpipe();\n dest.removeListener('error', onerror);\n if (EElistenerCount(dest, 'error') === 0) errorOrDestroy(dest, er);\n } // Make sure our error handler is attached before userland ones.\n\n\n prependListener(dest, 'error', onerror); // Both close and finish should trigger unpipe, but only once.\n\n function onclose() {\n dest.removeListener('finish', onfinish);\n unpipe();\n }\n\n dest.once('close', onclose);\n\n function onfinish() {\n debug('onfinish');\n dest.removeListener('close', onclose);\n unpipe();\n }\n\n dest.once('finish', onfinish);\n\n function unpipe() {\n debug('unpipe');\n src.unpipe(dest);\n } // tell the dest that it's being piped to\n\n\n dest.emit('pipe', src); // start the flow if it hasn't been started already.\n\n if (!state.flowing) {\n debug('pipe resume');\n src.resume();\n }\n\n return dest;\n};\n\nfunction pipeOnDrain(src) {\n return function pipeOnDrainFunctionResult() {\n var state = src._readableState;\n debug('pipeOnDrain', state.awaitDrain);\n if (state.awaitDrain) state.awaitDrain--;\n\n if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) {\n state.flowing = true;\n flow(src);\n }\n };\n}\n\nReadable.prototype.unpipe = function (dest) {\n var state = this._readableState;\n var unpipeInfo = {\n hasUnpiped: false\n }; // if we're not piping anywhere, then do nothing.\n\n if (state.pipesCount === 0) return this; // just one destination. most common case.\n\n if (state.pipesCount === 1) {\n // passed in one, but it's not the right one.\n if (dest && dest !== state.pipes) return this;\n if (!dest) dest = state.pipes; // got a match.\n\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n if (dest) dest.emit('unpipe', this, unpipeInfo);\n return this;\n } // slow case. multiple pipe destinations.\n\n\n if (!dest) {\n // remove all.\n var dests = state.pipes;\n var len = state.pipesCount;\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n\n for (var i = 0; i < len; i++) {\n dests[i].emit('unpipe', this, {\n hasUnpiped: false\n });\n }\n\n return this;\n } // try to find the right one.\n\n\n var index = indexOf(state.pipes, dest);\n if (index === -1) return this;\n state.pipes.splice(index, 1);\n state.pipesCount -= 1;\n if (state.pipesCount === 1) state.pipes = state.pipes[0];\n dest.emit('unpipe', this, unpipeInfo);\n return this;\n}; // set up data events if they are asked for\n// Ensure readable listeners eventually get something\n\n\nReadable.prototype.on = function (ev, fn) {\n var res = Stream.prototype.on.call(this, ev, fn);\n var state = this._readableState;\n\n if (ev === 'data') {\n // update readableListening so that resume() may be a no-op\n // a few lines down. This is needed to support once('readable').\n state.readableListening = this.listenerCount('readable') > 0; // Try start flowing on next tick if stream isn't explicitly paused\n\n if (state.flowing !== false) this.resume();\n } else if (ev === 'readable') {\n if (!state.endEmitted && !state.readableListening) {\n state.readableListening = state.needReadable = true;\n state.flowing = false;\n state.emittedReadable = false;\n debug('on readable', state.length, state.reading);\n\n if (state.length) {\n emitReadable(this);\n } else if (!state.reading) {\n process.nextTick(nReadingNextTick, this);\n }\n }\n }\n\n return res;\n};\n\nReadable.prototype.addListener = Readable.prototype.on;\n\nReadable.prototype.removeListener = function (ev, fn) {\n var res = Stream.prototype.removeListener.call(this, ev, fn);\n\n if (ev === 'readable') {\n // We need to check if there is someone still listening to\n // readable and reset the state. However this needs to happen\n // after readable has been emitted but before I/O (nextTick) to\n // support once('readable', fn) cycles. This means that calling\n // resume within the same tick will have no\n // effect.\n process.nextTick(updateReadableListening, this);\n }\n\n return res;\n};\n\nReadable.prototype.removeAllListeners = function (ev) {\n var res = Stream.prototype.removeAllListeners.apply(this, arguments);\n\n if (ev === 'readable' || ev === undefined) {\n // We need to check if there is someone still listening to\n // readable and reset the state. However this needs to happen\n // after readable has been emitted but before I/O (nextTick) to\n // support once('readable', fn) cycles. This means that calling\n // resume within the same tick will have no\n // effect.\n process.nextTick(updateReadableListening, this);\n }\n\n return res;\n};\n\nfunction updateReadableListening(self) {\n var state = self._readableState;\n state.readableListening = self.listenerCount('readable') > 0;\n\n if (state.resumeScheduled && !state.paused) {\n // flowing needs to be set to true now, otherwise\n // the upcoming resume will not flow.\n state.flowing = true; // crude way to check if we should resume\n } else if (self.listenerCount('data') > 0) {\n self.resume();\n }\n}\n\nfunction nReadingNextTick(self) {\n debug('readable nexttick read 0');\n self.read(0);\n} // pause() and resume() are remnants of the legacy readable stream API\n// If the user uses them, then switch into old mode.\n\n\nReadable.prototype.resume = function () {\n var state = this._readableState;\n\n if (!state.flowing) {\n debug('resume'); // we flow only if there is no one listening\n // for readable, but we still have to call\n // resume()\n\n state.flowing = !state.readableListening;\n resume(this, state);\n }\n\n state.paused = false;\n return this;\n};\n\nfunction resume(stream, state) {\n if (!state.resumeScheduled) {\n state.resumeScheduled = true;\n process.nextTick(resume_, stream, state);\n }\n}\n\nfunction resume_(stream, state) {\n debug('resume', state.reading);\n\n if (!state.reading) {\n stream.read(0);\n }\n\n state.resumeScheduled = false;\n stream.emit('resume');\n flow(stream);\n if (state.flowing && !state.reading) stream.read(0);\n}\n\nReadable.prototype.pause = function () {\n debug('call pause flowing=%j', this._readableState.flowing);\n\n if (this._readableState.flowing !== false) {\n debug('pause');\n this._readableState.flowing = false;\n this.emit('pause');\n }\n\n this._readableState.paused = true;\n return this;\n};\n\nfunction flow(stream) {\n var state = stream._readableState;\n debug('flow', state.flowing);\n\n while (state.flowing && stream.read() !== null) {\n ;\n }\n} // wrap an old-style stream as the async data source.\n// This is *not* part of the readable stream interface.\n// It is an ugly unfortunate mess of history.\n\n\nReadable.prototype.wrap = function (stream) {\n var _this = this;\n\n var state = this._readableState;\n var paused = false;\n stream.on('end', function () {\n debug('wrapped end');\n\n if (state.decoder && !state.ended) {\n var chunk = state.decoder.end();\n if (chunk && chunk.length) _this.push(chunk);\n }\n\n _this.push(null);\n });\n stream.on('data', function (chunk) {\n debug('wrapped data');\n if (state.decoder) chunk = state.decoder.write(chunk); // don't skip over falsy values in objectMode\n\n if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return;\n\n var ret = _this.push(chunk);\n\n if (!ret) {\n paused = true;\n stream.pause();\n }\n }); // proxy all the other methods.\n // important when wrapping filters and duplexes.\n\n for (var i in stream) {\n if (this[i] === undefined && typeof stream[i] === 'function') {\n this[i] = function methodWrap(method) {\n return function methodWrapReturnFunction() {\n return stream[method].apply(stream, arguments);\n };\n }(i);\n }\n } // proxy certain important events.\n\n\n for (var n = 0; n < kProxyEvents.length; n++) {\n stream.on(kProxyEvents[n], this.emit.bind(this, kProxyEvents[n]));\n } // when we try to consume some more bytes, simply unpause the\n // underlying stream.\n\n\n this._read = function (n) {\n debug('wrapped _read', n);\n\n if (paused) {\n paused = false;\n stream.resume();\n }\n };\n\n return this;\n};\n\nif (typeof Symbol === 'function') {\n Readable.prototype[Symbol.asyncIterator] = function () {\n if (createReadableStreamAsyncIterator === undefined) {\n createReadableStreamAsyncIterator = require('./internal/streams/async_iterator');\n }\n\n return createReadableStreamAsyncIterator(this);\n };\n}\n\nObject.defineProperty(Readable.prototype, 'readableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.highWaterMark;\n }\n});\nObject.defineProperty(Readable.prototype, 'readableBuffer', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState && this._readableState.buffer;\n }\n});\nObject.defineProperty(Readable.prototype, 'readableFlowing', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.flowing;\n },\n set: function set(state) {\n if (this._readableState) {\n this._readableState.flowing = state;\n }\n }\n}); // exposed for testing purposes only.\n\nReadable._fromList = fromList;\nObject.defineProperty(Readable.prototype, 'readableLength', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.length;\n }\n}); // Pluck off n bytes from an array of buffers.\n// Length is the combined lengths of all the buffers in the list.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\n\nfunction fromList(n, state) {\n // nothing buffered\n if (state.length === 0) return null;\n var ret;\n if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) {\n // read it all, truncate the list\n if (state.decoder) ret = state.buffer.join('');else if (state.buffer.length === 1) ret = state.buffer.first();else ret = state.buffer.concat(state.length);\n state.buffer.clear();\n } else {\n // read part of list\n ret = state.buffer.consume(n, state.decoder);\n }\n return ret;\n}\n\nfunction endReadable(stream) {\n var state = stream._readableState;\n debug('endReadable', state.endEmitted);\n\n if (!state.endEmitted) {\n state.ended = true;\n process.nextTick(endReadableNT, state, stream);\n }\n}\n\nfunction endReadableNT(state, stream) {\n debug('endReadableNT', state.endEmitted, state.length); // Check that we didn't get one last unshift.\n\n if (!state.endEmitted && state.length === 0) {\n state.endEmitted = true;\n stream.readable = false;\n stream.emit('end');\n\n if (state.autoDestroy) {\n // In case of duplex streams we need a way to detect\n // if the writable side is ready for autoDestroy as well\n var wState = stream._writableState;\n\n if (!wState || wState.autoDestroy && wState.finished) {\n stream.destroy();\n }\n }\n }\n}\n\nif (typeof Symbol === 'function') {\n Readable.from = function (iterable, opts) {\n if (from === undefined) {\n from = require('./internal/streams/from');\n }\n\n return from(Readable, iterable, opts);\n };\n}\n\nfunction indexOf(xs, x) {\n for (var i = 0, l = xs.length; i < l; i++) {\n if (xs[i] === x) return i;\n }\n\n return -1;\n}", "// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n// a transform stream is a readable/writable stream where you do\n// something with the data. Sometimes it's called a \"filter\",\n// but that's not a great name for it, since that implies a thing where\n// some bits pass through, and others are simply ignored. (That would\n// be a valid example of a transform, of course.)\n//\n// While the output is causally related to the input, it's not a\n// necessarily symmetric or synchronous transformation. For example,\n// a zlib stream might take multiple plain-text writes(), and then\n// emit a single compressed chunk some time in the future.\n//\n// Here's how this works:\n//\n// The Transform stream has all the aspects of the readable and writable\n// stream classes. When you write(chunk), that calls _write(chunk,cb)\n// internally, and returns false if there's a lot of pending writes\n// buffered up. When you call read(), that calls _read(n) until\n// there's enough pending readable data buffered up.\n//\n// In a transform stream, the written data is placed in a buffer. When\n// _read(n) is called, it transforms the queued up data, calling the\n// buffered _write cb's as it consumes chunks. If consuming a single\n// written chunk would result in multiple output chunks, then the first\n// outputted bit calls the readcb, and subsequent chunks just go into\n// the read buffer, and will cause it to emit 'readable' if necessary.\n//\n// This way, back-pressure is actually determined by the reading side,\n// since _read has to be called to start processing a new chunk. However,\n// a pathological inflate type of transform can cause excessive buffering\n// here. For example, imagine a stream where every byte of input is\n// interpreted as an integer from 0-255, and then results in that many\n// bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in\n// 1kb of data being output. In this case, you could write a very small\n// amount of input, and end up with a very large amount of output. In\n// such a pathological inflating mechanism, there'd be no way to tell\n// the system to stop doing the transform. A single 4MB write could\n// cause the system to run out of memory.\n//\n// However, even in such a pathological case, only a single written chunk\n// would be consumed, and then the rest would wait (un-transformed) until\n// the results of the previous transformed chunk were consumed.\n'use strict';\n\nmodule.exports = Transform;\n\nvar _require$codes = require('../errors').codes,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK,\n ERR_TRANSFORM_ALREADY_TRANSFORMING = _require$codes.ERR_TRANSFORM_ALREADY_TRANSFORMING,\n ERR_TRANSFORM_WITH_LENGTH_0 = _require$codes.ERR_TRANSFORM_WITH_LENGTH_0;\n\nvar Duplex = require('./_stream_duplex');\n\nrequire('inherits')(Transform, Duplex);\n\nfunction afterTransform(er, data) {\n var ts = this._transformState;\n ts.transforming = false;\n var cb = ts.writecb;\n\n if (cb === null) {\n return this.emit('error', new ERR_MULTIPLE_CALLBACK());\n }\n\n ts.writechunk = null;\n ts.writecb = null;\n if (data != null) // single equals check for both `null` and `undefined`\n this.push(data);\n cb(er);\n var rs = this._readableState;\n rs.reading = false;\n\n if (rs.needReadable || rs.length < rs.highWaterMark) {\n this._read(rs.highWaterMark);\n }\n}\n\nfunction Transform(options) {\n if (!(this instanceof Transform)) return new Transform(options);\n Duplex.call(this, options);\n this._transformState = {\n afterTransform: afterTransform.bind(this),\n needTransform: false,\n transforming: false,\n writecb: null,\n writechunk: null,\n writeencoding: null\n }; // start out asking for a readable event once data is transformed.\n\n this._readableState.needReadable = true; // we have implemented the _read method, and done the other things\n // that Readable wants before the first _read call, so unset the\n // sync guard flag.\n\n this._readableState.sync = false;\n\n if (options) {\n if (typeof options.transform === 'function') this._transform = options.transform;\n if (typeof options.flush === 'function') this._flush = options.flush;\n } // When the writable side finishes, then flush out anything remaining.\n\n\n this.on('prefinish', prefinish);\n}\n\nfunction prefinish() {\n var _this = this;\n\n if (typeof this._flush === 'function' && !this._readableState.destroyed) {\n this._flush(function (er, data) {\n done(_this, er, data);\n });\n } else {\n done(this, null, null);\n }\n}\n\nTransform.prototype.push = function (chunk, encoding) {\n this._transformState.needTransform = false;\n return Duplex.prototype.push.call(this, chunk, encoding);\n}; // This is the part where you do stuff!\n// override this function in implementation classes.\n// 'chunk' is an input chunk.\n//\n// Call `push(newChunk)` to pass along transformed output\n// to the readable side. You may call 'push' zero or more times.\n//\n// Call `cb(err)` when you are done with this chunk. If you pass\n// an error, then that'll put the hurt on the whole operation. If you\n// never call cb(), then you'll never get another chunk.\n\n\nTransform.prototype._transform = function (chunk, encoding, cb) {\n cb(new ERR_METHOD_NOT_IMPLEMENTED('_transform()'));\n};\n\nTransform.prototype._write = function (chunk, encoding, cb) {\n var ts = this._transformState;\n ts.writecb = cb;\n ts.writechunk = chunk;\n ts.writeencoding = encoding;\n\n if (!ts.transforming) {\n var rs = this._readableState;\n if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark);\n }\n}; // Doesn't matter what the args are here.\n// _transform does all the work.\n// That we got here means that the readable side wants more data.\n\n\nTransform.prototype._read = function (n) {\n var ts = this._transformState;\n\n if (ts.writechunk !== null && !ts.transforming) {\n ts.transforming = true;\n\n this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);\n } else {\n // mark that we need a transform, so that any data that comes in\n // will get processed, now that we've asked for it.\n ts.needTransform = true;\n }\n};\n\nTransform.prototype._destroy = function (err, cb) {\n Duplex.prototype._destroy.call(this, err, function (err2) {\n cb(err2);\n });\n};\n\nfunction done(stream, er, data) {\n if (er) return stream.emit('error', er);\n if (data != null) // single equals check for both `null` and `undefined`\n stream.push(data); // TODO(BridgeAR): Write a test for these two error cases\n // if there's nothing in the write buffer, then that means\n // that nothing more will ever be provided\n\n if (stream._writableState.length) throw new ERR_TRANSFORM_WITH_LENGTH_0();\n if (stream._transformState.transforming) throw new ERR_TRANSFORM_ALREADY_TRANSFORMING();\n return stream.push(null);\n}", "// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n// a passthrough stream.\n// basically just the most minimal sort of Transform stream.\n// Every written chunk gets output as-is.\n'use strict';\n\nmodule.exports = PassThrough;\n\nvar Transform = require('./_stream_transform');\n\nrequire('inherits')(PassThrough, Transform);\n\nfunction PassThrough(options) {\n if (!(this instanceof PassThrough)) return new PassThrough(options);\n Transform.call(this, options);\n}\n\nPassThrough.prototype._transform = function (chunk, encoding, cb) {\n cb(null, chunk);\n};", "// Ported from https://github.com/mafintosh/pump with\n// permission from the author, Mathias Buus (@mafintosh).\n'use strict';\n\nvar eos;\n\nfunction once(callback) {\n var called = false;\n return function () {\n if (called) return;\n called = true;\n callback.apply(void 0, arguments);\n };\n}\n\nvar _require$codes = require('../../../errors').codes,\n ERR_MISSING_ARGS = _require$codes.ERR_MISSING_ARGS,\n ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED;\n\nfunction noop(err) {\n // Rethrow the error if it exists to avoid swallowing it\n if (err) throw err;\n}\n\nfunction isRequest(stream) {\n return stream.setHeader && typeof stream.abort === 'function';\n}\n\nfunction destroyer(stream, reading, writing, callback) {\n callback = once(callback);\n var closed = false;\n stream.on('close', function () {\n closed = true;\n });\n if (eos === undefined) eos = require('./end-of-stream');\n eos(stream, {\n readable: reading,\n writable: writing\n }, function (err) {\n if (err) return callback(err);\n closed = true;\n callback();\n });\n var destroyed = false;\n return function (err) {\n if (closed) return;\n if (destroyed) return;\n destroyed = true; // request.destroy just do .end - .abort is what we want\n\n if (isRequest(stream)) return stream.abort();\n if (typeof stream.destroy === 'function') return stream.destroy();\n callback(err || new ERR_STREAM_DESTROYED('pipe'));\n };\n}\n\nfunction call(fn) {\n fn();\n}\n\nfunction pipe(from, to) {\n return from.pipe(to);\n}\n\nfunction popCallback(streams) {\n if (!streams.length) return noop;\n if (typeof streams[streams.length - 1] !== 'function') return noop;\n return streams.pop();\n}\n\nfunction pipeline() {\n for (var _len = arguments.length, streams = new Array(_len), _key = 0; _key < _len; _key++) {\n streams[_key] = arguments[_key];\n }\n\n var callback = popCallback(streams);\n if (Array.isArray(streams[0])) streams = streams[0];\n\n if (streams.length < 2) {\n throw new ERR_MISSING_ARGS('streams');\n }\n\n var error;\n var destroys = streams.map(function (stream, i) {\n var reading = i < streams.length - 1;\n var writing = i > 0;\n return destroyer(stream, reading, writing, function (err) {\n if (!error) error = err;\n if (err) destroys.forEach(call);\n if (reading) return;\n destroys.forEach(call);\n callback(error);\n });\n });\n return streams.reduce(pipe);\n}\n\nmodule.exports = pipeline;", "var Stream = require('stream');\nif (process.env.READABLE_STREAM === 'disable' && Stream) {\n module.exports = Stream.Readable;\n Object.assign(module.exports, Stream);\n module.exports.Stream = Stream;\n} else {\n exports = module.exports = require('./lib/_stream_readable.js');\n exports.Stream = Stream || exports;\n exports.Readable = exports;\n exports.Writable = require('./lib/_stream_writable.js');\n exports.Duplex = require('./lib/_stream_duplex.js');\n exports.Transform = require('./lib/_stream_transform.js');\n exports.PassThrough = require('./lib/_stream_passthrough.js');\n exports.finished = require('./lib/internal/streams/end-of-stream.js');\n exports.pipeline = require('./lib/internal/streams/pipeline.js');\n}\n", "'use strict'\nvar Buffer = require('safe-buffer').Buffer\nvar Transform = require('readable-stream').Transform\nvar inherits = require('inherits')\n\nfunction throwIfNotStringOrBuffer (val, prefix) {\n if (!Buffer.isBuffer(val) && typeof val !== 'string') {\n throw new TypeError(prefix + ' must be a string or a buffer')\n }\n}\n\nfunction HashBase (blockSize) {\n Transform.call(this)\n\n this._block = Buffer.allocUnsafe(blockSize)\n this._blockSize = blockSize\n this._blockOffset = 0\n this._length = [0, 0, 0, 0]\n\n this._finalized = false\n}\n\ninherits(HashBase, Transform)\n\nHashBase.prototype._transform = function (chunk, encoding, callback) {\n var error = null\n try {\n this.update(chunk, encoding)\n } catch (err) {\n error = err\n }\n\n callback(error)\n}\n\nHashBase.prototype._flush = function (callback) {\n var error = null\n try {\n this.push(this.digest())\n } catch (err) {\n error = err\n }\n\n callback(error)\n}\n\nHashBase.prototype.update = function (data, encoding) {\n throwIfNotStringOrBuffer(data, 'Data')\n if (this._finalized) throw new Error('Digest already called')\n if (!Buffer.isBuffer(data)) data = Buffer.from(data, encoding)\n\n // consume data\n var block = this._block\n var offset = 0\n while (this._blockOffset + data.length - offset >= this._blockSize) {\n for (var i = this._blockOffset; i < this._blockSize;) block[i++] = data[offset++]\n this._update()\n this._blockOffset = 0\n }\n while (offset < data.length) block[this._blockOffset++] = data[offset++]\n\n // update length\n for (var j = 0, carry = data.length * 8; carry > 0; ++j) {\n this._length[j] += carry\n carry = (this._length[j] / 0x0100000000) | 0\n if (carry > 0) this._length[j] -= 0x0100000000 * carry\n }\n\n return this\n}\n\nHashBase.prototype._update = function () {\n throw new Error('_update is not implemented')\n}\n\nHashBase.prototype.digest = function (encoding) {\n if (this._finalized) throw new Error('Digest already called')\n this._finalized = true\n\n var digest = this._digest()\n if (encoding !== undefined) digest = digest.toString(encoding)\n\n // reset state\n this._block.fill(0)\n this._blockOffset = 0\n for (var i = 0; i < 4; ++i) this._length[i] = 0\n\n return digest\n}\n\nHashBase.prototype._digest = function () {\n throw new Error('_digest is not implemented')\n}\n\nmodule.exports = HashBase\n", "'use strict'\nvar Buffer = require('buffer').Buffer\nvar inherits = require('inherits')\nvar HashBase = require('hash-base')\n\nvar ARRAY16 = new Array(16)\n\nvar zl = [\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,\n 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8,\n 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12,\n 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2,\n 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13\n]\n\nvar zr = [\n 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12,\n 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2,\n 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13,\n 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14,\n 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11\n]\n\nvar sl = [\n 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8,\n 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12,\n 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5,\n 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12,\n 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6\n]\n\nvar sr = [\n 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6,\n 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11,\n 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5,\n 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8,\n 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11\n]\n\nvar hl = [0x00000000, 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc, 0xa953fd4e]\nvar hr = [0x50a28be6, 0x5c4dd124, 0x6d703ef3, 0x7a6d76e9, 0x00000000]\n\nfunction RIPEMD160 () {\n HashBase.call(this, 64)\n\n // state\n this._a = 0x67452301\n this._b = 0xefcdab89\n this._c = 0x98badcfe\n this._d = 0x10325476\n this._e = 0xc3d2e1f0\n}\n\ninherits(RIPEMD160, HashBase)\n\nRIPEMD160.prototype._update = function () {\n var words = ARRAY16\n for (var j = 0; j < 16; ++j) words[j] = this._block.readInt32LE(j * 4)\n\n var al = this._a | 0\n var bl = this._b | 0\n var cl = this._c | 0\n var dl = this._d | 0\n var el = this._e | 0\n\n var ar = this._a | 0\n var br = this._b | 0\n var cr = this._c | 0\n var dr = this._d | 0\n var er = this._e | 0\n\n // computation\n for (var i = 0; i < 80; i += 1) {\n var tl\n var tr\n if (i < 16) {\n tl = fn1(al, bl, cl, dl, el, words[zl[i]], hl[0], sl[i])\n tr = fn5(ar, br, cr, dr, er, words[zr[i]], hr[0], sr[i])\n } else if (i < 32) {\n tl = fn2(al, bl, cl, dl, el, words[zl[i]], hl[1], sl[i])\n tr = fn4(ar, br, cr, dr, er, words[zr[i]], hr[1], sr[i])\n } else if (i < 48) {\n tl = fn3(al, bl, cl, dl, el, words[zl[i]], hl[2], sl[i])\n tr = fn3(ar, br, cr, dr, er, words[zr[i]], hr[2], sr[i])\n } else if (i < 64) {\n tl = fn4(al, bl, cl, dl, el, words[zl[i]], hl[3], sl[i])\n tr = fn2(ar, br, cr, dr, er, words[zr[i]], hr[3], sr[i])\n } else { // if (i<80) {\n tl = fn5(al, bl, cl, dl, el, words[zl[i]], hl[4], sl[i])\n tr = fn1(ar, br, cr, dr, er, words[zr[i]], hr[4], sr[i])\n }\n\n al = el\n el = dl\n dl = rotl(cl, 10)\n cl = bl\n bl = tl\n\n ar = er\n er = dr\n dr = rotl(cr, 10)\n cr = br\n br = tr\n }\n\n // update state\n var t = (this._b + cl + dr) | 0\n this._b = (this._c + dl + er) | 0\n this._c = (this._d + el + ar) | 0\n this._d = (this._e + al + br) | 0\n this._e = (this._a + bl + cr) | 0\n this._a = t\n}\n\nRIPEMD160.prototype._digest = function () {\n // create padding and handle blocks\n this._block[this._blockOffset++] = 0x80\n if (this._blockOffset > 56) {\n this._block.fill(0, this._blockOffset, 64)\n this._update()\n this._blockOffset = 0\n }\n\n this._block.fill(0, this._blockOffset, 56)\n this._block.writeUInt32LE(this._length[0], 56)\n this._block.writeUInt32LE(this._length[1], 60)\n this._update()\n\n // produce result\n var buffer = Buffer.alloc ? Buffer.alloc(20) : new Buffer(20)\n buffer.writeInt32LE(this._a, 0)\n buffer.writeInt32LE(this._b, 4)\n buffer.writeInt32LE(this._c, 8)\n buffer.writeInt32LE(this._d, 12)\n buffer.writeInt32LE(this._e, 16)\n return buffer\n}\n\nfunction rotl (x, n) {\n return (x << n) | (x >>> (32 - n))\n}\n\nfunction fn1 (a, b, c, d, e, m, k, s) {\n return (rotl((a + (b ^ c ^ d) + m + k) | 0, s) + e) | 0\n}\n\nfunction fn2 (a, b, c, d, e, m, k, s) {\n return (rotl((a + ((b & c) | ((~b) & d)) + m + k) | 0, s) + e) | 0\n}\n\nfunction fn3 (a, b, c, d, e, m, k, s) {\n return (rotl((a + ((b | (~c)) ^ d) + m + k) | 0, s) + e) | 0\n}\n\nfunction fn4 (a, b, c, d, e, m, k, s) {\n return (rotl((a + ((b & d) | (c & (~d))) + m + k) | 0, s) + e) | 0\n}\n\nfunction fn5 (a, b, c, d, e, m, k, s) {\n return (rotl((a + (b ^ (c | (~d))) + m + k) | 0, s) + e) | 0\n}\n\nmodule.exports = RIPEMD160\n", "var Buffer = require('safe-buffer').Buffer\n\n// prototype class for hash functions\nfunction Hash (blockSize, finalSize) {\n this._block = Buffer.alloc(blockSize)\n this._finalSize = finalSize\n this._blockSize = blockSize\n this._len = 0\n}\n\nHash.prototype.update = function (data, enc) {\n if (typeof data === 'string') {\n enc = enc || 'utf8'\n data = Buffer.from(data, enc)\n }\n\n var block = this._block\n var blockSize = this._blockSize\n var length = data.length\n var accum = this._len\n\n for (var offset = 0; offset < length;) {\n var assigned = accum % blockSize\n var remainder = Math.min(length - offset, blockSize - assigned)\n\n for (var i = 0; i < remainder; i++) {\n block[assigned + i] = data[offset + i]\n }\n\n accum += remainder\n offset += remainder\n\n if ((accum % blockSize) === 0) {\n this._update(block)\n }\n }\n\n this._len += length\n return this\n}\n\nHash.prototype.digest = function (enc) {\n var rem = this._len % this._blockSize\n\n this._block[rem] = 0x80\n\n // zero (rem + 1) trailing bits, where (rem + 1) is the smallest\n // non-negative solution to the equation (length + 1 + (rem + 1)) === finalSize mod blockSize\n this._block.fill(0, rem + 1)\n\n if (rem >= this._finalSize) {\n this._update(this._block)\n this._block.fill(0)\n }\n\n var bits = this._len * 8\n\n // uint32\n if (bits <= 0xffffffff) {\n this._block.writeUInt32BE(bits, this._blockSize - 4)\n\n // uint64\n } else {\n var lowBits = (bits & 0xffffffff) >>> 0\n var highBits = (bits - lowBits) / 0x100000000\n\n this._block.writeUInt32BE(highBits, this._blockSize - 8)\n this._block.writeUInt32BE(lowBits, this._blockSize - 4)\n }\n\n this._update(this._block)\n var hash = this._hash()\n\n return enc ? hash.toString(enc) : hash\n}\n\nHash.prototype._update = function () {\n throw new Error('_update must be implemented by subclass')\n}\n\nmodule.exports = Hash\n", "/*\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-0, as defined\n * in FIPS PUB 180-1\n * This source code is derived from sha1.js of the same repository.\n * The difference between SHA-0 and SHA-1 is just a bitwise rotate left\n * operation was added.\n */\n\nvar inherits = require('inherits')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar K = [\n 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc | 0, 0xca62c1d6 | 0\n]\n\nvar W = new Array(80)\n\nfunction Sha () {\n this.init()\n this._w = W\n\n Hash.call(this, 64, 56)\n}\n\ninherits(Sha, Hash)\n\nSha.prototype.init = function () {\n this._a = 0x67452301\n this._b = 0xefcdab89\n this._c = 0x98badcfe\n this._d = 0x10325476\n this._e = 0xc3d2e1f0\n\n return this\n}\n\nfunction rotl5 (num) {\n return (num << 5) | (num >>> 27)\n}\n\nfunction rotl30 (num) {\n return (num << 30) | (num >>> 2)\n}\n\nfunction ft (s, b, c, d) {\n if (s === 0) return (b & c) | ((~b) & d)\n if (s === 2) return (b & c) | (b & d) | (c & d)\n return b ^ c ^ d\n}\n\nSha.prototype._update = function (M) {\n var W = this._w\n\n var a = this._a | 0\n var b = this._b | 0\n var c = this._c | 0\n var d = this._d | 0\n var e = this._e | 0\n\n for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)\n for (; i < 80; ++i) W[i] = W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16]\n\n for (var j = 0; j < 80; ++j) {\n var s = ~~(j / 20)\n var t = (rotl5(a) + ft(s, b, c, d) + e + W[j] + K[s]) | 0\n\n e = d\n d = c\n c = rotl30(b)\n b = a\n a = t\n }\n\n this._a = (a + this._a) | 0\n this._b = (b + this._b) | 0\n this._c = (c + this._c) | 0\n this._d = (d + this._d) | 0\n this._e = (e + this._e) | 0\n}\n\nSha.prototype._hash = function () {\n var H = Buffer.allocUnsafe(20)\n\n H.writeInt32BE(this._a | 0, 0)\n H.writeInt32BE(this._b | 0, 4)\n H.writeInt32BE(this._c | 0, 8)\n H.writeInt32BE(this._d | 0, 12)\n H.writeInt32BE(this._e | 0, 16)\n\n return H\n}\n\nmodule.exports = Sha\n", "/*\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-1, as defined\n * in FIPS PUB 180-1\n * Version 2.1a Copyright Paul Johnston 2000 - 2002.\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n * Distributed under the BSD License\n * See http://pajhome.org.uk/crypt/md5 for details.\n */\n\nvar inherits = require('inherits')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar K = [\n 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc | 0, 0xca62c1d6 | 0\n]\n\nvar W = new Array(80)\n\nfunction Sha1 () {\n this.init()\n this._w = W\n\n Hash.call(this, 64, 56)\n}\n\ninherits(Sha1, Hash)\n\nSha1.prototype.init = function () {\n this._a = 0x67452301\n this._b = 0xefcdab89\n this._c = 0x98badcfe\n this._d = 0x10325476\n this._e = 0xc3d2e1f0\n\n return this\n}\n\nfunction rotl1 (num) {\n return (num << 1) | (num >>> 31)\n}\n\nfunction rotl5 (num) {\n return (num << 5) | (num >>> 27)\n}\n\nfunction rotl30 (num) {\n return (num << 30) | (num >>> 2)\n}\n\nfunction ft (s, b, c, d) {\n if (s === 0) return (b & c) | ((~b) & d)\n if (s === 2) return (b & c) | (b & d) | (c & d)\n return b ^ c ^ d\n}\n\nSha1.prototype._update = function (M) {\n var W = this._w\n\n var a = this._a | 0\n var b = this._b | 0\n var c = this._c | 0\n var d = this._d | 0\n var e = this._e | 0\n\n for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)\n for (; i < 80; ++i) W[i] = rotl1(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16])\n\n for (var j = 0; j < 80; ++j) {\n var s = ~~(j / 20)\n var t = (rotl5(a) + ft(s, b, c, d) + e + W[j] + K[s]) | 0\n\n e = d\n d = c\n c = rotl30(b)\n b = a\n a = t\n }\n\n this._a = (a + this._a) | 0\n this._b = (b + this._b) | 0\n this._c = (c + this._c) | 0\n this._d = (d + this._d) | 0\n this._e = (e + this._e) | 0\n}\n\nSha1.prototype._hash = function () {\n var H = Buffer.allocUnsafe(20)\n\n H.writeInt32BE(this._a | 0, 0)\n H.writeInt32BE(this._b | 0, 4)\n H.writeInt32BE(this._c | 0, 8)\n H.writeInt32BE(this._d | 0, 12)\n H.writeInt32BE(this._e | 0, 16)\n\n return H\n}\n\nmodule.exports = Sha1\n", "/**\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined\n * in FIPS 180-2\n * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009.\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n *\n */\n\nvar inherits = require('inherits')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar K = [\n 0x428A2F98, 0x71374491, 0xB5C0FBCF, 0xE9B5DBA5,\n 0x3956C25B, 0x59F111F1, 0x923F82A4, 0xAB1C5ED5,\n 0xD807AA98, 0x12835B01, 0x243185BE, 0x550C7DC3,\n 0x72BE5D74, 0x80DEB1FE, 0x9BDC06A7, 0xC19BF174,\n 0xE49B69C1, 0xEFBE4786, 0x0FC19DC6, 0x240CA1CC,\n 0x2DE92C6F, 0x4A7484AA, 0x5CB0A9DC, 0x76F988DA,\n 0x983E5152, 0xA831C66D, 0xB00327C8, 0xBF597FC7,\n 0xC6E00BF3, 0xD5A79147, 0x06CA6351, 0x14292967,\n 0x27B70A85, 0x2E1B2138, 0x4D2C6DFC, 0x53380D13,\n 0x650A7354, 0x766A0ABB, 0x81C2C92E, 0x92722C85,\n 0xA2BFE8A1, 0xA81A664B, 0xC24B8B70, 0xC76C51A3,\n 0xD192E819, 0xD6990624, 0xF40E3585, 0x106AA070,\n 0x19A4C116, 0x1E376C08, 0x2748774C, 0x34B0BCB5,\n 0x391C0CB3, 0x4ED8AA4A, 0x5B9CCA4F, 0x682E6FF3,\n 0x748F82EE, 0x78A5636F, 0x84C87814, 0x8CC70208,\n 0x90BEFFFA, 0xA4506CEB, 0xBEF9A3F7, 0xC67178F2\n]\n\nvar W = new Array(64)\n\nfunction Sha256 () {\n this.init()\n\n this._w = W // new Array(64)\n\n Hash.call(this, 64, 56)\n}\n\ninherits(Sha256, Hash)\n\nSha256.prototype.init = function () {\n this._a = 0x6a09e667\n this._b = 0xbb67ae85\n this._c = 0x3c6ef372\n this._d = 0xa54ff53a\n this._e = 0x510e527f\n this._f = 0x9b05688c\n this._g = 0x1f83d9ab\n this._h = 0x5be0cd19\n\n return this\n}\n\nfunction ch (x, y, z) {\n return z ^ (x & (y ^ z))\n}\n\nfunction maj (x, y, z) {\n return (x & y) | (z & (x | y))\n}\n\nfunction sigma0 (x) {\n return (x >>> 2 | x << 30) ^ (x >>> 13 | x << 19) ^ (x >>> 22 | x << 10)\n}\n\nfunction sigma1 (x) {\n return (x >>> 6 | x << 26) ^ (x >>> 11 | x << 21) ^ (x >>> 25 | x << 7)\n}\n\nfunction gamma0 (x) {\n return (x >>> 7 | x << 25) ^ (x >>> 18 | x << 14) ^ (x >>> 3)\n}\n\nfunction gamma1 (x) {\n return (x >>> 17 | x << 15) ^ (x >>> 19 | x << 13) ^ (x >>> 10)\n}\n\nSha256.prototype._update = function (M) {\n var W = this._w\n\n var a = this._a | 0\n var b = this._b | 0\n var c = this._c | 0\n var d = this._d | 0\n var e = this._e | 0\n var f = this._f | 0\n var g = this._g | 0\n var h = this._h | 0\n\n for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)\n for (; i < 64; ++i) W[i] = (gamma1(W[i - 2]) + W[i - 7] + gamma0(W[i - 15]) + W[i - 16]) | 0\n\n for (var j = 0; j < 64; ++j) {\n var T1 = (h + sigma1(e) + ch(e, f, g) + K[j] + W[j]) | 0\n var T2 = (sigma0(a) + maj(a, b, c)) | 0\n\n h = g\n g = f\n f = e\n e = (d + T1) | 0\n d = c\n c = b\n b = a\n a = (T1 + T2) | 0\n }\n\n this._a = (a + this._a) | 0\n this._b = (b + this._b) | 0\n this._c = (c + this._c) | 0\n this._d = (d + this._d) | 0\n this._e = (e + this._e) | 0\n this._f = (f + this._f) | 0\n this._g = (g + this._g) | 0\n this._h = (h + this._h) | 0\n}\n\nSha256.prototype._hash = function () {\n var H = Buffer.allocUnsafe(32)\n\n H.writeInt32BE(this._a, 0)\n H.writeInt32BE(this._b, 4)\n H.writeInt32BE(this._c, 8)\n H.writeInt32BE(this._d, 12)\n H.writeInt32BE(this._e, 16)\n H.writeInt32BE(this._f, 20)\n H.writeInt32BE(this._g, 24)\n H.writeInt32BE(this._h, 28)\n\n return H\n}\n\nmodule.exports = Sha256\n", "/**\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined\n * in FIPS 180-2\n * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009.\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n *\n */\n\nvar inherits = require('inherits')\nvar Sha256 = require('./sha256')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar W = new Array(64)\n\nfunction Sha224 () {\n this.init()\n\n this._w = W // new Array(64)\n\n Hash.call(this, 64, 56)\n}\n\ninherits(Sha224, Sha256)\n\nSha224.prototype.init = function () {\n this._a = 0xc1059ed8\n this._b = 0x367cd507\n this._c = 0x3070dd17\n this._d = 0xf70e5939\n this._e = 0xffc00b31\n this._f = 0x68581511\n this._g = 0x64f98fa7\n this._h = 0xbefa4fa4\n\n return this\n}\n\nSha224.prototype._hash = function () {\n var H = Buffer.allocUnsafe(28)\n\n H.writeInt32BE(this._a, 0)\n H.writeInt32BE(this._b, 4)\n H.writeInt32BE(this._c, 8)\n H.writeInt32BE(this._d, 12)\n H.writeInt32BE(this._e, 16)\n H.writeInt32BE(this._f, 20)\n H.writeInt32BE(this._g, 24)\n\n return H\n}\n\nmodule.exports = Sha224\n", "var inherits = require('inherits')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\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\nvar W = new Array(160)\n\nfunction Sha512 () {\n this.init()\n this._w = W\n\n Hash.call(this, 128, 112)\n}\n\ninherits(Sha512, Hash)\n\nSha512.prototype.init = function () {\n this._ah = 0x6a09e667\n this._bh = 0xbb67ae85\n this._ch = 0x3c6ef372\n this._dh = 0xa54ff53a\n this._eh = 0x510e527f\n this._fh = 0x9b05688c\n this._gh = 0x1f83d9ab\n this._hh = 0x5be0cd19\n\n this._al = 0xf3bcc908\n this._bl = 0x84caa73b\n this._cl = 0xfe94f82b\n this._dl = 0x5f1d36f1\n this._el = 0xade682d1\n this._fl = 0x2b3e6c1f\n this._gl = 0xfb41bd6b\n this._hl = 0x137e2179\n\n return this\n}\n\nfunction Ch (x, y, z) {\n return z ^ (x & (y ^ z))\n}\n\nfunction maj (x, y, z) {\n return (x & y) | (z & (x | y))\n}\n\nfunction sigma0 (x, xl) {\n return (x >>> 28 | xl << 4) ^ (xl >>> 2 | x << 30) ^ (xl >>> 7 | x << 25)\n}\n\nfunction sigma1 (x, xl) {\n return (x >>> 14 | xl << 18) ^ (x >>> 18 | xl << 14) ^ (xl >>> 9 | x << 23)\n}\n\nfunction Gamma0 (x, xl) {\n return (x >>> 1 | xl << 31) ^ (x >>> 8 | xl << 24) ^ (x >>> 7)\n}\n\nfunction Gamma0l (x, xl) {\n return (x >>> 1 | xl << 31) ^ (x >>> 8 | xl << 24) ^ (x >>> 7 | xl << 25)\n}\n\nfunction Gamma1 (x, xl) {\n return (x >>> 19 | xl << 13) ^ (xl >>> 29 | x << 3) ^ (x >>> 6)\n}\n\nfunction Gamma1l (x, xl) {\n return (x >>> 19 | xl << 13) ^ (xl >>> 29 | x << 3) ^ (x >>> 6 | xl << 26)\n}\n\nfunction getCarry (a, b) {\n return (a >>> 0) < (b >>> 0) ? 1 : 0\n}\n\nSha512.prototype._update = function (M) {\n var W = this._w\n\n var ah = this._ah | 0\n var bh = this._bh | 0\n var ch = this._ch | 0\n var dh = this._dh | 0\n var eh = this._eh | 0\n var fh = this._fh | 0\n var gh = this._gh | 0\n var hh = this._hh | 0\n\n var al = this._al | 0\n var bl = this._bl | 0\n var cl = this._cl | 0\n var dl = this._dl | 0\n var el = this._el | 0\n var fl = this._fl | 0\n var gl = this._gl | 0\n var hl = this._hl | 0\n\n for (var i = 0; i < 32; i += 2) {\n W[i] = M.readInt32BE(i * 4)\n W[i + 1] = M.readInt32BE(i * 4 + 4)\n }\n for (; i < 160; i += 2) {\n var xh = W[i - 15 * 2]\n var xl = W[i - 15 * 2 + 1]\n var gamma0 = Gamma0(xh, xl)\n var gamma0l = Gamma0l(xl, xh)\n\n xh = W[i - 2 * 2]\n xl = W[i - 2 * 2 + 1]\n var gamma1 = Gamma1(xh, xl)\n var gamma1l = Gamma1l(xl, xh)\n\n // W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16]\n var Wi7h = W[i - 7 * 2]\n var Wi7l = W[i - 7 * 2 + 1]\n\n var Wi16h = W[i - 16 * 2]\n var Wi16l = W[i - 16 * 2 + 1]\n\n var Wil = (gamma0l + Wi7l) | 0\n var Wih = (gamma0 + Wi7h + getCarry(Wil, gamma0l)) | 0\n Wil = (Wil + gamma1l) | 0\n Wih = (Wih + gamma1 + getCarry(Wil, gamma1l)) | 0\n Wil = (Wil + Wi16l) | 0\n Wih = (Wih + Wi16h + getCarry(Wil, Wi16l)) | 0\n\n W[i] = Wih\n W[i + 1] = Wil\n }\n\n for (var j = 0; j < 160; j += 2) {\n Wih = W[j]\n Wil = W[j + 1]\n\n var majh = maj(ah, bh, ch)\n var majl = maj(al, bl, cl)\n\n var sigma0h = sigma0(ah, al)\n var sigma0l = sigma0(al, ah)\n var sigma1h = sigma1(eh, el)\n var sigma1l = sigma1(el, eh)\n\n // t1 = h + sigma1 + ch + K[j] + W[j]\n var Kih = K[j]\n var Kil = K[j + 1]\n\n var chh = Ch(eh, fh, gh)\n var chl = Ch(el, fl, gl)\n\n var t1l = (hl + sigma1l) | 0\n var t1h = (hh + sigma1h + getCarry(t1l, hl)) | 0\n t1l = (t1l + chl) | 0\n t1h = (t1h + chh + getCarry(t1l, chl)) | 0\n t1l = (t1l + Kil) | 0\n t1h = (t1h + Kih + getCarry(t1l, Kil)) | 0\n t1l = (t1l + Wil) | 0\n t1h = (t1h + Wih + getCarry(t1l, Wil)) | 0\n\n // t2 = sigma0 + maj\n var t2l = (sigma0l + majl) | 0\n var t2h = (sigma0h + majh + getCarry(t2l, sigma0l)) | 0\n\n hh = gh\n hl = gl\n gh = fh\n gl = fl\n fh = eh\n fl = el\n el = (dl + t1l) | 0\n eh = (dh + t1h + getCarry(el, dl)) | 0\n dh = ch\n dl = cl\n ch = bh\n cl = bl\n bh = ah\n bl = al\n al = (t1l + t2l) | 0\n ah = (t1h + t2h + getCarry(al, t1l)) | 0\n }\n\n this._al = (this._al + al) | 0\n this._bl = (this._bl + bl) | 0\n this._cl = (this._cl + cl) | 0\n this._dl = (this._dl + dl) | 0\n this._el = (this._el + el) | 0\n this._fl = (this._fl + fl) | 0\n this._gl = (this._gl + gl) | 0\n this._hl = (this._hl + hl) | 0\n\n this._ah = (this._ah + ah + getCarry(this._al, al)) | 0\n this._bh = (this._bh + bh + getCarry(this._bl, bl)) | 0\n this._ch = (this._ch + ch + getCarry(this._cl, cl)) | 0\n this._dh = (this._dh + dh + getCarry(this._dl, dl)) | 0\n this._eh = (this._eh + eh + getCarry(this._el, el)) | 0\n this._fh = (this._fh + fh + getCarry(this._fl, fl)) | 0\n this._gh = (this._gh + gh + getCarry(this._gl, gl)) | 0\n this._hh = (this._hh + hh + getCarry(this._hl, hl)) | 0\n}\n\nSha512.prototype._hash = function () {\n var H = Buffer.allocUnsafe(64)\n\n function writeInt64BE (h, l, offset) {\n H.writeInt32BE(h, offset)\n H.writeInt32BE(l, offset + 4)\n }\n\n writeInt64BE(this._ah, this._al, 0)\n writeInt64BE(this._bh, this._bl, 8)\n writeInt64BE(this._ch, this._cl, 16)\n writeInt64BE(this._dh, this._dl, 24)\n writeInt64BE(this._eh, this._el, 32)\n writeInt64BE(this._fh, this._fl, 40)\n writeInt64BE(this._gh, this._gl, 48)\n writeInt64BE(this._hh, this._hl, 56)\n\n return H\n}\n\nmodule.exports = Sha512\n", "var inherits = require('inherits')\nvar SHA512 = require('./sha512')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar W = new Array(160)\n\nfunction Sha384 () {\n this.init()\n this._w = W\n\n Hash.call(this, 128, 112)\n}\n\ninherits(Sha384, SHA512)\n\nSha384.prototype.init = function () {\n this._ah = 0xcbbb9d5d\n this._bh = 0x629a292a\n this._ch = 0x9159015a\n this._dh = 0x152fecd8\n this._eh = 0x67332667\n this._fh = 0x8eb44a87\n this._gh = 0xdb0c2e0d\n this._hh = 0x47b5481d\n\n this._al = 0xc1059ed8\n this._bl = 0x367cd507\n this._cl = 0x3070dd17\n this._dl = 0xf70e5939\n this._el = 0xffc00b31\n this._fl = 0x68581511\n this._gl = 0x64f98fa7\n this._hl = 0xbefa4fa4\n\n return this\n}\n\nSha384.prototype._hash = function () {\n var H = Buffer.allocUnsafe(48)\n\n function writeInt64BE (h, l, offset) {\n H.writeInt32BE(h, offset)\n H.writeInt32BE(l, offset + 4)\n }\n\n writeInt64BE(this._ah, this._al, 0)\n writeInt64BE(this._bh, this._bl, 8)\n writeInt64BE(this._ch, this._cl, 16)\n writeInt64BE(this._dh, this._dl, 24)\n writeInt64BE(this._eh, this._el, 32)\n writeInt64BE(this._fh, this._fl, 40)\n\n return H\n}\n\nmodule.exports = Sha384\n", "var exports = module.exports = function SHA (algorithm) {\n algorithm = algorithm.toLowerCase()\n\n var Algorithm = exports[algorithm]\n if (!Algorithm) throw new Error(algorithm + ' is not supported (we accept pull requests)')\n\n return new Algorithm()\n}\n\nexports.sha = require('./sha')\nexports.sha1 = require('./sha1')\nexports.sha224 = require('./sha224')\nexports.sha256 = require('./sha256')\nexports.sha384 = require('./sha384')\nexports.sha512 = require('./sha512')\n", "/**\n * A Log object\n */\nexport interface Log {\n type: string;\n message?: string;\n data?: any;\n // unique amount all logs\n id: string;\n // date of the log\n date: Date;\n}\nexport type Unsubscribe = () => void;\nexport type Subscriber = (arg0: Log) => void;\nlet id = 0;\nconst subscribers: Subscriber[] = [];\n\n/**\n * log something\n * @param type a namespaced identifier of the log (it is not a level like \"debug\", \"error\" but more like \"apdu-in\", \"apdu-out\", etc...)\n * @param message a clear message of the log associated to the type\n */\nexport const log = (type: string, message?: string, data?: any) => {\n const obj: Log = {\n type,\n id: String(++id),\n date: new Date(),\n };\n if (message) obj.message = message;\n if (data) obj.data = data;\n dispatch(obj);\n};\n\n/**\n * listen to logs.\n * @param cb that is called for each future log() with the Log object\n * @return a function that can be called to unsubscribe the listener\n */\nexport const listen = (cb: Subscriber): Unsubscribe => {\n subscribers.push(cb);\n return () => {\n const i = subscribers.indexOf(cb);\n\n if (i !== -1) {\n // equivalent of subscribers.splice(i, 1) // https://twitter.com/Rich_Harris/status/1125850391155965952\n subscribers[i] = subscribers[subscribers.length - 1];\n subscribers.pop();\n }\n };\n};\n\nfunction dispatch(log: Log) {\n for (let i = 0; i < subscribers.length; i++) {\n try {\n subscribers[i](log);\n } catch (e) {\n console.error(e);\n }\n }\n}\n\n// for debug purpose\n\ndeclare global {\n interface Window {\n __ledgerLogsListen: any;\n }\n}\n\nif (typeof window !== \"undefined\") {\n window.__ledgerLogsListen = listen;\n}\n", "/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\n/**\n * Use invariant() to assert state which your program assumes to be true.\n *\n * Provide sprintf-style format (only %s is supported) and arguments\n * to provide information about what broke and what you were\n * expecting.\n *\n * The invariant message will be stripped in production, but the invariant\n * will remain to ensure logic does not differ in production.\n */\n\nvar NODE_ENV = process.env.NODE_ENV;\n\nvar invariant = function(condition, format, a, b, c, d, e, f) {\n if (NODE_ENV !== 'production') {\n if (format === undefined) {\n throw new Error('invariant requires an error message argument');\n }\n }\n\n if (!condition) {\n var error;\n if (format === undefined) {\n error = new Error(\n 'Minified exception occurred; use the non-minified dev environment ' +\n 'for the full error message and additional helpful warnings.'\n );\n } else {\n var args = [a, b, c, d, e, f];\n var argIndex = 0;\n error = new Error(\n format.replace(/%s/g, function() { return args[argIndex++]; })\n );\n error.name = 'Invariant Violation';\n }\n\n error.framesToPop = 1; // we don't care about invariant's own frame\n throw error;\n }\n};\n\nmodule.exports = invariant;\n", "// Note: this is the semver.org version of the spec that it implements\n// Not necessarily the package version of this code.\nconst SEMVER_SPEC_VERSION = '2.0.0'\n\nconst MAX_LENGTH = 256\nconst MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER ||\n/* istanbul ignore next */ 9007199254740991\n\n// Max safe segment length for coercion.\nconst MAX_SAFE_COMPONENT_LENGTH = 16\n\nmodule.exports = {\n SEMVER_SPEC_VERSION,\n MAX_LENGTH,\n MAX_SAFE_INTEGER,\n MAX_SAFE_COMPONENT_LENGTH,\n}\n", "const debug = (\n typeof process === 'object' &&\n process.env &&\n process.env.NODE_DEBUG &&\n /\\bsemver\\b/i.test(process.env.NODE_DEBUG)\n) ? (...args) => console.error('SEMVER', ...args)\n : () => {}\n\nmodule.exports = debug\n", "const { MAX_SAFE_COMPONENT_LENGTH } = require('./constants')\nconst debug = require('./debug')\nexports = module.exports = {}\n\n// The actual regexps go on exports.re\nconst re = exports.re = []\nconst src = exports.src = []\nconst t = exports.t = {}\nlet R = 0\n\nconst createToken = (name, value, isGlobal) => {\n const index = R++\n debug(name, index, value)\n t[name] = index\n src[index] = value\n re[index] = new RegExp(value, isGlobal ? 'g' : undefined)\n}\n\n// The following Regular Expressions can be used for tokenizing,\n// validating, and parsing SemVer version strings.\n\n// ## Numeric Identifier\n// A single `0`, or a non-zero digit followed by zero or more digits.\n\ncreateToken('NUMERICIDENTIFIER', '0|[1-9]\\\\d*')\ncreateToken('NUMERICIDENTIFIERLOOSE', '[0-9]+')\n\n// ## Non-numeric Identifier\n// Zero or more digits, followed by a letter or hyphen, and then zero or\n// more letters, digits, or hyphens.\n\ncreateToken('NONNUMERICIDENTIFIER', '\\\\d*[a-zA-Z-][a-zA-Z0-9-]*')\n\n// ## Main Version\n// Three dot-separated numeric identifiers.\n\ncreateToken('MAINVERSION', `(${src[t.NUMERICIDENTIFIER]})\\\\.` +\n `(${src[t.NUMERICIDENTIFIER]})\\\\.` +\n `(${src[t.NUMERICIDENTIFIER]})`)\n\ncreateToken('MAINVERSIONLOOSE', `(${src[t.NUMERICIDENTIFIERLOOSE]})\\\\.` +\n `(${src[t.NUMERICIDENTIFIERLOOSE]})\\\\.` +\n `(${src[t.NUMERICIDENTIFIERLOOSE]})`)\n\n// ## Pre-release Version Identifier\n// A numeric identifier, or a non-numeric identifier.\n\ncreateToken('PRERELEASEIDENTIFIER', `(?:${src[t.NUMERICIDENTIFIER]\n}|${src[t.NONNUMERICIDENTIFIER]})`)\n\ncreateToken('PRERELEASEIDENTIFIERLOOSE', `(?:${src[t.NUMERICIDENTIFIERLOOSE]\n}|${src[t.NONNUMERICIDENTIFIER]})`)\n\n// ## Pre-release Version\n// Hyphen, followed by one or more dot-separated pre-release version\n// identifiers.\n\ncreateToken('PRERELEASE', `(?:-(${src[t.PRERELEASEIDENTIFIER]\n}(?:\\\\.${src[t.PRERELEASEIDENTIFIER]})*))`)\n\ncreateToken('PRERELEASELOOSE', `(?:-?(${src[t.PRERELEASEIDENTIFIERLOOSE]\n}(?:\\\\.${src[t.PRERELEASEIDENTIFIERLOOSE]})*))`)\n\n// ## Build Metadata Identifier\n// Any combination of digits, letters, or hyphens.\n\ncreateToken('BUILDIDENTIFIER', '[0-9A-Za-z-]+')\n\n// ## Build Metadata\n// Plus sign, followed by one or more period-separated build metadata\n// identifiers.\n\ncreateToken('BUILD', `(?:\\\\+(${src[t.BUILDIDENTIFIER]\n}(?:\\\\.${src[t.BUILDIDENTIFIER]})*))`)\n\n// ## Full Version String\n// A main version, followed optionally by a pre-release version and\n// build metadata.\n\n// Note that the only major, minor, patch, and pre-release sections of\n// the version string are capturing groups. The build metadata is not a\n// capturing group, because it should not ever be used in version\n// comparison.\n\ncreateToken('FULLPLAIN', `v?${src[t.MAINVERSION]\n}${src[t.PRERELEASE]}?${\n src[t.BUILD]}?`)\n\ncreateToken('FULL', `^${src[t.FULLPLAIN]}$`)\n\n// like full, but allows v1.2.3 and =1.2.3, which people do sometimes.\n// also, 1.0.0alpha1 (prerelease without the hyphen) which is pretty\n// common in the npm registry.\ncreateToken('LOOSEPLAIN', `[v=\\\\s]*${src[t.MAINVERSIONLOOSE]\n}${src[t.PRERELEASELOOSE]}?${\n src[t.BUILD]}?`)\n\ncreateToken('LOOSE', `^${src[t.LOOSEPLAIN]}$`)\n\ncreateToken('GTLT', '((?:<|>)?=?)')\n\n// Something like \"2.*\" or \"1.2.x\".\n// Note that \"x.x\" is a valid xRange identifer, meaning \"any version\"\n// Only the first item is strictly required.\ncreateToken('XRANGEIDENTIFIERLOOSE', `${src[t.NUMERICIDENTIFIERLOOSE]}|x|X|\\\\*`)\ncreateToken('XRANGEIDENTIFIER', `${src[t.NUMERICIDENTIFIER]}|x|X|\\\\*`)\n\ncreateToken('XRANGEPLAIN', `[v=\\\\s]*(${src[t.XRANGEIDENTIFIER]})` +\n `(?:\\\\.(${src[t.XRANGEIDENTIFIER]})` +\n `(?:\\\\.(${src[t.XRANGEIDENTIFIER]})` +\n `(?:${src[t.PRERELEASE]})?${\n src[t.BUILD]}?` +\n `)?)?`)\n\ncreateToken('XRANGEPLAINLOOSE', `[v=\\\\s]*(${src[t.XRANGEIDENTIFIERLOOSE]})` +\n `(?:\\\\.(${src[t.XRANGEIDENTIFIERLOOSE]})` +\n `(?:\\\\.(${src[t.XRANGEIDENTIFIERLOOSE]})` +\n `(?:${src[t.PRERELEASELOOSE]})?${\n src[t.BUILD]}?` +\n `)?)?`)\n\ncreateToken('XRANGE', `^${src[t.GTLT]}\\\\s*${src[t.XRANGEPLAIN]}$`)\ncreateToken('XRANGELOOSE', `^${src[t.GTLT]}\\\\s*${src[t.XRANGEPLAINLOOSE]}$`)\n\n// Coercion.\n// Extract anything that could conceivably be a part of a valid semver\ncreateToken('COERCE', `${'(^|[^\\\\d])' +\n '(\\\\d{1,'}${MAX_SAFE_COMPONENT_LENGTH}})` +\n `(?:\\\\.(\\\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?` +\n `(?:\\\\.(\\\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?` +\n `(?:$|[^\\\\d])`)\ncreateToken('COERCERTL', src[t.COERCE], true)\n\n// Tilde ranges.\n// Meaning is \"reasonably at or greater than\"\ncreateToken('LONETILDE', '(?:~>?)')\n\ncreateToken('TILDETRIM', `(\\\\s*)${src[t.LONETILDE]}\\\\s+`, true)\nexports.tildeTrimReplace = '$1~'\n\ncreateToken('TILDE', `^${src[t.LONETILDE]}${src[t.XRANGEPLAIN]}$`)\ncreateToken('TILDELOOSE', `^${src[t.LONETILDE]}${src[t.XRANGEPLAINLOOSE]}$`)\n\n// Caret ranges.\n// Meaning is \"at least and backwards compatible with\"\ncreateToken('LONECARET', '(?:\\\\^)')\n\ncreateToken('CARETTRIM', `(\\\\s*)${src[t.LONECARET]}\\\\s+`, true)\nexports.caretTrimReplace = '$1^'\n\ncreateToken('CARET', `^${src[t.LONECARET]}${src[t.XRANGEPLAIN]}$`)\ncreateToken('CARETLOOSE', `^${src[t.LONECARET]}${src[t.XRANGEPLAINLOOSE]}$`)\n\n// A simple gt/lt/eq thing, or just \"\" to indicate \"any version\"\ncreateToken('COMPARATORLOOSE', `^${src[t.GTLT]}\\\\s*(${src[t.LOOSEPLAIN]})$|^$`)\ncreateToken('COMPARATOR', `^${src[t.GTLT]}\\\\s*(${src[t.FULLPLAIN]})$|^$`)\n\n// An expression to strip any whitespace between the gtlt and the thing\n// it modifies, so that `> 1.2.3` ==> `>1.2.3`\ncreateToken('COMPARATORTRIM', `(\\\\s*)${src[t.GTLT]\n}\\\\s*(${src[t.LOOSEPLAIN]}|${src[t.XRANGEPLAIN]})`, true)\nexports.comparatorTrimReplace = '$1$2$3'\n\n// Something like `1.2.3 - 1.2.4`\n// Note that these all use the loose form, because they'll be\n// checked against either the strict or loose comparator form\n// later.\ncreateToken('HYPHENRANGE', `^\\\\s*(${src[t.XRANGEPLAIN]})` +\n `\\\\s+-\\\\s+` +\n `(${src[t.XRANGEPLAIN]})` +\n `\\\\s*$`)\n\ncreateToken('HYPHENRANGELOOSE', `^\\\\s*(${src[t.XRANGEPLAINLOOSE]})` +\n `\\\\s+-\\\\s+` +\n `(${src[t.XRANGEPLAINLOOSE]})` +\n `\\\\s*$`)\n\n// Star ranges basically just allow anything at all.\ncreateToken('STAR', '(<|>)?=?\\\\s*\\\\*')\n// >=0.0.0 is like a star\ncreateToken('GTE0', '^\\\\s*>=\\\\s*0\\\\.0\\\\.0\\\\s*$')\ncreateToken('GTE0PRE', '^\\\\s*>=\\\\s*0\\\\.0\\\\.0-0\\\\s*$')\n", "// parse out just the options we care about so we always get a consistent\n// obj with keys in a consistent order.\nconst opts = ['includePrerelease', 'loose', 'rtl']\nconst parseOptions = options =>\n !options ? {}\n : typeof options !== 'object' ? { loose: true }\n : opts.filter(k => options[k]).reduce((o, k) => {\n o[k] = true\n return o\n }, {})\nmodule.exports = parseOptions\n", "const numeric = /^[0-9]+$/\nconst compareIdentifiers = (a, b) => {\n const anum = numeric.test(a)\n const bnum = numeric.test(b)\n\n if (anum && bnum) {\n a = +a\n b = +b\n }\n\n return a === b ? 0\n : (anum && !bnum) ? -1\n : (bnum && !anum) ? 1\n : a < b ? -1\n : 1\n}\n\nconst rcompareIdentifiers = (a, b) => compareIdentifiers(b, a)\n\nmodule.exports = {\n compareIdentifiers,\n rcompareIdentifiers,\n}\n", "const debug = require('../internal/debug')\nconst { MAX_LENGTH, MAX_SAFE_INTEGER } = require('../internal/constants')\nconst { re, t } = require('../internal/re')\n\nconst parseOptions = require('../internal/parse-options')\nconst { compareIdentifiers } = require('../internal/identifiers')\nclass SemVer {\n constructor (version, options) {\n options = parseOptions(options)\n\n if (version instanceof SemVer) {\n if (version.loose === !!options.loose &&\n version.includePrerelease === !!options.includePrerelease) {\n return version\n } else {\n version = version.version\n }\n } else if (typeof version !== 'string') {\n throw new TypeError(`Invalid Version: ${version}`)\n }\n\n if (version.length > MAX_LENGTH) {\n throw new TypeError(\n `version is longer than ${MAX_LENGTH} characters`\n )\n }\n\n debug('SemVer', version, options)\n this.options = options\n this.loose = !!options.loose\n // this isn't actually relevant for versions, but keep it so that we\n // don't run into trouble passing this.options around.\n this.includePrerelease = !!options.includePrerelease\n\n const m = version.trim().match(options.loose ? re[t.LOOSE] : re[t.FULL])\n\n if (!m) {\n throw new TypeError(`Invalid Version: ${version}`)\n }\n\n this.raw = version\n\n // these are actually numbers\n this.major = +m[1]\n this.minor = +m[2]\n this.patch = +m[3]\n\n if (this.major > MAX_SAFE_INTEGER || this.major < 0) {\n throw new TypeError('Invalid major version')\n }\n\n if (this.minor > MAX_SAFE_INTEGER || this.minor < 0) {\n throw new TypeError('Invalid minor version')\n }\n\n if (this.patch > MAX_SAFE_INTEGER || this.patch < 0) {\n throw new TypeError('Invalid patch version')\n }\n\n // numberify any prerelease numeric ids\n if (!m[4]) {\n this.prerelease = []\n } else {\n this.prerelease = m[4].split('.').map((id) => {\n if (/^[0-9]+$/.test(id)) {\n const num = +id\n if (num >= 0 && num < MAX_SAFE_INTEGER) {\n return num\n }\n }\n return id\n })\n }\n\n this.build = m[5] ? m[5].split('.') : []\n this.format()\n }\n\n format () {\n this.version = `${this.major}.${this.minor}.${this.patch}`\n if (this.prerelease.length) {\n this.version += `-${this.prerelease.join('.')}`\n }\n return this.version\n }\n\n toString () {\n return this.version\n }\n\n compare (other) {\n debug('SemVer.compare', this.version, this.options, other)\n if (!(other instanceof SemVer)) {\n if (typeof other === 'string' && other === this.version) {\n return 0\n }\n other = new SemVer(other, this.options)\n }\n\n if (other.version === this.version) {\n return 0\n }\n\n return this.compareMain(other) || this.comparePre(other)\n }\n\n compareMain (other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options)\n }\n\n return (\n compareIdentifiers(this.major, other.major) ||\n compareIdentifiers(this.minor, other.minor) ||\n compareIdentifiers(this.patch, other.patch)\n )\n }\n\n comparePre (other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options)\n }\n\n // NOT having a prerelease is > having one\n if (this.prerelease.length && !other.prerelease.length) {\n return -1\n } else if (!this.prerelease.length && other.prerelease.length) {\n return 1\n } else if (!this.prerelease.length && !other.prerelease.length) {\n return 0\n }\n\n let i = 0\n do {\n const a = this.prerelease[i]\n const b = other.prerelease[i]\n debug('prerelease compare', i, a, b)\n if (a === undefined && b === undefined) {\n return 0\n } else if (b === undefined) {\n return 1\n } else if (a === undefined) {\n return -1\n } else if (a === b) {\n continue\n } else {\n return compareIdentifiers(a, b)\n }\n } while (++i)\n }\n\n compareBuild (other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options)\n }\n\n let i = 0\n do {\n const a = this.build[i]\n const b = other.build[i]\n debug('prerelease compare', i, a, b)\n if (a === undefined && b === undefined) {\n return 0\n } else if (b === undefined) {\n return 1\n } else if (a === undefined) {\n return -1\n } else if (a === b) {\n continue\n } else {\n return compareIdentifiers(a, b)\n }\n } while (++i)\n }\n\n // preminor will bump the version up to the next minor release, and immediately\n // down to pre-release. premajor and prepatch work the same way.\n inc (release, identifier) {\n switch (release) {\n case 'premajor':\n this.prerelease.length = 0\n this.patch = 0\n this.minor = 0\n this.major++\n this.inc('pre', identifier)\n break\n case 'preminor':\n this.prerelease.length = 0\n this.patch = 0\n this.minor++\n this.inc('pre', identifier)\n break\n case 'prepatch':\n // If this is already a prerelease, it will bump to the next version\n // drop any prereleases that might already exist, since they are not\n // relevant at this point.\n this.prerelease.length = 0\n this.inc('patch', identifier)\n this.inc('pre', identifier)\n break\n // If the input is a non-prerelease version, this acts the same as\n // prepatch.\n case 'prerelease':\n if (this.prerelease.length === 0) {\n this.inc('patch', identifier)\n }\n this.inc('pre', identifier)\n break\n\n case 'major':\n // If this is a pre-major version, bump up to the same major version.\n // Otherwise increment major.\n // 1.0.0-5 bumps to 1.0.0\n // 1.1.0 bumps to 2.0.0\n if (\n this.minor !== 0 ||\n this.patch !== 0 ||\n this.prerelease.length === 0\n ) {\n this.major++\n }\n this.minor = 0\n this.patch = 0\n this.prerelease = []\n break\n case 'minor':\n // If this is a pre-minor version, bump up to the same minor version.\n // Otherwise increment minor.\n // 1.2.0-5 bumps to 1.2.0\n // 1.2.1 bumps to 1.3.0\n if (this.patch !== 0 || this.prerelease.length === 0) {\n this.minor++\n }\n this.patch = 0\n this.prerelease = []\n break\n case 'patch':\n // If this is not a pre-release version, it will increment the patch.\n // If it is a pre-release it will bump up to the same patch version.\n // 1.2.0-5 patches to 1.2.0\n // 1.2.0 patches to 1.2.1\n if (this.prerelease.length === 0) {\n this.patch++\n }\n this.prerelease = []\n break\n // This probably shouldn't be used publicly.\n // 1.0.0 'pre' would become 1.0.0-0 which is the wrong direction.\n case 'pre':\n if (this.prerelease.length === 0) {\n this.prerelease = [0]\n } else {\n let i = this.prerelease.length\n while (--i >= 0) {\n if (typeof this.prerelease[i] === 'number') {\n this.prerelease[i]++\n i = -2\n }\n }\n if (i === -1) {\n // didn't increment anything\n this.prerelease.push(0)\n }\n }\n if (identifier) {\n // 1.2.0-beta.1 bumps to 1.2.0-beta.2,\n // 1.2.0-beta.fooblz or 1.2.0-beta bumps to 1.2.0-beta.0\n if (compareIdentifiers(this.prerelease[0], identifier) === 0) {\n if (isNaN(this.prerelease[1])) {\n this.prerelease = [identifier, 0]\n }\n } else {\n this.prerelease = [identifier, 0]\n }\n }\n break\n\n default:\n throw new Error(`invalid increment argument: ${release}`)\n }\n this.format()\n this.raw = this.version\n return this\n }\n}\n\nmodule.exports = SemVer\n", "const { MAX_LENGTH } = require('../internal/constants')\nconst { re, t } = require('../internal/re')\nconst SemVer = require('../classes/semver')\n\nconst parseOptions = require('../internal/parse-options')\nconst parse = (version, options) => {\n options = parseOptions(options)\n\n if (version instanceof SemVer) {\n return version\n }\n\n if (typeof version !== 'string') {\n return null\n }\n\n if (version.length > MAX_LENGTH) {\n return null\n }\n\n const r = options.loose ? re[t.LOOSE] : re[t.FULL]\n if (!r.test(version)) {\n return null\n }\n\n try {\n return new SemVer(version, options)\n } catch (er) {\n return null\n }\n}\n\nmodule.exports = parse\n", "const parse = require('./parse')\nconst valid = (version, options) => {\n const v = parse(version, options)\n return v ? v.version : null\n}\nmodule.exports = valid\n", "const parse = require('./parse')\nconst clean = (version, options) => {\n const s = parse(version.trim().replace(/^[=v]+/, ''), options)\n return s ? s.version : null\n}\nmodule.exports = clean\n", "const SemVer = require('../classes/semver')\n\nconst inc = (version, release, options, identifier) => {\n if (typeof (options) === 'string') {\n identifier = options\n options = undefined\n }\n\n try {\n return new SemVer(\n version instanceof SemVer ? version.version : version,\n options\n ).inc(release, identifier).version\n } catch (er) {\n return null\n }\n}\nmodule.exports = inc\n", "const SemVer = require('../classes/semver')\nconst compare = (a, b, loose) =>\n new SemVer(a, loose).compare(new SemVer(b, loose))\n\nmodule.exports = compare\n", "const compare = require('./compare')\nconst eq = (a, b, loose) => compare(a, b, loose) === 0\nmodule.exports = eq\n", "const parse = require('./parse')\nconst eq = require('./eq')\n\nconst diff = (version1, version2) => {\n if (eq(version1, version2)) {\n return null\n } else {\n const v1 = parse(version1)\n const v2 = parse(version2)\n const hasPre = v1.prerelease.length || v2.prerelease.length\n const prefix = hasPre ? 'pre' : ''\n const defaultResult = hasPre ? 'prerelease' : ''\n for (const key in v1) {\n if (key === 'major' || key === 'minor' || key === 'patch') {\n if (v1[key] !== v2[key]) {\n return prefix + key\n }\n }\n }\n return defaultResult // may be undefined\n }\n}\nmodule.exports = diff\n", "const SemVer = require('../classes/semver')\nconst major = (a, loose) => new SemVer(a, loose).major\nmodule.exports = major\n", "const SemVer = require('../classes/semver')\nconst minor = (a, loose) => new SemVer(a, loose).minor\nmodule.exports = minor\n", "const SemVer = require('../classes/semver')\nconst patch = (a, loose) => new SemVer(a, loose).patch\nmodule.exports = patch\n", "const parse = require('./parse')\nconst prerelease = (version, options) => {\n const parsed = parse(version, options)\n return (parsed && parsed.prerelease.length) ? parsed.prerelease : null\n}\nmodule.exports = prerelease\n", "const compare = require('./compare')\nconst rcompare = (a, b, loose) => compare(b, a, loose)\nmodule.exports = rcompare\n", "const compare = require('./compare')\nconst compareLoose = (a, b) => compare(a, b, true)\nmodule.exports = compareLoose\n", "const SemVer = require('../classes/semver')\nconst compareBuild = (a, b, loose) => {\n const versionA = new SemVer(a, loose)\n const versionB = new SemVer(b, loose)\n return versionA.compare(versionB) || versionA.compareBuild(versionB)\n}\nmodule.exports = compareBuild\n", "const compareBuild = require('./compare-build')\nconst sort = (list, loose) => list.sort((a, b) => compareBuild(a, b, loose))\nmodule.exports = sort\n", "const compareBuild = require('./compare-build')\nconst rsort = (list, loose) => list.sort((a, b) => compareBuild(b, a, loose))\nmodule.exports = rsort\n", "const compare = require('./compare')\nconst gt = (a, b, loose) => compare(a, b, loose) > 0\nmodule.exports = gt\n", "const compare = require('./compare')\nconst lt = (a, b, loose) => compare(a, b, loose) < 0\nmodule.exports = lt\n", "const compare = require('./compare')\nconst neq = (a, b, loose) => compare(a, b, loose) !== 0\nmodule.exports = neq\n", "const compare = require('./compare')\nconst gte = (a, b, loose) => compare(a, b, loose) >= 0\nmodule.exports = gte\n", "const compare = require('./compare')\nconst lte = (a, b, loose) => compare(a, b, loose) <= 0\nmodule.exports = lte\n", "const eq = require('./eq')\nconst neq = require('./neq')\nconst gt = require('./gt')\nconst gte = require('./gte')\nconst lt = require('./lt')\nconst lte = require('./lte')\n\nconst cmp = (a, op, b, loose) => {\n switch (op) {\n case '===':\n if (typeof a === 'object') {\n a = a.version\n }\n if (typeof b === 'object') {\n b = b.version\n }\n return a === b\n\n case '!==':\n if (typeof a === 'object') {\n a = a.version\n }\n if (typeof b === 'object') {\n b = b.version\n }\n return a !== b\n\n case '':\n case '=':\n case '==':\n return eq(a, b, loose)\n\n case '!=':\n return neq(a, b, loose)\n\n case '>':\n return gt(a, b, loose)\n\n case '>=':\n return gte(a, b, loose)\n\n case '<':\n return lt(a, b, loose)\n\n case '<=':\n return lte(a, b, loose)\n\n default:\n throw new TypeError(`Invalid operator: ${op}`)\n }\n}\nmodule.exports = cmp\n", "const SemVer = require('../classes/semver')\nconst parse = require('./parse')\nconst { re, t } = require('../internal/re')\n\nconst coerce = (version, options) => {\n if (version instanceof SemVer) {\n return version\n }\n\n if (typeof version === 'number') {\n version = String(version)\n }\n\n if (typeof version !== 'string') {\n return null\n }\n\n options = options || {}\n\n let match = null\n if (!options.rtl) {\n match = version.match(re[t.COERCE])\n } else {\n // Find the right-most coercible string that does not share\n // a terminus with a more left-ward coercible string.\n // Eg, '1.2.3.4' wants to coerce '2.3.4', not '3.4' or '4'\n //\n // Walk through the string checking with a /g regexp\n // Manually set the index so as to pick up overlapping matches.\n // Stop when we get a match that ends at the string end, since no\n // coercible string can be more right-ward without the same terminus.\n let next\n while ((next = re[t.COERCERTL].exec(version)) &&\n (!match || match.index + match[0].length !== version.length)\n ) {\n if (!match ||\n next.index + next[0].length !== match.index + match[0].length) {\n match = next\n }\n re[t.COERCERTL].lastIndex = next.index + next[1].length + next[2].length\n }\n // leave it in a clean state\n re[t.COERCERTL].lastIndex = -1\n }\n\n if (match === null) {\n return null\n }\n\n return parse(`${match[2]}.${match[3] || '0'}.${match[4] || '0'}`, options)\n}\nmodule.exports = coerce\n", "'use strict'\nmodule.exports = function (Yallist) {\n Yallist.prototype[Symbol.iterator] = function* () {\n for (let walker = this.head; walker; walker = walker.next) {\n yield walker.value\n }\n }\n}\n", "'use strict'\nmodule.exports = Yallist\n\nYallist.Node = Node\nYallist.create = Yallist\n\nfunction Yallist (list) {\n var self = this\n if (!(self instanceof Yallist)) {\n self = new Yallist()\n }\n\n self.tail = null\n self.head = null\n self.length = 0\n\n if (list && typeof list.forEach === 'function') {\n list.forEach(function (item) {\n self.push(item)\n })\n } else if (arguments.length > 0) {\n for (var i = 0, l = arguments.length; i < l; i++) {\n self.push(arguments[i])\n }\n }\n\n return self\n}\n\nYallist.prototype.removeNode = function (node) {\n if (node.list !== this) {\n throw new Error('removing node which does not belong to this list')\n }\n\n var next = node.next\n var prev = node.prev\n\n if (next) {\n next.prev = prev\n }\n\n if (prev) {\n prev.next = next\n }\n\n if (node === this.head) {\n this.head = next\n }\n if (node === this.tail) {\n this.tail = prev\n }\n\n node.list.length--\n node.next = null\n node.prev = null\n node.list = null\n\n return next\n}\n\nYallist.prototype.unshiftNode = function (node) {\n if (node === this.head) {\n return\n }\n\n if (node.list) {\n node.list.removeNode(node)\n }\n\n var head = this.head\n node.list = this\n node.next = head\n if (head) {\n head.prev = node\n }\n\n this.head = node\n if (!this.tail) {\n this.tail = node\n }\n this.length++\n}\n\nYallist.prototype.pushNode = function (node) {\n if (node === this.tail) {\n return\n }\n\n if (node.list) {\n node.list.removeNode(node)\n }\n\n var tail = this.tail\n node.list = this\n node.prev = tail\n if (tail) {\n tail.next = node\n }\n\n this.tail = node\n if (!this.head) {\n this.head = node\n }\n this.length++\n}\n\nYallist.prototype.push = function () {\n for (var i = 0, l = arguments.length; i < l; i++) {\n push(this, arguments[i])\n }\n return this.length\n}\n\nYallist.prototype.unshift = function () {\n for (var i = 0, l = arguments.length; i < l; i++) {\n unshift(this, arguments[i])\n }\n return this.length\n}\n\nYallist.prototype.pop = function () {\n if (!this.tail) {\n return undefined\n }\n\n var res = this.tail.value\n this.tail = this.tail.prev\n if (this.tail) {\n this.tail.next = null\n } else {\n this.head = null\n }\n this.length--\n return res\n}\n\nYallist.prototype.shift = function () {\n if (!this.head) {\n return undefined\n }\n\n var res = this.head.value\n this.head = this.head.next\n if (this.head) {\n this.head.prev = null\n } else {\n this.tail = null\n }\n this.length--\n return res\n}\n\nYallist.prototype.forEach = function (fn, thisp) {\n thisp = thisp || this\n for (var walker = this.head, i = 0; walker !== null; i++) {\n fn.call(thisp, walker.value, i, this)\n walker = walker.next\n }\n}\n\nYallist.prototype.forEachReverse = function (fn, thisp) {\n thisp = thisp || this\n for (var walker = this.tail, i = this.length - 1; walker !== null; i--) {\n fn.call(thisp, walker.value, i, this)\n walker = walker.prev\n }\n}\n\nYallist.prototype.get = function (n) {\n for (var i = 0, walker = this.head; walker !== null && i < n; i++) {\n // abort out of the list early if we hit a cycle\n walker = walker.next\n }\n if (i === n && walker !== null) {\n return walker.value\n }\n}\n\nYallist.prototype.getReverse = function (n) {\n for (var i = 0, walker = this.tail; walker !== null && i < n; i++) {\n // abort out of the list early if we hit a cycle\n walker = walker.prev\n }\n if (i === n && walker !== null) {\n return walker.value\n }\n}\n\nYallist.prototype.map = function (fn, thisp) {\n thisp = thisp || this\n var res = new Yallist()\n for (var walker = this.head; walker !== null;) {\n res.push(fn.call(thisp, walker.value, this))\n walker = walker.next\n }\n return res\n}\n\nYallist.prototype.mapReverse = function (fn, thisp) {\n thisp = thisp || this\n var res = new Yallist()\n for (var walker = this.tail; walker !== null;) {\n res.push(fn.call(thisp, walker.value, this))\n walker = walker.prev\n }\n return res\n}\n\nYallist.prototype.reduce = function (fn, initial) {\n var acc\n var walker = this.head\n if (arguments.length > 1) {\n acc = initial\n } else if (this.head) {\n walker = this.head.next\n acc = this.head.value\n } else {\n throw new TypeError('Reduce of empty list with no initial value')\n }\n\n for (var i = 0; walker !== null; i++) {\n acc = fn(acc, walker.value, i)\n walker = walker.next\n }\n\n return acc\n}\n\nYallist.prototype.reduceReverse = function (fn, initial) {\n var acc\n var walker = this.tail\n if (arguments.length > 1) {\n acc = initial\n } else if (this.tail) {\n walker = this.tail.prev\n acc = this.tail.value\n } else {\n throw new TypeError('Reduce of empty list with no initial value')\n }\n\n for (var i = this.length - 1; walker !== null; i--) {\n acc = fn(acc, walker.value, i)\n walker = walker.prev\n }\n\n return acc\n}\n\nYallist.prototype.toArray = function () {\n var arr = new Array(this.length)\n for (var i = 0, walker = this.head; walker !== null; i++) {\n arr[i] = walker.value\n walker = walker.next\n }\n return arr\n}\n\nYallist.prototype.toArrayReverse = function () {\n var arr = new Array(this.length)\n for (var i = 0, walker = this.tail; walker !== null; i++) {\n arr[i] = walker.value\n walker = walker.prev\n }\n return arr\n}\n\nYallist.prototype.slice = function (from, to) {\n to = to || this.length\n if (to < 0) {\n to += this.length\n }\n from = from || 0\n if (from < 0) {\n from += this.length\n }\n var ret = new Yallist()\n if (to < from || to < 0) {\n return ret\n }\n if (from < 0) {\n from = 0\n }\n if (to > this.length) {\n to = this.length\n }\n for (var i = 0, walker = this.head; walker !== null && i < from; i++) {\n walker = walker.next\n }\n for (; walker !== null && i < to; i++, walker = walker.next) {\n ret.push(walker.value)\n }\n return ret\n}\n\nYallist.prototype.sliceReverse = function (from, to) {\n to = to || this.length\n if (to < 0) {\n to += this.length\n }\n from = from || 0\n if (from < 0) {\n from += this.length\n }\n var ret = new Yallist()\n if (to < from || to < 0) {\n return ret\n }\n if (from < 0) {\n from = 0\n }\n if (to > this.length) {\n to = this.length\n }\n for (var i = this.length, walker = this.tail; walker !== null && i > to; i--) {\n walker = walker.prev\n }\n for (; walker !== null && i > from; i--, walker = walker.prev) {\n ret.push(walker.value)\n }\n return ret\n}\n\nYallist.prototype.splice = function (start, deleteCount, ...nodes) {\n if (start > this.length) {\n start = this.length - 1\n }\n if (start < 0) {\n start = this.length + start;\n }\n\n for (var i = 0, walker = this.head; walker !== null && i < start; i++) {\n walker = walker.next\n }\n\n var ret = []\n for (var i = 0; walker && i < deleteCount; i++) {\n ret.push(walker.value)\n walker = this.removeNode(walker)\n }\n if (walker === null) {\n walker = this.tail\n }\n\n if (walker !== this.head && walker !== this.tail) {\n walker = walker.prev\n }\n\n for (var i = 0; i < nodes.length; i++) {\n walker = insert(this, walker, nodes[i])\n }\n return ret;\n}\n\nYallist.prototype.reverse = function () {\n var head = this.head\n var tail = this.tail\n for (var walker = head; walker !== null; walker = walker.prev) {\n var p = walker.prev\n walker.prev = walker.next\n walker.next = p\n }\n this.head = tail\n this.tail = head\n return this\n}\n\nfunction insert (self, node, value) {\n var inserted = node === self.head ?\n new Node(value, null, node, self) :\n new Node(value, node, node.next, self)\n\n if (inserted.next === null) {\n self.tail = inserted\n }\n if (inserted.prev === null) {\n self.head = inserted\n }\n\n self.length++\n\n return inserted\n}\n\nfunction push (self, item) {\n self.tail = new Node(item, self.tail, null, self)\n if (!self.head) {\n self.head = self.tail\n }\n self.length++\n}\n\nfunction unshift (self, item) {\n self.head = new Node(item, null, self.head, self)\n if (!self.tail) {\n self.tail = self.head\n }\n self.length++\n}\n\nfunction Node (value, prev, next, list) {\n if (!(this instanceof Node)) {\n return new Node(value, prev, next, list)\n }\n\n this.list = list\n this.value = value\n\n if (prev) {\n prev.next = this\n this.prev = prev\n } else {\n this.prev = null\n }\n\n if (next) {\n next.prev = this\n this.next = next\n } else {\n this.next = null\n }\n}\n\ntry {\n // add if support for Symbol.iterator is present\n require('./iterator.js')(Yallist)\n} catch (er) {}\n", "'use strict'\n\n// A linked list to keep track of recently-used-ness\nconst Yallist = require('yallist')\n\nconst MAX = Symbol('max')\nconst LENGTH = Symbol('length')\nconst LENGTH_CALCULATOR = Symbol('lengthCalculator')\nconst ALLOW_STALE = Symbol('allowStale')\nconst MAX_AGE = Symbol('maxAge')\nconst DISPOSE = Symbol('dispose')\nconst NO_DISPOSE_ON_SET = Symbol('noDisposeOnSet')\nconst LRU_LIST = Symbol('lruList')\nconst CACHE = Symbol('cache')\nconst UPDATE_AGE_ON_GET = Symbol('updateAgeOnGet')\n\nconst naiveLength = () => 1\n\n// lruList is a yallist where the head is the youngest\n// item, and the tail is the oldest. the list contains the Hit\n// objects as the entries.\n// Each Hit object has a reference to its Yallist.Node. This\n// never changes.\n//\n// cache is a Map (or PseudoMap) that matches the keys to\n// the Yallist.Node object.\nclass LRUCache {\n constructor (options) {\n if (typeof options === 'number')\n options = { max: options }\n\n if (!options)\n options = {}\n\n if (options.max && (typeof options.max !== 'number' || options.max < 0))\n throw new TypeError('max must be a non-negative number')\n // Kind of weird to have a default max of Infinity, but oh well.\n const max = this[MAX] = options.max || Infinity\n\n const lc = options.length || naiveLength\n this[LENGTH_CALCULATOR] = (typeof lc !== 'function') ? naiveLength : lc\n this[ALLOW_STALE] = options.stale || false\n if (options.maxAge && typeof options.maxAge !== 'number')\n throw new TypeError('maxAge must be a number')\n this[MAX_AGE] = options.maxAge || 0\n this[DISPOSE] = options.dispose\n this[NO_DISPOSE_ON_SET] = options.noDisposeOnSet || false\n this[UPDATE_AGE_ON_GET] = options.updateAgeOnGet || false\n this.reset()\n }\n\n // resize the cache when the max changes.\n set max (mL) {\n if (typeof mL !== 'number' || mL < 0)\n throw new TypeError('max must be a non-negative number')\n\n this[MAX] = mL || Infinity\n trim(this)\n }\n get max () {\n return this[MAX]\n }\n\n set allowStale (allowStale) {\n this[ALLOW_STALE] = !!allowStale\n }\n get allowStale () {\n return this[ALLOW_STALE]\n }\n\n set maxAge (mA) {\n if (typeof mA !== 'number')\n throw new TypeError('maxAge must be a non-negative number')\n\n this[MAX_AGE] = mA\n trim(this)\n }\n get maxAge () {\n return this[MAX_AGE]\n }\n\n // resize the cache when the lengthCalculator changes.\n set lengthCalculator (lC) {\n if (typeof lC !== 'function')\n lC = naiveLength\n\n if (lC !== this[LENGTH_CALCULATOR]) {\n this[LENGTH_CALCULATOR] = lC\n this[LENGTH] = 0\n this[LRU_LIST].forEach(hit => {\n hit.length = this[LENGTH_CALCULATOR](hit.value, hit.key)\n this[LENGTH] += hit.length\n })\n }\n trim(this)\n }\n get lengthCalculator () { return this[LENGTH_CALCULATOR] }\n\n get length () { return this[LENGTH] }\n get itemCount () { return this[LRU_LIST].length }\n\n rforEach (fn, thisp) {\n thisp = thisp || this\n for (let walker = this[LRU_LIST].tail; walker !== null;) {\n const prev = walker.prev\n forEachStep(this, fn, walker, thisp)\n walker = prev\n }\n }\n\n forEach (fn, thisp) {\n thisp = thisp || this\n for (let walker = this[LRU_LIST].head; walker !== null;) {\n const next = walker.next\n forEachStep(this, fn, walker, thisp)\n walker = next\n }\n }\n\n keys () {\n return this[LRU_LIST].toArray().map(k => k.key)\n }\n\n values () {\n return this[LRU_LIST].toArray().map(k => k.value)\n }\n\n reset () {\n if (this[DISPOSE] &&\n this[LRU_LIST] &&\n this[LRU_LIST].length) {\n this[LRU_LIST].forEach(hit => this[DISPOSE](hit.key, hit.value))\n }\n\n this[CACHE] = new Map() // hash of items by key\n this[LRU_LIST] = new Yallist() // list of items in order of use recency\n this[LENGTH] = 0 // length of items in the list\n }\n\n dump () {\n return this[LRU_LIST].map(hit =>\n isStale(this, hit) ? false : {\n k: hit.key,\n v: hit.value,\n e: hit.now + (hit.maxAge || 0)\n }).toArray().filter(h => h)\n }\n\n dumpLru () {\n return this[LRU_LIST]\n }\n\n set (key, value, maxAge) {\n maxAge = maxAge || this[MAX_AGE]\n\n if (maxAge && typeof maxAge !== 'number')\n throw new TypeError('maxAge must be a number')\n\n const now = maxAge ? Date.now() : 0\n const len = this[LENGTH_CALCULATOR](value, key)\n\n if (this[CACHE].has(key)) {\n if (len > this[MAX]) {\n del(this, this[CACHE].get(key))\n return false\n }\n\n const node = this[CACHE].get(key)\n const item = node.value\n\n // dispose of the old one before overwriting\n // split out into 2 ifs for better coverage tracking\n if (this[DISPOSE]) {\n if (!this[NO_DISPOSE_ON_SET])\n this[DISPOSE](key, item.value)\n }\n\n item.now = now\n item.maxAge = maxAge\n item.value = value\n this[LENGTH] += len - item.length\n item.length = len\n this.get(key)\n trim(this)\n return true\n }\n\n const hit = new Entry(key, value, len, now, maxAge)\n\n // oversized objects fall out of cache automatically.\n if (hit.length > this[MAX]) {\n if (this[DISPOSE])\n this[DISPOSE](key, value)\n\n return false\n }\n\n this[LENGTH] += hit.length\n this[LRU_LIST].unshift(hit)\n this[CACHE].set(key, this[LRU_LIST].head)\n trim(this)\n return true\n }\n\n has (key) {\n if (!this[CACHE].has(key)) return false\n const hit = this[CACHE].get(key).value\n return !isStale(this, hit)\n }\n\n get (key) {\n return get(this, key, true)\n }\n\n peek (key) {\n return get(this, key, false)\n }\n\n pop () {\n const node = this[LRU_LIST].tail\n if (!node)\n return null\n\n del(this, node)\n return node.value\n }\n\n del (key) {\n del(this, this[CACHE].get(key))\n }\n\n load (arr) {\n // reset the cache\n this.reset()\n\n const now = Date.now()\n // A previous serialized cache has the most recent items first\n for (let l = arr.length - 1; l >= 0; l--) {\n const hit = arr[l]\n const expiresAt = hit.e || 0\n if (expiresAt === 0)\n // the item was created without expiration in a non aged cache\n this.set(hit.k, hit.v)\n else {\n const maxAge = expiresAt - now\n // dont add already expired items\n if (maxAge > 0) {\n this.set(hit.k, hit.v, maxAge)\n }\n }\n }\n }\n\n prune () {\n this[CACHE].forEach((value, key) => get(this, key, false))\n }\n}\n\nconst get = (self, key, doUse) => {\n const node = self[CACHE].get(key)\n if (node) {\n const hit = node.value\n if (isStale(self, hit)) {\n del(self, node)\n if (!self[ALLOW_STALE])\n return undefined\n } else {\n if (doUse) {\n if (self[UPDATE_AGE_ON_GET])\n node.value.now = Date.now()\n self[LRU_LIST].unshiftNode(node)\n }\n }\n return hit.value\n }\n}\n\nconst isStale = (self, hit) => {\n if (!hit || (!hit.maxAge && !self[MAX_AGE]))\n return false\n\n const diff = Date.now() - hit.now\n return hit.maxAge ? diff > hit.maxAge\n : self[MAX_AGE] && (diff > self[MAX_AGE])\n}\n\nconst trim = self => {\n if (self[LENGTH] > self[MAX]) {\n for (let walker = self[LRU_LIST].tail;\n self[LENGTH] > self[MAX] && walker !== null;) {\n // We know that we're about to delete this one, and also\n // what the next least recently used key will be, so just\n // go ahead and set it now.\n const prev = walker.prev\n del(self, walker)\n walker = prev\n }\n }\n}\n\nconst del = (self, node) => {\n if (node) {\n const hit = node.value\n if (self[DISPOSE])\n self[DISPOSE](hit.key, hit.value)\n\n self[LENGTH] -= hit.length\n self[CACHE].delete(hit.key)\n self[LRU_LIST].removeNode(node)\n }\n}\n\nclass Entry {\n constructor (key, value, length, now, maxAge) {\n this.key = key\n this.value = value\n this.length = length\n this.now = now\n this.maxAge = maxAge || 0\n }\n}\n\nconst forEachStep = (self, fn, node, thisp) => {\n let hit = node.value\n if (isStale(self, hit)) {\n del(self, node)\n if (!self[ALLOW_STALE])\n hit = undefined\n }\n if (hit)\n fn.call(thisp, hit.value, hit.key, self)\n}\n\nmodule.exports = LRUCache\n", "// hoisted class for cyclic dependency\nclass Range {\n constructor (range, options) {\n options = parseOptions(options)\n\n if (range instanceof Range) {\n if (\n range.loose === !!options.loose &&\n range.includePrerelease === !!options.includePrerelease\n ) {\n return range\n } else {\n return new Range(range.raw, options)\n }\n }\n\n if (range instanceof Comparator) {\n // just put it in the set and return\n this.raw = range.value\n this.set = [[range]]\n this.format()\n return this\n }\n\n this.options = options\n this.loose = !!options.loose\n this.includePrerelease = !!options.includePrerelease\n\n // First, split based on boolean or ||\n this.raw = range\n this.set = range\n .split('||')\n // map the range to a 2d array of comparators\n .map(r => this.parseRange(r.trim()))\n // throw out any comparator lists that are empty\n // this generally means that it was not a valid range, which is allowed\n // in loose mode, but will still throw if the WHOLE range is invalid.\n .filter(c => c.length)\n\n if (!this.set.length) {\n throw new TypeError(`Invalid SemVer Range: ${range}`)\n }\n\n // if we have any that are not the null set, throw out null sets.\n if (this.set.length > 1) {\n // keep the first one, in case they're all null sets\n const first = this.set[0]\n this.set = this.set.filter(c => !isNullSet(c[0]))\n if (this.set.length === 0) {\n this.set = [first]\n } else if (this.set.length > 1) {\n // if we have any that are *, then the range is just *\n for (const c of this.set) {\n if (c.length === 1 && isAny(c[0])) {\n this.set = [c]\n break\n }\n }\n }\n }\n\n this.format()\n }\n\n format () {\n this.range = this.set\n .map((comps) => {\n return comps.join(' ').trim()\n })\n .join('||')\n .trim()\n return this.range\n }\n\n toString () {\n return this.range\n }\n\n parseRange (range) {\n range = range.trim()\n\n // memoize range parsing for performance.\n // this is a very hot path, and fully deterministic.\n const memoOpts = Object.keys(this.options).join(',')\n const memoKey = `parseRange:${memoOpts}:${range}`\n const cached = cache.get(memoKey)\n if (cached) {\n return cached\n }\n\n const loose = this.options.loose\n // `1.2.3 - 1.2.4` => `>=1.2.3 <=1.2.4`\n const hr = loose ? re[t.HYPHENRANGELOOSE] : re[t.HYPHENRANGE]\n range = range.replace(hr, hyphenReplace(this.options.includePrerelease))\n debug('hyphen replace', range)\n // `> 1.2.3 < 1.2.5` => `>1.2.3 <1.2.5`\n range = range.replace(re[t.COMPARATORTRIM], comparatorTrimReplace)\n debug('comparator trim', range)\n\n // `~ 1.2.3` => `~1.2.3`\n range = range.replace(re[t.TILDETRIM], tildeTrimReplace)\n\n // `^ 1.2.3` => `^1.2.3`\n range = range.replace(re[t.CARETTRIM], caretTrimReplace)\n\n // normalize spaces\n range = range.split(/\\s+/).join(' ')\n\n // At this point, the range is completely trimmed and\n // ready to be split into comparators.\n\n let rangeList = range\n .split(' ')\n .map(comp => parseComparator(comp, this.options))\n .join(' ')\n .split(/\\s+/)\n // >=0.0.0 is equivalent to *\n .map(comp => replaceGTE0(comp, this.options))\n\n if (loose) {\n // in loose mode, throw out any that are not valid comparators\n rangeList = rangeList.filter(comp => {\n debug('loose invalid filter', comp, this.options)\n return !!comp.match(re[t.COMPARATORLOOSE])\n })\n }\n debug('range list', rangeList)\n\n // if any comparators are the null set, then replace with JUST null set\n // if more than one comparator, remove any * comparators\n // also, don't include the same comparator more than once\n const rangeMap = new Map()\n const comparators = rangeList.map(comp => new Comparator(comp, this.options))\n for (const comp of comparators) {\n if (isNullSet(comp)) {\n return [comp]\n }\n rangeMap.set(comp.value, comp)\n }\n if (rangeMap.size > 1 && rangeMap.has('')) {\n rangeMap.delete('')\n }\n\n const result = [...rangeMap.values()]\n cache.set(memoKey, result)\n return result\n }\n\n intersects (range, options) {\n if (!(range instanceof Range)) {\n throw new TypeError('a Range is required')\n }\n\n return this.set.some((thisComparators) => {\n return (\n isSatisfiable(thisComparators, options) &&\n range.set.some((rangeComparators) => {\n return (\n isSatisfiable(rangeComparators, options) &&\n thisComparators.every((thisComparator) => {\n return rangeComparators.every((rangeComparator) => {\n return thisComparator.intersects(rangeComparator, options)\n })\n })\n )\n })\n )\n })\n }\n\n // if ANY of the sets match ALL of its comparators, then pass\n test (version) {\n if (!version) {\n return false\n }\n\n if (typeof version === 'string') {\n try {\n version = new SemVer(version, this.options)\n } catch (er) {\n return false\n }\n }\n\n for (let i = 0; i < this.set.length; i++) {\n if (testSet(this.set[i], version, this.options)) {\n return true\n }\n }\n return false\n }\n}\nmodule.exports = Range\n\nconst LRU = require('lru-cache')\nconst cache = new LRU({ max: 1000 })\n\nconst parseOptions = require('../internal/parse-options')\nconst Comparator = require('./comparator')\nconst debug = require('../internal/debug')\nconst SemVer = require('./semver')\nconst {\n re,\n t,\n comparatorTrimReplace,\n tildeTrimReplace,\n caretTrimReplace,\n} = require('../internal/re')\n\nconst isNullSet = c => c.value === '<0.0.0-0'\nconst isAny = c => c.value === ''\n\n// take a set of comparators and determine whether there\n// exists a version which can satisfy it\nconst isSatisfiable = (comparators, options) => {\n let result = true\n const remainingComparators = comparators.slice()\n let testComparator = remainingComparators.pop()\n\n while (result && remainingComparators.length) {\n result = remainingComparators.every((otherComparator) => {\n return testComparator.intersects(otherComparator, options)\n })\n\n testComparator = remainingComparators.pop()\n }\n\n return result\n}\n\n// comprised of xranges, tildes, stars, and gtlt's at this point.\n// already replaced the hyphen ranges\n// turn into a set of JUST comparators.\nconst parseComparator = (comp, options) => {\n debug('comp', comp, options)\n comp = replaceCarets(comp, options)\n debug('caret', comp)\n comp = replaceTildes(comp, options)\n debug('tildes', comp)\n comp = replaceXRanges(comp, options)\n debug('xrange', comp)\n comp = replaceStars(comp, options)\n debug('stars', comp)\n return comp\n}\n\nconst isX = id => !id || id.toLowerCase() === 'x' || id === '*'\n\n// ~, ~> --> * (any, kinda silly)\n// ~2, ~2.x, ~2.x.x, ~>2, ~>2.x ~>2.x.x --> >=2.0.0 <3.0.0-0\n// ~2.0, ~2.0.x, ~>2.0, ~>2.0.x --> >=2.0.0 <2.1.0-0\n// ~1.2, ~1.2.x, ~>1.2, ~>1.2.x --> >=1.2.0 <1.3.0-0\n// ~1.2.3, ~>1.2.3 --> >=1.2.3 <1.3.0-0\n// ~1.2.0, ~>1.2.0 --> >=1.2.0 <1.3.0-0\n// ~0.0.1 --> >=0.0.1 <0.1.0-0\nconst replaceTildes = (comp, options) =>\n comp.trim().split(/\\s+/).map((c) => {\n return replaceTilde(c, options)\n }).join(' ')\n\nconst replaceTilde = (comp, options) => {\n const r = options.loose ? re[t.TILDELOOSE] : re[t.TILDE]\n return comp.replace(r, (_, M, m, p, pr) => {\n debug('tilde', comp, _, M, m, p, pr)\n let ret\n\n if (isX(M)) {\n ret = ''\n } else if (isX(m)) {\n ret = `>=${M}.0.0 <${+M + 1}.0.0-0`\n } else if (isX(p)) {\n // ~1.2 == >=1.2.0 <1.3.0-0\n ret = `>=${M}.${m}.0 <${M}.${+m + 1}.0-0`\n } else if (pr) {\n debug('replaceTilde pr', pr)\n ret = `>=${M}.${m}.${p}-${pr\n } <${M}.${+m + 1}.0-0`\n } else {\n // ~1.2.3 == >=1.2.3 <1.3.0-0\n ret = `>=${M}.${m}.${p\n } <${M}.${+m + 1}.0-0`\n }\n\n debug('tilde return', ret)\n return ret\n })\n}\n\n// ^ --> * (any, kinda silly)\n// ^2, ^2.x, ^2.x.x --> >=2.0.0 <3.0.0-0\n// ^2.0, ^2.0.x --> >=2.0.0 <3.0.0-0\n// ^1.2, ^1.2.x --> >=1.2.0 <2.0.0-0\n// ^1.2.3 --> >=1.2.3 <2.0.0-0\n// ^1.2.0 --> >=1.2.0 <2.0.0-0\n// ^0.0.1 --> >=0.0.1 <0.0.2-0\n// ^0.1.0 --> >=0.1.0 <0.2.0-0\nconst replaceCarets = (comp, options) =>\n comp.trim().split(/\\s+/).map((c) => {\n return replaceCaret(c, options)\n }).join(' ')\n\nconst replaceCaret = (comp, options) => {\n debug('caret', comp, options)\n const r = options.loose ? re[t.CARETLOOSE] : re[t.CARET]\n const z = options.includePrerelease ? '-0' : ''\n return comp.replace(r, (_, M, m, p, pr) => {\n debug('caret', comp, _, M, m, p, pr)\n let ret\n\n if (isX(M)) {\n ret = ''\n } else if (isX(m)) {\n ret = `>=${M}.0.0${z} <${+M + 1}.0.0-0`\n } else if (isX(p)) {\n if (M === '0') {\n ret = `>=${M}.${m}.0${z} <${M}.${+m + 1}.0-0`\n } else {\n ret = `>=${M}.${m}.0${z} <${+M + 1}.0.0-0`\n }\n } else if (pr) {\n debug('replaceCaret pr', pr)\n if (M === '0') {\n if (m === '0') {\n ret = `>=${M}.${m}.${p}-${pr\n } <${M}.${m}.${+p + 1}-0`\n } else {\n ret = `>=${M}.${m}.${p}-${pr\n } <${M}.${+m + 1}.0-0`\n }\n } else {\n ret = `>=${M}.${m}.${p}-${pr\n } <${+M + 1}.0.0-0`\n }\n } else {\n debug('no pr')\n if (M === '0') {\n if (m === '0') {\n ret = `>=${M}.${m}.${p\n }${z} <${M}.${m}.${+p + 1}-0`\n } else {\n ret = `>=${M}.${m}.${p\n }${z} <${M}.${+m + 1}.0-0`\n }\n } else {\n ret = `>=${M}.${m}.${p\n } <${+M + 1}.0.0-0`\n }\n }\n\n debug('caret return', ret)\n return ret\n })\n}\n\nconst replaceXRanges = (comp, options) => {\n debug('replaceXRanges', comp, options)\n return comp.split(/\\s+/).map((c) => {\n return replaceXRange(c, options)\n }).join(' ')\n}\n\nconst replaceXRange = (comp, options) => {\n comp = comp.trim()\n const r = options.loose ? re[t.XRANGELOOSE] : re[t.XRANGE]\n return comp.replace(r, (ret, gtlt, M, m, p, pr) => {\n debug('xRange', comp, ret, gtlt, M, m, p, pr)\n const xM = isX(M)\n const xm = xM || isX(m)\n const xp = xm || isX(p)\n const anyX = xp\n\n if (gtlt === '=' && anyX) {\n gtlt = ''\n }\n\n // if we're including prereleases in the match, then we need\n // to fix this to -0, the lowest possible prerelease value\n pr = options.includePrerelease ? '-0' : ''\n\n if (xM) {\n if (gtlt === '>' || gtlt === '<') {\n // nothing is allowed\n ret = '<0.0.0-0'\n } else {\n // nothing is forbidden\n ret = '*'\n }\n } else if (gtlt && anyX) {\n // we know patch is an x, because we have any x at all.\n // replace X with 0\n if (xm) {\n m = 0\n }\n p = 0\n\n if (gtlt === '>') {\n // >1 => >=2.0.0\n // >1.2 => >=1.3.0\n gtlt = '>='\n if (xm) {\n M = +M + 1\n m = 0\n p = 0\n } else {\n m = +m + 1\n p = 0\n }\n } else if (gtlt === '<=') {\n // <=0.7.x is actually <0.8.0, since any 0.7.x should\n // pass. Similarly, <=7.x is actually <8.0.0, etc.\n gtlt = '<'\n if (xm) {\n M = +M + 1\n } else {\n m = +m + 1\n }\n }\n\n if (gtlt === '<') {\n pr = '-0'\n }\n\n ret = `${gtlt + M}.${m}.${p}${pr}`\n } else if (xm) {\n ret = `>=${M}.0.0${pr} <${+M + 1}.0.0-0`\n } else if (xp) {\n ret = `>=${M}.${m}.0${pr\n } <${M}.${+m + 1}.0-0`\n }\n\n debug('xRange return', ret)\n\n return ret\n })\n}\n\n// Because * is AND-ed with everything else in the comparator,\n// and '' means \"any version\", just remove the *s entirely.\nconst replaceStars = (comp, options) => {\n debug('replaceStars', comp, options)\n // Looseness is ignored here. star is always as loose as it gets!\n return comp.trim().replace(re[t.STAR], '')\n}\n\nconst replaceGTE0 = (comp, options) => {\n debug('replaceGTE0', comp, options)\n return comp.trim()\n .replace(re[options.includePrerelease ? t.GTE0PRE : t.GTE0], '')\n}\n\n// This function is passed to string.replace(re[t.HYPHENRANGE])\n// M, m, patch, prerelease, build\n// 1.2 - 3.4.5 => >=1.2.0 <=3.4.5\n// 1.2.3 - 3.4 => >=1.2.0 <3.5.0-0 Any 3.4.x will do\n// 1.2 - 3.4 => >=1.2.0 <3.5.0-0\nconst hyphenReplace = incPr => ($0,\n from, fM, fm, fp, fpr, fb,\n to, tM, tm, tp, tpr, tb) => {\n if (isX(fM)) {\n from = ''\n } else if (isX(fm)) {\n from = `>=${fM}.0.0${incPr ? '-0' : ''}`\n } else if (isX(fp)) {\n from = `>=${fM}.${fm}.0${incPr ? '-0' : ''}`\n } else if (fpr) {\n from = `>=${from}`\n } else {\n from = `>=${from}${incPr ? '-0' : ''}`\n }\n\n if (isX(tM)) {\n to = ''\n } else if (isX(tm)) {\n to = `<${+tM + 1}.0.0-0`\n } else if (isX(tp)) {\n to = `<${tM}.${+tm + 1}.0-0`\n } else if (tpr) {\n to = `<=${tM}.${tm}.${tp}-${tpr}`\n } else if (incPr) {\n to = `<${tM}.${tm}.${+tp + 1}-0`\n } else {\n to = `<=${to}`\n }\n\n return (`${from} ${to}`).trim()\n}\n\nconst testSet = (set, version, options) => {\n for (let i = 0; i < set.length; i++) {\n if (!set[i].test(version)) {\n return false\n }\n }\n\n if (version.prerelease.length && !options.includePrerelease) {\n // Find the set of versions that are allowed to have prereleases\n // For example, ^1.2.3-pr.1 desugars to >=1.2.3-pr.1 <2.0.0\n // That should allow `1.2.3-pr.2` to pass.\n // However, `1.2.4-alpha.notready` should NOT be allowed,\n // even though it's within the range set by the comparators.\n for (let i = 0; i < set.length; i++) {\n debug(set[i].semver)\n if (set[i].semver === Comparator.ANY) {\n continue\n }\n\n if (set[i].semver.prerelease.length > 0) {\n const allowed = set[i].semver\n if (allowed.major === version.major &&\n allowed.minor === version.minor &&\n allowed.patch === version.patch) {\n return true\n }\n }\n }\n\n // Version has a -pre, but it's not one of the ones we like.\n return false\n }\n\n return true\n}\n", "const ANY = Symbol('SemVer ANY')\n// hoisted class for cyclic dependency\nclass Comparator {\n static get ANY () {\n return ANY\n }\n\n constructor (comp, options) {\n options = parseOptions(options)\n\n if (comp instanceof Comparator) {\n if (comp.loose === !!options.loose) {\n return comp\n } else {\n comp = comp.value\n }\n }\n\n debug('comparator', comp, options)\n this.options = options\n this.loose = !!options.loose\n this.parse(comp)\n\n if (this.semver === ANY) {\n this.value = ''\n } else {\n this.value = this.operator + this.semver.version\n }\n\n debug('comp', this)\n }\n\n parse (comp) {\n const r = this.options.loose ? re[t.COMPARATORLOOSE] : re[t.COMPARATOR]\n const m = comp.match(r)\n\n if (!m) {\n throw new TypeError(`Invalid comparator: ${comp}`)\n }\n\n this.operator = m[1] !== undefined ? m[1] : ''\n if (this.operator === '=') {\n this.operator = ''\n }\n\n // if it literally is just '>' or '' then allow anything.\n if (!m[2]) {\n this.semver = ANY\n } else {\n this.semver = new SemVer(m[2], this.options.loose)\n }\n }\n\n toString () {\n return this.value\n }\n\n test (version) {\n debug('Comparator.test', version, this.options.loose)\n\n if (this.semver === ANY || version === ANY) {\n return true\n }\n\n if (typeof version === 'string') {\n try {\n version = new SemVer(version, this.options)\n } catch (er) {\n return false\n }\n }\n\n return cmp(version, this.operator, this.semver, this.options)\n }\n\n intersects (comp, options) {\n if (!(comp instanceof Comparator)) {\n throw new TypeError('a Comparator is required')\n }\n\n if (!options || typeof options !== 'object') {\n options = {\n loose: !!options,\n includePrerelease: false,\n }\n }\n\n if (this.operator === '') {\n if (this.value === '') {\n return true\n }\n return new Range(comp.value, options).test(this.value)\n } else if (comp.operator === '') {\n if (comp.value === '') {\n return true\n }\n return new Range(this.value, options).test(comp.semver)\n }\n\n const sameDirectionIncreasing =\n (this.operator === '>=' || this.operator === '>') &&\n (comp.operator === '>=' || comp.operator === '>')\n const sameDirectionDecreasing =\n (this.operator === '<=' || this.operator === '<') &&\n (comp.operator === '<=' || comp.operator === '<')\n const sameSemVer = this.semver.version === comp.semver.version\n const differentDirectionsInclusive =\n (this.operator === '>=' || this.operator === '<=') &&\n (comp.operator === '>=' || comp.operator === '<=')\n const oppositeDirectionsLessThan =\n cmp(this.semver, '<', comp.semver, options) &&\n (this.operator === '>=' || this.operator === '>') &&\n (comp.operator === '<=' || comp.operator === '<')\n const oppositeDirectionsGreaterThan =\n cmp(this.semver, '>', comp.semver, options) &&\n (this.operator === '<=' || this.operator === '<') &&\n (comp.operator === '>=' || comp.operator === '>')\n\n return (\n sameDirectionIncreasing ||\n sameDirectionDecreasing ||\n (sameSemVer && differentDirectionsInclusive) ||\n oppositeDirectionsLessThan ||\n oppositeDirectionsGreaterThan\n )\n }\n}\n\nmodule.exports = Comparator\n\nconst parseOptions = require('../internal/parse-options')\nconst { re, t } = require('../internal/re')\nconst cmp = require('../functions/cmp')\nconst debug = require('../internal/debug')\nconst SemVer = require('./semver')\nconst Range = require('./range')\n", "const Range = require('../classes/range')\nconst satisfies = (version, range, options) => {\n try {\n range = new Range(range, options)\n } catch (er) {\n return false\n }\n return range.test(version)\n}\nmodule.exports = satisfies\n", "const Range = require('../classes/range')\n\n// Mostly just for testing and legacy API reasons\nconst toComparators = (range, options) =>\n new Range(range, options).set\n .map(comp => comp.map(c => c.value).join(' ').trim().split(' '))\n\nmodule.exports = toComparators\n", "const SemVer = require('../classes/semver')\nconst Range = require('../classes/range')\n\nconst maxSatisfying = (versions, range, options) => {\n let max = null\n let maxSV = null\n let rangeObj = null\n try {\n rangeObj = new Range(range, options)\n } catch (er) {\n return null\n }\n versions.forEach((v) => {\n if (rangeObj.test(v)) {\n // satisfies(v, range, options)\n if (!max || maxSV.compare(v) === -1) {\n // compare(max, v, true)\n max = v\n maxSV = new SemVer(max, options)\n }\n }\n })\n return max\n}\nmodule.exports = maxSatisfying\n", "const SemVer = require('../classes/semver')\nconst Range = require('../classes/range')\nconst minSatisfying = (versions, range, options) => {\n let min = null\n let minSV = null\n let rangeObj = null\n try {\n rangeObj = new Range(range, options)\n } catch (er) {\n return null\n }\n versions.forEach((v) => {\n if (rangeObj.test(v)) {\n // satisfies(v, range, options)\n if (!min || minSV.compare(v) === 1) {\n // compare(min, v, true)\n min = v\n minSV = new SemVer(min, options)\n }\n }\n })\n return min\n}\nmodule.exports = minSatisfying\n", "const SemVer = require('../classes/semver')\nconst Range = require('../classes/range')\nconst gt = require('../functions/gt')\n\nconst minVersion = (range, loose) => {\n range = new Range(range, loose)\n\n let minver = new SemVer('0.0.0')\n if (range.test(minver)) {\n return minver\n }\n\n minver = new SemVer('0.0.0-0')\n if (range.test(minver)) {\n return minver\n }\n\n minver = null\n for (let i = 0; i < range.set.length; ++i) {\n const comparators = range.set[i]\n\n let setMin = null\n comparators.forEach((comparator) => {\n // Clone to avoid manipulating the comparator's semver object.\n const compver = new SemVer(comparator.semver.version)\n switch (comparator.operator) {\n case '>':\n if (compver.prerelease.length === 0) {\n compver.patch++\n } else {\n compver.prerelease.push(0)\n }\n compver.raw = compver.format()\n /* fallthrough */\n case '':\n case '>=':\n if (!setMin || gt(compver, setMin)) {\n setMin = compver\n }\n break\n case '<':\n case '<=':\n /* Ignore maximum versions */\n break\n /* istanbul ignore next */\n default:\n throw new Error(`Unexpected operation: ${comparator.operator}`)\n }\n })\n if (setMin && (!minver || gt(minver, setMin))) {\n minver = setMin\n }\n }\n\n if (minver && range.test(minver)) {\n return minver\n }\n\n return null\n}\nmodule.exports = minVersion\n", "const Range = require('../classes/range')\nconst validRange = (range, options) => {\n try {\n // Return '*' instead of '' so that truthiness works.\n // This will throw if it's invalid anyway\n return new Range(range, options).range || '*'\n } catch (er) {\n return null\n }\n}\nmodule.exports = validRange\n", "const SemVer = require('../classes/semver')\nconst Comparator = require('../classes/comparator')\nconst { ANY } = Comparator\nconst Range = require('../classes/range')\nconst satisfies = require('../functions/satisfies')\nconst gt = require('../functions/gt')\nconst lt = require('../functions/lt')\nconst lte = require('../functions/lte')\nconst gte = require('../functions/gte')\n\nconst outside = (version, range, hilo, options) => {\n version = new SemVer(version, options)\n range = new Range(range, options)\n\n let gtfn, ltefn, ltfn, comp, ecomp\n switch (hilo) {\n case '>':\n gtfn = gt\n ltefn = lte\n ltfn = lt\n comp = '>'\n ecomp = '>='\n break\n case '<':\n gtfn = lt\n ltefn = gte\n ltfn = gt\n comp = '<'\n ecomp = '<='\n break\n default:\n throw new TypeError('Must provide a hilo val of \"<\" or \">\"')\n }\n\n // If it satisfies the range it is not outside\n if (satisfies(version, range, options)) {\n return false\n }\n\n // From now on, variable terms are as if we're in \"gtr\" mode.\n // but note that everything is flipped for the \"ltr\" function.\n\n for (let i = 0; i < range.set.length; ++i) {\n const comparators = range.set[i]\n\n let high = null\n let low = null\n\n comparators.forEach((comparator) => {\n if (comparator.semver === ANY) {\n comparator = new Comparator('>=0.0.0')\n }\n high = high || comparator\n low = low || comparator\n if (gtfn(comparator.semver, high.semver, options)) {\n high = comparator\n } else if (ltfn(comparator.semver, low.semver, options)) {\n low = comparator\n }\n })\n\n // If the edge version comparator has a operator then our version\n // isn't outside it\n if (high.operator === comp || high.operator === ecomp) {\n return false\n }\n\n // If the lowest version comparator has an operator and our version\n // is less than it then it isn't higher than the range\n if ((!low.operator || low.operator === comp) &&\n ltefn(version, low.semver)) {\n return false\n } else if (low.operator === ecomp && ltfn(version, low.semver)) {\n return false\n }\n }\n return true\n}\n\nmodule.exports = outside\n", "// Determine if version is greater than all the versions possible in the range.\nconst outside = require('./outside')\nconst gtr = (version, range, options) => outside(version, range, '>', options)\nmodule.exports = gtr\n", "const outside = require('./outside')\n// Determine if version is less than all the versions possible in the range\nconst ltr = (version, range, options) => outside(version, range, '<', options)\nmodule.exports = ltr\n", "const Range = require('../classes/range')\nconst intersects = (r1, r2, options) => {\n r1 = new Range(r1, options)\n r2 = new Range(r2, options)\n return r1.intersects(r2)\n}\nmodule.exports = intersects\n", "// given a set of versions and a range, create a \"simplified\" range\n// that includes the same versions that the original range does\n// If the original range is shorter than the simplified one, return that.\nconst satisfies = require('../functions/satisfies.js')\nconst compare = require('../functions/compare.js')\nmodule.exports = (versions, range, options) => {\n const set = []\n let first = null\n let prev = null\n const v = versions.sort((a, b) => compare(a, b, options))\n for (const version of v) {\n const included = satisfies(version, range, options)\n if (included) {\n prev = version\n if (!first) {\n first = version\n }\n } else {\n if (prev) {\n set.push([first, prev])\n }\n prev = null\n first = null\n }\n }\n if (first) {\n set.push([first, null])\n }\n\n const ranges = []\n for (const [min, max] of set) {\n if (min === max) {\n ranges.push(min)\n } else if (!max && min === v[0]) {\n ranges.push('*')\n } else if (!max) {\n ranges.push(`>=${min}`)\n } else if (min === v[0]) {\n ranges.push(`<=${max}`)\n } else {\n ranges.push(`${min} - ${max}`)\n }\n }\n const simplified = ranges.join(' || ')\n const original = typeof range.raw === 'string' ? range.raw : String(range)\n return simplified.length < original.length ? simplified : range\n}\n", "const Range = require('../classes/range.js')\nconst Comparator = require('../classes/comparator.js')\nconst { ANY } = Comparator\nconst satisfies = require('../functions/satisfies.js')\nconst compare = require('../functions/compare.js')\n\n// Complex range `r1 || r2 || ...` is a subset of `R1 || R2 || ...` iff:\n// - Every simple range `r1, r2, ...` is a null set, OR\n// - Every simple range `r1, r2, ...` which is not a null set is a subset of\n// some `R1, R2, ...`\n//\n// Simple range `c1 c2 ...` is a subset of simple range `C1 C2 ...` iff:\n// - If c is only the ANY comparator\n// - If C is only the ANY comparator, return true\n// - Else if in prerelease mode, return false\n// - else replace c with `[>=0.0.0]`\n// - If C is only the ANY comparator\n// - if in prerelease mode, return true\n// - else replace C with `[>=0.0.0]`\n// - Let EQ be the set of = comparators in c\n// - If EQ is more than one, return true (null set)\n// - Let GT be the highest > or >= comparator in c\n// - Let LT be the lowest < or <= comparator in c\n// - If GT and LT, and GT.semver > LT.semver, return true (null set)\n// - If any C is a = range, and GT or LT are set, return false\n// - If EQ\n// - If GT, and EQ does not satisfy GT, return true (null set)\n// - If LT, and EQ does not satisfy LT, return true (null set)\n// - If EQ satisfies every C, return true\n// - Else return false\n// - If GT\n// - If GT.semver is lower than any > or >= comp in C, return false\n// - If GT is >=, and GT.semver does not satisfy every C, return false\n// - If GT.semver has a prerelease, and not in prerelease mode\n// - If no C has a prerelease and the GT.semver tuple, return false\n// - If LT\n// - If LT.semver is greater than any < or <= comp in C, return false\n// - If LT is <=, and LT.semver does not satisfy every C, return false\n// - If GT.semver has a prerelease, and not in prerelease mode\n// - If no C has a prerelease and the LT.semver tuple, return false\n// - Else return true\n\nconst subset = (sub, dom, options = {}) => {\n if (sub === dom) {\n return true\n }\n\n sub = new Range(sub, options)\n dom = new Range(dom, options)\n let sawNonNull = false\n\n OUTER: for (const simpleSub of sub.set) {\n for (const simpleDom of dom.set) {\n const isSub = simpleSubset(simpleSub, simpleDom, options)\n sawNonNull = sawNonNull || isSub !== null\n if (isSub) {\n continue OUTER\n }\n }\n // the null set is a subset of everything, but null simple ranges in\n // a complex range should be ignored. so if we saw a non-null range,\n // then we know this isn't a subset, but if EVERY simple range was null,\n // then it is a subset.\n if (sawNonNull) {\n return false\n }\n }\n return true\n}\n\nconst simpleSubset = (sub, dom, options) => {\n if (sub === dom) {\n return true\n }\n\n if (sub.length === 1 && sub[0].semver === ANY) {\n if (dom.length === 1 && dom[0].semver === ANY) {\n return true\n } else if (options.includePrerelease) {\n sub = [new Comparator('>=0.0.0-0')]\n } else {\n sub = [new Comparator('>=0.0.0')]\n }\n }\n\n if (dom.length === 1 && dom[0].semver === ANY) {\n if (options.includePrerelease) {\n return true\n } else {\n dom = [new Comparator('>=0.0.0')]\n }\n }\n\n const eqSet = new Set()\n let gt, lt\n for (const c of sub) {\n if (c.operator === '>' || c.operator === '>=') {\n gt = higherGT(gt, c, options)\n } else if (c.operator === '<' || c.operator === '<=') {\n lt = lowerLT(lt, c, options)\n } else {\n eqSet.add(c.semver)\n }\n }\n\n if (eqSet.size > 1) {\n return null\n }\n\n let gtltComp\n if (gt && lt) {\n gtltComp = compare(gt.semver, lt.semver, options)\n if (gtltComp > 0) {\n return null\n } else if (gtltComp === 0 && (gt.operator !== '>=' || lt.operator !== '<=')) {\n return null\n }\n }\n\n // will iterate one or zero times\n for (const eq of eqSet) {\n if (gt && !satisfies(eq, String(gt), options)) {\n return null\n }\n\n if (lt && !satisfies(eq, String(lt), options)) {\n return null\n }\n\n for (const c of dom) {\n if (!satisfies(eq, String(c), options)) {\n return false\n }\n }\n\n return true\n }\n\n let higher, lower\n let hasDomLT, hasDomGT\n // if the subset has a prerelease, we need a comparator in the superset\n // with the same tuple and a prerelease, or it's not a subset\n let needDomLTPre = lt &&\n !options.includePrerelease &&\n lt.semver.prerelease.length ? lt.semver : false\n let needDomGTPre = gt &&\n !options.includePrerelease &&\n gt.semver.prerelease.length ? gt.semver : false\n // exception: <1.2.3-0 is the same as <1.2.3\n if (needDomLTPre && needDomLTPre.prerelease.length === 1 &&\n lt.operator === '<' && needDomLTPre.prerelease[0] === 0) {\n needDomLTPre = false\n }\n\n for (const c of dom) {\n hasDomGT = hasDomGT || c.operator === '>' || c.operator === '>='\n hasDomLT = hasDomLT || c.operator === '<' || c.operator === '<='\n if (gt) {\n if (needDomGTPre) {\n if (c.semver.prerelease && c.semver.prerelease.length &&\n c.semver.major === needDomGTPre.major &&\n c.semver.minor === needDomGTPre.minor &&\n c.semver.patch === needDomGTPre.patch) {\n needDomGTPre = false\n }\n }\n if (c.operator === '>' || c.operator === '>=') {\n higher = higherGT(gt, c, options)\n if (higher === c && higher !== gt) {\n return false\n }\n } else if (gt.operator === '>=' && !satisfies(gt.semver, String(c), options)) {\n return false\n }\n }\n if (lt) {\n if (needDomLTPre) {\n if (c.semver.prerelease && c.semver.prerelease.length &&\n c.semver.major === needDomLTPre.major &&\n c.semver.minor === needDomLTPre.minor &&\n c.semver.patch === needDomLTPre.patch) {\n needDomLTPre = false\n }\n }\n if (c.operator === '<' || c.operator === '<=') {\n lower = lowerLT(lt, c, options)\n if (lower === c && lower !== lt) {\n return false\n }\n } else if (lt.operator === '<=' && !satisfies(lt.semver, String(c), options)) {\n return false\n }\n }\n if (!c.operator && (lt || gt) && gtltComp !== 0) {\n return false\n }\n }\n\n // if there was a < or >, and nothing in the dom, then must be false\n // UNLESS it was limited by another range in the other direction.\n // Eg, >1.0.0 <1.0.1 is still a subset of <2.0.0\n if (gt && hasDomLT && !lt && gtltComp !== 0) {\n return false\n }\n\n if (lt && hasDomGT && !gt && gtltComp !== 0) {\n return false\n }\n\n // we needed a prerelease range in a specific tuple, but didn't get one\n // then this isn't a subset. eg >=1.2.3-pre is not a subset of >=1.0.0,\n // because it includes prereleases in the 1.2.3 tuple\n if (needDomGTPre || needDomLTPre) {\n return false\n }\n\n return true\n}\n\n// >=1.2.3 is lower than >1.2.3\nconst higherGT = (a, b, options) => {\n if (!a) {\n return b\n }\n const comp = compare(a.semver, b.semver, options)\n return comp > 0 ? a\n : comp < 0 ? b\n : b.operator === '>' && a.operator === '>=' ? b\n : a\n}\n\n// <=1.2.3 is higher than <1.2.3\nconst lowerLT = (a, b, options) => {\n if (!a) {\n return b\n }\n const comp = compare(a.semver, b.semver, options)\n return comp < 0 ? a\n : comp > 0 ? b\n : b.operator === '<' && a.operator === '<=' ? b\n : a\n}\n\nmodule.exports = subset\n", "// just pre-load all the stuff that index.js lazily exports\nconst internalRe = require('./internal/re')\nconst constants = require('./internal/constants')\nconst SemVer = require('./classes/semver')\nconst identifiers = require('./internal/identifiers')\nconst parse = require('./functions/parse')\nconst valid = require('./functions/valid')\nconst clean = require('./functions/clean')\nconst inc = require('./functions/inc')\nconst diff = require('./functions/diff')\nconst major = require('./functions/major')\nconst minor = require('./functions/minor')\nconst patch = require('./functions/patch')\nconst prerelease = require('./functions/prerelease')\nconst compare = require('./functions/compare')\nconst rcompare = require('./functions/rcompare')\nconst compareLoose = require('./functions/compare-loose')\nconst compareBuild = require('./functions/compare-build')\nconst sort = require('./functions/sort')\nconst rsort = require('./functions/rsort')\nconst gt = require('./functions/gt')\nconst lt = require('./functions/lt')\nconst eq = require('./functions/eq')\nconst neq = require('./functions/neq')\nconst gte = require('./functions/gte')\nconst lte = require('./functions/lte')\nconst cmp = require('./functions/cmp')\nconst coerce = require('./functions/coerce')\nconst Comparator = require('./classes/comparator')\nconst Range = require('./classes/range')\nconst satisfies = require('./functions/satisfies')\nconst toComparators = require('./ranges/to-comparators')\nconst maxSatisfying = require('./ranges/max-satisfying')\nconst minSatisfying = require('./ranges/min-satisfying')\nconst minVersion = require('./ranges/min-version')\nconst validRange = require('./ranges/valid')\nconst outside = require('./ranges/outside')\nconst gtr = require('./ranges/gtr')\nconst ltr = require('./ranges/ltr')\nconst intersects = require('./ranges/intersects')\nconst simplifyRange = require('./ranges/simplify')\nconst subset = require('./ranges/subset')\nmodule.exports = {\n parse,\n valid,\n clean,\n inc,\n diff,\n major,\n minor,\n patch,\n prerelease,\n compare,\n rcompare,\n compareLoose,\n compareBuild,\n sort,\n rsort,\n gt,\n lt,\n eq,\n neq,\n gte,\n lte,\n cmp,\n coerce,\n Comparator,\n Range,\n satisfies,\n toComparators,\n maxSatisfying,\n minSatisfying,\n minVersion,\n validRange,\n outside,\n gtr,\n ltr,\n intersects,\n simplifyRange,\n subset,\n SemVer,\n re: internalRe.re,\n src: internalRe.src,\n tokens: internalRe.t,\n SEMVER_SPEC_VERSION: constants.SEMVER_SPEC_VERSION,\n compareIdentifiers: identifiers.compareIdentifiers,\n rcompareIdentifiers: identifiers.rcompareIdentifiers,\n}\n", "/* eslint-disable no-continue */\n/* eslint-disable no-unused-vars */\n/* eslint-disable no-param-reassign */\n/* eslint-disable no-prototype-builtins */\n\nconst errorClasses = {};\nconst deserializers = {};\n\nexport const addCustomErrorDeserializer = (\n name: string,\n deserializer: (obj: any) => any\n): void => {\n deserializers[name] = deserializer;\n};\n\nexport interface LedgerErrorConstructor\n extends ErrorConstructor {\n new (message?: string, fields?: F, options?: any): Error;\n (message?: string, fields?: F, options?: any): Error;\n readonly prototype: Error;\n}\n\nexport const createCustomErrorClass = <\n F extends { [key: string]: unknown },\n T extends LedgerErrorConstructor\n>(\n name: string\n): T => {\n class CustomErrorClass extends Error {\n cause?: Error;\n constructor(message?: string, fields?: F, options?: any) {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n super(message || name, options);\n // Set the prototype explicitly. See https://github.com/Microsoft/TypeScript/wiki/Breaking-Changes#extending-built-ins-like-error-array-and-map-may-no-longer-work\n Object.setPrototypeOf(this, CustomErrorClass.prototype);\n this.name = name;\n if (fields) {\n for (const k in fields) {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n this[k] = fields[k];\n }\n }\n if (\n options &&\n isObject(options) &&\n \"cause\" in options &&\n !(\"cause\" in this)\n ) {\n // .cause was specified but the superconstructor\n // did not create an instance property.\n const cause = options.cause;\n this.cause = cause;\n if (\"stack\" in cause) {\n this.stack = this.stack + \"\\nCAUSE: \" + cause.stack;\n }\n }\n }\n }\n\n errorClasses[name] = CustomErrorClass;\n\n return CustomErrorClass as unknown as T;\n};\n\nfunction isObject(value) {\n return typeof value === \"object\";\n}\n\n// inspired from https://github.com/programble/errio/blob/master/index.js\nexport const deserializeError = (object: any): Error | undefined => {\n if (object && typeof object === \"object\") {\n try {\n if (typeof object.message === \"string\") {\n const msg = JSON.parse(object.message);\n if (msg.message && msg.name) {\n object = msg;\n }\n }\n } catch (e) {\n // nothing\n }\n\n let error;\n if (typeof object.name === \"string\") {\n const { name } = object;\n const des = deserializers[name];\n if (des) {\n error = des(object);\n } else {\n let constructor = name === \"Error\" ? Error : errorClasses[name];\n\n if (!constructor) {\n console.warn(\"deserializing an unknown class '\" + name + \"'\");\n constructor = createCustomErrorClass(name);\n }\n\n error = Object.create(constructor.prototype);\n try {\n for (const prop in object) {\n if (object.hasOwnProperty(prop)) {\n error[prop] = object[prop];\n }\n }\n } catch (e) {\n // sometimes setting a property can fail (e.g. .name)\n }\n }\n } else {\n if (typeof object.message === \"string\") {\n error = new Error(object.message);\n }\n }\n\n if (error && !error.stack && Error.captureStackTrace) {\n Error.captureStackTrace(error, deserializeError);\n }\n return error;\n }\n return new Error(String(object));\n};\n\n// inspired from https://github.com/sindresorhus/serialize-error/blob/master/index.js\nexport const serializeError = (\n value: undefined | To | string | (() => unknown)\n): undefined | To | string => {\n if (!value) return value;\n if (typeof value === \"object\") {\n return destroyCircular(value, []);\n }\n if (typeof value === \"function\") {\n return `[Function: ${value.name || \"anonymous\"}]`;\n }\n return value;\n};\n\ninterface To {\n name?: string;\n message?: string;\n stack?: string;\n}\n\n// https://www.npmjs.com/package/destroy-circular\nfunction destroyCircular(from: To, seen: Array): To {\n const to: To = {};\n seen.push(from);\n for (const key of Object.keys(from)) {\n const value = from[key];\n if (typeof value === \"function\") {\n continue;\n }\n if (!value || typeof value !== \"object\") {\n to[key] = value;\n continue;\n }\n if (seen.indexOf(from[key]) === -1) {\n to[key] = destroyCircular(from[key], seen.slice(0));\n continue;\n }\n to[key] = \"[Circular]\";\n }\n if (typeof from.name === \"string\") {\n to.name = from.name;\n }\n if (typeof from.message === \"string\") {\n to.message = from.message;\n }\n if (typeof from.stack === \"string\") {\n to.stack = from.stack;\n }\n return to;\n}\n", "import {\n serializeError,\n deserializeError,\n createCustomErrorClass,\n addCustomErrorDeserializer,\n LedgerErrorConstructor,\n} from \"./helpers\";\n\nexport {\n serializeError,\n deserializeError,\n createCustomErrorClass,\n addCustomErrorDeserializer,\n};\n\nexport const AccountNameRequiredError = createCustomErrorClass(\n \"AccountNameRequired\"\n);\nexport const AccountNotSupported = createCustomErrorClass(\n \"AccountNotSupported\"\n);\nexport const AmountRequired = createCustomErrorClass(\"AmountRequired\");\nexport const BluetoothRequired = createCustomErrorClass(\"BluetoothRequired\");\nexport const BtcUnmatchedApp = createCustomErrorClass(\"BtcUnmatchedApp\");\nexport const CantOpenDevice = createCustomErrorClass(\"CantOpenDevice\");\nexport const CashAddrNotSupported = createCustomErrorClass(\n \"CashAddrNotSupported\"\n);\nexport const CurrencyNotSupported = createCustomErrorClass<\n { currencyName: string },\n LedgerErrorConstructor<{ currencyName: string }>\n>(\"CurrencyNotSupported\");\nexport const DeviceAppVerifyNotSupported = createCustomErrorClass(\n \"DeviceAppVerifyNotSupported\"\n);\nexport const DeviceGenuineSocketEarlyClose = createCustomErrorClass(\n \"DeviceGenuineSocketEarlyClose\"\n);\nexport const DeviceNotGenuineError = createCustomErrorClass(\"DeviceNotGenuine\");\nexport const DeviceOnDashboardExpected = createCustomErrorClass(\n \"DeviceOnDashboardExpected\"\n);\nexport const DeviceOnDashboardUnexpected = createCustomErrorClass(\n \"DeviceOnDashboardUnexpected\"\n);\nexport const DeviceInOSUExpected = createCustomErrorClass(\n \"DeviceInOSUExpected\"\n);\nexport const DeviceHalted = createCustomErrorClass(\"DeviceHalted\");\nexport const DeviceNameInvalid = createCustomErrorClass(\"DeviceNameInvalid\");\nexport const DeviceSocketFail = createCustomErrorClass(\"DeviceSocketFail\");\nexport const DeviceSocketNoBulkStatus = createCustomErrorClass(\n \"DeviceSocketNoBulkStatus\"\n);\nexport const LockedDeviceError = createCustomErrorClass(\"LockedDeviceError\");\nexport const DisconnectedDevice = createCustomErrorClass(\"DisconnectedDevice\");\nexport const DisconnectedDeviceDuringOperation = createCustomErrorClass(\n \"DisconnectedDeviceDuringOperation\"\n);\nexport const DeviceExtractOnboardingStateError = createCustomErrorClass(\n \"DeviceExtractOnboardingStateError\"\n);\nexport const DeviceOnboardingStatePollingError = createCustomErrorClass(\n \"DeviceOnboardingStatePollingError\"\n);\nexport const EnpointConfigError = createCustomErrorClass(\"EnpointConfig\");\nexport const EthAppPleaseEnableContractData = createCustomErrorClass(\n \"EthAppPleaseEnableContractData\"\n);\nexport const FeeEstimationFailed = createCustomErrorClass(\n \"FeeEstimationFailed\"\n);\nexport const FirmwareNotRecognized = createCustomErrorClass(\n \"FirmwareNotRecognized\"\n);\nexport const HardResetFail = createCustomErrorClass(\"HardResetFail\");\nexport const InvalidXRPTag = createCustomErrorClass(\"InvalidXRPTag\");\nexport const InvalidAddress = createCustomErrorClass(\"InvalidAddress\");\nexport const InvalidAddressBecauseDestinationIsAlsoSource =\n createCustomErrorClass(\"InvalidAddressBecauseDestinationIsAlsoSource\");\nexport const LatestMCUInstalledError = createCustomErrorClass(\n \"LatestMCUInstalledError\"\n);\nexport const UnknownMCU = createCustomErrorClass(\"UnknownMCU\");\nexport const LedgerAPIError = createCustomErrorClass(\"LedgerAPIError\");\nexport const LedgerAPIErrorWithMessage = createCustomErrorClass(\n \"LedgerAPIErrorWithMessage\"\n);\nexport const LedgerAPINotAvailable = createCustomErrorClass(\n \"LedgerAPINotAvailable\"\n);\nexport const ManagerAppAlreadyInstalledError = createCustomErrorClass(\n \"ManagerAppAlreadyInstalled\"\n);\nexport const ManagerAppRelyOnBTCError = createCustomErrorClass(\n \"ManagerAppRelyOnBTC\"\n);\nexport const ManagerAppDepInstallRequired = createCustomErrorClass(\n \"ManagerAppDepInstallRequired\"\n);\nexport const ManagerAppDepUninstallRequired = createCustomErrorClass(\n \"ManagerAppDepUninstallRequired\"\n);\nexport const ManagerDeviceLockedError = createCustomErrorClass(\n \"ManagerDeviceLocked\"\n);\nexport const ManagerFirmwareNotEnoughSpaceError = createCustomErrorClass(\n \"ManagerFirmwareNotEnoughSpace\"\n);\nexport const ManagerNotEnoughSpaceError = createCustomErrorClass(\n \"ManagerNotEnoughSpace\"\n);\nexport const ManagerUninstallBTCDep = createCustomErrorClass(\n \"ManagerUninstallBTCDep\"\n);\nexport const NetworkDown = createCustomErrorClass(\"NetworkDown\");\nexport const NoAddressesFound = createCustomErrorClass(\"NoAddressesFound\");\nexport const NotEnoughBalance = createCustomErrorClass(\"NotEnoughBalance\");\nexport const NotEnoughBalanceToDelegate = createCustomErrorClass(\n \"NotEnoughBalanceToDelegate\"\n);\nexport const NotEnoughBalanceInParentAccount = createCustomErrorClass(\n \"NotEnoughBalanceInParentAccount\"\n);\nexport const NotEnoughSpendableBalance = createCustomErrorClass(\n \"NotEnoughSpendableBalance\"\n);\nexport const NotEnoughBalanceBecauseDestinationNotCreated =\n createCustomErrorClass(\"NotEnoughBalanceBecauseDestinationNotCreated\");\nexport const NoAccessToCamera = createCustomErrorClass(\"NoAccessToCamera\");\nexport const NotEnoughGas = createCustomErrorClass(\"NotEnoughGas\");\nexport const NotSupportedLegacyAddress = createCustomErrorClass(\n \"NotSupportedLegacyAddress\"\n);\nexport const GasLessThanEstimate = createCustomErrorClass(\n \"GasLessThanEstimate\"\n);\nexport const PriorityFeeTooLow = createCustomErrorClass(\"PriorityFeeTooLow\");\nexport const PriorityFeeTooHigh = createCustomErrorClass(\"PriorityFeeTooHigh\");\nexport const PriorityFeeHigherThanMaxFee = createCustomErrorClass(\n \"PriorityFeeHigherThanMaxFee\"\n);\nexport const MaxFeeTooLow = createCustomErrorClass(\"MaxFeeTooLow\");\nexport const PasswordsDontMatchError =\n createCustomErrorClass(\"PasswordsDontMatch\");\nexport const PasswordIncorrectError =\n createCustomErrorClass(\"PasswordIncorrect\");\nexport const RecommendSubAccountsToEmpty = createCustomErrorClass(\n \"RecommendSubAccountsToEmpty\"\n);\nexport const RecommendUndelegation = createCustomErrorClass(\n \"RecommendUndelegation\"\n);\nexport const TimeoutTagged = createCustomErrorClass(\"TimeoutTagged\");\nexport const UnexpectedBootloader = createCustomErrorClass(\n \"UnexpectedBootloader\"\n);\nexport const MCUNotGenuineToDashboard = createCustomErrorClass(\n \"MCUNotGenuineToDashboard\"\n);\nexport const RecipientRequired = createCustomErrorClass(\"RecipientRequired\");\nexport const UnavailableTezosOriginatedAccountReceive = createCustomErrorClass(\n \"UnavailableTezosOriginatedAccountReceive\"\n);\nexport const UnavailableTezosOriginatedAccountSend = createCustomErrorClass(\n \"UnavailableTezosOriginatedAccountSend\"\n);\nexport const UpdateFetchFileFail = createCustomErrorClass(\n \"UpdateFetchFileFail\"\n);\nexport const UpdateIncorrectHash = createCustomErrorClass(\n \"UpdateIncorrectHash\"\n);\nexport const UpdateIncorrectSig = createCustomErrorClass(\"UpdateIncorrectSig\");\nexport const UpdateYourApp = createCustomErrorClass(\"UpdateYourApp\");\nexport const UserRefusedDeviceNameChange = createCustomErrorClass(\n \"UserRefusedDeviceNameChange\"\n);\nexport const UserRefusedAddress = createCustomErrorClass(\"UserRefusedAddress\");\nexport const UserRefusedFirmwareUpdate = createCustomErrorClass(\n \"UserRefusedFirmwareUpdate\"\n);\nexport const UserRefusedAllowManager = createCustomErrorClass(\n \"UserRefusedAllowManager\"\n);\nexport const UserRefusedOnDevice = createCustomErrorClass(\n \"UserRefusedOnDevice\"\n); // TODO rename because it's just for transaction refusal\nexport const TransportOpenUserCancelled = createCustomErrorClass(\n \"TransportOpenUserCancelled\"\n);\nexport const TransportInterfaceNotAvailable = createCustomErrorClass(\n \"TransportInterfaceNotAvailable\"\n);\nexport const TransportRaceCondition = createCustomErrorClass(\n \"TransportRaceCondition\"\n);\nexport const TransportWebUSBGestureRequired = createCustomErrorClass(\n \"TransportWebUSBGestureRequired\"\n);\nexport const DeviceShouldStayInApp = createCustomErrorClass(\n \"DeviceShouldStayInApp\"\n);\nexport const WebsocketConnectionError = createCustomErrorClass(\n \"WebsocketConnectionError\"\n);\nexport const WebsocketConnectionFailed = createCustomErrorClass(\n \"WebsocketConnectionFailed\"\n);\nexport const WrongDeviceForAccount = createCustomErrorClass(\n \"WrongDeviceForAccount\"\n);\nexport const WrongAppForCurrency = createCustomErrorClass(\n \"WrongAppForCurrency\"\n);\nexport const ETHAddressNonEIP = createCustomErrorClass(\"ETHAddressNonEIP\");\nexport const CantScanQRCode = createCustomErrorClass(\"CantScanQRCode\");\nexport const FeeNotLoaded = createCustomErrorClass(\"FeeNotLoaded\");\nexport const FeeRequired = createCustomErrorClass(\"FeeRequired\");\nexport const FeeTooHigh = createCustomErrorClass(\"FeeTooHigh\");\nexport const DustLimit = createCustomErrorClass(\"DustLimit\");\nexport const PendingOperation = createCustomErrorClass(\"PendingOperation\");\nexport const SyncError = createCustomErrorClass(\"SyncError\");\nexport const PairingFailed = createCustomErrorClass(\"PairingFailed\");\nexport const GenuineCheckFailed = createCustomErrorClass(\"GenuineCheckFailed\");\nexport const LedgerAPI4xx = createCustomErrorClass(\"LedgerAPI4xx\");\nexport const LedgerAPI5xx = createCustomErrorClass(\"LedgerAPI5xx\");\nexport const FirmwareOrAppUpdateRequired = createCustomErrorClass(\n \"FirmwareOrAppUpdateRequired\"\n);\n\nexport const LanguageNotFound = createCustomErrorClass(\"LanguageNotFound\");\n\n// db stuff, no need to translate\nexport const NoDBPathGiven = createCustomErrorClass(\"NoDBPathGiven\");\nexport const DBWrongPassword = createCustomErrorClass(\"DBWrongPassword\");\nexport const DBNotReset = createCustomErrorClass(\"DBNotReset\");\n\n/**\n * Type of a Transport error used to represent all equivalent errors coming from all possible implementation of Transport\n */\nexport enum HwTransportErrorType {\n Unknown = 0,\n BleLocationServicesDisabled = 1,\n BleBluetoothUnauthorized = 2,\n BleScanStartFailed = 3,\n}\n\n/**\n * Represents an error coming from any Transport implementation.\n *\n * Needed to map a specific implementation error into an error that\n * can be managed by any code unaware of the specific Transport implementation\n * that was used.\n */\nexport class HwTransportError extends Error {\n type: HwTransportErrorType;\n\n constructor(type: HwTransportErrorType, message: string) {\n super(message);\n this.name = \"HwTransportError\";\n this.type = type;\n\n // Needed as long as we target < ES6\n Object.setPrototypeOf(this, HwTransportError.prototype);\n }\n}\n\n/**\n * TransportError is used for any generic transport errors.\n * e.g. Error thrown when data received by exchanges are incorrect or if exchanged failed to communicate with the device for various reason.\n */\nexport class TransportError extends Error {\n id: string;\n constructor(message: string, id: string) {\n const name = \"TransportError\";\n super(message || name);\n this.name = name;\n this.message = message;\n this.stack = new Error().stack;\n this.id = id;\n }\n}\n\naddCustomErrorDeserializer(\n \"TransportError\",\n (e) => new TransportError(e.message, e.id)\n);\n\nexport const StatusCodes = {\n ACCESS_CONDITION_NOT_FULFILLED: 0x9804,\n ALGORITHM_NOT_SUPPORTED: 0x9484,\n CLA_NOT_SUPPORTED: 0x6e00,\n CODE_BLOCKED: 0x9840,\n CODE_NOT_INITIALIZED: 0x9802,\n COMMAND_INCOMPATIBLE_FILE_STRUCTURE: 0x6981,\n CONDITIONS_OF_USE_NOT_SATISFIED: 0x6985,\n CONTRADICTION_INVALIDATION: 0x9810,\n CONTRADICTION_SECRET_CODE_STATUS: 0x9808,\n CUSTOM_IMAGE_BOOTLOADER: 0x662f,\n CUSTOM_IMAGE_EMPTY: 0x662e,\n FILE_ALREADY_EXISTS: 0x6a89,\n FILE_NOT_FOUND: 0x9404,\n GP_AUTH_FAILED: 0x6300,\n HALTED: 0x6faa,\n INCONSISTENT_FILE: 0x9408,\n INCORRECT_DATA: 0x6a80,\n INCORRECT_LENGTH: 0x6700,\n INCORRECT_P1_P2: 0x6b00,\n INS_NOT_SUPPORTED: 0x6d00,\n INVALID_KCV: 0x9485,\n INVALID_OFFSET: 0x9402,\n LICENSING: 0x6f42,\n LOCKED_DEVICE: 0x5515,\n MAX_VALUE_REACHED: 0x9850,\n MEMORY_PROBLEM: 0x9240,\n MISSING_CRITICAL_PARAMETER: 0x6800,\n NO_EF_SELECTED: 0x9400,\n NOT_ENOUGH_MEMORY_SPACE: 0x6a84,\n OK: 0x9000,\n PIN_REMAINING_ATTEMPTS: 0x63c0,\n REFERENCED_DATA_NOT_FOUND: 0x6a88,\n SECURITY_STATUS_NOT_SATISFIED: 0x6982,\n TECHNICAL_PROBLEM: 0x6f00,\n UNKNOWN_APDU: 0x6d02,\n USER_REFUSED_ON_DEVICE: 0x5501,\n};\n\nexport function getAltStatusMessage(code: number): string | undefined | null {\n switch (code) {\n // improve text of most common errors\n case 0x6700:\n return \"Incorrect length\";\n case 0x6800:\n return \"Missing critical parameter\";\n case 0x6982:\n return \"Security not satisfied (dongle locked or have invalid access rights)\";\n case 0x6985:\n return \"Condition of use not satisfied (denied by the user?)\";\n case 0x6a80:\n return \"Invalid data received\";\n case 0x6b00:\n return \"Invalid parameter received\";\n case 0x5515:\n return \"Locked device\";\n }\n if (0x6f00 <= code && code <= 0x6fff) {\n return \"Internal error, please report\";\n }\n}\n\n/**\n * Error thrown when a device returned a non success status.\n * the error.statusCode is one of the `StatusCodes` exported by this library.\n */\nexport function TransportStatusError(statusCode: number): void {\n const statusText =\n Object.keys(StatusCodes).find((k) => StatusCodes[k] === statusCode) ||\n \"UNKNOWN_ERROR\";\n const smsg = getAltStatusMessage(statusCode) || statusText;\n const statusCodeStr = statusCode.toString(16);\n const message = `Ledger device: ${smsg} (0x${statusCodeStr})`;\n\n // Maps to a LockedDeviceError\n if (statusCode === StatusCodes.LOCKED_DEVICE) {\n throw new LockedDeviceError(message);\n }\n\n this.name = \"TransportStatusError\";\n this.message = message;\n this.stack = new Error().stack;\n this.statusCode = statusCode;\n this.statusText = statusText;\n}\nTransportStatusError.prototype = new Error();\n\naddCustomErrorDeserializer(\n \"TransportStatusError\",\n (e) => new TransportStatusError(e.statusCode)\n);\n", "import EventEmitter from \"events\";\nimport type { DeviceModel } from \"@ledgerhq/devices\";\nimport {\n TransportRaceCondition,\n TransportError,\n StatusCodes,\n getAltStatusMessage,\n TransportStatusError,\n} from \"@ledgerhq/errors\";\nexport {\n TransportError,\n TransportStatusError,\n StatusCodes,\n getAltStatusMessage,\n};\n\n/**\n */\nexport type Subscription = {\n unsubscribe: () => void;\n};\n\n/**\n */\nexport type Device = any; // Should be a union type of all possible Device object's shape\n\nexport type DescriptorEventType = \"add\" | \"remove\";\n/**\n * A \"descriptor\" is a parameter that is specific to the implementation, and can be an ID, file path, or URL.\n * type: add or remove event\n * descriptor: a parameter that can be passed to open(descriptor)\n * deviceModel: device info on the model (is it a nano s, nano x, ...)\n * device: transport specific device info\n */\nexport interface DescriptorEvent {\n type: DescriptorEventType;\n descriptor: Descriptor;\n deviceModel?: DeviceModel | null | undefined;\n device?: Device;\n}\n\n/**\n * Observer generic type, following the Observer pattern\n */\nexport type Observer = Readonly<{\n next: (event: EventType) => unknown;\n error: (e: EventError) => unknown;\n complete: () => unknown;\n}>;\n\n/**\n * The Transport class defines a generic interface for communicating with a Ledger hardware wallet.\n * There are different kind of transports based on the technology (channels like U2F, HID, Bluetooth, Webusb) and environment (Node, Web,...).\n * It is an abstract class that needs to be implemented.\n */\nexport default class Transport {\n exchangeTimeout = 30000;\n unresponsiveTimeout = 15000;\n deviceModel: DeviceModel | null | undefined = null;\n\n /**\n * Check if the transport is supported on the current platform/browser.\n * @returns {Promise} A promise that resolves with a boolean indicating support.\n */\n static readonly isSupported: () => Promise;\n\n /**\n * List all available descriptors for the transport.\n * For a better granularity, checkout `listen()`.\n *\n * @returns {Promise>} A promise that resolves with an array of descriptors.\n * @example\n * TransportFoo.list().then(descriptors => ...)\n */\n static readonly list: () => Promise>;\n\n /**\n * Listen for device events for the transport. The method takes an observer of DescriptorEvent and returns a Subscription.\n * A DescriptorEvent is an object containing a \"descriptor\" and a \"type\" field. The \"type\" field can be \"add\" or \"remove\", and the \"descriptor\" field can be passed to the \"open\" method.\n * The \"listen\" method will first emit all currently connected devices and then will emit events as they occur, such as when a USB device is plugged in or a Bluetooth device becomes discoverable.\n * @param {Observer>} observer - An object with \"next\", \"error\", and \"complete\" functions, following the observer pattern.\n * @returns {Subscription} A Subscription object on which you can call \".unsubscribe()\" to stop listening to descriptors.\n * @example\n const sub = TransportFoo.listen({\n next: e => {\n if (e.type===\"add\") {\n sub.unsubscribe();\n const transport = await TransportFoo.open(e.descriptor);\n ...\n }\n },\n error: error => {},\n complete: () => {}\n })\n */\n static readonly listen: (\n observer: Observer>\n ) => Subscription;\n\n /**\n * Attempt to create a Transport instance with a specific descriptor.\n * @param {any} descriptor - The descriptor to open the transport with.\n * @param {number} timeout - An optional timeout for the transport connection.\n * @returns {Promise} A promise that resolves with a Transport instance.\n * @example\n TransportFoo.open(descriptor).then(transport => ...)\n */\n static readonly open: (\n descriptor?: any,\n timeout?: number\n ) => Promise;\n\n /**\n * Send data to the device using a low level API.\n * It's recommended to use the \"send\" method for a higher level API.\n * @param {Buffer} apdu - The data to send.\n * @returns {Promise} A promise that resolves with the response data from the device.\n */\n exchange(_apdu: Buffer): Promise {\n throw new Error(\"exchange not implemented\");\n }\n\n /**\n * Send apdus in batch to the device using a low level API.\n * The default implementation is to call exchange for each apdu.\n * @param {Array} apdus - array of apdus to send.\n * @param {Observer} observer - an observer that will receive the response of each apdu.\n * @returns {Subscription} A Subscription object on which you can call \".unsubscribe()\" to stop sending apdus.\n */\n exchangeBulk(apdus: Buffer[], observer: Observer): Subscription {\n let unsubscribed = false;\n const unsubscribe = () => {\n unsubscribed = true;\n };\n\n const main = async () => {\n if (unsubscribed) return;\n for (const apdu of apdus) {\n const r = await this.exchange(apdu);\n if (unsubscribed) return;\n const status = r.readUInt16BE(r.length - 2);\n if (status !== StatusCodes.OK) {\n throw new TransportStatusError(status);\n }\n observer.next(r);\n }\n };\n\n main().then(\n () => !unsubscribed && observer.complete(),\n (e) => !unsubscribed && observer.error(e)\n );\n\n return { unsubscribe };\n }\n\n /**\n * Set the \"scramble key\" for the next data exchanges with the device.\n * Each app can have a different scramble key and it is set internally during instantiation.\n * @param {string} key - The scramble key to set.\n * @deprecated This method is no longer needed for modern transports and should be migrated away from.\n */\n setScrambleKey(_key: string) {}\n\n /**\n * Close the connection with the device.\n * @returns {Promise} A promise that resolves when the transport is closed.\n */\n close(): Promise {\n return Promise.resolve();\n }\n\n _events = new EventEmitter();\n\n /**\n * Listen for an event on the transport instance.\n * Transport implementations may have specific events. Common events include:\n * \"disconnect\" : triggered when the transport is disconnected.\n * @param {string} eventName - The name of the event to listen for.\n * @param {(...args: Array) => any} cb - The callback function to be invoked when the event occurs.\n */\n on(eventName: string, cb: (...args: Array) => any): void {\n this._events.on(eventName, cb);\n }\n\n /**\n * Stop listening to an event on an instance of transport.\n */\n off(eventName: string, cb: (...args: Array) => any): void {\n this._events.removeListener(eventName, cb);\n }\n\n emit(event: string, ...args: any): void {\n this._events.emit(event, ...args);\n }\n\n /**\n * Enable or not logs of the binary exchange\n */\n setDebugMode() {\n console.warn(\n \"setDebugMode is deprecated. use @ledgerhq/logs instead. No logs are emitted in this anymore.\"\n );\n }\n\n /**\n * Set a timeout (in milliseconds) for the exchange call. Only some transport might implement it. (e.g. U2F)\n */\n setExchangeTimeout(exchangeTimeout: number): void {\n this.exchangeTimeout = exchangeTimeout;\n }\n\n /**\n * Define the delay before emitting \"unresponsive\" on an exchange that does not respond\n */\n setExchangeUnresponsiveTimeout(unresponsiveTimeout: number): void {\n this.unresponsiveTimeout = unresponsiveTimeout;\n }\n\n /**\n * Send data to the device using the higher level API.\n * @param {number} cla - The instruction class for the command.\n * @param {number} ins - The instruction code for the command.\n * @param {number} p1 - The first parameter for the instruction.\n * @param {number} p2 - The second parameter for the instruction.\n * @param {Buffer} data - The data to be sent. Defaults to an empty buffer.\n * @param {Array} statusList - A list of acceptable status codes for the response. Defaults to [StatusCodes.OK].\n * @returns {Promise} A promise that resolves with the response data from the device.\n */\n send = async (\n cla: number,\n ins: number,\n p1: number,\n p2: number,\n data: Buffer = Buffer.alloc(0),\n statusList: Array = [StatusCodes.OK]\n ): Promise => {\n if (data.length >= 256) {\n throw new TransportError(\n \"data.length exceed 256 bytes limit. Got: \" + data.length,\n \"DataLengthTooBig\"\n );\n }\n\n const response = await this.exchange(\n Buffer.concat([\n Buffer.from([cla, ins, p1, p2]),\n Buffer.from([data.length]),\n data,\n ])\n );\n const sw = response.readUInt16BE(response.length - 2);\n\n if (!statusList.some((s) => s === sw)) {\n throw new TransportStatusError(sw);\n }\n\n return response;\n };\n\n /**\n * create() allows to open the first descriptor available or\n * throw if there is none or if timeout is reached.\n * This is a light helper, alternative to using listen() and open() (that you may need for any more advanced usecase)\n * @example\n TransportFoo.create().then(transport => ...)\n */\n static create(\n openTimeout = 3000,\n listenTimeout?: number\n ): Promise {\n return new Promise((resolve, reject) => {\n let found = false;\n const sub = this.listen({\n next: (e) => {\n found = true;\n if (sub) sub.unsubscribe();\n if (listenTimeoutId) clearTimeout(listenTimeoutId);\n this.open(e.descriptor, openTimeout).then(resolve, reject);\n },\n error: (e) => {\n if (listenTimeoutId) clearTimeout(listenTimeoutId);\n reject(e);\n },\n complete: () => {\n if (listenTimeoutId) clearTimeout(listenTimeoutId);\n\n if (!found) {\n reject(\n new TransportError(\n this.ErrorMessage_NoDeviceFound,\n \"NoDeviceFound\"\n )\n );\n }\n },\n });\n const listenTimeoutId = listenTimeout\n ? setTimeout(() => {\n sub.unsubscribe();\n reject(\n new TransportError(\n this.ErrorMessage_ListenTimeout,\n \"ListenTimeout\"\n )\n );\n }, listenTimeout)\n : null;\n });\n }\n\n exchangeBusyPromise: Promise | null | undefined;\n exchangeAtomicImpl = async (\n f: () => Promise\n ): Promise => {\n if (this.exchangeBusyPromise) {\n throw new TransportRaceCondition(\n \"An action was already pending on the Ledger device. Please deny or reconnect.\"\n );\n }\n\n let resolveBusy;\n const busyPromise: Promise = new Promise((r) => {\n resolveBusy = r;\n });\n this.exchangeBusyPromise = busyPromise;\n let unresponsiveReached = false;\n const timeout = setTimeout(() => {\n unresponsiveReached = true;\n this.emit(\"unresponsive\");\n }, this.unresponsiveTimeout);\n\n try {\n const res = await f();\n\n if (unresponsiveReached) {\n this.emit(\"responsive\");\n }\n\n return res;\n } finally {\n clearTimeout(timeout);\n if (resolveBusy) resolveBusy();\n this.exchangeBusyPromise = null;\n }\n };\n\n decorateAppAPIMethods(\n self: Record,\n methods: Array,\n scrambleKey: string\n ) {\n for (const methodName of methods) {\n self[methodName] = this.decorateAppAPIMethod(\n methodName,\n self[methodName],\n self,\n scrambleKey\n );\n }\n }\n\n _appAPIlock: string | null = null;\n\n decorateAppAPIMethod(\n methodName: string,\n f: (...args: A) => Promise,\n ctx: any,\n scrambleKey: string\n ): (...args: A) => Promise {\n return async (...args) => {\n const { _appAPIlock } = this;\n\n if (_appAPIlock) {\n return Promise.reject(\n new TransportError(\n \"Ledger Device is busy (lock \" + _appAPIlock + \")\",\n \"TransportLocked\"\n )\n );\n }\n\n try {\n this._appAPIlock = methodName;\n this.setScrambleKey(scrambleKey);\n return await f.apply(ctx, args);\n } finally {\n this._appAPIlock = null;\n }\n };\n }\n\n static ErrorMessage_ListenTimeout = \"No Ledger device found (timeout)\";\n static ErrorMessage_NoDeviceFound = \"No Ledger device found\";\n}\n", "import { TransportError } from \"@ledgerhq/errors\";\nexport type ResponseAcc =\n | {\n data: Buffer;\n dataLength: number;\n sequence: number;\n }\n | null\n | undefined;\nconst Tag = 0x05;\n\nfunction asUInt16BE(value) {\n const b = Buffer.alloc(2);\n b.writeUInt16BE(value, 0);\n return b;\n}\n\nconst initialAcc = {\n data: Buffer.alloc(0),\n dataLength: 0,\n sequence: 0,\n};\n\n/**\n *\n */\nconst createHIDframing = (channel: number, packetSize: number) => {\n return {\n makeBlocks(apdu: Buffer): Buffer[] {\n let data = Buffer.concat([asUInt16BE(apdu.length), apdu]);\n const blockSize = packetSize - 5;\n const nbBlocks = Math.ceil(data.length / blockSize);\n data = Buffer.concat([\n data, // fill data with padding\n Buffer.alloc(nbBlocks * blockSize - data.length + 1).fill(0),\n ]);\n const blocks: Buffer[] = [];\n\n for (let i = 0; i < nbBlocks; i++) {\n const head = Buffer.alloc(5);\n head.writeUInt16BE(channel, 0);\n head.writeUInt8(Tag, 2);\n head.writeUInt16BE(i, 3);\n const chunk = data.slice(i * blockSize, (i + 1) * blockSize);\n blocks.push(Buffer.concat([head, chunk]));\n }\n\n return blocks;\n },\n\n reduceResponse(acc: ResponseAcc, chunk: Buffer): ResponseAcc {\n let { data, dataLength, sequence } = acc || initialAcc;\n\n if (chunk.readUInt16BE(0) !== channel) {\n throw new TransportError(\"Invalid channel\", \"InvalidChannel\");\n }\n\n if (chunk.readUInt8(2) !== Tag) {\n throw new TransportError(\"Invalid tag\", \"InvalidTag\");\n }\n\n if (chunk.readUInt16BE(3) !== sequence) {\n throw new TransportError(\"Invalid sequence\", \"InvalidSequence\");\n }\n\n if (!acc) {\n dataLength = chunk.readUInt16BE(5);\n }\n\n sequence++;\n const chunkData = chunk.slice(acc ? 5 : 7);\n data = Buffer.concat([data, chunkData]);\n\n if (data.length > dataLength) {\n data = data.slice(0, dataLength);\n }\n\n return {\n data,\n dataLength,\n sequence,\n };\n },\n\n getReducedResult(acc: ResponseAcc): Buffer | null | undefined {\n if (acc && acc.dataLength === acc.data.length) {\n return acc.data;\n }\n },\n };\n};\n\nexport default createHIDframing;\n", "import semver from \"semver\";\n\n/**\n * The USB product IDs will be defined as MMII, encoding a model (MM) and an interface bitfield (II)\n *\n ** Model\n * Ledger Nano S : 0x10\n * Ledger Blue : 0x00\n * Ledger Nano X : 0x40\n *\n ** Interface support bitfield\n * Generic HID : 0x01\n * Keyboard HID : 0x02\n * U2F : 0x04\n * CCID : 0x08\n * WebUSB : 0x10\n */\nexport const IIGenericHID = 0x01;\nexport const IIKeyboardHID = 0x02;\nexport const IIU2F = 0x04;\nexport const IICCID = 0x08;\nexport const IIWebUSB = 0x10;\n\nexport enum DeviceModelId {\n blue = \"blue\",\n nanoS = \"nanoS\",\n nanoSP = \"nanoSP\",\n nanoX = \"nanoX\",\n stax = \"stax\",\n}\n\nconst devices: { [key in DeviceModelId]: DeviceModel } = {\n [DeviceModelId.blue]: {\n id: DeviceModelId.blue,\n productName: \"Ledger\u00A0Blue\",\n productIdMM: 0x00,\n legacyUsbProductId: 0x0000,\n usbOnly: true,\n memorySize: 480 * 1024,\n masks: [0x31000000, 0x31010000],\n getBlockSize: (_firwareVersion: string): number => 4 * 1024,\n },\n [DeviceModelId.nanoS]: {\n id: DeviceModelId.nanoS,\n productName: \"Ledger\u00A0Nano\u00A0S\",\n productIdMM: 0x10,\n legacyUsbProductId: 0x0001,\n usbOnly: true,\n memorySize: 320 * 1024,\n masks: [0x31100000],\n getBlockSize: (firmwareVersion: string): number =>\n semver.lt(semver.coerce(firmwareVersion) ?? \"\", \"2.0.0\")\n ? 4 * 1024\n : 2 * 1024,\n },\n [DeviceModelId.nanoSP]: {\n id: DeviceModelId.nanoSP,\n productName: \"Ledger Nano S Plus\",\n productIdMM: 0x50,\n legacyUsbProductId: 0x0005,\n usbOnly: true,\n memorySize: 1536 * 1024,\n masks: [0x33100000],\n getBlockSize: (_firmwareVersion: string): number => 32,\n },\n [DeviceModelId.nanoX]: {\n id: DeviceModelId.nanoX,\n productName: \"Ledger\u00A0Nano\u00A0X\",\n productIdMM: 0x40,\n legacyUsbProductId: 0x0004,\n usbOnly: false,\n memorySize: 2 * 1024 * 1024,\n masks: [0x33000000],\n getBlockSize: (_firwareVersion: string): number => 4 * 1024,\n bluetoothSpec: [\n {\n serviceUuid: \"13d63400-2c97-0004-0000-4c6564676572\",\n notifyUuid: \"13d63400-2c97-0004-0001-4c6564676572\",\n writeUuid: \"13d63400-2c97-0004-0002-4c6564676572\",\n writeCmdUuid: \"13d63400-2c97-0004-0003-4c6564676572\",\n },\n ],\n },\n [DeviceModelId.stax]: {\n id: DeviceModelId.stax,\n productName: \"Ledger\u00A0Stax\",\n productIdMM: 0x60,\n legacyUsbProductId: 0x0006,\n usbOnly: false,\n memorySize: 1536 * 1024,\n masks: [0x33200000],\n getBlockSize: (_firmwareVersion: string): number => 32,\n bluetoothSpec: [\n {\n serviceUuid: \"13d63400-2c97-6004-0000-4c6564676572\",\n notifyUuid: \"13d63400-2c97-6004-0001-4c6564676572\",\n writeUuid: \"13d63400-2c97-6004-0002-4c6564676572\",\n writeCmdUuid: \"13d63400-2c97-6004-0003-4c6564676572\",\n },\n ],\n },\n};\n\nconst productMap = {\n Blue: DeviceModelId.blue,\n \"Nano S\": DeviceModelId.nanoS,\n \"Nano S Plus\": DeviceModelId.nanoSP,\n \"Nano X\": DeviceModelId.nanoX,\n Stax: DeviceModelId.stax,\n};\n\nconst devicesList: DeviceModel[] = Object.values(devices);\n\n/**\n *\n */\nexport const ledgerUSBVendorId = 0x2c97;\n\n/**\n *\n */\nexport const getDeviceModel = (id: DeviceModelId): DeviceModel => {\n const info = devices[id];\n if (!info) throw new Error(\"device '\" + id + \"' does not exist\");\n return info;\n};\n\n/**\n * Given a `targetId`, return the deviceModel associated to it,\n * based on the first two bytes.\n */\nexport const identifyTargetId = (\n targetId: number\n): DeviceModel | null | undefined => {\n const deviceModel = devicesList.find(({ masks }) =>\n masks.find((mask) => (targetId & 0xffff0000) === mask)\n );\n\n return deviceModel;\n};\n\n/**\n *\n */\nexport const identifyUSBProductId = (\n usbProductId: number\n): DeviceModel | null | undefined => {\n const legacy = devicesList.find((d) => d.legacyUsbProductId === usbProductId);\n if (legacy) return legacy;\n const mm = usbProductId >> 8;\n const deviceModel = devicesList.find((d) => d.productIdMM === mm);\n return deviceModel;\n};\n\nexport const identifyProductName = (\n productName: string\n): DeviceModel | null | undefined => {\n const deviceModel = devicesList.find((d) => d.id === productMap[productName]);\n return deviceModel;\n};\n\nconst bluetoothServices: string[] = [];\nconst serviceUuidToInfos: Record = {};\n\nfor (const id in devices) {\n const deviceModel = devices[id];\n const { bluetoothSpec } = deviceModel;\n if (bluetoothSpec) {\n for (let i = 0; i < bluetoothSpec.length; i++) {\n const spec = bluetoothSpec[i];\n bluetoothServices.push(spec.serviceUuid);\n serviceUuidToInfos[spec.serviceUuid] = serviceUuidToInfos[\n spec.serviceUuid.replace(/-/g, \"\")\n ] = {\n deviceModel,\n ...spec,\n };\n }\n }\n}\n\n/**\n *\n */\nexport const getBluetoothServiceUuids = (): string[] => bluetoothServices;\n\n/**\n *\n */\nexport const getInfosForServiceUuid = (\n uuid: string\n): BluetoothInfos | undefined => serviceUuidToInfos[uuid.toLowerCase()];\n\n/**\n *\n */\nexport interface DeviceModel {\n id: DeviceModelId;\n productName: string;\n productIdMM: number;\n legacyUsbProductId: number;\n usbOnly: boolean;\n memorySize: number;\n masks: number[];\n // blockSize: number, // THIS FIELD IS DEPRECATED, use getBlockSize\n getBlockSize: (firmwareVersion: string) => number;\n bluetoothSpec?: {\n serviceUuid: string;\n writeUuid: string;\n writeCmdUuid: string;\n notifyUuid: string;\n }[];\n}\n\n/**\n *\n */\nexport interface BluetoothInfos {\n deviceModel: DeviceModel;\n serviceUuid: string;\n writeUuid: string;\n writeCmdUuid: string;\n notifyUuid: string;\n}\n", "import { ledgerUSBVendorId } from \"@ledgerhq/devices\";\n\nconst ledgerDevices = [\n {\n vendorId: ledgerUSBVendorId,\n },\n];\n\nexport async function requestLedgerDevice(): Promise {\n const device = await navigator.usb.requestDevice({\n filters: ledgerDevices,\n });\n return device;\n}\n\nexport async function getLedgerDevices(): Promise {\n const devices = await navigator.usb.getDevices();\n return devices.filter((d) => d.vendorId === ledgerUSBVendorId);\n}\n\nexport async function getFirstLedgerDevice(): Promise {\n const existingDevices = await getLedgerDevices();\n if (existingDevices.length > 0) return existingDevices[0];\n return requestLedgerDevice();\n}\n\nexport const isSupported = (): Promise =>\n Promise.resolve(\n !!navigator &&\n !!navigator.usb &&\n typeof navigator.usb.getDevices === \"function\"\n );\n", "import Transport from \"@ledgerhq/hw-transport\";\nimport type {\n Observer,\n DescriptorEvent,\n Subscription,\n} from \"@ledgerhq/hw-transport\";\nimport hidFraming from \"@ledgerhq/devices/hid-framing\";\nimport { identifyUSBProductId } from \"@ledgerhq/devices\";\nimport type { DeviceModel } from \"@ledgerhq/devices\";\nimport { log } from \"@ledgerhq/logs\";\nimport {\n TransportOpenUserCancelled,\n TransportInterfaceNotAvailable,\n TransportWebUSBGestureRequired,\n DisconnectedDeviceDuringOperation,\n DisconnectedDevice,\n} from \"@ledgerhq/errors\";\nimport {\n getLedgerDevices,\n getFirstLedgerDevice,\n requestLedgerDevice,\n isSupported,\n} from \"./webusb\";\n\nconst configurationValue = 1;\nconst endpointNumber = 3;\n\n/**\n * WebUSB Transport implementation\n * @example\n * import TransportWebUSB from \"@ledgerhq/hw-transport-webusb\";\n * ...\n * TransportWebUSB.create().then(transport => ...)\n */\nexport default class TransportWebUSB extends Transport {\n device: USBDevice;\n deviceModel: DeviceModel | null | undefined;\n channel = Math.floor(Math.random() * 0xffff);\n packetSize = 64;\n interfaceNumber: number;\n\n constructor(device: USBDevice, interfaceNumber: number) {\n super();\n this.device = device;\n this.interfaceNumber = interfaceNumber;\n this.deviceModel = identifyUSBProductId(device.productId);\n }\n\n /**\n * Check if WebUSB transport is supported.\n */\n static isSupported = isSupported;\n\n /**\n * List the WebUSB devices that was previously authorized by the user.\n */\n static list = getLedgerDevices;\n\n /**\n * Actively listen to WebUSB devices and emit ONE device\n * that was either accepted before, if not it will trigger the native permission UI.\n *\n * Important: it must be called in the context of a UI click!\n */\n static listen = (\n observer: Observer>\n ): Subscription => {\n let unsubscribed = false;\n getFirstLedgerDevice().then(\n (device) => {\n if (!unsubscribed) {\n const deviceModel = identifyUSBProductId(device.productId);\n observer.next({\n type: \"add\",\n descriptor: device,\n deviceModel,\n });\n observer.complete();\n }\n },\n (error) => {\n if (\n window.DOMException &&\n error instanceof window.DOMException &&\n error.code === 18\n ) {\n observer.error(new TransportWebUSBGestureRequired(error.message));\n } else {\n observer.error(new TransportOpenUserCancelled(error.message));\n }\n }\n );\n\n function unsubscribe() {\n unsubscribed = true;\n }\n\n return {\n unsubscribe,\n };\n };\n\n /**\n * Similar to create() except it will always display the device permission (even if some devices are already accepted).\n */\n static async request() {\n const device = await requestLedgerDevice();\n return TransportWebUSB.open(device);\n }\n\n /**\n * Similar to create() except it will never display the device permission (it returns a Promise, null if it fails to find a device).\n */\n static async openConnected() {\n const devices = await getLedgerDevices();\n if (devices.length === 0) return null;\n return TransportWebUSB.open(devices[0]);\n }\n\n /**\n * Create a Ledger transport with a USBDevice\n */\n static async open(device: USBDevice) {\n await device.open();\n\n if (device.configuration === null) {\n await device.selectConfiguration(configurationValue);\n }\n\n await gracefullyResetDevice(device);\n const iface = device.configurations[0].interfaces.find(({ alternates }) =>\n alternates.some((a) => a.interfaceClass === 255)\n );\n\n if (!iface) {\n throw new TransportInterfaceNotAvailable(\n \"No WebUSB interface found for your Ledger device. Please upgrade firmware or contact techsupport.\"\n );\n }\n\n const interfaceNumber = iface.interfaceNumber;\n\n try {\n await device.claimInterface(interfaceNumber);\n } catch (e: any) {\n await device.close();\n throw new TransportInterfaceNotAvailable(e.message);\n }\n\n const transport = new TransportWebUSB(device, interfaceNumber);\n\n const onDisconnect = (e) => {\n if (device === e.device) {\n // $FlowFixMe\n navigator.usb.removeEventListener(\"disconnect\", onDisconnect);\n\n transport._emitDisconnect(new DisconnectedDevice());\n }\n };\n\n // $FlowFixMe\n navigator.usb.addEventListener(\"disconnect\", onDisconnect);\n return transport;\n }\n\n _disconnectEmitted = false;\n _emitDisconnect = (e: Error) => {\n if (this._disconnectEmitted) return;\n this._disconnectEmitted = true;\n this.emit(\"disconnect\", e);\n };\n\n /**\n * Release the transport device\n */\n async close(): Promise {\n await this.exchangeBusyPromise;\n await this.device.releaseInterface(this.interfaceNumber);\n await gracefullyResetDevice(this.device);\n await this.device.close();\n }\n\n /**\n * Exchange with the device using APDU protocol.\n * @param apdu\n * @returns a promise of apdu response\n */\n async exchange(apdu: Buffer): Promise {\n const b = await this.exchangeAtomicImpl(async () => {\n const { channel, packetSize } = this;\n log(\"apdu\", \"=> \" + apdu.toString(\"hex\"));\n const framing = hidFraming(channel, packetSize);\n // Write...\n const blocks = framing.makeBlocks(apdu);\n\n for (let i = 0; i < blocks.length; i++) {\n await this.device.transferOut(endpointNumber, blocks[i]);\n }\n\n // Read...\n let result;\n let acc;\n\n while (!(result = framing.getReducedResult(acc))) {\n const r = await this.device.transferIn(endpointNumber, packetSize);\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n const buffer = Buffer.from(r.data.buffer);\n acc = framing.reduceResponse(acc, buffer);\n }\n\n log(\"apdu\", \"<= \" + result.toString(\"hex\"));\n return result;\n }).catch((e) => {\n if (e && e.message && e.message.includes(\"disconnected\")) {\n this._emitDisconnect(e);\n\n throw new DisconnectedDeviceDuringOperation(e.message);\n }\n\n throw e;\n });\n\n return b as Buffer;\n }\n\n setScrambleKey() {}\n}\n\nasync function gracefullyResetDevice(device: USBDevice) {\n try {\n await device.reset();\n } catch (err) {\n console.warn(err);\n }\n}\n", "import Btc from '@ledgerhq/hw-app-btc'\nimport useTransports from './providers/transports'\nimport { BitcoinLedgerSignerOptions } from './interfaces/BitcoinLedgerSignerOptions'\nimport { TransactionInit } from './interfaces/TransactionInit'\n\nconst defaultPath = '84\\'/0\\'/0\\'/0/0' // Legacy addresses: '44\\'/0\\'/0\\'/0/0', Segwit: '49\\'/0\\'/0\\'/0/0', Native Segwit: '84\\'/0\\'/0\\'/0/0'\n// const defaultPath = '84\\'/1\\'/0\\'/0/0' // TestNetPath\nconst defaultType = 'usb'\nconst { createUSBTransport, createSpeculosTransport } = useTransports()\nconst transportCreators = {\n 'usb': createUSBTransport,\n 'speculos': createSpeculosTransport\n}\n\nexport default class BitcoinLedgerSigner {\n readonly type: string\n readonly path: string\n readonly baseURL?: string\n _btc?: Promise\n\n constructor(options: BitcoinLedgerSignerOptions) {\n if (!options.type) options.type = defaultType\n if (!options.path) options.path = defaultPath\n this.type = options.type\n this.path = options.path\n this.baseURL = options.baseURL\n\n const transportCreatorType = this.type as keyof typeof transportCreators\n const transportCreator = transportCreators[transportCreatorType]\n if (!transportCreator) console.log('Unknown or unsupported type', this.type)\n this._btc = transportCreator(this.baseURL).then(transport => {\n // TODO: Add conditional for testnet\n return new Btc({ transport, currency: 'bitcoin_testnet' })\n return new Btc({ transport, currency: 'bitcoin' })\n })\n }\n\n _retry(callback: (btc: Btc) => Promise, timeout?: number): Promise {\n // The async-promise-executor is ok since _retry handles necessary errors \n // eslint-disable-next-line no-async-promise-executor\n return new Promise(async (resolve, reject) => {\n const ledgerConnectionError = 'Please make sure Ledger is ready and retry'\n if (timeout && timeout > 0) {\n setTimeout(() => reject(new Error(ledgerConnectionError)), timeout)\n }\n\n const btc = await this._btc as Btc\n\n // Wait up to 5 seconds\n for (let i = 0; i < 50; i++) {\n try {\n const result = await callback(btc)\n return resolve(result)\n } catch (error) {\n if ((error as { id: string }).id !== 'TransportLocked') {\n return reject(error)\n }\n }\n await new Promise((resolve) => {\n setTimeout(resolve, 100)\n })\n }\n\n return reject(new Error(ledgerConnectionError))\n })\n }\n\n async getAddress(): Promise {\n const { bitcoinAddress: address } = await this._retry((btc) => btc.getWalletPublicKey(\n this.path,\n { verify: false, format: 'bech32'}\n ))\n return address\n }\n\n async signMessage(message: string): Promise {\n try {\n const messageHex = Buffer.from(message).toString('hex')\n const result = await this._retry((btc) => btc.signMessage(\n this.path,\n messageHex\n ))\n const v = result['v'] + 27 + 4\n const signature = Buffer.from(v.toString(16) + result['r'] + result['s'], 'hex').toString('base64')\n console.log('Signature : ' + signature)\n return signature\n } catch (err) {\n console.log(err)\n throw err\n }\n }\n\n async signTransaction(path: string, transaction: any) {\n }\n\n async sendTransaction({from, to, value}: TransactionInit): Promise {\n try {\n // Build the transaction object using splitTransaction to then pass into getTrustedInput\n // Create a transaction hex string\n const transactionHex = 'f85f49b51366f7150d2adea6544bc256743707a38e2bdfbf839349ba1ff2875c'\n const isSegwitSupported = false\n const tx = await this._retry(async (btc) => btc.splitTransaction(\n transactionHex,\n isSegwitSupported\n ))\n return new Promise(resolve => resolve(''))\n // const output_index = 1\n // const inputs = [[tx, output_index]]\n // Get trusted input (returns a string) using getTrustedInput\n // const trustedInput = await this._retry((btc) => btc.getTrustedInput(\n // 0,\n\n // ))\n \n // Build the CreateTransactionArg and pass it to createPaymentTransaction\n } catch (err) {\n console.log('Error in bitcoin-ledger-signer sendTransaction: ', err)\n throw err\n }\n }\n}", "import { crypto } from \"bitcoinjs-lib\";\nimport { pointCompress } from \"tiny-secp256k1\";\nimport {\n getXpubComponents,\n hardenedPathOf,\n pathArrayToString,\n pathStringToArray,\n pubkeyFromXpub,\n} from \"./bip32\";\nimport { BufferReader } from \"./buffertools\";\nimport type { CreateTransactionArg } from \"./createTransaction\";\nimport type { AddressFormat } from \"./getWalletPublicKey\";\nimport {\n AccountType,\n p2pkh,\n p2tr,\n p2wpkh,\n p2wpkhWrapped,\n SpendingCondition,\n} from \"./newops/accounttype\";\nimport { AppClient as Client } from \"./newops/appClient\";\nimport {\n createKey,\n DefaultDescriptorTemplate,\n WalletPolicy,\n} from \"./newops/policy\";\nimport { extract } from \"./newops/psbtExtractor\";\nimport { finalize } from \"./newops/psbtFinalizer\";\nimport { psbtIn, PsbtV2 } from \"./newops/psbtv2\";\nimport { serializeTransaction } from \"./serializeTransaction\";\nimport type { Transaction } from \"./types\";\n\n/**\n * This class implements the same interface as BtcOld (formerly\n * named Btc), but interacts with Bitcoin hardware app version 2+\n * which uses a totally new APDU protocol. This new\n * protocol is documented at\n * https://github.com/LedgerHQ/app-bitcoin-new/blob/master/doc/bitcoin.md\n *\n * Since the interface must remain compatible with BtcOld, the methods\n * of this class are quite clunky, because it needs to adapt legacy\n * input data into the PSBT process. In the future, a new interface should\n * be developed that exposes PSBT to the outer world, which would render\n * a much cleaner implementation.\n */\nexport default class BtcNew {\n constructor(private client: Client) {}\n\n /**\n * This is a new method that allow users to get an xpub at a standard path.\n * Standard paths are described at\n * https://github.com/LedgerHQ/app-bitcoin-new/blob/master/doc/bitcoin.md#description\n *\n * This boils down to paths (N=0 for Bitcoin, N=1 for Testnet):\n * M/44'/N'/x'/**\n * M/48'/N'/x'/y'/**\n * M/49'/N'/x'/**\n * M/84'/N'/x'/**\n * M/86'/N'/x'/**\n *\n * The method was added because of added security in the hardware app v2+. The\n * new hardware app will allow export of any xpub up to and including the\n * deepest hardened key of standard derivation paths, whereas the old app\n * would allow export of any key.\n *\n * This caused an issue for callers of this class, who only had\n * getWalletPublicKey() to call which means they have to constuct xpub\n * themselves:\n *\n * Suppose a user of this class wants to create an account xpub on a standard\n * path, M/44'/0'/Z'. The user must get the parent key fingerprint (see BIP32)\n * by requesting the parent key M/44'/0'. The new app won't allow that, because\n * it only allows exporting deepest level hardened path. So the options are to\n * allow requesting M/44'/0' from the app, or to add a new function\n * \"getWalletXpub\".\n *\n * We opted for adding a new function, which can greatly simplify client code.\n */\n async getWalletXpub({\n path,\n xpubVersion,\n }: {\n path: string;\n xpubVersion: number;\n }): Promise {\n const pathElements: number[] = pathStringToArray(path);\n const xpub = await this.client.getExtendedPubkey(false, pathElements);\n const xpubComponents = getXpubComponents(xpub);\n if (xpubComponents.version != xpubVersion) {\n throw new Error(\n `Expected xpub version ${xpubVersion} doesn't match the xpub version from the device ${xpubComponents.version}`\n );\n }\n return xpub;\n }\n\n /**\n * This method returns a public key, a bitcoin address, and and a chaincode\n * for a specific derivation path.\n *\n * Limitation: If the path is not a leaf node of a standard path, the address\n * will be the empty string \"\", see this.getWalletAddress() for details.\n */\n async getWalletPublicKey(\n path: string,\n opts?: {\n verify?: boolean;\n format?: AddressFormat;\n }\n ): Promise<{\n publicKey: string;\n bitcoinAddress: string;\n chainCode: string;\n }> {\n if (!isPathNormal(path)) {\n throw Error(`non-standard path: ${path}`);\n }\n const pathElements: number[] = pathStringToArray(path);\n const xpub = await this.client.getExtendedPubkey(false, pathElements);\n\n const display = opts?.verify ?? false;\n\n const address = await this.getWalletAddress(\n pathElements,\n descrTemplFrom(opts?.format ?? \"legacy\"),\n display\n );\n const components = getXpubComponents(xpub);\n const uncompressedPubkey = Buffer.from(\n pointCompress(components.pubkey, false)\n );\n return {\n publicKey: uncompressedPubkey.toString(\"hex\"),\n bitcoinAddress: address,\n chainCode: components.chaincode.toString(\"hex\"),\n };\n }\n\n /**\n * Get an address for the specified path.\n *\n * If display is true, we must get the address from the device, which would require\n * us to determine WalletPolicy. This requires two *extra* queries to the device, one\n * for the account xpub and one for master key fingerprint.\n *\n * If display is false we *could* generate the address ourselves, but chose to\n * get it from the device to save development time. However, it shouldn't take\n * too much time to implement local address generation.\n *\n * Moreover, if the path is not for a leaf, ie accountPath+/X/Y, there is no\n * way to get the address from the device. In this case we have to create it\n * ourselves, but we don't at this time, and instead return an empty (\"\") address.\n */\n private async getWalletAddress(\n pathElements: number[],\n descrTempl: DefaultDescriptorTemplate,\n display: boolean\n ): Promise {\n const accountPath = hardenedPathOf(pathElements);\n if (accountPath.length + 2 != pathElements.length) {\n return \"\";\n }\n const accountXpub = await this.client.getExtendedPubkey(false, accountPath);\n const masterFingerprint = await this.client.getMasterFingerprint();\n const policy = new WalletPolicy(\n descrTempl,\n createKey(masterFingerprint, accountPath, accountXpub)\n );\n const changeAndIndex = pathElements.slice(-2, pathElements.length);\n return this.client.getWalletAddress(\n policy,\n Buffer.alloc(32, 0),\n changeAndIndex[0],\n changeAndIndex[1],\n display\n );\n }\n\n /**\n * Build and sign a transaction. See Btc.createPaymentTransaction for\n * details on how to use this method.\n *\n * This method will convert the legacy arguments, CreateTransactionArg, into\n * a psbt which is finally signed and finalized, and the extracted fully signed\n * transaction is returned.\n */\n async createPaymentTransaction(arg: CreateTransactionArg): Promise {\n const inputCount = arg.inputs.length;\n if (inputCount == 0) {\n throw Error(\"No inputs\");\n }\n const psbt = new PsbtV2();\n // The master fingerprint is needed when adding BIP32 derivation paths on\n // the psbt.\n const masterFp = await this.client.getMasterFingerprint();\n\n const accountType = accountTypeFromArg(arg, psbt, masterFp);\n\n if (arg.lockTime != undefined) {\n // The signer will assume locktime 0 if unset\n psbt.setGlobalFallbackLocktime(arg.lockTime);\n }\n psbt.setGlobalInputCount(inputCount);\n psbt.setGlobalPsbtVersion(2);\n psbt.setGlobalTxVersion(2);\n\n let notifyCount = 0;\n const progress = () => {\n if (!arg.onDeviceStreaming) return;\n arg.onDeviceStreaming({\n total: 2 * inputCount,\n index: notifyCount,\n progress: ++notifyCount / (2 * inputCount),\n });\n };\n\n let accountXpub = \"\";\n let accountPath: number[] = [];\n for (let i = 0; i < inputCount; i++) {\n progress();\n const pathElems: number[] = pathStringToArray(arg.associatedKeysets[i]);\n if (accountXpub == \"\") {\n // We assume all inputs belong to the same account so we set\n // the account xpub and path based on the first input.\n accountPath = pathElems.slice(0, -2);\n accountXpub = await this.client.getExtendedPubkey(false, accountPath);\n }\n await this.setInput(\n psbt,\n i,\n arg.inputs[i],\n pathElems,\n accountType,\n masterFp,\n arg.sigHashType\n );\n }\n\n const outputsConcat = Buffer.from(arg.outputScriptHex, \"hex\");\n const outputsBufferReader = new BufferReader(outputsConcat);\n const outputCount = outputsBufferReader.readVarInt();\n psbt.setGlobalOutputCount(outputCount);\n const changeData = await this.outputScriptAt(\n accountPath,\n accountType,\n arg.changePath\n );\n // If the caller supplied a changePath, we must make sure there actually is\n // a change output. If no change output found, we'll throw an error.\n let changeFound = !changeData;\n for (let i = 0; i < outputCount; i++) {\n const amount = Number(outputsBufferReader.readUInt64());\n const outputScript = outputsBufferReader.readVarSlice();\n psbt.setOutputAmount(i, amount);\n psbt.setOutputScript(i, outputScript);\n\n // We won't know if we're paying to ourselves, because there's no\n // information in arg to support multiple \"change paths\". One exception is\n // if there are multiple outputs to the change address.\n const isChange =\n changeData && outputScript.equals(changeData?.cond.scriptPubKey);\n if (isChange) {\n changeFound = true;\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const changePath = pathStringToArray(arg.changePath!);\n const pubkey = changeData.pubkey;\n\n accountType.setOwnOutput(i, changeData.cond, [pubkey], [changePath]);\n }\n }\n if (!changeFound) {\n throw new Error(\n \"Change script not found among outputs! \" +\n changeData?.cond.scriptPubKey.toString(\"hex\")\n );\n }\n\n const key = createKey(masterFp, accountPath, accountXpub);\n const p = new WalletPolicy(accountType.getDescriptorTemplate(), key);\n // This is cheating, because it's not actually requested on the\n // device yet, but it will be, soonish.\n if (arg.onDeviceSignatureRequested) arg.onDeviceSignatureRequested();\n\n let firstSigned = false;\n // This callback will be called once for each signature yielded.\n const progressCallback = () => {\n if (!firstSigned) {\n firstSigned = true;\n arg.onDeviceSignatureGranted && arg.onDeviceSignatureGranted();\n }\n progress();\n };\n\n await this.signPsbt(psbt, p, progressCallback);\n finalize(psbt);\n const serializedTx = extract(psbt);\n return serializedTx.toString(\"hex\");\n }\n\n /**\n * Calculates an output script along with public key and possible redeemScript\n * from a path and accountType. The accountPath must be a prefix of path.\n *\n * @returns an object with output script (property \"script\"), redeemScript (if\n * wrapped p2wpkh), and pubkey at provided path. The values of these three\n * properties depend on the accountType used.\n */\n private async outputScriptAt(\n accountPath: number[],\n accountType: AccountType,\n path: string | undefined\n ): Promise<{ cond: SpendingCondition; pubkey: Buffer } | undefined> {\n if (!path) return undefined;\n const pathElems = pathStringToArray(path);\n // Make sure path is in our account, otherwise something fishy is probably\n // going on.\n for (let i = 0; i < accountPath.length; i++) {\n if (accountPath[i] != pathElems[i]) {\n throw new Error(\n `Path ${path} not in account ${pathArrayToString(accountPath)}`\n );\n }\n }\n const xpub = await this.client.getExtendedPubkey(false, pathElems);\n const pubkey = pubkeyFromXpub(xpub);\n const cond = accountType.spendingCondition([pubkey]);\n return { cond, pubkey };\n }\n\n /**\n * Adds relevant data about an input to the psbt. This includes sequence,\n * previous txid, output index, spent UTXO, redeem script for wrapped p2wpkh,\n * public key and its derivation path.\n */\n private async setInput(\n psbt: PsbtV2,\n i: number,\n input: [\n Transaction,\n number,\n string | null | undefined,\n number | null | undefined\n ],\n pathElements: number[],\n accountType: AccountType,\n masterFP: Buffer,\n sigHashType?: number\n ): Promise {\n const inputTx = input[0];\n const spentOutputIndex = input[1];\n // redeemScript will be null for wrapped p2wpkh, we need to create it\n // ourselves. But if set, it should be used.\n const redeemScript = input[2] ? Buffer.from(input[2], \"hex\") : undefined;\n const sequence = input[3];\n if (sequence != undefined) {\n psbt.setInputSequence(i, sequence);\n }\n if (sigHashType != undefined) {\n psbt.setInputSighashType(i, sigHashType);\n }\n const inputTxBuffer = serializeTransaction(inputTx, true);\n const inputTxid = crypto.hash256(inputTxBuffer);\n const xpubBase58 = await this.client.getExtendedPubkey(false, pathElements);\n\n const pubkey = pubkeyFromXpub(xpubBase58);\n if (!inputTx.outputs)\n throw Error(\"Missing outputs array in transaction to sign\");\n const spentTxOutput = inputTx.outputs[spentOutputIndex];\n const spendCondition: SpendingCondition = {\n scriptPubKey: spentTxOutput.script,\n redeemScript: redeemScript,\n };\n const spentOutput = { cond: spendCondition, amount: spentTxOutput.amount };\n accountType.setInput(\n i,\n inputTxBuffer,\n spentOutput,\n [pubkey],\n [pathElements]\n );\n\n psbt.setInputPreviousTxId(i, inputTxid);\n psbt.setInputOutputIndex(i, spentOutputIndex);\n }\n\n /**\n * This implements the \"Signer\" role of the BIP370 transaction signing\n * process.\n *\n * It ssks the hardware device to sign the a psbt using the specified wallet\n * policy. This method assumes BIP32 derived keys are used for all inputs, see\n * comment in-line. The signatures returned from the hardware device is added\n * to the appropriate input fields of the PSBT.\n */\n private async signPsbt(\n psbt: PsbtV2,\n walletPolicy: WalletPolicy,\n progressCallback: () => void\n ): Promise {\n const sigs: Map = await this.client.signPsbt(\n psbt,\n walletPolicy,\n Buffer.alloc(32, 0),\n progressCallback\n );\n sigs.forEach((v, k) => {\n // Note: Looking at BIP32 derivation does not work in the generic case,\n // since some inputs might not have a BIP32-derived pubkey.\n const pubkeys = psbt.getInputKeyDatas(k, psbtIn.BIP32_DERIVATION);\n let pubkey;\n if (pubkeys.length != 1) {\n // No legacy BIP32_DERIVATION, assume we're using taproot.\n pubkey = psbt.getInputKeyDatas(k, psbtIn.TAP_BIP32_DERIVATION);\n if (pubkey.length == 0) {\n throw Error(`Missing pubkey derivation for input ${k}`);\n }\n psbt.setInputTapKeySig(k, v);\n } else {\n pubkey = pubkeys[0];\n psbt.setInputPartialSig(k, pubkey, v);\n }\n });\n }\n}\n\nfunction descrTemplFrom(\n addressFormat: AddressFormat\n): DefaultDescriptorTemplate {\n if (addressFormat == \"legacy\") return \"pkh(@0)\";\n if (addressFormat == \"p2sh\") return \"sh(wpkh(@0))\";\n if (addressFormat == \"bech32\") return \"wpkh(@0)\";\n if (addressFormat == \"bech32m\") return \"tr(@0)\";\n throw new Error(\"Unsupported address format \" + addressFormat);\n}\n\nfunction accountTypeFromArg(\n arg: CreateTransactionArg,\n psbt: PsbtV2,\n masterFp: Buffer\n): AccountType {\n if (arg.additionals.includes(\"bech32m\")) return new p2tr(psbt, masterFp);\n if (arg.additionals.includes(\"bech32\")) return new p2wpkh(psbt, masterFp);\n if (arg.segwit) return new p2wpkhWrapped(psbt, masterFp);\n return new p2pkh(psbt, masterFp);\n}\n\n/*\n The new protocol only allows standard path.\n Standard paths are (currently):\n M/44'/(1|0)'/X'\n M/49'/(1|0)'/X'\n M/84'/(1|0)'/X'\n M/86'/(1|0)'/X'\n M/48'/(1|0)'/X'/Y'\n followed by \"\", \"(0|1)\", or \"(0|1)/b\", where a and b are \n non-hardened. For example, the following paths are standard\n M/48'/1'/99'/7'\n M/86'/1'/99'/0\n M/48'/0'/99'/7'/1/17\n The following paths are non-standard\n M/48'/0'/99' // Not deepest hardened path\n M/48'/0'/99'/7'/1/17/2 // Too many non-hardened derivation steps\n M/199'/0'/1'/0/88 // Not a known purpose 199\n M/86'/1'/99'/2 // Change path item must be 0 or 1\n*/\nfunction isPathNormal(path: string): boolean {\n //path is not deepest hardened node of a standard path or deeper, use BtcOld\n const h = 0x80000000; //HARDENED from bip32\n const pathElems = pathStringToArray(path);\n\n const hard = (n: number) => n >= h;\n const soft = (n: number | undefined) => n === undefined || n < h;\n const change = (n: number | undefined) =>\n n === undefined || n === 0 || n === 1;\n\n if (\n pathElems.length >= 3 &&\n pathElems.length <= 5 &&\n [44 + h, 49 + h, 84 + h, 86 + h].some((v) => v == pathElems[0]) &&\n [0 + h, 1 + h].some((v) => v == pathElems[1]) &&\n hard(pathElems[2]) &&\n change(pathElems[3]) &&\n soft(pathElems[4])\n ) {\n return true;\n }\n if (\n pathElems.length >= 4 &&\n pathElems.length <= 6 &&\n 48 + h == pathElems[0] &&\n [0 + h, 1 + h].some((v) => v == pathElems[1]) &&\n hard(pathElems[2]) &&\n hard(pathElems[3]) &&\n change(pathElems[4]) &&\n soft(pathElems[5])\n ) {\n return true;\n }\n return false;\n}\n", "import bippath from \"bip32-path\";\nimport bs58check from \"bs58check\";\n\nexport function pathElementsToBuffer(paths: number[]): Buffer {\n const buffer = Buffer.alloc(1 + paths.length * 4);\n buffer[0] = paths.length;\n paths.forEach((element, index) => {\n buffer.writeUInt32BE(element, 1 + 4 * index);\n });\n return buffer;\n}\n\nexport function bip32asBuffer(path: string): Buffer {\n const pathElements = !path ? [] : pathStringToArray(path);\n return pathElementsToBuffer(pathElements);\n}\n\nexport function pathArrayToString(pathElements: number[]): string {\n // Limitation: bippath can't handle and empty path. It shouldn't affect us\n // right now, but might in the future.\n // TODO: Fix support for empty path.\n return bippath.fromPathArray(pathElements).toString();\n}\n\nexport function pathStringToArray(path: string): number[] {\n return bippath.fromString(path).toPathArray();\n}\n\nexport function pubkeyFromXpub(xpub: string): Buffer {\n const xpubBuf = bs58check.decode(xpub);\n return xpubBuf.slice(xpubBuf.length - 33);\n}\n\nexport function getXpubComponents(xpub: string): {\n chaincode: Buffer;\n pubkey: Buffer;\n version: number;\n} {\n const xpubBuf: Buffer = bs58check.decode(xpub);\n return {\n chaincode: xpubBuf.slice(13, 13 + 32),\n pubkey: xpubBuf.slice(xpubBuf.length - 33),\n version: xpubBuf.readUInt32BE(0),\n };\n}\n\nexport function hardenedPathOf(pathElements: number[]): number[] {\n for (let i = pathElements.length - 1; i >= 0; i--) {\n if (pathElements[i] >= 0x80000000) {\n return pathElements.slice(0, i + 1);\n }\n }\n return [];\n}\n", "import varuint from \"varuint-bitcoin\";\n\nexport function unsafeTo64bitLE(n: number): Buffer {\n // we want to represent the input as a 8-bytes array\n if (n > Number.MAX_SAFE_INTEGER) {\n throw new Error(\"Can't convert numbers > MAX_SAFE_INT\");\n }\n const byteArray = Buffer.alloc(8, 0);\n for (let index = 0; index < byteArray.length; index++) {\n const byte = n & 0xff;\n byteArray[index] = byte;\n n = (n - byte) / 256;\n }\n return byteArray;\n}\n\nexport function unsafeFrom64bitLE(byteArray: Buffer): number {\n let value = 0;\n if (byteArray.length != 8) {\n throw new Error(\"Expected Bufffer of lenght 8\");\n }\n if (byteArray[7] != 0) {\n throw new Error(\"Can't encode numbers > MAX_SAFE_INT\");\n }\n if (byteArray[6] > 0x1f) {\n throw new Error(\"Can't encode numbers > MAX_SAFE_INT\");\n }\n for (let i = byteArray.length - 1; i >= 0; i--) {\n value = value * 256 + byteArray[i];\n }\n return value;\n}\n\nexport class BufferWriter {\n private bufs: Buffer[] = [];\n\n write(alloc: number, fn: (b: Buffer) => void): void {\n const b = Buffer.alloc(alloc);\n fn(b);\n this.bufs.push(b);\n }\n\n writeUInt8(i: number): void {\n this.write(1, (b) => b.writeUInt8(i, 0));\n }\n\n writeInt32(i: number): void {\n this.write(4, (b) => b.writeInt32LE(i, 0));\n }\n\n writeUInt32(i: number): void {\n this.write(4, (b) => b.writeUInt32LE(i, 0));\n }\n\n writeUInt64(i: number): void {\n const bytes = unsafeTo64bitLE(i);\n this.writeSlice(bytes);\n }\n\n writeVarInt(i: number): void {\n this.bufs.push(varuint.encode(i));\n }\n\n writeSlice(slice: Buffer): void {\n this.bufs.push(Buffer.from(slice));\n }\n\n writeVarSlice(slice: Buffer): void {\n this.writeVarInt(slice.length);\n this.writeSlice(slice);\n }\n\n buffer(): Buffer {\n return Buffer.concat(this.bufs);\n }\n}\n\nexport class BufferReader {\n constructor(public buffer: Buffer, public offset: number = 0) {}\n\n available(): number {\n return this.buffer.length - this.offset;\n }\n\n readUInt8(): number {\n const result = this.buffer.readUInt8(this.offset);\n this.offset++;\n return result;\n }\n\n readInt32(): number {\n const result = this.buffer.readInt32LE(this.offset);\n this.offset += 4;\n return result;\n }\n\n readUInt32(): number {\n const result = this.buffer.readUInt32LE(this.offset);\n this.offset += 4;\n return result;\n }\n\n readUInt64(): number {\n const buf = this.readSlice(8);\n const n = unsafeFrom64bitLE(buf);\n return n;\n }\n\n readVarInt(): number {\n const vi = varuint.decode(this.buffer, this.offset);\n this.offset += varuint.decode.bytes;\n return vi;\n }\n\n readSlice(n: number): Buffer {\n if (this.buffer.length < this.offset + n) {\n throw new Error(\"Cannot read slice out of bounds\");\n }\n const result = this.buffer.slice(this.offset, this.offset + n);\n this.offset += n;\n return result;\n }\n\n readVarSlice(): Buffer {\n return this.readSlice(this.readVarInt());\n }\n\n readVector(): Buffer[] {\n const count = this.readVarInt();\n const vector: Buffer[] = [];\n for (let i = 0; i < count; i++) vector.push(this.readVarSlice());\n return vector;\n }\n}\n", "import { crypto } from \"bitcoinjs-lib\";\nimport { pointAddScalar } from \"tiny-secp256k1\";\nimport { BufferWriter } from \"../buffertools\";\nimport {\n HASH_SIZE,\n OP_CHECKSIG,\n OP_DUP,\n OP_EQUAL,\n OP_EQUALVERIFY,\n OP_HASH160,\n} from \"../constants\";\nimport { hashPublicKey } from \"../hashPublicKey\";\nimport { DefaultDescriptorTemplate } from \"./policy\";\nimport { PsbtV2 } from \"./psbtv2\";\n\nexport type SpendingCondition = {\n scriptPubKey: Buffer;\n redeemScript?: Buffer;\n // Possible future extension:\n // witnessScript?: Buffer; // For p2wsh witnessScript\n // tapScript?: {tapPath: Buffer[], script: Buffer} // For taproot\n};\n\nexport type SpentOutput = { cond: SpendingCondition; amount: Buffer };\n\n/**\n * Encapsulates differences between account types, for example p2wpkh,\n * p2wpkhWrapped, p2tr.\n */\nexport interface AccountType {\n /**\n * Generates a scriptPubKey (output script) from a list of public keys. If a\n * p2sh redeemScript or a p2wsh witnessScript is needed it will also be set on\n * the returned SpendingCondition.\n *\n * The pubkeys are expected to be 33 byte ecdsa compressed pubkeys.\n */\n spendingCondition(pubkeys: Buffer[]): SpendingCondition;\n\n /**\n * Populates the psbt with account type-specific data for an input.\n * @param i The index of the input map to populate\n * @param inputTx The full transaction containing the spent output. This may\n * be omitted for taproot.\n * @param spentOutput The amount and spending condition of the spent output\n * @param pubkeys The 33 byte ecdsa compressed public keys involved in the input\n * @param pathElems The paths corresponding to the pubkeys, in same order.\n */\n setInput(\n i: number,\n inputTx: Buffer | undefined,\n spentOutput: SpentOutput,\n pubkeys: Buffer[],\n pathElems: number[][]\n ): void;\n\n /**\n * Populates the psbt with account type-specific data for an output. This is typically\n * done for change outputs and other outputs that goes to the same account as\n * being spent from.\n * @param i The index of the output map to populate\n * @param cond The spending condition for this output\n * @param pubkeys The 33 byte ecdsa compressed public keys involved in this output\n * @param paths The paths corresponding to the pubkeys, in same order.\n */\n setOwnOutput(\n i: number,\n cond: SpendingCondition,\n pubkeys: Buffer[],\n paths: number[][]\n ): void;\n\n /**\n * Returns the descriptor template for this account type. Currently only\n * DefaultDescriptorTemplates are allowed, but that might be changed in the\n * future. See class WalletPolicy for more information on descriptor\n * templates.\n */\n getDescriptorTemplate(): DefaultDescriptorTemplate;\n}\n\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\ninterface BaseAccount extends AccountType {}\n\nabstract class BaseAccount implements AccountType {\n constructor(protected psbt: PsbtV2, protected masterFp: Buffer) {}\n}\n\n/**\n * Superclass for single signature accounts. This will make sure that the pubkey\n * arrays and path arrays in the method arguments contains exactly one element\n * and calls an abstract method to do the actual work.\n */\nabstract class SingleKeyAccount extends BaseAccount {\n spendingCondition(pubkeys: Buffer[]): SpendingCondition {\n if (pubkeys.length != 1) {\n throw new Error(\"Expected single key, got \" + pubkeys.length);\n }\n return this.singleKeyCondition(pubkeys[0]);\n }\n protected abstract singleKeyCondition(pubkey: Buffer): SpendingCondition;\n\n setInput(\n i: number,\n inputTx: Buffer | undefined,\n spentOutput: SpentOutput,\n pubkeys: Buffer[],\n pathElems: number[][]\n ) {\n if (pubkeys.length != 1) {\n throw new Error(\"Expected single key, got \" + pubkeys.length);\n }\n if (pathElems.length != 1) {\n throw new Error(\"Expected single path, got \" + pathElems.length);\n }\n this.setSingleKeyInput(i, inputTx, spentOutput, pubkeys[0], pathElems[0]);\n }\n protected abstract setSingleKeyInput(\n i: number,\n inputTx: Buffer | undefined,\n spentOutput: SpentOutput,\n pubkey: Buffer,\n path: number[]\n );\n\n setOwnOutput(\n i: number,\n cond: SpendingCondition,\n pubkeys: Buffer[],\n paths: number[][]\n ) {\n if (pubkeys.length != 1) {\n throw new Error(\"Expected single key, got \" + pubkeys.length);\n }\n if (paths.length != 1) {\n throw new Error(\"Expected single path, got \" + paths.length);\n }\n this.setSingleKeyOutput(i, cond, pubkeys[0], paths[0]);\n }\n protected abstract setSingleKeyOutput(\n i: number,\n cond: SpendingCondition,\n pubkey: Buffer,\n path: number[]\n );\n}\n\nexport class p2pkh extends SingleKeyAccount {\n singleKeyCondition(pubkey: Buffer): SpendingCondition {\n const buf = new BufferWriter();\n const pubkeyHash = hashPublicKey(pubkey);\n buf.writeSlice(Buffer.from([OP_DUP, OP_HASH160, HASH_SIZE]));\n buf.writeSlice(pubkeyHash);\n buf.writeSlice(Buffer.from([OP_EQUALVERIFY, OP_CHECKSIG]));\n return { scriptPubKey: buf.buffer() };\n }\n\n setSingleKeyInput(\n i: number,\n inputTx: Buffer | undefined,\n _spentOutput: SpentOutput,\n pubkey: Buffer,\n path: number[]\n ) {\n if (!inputTx) {\n throw new Error(\"Full input base transaction required\");\n }\n this.psbt.setInputNonWitnessUtxo(i, inputTx);\n this.psbt.setInputBip32Derivation(i, pubkey, this.masterFp, path);\n }\n\n setSingleKeyOutput(\n i: number,\n cond: SpendingCondition,\n pubkey: Buffer,\n path: number[]\n ) {\n this.psbt.setOutputBip32Derivation(i, pubkey, this.masterFp, path);\n }\n\n getDescriptorTemplate(): DefaultDescriptorTemplate {\n return \"pkh(@0)\";\n }\n}\n\nexport class p2tr extends SingleKeyAccount {\n singleKeyCondition(pubkey: Buffer): SpendingCondition {\n const xonlyPubkey = pubkey.slice(1); // x-only pubkey\n const buf = new BufferWriter();\n const outputKey = this.getTaprootOutputKey(xonlyPubkey);\n buf.writeSlice(Buffer.from([0x51, 32])); // push1, pubkeylen\n buf.writeSlice(outputKey);\n return { scriptPubKey: buf.buffer() };\n }\n\n setSingleKeyInput(\n i: number,\n _inputTx: Buffer | undefined,\n spentOutput: SpentOutput,\n pubkey: Buffer,\n path: number[]\n ) {\n const xonly = pubkey.slice(1);\n this.psbt.setInputTapBip32Derivation(i, xonly, [], this.masterFp, path);\n this.psbt.setInputWitnessUtxo(\n i,\n spentOutput.amount,\n spentOutput.cond.scriptPubKey\n );\n }\n\n setSingleKeyOutput(\n i: number,\n cond: SpendingCondition,\n pubkey: Buffer,\n path: number[]\n ) {\n const xonly = pubkey.slice(1);\n this.psbt.setOutputTapBip32Derivation(i, xonly, [], this.masterFp, path);\n }\n\n getDescriptorTemplate(): DefaultDescriptorTemplate {\n return \"tr(@0)\";\n }\n\n /*\n The following two functions are copied from wallet-btc and adapted.\n They should be moved to a library to avoid code reuse.\n */\n private hashTapTweak(x: Buffer): Buffer {\n // hash_tag(x) = SHA256(SHA256(tag) || SHA256(tag) || x), see BIP340\n // See https://github.com/bitcoin/bips/blob/master/bip-0340.mediawiki#specification\n const h = crypto.sha256(Buffer.from(\"TapTweak\", \"utf-8\"));\n return crypto.sha256(Buffer.concat([h, h, x]));\n }\n\n /**\n * Calculates a taproot output key from an internal key. This output key will be\n * used as witness program in a taproot output. The internal key is tweaked\n * according to recommendation in BIP341:\n * https://github.com/bitcoin/bips/blob/master/bip-0341.mediawiki#cite_ref-22-0\n *\n * @param internalPubkey A 32 byte x-only taproot internal key\n * @returns The output key\n */\n getTaprootOutputKey(internalPubkey: Buffer): Buffer {\n if (internalPubkey.length != 32) {\n throw new Error(\"Expected 32 byte pubkey. Got \" + internalPubkey.length);\n }\n // A BIP32 derived key can be converted to a schnorr pubkey by dropping\n // the first byte, which represent the oddness/evenness. In schnorr all\n // pubkeys are even.\n // https://github.com/bitcoin/bips/blob/master/bip-0340.mediawiki#public-key-conversion\n const evenEcdsaPubkey = Buffer.concat([\n Buffer.from([0x02]),\n internalPubkey,\n ]);\n const tweak = this.hashTapTweak(internalPubkey);\n\n // Q = P + int(hash_TapTweak(bytes(P)))G\n const outputEcdsaKey = Buffer.from(pointAddScalar(evenEcdsaPubkey, tweak));\n // Convert to schnorr.\n const outputSchnorrKey = outputEcdsaKey.slice(1);\n // Create address\n return outputSchnorrKey;\n }\n}\n\nexport class p2wpkhWrapped extends SingleKeyAccount {\n singleKeyCondition(pubkey: Buffer): SpendingCondition {\n const buf = new BufferWriter();\n const redeemScript = this.createRedeemScript(pubkey);\n const scriptHash = hashPublicKey(redeemScript);\n buf.writeSlice(Buffer.from([OP_HASH160, HASH_SIZE]));\n buf.writeSlice(scriptHash);\n buf.writeUInt8(OP_EQUAL);\n return { scriptPubKey: buf.buffer(), redeemScript: redeemScript };\n }\n\n setSingleKeyInput(\n i: number,\n inputTx: Buffer | undefined,\n spentOutput: SpentOutput,\n pubkey: Buffer,\n path: number[]\n ) {\n if (!inputTx) {\n throw new Error(\"Full input base transaction required\");\n }\n this.psbt.setInputNonWitnessUtxo(i, inputTx);\n this.psbt.setInputBip32Derivation(i, pubkey, this.masterFp, path);\n\n const userSuppliedRedeemScript = spentOutput.cond.redeemScript;\n const expectedRedeemScript = this.createRedeemScript(pubkey);\n if (\n userSuppliedRedeemScript &&\n !expectedRedeemScript.equals(userSuppliedRedeemScript)\n ) {\n // At what point might a user set the redeemScript on its own?\n throw new Error(`User-supplied redeemScript ${userSuppliedRedeemScript.toString(\n \"hex\"\n )} doesn't\n match expected ${expectedRedeemScript.toString(\"hex\")} for input ${i}`);\n }\n this.psbt.setInputRedeemScript(i, expectedRedeemScript);\n this.psbt.setInputWitnessUtxo(\n i,\n spentOutput.amount,\n spentOutput.cond.scriptPubKey\n );\n }\n\n setSingleKeyOutput(\n i: number,\n cond: SpendingCondition,\n pubkey: Buffer,\n path: number[]\n ) {\n this.psbt.setOutputRedeemScript(i, cond.redeemScript!);\n this.psbt.setOutputBip32Derivation(i, pubkey, this.masterFp, path);\n }\n\n getDescriptorTemplate(): DefaultDescriptorTemplate {\n return \"sh(wpkh(@0))\";\n }\n\n private createRedeemScript(pubkey: Buffer): Buffer {\n const pubkeyHash = hashPublicKey(pubkey);\n return Buffer.concat([Buffer.from(\"0014\", \"hex\"), pubkeyHash]);\n }\n}\n\nexport class p2wpkh extends SingleKeyAccount {\n singleKeyCondition(pubkey: Buffer): SpendingCondition {\n const buf = new BufferWriter();\n const pubkeyHash = hashPublicKey(pubkey);\n buf.writeSlice(Buffer.from([0, HASH_SIZE]));\n buf.writeSlice(pubkeyHash);\n return { scriptPubKey: buf.buffer() };\n }\n\n setSingleKeyInput(\n i: number,\n inputTx: Buffer | undefined,\n spentOutput: SpentOutput,\n pubkey: Buffer,\n path: number[]\n ) {\n if (!inputTx) {\n throw new Error(\"Full input base transaction required\");\n }\n this.psbt.setInputNonWitnessUtxo(i, inputTx);\n this.psbt.setInputBip32Derivation(i, pubkey, this.masterFp, path);\n this.psbt.setInputWitnessUtxo(\n i,\n spentOutput.amount,\n spentOutput.cond.scriptPubKey\n );\n }\n\n setSingleKeyOutput(\n i: number,\n cond: SpendingCondition,\n pubkey: Buffer,\n path: number[]\n ) {\n this.psbt.setOutputBip32Derivation(i, pubkey, this.masterFp, path);\n }\n\n getDescriptorTemplate(): DefaultDescriptorTemplate {\n return \"wpkh(@0)\";\n }\n}\n", "// flow\nexport const MAX_SCRIPT_BLOCK = 50;\nexport const DEFAULT_VERSION = 1;\nexport const DEFAULT_LOCKTIME = 0;\nexport const DEFAULT_SEQUENCE = 0xffffffff;\nexport const SIGHASH_ALL = 1;\nexport const OP_DUP = 0x76;\nexport const OP_HASH160 = 0xa9;\nexport const HASH_SIZE = 0x14;\nexport const OP_EQUAL = 0x87;\nexport const OP_EQUALVERIFY = 0x88;\nexport const OP_CHECKSIG = 0xac;\nexport const OP_RETURN = 0x6a;\n", "import RIPEMD160 from \"ripemd160\";\nimport sha from \"sha.js\";\nexport function hashPublicKey(buffer: Buffer): Buffer {\n return new RIPEMD160().update(sha(\"sha256\").update(buffer).digest()).digest();\n}\n", "import { crypto } from \"bitcoinjs-lib\";\nimport { pathArrayToString } from \"../bip32\";\nimport { BufferWriter } from \"../buffertools\";\nimport { hashLeaf, Merkle } from \"./merkle\";\n\nexport type DefaultDescriptorTemplate =\n | \"pkh(@0)\"\n | \"sh(wpkh(@0))\"\n | \"wpkh(@0)\"\n | \"tr(@0)\";\n\n/**\n * The Bitcon hardware app uses a descriptors-like thing to describe\n * how to construct output scripts from keys. A \"Wallet Policy\" consists\n * of a \"Descriptor Template\" and a list of \"keys\". A key is basically\n * a serialized BIP32 extended public key with some added derivation path\n * information. This is documented at\n * https://github.com/LedgerHQ/app-bitcoin-new/blob/master/doc/wallet.md\n */\nexport class WalletPolicy {\n descriptorTemplate: string;\n keys: string[];\n /**\n * For now, we only support default descriptor templates.\n */\n constructor(descriptorTemplate: DefaultDescriptorTemplate, key: string) {\n this.descriptorTemplate = descriptorTemplate;\n this.keys = [key];\n }\n\n getWalletId(): Buffer {\n // wallet_id (sha256 of the wallet serialization),\n return crypto.sha256(this.serialize());\n }\n\n serialize(): Buffer {\n const keyBuffers = this.keys.map((k) => {\n return Buffer.from(k, \"ascii\");\n });\n const m = new Merkle(keyBuffers.map((k) => hashLeaf(k)));\n\n const buf = new BufferWriter();\n buf.writeUInt8(0x01); // wallet type (policy map)\n buf.writeUInt8(0); // length of wallet name (empty string for default wallets)\n buf.writeVarSlice(Buffer.from(this.descriptorTemplate, \"ascii\"));\n buf.writeVarInt(this.keys.length), buf.writeSlice(m.getRoot());\n return buf.buffer();\n }\n}\n\nexport function createKey(\n masterFingerprint: Buffer,\n path: number[],\n xpub: string\n): string {\n const accountPath = pathArrayToString(path);\n return `[${masterFingerprint.toString(\"hex\")}${accountPath.substring(\n 1\n )}]${xpub}/**`;\n}\n", "import { crypto } from \"bitcoinjs-lib\";\n\n/**\n * This class implements the merkle tree used by Ledger Bitcoin app v2+,\n * which is documented at\n * https://github.com/LedgerHQ/app-bitcoin-new/blob/master/doc/merkle.md\n */\nexport class Merkle {\n private leaves: Buffer[];\n private rootNode: Node;\n private leafNodes: Node[];\n private h: (buf: Buffer) => Buffer;\n constructor(\n leaves: Buffer[],\n hasher: (buf: Buffer) => Buffer = crypto.sha256\n ) {\n this.leaves = leaves;\n this.h = hasher;\n const nodes = this.calculateRoot(leaves);\n this.rootNode = nodes.root;\n this.leafNodes = nodes.leaves;\n }\n getRoot(): Buffer {\n return this.rootNode.hash;\n }\n size(): number {\n return this.leaves.length;\n }\n getLeaves(): Buffer[] {\n return this.leaves;\n }\n getLeafHash(index: number): Buffer {\n return this.leafNodes[index].hash;\n }\n getProof(index: number): Buffer[] {\n if (index >= this.leaves.length) throw Error(\"Index out of bounds\");\n return proveNode(this.leafNodes[index]);\n }\n\n calculateRoot(leaves: Buffer[]): { root: Node; leaves: Node[] } {\n const n = leaves.length;\n if (n == 0) {\n return {\n root: new Node(undefined, undefined, Buffer.alloc(32, 0)),\n leaves: [],\n };\n }\n if (n == 1) {\n const newNode = new Node(undefined, undefined, leaves[0]);\n return { root: newNode, leaves: [newNode] };\n }\n const leftCount = highestPowerOf2LessThan(n);\n const leftBranch = this.calculateRoot(leaves.slice(0, leftCount));\n const rightBranch = this.calculateRoot(leaves.slice(leftCount));\n const leftChild = leftBranch.root;\n const rightChild = rightBranch.root;\n const hash = this.hashNode(leftChild.hash, rightChild.hash);\n const node = new Node(leftChild, rightChild, hash);\n leftChild.parent = node;\n rightChild.parent = node;\n return { root: node, leaves: leftBranch.leaves.concat(rightBranch.leaves) };\n }\n\n hashNode(left: Buffer, right: Buffer): Buffer {\n return this.h(Buffer.concat([Buffer.from([1]), left, right]));\n }\n}\n\nexport function hashLeaf(\n buf: Buffer,\n hashFunction: (buf: Buffer) => Buffer = crypto.sha256\n): Buffer {\n return hashConcat(Buffer.from([0]), buf, hashFunction);\n}\n\nfunction hashConcat(\n bufA: Buffer,\n bufB: Buffer,\n hashFunction: (buf: Buffer) => Buffer\n): Buffer {\n return hashFunction(Buffer.concat([bufA, bufB]));\n}\n\nclass Node {\n leftChild?: Node;\n rightChild?: Node;\n parent?: Node;\n hash: Buffer;\n constructor(left: Node | undefined, right: Node | undefined, hash: Buffer) {\n this.leftChild = left;\n this.rightChild = right;\n this.hash = hash;\n }\n isLeaf(): boolean {\n return this.leftChild == undefined;\n }\n}\n\nfunction proveNode(node: Node): Buffer[] {\n if (!node.parent) {\n return [];\n }\n if (node.parent.leftChild == node) {\n if (!node.parent.rightChild) {\n throw new Error(\"Expected right child to exist\");\n }\n return [node.parent.rightChild.hash, ...proveNode(node.parent)];\n } else {\n if (!node.parent.leftChild) {\n throw new Error(\"Expected left child to exist\");\n }\n return [node.parent.leftChild.hash, ...proveNode(node.parent)];\n }\n}\n\nfunction highestPowerOf2LessThan(n: number) {\n if (n < 2) {\n throw Error(\"Expected n >= 2\");\n }\n if (isPowerOf2(n)) {\n return n / 2;\n }\n return 1 << Math.floor(Math.log2(n));\n}\n\nfunction isPowerOf2(n: number): boolean {\n return (n & (n - 1)) == 0;\n}\n", "import { BufferWriter } from \"../buffertools\";\nimport { PsbtV2 } from \"./psbtv2\";\n\n/**\n * This implements the \"Transaction Extractor\" role of BIP370 (PSBTv2\n * https://github.com/bitcoin/bips/blob/master/bip-0370.mediawiki#transaction-extractor). However\n * the role is partially documented in BIP174 (PSBTv0\n * https://github.com/bitcoin/bips/blob/master/bip-0174.mediawiki#transaction-extractor).\n */\nexport function extract(psbt: PsbtV2): Buffer {\n const tx = new BufferWriter();\n tx.writeUInt32(psbt.getGlobalTxVersion());\n\n const isSegwit = !!psbt.getInputWitnessUtxo(0);\n if (isSegwit) {\n tx.writeSlice(Buffer.from([0, 1]));\n }\n const inputCount = psbt.getGlobalInputCount();\n tx.writeVarInt(inputCount);\n const witnessWriter = new BufferWriter();\n for (let i = 0; i < inputCount; i++) {\n tx.writeSlice(psbt.getInputPreviousTxid(i));\n tx.writeUInt32(psbt.getInputOutputIndex(i));\n tx.writeVarSlice(psbt.getInputFinalScriptsig(i) ?? Buffer.from([]));\n tx.writeUInt32(psbt.getInputSequence(i));\n if (isSegwit) {\n witnessWriter.writeSlice(psbt.getInputFinalScriptwitness(i));\n }\n }\n const outputCount = psbt.getGlobalOutputCount();\n tx.writeVarInt(outputCount);\n for (let i = 0; i < outputCount; i++) {\n tx.writeUInt64(psbt.getOutputAmount(i));\n tx.writeVarSlice(psbt.getOutputScript(i));\n }\n tx.writeSlice(witnessWriter.buffer());\n tx.writeUInt32(psbt.getGlobalFallbackLocktime() ?? 0);\n return tx.buffer();\n}\n", "/* eslint-disable @typescript-eslint/no-non-null-assertion */\n/* eslint-disable @typescript-eslint/explicit-module-boundary-types */\nimport {\n BufferReader,\n BufferWriter,\n unsafeFrom64bitLE,\n unsafeTo64bitLE,\n} from \"../buffertools\";\n\nexport enum psbtGlobal {\n TX_VERSION = 0x02,\n FALLBACK_LOCKTIME = 0x03,\n INPUT_COUNT = 0x04,\n OUTPUT_COUNT = 0x05,\n TX_MODIFIABLE = 0x06,\n VERSION = 0xfb,\n}\nexport enum psbtIn {\n NON_WITNESS_UTXO = 0x00,\n WITNESS_UTXO = 0x01,\n PARTIAL_SIG = 0x02,\n SIGHASH_TYPE = 0x03,\n REDEEM_SCRIPT = 0x04,\n BIP32_DERIVATION = 0x06,\n FINAL_SCRIPTSIG = 0x07,\n FINAL_SCRIPTWITNESS = 0x08,\n PREVIOUS_TXID = 0x0e,\n OUTPUT_INDEX = 0x0f,\n SEQUENCE = 0x10,\n TAP_KEY_SIG = 0x13,\n TAP_BIP32_DERIVATION = 0x16,\n}\nexport enum psbtOut {\n REDEEM_SCRIPT = 0x00,\n BIP_32_DERIVATION = 0x02,\n AMOUNT = 0x03,\n SCRIPT = 0x04,\n TAP_BIP32_DERIVATION = 0x07,\n}\n\nconst PSBT_MAGIC_BYTES = Buffer.from([0x70, 0x73, 0x62, 0x74, 0xff]);\n\nexport class NoSuchEntry extends Error {}\n\n/**\n * Implements Partially Signed Bitcoin Transaction version 2, BIP370, as\n * documented at https://github.com/bitcoin/bips/blob/master/bip-0370.mediawiki\n * and https://github.com/bitcoin/bips/blob/master/bip-0174.mediawiki\n *\n * A psbt is a data structure that can carry all relevant information about a\n * transaction through all stages of the signing process. From constructing an\n * unsigned transaction to extracting the final serialized transaction ready for\n * broadcast.\n *\n * This implementation is limited to what's needed in ledgerjs to carry out its\n * duties, which means that support for features like multisig or taproot script\n * path spending are not implemented. Specifically, it supports p2pkh,\n * p2wpkhWrappedInP2sh, p2wpkh and p2tr key path spending.\n *\n * This class is made purposefully dumb, so it's easy to add support for\n * complemantary fields as needed in the future.\n */\nexport class PsbtV2 {\n protected globalMap: Map = new Map();\n protected inputMaps: Map[] = [];\n protected outputMaps: Map[] = [];\n\n setGlobalTxVersion(version: number) {\n this.setGlobal(psbtGlobal.TX_VERSION, uint32LE(version));\n }\n getGlobalTxVersion(): number {\n return this.getGlobal(psbtGlobal.TX_VERSION).readUInt32LE(0);\n }\n setGlobalFallbackLocktime(locktime: number) {\n this.setGlobal(psbtGlobal.FALLBACK_LOCKTIME, uint32LE(locktime));\n }\n getGlobalFallbackLocktime(): number | undefined {\n return this.getGlobalOptional(psbtGlobal.FALLBACK_LOCKTIME)?.readUInt32LE(\n 0\n );\n }\n setGlobalInputCount(inputCount: number) {\n this.setGlobal(psbtGlobal.INPUT_COUNT, varint(inputCount));\n }\n getGlobalInputCount(): number {\n return fromVarint(this.getGlobal(psbtGlobal.INPUT_COUNT));\n }\n setGlobalOutputCount(outputCount: number) {\n this.setGlobal(psbtGlobal.OUTPUT_COUNT, varint(outputCount));\n }\n getGlobalOutputCount(): number {\n return fromVarint(this.getGlobal(psbtGlobal.OUTPUT_COUNT));\n }\n setGlobalTxModifiable(byte: Buffer) {\n this.setGlobal(psbtGlobal.TX_MODIFIABLE, byte);\n }\n getGlobalTxModifiable(): Buffer | undefined {\n return this.getGlobalOptional(psbtGlobal.TX_MODIFIABLE);\n }\n setGlobalPsbtVersion(psbtVersion: number) {\n this.setGlobal(psbtGlobal.VERSION, uint32LE(psbtVersion));\n }\n getGlobalPsbtVersion(): number {\n return this.getGlobal(psbtGlobal.VERSION).readUInt32LE(0);\n }\n\n setInputNonWitnessUtxo(inputIndex: number, transaction: Buffer) {\n this.setInput(inputIndex, psbtIn.NON_WITNESS_UTXO, b(), transaction);\n }\n getInputNonWitnessUtxo(inputIndex: number): Buffer | undefined {\n return this.getInputOptional(inputIndex, psbtIn.NON_WITNESS_UTXO, b());\n }\n setInputWitnessUtxo(\n inputIndex: number,\n amount: Buffer,\n scriptPubKey: Buffer\n ) {\n const buf = new BufferWriter();\n buf.writeSlice(amount);\n buf.writeVarSlice(scriptPubKey);\n this.setInput(inputIndex, psbtIn.WITNESS_UTXO, b(), buf.buffer());\n }\n getInputWitnessUtxo(\n inputIndex: number\n ): { amount: Buffer; scriptPubKey: Buffer } | undefined {\n const utxo = this.getInputOptional(inputIndex, psbtIn.WITNESS_UTXO, b());\n if (!utxo) return undefined;\n const buf = new BufferReader(utxo);\n return { amount: buf.readSlice(8), scriptPubKey: buf.readVarSlice() };\n }\n setInputPartialSig(inputIndex: number, pubkey: Buffer, signature: Buffer) {\n this.setInput(inputIndex, psbtIn.PARTIAL_SIG, pubkey, signature);\n }\n getInputPartialSig(inputIndex: number, pubkey: Buffer): Buffer | undefined {\n return this.getInputOptional(inputIndex, psbtIn.PARTIAL_SIG, pubkey);\n }\n setInputSighashType(inputIndex: number, sigHashtype: number) {\n this.setInput(inputIndex, psbtIn.SIGHASH_TYPE, b(), uint32LE(sigHashtype));\n }\n getInputSighashType(inputIndex: number): number | undefined {\n const result = this.getInputOptional(inputIndex, psbtIn.SIGHASH_TYPE, b());\n if (!result) return undefined;\n return result.readUInt32LE(0);\n }\n setInputRedeemScript(inputIndex: number, redeemScript: Buffer) {\n this.setInput(inputIndex, psbtIn.REDEEM_SCRIPT, b(), redeemScript);\n }\n getInputRedeemScript(inputIndex: number): Buffer | undefined {\n return this.getInputOptional(inputIndex, psbtIn.REDEEM_SCRIPT, b());\n }\n setInputBip32Derivation(\n inputIndex: number,\n pubkey: Buffer,\n masterFingerprint: Buffer,\n path: number[]\n ) {\n if (pubkey.length != 33)\n throw new Error(\"Invalid pubkey length: \" + pubkey.length);\n this.setInput(\n inputIndex,\n psbtIn.BIP32_DERIVATION,\n pubkey,\n this.encodeBip32Derivation(masterFingerprint, path)\n );\n }\n getInputBip32Derivation(\n inputIndex: number,\n pubkey: Buffer\n ): { masterFingerprint: Buffer; path: number[] } | undefined {\n const buf = this.getInputOptional(\n inputIndex,\n psbtIn.BIP32_DERIVATION,\n pubkey\n );\n if (!buf) return undefined;\n return this.decodeBip32Derivation(buf);\n }\n setInputFinalScriptsig(inputIndex: number, scriptSig: Buffer) {\n this.setInput(inputIndex, psbtIn.FINAL_SCRIPTSIG, b(), scriptSig);\n }\n getInputFinalScriptsig(inputIndex: number): Buffer | undefined {\n return this.getInputOptional(inputIndex, psbtIn.FINAL_SCRIPTSIG, b());\n }\n setInputFinalScriptwitness(inputIndex: number, scriptWitness: Buffer) {\n this.setInput(inputIndex, psbtIn.FINAL_SCRIPTWITNESS, b(), scriptWitness);\n }\n getInputFinalScriptwitness(inputIndex: number): Buffer {\n return this.getInput(inputIndex, psbtIn.FINAL_SCRIPTWITNESS, b());\n }\n setInputPreviousTxId(inputIndex: number, txid: Buffer) {\n this.setInput(inputIndex, psbtIn.PREVIOUS_TXID, b(), txid);\n }\n getInputPreviousTxid(inputIndex: number): Buffer {\n return this.getInput(inputIndex, psbtIn.PREVIOUS_TXID, b());\n }\n setInputOutputIndex(inputIndex: number, outputIndex: number) {\n this.setInput(inputIndex, psbtIn.OUTPUT_INDEX, b(), uint32LE(outputIndex));\n }\n getInputOutputIndex(inputIndex: number): number {\n return this.getInput(inputIndex, psbtIn.OUTPUT_INDEX, b()).readUInt32LE(0);\n }\n setInputSequence(inputIndex: number, sequence: number) {\n this.setInput(inputIndex, psbtIn.SEQUENCE, b(), uint32LE(sequence));\n }\n getInputSequence(inputIndex: number): number {\n return (\n this.getInputOptional(inputIndex, psbtIn.SEQUENCE, b())?.readUInt32LE(\n 0\n ) ?? 0xffffffff\n );\n }\n setInputTapKeySig(inputIndex: number, sig: Buffer) {\n this.setInput(inputIndex, psbtIn.TAP_KEY_SIG, b(), sig);\n }\n getInputTapKeySig(inputIndex: number): Buffer | undefined {\n return this.getInputOptional(inputIndex, psbtIn.TAP_KEY_SIG, b());\n }\n setInputTapBip32Derivation(\n inputIndex: number,\n pubkey: Buffer,\n hashes: Buffer[],\n masterFingerprint: Buffer,\n path: number[]\n ) {\n if (pubkey.length != 32)\n throw new Error(\"Invalid pubkey length: \" + pubkey.length);\n const buf = this.encodeTapBip32Derivation(hashes, masterFingerprint, path);\n this.setInput(inputIndex, psbtIn.TAP_BIP32_DERIVATION, pubkey, buf);\n }\n getInputTapBip32Derivation(\n inputIndex: number,\n pubkey: Buffer\n ): { hashes: Buffer[]; masterFingerprint: Buffer; path: number[] } {\n const buf = this.getInput(inputIndex, psbtIn.TAP_BIP32_DERIVATION, pubkey);\n return this.decodeTapBip32Derivation(buf);\n }\n getInputKeyDatas(inputIndex: number, keyType: KeyType): Buffer[] {\n return this.getKeyDatas(this.inputMaps[inputIndex], keyType);\n }\n\n setOutputRedeemScript(outputIndex: number, redeemScript: Buffer) {\n this.setOutput(outputIndex, psbtOut.REDEEM_SCRIPT, b(), redeemScript);\n }\n getOutputRedeemScript(outputIndex: number): Buffer {\n return this.getOutput(outputIndex, psbtOut.REDEEM_SCRIPT, b());\n }\n setOutputBip32Derivation(\n outputIndex: number,\n pubkey: Buffer,\n masterFingerprint: Buffer,\n path: number[]\n ) {\n this.setOutput(\n outputIndex,\n psbtOut.BIP_32_DERIVATION,\n pubkey,\n this.encodeBip32Derivation(masterFingerprint, path)\n );\n }\n getOutputBip32Derivation(\n outputIndex: number,\n pubkey: Buffer\n ): { masterFingerprint: Buffer; path: number[] } {\n const buf = this.getOutput(outputIndex, psbtOut.BIP_32_DERIVATION, pubkey);\n return this.decodeBip32Derivation(buf);\n }\n setOutputAmount(outputIndex: number, amount: number) {\n this.setOutput(outputIndex, psbtOut.AMOUNT, b(), uint64LE(amount));\n }\n getOutputAmount(outputIndex: number): number {\n const buf = this.getOutput(outputIndex, psbtOut.AMOUNT, b());\n return unsafeFrom64bitLE(buf);\n }\n setOutputScript(outputIndex: number, scriptPubKey: Buffer) {\n this.setOutput(outputIndex, psbtOut.SCRIPT, b(), scriptPubKey);\n }\n getOutputScript(outputIndex: number): Buffer {\n return this.getOutput(outputIndex, psbtOut.SCRIPT, b());\n }\n setOutputTapBip32Derivation(\n outputIndex: number,\n pubkey: Buffer,\n hashes: Buffer[],\n fingerprint: Buffer,\n path: number[]\n ) {\n const buf = this.encodeTapBip32Derivation(hashes, fingerprint, path);\n this.setOutput(outputIndex, psbtOut.TAP_BIP32_DERIVATION, pubkey, buf);\n }\n getOutputTapBip32Derivation(\n outputIndex: number,\n pubkey: Buffer\n ): { hashes: Buffer[]; masterFingerprint: Buffer; path: number[] } {\n const buf = this.getOutput(\n outputIndex,\n psbtOut.TAP_BIP32_DERIVATION,\n pubkey\n );\n return this.decodeTapBip32Derivation(buf);\n }\n\n deleteInputEntries(inputIndex: number, keyTypes: psbtIn[]) {\n const map = this.inputMaps[inputIndex];\n map.forEach((_v, k, m) => {\n if (this.isKeyType(k, keyTypes)) {\n m.delete(k);\n }\n });\n }\n\n copy(to: PsbtV2) {\n this.copyMap(this.globalMap, to.globalMap);\n this.copyMaps(this.inputMaps, to.inputMaps);\n this.copyMaps(this.outputMaps, to.outputMaps);\n }\n copyMaps(from: Map[], to: Map[]) {\n from.forEach((m, index) => {\n const to_index = new Map();\n this.copyMap(m, to_index);\n to[index] = to_index;\n });\n }\n copyMap(from: Map, to: Map) {\n from.forEach((v, k) => to.set(k, Buffer.from(v)));\n }\n serialize(): Buffer {\n const buf = new BufferWriter();\n buf.writeSlice(Buffer.from([0x70, 0x73, 0x62, 0x74, 0xff]));\n serializeMap(buf, this.globalMap);\n this.inputMaps.forEach((map) => {\n serializeMap(buf, map);\n });\n this.outputMaps.forEach((map) => {\n serializeMap(buf, map);\n });\n return buf.buffer();\n }\n deserialize(psbt: Buffer) {\n const buf = new BufferReader(psbt);\n if (!buf.readSlice(5).equals(PSBT_MAGIC_BYTES)) {\n throw new Error(\"Invalid magic bytes\");\n }\n while (this.readKeyPair(this.globalMap, buf));\n for (let i = 0; i < this.getGlobalInputCount(); i++) {\n this.inputMaps[i] = new Map();\n while (this.readKeyPair(this.inputMaps[i], buf));\n }\n for (let i = 0; i < this.getGlobalOutputCount(); i++) {\n this.outputMaps[i] = new Map();\n while (this.readKeyPair(this.outputMaps[i], buf));\n }\n }\n private readKeyPair(map: Map, buf: BufferReader): boolean {\n const keyLen = buf.readVarInt();\n if (keyLen == 0) {\n return false;\n }\n const keyType = buf.readUInt8();\n const keyData = buf.readSlice(keyLen - 1);\n const value = buf.readVarSlice();\n set(map, keyType, keyData, value);\n return true;\n }\n private getKeyDatas(map: Map, keyType: KeyType): Buffer[] {\n const result: Buffer[] = [];\n map.forEach((_v, k) => {\n if (this.isKeyType(k, [keyType])) {\n result.push(Buffer.from(k.substring(2), \"hex\"));\n }\n });\n return result;\n }\n private isKeyType(hexKey: string, keyTypes: KeyType[]): boolean {\n const keyType = Buffer.from(hexKey.substring(0, 2), \"hex\").readUInt8(0);\n return keyTypes.some((k) => k == keyType);\n }\n private setGlobal(keyType: KeyType, value: Buffer) {\n const key = new Key(keyType, Buffer.from([]));\n this.globalMap.set(key.toString(), value);\n }\n private getGlobal(keyType: KeyType): Buffer {\n return get(this.globalMap, keyType, b(), false)!;\n }\n private getGlobalOptional(keyType: KeyType): Buffer | undefined {\n return get(this.globalMap, keyType, b(), true);\n }\n private setInput(\n index: number,\n keyType: KeyType,\n keyData: Buffer,\n value: Buffer\n ) {\n set(this.getMap(index, this.inputMaps), keyType, keyData, value);\n }\n private getInput(index: number, keyType: KeyType, keyData: Buffer): Buffer {\n return get(this.inputMaps[index], keyType, keyData, false)!;\n }\n private getInputOptional(\n index: number,\n keyType: KeyType,\n keyData: Buffer\n ): Buffer | undefined {\n return get(this.inputMaps[index], keyType, keyData, true);\n }\n private setOutput(\n index: number,\n keyType: KeyType,\n keyData: Buffer,\n value: Buffer\n ) {\n set(this.getMap(index, this.outputMaps), keyType, keyData, value);\n }\n private getOutput(index: number, keyType: KeyType, keyData: Buffer): Buffer {\n return get(this.outputMaps[index], keyType, keyData, false)!;\n }\n private getMap(\n index: number,\n maps: Map[]\n ): Map {\n if (maps[index]) {\n return maps[index];\n }\n return (maps[index] = new Map());\n }\n private encodeBip32Derivation(masterFingerprint: Buffer, path: number[]) {\n const buf = new BufferWriter();\n this.writeBip32Derivation(buf, masterFingerprint, path);\n return buf.buffer();\n }\n private decodeBip32Derivation(buffer: Buffer): {\n masterFingerprint: Buffer;\n path: number[];\n } {\n const buf = new BufferReader(buffer);\n return this.readBip32Derivation(buf);\n }\n private writeBip32Derivation(\n buf: BufferWriter,\n masterFingerprint: Buffer,\n path: number[]\n ) {\n buf.writeSlice(masterFingerprint);\n path.forEach((element) => {\n buf.writeUInt32(element);\n });\n }\n private readBip32Derivation(buf: BufferReader): {\n masterFingerprint: Buffer;\n path: number[];\n } {\n const masterFingerprint = buf.readSlice(4);\n const path: number[] = [];\n while (buf.offset < buf.buffer.length) {\n path.push(buf.readUInt32());\n }\n return { masterFingerprint, path };\n }\n private encodeTapBip32Derivation(\n hashes: Buffer[],\n masterFingerprint: Buffer,\n path: number[]\n ): Buffer {\n const buf = new BufferWriter();\n buf.writeVarInt(hashes.length);\n hashes.forEach((h) => {\n buf.writeSlice(h);\n });\n this.writeBip32Derivation(buf, masterFingerprint, path);\n return buf.buffer();\n }\n private decodeTapBip32Derivation(buffer: Buffer): {\n hashes: Buffer[];\n masterFingerprint: Buffer;\n path: number[];\n } {\n const buf = new BufferReader(buffer);\n const hashCount = buf.readVarInt();\n const hashes: Buffer[] = [];\n for (let i = 0; i < hashCount; i++) {\n hashes.push(buf.readSlice(32));\n }\n const deriv = this.readBip32Derivation(buf);\n return { hashes, ...deriv };\n }\n}\nfunction get(\n map: Map,\n keyType: KeyType,\n keyData: Buffer,\n acceptUndefined: boolean\n): Buffer | undefined {\n if (!map) throw Error(\"No such map\");\n const key = new Key(keyType, keyData);\n const value = map.get(key.toString());\n if (!value) {\n if (acceptUndefined) {\n return undefined;\n }\n throw new NoSuchEntry(key.toString());\n }\n // Make sure to return a copy, to protect the underlying data.\n return Buffer.from(value);\n}\ntype KeyType = number;\n\nclass Key {\n keyType: KeyType;\n keyData: Buffer;\n constructor(keyType: KeyType, keyData: Buffer) {\n this.keyType = keyType;\n this.keyData = keyData;\n }\n toString(): string {\n const buf = new BufferWriter();\n this.toBuffer(buf);\n return buf.buffer().toString(\"hex\");\n }\n serialize(buf: BufferWriter) {\n buf.writeVarInt(1 + this.keyData.length);\n this.toBuffer(buf);\n }\n private toBuffer(buf: BufferWriter) {\n buf.writeUInt8(this.keyType);\n buf.writeSlice(this.keyData);\n }\n}\nclass KeyPair {\n key: Key;\n value: Buffer;\n constructor(key: Key, value: Buffer) {\n this.key = key;\n this.value = value;\n }\n serialize(buf: BufferWriter) {\n this.key.serialize(buf);\n buf.writeVarSlice(this.value);\n }\n}\nfunction createKey(buf: Buffer): Key {\n return new Key(buf.readUInt8(0), buf.slice(1));\n}\nfunction serializeMap(buf: BufferWriter, map: Map) {\n for (const k in map.keys) {\n const value = map.get(k)!;\n const keyPair = new KeyPair(createKey(Buffer.from(k, \"hex\")), value);\n keyPair.serialize(buf);\n }\n buf.writeUInt8(0);\n}\n\nfunction b(): Buffer {\n return Buffer.from([]);\n}\nfunction set(\n map: Map,\n keyType: KeyType,\n keyData: Buffer,\n value: Buffer\n) {\n const key = new Key(keyType, keyData);\n map.set(key.toString(), value);\n}\nfunction uint32LE(n: number): Buffer {\n const b = Buffer.alloc(4);\n b.writeUInt32LE(n, 0);\n return b;\n}\nfunction uint64LE(n: number): Buffer {\n return unsafeTo64bitLE(n);\n}\nfunction varint(n: number): Buffer {\n const b = new BufferWriter();\n b.writeVarInt(n);\n return b.buffer();\n}\nfunction fromVarint(buf: Buffer): number {\n return new BufferReader(buf).readVarInt();\n}\n", "import { BufferWriter } from \"../buffertools\";\nimport { psbtIn, PsbtV2 } from \"./psbtv2\";\n\n/**\n * This roughly implements the \"input finalizer\" role of BIP370 (PSBTv2\n * https://github.com/bitcoin/bips/blob/master/bip-0370.mediawiki). However\n * the role is documented in BIP174 (PSBTv0\n * https://github.com/bitcoin/bips/blob/master/bip-0174.mediawiki).\n *\n * Verify that all inputs have a signature, and set inputFinalScriptwitness\n * and/or inputFinalScriptSig depending on the type of the spent outputs. Clean\n * fields that aren't useful anymore, partial signatures, redeem script and\n * derivation paths.\n *\n * @param psbt The psbt with all signatures added as partial sigs, either\n * through PSBT_IN_PARTIAL_SIG or PSBT_IN_TAP_KEY_SIG\n */\nexport function finalize(psbt: PsbtV2): void {\n // First check that each input has a signature\n const inputCount = psbt.getGlobalInputCount();\n for (let i = 0; i < inputCount; i++) {\n const legacyPubkeys = psbt.getInputKeyDatas(i, psbtIn.PARTIAL_SIG);\n const taprootSig = psbt.getInputTapKeySig(i);\n if (legacyPubkeys.length == 0 && !taprootSig) {\n throw Error(`No signature for input ${i} present`);\n }\n if (legacyPubkeys.length > 0) {\n if (legacyPubkeys.length > 1) {\n throw Error(\n `Expected exactly one signature, got ${legacyPubkeys.length}`\n );\n }\n if (taprootSig) {\n throw Error(\"Both taproot and non-taproot signatures present.\");\n }\n\n const isSegwitV0 = !!psbt.getInputWitnessUtxo(i);\n const redeemScript = psbt.getInputRedeemScript(i);\n const isWrappedSegwit = !!redeemScript;\n const signature = psbt.getInputPartialSig(i, legacyPubkeys[0]);\n if (!signature)\n throw new Error(\"Expected partial signature for input \" + i);\n if (isSegwitV0) {\n const witnessBuf = new BufferWriter();\n witnessBuf.writeVarInt(2);\n witnessBuf.writeVarInt(signature.length);\n witnessBuf.writeSlice(signature);\n witnessBuf.writeVarInt(legacyPubkeys[0].length);\n witnessBuf.writeSlice(legacyPubkeys[0]);\n psbt.setInputFinalScriptwitness(i, witnessBuf.buffer());\n if (isWrappedSegwit) {\n if (!redeemScript || redeemScript.length == 0) {\n throw new Error(\n \"Expected non-empty redeemscript. Can't finalize intput \" + i\n );\n }\n const scriptSigBuf = new BufferWriter();\n // Push redeemScript length\n scriptSigBuf.writeUInt8(redeemScript.length);\n scriptSigBuf.writeSlice(redeemScript);\n psbt.setInputFinalScriptsig(i, scriptSigBuf.buffer());\n }\n } else {\n // Legacy input\n const scriptSig = new BufferWriter();\n writePush(scriptSig, signature);\n writePush(scriptSig, legacyPubkeys[0]);\n psbt.setInputFinalScriptsig(i, scriptSig.buffer());\n }\n } else {\n // Taproot input\n const signature = psbt.getInputTapKeySig(i);\n if (!signature) {\n throw Error(\"No taproot signature found\");\n }\n if (signature.length != 64 && signature.length != 65) {\n throw Error(\"Unexpected length of schnorr signature.\");\n }\n const witnessBuf = new BufferWriter();\n witnessBuf.writeVarInt(1);\n witnessBuf.writeVarSlice(signature);\n psbt.setInputFinalScriptwitness(i, witnessBuf.buffer());\n }\n clearFinalizedInput(psbt, i);\n }\n}\n\n/**\n * Deletes fields that are no longer neccesary from the psbt.\n *\n * Note, the spec doesn't say anything about removing ouput fields\n * like PSBT_OUT_BIP32_DERIVATION_PATH and others, so we keep them\n * without actually knowing why. I think we should remove them too.\n */\nfunction clearFinalizedInput(psbt: PsbtV2, inputIndex: number) {\n const keyTypes = [\n psbtIn.BIP32_DERIVATION,\n psbtIn.PARTIAL_SIG,\n psbtIn.TAP_BIP32_DERIVATION,\n psbtIn.TAP_KEY_SIG,\n ];\n const witnessUtxoAvailable = !!psbt.getInputWitnessUtxo(inputIndex);\n const nonWitnessUtxoAvailable = !!psbt.getInputNonWitnessUtxo(inputIndex);\n if (witnessUtxoAvailable && nonWitnessUtxoAvailable) {\n // Remove NON_WITNESS_UTXO for segwit v0 as it's only needed while signing.\n // Segwit v1 doesn't have NON_WITNESS_UTXO set.\n // See https://github.com/bitcoin/bips/blob/master/bip-0174.mediawiki#cite_note-7\n keyTypes.push(psbtIn.NON_WITNESS_UTXO);\n }\n psbt.deleteInputEntries(inputIndex, keyTypes);\n}\n\n/**\n * Writes a script push operation to buf, which looks different\n * depending on the size of the data. See\n * https://en.bitcoin.it/wiki/Script#Constants\n *\n * @param buf the BufferWriter to write to\n * @param data the Buffer to be pushed.\n */\nfunction writePush(buf: BufferWriter, data: Buffer) {\n if (data.length <= 75) {\n buf.writeUInt8(data.length);\n } else if (data.length <= 256) {\n buf.writeUInt8(76);\n buf.writeUInt8(data.length);\n } else if (data.length <= 256 * 256) {\n buf.writeUInt8(77);\n const b = Buffer.alloc(2);\n b.writeUInt16LE(data.length, 0);\n buf.writeSlice(b);\n }\n buf.writeSlice(data);\n}\n", "export function getVarint(data: Buffer, offset: number): [number, number] {\n if (data[offset] < 0xfd) {\n return [data[offset], 1];\n }\n\n if (data[offset] === 0xfd) {\n return [(data[offset + 2] << 8) + data[offset + 1], 3];\n }\n\n if (data[offset] === 0xfe) {\n return [\n (data[offset + 4] << 24) +\n (data[offset + 3] << 16) +\n (data[offset + 2] << 8) +\n data[offset + 1],\n 5,\n ];\n }\n\n throw new Error(\"getVarint called with unexpected parameters\");\n}\nexport function createVarint(value: number): Buffer {\n if (value < 0xfd) {\n const buffer = Buffer.alloc(1);\n buffer[0] = value;\n return buffer;\n }\n\n if (value <= 0xffff) {\n const buffer = Buffer.alloc(3);\n buffer[0] = 0xfd;\n buffer[1] = value & 0xff;\n buffer[2] = (value >> 8) & 0xff;\n return buffer;\n }\n\n const buffer = Buffer.alloc(5);\n buffer[0] = 0xfe;\n buffer[1] = value & 0xff;\n buffer[2] = (value >> 8) & 0xff;\n buffer[3] = (value >> 16) & 0xff;\n buffer[4] = (value >> 24) & 0xff;\n return buffer;\n}\n", "import type { Transaction } from \"./types\";\nimport { createVarint } from \"./varint\";\n\n/**\n @example\nconst tx1 = btc.splitTransaction(\"01000000014ea60aeac5252c14291d428915bd7ccd1bfc4af009f4d4dc57ae597ed0420b71010000008a47304402201f36a12c240dbf9e566bc04321050b1984cd6eaf6caee8f02bb0bfec08e3354b022012ee2aeadcbbfd1e92959f57c15c1c6debb757b798451b104665aa3010569b49014104090b15bde569386734abf2a2b99f9ca6a50656627e77de663ca7325702769986cf26cc9dd7fdea0af432c8e2becc867c932e1b9dd742f2a108997c2252e2bdebffffffff0281b72e00000000001976a91472a5d75c8d2d0565b656a5232703b167d50d5a2b88aca0860100000000001976a9144533f5fb9b4817f713c48f0bfe96b9f50c476c9b88ac00000000\");\nconst outputScript = btc.serializeTransactionOutputs(tx1).toString('hex');\n */\nexport function serializeTransactionOutputs({ outputs }: Transaction): Buffer {\n let outputBuffer = Buffer.alloc(0);\n\n if (typeof outputs !== \"undefined\") {\n outputBuffer = Buffer.concat([outputBuffer, createVarint(outputs.length)]);\n outputs.forEach((output) => {\n outputBuffer = Buffer.concat([\n outputBuffer,\n output.amount,\n createVarint(output.script.length),\n output.script,\n ]);\n });\n }\n\n return outputBuffer;\n}\nexport function serializeTransaction(\n transaction: Transaction,\n skipWitness: boolean,\n timestamp?: Buffer,\n additionals: string[] = []\n) {\n const isDecred = additionals.includes(\"decred\");\n const isZcash = additionals.includes(\"zcash\");\n const isBech32 = additionals.includes(\"bech32\");\n let inputBuffer = Buffer.alloc(0);\n const useWitness =\n typeof transaction[\"witness\"] != \"undefined\" && !skipWitness;\n transaction.inputs.forEach((input) => {\n inputBuffer =\n isDecred || isBech32\n ? Buffer.concat([\n inputBuffer,\n input.prevout,\n Buffer.from([0x00]), //tree\n input.sequence,\n ])\n : Buffer.concat([\n inputBuffer,\n input.prevout,\n createVarint(input.script.length),\n input.script,\n input.sequence,\n ]);\n });\n let outputBuffer = serializeTransactionOutputs(transaction);\n\n if (\n typeof transaction.outputs !== \"undefined\" &&\n typeof transaction.locktime !== \"undefined\"\n ) {\n outputBuffer = Buffer.concat([\n outputBuffer,\n (useWitness && transaction.witness) || Buffer.alloc(0),\n transaction.locktime,\n transaction.nExpiryHeight || Buffer.alloc(0),\n transaction.extraData || Buffer.alloc(0),\n ]);\n }\n // from to https://zips.z.cash/zip-0225, zcash is different with other coins, the lock_time and nExpiryHeight fields are before the inputs and outputs\n if (isZcash) {\n return Buffer.concat([\n transaction.version,\n transaction.nVersionGroupId || Buffer.alloc(0),\n Buffer.from([0xb4, 0xd0, 0xd6, 0xc2]), // Zcash Consensus Branch ID: 0xC2D6D0B4 refer to https://z.cash/upgrade/nu5/\n transaction.locktime || Buffer.from([0x00, 0x00, 0x00, 0x00]),\n transaction.nExpiryHeight || Buffer.from([0x00, 0x00, 0x00, 0x00]),\n useWitness ? Buffer.from(\"0001\", \"hex\") : Buffer.alloc(0),\n createVarint(transaction.inputs.length),\n inputBuffer,\n outputBuffer,\n ]);\n }\n return Buffer.concat([\n transaction.version,\n timestamp ? timestamp : Buffer.alloc(0),\n transaction.nVersionGroupId || Buffer.alloc(0),\n useWitness ? Buffer.from(\"0001\", \"hex\") : Buffer.alloc(0),\n createVarint(transaction.inputs.length),\n inputBuffer,\n outputBuffer,\n ]);\n}\n", "import bs58 from \"bs58\";\nimport RIPEMD160 from \"ripemd160\";\nimport sha from \"sha.js\";\nimport type Transport from \"@ledgerhq/hw-transport\";\nimport type { CreateTransactionArg } from \"./createTransaction\";\nimport { createTransaction } from \"./createTransaction\";\nimport type { AddressFormat } from \"./getWalletPublicKey\";\nimport { getWalletPublicKey } from \"./getWalletPublicKey\";\nimport { pathArrayToString, pathStringToArray } from \"./bip32\";\nexport type { AddressFormat };\n\n/**\n * Bitcoin API.\n *\n * @example\n * import Btc from \"@ledgerhq/hw-app-btc\";\n * const btc = new Btc({ transport, currency: \"zcash\" });\n */\n\nexport default class BtcOld {\n constructor(private transport: Transport) {}\n\n private derivationsCache = {};\n private async derivatePath(path: string) {\n if (this.derivationsCache[path]) return this.derivationsCache[path];\n const res = await getWalletPublicKey(this.transport, {\n path,\n });\n this.derivationsCache[path] = res;\n return res;\n }\n\n async getWalletXpub({\n path,\n xpubVersion,\n }: {\n path: string;\n xpubVersion: number;\n }): Promise {\n const pathElements = pathStringToArray(path);\n const parentPath = pathElements.slice(0, -1);\n const parentDerivation = await this.derivatePath(\n pathArrayToString(parentPath)\n );\n const accountDerivation = await this.derivatePath(path);\n const fingerprint = makeFingerprint(\n compressPublicKeySECP256(Buffer.from(parentDerivation.publicKey, \"hex\"))\n );\n const xpub = makeXpub(\n xpubVersion,\n pathElements.length,\n fingerprint,\n pathElements[pathElements.length - 1],\n Buffer.from(accountDerivation.chainCode, \"hex\"),\n compressPublicKeySECP256(Buffer.from(accountDerivation.publicKey, \"hex\"))\n );\n return xpub;\n }\n\n /**\n * @param path a BIP 32 path\n * @param options an object with optional these fields:\n *\n * - verify (boolean) will ask user to confirm the address on the device\n *\n * - format (\"legacy\" | \"p2sh\" | \"bech32\" | \"cashaddr\") to use different bitcoin address formatter.\n *\n * NB The normal usage is to use:\n *\n * - legacy format with 44' paths\n *\n * - p2sh format with 49' paths\n *\n * - bech32 format with 173' paths\n *\n * - cashaddr in case of Bitcoin Cash\n *\n * @example\n * btc.getWalletPublicKey(\"44'/0'/0'/0/0\").then(o => o.bitcoinAddress)\n * btc.getWalletPublicKey(\"49'/0'/0'/0/0\", { format: \"p2sh\" }).then(o => o.bitcoinAddress)\n */\n getWalletPublicKey(\n path: string,\n opts?: {\n verify?: boolean;\n format?: AddressFormat;\n }\n ): Promise<{\n publicKey: string;\n bitcoinAddress: string;\n chainCode: string;\n }> {\n if (opts?.format === \"bech32m\") {\n throw new Error(\"Unsupported address format bech32m\");\n }\n return getWalletPublicKey(this.transport, { ...opts, path });\n }\n\n /**\n * To sign a transaction involving standard (P2PKH) inputs, call createTransaction with the following parameters\n * @param inputs is an array of [ transaction, output_index, optional redeem script, optional sequence ] where\n *\n * * transaction is the previously computed transaction object for this UTXO\n * * output_index is the output in the transaction used as input for this UTXO (counting from 0)\n * * redeem script is the optional redeem script to use when consuming a Segregated Witness input\n * * sequence is the sequence number to use for this input (when using RBF), or non present\n * @param associatedKeysets is an array of BIP 32 paths pointing to the path to the private key used for each UTXO\n * @param changePath is an optional BIP 32 path pointing to the path to the public key used to compute the change address\n * @param outputScriptHex is the hexadecimal serialized outputs of the transaction to sign\n * @param lockTime is the optional lockTime of the transaction to sign, or default (0)\n * @param sigHashType is the hash type of the transaction to sign, or default (all)\n * @param segwit is an optional boolean indicating wether to use segwit or not\n * @param initialTimestamp is an optional timestamp of the function call to use for coins that necessitate timestamps only, (not the one that the tx will include)\n * @param additionals list of additionnal options\n *\n * - \"bech32\" for spending native segwit outputs\n * - \"abc\" for bch\n * - \"gold\" for btg\n * - \"bipxxx\" for using BIPxxx\n * - \"sapling\" to indicate a zec transaction is supporting sapling (to be set over block 419200)\n * @param expiryHeight is an optional Buffer for zec overwinter / sapling Txs\n * @param useTrustedInputForSegwit trust inputs for segwit transactions\n * @return the signed transaction ready to be broadcast\n * @example\n btc.createTransaction({\n inputs: [ [tx1, 1] ],\n associatedKeysets: [\"0'/0/0\"],\n outputScriptHex: \"01905f0100000000001976a91472a5d75c8d2d0565b656a5232703b167d50d5a2b88ac\"\n }).then(res => ...);\n */\n createPaymentTransaction(arg: CreateTransactionArg): Promise {\n if (arguments.length > 1) {\n throw new Error(\n \"@ledgerhq/hw-app-btc: createPaymentTransaction multi argument signature is deprecated. please switch to named parameters.\"\n );\n }\n return createTransaction(this.transport, arg);\n }\n}\n\nfunction makeFingerprint(compressedPubKey) {\n return hash160(compressedPubKey).slice(0, 4);\n}\n\nfunction asBufferUInt32BE(n: number): Buffer {\n const buf = Buffer.allocUnsafe(4);\n buf.writeUInt32BE(n, 0);\n return buf;\n}\n\nconst compressPublicKeySECP256 = (publicKey: Buffer) =>\n Buffer.concat([\n Buffer.from([0x02 + (publicKey[64] & 0x01)]),\n publicKey.slice(1, 33),\n ]);\n\nfunction makeXpub(\n version: number,\n depth: number,\n parentFingerprint: Buffer,\n index: number,\n chainCode: Buffer,\n pubKey: Buffer\n) {\n const indexBuffer = asBufferUInt32BE(index);\n indexBuffer[0] |= 0x80;\n const extendedKeyBytes = Buffer.concat([\n asBufferUInt32BE(version),\n Buffer.from([depth]),\n parentFingerprint,\n indexBuffer,\n chainCode,\n pubKey,\n ]);\n const checksum = hash256(extendedKeyBytes).slice(0, 4);\n return bs58.encode(Buffer.concat([extendedKeyBytes, checksum]));\n}\n\nfunction sha256(buffer: Buffer | string) {\n return sha(\"sha256\").update(buffer).digest();\n}\nfunction hash256(buffer: Buffer | string) {\n return sha256(sha256(buffer));\n}\nfunction ripemd160(buffer: Buffer | string) {\n return new RIPEMD160().update(buffer).digest();\n}\nfunction hash160(buffer: Buffer | string) {\n return ripemd160(sha256(buffer));\n}\n", "import { log } from \"@ledgerhq/logs\";\nimport type Transport from \"@ledgerhq/hw-transport\";\nimport { hashPublicKey } from \"./hashPublicKey\";\nimport { getWalletPublicKey } from \"./getWalletPublicKey\";\nimport type { AddressFormat } from \"./getWalletPublicKey\";\nimport { getTrustedInput } from \"./getTrustedInput\";\nimport { startUntrustedHashTransactionInput } from \"./startUntrustedHashTransactionInput\";\nimport { serializeTransaction } from \"./serializeTransaction\";\nimport { getTrustedInputBIP143 } from \"./getTrustedInputBIP143\";\nimport { compressPublicKey } from \"./compressPublicKey\";\nimport { signTransaction } from \"./signTransaction\";\nimport { hashOutputFull, provideOutputFullChangePath } from \"./finalizeInput\";\nimport { getAppAndVersion } from \"./getAppAndVersion\";\nimport type { TransactionOutput, Transaction } from \"./types\";\nimport {\n DEFAULT_LOCKTIME,\n DEFAULT_SEQUENCE,\n SIGHASH_ALL,\n OP_DUP,\n OP_HASH160,\n HASH_SIZE,\n OP_EQUALVERIFY,\n OP_CHECKSIG,\n} from \"./constants\";\nimport { shouldUseTrustedInputForSegwit } from \"./shouldUseTrustedInputForSegwit\";\nexport type { AddressFormat };\nconst defaultsSignTransaction = {\n lockTime: DEFAULT_LOCKTIME,\n sigHashType: SIGHASH_ALL,\n segwit: false,\n additionals: [],\n onDeviceStreaming: (_e) => {},\n onDeviceSignatureGranted: () => {},\n onDeviceSignatureRequested: () => {},\n};\n\n/**\n *\n */\nexport type CreateTransactionArg = {\n inputs: Array<\n [Transaction, number, string | null | undefined, number | null | undefined]\n >;\n associatedKeysets: string[];\n changePath?: string;\n outputScriptHex: string;\n lockTime?: number;\n sigHashType?: number;\n segwit?: boolean;\n initialTimestamp?: number;\n additionals: Array;\n expiryHeight?: Buffer;\n useTrustedInputForSegwit?: boolean;\n onDeviceStreaming?: (arg0: {\n progress: number;\n total: number;\n index: number;\n }) => void;\n onDeviceSignatureRequested?: () => void;\n onDeviceSignatureGranted?: () => void;\n};\nexport async function createTransaction(\n transport: Transport,\n arg: CreateTransactionArg\n): Promise {\n const signTx = { ...defaultsSignTransaction, ...arg };\n const {\n inputs,\n associatedKeysets,\n changePath,\n outputScriptHex,\n lockTime,\n sigHashType,\n segwit,\n initialTimestamp,\n additionals,\n expiryHeight,\n onDeviceStreaming,\n onDeviceSignatureGranted,\n onDeviceSignatureRequested,\n } = signTx;\n let useTrustedInputForSegwit = signTx.useTrustedInputForSegwit;\n\n if (useTrustedInputForSegwit === undefined) {\n try {\n const a = await getAppAndVersion(transport);\n useTrustedInputForSegwit = shouldUseTrustedInputForSegwit(a);\n } catch (e: any) {\n if (e.statusCode === 0x6d00) {\n useTrustedInputForSegwit = false;\n } else {\n throw e;\n }\n }\n }\n\n // loop: 0 or 1 (before and after)\n // i: index of the input being streamed\n // i goes on 0...n, inluding n. in order for the progress value to go to 1\n // we normalize the 2 loops to make a global percentage\n const notify = (loop, i) => {\n const { length } = inputs;\n if (length < 3) return; // there is not enough significant event to worth notifying (aka just use a spinner)\n\n const index = length * loop + i;\n const total = 2 * length;\n const progress = index / total;\n onDeviceStreaming({\n progress,\n total,\n index,\n });\n };\n\n const isDecred = additionals.includes(\"decred\");\n const isZcash = additionals.includes(\"zcash\");\n const isXST = additionals.includes(\"stealthcoin\");\n const startTime = Date.now();\n const sapling = additionals.includes(\"sapling\");\n const bech32 = segwit && additionals.includes(\"bech32\");\n const useBip143 =\n segwit ||\n (!!additionals &&\n (additionals.includes(\"abc\") ||\n additionals.includes(\"gold\") ||\n additionals.includes(\"bip143\"))) ||\n (!!expiryHeight && !isDecred);\n // Inputs are provided as arrays of [transaction, output_index, optional redeem script, optional sequence]\n // associatedKeysets are provided as arrays of [path]\n const lockTimeBuffer = Buffer.alloc(4);\n lockTimeBuffer.writeUInt32LE(lockTime, 0);\n const nullScript = Buffer.alloc(0);\n const nullPrevout = Buffer.alloc(0);\n const defaultVersion = Buffer.alloc(4);\n !!expiryHeight && !isDecred\n ? defaultVersion.writeUInt32LE(\n isZcash ? 0x80000005 : sapling ? 0x80000004 : 0x80000003,\n 0\n ) // v5 format for zcash refer to https://zips.z.cash/zip-0225\n : isXST\n ? defaultVersion.writeUInt32LE(2, 0)\n : defaultVersion.writeUInt32LE(1, 0);\n // Default version to 2 for XST not to have timestamp\n const trustedInputs: Array = [];\n const regularOutputs: Array = [];\n const signatures: Buffer[] = [];\n const publicKeys: Buffer[] = [];\n let firstRun = true;\n const resuming = false;\n const targetTransaction: Transaction = {\n inputs: [],\n version: defaultVersion,\n timestamp: Buffer.alloc(0),\n };\n const getTrustedInputCall =\n useBip143 && !useTrustedInputForSegwit\n ? getTrustedInputBIP143\n : getTrustedInput;\n const outputScript = Buffer.from(outputScriptHex, \"hex\");\n notify(0, 0);\n // first pass on inputs to get trusted inputs\n for (const input of inputs) {\n if (!resuming) {\n const trustedInput = await getTrustedInputCall(\n transport,\n input[1],\n input[0],\n additionals\n );\n log(\"hw\", \"got trustedInput=\" + trustedInput);\n const sequence = Buffer.alloc(4);\n sequence.writeUInt32LE(\n input.length >= 4 && typeof input[3] === \"number\"\n ? input[3]\n : DEFAULT_SEQUENCE,\n 0\n );\n trustedInputs.push({\n trustedInput: true,\n value: Buffer.from(trustedInput, \"hex\"),\n sequence,\n });\n }\n\n const { outputs } = input[0];\n const index = input[1];\n\n if (outputs && index <= outputs.length - 1) {\n regularOutputs.push(outputs[index]);\n }\n\n if (expiryHeight && !isDecred) {\n targetTransaction.nVersionGroupId = Buffer.from(\n // nVersionGroupId is 0x26A7270A for zcash from https://z.cash/upgrade/nu5/\n isZcash\n ? [0x0a, 0x27, 0xa7, 0x26]\n : sapling\n ? [0x85, 0x20, 0x2f, 0x89]\n : [0x70, 0x82, 0xc4, 0x03]\n );\n targetTransaction.nExpiryHeight = expiryHeight;\n // For sapling : valueBalance (8), nShieldedSpend (1), nShieldedOutput (1), nJoinSplit (1)\n // Overwinter : use nJoinSplit (1)\n targetTransaction.extraData = Buffer.from(\n sapling\n ? [0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00]\n : [0x00]\n );\n } else if (isDecred) {\n targetTransaction.nExpiryHeight = expiryHeight;\n }\n }\n\n targetTransaction.inputs = inputs.map((input, idx) => {\n const sequence = Buffer.alloc(4);\n sequence.writeUInt32LE(\n input.length >= 4 && typeof input[3] === \"number\"\n ? input[3]\n : DEFAULT_SEQUENCE,\n 0\n );\n return {\n script: isZcash ? regularOutputs[idx].script : nullScript,\n prevout: nullPrevout,\n sequence,\n };\n });\n\n if (!resuming) {\n // Collect public keys\n const result: {\n publicKey: string;\n bitcoinAddress: string;\n chainCode: string;\n }[] = [];\n\n for (let i = 0; i < inputs.length; i++) {\n const r = await getWalletPublicKey(transport, {\n path: associatedKeysets[i],\n });\n notify(0, i + 1);\n result.push(r);\n }\n\n for (let i = 0; i < result.length; i++) {\n publicKeys.push(\n compressPublicKey(Buffer.from(result[i].publicKey, \"hex\"))\n );\n }\n }\n\n if (initialTimestamp !== undefined) {\n targetTransaction.timestamp = Buffer.alloc(4);\n targetTransaction.timestamp.writeUInt32LE(\n Math.floor(initialTimestamp + (Date.now() - startTime) / 1000),\n 0\n );\n }\n\n onDeviceSignatureRequested();\n\n if (useBip143) {\n // Do the first run with all inputs\n await startUntrustedHashTransactionInput(\n transport,\n true,\n targetTransaction,\n trustedInputs,\n true,\n !!expiryHeight,\n additionals,\n useTrustedInputForSegwit\n );\n\n if (!resuming && changePath) {\n await provideOutputFullChangePath(transport, changePath);\n }\n\n await hashOutputFull(transport, outputScript);\n }\n\n if (!!expiryHeight && !isDecred) {\n await signTransaction(transport, \"\", lockTime, SIGHASH_ALL, expiryHeight);\n }\n\n // Do the second run with the individual transaction\n for (let i = 0; i < inputs.length; i++) {\n const input = inputs[i];\n const script =\n inputs[i].length >= 3 && typeof input[2] === \"string\"\n ? Buffer.from(input[2], \"hex\")\n : !segwit\n ? regularOutputs[i].script\n : Buffer.concat([\n Buffer.from([OP_DUP, OP_HASH160, HASH_SIZE]),\n hashPublicKey(publicKeys[i]),\n Buffer.from([OP_EQUALVERIFY, OP_CHECKSIG]),\n ]);\n const pseudoTX = Object.assign({}, targetTransaction);\n const pseudoTrustedInputs = useBip143 ? [trustedInputs[i]] : trustedInputs;\n\n if (useBip143) {\n pseudoTX.inputs = [{ ...pseudoTX.inputs[i], script }];\n } else {\n pseudoTX.inputs[i].script = script;\n }\n\n await startUntrustedHashTransactionInput(\n transport,\n !useBip143 && firstRun,\n pseudoTX,\n pseudoTrustedInputs,\n useBip143,\n !!expiryHeight && !isDecred,\n additionals,\n useTrustedInputForSegwit\n );\n\n if (!useBip143) {\n if (!resuming && changePath) {\n await provideOutputFullChangePath(transport, changePath);\n }\n\n await hashOutputFull(transport, outputScript, additionals);\n }\n\n if (firstRun) {\n onDeviceSignatureGranted();\n notify(1, 0);\n }\n\n const signature = await signTransaction(\n transport,\n associatedKeysets[i],\n lockTime,\n sigHashType,\n expiryHeight,\n additionals\n );\n notify(1, i + 1);\n signatures.push(signature);\n targetTransaction.inputs[i].script = nullScript;\n\n if (firstRun) {\n firstRun = false;\n }\n }\n\n // Populate the final input scripts\n for (let i = 0; i < inputs.length; i++) {\n if (segwit) {\n targetTransaction.witness = Buffer.alloc(0);\n\n if (!bech32) {\n targetTransaction.inputs[i].script = Buffer.concat([\n Buffer.from(\"160014\", \"hex\"),\n hashPublicKey(publicKeys[i]),\n ]);\n }\n } else {\n const signatureSize = Buffer.alloc(1);\n const keySize = Buffer.alloc(1);\n signatureSize[0] = signatures[i].length;\n keySize[0] = publicKeys[i].length;\n targetTransaction.inputs[i].script = Buffer.concat([\n signatureSize,\n signatures[i],\n keySize,\n publicKeys[i],\n ]);\n }\n\n const offset = useBip143 && !useTrustedInputForSegwit ? 0 : 4;\n targetTransaction.inputs[i].prevout = trustedInputs[i].value.slice(\n offset,\n offset + 0x24\n );\n }\n targetTransaction.locktime = lockTimeBuffer;\n let result = Buffer.concat([\n serializeTransaction(\n targetTransaction,\n false,\n targetTransaction.timestamp,\n additionals\n ),\n outputScript,\n ]);\n\n if (segwit && !isDecred) {\n let witness = Buffer.alloc(0);\n\n for (let i = 0; i < inputs.length; i++) {\n const tmpScriptData = Buffer.concat([\n Buffer.from(\"02\", \"hex\"),\n Buffer.from([signatures[i].length]),\n signatures[i],\n Buffer.from([publicKeys[i].length]),\n publicKeys[i],\n ]);\n witness = Buffer.concat([witness, tmpScriptData]);\n }\n\n result = Buffer.concat([result, witness]);\n }\n\n // from to https://zips.z.cash/zip-0225, zcash is different with other coins, the lock_time and nExpiryHeight fields are before the inputs and outputs\n if (!isZcash) {\n result = Buffer.concat([result, lockTimeBuffer]);\n if (expiryHeight) {\n result = Buffer.concat([\n result,\n targetTransaction.nExpiryHeight || Buffer.alloc(0),\n targetTransaction.extraData || Buffer.alloc(0),\n ]);\n }\n }\n if (isDecred) {\n let decredWitness = Buffer.from([targetTransaction.inputs.length]);\n inputs.forEach((input, inputIndex) => {\n decredWitness = Buffer.concat([\n decredWitness,\n Buffer.from([0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00]),\n Buffer.from([0x00, 0x00, 0x00, 0x00]), //Block height\n Buffer.from([0xff, 0xff, 0xff, 0xff]), //Block index\n Buffer.from([targetTransaction.inputs[inputIndex].script.length]),\n targetTransaction.inputs[inputIndex].script,\n ]);\n });\n result = Buffer.concat([result, decredWitness]);\n }\n if (isZcash) {\n result = Buffer.concat([result, Buffer.from([0x00, 0x00, 0x00])]);\n }\n return result.toString(\"hex\");\n}\n", "import type Transport from \"@ledgerhq/hw-transport\";\nimport { bip32asBuffer } from \"./bip32\";\n\n/**\n * address format is one of legacy | p2sh | bech32 | cashaddr\n */\nexport type AddressFormat =\n | \"legacy\"\n | \"p2sh\"\n | \"bech32\"\n | \"bech32m\"\n | \"cashaddr\";\nconst addressFormatMap = {\n legacy: 0,\n p2sh: 1,\n bech32: 2,\n cashaddr: 3,\n};\nexport async function getWalletPublicKey(\n transport: Transport,\n options: {\n path: string;\n verify?: boolean;\n format?: AddressFormat;\n }\n): Promise<{\n publicKey: string;\n bitcoinAddress: string;\n chainCode: string;\n}> {\n const { path, verify, format } = {\n verify: false,\n format: \"legacy\",\n ...options,\n };\n\n if (!(format in addressFormatMap)) {\n throw new Error(\"btc.getWalletPublicKey invalid format=\" + format);\n }\n\n const buffer = bip32asBuffer(path);\n const p1 = verify ? 1 : 0;\n const p2 = addressFormatMap[format];\n const response = await transport.send(0xe0, 0x40, p1, p2, buffer);\n const publicKeyLength = response[0];\n const addressLength = response[1 + publicKeyLength];\n const publicKey = response.slice(1, 1 + publicKeyLength).toString(\"hex\");\n const bitcoinAddress = response\n .slice(1 + publicKeyLength + 1, 1 + publicKeyLength + 1 + addressLength)\n .toString(\"ascii\");\n const chainCode = response\n .slice(\n 1 + publicKeyLength + 1 + addressLength,\n 1 + publicKeyLength + 1 + addressLength + 32\n )\n .toString(\"hex\");\n return {\n publicKey,\n bitcoinAddress,\n chainCode,\n };\n}\n", "import invariant from \"invariant\";\nimport type Transport from \"@ledgerhq/hw-transport\";\nimport type { Transaction } from \"./types\";\nimport { MAX_SCRIPT_BLOCK } from \"./constants\";\nimport { createVarint } from \"./varint\";\nexport async function getTrustedInputRaw(\n transport: Transport,\n transactionData: Buffer,\n indexLookup?: number | null | undefined\n): Promise {\n let data;\n let firstRound = false;\n\n if (typeof indexLookup === \"number\") {\n firstRound = true;\n const prefix = Buffer.alloc(4);\n prefix.writeUInt32BE(indexLookup, 0);\n data = Buffer.concat([prefix, transactionData], transactionData.length + 4);\n } else {\n data = transactionData;\n }\n\n const trustedInput = await transport.send(\n 0xe0,\n 0x42,\n firstRound ? 0x00 : 0x80,\n 0x00,\n data\n );\n const res = trustedInput.slice(0, trustedInput.length - 2).toString(\"hex\");\n return res;\n}\nexport async function getTrustedInput(\n transport: Transport,\n indexLookup: number,\n transaction: Transaction,\n additionals: Array = []\n): Promise {\n const { version, inputs, outputs, locktime, nExpiryHeight, extraData } =\n transaction;\n\n if (!outputs || !locktime) {\n throw new Error(\"getTrustedInput: locktime & outputs is expected\");\n }\n\n const isDecred = additionals.includes(\"decred\");\n const isXST = additionals.includes(\"stealthcoin\");\n\n const processScriptBlocks = async (script, sequence?: Buffer) => {\n const seq = sequence || Buffer.alloc(0);\n const scriptBlocks: Buffer[] = [];\n let offset = 0;\n\n while (offset !== script.length) {\n const blockSize =\n script.length - offset > MAX_SCRIPT_BLOCK\n ? MAX_SCRIPT_BLOCK\n : script.length - offset;\n\n if (offset + blockSize !== script.length) {\n scriptBlocks.push(script.slice(offset, offset + blockSize));\n } else {\n scriptBlocks.push(\n Buffer.concat([script.slice(offset, offset + blockSize), seq])\n );\n }\n\n offset += blockSize;\n }\n\n // Handle case when no script length: we still want to pass the sequence\n // relatable: https://github.com/LedgerHQ/ledger-live-desktop/issues/1386\n if (script.length === 0) {\n scriptBlocks.push(seq);\n }\n\n let res;\n\n for (const scriptBlock of scriptBlocks) {\n res = await getTrustedInputRaw(transport, scriptBlock);\n }\n\n return res;\n };\n\n const processWholeScriptBlock = (block) =>\n getTrustedInputRaw(transport, block);\n\n await getTrustedInputRaw(\n transport,\n Buffer.concat([\n transaction.version,\n transaction.timestamp || Buffer.alloc(0),\n transaction.nVersionGroupId || Buffer.alloc(0),\n createVarint(inputs.length),\n ]),\n indexLookup\n );\n\n for (const input of inputs) {\n const isXSTV2 =\n isXST &&\n Buffer.compare(version, Buffer.from([0x02, 0x00, 0x00, 0x00])) === 0;\n const treeField = isDecred\n ? input.tree || Buffer.from([0x00])\n : Buffer.alloc(0);\n const data = Buffer.concat([\n input.prevout,\n treeField,\n isXSTV2 ? Buffer.from([0x00]) : createVarint(input.script.length),\n ]);\n await getTrustedInputRaw(transport, data);\n // iteration (eachSeries) ended\n // TODO notify progress\n // deferred.notify(\"input\");\n // Reference: https://github.com/StealthSend/Stealth/commit/5be35d6c2c500b32ed82e5d6913d66d18a4b0a7f#diff-e8db9b851adc2422aadfffca88f14c91R566\n await (isDecred\n ? processWholeScriptBlock(Buffer.concat([input.script, input.sequence]))\n : isXSTV2\n ? processWholeScriptBlock(input.sequence)\n : processScriptBlocks(input.script, input.sequence));\n }\n\n await getTrustedInputRaw(transport, createVarint(outputs.length));\n\n for (const output of outputs) {\n const data = Buffer.concat([\n output.amount,\n isDecred ? Buffer.from([0x00, 0x00]) : Buffer.alloc(0), //Version script\n createVarint(output.script.length),\n output.script,\n ]);\n await getTrustedInputRaw(transport, data);\n }\n\n const endData: Buffer[] = [];\n\n if (nExpiryHeight && nExpiryHeight.length > 0) {\n endData.push(nExpiryHeight);\n }\n\n if (extraData && extraData.length > 0) {\n endData.push(extraData);\n }\n\n let extraPart;\n\n if (endData.length) {\n const data = Buffer.concat(endData);\n extraPart = isDecred\n ? data\n : Buffer.concat([createVarint(data.length), data]);\n }\n\n const res = await processScriptBlocks(\n Buffer.concat([locktime, extraPart || Buffer.alloc(0)])\n );\n invariant(res, \"missing result in processScriptBlocks\");\n return res;\n}\n", "import type Transport from \"@ledgerhq/hw-transport\";\nimport type { Transaction } from \"./types\";\nimport { createVarint } from \"./varint\";\nimport { MAX_SCRIPT_BLOCK } from \"./constants\";\nexport function startUntrustedHashTransactionInputRaw(\n transport: Transport,\n newTransaction: boolean,\n firstRound: boolean,\n transactionData: Buffer,\n bip143 = false,\n overwinter = false,\n additionals: Array = []\n): Promise {\n const p2 = additionals.includes(\"cashaddr\")\n ? 0x03\n : bip143\n ? additionals.includes(\"sapling\")\n ? 0x05\n : overwinter\n ? 0x04\n : 0x02\n : 0x00;\n return transport.send(\n 0xe0,\n 0x44,\n firstRound ? 0x00 : 0x80,\n newTransaction ? p2 : 0x80,\n transactionData\n );\n}\nexport async function startUntrustedHashTransactionInput(\n transport: Transport,\n newTransaction: boolean,\n transaction: Transaction,\n inputs: Array<{\n trustedInput: boolean;\n value: Buffer;\n }>,\n bip143 = false,\n overwinter = false,\n additionals: Array = [],\n useTrustedInputForSegwit = false\n): Promise {\n let data = Buffer.concat([\n transaction.version,\n transaction.timestamp || Buffer.alloc(0),\n transaction.nVersionGroupId || Buffer.alloc(0),\n createVarint(transaction.inputs.length),\n ]);\n await startUntrustedHashTransactionInputRaw(\n transport,\n newTransaction,\n true,\n data,\n bip143,\n overwinter,\n additionals\n );\n let i = 0;\n const isDecred = additionals.includes(\"decred\");\n\n for (const input of transaction.inputs) {\n let prefix;\n const inputValue = inputs[i].value;\n\n if (bip143) {\n if (useTrustedInputForSegwit && inputs[i].trustedInput) {\n prefix = Buffer.from([0x01, inputValue.length]);\n } else {\n prefix = Buffer.from([0x02]);\n }\n } else {\n if (inputs[i].trustedInput) {\n prefix = Buffer.from([0x01, inputs[i].value.length]);\n } else {\n prefix = Buffer.from([0x00]);\n }\n }\n\n data = Buffer.concat([\n prefix,\n inputValue,\n isDecred ? Buffer.from([0x00]) : Buffer.alloc(0),\n createVarint(input.script.length),\n ]);\n await startUntrustedHashTransactionInputRaw(\n transport,\n newTransaction,\n false,\n data,\n bip143,\n overwinter,\n additionals\n );\n const scriptBlocks: Buffer[] = [];\n let offset = 0;\n\n if (input.script.length === 0) {\n scriptBlocks.push(input.sequence);\n } else {\n while (offset !== input.script.length) {\n const blockSize =\n input.script.length - offset > MAX_SCRIPT_BLOCK\n ? MAX_SCRIPT_BLOCK\n : input.script.length - offset;\n\n if (offset + blockSize !== input.script.length) {\n scriptBlocks.push(input.script.slice(offset, offset + blockSize));\n } else {\n scriptBlocks.push(\n Buffer.concat([\n input.script.slice(offset, offset + blockSize),\n input.sequence,\n ])\n );\n }\n\n offset += blockSize;\n }\n }\n\n for (const scriptBlock of scriptBlocks) {\n await startUntrustedHashTransactionInputRaw(\n transport,\n newTransaction,\n false,\n scriptBlock,\n bip143,\n overwinter,\n additionals\n );\n }\n\n i++;\n }\n}\n", "import Transport from \"@ledgerhq/hw-transport\";\nimport shajs from \"sha.js\";\nimport type { Transaction } from \"./types\";\nimport { serializeTransaction } from \"./serializeTransaction\";\nexport function getTrustedInputBIP143(\n transport: Transport,\n indexLookup: number,\n transaction: Transaction,\n additionals: Array = []\n): string {\n if (!transaction) {\n throw new Error(\"getTrustedInputBIP143: missing tx\");\n }\n\n const isDecred = additionals.includes(\"decred\");\n\n if (isDecred) {\n throw new Error(\"Decred does not implement BIP143\");\n }\n\n let hash = shajs(\"sha256\")\n .update(\n shajs(\"sha256\").update(serializeTransaction(transaction, true)).digest()\n )\n .digest();\n const data = Buffer.alloc(4);\n data.writeUInt32LE(indexLookup, 0);\n const { outputs, locktime } = transaction;\n\n if (!outputs || !locktime) {\n throw new Error(\"getTrustedInputBIP143: locktime & outputs is expected\");\n }\n\n if (!outputs[indexLookup]) {\n throw new Error(\"getTrustedInputBIP143: wrong index\");\n }\n\n hash = Buffer.concat([hash, data, outputs[indexLookup].amount]);\n return hash.toString(\"hex\");\n}\n", "export function compressPublicKey(publicKey: Buffer): Buffer {\n const prefix = (publicKey[64] & 1) !== 0 ? 0x03 : 0x02;\n const prefixBuffer = Buffer.alloc(1);\n prefixBuffer[0] = prefix;\n return Buffer.concat([prefixBuffer, publicKey.slice(1, 1 + 32)]);\n}\n", "import type Transport from \"@ledgerhq/hw-transport\";\nimport { bip32asBuffer } from \"./bip32\";\nexport function signTransaction(\n transport: Transport,\n path: string,\n lockTime: number,\n sigHashType: number,\n expiryHeight?: Buffer,\n additionals: Array = []\n): Promise {\n const isDecred = additionals.includes(\"decred\");\n const pathsBuffer = bip32asBuffer(path);\n const lockTimeBuffer = Buffer.alloc(4);\n lockTimeBuffer.writeUInt32BE(lockTime, 0);\n let buffer = isDecred\n ? Buffer.concat([\n pathsBuffer,\n lockTimeBuffer,\n expiryHeight || Buffer.from([0x00, 0x00, 0x00, 0x00]),\n Buffer.from([sigHashType]),\n ])\n : Buffer.concat([\n pathsBuffer,\n Buffer.from([0x00]),\n lockTimeBuffer,\n Buffer.from([sigHashType]),\n ]);\n\n if (expiryHeight && !isDecred) {\n buffer = Buffer.concat([buffer, expiryHeight]);\n }\n\n return transport.send(0xe0, 0x48, 0x00, 0x00, buffer).then((result) => {\n if (result.length > 0) {\n result[0] = 0x30;\n return result.slice(0, result.length - 2);\n }\n\n return result;\n });\n}\n", "import Transport from \"@ledgerhq/hw-transport\";\nimport { bip32asBuffer } from \"./bip32\";\nimport { MAX_SCRIPT_BLOCK } from \"./constants\";\nexport function provideOutputFullChangePath(\n transport: Transport,\n path: string\n): Promise {\n const buffer = bip32asBuffer(path);\n return transport.send(0xe0, 0x4a, 0xff, 0x00, buffer);\n}\nexport async function hashOutputFull(\n transport: Transport,\n outputScript: Buffer,\n additionals: Array = []\n): Promise {\n let offset = 0;\n const p1 = Number(0x80);\n const isDecred = additionals.includes(\"decred\");\n\n ///WARNING: Decred works only with one call (without chunking)\n //TODO: test without this for Decred\n if (isDecred) {\n return transport.send(0xe0, 0x4a, p1, 0x00, outputScript);\n }\n\n while (offset < outputScript.length) {\n const blockSize =\n offset + MAX_SCRIPT_BLOCK >= outputScript.length\n ? outputScript.length - offset\n : MAX_SCRIPT_BLOCK;\n const p1 = offset + blockSize === outputScript.length ? 0x80 : 0x00;\n const data = outputScript.slice(offset, offset + blockSize);\n await transport.send(0xe0, 0x4a, p1, 0x00, data);\n offset += blockSize;\n }\n}\n", "import invariant from \"invariant\";\nimport Transport from \"@ledgerhq/hw-transport\";\n\nexport type AppAndVersion = {\n name: string;\n version: string;\n flags: number | Buffer;\n};\n\nexport const getAppAndVersion = async (\n transport: Transport\n): Promise => {\n const r = await transport.send(0xb0, 0x01, 0x00, 0x00);\n let i = 0;\n const format = r[i++];\n invariant(format === 1, \"getAppAndVersion: format not supported\");\n const nameLength = r[i++];\n const name = r.slice(i, (i += nameLength)).toString(\"ascii\");\n const versionLength = r[i++];\n const version = r.slice(i, (i += versionLength)).toString(\"ascii\");\n const flagLength = r[i++];\n const flags = r.slice(i, (i += flagLength));\n return {\n name,\n version,\n flags,\n };\n};\n\nexport const checkIsBtcLegacy = async (\n transport: Transport\n): Promise => {\n try {\n // Call old btc API, it will throw an exception with new btc app. It is a workaround to differentiate new/old btc nano app\n await transport.send(0xe0, 0xc4, 0, 0);\n } catch (e: unknown) {\n return false;\n }\n return true;\n};\n", "import semver from \"semver\";\nexport function shouldUseTrustedInputForSegwit({\n version,\n name,\n}: {\n version: string;\n name: string;\n}): boolean {\n if (name === \"Decred\") return false;\n if (name === \"Exchange\") return true;\n return semver.gte(version, \"1.4.0\");\n}\n", "import { createVarint } from \"../varint\";\nimport { hashLeaf, Merkle } from \"./merkle\";\n\n/**\n * This implements \"Merkelized Maps\", documented at\n * https://github.com/LedgerHQ/app-bitcoin-new/blob/master/doc/merkle.md#merkleized-maps\n *\n * A merkelized map consist of two merkle trees, one for the keys of\n * a map and one for the values of the same map, thus the two merkle\n * trees have the same shape. The commitment is the number elements\n * in the map followed by the keys' merkle root followed by the\n * values' merkle root.\n */\nexport class MerkleMap {\n keys: Buffer[];\n keysTree: Merkle;\n values: Buffer[];\n valuesTree: Merkle;\n /**\n * @param keys Sorted list of (unhashed) keys\n * @param values values, in corresponding order as the keys, and of equal length\n */\n constructor(keys: Buffer[], values: Buffer[]) {\n if (keys.length != values.length) {\n throw new Error(\"keys and values should have the same length\");\n }\n\n // Sanity check: verify that keys are actually sorted and with no duplicates\n for (let i = 0; i < keys.length - 1; i++) {\n if (keys[i].toString(\"hex\") >= keys[i + 1].toString(\"hex\")) {\n throw new Error(\"keys must be in strictly increasing order\");\n }\n }\n\n this.keys = keys;\n this.keysTree = new Merkle(keys.map((k) => hashLeaf(k)));\n this.values = values;\n this.valuesTree = new Merkle(values.map((v) => hashLeaf(v)));\n }\n\n commitment(): Buffer {\n // returns a buffer between 65 and 73 (included) bytes long\n return Buffer.concat([\n createVarint(this.keys.length),\n this.keysTree.getRoot(),\n this.valuesTree.getRoot(),\n ]);\n }\n}\n", "import { MerkleMap } from \"./merkleMap\";\nimport { PsbtV2 } from \"./psbtv2\";\n\n/**\n * This class merkelizes a PSBTv2, by merkelizing the different\n * maps of the psbt. This is used during the transaction signing process,\n * where the hardware app can request specific parts of the psbt from the\n * client code and be sure that the response data actually belong to the psbt.\n * The reason for this is the limited amount of memory available to the app,\n * so it can't always store the full psbt in memory.\n *\n * The signing process is documented at\n * https://github.com/LedgerHQ/app-bitcoin-new/blob/master/doc/bitcoin.md#sign_psbt\n */\nexport class MerkelizedPsbt extends PsbtV2 {\n public globalMerkleMap: MerkleMap;\n public inputMerkleMaps: MerkleMap[] = [];\n public outputMerkleMaps: MerkleMap[] = [];\n public inputMapCommitments: Buffer[];\n public outputMapCommitments: Buffer[];\n constructor(psbt: PsbtV2) {\n super();\n psbt.copy(this);\n this.globalMerkleMap = MerkelizedPsbt.createMerkleMap(this.globalMap);\n\n for (let i = 0; i < this.getGlobalInputCount(); i++) {\n this.inputMerkleMaps.push(\n MerkelizedPsbt.createMerkleMap(this.inputMaps[i])\n );\n }\n this.inputMapCommitments = [...this.inputMerkleMaps.values()].map((v) =>\n v.commitment()\n );\n\n for (let i = 0; i < this.getGlobalOutputCount(); i++) {\n this.outputMerkleMaps.push(\n MerkelizedPsbt.createMerkleMap(this.outputMaps[i])\n );\n }\n this.outputMapCommitments = [...this.outputMerkleMaps.values()].map((v) =>\n v.commitment()\n );\n }\n // These public functions are for MerkelizedPsbt.\n getGlobalSize(): number {\n return this.globalMap.size;\n }\n getGlobalKeysValuesRoot(): Buffer {\n return this.globalMerkleMap.commitment();\n }\n\n private static createMerkleMap(map: Map): MerkleMap {\n const sortedKeysStrings = [...map.keys()].sort();\n const values = sortedKeysStrings.map((k) => {\n const v = map.get(k);\n if (!v) {\n throw new Error(\"No value for key \" + k);\n }\n return v;\n });\n const sortedKeys = sortedKeysStrings.map((k) => Buffer.from(k, \"hex\"));\n\n const merkleMap = new MerkleMap(sortedKeys, values);\n return merkleMap;\n }\n}\n", "import { crypto } from \"bitcoinjs-lib\";\nimport { BufferReader } from \"../buffertools\";\nimport { createVarint } from \"../varint\";\nimport { hashLeaf, Merkle } from \"./merkle\";\nimport { MerkleMap } from \"./merkleMap\";\n\nenum ClientCommandCode {\n YIELD = 0x10,\n GET_PREIMAGE = 0x40,\n GET_MERKLE_LEAF_PROOF = 0x41,\n GET_MERKLE_LEAF_INDEX = 0x42,\n GET_MORE_ELEMENTS = 0xa0,\n}\n\nabstract class ClientCommand {\n abstract code: ClientCommandCode;\n abstract execute(request: Buffer): Buffer;\n}\n\nexport class YieldCommand extends ClientCommand {\n private results: Buffer[];\n\n code = ClientCommandCode.YIELD;\n\n constructor(results: Buffer[], private progressCallback: () => void) {\n super();\n this.results = results;\n }\n\n execute(request: Buffer): Buffer {\n this.results.push(Buffer.from(request.subarray(1)));\n this.progressCallback();\n return Buffer.from(\"\");\n }\n}\n\nexport class GetPreimageCommand extends ClientCommand {\n private known_preimages: Map;\n private queue: Buffer[];\n\n code = ClientCommandCode.GET_PREIMAGE;\n\n constructor(known_preimages: Map, queue: Buffer[]) {\n super();\n this.known_preimages = known_preimages;\n this.queue = queue;\n }\n\n execute(request: Buffer): Buffer {\n const req = Buffer.from(request.subarray(1));\n\n // we expect no more data to read\n if (req.length != 1 + 32) {\n throw new Error(\"Invalid request, unexpected trailing data\");\n }\n\n if (req[0] != 0) {\n throw new Error(\"Unsupported request, the first byte should be 0\");\n }\n\n // read the hash\n const hash = Buffer.alloc(32);\n for (let i = 0; i < 32; i++) {\n hash[i] = req[1 + i];\n }\n const req_hash_hex = hash.toString(\"hex\");\n\n const known_preimage = this.known_preimages.get(req_hash_hex);\n if (known_preimage != undefined) {\n const preimage_len_varint = createVarint(known_preimage.length);\n\n // We can send at most 255 - len(preimage_len_out) - 1 bytes in a single message;\n // the rest will be stored in the queue for GET_MORE_ELEMENTS\n const max_payload_size = 255 - preimage_len_varint.length - 1;\n\n const payload_size = Math.min(max_payload_size, known_preimage.length);\n\n if (payload_size < known_preimage.length) {\n for (let i = payload_size; i < known_preimage.length; i++) {\n this.queue.push(Buffer.from([known_preimage[i]]));\n }\n }\n\n return Buffer.concat([\n preimage_len_varint,\n Buffer.from([payload_size]),\n Buffer.from(known_preimage.subarray(0, payload_size)),\n ]);\n }\n\n throw Error(`Requested unknown preimage for: ${req_hash_hex}`);\n }\n}\n\nexport class GetMerkleLeafProofCommand extends ClientCommand {\n private known_trees: Map;\n private queue: Buffer[];\n\n code = ClientCommandCode.GET_MERKLE_LEAF_PROOF;\n\n constructor(known_trees: Map, queue: Buffer[]) {\n super();\n this.known_trees = known_trees;\n this.queue = queue;\n }\n\n execute(request: Buffer): Buffer {\n const req = Buffer.from(request.subarray(1));\n\n if (req.length < 32 + 1 + 1) {\n throw new Error(\"Invalid request, expected at least 34 bytes\");\n }\n\n const reqBuf = new BufferReader(req);\n const hash = reqBuf.readSlice(32);\n const hash_hex = hash.toString(\"hex\");\n\n let tree_size;\n let leaf_index;\n try {\n tree_size = reqBuf.readVarInt();\n leaf_index = reqBuf.readVarInt();\n } catch (e: any) {\n throw new Error(\n \"Invalid request, couldn't parse tree_size or leaf_index\"\n );\n }\n\n const mt = this.known_trees.get(hash_hex);\n if (!mt) {\n throw Error(`Requested Merkle leaf proof for unknown tree: ${hash_hex}`);\n }\n\n if (leaf_index >= tree_size || mt.size() != tree_size) {\n throw Error(\"Invalid index or tree size.\");\n }\n\n if (this.queue.length != 0) {\n throw Error(\n \"This command should not execute when the queue is not empty.\"\n );\n }\n\n const proof = mt.getProof(leaf_index);\n\n const n_response_elements = Math.min(\n Math.floor((255 - 32 - 1 - 1) / 32),\n proof.length\n );\n const n_leftover_elements = proof.length - n_response_elements;\n\n // Add to the queue any proof elements that do not fit the response\n if (n_leftover_elements > 0) {\n this.queue.push(...proof.slice(-n_leftover_elements));\n }\n\n return Buffer.concat([\n mt.getLeafHash(leaf_index),\n Buffer.from([proof.length]),\n Buffer.from([n_response_elements]),\n ...proof.slice(0, n_response_elements),\n ]);\n }\n}\n\nexport class GetMerkleLeafIndexCommand extends ClientCommand {\n private known_trees: Map;\n\n code = ClientCommandCode.GET_MERKLE_LEAF_INDEX;\n\n constructor(known_trees: Map) {\n super();\n this.known_trees = known_trees;\n }\n\n execute(request: Buffer): Buffer {\n const req = Buffer.from(request.subarray(1));\n\n if (req.length != 32 + 32) {\n throw new Error(\"Invalid request, unexpected trailing data\");\n }\n\n // read the root hash\n const root_hash = Buffer.alloc(32);\n for (let i = 0; i < 32; i++) {\n root_hash[i] = req.readUInt8(i);\n }\n const root_hash_hex = root_hash.toString(\"hex\");\n\n // read the leaf hash\n const leef_hash = Buffer.alloc(32);\n for (let i = 0; i < 32; i++) {\n leef_hash[i] = req.readUInt8(32 + i);\n }\n const leef_hash_hex = leef_hash.toString(\"hex\");\n\n const mt = this.known_trees.get(root_hash_hex);\n if (!mt) {\n throw Error(\n `Requested Merkle leaf index for unknown root: ${root_hash_hex}`\n );\n }\n\n let leaf_index = 0;\n let found = 0;\n for (let i = 0; i < mt.size(); i++) {\n if (mt.getLeafHash(i).toString(\"hex\") == leef_hash_hex) {\n found = 1;\n leaf_index = i;\n break;\n }\n }\n return Buffer.concat([Buffer.from([found]), createVarint(leaf_index)]);\n }\n}\n\nexport class GetMoreElementsCommand extends ClientCommand {\n queue: Buffer[];\n\n code = ClientCommandCode.GET_MORE_ELEMENTS;\n\n constructor(queue: Buffer[]) {\n super();\n this.queue = queue;\n }\n\n execute(request: Buffer): Buffer {\n if (request.length != 1) {\n throw new Error(\"Invalid request, unexpected trailing data\");\n }\n\n if (this.queue.length === 0) {\n throw new Error(\"No elements to get\");\n }\n\n // all elements should have the same length\n const element_len = this.queue[0].length;\n if (this.queue.some((el) => el.length != element_len)) {\n throw new Error(\n \"The queue contains elements with different byte length, which is not expected\"\n );\n }\n\n const max_elements = Math.floor(253 / element_len);\n const n_returned_elements = Math.min(max_elements, this.queue.length);\n\n const returned_elements = this.queue.splice(0, n_returned_elements);\n\n return Buffer.concat([\n Buffer.from([n_returned_elements]),\n Buffer.from([element_len]),\n ...returned_elements,\n ]);\n }\n}\n\n/**\n * This class will dispatch a client command coming from the hardware device to\n * the appropriate client command implementation. Those client commands\n * typically requests data from a merkle tree or merkelized maps.\n *\n * A ClientCommandInterpreter is prepared by adding the merkle trees and\n * merkelized maps it should be able to serve to the hardware device. This class\n * doesn't know anything about the semantics of the data it holds, it just\n * serves merkle data. It doesn't even know in what context it is being\n * executed, ie SignPsbt, getWalletAddress, etc.\n *\n * If the command yelds results to the client, as signPsbt does, the yielded\n * data will be accessible after the command completed by calling getYielded(),\n * which will return the yields in the same order as they came in.\n */\nexport class ClientCommandInterpreter {\n private roots: Map = new Map();\n private preimages: Map = new Map();\n\n private yielded: Buffer[] = [];\n\n private queue: Buffer[] = [];\n\n private commands: Map = new Map();\n\n constructor(progressCallback: () => void) {\n const commands = [\n new YieldCommand(this.yielded, progressCallback),\n new GetPreimageCommand(this.preimages, this.queue),\n new GetMerkleLeafIndexCommand(this.roots),\n new GetMerkleLeafProofCommand(this.roots, this.queue),\n new GetMoreElementsCommand(this.queue),\n ];\n\n for (const cmd of commands) {\n if (this.commands.has(cmd.code)) {\n throw new Error(`Multiple commands with code ${cmd.code}`);\n }\n this.commands.set(cmd.code, cmd);\n }\n }\n\n getYielded(): Buffer[] {\n return this.yielded;\n }\n\n addKnownPreimage(preimage: Buffer): void {\n this.preimages.set(crypto.sha256(preimage).toString(\"hex\"), preimage);\n }\n\n addKnownList(elements: Buffer[]): void {\n for (const el of elements) {\n const preimage = Buffer.concat([Buffer.from([0]), el]);\n this.addKnownPreimage(preimage);\n }\n const mt = new Merkle(elements.map((el) => hashLeaf(el)));\n this.roots.set(mt.getRoot().toString(\"hex\"), mt);\n }\n\n addKnownMapping(mm: MerkleMap): void {\n this.addKnownList(mm.keys);\n this.addKnownList(mm.values);\n }\n\n execute(request: Buffer): Buffer {\n if (request.length == 0) {\n throw new Error(\"Unexpected empty command\");\n }\n\n const cmdCode = request[0];\n const cmd = this.commands.get(cmdCode);\n if (!cmd) {\n throw new Error(`Unexpected command code ${cmdCode}`);\n }\n\n return cmd.execute(request);\n }\n}\n", "import Transport from \"@ledgerhq/hw-transport\";\nimport { pathElementsToBuffer } from \"../bip32\";\nimport { PsbtV2 } from \"./psbtv2\";\nimport { MerkelizedPsbt } from \"./merkelizedPsbt\";\nimport { ClientCommandInterpreter } from \"./clientCommands\";\nimport { WalletPolicy } from \"./policy\";\nimport { createVarint } from \"../varint\";\nimport { hashLeaf, Merkle } from \"./merkle\";\n\nconst CLA_BTC = 0xe1;\nconst CLA_FRAMEWORK = 0xf8;\n\nenum BitcoinIns {\n GET_PUBKEY = 0x00,\n // GET_ADDRESS = 0x01, // Removed from app\n REGISTER_WALLET = 0x02,\n GET_WALLET_ADDRESS = 0x03,\n SIGN_PSBT = 0x04,\n GET_MASTER_FINGERPRINT = 0x05,\n}\n\nenum FrameworkIns {\n CONTINUE_INTERRUPTED = 0x01,\n}\n\n/**\n * This class encapsulates the APDU protocol documented at\n * https://github.com/LedgerHQ/app-bitcoin-new/blob/master/doc/bitcoin.md\n */\nexport class AppClient {\n transport: Transport;\n\n constructor(transport: Transport) {\n this.transport = transport;\n }\n\n private async makeRequest(\n ins: BitcoinIns,\n data: Buffer,\n cci?: ClientCommandInterpreter\n ): Promise {\n let response: Buffer = await this.transport.send(\n CLA_BTC,\n ins,\n 0,\n 0,\n data,\n [0x9000, 0xe000]\n );\n while (response.readUInt16BE(response.length - 2) === 0xe000) {\n if (!cci) {\n throw new Error(\"Unexpected SW_INTERRUPTED_EXECUTION\");\n }\n\n const hwRequest = response.slice(0, -2);\n const commandResponse = cci.execute(hwRequest);\n\n response = await this.transport.send(\n CLA_FRAMEWORK,\n FrameworkIns.CONTINUE_INTERRUPTED,\n 0,\n 0,\n commandResponse,\n [0x9000, 0xe000]\n );\n }\n return response.slice(0, -2); // drop the status word (can only be 0x9000 at this point)\n }\n\n async getExtendedPubkey(\n display: boolean,\n pathElements: number[]\n ): Promise {\n if (pathElements.length > 6) {\n throw new Error(\"Path too long. At most 6 levels allowed.\");\n }\n const response = await this.makeRequest(\n BitcoinIns.GET_PUBKEY,\n Buffer.concat([\n Buffer.from(display ? [1] : [0]),\n pathElementsToBuffer(pathElements),\n ])\n );\n return response.toString(\"ascii\");\n }\n\n async getWalletAddress(\n walletPolicy: WalletPolicy,\n walletHMAC: Buffer | null,\n change: number,\n addressIndex: number,\n display: boolean\n ): Promise {\n if (change !== 0 && change !== 1)\n throw new Error(\"Change can only be 0 or 1\");\n if (addressIndex < 0 || !Number.isInteger(addressIndex))\n throw new Error(\"Invalid address index\");\n\n if (walletHMAC != null && walletHMAC.length != 32) {\n throw new Error(\"Invalid HMAC length\");\n }\n\n const clientInterpreter = new ClientCommandInterpreter(() => {});\n clientInterpreter.addKnownList(\n walletPolicy.keys.map((k) => Buffer.from(k, \"ascii\"))\n );\n clientInterpreter.addKnownPreimage(walletPolicy.serialize());\n\n const addressIndexBuffer = Buffer.alloc(4);\n addressIndexBuffer.writeUInt32BE(addressIndex, 0);\n\n const response = await this.makeRequest(\n BitcoinIns.GET_WALLET_ADDRESS,\n Buffer.concat([\n Buffer.from(display ? [1] : [0]),\n walletPolicy.getWalletId(),\n walletHMAC || Buffer.alloc(32, 0),\n Buffer.from([change]),\n addressIndexBuffer,\n ]),\n clientInterpreter\n );\n\n return response.toString(\"ascii\");\n }\n\n async signPsbt(\n psbt: PsbtV2,\n walletPolicy: WalletPolicy,\n walletHMAC: Buffer | null,\n progressCallback: () => void\n ): Promise> {\n const merkelizedPsbt = new MerkelizedPsbt(psbt);\n\n if (walletHMAC != null && walletHMAC.length != 32) {\n throw new Error(\"Invalid HMAC length\");\n }\n\n const clientInterpreter = new ClientCommandInterpreter(progressCallback);\n\n // prepare ClientCommandInterpreter\n clientInterpreter.addKnownList(\n walletPolicy.keys.map((k) => Buffer.from(k, \"ascii\"))\n );\n clientInterpreter.addKnownPreimage(walletPolicy.serialize());\n\n clientInterpreter.addKnownMapping(merkelizedPsbt.globalMerkleMap);\n for (const map of merkelizedPsbt.inputMerkleMaps) {\n clientInterpreter.addKnownMapping(map);\n }\n for (const map of merkelizedPsbt.outputMerkleMaps) {\n clientInterpreter.addKnownMapping(map);\n }\n\n clientInterpreter.addKnownList(merkelizedPsbt.inputMapCommitments);\n const inputMapsRoot = new Merkle(\n merkelizedPsbt.inputMapCommitments.map((m) => hashLeaf(m))\n ).getRoot();\n clientInterpreter.addKnownList(merkelizedPsbt.outputMapCommitments);\n const outputMapsRoot = new Merkle(\n merkelizedPsbt.outputMapCommitments.map((m) => hashLeaf(m))\n ).getRoot();\n\n await this.makeRequest(\n BitcoinIns.SIGN_PSBT,\n Buffer.concat([\n merkelizedPsbt.getGlobalKeysValuesRoot(),\n createVarint(merkelizedPsbt.getGlobalInputCount()),\n inputMapsRoot,\n createVarint(merkelizedPsbt.getGlobalOutputCount()),\n outputMapsRoot,\n walletPolicy.getWalletId(),\n walletHMAC || Buffer.alloc(32, 0),\n ]),\n clientInterpreter\n );\n\n const yielded = clientInterpreter.getYielded();\n\n const ret: Map = new Map();\n for (const inputAndSig of yielded) {\n ret.set(inputAndSig[0], inputAndSig.slice(1));\n }\n return ret;\n }\n\n async getMasterFingerprint(): Promise {\n return this.makeRequest(BitcoinIns.GET_MASTER_FINGERPRINT, Buffer.from([]));\n }\n}\n", "import { log } from \"@ledgerhq/logs\";\nimport type { Transaction, TransactionInput, TransactionOutput } from \"./types\";\nimport { getVarint } from \"./varint\";\nimport { formatTransactionDebug } from \"./debug\";\nexport function splitTransaction(\n transactionHex: string,\n isSegwitSupported: boolean | null | undefined = false,\n hasTimestamp = false,\n hasExtraData = false,\n additionals: Array = []\n): Transaction {\n const inputs: TransactionInput[] = [];\n const outputs: TransactionOutput[] = [];\n let witness = false;\n let offset = 0;\n let timestamp = Buffer.alloc(0);\n let nExpiryHeight = Buffer.alloc(0);\n let nVersionGroupId = Buffer.alloc(0);\n let extraData = Buffer.alloc(0);\n let witnessScript, locktime;\n const isDecred = additionals.includes(\"decred\");\n const isZencash = additionals.includes(\"zencash\");\n const isZcash = additionals.includes(\"zcash\");\n const transaction = Buffer.from(transactionHex, \"hex\");\n const version = transaction.slice(offset, offset + 4);\n const overwinter =\n version.equals(Buffer.from([0x03, 0x00, 0x00, 0x80])) ||\n version.equals(Buffer.from([0x04, 0x00, 0x00, 0x80])) ||\n version.equals(Buffer.from([0x05, 0x00, 0x00, 0x80]));\n const isZcashv5 =\n isZcash && version.equals(Buffer.from([0x05, 0x00, 0x00, 0x80]));\n offset += 4;\n if (\n !hasTimestamp &&\n isSegwitSupported &&\n transaction[offset] === 0 &&\n transaction[offset + 1] !== 0 &&\n !isZencash\n ) {\n offset += 2;\n witness = true;\n }\n\n if (hasTimestamp) {\n timestamp = transaction.slice(offset, 4 + offset);\n offset += 4;\n }\n\n if (overwinter) {\n nVersionGroupId = transaction.slice(offset, 4 + offset);\n offset += 4;\n }\n if (isZcashv5) {\n locktime = transaction.slice(offset + 4, offset + 8);\n nExpiryHeight = transaction.slice(offset + 8, offset + 12);\n offset += 12;\n }\n let varint = getVarint(transaction, offset);\n const numberInputs = varint[0];\n offset += varint[1];\n\n for (let i = 0; i < numberInputs; i++) {\n const prevout = transaction.slice(offset, offset + 36);\n offset += 36;\n let script = Buffer.alloc(0);\n let tree = Buffer.alloc(0);\n\n //No script for decred, it has a witness\n if (!isDecred) {\n varint = getVarint(transaction, offset);\n offset += varint[1];\n script = transaction.slice(offset, offset + varint[0]);\n offset += varint[0];\n } else {\n //Tree field\n tree = transaction.slice(offset, offset + 1);\n offset += 1;\n }\n\n const sequence = transaction.slice(offset, offset + 4);\n offset += 4;\n inputs.push({\n prevout,\n script,\n sequence,\n tree,\n });\n }\n varint = getVarint(transaction, offset);\n const numberOutputs = varint[0];\n offset += varint[1];\n for (let i = 0; i < numberOutputs; i++) {\n const amount = transaction.slice(offset, offset + 8);\n offset += 8;\n\n if (isDecred) {\n //Script version\n offset += 2;\n }\n\n varint = getVarint(transaction, offset);\n offset += varint[1];\n const script = transaction.slice(offset, offset + varint[0]);\n offset += varint[0];\n outputs.push({\n amount,\n script,\n });\n }\n\n if (witness) {\n witnessScript = transaction.slice(offset, -4);\n locktime = transaction.slice(transaction.length - 4);\n } else if (!isZcashv5) {\n locktime = transaction.slice(offset, offset + 4);\n }\n\n offset += 4;\n\n if ((overwinter || isDecred) && !isZcashv5) {\n nExpiryHeight = transaction.slice(offset, offset + 4);\n offset += 4;\n }\n\n if (hasExtraData) {\n extraData = transaction.slice(offset);\n }\n\n //Get witnesses for Decred\n if (isDecred) {\n varint = getVarint(transaction, offset);\n offset += varint[1];\n\n if (varint[0] !== numberInputs) {\n throw new Error(\"splitTransaction: incoherent number of witnesses\");\n }\n\n for (let i = 0; i < numberInputs; i++) {\n //amount\n offset += 8;\n //block height\n offset += 4;\n //block index\n offset += 4;\n //Script size\n varint = getVarint(transaction, offset);\n offset += varint[1];\n const script = transaction.slice(offset, offset + varint[0]);\n offset += varint[0];\n inputs[i].script = script;\n }\n }\n\n const t: Transaction = {\n version,\n inputs,\n outputs,\n locktime,\n witness: witnessScript,\n timestamp,\n nVersionGroupId,\n nExpiryHeight,\n extraData,\n };\n log(\n \"btc\",\n `splitTransaction ${transactionHex}:\\n${formatTransactionDebug(t)}`\n );\n return t;\n}\n", "import type { Transaction } from \"./types\";\nexport function formatTransactionDebug(transaction: Transaction): string {\n let str = \"TX\";\n str += \" version \" + transaction.version.toString(\"hex\");\n\n if (transaction.locktime) {\n str += \" locktime \" + transaction.locktime.toString(\"hex\");\n }\n\n if (transaction.witness) {\n str += \" witness \" + transaction.witness.toString(\"hex\");\n }\n\n if (transaction.timestamp) {\n str += \" timestamp \" + transaction.timestamp.toString(\"hex\");\n }\n\n if (transaction.nVersionGroupId) {\n str += \" nVersionGroupId \" + transaction.nVersionGroupId.toString(\"hex\");\n }\n\n if (transaction.nExpiryHeight) {\n str += \" nExpiryHeight \" + transaction.nExpiryHeight.toString(\"hex\");\n }\n\n if (transaction.extraData) {\n str += \" extraData \" + transaction.extraData.toString(\"hex\");\n }\n\n transaction.inputs.forEach(({ prevout, script, sequence }, i) => {\n str += `\\ninput ${i}:`;\n str += ` prevout ${prevout.toString(\"hex\")}`;\n str += ` script ${script.toString(\"hex\")}`;\n str += ` sequence ${sequence.toString(\"hex\")}`;\n });\n (transaction.outputs || []).forEach(({ amount, script }, i) => {\n str += `\\noutput ${i}:`;\n str += ` amount ${amount.toString(\"hex\")}`;\n str += ` script ${script.toString(\"hex\")}`;\n });\n return str;\n}\nexport function displayTransactionDebug(transaction: Transaction): void {\n console.log(formatTransactionDebug(transaction));\n}\n", "import type Transport from \"@ledgerhq/hw-transport\";\nimport { getTrustedInput } from \"./getTrustedInput\";\nimport { startUntrustedHashTransactionInput } from \"./startUntrustedHashTransactionInput\";\nimport { getTrustedInputBIP143 } from \"./getTrustedInputBIP143\";\nimport { signTransaction } from \"./signTransaction\";\nimport { hashOutputFull } from \"./finalizeInput\";\nimport type { TransactionOutput, Transaction, TrustedInput } from \"./types\";\nimport {\n DEFAULT_LOCKTIME,\n DEFAULT_VERSION,\n DEFAULT_SEQUENCE,\n SIGHASH_ALL,\n} from \"./constants\";\nconst defaultArg = {\n lockTime: DEFAULT_LOCKTIME,\n sigHashType: SIGHASH_ALL,\n segwit: false,\n transactionVersion: DEFAULT_VERSION,\n};\n\n/**\n *\n */\nexport type SignP2SHTransactionArg = {\n inputs: Array<\n [Transaction, number, string | null | undefined, number | null | undefined]\n >;\n associatedKeysets: string[];\n outputScriptHex: string;\n lockTime?: number;\n sigHashType?: number;\n segwit?: boolean;\n transactionVersion?: number;\n};\nexport async function signP2SHTransaction(\n transport: Transport,\n arg: SignP2SHTransactionArg\n) {\n const {\n inputs,\n associatedKeysets,\n outputScriptHex,\n lockTime,\n sigHashType,\n segwit,\n transactionVersion,\n } = { ...defaultArg, ...arg };\n // Inputs are provided as arrays of [transaction, output_index, redeem script, optional sequence]\n // associatedKeysets are provided as arrays of [path]\n const nullScript = Buffer.alloc(0);\n const nullPrevout = Buffer.alloc(0);\n const defaultVersion = Buffer.alloc(4);\n defaultVersion.writeUInt32LE(transactionVersion, 0);\n const trustedInputs: TrustedInput[] = [];\n const regularOutputs: Array = [];\n const signatures: string[] = [];\n let firstRun = true;\n const resuming = false;\n const targetTransaction: Transaction = {\n inputs: [],\n version: defaultVersion,\n };\n const getTrustedInputCall = segwit ? getTrustedInputBIP143 : getTrustedInput;\n const outputScript = Buffer.from(outputScriptHex, \"hex\");\n\n for (const input of inputs) {\n if (!resuming) {\n const trustedInput = await getTrustedInputCall(\n transport,\n input[1],\n input[0]\n );\n const sequence = Buffer.alloc(4);\n sequence.writeUInt32LE(\n input.length >= 4 && typeof input[3] === \"number\"\n ? input[3]\n : DEFAULT_SEQUENCE,\n 0\n );\n trustedInputs.push({\n trustedInput: false,\n value: segwit\n ? Buffer.from(trustedInput, \"hex\")\n : Buffer.from(trustedInput, \"hex\").slice(4, 4 + 0x24),\n sequence,\n });\n }\n\n const { outputs } = input[0];\n const index = input[1];\n\n if (outputs && index <= outputs.length - 1) {\n regularOutputs.push(outputs[index]);\n }\n }\n\n // Pre-build the target transaction\n for (let i = 0; i < inputs.length; i++) {\n const sequence = Buffer.alloc(4);\n sequence.writeUInt32LE(\n inputs[i].length >= 4 && typeof inputs[i][3] === \"number\"\n ? (inputs[i][3] as number)\n : DEFAULT_SEQUENCE,\n 0\n );\n targetTransaction.inputs.push({\n script: nullScript,\n prevout: nullPrevout,\n sequence,\n });\n }\n\n if (segwit) {\n await startUntrustedHashTransactionInput(\n transport,\n true,\n targetTransaction,\n trustedInputs,\n true\n );\n await hashOutputFull(transport, outputScript);\n }\n\n for (let i = 0; i < inputs.length; i++) {\n const input = inputs[i];\n const script =\n inputs[i].length >= 3 && typeof input[2] === \"string\"\n ? Buffer.from(input[2], \"hex\")\n : regularOutputs[i].script;\n const pseudoTX = Object.assign({}, targetTransaction);\n const pseudoTrustedInputs = segwit ? [trustedInputs[i]] : trustedInputs;\n\n if (segwit) {\n pseudoTX.inputs = [{ ...pseudoTX.inputs[i], script }];\n } else {\n pseudoTX.inputs[i].script = script;\n }\n\n await startUntrustedHashTransactionInput(\n transport,\n !segwit && firstRun,\n pseudoTX,\n pseudoTrustedInputs,\n segwit\n );\n\n if (!segwit) {\n await hashOutputFull(transport, outputScript);\n }\n\n const signature = await signTransaction(\n transport,\n associatedKeysets[i],\n lockTime,\n sigHashType\n );\n signatures.push(\n segwit\n ? signature.toString(\"hex\")\n : signature.slice(0, signature.length - 1).toString(\"hex\")\n );\n targetTransaction.inputs[i].script = nullScript;\n\n if (firstRun) {\n firstRun = false;\n }\n }\n\n return signatures;\n}\n", "import type Transport from \"@ledgerhq/hw-transport\";\nimport bippath from \"bip32-path\";\nimport { MAX_SCRIPT_BLOCK } from \"./constants\";\nexport async function signMessage(\n transport: Transport,\n {\n path,\n messageHex,\n }: {\n path: string;\n messageHex: string;\n }\n): Promise<{\n v: number;\n r: string;\n s: string;\n}> {\n const paths = bippath.fromString(path).toPathArray();\n const message = Buffer.from(messageHex, \"hex\");\n let offset = 0;\n\n while (offset !== message.length) {\n const maxChunkSize =\n offset === 0\n ? MAX_SCRIPT_BLOCK - 1 - paths.length * 4 - 4\n : MAX_SCRIPT_BLOCK;\n const chunkSize =\n offset + maxChunkSize > message.length\n ? message.length - offset\n : maxChunkSize;\n const buffer = Buffer.alloc(\n offset === 0 ? 1 + paths.length * 4 + 2 + chunkSize : chunkSize\n );\n\n if (offset === 0) {\n buffer[0] = paths.length;\n paths.forEach((element, index) => {\n buffer.writeUInt32BE(element, 1 + 4 * index);\n });\n buffer.writeUInt16BE(message.length, 1 + 4 * paths.length);\n message.copy(\n buffer,\n 1 + 4 * paths.length + 2,\n offset,\n offset + chunkSize\n );\n } else {\n message.copy(buffer, 0, offset, offset + chunkSize);\n }\n\n await transport.send(0xe0, 0x4e, 0x00, offset === 0 ? 0x01 : 0x80, buffer);\n offset += chunkSize;\n }\n\n const res = await transport.send(0xe0, 0x4e, 0x80, 0x00, Buffer.from([0x00]));\n const v = res[0] - 0x30;\n let r: Buffer | string = res.slice(4, 4 + res[3]);\n\n if (r[0] === 0) {\n r = r.slice(1);\n }\n\n r = r.toString(\"hex\");\n offset = 4 + res[3] + 2;\n let s: Buffer | string = res.slice(offset, offset + res[offset - 1]);\n\n if (s[0] === 0) {\n s = s.slice(1);\n }\n\n s = s.toString(\"hex\");\n return {\n v,\n r,\n s,\n };\n}\n", "import type Transport from \"@ledgerhq/hw-transport\";\nimport BtcNew from \"./BtcNew\";\nimport BtcOld from \"./BtcOld\";\nimport type { CreateTransactionArg } from \"./createTransaction\";\nimport { getTrustedInput } from \"./getTrustedInput\";\nimport { getTrustedInputBIP143 } from \"./getTrustedInputBIP143\";\nimport type { AddressFormat } from \"./getWalletPublicKey\";\nimport { AppClient } from \"./newops/appClient\";\nimport { serializeTransactionOutputs } from \"./serializeTransaction\";\nimport type { SignP2SHTransactionArg } from \"./signP2SHTransaction\";\nimport { splitTransaction } from \"./splitTransaction\";\nimport type { Transaction } from \"./types\";\nexport type { AddressFormat };\nimport { signP2SHTransaction } from \"./signP2SHTransaction\";\nimport { signMessage } from \"./signMessage\";\nimport { checkIsBtcLegacy, getAppAndVersion } from \"./getAppAndVersion\";\n\n/**\n * Bitcoin API.\n *\n * @example\n * import Btc from \"@ledgerhq/hw-app-btc\";\n * const btc = new Btc({ transport, currency: \"bitcoin\" });\n */\n\nexport default class Btc {\n private _transport: Transport;\n private _impl: BtcOld | BtcNew;\n\n constructor({\n transport,\n scrambleKey = \"BTC\",\n currency = \"bitcoin\",\n }: {\n transport: Transport;\n scrambleKey?: string;\n currency?: string;\n }) {\n this._transport = transport;\n this._transport.decorateAppAPIMethods(\n this,\n [\n \"getWalletXpub\",\n \"getWalletPublicKey\",\n \"signP2SHTransaction\",\n \"signMessage\",\n \"createPaymentTransaction\",\n \"getTrustedInput\",\n \"getTrustedInputBIP143\",\n ],\n scrambleKey\n );\n // new APDU (nano app API) for bitcoin and old APDU for altcoin\n if (currency === \"bitcoin\" || currency === \"bitcoin_testnet\") {\n this._impl = new BtcNew(new AppClient(this._transport));\n } else {\n this._impl = new BtcOld(this._transport);\n }\n }\n\n /**\n * Get an XPUB with a ledger device\n * @param arg derivation parameter\n * - path: a BIP 32 path of the account level. e.g. `84'/0'/0'`\n * - xpubVersion: the XPUBVersion of the coin used. (use @ledgerhq/currencies if needed)\n * @returns XPUB of the account\n */\n getWalletXpub(arg: { path: string; xpubVersion: number }): Promise {\n return this.changeImplIfNecessary().then((impl) => {\n return impl.getWalletXpub(arg);\n });\n }\n\n /**\n * @param path a BIP 32 path\n * @param options an object with optional these fields:\n *\n * - verify (boolean) will ask user to confirm the address on the device\n *\n * - format (\"legacy\" | \"p2sh\" | \"bech32\" | \"bech32m\" | \"cashaddr\") to use different bitcoin address formatter.\n *\n * NB The normal usage is to use:\n *\n * - legacy format with 44' paths\n *\n * - p2sh format with 49' paths\n *\n * - bech32 format with 84' paths\n *\n * - cashaddr in case of Bitcoin Cash\n *\n * @example\n * btc.getWalletPublicKey(\"44'/0'/0'/0/0\").then(o => o.bitcoinAddress)\n * btc.getWalletPublicKey(\"49'/0'/0'/0/0\", { format: \"p2sh\" }).then(o => o.bitcoinAddress)\n */\n getWalletPublicKey(\n path: string,\n opts?: {\n verify?: boolean;\n format?: AddressFormat;\n }\n ): Promise<{\n publicKey: string;\n bitcoinAddress: string;\n chainCode: string;\n }> {\n let options;\n if (arguments.length > 2 || typeof opts === \"boolean\") {\n console.warn(\n \"btc.getWalletPublicKey deprecated signature used. Please switch to getWalletPublicKey(path, { format, verify })\"\n );\n options = {\n verify: !!opts,\n // eslint-disable-next-line prefer-rest-params\n format: arguments[2] ? \"p2sh\" : \"legacy\",\n };\n } else {\n options = opts || {};\n }\n return this.changeImplIfNecessary().then((impl) => {\n return impl.getWalletPublicKey(path, options);\n });\n }\n\n /**\n * You can sign a message according to the Bitcoin Signature format and retrieve v, r, s given the message and the BIP 32 path of the account to sign.\n * @example\n btc.signMessage(\"44'/60'/0'/0'/0\", Buffer.from(\"test\").toString(\"hex\")).then(function(result) {\n var v = result['v'] + 27 + 4;\n var signature = Buffer.from(v.toString(16) + result['r'] + result['s'], 'hex').toString('base64');\n console.log(\"Signature : \" + signature);\n }).catch(function(ex) {console.log(ex);});\n */\n signMessage(\n path: string,\n messageHex: string\n ): Promise<{\n v: number;\n r: string;\n s: string;\n }> {\n return signMessage(this._transport, {\n path,\n messageHex,\n });\n }\n\n /**\n * To sign a transaction involving standard (P2PKH) inputs, call createTransaction with the following parameters\n * @param inputs is an array of [ transaction, output_index, optional redeem script, optional sequence ] where\n *\n * * transaction is the previously computed transaction object for this UTXO\n * * output_index is the output in the transaction used as input for this UTXO (counting from 0)\n * * redeem script is the optional redeem script to use when consuming a Segregated Witness input\n * * sequence is the sequence number to use for this input (when using RBF), or non present\n * @param associatedKeysets is an array of BIP 32 paths pointing to the path to the private key used for each UTXO\n * @param changePath is an optional BIP 32 path pointing to the path to the public key used to compute the change address\n * @param outputScriptHex is the hexadecimal serialized outputs of the transaction to sign, including leading vararg voutCount\n * @param lockTime is the optional lockTime of the transaction to sign, or default (0)\n * @param sigHashType is the hash type of the transaction to sign, or default (all)\n * @param segwit is an optional boolean indicating wether to use segwit or not. This includes wrapped segwit.\n * @param initialTimestamp is an optional timestamp of the function call to use for coins that necessitate timestamps only, (not the one that the tx will include)\n * @param additionals list of additionnal options\n *\n * - \"bech32\" for spending native segwit outputs\n * - \"bech32m\" for spending segwit v1+ outputs\n * - \"abc\" for bch\n * - \"gold\" for btg\n * - \"bipxxx\" for using BIPxxx\n * - \"sapling\" to indicate a zec transaction is supporting sapling (to be set over block 419200)\n * @param expiryHeight is an optional Buffer for zec overwinter / sapling Txs\n * @param useTrustedInputForSegwit trust inputs for segwit transactions. If app version >= 1.4.0 this should be true.\n * @return the signed transaction ready to be broadcast\n * @example\n btc.createTransaction({\n inputs: [ [tx1, 1] ],\n associatedKeysets: [\"0'/0/0\"],\n outputScriptHex: \"01905f0100000000001976a91472a5d75c8d2d0565b656a5232703b167d50d5a2b88ac\"\n }).then(res => ...);\n */\n createPaymentTransaction(arg: CreateTransactionArg): Promise {\n if (arguments.length > 1) {\n throw new Error(\n \"@ledgerhq/hw-app-btc: createPaymentTransaction multi argument signature is deprecated. please switch to named parameters.\"\n );\n }\n return this.changeImplIfNecessary().then((impl) => {\n return impl.createPaymentTransaction(arg);\n });\n }\n\n /**\n * To obtain the signature of multisignature (P2SH) inputs, call signP2SHTransaction_async with the folowing parameters\n * @param inputs is an array of [ transaction, output_index, redeem script, optional sequence ] where\n * * transaction is the previously computed transaction object for this UTXO\n * * output_index is the output in the transaction used as input for this UTXO (counting from 0)\n * * redeem script is the mandatory redeem script associated to the current P2SH input\n * * sequence is the sequence number to use for this input (when using RBF), or non present\n * @param associatedKeysets is an array of BIP 32 paths pointing to the path to the private key used for each UTXO\n * @param outputScriptHex is the hexadecimal serialized outputs of the transaction to sign\n * @param lockTime is the optional lockTime of the transaction to sign, or default (0)\n * @param sigHashType is the hash type of the transaction to sign, or default (all)\n * @return the signed transaction ready to be broadcast\n * @example\n btc.signP2SHTransaction({\n inputs: [ [tx, 1, \"52210289b4a3ad52a919abd2bdd6920d8a6879b1e788c38aa76f0440a6f32a9f1996d02103a3393b1439d1693b063482c04bd40142db97bdf139eedd1b51ffb7070a37eac321030b9a409a1e476b0d5d17b804fcdb81cf30f9b99c6f3ae1178206e08bc500639853ae\"] ],\n associatedKeysets: [\"0'/0/0\"],\n outputScriptHex: \"01905f0100000000001976a91472a5d75c8d2d0565b656a5232703b167d50d5a2b88ac\"\n }).then(result => ...);\n */\n signP2SHTransaction(arg: SignP2SHTransactionArg): Promise {\n return signP2SHTransaction(this._transport, arg);\n }\n\n /**\n * For each UTXO included in your transaction, create a transaction object from the raw serialized version of the transaction used in this UTXO.\n * @example\n const tx1 = btc.splitTransaction(\"01000000014ea60aeac5252c14291d428915bd7ccd1bfc4af009f4d4dc57ae597ed0420b71010000008a47304402201f36a12c240dbf9e566bc04321050b1984cd6eaf6caee8f02bb0bfec08e3354b022012ee2aeadcbbfd1e92959f57c15c1c6debb757b798451b104665aa3010569b49014104090b15bde569386734abf2a2b99f9ca6a50656627e77de663ca7325702769986cf26cc9dd7fdea0af432c8e2becc867c932e1b9dd742f2a108997c2252e2bdebffffffff0281b72e00000000001976a91472a5d75c8d2d0565b656a5232703b167d50d5a2b88aca0860100000000001976a9144533f5fb9b4817f713c48f0bfe96b9f50c476c9b88ac00000000\");\n */\n splitTransaction(\n transactionHex: string,\n isSegwitSupported: boolean | null | undefined = false,\n hasTimestamp = false,\n hasExtraData = false,\n additionals: Array = []\n ): Transaction {\n return splitTransaction(\n transactionHex,\n isSegwitSupported,\n hasTimestamp,\n hasExtraData,\n additionals\n );\n }\n\n /**\n @example\n const tx1 = btc.splitTransaction(\"01000000014ea60aeac5252c14291d428915bd7ccd1bfc4af009f4d4dc57ae597ed0420b71010000008a47304402201f36a12c240dbf9e566bc04321050b1984cd6eaf6caee8f02bb0bfec08e3354b022012ee2aeadcbbfd1e92959f57c15c1c6debb757b798451b104665aa3010569b49014104090b15bde569386734abf2a2b99f9ca6a50656627e77de663ca7325702769986cf26cc9dd7fdea0af432c8e2becc867c932e1b9dd742f2a108997c2252e2bdebffffffff0281b72e00000000001976a91472a5d75c8d2d0565b656a5232703b167d50d5a2b88aca0860100000000001976a9144533f5fb9b4817f713c48f0bfe96b9f50c476c9b88ac00000000\");\n const outputScript = btc.serializeTransactionOutputs(tx1).toString('hex');\n */\n serializeTransactionOutputs(t: Transaction): Buffer {\n return serializeTransactionOutputs(t);\n }\n\n getTrustedInput(\n indexLookup: number,\n transaction: Transaction,\n additionals: Array = []\n ): Promise {\n return getTrustedInput(\n this._transport,\n indexLookup,\n transaction,\n additionals\n );\n }\n\n getTrustedInputBIP143(\n indexLookup: number,\n transaction: Transaction,\n additionals: Array = []\n ): string {\n return getTrustedInputBIP143(\n this._transport,\n indexLookup,\n transaction,\n additionals\n );\n }\n\n async changeImplIfNecessary(): Promise {\n const appAndVersion = await getAppAndVersion(this._transport);\n if (appAndVersion.name === \"Exchange\" && this._impl instanceof BtcNew) {\n const isBtcLegacy = await checkIsBtcLegacy(this._transport);\n if (isBtcLegacy) {\n this._impl = new BtcOld(this._transport);\n }\n }\n return this._impl;\n }\n}\n", "import Transport from '@ledgerhq/hw-transport'\n\n/**\n * Speculos TCP transport implementation\n *\n * @example\n * import TransportSpeculosHTTP from \"@casimir/speculos-transport\"\n * const transport = await TransportSpeculosHTTP.create()\n * const res = await transport.send(0xE0, 0x01, 0, 0)\n */\nexport default class TransportSpeculosHTTP extends Transport {\n baseURL: string\n eventStream!: EventSource\n\n constructor(baseURL: string) {\n super()\n this.baseURL = baseURL\n }\n\n static isSupported = (): Promise => Promise.resolve(true)\n // this transport is not discoverable\n static list = (): Promise => Promise.resolve([])\n static listen = () => ({\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n unsubscribe: () => {},\n })\n\n static open = async (\n baseURL?: string\n ): Promise => {\n try {\n baseURL = baseURL || 'http://127.0.0.1:5000'\n const transport = new TransportSpeculosHTTP(baseURL)\n const eventSource = new EventSource(`${baseURL}/events?stream=true`)\n // eventSource.addEventListener('open', (event: Event) => console.warn('Ledger', event.type), false)\n // eventSource.addEventListener('error', (event: Event) => console.warn('Ledger', event.type, eventSource.readyState), false)\n // eventSource.addEventListener('message', (message: MessageEvent) => console.warn('Ledger', message.type, message.data), false)\n transport.eventStream = eventSource\n return transport\n } catch (error) {\n console.log(error)\n throw error\n }\n }\n\n /**\n * Press and release button\n * buttons available: left, right, both\n * @param {*} but\n */\n button = async (but: string): Promise => {\n const action = { action: 'press-and-release' }\n await fetch(`${this.baseURL}/button/${but}`, { method: 'POST', body: JSON.stringify(action) })\n }\n\n async exchange(apdu: Buffer): Promise {\n const hex = apdu.toString('hex')\n const response = await fetch(`${this.baseURL}/apdu`, { method: 'POST', body: JSON.stringify({ data: hex }) })\n const json = await response.json()\n const { data } = json\n return Buffer.from(data, 'hex')\n }\n\n async close() {\n // close event stream\n this.eventStream.close()\n return Promise.resolve()\n }\n}\n", "import Transport from '@ledgerhq/hw-transport'\nimport TransportSpeculosHTTP from '@casimir/transport-speculos-http'\nimport TransportWebUSB from '@ledgerhq/hw-transport-webusb'\n\nexport default function useTransports() {\n\n async function createUSBTransport(): Promise {\n return await TransportWebUSB.create()\n }\n\n async function createSpeculosTransport(baseURL?: string): Promise {\n return await TransportSpeculosHTTP.open(baseURL)\n }\n\n return { createUSBTransport, createSpeculosTransport }\n}"], - "mappings": "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ACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,kEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,kEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,gEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,kEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,kEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,CACF,CACF,EACA,IAAK,CACH,IAAK,EACL,OAAQ,CACN,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,kEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,kEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,kEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,kEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,iEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,kEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CAC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", - "names": ["require_create_hash", "__commonJSMin", "exports", "module", "require_create_hmac", "__commonJSMin", "exports", "module", "require_crypto", "__commonJSMin", "exports", "createHash", "createHmac", "hash160", "buffer", "sha256Hash", "hmacSHA512", "key", "data", "require_safe_buffer", "__commonJSMin", "exports", "module", "buffer", "Buffer", "copyProps", "src", "dst", "key", "SafeBuffer", "arg", "encodingOrOffset", "length", "size", "fill", "encoding", "buf", "require_src", "__commonJSMin", "exports", "module", "_Buffer", "base", "ALPHABET", "BASE_MAP", "j", "i", "x", "xc", "BASE", "LEADER", "FACTOR", "iFACTOR", "encode", "source", "zeroes", "length", "pbegin", "pend", "size", "b58", "carry", "it1", "it2", "str", "decodeUnsafe", "psz", "b256", "it3", "it4", "vch", "decode", "string", "buffer", "require_bs58", "__commonJSMin", "exports", "module", "basex", "ALPHABET", "require_base", "__commonJSMin", "exports", "module", "base58", "Buffer", "checksumFn", "encode", "payload", "checksum", "decodeRaw", "buffer", "newChecksum", "decodeUnsafe", "string", "decode", "require_bs58check", "__commonJSMin", "exports", "module", "createHash", "bs58checkBase", "sha256x2", "buffer", "tmp", "require_file_uri_to_path", "__commonJSMin", "exports", "module", "sep", "fileUriToPath", "uri", "rest", "firstSlash", "host", "path", "require_bindings", "__commonJSMin", "exports", "module", "fs", "path", "fileURLToPath", "join", "dirname", "exists", "defaults", "bindings", "opts", "i", "requireFunc", "tries", "l", "n", "b", "err", "p", "e", "a", "calling_file", "origPST", "origSTL", "dummy", "fileName", "st", "fileSchema", "file", "dir", "prev", "require_native", "__commonJSMin", "exports", "module", "binding", "key", "require_bn", "__commonJSMin", "exports", "module", "assert", "val", "msg", "inherits", "ctor", "superCtor", "TempCtor", "BN", "number", "base", "endian", "Buffer", "num", "left", "right", "start", "i", "j", "w", "off", "parseHex4Bits", "string", "index", "c", "parseHexByte", "lowerBound", "r", "parseLength", "parseBase", "str", "end", "mul", "len", "limbLen", "limbPow", "total", "mod", "word", "pow", "dest", "size", "zeros", "groupSizes", "groupBases", "padding", "out", "carry", "groupSize", "groupBase", "ret", "length", "ArrayType", "byteLength", "reqLength", "littleEndian", "res", "q", "t", "hi", "toBitArray", "bit", "wbit", "b", "width", "a", "bytesNeeded", "bitsLeft", "cmp", "smallMulTo", "self", "lo", "k", "ncarry", "rword", "maxJ", "comb10MulTo", "o", "mid", "a0", "al0", "ah0", "a1", "al1", "ah1", "a2", "al2", "ah2", "a3", "al3", "ah3", "a4", "al4", "ah4", "a5", "al5", "ah5", "a6", "al6", "ah6", "a7", "al7", "ah7", "a8", "al8", "ah8", "a9", "al9", "ah9", "b0", "bl0", "bh0", "b1", "bl1", "bh1", "b2", "bl2", "bh2", "b3", "bl3", "bh3", "b4", "bl4", "bh4", "b5", "bl5", "bh5", "b6", "bl6", "bh6", "b7", "bl7", "bh7", "b8", "bl8", "bh8", "b9", "bl9", "bh9", "w0", "w1", "w2", "w3", "w4", "w5", "w6", "w7", "w8", "w9", "w10", "w11", "w12", "w13", "w14", "w15", "w16", "w17", "w18", "bigMulTo", "hncarry", "jumboMulTo", "fftm", "FFTM", "x", "y", "N", "l", "rb", "rbt", "rws", "iws", "rtws", "itws", "s", "rtwdf", "itwdf", "p", "rtwdf_", "itwdf_", "re", "ie", "ro", "io", "rx", "n", "m", "odd", "ws", "ph", "rwst", "iwst", "nrws", "nrwst", "niwst", "rmws", "bits", "carryMask", "newCarry", "hint", "extended", "h", "mask", "maskedWords", "shift", "mode", "bhi", "bhiBits", "diff", "qj", "positive", "div", "dm", "half", "r2", "acc", "A", "B", "C", "D", "g", "yp", "xp", "im", "jm", "x1", "x2", "delta", "negative", "Red", "ctx", "primes", "MPrime", "name", "tmp", "rlen", "input", "K256", "output", "outLen", "prev", "next", "P224", "P192", "P25519", "prime", "mod3", "one", "nOne", "lpow", "z", "inv", "windowSize", "wnd", "current", "currentLen", "Mont", "u", "require_bn", "__commonJSMin", "exports", "module", "assert", "val", "msg", "inherits", "ctor", "superCtor", "TempCtor", "BN", "number", "base", "endian", "Buffer", "num", "left", "right", "start", "i", "j", "w", "off", "parseHex4Bits", "string", "index", "c", "parseHexByte", "lowerBound", "r", "parseLength", "parseBase", "str", "end", "mul", "len", "limbLen", "limbPow", "total", "mod", "word", "pow", "dest", "size", "zeros", "groupSizes", "groupBases", "padding", "out", "carry", "groupSize", "groupBase", "ret", "length", "ArrayType", "byteLength", "reqLength", "littleEndian", "res", "q", "t", "hi", "toBitArray", "bit", "wbit", "b", "width", "a", "bytesNeeded", "bitsLeft", "cmp", "smallMulTo", "self", "lo", "k", "ncarry", "rword", "maxJ", "comb10MulTo", "o", "mid", "a0", "al0", "ah0", "a1", "al1", "ah1", "a2", "al2", "ah2", "a3", "al3", "ah3", "a4", "al4", "ah4", "a5", "al5", "ah5", "a6", "al6", "ah6", "a7", "al7", "ah7", "a8", "al8", "ah8", "a9", "al9", "ah9", "b0", "bl0", "bh0", "b1", "bl1", "bh1", "b2", "bl2", "bh2", "b3", "bl3", "bh3", "b4", "bl4", "bh4", "b5", "bl5", "bh5", "b6", "bl6", "bh6", "b7", "bl7", "bh7", "b8", "bl8", "bh8", "b9", "bl9", "bh9", "w0", "w1", "w2", "w3", "w4", "w5", "w6", "w7", "w8", "w9", "w10", "w11", "w12", "w13", "w14", "w15", "w16", "w17", "w18", "bigMulTo", "hncarry", "jumboMulTo", "fftm", "FFTM", "x", "y", "N", "l", "rb", "rbt", "rws", "iws", "rtws", "itws", "s", "rtwdf", "itwdf", "p", "rtwdf_", "itwdf_", "re", "ie", "ro", "io", "rx", "n", "m", "odd", "ws", "ph", "rwst", "iwst", "nrws", "nrwst", "niwst", "rmws", "bits", "carryMask", "newCarry", "hint", "extended", "h", "mask", "maskedWords", "shift", "mode", "bhi", "bhiBits", "diff", "qj", "positive", "div", "dm", "half", "r2", "acc", "A", "B", "C", "D", "g", "yp", "xp", "im", "jm", "x1", "x2", "delta", "negative", "Red", "ctx", "primes", "MPrime", "name", "tmp", "rlen", "input", "K256", "output", "outLen", "prev", "next", "P224", "P192", "P25519", "prime", "mod3", "one", "nOne", "lpow", "z", "inv", "windowSize", "wnd", "current", "currentLen", "Mont", "u", "require_minimalistic_assert", "__commonJSMin", "exports", "module", "assert", "val", "msg", "l", "require_utils", "__commonJSMin", "exports", "utils", "toArray", "msg", "enc", "res", "i", "c", "hi", "lo", "zero2", "word", "toHex", "arr", "require_utils", "__commonJSMin", "exports", "utils", "BN", "minAssert", "minUtils", "getNAF", "num", "w", "bits", "naf", "ws", "k", "i", "z", "mod", "getJSF", "k1", "k2", "jsf", "d1", "d2", "m8", "m14", "m24", "u1", "u2", "cachedProperty", "obj", "name", "computer", "key", "parseBytes", "bytes", "intFromLE", "require_brorand", "__commonJSMin", "exports", "module", "r", "len", "Rand", "rand", "n", "res", "i", "arr", "crypto", "require_base", "__commonJSMin", "exports", "module", "BN", "utils", "getNAF", "getJSF", "assert", "BaseCurve", "type", "conf", "adjustCount", "p", "k", "doubles", "naf", "I", "repr", "j", "nafW", "l", "a", "b", "i", "w", "nafPoints", "wnd", "acc", "z", "defW", "points", "coeffs", "len", "jacobianResult", "wndWidth", "max", "comb", "index", "jsf", "ja", "jb", "tmp", "zero", "BasePoint", "curve", "bytes", "enc", "res", "compact", "x", "power", "precomputed", "step", "dbl", "require_inherits_browser", "__commonJSMin", "exports", "module", "ctor", "superCtor", "TempCtor", "require_inherits", "__commonJSMin", "exports", "module", "util", "require_short", "__commonJSMin", "exports", "module", "utils", "BN", "inherits", "Base", "assert", "ShortCurve", "conf", "beta", "lambda", "betas", "lambdas", "basis", "vec", "num", "red", "tinv", "ntinv", "l1", "l2", "aprxSqrt", "u", "v", "x1", "y1", "x2", "y2", "a0", "b0", "a1", "b1", "a2", "b2", "prevR", "i", "r", "x", "q", "y", "len1", "len2", "k", "v1", "v2", "c1", "c2", "p1", "p2", "q1", "q2", "k1", "k2", "odd", "isOdd", "point", "ax", "rhs", "points", "coeffs", "jacobianResult", "npoints", "ncoeffs", "split", "p", "res", "j", "Point", "curve", "isRed", "obj", "pre", "endoMul", "obj2point", "c", "nx", "ny", "ys1", "a", "dyinv", "_precompute", "negate", "JPoint", "z", "zinv", "zinv2", "ay", "pz2", "z2", "u1", "u2", "s1", "s2", "h", "h2", "h3", "nz", "pow", "jx", "jy", "jz", "jz4", "jyd", "jx2", "jyd2", "jyd4", "t1", "t2", "dny", "xx", "yy", "yyyy", "s", "m", "t", "yyyy8", "b", "d", "e", "f", "c8", "delta", "gamma", "alpha", "beta4", "beta8", "ggamma8", "jy2", "jxd4", "jyd8", "zz", "mm", "ee", "yyu4", "kbase", "z3", "pz3", "zs", "rx", "xc", "require_mont", "__commonJSMin", "exports", "module", "BN", "inherits", "Base", "utils", "MontCurve", "conf", "point", "x", "x2", "rhs", "y", "Point", "curve", "z", "bytes", "enc", "obj", "a", "aa", "b", "bb", "c", "nx", "nz", "p", "diff", "d", "da", "cb", "k", "t", "bits", "i", "other", "require_edwards", "__commonJSMin", "exports", "module", "utils", "BN", "inherits", "Base", "assert", "EdwardsCurve", "conf", "num", "x", "y", "z", "t", "odd", "x2", "rhs", "lhs", "y2", "isOdd", "point", "Point", "curve", "obj", "a", "b", "c", "d", "e", "g", "f", "h", "nx", "ny", "nt", "nz", "j", "p", "tmp", "k", "k1", "k2", "zi", "other", "rx", "xc", "require_curve", "__commonJSMin", "exports", "curve", "require_utils", "__commonJSMin", "exports", "assert", "inherits", "isSurrogatePair", "msg", "i", "toArray", "enc", "res", "p", "c", "toHex", "zero2", "htonl", "w", "toHex32", "endian", "zero8", "word", "join32", "start", "end", "len", "k", "split32", "m", "rotr32", "b", "rotl32", "sum32", "a", "sum32_3", "sum32_4", "d", "sum32_5", "e", "sum64", "buf", "pos", "ah", "al", "bh", "bl", "lo", "hi", "sum64_hi", "sum64_lo", "sum64_4_hi", "ch", "cl", "dh", "dl", "carry", "sum64_4_lo", "sum64_5_hi", "eh", "el", "sum64_5_lo", "rotr64_hi", "num", "r", "rotr64_lo", "shr64_hi", "shr64_lo", "require_common", "__commonJSMin", "exports", "utils", "assert", "BlockHash", "msg", "enc", "r", "len", "bytes", "k", "res", "i", "t", "require_common", "__commonJSMin", "exports", "utils", "rotr32", "ft_1", "s", "x", "y", "z", "ch32", "p32", "maj32", "s0_256", "s1_256", "g0_256", "g1_256", "require__", "__commonJSMin", "exports", "module", "utils", "common", "shaCommon", "rotl32", "sum32", "sum32_5", "ft_1", "BlockHash", "sha1_K", "SHA1", "msg", "start", "W", "a", "b", "c", "d", "e", "s", "t", "enc", "require__", "__commonJSMin", "exports", "module", "utils", "common", "shaCommon", "assert", "sum32", "sum32_4", "sum32_5", "ch32", "maj32", "s0_256", "s1_256", "g0_256", "g1_256", "BlockHash", "sha256_K", "SHA256", "msg", "start", "W", "a", "b", "c", "d", "e", "f", "g", "h", "T1", "T2", "enc", "require__", "__commonJSMin", "exports", "module", "utils", "SHA256", "SHA224", "enc", "require__", "__commonJSMin", "exports", "module", "utils", "common", "assert", "rotr64_hi", "rotr64_lo", "shr64_hi", "shr64_lo", "sum64", "sum64_hi", "sum64_lo", "sum64_4_hi", "sum64_4_lo", "sum64_5_hi", "sum64_5_lo", "BlockHash", "sha512_K", "SHA512", "msg", "start", "W", "c0_hi", "g1_512_hi", "c0_lo", "g1_512_lo", "c1_hi", "c1_lo", "c2_hi", "g0_512_hi", "c2_lo", "g0_512_lo", "c3_hi", "c3_lo", "ah", "al", "bh", "bl", "ch", "cl", "dh", "dl", "eh", "el", "fh", "fl", "gh", "gl", "hh", "hl", "i", "s1_512_hi", "s1_512_lo", "ch64_hi", "ch64_lo", "c4_hi", "c4_lo", "T1_hi", "T1_lo", "s0_512_hi", "s0_512_lo", "maj64_hi", "maj64_lo", "T2_hi", "T2_lo", "enc", "xh", "xl", "yh", "yl", "zh", "r", "zl", "require__", "__commonJSMin", "exports", "module", "utils", "SHA512", "SHA384", "enc", "require_sha", "__commonJSMin", "exports", "require_ripemd", "__commonJSMin", "exports", "utils", "common", "rotl32", "sum32", "sum32_3", "sum32_4", "BlockHash", "RIPEMD160", "msg", "start", "A", "B", "C", "D", "E", "Ah", "Bh", "Ch", "Dh", "Eh", "j", "T", "f", "r", "K", "s", "rh", "Kh", "sh", "enc", "x", "y", "z", "require_hmac", "__commonJSMin", "exports", "module", "utils", "assert", "Hmac", "hash", "key", "enc", "i", "msg", "require_hash", "__commonJSMin", "exports", "hash", "require_secp256k1", "__commonJSMin", "exports", "module", "require_curves", "__commonJSMin", "exports", "curves", "hash", "curve", "utils", "assert", "PresetCurve", "options", "defineCurve", "name", "pre", "require_hmac_drbg", "__commonJSMin", "exports", "module", "hash", "utils", "assert", "HmacDRBG", "options", "entropy", "nonce", "pers", "seed", "i", "kmac", "entropyEnc", "add", "addEnc", "len", "enc", "temp", "res", "require_key", "__commonJSMin", "exports", "module", "BN", "utils", "assert", "KeyPair", "ec", "options", "pub", "enc", "priv", "compact", "key", "msg", "signature", "require_signature", "__commonJSMin", "exports", "module", "BN", "utils", "assert", "Signature", "options", "enc", "Position", "getLength", "buf", "p", "initial", "octetLen", "val", "i", "off", "rmPadding", "len", "data", "rlen", "r", "slen", "s", "constructLength", "arr", "octets", "backHalf", "res", "require_ec", "__commonJSMin", "exports", "module", "BN", "HmacDRBG", "utils", "curves", "rand", "assert", "KeyPair", "Signature", "EC", "options", "priv", "enc", "pub", "drbg", "bytes", "ns2", "msg", "truncOnly", "delta", "key", "bkey", "nonce", "ns1", "iter", "k", "kp", "kpX", "r", "s", "recoveryParam", "signature", "sinv", "u1", "u2", "j", "n", "e", "isYOdd", "isSecondKey", "rInv", "s1", "s2", "Q", "Qprime", "require_key", "__commonJSMin", "exports", "module", "utils", "assert", "parseBytes", "cachedProperty", "KeyPair", "eddsa", "params", "pub", "secret", "hash", "lastIx", "a", "message", "sig", "enc", "require_signature", "__commonJSMin", "exports", "module", "BN", "utils", "assert", "cachedProperty", "parseBytes", "Signature", "eddsa", "sig", "require_eddsa", "__commonJSMin", "exports", "module", "hash", "curves", "utils", "assert", "parseBytes", "KeyPair", "Signature", "EDDSA", "curve", "message", "secret", "key", "r", "R", "Rencoded", "s_", "S", "sig", "pub", "h", "SG", "RplusAh", "i", "point", "enc", "bytes", "lastIx", "normed", "xIsOdd", "y", "num", "val", "require_elliptic", "__commonJSMin", "exports", "elliptic", "require_rfc6979", "__commonJSMin", "exports", "module", "createHmac", "ONE1", "ZERO1", "deterministicGenerateK", "hash", "x", "checkSig", "isPrivate", "extraEntropy", "k", "v", "T", "require_js", "__commonJSMin", "exports", "module", "BN", "EC", "secp256k1", "deterministicGenerateK", "ZERO32", "EC_GROUP_ORDER", "EC_P", "n", "nDiv2", "G", "THROW_BAD_PRIVATE", "THROW_BAD_POINT", "THROW_BAD_TWEAK", "THROW_BAD_HASH", "THROW_BAD_SIGNATURE", "THROW_BAD_EXTRA_DATA", "isScalar", "x", "isOrderScalar", "isPoint", "p", "decodeFrom", "y", "__isPointCompressed", "isPointCompressed", "isPrivate", "isSignature", "value", "r", "s", "assumeCompression", "pubkey", "fromBuffer", "d", "toBuffer", "P", "getEncoded", "compressed", "pointAdd", "pA", "pB", "__compressed", "a", "b", "pp", "pointAddScalar", "tweak", "tt", "qq", "uu", "pointCompress", "pointFromScalar", "dd", "pointMultiply", "privateAdd", "dt", "privateSub", "sign", "hash", "__sign", "signWithEntropy", "addData", "e", "k", "kI", "Q", "buffer", "verify", "q", "signature", "strict", "sInv", "u1", "u2", "R", "require_tiny_secp256k1", "__commonJSMin", "exports", "module", "require_native", "__commonJSMin", "exports", "module", "types", "value", "typeName", "t", "require_errors", "__commonJSMin", "exports", "module", "native", "getTypeName", "fn", "getValueTypeName", "value", "getValue", "captureStackTrace", "tfJSON", "type", "tfErrorString", "valueTypeName", "valueJson", "TfTypeError", "tfPropertyErrorString", "label", "name", "description", "TfPropertyTypeError", "property", "tfCustomError", "expected", "actual", "tfSubError", "require_extra", "__commonJSMin", "exports", "module", "NATIVE", "ERRORS", "_Buffer", "value", "Hex", "_LengthN", "type", "length", "name", "Length", "_ArrayN", "_BufferN", "_HexN", "_StringN", "Range", "a", "b", "f", "_range", "strict", "INT53_MAX", "Finite", "Int8", "Int16", "Int32", "Int53", "UInt8", "UInt16", "UInt32", "UInt53", "types", "typeName", "t", "require_typeforce", "__commonJSMin", "exports", "module", "ERRORS", "NATIVE", "tfJSON", "TfTypeError", "TfPropertyTypeError", "tfSubError", "getValueTypeName", "TYPES", "type", "options", "compile", "_arrayOf", "array", "strict", "value", "i", "typeforce", "e", "str", "maybe", "_maybe", "propertyType", "propertyKeyType", "_map", "propertyName", "propertyValue", "uncompiled", "typePropertyName", "_object", "types", "_anyOf", "_allOf", "_quacksLike", "_tuple", "values", "expected", "_value", "actual", "surrogate", "typeName", "EXTRA", "require_wif", "__commonJSMin", "exports", "module", "bs58check", "decodeRaw", "buffer", "version", "encodeRaw", "privateKey", "compressed", "result", "decode", "string", "encode", "require_bip32", "__commonJSMin", "exports", "crypto", "bs58check", "ecc", "typeforce", "wif", "UINT256_TYPE", "NETWORK_TYPE", "BITCOIN", "HIGHEST_BIT", "UINT31_MAX", "BIP32Path", "value", "UInt31", "BIP32", "__D", "__Q", "chainCode", "network", "__DEPTH", "__INDEX", "__PARENT_FINGERPRINT", "fromPublicKeyLocal", "version", "buffer", "index", "isHardened", "data", "I", "IL", "IR", "hd", "Ki", "ki", "fromPrivateKeyLocal", "path", "splitPath", "prevHd", "indexStr", "hash", "lowR", "sig", "extraData", "counter", "signature", "fromBase58", "inString", "depth", "parentFingerprint", "k", "X", "fromPrivateKey", "privateKey", "fromPublicKey", "publicKey", "fromSeed", "seed", "require_src", "__commonJSMin", "exports", "bip32_1", "require_networks", "__commonJSMin", "exports", "require_script_number", "__commonJSMin", "exports", "decode", "buffer", "maxLength", "minimal", "length", "a", "b", "result", "i", "scriptNumSize", "encode", "_number", "value", "size", "negative", "require_types", "__commonJSMin", "exports", "typeforce", "UINT31_MAX", "UInt31", "value", "BIP32Path", "Signer", "obj", "SATOSHI_MAX", "Satoshi", "require_bip66", "__commonJSMin", "exports", "module", "Buffer", "check", "buffer", "lenR", "lenS", "decode", "encode", "r", "s", "signature", "require_script_signature", "__commonJSMin", "exports", "types", "bip66", "typeforce", "ZERO", "toDER", "x", "i", "fromDER", "buffer", "bstart", "decode", "hashType", "hashTypeMod", "decoded", "r", "encode", "signature", "hashTypeBuffer", "require_pushdata_bitcoin", "__commonJSMin", "exports", "module", "OPS", "encodingLength", "i", "encode", "buffer", "number", "offset", "size", "decode", "opcode", "require_map", "__commonJSMin", "exports", "module", "OPS", "map", "op", "code", "require_script", "__commonJSMin", "exports", "scriptNumber", "scriptSignature", "types", "bip66", "ecc", "pushdata", "typeforce", "REVERSE_OPS", "OP_INT_BASE", "isOPInt", "value", "isPushOnlyChunk", "isPushOnly", "asMinimalOP", "buffer", "chunksIsBuffer", "buf", "chunksIsArray", "singleChunkIsBuffer", "compile", "chunks", "bufferSize", "accum", "chunk", "offset", "opcode", "decompile", "i", "d", "data", "op", "toASM", "fromASM", "asm", "chunkStr", "toStack", "isCanonicalPubKey", "isDefinedHashType", "hashType", "hashTypeMod", "isCanonicalScriptSignature", "require_lazy", "__commonJSMin", "exports", "prop", "object", "name", "f", "_value", "value", "require_embed", "__commonJSMin", "exports", "networks_1", "bscript", "lazy", "typef", "OPS", "stacksEqual", "a", "b", "x", "i", "p2data", "opts", "o", "chunks", "require_p2ms", "__commonJSMin", "exports", "networks_1", "bscript", "lazy", "OPS", "typef", "ecc", "OP_INT_BASE", "stacksEqual", "a", "b", "x", "i", "p2ms", "opts", "isAcceptableSignature", "o", "chunks", "decoded", "decode", "output", "require_p2pk", "__commonJSMin", "exports", "networks_1", "bscript", "lazy", "typef", "OPS", "ecc", "p2pk", "a", "opts", "_chunks", "o", "require_crypto", "__commonJSMin", "exports", "createHash", "ripemd160", "buffer", "sha1", "sha256", "hash160", "hash256", "require_p2pkh", "__commonJSMin", "exports", "bcrypto", "networks_1", "bscript", "lazy", "typef", "OPS", "ecc", "bs58check", "p2pkh", "a", "opts", "_address", "payload", "version", "hash", "_chunks", "network", "o", "hash2", "pkh", "chunks", "require_p2sh", "__commonJSMin", "exports", "bcrypto", "networks_1", "bscript", "lazy", "typef", "OPS", "bs58check", "stacksEqual", "a", "b", "x", "i", "p2sh", "opts", "network", "o", "_address", "payload", "version", "hash", "_chunks", "_redeem", "chunks", "nameParts", "hash2", "checkRedeem", "redeem", "decompile", "hasInput", "hasWitness", "richunks", "require_bech32", "__commonJSMin", "exports", "module", "ALPHABET", "ALPHABET_MAP", "z", "x", "polymodStep", "pre", "b", "prefixChk", "prefix", "chk", "i", "c", "v", "encode", "words", "LIMIT", "result", "__decode", "str", "lowered", "uppered", "split", "wordChars", "decodeUnsafe", "res", "decode", "convert", "data", "inBits", "outBits", "pad", "value", "bits", "maxV", "toWordsUnsafe", "bytes", "toWords", "fromWordsUnsafe", "fromWords", "require_p2wpkh", "__commonJSMin", "exports", "bcrypto", "networks_1", "bscript", "lazy", "typef", "OPS", "ecc", "bech32", "EMPTY_BUFFER", "p2wpkh", "a", "opts", "_address", "result", "version", "data", "network", "o", "words", "hash", "pkh", "require_p2wsh", "__commonJSMin", "exports", "bcrypto", "networks_1", "bscript", "lazy", "typef", "OPS", "ecc", "bech32", "EMPTY_BUFFER", "stacksEqual", "a", "b", "x", "i", "chunkHasUncompressedPubkey", "chunk", "p2wsh", "opts", "_address", "result", "version", "data", "_rchunks", "network", "o", "words", "stack", "nameParts", "hash", "hash2", "wScript", "require_payments", "__commonJSMin", "exports", "embed_1", "p2ms_1", "p2pk_1", "p2pkh_1", "p2sh_1", "p2wpkh_1", "p2wsh_1", "require_address", "__commonJSMin", "exports", "networks", "payments", "bscript", "types", "bech32", "bs58check", "typeforce", "fromBase58Check", "address", "payload", "version", "hash", "fromBech32", "result", "data", "toBase58Check", "toBech32", "prefix", "words", "fromOutputScript", "output", "network", "toOutputScript", "decodeBase58", "decodeBech32", "require_randombytes", "__commonJSMin", "exports", "module", "require_ecpair", "__commonJSMin", "exports", "NETWORKS", "types", "ecc", "randomBytes", "typeforce", "wif", "isOptions", "ECPair", "__D", "__Q", "options", "hash", "lowR", "sig", "extraData", "counter", "signature", "fromPrivateKey", "buffer", "fromPublicKey", "fromWIF", "wifString", "network", "decoded", "version", "x", "makeRandom", "rng", "d", "require_varuint_bitcoin", "__commonJSMin", "exports", "module", "Buffer", "MAX_SAFE_INTEGER", "checkUInt53", "n", "encode", "number", "buffer", "offset", "encodingLength", "decode", "first", "lo", "hi", "require_bufferutils", "__commonJSMin", "exports", "types", "typeforce", "varuint", "verifuint", "value", "max", "readUInt64LE", "buffer", "offset", "a", "b", "writeUInt64LE", "reverseBuffer", "j", "tmp", "i", "cloneBuffer", "clone", "BufferWriter", "slice", "vector", "buf", "BufferReader", "result", "vi", "n", "count", "require_transaction", "__commonJSMin", "exports", "bufferutils_1", "bcrypto", "bscript", "script_1", "types", "typeforce", "varuint", "varSliceSize", "someScript", "length", "vectorSize", "someVector", "sum", "witness", "EMPTY_SCRIPT", "EMPTY_WITNESS", "ZERO", "ONE", "VALUE_UINT64_MAX", "BLANK_OUTPUT", "isOutput", "out", "Transaction", "buffer", "_NO_STRICT", "bufferReader", "tx", "marker", "flag", "hasWitnesses", "vinLen", "i", "voutLen", "hex", "hash", "index", "sequence", "scriptSig", "scriptPubKey", "value", "x", "base", "total", "_ALLOW_WITNESS", "input", "output", "newTx", "txIn", "txOut", "inIndex", "prevOutScript", "hashType", "ourScript", "txTmp", "y", "tbuffer", "bufferWriter", "hashOutputs", "hashPrevouts", "hashSequence", "txOutsSize", "forWitness", "initialOffset", "require_fastRoot", "__commonJSMin", "exports", "module", "values", "digestFn", "length", "results", "j", "i", "left", "right", "data", "require_block", "__commonJSMin", "exports", "bufferutils_1", "bcrypto", "transaction_1", "types", "fastMerkleRoot", "typeforce", "varuint", "errorMerkleNoTxes", "errorWitnessNotSegwit", "Block", "buffer", "bufferReader", "block", "readTransaction", "tx", "nTransactions", "i", "witnessCommit", "hex", "bits", "exponent", "mantissa", "target", "transactions", "forWitness", "txesHaveWitnessCommit", "hashes", "transaction", "rootHash", "witnessCommits", "out", "result", "anyTxHasWitness", "base", "total", "headersOnly", "allowWitness", "a", "x", "date", "bufferWriter", "txSize", "hasWitnessCommit", "hash", "actualMerkleRoot", "actualWitnessCommit", "input", "require_typeFields", "__commonJSMin", "exports", "GlobalTypes", "InputTypes", "OutputTypes", "require_globalXpub", "__commonJSMin", "exports", "typeFields_1", "range", "n", "decode", "keyVal", "extendedPubkey", "data", "i", "val", "isHard", "idx", "encode", "head", "key", "splitPath", "value", "offset", "level", "num", "check", "epk", "mfp", "p", "canAddToArray", "array", "item", "dupeSet", "dupeString", "v", "require_unsignedTx", "__commonJSMin", "exports", "typeFields_1", "encode", "data", "require_finalScriptSig", "__commonJSMin", "exports", "typeFields_1", "decode", "keyVal", "encode", "data", "check", "canAdd", "currentData", "newData", "require_finalScriptWitness", "__commonJSMin", "exports", "typeFields_1", "decode", "keyVal", "encode", "data", "check", "canAdd", "currentData", "newData", "require_nonWitnessUtxo", "__commonJSMin", "exports", "typeFields_1", "decode", "keyVal", "encode", "data", "check", "canAdd", "currentData", "newData", "require_partialSig", "__commonJSMin", "exports", "typeFields_1", "decode", "keyVal", "encode", "pSig", "head", "check", "data", "isDerSigWithSighash", "buf", "rLen", "sLen", "canAddToArray", "array", "item", "dupeSet", "dupeString", "v", "require_porCommitment", "__commonJSMin", "exports", "typeFields_1", "decode", "keyVal", "encode", "data", "check", "canAdd", "currentData", "newData", "require_sighashType", "__commonJSMin", "exports", "typeFields_1", "decode", "keyVal", "encode", "data", "key", "value", "check", "canAdd", "currentData", "newData", "require_tapKeySig", "__commonJSMin", "exports", "typeFields_1", "decode", "keyVal", "check", "encode", "value", "data", "canAdd", "currentData", "newData", "require_tapLeafScript", "__commonJSMin", "exports", "typeFields_1", "decode", "keyVal", "leafVersion", "script", "encode", "tScript", "head", "verBuf", "check", "data", "canAddToArray", "array", "item", "dupeSet", "dupeString", "v", "require_tapMerkleRoot", "__commonJSMin", "exports", "typeFields_1", "decode", "keyVal", "check", "encode", "value", "data", "canAdd", "currentData", "newData", "require_tapScriptSig", "__commonJSMin", "exports", "typeFields_1", "decode", "keyVal", "pubkey", "leafHash", "encode", "tSig", "head", "check", "data", "canAddToArray", "array", "item", "dupeSet", "dupeString", "v", "require_varint", "__commonJSMin", "exports", "MAX_SAFE_INTEGER", "checkUInt53", "n", "encode", "_number", "buffer", "offset", "encodingLength", "decode", "first", "lo", "require_tools", "__commonJSMin", "exports", "varuint", "n", "reverseBuffer", "buffer", "j", "tmp", "i", "keyValsToBuffer", "keyVals", "buffers", "keyValToBuffer", "keyVal", "keyLen", "valLen", "keyVarIntLen", "valVarIntLen", "verifuint", "value", "max", "readUInt64LE", "offset", "a", "b", "writeUInt64LE", "require_witnessUtxo", "__commonJSMin", "exports", "typeFields_1", "tools_1", "varuint", "decode", "keyVal", "value", "_offset", "scriptLen", "script", "encode", "data", "varintLen", "result", "check", "canAdd", "currentData", "newData", "require_tapTree", "__commonJSMin", "exports", "typeFields_1", "varuint", "decode", "keyVal", "_offset", "data", "depth", "leafVersion", "scriptLen", "encode", "tree", "key", "bufs", "tapLeaf", "check", "canAdd", "currentData", "newData", "require_bip32Derivation", "__commonJSMin", "exports", "range", "n", "isValidDERKey", "pubkey", "makeConverter", "TYPE_BYTE", "isValidPubkey", "decode", "keyVal", "data", "i", "val", "isHard", "idx", "encode", "head", "key", "splitPath", "value", "offset", "level", "num", "expected", "check", "canAddToArray", "array", "item", "dupeSet", "dupeString", "v", "require_checkPubkey", "__commonJSMin", "exports", "makeChecker", "pubkeyTypes", "checkPubkey", "keyVal", "pubkey", "require_redeemScript", "__commonJSMin", "exports", "makeConverter", "TYPE_BYTE", "decode", "keyVal", "encode", "data", "expected", "check", "canAdd", "currentData", "newData", "require_tapBip32Derivation", "__commonJSMin", "exports", "varuint", "bip32Derivation", "isValidBIP340Key", "pubkey", "makeConverter", "TYPE_BYTE", "parent", "decode", "keyVal", "nHashes", "nHashesLen", "base", "leafHashes", "i", "_offset", "encode", "data", "nHashesBuf", "value", "expected", "check", "leafHash", "require_tapInternalKey", "__commonJSMin", "exports", "makeConverter", "TYPE_BYTE", "decode", "keyVal", "encode", "value", "expected", "check", "data", "canAdd", "currentData", "newData", "require_witnessScript", "__commonJSMin", "exports", "makeConverter", "TYPE_BYTE", "decode", "keyVal", "encode", "data", "expected", "check", "canAdd", "currentData", "newData", "require_converter", "__commonJSMin", "exports", "typeFields_1", "globalXpub", "unsignedTx", "finalScriptSig", "finalScriptWitness", "nonWitnessUtxo", "partialSig", "porCommitment", "sighashType", "tapKeySig", "tapLeafScript", "tapMerkleRoot", "tapScriptSig", "witnessUtxo", "tapTree", "bip32Derivation", "checkPubkey", "redeemScript", "tapBip32Derivation", "tapInternalKey", "witnessScript", "globals", "inputs", "outputs", "require_fromBuffer", "__commonJSMin", "exports", "convert", "tools_1", "varuint", "typeFields_1", "psbtFromBuffer", "buffer", "txGetter", "offset", "varSlice", "keyLen", "key", "readUInt32BE", "num", "readUInt8", "getKeyValue", "value", "checkEndOfKeyValPairs", "isEnd", "globalMapKeyVals", "globalKeyIndex", "keyVal", "hexKey", "unsignedTxMaps", "unsignedTx", "inputCount", "outputCount", "inputKeyVals", "outputKeyVals", "index", "inputKeyIndex", "input", "outputKeyIndex", "output", "psbtFromKeyVals", "checkKeyBuffer", "type", "keyBuf", "keyNum", "globalMap", "txCount", "inputs", "outputs", "require_toBuffer", "__commonJSMin", "exports", "convert", "tools_1", "psbtToBuffer", "globalMap", "inputs", "outputs", "globalKeyVals", "inputKeyVals", "outputKeyVals", "psbtToKeyVals", "globalBuffer", "keyValsOrEmptyToBuffer", "keyVals", "inputBuffers", "outputBuffers", "header", "sortKeyVals", "a", "b", "keyValsFromMap", "keyValMap", "converterFactory", "keyHexSet", "result", "key", "value", "converter", "encodedKeyVals", "kv", "hex", "otherKeyVals", "keyVal", "i", "o", "require_parser", "__commonJSMin", "exports", "__export", "m", "p", "require_combiner", "__commonJSMin", "exports", "parser_1", "combine", "psbts", "self", "selfKeyVals", "others", "selfTx", "getTx", "selfGlobalSet", "getKeySet", "selfInputSets", "selfOutputSets", "other", "otherTx", "otherKeyVals", "keyPusher", "inputSet", "idx", "outputSet", "selfSet", "key", "newKv", "kv", "psbt", "keyVals", "set", "keyVal", "hex", "require_utils", "__commonJSMin", "exports", "converter", "checkForInput", "inputs", "inputIndex", "input", "checkForOutput", "outputs", "outputIndex", "output", "checkHasKey", "checkKeyVal", "keyVals", "enumLength", "kv", "getEnumLength", "myenum", "count", "val", "inputCheckUncleanFinalized", "result", "needScriptSig", "needWitnessScript", "scriptSigOK", "witnessScriptOK", "hasOneFinal", "throwForUpdateMaker", "typeName", "name", "expected", "data", "updateMaker", "updateData", "mainData", "canAdd", "canAddToArray", "check", "isArray", "arr", "dupeCheckSet", "v", "addInputAttributes", "index", "addOutputAttributes", "defaultVersionSetter", "version", "txBuf", "defaultLocktimeSetter", "locktime", "require_psbt", "__commonJSMin", "exports", "combiner_1", "parser_1", "typeFields_1", "utils_1", "Psbt", "tx", "data", "txFromBuffer", "buffer", "results", "psbt", "updateData", "inputIndex", "input", "outputIndex", "output", "keyVal", "inputData", "addKeyVals", "outputData", "key", "those", "result", "require_psbt", "__commonJSMin", "exports", "bip174_1", "varuint", "utils_1", "address_1", "bufferutils_1", "crypto_1", "ecpair_1", "networks_1", "payments", "bscript", "transaction_1", "DEFAULT_OPTS", "Psbt", "opts", "data", "PsbtTransaction", "dpew", "obj", "attr", "enumerable", "writable", "buffer", "psbtBase", "transactionFromBuffer", "psbt", "checkTxForDupeIns", "version", "locktime", "input", "output", "address", "those", "o", "res", "satoshiPerByte", "check32Bit", "checkInputsForPartialSig", "c", "inputIndex", "sequence", "inputDatas", "inputData", "checkInvalidP2WSH", "txIn", "checkTxInputCache", "addNonWitnessTxCache", "outputDatas", "outputData", "network", "script", "disableFeeCheck", "isFinalized", "checkFees", "tx", "inputFinalizeGetAmts", "getTxCacheValue", "range", "idx", "finalScriptsFunc", "getFinalScripts", "isP2SH", "isP2WSH", "isSegwit", "getScriptFromInput", "checkPartialSigSighashes", "finalScriptSig", "finalScriptWitness", "getScriptFromUtxo", "result", "getMeaningfulScript", "redeemFromFinalScriptSig", "redeemFromFinalWitnessScript", "type", "mainType", "classifyScript", "pubkey", "pubkeyInInput", "root", "derivationIsMine", "bip32DerivationIsMine", "outputIndex", "pubkeyInOutput", "final", "partialSig", "mySigs", "sig", "results", "hashCache", "scriptCache", "sighashCache", "pSig", "hash", "getHashForSig", "checkScriptForPubkey", "keypair", "hdKeyPair", "sighashTypes", "v", "resolve", "reject", "promises", "i", "getSignersFromHD", "signer", "keyPair", "sighashType", "getHashAndSighashType", "signature", "checkCache", "updateData", "keyVal", "checkTxEmpty", "canFinalize", "scriptType", "hasSigs", "p2ms", "cache", "neededSigs", "pubkeys", "sigs", "pkey", "isPaymentFactory", "payment", "isP2MS", "isP2PK", "isP2PKH", "isP2WPKH", "isP2WSHScript", "isP2SHScript", "d", "num", "feeRate", "vsize", "satoshis", "inputs", "action", "throws", "pSigs", "getPsigsFromInputFinalScripts", "hashType", "whitelist", "pubkeyInScript", "key", "scriptCheckerFactory", "paymentScriptName", "scriptPubKey", "redeemScript", "ioType", "redeemScriptOutput", "checkRedeemScript", "checkWitnessScript", "name", "mustFinalize", "prepareFinalScripts", "getPayment", "p2wsh", "p2sh", "witnessStackToScriptWitness", "forValidate", "unsignedTx", "str", "sighashTypeToString", "prevout", "nonWitnessUtxoTx", "nonWitnessUtxoTxFromCache", "prevoutHash", "utxoHash", "prevoutIndex", "meaningfulScript", "signingScript", "getSortedSigs", "scriptItems", "witnessItems", "item", "myDerivations", "bipDv", "node", "pk", "ps", "scriptWitnessToWitnessStack", "offset", "readSlice", "n", "readVarInt", "vi", "readVarSlice", "readVector", "count", "vector", "text", "witness", "writeSlice", "slice", "writeVarInt", "currentLen", "varintLen", "writeVarSlice", "writeVector", "self", "selfIndex", "buf", "txCache", "newBuf", "inputAmount", "nwTx", "vout", "out", "outputAmount", "total", "fee", "bytes", "finalScript", "decomp", "lastItem", "isPubkeyLike", "isSigLike", "index", "witnessScript", "isP2SHP2WSH", "pubkeyHash", "decompiled", "element", "require_input", "__commonJSMin", "exports", "bscript", "script_1", "partialSignature", "value", "check", "script", "allowIncomplete", "chunks", "require_output", "__commonJSMin", "exports", "bscript", "script_1", "types", "OP_INT_BASE", "check", "script", "allowIncomplete", "chunks", "m", "n", "require_multisig", "__commonJSMin", "exports", "input", "output", "require_nulldata", "__commonJSMin", "exports", "bscript", "OPS", "check", "script", "buffer", "output", "require_input", "__commonJSMin", "exports", "bscript", "check", "script", "chunks", "require_output", "__commonJSMin", "exports", "bscript", "script_1", "check", "script", "chunks", "require_pubkey", "__commonJSMin", "exports", "input", "output", "require_input", "__commonJSMin", "exports", "bscript", "check", "script", "chunks", "require_output", "__commonJSMin", "exports", "bscript", "script_1", "check", "script", "buffer", "require_pubkeyhash", "__commonJSMin", "exports", "input", "output", "require_output", "__commonJSMin", "exports", "bscript", "script_1", "check", "script", "buffer", "require_output", "__commonJSMin", "exports", "bscript", "script_1", "check", "script", "buffer", "require_input", "__commonJSMin", "exports", "bscript", "p2ms", "p2pk", "p2pkh", "p2wpkho", "p2wsho", "check", "script", "allowIncomplete", "chunks", "lastChunk", "scriptSigChunks", "redeemScriptChunks", "require_output", "__commonJSMin", "exports", "bscript", "script_1", "check", "script", "buffer", "require_scripthash", "__commonJSMin", "exports", "input", "output", "require_output", "__commonJSMin", "exports", "bscript", "script_1", "types", "typeforce", "HEADER", "check", "script", "buffer", "encode", "commitment", "decode", "require_witnesscommitment", "__commonJSMin", "exports", "output", "require_input", "__commonJSMin", "exports", "bscript", "isCompressedCanonicalPubKey", "pubKey", "check", "script", "chunks", "require_witnesspubkeyhash", "__commonJSMin", "exports", "input", "output", "require_input", "__commonJSMin", "exports", "bscript", "typeforce", "p2ms", "p2pk", "p2pkh", "check", "chunks", "allowIncomplete", "witnessScript", "witnessScriptChunks", "witnessRawScriptSig", "require_witnessscripthash", "__commonJSMin", "exports", "input", "output", "require_classify", "__commonJSMin", "exports", "script_1", "multisig", "nullData", "pubKey", "pubKeyHash", "scriptHash", "witnessCommitment", "witnessPubKeyHash", "witnessScriptHash", "types", "classifyOutput", "script", "chunks", "classifyInput", "allowIncomplete", "classifyWitness", "require_transaction_builder", "__commonJSMin", "exports", "baddress", "bufferutils_1", "classify", "bcrypto", "ECPair", "networks", "payments", "bscript", "script_1", "transaction_1", "types", "typeforce", "SCRIPT_TYPES", "PREVOUT_TYPES", "tfMessage", "type", "value", "message", "txIsString", "tx", "txIsTransaction", "TransactionBuilder", "network", "maximumFeeRate", "transaction", "txb", "txOut", "txIn", "input", "i", "fixMultisigOrder", "setting", "locktime", "s", "version", "txHash", "vout", "sequence", "prevOutScript", "scriptPubKey", "signParams", "keyPair", "redeemScript", "hashType", "witnessValue", "witnessScript", "trySign", "getSigningData", "options", "prevTxOut", "expandInput", "prevOutType", "expanded", "expandOutput", "vin", "allowIncomplete", "result", "build", "signature", "signatureHashType", "signingHashType", "nInputs", "nOutputs", "hashTypeMod", "bytes", "incoming", "a", "x", "outgoing", "scriptSig", "witnessStack", "ssType", "wsType", "output", "pubkey", "m", "pubkeys", "signatures", "redeem", "outputType", "unmatched", "pubKey", "match", "parsed", "hash", "script", "ourPubKey", "pkh1", "pkh2", "wpkh1", "wpkh2", "p2pk", "p2ms", "prepareInput", "p2wsh", "p2wshAlt", "p2sh", "p2shAlt", "signScript", "validate", "canSign", "buffer", "checkSignArgs", "inputs", "posType", "signatureHash", "useLowR", "signed", "needsOutputs", "prepared", "require_src", "__commonJSMin", "exports", "bip32", "address", "crypto", "ECPair", "networks", "payments", "script", "block_1", "psbt_1", "script_1", "transaction_1", "transaction_builder_1", "require_bip32_path", "__commonJSMin", "exports", "module", "BIPPath", "path", "i", "text", "reqRoot", "ret", "tmp", "noRoot", "oldStyle", "require_stream", "__commonJSMin", "exports", "module", "require_buffer_list", "__commonJSMin", "exports", "module", "ownKeys", "object", "enumerableOnly", "keys", "symbols", "sym", "_objectSpread", "target", "i", "source", "key", "_defineProperty", "obj", "value", "_classCallCheck", "instance", "Constructor", "_defineProperties", "props", "descriptor", "_createClass", "protoProps", "staticProps", "_require", "Buffer", "_require2", "inspect", "custom", "copyBuffer", "src", "offset", "BufferList", "v", "entry", "ret", "s", "p", "n", "hasStrings", "c", "str", "nb", "buf", "_", "options", "require_destroy", "__commonJSMin", "exports", "module", "destroy", "err", "cb", "_this", "readableDestroyed", "writableDestroyed", "emitErrorNT", "emitCloseNT", "emitErrorAndCloseNT", "self", "undestroy", "errorOrDestroy", "stream", "rState", "wState", "require_errors", "__commonJSMin", "exports", "module", "codes", "createErrorType", "code", "message", "Base", "getMessage", "arg1", "arg2", "arg3", "NodeError", "oneOf", "expected", "thing", "len", "i", "startsWith", "str", "search", "pos", "endsWith", "this_len", "includes", "start", "name", "value", "actual", "determiner", "msg", "type", "arg", "require_state", "__commonJSMin", "exports", "module", "ERR_INVALID_OPT_VALUE", "highWaterMarkFrom", "options", "isDuplex", "duplexKey", "getHighWaterMark", "state", "hwm", "name", "require_node", "__commonJSMin", "exports", "module", "require_stream_writable", "__commonJSMin", "exports", "module", "Writable", "CorkedRequest", "state", "_this", "onCorkedFinish", "Duplex", "WritableState", "internalUtil", "Stream", "Buffer", "OurUint8Array", "_uint8ArrayToBuffer", "chunk", "_isUint8Array", "obj", "destroyImpl", "_require", "getHighWaterMark", "_require$codes", "ERR_INVALID_ARG_TYPE", "ERR_METHOD_NOT_IMPLEMENTED", "ERR_MULTIPLE_CALLBACK", "ERR_STREAM_CANNOT_PIPE", "ERR_STREAM_DESTROYED", "ERR_STREAM_NULL_VALUES", "ERR_STREAM_WRITE_AFTER_END", "ERR_UNKNOWN_ENCODING", "errorOrDestroy", "nop", "options", "stream", "isDuplex", "noDecode", "er", "onwrite", "current", "out", "realHasInstance", "object", "writeAfterEnd", "cb", "validChunk", "encoding", "ret", "isBuf", "writeOrBuffer", "clearBuffer", "decodeChunk", "newChunk", "len", "last", "doWrite", "writev", "onwriteError", "sync", "finishMaybe", "onwriteStateUpdate", "finished", "needFinish", "afterWrite", "onwriteDrain", "entry", "l", "buffer", "holder", "count", "allBuffers", "endWritable", "callFinal", "err", "prefinish", "need", "rState", "corkReq", "value", "require_stream_duplex", "__commonJSMin", "exports", "module", "objectKeys", "obj", "keys", "key", "Duplex", "Readable", "Writable", "v", "method", "options", "onend", "onEndNT", "self", "value", "require_string_decoder", "__commonJSMin", "exports", "Buffer", "isEncoding", "encoding", "_normalizeEncoding", "enc", "retried", "normalizeEncoding", "nenc", "StringDecoder", "nb", "utf16Text", "utf16End", "utf8FillLast", "base64Text", "base64End", "simpleWrite", "simpleEnd", "buf", "r", "i", "utf8End", "utf8Text", "utf8CheckByte", "byte", "utf8CheckIncomplete", "self", "j", "utf8CheckExtraBytes", "p", "total", "end", "c", "n", "require_end_of_stream", "__commonJSMin", "exports", "module", "ERR_STREAM_PREMATURE_CLOSE", "once", "callback", "called", "_len", "args", "_key", "noop", "isRequest", "stream", "eos", "opts", "readable", "writable", "onlegacyfinish", "onfinish", "writableEnded", "readableEnded", "onend", "onerror", "err", "onclose", "onrequest", "require_async_iterator", "__commonJSMin", "exports", "module", "_Object$setPrototypeO", "_defineProperty", "obj", "key", "value", "finished", "kLastResolve", "kLastReject", "kError", "kEnded", "kLastPromise", "kHandlePromise", "kStream", "createIterResult", "done", "readAndResolve", "iter", "resolve", "data", "onReadable", "wrapForNext", "lastPromise", "reject", "AsyncIteratorPrototype", "ReadableStreamAsyncIteratorPrototype", "_this", "error", "promise", "_this2", "err", "createReadableStreamAsyncIterator", "stream", "_Object$create", "iterator", "require_from", "__commonJSMin", "exports", "module", "asyncGeneratorStep", "gen", "resolve", "reject", "_next", "_throw", "key", "arg", "info", "value", "error", "_asyncToGenerator", "fn", "self", "args", "err", "ownKeys", "object", "enumerableOnly", "keys", "symbols", "sym", "_objectSpread", "target", "i", "source", "_defineProperty", "obj", "ERR_INVALID_ARG_TYPE", "from", "Readable", "iterable", "opts", "iterator", "readable", "reading", "next", "_next2", "_ref", "done", "require_stream_readable", "__commonJSMin", "exports", "module", "Readable", "Duplex", "ReadableState", "EE", "EElistenerCount", "emitter", "type", "Stream", "Buffer", "OurUint8Array", "_uint8ArrayToBuffer", "chunk", "_isUint8Array", "obj", "debugUtil", "debug", "BufferList", "destroyImpl", "_require", "getHighWaterMark", "_require$codes", "ERR_INVALID_ARG_TYPE", "ERR_STREAM_PUSH_AFTER_EOF", "ERR_METHOD_NOT_IMPLEMENTED", "ERR_STREAM_UNSHIFT_AFTER_END_EVENT", "StringDecoder", "createReadableStreamAsyncIterator", "from", "errorOrDestroy", "kProxyEvents", "prependListener", "event", "fn", "options", "stream", "isDuplex", "value", "err", "cb", "encoding", "state", "skipChunkCheck", "readableAddChunk", "addToFront", "onEofChunk", "er", "chunkInvalid", "addChunk", "maybeReadMore", "emitReadable", "enc", "decoder", "p", "content", "MAX_HWM", "computeNewHighWaterMark", "n", "howMuchToRead", "nOrig", "endReadable", "doRead", "ret", "fromList", "emitReadable_", "flow", "maybeReadMore_", "len", "dest", "pipeOpts", "src", "doEnd", "endFn", "onend", "unpipe", "onunpipe", "readable", "unpipeInfo", "cleanup", "ondrain", "pipeOnDrain", "cleanedUp", "onclose", "onfinish", "onerror", "ondata", "indexOf", "dests", "i", "index", "ev", "res", "nReadingNextTick", "updateReadableListening", "self", "resume", "resume_", "_this", "paused", "method", "endReadableNT", "wState", "iterable", "opts", "xs", "x", "l", "require_stream_transform", "__commonJSMin", "exports", "module", "Transform", "_require$codes", "ERR_METHOD_NOT_IMPLEMENTED", "ERR_MULTIPLE_CALLBACK", "ERR_TRANSFORM_ALREADY_TRANSFORMING", "ERR_TRANSFORM_WITH_LENGTH_0", "Duplex", "afterTransform", "er", "data", "ts", "cb", "rs", "options", "prefinish", "_this", "done", "chunk", "encoding", "n", "err", "err2", "stream", "require_stream_passthrough", "__commonJSMin", "exports", "module", "PassThrough", "Transform", "options", "chunk", "encoding", "cb", "require_pipeline", "__commonJSMin", "exports", "module", "eos", "once", "callback", "called", "_require$codes", "ERR_MISSING_ARGS", "ERR_STREAM_DESTROYED", "noop", "err", "isRequest", "stream", "destroyer", "reading", "writing", "closed", "destroyed", "call", "fn", "pipe", "from", "to", "popCallback", "streams", "pipeline", "_len", "_key", "error", "destroys", "i", "require_readable", "__commonJSMin", "exports", "module", "Stream", "require_hash_base", "__commonJSMin", "exports", "module", "Buffer", "Transform", "inherits", "throwIfNotStringOrBuffer", "val", "prefix", "HashBase", "blockSize", "chunk", "encoding", "callback", "error", "err", "data", "block", "offset", "j", "carry", "digest", "i", "require_ripemd160", "__commonJSMin", "exports", "module", "Buffer", "inherits", "HashBase", "ARRAY16", "zl", "zr", "sl", "sr", "hl", "hr", "RIPEMD160", "words", "j", "al", "bl", "cl", "dl", "el", "ar", "br", "cr", "dr", "er", "i", "tl", "tr", "fn1", "fn5", "fn2", "fn4", "fn3", "rotl", "t", "buffer", "x", "n", "a", "b", "c", "d", "e", "m", "k", "s", "require_hash", "__commonJSMin", "exports", "module", "Buffer", "Hash", "blockSize", "finalSize", "data", "enc", "block", "length", "accum", "offset", "assigned", "remainder", "i", "rem", "bits", "lowBits", "highBits", "hash", "require_sha", "__commonJSMin", "exports", "module", "inherits", "Hash", "Buffer", "K", "W", "Sha", "rotl5", "num", "rotl30", "ft", "s", "b", "c", "d", "M", "a", "e", "i", "j", "t", "H", "require_sha1", "__commonJSMin", "exports", "module", "inherits", "Hash", "Buffer", "K", "W", "Sha1", "rotl1", "num", "rotl5", "rotl30", "ft", "s", "b", "c", "d", "M", "a", "e", "i", "j", "t", "H", "require_sha256", "__commonJSMin", "exports", "module", "inherits", "Hash", "Buffer", "K", "W", "Sha256", "ch", "x", "y", "z", "maj", "sigma0", "sigma1", "gamma0", "gamma1", "M", "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "T1", "T2", "H", "require_sha224", "__commonJSMin", "exports", "module", "inherits", "Sha256", "Hash", "Buffer", "W", "Sha224", "H", "require_sha512", "__commonJSMin", "exports", "module", "inherits", "Hash", "Buffer", "K", "W", "Sha512", "Ch", "x", "y", "z", "maj", "sigma0", "xl", "sigma1", "Gamma0", "Gamma0l", "Gamma1", "Gamma1l", "getCarry", "a", "b", "M", "ah", "bh", "ch", "dh", "eh", "fh", "gh", "hh", "al", "bl", "cl", "dl", "el", "fl", "gl", "hl", "i", "xh", "gamma0", "gamma0l", "gamma1", "gamma1l", "Wi7h", "Wi7l", "Wi16h", "Wi16l", "Wil", "Wih", "j", "majh", "majl", "sigma0h", "sigma0l", "sigma1h", "sigma1l", "Kih", "Kil", "chh", "chl", "t1l", "t1h", "t2l", "t2h", "H", "writeInt64BE", "h", "l", "offset", "require_sha384", "__commonJSMin", "exports", "module", "inherits", "SHA512", "Hash", "Buffer", "W", "Sha384", "H", "writeInt64BE", "h", "l", "offset", "require_sha", "__commonJSMin", "exports", "module", "algorithm", "Algorithm", "id", "subscribers", "log", "type", "message", "data", "obj", "dispatch", "exports", "listen", "cb", "i", "e", "require_invariant", "__commonJSMin", "exports", "module", "NODE_ENV", "invariant", "condition", "format", "a", "b", "c", "d", "e", "f", "error", "args", "argIndex", "require_constants", "__commonJSMin", "exports", "module", "SEMVER_SPEC_VERSION", "MAX_SAFE_INTEGER", "MAX_SAFE_COMPONENT_LENGTH", "require_debug", "__commonJSMin", "exports", "module", "debug", "args", "require_re", "__commonJSMin", "exports", "module", "MAX_SAFE_COMPONENT_LENGTH", "debug", "re", "src", "t", "R", "createToken", "name", "value", "isGlobal", "index", "require_parse_options", "__commonJSMin", "exports", "module", "opts", "parseOptions", "options", "k", "o", "require_identifiers", "__commonJSMin", "exports", "module", "numeric", "compareIdentifiers", "a", "b", "anum", "bnum", "rcompareIdentifiers", "require_semver", "__commonJSMin", "exports", "module", "debug", "MAX_LENGTH", "MAX_SAFE_INTEGER", "re", "t", "parseOptions", "compareIdentifiers", "SemVer", "version", "options", "m", "id", "num", "other", "i", "a", "b", "release", "identifier", "require_parse", "__commonJSMin", "exports", "module", "MAX_LENGTH", "re", "t", "SemVer", "parseOptions", "parse", "version", "options", "require_valid", "__commonJSMin", "exports", "module", "parse", "valid", "version", "options", "v", "require_clean", "__commonJSMin", "exports", "module", "parse", "clean", "version", "options", "s", "require_inc", "__commonJSMin", "exports", "module", "SemVer", "inc", "version", "release", "options", "identifier", "require_compare", "__commonJSMin", "exports", "module", "SemVer", "compare", "a", "b", "loose", "require_eq", "__commonJSMin", "exports", "module", "compare", "eq", "a", "b", "loose", "require_diff", "__commonJSMin", "exports", "module", "parse", "eq", "diff", "version1", "version2", "v1", "v2", "hasPre", "prefix", "defaultResult", "key", "require_major", "__commonJSMin", "exports", "module", "SemVer", "major", "a", "loose", "require_minor", "__commonJSMin", "exports", "module", "SemVer", "minor", "a", "loose", "require_patch", "__commonJSMin", "exports", "module", "SemVer", "patch", "a", "loose", "require_prerelease", "__commonJSMin", "exports", "module", "parse", "prerelease", "version", "options", "parsed", "require_rcompare", "__commonJSMin", "exports", "module", "compare", "rcompare", "a", "b", "loose", "require_compare_loose", "__commonJSMin", "exports", "module", "compare", "compareLoose", "a", "b", "require_compare_build", "__commonJSMin", "exports", "module", "SemVer", "compareBuild", "a", "b", "loose", "versionA", "versionB", "require_sort", "__commonJSMin", "exports", "module", "compareBuild", "sort", "list", "loose", "a", "b", "require_rsort", "__commonJSMin", "exports", "module", "compareBuild", "rsort", "list", "loose", "a", "b", "require_gt", "__commonJSMin", "exports", "module", "compare", "gt", "a", "b", "loose", "require_lt", "__commonJSMin", "exports", "module", "compare", "lt", "a", "b", "loose", "require_neq", "__commonJSMin", "exports", "module", "compare", "neq", "a", "b", "loose", "require_gte", "__commonJSMin", "exports", "module", "compare", "gte", "a", "b", "loose", "require_lte", "__commonJSMin", "exports", "module", "compare", "lte", "a", "b", "loose", "require_cmp", "__commonJSMin", "exports", "module", "eq", "neq", "gt", "gte", "lt", "lte", "cmp", "a", "op", "b", "loose", "require_coerce", "__commonJSMin", "exports", "module", "SemVer", "parse", "re", "t", "coerce", "version", "options", "match", "next", "require_iterator", "__commonJSMin", "exports", "module", "Yallist", "walker", "require_yallist", "__commonJSMin", "exports", "module", "Yallist", "Node", "list", "self", "item", "i", "l", "node", "next", "prev", "head", "tail", "push", "unshift", "res", "fn", "thisp", "walker", "n", "initial", "acc", "arr", "from", "to", "ret", "start", "deleteCount", "nodes", "insert", "p", "value", "inserted", "require_lru_cache", "__commonJSMin", "exports", "module", "Yallist", "MAX", "LENGTH", "LENGTH_CALCULATOR", "ALLOW_STALE", "MAX_AGE", "DISPOSE", "NO_DISPOSE_ON_SET", "LRU_LIST", "CACHE", "UPDATE_AGE_ON_GET", "naiveLength", "LRUCache", "options", "max", "lc", "mL", "trim", "allowStale", "mA", "lC", "hit", "fn", "thisp", "walker", "prev", "forEachStep", "next", "k", "isStale", "h", "key", "value", "maxAge", "now", "len", "del", "item", "Entry", "get", "node", "arr", "l", "expiresAt", "self", "doUse", "diff", "length", "require_range", "__commonJSMin", "exports", "module", "Range", "range", "options", "parseOptions", "Comparator", "r", "c", "first", "isNullSet", "isAny", "comps", "memoKey", "cached", "cache", "loose", "hr", "re", "t", "hyphenReplace", "debug", "comparatorTrimReplace", "tildeTrimReplace", "caretTrimReplace", "rangeList", "comp", "parseComparator", "replaceGTE0", "rangeMap", "comparators", "result", "thisComparators", "isSatisfiable", "rangeComparators", "thisComparator", "rangeComparator", "version", "SemVer", "i", "testSet", "LRU", "remainingComparators", "testComparator", "otherComparator", "replaceCarets", "replaceTildes", "replaceXRanges", "replaceStars", "isX", "id", "replaceTilde", "_", "M", "m", "p", "pr", "ret", "replaceCaret", "z", "replaceXRange", "gtlt", "xM", "xm", "xp", "anyX", "incPr", "$0", "from", "fM", "fm", "fp", "fpr", "fb", "to", "tM", "tm", "tp", "tpr", "tb", "set", "allowed", "require_comparator", "__commonJSMin", "exports", "module", "ANY", "Comparator", "comp", "options", "parseOptions", "debug", "re", "t", "m", "SemVer", "version", "cmp", "Range", "sameDirectionIncreasing", "sameDirectionDecreasing", "sameSemVer", "differentDirectionsInclusive", "oppositeDirectionsLessThan", "oppositeDirectionsGreaterThan", "require_satisfies", "__commonJSMin", "exports", "module", "Range", "satisfies", "version", "range", "options", "require_to_comparators", "__commonJSMin", "exports", "module", "Range", "toComparators", "range", "options", "comp", "c", "require_max_satisfying", "__commonJSMin", "exports", "module", "SemVer", "Range", "maxSatisfying", "versions", "range", "options", "max", "maxSV", "rangeObj", "v", "require_min_satisfying", "__commonJSMin", "exports", "module", "SemVer", "Range", "minSatisfying", "versions", "range", "options", "min", "minSV", "rangeObj", "v", "require_min_version", "__commonJSMin", "exports", "module", "SemVer", "Range", "gt", "minVersion", "range", "loose", "minver", "i", "comparators", "setMin", "comparator", "compver", "require_valid", "__commonJSMin", "exports", "module", "Range", "validRange", "range", "options", "require_outside", "__commonJSMin", "exports", "module", "SemVer", "Comparator", "ANY", "Range", "satisfies", "gt", "lt", "lte", "gte", "outside", "version", "range", "hilo", "options", "gtfn", "ltefn", "ltfn", "comp", "ecomp", "i", "comparators", "high", "low", "comparator", "require_gtr", "__commonJSMin", "exports", "module", "outside", "gtr", "version", "range", "options", "require_ltr", "__commonJSMin", "exports", "module", "outside", "ltr", "version", "range", "options", "require_intersects", "__commonJSMin", "exports", "module", "Range", "intersects", "r1", "r2", "options", "require_simplify", "__commonJSMin", "exports", "module", "satisfies", "compare", "versions", "range", "options", "set", "first", "prev", "v", "a", "b", "version", "ranges", "min", "max", "simplified", "original", "require_subset", "__commonJSMin", "exports", "module", "Range", "Comparator", "ANY", "satisfies", "compare", "subset", "sub", "dom", "options", "sawNonNull", "OUTER", "simpleSub", "simpleDom", "isSub", "simpleSubset", "eqSet", "gt", "lt", "c", "higherGT", "lowerLT", "gtltComp", "eq", "higher", "lower", "hasDomLT", "hasDomGT", "needDomLTPre", "needDomGTPre", "a", "b", "comp", "require_semver", "__commonJSMin", "exports", "module", "internalRe", "constants", "SemVer", "identifiers", "parse", "valid", "clean", "inc", "diff", "major", "minor", "patch", "prerelease", "compare", "rcompare", "compareLoose", "compareBuild", "sort", "rsort", "gt", "lt", "eq", "neq", "gte", "lte", "cmp", "coerce", "Comparator", "Range", "satisfies", "toComparators", "maxSatisfying", "minSatisfying", "minVersion", "validRange", "outside", "gtr", "ltr", "intersects", "simplifyRange", "subset", "errorClasses", "deserializers", "addCustomErrorDeserializer", "name", "deserializer", "exports", "createCustomErrorClass", "CustomErrorClass", "_super", "__extends", "message", "fields", "options", "_this", "k", "isObject", "cause", "value", "deserializeError", "object", "msg", "error", "name_1", "des", "constructor", "prop", "serializeError", "destroyCircular", "from", "seen", "to", "_b", "__values", "_c", "key", "helpers_1", "exports", "HwTransportErrorType", "HwTransportError", "_super", "__extends", "type", "message", "_this", "TransportError", "id", "name", "getAltStatusMessage", "code", "TransportStatusError", "statusCode", "statusText", "k", "smsg", "statusCodeStr", "events_1", "__importDefault", "errors_1", "exports", "Transport", "_this", "cla", "ins", "p1", "p2", "data", "statusList", "response", "_a", "sw", "s", "f", "__awaiter", "busyPromise", "r", "resolveBusy", "unresponsiveReached", "timeout", "res", "_apdu", "apdus", "observer", "unsubscribed", "unsubscribe", "main", "apdus_1", "__values", "apdus_1_1", "apdu", "_b", "status_1", "e", "_key", "eventName", "cb", "event", "args", "_i", "__spreadArray", "__read", "exchangeTimeout", "unresponsiveTimeout", "openTimeout", "listenTimeout", "resolve", "reject", "found", "sub", "listenTimeoutId", "self", "methods", "scrambleKey", "methods_1", "methods_1_1", "methodName", "ctx", "_appAPIlock", "errors_1", "Tag", "asUInt16BE", "value", "b", "initialAcc", "createHIDframing", "channel", "packetSize", "apdu", "data", "blockSize", "nbBlocks", "blocks", "i", "head", "chunk", "acc", "_a", "dataLength", "sequence", "chunkData", "exports", "semver_1", "__importDefault", "exports", "DeviceModelId", "devices", "_a", "_firwareVersion", "firmwareVersion", "_firmwareVersion", "productMap", "devicesList", "getDeviceModel", "id", "info", "identifyTargetId", "targetId", "deviceModel", "masks", "mask", "identifyUSBProductId", "usbProductId", "legacy", "d", "mm", "identifyProductName", "productName", "bluetoothServices", "serviceUuidToInfos", "bluetoothSpec", "i", "spec", "__assign", "getBluetoothServiceUuids", "getInfosForServiceUuid", "uuid", "devices_1", "ledgerDevices", "requestLedgerDevice", "device", "_a", "exports", "getLedgerDevices", "devices", "d", "getFirstLedgerDevice", "existingDevices", "isSupported", "hw_transport_1", "__importDefault", "hid_framing_1", "devices_1", "logs_1", "errors_1", "webusb_1", "configurationValue", "endpointNumber", "TransportWebUSB", "_super", "__extends", "device", "interfaceNumber", "_this", "e", "_a", "devices", "gracefullyResetDevice", "iface", "alternates", "a", "e_1", "transport", "onDisconnect", "apdu", "__awaiter", "channel", "packetSize", "framing", "blocks", "i", "_b", "result", "acc", "r", "buffer", "b", "observer", "unsubscribed", "deviceModel", "error", "unsubscribe", "err_1", "src_exports", "__export", "BitcoinLedgerSigner", "__toCommonJS", "import_bitcoinjs_lib", "import_tiny_secp256k1", "import_bip32_path", "import_bs58check", "pathElementsToBuffer", "paths", "buffer", "element", "index", "bip32asBuffer", "path", "pathElements", "pathStringToArray", "pathArrayToString", "bippath", "pubkeyFromXpub", "xpub", "xpubBuf", "bs58check", "getXpubComponents", "hardenedPathOf", "i", "import_varuint_bitcoin", "unsafeTo64bitLE", "n", "byteArray", "index", "byte", "unsafeFrom64bitLE", "value", "i", "BufferWriter", "alloc", "fn", "b", "bytes", "varuint", "slice", "BufferReader", "buffer", "offset", "result", "buf", "n", "unsafeFrom64bitLE", "vi", "varuint", "count", "vector", "i", "import_bitcoinjs_lib", "import_tiny_secp256k1", "MAX_SCRIPT_BLOCK", "DEFAULT_VERSION", "DEFAULT_LOCKTIME", "DEFAULT_SEQUENCE", "SIGHASH_ALL", "OP_DUP", "OP_HASH160", "HASH_SIZE", "OP_EQUAL", "OP_EQUALVERIFY", "OP_CHECKSIG", "import_ripemd160", "import_sha", "hashPublicKey", "buffer", "RIPEMD160", "sha", "BaseAccount", "psbt", "masterFp", "SingleKeyAccount", "_super", "__extends", "pubkeys", "i", "inputTx", "spentOutput", "pathElems", "cond", "paths", "p2pkh", "pubkey", "buf", "BufferWriter", "pubkeyHash", "hashPublicKey", "OP_DUP", "OP_HASH160", "HASH_SIZE", "OP_EQUALVERIFY", "OP_CHECKSIG", "_spentOutput", "path", "p2tr", "_super", "__extends", "pubkey", "xonlyPubkey", "buf", "BufferWriter", "outputKey", "i", "_inputTx", "spentOutput", "path", "xonly", "cond", "x", "h", "internalPubkey", "evenEcdsaPubkey", "tweak", "outputEcdsaKey", "outputSchnorrKey", "SingleKeyAccount", "p2wpkhWrapped", "_super", "__extends", "pubkey", "buf", "BufferWriter", "redeemScript", "scriptHash", "hashPublicKey", "OP_HASH160", "HASH_SIZE", "OP_EQUAL", "i", "inputTx", "spentOutput", "path", "userSuppliedRedeemScript", "expectedRedeemScript", "cond", "pubkeyHash", "SingleKeyAccount", "p2wpkh", "_super", "__extends", "pubkey", "buf", "BufferWriter", "pubkeyHash", "hashPublicKey", "HASH_SIZE", "i", "inputTx", "spentOutput", "path", "cond", "SingleKeyAccount", "import_bitcoinjs_lib", "import_bitcoinjs_lib", "Merkle", "leaves", "hasher", "nodes", "index", "proveNode", "n", "Node", "newNode", "leftCount", "highestPowerOf2LessThan", "leftBranch", "rightBranch", "leftChild", "rightChild", "hash", "node", "left", "right", "hashLeaf", "buf", "hashFunction", "hashConcat", "bufA", "bufB", "Node", "left", "right", "hash", "proveNode", "node", "__spreadArray", "__read", "highestPowerOf2LessThan", "n", "isPowerOf2", "WalletPolicy", "descriptorTemplate", "key", "keyBuffers", "k", "m", "Merkle", "hashLeaf", "buf", "BufferWriter", "createKey", "masterFingerprint", "path", "xpub", "accountPath", "pathArrayToString", "extract", "psbt", "tx", "BufferWriter", "isSegwit", "inputCount", "witnessWriter", "i", "_a", "outputCount", "_b", "psbtGlobal", "psbtIn", "psbtOut", "PSBT_MAGIC_BYTES", "NoSuchEntry", "_super", "__extends", "PsbtV2", "version", "psbtGlobal", "uint32LE", "locktime", "_a", "inputCount", "varint", "fromVarint", "outputCount", "byte", "psbtVersion", "inputIndex", "transaction", "psbtIn", "b", "amount", "scriptPubKey", "buf", "BufferWriter", "utxo", "BufferReader", "pubkey", "signature", "sigHashtype", "result", "redeemScript", "masterFingerprint", "path", "scriptSig", "scriptWitness", "txid", "outputIndex", "sequence", "_b", "sig", "hashes", "keyType", "psbtOut", "uint64LE", "unsafeFrom64bitLE", "fingerprint", "keyTypes", "_this", "map", "_v", "k", "m", "to", "from", "index", "to_index", "v", "serializeMap", "psbt", "PSBT_MAGIC_BYTES", "i", "keyLen", "keyData", "value", "set", "hexKey", "key", "Key", "get", "maps", "buffer", "element", "h", "hashCount", "deriv", "__assign", "get", "map", "keyType", "keyData", "acceptUndefined", "key", "Key", "value", "NoSuchEntry", "buf", "BufferWriter", "KeyPair", "createKey", "serializeMap", "k", "keyPair", "b", "set", "uint32LE", "n", "uint64LE", "unsafeTo64bitLE", "varint", "fromVarint", "BufferReader", "finalize", "psbt", "inputCount", "i", "legacyPubkeys", "psbtIn", "taprootSig", "isSegwitV0", "redeemScript", "isWrappedSegwit", "signature", "witnessBuf", "BufferWriter", "scriptSigBuf", "scriptSig", "writePush", "clearFinalizedInput", "inputIndex", "keyTypes", "witnessUtxoAvailable", "nonWitnessUtxoAvailable", "buf", "data", "b", "getVarint", "data", "offset", "createVarint", "value", "buffer_1", "buffer_2", "buffer", "serializeTransactionOutputs", "_a", "outputs", "outputBuffer", "createVarint", "output", "serializeTransaction", "transaction", "skipWitness", "timestamp", "additionals", "isDecred", "isZcash", "isBech32", "inputBuffer", "useWitness", "input", "BtcNew", "client", "_a", "path", "xpubVersion", "pathElements", "pathStringToArray", "xpub", "_b", "xpubComponents", "getXpubComponents", "opts", "isPathNormal", "_c", "display", "descrTemplFrom", "address", "components", "uncompressedPubkey", "descrTempl", "accountPath", "hardenedPathOf", "accountXpub", "masterFingerprint", "policy", "WalletPolicy", "createKey", "changeAndIndex", "arg", "inputCount", "psbt", "PsbtV2", "masterFp", "accountType", "accountTypeFromArg", "notifyCount", "progress", "i", "pathElems", "outputsConcat", "outputsBufferReader", "BufferReader", "outputCount", "changeData", "changeFound", "amount", "outputScript", "isChange", "changePath", "pubkey", "key", "p", "firstSigned", "progressCallback", "finalize", "serializedTx", "extract", "pathArrayToString", "pubkeyFromXpub", "cond", "input", "masterFP", "sigHashType", "inputTx", "spentOutputIndex", "redeemScript", "sequence", "inputTxBuffer", "serializeTransaction", "inputTxid", "xpubBase58", "spentTxOutput", "spendCondition", "spentOutput", "walletPolicy", "sigs", "v", "k", "pubkeys", "psbtIn", "addressFormat", "p2tr", "p2wpkh", "p2wpkhWrapped", "p2pkh", "h", "hard", "n", "soft", "change", "import_bs58", "import_ripemd160", "import_sha", "import_logs", "addressFormatMap", "getWalletPublicKey", "transport", "options", "_a", "__assign", "path", "verify", "format", "buffer", "bip32asBuffer", "p1", "p2", "response", "_b", "publicKeyLength", "addressLength", "publicKey", "bitcoinAddress", "chainCode", "import_invariant", "getTrustedInputRaw", "transport", "transactionData", "indexLookup", "firstRound", "prefix", "data", "trustedInput", "_a", "res", "getTrustedInput", "transaction", "additionals", "version", "inputs", "outputs", "locktime", "nExpiryHeight", "extraData", "isDecred", "isXST", "processScriptBlocks", "script", "sequence", "__awaiter", "_this", "seq", "scriptBlocks", "offset", "blockSize", "MAX_SCRIPT_BLOCK", "scriptBlocks_1", "__values", "scriptBlocks_1_1", "scriptBlock", "_b", "processWholeScriptBlock", "block", "createVarint", "_c", "inputs_1", "inputs_1_1", "input", "isXSTV2", "treeField", "outputs_1", "outputs_1_1", "output", "endData", "extraPart", "invariant", "startUntrustedHashTransactionInputRaw", "transport", "newTransaction", "firstRound", "transactionData", "bip143", "overwinter", "additionals", "p2", "startUntrustedHashTransactionInput", "transaction", "inputs", "useTrustedInputForSegwit", "data", "createVarint", "_e", "i", "isDecred", "_a", "__values", "_b", "input", "prefix", "inputValue", "scriptBlocks", "offset", "blockSize", "MAX_SCRIPT_BLOCK", "scriptBlocks_1", "e_1", "scriptBlocks_1_1", "scriptBlock", "import_sha", "getTrustedInputBIP143", "transport", "indexLookup", "transaction", "additionals", "isDecred", "hash", "shajs", "serializeTransaction", "data", "outputs", "locktime", "compressPublicKey", "publicKey", "prefix", "prefixBuffer", "signTransaction", "transport", "path", "lockTime", "sigHashType", "expiryHeight", "additionals", "isDecred", "pathsBuffer", "bip32asBuffer", "lockTimeBuffer", "buffer", "result", "provideOutputFullChangePath", "transport", "path", "buffer", "bip32asBuffer", "hashOutputFull", "outputScript", "additionals", "offset", "p1", "isDecred", "blockSize", "MAX_SCRIPT_BLOCK", "p1_1", "data", "_a", "import_invariant", "getAppAndVersion", "transport", "__awaiter", "r", "_a", "i", "format", "invariant", "nameLength", "name", "versionLength", "version", "flagLength", "flags", "checkIsBtcLegacy", "import_semver", "shouldUseTrustedInputForSegwit", "_a", "version", "name", "semver", "defaultsSignTransaction", "DEFAULT_LOCKTIME", "SIGHASH_ALL", "_e", "createTransaction", "transport", "arg", "signTx", "__assign", "inputs", "associatedKeysets", "changePath", "outputScriptHex", "lockTime", "sigHashType", "segwit", "initialTimestamp", "additionals", "expiryHeight", "onDeviceStreaming", "onDeviceSignatureGranted", "onDeviceSignatureRequested", "useTrustedInputForSegwit", "getAppAndVersion", "a", "_b", "shouldUseTrustedInputForSegwit", "e_1", "notify", "loop", "i", "length", "index", "total", "progress", "isDecred", "isZcash", "isXST", "startTime", "sapling", "bech32", "useBip143", "lockTimeBuffer", "nullScript", "nullPrevout", "defaultVersion", "trustedInputs", "regularOutputs", "signatures", "publicKeys", "firstRun", "resuming", "targetTransaction", "getTrustedInputCall", "getTrustedInputBIP143", "getTrustedInput", "outputScript", "inputs_1", "__values", "inputs_1_1", "input", "trustedInput", "sequence", "DEFAULT_SEQUENCE", "outputs", "idx", "result_1", "getWalletPublicKey", "r", "compressPublicKey", "startUntrustedHashTransactionInput", "provideOutputFullChangePath", "hashOutputFull", "signTransaction", "script", "OP_DUP", "OP_HASH160", "HASH_SIZE", "hashPublicKey", "OP_EQUALVERIFY", "OP_CHECKSIG", "pseudoTX", "pseudoTrustedInputs", "signature", "signatureSize", "keySize", "offset", "result", "serializeTransaction", "witness", "tmpScriptData", "decredWitness_1", "inputIndex", "BtcOld", "transport", "path", "getWalletPublicKey", "res", "_a", "xpubVersion", "pathElements", "pathStringToArray", "parentPath", "pathArrayToString", "parentDerivation", "_b", "accountDerivation", "fingerprint", "makeFingerprint", "compressPublicKeySECP256", "xpub", "makeXpub", "opts", "__assign", "arg", "createTransaction", "compressedPubKey", "hash160", "asBufferUInt32BE", "n", "buf", "publicKey", "version", "depth", "parentFingerprint", "index", "chainCode", "pubKey", "indexBuffer", "extendedKeyBytes", "checksum", "hash256", "bs58", "sha256", "buffer", "sha", "ripemd160", "RIPEMD160", "MerkleMap", "keys", "values", "i", "Merkle", "k", "hashLeaf", "v", "createVarint", "MerkelizedPsbt", "_super", "__extends", "psbt", "_this", "__spreadArray", "__read", "v", "map", "sortedKeysStrings", "values", "k", "sortedKeys", "merkleMap", "MerkleMap", "PsbtV2", "import_bitcoinjs_lib", "ClientCommandCode", "ClientCommand", "YieldCommand", "_super", "__extends", "results", "progressCallback", "_this", "request", "GetPreimageCommand", "_super", "__extends", "known_preimages", "queue", "_this", "ClientCommandCode", "request", "req", "hash", "i", "req_hash_hex", "known_preimage", "preimage_len_varint", "createVarint", "max_payload_size", "payload_size", "ClientCommand", "GetMerkleLeafProofCommand", "_super", "__extends", "known_trees", "queue", "_this", "ClientCommandCode", "request", "req", "reqBuf", "BufferReader", "hash", "hash_hex", "tree_size", "leaf_index", "mt", "proof", "n_response_elements", "n_leftover_elements", "_a", "__spreadArray", "__read", "ClientCommand", "GetMerkleLeafIndexCommand", "_super", "__extends", "known_trees", "_this", "ClientCommandCode", "request", "req", "root_hash", "i", "root_hash_hex", "leef_hash", "leef_hash_hex", "mt", "leaf_index", "found", "createVarint", "ClientCommand", "GetMoreElementsCommand", "_super", "__extends", "queue", "_this", "ClientCommandCode", "request", "element_len", "el", "max_elements", "n_returned_elements", "returned_elements", "__spreadArray", "ClientCommand", "ClientCommandInterpreter", "progressCallback", "commands", "YieldCommand", "GetPreimageCommand", "GetMerkleLeafIndexCommand", "GetMerkleLeafProofCommand", "GetMoreElementsCommand", "commands_1", "__values", "commands_1_1", "cmd", "preimage", "elements", "elements_1", "elements_1_1", "el", "mt", "Merkle", "hashLeaf", "mm", "request", "cmdCode", "CLA_BTC", "CLA_FRAMEWORK", "BitcoinIns", "FrameworkIns", "AppClient", "transport", "ins", "data", "cci", "response", "_a", "hwRequest", "commandResponse", "display", "pathElements", "pathElementsToBuffer", "walletPolicy", "walletHMAC", "change", "addressIndex", "clientInterpreter", "ClientCommandInterpreter", "k", "addressIndexBuffer", "psbt", "progressCallback", "merkelizedPsbt", "MerkelizedPsbt", "__values", "_b", "map", "_c", "_d", "inputMapsRoot", "Merkle", "m", "hashLeaf", "outputMapsRoot", "createVarint", "_h", "yielded", "ret", "yielded_1", "yielded_1_1", "inputAndSig", "import_logs", "formatTransactionDebug", "transaction", "str", "_a", "i", "prevout", "script", "sequence", "amount", "splitTransaction", "transactionHex", "isSegwitSupported", "hasTimestamp", "hasExtraData", "additionals", "inputs", "outputs", "witness", "offset", "timestamp", "nExpiryHeight", "nVersionGroupId", "extraData", "witnessScript", "locktime", "isDecred", "isZencash", "isZcash", "transaction", "version", "overwinter", "isZcashv5", "varint", "getVarint", "numberInputs", "i", "prevout", "script", "tree", "sequence", "numberOutputs", "amount", "t", "formatTransactionDebug", "defaultArg", "DEFAULT_LOCKTIME", "SIGHASH_ALL", "DEFAULT_VERSION", "signP2SHTransaction", "transport", "arg", "_a", "__assign", "inputs", "associatedKeysets", "outputScriptHex", "lockTime", "sigHashType", "segwit", "transactionVersion", "nullScript", "nullPrevout", "defaultVersion", "trustedInputs", "regularOutputs", "signatures", "firstRun", "resuming", "targetTransaction", "getTrustedInputCall", "getTrustedInputBIP143", "getTrustedInput", "outputScript", "inputs_1", "__values", "inputs_1_1", "input", "trustedInput", "_c", "sequence", "DEFAULT_SEQUENCE", "outputs", "index", "i", "startUntrustedHashTransactionInput", "hashOutputFull", "script", "pseudoTX", "pseudoTrustedInputs", "signTransaction", "signature", "import_bip32_path", "signMessage", "transport", "_a", "path", "messageHex", "paths", "bippath", "message", "offset", "maxChunkSize", "MAX_SCRIPT_BLOCK", "chunkSize", "buffer", "element", "index", "_c", "res", "_b", "v", "r", "s", "Btc", "_a", "transport", "_b", "scrambleKey", "_c", "currency", "BtcNew_default", "AppClient", "BtcOld_default", "arg", "impl", "path", "opts", "options", "messageHex", "signMessage", "signP2SHTransaction", "transactionHex", "isSegwitSupported", "hasTimestamp", "hasExtraData", "additionals", "splitTransaction", "serializeTransactionOutputs", "indexLookup", "transaction", "getTrustedInput", "getTrustedInputBIP143", "getAppAndVersion", "appAndVersion", "checkIsBtcLegacy", "isBtcLegacy", "import_hw_transport", "_TransportSpeculosHTTP", "Transport", "baseURL", "but", "action", "apdu", "hex", "json", "data", "TransportSpeculosHTTP", "__publicField", "transport", "eventSource", "error", "import_hw_transport_webusb", "useTransports", "createUSBTransport", "TransportWebUSB", "createSpeculosTransport", "baseURL", "TransportSpeculosHTTP", "defaultPath", "defaultType", "createUSBTransport", "createSpeculosTransport", "useTransports", "transportCreators", "BitcoinLedgerSigner", "options", "transportCreatorType", "transportCreator", "transport", "Btc_default", "callback", "timeout", "resolve", "reject", "ledgerConnectionError", "btc", "i", "result", "error", "address", "message", "messageHex", "v", "signature", "err", "path", "transaction", "from", "to", "value", "transactionHex", "tx"] + "sourcesContent": ["module.exports = require('crypto').createHash\n", "module.exports = require('crypto').createHmac\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst createHash = require('create-hash');\nconst createHmac = require('create-hmac');\nfunction hash160(buffer) {\n const sha256Hash = createHash('sha256')\n .update(buffer)\n .digest();\n try {\n return createHash('rmd160')\n .update(sha256Hash)\n .digest();\n }\n catch (err) {\n return createHash('ripemd160')\n .update(sha256Hash)\n .digest();\n }\n}\nexports.hash160 = hash160;\nfunction hmacSHA512(key, data) {\n return createHmac('sha512', key)\n .update(data)\n .digest();\n}\nexports.hmacSHA512 = hmacSHA512;\n", "/*! safe-buffer. MIT License. Feross Aboukhadijeh */\n/* eslint-disable node/no-deprecated-api */\nvar buffer = require('buffer')\nvar Buffer = buffer.Buffer\n\n// alternative to using Object.keys for old browsers\nfunction copyProps (src, dst) {\n for (var key in src) {\n dst[key] = src[key]\n }\n}\nif (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {\n module.exports = buffer\n} else {\n // Copy properties from require('buffer')\n copyProps(buffer, exports)\n exports.Buffer = SafeBuffer\n}\n\nfunction SafeBuffer (arg, encodingOrOffset, length) {\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.prototype = Object.create(Buffer.prototype)\n\n// Copy static methods from Buffer\ncopyProps(Buffer, SafeBuffer)\n\nSafeBuffer.from = function (arg, encodingOrOffset, length) {\n if (typeof arg === 'number') {\n throw new TypeError('Argument must not be a number')\n }\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.alloc = function (size, fill, encoding) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n var buf = Buffer(size)\n if (fill !== undefined) {\n if (typeof encoding === 'string') {\n buf.fill(fill, encoding)\n } else {\n buf.fill(fill)\n }\n } else {\n buf.fill(0)\n }\n return buf\n}\n\nSafeBuffer.allocUnsafe = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return Buffer(size)\n}\n\nSafeBuffer.allocUnsafeSlow = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return buffer.SlowBuffer(size)\n}\n", "'use strict'\n// base-x encoding / decoding\n// Copyright (c) 2018 base-x contributors\n// Copyright (c) 2014-2018 The Bitcoin Core developers (base58.cpp)\n// Distributed under the MIT software license, see the accompanying\n// file LICENSE or http://www.opensource.org/licenses/mit-license.php.\n// @ts-ignore\nvar _Buffer = require('safe-buffer').Buffer\nfunction base (ALPHABET) {\n if (ALPHABET.length >= 255) { throw new TypeError('Alphabet too long') }\n var BASE_MAP = new Uint8Array(256)\n for (var j = 0; j < BASE_MAP.length; j++) {\n BASE_MAP[j] = 255\n }\n for (var i = 0; i < ALPHABET.length; i++) {\n var x = ALPHABET.charAt(i)\n var xc = x.charCodeAt(0)\n if (BASE_MAP[xc] !== 255) { throw new TypeError(x + ' is ambiguous') }\n BASE_MAP[xc] = i\n }\n var BASE = ALPHABET.length\n var LEADER = ALPHABET.charAt(0)\n var FACTOR = Math.log(BASE) / Math.log(256) // log(BASE) / log(256), rounded up\n var iFACTOR = Math.log(256) / Math.log(BASE) // log(256) / log(BASE), rounded up\n function encode (source) {\n if (Array.isArray(source) || source instanceof Uint8Array) { source = _Buffer.from(source) }\n if (!_Buffer.isBuffer(source)) { throw new TypeError('Expected Buffer') }\n if (source.length === 0) { return '' }\n // Skip & count leading zeroes.\n var zeroes = 0\n var length = 0\n var pbegin = 0\n var pend = source.length\n while (pbegin !== pend && source[pbegin] === 0) {\n pbegin++\n zeroes++\n }\n // Allocate enough space in big-endian base58 representation.\n var size = ((pend - pbegin) * iFACTOR + 1) >>> 0\n var b58 = new Uint8Array(size)\n // Process the bytes.\n while (pbegin !== pend) {\n var carry = source[pbegin]\n // Apply \"b58 = b58 * 256 + ch\".\n var i = 0\n for (var it1 = size - 1; (carry !== 0 || i < length) && (it1 !== -1); it1--, i++) {\n carry += (256 * b58[it1]) >>> 0\n b58[it1] = (carry % BASE) >>> 0\n carry = (carry / BASE) >>> 0\n }\n if (carry !== 0) { throw new Error('Non-zero carry') }\n length = i\n pbegin++\n }\n // Skip leading zeroes in base58 result.\n var it2 = size - length\n while (it2 !== size && b58[it2] === 0) {\n it2++\n }\n // Translate the result into a string.\n var str = LEADER.repeat(zeroes)\n for (; it2 < size; ++it2) { str += ALPHABET.charAt(b58[it2]) }\n return str\n }\n function decodeUnsafe (source) {\n if (typeof source !== 'string') { throw new TypeError('Expected String') }\n if (source.length === 0) { return _Buffer.alloc(0) }\n var psz = 0\n // Skip and count leading '1's.\n var zeroes = 0\n var length = 0\n while (source[psz] === LEADER) {\n zeroes++\n psz++\n }\n // Allocate enough space in big-endian base256 representation.\n var size = (((source.length - psz) * FACTOR) + 1) >>> 0 // log(58) / log(256), rounded up.\n var b256 = new Uint8Array(size)\n // Process the characters.\n while (source[psz]) {\n // Decode character\n var carry = BASE_MAP[source.charCodeAt(psz)]\n // Invalid character\n if (carry === 255) { return }\n var i = 0\n for (var it3 = size - 1; (carry !== 0 || i < length) && (it3 !== -1); it3--, i++) {\n carry += (BASE * b256[it3]) >>> 0\n b256[it3] = (carry % 256) >>> 0\n carry = (carry / 256) >>> 0\n }\n if (carry !== 0) { throw new Error('Non-zero carry') }\n length = i\n psz++\n }\n // Skip leading zeroes in b256.\n var it4 = size - length\n while (it4 !== size && b256[it4] === 0) {\n it4++\n }\n var vch = _Buffer.allocUnsafe(zeroes + (size - it4))\n vch.fill(0x00, 0, zeroes)\n var j = zeroes\n while (it4 !== size) {\n vch[j++] = b256[it4++]\n }\n return vch\n }\n function decode (string) {\n var buffer = decodeUnsafe(string)\n if (buffer) { return buffer }\n throw new Error('Non-base' + BASE + ' character')\n }\n return {\n encode: encode,\n decodeUnsafe: decodeUnsafe,\n decode: decode\n }\n}\nmodule.exports = base\n", "var basex = require('base-x')\nvar ALPHABET = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz'\n\nmodule.exports = basex(ALPHABET)\n", "'use strict'\n\nvar base58 = require('bs58')\nvar Buffer = require('safe-buffer').Buffer\n\nmodule.exports = function (checksumFn) {\n // Encode a buffer as a base58-check encoded string\n function encode (payload) {\n var checksum = checksumFn(payload)\n\n return base58.encode(Buffer.concat([\n payload,\n checksum\n ], payload.length + 4))\n }\n\n function decodeRaw (buffer) {\n var payload = buffer.slice(0, -4)\n var checksum = buffer.slice(-4)\n var newChecksum = checksumFn(payload)\n\n if (checksum[0] ^ newChecksum[0] |\n checksum[1] ^ newChecksum[1] |\n checksum[2] ^ newChecksum[2] |\n checksum[3] ^ newChecksum[3]) return\n\n return payload\n }\n\n // Decode a base58-check encoded string to a buffer, no result if checksum is wrong\n function decodeUnsafe (string) {\n var buffer = base58.decodeUnsafe(string)\n if (!buffer) return\n\n return decodeRaw(buffer)\n }\n\n function decode (string) {\n var buffer = base58.decode(string)\n var payload = decodeRaw(buffer, checksumFn)\n if (!payload) throw new Error('Invalid checksum')\n return payload\n }\n\n return {\n encode: encode,\n decode: decode,\n decodeUnsafe: decodeUnsafe\n }\n}\n", "'use strict'\n\nvar createHash = require('create-hash')\nvar bs58checkBase = require('./base')\n\n// SHA256(SHA256(buffer))\nfunction sha256x2 (buffer) {\n var tmp = createHash('sha256').update(buffer).digest()\n return createHash('sha256').update(tmp).digest()\n}\n\nmodule.exports = bs58checkBase(sha256x2)\n", "\n/**\n * Module dependencies.\n */\n\nvar sep = require('path').sep || '/';\n\n/**\n * Module exports.\n */\n\nmodule.exports = fileUriToPath;\n\n/**\n * File URI to Path function.\n *\n * @param {String} uri\n * @return {String} path\n * @api public\n */\n\nfunction fileUriToPath (uri) {\n if ('string' != typeof uri ||\n uri.length <= 7 ||\n 'file://' != uri.substring(0, 7)) {\n throw new TypeError('must pass in a file:// URI to convert to a file path');\n }\n\n var rest = decodeURI(uri.substring(7));\n var firstSlash = rest.indexOf('/');\n var host = rest.substring(0, firstSlash);\n var path = rest.substring(firstSlash + 1);\n\n // 2. Scheme Definition\n // As a special case, can be the string \"localhost\" or the empty\n // string; this is interpreted as \"the machine from which the URL is\n // being interpreted\".\n if ('localhost' == host) host = '';\n\n if (host) {\n host = sep + sep + host;\n }\n\n // 3.2 Drives, drive letters, mount points, file system root\n // Drive letters are mapped into the top of a file URI in various ways,\n // depending on the implementation; some applications substitute\n // vertical bar (\"|\") for the colon after the drive letter, yielding\n // \"file:///c|/tmp/test.txt\". In some cases, the colon is left\n // unchanged, as in \"file:///c:/tmp/test.txt\". In other cases, the\n // colon is simply omitted, as in \"file:///c/tmp/test.txt\".\n path = path.replace(/^(.+)\\|/, '$1:');\n\n // for Windows, we need to invert the path separators from what a URI uses\n if (sep == '\\\\') {\n path = path.replace(/\\//g, '\\\\');\n }\n\n if (/^.+\\:/.test(path)) {\n // has Windows drive at beginning of path\n } else {\n // unix path\u2026\n path = sep + path;\n }\n\n return host + path;\n}\n", "/**\n * Module dependencies.\n */\n\nvar fs = require('fs'),\n path = require('path'),\n fileURLToPath = require('file-uri-to-path'),\n join = path.join,\n dirname = path.dirname,\n exists =\n (fs.accessSync &&\n function(path) {\n try {\n fs.accessSync(path);\n } catch (e) {\n return false;\n }\n return true;\n }) ||\n fs.existsSync ||\n path.existsSync,\n defaults = {\n arrow: process.env.NODE_BINDINGS_ARROW || ' \u2192 ',\n compiled: process.env.NODE_BINDINGS_COMPILED_DIR || 'compiled',\n platform: process.platform,\n arch: process.arch,\n nodePreGyp:\n 'node-v' +\n process.versions.modules +\n '-' +\n process.platform +\n '-' +\n process.arch,\n version: process.versions.node,\n bindings: 'bindings.node',\n try: [\n // node-gyp's linked version in the \"build\" dir\n ['module_root', 'build', 'bindings'],\n // node-waf and gyp_addon (a.k.a node-gyp)\n ['module_root', 'build', 'Debug', 'bindings'],\n ['module_root', 'build', 'Release', 'bindings'],\n // Debug files, for development (legacy behavior, remove for node v0.9)\n ['module_root', 'out', 'Debug', 'bindings'],\n ['module_root', 'Debug', 'bindings'],\n // Release files, but manually compiled (legacy behavior, remove for node v0.9)\n ['module_root', 'out', 'Release', 'bindings'],\n ['module_root', 'Release', 'bindings'],\n // Legacy from node-waf, node <= 0.4.x\n ['module_root', 'build', 'default', 'bindings'],\n // Production \"Release\" buildtype binary (meh...)\n ['module_root', 'compiled', 'version', 'platform', 'arch', 'bindings'],\n // node-qbs builds\n ['module_root', 'addon-build', 'release', 'install-root', 'bindings'],\n ['module_root', 'addon-build', 'debug', 'install-root', 'bindings'],\n ['module_root', 'addon-build', 'default', 'install-root', 'bindings'],\n // node-pre-gyp path ./lib/binding/{node_abi}-{platform}-{arch}\n ['module_root', 'lib', 'binding', 'nodePreGyp', 'bindings']\n ]\n };\n\n/**\n * The main `bindings()` function loads the compiled bindings for a given module.\n * It uses V8's Error API to determine the parent filename that this function is\n * being invoked from, which is then used to find the root directory.\n */\n\nfunction bindings(opts) {\n // Argument surgery\n if (typeof opts == 'string') {\n opts = { bindings: opts };\n } else if (!opts) {\n opts = {};\n }\n\n // maps `defaults` onto `opts` object\n Object.keys(defaults).map(function(i) {\n if (!(i in opts)) opts[i] = defaults[i];\n });\n\n // Get the module root\n if (!opts.module_root) {\n opts.module_root = exports.getRoot(exports.getFileName());\n }\n\n // Ensure the given bindings name ends with .node\n if (path.extname(opts.bindings) != '.node') {\n opts.bindings += '.node';\n }\n\n // https://github.com/webpack/webpack/issues/4175#issuecomment-342931035\n var requireFunc =\n typeof __webpack_require__ === 'function'\n ? __non_webpack_require__\n : require;\n\n var tries = [],\n i = 0,\n l = opts.try.length,\n n,\n b,\n err;\n\n for (; i < l; i++) {\n n = join.apply(\n null,\n opts.try[i].map(function(p) {\n return opts[p] || p;\n })\n );\n tries.push(n);\n try {\n b = opts.path ? requireFunc.resolve(n) : requireFunc(n);\n if (!opts.path) {\n b.path = n;\n }\n return b;\n } catch (e) {\n if (e.code !== 'MODULE_NOT_FOUND' &&\n e.code !== 'QUALIFIED_PATH_RESOLUTION_FAILED' &&\n !/not find/i.test(e.message)) {\n throw e;\n }\n }\n }\n\n err = new Error(\n 'Could not locate the bindings file. Tried:\\n' +\n tries\n .map(function(a) {\n return opts.arrow + a;\n })\n .join('\\n')\n );\n err.tries = tries;\n throw err;\n}\nmodule.exports = exports = bindings;\n\n/**\n * Gets the filename of the JavaScript file that invokes this function.\n * Used to help find the root directory of a module.\n * Optionally accepts an filename argument to skip when searching for the invoking filename\n */\n\nexports.getFileName = function getFileName(calling_file) {\n var origPST = Error.prepareStackTrace,\n origSTL = Error.stackTraceLimit,\n dummy = {},\n fileName;\n\n Error.stackTraceLimit = 10;\n\n Error.prepareStackTrace = function(e, st) {\n for (var i = 0, l = st.length; i < l; i++) {\n fileName = st[i].getFileName();\n if (fileName !== __filename) {\n if (calling_file) {\n if (fileName !== calling_file) {\n return;\n }\n } else {\n return;\n }\n }\n }\n };\n\n // run the 'prepareStackTrace' function above\n Error.captureStackTrace(dummy);\n dummy.stack;\n\n // cleanup\n Error.prepareStackTrace = origPST;\n Error.stackTraceLimit = origSTL;\n\n // handle filename that starts with \"file://\"\n var fileSchema = 'file://';\n if (fileName.indexOf(fileSchema) === 0) {\n fileName = fileURLToPath(fileName);\n }\n\n return fileName;\n};\n\n/**\n * Gets the root directory of a module, given an arbitrary filename\n * somewhere in the module tree. The \"root directory\" is the directory\n * containing the `package.json` file.\n *\n * In: /home/nate/node-native-module/lib/index.js\n * Out: /home/nate/node-native-module\n */\n\nexports.getRoot = function getRoot(file) {\n var dir = dirname(file),\n prev;\n while (true) {\n if (dir === '.') {\n // Avoids an infinite loop in rare cases, like the REPL\n dir = process.cwd();\n }\n if (\n exists(join(dir, 'package.json')) ||\n exists(join(dir, 'node_modules'))\n ) {\n // Found the 'package.json' file or 'node_modules' dir; we're done\n return dir;\n }\n if (prev === dir) {\n // Got to the top\n throw new Error(\n 'Could not find module root given file: \"' +\n file +\n '\". Do you have a `package.json` file? '\n );\n }\n // Try the parent dir next\n prev = dir;\n dir = join(dir, '..');\n }\n};\n", "'use strict'\n\nlet binding = require('bindings')('secp256k1')\ndelete binding.path\n\n// NaN drops function names, add them for is* (via toJSON)\nfor (let key in binding) {\n if (key.indexOf('is') !== 0) continue\n\n binding[key].toJSON = function () { return key }\n}\n\nmodule.exports = binding\n", "(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits (ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n\n // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n Buffer = window.Buffer;\n } else {\n Buffer = require('buffer').Buffer;\n }\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n this.negative = 1;\n }\n\n if (start < number.length) {\n if (base === 16) {\n this._parseHex(number, start, endian);\n } else {\n this._parseBase(number, base, start);\n if (endian === 'le') {\n this._initArray(this.toArray(), base, endian);\n }\n }\n }\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [ number & 0x3ffffff ];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [ 0 ];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this.strip();\n };\n\n function parseHex4Bits (string, index) {\n var c = string.charCodeAt(index);\n // 'A' - 'F'\n if (c >= 65 && c <= 70) {\n return c - 55;\n // 'a' - 'f'\n } else if (c >= 97 && c <= 102) {\n return c - 87;\n // '0' - '9'\n } else {\n return (c - 48) & 0xf;\n }\n }\n\n function parseHexByte (string, lowerBound, index) {\n var r = parseHex4Bits(string, index);\n if (index - 1 >= lowerBound) {\n r |= parseHex4Bits(string, index - 1) << 4;\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start, endian) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n // 24-bits chunks\n var off = 0;\n var j = 0;\n\n var w;\n if (endian === 'be') {\n for (i = number.length - 1; i >= start; i -= 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n } else {\n var parseLength = number.length - start;\n for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n }\n\n this.strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n r += c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n r += c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n r += c;\n }\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [ 0 ];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n this.strip();\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype.strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n BN.prototype.inspect = function inspect () {\n return (this.red ? '';\n };\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16);\n };\n\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n assert(typeof Buffer !== 'undefined');\n return this.toArrayLike(Buffer, endian, length);\n };\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n this.strip();\n var littleEndian = endian === 'le';\n var res = new ArrayType(reqLength);\n\n var b, i;\n var q = this.clone();\n if (!littleEndian) {\n // Assume big-endian\n for (i = 0; i < reqLength - byteLength; i++) {\n res[i] = 0;\n }\n\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[reqLength - i - 1] = b;\n }\n } else {\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[i] = b;\n }\n\n for (; i < reqLength; i++) {\n res[i] = 0;\n }\n }\n\n return res;\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] & (1 << wbit)) >>> wbit;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this.strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this.strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this.strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this.strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this.strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this.strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n function jumboMulTo (self, num, out) {\n var fftm = new FFTM();\n return fftm.mulp(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out.strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this.strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) < num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this.strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this.strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this.strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q.strip();\n }\n a.strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || r2 === 1 && cmp === 0) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modn = function modn (num) {\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return acc;\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n return this.strip();\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this.strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is BN v4 instance\n r.strip();\n } else {\n // r is BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n return a.umod(this.m)._forceRed(this);\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);\n", "(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits (ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n\n // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n Buffer = window.Buffer;\n } else {\n Buffer = require('buffer').Buffer;\n }\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n this.negative = 1;\n }\n\n if (start < number.length) {\n if (base === 16) {\n this._parseHex(number, start, endian);\n } else {\n this._parseBase(number, base, start);\n if (endian === 'le') {\n this._initArray(this.toArray(), base, endian);\n }\n }\n }\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [ number & 0x3ffffff ];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [ 0 ];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this.strip();\n };\n\n function parseHex4Bits (string, index) {\n var c = string.charCodeAt(index);\n // 'A' - 'F'\n if (c >= 65 && c <= 70) {\n return c - 55;\n // 'a' - 'f'\n } else if (c >= 97 && c <= 102) {\n return c - 87;\n // '0' - '9'\n } else {\n return (c - 48) & 0xf;\n }\n }\n\n function parseHexByte (string, lowerBound, index) {\n var r = parseHex4Bits(string, index);\n if (index - 1 >= lowerBound) {\n r |= parseHex4Bits(string, index - 1) << 4;\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start, endian) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n // 24-bits chunks\n var off = 0;\n var j = 0;\n\n var w;\n if (endian === 'be') {\n for (i = number.length - 1; i >= start; i -= 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n } else {\n var parseLength = number.length - start;\n for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n }\n\n this.strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n r += c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n r += c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n r += c;\n }\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [ 0 ];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n this.strip();\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype.strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n BN.prototype.inspect = function inspect () {\n return (this.red ? '';\n };\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16);\n };\n\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n assert(typeof Buffer !== 'undefined');\n return this.toArrayLike(Buffer, endian, length);\n };\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n this.strip();\n var littleEndian = endian === 'le';\n var res = new ArrayType(reqLength);\n\n var b, i;\n var q = this.clone();\n if (!littleEndian) {\n // Assume big-endian\n for (i = 0; i < reqLength - byteLength; i++) {\n res[i] = 0;\n }\n\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[reqLength - i - 1] = b;\n }\n } else {\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[i] = b;\n }\n\n for (; i < reqLength; i++) {\n res[i] = 0;\n }\n }\n\n return res;\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] & (1 << wbit)) >>> wbit;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this.strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this.strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this.strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this.strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this.strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this.strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n function jumboMulTo (self, num, out) {\n var fftm = new FFTM();\n return fftm.mulp(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out.strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this.strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) < num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this.strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this.strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this.strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q.strip();\n }\n a.strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || r2 === 1 && cmp === 0) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modn = function modn (num) {\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return acc;\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n return this.strip();\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this.strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is BN v4 instance\n r.strip();\n } else {\n // r is BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n return a.umod(this.m)._forceRed(this);\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);\n", "module.exports = assert;\n\nfunction assert(val, msg) {\n if (!val)\n throw new Error(msg || 'Assertion failed');\n}\n\nassert.equal = function assertEqual(l, r, msg) {\n if (l != r)\n throw new Error(msg || ('Assertion failed: ' + l + ' != ' + r));\n};\n", "'use strict';\n\nvar utils = exports;\n\nfunction toArray(msg, enc) {\n if (Array.isArray(msg))\n return msg.slice();\n if (!msg)\n return [];\n var res = [];\n if (typeof msg !== 'string') {\n for (var i = 0; i < msg.length; i++)\n res[i] = msg[i] | 0;\n return res;\n }\n if (enc === 'hex') {\n msg = msg.replace(/[^a-z0-9]+/ig, '');\n if (msg.length % 2 !== 0)\n msg = '0' + msg;\n for (var i = 0; i < msg.length; i += 2)\n res.push(parseInt(msg[i] + msg[i + 1], 16));\n } else {\n for (var i = 0; i < msg.length; i++) {\n var c = msg.charCodeAt(i);\n var hi = c >> 8;\n var lo = c & 0xff;\n if (hi)\n res.push(hi, lo);\n else\n res.push(lo);\n }\n }\n return res;\n}\nutils.toArray = toArray;\n\nfunction zero2(word) {\n if (word.length === 1)\n return '0' + word;\n else\n return word;\n}\nutils.zero2 = zero2;\n\nfunction toHex(msg) {\n var res = '';\n for (var i = 0; i < msg.length; i++)\n res += zero2(msg[i].toString(16));\n return res;\n}\nutils.toHex = toHex;\n\nutils.encode = function encode(arr, enc) {\n if (enc === 'hex')\n return toHex(arr);\n else\n return arr;\n};\n", "'use strict';\n\nvar utils = exports;\nvar BN = require('bn.js');\nvar minAssert = require('minimalistic-assert');\nvar minUtils = require('minimalistic-crypto-utils');\n\nutils.assert = minAssert;\nutils.toArray = minUtils.toArray;\nutils.zero2 = minUtils.zero2;\nutils.toHex = minUtils.toHex;\nutils.encode = minUtils.encode;\n\n// Represent num in a w-NAF form\nfunction getNAF(num, w, bits) {\n var naf = new Array(Math.max(num.bitLength(), bits) + 1);\n naf.fill(0);\n\n var ws = 1 << (w + 1);\n var k = num.clone();\n\n for (var i = 0; i < naf.length; i++) {\n var z;\n var mod = k.andln(ws - 1);\n if (k.isOdd()) {\n if (mod > (ws >> 1) - 1)\n z = (ws >> 1) - mod;\n else\n z = mod;\n k.isubn(z);\n } else {\n z = 0;\n }\n\n naf[i] = z;\n k.iushrn(1);\n }\n\n return naf;\n}\nutils.getNAF = getNAF;\n\n// Represent k1, k2 in a Joint Sparse Form\nfunction getJSF(k1, k2) {\n var jsf = [\n [],\n [],\n ];\n\n k1 = k1.clone();\n k2 = k2.clone();\n var d1 = 0;\n var d2 = 0;\n var m8;\n while (k1.cmpn(-d1) > 0 || k2.cmpn(-d2) > 0) {\n // First phase\n var m14 = (k1.andln(3) + d1) & 3;\n var m24 = (k2.andln(3) + d2) & 3;\n if (m14 === 3)\n m14 = -1;\n if (m24 === 3)\n m24 = -1;\n var u1;\n if ((m14 & 1) === 0) {\n u1 = 0;\n } else {\n m8 = (k1.andln(7) + d1) & 7;\n if ((m8 === 3 || m8 === 5) && m24 === 2)\n u1 = -m14;\n else\n u1 = m14;\n }\n jsf[0].push(u1);\n\n var u2;\n if ((m24 & 1) === 0) {\n u2 = 0;\n } else {\n m8 = (k2.andln(7) + d2) & 7;\n if ((m8 === 3 || m8 === 5) && m14 === 2)\n u2 = -m24;\n else\n u2 = m24;\n }\n jsf[1].push(u2);\n\n // Second phase\n if (2 * d1 === u1 + 1)\n d1 = 1 - d1;\n if (2 * d2 === u2 + 1)\n d2 = 1 - d2;\n k1.iushrn(1);\n k2.iushrn(1);\n }\n\n return jsf;\n}\nutils.getJSF = getJSF;\n\nfunction cachedProperty(obj, name, computer) {\n var key = '_' + name;\n obj.prototype[name] = function cachedProperty() {\n return this[key] !== undefined ? this[key] :\n this[key] = computer.call(this);\n };\n}\nutils.cachedProperty = cachedProperty;\n\nfunction parseBytes(bytes) {\n return typeof bytes === 'string' ? utils.toArray(bytes, 'hex') :\n bytes;\n}\nutils.parseBytes = parseBytes;\n\nfunction intFromLE(bytes) {\n return new BN(bytes, 'hex', 'le');\n}\nutils.intFromLE = intFromLE;\n\n", "var r;\n\nmodule.exports = function rand(len) {\n if (!r)\n r = new Rand(null);\n\n return r.generate(len);\n};\n\nfunction Rand(rand) {\n this.rand = rand;\n}\nmodule.exports.Rand = Rand;\n\nRand.prototype.generate = function generate(len) {\n return this._rand(len);\n};\n\n// Emulate crypto API using randy\nRand.prototype._rand = function _rand(n) {\n if (this.rand.getBytes)\n return this.rand.getBytes(n);\n\n var res = new Uint8Array(n);\n for (var i = 0; i < res.length; i++)\n res[i] = this.rand.getByte();\n return res;\n};\n\nif (typeof self === 'object') {\n if (self.crypto && self.crypto.getRandomValues) {\n // Modern browsers\n Rand.prototype._rand = function _rand(n) {\n var arr = new Uint8Array(n);\n self.crypto.getRandomValues(arr);\n return arr;\n };\n } else if (self.msCrypto && self.msCrypto.getRandomValues) {\n // IE\n Rand.prototype._rand = function _rand(n) {\n var arr = new Uint8Array(n);\n self.msCrypto.getRandomValues(arr);\n return arr;\n };\n\n // Safari's WebWorkers do not have `crypto`\n } else if (typeof window === 'object') {\n // Old junk\n Rand.prototype._rand = function() {\n throw new Error('Not implemented yet');\n };\n }\n} else {\n // Node.js or Web worker with no crypto support\n try {\n var crypto = require('crypto');\n if (typeof crypto.randomBytes !== 'function')\n throw new Error('Not supported');\n\n Rand.prototype._rand = function _rand(n) {\n return crypto.randomBytes(n);\n };\n } catch (e) {\n }\n}\n", "'use strict';\n\nvar BN = require('bn.js');\nvar utils = require('../utils');\nvar getNAF = utils.getNAF;\nvar getJSF = utils.getJSF;\nvar assert = utils.assert;\n\nfunction BaseCurve(type, conf) {\n this.type = type;\n this.p = new BN(conf.p, 16);\n\n // Use Montgomery, when there is no fast reduction for the prime\n this.red = conf.prime ? BN.red(conf.prime) : BN.mont(this.p);\n\n // Useful for many curves\n this.zero = new BN(0).toRed(this.red);\n this.one = new BN(1).toRed(this.red);\n this.two = new BN(2).toRed(this.red);\n\n // Curve configuration, optional\n this.n = conf.n && new BN(conf.n, 16);\n this.g = conf.g && this.pointFromJSON(conf.g, conf.gRed);\n\n // Temporary arrays\n this._wnafT1 = new Array(4);\n this._wnafT2 = new Array(4);\n this._wnafT3 = new Array(4);\n this._wnafT4 = new Array(4);\n\n this._bitLength = this.n ? this.n.bitLength() : 0;\n\n // Generalized Greg Maxwell's trick\n var adjustCount = this.n && this.p.div(this.n);\n if (!adjustCount || adjustCount.cmpn(100) > 0) {\n this.redN = null;\n } else {\n this._maxwellTrick = true;\n this.redN = this.n.toRed(this.red);\n }\n}\nmodule.exports = BaseCurve;\n\nBaseCurve.prototype.point = function point() {\n throw new Error('Not implemented');\n};\n\nBaseCurve.prototype.validate = function validate() {\n throw new Error('Not implemented');\n};\n\nBaseCurve.prototype._fixedNafMul = function _fixedNafMul(p, k) {\n assert(p.precomputed);\n var doubles = p._getDoubles();\n\n var naf = getNAF(k, 1, this._bitLength);\n var I = (1 << (doubles.step + 1)) - (doubles.step % 2 === 0 ? 2 : 1);\n I /= 3;\n\n // Translate into more windowed form\n var repr = [];\n var j;\n var nafW;\n for (j = 0; j < naf.length; j += doubles.step) {\n nafW = 0;\n for (var l = j + doubles.step - 1; l >= j; l--)\n nafW = (nafW << 1) + naf[l];\n repr.push(nafW);\n }\n\n var a = this.jpoint(null, null, null);\n var b = this.jpoint(null, null, null);\n for (var i = I; i > 0; i--) {\n for (j = 0; j < repr.length; j++) {\n nafW = repr[j];\n if (nafW === i)\n b = b.mixedAdd(doubles.points[j]);\n else if (nafW === -i)\n b = b.mixedAdd(doubles.points[j].neg());\n }\n a = a.add(b);\n }\n return a.toP();\n};\n\nBaseCurve.prototype._wnafMul = function _wnafMul(p, k) {\n var w = 4;\n\n // Precompute window\n var nafPoints = p._getNAFPoints(w);\n w = nafPoints.wnd;\n var wnd = nafPoints.points;\n\n // Get NAF form\n var naf = getNAF(k, w, this._bitLength);\n\n // Add `this`*(N+1) for every w-NAF index\n var acc = this.jpoint(null, null, null);\n for (var i = naf.length - 1; i >= 0; i--) {\n // Count zeroes\n for (var l = 0; i >= 0 && naf[i] === 0; i--)\n l++;\n if (i >= 0)\n l++;\n acc = acc.dblp(l);\n\n if (i < 0)\n break;\n var z = naf[i];\n assert(z !== 0);\n if (p.type === 'affine') {\n // J +- P\n if (z > 0)\n acc = acc.mixedAdd(wnd[(z - 1) >> 1]);\n else\n acc = acc.mixedAdd(wnd[(-z - 1) >> 1].neg());\n } else {\n // J +- J\n if (z > 0)\n acc = acc.add(wnd[(z - 1) >> 1]);\n else\n acc = acc.add(wnd[(-z - 1) >> 1].neg());\n }\n }\n return p.type === 'affine' ? acc.toP() : acc;\n};\n\nBaseCurve.prototype._wnafMulAdd = function _wnafMulAdd(defW,\n points,\n coeffs,\n len,\n jacobianResult) {\n var wndWidth = this._wnafT1;\n var wnd = this._wnafT2;\n var naf = this._wnafT3;\n\n // Fill all arrays\n var max = 0;\n var i;\n var j;\n var p;\n for (i = 0; i < len; i++) {\n p = points[i];\n var nafPoints = p._getNAFPoints(defW);\n wndWidth[i] = nafPoints.wnd;\n wnd[i] = nafPoints.points;\n }\n\n // Comb small window NAFs\n for (i = len - 1; i >= 1; i -= 2) {\n var a = i - 1;\n var b = i;\n if (wndWidth[a] !== 1 || wndWidth[b] !== 1) {\n naf[a] = getNAF(coeffs[a], wndWidth[a], this._bitLength);\n naf[b] = getNAF(coeffs[b], wndWidth[b], this._bitLength);\n max = Math.max(naf[a].length, max);\n max = Math.max(naf[b].length, max);\n continue;\n }\n\n var comb = [\n points[a], /* 1 */\n null, /* 3 */\n null, /* 5 */\n points[b], /* 7 */\n ];\n\n // Try to avoid Projective points, if possible\n if (points[a].y.cmp(points[b].y) === 0) {\n comb[1] = points[a].add(points[b]);\n comb[2] = points[a].toJ().mixedAdd(points[b].neg());\n } else if (points[a].y.cmp(points[b].y.redNeg()) === 0) {\n comb[1] = points[a].toJ().mixedAdd(points[b]);\n comb[2] = points[a].add(points[b].neg());\n } else {\n comb[1] = points[a].toJ().mixedAdd(points[b]);\n comb[2] = points[a].toJ().mixedAdd(points[b].neg());\n }\n\n var index = [\n -3, /* -1 -1 */\n -1, /* -1 0 */\n -5, /* -1 1 */\n -7, /* 0 -1 */\n 0, /* 0 0 */\n 7, /* 0 1 */\n 5, /* 1 -1 */\n 1, /* 1 0 */\n 3, /* 1 1 */\n ];\n\n var jsf = getJSF(coeffs[a], coeffs[b]);\n max = Math.max(jsf[0].length, max);\n naf[a] = new Array(max);\n naf[b] = new Array(max);\n for (j = 0; j < max; j++) {\n var ja = jsf[0][j] | 0;\n var jb = jsf[1][j] | 0;\n\n naf[a][j] = index[(ja + 1) * 3 + (jb + 1)];\n naf[b][j] = 0;\n wnd[a] = comb;\n }\n }\n\n var acc = this.jpoint(null, null, null);\n var tmp = this._wnafT4;\n for (i = max; i >= 0; i--) {\n var k = 0;\n\n while (i >= 0) {\n var zero = true;\n for (j = 0; j < len; j++) {\n tmp[j] = naf[j][i] | 0;\n if (tmp[j] !== 0)\n zero = false;\n }\n if (!zero)\n break;\n k++;\n i--;\n }\n if (i >= 0)\n k++;\n acc = acc.dblp(k);\n if (i < 0)\n break;\n\n for (j = 0; j < len; j++) {\n var z = tmp[j];\n p;\n if (z === 0)\n continue;\n else if (z > 0)\n p = wnd[j][(z - 1) >> 1];\n else if (z < 0)\n p = wnd[j][(-z - 1) >> 1].neg();\n\n if (p.type === 'affine')\n acc = acc.mixedAdd(p);\n else\n acc = acc.add(p);\n }\n }\n // Zeroify references\n for (i = 0; i < len; i++)\n wnd[i] = null;\n\n if (jacobianResult)\n return acc;\n else\n return acc.toP();\n};\n\nfunction BasePoint(curve, type) {\n this.curve = curve;\n this.type = type;\n this.precomputed = null;\n}\nBaseCurve.BasePoint = BasePoint;\n\nBasePoint.prototype.eq = function eq(/*other*/) {\n throw new Error('Not implemented');\n};\n\nBasePoint.prototype.validate = function validate() {\n return this.curve.validate(this);\n};\n\nBaseCurve.prototype.decodePoint = function decodePoint(bytes, enc) {\n bytes = utils.toArray(bytes, enc);\n\n var len = this.p.byteLength();\n\n // uncompressed, hybrid-odd, hybrid-even\n if ((bytes[0] === 0x04 || bytes[0] === 0x06 || bytes[0] === 0x07) &&\n bytes.length - 1 === 2 * len) {\n if (bytes[0] === 0x06)\n assert(bytes[bytes.length - 1] % 2 === 0);\n else if (bytes[0] === 0x07)\n assert(bytes[bytes.length - 1] % 2 === 1);\n\n var res = this.point(bytes.slice(1, 1 + len),\n bytes.slice(1 + len, 1 + 2 * len));\n\n return res;\n } else if ((bytes[0] === 0x02 || bytes[0] === 0x03) &&\n bytes.length - 1 === len) {\n return this.pointFromX(bytes.slice(1, 1 + len), bytes[0] === 0x03);\n }\n throw new Error('Unknown point format');\n};\n\nBasePoint.prototype.encodeCompressed = function encodeCompressed(enc) {\n return this.encode(enc, true);\n};\n\nBasePoint.prototype._encode = function _encode(compact) {\n var len = this.curve.p.byteLength();\n var x = this.getX().toArray('be', len);\n\n if (compact)\n return [ this.getY().isEven() ? 0x02 : 0x03 ].concat(x);\n\n return [ 0x04 ].concat(x, this.getY().toArray('be', len));\n};\n\nBasePoint.prototype.encode = function encode(enc, compact) {\n return utils.encode(this._encode(compact), enc);\n};\n\nBasePoint.prototype.precompute = function precompute(power) {\n if (this.precomputed)\n return this;\n\n var precomputed = {\n doubles: null,\n naf: null,\n beta: null,\n };\n precomputed.naf = this._getNAFPoints(8);\n precomputed.doubles = this._getDoubles(4, power);\n precomputed.beta = this._getBeta();\n this.precomputed = precomputed;\n\n return this;\n};\n\nBasePoint.prototype._hasDoubles = function _hasDoubles(k) {\n if (!this.precomputed)\n return false;\n\n var doubles = this.precomputed.doubles;\n if (!doubles)\n return false;\n\n return doubles.points.length >= Math.ceil((k.bitLength() + 1) / doubles.step);\n};\n\nBasePoint.prototype._getDoubles = function _getDoubles(step, power) {\n if (this.precomputed && this.precomputed.doubles)\n return this.precomputed.doubles;\n\n var doubles = [ this ];\n var acc = this;\n for (var i = 0; i < power; i += step) {\n for (var j = 0; j < step; j++)\n acc = acc.dbl();\n doubles.push(acc);\n }\n return {\n step: step,\n points: doubles,\n };\n};\n\nBasePoint.prototype._getNAFPoints = function _getNAFPoints(wnd) {\n if (this.precomputed && this.precomputed.naf)\n return this.precomputed.naf;\n\n var res = [ this ];\n var max = (1 << wnd) - 1;\n var dbl = max === 1 ? null : this.dbl();\n for (var i = 1; i < max; i++)\n res[i] = res[i - 1].add(dbl);\n return {\n wnd: wnd,\n points: res,\n };\n};\n\nBasePoint.prototype._getBeta = function _getBeta() {\n return null;\n};\n\nBasePoint.prototype.dblp = function dblp(k) {\n var r = this;\n for (var i = 0; i < k; i++)\n r = r.dbl();\n return r;\n};\n", "if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n })\n }\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n }\n}\n", "try {\n var util = require('util');\n /* istanbul ignore next */\n if (typeof util.inherits !== 'function') throw '';\n module.exports = util.inherits;\n} catch (e) {\n /* istanbul ignore next */\n module.exports = require('./inherits_browser.js');\n}\n", "'use strict';\n\nvar utils = require('../utils');\nvar BN = require('bn.js');\nvar inherits = require('inherits');\nvar Base = require('./base');\n\nvar assert = utils.assert;\n\nfunction ShortCurve(conf) {\n Base.call(this, 'short', conf);\n\n this.a = new BN(conf.a, 16).toRed(this.red);\n this.b = new BN(conf.b, 16).toRed(this.red);\n this.tinv = this.two.redInvm();\n\n this.zeroA = this.a.fromRed().cmpn(0) === 0;\n this.threeA = this.a.fromRed().sub(this.p).cmpn(-3) === 0;\n\n // If the curve is endomorphic, precalculate beta and lambda\n this.endo = this._getEndomorphism(conf);\n this._endoWnafT1 = new Array(4);\n this._endoWnafT2 = new Array(4);\n}\ninherits(ShortCurve, Base);\nmodule.exports = ShortCurve;\n\nShortCurve.prototype._getEndomorphism = function _getEndomorphism(conf) {\n // No efficient endomorphism\n if (!this.zeroA || !this.g || !this.n || this.p.modn(3) !== 1)\n return;\n\n // Compute beta and lambda, that lambda * P = (beta * Px; Py)\n var beta;\n var lambda;\n if (conf.beta) {\n beta = new BN(conf.beta, 16).toRed(this.red);\n } else {\n var betas = this._getEndoRoots(this.p);\n // Choose the smallest beta\n beta = betas[0].cmp(betas[1]) < 0 ? betas[0] : betas[1];\n beta = beta.toRed(this.red);\n }\n if (conf.lambda) {\n lambda = new BN(conf.lambda, 16);\n } else {\n // Choose the lambda that is matching selected beta\n var lambdas = this._getEndoRoots(this.n);\n if (this.g.mul(lambdas[0]).x.cmp(this.g.x.redMul(beta)) === 0) {\n lambda = lambdas[0];\n } else {\n lambda = lambdas[1];\n assert(this.g.mul(lambda).x.cmp(this.g.x.redMul(beta)) === 0);\n }\n }\n\n // Get basis vectors, used for balanced length-two representation\n var basis;\n if (conf.basis) {\n basis = conf.basis.map(function(vec) {\n return {\n a: new BN(vec.a, 16),\n b: new BN(vec.b, 16),\n };\n });\n } else {\n basis = this._getEndoBasis(lambda);\n }\n\n return {\n beta: beta,\n lambda: lambda,\n basis: basis,\n };\n};\n\nShortCurve.prototype._getEndoRoots = function _getEndoRoots(num) {\n // Find roots of for x^2 + x + 1 in F\n // Root = (-1 +- Sqrt(-3)) / 2\n //\n var red = num === this.p ? this.red : BN.mont(num);\n var tinv = new BN(2).toRed(red).redInvm();\n var ntinv = tinv.redNeg();\n\n var s = new BN(3).toRed(red).redNeg().redSqrt().redMul(tinv);\n\n var l1 = ntinv.redAdd(s).fromRed();\n var l2 = ntinv.redSub(s).fromRed();\n return [ l1, l2 ];\n};\n\nShortCurve.prototype._getEndoBasis = function _getEndoBasis(lambda) {\n // aprxSqrt >= sqrt(this.n)\n var aprxSqrt = this.n.ushrn(Math.floor(this.n.bitLength() / 2));\n\n // 3.74\n // Run EGCD, until r(L + 1) < aprxSqrt\n var u = lambda;\n var v = this.n.clone();\n var x1 = new BN(1);\n var y1 = new BN(0);\n var x2 = new BN(0);\n var y2 = new BN(1);\n\n // NOTE: all vectors are roots of: a + b * lambda = 0 (mod n)\n var a0;\n var b0;\n // First vector\n var a1;\n var b1;\n // Second vector\n var a2;\n var b2;\n\n var prevR;\n var i = 0;\n var r;\n var x;\n while (u.cmpn(0) !== 0) {\n var q = v.div(u);\n r = v.sub(q.mul(u));\n x = x2.sub(q.mul(x1));\n var y = y2.sub(q.mul(y1));\n\n if (!a1 && r.cmp(aprxSqrt) < 0) {\n a0 = prevR.neg();\n b0 = x1;\n a1 = r.neg();\n b1 = x;\n } else if (a1 && ++i === 2) {\n break;\n }\n prevR = r;\n\n v = u;\n u = r;\n x2 = x1;\n x1 = x;\n y2 = y1;\n y1 = y;\n }\n a2 = r.neg();\n b2 = x;\n\n var len1 = a1.sqr().add(b1.sqr());\n var len2 = a2.sqr().add(b2.sqr());\n if (len2.cmp(len1) >= 0) {\n a2 = a0;\n b2 = b0;\n }\n\n // Normalize signs\n if (a1.negative) {\n a1 = a1.neg();\n b1 = b1.neg();\n }\n if (a2.negative) {\n a2 = a2.neg();\n b2 = b2.neg();\n }\n\n return [\n { a: a1, b: b1 },\n { a: a2, b: b2 },\n ];\n};\n\nShortCurve.prototype._endoSplit = function _endoSplit(k) {\n var basis = this.endo.basis;\n var v1 = basis[0];\n var v2 = basis[1];\n\n var c1 = v2.b.mul(k).divRound(this.n);\n var c2 = v1.b.neg().mul(k).divRound(this.n);\n\n var p1 = c1.mul(v1.a);\n var p2 = c2.mul(v2.a);\n var q1 = c1.mul(v1.b);\n var q2 = c2.mul(v2.b);\n\n // Calculate answer\n var k1 = k.sub(p1).sub(p2);\n var k2 = q1.add(q2).neg();\n return { k1: k1, k2: k2 };\n};\n\nShortCurve.prototype.pointFromX = function pointFromX(x, odd) {\n x = new BN(x, 16);\n if (!x.red)\n x = x.toRed(this.red);\n\n var y2 = x.redSqr().redMul(x).redIAdd(x.redMul(this.a)).redIAdd(this.b);\n var y = y2.redSqrt();\n if (y.redSqr().redSub(y2).cmp(this.zero) !== 0)\n throw new Error('invalid point');\n\n // XXX Is there any way to tell if the number is odd without converting it\n // to non-red form?\n var isOdd = y.fromRed().isOdd();\n if (odd && !isOdd || !odd && isOdd)\n y = y.redNeg();\n\n return this.point(x, y);\n};\n\nShortCurve.prototype.validate = function validate(point) {\n if (point.inf)\n return true;\n\n var x = point.x;\n var y = point.y;\n\n var ax = this.a.redMul(x);\n var rhs = x.redSqr().redMul(x).redIAdd(ax).redIAdd(this.b);\n return y.redSqr().redISub(rhs).cmpn(0) === 0;\n};\n\nShortCurve.prototype._endoWnafMulAdd =\n function _endoWnafMulAdd(points, coeffs, jacobianResult) {\n var npoints = this._endoWnafT1;\n var ncoeffs = this._endoWnafT2;\n for (var i = 0; i < points.length; i++) {\n var split = this._endoSplit(coeffs[i]);\n var p = points[i];\n var beta = p._getBeta();\n\n if (split.k1.negative) {\n split.k1.ineg();\n p = p.neg(true);\n }\n if (split.k2.negative) {\n split.k2.ineg();\n beta = beta.neg(true);\n }\n\n npoints[i * 2] = p;\n npoints[i * 2 + 1] = beta;\n ncoeffs[i * 2] = split.k1;\n ncoeffs[i * 2 + 1] = split.k2;\n }\n var res = this._wnafMulAdd(1, npoints, ncoeffs, i * 2, jacobianResult);\n\n // Clean-up references to points and coefficients\n for (var j = 0; j < i * 2; j++) {\n npoints[j] = null;\n ncoeffs[j] = null;\n }\n return res;\n };\n\nfunction Point(curve, x, y, isRed) {\n Base.BasePoint.call(this, curve, 'affine');\n if (x === null && y === null) {\n this.x = null;\n this.y = null;\n this.inf = true;\n } else {\n this.x = new BN(x, 16);\n this.y = new BN(y, 16);\n // Force redgomery representation when loading from JSON\n if (isRed) {\n this.x.forceRed(this.curve.red);\n this.y.forceRed(this.curve.red);\n }\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.y.red)\n this.y = this.y.toRed(this.curve.red);\n this.inf = false;\n }\n}\ninherits(Point, Base.BasePoint);\n\nShortCurve.prototype.point = function point(x, y, isRed) {\n return new Point(this, x, y, isRed);\n};\n\nShortCurve.prototype.pointFromJSON = function pointFromJSON(obj, red) {\n return Point.fromJSON(this, obj, red);\n};\n\nPoint.prototype._getBeta = function _getBeta() {\n if (!this.curve.endo)\n return;\n\n var pre = this.precomputed;\n if (pre && pre.beta)\n return pre.beta;\n\n var beta = this.curve.point(this.x.redMul(this.curve.endo.beta), this.y);\n if (pre) {\n var curve = this.curve;\n var endoMul = function(p) {\n return curve.point(p.x.redMul(curve.endo.beta), p.y);\n };\n pre.beta = beta;\n beta.precomputed = {\n beta: null,\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: pre.naf.points.map(endoMul),\n },\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: pre.doubles.points.map(endoMul),\n },\n };\n }\n return beta;\n};\n\nPoint.prototype.toJSON = function toJSON() {\n if (!this.precomputed)\n return [ this.x, this.y ];\n\n return [ this.x, this.y, this.precomputed && {\n doubles: this.precomputed.doubles && {\n step: this.precomputed.doubles.step,\n points: this.precomputed.doubles.points.slice(1),\n },\n naf: this.precomputed.naf && {\n wnd: this.precomputed.naf.wnd,\n points: this.precomputed.naf.points.slice(1),\n },\n } ];\n};\n\nPoint.fromJSON = function fromJSON(curve, obj, red) {\n if (typeof obj === 'string')\n obj = JSON.parse(obj);\n var res = curve.point(obj[0], obj[1], red);\n if (!obj[2])\n return res;\n\n function obj2point(obj) {\n return curve.point(obj[0], obj[1], red);\n }\n\n var pre = obj[2];\n res.precomputed = {\n beta: null,\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: [ res ].concat(pre.doubles.points.map(obj2point)),\n },\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: [ res ].concat(pre.naf.points.map(obj2point)),\n },\n };\n return res;\n};\n\nPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '';\n return '';\n};\n\nPoint.prototype.isInfinity = function isInfinity() {\n return this.inf;\n};\n\nPoint.prototype.add = function add(p) {\n // O + P = P\n if (this.inf)\n return p;\n\n // P + O = P\n if (p.inf)\n return this;\n\n // P + P = 2P\n if (this.eq(p))\n return this.dbl();\n\n // P + (-P) = O\n if (this.neg().eq(p))\n return this.curve.point(null, null);\n\n // P + Q = O\n if (this.x.cmp(p.x) === 0)\n return this.curve.point(null, null);\n\n var c = this.y.redSub(p.y);\n if (c.cmpn(0) !== 0)\n c = c.redMul(this.x.redSub(p.x).redInvm());\n var nx = c.redSqr().redISub(this.x).redISub(p.x);\n var ny = c.redMul(this.x.redSub(nx)).redISub(this.y);\n return this.curve.point(nx, ny);\n};\n\nPoint.prototype.dbl = function dbl() {\n if (this.inf)\n return this;\n\n // 2P = O\n var ys1 = this.y.redAdd(this.y);\n if (ys1.cmpn(0) === 0)\n return this.curve.point(null, null);\n\n var a = this.curve.a;\n\n var x2 = this.x.redSqr();\n var dyinv = ys1.redInvm();\n var c = x2.redAdd(x2).redIAdd(x2).redIAdd(a).redMul(dyinv);\n\n var nx = c.redSqr().redISub(this.x.redAdd(this.x));\n var ny = c.redMul(this.x.redSub(nx)).redISub(this.y);\n return this.curve.point(nx, ny);\n};\n\nPoint.prototype.getX = function getX() {\n return this.x.fromRed();\n};\n\nPoint.prototype.getY = function getY() {\n return this.y.fromRed();\n};\n\nPoint.prototype.mul = function mul(k) {\n k = new BN(k, 16);\n if (this.isInfinity())\n return this;\n else if (this._hasDoubles(k))\n return this.curve._fixedNafMul(this, k);\n else if (this.curve.endo)\n return this.curve._endoWnafMulAdd([ this ], [ k ]);\n else\n return this.curve._wnafMul(this, k);\n};\n\nPoint.prototype.mulAdd = function mulAdd(k1, p2, k2) {\n var points = [ this, p2 ];\n var coeffs = [ k1, k2 ];\n if (this.curve.endo)\n return this.curve._endoWnafMulAdd(points, coeffs);\n else\n return this.curve._wnafMulAdd(1, points, coeffs, 2);\n};\n\nPoint.prototype.jmulAdd = function jmulAdd(k1, p2, k2) {\n var points = [ this, p2 ];\n var coeffs = [ k1, k2 ];\n if (this.curve.endo)\n return this.curve._endoWnafMulAdd(points, coeffs, true);\n else\n return this.curve._wnafMulAdd(1, points, coeffs, 2, true);\n};\n\nPoint.prototype.eq = function eq(p) {\n return this === p ||\n this.inf === p.inf &&\n (this.inf || this.x.cmp(p.x) === 0 && this.y.cmp(p.y) === 0);\n};\n\nPoint.prototype.neg = function neg(_precompute) {\n if (this.inf)\n return this;\n\n var res = this.curve.point(this.x, this.y.redNeg());\n if (_precompute && this.precomputed) {\n var pre = this.precomputed;\n var negate = function(p) {\n return p.neg();\n };\n res.precomputed = {\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: pre.naf.points.map(negate),\n },\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: pre.doubles.points.map(negate),\n },\n };\n }\n return res;\n};\n\nPoint.prototype.toJ = function toJ() {\n if (this.inf)\n return this.curve.jpoint(null, null, null);\n\n var res = this.curve.jpoint(this.x, this.y, this.curve.one);\n return res;\n};\n\nfunction JPoint(curve, x, y, z) {\n Base.BasePoint.call(this, curve, 'jacobian');\n if (x === null && y === null && z === null) {\n this.x = this.curve.one;\n this.y = this.curve.one;\n this.z = new BN(0);\n } else {\n this.x = new BN(x, 16);\n this.y = new BN(y, 16);\n this.z = new BN(z, 16);\n }\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.y.red)\n this.y = this.y.toRed(this.curve.red);\n if (!this.z.red)\n this.z = this.z.toRed(this.curve.red);\n\n this.zOne = this.z === this.curve.one;\n}\ninherits(JPoint, Base.BasePoint);\n\nShortCurve.prototype.jpoint = function jpoint(x, y, z) {\n return new JPoint(this, x, y, z);\n};\n\nJPoint.prototype.toP = function toP() {\n if (this.isInfinity())\n return this.curve.point(null, null);\n\n var zinv = this.z.redInvm();\n var zinv2 = zinv.redSqr();\n var ax = this.x.redMul(zinv2);\n var ay = this.y.redMul(zinv2).redMul(zinv);\n\n return this.curve.point(ax, ay);\n};\n\nJPoint.prototype.neg = function neg() {\n return this.curve.jpoint(this.x, this.y.redNeg(), this.z);\n};\n\nJPoint.prototype.add = function add(p) {\n // O + P = P\n if (this.isInfinity())\n return p;\n\n // P + O = P\n if (p.isInfinity())\n return this;\n\n // 12M + 4S + 7A\n var pz2 = p.z.redSqr();\n var z2 = this.z.redSqr();\n var u1 = this.x.redMul(pz2);\n var u2 = p.x.redMul(z2);\n var s1 = this.y.redMul(pz2.redMul(p.z));\n var s2 = p.y.redMul(z2.redMul(this.z));\n\n var h = u1.redSub(u2);\n var r = s1.redSub(s2);\n if (h.cmpn(0) === 0) {\n if (r.cmpn(0) !== 0)\n return this.curve.jpoint(null, null, null);\n else\n return this.dbl();\n }\n\n var h2 = h.redSqr();\n var h3 = h2.redMul(h);\n var v = u1.redMul(h2);\n\n var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v);\n var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3));\n var nz = this.z.redMul(p.z).redMul(h);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.mixedAdd = function mixedAdd(p) {\n // O + P = P\n if (this.isInfinity())\n return p.toJ();\n\n // P + O = P\n if (p.isInfinity())\n return this;\n\n // 8M + 3S + 7A\n var z2 = this.z.redSqr();\n var u1 = this.x;\n var u2 = p.x.redMul(z2);\n var s1 = this.y;\n var s2 = p.y.redMul(z2).redMul(this.z);\n\n var h = u1.redSub(u2);\n var r = s1.redSub(s2);\n if (h.cmpn(0) === 0) {\n if (r.cmpn(0) !== 0)\n return this.curve.jpoint(null, null, null);\n else\n return this.dbl();\n }\n\n var h2 = h.redSqr();\n var h3 = h2.redMul(h);\n var v = u1.redMul(h2);\n\n var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v);\n var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3));\n var nz = this.z.redMul(h);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.dblp = function dblp(pow) {\n if (pow === 0)\n return this;\n if (this.isInfinity())\n return this;\n if (!pow)\n return this.dbl();\n\n var i;\n if (this.curve.zeroA || this.curve.threeA) {\n var r = this;\n for (i = 0; i < pow; i++)\n r = r.dbl();\n return r;\n }\n\n // 1M + 2S + 1A + N * (4S + 5M + 8A)\n // N = 1 => 6M + 6S + 9A\n var a = this.curve.a;\n var tinv = this.curve.tinv;\n\n var jx = this.x;\n var jy = this.y;\n var jz = this.z;\n var jz4 = jz.redSqr().redSqr();\n\n // Reuse results\n var jyd = jy.redAdd(jy);\n for (i = 0; i < pow; i++) {\n var jx2 = jx.redSqr();\n var jyd2 = jyd.redSqr();\n var jyd4 = jyd2.redSqr();\n var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4));\n\n var t1 = jx.redMul(jyd2);\n var nx = c.redSqr().redISub(t1.redAdd(t1));\n var t2 = t1.redISub(nx);\n var dny = c.redMul(t2);\n dny = dny.redIAdd(dny).redISub(jyd4);\n var nz = jyd.redMul(jz);\n if (i + 1 < pow)\n jz4 = jz4.redMul(jyd4);\n\n jx = nx;\n jz = nz;\n jyd = dny;\n }\n\n return this.curve.jpoint(jx, jyd.redMul(tinv), jz);\n};\n\nJPoint.prototype.dbl = function dbl() {\n if (this.isInfinity())\n return this;\n\n if (this.curve.zeroA)\n return this._zeroDbl();\n else if (this.curve.threeA)\n return this._threeDbl();\n else\n return this._dbl();\n};\n\nJPoint.prototype._zeroDbl = function _zeroDbl() {\n var nx;\n var ny;\n var nz;\n // Z = 1\n if (this.zOne) {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html\n // #doubling-mdbl-2007-bl\n // 1M + 5S + 14A\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // S = 2 * ((X1 + YY)^2 - XX - YYYY)\n var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n s = s.redIAdd(s);\n // M = 3 * XX + a; a = 0\n var m = xx.redAdd(xx).redIAdd(xx);\n // T = M ^ 2 - 2*S\n var t = m.redSqr().redISub(s).redISub(s);\n\n // 8 * YYYY\n var yyyy8 = yyyy.redIAdd(yyyy);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n\n // X3 = T\n nx = t;\n // Y3 = M * (S - T) - 8 * YYYY\n ny = m.redMul(s.redISub(t)).redISub(yyyy8);\n // Z3 = 2*Y1\n nz = this.y.redAdd(this.y);\n } else {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html\n // #doubling-dbl-2009-l\n // 2M + 5S + 13A\n\n // A = X1^2\n var a = this.x.redSqr();\n // B = Y1^2\n var b = this.y.redSqr();\n // C = B^2\n var c = b.redSqr();\n // D = 2 * ((X1 + B)^2 - A - C)\n var d = this.x.redAdd(b).redSqr().redISub(a).redISub(c);\n d = d.redIAdd(d);\n // E = 3 * A\n var e = a.redAdd(a).redIAdd(a);\n // F = E^2\n var f = e.redSqr();\n\n // 8 * C\n var c8 = c.redIAdd(c);\n c8 = c8.redIAdd(c8);\n c8 = c8.redIAdd(c8);\n\n // X3 = F - 2 * D\n nx = f.redISub(d).redISub(d);\n // Y3 = E * (D - X3) - 8 * C\n ny = e.redMul(d.redISub(nx)).redISub(c8);\n // Z3 = 2 * Y1 * Z1\n nz = this.y.redMul(this.z);\n nz = nz.redIAdd(nz);\n }\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype._threeDbl = function _threeDbl() {\n var nx;\n var ny;\n var nz;\n // Z = 1\n if (this.zOne) {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html\n // #doubling-mdbl-2007-bl\n // 1M + 5S + 15A\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // S = 2 * ((X1 + YY)^2 - XX - YYYY)\n var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n s = s.redIAdd(s);\n // M = 3 * XX + a\n var m = xx.redAdd(xx).redIAdd(xx).redIAdd(this.curve.a);\n // T = M^2 - 2 * S\n var t = m.redSqr().redISub(s).redISub(s);\n // X3 = T\n nx = t;\n // Y3 = M * (S - T) - 8 * YYYY\n var yyyy8 = yyyy.redIAdd(yyyy);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n ny = m.redMul(s.redISub(t)).redISub(yyyy8);\n // Z3 = 2 * Y1\n nz = this.y.redAdd(this.y);\n } else {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html#doubling-dbl-2001-b\n // 3M + 5S\n\n // delta = Z1^2\n var delta = this.z.redSqr();\n // gamma = Y1^2\n var gamma = this.y.redSqr();\n // beta = X1 * gamma\n var beta = this.x.redMul(gamma);\n // alpha = 3 * (X1 - delta) * (X1 + delta)\n var alpha = this.x.redSub(delta).redMul(this.x.redAdd(delta));\n alpha = alpha.redAdd(alpha).redIAdd(alpha);\n // X3 = alpha^2 - 8 * beta\n var beta4 = beta.redIAdd(beta);\n beta4 = beta4.redIAdd(beta4);\n var beta8 = beta4.redAdd(beta4);\n nx = alpha.redSqr().redISub(beta8);\n // Z3 = (Y1 + Z1)^2 - gamma - delta\n nz = this.y.redAdd(this.z).redSqr().redISub(gamma).redISub(delta);\n // Y3 = alpha * (4 * beta - X3) - 8 * gamma^2\n var ggamma8 = gamma.redSqr();\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ny = alpha.redMul(beta4.redISub(nx)).redISub(ggamma8);\n }\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype._dbl = function _dbl() {\n var a = this.curve.a;\n\n // 4M + 6S + 10A\n var jx = this.x;\n var jy = this.y;\n var jz = this.z;\n var jz4 = jz.redSqr().redSqr();\n\n var jx2 = jx.redSqr();\n var jy2 = jy.redSqr();\n\n var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4));\n\n var jxd4 = jx.redAdd(jx);\n jxd4 = jxd4.redIAdd(jxd4);\n var t1 = jxd4.redMul(jy2);\n var nx = c.redSqr().redISub(t1.redAdd(t1));\n var t2 = t1.redISub(nx);\n\n var jyd8 = jy2.redSqr();\n jyd8 = jyd8.redIAdd(jyd8);\n jyd8 = jyd8.redIAdd(jyd8);\n jyd8 = jyd8.redIAdd(jyd8);\n var ny = c.redMul(t2).redISub(jyd8);\n var nz = jy.redAdd(jy).redMul(jz);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.trpl = function trpl() {\n if (!this.curve.zeroA)\n return this.dbl().add(this);\n\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html#tripling-tpl-2007-bl\n // 5M + 10S + ...\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // ZZ = Z1^2\n var zz = this.z.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // M = 3 * XX + a * ZZ2; a = 0\n var m = xx.redAdd(xx).redIAdd(xx);\n // MM = M^2\n var mm = m.redSqr();\n // E = 6 * ((X1 + YY)^2 - XX - YYYY) - MM\n var e = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n e = e.redIAdd(e);\n e = e.redAdd(e).redIAdd(e);\n e = e.redISub(mm);\n // EE = E^2\n var ee = e.redSqr();\n // T = 16*YYYY\n var t = yyyy.redIAdd(yyyy);\n t = t.redIAdd(t);\n t = t.redIAdd(t);\n t = t.redIAdd(t);\n // U = (M + E)^2 - MM - EE - T\n var u = m.redIAdd(e).redSqr().redISub(mm).redISub(ee).redISub(t);\n // X3 = 4 * (X1 * EE - 4 * YY * U)\n var yyu4 = yy.redMul(u);\n yyu4 = yyu4.redIAdd(yyu4);\n yyu4 = yyu4.redIAdd(yyu4);\n var nx = this.x.redMul(ee).redISub(yyu4);\n nx = nx.redIAdd(nx);\n nx = nx.redIAdd(nx);\n // Y3 = 8 * Y1 * (U * (T - U) - E * EE)\n var ny = this.y.redMul(u.redMul(t.redISub(u)).redISub(e.redMul(ee)));\n ny = ny.redIAdd(ny);\n ny = ny.redIAdd(ny);\n ny = ny.redIAdd(ny);\n // Z3 = (Z1 + E)^2 - ZZ - EE\n var nz = this.z.redAdd(e).redSqr().redISub(zz).redISub(ee);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.mul = function mul(k, kbase) {\n k = new BN(k, kbase);\n\n return this.curve._wnafMul(this, k);\n};\n\nJPoint.prototype.eq = function eq(p) {\n if (p.type === 'affine')\n return this.eq(p.toJ());\n\n if (this === p)\n return true;\n\n // x1 * z2^2 == x2 * z1^2\n var z2 = this.z.redSqr();\n var pz2 = p.z.redSqr();\n if (this.x.redMul(pz2).redISub(p.x.redMul(z2)).cmpn(0) !== 0)\n return false;\n\n // y1 * z2^3 == y2 * z1^3\n var z3 = z2.redMul(this.z);\n var pz3 = pz2.redMul(p.z);\n return this.y.redMul(pz3).redISub(p.y.redMul(z3)).cmpn(0) === 0;\n};\n\nJPoint.prototype.eqXToP = function eqXToP(x) {\n var zs = this.z.redSqr();\n var rx = x.toRed(this.curve.red).redMul(zs);\n if (this.x.cmp(rx) === 0)\n return true;\n\n var xc = x.clone();\n var t = this.curve.redN.redMul(zs);\n for (;;) {\n xc.iadd(this.curve.n);\n if (xc.cmp(this.curve.p) >= 0)\n return false;\n\n rx.redIAdd(t);\n if (this.x.cmp(rx) === 0)\n return true;\n }\n};\n\nJPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '';\n return '';\n};\n\nJPoint.prototype.isInfinity = function isInfinity() {\n // XXX This code assumes that zero is always zero in red\n return this.z.cmpn(0) === 0;\n};\n", "'use strict';\n\nvar BN = require('bn.js');\nvar inherits = require('inherits');\nvar Base = require('./base');\n\nvar utils = require('../utils');\n\nfunction MontCurve(conf) {\n Base.call(this, 'mont', conf);\n\n this.a = new BN(conf.a, 16).toRed(this.red);\n this.b = new BN(conf.b, 16).toRed(this.red);\n this.i4 = new BN(4).toRed(this.red).redInvm();\n this.two = new BN(2).toRed(this.red);\n this.a24 = this.i4.redMul(this.a.redAdd(this.two));\n}\ninherits(MontCurve, Base);\nmodule.exports = MontCurve;\n\nMontCurve.prototype.validate = function validate(point) {\n var x = point.normalize().x;\n var x2 = x.redSqr();\n var rhs = x2.redMul(x).redAdd(x2.redMul(this.a)).redAdd(x);\n var y = rhs.redSqrt();\n\n return y.redSqr().cmp(rhs) === 0;\n};\n\nfunction Point(curve, x, z) {\n Base.BasePoint.call(this, curve, 'projective');\n if (x === null && z === null) {\n this.x = this.curve.one;\n this.z = this.curve.zero;\n } else {\n this.x = new BN(x, 16);\n this.z = new BN(z, 16);\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.z.red)\n this.z = this.z.toRed(this.curve.red);\n }\n}\ninherits(Point, Base.BasePoint);\n\nMontCurve.prototype.decodePoint = function decodePoint(bytes, enc) {\n return this.point(utils.toArray(bytes, enc), 1);\n};\n\nMontCurve.prototype.point = function point(x, z) {\n return new Point(this, x, z);\n};\n\nMontCurve.prototype.pointFromJSON = function pointFromJSON(obj) {\n return Point.fromJSON(this, obj);\n};\n\nPoint.prototype.precompute = function precompute() {\n // No-op\n};\n\nPoint.prototype._encode = function _encode() {\n return this.getX().toArray('be', this.curve.p.byteLength());\n};\n\nPoint.fromJSON = function fromJSON(curve, obj) {\n return new Point(curve, obj[0], obj[1] || curve.one);\n};\n\nPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '';\n return '';\n};\n\nPoint.prototype.isInfinity = function isInfinity() {\n // XXX This code assumes that zero is always zero in red\n return this.z.cmpn(0) === 0;\n};\n\nPoint.prototype.dbl = function dbl() {\n // http://hyperelliptic.org/EFD/g1p/auto-montgom-xz.html#doubling-dbl-1987-m-3\n // 2M + 2S + 4A\n\n // A = X1 + Z1\n var a = this.x.redAdd(this.z);\n // AA = A^2\n var aa = a.redSqr();\n // B = X1 - Z1\n var b = this.x.redSub(this.z);\n // BB = B^2\n var bb = b.redSqr();\n // C = AA - BB\n var c = aa.redSub(bb);\n // X3 = AA * BB\n var nx = aa.redMul(bb);\n // Z3 = C * (BB + A24 * C)\n var nz = c.redMul(bb.redAdd(this.curve.a24.redMul(c)));\n return this.curve.point(nx, nz);\n};\n\nPoint.prototype.add = function add() {\n throw new Error('Not supported on Montgomery curve');\n};\n\nPoint.prototype.diffAdd = function diffAdd(p, diff) {\n // http://hyperelliptic.org/EFD/g1p/auto-montgom-xz.html#diffadd-dadd-1987-m-3\n // 4M + 2S + 6A\n\n // A = X2 + Z2\n var a = this.x.redAdd(this.z);\n // B = X2 - Z2\n var b = this.x.redSub(this.z);\n // C = X3 + Z3\n var c = p.x.redAdd(p.z);\n // D = X3 - Z3\n var d = p.x.redSub(p.z);\n // DA = D * A\n var da = d.redMul(a);\n // CB = C * B\n var cb = c.redMul(b);\n // X5 = Z1 * (DA + CB)^2\n var nx = diff.z.redMul(da.redAdd(cb).redSqr());\n // Z5 = X1 * (DA - CB)^2\n var nz = diff.x.redMul(da.redISub(cb).redSqr());\n return this.curve.point(nx, nz);\n};\n\nPoint.prototype.mul = function mul(k) {\n var t = k.clone();\n var a = this; // (N / 2) * Q + Q\n var b = this.curve.point(null, null); // (N / 2) * Q\n var c = this; // Q\n\n for (var bits = []; t.cmpn(0) !== 0; t.iushrn(1))\n bits.push(t.andln(1));\n\n for (var i = bits.length - 1; i >= 0; i--) {\n if (bits[i] === 0) {\n // N * Q + Q = ((N / 2) * Q + Q)) + (N / 2) * Q\n a = a.diffAdd(b, c);\n // N * Q = 2 * ((N / 2) * Q + Q))\n b = b.dbl();\n } else {\n // N * Q = ((N / 2) * Q + Q) + ((N / 2) * Q)\n b = a.diffAdd(b, c);\n // N * Q + Q = 2 * ((N / 2) * Q + Q)\n a = a.dbl();\n }\n }\n return b;\n};\n\nPoint.prototype.mulAdd = function mulAdd() {\n throw new Error('Not supported on Montgomery curve');\n};\n\nPoint.prototype.jumlAdd = function jumlAdd() {\n throw new Error('Not supported on Montgomery curve');\n};\n\nPoint.prototype.eq = function eq(other) {\n return this.getX().cmp(other.getX()) === 0;\n};\n\nPoint.prototype.normalize = function normalize() {\n this.x = this.x.redMul(this.z.redInvm());\n this.z = this.curve.one;\n return this;\n};\n\nPoint.prototype.getX = function getX() {\n // Normalize coordinates\n this.normalize();\n\n return this.x.fromRed();\n};\n", "'use strict';\n\nvar utils = require('../utils');\nvar BN = require('bn.js');\nvar inherits = require('inherits');\nvar Base = require('./base');\n\nvar assert = utils.assert;\n\nfunction EdwardsCurve(conf) {\n // NOTE: Important as we are creating point in Base.call()\n this.twisted = (conf.a | 0) !== 1;\n this.mOneA = this.twisted && (conf.a | 0) === -1;\n this.extended = this.mOneA;\n\n Base.call(this, 'edwards', conf);\n\n this.a = new BN(conf.a, 16).umod(this.red.m);\n this.a = this.a.toRed(this.red);\n this.c = new BN(conf.c, 16).toRed(this.red);\n this.c2 = this.c.redSqr();\n this.d = new BN(conf.d, 16).toRed(this.red);\n this.dd = this.d.redAdd(this.d);\n\n assert(!this.twisted || this.c.fromRed().cmpn(1) === 0);\n this.oneC = (conf.c | 0) === 1;\n}\ninherits(EdwardsCurve, Base);\nmodule.exports = EdwardsCurve;\n\nEdwardsCurve.prototype._mulA = function _mulA(num) {\n if (this.mOneA)\n return num.redNeg();\n else\n return this.a.redMul(num);\n};\n\nEdwardsCurve.prototype._mulC = function _mulC(num) {\n if (this.oneC)\n return num;\n else\n return this.c.redMul(num);\n};\n\n// Just for compatibility with Short curve\nEdwardsCurve.prototype.jpoint = function jpoint(x, y, z, t) {\n return this.point(x, y, z, t);\n};\n\nEdwardsCurve.prototype.pointFromX = function pointFromX(x, odd) {\n x = new BN(x, 16);\n if (!x.red)\n x = x.toRed(this.red);\n\n var x2 = x.redSqr();\n var rhs = this.c2.redSub(this.a.redMul(x2));\n var lhs = this.one.redSub(this.c2.redMul(this.d).redMul(x2));\n\n var y2 = rhs.redMul(lhs.redInvm());\n var y = y2.redSqrt();\n if (y.redSqr().redSub(y2).cmp(this.zero) !== 0)\n throw new Error('invalid point');\n\n var isOdd = y.fromRed().isOdd();\n if (odd && !isOdd || !odd && isOdd)\n y = y.redNeg();\n\n return this.point(x, y);\n};\n\nEdwardsCurve.prototype.pointFromY = function pointFromY(y, odd) {\n y = new BN(y, 16);\n if (!y.red)\n y = y.toRed(this.red);\n\n // x^2 = (y^2 - c^2) / (c^2 d y^2 - a)\n var y2 = y.redSqr();\n var lhs = y2.redSub(this.c2);\n var rhs = y2.redMul(this.d).redMul(this.c2).redSub(this.a);\n var x2 = lhs.redMul(rhs.redInvm());\n\n if (x2.cmp(this.zero) === 0) {\n if (odd)\n throw new Error('invalid point');\n else\n return this.point(this.zero, y);\n }\n\n var x = x2.redSqrt();\n if (x.redSqr().redSub(x2).cmp(this.zero) !== 0)\n throw new Error('invalid point');\n\n if (x.fromRed().isOdd() !== odd)\n x = x.redNeg();\n\n return this.point(x, y);\n};\n\nEdwardsCurve.prototype.validate = function validate(point) {\n if (point.isInfinity())\n return true;\n\n // Curve: A * X^2 + Y^2 = C^2 * (1 + D * X^2 * Y^2)\n point.normalize();\n\n var x2 = point.x.redSqr();\n var y2 = point.y.redSqr();\n var lhs = x2.redMul(this.a).redAdd(y2);\n var rhs = this.c2.redMul(this.one.redAdd(this.d.redMul(x2).redMul(y2)));\n\n return lhs.cmp(rhs) === 0;\n};\n\nfunction Point(curve, x, y, z, t) {\n Base.BasePoint.call(this, curve, 'projective');\n if (x === null && y === null && z === null) {\n this.x = this.curve.zero;\n this.y = this.curve.one;\n this.z = this.curve.one;\n this.t = this.curve.zero;\n this.zOne = true;\n } else {\n this.x = new BN(x, 16);\n this.y = new BN(y, 16);\n this.z = z ? new BN(z, 16) : this.curve.one;\n this.t = t && new BN(t, 16);\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.y.red)\n this.y = this.y.toRed(this.curve.red);\n if (!this.z.red)\n this.z = this.z.toRed(this.curve.red);\n if (this.t && !this.t.red)\n this.t = this.t.toRed(this.curve.red);\n this.zOne = this.z === this.curve.one;\n\n // Use extended coordinates\n if (this.curve.extended && !this.t) {\n this.t = this.x.redMul(this.y);\n if (!this.zOne)\n this.t = this.t.redMul(this.z.redInvm());\n }\n }\n}\ninherits(Point, Base.BasePoint);\n\nEdwardsCurve.prototype.pointFromJSON = function pointFromJSON(obj) {\n return Point.fromJSON(this, obj);\n};\n\nEdwardsCurve.prototype.point = function point(x, y, z, t) {\n return new Point(this, x, y, z, t);\n};\n\nPoint.fromJSON = function fromJSON(curve, obj) {\n return new Point(curve, obj[0], obj[1], obj[2]);\n};\n\nPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '';\n return '';\n};\n\nPoint.prototype.isInfinity = function isInfinity() {\n // XXX This code assumes that zero is always zero in red\n return this.x.cmpn(0) === 0 &&\n (this.y.cmp(this.z) === 0 ||\n (this.zOne && this.y.cmp(this.curve.c) === 0));\n};\n\nPoint.prototype._extDbl = function _extDbl() {\n // hyperelliptic.org/EFD/g1p/auto-twisted-extended-1.html\n // #doubling-dbl-2008-hwcd\n // 4M + 4S\n\n // A = X1^2\n var a = this.x.redSqr();\n // B = Y1^2\n var b = this.y.redSqr();\n // C = 2 * Z1^2\n var c = this.z.redSqr();\n c = c.redIAdd(c);\n // D = a * A\n var d = this.curve._mulA(a);\n // E = (X1 + Y1)^2 - A - B\n var e = this.x.redAdd(this.y).redSqr().redISub(a).redISub(b);\n // G = D + B\n var g = d.redAdd(b);\n // F = G - C\n var f = g.redSub(c);\n // H = D - B\n var h = d.redSub(b);\n // X3 = E * F\n var nx = e.redMul(f);\n // Y3 = G * H\n var ny = g.redMul(h);\n // T3 = E * H\n var nt = e.redMul(h);\n // Z3 = F * G\n var nz = f.redMul(g);\n return this.curve.point(nx, ny, nz, nt);\n};\n\nPoint.prototype._projDbl = function _projDbl() {\n // hyperelliptic.org/EFD/g1p/auto-twisted-projective.html\n // #doubling-dbl-2008-bbjlp\n // #doubling-dbl-2007-bl\n // and others\n // Generally 3M + 4S or 2M + 4S\n\n // B = (X1 + Y1)^2\n var b = this.x.redAdd(this.y).redSqr();\n // C = X1^2\n var c = this.x.redSqr();\n // D = Y1^2\n var d = this.y.redSqr();\n\n var nx;\n var ny;\n var nz;\n var e;\n var h;\n var j;\n if (this.curve.twisted) {\n // E = a * C\n e = this.curve._mulA(c);\n // F = E + D\n var f = e.redAdd(d);\n if (this.zOne) {\n // X3 = (B - C - D) * (F - 2)\n nx = b.redSub(c).redSub(d).redMul(f.redSub(this.curve.two));\n // Y3 = F * (E - D)\n ny = f.redMul(e.redSub(d));\n // Z3 = F^2 - 2 * F\n nz = f.redSqr().redSub(f).redSub(f);\n } else {\n // H = Z1^2\n h = this.z.redSqr();\n // J = F - 2 * H\n j = f.redSub(h).redISub(h);\n // X3 = (B-C-D)*J\n nx = b.redSub(c).redISub(d).redMul(j);\n // Y3 = F * (E - D)\n ny = f.redMul(e.redSub(d));\n // Z3 = F * J\n nz = f.redMul(j);\n }\n } else {\n // E = C + D\n e = c.redAdd(d);\n // H = (c * Z1)^2\n h = this.curve._mulC(this.z).redSqr();\n // J = E - 2 * H\n j = e.redSub(h).redSub(h);\n // X3 = c * (B - E) * J\n nx = this.curve._mulC(b.redISub(e)).redMul(j);\n // Y3 = c * E * (C - D)\n ny = this.curve._mulC(e).redMul(c.redISub(d));\n // Z3 = E * J\n nz = e.redMul(j);\n }\n return this.curve.point(nx, ny, nz);\n};\n\nPoint.prototype.dbl = function dbl() {\n if (this.isInfinity())\n return this;\n\n // Double in extended coordinates\n if (this.curve.extended)\n return this._extDbl();\n else\n return this._projDbl();\n};\n\nPoint.prototype._extAdd = function _extAdd(p) {\n // hyperelliptic.org/EFD/g1p/auto-twisted-extended-1.html\n // #addition-add-2008-hwcd-3\n // 8M\n\n // A = (Y1 - X1) * (Y2 - X2)\n var a = this.y.redSub(this.x).redMul(p.y.redSub(p.x));\n // B = (Y1 + X1) * (Y2 + X2)\n var b = this.y.redAdd(this.x).redMul(p.y.redAdd(p.x));\n // C = T1 * k * T2\n var c = this.t.redMul(this.curve.dd).redMul(p.t);\n // D = Z1 * 2 * Z2\n var d = this.z.redMul(p.z.redAdd(p.z));\n // E = B - A\n var e = b.redSub(a);\n // F = D - C\n var f = d.redSub(c);\n // G = D + C\n var g = d.redAdd(c);\n // H = B + A\n var h = b.redAdd(a);\n // X3 = E * F\n var nx = e.redMul(f);\n // Y3 = G * H\n var ny = g.redMul(h);\n // T3 = E * H\n var nt = e.redMul(h);\n // Z3 = F * G\n var nz = f.redMul(g);\n return this.curve.point(nx, ny, nz, nt);\n};\n\nPoint.prototype._projAdd = function _projAdd(p) {\n // hyperelliptic.org/EFD/g1p/auto-twisted-projective.html\n // #addition-add-2008-bbjlp\n // #addition-add-2007-bl\n // 10M + 1S\n\n // A = Z1 * Z2\n var a = this.z.redMul(p.z);\n // B = A^2\n var b = a.redSqr();\n // C = X1 * X2\n var c = this.x.redMul(p.x);\n // D = Y1 * Y2\n var d = this.y.redMul(p.y);\n // E = d * C * D\n var e = this.curve.d.redMul(c).redMul(d);\n // F = B - E\n var f = b.redSub(e);\n // G = B + E\n var g = b.redAdd(e);\n // X3 = A * F * ((X1 + Y1) * (X2 + Y2) - C - D)\n var tmp = this.x.redAdd(this.y).redMul(p.x.redAdd(p.y)).redISub(c).redISub(d);\n var nx = a.redMul(f).redMul(tmp);\n var ny;\n var nz;\n if (this.curve.twisted) {\n // Y3 = A * G * (D - a * C)\n ny = a.redMul(g).redMul(d.redSub(this.curve._mulA(c)));\n // Z3 = F * G\n nz = f.redMul(g);\n } else {\n // Y3 = A * G * (D - C)\n ny = a.redMul(g).redMul(d.redSub(c));\n // Z3 = c * F * G\n nz = this.curve._mulC(f).redMul(g);\n }\n return this.curve.point(nx, ny, nz);\n};\n\nPoint.prototype.add = function add(p) {\n if (this.isInfinity())\n return p;\n if (p.isInfinity())\n return this;\n\n if (this.curve.extended)\n return this._extAdd(p);\n else\n return this._projAdd(p);\n};\n\nPoint.prototype.mul = function mul(k) {\n if (this._hasDoubles(k))\n return this.curve._fixedNafMul(this, k);\n else\n return this.curve._wnafMul(this, k);\n};\n\nPoint.prototype.mulAdd = function mulAdd(k1, p, k2) {\n return this.curve._wnafMulAdd(1, [ this, p ], [ k1, k2 ], 2, false);\n};\n\nPoint.prototype.jmulAdd = function jmulAdd(k1, p, k2) {\n return this.curve._wnafMulAdd(1, [ this, p ], [ k1, k2 ], 2, true);\n};\n\nPoint.prototype.normalize = function normalize() {\n if (this.zOne)\n return this;\n\n // Normalize coordinates\n var zi = this.z.redInvm();\n this.x = this.x.redMul(zi);\n this.y = this.y.redMul(zi);\n if (this.t)\n this.t = this.t.redMul(zi);\n this.z = this.curve.one;\n this.zOne = true;\n return this;\n};\n\nPoint.prototype.neg = function neg() {\n return this.curve.point(this.x.redNeg(),\n this.y,\n this.z,\n this.t && this.t.redNeg());\n};\n\nPoint.prototype.getX = function getX() {\n this.normalize();\n return this.x.fromRed();\n};\n\nPoint.prototype.getY = function getY() {\n this.normalize();\n return this.y.fromRed();\n};\n\nPoint.prototype.eq = function eq(other) {\n return this === other ||\n this.getX().cmp(other.getX()) === 0 &&\n this.getY().cmp(other.getY()) === 0;\n};\n\nPoint.prototype.eqXToP = function eqXToP(x) {\n var rx = x.toRed(this.curve.red).redMul(this.z);\n if (this.x.cmp(rx) === 0)\n return true;\n\n var xc = x.clone();\n var t = this.curve.redN.redMul(this.z);\n for (;;) {\n xc.iadd(this.curve.n);\n if (xc.cmp(this.curve.p) >= 0)\n return false;\n\n rx.redIAdd(t);\n if (this.x.cmp(rx) === 0)\n return true;\n }\n};\n\n// Compatibility with BaseCurve\nPoint.prototype.toP = Point.prototype.normalize;\nPoint.prototype.mixedAdd = Point.prototype.add;\n", "'use strict';\n\nvar curve = exports;\n\ncurve.base = require('./base');\ncurve.short = require('./short');\ncurve.mont = require('./mont');\ncurve.edwards = require('./edwards');\n", "'use strict';\n\nvar assert = require('minimalistic-assert');\nvar inherits = require('inherits');\n\nexports.inherits = inherits;\n\nfunction isSurrogatePair(msg, i) {\n if ((msg.charCodeAt(i) & 0xFC00) !== 0xD800) {\n return false;\n }\n if (i < 0 || i + 1 >= msg.length) {\n return false;\n }\n return (msg.charCodeAt(i + 1) & 0xFC00) === 0xDC00;\n}\n\nfunction toArray(msg, enc) {\n if (Array.isArray(msg))\n return msg.slice();\n if (!msg)\n return [];\n var res = [];\n if (typeof msg === 'string') {\n if (!enc) {\n // Inspired by stringToUtf8ByteArray() in closure-library by Google\n // https://github.com/google/closure-library/blob/8598d87242af59aac233270742c8984e2b2bdbe0/closure/goog/crypt/crypt.js#L117-L143\n // Apache License 2.0\n // https://github.com/google/closure-library/blob/master/LICENSE\n var p = 0;\n for (var i = 0; i < msg.length; i++) {\n var c = msg.charCodeAt(i);\n if (c < 128) {\n res[p++] = c;\n } else if (c < 2048) {\n res[p++] = (c >> 6) | 192;\n res[p++] = (c & 63) | 128;\n } else if (isSurrogatePair(msg, i)) {\n c = 0x10000 + ((c & 0x03FF) << 10) + (msg.charCodeAt(++i) & 0x03FF);\n res[p++] = (c >> 18) | 240;\n res[p++] = ((c >> 12) & 63) | 128;\n res[p++] = ((c >> 6) & 63) | 128;\n res[p++] = (c & 63) | 128;\n } else {\n res[p++] = (c >> 12) | 224;\n res[p++] = ((c >> 6) & 63) | 128;\n res[p++] = (c & 63) | 128;\n }\n }\n } else if (enc === 'hex') {\n msg = msg.replace(/[^a-z0-9]+/ig, '');\n if (msg.length % 2 !== 0)\n msg = '0' + msg;\n for (i = 0; i < msg.length; i += 2)\n res.push(parseInt(msg[i] + msg[i + 1], 16));\n }\n } else {\n for (i = 0; i < msg.length; i++)\n res[i] = msg[i] | 0;\n }\n return res;\n}\nexports.toArray = toArray;\n\nfunction toHex(msg) {\n var res = '';\n for (var i = 0; i < msg.length; i++)\n res += zero2(msg[i].toString(16));\n return res;\n}\nexports.toHex = toHex;\n\nfunction htonl(w) {\n var res = (w >>> 24) |\n ((w >>> 8) & 0xff00) |\n ((w << 8) & 0xff0000) |\n ((w & 0xff) << 24);\n return res >>> 0;\n}\nexports.htonl = htonl;\n\nfunction toHex32(msg, endian) {\n var res = '';\n for (var i = 0; i < msg.length; i++) {\n var w = msg[i];\n if (endian === 'little')\n w = htonl(w);\n res += zero8(w.toString(16));\n }\n return res;\n}\nexports.toHex32 = toHex32;\n\nfunction zero2(word) {\n if (word.length === 1)\n return '0' + word;\n else\n return word;\n}\nexports.zero2 = zero2;\n\nfunction zero8(word) {\n if (word.length === 7)\n return '0' + word;\n else if (word.length === 6)\n return '00' + word;\n else if (word.length === 5)\n return '000' + word;\n else if (word.length === 4)\n return '0000' + word;\n else if (word.length === 3)\n return '00000' + word;\n else if (word.length === 2)\n return '000000' + word;\n else if (word.length === 1)\n return '0000000' + word;\n else\n return word;\n}\nexports.zero8 = zero8;\n\nfunction join32(msg, start, end, endian) {\n var len = end - start;\n assert(len % 4 === 0);\n var res = new Array(len / 4);\n for (var i = 0, k = start; i < res.length; i++, k += 4) {\n var w;\n if (endian === 'big')\n w = (msg[k] << 24) | (msg[k + 1] << 16) | (msg[k + 2] << 8) | msg[k + 3];\n else\n w = (msg[k + 3] << 24) | (msg[k + 2] << 16) | (msg[k + 1] << 8) | msg[k];\n res[i] = w >>> 0;\n }\n return res;\n}\nexports.join32 = join32;\n\nfunction split32(msg, endian) {\n var res = new Array(msg.length * 4);\n for (var i = 0, k = 0; i < msg.length; i++, k += 4) {\n var m = msg[i];\n if (endian === 'big') {\n res[k] = m >>> 24;\n res[k + 1] = (m >>> 16) & 0xff;\n res[k + 2] = (m >>> 8) & 0xff;\n res[k + 3] = m & 0xff;\n } else {\n res[k + 3] = m >>> 24;\n res[k + 2] = (m >>> 16) & 0xff;\n res[k + 1] = (m >>> 8) & 0xff;\n res[k] = m & 0xff;\n }\n }\n return res;\n}\nexports.split32 = split32;\n\nfunction rotr32(w, b) {\n return (w >>> b) | (w << (32 - b));\n}\nexports.rotr32 = rotr32;\n\nfunction rotl32(w, b) {\n return (w << b) | (w >>> (32 - b));\n}\nexports.rotl32 = rotl32;\n\nfunction sum32(a, b) {\n return (a + b) >>> 0;\n}\nexports.sum32 = sum32;\n\nfunction sum32_3(a, b, c) {\n return (a + b + c) >>> 0;\n}\nexports.sum32_3 = sum32_3;\n\nfunction sum32_4(a, b, c, d) {\n return (a + b + c + d) >>> 0;\n}\nexports.sum32_4 = sum32_4;\n\nfunction sum32_5(a, b, c, d, e) {\n return (a + b + c + d + e) >>> 0;\n}\nexports.sum32_5 = sum32_5;\n\nfunction sum64(buf, pos, ah, al) {\n var bh = buf[pos];\n var bl = buf[pos + 1];\n\n var lo = (al + bl) >>> 0;\n var hi = (lo < al ? 1 : 0) + ah + bh;\n buf[pos] = hi >>> 0;\n buf[pos + 1] = lo;\n}\nexports.sum64 = sum64;\n\nfunction sum64_hi(ah, al, bh, bl) {\n var lo = (al + bl) >>> 0;\n var hi = (lo < al ? 1 : 0) + ah + bh;\n return hi >>> 0;\n}\nexports.sum64_hi = sum64_hi;\n\nfunction sum64_lo(ah, al, bh, bl) {\n var lo = al + bl;\n return lo >>> 0;\n}\nexports.sum64_lo = sum64_lo;\n\nfunction sum64_4_hi(ah, al, bh, bl, ch, cl, dh, dl) {\n var carry = 0;\n var lo = al;\n lo = (lo + bl) >>> 0;\n carry += lo < al ? 1 : 0;\n lo = (lo + cl) >>> 0;\n carry += lo < cl ? 1 : 0;\n lo = (lo + dl) >>> 0;\n carry += lo < dl ? 1 : 0;\n\n var hi = ah + bh + ch + dh + carry;\n return hi >>> 0;\n}\nexports.sum64_4_hi = sum64_4_hi;\n\nfunction sum64_4_lo(ah, al, bh, bl, ch, cl, dh, dl) {\n var lo = al + bl + cl + dl;\n return lo >>> 0;\n}\nexports.sum64_4_lo = sum64_4_lo;\n\nfunction sum64_5_hi(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {\n var carry = 0;\n var lo = al;\n lo = (lo + bl) >>> 0;\n carry += lo < al ? 1 : 0;\n lo = (lo + cl) >>> 0;\n carry += lo < cl ? 1 : 0;\n lo = (lo + dl) >>> 0;\n carry += lo < dl ? 1 : 0;\n lo = (lo + el) >>> 0;\n carry += lo < el ? 1 : 0;\n\n var hi = ah + bh + ch + dh + eh + carry;\n return hi >>> 0;\n}\nexports.sum64_5_hi = sum64_5_hi;\n\nfunction sum64_5_lo(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {\n var lo = al + bl + cl + dl + el;\n\n return lo >>> 0;\n}\nexports.sum64_5_lo = sum64_5_lo;\n\nfunction rotr64_hi(ah, al, num) {\n var r = (al << (32 - num)) | (ah >>> num);\n return r >>> 0;\n}\nexports.rotr64_hi = rotr64_hi;\n\nfunction rotr64_lo(ah, al, num) {\n var r = (ah << (32 - num)) | (al >>> num);\n return r >>> 0;\n}\nexports.rotr64_lo = rotr64_lo;\n\nfunction shr64_hi(ah, al, num) {\n return ah >>> num;\n}\nexports.shr64_hi = shr64_hi;\n\nfunction shr64_lo(ah, al, num) {\n var r = (ah << (32 - num)) | (al >>> num);\n return r >>> 0;\n}\nexports.shr64_lo = shr64_lo;\n", "'use strict';\n\nvar utils = require('./utils');\nvar assert = require('minimalistic-assert');\n\nfunction BlockHash() {\n this.pending = null;\n this.pendingTotal = 0;\n this.blockSize = this.constructor.blockSize;\n this.outSize = this.constructor.outSize;\n this.hmacStrength = this.constructor.hmacStrength;\n this.padLength = this.constructor.padLength / 8;\n this.endian = 'big';\n\n this._delta8 = this.blockSize / 8;\n this._delta32 = this.blockSize / 32;\n}\nexports.BlockHash = BlockHash;\n\nBlockHash.prototype.update = function update(msg, enc) {\n // Convert message to array, pad it, and join into 32bit blocks\n msg = utils.toArray(msg, enc);\n if (!this.pending)\n this.pending = msg;\n else\n this.pending = this.pending.concat(msg);\n this.pendingTotal += msg.length;\n\n // Enough data, try updating\n if (this.pending.length >= this._delta8) {\n msg = this.pending;\n\n // Process pending data in blocks\n var r = msg.length % this._delta8;\n this.pending = msg.slice(msg.length - r, msg.length);\n if (this.pending.length === 0)\n this.pending = null;\n\n msg = utils.join32(msg, 0, msg.length - r, this.endian);\n for (var i = 0; i < msg.length; i += this._delta32)\n this._update(msg, i, i + this._delta32);\n }\n\n return this;\n};\n\nBlockHash.prototype.digest = function digest(enc) {\n this.update(this._pad());\n assert(this.pending === null);\n\n return this._digest(enc);\n};\n\nBlockHash.prototype._pad = function pad() {\n var len = this.pendingTotal;\n var bytes = this._delta8;\n var k = bytes - ((len + this.padLength) % bytes);\n var res = new Array(k + this.padLength);\n res[0] = 0x80;\n for (var i = 1; i < k; i++)\n res[i] = 0;\n\n // Append length\n len <<= 3;\n if (this.endian === 'big') {\n for (var t = 8; t < this.padLength; t++)\n res[i++] = 0;\n\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = (len >>> 24) & 0xff;\n res[i++] = (len >>> 16) & 0xff;\n res[i++] = (len >>> 8) & 0xff;\n res[i++] = len & 0xff;\n } else {\n res[i++] = len & 0xff;\n res[i++] = (len >>> 8) & 0xff;\n res[i++] = (len >>> 16) & 0xff;\n res[i++] = (len >>> 24) & 0xff;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n\n for (t = 8; t < this.padLength; t++)\n res[i++] = 0;\n }\n\n return res;\n};\n", "'use strict';\n\nvar utils = require('../utils');\nvar rotr32 = utils.rotr32;\n\nfunction ft_1(s, x, y, z) {\n if (s === 0)\n return ch32(x, y, z);\n if (s === 1 || s === 3)\n return p32(x, y, z);\n if (s === 2)\n return maj32(x, y, z);\n}\nexports.ft_1 = ft_1;\n\nfunction ch32(x, y, z) {\n return (x & y) ^ ((~x) & z);\n}\nexports.ch32 = ch32;\n\nfunction maj32(x, y, z) {\n return (x & y) ^ (x & z) ^ (y & z);\n}\nexports.maj32 = maj32;\n\nfunction p32(x, y, z) {\n return x ^ y ^ z;\n}\nexports.p32 = p32;\n\nfunction s0_256(x) {\n return rotr32(x, 2) ^ rotr32(x, 13) ^ rotr32(x, 22);\n}\nexports.s0_256 = s0_256;\n\nfunction s1_256(x) {\n return rotr32(x, 6) ^ rotr32(x, 11) ^ rotr32(x, 25);\n}\nexports.s1_256 = s1_256;\n\nfunction g0_256(x) {\n return rotr32(x, 7) ^ rotr32(x, 18) ^ (x >>> 3);\n}\nexports.g0_256 = g0_256;\n\nfunction g1_256(x) {\n return rotr32(x, 17) ^ rotr32(x, 19) ^ (x >>> 10);\n}\nexports.g1_256 = g1_256;\n", "'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar shaCommon = require('./common');\n\nvar rotl32 = utils.rotl32;\nvar sum32 = utils.sum32;\nvar sum32_5 = utils.sum32_5;\nvar ft_1 = shaCommon.ft_1;\nvar BlockHash = common.BlockHash;\n\nvar sha1_K = [\n 0x5A827999, 0x6ED9EBA1,\n 0x8F1BBCDC, 0xCA62C1D6\n];\n\nfunction SHA1() {\n if (!(this instanceof SHA1))\n return new SHA1();\n\n BlockHash.call(this);\n this.h = [\n 0x67452301, 0xefcdab89, 0x98badcfe,\n 0x10325476, 0xc3d2e1f0 ];\n this.W = new Array(80);\n}\n\nutils.inherits(SHA1, BlockHash);\nmodule.exports = SHA1;\n\nSHA1.blockSize = 512;\nSHA1.outSize = 160;\nSHA1.hmacStrength = 80;\nSHA1.padLength = 64;\n\nSHA1.prototype._update = function _update(msg, start) {\n var W = this.W;\n\n for (var i = 0; i < 16; i++)\n W[i] = msg[start + i];\n\n for(; i < W.length; i++)\n W[i] = rotl32(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16], 1);\n\n var a = this.h[0];\n var b = this.h[1];\n var c = this.h[2];\n var d = this.h[3];\n var e = this.h[4];\n\n for (i = 0; i < W.length; i++) {\n var s = ~~(i / 20);\n var t = sum32_5(rotl32(a, 5), ft_1(s, b, c, d), e, W[i], sha1_K[s]);\n e = d;\n d = c;\n c = rotl32(b, 30);\n b = a;\n a = t;\n }\n\n this.h[0] = sum32(this.h[0], a);\n this.h[1] = sum32(this.h[1], b);\n this.h[2] = sum32(this.h[2], c);\n this.h[3] = sum32(this.h[3], d);\n this.h[4] = sum32(this.h[4], e);\n};\n\nSHA1.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n", "'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar shaCommon = require('./common');\nvar assert = require('minimalistic-assert');\n\nvar sum32 = utils.sum32;\nvar sum32_4 = utils.sum32_4;\nvar sum32_5 = utils.sum32_5;\nvar ch32 = shaCommon.ch32;\nvar maj32 = shaCommon.maj32;\nvar s0_256 = shaCommon.s0_256;\nvar s1_256 = shaCommon.s1_256;\nvar g0_256 = shaCommon.g0_256;\nvar g1_256 = shaCommon.g1_256;\n\nvar BlockHash = common.BlockHash;\n\nvar sha256_K = [\n 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5,\n 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,\n 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3,\n 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,\n 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc,\n 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,\n 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7,\n 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,\n 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13,\n 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\n 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3,\n 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,\n 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5,\n 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,\n 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208,\n 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2\n];\n\nfunction SHA256() {\n if (!(this instanceof SHA256))\n return new SHA256();\n\n BlockHash.call(this);\n this.h = [\n 0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a,\n 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19\n ];\n this.k = sha256_K;\n this.W = new Array(64);\n}\nutils.inherits(SHA256, BlockHash);\nmodule.exports = SHA256;\n\nSHA256.blockSize = 512;\nSHA256.outSize = 256;\nSHA256.hmacStrength = 192;\nSHA256.padLength = 64;\n\nSHA256.prototype._update = function _update(msg, start) {\n var W = this.W;\n\n for (var i = 0; i < 16; i++)\n W[i] = msg[start + i];\n for (; i < W.length; i++)\n W[i] = sum32_4(g1_256(W[i - 2]), W[i - 7], g0_256(W[i - 15]), W[i - 16]);\n\n var a = this.h[0];\n var b = this.h[1];\n var c = this.h[2];\n var d = this.h[3];\n var e = this.h[4];\n var f = this.h[5];\n var g = this.h[6];\n var h = this.h[7];\n\n assert(this.k.length === W.length);\n for (i = 0; i < W.length; i++) {\n var T1 = sum32_5(h, s1_256(e), ch32(e, f, g), this.k[i], W[i]);\n var T2 = sum32(s0_256(a), maj32(a, b, c));\n h = g;\n g = f;\n f = e;\n e = sum32(d, T1);\n d = c;\n c = b;\n b = a;\n a = sum32(T1, T2);\n }\n\n this.h[0] = sum32(this.h[0], a);\n this.h[1] = sum32(this.h[1], b);\n this.h[2] = sum32(this.h[2], c);\n this.h[3] = sum32(this.h[3], d);\n this.h[4] = sum32(this.h[4], e);\n this.h[5] = sum32(this.h[5], f);\n this.h[6] = sum32(this.h[6], g);\n this.h[7] = sum32(this.h[7], h);\n};\n\nSHA256.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n", "'use strict';\n\nvar utils = require('../utils');\nvar SHA256 = require('./256');\n\nfunction SHA224() {\n if (!(this instanceof SHA224))\n return new SHA224();\n\n SHA256.call(this);\n this.h = [\n 0xc1059ed8, 0x367cd507, 0x3070dd17, 0xf70e5939,\n 0xffc00b31, 0x68581511, 0x64f98fa7, 0xbefa4fa4 ];\n}\nutils.inherits(SHA224, SHA256);\nmodule.exports = SHA224;\n\nSHA224.blockSize = 512;\nSHA224.outSize = 224;\nSHA224.hmacStrength = 192;\nSHA224.padLength = 64;\n\nSHA224.prototype._digest = function digest(enc) {\n // Just truncate output\n if (enc === 'hex')\n return utils.toHex32(this.h.slice(0, 7), 'big');\n else\n return utils.split32(this.h.slice(0, 7), 'big');\n};\n\n", "'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar assert = require('minimalistic-assert');\n\nvar rotr64_hi = utils.rotr64_hi;\nvar rotr64_lo = utils.rotr64_lo;\nvar shr64_hi = utils.shr64_hi;\nvar shr64_lo = utils.shr64_lo;\nvar sum64 = utils.sum64;\nvar sum64_hi = utils.sum64_hi;\nvar sum64_lo = utils.sum64_lo;\nvar sum64_4_hi = utils.sum64_4_hi;\nvar sum64_4_lo = utils.sum64_4_lo;\nvar sum64_5_hi = utils.sum64_5_hi;\nvar sum64_5_lo = utils.sum64_5_lo;\n\nvar BlockHash = common.BlockHash;\n\nvar sha512_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 SHA512() {\n if (!(this instanceof SHA512))\n return new SHA512();\n\n BlockHash.call(this);\n this.h = [\n 0x6a09e667, 0xf3bcc908,\n 0xbb67ae85, 0x84caa73b,\n 0x3c6ef372, 0xfe94f82b,\n 0xa54ff53a, 0x5f1d36f1,\n 0x510e527f, 0xade682d1,\n 0x9b05688c, 0x2b3e6c1f,\n 0x1f83d9ab, 0xfb41bd6b,\n 0x5be0cd19, 0x137e2179 ];\n this.k = sha512_K;\n this.W = new Array(160);\n}\nutils.inherits(SHA512, BlockHash);\nmodule.exports = SHA512;\n\nSHA512.blockSize = 1024;\nSHA512.outSize = 512;\nSHA512.hmacStrength = 192;\nSHA512.padLength = 128;\n\nSHA512.prototype._prepareBlock = function _prepareBlock(msg, start) {\n var W = this.W;\n\n // 32 x 32bit words\n for (var i = 0; i < 32; i++)\n W[i] = msg[start + i];\n for (; i < W.length; i += 2) {\n var c0_hi = g1_512_hi(W[i - 4], W[i - 3]); // i - 2\n var c0_lo = g1_512_lo(W[i - 4], W[i - 3]);\n var c1_hi = W[i - 14]; // i - 7\n var c1_lo = W[i - 13];\n var c2_hi = g0_512_hi(W[i - 30], W[i - 29]); // i - 15\n var c2_lo = g0_512_lo(W[i - 30], W[i - 29]);\n var c3_hi = W[i - 32]; // i - 16\n var c3_lo = W[i - 31];\n\n W[i] = sum64_4_hi(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo);\n W[i + 1] = sum64_4_lo(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo);\n }\n};\n\nSHA512.prototype._update = function _update(msg, start) {\n this._prepareBlock(msg, start);\n\n var W = this.W;\n\n var ah = this.h[0];\n var al = this.h[1];\n var bh = this.h[2];\n var bl = this.h[3];\n var ch = this.h[4];\n var cl = this.h[5];\n var dh = this.h[6];\n var dl = this.h[7];\n var eh = this.h[8];\n var el = this.h[9];\n var fh = this.h[10];\n var fl = this.h[11];\n var gh = this.h[12];\n var gl = this.h[13];\n var hh = this.h[14];\n var hl = this.h[15];\n\n assert(this.k.length === W.length);\n for (var i = 0; i < W.length; i += 2) {\n var c0_hi = hh;\n var c0_lo = hl;\n var c1_hi = s1_512_hi(eh, el);\n var c1_lo = s1_512_lo(eh, el);\n var c2_hi = ch64_hi(eh, el, fh, fl, gh, gl);\n var c2_lo = ch64_lo(eh, el, fh, fl, gh, gl);\n var c3_hi = this.k[i];\n var c3_lo = this.k[i + 1];\n var c4_hi = W[i];\n var c4_lo = W[i + 1];\n\n var T1_hi = sum64_5_hi(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo,\n c4_hi, c4_lo);\n var T1_lo = sum64_5_lo(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo,\n c4_hi, c4_lo);\n\n c0_hi = s0_512_hi(ah, al);\n c0_lo = s0_512_lo(ah, al);\n c1_hi = maj64_hi(ah, al, bh, bl, ch, cl);\n c1_lo = maj64_lo(ah, al, bh, bl, ch, cl);\n\n var T2_hi = sum64_hi(c0_hi, c0_lo, c1_hi, c1_lo);\n var T2_lo = sum64_lo(c0_hi, c0_lo, c1_hi, c1_lo);\n\n hh = gh;\n hl = gl;\n\n gh = fh;\n gl = fl;\n\n fh = eh;\n fl = el;\n\n eh = sum64_hi(dh, dl, T1_hi, T1_lo);\n el = sum64_lo(dl, dl, T1_hi, T1_lo);\n\n dh = ch;\n dl = cl;\n\n ch = bh;\n cl = bl;\n\n bh = ah;\n bl = al;\n\n ah = sum64_hi(T1_hi, T1_lo, T2_hi, T2_lo);\n al = sum64_lo(T1_hi, T1_lo, T2_hi, T2_lo);\n }\n\n sum64(this.h, 0, ah, al);\n sum64(this.h, 2, bh, bl);\n sum64(this.h, 4, ch, cl);\n sum64(this.h, 6, dh, dl);\n sum64(this.h, 8, eh, el);\n sum64(this.h, 10, fh, fl);\n sum64(this.h, 12, gh, gl);\n sum64(this.h, 14, hh, hl);\n};\n\nSHA512.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n\nfunction ch64_hi(xh, xl, yh, yl, zh) {\n var r = (xh & yh) ^ ((~xh) & zh);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction ch64_lo(xh, xl, yh, yl, zh, zl) {\n var r = (xl & yl) ^ ((~xl) & zl);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction maj64_hi(xh, xl, yh, yl, zh) {\n var r = (xh & yh) ^ (xh & zh) ^ (yh & zh);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction maj64_lo(xh, xl, yh, yl, zh, zl) {\n var r = (xl & yl) ^ (xl & zl) ^ (yl & zl);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s0_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 28);\n var c1_hi = rotr64_hi(xl, xh, 2); // 34\n var c2_hi = rotr64_hi(xl, xh, 7); // 39\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s0_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 28);\n var c1_lo = rotr64_lo(xl, xh, 2); // 34\n var c2_lo = rotr64_lo(xl, xh, 7); // 39\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s1_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 14);\n var c1_hi = rotr64_hi(xh, xl, 18);\n var c2_hi = rotr64_hi(xl, xh, 9); // 41\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s1_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 14);\n var c1_lo = rotr64_lo(xh, xl, 18);\n var c2_lo = rotr64_lo(xl, xh, 9); // 41\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g0_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 1);\n var c1_hi = rotr64_hi(xh, xl, 8);\n var c2_hi = shr64_hi(xh, xl, 7);\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g0_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 1);\n var c1_lo = rotr64_lo(xh, xl, 8);\n var c2_lo = shr64_lo(xh, xl, 7);\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g1_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 19);\n var c1_hi = rotr64_hi(xl, xh, 29); // 61\n var c2_hi = shr64_hi(xh, xl, 6);\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g1_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 19);\n var c1_lo = rotr64_lo(xl, xh, 29); // 61\n var c2_lo = shr64_lo(xh, xl, 6);\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n", "'use strict';\n\nvar utils = require('../utils');\n\nvar SHA512 = require('./512');\n\nfunction SHA384() {\n if (!(this instanceof SHA384))\n return new SHA384();\n\n SHA512.call(this);\n this.h = [\n 0xcbbb9d5d, 0xc1059ed8,\n 0x629a292a, 0x367cd507,\n 0x9159015a, 0x3070dd17,\n 0x152fecd8, 0xf70e5939,\n 0x67332667, 0xffc00b31,\n 0x8eb44a87, 0x68581511,\n 0xdb0c2e0d, 0x64f98fa7,\n 0x47b5481d, 0xbefa4fa4 ];\n}\nutils.inherits(SHA384, SHA512);\nmodule.exports = SHA384;\n\nSHA384.blockSize = 1024;\nSHA384.outSize = 384;\nSHA384.hmacStrength = 192;\nSHA384.padLength = 128;\n\nSHA384.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h.slice(0, 12), 'big');\n else\n return utils.split32(this.h.slice(0, 12), 'big');\n};\n", "'use strict';\n\nexports.sha1 = require('./sha/1');\nexports.sha224 = require('./sha/224');\nexports.sha256 = require('./sha/256');\nexports.sha384 = require('./sha/384');\nexports.sha512 = require('./sha/512');\n", "'use strict';\n\nvar utils = require('./utils');\nvar common = require('./common');\n\nvar rotl32 = utils.rotl32;\nvar sum32 = utils.sum32;\nvar sum32_3 = utils.sum32_3;\nvar sum32_4 = utils.sum32_4;\nvar BlockHash = common.BlockHash;\n\nfunction RIPEMD160() {\n if (!(this instanceof RIPEMD160))\n return new RIPEMD160();\n\n BlockHash.call(this);\n\n this.h = [ 0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0 ];\n this.endian = 'little';\n}\nutils.inherits(RIPEMD160, BlockHash);\nexports.ripemd160 = RIPEMD160;\n\nRIPEMD160.blockSize = 512;\nRIPEMD160.outSize = 160;\nRIPEMD160.hmacStrength = 192;\nRIPEMD160.padLength = 64;\n\nRIPEMD160.prototype._update = function update(msg, start) {\n var A = this.h[0];\n var B = this.h[1];\n var C = this.h[2];\n var D = this.h[3];\n var E = this.h[4];\n var Ah = A;\n var Bh = B;\n var Ch = C;\n var Dh = D;\n var Eh = E;\n for (var j = 0; j < 80; j++) {\n var T = sum32(\n rotl32(\n sum32_4(A, f(j, B, C, D), msg[r[j] + start], K(j)),\n s[j]),\n E);\n A = E;\n E = D;\n D = rotl32(C, 10);\n C = B;\n B = T;\n T = sum32(\n rotl32(\n sum32_4(Ah, f(79 - j, Bh, Ch, Dh), msg[rh[j] + start], Kh(j)),\n sh[j]),\n Eh);\n Ah = Eh;\n Eh = Dh;\n Dh = rotl32(Ch, 10);\n Ch = Bh;\n Bh = T;\n }\n T = sum32_3(this.h[1], C, Dh);\n this.h[1] = sum32_3(this.h[2], D, Eh);\n this.h[2] = sum32_3(this.h[3], E, Ah);\n this.h[3] = sum32_3(this.h[4], A, Bh);\n this.h[4] = sum32_3(this.h[0], B, Ch);\n this.h[0] = T;\n};\n\nRIPEMD160.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'little');\n else\n return utils.split32(this.h, 'little');\n};\n\nfunction f(j, x, y, z) {\n if (j <= 15)\n return x ^ y ^ z;\n else if (j <= 31)\n return (x & y) | ((~x) & z);\n else if (j <= 47)\n return (x | (~y)) ^ z;\n else if (j <= 63)\n return (x & z) | (y & (~z));\n else\n return x ^ (y | (~z));\n}\n\nfunction K(j) {\n if (j <= 15)\n return 0x00000000;\n else if (j <= 31)\n return 0x5a827999;\n else if (j <= 47)\n return 0x6ed9eba1;\n else if (j <= 63)\n return 0x8f1bbcdc;\n else\n return 0xa953fd4e;\n}\n\nfunction Kh(j) {\n if (j <= 15)\n return 0x50a28be6;\n else if (j <= 31)\n return 0x5c4dd124;\n else if (j <= 47)\n return 0x6d703ef3;\n else if (j <= 63)\n return 0x7a6d76e9;\n else\n return 0x00000000;\n}\n\nvar r = [\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,\n 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8,\n 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12,\n 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2,\n 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13\n];\n\nvar rh = [\n 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12,\n 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2,\n 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13,\n 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14,\n 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11\n];\n\nvar s = [\n 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8,\n 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12,\n 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5,\n 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12,\n 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6\n];\n\nvar sh = [\n 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6,\n 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11,\n 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5,\n 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8,\n 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11\n];\n", "'use strict';\n\nvar utils = require('./utils');\nvar assert = require('minimalistic-assert');\n\nfunction Hmac(hash, key, enc) {\n if (!(this instanceof Hmac))\n return new Hmac(hash, key, enc);\n this.Hash = hash;\n this.blockSize = hash.blockSize / 8;\n this.outSize = hash.outSize / 8;\n this.inner = null;\n this.outer = null;\n\n this._init(utils.toArray(key, enc));\n}\nmodule.exports = Hmac;\n\nHmac.prototype._init = function init(key) {\n // Shorten key, if needed\n if (key.length > this.blockSize)\n key = new this.Hash().update(key).digest();\n assert(key.length <= this.blockSize);\n\n // Add padding to key\n for (var i = key.length; i < this.blockSize; i++)\n key.push(0);\n\n for (i = 0; i < key.length; i++)\n key[i] ^= 0x36;\n this.inner = new this.Hash().update(key);\n\n // 0x36 ^ 0x5c = 0x6a\n for (i = 0; i < key.length; i++)\n key[i] ^= 0x6a;\n this.outer = new this.Hash().update(key);\n};\n\nHmac.prototype.update = function update(msg, enc) {\n this.inner.update(msg, enc);\n return this;\n};\n\nHmac.prototype.digest = function digest(enc) {\n this.outer.update(this.inner.digest());\n return this.outer.digest(enc);\n};\n", "var hash = exports;\n\nhash.utils = require('./hash/utils');\nhash.common = require('./hash/common');\nhash.sha = require('./hash/sha');\nhash.ripemd = require('./hash/ripemd');\nhash.hmac = require('./hash/hmac');\n\n// Proxy hash functions to the main object\nhash.sha1 = hash.sha.sha1;\nhash.sha256 = hash.sha.sha256;\nhash.sha224 = hash.sha.sha224;\nhash.sha384 = hash.sha.sha384;\nhash.sha512 = hash.sha.sha512;\nhash.ripemd160 = hash.ripemd.ripemd160;\n", "module.exports = {\n doubles: {\n step: 4,\n points: [\n [\n 'e60fce93b59e9ec53011aabc21c23e97b2a31369b87a5ae9c44ee89e2a6dec0a',\n 'f7e3507399e595929db99f34f57937101296891e44d23f0be1f32cce69616821',\n ],\n [\n '8282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f51508',\n '11f8a8098557dfe45e8256e830b60ace62d613ac2f7b17bed31b6eaff6e26caf',\n ],\n [\n '175e159f728b865a72f99cc6c6fc846de0b93833fd2222ed73fce5b551e5b739',\n 'd3506e0d9e3c79eba4ef97a51ff71f5eacb5955add24345c6efa6ffee9fed695',\n ],\n [\n '363d90d447b00c9c99ceac05b6262ee053441c7e55552ffe526bad8f83ff4640',\n '4e273adfc732221953b445397f3363145b9a89008199ecb62003c7f3bee9de9',\n ],\n [\n '8b4b5f165df3c2be8c6244b5b745638843e4a781a15bcd1b69f79a55dffdf80c',\n '4aad0a6f68d308b4b3fbd7813ab0da04f9e336546162ee56b3eff0c65fd4fd36',\n ],\n [\n '723cbaa6e5db996d6bf771c00bd548c7b700dbffa6c0e77bcb6115925232fcda',\n '96e867b5595cc498a921137488824d6e2660a0653779494801dc069d9eb39f5f',\n ],\n [\n 'eebfa4d493bebf98ba5feec812c2d3b50947961237a919839a533eca0e7dd7fa',\n '5d9a8ca3970ef0f269ee7edaf178089d9ae4cdc3a711f712ddfd4fdae1de8999',\n ],\n [\n '100f44da696e71672791d0a09b7bde459f1215a29b3c03bfefd7835b39a48db0',\n 'cdd9e13192a00b772ec8f3300c090666b7ff4a18ff5195ac0fbd5cd62bc65a09',\n ],\n [\n 'e1031be262c7ed1b1dc9227a4a04c017a77f8d4464f3b3852c8acde6e534fd2d',\n '9d7061928940405e6bb6a4176597535af292dd419e1ced79a44f18f29456a00d',\n ],\n [\n 'feea6cae46d55b530ac2839f143bd7ec5cf8b266a41d6af52d5e688d9094696d',\n 'e57c6b6c97dce1bab06e4e12bf3ecd5c981c8957cc41442d3155debf18090088',\n ],\n [\n 'da67a91d91049cdcb367be4be6ffca3cfeed657d808583de33fa978bc1ec6cb1',\n '9bacaa35481642bc41f463f7ec9780e5dec7adc508f740a17e9ea8e27a68be1d',\n ],\n [\n '53904faa0b334cdda6e000935ef22151ec08d0f7bb11069f57545ccc1a37b7c0',\n '5bc087d0bc80106d88c9eccac20d3c1c13999981e14434699dcb096b022771c8',\n ],\n [\n '8e7bcd0bd35983a7719cca7764ca906779b53a043a9b8bcaeff959f43ad86047',\n '10b7770b2a3da4b3940310420ca9514579e88e2e47fd68b3ea10047e8460372a',\n ],\n [\n '385eed34c1cdff21e6d0818689b81bde71a7f4f18397e6690a841e1599c43862',\n '283bebc3e8ea23f56701de19e9ebf4576b304eec2086dc8cc0458fe5542e5453',\n ],\n [\n '6f9d9b803ecf191637c73a4413dfa180fddf84a5947fbc9c606ed86c3fac3a7',\n '7c80c68e603059ba69b8e2a30e45c4d47ea4dd2f5c281002d86890603a842160',\n ],\n [\n '3322d401243c4e2582a2147c104d6ecbf774d163db0f5e5313b7e0e742d0e6bd',\n '56e70797e9664ef5bfb019bc4ddaf9b72805f63ea2873af624f3a2e96c28b2a0',\n ],\n [\n '85672c7d2de0b7da2bd1770d89665868741b3f9af7643397721d74d28134ab83',\n '7c481b9b5b43b2eb6374049bfa62c2e5e77f17fcc5298f44c8e3094f790313a6',\n ],\n [\n '948bf809b1988a46b06c9f1919413b10f9226c60f668832ffd959af60c82a0a',\n '53a562856dcb6646dc6b74c5d1c3418c6d4dff08c97cd2bed4cb7f88d8c8e589',\n ],\n [\n '6260ce7f461801c34f067ce0f02873a8f1b0e44dfc69752accecd819f38fd8e8',\n 'bc2da82b6fa5b571a7f09049776a1ef7ecd292238051c198c1a84e95b2b4ae17',\n ],\n [\n 'e5037de0afc1d8d43d8348414bbf4103043ec8f575bfdc432953cc8d2037fa2d',\n '4571534baa94d3b5f9f98d09fb990bddbd5f5b03ec481f10e0e5dc841d755bda',\n ],\n [\n 'e06372b0f4a207adf5ea905e8f1771b4e7e8dbd1c6a6c5b725866a0ae4fce725',\n '7a908974bce18cfe12a27bb2ad5a488cd7484a7787104870b27034f94eee31dd',\n ],\n [\n '213c7a715cd5d45358d0bbf9dc0ce02204b10bdde2a3f58540ad6908d0559754',\n '4b6dad0b5ae462507013ad06245ba190bb4850f5f36a7eeddff2c27534b458f2',\n ],\n [\n '4e7c272a7af4b34e8dbb9352a5419a87e2838c70adc62cddf0cc3a3b08fbd53c',\n '17749c766c9d0b18e16fd09f6def681b530b9614bff7dd33e0b3941817dcaae6',\n ],\n [\n 'fea74e3dbe778b1b10f238ad61686aa5c76e3db2be43057632427e2840fb27b6',\n '6e0568db9b0b13297cf674deccb6af93126b596b973f7b77701d3db7f23cb96f',\n ],\n [\n '76e64113f677cf0e10a2570d599968d31544e179b760432952c02a4417bdde39',\n 'c90ddf8dee4e95cf577066d70681f0d35e2a33d2b56d2032b4b1752d1901ac01',\n ],\n [\n 'c738c56b03b2abe1e8281baa743f8f9a8f7cc643df26cbee3ab150242bcbb891',\n '893fb578951ad2537f718f2eacbfbbbb82314eef7880cfe917e735d9699a84c3',\n ],\n [\n 'd895626548b65b81e264c7637c972877d1d72e5f3a925014372e9f6588f6c14b',\n 'febfaa38f2bc7eae728ec60818c340eb03428d632bb067e179363ed75d7d991f',\n ],\n [\n 'b8da94032a957518eb0f6433571e8761ceffc73693e84edd49150a564f676e03',\n '2804dfa44805a1e4d7c99cc9762808b092cc584d95ff3b511488e4e74efdf6e7',\n ],\n [\n 'e80fea14441fb33a7d8adab9475d7fab2019effb5156a792f1a11778e3c0df5d',\n 'eed1de7f638e00771e89768ca3ca94472d155e80af322ea9fcb4291b6ac9ec78',\n ],\n [\n 'a301697bdfcd704313ba48e51d567543f2a182031efd6915ddc07bbcc4e16070',\n '7370f91cfb67e4f5081809fa25d40f9b1735dbf7c0a11a130c0d1a041e177ea1',\n ],\n [\n '90ad85b389d6b936463f9d0512678de208cc330b11307fffab7ac63e3fb04ed4',\n 'e507a3620a38261affdcbd9427222b839aefabe1582894d991d4d48cb6ef150',\n ],\n [\n '8f68b9d2f63b5f339239c1ad981f162ee88c5678723ea3351b7b444c9ec4c0da',\n '662a9f2dba063986de1d90c2b6be215dbbea2cfe95510bfdf23cbf79501fff82',\n ],\n [\n 'e4f3fb0176af85d65ff99ff9198c36091f48e86503681e3e6686fd5053231e11',\n '1e63633ad0ef4f1c1661a6d0ea02b7286cc7e74ec951d1c9822c38576feb73bc',\n ],\n [\n '8c00fa9b18ebf331eb961537a45a4266c7034f2f0d4e1d0716fb6eae20eae29e',\n 'efa47267fea521a1a9dc343a3736c974c2fadafa81e36c54e7d2a4c66702414b',\n ],\n [\n 'e7a26ce69dd4829f3e10cec0a9e98ed3143d084f308b92c0997fddfc60cb3e41',\n '2a758e300fa7984b471b006a1aafbb18d0a6b2c0420e83e20e8a9421cf2cfd51',\n ],\n [\n 'b6459e0ee3662ec8d23540c223bcbdc571cbcb967d79424f3cf29eb3de6b80ef',\n '67c876d06f3e06de1dadf16e5661db3c4b3ae6d48e35b2ff30bf0b61a71ba45',\n ],\n [\n 'd68a80c8280bb840793234aa118f06231d6f1fc67e73c5a5deda0f5b496943e8',\n 'db8ba9fff4b586d00c4b1f9177b0e28b5b0e7b8f7845295a294c84266b133120',\n ],\n [\n '324aed7df65c804252dc0270907a30b09612aeb973449cea4095980fc28d3d5d',\n '648a365774b61f2ff130c0c35aec1f4f19213b0c7e332843967224af96ab7c84',\n ],\n [\n '4df9c14919cde61f6d51dfdbe5fee5dceec4143ba8d1ca888e8bd373fd054c96',\n '35ec51092d8728050974c23a1d85d4b5d506cdc288490192ebac06cad10d5d',\n ],\n [\n '9c3919a84a474870faed8a9c1cc66021523489054d7f0308cbfc99c8ac1f98cd',\n 'ddb84f0f4a4ddd57584f044bf260e641905326f76c64c8e6be7e5e03d4fc599d',\n ],\n [\n '6057170b1dd12fdf8de05f281d8e06bb91e1493a8b91d4cc5a21382120a959e5',\n '9a1af0b26a6a4807add9a2daf71df262465152bc3ee24c65e899be932385a2a8',\n ],\n [\n 'a576df8e23a08411421439a4518da31880cef0fba7d4df12b1a6973eecb94266',\n '40a6bf20e76640b2c92b97afe58cd82c432e10a7f514d9f3ee8be11ae1b28ec8',\n ],\n [\n '7778a78c28dec3e30a05fe9629de8c38bb30d1f5cf9a3a208f763889be58ad71',\n '34626d9ab5a5b22ff7098e12f2ff580087b38411ff24ac563b513fc1fd9f43ac',\n ],\n [\n '928955ee637a84463729fd30e7afd2ed5f96274e5ad7e5cb09eda9c06d903ac',\n 'c25621003d3f42a827b78a13093a95eeac3d26efa8a8d83fc5180e935bcd091f',\n ],\n [\n '85d0fef3ec6db109399064f3a0e3b2855645b4a907ad354527aae75163d82751',\n '1f03648413a38c0be29d496e582cf5663e8751e96877331582c237a24eb1f962',\n ],\n [\n 'ff2b0dce97eece97c1c9b6041798b85dfdfb6d8882da20308f5404824526087e',\n '493d13fef524ba188af4c4dc54d07936c7b7ed6fb90e2ceb2c951e01f0c29907',\n ],\n [\n '827fbbe4b1e880ea9ed2b2e6301b212b57f1ee148cd6dd28780e5e2cf856e241',\n 'c60f9c923c727b0b71bef2c67d1d12687ff7a63186903166d605b68baec293ec',\n ],\n [\n 'eaa649f21f51bdbae7be4ae34ce6e5217a58fdce7f47f9aa7f3b58fa2120e2b3',\n 'be3279ed5bbbb03ac69a80f89879aa5a01a6b965f13f7e59d47a5305ba5ad93d',\n ],\n [\n 'e4a42d43c5cf169d9391df6decf42ee541b6d8f0c9a137401e23632dda34d24f',\n '4d9f92e716d1c73526fc99ccfb8ad34ce886eedfa8d8e4f13a7f7131deba9414',\n ],\n [\n '1ec80fef360cbdd954160fadab352b6b92b53576a88fea4947173b9d4300bf19',\n 'aeefe93756b5340d2f3a4958a7abbf5e0146e77f6295a07b671cdc1cc107cefd',\n ],\n [\n '146a778c04670c2f91b00af4680dfa8bce3490717d58ba889ddb5928366642be',\n 'b318e0ec3354028add669827f9d4b2870aaa971d2f7e5ed1d0b297483d83efd0',\n ],\n [\n 'fa50c0f61d22e5f07e3acebb1aa07b128d0012209a28b9776d76a8793180eef9',\n '6b84c6922397eba9b72cd2872281a68a5e683293a57a213b38cd8d7d3f4f2811',\n ],\n [\n 'da1d61d0ca721a11b1a5bf6b7d88e8421a288ab5d5bba5220e53d32b5f067ec2',\n '8157f55a7c99306c79c0766161c91e2966a73899d279b48a655fba0f1ad836f1',\n ],\n [\n 'a8e282ff0c9706907215ff98e8fd416615311de0446f1e062a73b0610d064e13',\n '7f97355b8db81c09abfb7f3c5b2515888b679a3e50dd6bd6cef7c73111f4cc0c',\n ],\n [\n '174a53b9c9a285872d39e56e6913cab15d59b1fa512508c022f382de8319497c',\n 'ccc9dc37abfc9c1657b4155f2c47f9e6646b3a1d8cb9854383da13ac079afa73',\n ],\n [\n '959396981943785c3d3e57edf5018cdbe039e730e4918b3d884fdff09475b7ba',\n '2e7e552888c331dd8ba0386a4b9cd6849c653f64c8709385e9b8abf87524f2fd',\n ],\n [\n 'd2a63a50ae401e56d645a1153b109a8fcca0a43d561fba2dbb51340c9d82b151',\n 'e82d86fb6443fcb7565aee58b2948220a70f750af484ca52d4142174dcf89405',\n ],\n [\n '64587e2335471eb890ee7896d7cfdc866bacbdbd3839317b3436f9b45617e073',\n 'd99fcdd5bf6902e2ae96dd6447c299a185b90a39133aeab358299e5e9faf6589',\n ],\n [\n '8481bde0e4e4d885b3a546d3e549de042f0aa6cea250e7fd358d6c86dd45e458',\n '38ee7b8cba5404dd84a25bf39cecb2ca900a79c42b262e556d64b1b59779057e',\n ],\n [\n '13464a57a78102aa62b6979ae817f4637ffcfed3c4b1ce30bcd6303f6caf666b',\n '69be159004614580ef7e433453ccb0ca48f300a81d0942e13f495a907f6ecc27',\n ],\n [\n 'bc4a9df5b713fe2e9aef430bcc1dc97a0cd9ccede2f28588cada3a0d2d83f366',\n 'd3a81ca6e785c06383937adf4b798caa6e8a9fbfa547b16d758d666581f33c1',\n ],\n [\n '8c28a97bf8298bc0d23d8c749452a32e694b65e30a9472a3954ab30fe5324caa',\n '40a30463a3305193378fedf31f7cc0eb7ae784f0451cb9459e71dc73cbef9482',\n ],\n [\n '8ea9666139527a8c1dd94ce4f071fd23c8b350c5a4bb33748c4ba111faccae0',\n '620efabbc8ee2782e24e7c0cfb95c5d735b783be9cf0f8e955af34a30e62b945',\n ],\n [\n 'dd3625faef5ba06074669716bbd3788d89bdde815959968092f76cc4eb9a9787',\n '7a188fa3520e30d461da2501045731ca941461982883395937f68d00c644a573',\n ],\n [\n 'f710d79d9eb962297e4f6232b40e8f7feb2bc63814614d692c12de752408221e',\n 'ea98e67232d3b3295d3b535532115ccac8612c721851617526ae47a9c77bfc82',\n ],\n ],\n },\n naf: {\n wnd: 7,\n points: [\n [\n 'f9308a019258c31049344f85f89d5229b531c845836f99b08601f113bce036f9',\n '388f7b0f632de8140fe337e62a37f3566500a99934c2231b6cb9fd7584b8e672',\n ],\n [\n '2f8bde4d1a07209355b4a7250a5c5128e88b84bddc619ab7cba8d569b240efe4',\n 'd8ac222636e5e3d6d4dba9dda6c9c426f788271bab0d6840dca87d3aa6ac62d6',\n ],\n [\n '5cbdf0646e5db4eaa398f365f2ea7a0e3d419b7e0330e39ce92bddedcac4f9bc',\n '6aebca40ba255960a3178d6d861a54dba813d0b813fde7b5a5082628087264da',\n ],\n [\n 'acd484e2f0c7f65309ad178a9f559abde09796974c57e714c35f110dfc27ccbe',\n 'cc338921b0a7d9fd64380971763b61e9add888a4375f8e0f05cc262ac64f9c37',\n ],\n [\n '774ae7f858a9411e5ef4246b70c65aac5649980be5c17891bbec17895da008cb',\n 'd984a032eb6b5e190243dd56d7b7b365372db1e2dff9d6a8301d74c9c953c61b',\n ],\n [\n 'f28773c2d975288bc7d1d205c3748651b075fbc6610e58cddeeddf8f19405aa8',\n 'ab0902e8d880a89758212eb65cdaf473a1a06da521fa91f29b5cb52db03ed81',\n ],\n [\n 'd7924d4f7d43ea965a465ae3095ff41131e5946f3c85f79e44adbcf8e27e080e',\n '581e2872a86c72a683842ec228cc6defea40af2bd896d3a5c504dc9ff6a26b58',\n ],\n [\n 'defdea4cdb677750a420fee807eacf21eb9898ae79b9768766e4faa04a2d4a34',\n '4211ab0694635168e997b0ead2a93daeced1f4a04a95c0f6cfb199f69e56eb77',\n ],\n [\n '2b4ea0a797a443d293ef5cff444f4979f06acfebd7e86d277475656138385b6c',\n '85e89bc037945d93b343083b5a1c86131a01f60c50269763b570c854e5c09b7a',\n ],\n [\n '352bbf4a4cdd12564f93fa332ce333301d9ad40271f8107181340aef25be59d5',\n '321eb4075348f534d59c18259dda3e1f4a1b3b2e71b1039c67bd3d8bcf81998c',\n ],\n [\n '2fa2104d6b38d11b0230010559879124e42ab8dfeff5ff29dc9cdadd4ecacc3f',\n '2de1068295dd865b64569335bd5dd80181d70ecfc882648423ba76b532b7d67',\n ],\n [\n '9248279b09b4d68dab21a9b066edda83263c3d84e09572e269ca0cd7f5453714',\n '73016f7bf234aade5d1aa71bdea2b1ff3fc0de2a887912ffe54a32ce97cb3402',\n ],\n [\n 'daed4f2be3a8bf278e70132fb0beb7522f570e144bf615c07e996d443dee8729',\n 'a69dce4a7d6c98e8d4a1aca87ef8d7003f83c230f3afa726ab40e52290be1c55',\n ],\n [\n 'c44d12c7065d812e8acf28d7cbb19f9011ecd9e9fdf281b0e6a3b5e87d22e7db',\n '2119a460ce326cdc76c45926c982fdac0e106e861edf61c5a039063f0e0e6482',\n ],\n [\n '6a245bf6dc698504c89a20cfded60853152b695336c28063b61c65cbd269e6b4',\n 'e022cf42c2bd4a708b3f5126f16a24ad8b33ba48d0423b6efd5e6348100d8a82',\n ],\n [\n '1697ffa6fd9de627c077e3d2fe541084ce13300b0bec1146f95ae57f0d0bd6a5',\n 'b9c398f186806f5d27561506e4557433a2cf15009e498ae7adee9d63d01b2396',\n ],\n [\n '605bdb019981718b986d0f07e834cb0d9deb8360ffb7f61df982345ef27a7479',\n '2972d2de4f8d20681a78d93ec96fe23c26bfae84fb14db43b01e1e9056b8c49',\n ],\n [\n '62d14dab4150bf497402fdc45a215e10dcb01c354959b10cfe31c7e9d87ff33d',\n '80fc06bd8cc5b01098088a1950eed0db01aa132967ab472235f5642483b25eaf',\n ],\n [\n '80c60ad0040f27dade5b4b06c408e56b2c50e9f56b9b8b425e555c2f86308b6f',\n '1c38303f1cc5c30f26e66bad7fe72f70a65eed4cbe7024eb1aa01f56430bd57a',\n ],\n [\n '7a9375ad6167ad54aa74c6348cc54d344cc5dc9487d847049d5eabb0fa03c8fb',\n 'd0e3fa9eca8726909559e0d79269046bdc59ea10c70ce2b02d499ec224dc7f7',\n ],\n [\n 'd528ecd9b696b54c907a9ed045447a79bb408ec39b68df504bb51f459bc3ffc9',\n 'eecf41253136e5f99966f21881fd656ebc4345405c520dbc063465b521409933',\n ],\n [\n '49370a4b5f43412ea25f514e8ecdad05266115e4a7ecb1387231808f8b45963',\n '758f3f41afd6ed428b3081b0512fd62a54c3f3afbb5b6764b653052a12949c9a',\n ],\n [\n '77f230936ee88cbbd73df930d64702ef881d811e0e1498e2f1c13eb1fc345d74',\n '958ef42a7886b6400a08266e9ba1b37896c95330d97077cbbe8eb3c7671c60d6',\n ],\n [\n 'f2dac991cc4ce4b9ea44887e5c7c0bce58c80074ab9d4dbaeb28531b7739f530',\n 'e0dedc9b3b2f8dad4da1f32dec2531df9eb5fbeb0598e4fd1a117dba703a3c37',\n ],\n [\n '463b3d9f662621fb1b4be8fbbe2520125a216cdfc9dae3debcba4850c690d45b',\n '5ed430d78c296c3543114306dd8622d7c622e27c970a1de31cb377b01af7307e',\n ],\n [\n 'f16f804244e46e2a09232d4aff3b59976b98fac14328a2d1a32496b49998f247',\n 'cedabd9b82203f7e13d206fcdf4e33d92a6c53c26e5cce26d6579962c4e31df6',\n ],\n [\n 'caf754272dc84563b0352b7a14311af55d245315ace27c65369e15f7151d41d1',\n 'cb474660ef35f5f2a41b643fa5e460575f4fa9b7962232a5c32f908318a04476',\n ],\n [\n '2600ca4b282cb986f85d0f1709979d8b44a09c07cb86d7c124497bc86f082120',\n '4119b88753c15bd6a693b03fcddbb45d5ac6be74ab5f0ef44b0be9475a7e4b40',\n ],\n [\n '7635ca72d7e8432c338ec53cd12220bc01c48685e24f7dc8c602a7746998e435',\n '91b649609489d613d1d5e590f78e6d74ecfc061d57048bad9e76f302c5b9c61',\n ],\n [\n '754e3239f325570cdbbf4a87deee8a66b7f2b33479d468fbc1a50743bf56cc18',\n '673fb86e5bda30fb3cd0ed304ea49a023ee33d0197a695d0c5d98093c536683',\n ],\n [\n 'e3e6bd1071a1e96aff57859c82d570f0330800661d1c952f9fe2694691d9b9e8',\n '59c9e0bba394e76f40c0aa58379a3cb6a5a2283993e90c4167002af4920e37f5',\n ],\n [\n '186b483d056a033826ae73d88f732985c4ccb1f32ba35f4b4cc47fdcf04aa6eb',\n '3b952d32c67cf77e2e17446e204180ab21fb8090895138b4a4a797f86e80888b',\n ],\n [\n 'df9d70a6b9876ce544c98561f4be4f725442e6d2b737d9c91a8321724ce0963f',\n '55eb2dafd84d6ccd5f862b785dc39d4ab157222720ef9da217b8c45cf2ba2417',\n ],\n [\n '5edd5cc23c51e87a497ca815d5dce0f8ab52554f849ed8995de64c5f34ce7143',\n 'efae9c8dbc14130661e8cec030c89ad0c13c66c0d17a2905cdc706ab7399a868',\n ],\n [\n '290798c2b6476830da12fe02287e9e777aa3fba1c355b17a722d362f84614fba',\n 'e38da76dcd440621988d00bcf79af25d5b29c094db2a23146d003afd41943e7a',\n ],\n [\n 'af3c423a95d9f5b3054754efa150ac39cd29552fe360257362dfdecef4053b45',\n 'f98a3fd831eb2b749a93b0e6f35cfb40c8cd5aa667a15581bc2feded498fd9c6',\n ],\n [\n '766dbb24d134e745cccaa28c99bf274906bb66b26dcf98df8d2fed50d884249a',\n '744b1152eacbe5e38dcc887980da38b897584a65fa06cedd2c924f97cbac5996',\n ],\n [\n '59dbf46f8c94759ba21277c33784f41645f7b44f6c596a58ce92e666191abe3e',\n 'c534ad44175fbc300f4ea6ce648309a042ce739a7919798cd85e216c4a307f6e',\n ],\n [\n 'f13ada95103c4537305e691e74e9a4a8dd647e711a95e73cb62dc6018cfd87b8',\n 'e13817b44ee14de663bf4bc808341f326949e21a6a75c2570778419bdaf5733d',\n ],\n [\n '7754b4fa0e8aced06d4167a2c59cca4cda1869c06ebadfb6488550015a88522c',\n '30e93e864e669d82224b967c3020b8fa8d1e4e350b6cbcc537a48b57841163a2',\n ],\n [\n '948dcadf5990e048aa3874d46abef9d701858f95de8041d2a6828c99e2262519',\n 'e491a42537f6e597d5d28a3224b1bc25df9154efbd2ef1d2cbba2cae5347d57e',\n ],\n [\n '7962414450c76c1689c7b48f8202ec37fb224cf5ac0bfa1570328a8a3d7c77ab',\n '100b610ec4ffb4760d5c1fc133ef6f6b12507a051f04ac5760afa5b29db83437',\n ],\n [\n '3514087834964b54b15b160644d915485a16977225b8847bb0dd085137ec47ca',\n 'ef0afbb2056205448e1652c48e8127fc6039e77c15c2378b7e7d15a0de293311',\n ],\n [\n 'd3cc30ad6b483e4bc79ce2c9dd8bc54993e947eb8df787b442943d3f7b527eaf',\n '8b378a22d827278d89c5e9be8f9508ae3c2ad46290358630afb34db04eede0a4',\n ],\n [\n '1624d84780732860ce1c78fcbfefe08b2b29823db913f6493975ba0ff4847610',\n '68651cf9b6da903e0914448c6cd9d4ca896878f5282be4c8cc06e2a404078575',\n ],\n [\n '733ce80da955a8a26902c95633e62a985192474b5af207da6df7b4fd5fc61cd4',\n 'f5435a2bd2badf7d485a4d8b8db9fcce3e1ef8e0201e4578c54673bc1dc5ea1d',\n ],\n [\n '15d9441254945064cf1a1c33bbd3b49f8966c5092171e699ef258dfab81c045c',\n 'd56eb30b69463e7234f5137b73b84177434800bacebfc685fc37bbe9efe4070d',\n ],\n [\n 'a1d0fcf2ec9de675b612136e5ce70d271c21417c9d2b8aaaac138599d0717940',\n 'edd77f50bcb5a3cab2e90737309667f2641462a54070f3d519212d39c197a629',\n ],\n [\n 'e22fbe15c0af8ccc5780c0735f84dbe9a790badee8245c06c7ca37331cb36980',\n 'a855babad5cd60c88b430a69f53a1a7a38289154964799be43d06d77d31da06',\n ],\n [\n '311091dd9860e8e20ee13473c1155f5f69635e394704eaa74009452246cfa9b3',\n '66db656f87d1f04fffd1f04788c06830871ec5a64feee685bd80f0b1286d8374',\n ],\n [\n '34c1fd04d301be89b31c0442d3e6ac24883928b45a9340781867d4232ec2dbdf',\n '9414685e97b1b5954bd46f730174136d57f1ceeb487443dc5321857ba73abee',\n ],\n [\n 'f219ea5d6b54701c1c14de5b557eb42a8d13f3abbcd08affcc2a5e6b049b8d63',\n '4cb95957e83d40b0f73af4544cccf6b1f4b08d3c07b27fb8d8c2962a400766d1',\n ],\n [\n 'd7b8740f74a8fbaab1f683db8f45de26543a5490bca627087236912469a0b448',\n 'fa77968128d9c92ee1010f337ad4717eff15db5ed3c049b3411e0315eaa4593b',\n ],\n [\n '32d31c222f8f6f0ef86f7c98d3a3335ead5bcd32abdd94289fe4d3091aa824bf',\n '5f3032f5892156e39ccd3d7915b9e1da2e6dac9e6f26e961118d14b8462e1661',\n ],\n [\n '7461f371914ab32671045a155d9831ea8793d77cd59592c4340f86cbc18347b5',\n '8ec0ba238b96bec0cbdddcae0aa442542eee1ff50c986ea6b39847b3cc092ff6',\n ],\n [\n 'ee079adb1df1860074356a25aa38206a6d716b2c3e67453d287698bad7b2b2d6',\n '8dc2412aafe3be5c4c5f37e0ecc5f9f6a446989af04c4e25ebaac479ec1c8c1e',\n ],\n [\n '16ec93e447ec83f0467b18302ee620f7e65de331874c9dc72bfd8616ba9da6b5',\n '5e4631150e62fb40d0e8c2a7ca5804a39d58186a50e497139626778e25b0674d',\n ],\n [\n 'eaa5f980c245f6f038978290afa70b6bd8855897f98b6aa485b96065d537bd99',\n 'f65f5d3e292c2e0819a528391c994624d784869d7e6ea67fb18041024edc07dc',\n ],\n [\n '78c9407544ac132692ee1910a02439958ae04877151342ea96c4b6b35a49f51',\n 'f3e0319169eb9b85d5404795539a5e68fa1fbd583c064d2462b675f194a3ddb4',\n ],\n [\n '494f4be219a1a77016dcd838431aea0001cdc8ae7a6fc688726578d9702857a5',\n '42242a969283a5f339ba7f075e36ba2af925ce30d767ed6e55f4b031880d562c',\n ],\n [\n 'a598a8030da6d86c6bc7f2f5144ea549d28211ea58faa70ebf4c1e665c1fe9b5',\n '204b5d6f84822c307e4b4a7140737aec23fc63b65b35f86a10026dbd2d864e6b',\n ],\n [\n 'c41916365abb2b5d09192f5f2dbeafec208f020f12570a184dbadc3e58595997',\n '4f14351d0087efa49d245b328984989d5caf9450f34bfc0ed16e96b58fa9913',\n ],\n [\n '841d6063a586fa475a724604da03bc5b92a2e0d2e0a36acfe4c73a5514742881',\n '73867f59c0659e81904f9a1c7543698e62562d6744c169ce7a36de01a8d6154',\n ],\n [\n '5e95bb399a6971d376026947f89bde2f282b33810928be4ded112ac4d70e20d5',\n '39f23f366809085beebfc71181313775a99c9aed7d8ba38b161384c746012865',\n ],\n [\n '36e4641a53948fd476c39f8a99fd974e5ec07564b5315d8bf99471bca0ef2f66',\n 'd2424b1b1abe4eb8164227b085c9aa9456ea13493fd563e06fd51cf5694c78fc',\n ],\n [\n '336581ea7bfbbb290c191a2f507a41cf5643842170e914faeab27c2c579f726',\n 'ead12168595fe1be99252129b6e56b3391f7ab1410cd1e0ef3dcdcabd2fda224',\n ],\n [\n '8ab89816dadfd6b6a1f2634fcf00ec8403781025ed6890c4849742706bd43ede',\n '6fdcef09f2f6d0a044e654aef624136f503d459c3e89845858a47a9129cdd24e',\n ],\n [\n '1e33f1a746c9c5778133344d9299fcaa20b0938e8acff2544bb40284b8c5fb94',\n '60660257dd11b3aa9c8ed618d24edff2306d320f1d03010e33a7d2057f3b3b6',\n ],\n [\n '85b7c1dcb3cec1b7ee7f30ded79dd20a0ed1f4cc18cbcfcfa410361fd8f08f31',\n '3d98a9cdd026dd43f39048f25a8847f4fcafad1895d7a633c6fed3c35e999511',\n ],\n [\n '29df9fbd8d9e46509275f4b125d6d45d7fbe9a3b878a7af872a2800661ac5f51',\n 'b4c4fe99c775a606e2d8862179139ffda61dc861c019e55cd2876eb2a27d84b',\n ],\n [\n 'a0b1cae06b0a847a3fea6e671aaf8adfdfe58ca2f768105c8082b2e449fce252',\n 'ae434102edde0958ec4b19d917a6a28e6b72da1834aff0e650f049503a296cf2',\n ],\n [\n '4e8ceafb9b3e9a136dc7ff67e840295b499dfb3b2133e4ba113f2e4c0e121e5',\n 'cf2174118c8b6d7a4b48f6d534ce5c79422c086a63460502b827ce62a326683c',\n ],\n [\n 'd24a44e047e19b6f5afb81c7ca2f69080a5076689a010919f42725c2b789a33b',\n '6fb8d5591b466f8fc63db50f1c0f1c69013f996887b8244d2cdec417afea8fa3',\n ],\n [\n 'ea01606a7a6c9cdd249fdfcfacb99584001edd28abbab77b5104e98e8e3b35d4',\n '322af4908c7312b0cfbfe369f7a7b3cdb7d4494bc2823700cfd652188a3ea98d',\n ],\n [\n 'af8addbf2b661c8a6c6328655eb96651252007d8c5ea31be4ad196de8ce2131f',\n '6749e67c029b85f52a034eafd096836b2520818680e26ac8f3dfbcdb71749700',\n ],\n [\n 'e3ae1974566ca06cc516d47e0fb165a674a3dabcfca15e722f0e3450f45889',\n '2aeabe7e4531510116217f07bf4d07300de97e4874f81f533420a72eeb0bd6a4',\n ],\n [\n '591ee355313d99721cf6993ffed1e3e301993ff3ed258802075ea8ced397e246',\n 'b0ea558a113c30bea60fc4775460c7901ff0b053d25ca2bdeee98f1a4be5d196',\n ],\n [\n '11396d55fda54c49f19aa97318d8da61fa8584e47b084945077cf03255b52984',\n '998c74a8cd45ac01289d5833a7beb4744ff536b01b257be4c5767bea93ea57a4',\n ],\n [\n '3c5d2a1ba39c5a1790000738c9e0c40b8dcdfd5468754b6405540157e017aa7a',\n 'b2284279995a34e2f9d4de7396fc18b80f9b8b9fdd270f6661f79ca4c81bd257',\n ],\n [\n 'cc8704b8a60a0defa3a99a7299f2e9c3fbc395afb04ac078425ef8a1793cc030',\n 'bdd46039feed17881d1e0862db347f8cf395b74fc4bcdc4e940b74e3ac1f1b13',\n ],\n [\n 'c533e4f7ea8555aacd9777ac5cad29b97dd4defccc53ee7ea204119b2889b197',\n '6f0a256bc5efdf429a2fb6242f1a43a2d9b925bb4a4b3a26bb8e0f45eb596096',\n ],\n [\n 'c14f8f2ccb27d6f109f6d08d03cc96a69ba8c34eec07bbcf566d48e33da6593',\n 'c359d6923bb398f7fd4473e16fe1c28475b740dd098075e6c0e8649113dc3a38',\n ],\n [\n 'a6cbc3046bc6a450bac24789fa17115a4c9739ed75f8f21ce441f72e0b90e6ef',\n '21ae7f4680e889bb130619e2c0f95a360ceb573c70603139862afd617fa9b9f',\n ],\n [\n '347d6d9a02c48927ebfb86c1359b1caf130a3c0267d11ce6344b39f99d43cc38',\n '60ea7f61a353524d1c987f6ecec92f086d565ab687870cb12689ff1e31c74448',\n ],\n [\n 'da6545d2181db8d983f7dcb375ef5866d47c67b1bf31c8cf855ef7437b72656a',\n '49b96715ab6878a79e78f07ce5680c5d6673051b4935bd897fea824b77dc208a',\n ],\n [\n 'c40747cc9d012cb1a13b8148309c6de7ec25d6945d657146b9d5994b8feb1111',\n '5ca560753be2a12fc6de6caf2cb489565db936156b9514e1bb5e83037e0fa2d4',\n ],\n [\n '4e42c8ec82c99798ccf3a610be870e78338c7f713348bd34c8203ef4037f3502',\n '7571d74ee5e0fb92a7a8b33a07783341a5492144cc54bcc40a94473693606437',\n ],\n [\n '3775ab7089bc6af823aba2e1af70b236d251cadb0c86743287522a1b3b0dedea',\n 'be52d107bcfa09d8bcb9736a828cfa7fac8db17bf7a76a2c42ad961409018cf7',\n ],\n [\n 'cee31cbf7e34ec379d94fb814d3d775ad954595d1314ba8846959e3e82f74e26',\n '8fd64a14c06b589c26b947ae2bcf6bfa0149ef0be14ed4d80f448a01c43b1c6d',\n ],\n [\n 'b4f9eaea09b6917619f6ea6a4eb5464efddb58fd45b1ebefcdc1a01d08b47986',\n '39e5c9925b5a54b07433a4f18c61726f8bb131c012ca542eb24a8ac07200682a',\n ],\n [\n 'd4263dfc3d2df923a0179a48966d30ce84e2515afc3dccc1b77907792ebcc60e',\n '62dfaf07a0f78feb30e30d6295853ce189e127760ad6cf7fae164e122a208d54',\n ],\n [\n '48457524820fa65a4f8d35eb6930857c0032acc0a4a2de422233eeda897612c4',\n '25a748ab367979d98733c38a1fa1c2e7dc6cc07db2d60a9ae7a76aaa49bd0f77',\n ],\n [\n 'dfeeef1881101f2cb11644f3a2afdfc2045e19919152923f367a1767c11cceda',\n 'ecfb7056cf1de042f9420bab396793c0c390bde74b4bbdff16a83ae09a9a7517',\n ],\n [\n '6d7ef6b17543f8373c573f44e1f389835d89bcbc6062ced36c82df83b8fae859',\n 'cd450ec335438986dfefa10c57fea9bcc521a0959b2d80bbf74b190dca712d10',\n ],\n [\n 'e75605d59102a5a2684500d3b991f2e3f3c88b93225547035af25af66e04541f',\n 'f5c54754a8f71ee540b9b48728473e314f729ac5308b06938360990e2bfad125',\n ],\n [\n 'eb98660f4c4dfaa06a2be453d5020bc99a0c2e60abe388457dd43fefb1ed620c',\n '6cb9a8876d9cb8520609af3add26cd20a0a7cd8a9411131ce85f44100099223e',\n ],\n [\n '13e87b027d8514d35939f2e6892b19922154596941888336dc3563e3b8dba942',\n 'fef5a3c68059a6dec5d624114bf1e91aac2b9da568d6abeb2570d55646b8adf1',\n ],\n [\n 'ee163026e9fd6fe017c38f06a5be6fc125424b371ce2708e7bf4491691e5764a',\n '1acb250f255dd61c43d94ccc670d0f58f49ae3fa15b96623e5430da0ad6c62b2',\n ],\n [\n 'b268f5ef9ad51e4d78de3a750c2dc89b1e626d43505867999932e5db33af3d80',\n '5f310d4b3c99b9ebb19f77d41c1dee018cf0d34fd4191614003e945a1216e423',\n ],\n [\n 'ff07f3118a9df035e9fad85eb6c7bfe42b02f01ca99ceea3bf7ffdba93c4750d',\n '438136d603e858a3a5c440c38eccbaddc1d2942114e2eddd4740d098ced1f0d8',\n ],\n [\n '8d8b9855c7c052a34146fd20ffb658bea4b9f69e0d825ebec16e8c3ce2b526a1',\n 'cdb559eedc2d79f926baf44fb84ea4d44bcf50fee51d7ceb30e2e7f463036758',\n ],\n [\n '52db0b5384dfbf05bfa9d472d7ae26dfe4b851ceca91b1eba54263180da32b63',\n 'c3b997d050ee5d423ebaf66a6db9f57b3180c902875679de924b69d84a7b375',\n ],\n [\n 'e62f9490d3d51da6395efd24e80919cc7d0f29c3f3fa48c6fff543becbd43352',\n '6d89ad7ba4876b0b22c2ca280c682862f342c8591f1daf5170e07bfd9ccafa7d',\n ],\n [\n '7f30ea2476b399b4957509c88f77d0191afa2ff5cb7b14fd6d8e7d65aaab1193',\n 'ca5ef7d4b231c94c3b15389a5f6311e9daff7bb67b103e9880ef4bff637acaec',\n ],\n [\n '5098ff1e1d9f14fb46a210fada6c903fef0fb7b4a1dd1d9ac60a0361800b7a00',\n '9731141d81fc8f8084d37c6e7542006b3ee1b40d60dfe5362a5b132fd17ddc0',\n ],\n [\n '32b78c7de9ee512a72895be6b9cbefa6e2f3c4ccce445c96b9f2c81e2778ad58',\n 'ee1849f513df71e32efc3896ee28260c73bb80547ae2275ba497237794c8753c',\n ],\n [\n 'e2cb74fddc8e9fbcd076eef2a7c72b0ce37d50f08269dfc074b581550547a4f7',\n 'd3aa2ed71c9dd2247a62df062736eb0baddea9e36122d2be8641abcb005cc4a4',\n ],\n [\n '8438447566d4d7bedadc299496ab357426009a35f235cb141be0d99cd10ae3a8',\n 'c4e1020916980a4da5d01ac5e6ad330734ef0d7906631c4f2390426b2edd791f',\n ],\n [\n '4162d488b89402039b584c6fc6c308870587d9c46f660b878ab65c82c711d67e',\n '67163e903236289f776f22c25fb8a3afc1732f2b84b4e95dbda47ae5a0852649',\n ],\n [\n '3fad3fa84caf0f34f0f89bfd2dcf54fc175d767aec3e50684f3ba4a4bf5f683d',\n 'cd1bc7cb6cc407bb2f0ca647c718a730cf71872e7d0d2a53fa20efcdfe61826',\n ],\n [\n '674f2600a3007a00568c1a7ce05d0816c1fb84bf1370798f1c69532faeb1a86b',\n '299d21f9413f33b3edf43b257004580b70db57da0b182259e09eecc69e0d38a5',\n ],\n [\n 'd32f4da54ade74abb81b815ad1fb3b263d82d6c692714bcff87d29bd5ee9f08f',\n 'f9429e738b8e53b968e99016c059707782e14f4535359d582fc416910b3eea87',\n ],\n [\n '30e4e670435385556e593657135845d36fbb6931f72b08cb1ed954f1e3ce3ff6',\n '462f9bce619898638499350113bbc9b10a878d35da70740dc695a559eb88db7b',\n ],\n [\n 'be2062003c51cc3004682904330e4dee7f3dcd10b01e580bf1971b04d4cad297',\n '62188bc49d61e5428573d48a74e1c655b1c61090905682a0d5558ed72dccb9bc',\n ],\n [\n '93144423ace3451ed29e0fb9ac2af211cb6e84a601df5993c419859fff5df04a',\n '7c10dfb164c3425f5c71a3f9d7992038f1065224f72bb9d1d902a6d13037b47c',\n ],\n [\n 'b015f8044f5fcbdcf21ca26d6c34fb8197829205c7b7d2a7cb66418c157b112c',\n 'ab8c1e086d04e813744a655b2df8d5f83b3cdc6faa3088c1d3aea1454e3a1d5f',\n ],\n [\n 'd5e9e1da649d97d89e4868117a465a3a4f8a18de57a140d36b3f2af341a21b52',\n '4cb04437f391ed73111a13cc1d4dd0db1693465c2240480d8955e8592f27447a',\n ],\n [\n 'd3ae41047dd7ca065dbf8ed77b992439983005cd72e16d6f996a5316d36966bb',\n 'bd1aeb21ad22ebb22a10f0303417c6d964f8cdd7df0aca614b10dc14d125ac46',\n ],\n [\n '463e2763d885f958fc66cdd22800f0a487197d0a82e377b49f80af87c897b065',\n 'bfefacdb0e5d0fd7df3a311a94de062b26b80c61fbc97508b79992671ef7ca7f',\n ],\n [\n '7985fdfd127c0567c6f53ec1bb63ec3158e597c40bfe747c83cddfc910641917',\n '603c12daf3d9862ef2b25fe1de289aed24ed291e0ec6708703a5bd567f32ed03',\n ],\n [\n '74a1ad6b5f76e39db2dd249410eac7f99e74c59cb83d2d0ed5ff1543da7703e9',\n 'cc6157ef18c9c63cd6193d83631bbea0093e0968942e8c33d5737fd790e0db08',\n ],\n [\n '30682a50703375f602d416664ba19b7fc9bab42c72747463a71d0896b22f6da3',\n '553e04f6b018b4fa6c8f39e7f311d3176290d0e0f19ca73f17714d9977a22ff8',\n ],\n [\n '9e2158f0d7c0d5f26c3791efefa79597654e7a2b2464f52b1ee6c1347769ef57',\n '712fcdd1b9053f09003a3481fa7762e9ffd7c8ef35a38509e2fbf2629008373',\n ],\n [\n '176e26989a43c9cfeba4029c202538c28172e566e3c4fce7322857f3be327d66',\n 'ed8cc9d04b29eb877d270b4878dc43c19aefd31f4eee09ee7b47834c1fa4b1c3',\n ],\n [\n '75d46efea3771e6e68abb89a13ad747ecf1892393dfc4f1b7004788c50374da8',\n '9852390a99507679fd0b86fd2b39a868d7efc22151346e1a3ca4726586a6bed8',\n ],\n [\n '809a20c67d64900ffb698c4c825f6d5f2310fb0451c869345b7319f645605721',\n '9e994980d9917e22b76b061927fa04143d096ccc54963e6a5ebfa5f3f8e286c1',\n ],\n [\n '1b38903a43f7f114ed4500b4eac7083fdefece1cf29c63528d563446f972c180',\n '4036edc931a60ae889353f77fd53de4a2708b26b6f5da72ad3394119daf408f9',\n ],\n ],\n },\n};\n", "'use strict';\n\nvar curves = exports;\n\nvar hash = require('hash.js');\nvar curve = require('./curve');\nvar utils = require('./utils');\n\nvar assert = utils.assert;\n\nfunction PresetCurve(options) {\n if (options.type === 'short')\n this.curve = new curve.short(options);\n else if (options.type === 'edwards')\n this.curve = new curve.edwards(options);\n else\n this.curve = new curve.mont(options);\n this.g = this.curve.g;\n this.n = this.curve.n;\n this.hash = options.hash;\n\n assert(this.g.validate(), 'Invalid curve');\n assert(this.g.mul(this.n).isInfinity(), 'Invalid curve, G*N != O');\n}\ncurves.PresetCurve = PresetCurve;\n\nfunction defineCurve(name, options) {\n Object.defineProperty(curves, name, {\n configurable: true,\n enumerable: true,\n get: function() {\n var curve = new PresetCurve(options);\n Object.defineProperty(curves, name, {\n configurable: true,\n enumerable: true,\n value: curve,\n });\n return curve;\n },\n });\n}\n\ndefineCurve('p192', {\n type: 'short',\n prime: 'p192',\n p: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff',\n a: 'ffffffff ffffffff ffffffff fffffffe ffffffff fffffffc',\n b: '64210519 e59c80e7 0fa7e9ab 72243049 feb8deec c146b9b1',\n n: 'ffffffff ffffffff ffffffff 99def836 146bc9b1 b4d22831',\n hash: hash.sha256,\n gRed: false,\n g: [\n '188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012',\n '07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811',\n ],\n});\n\ndefineCurve('p224', {\n type: 'short',\n prime: 'p224',\n p: 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001',\n a: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff fffffffe',\n b: 'b4050a85 0c04b3ab f5413256 5044b0b7 d7bfd8ba 270b3943 2355ffb4',\n n: 'ffffffff ffffffff ffffffff ffff16a2 e0b8f03e 13dd2945 5c5c2a3d',\n hash: hash.sha256,\n gRed: false,\n g: [\n 'b70e0cbd 6bb4bf7f 321390b9 4a03c1d3 56c21122 343280d6 115c1d21',\n 'bd376388 b5f723fb 4c22dfe6 cd4375a0 5a074764 44d58199 85007e34',\n ],\n});\n\ndefineCurve('p256', {\n type: 'short',\n prime: null,\n p: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff ffffffff',\n a: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff fffffffc',\n b: '5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6 3bce3c3e 27d2604b',\n n: 'ffffffff 00000000 ffffffff ffffffff bce6faad a7179e84 f3b9cac2 fc632551',\n hash: hash.sha256,\n gRed: false,\n g: [\n '6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296',\n '4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5',\n ],\n});\n\ndefineCurve('p384', {\n type: 'short',\n prime: null,\n p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'fffffffe ffffffff 00000000 00000000 ffffffff',\n a: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'fffffffe ffffffff 00000000 00000000 fffffffc',\n b: 'b3312fa7 e23ee7e4 988e056b e3f82d19 181d9c6e fe814112 0314088f ' +\n '5013875a c656398d 8a2ed19d 2a85c8ed d3ec2aef',\n n: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff c7634d81 ' +\n 'f4372ddf 581a0db2 48b0a77a ecec196a ccc52973',\n hash: hash.sha384,\n gRed: false,\n g: [\n 'aa87ca22 be8b0537 8eb1c71e f320ad74 6e1d3b62 8ba79b98 59f741e0 82542a38 ' +\n '5502f25d bf55296c 3a545e38 72760ab7',\n '3617de4a 96262c6f 5d9e98bf 9292dc29 f8f41dbd 289a147c e9da3113 b5f0b8c0 ' +\n '0a60b1ce 1d7e819d 7a431d7c 90ea0e5f',\n ],\n});\n\ndefineCurve('p521', {\n type: 'short',\n prime: null,\n p: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff',\n a: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff fffffffc',\n b: '00000051 953eb961 8e1c9a1f 929a21a0 b68540ee a2da725b ' +\n '99b315f3 b8b48991 8ef109e1 56193951 ec7e937b 1652c0bd ' +\n '3bb1bf07 3573df88 3d2c34f1 ef451fd4 6b503f00',\n n: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff fffffffa 51868783 bf2f966b 7fcc0148 ' +\n 'f709a5d0 3bb5c9b8 899c47ae bb6fb71e 91386409',\n hash: hash.sha512,\n gRed: false,\n g: [\n '000000c6 858e06b7 0404e9cd 9e3ecb66 2395b442 9c648139 ' +\n '053fb521 f828af60 6b4d3dba a14b5e77 efe75928 fe1dc127 ' +\n 'a2ffa8de 3348b3c1 856a429b f97e7e31 c2e5bd66',\n '00000118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9 98f54449 ' +\n '579b4468 17afbd17 273e662c 97ee7299 5ef42640 c550b901 ' +\n '3fad0761 353c7086 a272c240 88be9476 9fd16650',\n ],\n});\n\ndefineCurve('curve25519', {\n type: 'mont',\n prime: 'p25519',\n p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed',\n a: '76d06',\n b: '1',\n n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed',\n hash: hash.sha256,\n gRed: false,\n g: [\n '9',\n ],\n});\n\ndefineCurve('ed25519', {\n type: 'edwards',\n prime: 'p25519',\n p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed',\n a: '-1',\n c: '1',\n // -121665 * (121666^(-1)) (mod P)\n d: '52036cee2b6ffe73 8cc740797779e898 00700a4d4141d8ab 75eb4dca135978a3',\n n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed',\n hash: hash.sha256,\n gRed: false,\n g: [\n '216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a',\n\n // 4/5\n '6666666666666666666666666666666666666666666666666666666666666658',\n ],\n});\n\nvar pre;\ntry {\n pre = require('./precomputed/secp256k1');\n} catch (e) {\n pre = undefined;\n}\n\ndefineCurve('secp256k1', {\n type: 'short',\n prime: 'k256',\n p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f',\n a: '0',\n b: '7',\n n: 'ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141',\n h: '1',\n hash: hash.sha256,\n\n // Precomputed endomorphism\n beta: '7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee',\n lambda: '5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72',\n basis: [\n {\n a: '3086d221a7d46bcde86c90e49284eb15',\n b: '-e4437ed6010e88286f547fa90abfe4c3',\n },\n {\n a: '114ca50f7a8e2f3f657c1108d9d44cfd8',\n b: '3086d221a7d46bcde86c90e49284eb15',\n },\n ],\n\n gRed: false,\n g: [\n '79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798',\n '483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8',\n pre,\n ],\n});\n", "'use strict';\n\nvar hash = require('hash.js');\nvar utils = require('minimalistic-crypto-utils');\nvar assert = require('minimalistic-assert');\n\nfunction HmacDRBG(options) {\n if (!(this instanceof HmacDRBG))\n return new HmacDRBG(options);\n this.hash = options.hash;\n this.predResist = !!options.predResist;\n\n this.outLen = this.hash.outSize;\n this.minEntropy = options.minEntropy || this.hash.hmacStrength;\n\n this._reseed = null;\n this.reseedInterval = null;\n this.K = null;\n this.V = null;\n\n var entropy = utils.toArray(options.entropy, options.entropyEnc || 'hex');\n var nonce = utils.toArray(options.nonce, options.nonceEnc || 'hex');\n var pers = utils.toArray(options.pers, options.persEnc || 'hex');\n assert(entropy.length >= (this.minEntropy / 8),\n 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');\n this._init(entropy, nonce, pers);\n}\nmodule.exports = HmacDRBG;\n\nHmacDRBG.prototype._init = function init(entropy, nonce, pers) {\n var seed = entropy.concat(nonce).concat(pers);\n\n this.K = new Array(this.outLen / 8);\n this.V = new Array(this.outLen / 8);\n for (var i = 0; i < this.V.length; i++) {\n this.K[i] = 0x00;\n this.V[i] = 0x01;\n }\n\n this._update(seed);\n this._reseed = 1;\n this.reseedInterval = 0x1000000000000; // 2^48\n};\n\nHmacDRBG.prototype._hmac = function hmac() {\n return new hash.hmac(this.hash, this.K);\n};\n\nHmacDRBG.prototype._update = function update(seed) {\n var kmac = this._hmac()\n .update(this.V)\n .update([ 0x00 ]);\n if (seed)\n kmac = kmac.update(seed);\n this.K = kmac.digest();\n this.V = this._hmac().update(this.V).digest();\n if (!seed)\n return;\n\n this.K = this._hmac()\n .update(this.V)\n .update([ 0x01 ])\n .update(seed)\n .digest();\n this.V = this._hmac().update(this.V).digest();\n};\n\nHmacDRBG.prototype.reseed = function reseed(entropy, entropyEnc, add, addEnc) {\n // Optional entropy enc\n if (typeof entropyEnc !== 'string') {\n addEnc = add;\n add = entropyEnc;\n entropyEnc = null;\n }\n\n entropy = utils.toArray(entropy, entropyEnc);\n add = utils.toArray(add, addEnc);\n\n assert(entropy.length >= (this.minEntropy / 8),\n 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');\n\n this._update(entropy.concat(add || []));\n this._reseed = 1;\n};\n\nHmacDRBG.prototype.generate = function generate(len, enc, add, addEnc) {\n if (this._reseed > this.reseedInterval)\n throw new Error('Reseed is required');\n\n // Optional encoding\n if (typeof enc !== 'string') {\n addEnc = add;\n add = enc;\n enc = null;\n }\n\n // Optional additional data\n if (add) {\n add = utils.toArray(add, addEnc || 'hex');\n this._update(add);\n }\n\n var temp = [];\n while (temp.length < len) {\n this.V = this._hmac().update(this.V).digest();\n temp = temp.concat(this.V);\n }\n\n var res = temp.slice(0, len);\n this._update(add);\n this._reseed++;\n return utils.encode(res, enc);\n};\n", "'use strict';\n\nvar BN = require('bn.js');\nvar utils = require('../utils');\nvar assert = utils.assert;\n\nfunction KeyPair(ec, options) {\n this.ec = ec;\n this.priv = null;\n this.pub = null;\n\n // KeyPair(ec, { priv: ..., pub: ... })\n if (options.priv)\n this._importPrivate(options.priv, options.privEnc);\n if (options.pub)\n this._importPublic(options.pub, options.pubEnc);\n}\nmodule.exports = KeyPair;\n\nKeyPair.fromPublic = function fromPublic(ec, pub, enc) {\n if (pub instanceof KeyPair)\n return pub;\n\n return new KeyPair(ec, {\n pub: pub,\n pubEnc: enc,\n });\n};\n\nKeyPair.fromPrivate = function fromPrivate(ec, priv, enc) {\n if (priv instanceof KeyPair)\n return priv;\n\n return new KeyPair(ec, {\n priv: priv,\n privEnc: enc,\n });\n};\n\nKeyPair.prototype.validate = function validate() {\n var pub = this.getPublic();\n\n if (pub.isInfinity())\n return { result: false, reason: 'Invalid public key' };\n if (!pub.validate())\n return { result: false, reason: 'Public key is not a point' };\n if (!pub.mul(this.ec.curve.n).isInfinity())\n return { result: false, reason: 'Public key * N != O' };\n\n return { result: true, reason: null };\n};\n\nKeyPair.prototype.getPublic = function getPublic(compact, enc) {\n // compact is optional argument\n if (typeof compact === 'string') {\n enc = compact;\n compact = null;\n }\n\n if (!this.pub)\n this.pub = this.ec.g.mul(this.priv);\n\n if (!enc)\n return this.pub;\n\n return this.pub.encode(enc, compact);\n};\n\nKeyPair.prototype.getPrivate = function getPrivate(enc) {\n if (enc === 'hex')\n return this.priv.toString(16, 2);\n else\n return this.priv;\n};\n\nKeyPair.prototype._importPrivate = function _importPrivate(key, enc) {\n this.priv = new BN(key, enc || 16);\n\n // Ensure that the priv won't be bigger than n, otherwise we may fail\n // in fixed multiplication method\n this.priv = this.priv.umod(this.ec.curve.n);\n};\n\nKeyPair.prototype._importPublic = function _importPublic(key, enc) {\n if (key.x || key.y) {\n // Montgomery points only have an `x` coordinate.\n // Weierstrass/Edwards points on the other hand have both `x` and\n // `y` coordinates.\n if (this.ec.curve.type === 'mont') {\n assert(key.x, 'Need x coordinate');\n } else if (this.ec.curve.type === 'short' ||\n this.ec.curve.type === 'edwards') {\n assert(key.x && key.y, 'Need both x and y coordinate');\n }\n this.pub = this.ec.curve.point(key.x, key.y);\n return;\n }\n this.pub = this.ec.curve.decodePoint(key, enc);\n};\n\n// ECDH\nKeyPair.prototype.derive = function derive(pub) {\n if(!pub.validate()) {\n assert(pub.validate(), 'public point not validated');\n }\n return pub.mul(this.priv).getX();\n};\n\n// ECDSA\nKeyPair.prototype.sign = function sign(msg, enc, options) {\n return this.ec.sign(msg, this, enc, options);\n};\n\nKeyPair.prototype.verify = function verify(msg, signature) {\n return this.ec.verify(msg, signature, this);\n};\n\nKeyPair.prototype.inspect = function inspect() {\n return '';\n};\n", "'use strict';\n\nvar BN = require('bn.js');\n\nvar utils = require('../utils');\nvar assert = utils.assert;\n\nfunction Signature(options, enc) {\n if (options instanceof Signature)\n return options;\n\n if (this._importDER(options, enc))\n return;\n\n assert(options.r && options.s, 'Signature without r or s');\n this.r = new BN(options.r, 16);\n this.s = new BN(options.s, 16);\n if (options.recoveryParam === undefined)\n this.recoveryParam = null;\n else\n this.recoveryParam = options.recoveryParam;\n}\nmodule.exports = Signature;\n\nfunction Position() {\n this.place = 0;\n}\n\nfunction getLength(buf, p) {\n var initial = buf[p.place++];\n if (!(initial & 0x80)) {\n return initial;\n }\n var octetLen = initial & 0xf;\n\n // Indefinite length or overflow\n if (octetLen === 0 || octetLen > 4) {\n return false;\n }\n\n var val = 0;\n for (var i = 0, off = p.place; i < octetLen; i++, off++) {\n val <<= 8;\n val |= buf[off];\n val >>>= 0;\n }\n\n // Leading zeroes\n if (val <= 0x7f) {\n return false;\n }\n\n p.place = off;\n return val;\n}\n\nfunction rmPadding(buf) {\n var i = 0;\n var len = buf.length - 1;\n while (!buf[i] && !(buf[i + 1] & 0x80) && i < len) {\n i++;\n }\n if (i === 0) {\n return buf;\n }\n return buf.slice(i);\n}\n\nSignature.prototype._importDER = function _importDER(data, enc) {\n data = utils.toArray(data, enc);\n var p = new Position();\n if (data[p.place++] !== 0x30) {\n return false;\n }\n var len = getLength(data, p);\n if (len === false) {\n return false;\n }\n if ((len + p.place) !== data.length) {\n return false;\n }\n if (data[p.place++] !== 0x02) {\n return false;\n }\n var rlen = getLength(data, p);\n if (rlen === false) {\n return false;\n }\n var r = data.slice(p.place, rlen + p.place);\n p.place += rlen;\n if (data[p.place++] !== 0x02) {\n return false;\n }\n var slen = getLength(data, p);\n if (slen === false) {\n return false;\n }\n if (data.length !== slen + p.place) {\n return false;\n }\n var s = data.slice(p.place, slen + p.place);\n if (r[0] === 0) {\n if (r[1] & 0x80) {\n r = r.slice(1);\n } else {\n // Leading zeroes\n return false;\n }\n }\n if (s[0] === 0) {\n if (s[1] & 0x80) {\n s = s.slice(1);\n } else {\n // Leading zeroes\n return false;\n }\n }\n\n this.r = new BN(r);\n this.s = new BN(s);\n this.recoveryParam = null;\n\n return true;\n};\n\nfunction constructLength(arr, len) {\n if (len < 0x80) {\n arr.push(len);\n return;\n }\n var octets = 1 + (Math.log(len) / Math.LN2 >>> 3);\n arr.push(octets | 0x80);\n while (--octets) {\n arr.push((len >>> (octets << 3)) & 0xff);\n }\n arr.push(len);\n}\n\nSignature.prototype.toDER = function toDER(enc) {\n var r = this.r.toArray();\n var s = this.s.toArray();\n\n // Pad values\n if (r[0] & 0x80)\n r = [ 0 ].concat(r);\n // Pad values\n if (s[0] & 0x80)\n s = [ 0 ].concat(s);\n\n r = rmPadding(r);\n s = rmPadding(s);\n\n while (!s[0] && !(s[1] & 0x80)) {\n s = s.slice(1);\n }\n var arr = [ 0x02 ];\n constructLength(arr, r.length);\n arr = arr.concat(r);\n arr.push(0x02);\n constructLength(arr, s.length);\n var backHalf = arr.concat(s);\n var res = [ 0x30 ];\n constructLength(res, backHalf.length);\n res = res.concat(backHalf);\n return utils.encode(res, enc);\n};\n", "'use strict';\n\nvar BN = require('bn.js');\nvar HmacDRBG = require('hmac-drbg');\nvar utils = require('../utils');\nvar curves = require('../curves');\nvar rand = require('brorand');\nvar assert = utils.assert;\n\nvar KeyPair = require('./key');\nvar Signature = require('./signature');\n\nfunction EC(options) {\n if (!(this instanceof EC))\n return new EC(options);\n\n // Shortcut `elliptic.ec(curve-name)`\n if (typeof options === 'string') {\n assert(Object.prototype.hasOwnProperty.call(curves, options),\n 'Unknown curve ' + options);\n\n options = curves[options];\n }\n\n // Shortcut for `elliptic.ec(elliptic.curves.curveName)`\n if (options instanceof curves.PresetCurve)\n options = { curve: options };\n\n this.curve = options.curve.curve;\n this.n = this.curve.n;\n this.nh = this.n.ushrn(1);\n this.g = this.curve.g;\n\n // Point on curve\n this.g = options.curve.g;\n this.g.precompute(options.curve.n.bitLength() + 1);\n\n // Hash for function for DRBG\n this.hash = options.hash || options.curve.hash;\n}\nmodule.exports = EC;\n\nEC.prototype.keyPair = function keyPair(options) {\n return new KeyPair(this, options);\n};\n\nEC.prototype.keyFromPrivate = function keyFromPrivate(priv, enc) {\n return KeyPair.fromPrivate(this, priv, enc);\n};\n\nEC.prototype.keyFromPublic = function keyFromPublic(pub, enc) {\n return KeyPair.fromPublic(this, pub, enc);\n};\n\nEC.prototype.genKeyPair = function genKeyPair(options) {\n if (!options)\n options = {};\n\n // Instantiate Hmac_DRBG\n var drbg = new HmacDRBG({\n hash: this.hash,\n pers: options.pers,\n persEnc: options.persEnc || 'utf8',\n entropy: options.entropy || rand(this.hash.hmacStrength),\n entropyEnc: options.entropy && options.entropyEnc || 'utf8',\n nonce: this.n.toArray(),\n });\n\n var bytes = this.n.byteLength();\n var ns2 = this.n.sub(new BN(2));\n for (;;) {\n var priv = new BN(drbg.generate(bytes));\n if (priv.cmp(ns2) > 0)\n continue;\n\n priv.iaddn(1);\n return this.keyFromPrivate(priv);\n }\n};\n\nEC.prototype._truncateToN = function _truncateToN(msg, truncOnly) {\n var delta = msg.byteLength() * 8 - this.n.bitLength();\n if (delta > 0)\n msg = msg.ushrn(delta);\n if (!truncOnly && msg.cmp(this.n) >= 0)\n return msg.sub(this.n);\n else\n return msg;\n};\n\nEC.prototype.sign = function sign(msg, key, enc, options) {\n if (typeof enc === 'object') {\n options = enc;\n enc = null;\n }\n if (!options)\n options = {};\n\n key = this.keyFromPrivate(key, enc);\n msg = this._truncateToN(new BN(msg, 16));\n\n // Zero-extend key to provide enough entropy\n var bytes = this.n.byteLength();\n var bkey = key.getPrivate().toArray('be', bytes);\n\n // Zero-extend nonce to have the same byte size as N\n var nonce = msg.toArray('be', bytes);\n\n // Instantiate Hmac_DRBG\n var drbg = new HmacDRBG({\n hash: this.hash,\n entropy: bkey,\n nonce: nonce,\n pers: options.pers,\n persEnc: options.persEnc || 'utf8',\n });\n\n // Number of bytes to generate\n var ns1 = this.n.sub(new BN(1));\n\n for (var iter = 0; ; iter++) {\n var k = options.k ?\n options.k(iter) :\n new BN(drbg.generate(this.n.byteLength()));\n k = this._truncateToN(k, true);\n if (k.cmpn(1) <= 0 || k.cmp(ns1) >= 0)\n continue;\n\n var kp = this.g.mul(k);\n if (kp.isInfinity())\n continue;\n\n var kpX = kp.getX();\n var r = kpX.umod(this.n);\n if (r.cmpn(0) === 0)\n continue;\n\n var s = k.invm(this.n).mul(r.mul(key.getPrivate()).iadd(msg));\n s = s.umod(this.n);\n if (s.cmpn(0) === 0)\n continue;\n\n var recoveryParam = (kp.getY().isOdd() ? 1 : 0) |\n (kpX.cmp(r) !== 0 ? 2 : 0);\n\n // Use complement of `s`, if it is > `n / 2`\n if (options.canonical && s.cmp(this.nh) > 0) {\n s = this.n.sub(s);\n recoveryParam ^= 1;\n }\n\n return new Signature({ r: r, s: s, recoveryParam: recoveryParam });\n }\n};\n\nEC.prototype.verify = function verify(msg, signature, key, enc) {\n msg = this._truncateToN(new BN(msg, 16));\n key = this.keyFromPublic(key, enc);\n signature = new Signature(signature, 'hex');\n\n // Perform primitive values validation\n var r = signature.r;\n var s = signature.s;\n if (r.cmpn(1) < 0 || r.cmp(this.n) >= 0)\n return false;\n if (s.cmpn(1) < 0 || s.cmp(this.n) >= 0)\n return false;\n\n // Validate signature\n var sinv = s.invm(this.n);\n var u1 = sinv.mul(msg).umod(this.n);\n var u2 = sinv.mul(r).umod(this.n);\n var p;\n\n if (!this.curve._maxwellTrick) {\n p = this.g.mulAdd(u1, key.getPublic(), u2);\n if (p.isInfinity())\n return false;\n\n return p.getX().umod(this.n).cmp(r) === 0;\n }\n\n // NOTE: Greg Maxwell's trick, inspired by:\n // https://git.io/vad3K\n\n p = this.g.jmulAdd(u1, key.getPublic(), u2);\n if (p.isInfinity())\n return false;\n\n // Compare `p.x` of Jacobian point with `r`,\n // this will do `p.x == r * p.z^2` instead of multiplying `p.x` by the\n // inverse of `p.z^2`\n return p.eqXToP(r);\n};\n\nEC.prototype.recoverPubKey = function(msg, signature, j, enc) {\n assert((3 & j) === j, 'The recovery param is more than two bits');\n signature = new Signature(signature, enc);\n\n var n = this.n;\n var e = new BN(msg);\n var r = signature.r;\n var s = signature.s;\n\n // A set LSB signifies that the y-coordinate is odd\n var isYOdd = j & 1;\n var isSecondKey = j >> 1;\n if (r.cmp(this.curve.p.umod(this.curve.n)) >= 0 && isSecondKey)\n throw new Error('Unable to find sencond key candinate');\n\n // 1.1. Let x = r + jn.\n if (isSecondKey)\n r = this.curve.pointFromX(r.add(this.curve.n), isYOdd);\n else\n r = this.curve.pointFromX(r, isYOdd);\n\n var rInv = signature.r.invm(n);\n var s1 = n.sub(e).mul(rInv).umod(n);\n var s2 = s.mul(rInv).umod(n);\n\n // 1.6.1 Compute Q = r^-1 (sR - eG)\n // Q = r^-1 (sR + -eG)\n return this.g.mulAdd(s1, r, s2);\n};\n\nEC.prototype.getKeyRecoveryParam = function(e, signature, Q, enc) {\n signature = new Signature(signature, enc);\n if (signature.recoveryParam !== null)\n return signature.recoveryParam;\n\n for (var i = 0; i < 4; i++) {\n var Qprime;\n try {\n Qprime = this.recoverPubKey(e, signature, i);\n } catch (e) {\n continue;\n }\n\n if (Qprime.eq(Q))\n return i;\n }\n throw new Error('Unable to find valid recovery factor');\n};\n", "'use strict';\n\nvar utils = require('../utils');\nvar assert = utils.assert;\nvar parseBytes = utils.parseBytes;\nvar cachedProperty = utils.cachedProperty;\n\n/**\n* @param {EDDSA} eddsa - instance\n* @param {Object} params - public/private key parameters\n*\n* @param {Array} [params.secret] - secret seed bytes\n* @param {Point} [params.pub] - public key point (aka `A` in eddsa terms)\n* @param {Array} [params.pub] - public key point encoded as bytes\n*\n*/\nfunction KeyPair(eddsa, params) {\n this.eddsa = eddsa;\n this._secret = parseBytes(params.secret);\n if (eddsa.isPoint(params.pub))\n this._pub = params.pub;\n else\n this._pubBytes = parseBytes(params.pub);\n}\n\nKeyPair.fromPublic = function fromPublic(eddsa, pub) {\n if (pub instanceof KeyPair)\n return pub;\n return new KeyPair(eddsa, { pub: pub });\n};\n\nKeyPair.fromSecret = function fromSecret(eddsa, secret) {\n if (secret instanceof KeyPair)\n return secret;\n return new KeyPair(eddsa, { secret: secret });\n};\n\nKeyPair.prototype.secret = function secret() {\n return this._secret;\n};\n\ncachedProperty(KeyPair, 'pubBytes', function pubBytes() {\n return this.eddsa.encodePoint(this.pub());\n});\n\ncachedProperty(KeyPair, 'pub', function pub() {\n if (this._pubBytes)\n return this.eddsa.decodePoint(this._pubBytes);\n return this.eddsa.g.mul(this.priv());\n});\n\ncachedProperty(KeyPair, 'privBytes', function privBytes() {\n var eddsa = this.eddsa;\n var hash = this.hash();\n var lastIx = eddsa.encodingLength - 1;\n\n var a = hash.slice(0, eddsa.encodingLength);\n a[0] &= 248;\n a[lastIx] &= 127;\n a[lastIx] |= 64;\n\n return a;\n});\n\ncachedProperty(KeyPair, 'priv', function priv() {\n return this.eddsa.decodeInt(this.privBytes());\n});\n\ncachedProperty(KeyPair, 'hash', function hash() {\n return this.eddsa.hash().update(this.secret()).digest();\n});\n\ncachedProperty(KeyPair, 'messagePrefix', function messagePrefix() {\n return this.hash().slice(this.eddsa.encodingLength);\n});\n\nKeyPair.prototype.sign = function sign(message) {\n assert(this._secret, 'KeyPair can only verify');\n return this.eddsa.sign(message, this);\n};\n\nKeyPair.prototype.verify = function verify(message, sig) {\n return this.eddsa.verify(message, sig, this);\n};\n\nKeyPair.prototype.getSecret = function getSecret(enc) {\n assert(this._secret, 'KeyPair is public only');\n return utils.encode(this.secret(), enc);\n};\n\nKeyPair.prototype.getPublic = function getPublic(enc) {\n return utils.encode(this.pubBytes(), enc);\n};\n\nmodule.exports = KeyPair;\n", "'use strict';\n\nvar BN = require('bn.js');\nvar utils = require('../utils');\nvar assert = utils.assert;\nvar cachedProperty = utils.cachedProperty;\nvar parseBytes = utils.parseBytes;\n\n/**\n* @param {EDDSA} eddsa - eddsa instance\n* @param {Array|Object} sig -\n* @param {Array|Point} [sig.R] - R point as Point or bytes\n* @param {Array|bn} [sig.S] - S scalar as bn or bytes\n* @param {Array} [sig.Rencoded] - R point encoded\n* @param {Array} [sig.Sencoded] - S scalar encoded\n*/\nfunction Signature(eddsa, sig) {\n this.eddsa = eddsa;\n\n if (typeof sig !== 'object')\n sig = parseBytes(sig);\n\n if (Array.isArray(sig)) {\n sig = {\n R: sig.slice(0, eddsa.encodingLength),\n S: sig.slice(eddsa.encodingLength),\n };\n }\n\n assert(sig.R && sig.S, 'Signature without R or S');\n\n if (eddsa.isPoint(sig.R))\n this._R = sig.R;\n if (sig.S instanceof BN)\n this._S = sig.S;\n\n this._Rencoded = Array.isArray(sig.R) ? sig.R : sig.Rencoded;\n this._Sencoded = Array.isArray(sig.S) ? sig.S : sig.Sencoded;\n}\n\ncachedProperty(Signature, 'S', function S() {\n return this.eddsa.decodeInt(this.Sencoded());\n});\n\ncachedProperty(Signature, 'R', function R() {\n return this.eddsa.decodePoint(this.Rencoded());\n});\n\ncachedProperty(Signature, 'Rencoded', function Rencoded() {\n return this.eddsa.encodePoint(this.R());\n});\n\ncachedProperty(Signature, 'Sencoded', function Sencoded() {\n return this.eddsa.encodeInt(this.S());\n});\n\nSignature.prototype.toBytes = function toBytes() {\n return this.Rencoded().concat(this.Sencoded());\n};\n\nSignature.prototype.toHex = function toHex() {\n return utils.encode(this.toBytes(), 'hex').toUpperCase();\n};\n\nmodule.exports = Signature;\n", "'use strict';\n\nvar hash = require('hash.js');\nvar curves = require('../curves');\nvar utils = require('../utils');\nvar assert = utils.assert;\nvar parseBytes = utils.parseBytes;\nvar KeyPair = require('./key');\nvar Signature = require('./signature');\n\nfunction EDDSA(curve) {\n assert(curve === 'ed25519', 'only tested with ed25519 so far');\n\n if (!(this instanceof EDDSA))\n return new EDDSA(curve);\n\n curve = curves[curve].curve;\n this.curve = curve;\n this.g = curve.g;\n this.g.precompute(curve.n.bitLength() + 1);\n\n this.pointClass = curve.point().constructor;\n this.encodingLength = Math.ceil(curve.n.bitLength() / 8);\n this.hash = hash.sha512;\n}\n\nmodule.exports = EDDSA;\n\n/**\n* @param {Array|String} message - message bytes\n* @param {Array|String|KeyPair} secret - secret bytes or a keypair\n* @returns {Signature} - signature\n*/\nEDDSA.prototype.sign = function sign(message, secret) {\n message = parseBytes(message);\n var key = this.keyFromSecret(secret);\n var r = this.hashInt(key.messagePrefix(), message);\n var R = this.g.mul(r);\n var Rencoded = this.encodePoint(R);\n var s_ = this.hashInt(Rencoded, key.pubBytes(), message)\n .mul(key.priv());\n var S = r.add(s_).umod(this.curve.n);\n return this.makeSignature({ R: R, S: S, Rencoded: Rencoded });\n};\n\n/**\n* @param {Array} message - message bytes\n* @param {Array|String|Signature} sig - sig bytes\n* @param {Array|String|Point|KeyPair} pub - public key\n* @returns {Boolean} - true if public key matches sig of message\n*/\nEDDSA.prototype.verify = function verify(message, sig, pub) {\n message = parseBytes(message);\n sig = this.makeSignature(sig);\n var key = this.keyFromPublic(pub);\n var h = this.hashInt(sig.Rencoded(), key.pubBytes(), message);\n var SG = this.g.mul(sig.S());\n var RplusAh = sig.R().add(key.pub().mul(h));\n return RplusAh.eq(SG);\n};\n\nEDDSA.prototype.hashInt = function hashInt() {\n var hash = this.hash();\n for (var i = 0; i < arguments.length; i++)\n hash.update(arguments[i]);\n return utils.intFromLE(hash.digest()).umod(this.curve.n);\n};\n\nEDDSA.prototype.keyFromPublic = function keyFromPublic(pub) {\n return KeyPair.fromPublic(this, pub);\n};\n\nEDDSA.prototype.keyFromSecret = function keyFromSecret(secret) {\n return KeyPair.fromSecret(this, secret);\n};\n\nEDDSA.prototype.makeSignature = function makeSignature(sig) {\n if (sig instanceof Signature)\n return sig;\n return new Signature(this, sig);\n};\n\n/**\n* * https://tools.ietf.org/html/draft-josefsson-eddsa-ed25519-03#section-5.2\n*\n* EDDSA defines methods for encoding and decoding points and integers. These are\n* helper convenience methods, that pass along to utility functions implied\n* parameters.\n*\n*/\nEDDSA.prototype.encodePoint = function encodePoint(point) {\n var enc = point.getY().toArray('le', this.encodingLength);\n enc[this.encodingLength - 1] |= point.getX().isOdd() ? 0x80 : 0;\n return enc;\n};\n\nEDDSA.prototype.decodePoint = function decodePoint(bytes) {\n bytes = utils.parseBytes(bytes);\n\n var lastIx = bytes.length - 1;\n var normed = bytes.slice(0, lastIx).concat(bytes[lastIx] & ~0x80);\n var xIsOdd = (bytes[lastIx] & 0x80) !== 0;\n\n var y = utils.intFromLE(normed);\n return this.curve.pointFromY(y, xIsOdd);\n};\n\nEDDSA.prototype.encodeInt = function encodeInt(num) {\n return num.toArray('le', this.encodingLength);\n};\n\nEDDSA.prototype.decodeInt = function decodeInt(bytes) {\n return utils.intFromLE(bytes);\n};\n\nEDDSA.prototype.isPoint = function isPoint(val) {\n return val instanceof this.pointClass;\n};\n", "'use strict';\n\nvar elliptic = exports;\n\nelliptic.version = require('../package.json').version;\nelliptic.utils = require('./elliptic/utils');\nelliptic.rand = require('brorand');\nelliptic.curve = require('./elliptic/curve');\nelliptic.curves = require('./elliptic/curves');\n\n// Protocols\nelliptic.ec = require('./elliptic/ec');\nelliptic.eddsa = require('./elliptic/eddsa');\n", "const createHmac = require('create-hmac')\n\nconst ONE1 = Buffer.alloc(1, 1)\nconst ZERO1 = Buffer.alloc(1, 0)\n\n// https://tools.ietf.org/html/rfc6979#section-3.2\nfunction deterministicGenerateK (hash, x, checkSig, isPrivate, extraEntropy) {\n // Step A, ignored as hash already provided\n // Step B\n // Step C\n let k = Buffer.alloc(32, 0)\n let v = Buffer.alloc(32, 1)\n\n // Step D\n k = createHmac('sha256', k)\n .update(v)\n .update(ZERO1)\n .update(x)\n .update(hash)\n .update(extraEntropy || '')\n .digest()\n\n // Step E\n v = createHmac('sha256', k).update(v).digest()\n\n // Step F\n k = createHmac('sha256', k)\n .update(v)\n .update(ONE1)\n .update(x)\n .update(hash)\n .update(extraEntropy || '')\n .digest()\n\n // Step G\n v = createHmac('sha256', k).update(v).digest()\n\n // Step H1/H2a, ignored as tlen === qlen (256 bit)\n // Step H2b\n v = createHmac('sha256', k).update(v).digest()\n\n let T = v\n\n // Step H3, repeat until T is within the interval [1, n - 1] and is suitable for ECDSA\n while (!isPrivate(T) || !checkSig(T)) {\n k = createHmac('sha256', k)\n .update(v)\n .update(ZERO1)\n .digest()\n\n v = createHmac('sha256', k).update(v).digest()\n\n // Step H1/H2a, again, ignored as tlen === qlen (256 bit)\n // Step H2b again\n v = createHmac('sha256', k).update(v).digest()\n T = v\n }\n\n return T\n}\n\nmodule.exports = deterministicGenerateK\n", "const BN = require('bn.js')\nconst EC = require('elliptic').ec\nconst secp256k1 = new EC('secp256k1')\nconst deterministicGenerateK = require('./rfc6979')\n\nconst ZERO32 = Buffer.alloc(32, 0)\nconst EC_GROUP_ORDER = Buffer.from('fffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141', 'hex')\nconst EC_P = Buffer.from('fffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f', 'hex')\n\nconst n = secp256k1.curve.n\nconst nDiv2 = n.shrn(1)\nconst G = secp256k1.curve.g\n\nconst THROW_BAD_PRIVATE = 'Expected Private'\nconst THROW_BAD_POINT = 'Expected Point'\nconst THROW_BAD_TWEAK = 'Expected Tweak'\nconst THROW_BAD_HASH = 'Expected Hash'\nconst THROW_BAD_SIGNATURE = 'Expected Signature'\nconst THROW_BAD_EXTRA_DATA = 'Expected Extra Data (32 bytes)'\n\nfunction isScalar (x) {\n return Buffer.isBuffer(x) && x.length === 32\n}\n\nfunction isOrderScalar (x) {\n if (!isScalar(x)) return false\n return x.compare(EC_GROUP_ORDER) < 0 // < G\n}\n\nfunction isPoint (p) {\n if (!Buffer.isBuffer(p)) return false\n if (p.length < 33) return false\n\n const t = p[0]\n const x = p.slice(1, 33)\n if (x.compare(ZERO32) === 0) return false\n if (x.compare(EC_P) >= 0) return false\n if ((t === 0x02 || t === 0x03) && p.length === 33) {\n try { decodeFrom(p) } catch (e) { return false } // TODO: temporary\n return true\n }\n\n const y = p.slice(33)\n if (y.compare(ZERO32) === 0) return false\n if (y.compare(EC_P) >= 0) return false\n if (t === 0x04 && p.length === 65) return true\n return false\n}\n\nfunction __isPointCompressed (p) {\n return p[0] !== 0x04\n}\n\nfunction isPointCompressed (p) {\n if (!isPoint(p)) return false\n return __isPointCompressed(p)\n}\n\nfunction isPrivate (x) {\n if (!isScalar(x)) return false\n return x.compare(ZERO32) > 0 && // > 0\n x.compare(EC_GROUP_ORDER) < 0 // < G\n}\n\nfunction isSignature (value) {\n const r = value.slice(0, 32)\n const s = value.slice(32, 64)\n return Buffer.isBuffer(value) && value.length === 64 &&\n r.compare(EC_GROUP_ORDER) < 0 &&\n s.compare(EC_GROUP_ORDER) < 0\n}\n\nfunction assumeCompression (value, pubkey) {\n if (value === undefined && pubkey !== undefined) return __isPointCompressed(pubkey)\n if (value === undefined) return true\n return value\n}\n\nfunction fromBuffer (d) { return new BN(d) }\nfunction toBuffer (d) { return d.toArrayLike(Buffer, 'be', 32) }\nfunction decodeFrom (P) { return secp256k1.curve.decodePoint(P) }\nfunction getEncoded (P, compressed) { return Buffer.from(P._encode(compressed)) }\n\nfunction pointAdd (pA, pB, __compressed) {\n if (!isPoint(pA)) throw new TypeError(THROW_BAD_POINT)\n if (!isPoint(pB)) throw new TypeError(THROW_BAD_POINT)\n\n const a = decodeFrom(pA)\n const b = decodeFrom(pB)\n const pp = a.add(b)\n if (pp.isInfinity()) return null\n\n const compressed = assumeCompression(__compressed, pA)\n return getEncoded(pp, compressed)\n}\n\nfunction pointAddScalar (p, tweak, __compressed) {\n if (!isPoint(p)) throw new TypeError(THROW_BAD_POINT)\n if (!isOrderScalar(tweak)) throw new TypeError(THROW_BAD_TWEAK)\n\n const compressed = assumeCompression(__compressed, p)\n const pp = decodeFrom(p)\n if (tweak.compare(ZERO32) === 0) return getEncoded(pp, compressed)\n\n const tt = fromBuffer(tweak)\n const qq = G.mul(tt)\n const uu = pp.add(qq)\n if (uu.isInfinity()) return null\n\n return getEncoded(uu, compressed)\n}\n\nfunction pointCompress (p, __compressed) {\n if (!isPoint(p)) throw new TypeError(THROW_BAD_POINT)\n\n const pp = decodeFrom(p)\n if (pp.isInfinity()) throw new TypeError(THROW_BAD_POINT)\n\n const compressed = assumeCompression(__compressed, p)\n\n return getEncoded(pp, compressed)\n}\n\nfunction pointFromScalar (d, __compressed) {\n if (!isPrivate(d)) throw new TypeError(THROW_BAD_PRIVATE)\n\n const dd = fromBuffer(d)\n const pp = G.mul(dd)\n if (pp.isInfinity()) return null\n\n const compressed = assumeCompression(__compressed)\n return getEncoded(pp, compressed)\n}\n\nfunction pointMultiply (p, tweak, __compressed) {\n if (!isPoint(p)) throw new TypeError(THROW_BAD_POINT)\n if (!isOrderScalar(tweak)) throw new TypeError(THROW_BAD_TWEAK)\n\n const compressed = assumeCompression(__compressed, p)\n const pp = decodeFrom(p)\n const tt = fromBuffer(tweak)\n const qq = pp.mul(tt)\n if (qq.isInfinity()) return null\n\n return getEncoded(qq, compressed)\n}\n\nfunction privateAdd (d, tweak) {\n if (!isPrivate(d)) throw new TypeError(THROW_BAD_PRIVATE)\n if (!isOrderScalar(tweak)) throw new TypeError(THROW_BAD_TWEAK)\n\n const dd = fromBuffer(d)\n const tt = fromBuffer(tweak)\n const dt = toBuffer(dd.add(tt).umod(n))\n if (!isPrivate(dt)) return null\n\n return dt\n}\n\nfunction privateSub (d, tweak) {\n if (!isPrivate(d)) throw new TypeError(THROW_BAD_PRIVATE)\n if (!isOrderScalar(tweak)) throw new TypeError(THROW_BAD_TWEAK)\n\n const dd = fromBuffer(d)\n const tt = fromBuffer(tweak)\n const dt = toBuffer(dd.sub(tt).umod(n))\n if (!isPrivate(dt)) return null\n\n return dt\n}\n\nfunction sign (hash, x) {\n return __sign(hash, x)\n}\n\nfunction signWithEntropy (hash, x, addData) {\n return __sign(hash, x, addData)\n}\n\nfunction __sign (hash, x, addData) {\n if (!isScalar(hash)) throw new TypeError(THROW_BAD_HASH)\n if (!isPrivate(x)) throw new TypeError(THROW_BAD_PRIVATE)\n if (addData !== undefined && !isScalar(addData)) throw new TypeError(THROW_BAD_EXTRA_DATA)\n\n const d = fromBuffer(x)\n const e = fromBuffer(hash)\n\n let r, s\n const checkSig = function (k) {\n const kI = fromBuffer(k)\n const Q = G.mul(kI)\n\n if (Q.isInfinity()) return false\n\n r = Q.x.umod(n)\n if (r.isZero() === 0) return false\n\n s = kI\n .invm(n)\n .mul(e.add(d.mul(r)))\n .umod(n)\n if (s.isZero() === 0) return false\n\n return true\n }\n\n deterministicGenerateK(hash, x, checkSig, isPrivate, addData)\n\n // enforce low S values, see bip62: 'low s values in signatures'\n if (s.cmp(nDiv2) > 0) {\n s = n.sub(s)\n }\n\n const buffer = Buffer.allocUnsafe(64)\n toBuffer(r).copy(buffer, 0)\n toBuffer(s).copy(buffer, 32)\n return buffer\n}\n\nfunction verify (hash, q, signature, strict) {\n if (!isScalar(hash)) throw new TypeError(THROW_BAD_HASH)\n if (!isPoint(q)) throw new TypeError(THROW_BAD_POINT)\n\n // 1.4.1 Enforce r and s are both integers in the interval [1, n \u2212 1] (1, isSignature enforces '< n - 1')\n if (!isSignature(signature)) throw new TypeError(THROW_BAD_SIGNATURE)\n\n const Q = decodeFrom(q)\n const r = fromBuffer(signature.slice(0, 32))\n const s = fromBuffer(signature.slice(32, 64))\n\n if (strict && s.cmp(nDiv2) > 0) {\n return false\n }\n\n // 1.4.1 Enforce r and s are both integers in the interval [1, n \u2212 1] (2, enforces '> 0')\n if (r.gtn(0) <= 0 /* || r.compareTo(n) >= 0 */) return false\n if (s.gtn(0) <= 0 /* || s.compareTo(n) >= 0 */) return false\n\n // 1.4.2 H = Hash(M), already done by the user\n // 1.4.3 e = H\n const e = fromBuffer(hash)\n\n // Compute s^-1\n const sInv = s.invm(n)\n\n // 1.4.4 Compute u1 = es^\u22121 mod n\n // u2 = rs^\u22121 mod n\n const u1 = e.mul(sInv).umod(n)\n const u2 = r.mul(sInv).umod(n)\n\n // 1.4.5 Compute R = (xR, yR)\n // R = u1G + u2Q\n const R = G.mulAdd(u1, Q, u2)\n\n // 1.4.5 (cont.) Enforce R is not at infinity\n if (R.isInfinity()) return false\n\n // 1.4.6 Convert the field element R.x to an integer\n const xR = R.x\n\n // 1.4.7 Set v = xR mod n\n const v = xR.umod(n)\n\n // 1.4.8 If v = r, output \"valid\", and if v != r, output \"invalid\"\n return v.eq(r)\n}\n\nmodule.exports = {\n isPoint,\n isPointCompressed,\n isPrivate,\n pointAdd,\n pointAddScalar,\n pointCompress,\n pointFromScalar,\n pointMultiply,\n privateAdd,\n privateSub,\n sign,\n signWithEntropy,\n verify\n}\n", "'use strict'\n\ntry {\n module.exports = require('./native')\n} catch (err) {\n module.exports = require('./js')\n}\n", "var types = {\n Array: function (value) { return value !== null && value !== undefined && value.constructor === Array },\n Boolean: function (value) { return typeof value === 'boolean' },\n Function: function (value) { return typeof value === 'function' },\n Nil: function (value) { return value === undefined || value === null },\n Number: function (value) { return typeof value === 'number' },\n Object: function (value) { return typeof value === 'object' },\n String: function (value) { return typeof value === 'string' },\n '': function () { return true }\n}\n\n// TODO: deprecate\ntypes.Null = types.Nil\n\nfor (var typeName in types) {\n types[typeName].toJSON = function (t) {\n return t\n }.bind(null, typeName)\n}\n\nmodule.exports = types\n", "var native = require('./native')\n\nfunction getTypeName (fn) {\n return fn.name || fn.toString().match(/function (.*?)\\s*\\(/)[1]\n}\n\nfunction getValueTypeName (value) {\n return native.Nil(value) ? '' : getTypeName(value.constructor)\n}\n\nfunction getValue (value) {\n if (native.Function(value)) return ''\n if (native.String(value)) return JSON.stringify(value)\n if (value && native.Object(value)) return ''\n return value\n}\n\nfunction captureStackTrace (e, t) {\n if (Error.captureStackTrace) {\n Error.captureStackTrace(e, t)\n }\n}\n\nfunction tfJSON (type) {\n if (native.Function(type)) return type.toJSON ? type.toJSON() : getTypeName(type)\n if (native.Array(type)) return 'Array'\n if (type && native.Object(type)) return 'Object'\n\n return type !== undefined ? type : ''\n}\n\nfunction tfErrorString (type, value, valueTypeName) {\n var valueJson = getValue(value)\n\n return 'Expected ' + tfJSON(type) + ', got' +\n (valueTypeName !== '' ? ' ' + valueTypeName : '') +\n (valueJson !== '' ? ' ' + valueJson : '')\n}\n\nfunction TfTypeError (type, value, valueTypeName) {\n valueTypeName = valueTypeName || getValueTypeName(value)\n this.message = tfErrorString(type, value, valueTypeName)\n\n captureStackTrace(this, TfTypeError)\n this.__type = type\n this.__value = value\n this.__valueTypeName = valueTypeName\n}\n\nTfTypeError.prototype = Object.create(Error.prototype)\nTfTypeError.prototype.constructor = TfTypeError\n\nfunction tfPropertyErrorString (type, label, name, value, valueTypeName) {\n var description = '\" of type '\n if (label === 'key') description = '\" with key type '\n\n return tfErrorString('property \"' + tfJSON(name) + description + tfJSON(type), value, valueTypeName)\n}\n\nfunction TfPropertyTypeError (type, property, label, value, valueTypeName) {\n if (type) {\n valueTypeName = valueTypeName || getValueTypeName(value)\n this.message = tfPropertyErrorString(type, label, property, value, valueTypeName)\n } else {\n this.message = 'Unexpected property \"' + property + '\"'\n }\n\n captureStackTrace(this, TfTypeError)\n this.__label = label\n this.__property = property\n this.__type = type\n this.__value = value\n this.__valueTypeName = valueTypeName\n}\n\nTfPropertyTypeError.prototype = Object.create(Error.prototype)\nTfPropertyTypeError.prototype.constructor = TfTypeError\n\nfunction tfCustomError (expected, actual) {\n return new TfTypeError(expected, {}, actual)\n}\n\nfunction tfSubError (e, property, label) {\n // sub child?\n if (e instanceof TfPropertyTypeError) {\n property = property + '.' + e.__property\n\n e = new TfPropertyTypeError(\n e.__type, property, e.__label, e.__value, e.__valueTypeName\n )\n\n // child?\n } else if (e instanceof TfTypeError) {\n e = new TfPropertyTypeError(\n e.__type, property, label, e.__value, e.__valueTypeName\n )\n }\n\n captureStackTrace(e)\n return e\n}\n\nmodule.exports = {\n TfTypeError: TfTypeError,\n TfPropertyTypeError: TfPropertyTypeError,\n tfCustomError: tfCustomError,\n tfSubError: tfSubError,\n tfJSON: tfJSON,\n getValueTypeName: getValueTypeName\n}\n", "var NATIVE = require('./native')\nvar ERRORS = require('./errors')\n\nfunction _Buffer (value) {\n return Buffer.isBuffer(value)\n}\n\nfunction Hex (value) {\n return typeof value === 'string' && /^([0-9a-f]{2})+$/i.test(value)\n}\n\nfunction _LengthN (type, length) {\n var name = type.toJSON()\n\n function Length (value) {\n if (!type(value)) return false\n if (value.length === length) return true\n\n throw ERRORS.tfCustomError(name + '(Length: ' + length + ')', name + '(Length: ' + value.length + ')')\n }\n Length.toJSON = function () { return name }\n\n return Length\n}\n\nvar _ArrayN = _LengthN.bind(null, NATIVE.Array)\nvar _BufferN = _LengthN.bind(null, _Buffer)\nvar _HexN = _LengthN.bind(null, Hex)\nvar _StringN = _LengthN.bind(null, NATIVE.String)\n\nfunction Range (a, b, f) {\n f = f || NATIVE.Number\n function _range (value, strict) {\n return f(value, strict) && (value > a) && (value < b)\n }\n _range.toJSON = function () {\n return `${f.toJSON()} between [${a}, ${b}]`\n }\n return _range\n}\n\nvar INT53_MAX = Math.pow(2, 53) - 1\n\nfunction Finite (value) {\n return typeof value === 'number' && isFinite(value)\n}\nfunction Int8 (value) { return ((value << 24) >> 24) === value }\nfunction Int16 (value) { return ((value << 16) >> 16) === value }\nfunction Int32 (value) { return (value | 0) === value }\nfunction Int53 (value) {\n return typeof value === 'number' &&\n value >= -INT53_MAX &&\n value <= INT53_MAX &&\n Math.floor(value) === value\n}\nfunction UInt8 (value) { return (value & 0xff) === value }\nfunction UInt16 (value) { return (value & 0xffff) === value }\nfunction UInt32 (value) { return (value >>> 0) === value }\nfunction UInt53 (value) {\n return typeof value === 'number' &&\n value >= 0 &&\n value <= INT53_MAX &&\n Math.floor(value) === value\n}\n\nvar types = {\n ArrayN: _ArrayN,\n Buffer: _Buffer,\n BufferN: _BufferN,\n Finite: Finite,\n Hex: Hex,\n HexN: _HexN,\n Int8: Int8,\n Int16: Int16,\n Int32: Int32,\n Int53: Int53,\n Range: Range,\n StringN: _StringN,\n UInt8: UInt8,\n UInt16: UInt16,\n UInt32: UInt32,\n UInt53: UInt53\n}\n\nfor (var typeName in types) {\n types[typeName].toJSON = function (t) {\n return t\n }.bind(null, typeName)\n}\n\nmodule.exports = types\n", "var ERRORS = require('./errors')\nvar NATIVE = require('./native')\n\n// short-hand\nvar tfJSON = ERRORS.tfJSON\nvar TfTypeError = ERRORS.TfTypeError\nvar TfPropertyTypeError = ERRORS.TfPropertyTypeError\nvar tfSubError = ERRORS.tfSubError\nvar getValueTypeName = ERRORS.getValueTypeName\n\nvar TYPES = {\n arrayOf: function arrayOf (type, options) {\n type = compile(type)\n options = options || {}\n\n function _arrayOf (array, strict) {\n if (!NATIVE.Array(array)) return false\n if (NATIVE.Nil(array)) return false\n if (options.minLength !== undefined && array.length < options.minLength) return false\n if (options.maxLength !== undefined && array.length > options.maxLength) return false\n if (options.length !== undefined && array.length !== options.length) return false\n\n return array.every(function (value, i) {\n try {\n return typeforce(type, value, strict)\n } catch (e) {\n throw tfSubError(e, i)\n }\n })\n }\n _arrayOf.toJSON = function () {\n var str = '[' + tfJSON(type) + ']'\n if (options.length !== undefined) {\n str += '{' + options.length + '}'\n } else if (options.minLength !== undefined || options.maxLength !== undefined) {\n str += '{' +\n (options.minLength === undefined ? 0 : options.minLength) + ',' +\n (options.maxLength === undefined ? Infinity : options.maxLength) + '}'\n }\n return str\n }\n\n return _arrayOf\n },\n\n maybe: function maybe (type) {\n type = compile(type)\n\n function _maybe (value, strict) {\n return NATIVE.Nil(value) || type(value, strict, maybe)\n }\n _maybe.toJSON = function () { return '?' + tfJSON(type) }\n\n return _maybe\n },\n\n map: function map (propertyType, propertyKeyType) {\n propertyType = compile(propertyType)\n if (propertyKeyType) propertyKeyType = compile(propertyKeyType)\n\n function _map (value, strict) {\n if (!NATIVE.Object(value)) return false\n if (NATIVE.Nil(value)) return false\n\n for (var propertyName in value) {\n try {\n if (propertyKeyType) {\n typeforce(propertyKeyType, propertyName, strict)\n }\n } catch (e) {\n throw tfSubError(e, propertyName, 'key')\n }\n\n try {\n var propertyValue = value[propertyName]\n typeforce(propertyType, propertyValue, strict)\n } catch (e) {\n throw tfSubError(e, propertyName)\n }\n }\n\n return true\n }\n\n if (propertyKeyType) {\n _map.toJSON = function () {\n return '{' + tfJSON(propertyKeyType) + ': ' + tfJSON(propertyType) + '}'\n }\n } else {\n _map.toJSON = function () { return '{' + tfJSON(propertyType) + '}' }\n }\n\n return _map\n },\n\n object: function object (uncompiled) {\n var type = {}\n\n for (var typePropertyName in uncompiled) {\n type[typePropertyName] = compile(uncompiled[typePropertyName])\n }\n\n function _object (value, strict) {\n if (!NATIVE.Object(value)) return false\n if (NATIVE.Nil(value)) return false\n\n var propertyName\n\n try {\n for (propertyName in type) {\n var propertyType = type[propertyName]\n var propertyValue = value[propertyName]\n\n typeforce(propertyType, propertyValue, strict)\n }\n } catch (e) {\n throw tfSubError(e, propertyName)\n }\n\n if (strict) {\n for (propertyName in value) {\n if (type[propertyName]) continue\n\n throw new TfPropertyTypeError(undefined, propertyName)\n }\n }\n\n return true\n }\n _object.toJSON = function () { return tfJSON(type) }\n\n return _object\n },\n\n anyOf: function anyOf () {\n var types = [].slice.call(arguments).map(compile)\n\n function _anyOf (value, strict) {\n return types.some(function (type) {\n try {\n return typeforce(type, value, strict)\n } catch (e) {\n return false\n }\n })\n }\n _anyOf.toJSON = function () { return types.map(tfJSON).join('|') }\n\n return _anyOf\n },\n\n allOf: function allOf () {\n var types = [].slice.call(arguments).map(compile)\n\n function _allOf (value, strict) {\n return types.every(function (type) {\n try {\n return typeforce(type, value, strict)\n } catch (e) {\n return false\n }\n })\n }\n _allOf.toJSON = function () { return types.map(tfJSON).join(' & ') }\n\n return _allOf\n },\n\n quacksLike: function quacksLike (type) {\n function _quacksLike (value) {\n return type === getValueTypeName(value)\n }\n _quacksLike.toJSON = function () { return type }\n\n return _quacksLike\n },\n\n tuple: function tuple () {\n var types = [].slice.call(arguments).map(compile)\n\n function _tuple (values, strict) {\n if (NATIVE.Nil(values)) return false\n if (NATIVE.Nil(values.length)) return false\n if (strict && (values.length !== types.length)) return false\n\n return types.every(function (type, i) {\n try {\n return typeforce(type, values[i], strict)\n } catch (e) {\n throw tfSubError(e, i)\n }\n })\n }\n _tuple.toJSON = function () { return '(' + types.map(tfJSON).join(', ') + ')' }\n\n return _tuple\n },\n\n value: function value (expected) {\n function _value (actual) {\n return actual === expected\n }\n _value.toJSON = function () { return expected }\n\n return _value\n }\n}\n\n// TODO: deprecate\nTYPES.oneOf = TYPES.anyOf\n\nfunction compile (type) {\n if (NATIVE.String(type)) {\n if (type[0] === '?') return TYPES.maybe(type.slice(1))\n\n return NATIVE[type] || TYPES.quacksLike(type)\n } else if (type && NATIVE.Object(type)) {\n if (NATIVE.Array(type)) {\n if (type.length !== 1) throw new TypeError('Expected compile() parameter of type Array of length 1')\n return TYPES.arrayOf(type[0])\n }\n\n return TYPES.object(type)\n } else if (NATIVE.Function(type)) {\n return type\n }\n\n return TYPES.value(type)\n}\n\nfunction typeforce (type, value, strict, surrogate) {\n if (NATIVE.Function(type)) {\n if (type(value, strict)) return true\n\n throw new TfTypeError(surrogate || type, value)\n }\n\n // JIT\n return typeforce(compile(type), value, strict)\n}\n\n// assign types to typeforce function\nfor (var typeName in NATIVE) {\n typeforce[typeName] = NATIVE[typeName]\n}\n\nfor (typeName in TYPES) {\n typeforce[typeName] = TYPES[typeName]\n}\n\nvar EXTRA = require('./extra')\nfor (typeName in EXTRA) {\n typeforce[typeName] = EXTRA[typeName]\n}\n\ntypeforce.compile = compile\ntypeforce.TfTypeError = TfTypeError\ntypeforce.TfPropertyTypeError = TfPropertyTypeError\n\nmodule.exports = typeforce\n", "var bs58check = require('bs58check')\n\nfunction decodeRaw (buffer, version) {\n // check version only if defined\n if (version !== undefined && buffer[0] !== version) throw new Error('Invalid network version')\n\n // uncompressed\n if (buffer.length === 33) {\n return {\n version: buffer[0],\n privateKey: buffer.slice(1, 33),\n compressed: false\n }\n }\n\n // invalid length\n if (buffer.length !== 34) throw new Error('Invalid WIF length')\n\n // invalid compression flag\n if (buffer[33] !== 0x01) throw new Error('Invalid compression flag')\n\n return {\n version: buffer[0],\n privateKey: buffer.slice(1, 33),\n compressed: true\n }\n}\n\nfunction encodeRaw (version, privateKey, compressed) {\n var result = new Buffer(compressed ? 34 : 33)\n\n result.writeUInt8(version, 0)\n privateKey.copy(result, 1)\n\n if (compressed) {\n result[33] = 0x01\n }\n\n return result\n}\n\nfunction decode (string, version) {\n return decodeRaw(bs58check.decode(string), version)\n}\n\nfunction encode (version, privateKey, compressed) {\n if (typeof version === 'number') return bs58check.encode(encodeRaw(version, privateKey, compressed))\n\n return bs58check.encode(\n encodeRaw(\n version.version,\n version.privateKey,\n version.compressed\n )\n )\n}\n\nmodule.exports = {\n decode: decode,\n decodeRaw: decodeRaw,\n encode: encode,\n encodeRaw: encodeRaw\n}\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst crypto = require(\"./crypto\");\nconst bs58check = require('bs58check');\nconst ecc = require('tiny-secp256k1');\nconst typeforce = require('typeforce');\nconst wif = require('wif');\nconst UINT256_TYPE = typeforce.BufferN(32);\nconst NETWORK_TYPE = typeforce.compile({\n wif: typeforce.UInt8,\n bip32: {\n public: typeforce.UInt32,\n private: typeforce.UInt32,\n },\n});\nconst BITCOIN = {\n messagePrefix: '\\x18Bitcoin Signed Message:\\n',\n bech32: 'bc',\n bip32: {\n public: 0x0488b21e,\n private: 0x0488ade4,\n },\n pubKeyHash: 0x00,\n scriptHash: 0x05,\n wif: 0x80,\n};\nconst HIGHEST_BIT = 0x80000000;\nconst UINT31_MAX = Math.pow(2, 31) - 1;\nfunction BIP32Path(value) {\n return (typeforce.String(value) && value.match(/^(m\\/)?(\\d+'?\\/)*\\d+'?$/) !== null);\n}\nfunction UInt31(value) {\n return typeforce.UInt32(value) && value <= UINT31_MAX;\n}\nclass BIP32 {\n constructor(__D, __Q, chainCode, network, __DEPTH = 0, __INDEX = 0, __PARENT_FINGERPRINT = 0x00000000) {\n this.__D = __D;\n this.__Q = __Q;\n this.chainCode = chainCode;\n this.network = network;\n this.__DEPTH = __DEPTH;\n this.__INDEX = __INDEX;\n this.__PARENT_FINGERPRINT = __PARENT_FINGERPRINT;\n typeforce(NETWORK_TYPE, network);\n this.lowR = false;\n }\n get depth() {\n return this.__DEPTH;\n }\n get index() {\n return this.__INDEX;\n }\n get parentFingerprint() {\n return this.__PARENT_FINGERPRINT;\n }\n get publicKey() {\n if (this.__Q === undefined)\n this.__Q = ecc.pointFromScalar(this.__D, true);\n return this.__Q;\n }\n get privateKey() {\n return this.__D;\n }\n get identifier() {\n return crypto.hash160(this.publicKey);\n }\n get fingerprint() {\n return this.identifier.slice(0, 4);\n }\n get compressed() {\n return true;\n }\n // Private === not neutered\n // Public === neutered\n isNeutered() {\n return this.__D === undefined;\n }\n neutered() {\n return fromPublicKeyLocal(this.publicKey, this.chainCode, this.network, this.depth, this.index, this.parentFingerprint);\n }\n toBase58() {\n const network = this.network;\n const version = !this.isNeutered()\n ? network.bip32.private\n : network.bip32.public;\n const buffer = Buffer.allocUnsafe(78);\n // 4 bytes: version bytes\n buffer.writeUInt32BE(version, 0);\n // 1 byte: depth: 0x00 for master nodes, 0x01 for level-1 descendants, ....\n buffer.writeUInt8(this.depth, 4);\n // 4 bytes: the fingerprint of the parent's key (0x00000000 if master key)\n buffer.writeUInt32BE(this.parentFingerprint, 5);\n // 4 bytes: child number. This is the number i in xi = xpar/i, with xi the key being serialized.\n // This is encoded in big endian. (0x00000000 if master key)\n buffer.writeUInt32BE(this.index, 9);\n // 32 bytes: the chain code\n this.chainCode.copy(buffer, 13);\n // 33 bytes: the public key or private key data\n if (!this.isNeutered()) {\n // 0x00 + k for private keys\n buffer.writeUInt8(0, 45);\n this.privateKey.copy(buffer, 46);\n // 33 bytes: the public key\n }\n else {\n // X9.62 encoding for public keys\n this.publicKey.copy(buffer, 45);\n }\n return bs58check.encode(buffer);\n }\n toWIF() {\n if (!this.privateKey)\n throw new TypeError('Missing private key');\n return wif.encode(this.network.wif, this.privateKey, true);\n }\n // https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki#child-key-derivation-ckd-functions\n derive(index) {\n typeforce(typeforce.UInt32, index);\n const isHardened = index >= HIGHEST_BIT;\n const data = Buffer.allocUnsafe(37);\n // Hardened child\n if (isHardened) {\n if (this.isNeutered())\n throw new TypeError('Missing private key for hardened child key');\n // data = 0x00 || ser256(kpar) || ser32(index)\n data[0] = 0x00;\n this.privateKey.copy(data, 1);\n data.writeUInt32BE(index, 33);\n // Normal child\n }\n else {\n // data = serP(point(kpar)) || ser32(index)\n // = serP(Kpar) || ser32(index)\n this.publicKey.copy(data, 0);\n data.writeUInt32BE(index, 33);\n }\n const I = crypto.hmacSHA512(this.chainCode, data);\n const IL = I.slice(0, 32);\n const IR = I.slice(32);\n // if parse256(IL) >= n, proceed with the next value for i\n if (!ecc.isPrivate(IL))\n return this.derive(index + 1);\n // Private parent key -> private child key\n let hd;\n if (!this.isNeutered()) {\n // ki = parse256(IL) + kpar (mod n)\n const ki = ecc.privateAdd(this.privateKey, IL);\n // In case ki == 0, proceed with the next value for i\n if (ki == null)\n return this.derive(index + 1);\n hd = fromPrivateKeyLocal(ki, IR, this.network, this.depth + 1, index, this.fingerprint.readUInt32BE(0));\n // Public parent key -> public child key\n }\n else {\n // Ki = point(parse256(IL)) + Kpar\n // = G*IL + Kpar\n const Ki = ecc.pointAddScalar(this.publicKey, IL, true);\n // In case Ki is the point at infinity, proceed with the next value for i\n if (Ki === null)\n return this.derive(index + 1);\n hd = fromPublicKeyLocal(Ki, IR, this.network, this.depth + 1, index, this.fingerprint.readUInt32BE(0));\n }\n return hd;\n }\n deriveHardened(index) {\n typeforce(UInt31, index);\n // Only derives hardened private keys by default\n return this.derive(index + HIGHEST_BIT);\n }\n derivePath(path) {\n typeforce(BIP32Path, path);\n let splitPath = path.split('/');\n if (splitPath[0] === 'm') {\n if (this.parentFingerprint)\n throw new TypeError('Expected master, got child');\n splitPath = splitPath.slice(1);\n }\n return splitPath.reduce((prevHd, indexStr) => {\n let index;\n if (indexStr.slice(-1) === `'`) {\n index = parseInt(indexStr.slice(0, -1), 10);\n return prevHd.deriveHardened(index);\n }\n else {\n index = parseInt(indexStr, 10);\n return prevHd.derive(index);\n }\n }, this);\n }\n sign(hash, lowR) {\n if (!this.privateKey)\n throw new Error('Missing private key');\n if (lowR === undefined)\n lowR = this.lowR;\n if (lowR === false) {\n return ecc.sign(hash, this.privateKey);\n }\n else {\n let sig = ecc.sign(hash, this.privateKey);\n const extraData = Buffer.alloc(32, 0);\n let counter = 0;\n // if first try is lowR, skip the loop\n // for second try and on, add extra entropy counting up\n while (sig[0] > 0x7f) {\n counter++;\n extraData.writeUIntLE(counter, 0, 6);\n sig = ecc.signWithEntropy(hash, this.privateKey, extraData);\n }\n return sig;\n }\n }\n verify(hash, signature) {\n return ecc.verify(hash, this.publicKey, signature);\n }\n}\nfunction fromBase58(inString, network) {\n const buffer = bs58check.decode(inString);\n if (buffer.length !== 78)\n throw new TypeError('Invalid buffer length');\n network = network || BITCOIN;\n // 4 bytes: version bytes\n const version = buffer.readUInt32BE(0);\n if (version !== network.bip32.private && version !== network.bip32.public)\n throw new TypeError('Invalid network version');\n // 1 byte: depth: 0x00 for master nodes, 0x01 for level-1 descendants, ...\n const depth = buffer[4];\n // 4 bytes: the fingerprint of the parent's key (0x00000000 if master key)\n const parentFingerprint = buffer.readUInt32BE(5);\n if (depth === 0) {\n if (parentFingerprint !== 0x00000000)\n throw new TypeError('Invalid parent fingerprint');\n }\n // 4 bytes: child number. This is the number i in xi = xpar/i, with xi the key being serialized.\n // This is encoded in MSB order. (0x00000000 if master key)\n const index = buffer.readUInt32BE(9);\n if (depth === 0 && index !== 0)\n throw new TypeError('Invalid index');\n // 32 bytes: the chain code\n const chainCode = buffer.slice(13, 45);\n let hd;\n // 33 bytes: private key data (0x00 + k)\n if (version === network.bip32.private) {\n if (buffer.readUInt8(45) !== 0x00)\n throw new TypeError('Invalid private key');\n const k = buffer.slice(46, 78);\n hd = fromPrivateKeyLocal(k, chainCode, network, depth, index, parentFingerprint);\n // 33 bytes: public key data (0x02 + X or 0x03 + X)\n }\n else {\n const X = buffer.slice(45, 78);\n hd = fromPublicKeyLocal(X, chainCode, network, depth, index, parentFingerprint);\n }\n return hd;\n}\nexports.fromBase58 = fromBase58;\nfunction fromPrivateKey(privateKey, chainCode, network) {\n return fromPrivateKeyLocal(privateKey, chainCode, network);\n}\nexports.fromPrivateKey = fromPrivateKey;\nfunction fromPrivateKeyLocal(privateKey, chainCode, network, depth, index, parentFingerprint) {\n typeforce({\n privateKey: UINT256_TYPE,\n chainCode: UINT256_TYPE,\n }, { privateKey, chainCode });\n network = network || BITCOIN;\n if (!ecc.isPrivate(privateKey))\n throw new TypeError('Private key not in range [1, n)');\n return new BIP32(privateKey, undefined, chainCode, network, depth, index, parentFingerprint);\n}\nfunction fromPublicKey(publicKey, chainCode, network) {\n return fromPublicKeyLocal(publicKey, chainCode, network);\n}\nexports.fromPublicKey = fromPublicKey;\nfunction fromPublicKeyLocal(publicKey, chainCode, network, depth, index, parentFingerprint) {\n typeforce({\n publicKey: typeforce.BufferN(33),\n chainCode: UINT256_TYPE,\n }, { publicKey, chainCode });\n network = network || BITCOIN;\n // verify the X coordinate is a point on the curve\n if (!ecc.isPoint(publicKey))\n throw new TypeError('Point is not on the curve');\n return new BIP32(undefined, publicKey, chainCode, network, depth, index, parentFingerprint);\n}\nfunction fromSeed(seed, network) {\n typeforce(typeforce.Buffer, seed);\n if (seed.length < 16)\n throw new TypeError('Seed should be at least 128 bits');\n if (seed.length > 64)\n throw new TypeError('Seed should be at most 512 bits');\n network = network || BITCOIN;\n const I = crypto.hmacSHA512(Buffer.from('Bitcoin seed', 'utf8'), seed);\n const IL = I.slice(0, 32);\n const IR = I.slice(32);\n return fromPrivateKey(IL, IR, network);\n}\nexports.fromSeed = fromSeed;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar bip32_1 = require(\"./bip32\");\nexports.fromSeed = bip32_1.fromSeed;\nexports.fromBase58 = bip32_1.fromBase58;\nexports.fromPublicKey = bip32_1.fromPublicKey;\nexports.fromPrivateKey = bip32_1.fromPrivateKey;\n", "'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nexports.bitcoin = {\n messagePrefix: '\\x18Bitcoin Signed Message:\\n',\n bech32: 'bc',\n bip32: {\n public: 0x0488b21e,\n private: 0x0488ade4,\n },\n pubKeyHash: 0x00,\n scriptHash: 0x05,\n wif: 0x80,\n};\nexports.regtest = {\n messagePrefix: '\\x18Bitcoin Signed Message:\\n',\n bech32: 'bcrt',\n bip32: {\n public: 0x043587cf,\n private: 0x04358394,\n },\n pubKeyHash: 0x6f,\n scriptHash: 0xc4,\n wif: 0xef,\n};\nexports.testnet = {\n messagePrefix: '\\x18Bitcoin Signed Message:\\n',\n bech32: 'tb',\n bip32: {\n public: 0x043587cf,\n private: 0x04358394,\n },\n pubKeyHash: 0x6f,\n scriptHash: 0xc4,\n wif: 0xef,\n};\n", "'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nfunction decode(buffer, maxLength, minimal) {\n maxLength = maxLength || 4;\n minimal = minimal === undefined ? true : minimal;\n const length = buffer.length;\n if (length === 0) return 0;\n if (length > maxLength) throw new TypeError('Script number overflow');\n if (minimal) {\n if ((buffer[length - 1] & 0x7f) === 0) {\n if (length <= 1 || (buffer[length - 2] & 0x80) === 0)\n throw new Error('Non-minimally encoded script number');\n }\n }\n // 40-bit\n if (length === 5) {\n const a = buffer.readUInt32LE(0);\n const b = buffer.readUInt8(4);\n if (b & 0x80) return -((b & ~0x80) * 0x100000000 + a);\n return b * 0x100000000 + a;\n }\n // 32-bit / 24-bit / 16-bit / 8-bit\n let result = 0;\n for (let i = 0; i < length; ++i) {\n result |= buffer[i] << (8 * i);\n }\n if (buffer[length - 1] & 0x80)\n return -(result & ~(0x80 << (8 * (length - 1))));\n return result;\n}\nexports.decode = decode;\nfunction scriptNumSize(i) {\n return i > 0x7fffffff\n ? 5\n : i > 0x7fffff\n ? 4\n : i > 0x7fff\n ? 3\n : i > 0x7f\n ? 2\n : i > 0x00\n ? 1\n : 0;\n}\nfunction encode(_number) {\n let value = Math.abs(_number);\n const size = scriptNumSize(value);\n const buffer = Buffer.allocUnsafe(size);\n const negative = _number < 0;\n for (let i = 0; i < size; ++i) {\n buffer.writeUInt8(value & 0xff, i);\n value >>= 8;\n }\n if (buffer[size - 1] & 0x80) {\n buffer.writeUInt8(negative ? 0x80 : 0x00, size - 1);\n } else if (negative) {\n buffer[size - 1] |= 0x80;\n }\n return buffer;\n}\nexports.encode = encode;\n", "'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst typeforce = require('typeforce');\nconst UINT31_MAX = Math.pow(2, 31) - 1;\nfunction UInt31(value) {\n return typeforce.UInt32(value) && value <= UINT31_MAX;\n}\nexports.UInt31 = UInt31;\nfunction BIP32Path(value) {\n return typeforce.String(value) && !!value.match(/^(m\\/)?(\\d+'?\\/)*\\d+'?$/);\n}\nexports.BIP32Path = BIP32Path;\nBIP32Path.toJSON = () => {\n return 'BIP32 derivation path';\n};\nfunction Signer(obj) {\n return (\n (typeforce.Buffer(obj.publicKey) ||\n typeof obj.getPublicKey === 'function') &&\n typeof obj.sign === 'function'\n );\n}\nexports.Signer = Signer;\nconst SATOSHI_MAX = 21 * 1e14;\nfunction Satoshi(value) {\n return typeforce.UInt53(value) && value <= SATOSHI_MAX;\n}\nexports.Satoshi = Satoshi;\n// external dependent types\nexports.ECPoint = typeforce.quacksLike('Point');\n// exposed, external API\nexports.Network = typeforce.compile({\n messagePrefix: typeforce.oneOf(typeforce.Buffer, typeforce.String),\n bip32: {\n public: typeforce.UInt32,\n private: typeforce.UInt32,\n },\n pubKeyHash: typeforce.UInt8,\n scriptHash: typeforce.UInt8,\n wif: typeforce.UInt8,\n});\nexports.Buffer256bit = typeforce.BufferN(32);\nexports.Hash160bit = typeforce.BufferN(20);\nexports.Hash256bit = typeforce.BufferN(32);\nexports.Number = typeforce.Number; // tslint:disable-line variable-name\nexports.Array = typeforce.Array;\nexports.Boolean = typeforce.Boolean; // tslint:disable-line variable-name\nexports.String = typeforce.String; // tslint:disable-line variable-name\nexports.Buffer = typeforce.Buffer;\nexports.Hex = typeforce.Hex;\nexports.maybe = typeforce.maybe;\nexports.tuple = typeforce.tuple;\nexports.UInt8 = typeforce.UInt8;\nexports.UInt32 = typeforce.UInt32;\nexports.Function = typeforce.Function;\nexports.BufferN = typeforce.BufferN;\nexports.Null = typeforce.Null;\nexports.oneOf = typeforce.oneOf;\n", "// Reference https://github.com/bitcoin/bips/blob/master/bip-0066.mediawiki\n// Format: 0x30 [total-length] 0x02 [R-length] [R] 0x02 [S-length] [S]\n// NOTE: SIGHASH byte ignored AND restricted, truncate before use\n\nvar Buffer = require('safe-buffer').Buffer\n\nfunction check (buffer) {\n if (buffer.length < 8) return false\n if (buffer.length > 72) return false\n if (buffer[0] !== 0x30) return false\n if (buffer[1] !== buffer.length - 2) return false\n if (buffer[2] !== 0x02) return false\n\n var lenR = buffer[3]\n if (lenR === 0) return false\n if (5 + lenR >= buffer.length) return false\n if (buffer[4 + lenR] !== 0x02) return false\n\n var lenS = buffer[5 + lenR]\n if (lenS === 0) return false\n if ((6 + lenR + lenS) !== buffer.length) return false\n\n if (buffer[4] & 0x80) return false\n if (lenR > 1 && (buffer[4] === 0x00) && !(buffer[5] & 0x80)) return false\n\n if (buffer[lenR + 6] & 0x80) return false\n if (lenS > 1 && (buffer[lenR + 6] === 0x00) && !(buffer[lenR + 7] & 0x80)) return false\n return true\n}\n\nfunction decode (buffer) {\n if (buffer.length < 8) throw new Error('DER sequence length is too short')\n if (buffer.length > 72) throw new Error('DER sequence length is too long')\n if (buffer[0] !== 0x30) throw new Error('Expected DER sequence')\n if (buffer[1] !== buffer.length - 2) throw new Error('DER sequence length is invalid')\n if (buffer[2] !== 0x02) throw new Error('Expected DER integer')\n\n var lenR = buffer[3]\n if (lenR === 0) throw new Error('R length is zero')\n if (5 + lenR >= buffer.length) throw new Error('R length is too long')\n if (buffer[4 + lenR] !== 0x02) throw new Error('Expected DER integer (2)')\n\n var lenS = buffer[5 + lenR]\n if (lenS === 0) throw new Error('S length is zero')\n if ((6 + lenR + lenS) !== buffer.length) throw new Error('S length is invalid')\n\n if (buffer[4] & 0x80) throw new Error('R value is negative')\n if (lenR > 1 && (buffer[4] === 0x00) && !(buffer[5] & 0x80)) throw new Error('R value excessively padded')\n\n if (buffer[lenR + 6] & 0x80) throw new Error('S value is negative')\n if (lenS > 1 && (buffer[lenR + 6] === 0x00) && !(buffer[lenR + 7] & 0x80)) throw new Error('S value excessively padded')\n\n // non-BIP66 - extract R, S values\n return {\n r: buffer.slice(4, 4 + lenR),\n s: buffer.slice(6 + lenR)\n }\n}\n\n/*\n * Expects r and s to be positive DER integers.\n *\n * The DER format uses the most significant bit as a sign bit (& 0x80).\n * If the significant bit is set AND the integer is positive, a 0x00 is prepended.\n *\n * Examples:\n *\n * 0 => 0x00\n * 1 => 0x01\n * -1 => 0xff\n * 127 => 0x7f\n * -127 => 0x81\n * 128 => 0x0080\n * -128 => 0x80\n * 255 => 0x00ff\n * -255 => 0xff01\n * 16300 => 0x3fac\n * -16300 => 0xc054\n * 62300 => 0x00f35c\n * -62300 => 0xff0ca4\n*/\nfunction encode (r, s) {\n var lenR = r.length\n var lenS = s.length\n if (lenR === 0) throw new Error('R length is zero')\n if (lenS === 0) throw new Error('S length is zero')\n if (lenR > 33) throw new Error('R length is too long')\n if (lenS > 33) throw new Error('S length is too long')\n if (r[0] & 0x80) throw new Error('R value is negative')\n if (s[0] & 0x80) throw new Error('S value is negative')\n if (lenR > 1 && (r[0] === 0x00) && !(r[1] & 0x80)) throw new Error('R value excessively padded')\n if (lenS > 1 && (s[0] === 0x00) && !(s[1] & 0x80)) throw new Error('S value excessively padded')\n\n var signature = Buffer.allocUnsafe(6 + lenR + lenS)\n\n // 0x30 [total-length] 0x02 [R-length] [R] 0x02 [S-length] [S]\n signature[0] = 0x30\n signature[1] = signature.length - 2\n signature[2] = 0x02\n signature[3] = r.length\n r.copy(signature, 4)\n signature[4 + lenR] = 0x02\n signature[5 + lenR] = s.length\n s.copy(signature, 6 + lenR)\n\n return signature\n}\n\nmodule.exports = {\n check: check,\n decode: decode,\n encode: encode\n}\n", "'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst types = require('./types');\nconst bip66 = require('bip66');\nconst typeforce = require('typeforce');\nconst ZERO = Buffer.alloc(1, 0);\nfunction toDER(x) {\n let i = 0;\n while (x[i] === 0) ++i;\n if (i === x.length) return ZERO;\n x = x.slice(i);\n if (x[0] & 0x80) return Buffer.concat([ZERO, x], 1 + x.length);\n return x;\n}\nfunction fromDER(x) {\n if (x[0] === 0x00) x = x.slice(1);\n const buffer = Buffer.alloc(32, 0);\n const bstart = Math.max(0, 32 - x.length);\n x.copy(buffer, bstart);\n return buffer;\n}\n// BIP62: 1 byte hashType flag (only 0x01, 0x02, 0x03, 0x81, 0x82 and 0x83 are allowed)\nfunction decode(buffer) {\n const hashType = buffer.readUInt8(buffer.length - 1);\n const hashTypeMod = hashType & ~0x80;\n if (hashTypeMod <= 0 || hashTypeMod >= 4)\n throw new Error('Invalid hashType ' + hashType);\n const decoded = bip66.decode(buffer.slice(0, -1));\n const r = fromDER(decoded.r);\n const s = fromDER(decoded.s);\n const signature = Buffer.concat([r, s], 64);\n return { signature, hashType };\n}\nexports.decode = decode;\nfunction encode(signature, hashType) {\n typeforce(\n {\n signature: types.BufferN(64),\n hashType: types.UInt8,\n },\n { signature, hashType },\n );\n const hashTypeMod = hashType & ~0x80;\n if (hashTypeMod <= 0 || hashTypeMod >= 4)\n throw new Error('Invalid hashType ' + hashType);\n const hashTypeBuffer = Buffer.allocUnsafe(1);\n hashTypeBuffer.writeUInt8(hashType, 0);\n const r = toDER(signature.slice(0, 32));\n const s = toDER(signature.slice(32, 64));\n return Buffer.concat([bip66.encode(r, s), hashTypeBuffer]);\n}\nexports.encode = encode;\n", "var OPS = require('bitcoin-ops')\n\nfunction encodingLength (i) {\n return i < OPS.OP_PUSHDATA1 ? 1\n : i <= 0xff ? 2\n : i <= 0xffff ? 3\n : 5\n}\n\nfunction encode (buffer, number, offset) {\n var size = encodingLength(number)\n\n // ~6 bit\n if (size === 1) {\n buffer.writeUInt8(number, offset)\n\n // 8 bit\n } else if (size === 2) {\n buffer.writeUInt8(OPS.OP_PUSHDATA1, offset)\n buffer.writeUInt8(number, offset + 1)\n\n // 16 bit\n } else if (size === 3) {\n buffer.writeUInt8(OPS.OP_PUSHDATA2, offset)\n buffer.writeUInt16LE(number, offset + 1)\n\n // 32 bit\n } else {\n buffer.writeUInt8(OPS.OP_PUSHDATA4, offset)\n buffer.writeUInt32LE(number, offset + 1)\n }\n\n return size\n}\n\nfunction decode (buffer, offset) {\n var opcode = buffer.readUInt8(offset)\n var number, size\n\n // ~6 bit\n if (opcode < OPS.OP_PUSHDATA1) {\n number = opcode\n size = 1\n\n // 8 bit\n } else if (opcode === OPS.OP_PUSHDATA1) {\n if (offset + 2 > buffer.length) return null\n number = buffer.readUInt8(offset + 1)\n size = 2\n\n // 16 bit\n } else if (opcode === OPS.OP_PUSHDATA2) {\n if (offset + 3 > buffer.length) return null\n number = buffer.readUInt16LE(offset + 1)\n size = 3\n\n // 32 bit\n } else {\n if (offset + 5 > buffer.length) return null\n if (opcode !== OPS.OP_PUSHDATA4) throw new Error('Unexpected opcode')\n\n number = buffer.readUInt32LE(offset + 1)\n size = 5\n }\n\n return {\n opcode: opcode,\n number: number,\n size: size\n }\n}\n\nmodule.exports = {\n encodingLength: encodingLength,\n encode: encode,\n decode: decode\n}\n", "var OPS = require('./index.json')\n\nvar map = {}\nfor (var op in OPS) {\n var code = OPS[op]\n map[code] = op\n}\n\nmodule.exports = map\n", "'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst scriptNumber = require('./script_number');\nconst scriptSignature = require('./script_signature');\nconst types = require('./types');\nconst bip66 = require('bip66');\nconst ecc = require('tiny-secp256k1');\nconst pushdata = require('pushdata-bitcoin');\nconst typeforce = require('typeforce');\nexports.OPS = require('bitcoin-ops');\nconst REVERSE_OPS = require('bitcoin-ops/map');\nconst OP_INT_BASE = exports.OPS.OP_RESERVED; // OP_1 - 1\nfunction isOPInt(value) {\n return (\n types.Number(value) &&\n (value === exports.OPS.OP_0 ||\n (value >= exports.OPS.OP_1 && value <= exports.OPS.OP_16) ||\n value === exports.OPS.OP_1NEGATE)\n );\n}\nfunction isPushOnlyChunk(value) {\n return types.Buffer(value) || isOPInt(value);\n}\nfunction isPushOnly(value) {\n return types.Array(value) && value.every(isPushOnlyChunk);\n}\nexports.isPushOnly = isPushOnly;\nfunction asMinimalOP(buffer) {\n if (buffer.length === 0) return exports.OPS.OP_0;\n if (buffer.length !== 1) return;\n if (buffer[0] >= 1 && buffer[0] <= 16) return OP_INT_BASE + buffer[0];\n if (buffer[0] === 0x81) return exports.OPS.OP_1NEGATE;\n}\nfunction chunksIsBuffer(buf) {\n return Buffer.isBuffer(buf);\n}\nfunction chunksIsArray(buf) {\n return types.Array(buf);\n}\nfunction singleChunkIsBuffer(buf) {\n return Buffer.isBuffer(buf);\n}\nfunction compile(chunks) {\n // TODO: remove me\n if (chunksIsBuffer(chunks)) return chunks;\n typeforce(types.Array, chunks);\n const bufferSize = chunks.reduce((accum, chunk) => {\n // data chunk\n if (singleChunkIsBuffer(chunk)) {\n // adhere to BIP62.3, minimal push policy\n if (chunk.length === 1 && asMinimalOP(chunk) !== undefined) {\n return accum + 1;\n }\n return accum + pushdata.encodingLength(chunk.length) + chunk.length;\n }\n // opcode\n return accum + 1;\n }, 0.0);\n const buffer = Buffer.allocUnsafe(bufferSize);\n let offset = 0;\n chunks.forEach(chunk => {\n // data chunk\n if (singleChunkIsBuffer(chunk)) {\n // adhere to BIP62.3, minimal push policy\n const opcode = asMinimalOP(chunk);\n if (opcode !== undefined) {\n buffer.writeUInt8(opcode, offset);\n offset += 1;\n return;\n }\n offset += pushdata.encode(buffer, chunk.length, offset);\n chunk.copy(buffer, offset);\n offset += chunk.length;\n // opcode\n } else {\n buffer.writeUInt8(chunk, offset);\n offset += 1;\n }\n });\n if (offset !== buffer.length) throw new Error('Could not decode chunks');\n return buffer;\n}\nexports.compile = compile;\nfunction decompile(buffer) {\n // TODO: remove me\n if (chunksIsArray(buffer)) return buffer;\n typeforce(types.Buffer, buffer);\n const chunks = [];\n let i = 0;\n while (i < buffer.length) {\n const opcode = buffer[i];\n // data chunk\n if (opcode > exports.OPS.OP_0 && opcode <= exports.OPS.OP_PUSHDATA4) {\n const d = pushdata.decode(buffer, i);\n // did reading a pushDataInt fail?\n if (d === null) return null;\n i += d.size;\n // attempt to read too much data?\n if (i + d.number > buffer.length) return null;\n const data = buffer.slice(i, i + d.number);\n i += d.number;\n // decompile minimally\n const op = asMinimalOP(data);\n if (op !== undefined) {\n chunks.push(op);\n } else {\n chunks.push(data);\n }\n // opcode\n } else {\n chunks.push(opcode);\n i += 1;\n }\n }\n return chunks;\n}\nexports.decompile = decompile;\nfunction toASM(chunks) {\n if (chunksIsBuffer(chunks)) {\n chunks = decompile(chunks);\n }\n return chunks\n .map(chunk => {\n // data?\n if (singleChunkIsBuffer(chunk)) {\n const op = asMinimalOP(chunk);\n if (op === undefined) return chunk.toString('hex');\n chunk = op;\n }\n // opcode!\n return REVERSE_OPS[chunk];\n })\n .join(' ');\n}\nexports.toASM = toASM;\nfunction fromASM(asm) {\n typeforce(types.String, asm);\n return compile(\n asm.split(' ').map(chunkStr => {\n // opcode?\n if (exports.OPS[chunkStr] !== undefined) return exports.OPS[chunkStr];\n typeforce(types.Hex, chunkStr);\n // data!\n return Buffer.from(chunkStr, 'hex');\n }),\n );\n}\nexports.fromASM = fromASM;\nfunction toStack(chunks) {\n chunks = decompile(chunks);\n typeforce(isPushOnly, chunks);\n return chunks.map(op => {\n if (singleChunkIsBuffer(op)) return op;\n if (op === exports.OPS.OP_0) return Buffer.allocUnsafe(0);\n return scriptNumber.encode(op - OP_INT_BASE);\n });\n}\nexports.toStack = toStack;\nfunction isCanonicalPubKey(buffer) {\n return ecc.isPoint(buffer);\n}\nexports.isCanonicalPubKey = isCanonicalPubKey;\nfunction isDefinedHashType(hashType) {\n const hashTypeMod = hashType & ~0x80;\n // return hashTypeMod > SIGHASH_ALL && hashTypeMod < SIGHASH_SINGLE\n return hashTypeMod > 0x00 && hashTypeMod < 0x04;\n}\nexports.isDefinedHashType = isDefinedHashType;\nfunction isCanonicalScriptSignature(buffer) {\n if (!Buffer.isBuffer(buffer)) return false;\n if (!isDefinedHashType(buffer[buffer.length - 1])) return false;\n return bip66.check(buffer.slice(0, -1));\n}\nexports.isCanonicalScriptSignature = isCanonicalScriptSignature;\n// tslint:disable-next-line variable-name\nexports.number = scriptNumber;\nexports.signature = scriptSignature;\n", "'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nfunction prop(object, name, f) {\n Object.defineProperty(object, name, {\n configurable: true,\n enumerable: true,\n get() {\n const _value = f.call(this);\n this[name] = _value;\n return _value;\n },\n set(_value) {\n Object.defineProperty(this, name, {\n configurable: true,\n enumerable: true,\n value: _value,\n writable: true,\n });\n },\n });\n}\nexports.prop = prop;\nfunction value(f) {\n let _value;\n return () => {\n if (_value !== undefined) return _value;\n _value = f();\n return _value;\n };\n}\nexports.value = value;\n", "'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst networks_1 = require('../networks');\nconst bscript = require('../script');\nconst lazy = require('./lazy');\nconst typef = require('typeforce');\nconst OPS = bscript.OPS;\nfunction stacksEqual(a, b) {\n if (a.length !== b.length) return false;\n return a.every((x, i) => {\n return x.equals(b[i]);\n });\n}\n// output: OP_RETURN ...\nfunction p2data(a, opts) {\n if (!a.data && !a.output) throw new TypeError('Not enough data');\n opts = Object.assign({ validate: true }, opts || {});\n typef(\n {\n network: typef.maybe(typef.Object),\n output: typef.maybe(typef.Buffer),\n data: typef.maybe(typef.arrayOf(typef.Buffer)),\n },\n a,\n );\n const network = a.network || networks_1.bitcoin;\n const o = { name: 'embed', network };\n lazy.prop(o, 'output', () => {\n if (!a.data) return;\n return bscript.compile([OPS.OP_RETURN].concat(a.data));\n });\n lazy.prop(o, 'data', () => {\n if (!a.output) return;\n return bscript.decompile(a.output).slice(1);\n });\n // extended validation\n if (opts.validate) {\n if (a.output) {\n const chunks = bscript.decompile(a.output);\n if (chunks[0] !== OPS.OP_RETURN) throw new TypeError('Output is invalid');\n if (!chunks.slice(1).every(typef.Buffer))\n throw new TypeError('Output is invalid');\n if (a.data && !stacksEqual(a.data, o.data))\n throw new TypeError('Data mismatch');\n }\n }\n return Object.assign(o, a);\n}\nexports.p2data = p2data;\n", "'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst networks_1 = require('../networks');\nconst bscript = require('../script');\nconst lazy = require('./lazy');\nconst OPS = bscript.OPS;\nconst typef = require('typeforce');\nconst ecc = require('tiny-secp256k1');\nconst OP_INT_BASE = OPS.OP_RESERVED; // OP_1 - 1\nfunction stacksEqual(a, b) {\n if (a.length !== b.length) return false;\n return a.every((x, i) => {\n return x.equals(b[i]);\n });\n}\n// input: OP_0 [signatures ...]\n// output: m [pubKeys ...] n OP_CHECKMULTISIG\nfunction p2ms(a, opts) {\n if (\n !a.input &&\n !a.output &&\n !(a.pubkeys && a.m !== undefined) &&\n !a.signatures\n )\n throw new TypeError('Not enough data');\n opts = Object.assign({ validate: true }, opts || {});\n function isAcceptableSignature(x) {\n return (\n bscript.isCanonicalScriptSignature(x) ||\n (opts.allowIncomplete && x === OPS.OP_0) !== undefined\n );\n }\n typef(\n {\n network: typef.maybe(typef.Object),\n m: typef.maybe(typef.Number),\n n: typef.maybe(typef.Number),\n output: typef.maybe(typef.Buffer),\n pubkeys: typef.maybe(typef.arrayOf(ecc.isPoint)),\n signatures: typef.maybe(typef.arrayOf(isAcceptableSignature)),\n input: typef.maybe(typef.Buffer),\n },\n a,\n );\n const network = a.network || networks_1.bitcoin;\n const o = { network };\n let chunks = [];\n let decoded = false;\n function decode(output) {\n if (decoded) return;\n decoded = true;\n chunks = bscript.decompile(output);\n o.m = chunks[0] - OP_INT_BASE;\n o.n = chunks[chunks.length - 2] - OP_INT_BASE;\n o.pubkeys = chunks.slice(1, -2);\n }\n lazy.prop(o, 'output', () => {\n if (!a.m) return;\n if (!o.n) return;\n if (!a.pubkeys) return;\n return bscript.compile(\n [].concat(\n OP_INT_BASE + a.m,\n a.pubkeys,\n OP_INT_BASE + o.n,\n OPS.OP_CHECKMULTISIG,\n ),\n );\n });\n lazy.prop(o, 'm', () => {\n if (!o.output) return;\n decode(o.output);\n return o.m;\n });\n lazy.prop(o, 'n', () => {\n if (!o.pubkeys) return;\n return o.pubkeys.length;\n });\n lazy.prop(o, 'pubkeys', () => {\n if (!a.output) return;\n decode(a.output);\n return o.pubkeys;\n });\n lazy.prop(o, 'signatures', () => {\n if (!a.input) return;\n return bscript.decompile(a.input).slice(1);\n });\n lazy.prop(o, 'input', () => {\n if (!a.signatures) return;\n return bscript.compile([OPS.OP_0].concat(a.signatures));\n });\n lazy.prop(o, 'witness', () => {\n if (!o.input) return;\n return [];\n });\n lazy.prop(o, 'name', () => {\n if (!o.m || !o.n) return;\n return `p2ms(${o.m} of ${o.n})`;\n });\n // extended validation\n if (opts.validate) {\n if (a.output) {\n decode(a.output);\n if (!typef.Number(chunks[0])) throw new TypeError('Output is invalid');\n if (!typef.Number(chunks[chunks.length - 2]))\n throw new TypeError('Output is invalid');\n if (chunks[chunks.length - 1] !== OPS.OP_CHECKMULTISIG)\n throw new TypeError('Output is invalid');\n if (o.m <= 0 || o.n > 16 || o.m > o.n || o.n !== chunks.length - 3)\n throw new TypeError('Output is invalid');\n if (!o.pubkeys.every(x => ecc.isPoint(x)))\n throw new TypeError('Output is invalid');\n if (a.m !== undefined && a.m !== o.m) throw new TypeError('m mismatch');\n if (a.n !== undefined && a.n !== o.n) throw new TypeError('n mismatch');\n if (a.pubkeys && !stacksEqual(a.pubkeys, o.pubkeys))\n throw new TypeError('Pubkeys mismatch');\n }\n if (a.pubkeys) {\n if (a.n !== undefined && a.n !== a.pubkeys.length)\n throw new TypeError('Pubkey count mismatch');\n o.n = a.pubkeys.length;\n if (o.n < o.m) throw new TypeError('Pubkey count cannot be less than m');\n }\n if (a.signatures) {\n if (a.signatures.length < o.m)\n throw new TypeError('Not enough signatures provided');\n if (a.signatures.length > o.m)\n throw new TypeError('Too many signatures provided');\n }\n if (a.input) {\n if (a.input[0] !== OPS.OP_0) throw new TypeError('Input is invalid');\n if (\n o.signatures.length === 0 ||\n !o.signatures.every(isAcceptableSignature)\n )\n throw new TypeError('Input has invalid signature(s)');\n if (a.signatures && !stacksEqual(a.signatures, o.signatures))\n throw new TypeError('Signature mismatch');\n if (a.m !== undefined && a.m !== a.signatures.length)\n throw new TypeError('Signature count mismatch');\n }\n }\n return Object.assign(o, a);\n}\nexports.p2ms = p2ms;\n", "'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst networks_1 = require('../networks');\nconst bscript = require('../script');\nconst lazy = require('./lazy');\nconst typef = require('typeforce');\nconst OPS = bscript.OPS;\nconst ecc = require('tiny-secp256k1');\n// input: {signature}\n// output: {pubKey} OP_CHECKSIG\nfunction p2pk(a, opts) {\n if (!a.input && !a.output && !a.pubkey && !a.input && !a.signature)\n throw new TypeError('Not enough data');\n opts = Object.assign({ validate: true }, opts || {});\n typef(\n {\n network: typef.maybe(typef.Object),\n output: typef.maybe(typef.Buffer),\n pubkey: typef.maybe(ecc.isPoint),\n signature: typef.maybe(bscript.isCanonicalScriptSignature),\n input: typef.maybe(typef.Buffer),\n },\n a,\n );\n const _chunks = lazy.value(() => {\n return bscript.decompile(a.input);\n });\n const network = a.network || networks_1.bitcoin;\n const o = { name: 'p2pk', network };\n lazy.prop(o, 'output', () => {\n if (!a.pubkey) return;\n return bscript.compile([a.pubkey, OPS.OP_CHECKSIG]);\n });\n lazy.prop(o, 'pubkey', () => {\n if (!a.output) return;\n return a.output.slice(1, -1);\n });\n lazy.prop(o, 'signature', () => {\n if (!a.input) return;\n return _chunks()[0];\n });\n lazy.prop(o, 'input', () => {\n if (!a.signature) return;\n return bscript.compile([a.signature]);\n });\n lazy.prop(o, 'witness', () => {\n if (!o.input) return;\n return [];\n });\n // extended validation\n if (opts.validate) {\n if (a.output) {\n if (a.output[a.output.length - 1] !== OPS.OP_CHECKSIG)\n throw new TypeError('Output is invalid');\n if (!ecc.isPoint(o.pubkey))\n throw new TypeError('Output pubkey is invalid');\n if (a.pubkey && !a.pubkey.equals(o.pubkey))\n throw new TypeError('Pubkey mismatch');\n }\n if (a.signature) {\n if (a.input && !a.input.equals(o.input))\n throw new TypeError('Signature mismatch');\n }\n if (a.input) {\n if (_chunks().length !== 1) throw new TypeError('Input is invalid');\n if (!bscript.isCanonicalScriptSignature(o.signature))\n throw new TypeError('Input has invalid signature');\n }\n }\n return Object.assign(o, a);\n}\nexports.p2pk = p2pk;\n", "'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst createHash = require('create-hash');\nfunction ripemd160(buffer) {\n try {\n return createHash('rmd160')\n .update(buffer)\n .digest();\n } catch (err) {\n return createHash('ripemd160')\n .update(buffer)\n .digest();\n }\n}\nexports.ripemd160 = ripemd160;\nfunction sha1(buffer) {\n return createHash('sha1')\n .update(buffer)\n .digest();\n}\nexports.sha1 = sha1;\nfunction sha256(buffer) {\n return createHash('sha256')\n .update(buffer)\n .digest();\n}\nexports.sha256 = sha256;\nfunction hash160(buffer) {\n return ripemd160(sha256(buffer));\n}\nexports.hash160 = hash160;\nfunction hash256(buffer) {\n return sha256(sha256(buffer));\n}\nexports.hash256 = hash256;\n", "'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst bcrypto = require('../crypto');\nconst networks_1 = require('../networks');\nconst bscript = require('../script');\nconst lazy = require('./lazy');\nconst typef = require('typeforce');\nconst OPS = bscript.OPS;\nconst ecc = require('tiny-secp256k1');\nconst bs58check = require('bs58check');\n// input: {signature} {pubkey}\n// output: OP_DUP OP_HASH160 {hash160(pubkey)} OP_EQUALVERIFY OP_CHECKSIG\nfunction p2pkh(a, opts) {\n if (!a.address && !a.hash && !a.output && !a.pubkey && !a.input)\n throw new TypeError('Not enough data');\n opts = Object.assign({ validate: true }, opts || {});\n typef(\n {\n network: typef.maybe(typef.Object),\n address: typef.maybe(typef.String),\n hash: typef.maybe(typef.BufferN(20)),\n output: typef.maybe(typef.BufferN(25)),\n pubkey: typef.maybe(ecc.isPoint),\n signature: typef.maybe(bscript.isCanonicalScriptSignature),\n input: typef.maybe(typef.Buffer),\n },\n a,\n );\n const _address = lazy.value(() => {\n const payload = bs58check.decode(a.address);\n const version = payload.readUInt8(0);\n const hash = payload.slice(1);\n return { version, hash };\n });\n const _chunks = lazy.value(() => {\n return bscript.decompile(a.input);\n });\n const network = a.network || networks_1.bitcoin;\n const o = { name: 'p2pkh', network };\n lazy.prop(o, 'address', () => {\n if (!o.hash) return;\n const payload = Buffer.allocUnsafe(21);\n payload.writeUInt8(network.pubKeyHash, 0);\n o.hash.copy(payload, 1);\n return bs58check.encode(payload);\n });\n lazy.prop(o, 'hash', () => {\n if (a.output) return a.output.slice(3, 23);\n if (a.address) return _address().hash;\n if (a.pubkey || o.pubkey) return bcrypto.hash160(a.pubkey || o.pubkey);\n });\n lazy.prop(o, 'output', () => {\n if (!o.hash) return;\n return bscript.compile([\n OPS.OP_DUP,\n OPS.OP_HASH160,\n o.hash,\n OPS.OP_EQUALVERIFY,\n OPS.OP_CHECKSIG,\n ]);\n });\n lazy.prop(o, 'pubkey', () => {\n if (!a.input) return;\n return _chunks()[1];\n });\n lazy.prop(o, 'signature', () => {\n if (!a.input) return;\n return _chunks()[0];\n });\n lazy.prop(o, 'input', () => {\n if (!a.pubkey) return;\n if (!a.signature) return;\n return bscript.compile([a.signature, a.pubkey]);\n });\n lazy.prop(o, 'witness', () => {\n if (!o.input) return;\n return [];\n });\n // extended validation\n if (opts.validate) {\n let hash = Buffer.from([]);\n if (a.address) {\n if (_address().version !== network.pubKeyHash)\n throw new TypeError('Invalid version or Network mismatch');\n if (_address().hash.length !== 20) throw new TypeError('Invalid address');\n hash = _address().hash;\n }\n if (a.hash) {\n if (hash.length > 0 && !hash.equals(a.hash))\n throw new TypeError('Hash mismatch');\n else hash = a.hash;\n }\n if (a.output) {\n if (\n a.output.length !== 25 ||\n a.output[0] !== OPS.OP_DUP ||\n a.output[1] !== OPS.OP_HASH160 ||\n a.output[2] !== 0x14 ||\n a.output[23] !== OPS.OP_EQUALVERIFY ||\n a.output[24] !== OPS.OP_CHECKSIG\n )\n throw new TypeError('Output is invalid');\n const hash2 = a.output.slice(3, 23);\n if (hash.length > 0 && !hash.equals(hash2))\n throw new TypeError('Hash mismatch');\n else hash = hash2;\n }\n if (a.pubkey) {\n const pkh = bcrypto.hash160(a.pubkey);\n if (hash.length > 0 && !hash.equals(pkh))\n throw new TypeError('Hash mismatch');\n else hash = pkh;\n }\n if (a.input) {\n const chunks = _chunks();\n if (chunks.length !== 2) throw new TypeError('Input is invalid');\n if (!bscript.isCanonicalScriptSignature(chunks[0]))\n throw new TypeError('Input has invalid signature');\n if (!ecc.isPoint(chunks[1]))\n throw new TypeError('Input has invalid pubkey');\n if (a.signature && !a.signature.equals(chunks[0]))\n throw new TypeError('Signature mismatch');\n if (a.pubkey && !a.pubkey.equals(chunks[1]))\n throw new TypeError('Pubkey mismatch');\n const pkh = bcrypto.hash160(chunks[1]);\n if (hash.length > 0 && !hash.equals(pkh))\n throw new TypeError('Hash mismatch');\n }\n }\n return Object.assign(o, a);\n}\nexports.p2pkh = p2pkh;\n", "'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst bcrypto = require('../crypto');\nconst networks_1 = require('../networks');\nconst bscript = require('../script');\nconst lazy = require('./lazy');\nconst typef = require('typeforce');\nconst OPS = bscript.OPS;\nconst bs58check = require('bs58check');\nfunction stacksEqual(a, b) {\n if (a.length !== b.length) return false;\n return a.every((x, i) => {\n return x.equals(b[i]);\n });\n}\n// input: [redeemScriptSig ...] {redeemScript}\n// witness: \n// output: OP_HASH160 {hash160(redeemScript)} OP_EQUAL\nfunction p2sh(a, opts) {\n if (!a.address && !a.hash && !a.output && !a.redeem && !a.input)\n throw new TypeError('Not enough data');\n opts = Object.assign({ validate: true }, opts || {});\n typef(\n {\n network: typef.maybe(typef.Object),\n address: typef.maybe(typef.String),\n hash: typef.maybe(typef.BufferN(20)),\n output: typef.maybe(typef.BufferN(23)),\n redeem: typef.maybe({\n network: typef.maybe(typef.Object),\n output: typef.maybe(typef.Buffer),\n input: typef.maybe(typef.Buffer),\n witness: typef.maybe(typef.arrayOf(typef.Buffer)),\n }),\n input: typef.maybe(typef.Buffer),\n witness: typef.maybe(typef.arrayOf(typef.Buffer)),\n },\n a,\n );\n let network = a.network;\n if (!network) {\n network = (a.redeem && a.redeem.network) || networks_1.bitcoin;\n }\n const o = { network };\n const _address = lazy.value(() => {\n const payload = bs58check.decode(a.address);\n const version = payload.readUInt8(0);\n const hash = payload.slice(1);\n return { version, hash };\n });\n const _chunks = lazy.value(() => {\n return bscript.decompile(a.input);\n });\n const _redeem = lazy.value(() => {\n const chunks = _chunks();\n return {\n network,\n output: chunks[chunks.length - 1],\n input: bscript.compile(chunks.slice(0, -1)),\n witness: a.witness || [],\n };\n });\n // output dependents\n lazy.prop(o, 'address', () => {\n if (!o.hash) return;\n const payload = Buffer.allocUnsafe(21);\n payload.writeUInt8(o.network.scriptHash, 0);\n o.hash.copy(payload, 1);\n return bs58check.encode(payload);\n });\n lazy.prop(o, 'hash', () => {\n // in order of least effort\n if (a.output) return a.output.slice(2, 22);\n if (a.address) return _address().hash;\n if (o.redeem && o.redeem.output) return bcrypto.hash160(o.redeem.output);\n });\n lazy.prop(o, 'output', () => {\n if (!o.hash) return;\n return bscript.compile([OPS.OP_HASH160, o.hash, OPS.OP_EQUAL]);\n });\n // input dependents\n lazy.prop(o, 'redeem', () => {\n if (!a.input) return;\n return _redeem();\n });\n lazy.prop(o, 'input', () => {\n if (!a.redeem || !a.redeem.input || !a.redeem.output) return;\n return bscript.compile(\n [].concat(bscript.decompile(a.redeem.input), a.redeem.output),\n );\n });\n lazy.prop(o, 'witness', () => {\n if (o.redeem && o.redeem.witness) return o.redeem.witness;\n if (o.input) return [];\n });\n lazy.prop(o, 'name', () => {\n const nameParts = ['p2sh'];\n if (o.redeem !== undefined) nameParts.push(o.redeem.name);\n return nameParts.join('-');\n });\n if (opts.validate) {\n let hash = Buffer.from([]);\n if (a.address) {\n if (_address().version !== network.scriptHash)\n throw new TypeError('Invalid version or Network mismatch');\n if (_address().hash.length !== 20) throw new TypeError('Invalid address');\n hash = _address().hash;\n }\n if (a.hash) {\n if (hash.length > 0 && !hash.equals(a.hash))\n throw new TypeError('Hash mismatch');\n else hash = a.hash;\n }\n if (a.output) {\n if (\n a.output.length !== 23 ||\n a.output[0] !== OPS.OP_HASH160 ||\n a.output[1] !== 0x14 ||\n a.output[22] !== OPS.OP_EQUAL\n )\n throw new TypeError('Output is invalid');\n const hash2 = a.output.slice(2, 22);\n if (hash.length > 0 && !hash.equals(hash2))\n throw new TypeError('Hash mismatch');\n else hash = hash2;\n }\n // inlined to prevent 'no-inner-declarations' failing\n const checkRedeem = redeem => {\n // is the redeem output empty/invalid?\n if (redeem.output) {\n const decompile = bscript.decompile(redeem.output);\n if (!decompile || decompile.length < 1)\n throw new TypeError('Redeem.output too short');\n // match hash against other sources\n const hash2 = bcrypto.hash160(redeem.output);\n if (hash.length > 0 && !hash.equals(hash2))\n throw new TypeError('Hash mismatch');\n else hash = hash2;\n }\n if (redeem.input) {\n const hasInput = redeem.input.length > 0;\n const hasWitness = redeem.witness && redeem.witness.length > 0;\n if (!hasInput && !hasWitness) throw new TypeError('Empty input');\n if (hasInput && hasWitness)\n throw new TypeError('Input and witness provided');\n if (hasInput) {\n const richunks = bscript.decompile(redeem.input);\n if (!bscript.isPushOnly(richunks))\n throw new TypeError('Non push-only scriptSig');\n }\n }\n };\n if (a.input) {\n const chunks = _chunks();\n if (!chunks || chunks.length < 1) throw new TypeError('Input too short');\n if (!Buffer.isBuffer(_redeem().output))\n throw new TypeError('Input is invalid');\n checkRedeem(_redeem());\n }\n if (a.redeem) {\n if (a.redeem.network && a.redeem.network !== network)\n throw new TypeError('Network mismatch');\n if (a.input) {\n const redeem = _redeem();\n if (a.redeem.output && !a.redeem.output.equals(redeem.output))\n throw new TypeError('Redeem.output mismatch');\n if (a.redeem.input && !a.redeem.input.equals(redeem.input))\n throw new TypeError('Redeem.input mismatch');\n }\n checkRedeem(a.redeem);\n }\n if (a.witness) {\n if (\n a.redeem &&\n a.redeem.witness &&\n !stacksEqual(a.redeem.witness, a.witness)\n )\n throw new TypeError('Witness and redeem.witness mismatch');\n }\n }\n return Object.assign(o, a);\n}\nexports.p2sh = p2sh;\n", "'use strict'\nvar ALPHABET = 'qpzry9x8gf2tvdw0s3jn54khce6mua7l'\n\n// pre-compute lookup table\nvar ALPHABET_MAP = {}\nfor (var z = 0; z < ALPHABET.length; z++) {\n var x = ALPHABET.charAt(z)\n\n if (ALPHABET_MAP[x] !== undefined) throw new TypeError(x + ' is ambiguous')\n ALPHABET_MAP[x] = z\n}\n\nfunction polymodStep (pre) {\n var b = pre >> 25\n return ((pre & 0x1FFFFFF) << 5) ^\n (-((b >> 0) & 1) & 0x3b6a57b2) ^\n (-((b >> 1) & 1) & 0x26508e6d) ^\n (-((b >> 2) & 1) & 0x1ea119fa) ^\n (-((b >> 3) & 1) & 0x3d4233dd) ^\n (-((b >> 4) & 1) & 0x2a1462b3)\n}\n\nfunction prefixChk (prefix) {\n var chk = 1\n for (var i = 0; i < prefix.length; ++i) {\n var c = prefix.charCodeAt(i)\n if (c < 33 || c > 126) return 'Invalid prefix (' + prefix + ')'\n\n chk = polymodStep(chk) ^ (c >> 5)\n }\n chk = polymodStep(chk)\n\n for (i = 0; i < prefix.length; ++i) {\n var v = prefix.charCodeAt(i)\n chk = polymodStep(chk) ^ (v & 0x1f)\n }\n return chk\n}\n\nfunction encode (prefix, words, LIMIT) {\n LIMIT = LIMIT || 90\n if ((prefix.length + 7 + words.length) > LIMIT) throw new TypeError('Exceeds length limit')\n\n prefix = prefix.toLowerCase()\n\n // determine chk mod\n var chk = prefixChk(prefix)\n if (typeof chk === 'string') throw new Error(chk)\n\n var result = prefix + '1'\n for (var i = 0; i < words.length; ++i) {\n var x = words[i]\n if ((x >> 5) !== 0) throw new Error('Non 5-bit word')\n\n chk = polymodStep(chk) ^ x\n result += ALPHABET.charAt(x)\n }\n\n for (i = 0; i < 6; ++i) {\n chk = polymodStep(chk)\n }\n chk ^= 1\n\n for (i = 0; i < 6; ++i) {\n var v = (chk >> ((5 - i) * 5)) & 0x1f\n result += ALPHABET.charAt(v)\n }\n\n return result\n}\n\nfunction __decode (str, LIMIT) {\n LIMIT = LIMIT || 90\n if (str.length < 8) return str + ' too short'\n if (str.length > LIMIT) return 'Exceeds length limit'\n\n // don't allow mixed case\n var lowered = str.toLowerCase()\n var uppered = str.toUpperCase()\n if (str !== lowered && str !== uppered) return 'Mixed-case string ' + str\n str = lowered\n\n var split = str.lastIndexOf('1')\n if (split === -1) return 'No separator character for ' + str\n if (split === 0) return 'Missing prefix for ' + str\n\n var prefix = str.slice(0, split)\n var wordChars = str.slice(split + 1)\n if (wordChars.length < 6) return 'Data too short'\n\n var chk = prefixChk(prefix)\n if (typeof chk === 'string') return chk\n\n var words = []\n for (var i = 0; i < wordChars.length; ++i) {\n var c = wordChars.charAt(i)\n var v = ALPHABET_MAP[c]\n if (v === undefined) return 'Unknown character ' + c\n chk = polymodStep(chk) ^ v\n\n // not in the checksum?\n if (i + 6 >= wordChars.length) continue\n words.push(v)\n }\n\n if (chk !== 1) return 'Invalid checksum for ' + str\n return { prefix: prefix, words: words }\n}\n\nfunction decodeUnsafe () {\n var res = __decode.apply(null, arguments)\n if (typeof res === 'object') return res\n}\n\nfunction decode (str) {\n var res = __decode.apply(null, arguments)\n if (typeof res === 'object') return res\n\n throw new Error(res)\n}\n\nfunction convert (data, inBits, outBits, pad) {\n var value = 0\n var bits = 0\n var maxV = (1 << outBits) - 1\n\n var result = []\n for (var i = 0; i < data.length; ++i) {\n value = (value << inBits) | data[i]\n bits += inBits\n\n while (bits >= outBits) {\n bits -= outBits\n result.push((value >> bits) & maxV)\n }\n }\n\n if (pad) {\n if (bits > 0) {\n result.push((value << (outBits - bits)) & maxV)\n }\n } else {\n if (bits >= inBits) return 'Excess padding'\n if ((value << (outBits - bits)) & maxV) return 'Non-zero padding'\n }\n\n return result\n}\n\nfunction toWordsUnsafe (bytes) {\n var res = convert(bytes, 8, 5, true)\n if (Array.isArray(res)) return res\n}\n\nfunction toWords (bytes) {\n var res = convert(bytes, 8, 5, true)\n if (Array.isArray(res)) return res\n\n throw new Error(res)\n}\n\nfunction fromWordsUnsafe (words) {\n var res = convert(words, 5, 8, false)\n if (Array.isArray(res)) return res\n}\n\nfunction fromWords (words) {\n var res = convert(words, 5, 8, false)\n if (Array.isArray(res)) return res\n\n throw new Error(res)\n}\n\nmodule.exports = {\n decodeUnsafe: decodeUnsafe,\n decode: decode,\n encode: encode,\n toWordsUnsafe: toWordsUnsafe,\n toWords: toWords,\n fromWordsUnsafe: fromWordsUnsafe,\n fromWords: fromWords\n}\n", "'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst bcrypto = require('../crypto');\nconst networks_1 = require('../networks');\nconst bscript = require('../script');\nconst lazy = require('./lazy');\nconst typef = require('typeforce');\nconst OPS = bscript.OPS;\nconst ecc = require('tiny-secp256k1');\nconst bech32 = require('bech32');\nconst EMPTY_BUFFER = Buffer.alloc(0);\n// witness: {signature} {pubKey}\n// input: <>\n// output: OP_0 {pubKeyHash}\nfunction p2wpkh(a, opts) {\n if (!a.address && !a.hash && !a.output && !a.pubkey && !a.witness)\n throw new TypeError('Not enough data');\n opts = Object.assign({ validate: true }, opts || {});\n typef(\n {\n address: typef.maybe(typef.String),\n hash: typef.maybe(typef.BufferN(20)),\n input: typef.maybe(typef.BufferN(0)),\n network: typef.maybe(typef.Object),\n output: typef.maybe(typef.BufferN(22)),\n pubkey: typef.maybe(ecc.isPoint),\n signature: typef.maybe(bscript.isCanonicalScriptSignature),\n witness: typef.maybe(typef.arrayOf(typef.Buffer)),\n },\n a,\n );\n const _address = lazy.value(() => {\n const result = bech32.decode(a.address);\n const version = result.words.shift();\n const data = bech32.fromWords(result.words);\n return {\n version,\n prefix: result.prefix,\n data: Buffer.from(data),\n };\n });\n const network = a.network || networks_1.bitcoin;\n const o = { name: 'p2wpkh', network };\n lazy.prop(o, 'address', () => {\n if (!o.hash) return;\n const words = bech32.toWords(o.hash);\n words.unshift(0x00);\n return bech32.encode(network.bech32, words);\n });\n lazy.prop(o, 'hash', () => {\n if (a.output) return a.output.slice(2, 22);\n if (a.address) return _address().data;\n if (a.pubkey || o.pubkey) return bcrypto.hash160(a.pubkey || o.pubkey);\n });\n lazy.prop(o, 'output', () => {\n if (!o.hash) return;\n return bscript.compile([OPS.OP_0, o.hash]);\n });\n lazy.prop(o, 'pubkey', () => {\n if (a.pubkey) return a.pubkey;\n if (!a.witness) return;\n return a.witness[1];\n });\n lazy.prop(o, 'signature', () => {\n if (!a.witness) return;\n return a.witness[0];\n });\n lazy.prop(o, 'input', () => {\n if (!o.witness) return;\n return EMPTY_BUFFER;\n });\n lazy.prop(o, 'witness', () => {\n if (!a.pubkey) return;\n if (!a.signature) return;\n return [a.signature, a.pubkey];\n });\n // extended validation\n if (opts.validate) {\n let hash = Buffer.from([]);\n if (a.address) {\n if (network && network.bech32 !== _address().prefix)\n throw new TypeError('Invalid prefix or Network mismatch');\n if (_address().version !== 0x00)\n throw new TypeError('Invalid address version');\n if (_address().data.length !== 20)\n throw new TypeError('Invalid address data');\n hash = _address().data;\n }\n if (a.hash) {\n if (hash.length > 0 && !hash.equals(a.hash))\n throw new TypeError('Hash mismatch');\n else hash = a.hash;\n }\n if (a.output) {\n if (\n a.output.length !== 22 ||\n a.output[0] !== OPS.OP_0 ||\n a.output[1] !== 0x14\n )\n throw new TypeError('Output is invalid');\n if (hash.length > 0 && !hash.equals(a.output.slice(2)))\n throw new TypeError('Hash mismatch');\n else hash = a.output.slice(2);\n }\n if (a.pubkey) {\n const pkh = bcrypto.hash160(a.pubkey);\n if (hash.length > 0 && !hash.equals(pkh))\n throw new TypeError('Hash mismatch');\n else hash = pkh;\n if (!ecc.isPoint(a.pubkey) || a.pubkey.length !== 33)\n throw new TypeError('Invalid pubkey for p2wpkh');\n }\n if (a.witness) {\n if (a.witness.length !== 2) throw new TypeError('Witness is invalid');\n if (!bscript.isCanonicalScriptSignature(a.witness[0]))\n throw new TypeError('Witness has invalid signature');\n if (!ecc.isPoint(a.witness[1]) || a.witness[1].length !== 33)\n throw new TypeError('Witness has invalid pubkey');\n if (a.signature && !a.signature.equals(a.witness[0]))\n throw new TypeError('Signature mismatch');\n if (a.pubkey && !a.pubkey.equals(a.witness[1]))\n throw new TypeError('Pubkey mismatch');\n const pkh = bcrypto.hash160(a.witness[1]);\n if (hash.length > 0 && !hash.equals(pkh))\n throw new TypeError('Hash mismatch');\n }\n }\n return Object.assign(o, a);\n}\nexports.p2wpkh = p2wpkh;\n", "'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst bcrypto = require('../crypto');\nconst networks_1 = require('../networks');\nconst bscript = require('../script');\nconst lazy = require('./lazy');\nconst typef = require('typeforce');\nconst OPS = bscript.OPS;\nconst ecc = require('tiny-secp256k1');\nconst bech32 = require('bech32');\nconst EMPTY_BUFFER = Buffer.alloc(0);\nfunction stacksEqual(a, b) {\n if (a.length !== b.length) return false;\n return a.every((x, i) => {\n return x.equals(b[i]);\n });\n}\nfunction chunkHasUncompressedPubkey(chunk) {\n if (\n Buffer.isBuffer(chunk) &&\n chunk.length === 65 &&\n chunk[0] === 0x04 &&\n ecc.isPoint(chunk)\n ) {\n return true;\n } else {\n return false;\n }\n}\n// input: <>\n// witness: [redeemScriptSig ...] {redeemScript}\n// output: OP_0 {sha256(redeemScript)}\nfunction p2wsh(a, opts) {\n if (!a.address && !a.hash && !a.output && !a.redeem && !a.witness)\n throw new TypeError('Not enough data');\n opts = Object.assign({ validate: true }, opts || {});\n typef(\n {\n network: typef.maybe(typef.Object),\n address: typef.maybe(typef.String),\n hash: typef.maybe(typef.BufferN(32)),\n output: typef.maybe(typef.BufferN(34)),\n redeem: typef.maybe({\n input: typef.maybe(typef.Buffer),\n network: typef.maybe(typef.Object),\n output: typef.maybe(typef.Buffer),\n witness: typef.maybe(typef.arrayOf(typef.Buffer)),\n }),\n input: typef.maybe(typef.BufferN(0)),\n witness: typef.maybe(typef.arrayOf(typef.Buffer)),\n },\n a,\n );\n const _address = lazy.value(() => {\n const result = bech32.decode(a.address);\n const version = result.words.shift();\n const data = bech32.fromWords(result.words);\n return {\n version,\n prefix: result.prefix,\n data: Buffer.from(data),\n };\n });\n const _rchunks = lazy.value(() => {\n return bscript.decompile(a.redeem.input);\n });\n let network = a.network;\n if (!network) {\n network = (a.redeem && a.redeem.network) || networks_1.bitcoin;\n }\n const o = { network };\n lazy.prop(o, 'address', () => {\n if (!o.hash) return;\n const words = bech32.toWords(o.hash);\n words.unshift(0x00);\n return bech32.encode(network.bech32, words);\n });\n lazy.prop(o, 'hash', () => {\n if (a.output) return a.output.slice(2);\n if (a.address) return _address().data;\n if (o.redeem && o.redeem.output) return bcrypto.sha256(o.redeem.output);\n });\n lazy.prop(o, 'output', () => {\n if (!o.hash) return;\n return bscript.compile([OPS.OP_0, o.hash]);\n });\n lazy.prop(o, 'redeem', () => {\n if (!a.witness) return;\n return {\n output: a.witness[a.witness.length - 1],\n input: EMPTY_BUFFER,\n witness: a.witness.slice(0, -1),\n };\n });\n lazy.prop(o, 'input', () => {\n if (!o.witness) return;\n return EMPTY_BUFFER;\n });\n lazy.prop(o, 'witness', () => {\n // transform redeem input to witness stack?\n if (\n a.redeem &&\n a.redeem.input &&\n a.redeem.input.length > 0 &&\n a.redeem.output &&\n a.redeem.output.length > 0\n ) {\n const stack = bscript.toStack(_rchunks());\n // assign, and blank the existing input\n o.redeem = Object.assign({ witness: stack }, a.redeem);\n o.redeem.input = EMPTY_BUFFER;\n return [].concat(stack, a.redeem.output);\n }\n if (!a.redeem) return;\n if (!a.redeem.output) return;\n if (!a.redeem.witness) return;\n return [].concat(a.redeem.witness, a.redeem.output);\n });\n lazy.prop(o, 'name', () => {\n const nameParts = ['p2wsh'];\n if (o.redeem !== undefined) nameParts.push(o.redeem.name);\n return nameParts.join('-');\n });\n // extended validation\n if (opts.validate) {\n let hash = Buffer.from([]);\n if (a.address) {\n if (_address().prefix !== network.bech32)\n throw new TypeError('Invalid prefix or Network mismatch');\n if (_address().version !== 0x00)\n throw new TypeError('Invalid address version');\n if (_address().data.length !== 32)\n throw new TypeError('Invalid address data');\n hash = _address().data;\n }\n if (a.hash) {\n if (hash.length > 0 && !hash.equals(a.hash))\n throw new TypeError('Hash mismatch');\n else hash = a.hash;\n }\n if (a.output) {\n if (\n a.output.length !== 34 ||\n a.output[0] !== OPS.OP_0 ||\n a.output[1] !== 0x20\n )\n throw new TypeError('Output is invalid');\n const hash2 = a.output.slice(2);\n if (hash.length > 0 && !hash.equals(hash2))\n throw new TypeError('Hash mismatch');\n else hash = hash2;\n }\n if (a.redeem) {\n if (a.redeem.network && a.redeem.network !== network)\n throw new TypeError('Network mismatch');\n // is there two redeem sources?\n if (\n a.redeem.input &&\n a.redeem.input.length > 0 &&\n a.redeem.witness &&\n a.redeem.witness.length > 0\n )\n throw new TypeError('Ambiguous witness source');\n // is the redeem output non-empty?\n if (a.redeem.output) {\n if (bscript.decompile(a.redeem.output).length === 0)\n throw new TypeError('Redeem.output is invalid');\n // match hash against other sources\n const hash2 = bcrypto.sha256(a.redeem.output);\n if (hash.length > 0 && !hash.equals(hash2))\n throw new TypeError('Hash mismatch');\n else hash = hash2;\n }\n if (a.redeem.input && !bscript.isPushOnly(_rchunks()))\n throw new TypeError('Non push-only scriptSig');\n if (\n a.witness &&\n a.redeem.witness &&\n !stacksEqual(a.witness, a.redeem.witness)\n )\n throw new TypeError('Witness and redeem.witness mismatch');\n if (\n (a.redeem.input && _rchunks().some(chunkHasUncompressedPubkey)) ||\n (a.redeem.output &&\n (bscript.decompile(a.redeem.output) || []).some(\n chunkHasUncompressedPubkey,\n ))\n ) {\n throw new TypeError(\n 'redeem.input or redeem.output contains uncompressed pubkey',\n );\n }\n }\n if (a.witness && a.witness.length > 0) {\n const wScript = a.witness[a.witness.length - 1];\n if (a.redeem && a.redeem.output && !a.redeem.output.equals(wScript))\n throw new TypeError('Witness and redeem.output mismatch');\n if (\n a.witness.some(chunkHasUncompressedPubkey) ||\n (bscript.decompile(wScript) || []).some(chunkHasUncompressedPubkey)\n )\n throw new TypeError('Witness contains uncompressed pubkey');\n }\n }\n return Object.assign(o, a);\n}\nexports.p2wsh = p2wsh;\n", "'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst embed_1 = require('./embed');\nexports.embed = embed_1.p2data;\nconst p2ms_1 = require('./p2ms');\nexports.p2ms = p2ms_1.p2ms;\nconst p2pk_1 = require('./p2pk');\nexports.p2pk = p2pk_1.p2pk;\nconst p2pkh_1 = require('./p2pkh');\nexports.p2pkh = p2pkh_1.p2pkh;\nconst p2sh_1 = require('./p2sh');\nexports.p2sh = p2sh_1.p2sh;\nconst p2wpkh_1 = require('./p2wpkh');\nexports.p2wpkh = p2wpkh_1.p2wpkh;\nconst p2wsh_1 = require('./p2wsh');\nexports.p2wsh = p2wsh_1.p2wsh;\n// TODO\n// witness commitment\n", "'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst networks = require('./networks');\nconst payments = require('./payments');\nconst bscript = require('./script');\nconst types = require('./types');\nconst bech32 = require('bech32');\nconst bs58check = require('bs58check');\nconst typeforce = require('typeforce');\nfunction fromBase58Check(address) {\n const payload = bs58check.decode(address);\n // TODO: 4.0.0, move to \"toOutputScript\"\n if (payload.length < 21) throw new TypeError(address + ' is too short');\n if (payload.length > 21) throw new TypeError(address + ' is too long');\n const version = payload.readUInt8(0);\n const hash = payload.slice(1);\n return { version, hash };\n}\nexports.fromBase58Check = fromBase58Check;\nfunction fromBech32(address) {\n const result = bech32.decode(address);\n const data = bech32.fromWords(result.words.slice(1));\n return {\n version: result.words[0],\n prefix: result.prefix,\n data: Buffer.from(data),\n };\n}\nexports.fromBech32 = fromBech32;\nfunction toBase58Check(hash, version) {\n typeforce(types.tuple(types.Hash160bit, types.UInt8), arguments);\n const payload = Buffer.allocUnsafe(21);\n payload.writeUInt8(version, 0);\n hash.copy(payload, 1);\n return bs58check.encode(payload);\n}\nexports.toBase58Check = toBase58Check;\nfunction toBech32(data, version, prefix) {\n const words = bech32.toWords(data);\n words.unshift(version);\n return bech32.encode(prefix, words);\n}\nexports.toBech32 = toBech32;\nfunction fromOutputScript(output, network) {\n // TODO: Network\n network = network || networks.bitcoin;\n try {\n return payments.p2pkh({ output, network }).address;\n } catch (e) {}\n try {\n return payments.p2sh({ output, network }).address;\n } catch (e) {}\n try {\n return payments.p2wpkh({ output, network }).address;\n } catch (e) {}\n try {\n return payments.p2wsh({ output, network }).address;\n } catch (e) {}\n throw new Error(bscript.toASM(output) + ' has no matching Address');\n}\nexports.fromOutputScript = fromOutputScript;\nfunction toOutputScript(address, network) {\n network = network || networks.bitcoin;\n let decodeBase58;\n let decodeBech32;\n try {\n decodeBase58 = fromBase58Check(address);\n } catch (e) {}\n if (decodeBase58) {\n if (decodeBase58.version === network.pubKeyHash)\n return payments.p2pkh({ hash: decodeBase58.hash }).output;\n if (decodeBase58.version === network.scriptHash)\n return payments.p2sh({ hash: decodeBase58.hash }).output;\n } else {\n try {\n decodeBech32 = fromBech32(address);\n } catch (e) {}\n if (decodeBech32) {\n if (decodeBech32.prefix !== network.bech32)\n throw new Error(address + ' has an invalid prefix');\n if (decodeBech32.version === 0) {\n if (decodeBech32.data.length === 20)\n return payments.p2wpkh({ hash: decodeBech32.data }).output;\n if (decodeBech32.data.length === 32)\n return payments.p2wsh({ hash: decodeBech32.data }).output;\n }\n }\n }\n throw new Error(address + ' has no matching Script');\n}\nexports.toOutputScript = toOutputScript;\n", "module.exports = require('crypto').randomBytes\n", "'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst NETWORKS = require('./networks');\nconst types = require('./types');\nconst ecc = require('tiny-secp256k1');\nconst randomBytes = require('randombytes');\nconst typeforce = require('typeforce');\nconst wif = require('wif');\nconst isOptions = typeforce.maybe(\n typeforce.compile({\n compressed: types.maybe(types.Boolean),\n network: types.maybe(types.Network),\n }),\n);\nclass ECPair {\n constructor(__D, __Q, options) {\n this.__D = __D;\n this.__Q = __Q;\n this.lowR = false;\n if (options === undefined) options = {};\n this.compressed =\n options.compressed === undefined ? true : options.compressed;\n this.network = options.network || NETWORKS.bitcoin;\n if (__Q !== undefined) this.__Q = ecc.pointCompress(__Q, this.compressed);\n }\n get privateKey() {\n return this.__D;\n }\n get publicKey() {\n if (!this.__Q) this.__Q = ecc.pointFromScalar(this.__D, this.compressed);\n return this.__Q;\n }\n toWIF() {\n if (!this.__D) throw new Error('Missing private key');\n return wif.encode(this.network.wif, this.__D, this.compressed);\n }\n sign(hash, lowR) {\n if (!this.__D) throw new Error('Missing private key');\n if (lowR === undefined) lowR = this.lowR;\n if (lowR === false) {\n return ecc.sign(hash, this.__D);\n } else {\n let sig = ecc.sign(hash, this.__D);\n const extraData = Buffer.alloc(32, 0);\n let counter = 0;\n // if first try is lowR, skip the loop\n // for second try and on, add extra entropy counting up\n while (sig[0] > 0x7f) {\n counter++;\n extraData.writeUIntLE(counter, 0, 6);\n sig = ecc.signWithEntropy(hash, this.__D, extraData);\n }\n return sig;\n }\n }\n verify(hash, signature) {\n return ecc.verify(hash, this.publicKey, signature);\n }\n}\nfunction fromPrivateKey(buffer, options) {\n typeforce(types.Buffer256bit, buffer);\n if (!ecc.isPrivate(buffer))\n throw new TypeError('Private key not in range [1, n)');\n typeforce(isOptions, options);\n return new ECPair(buffer, undefined, options);\n}\nexports.fromPrivateKey = fromPrivateKey;\nfunction fromPublicKey(buffer, options) {\n typeforce(ecc.isPoint, buffer);\n typeforce(isOptions, options);\n return new ECPair(undefined, buffer, options);\n}\nexports.fromPublicKey = fromPublicKey;\nfunction fromWIF(wifString, network) {\n const decoded = wif.decode(wifString);\n const version = decoded.version;\n // list of networks?\n if (types.Array(network)) {\n network = network\n .filter(x => {\n return version === x.wif;\n })\n .pop();\n if (!network) throw new Error('Unknown network version');\n // otherwise, assume a network object (or default to bitcoin)\n } else {\n network = network || NETWORKS.bitcoin;\n if (version !== network.wif) throw new Error('Invalid network version');\n }\n return fromPrivateKey(decoded.privateKey, {\n compressed: decoded.compressed,\n network: network,\n });\n}\nexports.fromWIF = fromWIF;\nfunction makeRandom(options) {\n typeforce(isOptions, options);\n if (options === undefined) options = {};\n const rng = options.rng || randomBytes;\n let d;\n do {\n d = rng(32);\n typeforce(types.Buffer256bit, d);\n } while (!ecc.isPrivate(d));\n return fromPrivateKey(d, options);\n}\nexports.makeRandom = makeRandom;\n", "'use strict'\nvar Buffer = require('safe-buffer').Buffer\n\n// Number.MAX_SAFE_INTEGER\nvar MAX_SAFE_INTEGER = 9007199254740991\n\nfunction checkUInt53 (n) {\n if (n < 0 || n > MAX_SAFE_INTEGER || n % 1 !== 0) throw new RangeError('value out of range')\n}\n\nfunction encode (number, buffer, offset) {\n checkUInt53(number)\n\n if (!buffer) buffer = Buffer.allocUnsafe(encodingLength(number))\n if (!Buffer.isBuffer(buffer)) throw new TypeError('buffer must be a Buffer instance')\n if (!offset) offset = 0\n\n // 8 bit\n if (number < 0xfd) {\n buffer.writeUInt8(number, offset)\n encode.bytes = 1\n\n // 16 bit\n } else if (number <= 0xffff) {\n buffer.writeUInt8(0xfd, offset)\n buffer.writeUInt16LE(number, offset + 1)\n encode.bytes = 3\n\n // 32 bit\n } else if (number <= 0xffffffff) {\n buffer.writeUInt8(0xfe, offset)\n buffer.writeUInt32LE(number, offset + 1)\n encode.bytes = 5\n\n // 64 bit\n } else {\n buffer.writeUInt8(0xff, offset)\n buffer.writeUInt32LE(number >>> 0, offset + 1)\n buffer.writeUInt32LE((number / 0x100000000) | 0, offset + 5)\n encode.bytes = 9\n }\n\n return buffer\n}\n\nfunction decode (buffer, offset) {\n if (!Buffer.isBuffer(buffer)) throw new TypeError('buffer must be a Buffer instance')\n if (!offset) offset = 0\n\n var first = buffer.readUInt8(offset)\n\n // 8 bit\n if (first < 0xfd) {\n decode.bytes = 1\n return first\n\n // 16 bit\n } else if (first === 0xfd) {\n decode.bytes = 3\n return buffer.readUInt16LE(offset + 1)\n\n // 32 bit\n } else if (first === 0xfe) {\n decode.bytes = 5\n return buffer.readUInt32LE(offset + 1)\n\n // 64 bit\n } else {\n decode.bytes = 9\n var lo = buffer.readUInt32LE(offset + 1)\n var hi = buffer.readUInt32LE(offset + 5)\n var number = hi * 0x0100000000 + lo\n checkUInt53(number)\n\n return number\n }\n}\n\nfunction encodingLength (number) {\n checkUInt53(number)\n\n return (\n number < 0xfd ? 1\n : number <= 0xffff ? 3\n : number <= 0xffffffff ? 5\n : 9\n )\n}\n\nmodule.exports = { encode: encode, decode: decode, encodingLength: encodingLength }\n", "'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst types = require('./types');\nconst typeforce = require('typeforce');\nconst varuint = require('varuint-bitcoin');\n// https://github.com/feross/buffer/blob/master/index.js#L1127\nfunction verifuint(value, max) {\n if (typeof value !== 'number')\n throw new Error('cannot write a non-number as a number');\n if (value < 0)\n throw new Error('specified a negative value for writing an unsigned value');\n if (value > max) throw new Error('RangeError: value out of range');\n if (Math.floor(value) !== value)\n throw new Error('value has a fractional component');\n}\nfunction readUInt64LE(buffer, offset) {\n const a = buffer.readUInt32LE(offset);\n let b = buffer.readUInt32LE(offset + 4);\n b *= 0x100000000;\n verifuint(b + a, 0x001fffffffffffff);\n return b + a;\n}\nexports.readUInt64LE = readUInt64LE;\nfunction writeUInt64LE(buffer, value, offset) {\n verifuint(value, 0x001fffffffffffff);\n buffer.writeInt32LE(value & -1, offset);\n buffer.writeUInt32LE(Math.floor(value / 0x100000000), offset + 4);\n return offset + 8;\n}\nexports.writeUInt64LE = writeUInt64LE;\nfunction reverseBuffer(buffer) {\n if (buffer.length < 1) return buffer;\n let j = buffer.length - 1;\n let tmp = 0;\n for (let i = 0; i < buffer.length / 2; i++) {\n tmp = buffer[i];\n buffer[i] = buffer[j];\n buffer[j] = tmp;\n j--;\n }\n return buffer;\n}\nexports.reverseBuffer = reverseBuffer;\nfunction cloneBuffer(buffer) {\n const clone = Buffer.allocUnsafe(buffer.length);\n buffer.copy(clone);\n return clone;\n}\nexports.cloneBuffer = cloneBuffer;\n/**\n * Helper class for serialization of bitcoin data types into a pre-allocated buffer.\n */\nclass BufferWriter {\n constructor(buffer, offset = 0) {\n this.buffer = buffer;\n this.offset = offset;\n typeforce(types.tuple(types.Buffer, types.UInt32), [buffer, offset]);\n }\n writeUInt8(i) {\n this.offset = this.buffer.writeUInt8(i, this.offset);\n }\n writeInt32(i) {\n this.offset = this.buffer.writeInt32LE(i, this.offset);\n }\n writeUInt32(i) {\n this.offset = this.buffer.writeUInt32LE(i, this.offset);\n }\n writeUInt64(i) {\n this.offset = writeUInt64LE(this.buffer, i, this.offset);\n }\n writeVarInt(i) {\n varuint.encode(i, this.buffer, this.offset);\n this.offset += varuint.encode.bytes;\n }\n writeSlice(slice) {\n if (this.buffer.length < this.offset + slice.length) {\n throw new Error('Cannot write slice out of bounds');\n }\n this.offset += slice.copy(this.buffer, this.offset);\n }\n writeVarSlice(slice) {\n this.writeVarInt(slice.length);\n this.writeSlice(slice);\n }\n writeVector(vector) {\n this.writeVarInt(vector.length);\n vector.forEach(buf => this.writeVarSlice(buf));\n }\n}\nexports.BufferWriter = BufferWriter;\n/**\n * Helper class for reading of bitcoin data types from a buffer.\n */\nclass BufferReader {\n constructor(buffer, offset = 0) {\n this.buffer = buffer;\n this.offset = offset;\n typeforce(types.tuple(types.Buffer, types.UInt32), [buffer, offset]);\n }\n readUInt8() {\n const result = this.buffer.readUInt8(this.offset);\n this.offset++;\n return result;\n }\n readInt32() {\n const result = this.buffer.readInt32LE(this.offset);\n this.offset += 4;\n return result;\n }\n readUInt32() {\n const result = this.buffer.readUInt32LE(this.offset);\n this.offset += 4;\n return result;\n }\n readUInt64() {\n const result = readUInt64LE(this.buffer, this.offset);\n this.offset += 8;\n return result;\n }\n readVarInt() {\n const vi = varuint.decode(this.buffer, this.offset);\n this.offset += varuint.decode.bytes;\n return vi;\n }\n readSlice(n) {\n if (this.buffer.length < this.offset + n) {\n throw new Error('Cannot read slice out of bounds');\n }\n const result = this.buffer.slice(this.offset, this.offset + n);\n this.offset += n;\n return result;\n }\n readVarSlice() {\n return this.readSlice(this.readVarInt());\n }\n readVector() {\n const count = this.readVarInt();\n const vector = [];\n for (let i = 0; i < count; i++) vector.push(this.readVarSlice());\n return vector;\n }\n}\nexports.BufferReader = BufferReader;\n", "'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst bufferutils_1 = require('./bufferutils');\nconst bcrypto = require('./crypto');\nconst bscript = require('./script');\nconst script_1 = require('./script');\nconst types = require('./types');\nconst typeforce = require('typeforce');\nconst varuint = require('varuint-bitcoin');\nfunction varSliceSize(someScript) {\n const length = someScript.length;\n return varuint.encodingLength(length) + length;\n}\nfunction vectorSize(someVector) {\n const length = someVector.length;\n return (\n varuint.encodingLength(length) +\n someVector.reduce((sum, witness) => {\n return sum + varSliceSize(witness);\n }, 0)\n );\n}\nconst EMPTY_SCRIPT = Buffer.allocUnsafe(0);\nconst EMPTY_WITNESS = [];\nconst ZERO = Buffer.from(\n '0000000000000000000000000000000000000000000000000000000000000000',\n 'hex',\n);\nconst ONE = Buffer.from(\n '0000000000000000000000000000000000000000000000000000000000000001',\n 'hex',\n);\nconst VALUE_UINT64_MAX = Buffer.from('ffffffffffffffff', 'hex');\nconst BLANK_OUTPUT = {\n script: EMPTY_SCRIPT,\n valueBuffer: VALUE_UINT64_MAX,\n};\nfunction isOutput(out) {\n return out.value !== undefined;\n}\nclass Transaction {\n constructor() {\n this.version = 1;\n this.locktime = 0;\n this.ins = [];\n this.outs = [];\n }\n static fromBuffer(buffer, _NO_STRICT) {\n const bufferReader = new bufferutils_1.BufferReader(buffer);\n const tx = new Transaction();\n tx.version = bufferReader.readInt32();\n const marker = bufferReader.readUInt8();\n const flag = bufferReader.readUInt8();\n let hasWitnesses = false;\n if (\n marker === Transaction.ADVANCED_TRANSACTION_MARKER &&\n flag === Transaction.ADVANCED_TRANSACTION_FLAG\n ) {\n hasWitnesses = true;\n } else {\n bufferReader.offset -= 2;\n }\n const vinLen = bufferReader.readVarInt();\n for (let i = 0; i < vinLen; ++i) {\n tx.ins.push({\n hash: bufferReader.readSlice(32),\n index: bufferReader.readUInt32(),\n script: bufferReader.readVarSlice(),\n sequence: bufferReader.readUInt32(),\n witness: EMPTY_WITNESS,\n });\n }\n const voutLen = bufferReader.readVarInt();\n for (let i = 0; i < voutLen; ++i) {\n tx.outs.push({\n value: bufferReader.readUInt64(),\n script: bufferReader.readVarSlice(),\n });\n }\n if (hasWitnesses) {\n for (let i = 0; i < vinLen; ++i) {\n tx.ins[i].witness = bufferReader.readVector();\n }\n // was this pointless?\n if (!tx.hasWitnesses())\n throw new Error('Transaction has superfluous witness data');\n }\n tx.locktime = bufferReader.readUInt32();\n if (_NO_STRICT) return tx;\n if (bufferReader.offset !== buffer.length)\n throw new Error('Transaction has unexpected data');\n return tx;\n }\n static fromHex(hex) {\n return Transaction.fromBuffer(Buffer.from(hex, 'hex'), false);\n }\n static isCoinbaseHash(buffer) {\n typeforce(types.Hash256bit, buffer);\n for (let i = 0; i < 32; ++i) {\n if (buffer[i] !== 0) return false;\n }\n return true;\n }\n isCoinbase() {\n return (\n this.ins.length === 1 && Transaction.isCoinbaseHash(this.ins[0].hash)\n );\n }\n addInput(hash, index, sequence, scriptSig) {\n typeforce(\n types.tuple(\n types.Hash256bit,\n types.UInt32,\n types.maybe(types.UInt32),\n types.maybe(types.Buffer),\n ),\n arguments,\n );\n if (types.Null(sequence)) {\n sequence = Transaction.DEFAULT_SEQUENCE;\n }\n // Add the input and return the input's index\n return (\n this.ins.push({\n hash,\n index,\n script: scriptSig || EMPTY_SCRIPT,\n sequence: sequence,\n witness: EMPTY_WITNESS,\n }) - 1\n );\n }\n addOutput(scriptPubKey, value) {\n typeforce(types.tuple(types.Buffer, types.Satoshi), arguments);\n // Add the output and return the output's index\n return (\n this.outs.push({\n script: scriptPubKey,\n value,\n }) - 1\n );\n }\n hasWitnesses() {\n return this.ins.some(x => {\n return x.witness.length !== 0;\n });\n }\n weight() {\n const base = this.byteLength(false);\n const total = this.byteLength(true);\n return base * 3 + total;\n }\n virtualSize() {\n return Math.ceil(this.weight() / 4);\n }\n byteLength(_ALLOW_WITNESS = true) {\n const hasWitnesses = _ALLOW_WITNESS && this.hasWitnesses();\n return (\n (hasWitnesses ? 10 : 8) +\n varuint.encodingLength(this.ins.length) +\n varuint.encodingLength(this.outs.length) +\n this.ins.reduce((sum, input) => {\n return sum + 40 + varSliceSize(input.script);\n }, 0) +\n this.outs.reduce((sum, output) => {\n return sum + 8 + varSliceSize(output.script);\n }, 0) +\n (hasWitnesses\n ? this.ins.reduce((sum, input) => {\n return sum + vectorSize(input.witness);\n }, 0)\n : 0)\n );\n }\n clone() {\n const newTx = new Transaction();\n newTx.version = this.version;\n newTx.locktime = this.locktime;\n newTx.ins = this.ins.map(txIn => {\n return {\n hash: txIn.hash,\n index: txIn.index,\n script: txIn.script,\n sequence: txIn.sequence,\n witness: txIn.witness,\n };\n });\n newTx.outs = this.outs.map(txOut => {\n return {\n script: txOut.script,\n value: txOut.value,\n };\n });\n return newTx;\n }\n /**\n * Hash transaction for signing a specific input.\n *\n * Bitcoin uses a different hash for each signed transaction input.\n * This method copies the transaction, makes the necessary changes based on the\n * hashType, and then hashes the result.\n * This hash can then be used to sign the provided transaction input.\n */\n hashForSignature(inIndex, prevOutScript, hashType) {\n typeforce(\n types.tuple(types.UInt32, types.Buffer, /* types.UInt8 */ types.Number),\n arguments,\n );\n // https://github.com/bitcoin/bitcoin/blob/master/src/test/sighash_tests.cpp#L29\n if (inIndex >= this.ins.length) return ONE;\n // ignore OP_CODESEPARATOR\n const ourScript = bscript.compile(\n bscript.decompile(prevOutScript).filter(x => {\n return x !== script_1.OPS.OP_CODESEPARATOR;\n }),\n );\n const txTmp = this.clone();\n // SIGHASH_NONE: ignore all outputs? (wildcard payee)\n if ((hashType & 0x1f) === Transaction.SIGHASH_NONE) {\n txTmp.outs = [];\n // ignore sequence numbers (except at inIndex)\n txTmp.ins.forEach((input, i) => {\n if (i === inIndex) return;\n input.sequence = 0;\n });\n // SIGHASH_SINGLE: ignore all outputs, except at the same index?\n } else if ((hashType & 0x1f) === Transaction.SIGHASH_SINGLE) {\n // https://github.com/bitcoin/bitcoin/blob/master/src/test/sighash_tests.cpp#L60\n if (inIndex >= this.outs.length) return ONE;\n // truncate outputs after\n txTmp.outs.length = inIndex + 1;\n // \"blank\" outputs before\n for (let i = 0; i < inIndex; i++) {\n txTmp.outs[i] = BLANK_OUTPUT;\n }\n // ignore sequence numbers (except at inIndex)\n txTmp.ins.forEach((input, y) => {\n if (y === inIndex) return;\n input.sequence = 0;\n });\n }\n // SIGHASH_ANYONECANPAY: ignore inputs entirely?\n if (hashType & Transaction.SIGHASH_ANYONECANPAY) {\n txTmp.ins = [txTmp.ins[inIndex]];\n txTmp.ins[0].script = ourScript;\n // SIGHASH_ALL: only ignore input scripts\n } else {\n // \"blank\" others input scripts\n txTmp.ins.forEach(input => {\n input.script = EMPTY_SCRIPT;\n });\n txTmp.ins[inIndex].script = ourScript;\n }\n // serialize and hash\n const buffer = Buffer.allocUnsafe(txTmp.byteLength(false) + 4);\n buffer.writeInt32LE(hashType, buffer.length - 4);\n txTmp.__toBuffer(buffer, 0, false);\n return bcrypto.hash256(buffer);\n }\n hashForWitnessV0(inIndex, prevOutScript, value, hashType) {\n typeforce(\n types.tuple(types.UInt32, types.Buffer, types.Satoshi, types.UInt32),\n arguments,\n );\n let tbuffer = Buffer.from([]);\n let bufferWriter;\n let hashOutputs = ZERO;\n let hashPrevouts = ZERO;\n let hashSequence = ZERO;\n if (!(hashType & Transaction.SIGHASH_ANYONECANPAY)) {\n tbuffer = Buffer.allocUnsafe(36 * this.ins.length);\n bufferWriter = new bufferutils_1.BufferWriter(tbuffer, 0);\n this.ins.forEach(txIn => {\n bufferWriter.writeSlice(txIn.hash);\n bufferWriter.writeUInt32(txIn.index);\n });\n hashPrevouts = bcrypto.hash256(tbuffer);\n }\n if (\n !(hashType & Transaction.SIGHASH_ANYONECANPAY) &&\n (hashType & 0x1f) !== Transaction.SIGHASH_SINGLE &&\n (hashType & 0x1f) !== Transaction.SIGHASH_NONE\n ) {\n tbuffer = Buffer.allocUnsafe(4 * this.ins.length);\n bufferWriter = new bufferutils_1.BufferWriter(tbuffer, 0);\n this.ins.forEach(txIn => {\n bufferWriter.writeUInt32(txIn.sequence);\n });\n hashSequence = bcrypto.hash256(tbuffer);\n }\n if (\n (hashType & 0x1f) !== Transaction.SIGHASH_SINGLE &&\n (hashType & 0x1f) !== Transaction.SIGHASH_NONE\n ) {\n const txOutsSize = this.outs.reduce((sum, output) => {\n return sum + 8 + varSliceSize(output.script);\n }, 0);\n tbuffer = Buffer.allocUnsafe(txOutsSize);\n bufferWriter = new bufferutils_1.BufferWriter(tbuffer, 0);\n this.outs.forEach(out => {\n bufferWriter.writeUInt64(out.value);\n bufferWriter.writeVarSlice(out.script);\n });\n hashOutputs = bcrypto.hash256(tbuffer);\n } else if (\n (hashType & 0x1f) === Transaction.SIGHASH_SINGLE &&\n inIndex < this.outs.length\n ) {\n const output = this.outs[inIndex];\n tbuffer = Buffer.allocUnsafe(8 + varSliceSize(output.script));\n bufferWriter = new bufferutils_1.BufferWriter(tbuffer, 0);\n bufferWriter.writeUInt64(output.value);\n bufferWriter.writeVarSlice(output.script);\n hashOutputs = bcrypto.hash256(tbuffer);\n }\n tbuffer = Buffer.allocUnsafe(156 + varSliceSize(prevOutScript));\n bufferWriter = new bufferutils_1.BufferWriter(tbuffer, 0);\n const input = this.ins[inIndex];\n bufferWriter.writeUInt32(this.version);\n bufferWriter.writeSlice(hashPrevouts);\n bufferWriter.writeSlice(hashSequence);\n bufferWriter.writeSlice(input.hash);\n bufferWriter.writeUInt32(input.index);\n bufferWriter.writeVarSlice(prevOutScript);\n bufferWriter.writeUInt64(value);\n bufferWriter.writeUInt32(input.sequence);\n bufferWriter.writeSlice(hashOutputs);\n bufferWriter.writeUInt32(this.locktime);\n bufferWriter.writeUInt32(hashType);\n return bcrypto.hash256(tbuffer);\n }\n getHash(forWitness) {\n // wtxid for coinbase is always 32 bytes of 0x00\n if (forWitness && this.isCoinbase()) return Buffer.alloc(32, 0);\n return bcrypto.hash256(this.__toBuffer(undefined, undefined, forWitness));\n }\n getId() {\n // transaction hash's are displayed in reverse order\n return bufferutils_1.reverseBuffer(this.getHash(false)).toString('hex');\n }\n toBuffer(buffer, initialOffset) {\n return this.__toBuffer(buffer, initialOffset, true);\n }\n toHex() {\n return this.toBuffer(undefined, undefined).toString('hex');\n }\n setInputScript(index, scriptSig) {\n typeforce(types.tuple(types.Number, types.Buffer), arguments);\n this.ins[index].script = scriptSig;\n }\n setWitness(index, witness) {\n typeforce(types.tuple(types.Number, [types.Buffer]), arguments);\n this.ins[index].witness = witness;\n }\n __toBuffer(buffer, initialOffset, _ALLOW_WITNESS = false) {\n if (!buffer) buffer = Buffer.allocUnsafe(this.byteLength(_ALLOW_WITNESS));\n const bufferWriter = new bufferutils_1.BufferWriter(\n buffer,\n initialOffset || 0,\n );\n bufferWriter.writeInt32(this.version);\n const hasWitnesses = _ALLOW_WITNESS && this.hasWitnesses();\n if (hasWitnesses) {\n bufferWriter.writeUInt8(Transaction.ADVANCED_TRANSACTION_MARKER);\n bufferWriter.writeUInt8(Transaction.ADVANCED_TRANSACTION_FLAG);\n }\n bufferWriter.writeVarInt(this.ins.length);\n this.ins.forEach(txIn => {\n bufferWriter.writeSlice(txIn.hash);\n bufferWriter.writeUInt32(txIn.index);\n bufferWriter.writeVarSlice(txIn.script);\n bufferWriter.writeUInt32(txIn.sequence);\n });\n bufferWriter.writeVarInt(this.outs.length);\n this.outs.forEach(txOut => {\n if (isOutput(txOut)) {\n bufferWriter.writeUInt64(txOut.value);\n } else {\n bufferWriter.writeSlice(txOut.valueBuffer);\n }\n bufferWriter.writeVarSlice(txOut.script);\n });\n if (hasWitnesses) {\n this.ins.forEach(input => {\n bufferWriter.writeVector(input.witness);\n });\n }\n bufferWriter.writeUInt32(this.locktime);\n // avoid slicing unless necessary\n if (initialOffset !== undefined)\n return buffer.slice(initialOffset, bufferWriter.offset);\n return buffer;\n }\n}\nTransaction.DEFAULT_SEQUENCE = 0xffffffff;\nTransaction.SIGHASH_ALL = 0x01;\nTransaction.SIGHASH_NONE = 0x02;\nTransaction.SIGHASH_SINGLE = 0x03;\nTransaction.SIGHASH_ANYONECANPAY = 0x80;\nTransaction.ADVANCED_TRANSACTION_MARKER = 0x00;\nTransaction.ADVANCED_TRANSACTION_FLAG = 0x01;\nexports.Transaction = Transaction;\n", "// constant-space merkle root calculation algorithm\nmodule.exports = function fastRoot (values, digestFn) {\n if (!Array.isArray(values)) throw TypeError('Expected values Array')\n if (typeof digestFn !== 'function') throw TypeError('Expected digest Function')\n\n var length = values.length\n var results = values.concat()\n\n while (length > 1) {\n var j = 0\n\n for (var i = 0; i < length; i += 2, ++j) {\n var left = results[i]\n var right = i + 1 === length ? left : results[i + 1]\n var data = Buffer.concat([left, right])\n\n results[j] = digestFn(data)\n }\n\n length = j\n }\n\n return results[0]\n}\n", "'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst bufferutils_1 = require('./bufferutils');\nconst bcrypto = require('./crypto');\nconst transaction_1 = require('./transaction');\nconst types = require('./types');\nconst fastMerkleRoot = require('merkle-lib/fastRoot');\nconst typeforce = require('typeforce');\nconst varuint = require('varuint-bitcoin');\nconst errorMerkleNoTxes = new TypeError(\n 'Cannot compute merkle root for zero transactions',\n);\nconst errorWitnessNotSegwit = new TypeError(\n 'Cannot compute witness commit for non-segwit block',\n);\nclass Block {\n constructor() {\n this.version = 1;\n this.prevHash = undefined;\n this.merkleRoot = undefined;\n this.timestamp = 0;\n this.witnessCommit = undefined;\n this.bits = 0;\n this.nonce = 0;\n this.transactions = undefined;\n }\n static fromBuffer(buffer) {\n if (buffer.length < 80) throw new Error('Buffer too small (< 80 bytes)');\n const bufferReader = new bufferutils_1.BufferReader(buffer);\n const block = new Block();\n block.version = bufferReader.readInt32();\n block.prevHash = bufferReader.readSlice(32);\n block.merkleRoot = bufferReader.readSlice(32);\n block.timestamp = bufferReader.readUInt32();\n block.bits = bufferReader.readUInt32();\n block.nonce = bufferReader.readUInt32();\n if (buffer.length === 80) return block;\n const readTransaction = () => {\n const tx = transaction_1.Transaction.fromBuffer(\n bufferReader.buffer.slice(bufferReader.offset),\n true,\n );\n bufferReader.offset += tx.byteLength();\n return tx;\n };\n const nTransactions = bufferReader.readVarInt();\n block.transactions = [];\n for (let i = 0; i < nTransactions; ++i) {\n const tx = readTransaction();\n block.transactions.push(tx);\n }\n const witnessCommit = block.getWitnessCommit();\n // This Block contains a witness commit\n if (witnessCommit) block.witnessCommit = witnessCommit;\n return block;\n }\n static fromHex(hex) {\n return Block.fromBuffer(Buffer.from(hex, 'hex'));\n }\n static calculateTarget(bits) {\n const exponent = ((bits & 0xff000000) >> 24) - 3;\n const mantissa = bits & 0x007fffff;\n const target = Buffer.alloc(32, 0);\n target.writeUIntBE(mantissa, 29 - exponent, 3);\n return target;\n }\n static calculateMerkleRoot(transactions, forWitness) {\n typeforce([{ getHash: types.Function }], transactions);\n if (transactions.length === 0) throw errorMerkleNoTxes;\n if (forWitness && !txesHaveWitnessCommit(transactions))\n throw errorWitnessNotSegwit;\n const hashes = transactions.map(transaction =>\n transaction.getHash(forWitness),\n );\n const rootHash = fastMerkleRoot(hashes, bcrypto.hash256);\n return forWitness\n ? bcrypto.hash256(\n Buffer.concat([rootHash, transactions[0].ins[0].witness[0]]),\n )\n : rootHash;\n }\n getWitnessCommit() {\n if (!txesHaveWitnessCommit(this.transactions)) return null;\n // The merkle root for the witness data is in an OP_RETURN output.\n // There is no rule for the index of the output, so use filter to find it.\n // The root is prepended with 0xaa21a9ed so check for 0x6a24aa21a9ed\n // If multiple commits are found, the output with highest index is assumed.\n const witnessCommits = this.transactions[0].outs\n .filter(out =>\n out.script.slice(0, 6).equals(Buffer.from('6a24aa21a9ed', 'hex')),\n )\n .map(out => out.script.slice(6, 38));\n if (witnessCommits.length === 0) return null;\n // Use the commit with the highest output (should only be one though)\n const result = witnessCommits[witnessCommits.length - 1];\n if (!(result instanceof Buffer && result.length === 32)) return null;\n return result;\n }\n hasWitnessCommit() {\n if (\n this.witnessCommit instanceof Buffer &&\n this.witnessCommit.length === 32\n )\n return true;\n if (this.getWitnessCommit() !== null) return true;\n return false;\n }\n hasWitness() {\n return anyTxHasWitness(this.transactions);\n }\n weight() {\n const base = this.byteLength(false, false);\n const total = this.byteLength(false, true);\n return base * 3 + total;\n }\n byteLength(headersOnly, allowWitness = true) {\n if (headersOnly || !this.transactions) return 80;\n return (\n 80 +\n varuint.encodingLength(this.transactions.length) +\n this.transactions.reduce((a, x) => a + x.byteLength(allowWitness), 0)\n );\n }\n getHash() {\n return bcrypto.hash256(this.toBuffer(true));\n }\n getId() {\n return bufferutils_1.reverseBuffer(this.getHash()).toString('hex');\n }\n getUTCDate() {\n const date = new Date(0); // epoch\n date.setUTCSeconds(this.timestamp);\n return date;\n }\n // TODO: buffer, offset compatibility\n toBuffer(headersOnly) {\n const buffer = Buffer.allocUnsafe(this.byteLength(headersOnly));\n const bufferWriter = new bufferutils_1.BufferWriter(buffer);\n bufferWriter.writeInt32(this.version);\n bufferWriter.writeSlice(this.prevHash);\n bufferWriter.writeSlice(this.merkleRoot);\n bufferWriter.writeUInt32(this.timestamp);\n bufferWriter.writeUInt32(this.bits);\n bufferWriter.writeUInt32(this.nonce);\n if (headersOnly || !this.transactions) return buffer;\n varuint.encode(this.transactions.length, buffer, bufferWriter.offset);\n bufferWriter.offset += varuint.encode.bytes;\n this.transactions.forEach(tx => {\n const txSize = tx.byteLength(); // TODO: extract from toBuffer?\n tx.toBuffer(buffer, bufferWriter.offset);\n bufferWriter.offset += txSize;\n });\n return buffer;\n }\n toHex(headersOnly) {\n return this.toBuffer(headersOnly).toString('hex');\n }\n checkTxRoots() {\n // If the Block has segwit transactions but no witness commit,\n // there's no way it can be valid, so fail the check.\n const hasWitnessCommit = this.hasWitnessCommit();\n if (!hasWitnessCommit && this.hasWitness()) return false;\n return (\n this.__checkMerkleRoot() &&\n (hasWitnessCommit ? this.__checkWitnessCommit() : true)\n );\n }\n checkProofOfWork() {\n const hash = bufferutils_1.reverseBuffer(this.getHash());\n const target = Block.calculateTarget(this.bits);\n return hash.compare(target) <= 0;\n }\n __checkMerkleRoot() {\n if (!this.transactions) throw errorMerkleNoTxes;\n const actualMerkleRoot = Block.calculateMerkleRoot(this.transactions);\n return this.merkleRoot.compare(actualMerkleRoot) === 0;\n }\n __checkWitnessCommit() {\n if (!this.transactions) throw errorMerkleNoTxes;\n if (!this.hasWitnessCommit()) throw errorWitnessNotSegwit;\n const actualWitnessCommit = Block.calculateMerkleRoot(\n this.transactions,\n true,\n );\n return this.witnessCommit.compare(actualWitnessCommit) === 0;\n }\n}\nexports.Block = Block;\nfunction txesHaveWitnessCommit(transactions) {\n return (\n transactions instanceof Array &&\n transactions[0] &&\n transactions[0].ins &&\n transactions[0].ins instanceof Array &&\n transactions[0].ins[0] &&\n transactions[0].ins[0].witness &&\n transactions[0].ins[0].witness instanceof Array &&\n transactions[0].ins[0].witness.length > 0\n );\n}\nfunction anyTxHasWitness(transactions) {\n return (\n transactions instanceof Array &&\n transactions.some(\n tx =>\n typeof tx === 'object' &&\n tx.ins instanceof Array &&\n tx.ins.some(\n input =>\n typeof input === 'object' &&\n input.witness instanceof Array &&\n input.witness.length > 0,\n ),\n )\n );\n}\n", "'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nvar GlobalTypes;\n(function(GlobalTypes) {\n GlobalTypes[(GlobalTypes['UNSIGNED_TX'] = 0)] = 'UNSIGNED_TX';\n GlobalTypes[(GlobalTypes['GLOBAL_XPUB'] = 1)] = 'GLOBAL_XPUB';\n})((GlobalTypes = exports.GlobalTypes || (exports.GlobalTypes = {})));\nexports.GLOBAL_TYPE_NAMES = ['unsignedTx', 'globalXpub'];\nvar InputTypes;\n(function(InputTypes) {\n InputTypes[(InputTypes['NON_WITNESS_UTXO'] = 0)] = 'NON_WITNESS_UTXO';\n InputTypes[(InputTypes['WITNESS_UTXO'] = 1)] = 'WITNESS_UTXO';\n InputTypes[(InputTypes['PARTIAL_SIG'] = 2)] = 'PARTIAL_SIG';\n InputTypes[(InputTypes['SIGHASH_TYPE'] = 3)] = 'SIGHASH_TYPE';\n InputTypes[(InputTypes['REDEEM_SCRIPT'] = 4)] = 'REDEEM_SCRIPT';\n InputTypes[(InputTypes['WITNESS_SCRIPT'] = 5)] = 'WITNESS_SCRIPT';\n InputTypes[(InputTypes['BIP32_DERIVATION'] = 6)] = 'BIP32_DERIVATION';\n InputTypes[(InputTypes['FINAL_SCRIPTSIG'] = 7)] = 'FINAL_SCRIPTSIG';\n InputTypes[(InputTypes['FINAL_SCRIPTWITNESS'] = 8)] = 'FINAL_SCRIPTWITNESS';\n InputTypes[(InputTypes['POR_COMMITMENT'] = 9)] = 'POR_COMMITMENT';\n InputTypes[(InputTypes['TAP_KEY_SIG'] = 19)] = 'TAP_KEY_SIG';\n InputTypes[(InputTypes['TAP_SCRIPT_SIG'] = 20)] = 'TAP_SCRIPT_SIG';\n InputTypes[(InputTypes['TAP_LEAF_SCRIPT'] = 21)] = 'TAP_LEAF_SCRIPT';\n InputTypes[(InputTypes['TAP_BIP32_DERIVATION'] = 22)] =\n 'TAP_BIP32_DERIVATION';\n InputTypes[(InputTypes['TAP_INTERNAL_KEY'] = 23)] = 'TAP_INTERNAL_KEY';\n InputTypes[(InputTypes['TAP_MERKLE_ROOT'] = 24)] = 'TAP_MERKLE_ROOT';\n})((InputTypes = exports.InputTypes || (exports.InputTypes = {})));\nexports.INPUT_TYPE_NAMES = [\n 'nonWitnessUtxo',\n 'witnessUtxo',\n 'partialSig',\n 'sighashType',\n 'redeemScript',\n 'witnessScript',\n 'bip32Derivation',\n 'finalScriptSig',\n 'finalScriptWitness',\n 'porCommitment',\n 'tapKeySig',\n 'tapScriptSig',\n 'tapLeafScript',\n 'tapBip32Derivation',\n 'tapInternalKey',\n 'tapMerkleRoot',\n];\nvar OutputTypes;\n(function(OutputTypes) {\n OutputTypes[(OutputTypes['REDEEM_SCRIPT'] = 0)] = 'REDEEM_SCRIPT';\n OutputTypes[(OutputTypes['WITNESS_SCRIPT'] = 1)] = 'WITNESS_SCRIPT';\n OutputTypes[(OutputTypes['BIP32_DERIVATION'] = 2)] = 'BIP32_DERIVATION';\n OutputTypes[(OutputTypes['TAP_INTERNAL_KEY'] = 5)] = 'TAP_INTERNAL_KEY';\n OutputTypes[(OutputTypes['TAP_TREE'] = 6)] = 'TAP_TREE';\n OutputTypes[(OutputTypes['TAP_BIP32_DERIVATION'] = 7)] =\n 'TAP_BIP32_DERIVATION';\n})((OutputTypes = exports.OutputTypes || (exports.OutputTypes = {})));\nexports.OUTPUT_TYPE_NAMES = [\n 'redeemScript',\n 'witnessScript',\n 'bip32Derivation',\n 'tapInternalKey',\n 'tapTree',\n 'tapBip32Derivation',\n];\n", "'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst typeFields_1 = require('../../typeFields');\nconst range = n => [...Array(n).keys()];\nfunction decode(keyVal) {\n if (keyVal.key[0] !== typeFields_1.GlobalTypes.GLOBAL_XPUB) {\n throw new Error(\n 'Decode Error: could not decode globalXpub with key 0x' +\n keyVal.key.toString('hex'),\n );\n }\n if (keyVal.key.length !== 79 || ![2, 3].includes(keyVal.key[46])) {\n throw new Error(\n 'Decode Error: globalXpub has invalid extended pubkey in key 0x' +\n keyVal.key.toString('hex'),\n );\n }\n if ((keyVal.value.length / 4) % 1 !== 0) {\n throw new Error(\n 'Decode Error: Global GLOBAL_XPUB value length should be multiple of 4',\n );\n }\n const extendedPubkey = keyVal.key.slice(1);\n const data = {\n masterFingerprint: keyVal.value.slice(0, 4),\n extendedPubkey,\n path: 'm',\n };\n for (const i of range(keyVal.value.length / 4 - 1)) {\n const val = keyVal.value.readUInt32LE(i * 4 + 4);\n const isHard = !!(val & 0x80000000);\n const idx = val & 0x7fffffff;\n data.path += '/' + idx.toString(10) + (isHard ? \"'\" : '');\n }\n return data;\n}\nexports.decode = decode;\nfunction encode(data) {\n const head = Buffer.from([typeFields_1.GlobalTypes.GLOBAL_XPUB]);\n const key = Buffer.concat([head, data.extendedPubkey]);\n const splitPath = data.path.split('/');\n const value = Buffer.allocUnsafe(splitPath.length * 4);\n data.masterFingerprint.copy(value, 0);\n let offset = 4;\n splitPath.slice(1).forEach(level => {\n const isHard = level.slice(-1) === \"'\";\n let num = 0x7fffffff & parseInt(isHard ? level.slice(0, -1) : level, 10);\n if (isHard) num += 0x80000000;\n value.writeUInt32LE(num, offset);\n offset += 4;\n });\n return {\n key,\n value,\n };\n}\nexports.encode = encode;\nexports.expected =\n '{ masterFingerprint: Buffer; extendedPubkey: Buffer; path: string; }';\nfunction check(data) {\n const epk = data.extendedPubkey;\n const mfp = data.masterFingerprint;\n const p = data.path;\n return (\n Buffer.isBuffer(epk) &&\n epk.length === 78 &&\n [2, 3].indexOf(epk[45]) > -1 &&\n Buffer.isBuffer(mfp) &&\n mfp.length === 4 &&\n typeof p === 'string' &&\n !!p.match(/^m(\\/\\d+'?)*$/)\n );\n}\nexports.check = check;\nfunction canAddToArray(array, item, dupeSet) {\n const dupeString = item.extendedPubkey.toString('hex');\n if (dupeSet.has(dupeString)) return false;\n dupeSet.add(dupeString);\n return (\n array.filter(v => v.extendedPubkey.equals(item.extendedPubkey)).length === 0\n );\n}\nexports.canAddToArray = canAddToArray;\n", "'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst typeFields_1 = require('../../typeFields');\nfunction encode(data) {\n return {\n key: Buffer.from([typeFields_1.GlobalTypes.UNSIGNED_TX]),\n value: data.toBuffer(),\n };\n}\nexports.encode = encode;\n", "'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst typeFields_1 = require('../../typeFields');\nfunction decode(keyVal) {\n if (keyVal.key[0] !== typeFields_1.InputTypes.FINAL_SCRIPTSIG) {\n throw new Error(\n 'Decode Error: could not decode finalScriptSig with key 0x' +\n keyVal.key.toString('hex'),\n );\n }\n return keyVal.value;\n}\nexports.decode = decode;\nfunction encode(data) {\n const key = Buffer.from([typeFields_1.InputTypes.FINAL_SCRIPTSIG]);\n return {\n key,\n value: data,\n };\n}\nexports.encode = encode;\nexports.expected = 'Buffer';\nfunction check(data) {\n return Buffer.isBuffer(data);\n}\nexports.check = check;\nfunction canAdd(currentData, newData) {\n return !!currentData && !!newData && currentData.finalScriptSig === undefined;\n}\nexports.canAdd = canAdd;\n", "'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst typeFields_1 = require('../../typeFields');\nfunction decode(keyVal) {\n if (keyVal.key[0] !== typeFields_1.InputTypes.FINAL_SCRIPTWITNESS) {\n throw new Error(\n 'Decode Error: could not decode finalScriptWitness with key 0x' +\n keyVal.key.toString('hex'),\n );\n }\n return keyVal.value;\n}\nexports.decode = decode;\nfunction encode(data) {\n const key = Buffer.from([typeFields_1.InputTypes.FINAL_SCRIPTWITNESS]);\n return {\n key,\n value: data,\n };\n}\nexports.encode = encode;\nexports.expected = 'Buffer';\nfunction check(data) {\n return Buffer.isBuffer(data);\n}\nexports.check = check;\nfunction canAdd(currentData, newData) {\n return (\n !!currentData && !!newData && currentData.finalScriptWitness === undefined\n );\n}\nexports.canAdd = canAdd;\n", "'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst typeFields_1 = require('../../typeFields');\nfunction decode(keyVal) {\n if (keyVal.key[0] !== typeFields_1.InputTypes.NON_WITNESS_UTXO) {\n throw new Error(\n 'Decode Error: could not decode nonWitnessUtxo with key 0x' +\n keyVal.key.toString('hex'),\n );\n }\n return keyVal.value;\n}\nexports.decode = decode;\nfunction encode(data) {\n return {\n key: Buffer.from([typeFields_1.InputTypes.NON_WITNESS_UTXO]),\n value: data,\n };\n}\nexports.encode = encode;\nexports.expected = 'Buffer';\nfunction check(data) {\n return Buffer.isBuffer(data);\n}\nexports.check = check;\nfunction canAdd(currentData, newData) {\n return !!currentData && !!newData && currentData.nonWitnessUtxo === undefined;\n}\nexports.canAdd = canAdd;\n", "'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst typeFields_1 = require('../../typeFields');\nfunction decode(keyVal) {\n if (keyVal.key[0] !== typeFields_1.InputTypes.PARTIAL_SIG) {\n throw new Error(\n 'Decode Error: could not decode partialSig with key 0x' +\n keyVal.key.toString('hex'),\n );\n }\n if (\n !(keyVal.key.length === 34 || keyVal.key.length === 66) ||\n ![2, 3, 4].includes(keyVal.key[1])\n ) {\n throw new Error(\n 'Decode Error: partialSig has invalid pubkey in key 0x' +\n keyVal.key.toString('hex'),\n );\n }\n const pubkey = keyVal.key.slice(1);\n return {\n pubkey,\n signature: keyVal.value,\n };\n}\nexports.decode = decode;\nfunction encode(pSig) {\n const head = Buffer.from([typeFields_1.InputTypes.PARTIAL_SIG]);\n return {\n key: Buffer.concat([head, pSig.pubkey]),\n value: pSig.signature,\n };\n}\nexports.encode = encode;\nexports.expected = '{ pubkey: Buffer; signature: Buffer; }';\nfunction check(data) {\n return (\n Buffer.isBuffer(data.pubkey) &&\n Buffer.isBuffer(data.signature) &&\n [33, 65].includes(data.pubkey.length) &&\n [2, 3, 4].includes(data.pubkey[0]) &&\n isDerSigWithSighash(data.signature)\n );\n}\nexports.check = check;\nfunction isDerSigWithSighash(buf) {\n if (!Buffer.isBuffer(buf) || buf.length < 9) return false;\n if (buf[0] !== 0x30) return false;\n if (buf.length !== buf[1] + 3) return false;\n if (buf[2] !== 0x02) return false;\n const rLen = buf[3];\n if (rLen > 33 || rLen < 1) return false;\n if (buf[3 + rLen + 1] !== 0x02) return false;\n const sLen = buf[3 + rLen + 2];\n if (sLen > 33 || sLen < 1) return false;\n if (buf.length !== 3 + rLen + 2 + sLen + 2) return false;\n return true;\n}\nfunction canAddToArray(array, item, dupeSet) {\n const dupeString = item.pubkey.toString('hex');\n if (dupeSet.has(dupeString)) return false;\n dupeSet.add(dupeString);\n return array.filter(v => v.pubkey.equals(item.pubkey)).length === 0;\n}\nexports.canAddToArray = canAddToArray;\n", "'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst typeFields_1 = require('../../typeFields');\nfunction decode(keyVal) {\n if (keyVal.key[0] !== typeFields_1.InputTypes.POR_COMMITMENT) {\n throw new Error(\n 'Decode Error: could not decode porCommitment with key 0x' +\n keyVal.key.toString('hex'),\n );\n }\n return keyVal.value.toString('utf8');\n}\nexports.decode = decode;\nfunction encode(data) {\n const key = Buffer.from([typeFields_1.InputTypes.POR_COMMITMENT]);\n return {\n key,\n value: Buffer.from(data, 'utf8'),\n };\n}\nexports.encode = encode;\nexports.expected = 'string';\nfunction check(data) {\n return typeof data === 'string';\n}\nexports.check = check;\nfunction canAdd(currentData, newData) {\n return !!currentData && !!newData && currentData.porCommitment === undefined;\n}\nexports.canAdd = canAdd;\n", "'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst typeFields_1 = require('../../typeFields');\nfunction decode(keyVal) {\n if (keyVal.key[0] !== typeFields_1.InputTypes.SIGHASH_TYPE) {\n throw new Error(\n 'Decode Error: could not decode sighashType with key 0x' +\n keyVal.key.toString('hex'),\n );\n }\n return keyVal.value.readUInt32LE(0);\n}\nexports.decode = decode;\nfunction encode(data) {\n const key = Buffer.from([typeFields_1.InputTypes.SIGHASH_TYPE]);\n const value = Buffer.allocUnsafe(4);\n value.writeUInt32LE(data, 0);\n return {\n key,\n value,\n };\n}\nexports.encode = encode;\nexports.expected = 'number';\nfunction check(data) {\n return typeof data === 'number';\n}\nexports.check = check;\nfunction canAdd(currentData, newData) {\n return !!currentData && !!newData && currentData.sighashType === undefined;\n}\nexports.canAdd = canAdd;\n", "'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst typeFields_1 = require('../../typeFields');\nfunction decode(keyVal) {\n if (\n keyVal.key[0] !== typeFields_1.InputTypes.TAP_KEY_SIG ||\n keyVal.key.length !== 1\n ) {\n throw new Error(\n 'Decode Error: could not decode tapKeySig with key 0x' +\n keyVal.key.toString('hex'),\n );\n }\n if (!check(keyVal.value)) {\n throw new Error(\n 'Decode Error: tapKeySig not a valid 64-65-byte BIP340 signature',\n );\n }\n return keyVal.value;\n}\nexports.decode = decode;\nfunction encode(value) {\n const key = Buffer.from([typeFields_1.InputTypes.TAP_KEY_SIG]);\n return { key, value };\n}\nexports.encode = encode;\nexports.expected = 'Buffer';\nfunction check(data) {\n return Buffer.isBuffer(data) && (data.length === 64 || data.length === 65);\n}\nexports.check = check;\nfunction canAdd(currentData, newData) {\n return !!currentData && !!newData && currentData.tapKeySig === undefined;\n}\nexports.canAdd = canAdd;\n", "'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst typeFields_1 = require('../../typeFields');\nfunction decode(keyVal) {\n if (keyVal.key[0] !== typeFields_1.InputTypes.TAP_LEAF_SCRIPT) {\n throw new Error(\n 'Decode Error: could not decode tapLeafScript with key 0x' +\n keyVal.key.toString('hex'),\n );\n }\n if ((keyVal.key.length - 2) % 32 !== 0) {\n throw new Error(\n 'Decode Error: tapLeafScript has invalid control block in key 0x' +\n keyVal.key.toString('hex'),\n );\n }\n const leafVersion = keyVal.value[keyVal.value.length - 1];\n if ((keyVal.key[1] & 0xfe) !== leafVersion) {\n throw new Error(\n 'Decode Error: tapLeafScript bad leaf version in key 0x' +\n keyVal.key.toString('hex'),\n );\n }\n const script = keyVal.value.slice(0, -1);\n const controlBlock = keyVal.key.slice(1);\n return { controlBlock, script, leafVersion };\n}\nexports.decode = decode;\nfunction encode(tScript) {\n const head = Buffer.from([typeFields_1.InputTypes.TAP_LEAF_SCRIPT]);\n const verBuf = Buffer.from([tScript.leafVersion]);\n return {\n key: Buffer.concat([head, tScript.controlBlock]),\n value: Buffer.concat([tScript.script, verBuf]),\n };\n}\nexports.encode = encode;\nexports.expected =\n '{ controlBlock: Buffer; leafVersion: number, script: Buffer; }';\nfunction check(data) {\n return (\n Buffer.isBuffer(data.controlBlock) &&\n (data.controlBlock.length - 1) % 32 === 0 &&\n (data.controlBlock[0] & 0xfe) === data.leafVersion &&\n Buffer.isBuffer(data.script)\n );\n}\nexports.check = check;\nfunction canAddToArray(array, item, dupeSet) {\n const dupeString = item.controlBlock.toString('hex');\n if (dupeSet.has(dupeString)) return false;\n dupeSet.add(dupeString);\n return (\n array.filter(v => v.controlBlock.equals(item.controlBlock)).length === 0\n );\n}\nexports.canAddToArray = canAddToArray;\n", "'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst typeFields_1 = require('../../typeFields');\nfunction decode(keyVal) {\n if (\n keyVal.key[0] !== typeFields_1.InputTypes.TAP_MERKLE_ROOT ||\n keyVal.key.length !== 1\n ) {\n throw new Error(\n 'Decode Error: could not decode tapMerkleRoot with key 0x' +\n keyVal.key.toString('hex'),\n );\n }\n if (!check(keyVal.value)) {\n throw new Error('Decode Error: tapMerkleRoot not a 32-byte hash');\n }\n return keyVal.value;\n}\nexports.decode = decode;\nfunction encode(value) {\n const key = Buffer.from([typeFields_1.InputTypes.TAP_MERKLE_ROOT]);\n return { key, value };\n}\nexports.encode = encode;\nexports.expected = 'Buffer';\nfunction check(data) {\n return Buffer.isBuffer(data) && data.length === 32;\n}\nexports.check = check;\nfunction canAdd(currentData, newData) {\n return !!currentData && !!newData && currentData.tapMerkleRoot === undefined;\n}\nexports.canAdd = canAdd;\n", "'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst typeFields_1 = require('../../typeFields');\nfunction decode(keyVal) {\n if (keyVal.key[0] !== typeFields_1.InputTypes.TAP_SCRIPT_SIG) {\n throw new Error(\n 'Decode Error: could not decode tapScriptSig with key 0x' +\n keyVal.key.toString('hex'),\n );\n }\n if (keyVal.key.length !== 65) {\n throw new Error(\n 'Decode Error: tapScriptSig has invalid key 0x' +\n keyVal.key.toString('hex'),\n );\n }\n if (keyVal.value.length !== 64 && keyVal.value.length !== 65) {\n throw new Error(\n 'Decode Error: tapScriptSig has invalid signature in key 0x' +\n keyVal.key.toString('hex'),\n );\n }\n const pubkey = keyVal.key.slice(1, 33);\n const leafHash = keyVal.key.slice(33);\n return {\n pubkey,\n leafHash,\n signature: keyVal.value,\n };\n}\nexports.decode = decode;\nfunction encode(tSig) {\n const head = Buffer.from([typeFields_1.InputTypes.TAP_SCRIPT_SIG]);\n return {\n key: Buffer.concat([head, tSig.pubkey, tSig.leafHash]),\n value: tSig.signature,\n };\n}\nexports.encode = encode;\nexports.expected = '{ pubkey: Buffer; leafHash: Buffer; signature: Buffer; }';\nfunction check(data) {\n return (\n Buffer.isBuffer(data.pubkey) &&\n Buffer.isBuffer(data.leafHash) &&\n Buffer.isBuffer(data.signature) &&\n data.pubkey.length === 32 &&\n data.leafHash.length === 32 &&\n (data.signature.length === 64 || data.signature.length === 65)\n );\n}\nexports.check = check;\nfunction canAddToArray(array, item, dupeSet) {\n const dupeString =\n item.pubkey.toString('hex') + item.leafHash.toString('hex');\n if (dupeSet.has(dupeString)) return false;\n dupeSet.add(dupeString);\n return (\n array.filter(\n v => v.pubkey.equals(item.pubkey) && v.leafHash.equals(item.leafHash),\n ).length === 0\n );\n}\nexports.canAddToArray = canAddToArray;\n", "'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\n// Number.MAX_SAFE_INTEGER\nconst MAX_SAFE_INTEGER = 9007199254740991;\nfunction checkUInt53(n) {\n if (n < 0 || n > MAX_SAFE_INTEGER || n % 1 !== 0)\n throw new RangeError('value out of range');\n}\nfunction encode(_number, buffer, offset) {\n checkUInt53(_number);\n if (!buffer) buffer = Buffer.allocUnsafe(encodingLength(_number));\n if (!Buffer.isBuffer(buffer))\n throw new TypeError('buffer must be a Buffer instance');\n if (!offset) offset = 0;\n // 8 bit\n if (_number < 0xfd) {\n buffer.writeUInt8(_number, offset);\n Object.assign(encode, { bytes: 1 });\n // 16 bit\n } else if (_number <= 0xffff) {\n buffer.writeUInt8(0xfd, offset);\n buffer.writeUInt16LE(_number, offset + 1);\n Object.assign(encode, { bytes: 3 });\n // 32 bit\n } else if (_number <= 0xffffffff) {\n buffer.writeUInt8(0xfe, offset);\n buffer.writeUInt32LE(_number, offset + 1);\n Object.assign(encode, { bytes: 5 });\n // 64 bit\n } else {\n buffer.writeUInt8(0xff, offset);\n buffer.writeUInt32LE(_number >>> 0, offset + 1);\n buffer.writeUInt32LE((_number / 0x100000000) | 0, offset + 5);\n Object.assign(encode, { bytes: 9 });\n }\n return buffer;\n}\nexports.encode = encode;\nfunction decode(buffer, offset) {\n if (!Buffer.isBuffer(buffer))\n throw new TypeError('buffer must be a Buffer instance');\n if (!offset) offset = 0;\n const first = buffer.readUInt8(offset);\n // 8 bit\n if (first < 0xfd) {\n Object.assign(decode, { bytes: 1 });\n return first;\n // 16 bit\n } else if (first === 0xfd) {\n Object.assign(decode, { bytes: 3 });\n return buffer.readUInt16LE(offset + 1);\n // 32 bit\n } else if (first === 0xfe) {\n Object.assign(decode, { bytes: 5 });\n return buffer.readUInt32LE(offset + 1);\n // 64 bit\n } else {\n Object.assign(decode, { bytes: 9 });\n const lo = buffer.readUInt32LE(offset + 1);\n const hi = buffer.readUInt32LE(offset + 5);\n const _number = hi * 0x0100000000 + lo;\n checkUInt53(_number);\n return _number;\n }\n}\nexports.decode = decode;\nfunction encodingLength(_number) {\n checkUInt53(_number);\n return _number < 0xfd\n ? 1\n : _number <= 0xffff\n ? 3\n : _number <= 0xffffffff\n ? 5\n : 9;\n}\nexports.encodingLength = encodingLength;\n", "'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst varuint = require('./varint');\nexports.range = n => [...Array(n).keys()];\nfunction reverseBuffer(buffer) {\n if (buffer.length < 1) return buffer;\n let j = buffer.length - 1;\n let tmp = 0;\n for (let i = 0; i < buffer.length / 2; i++) {\n tmp = buffer[i];\n buffer[i] = buffer[j];\n buffer[j] = tmp;\n j--;\n }\n return buffer;\n}\nexports.reverseBuffer = reverseBuffer;\nfunction keyValsToBuffer(keyVals) {\n const buffers = keyVals.map(keyValToBuffer);\n buffers.push(Buffer.from([0]));\n return Buffer.concat(buffers);\n}\nexports.keyValsToBuffer = keyValsToBuffer;\nfunction keyValToBuffer(keyVal) {\n const keyLen = keyVal.key.length;\n const valLen = keyVal.value.length;\n const keyVarIntLen = varuint.encodingLength(keyLen);\n const valVarIntLen = varuint.encodingLength(valLen);\n const buffer = Buffer.allocUnsafe(\n keyVarIntLen + keyLen + valVarIntLen + valLen,\n );\n varuint.encode(keyLen, buffer, 0);\n keyVal.key.copy(buffer, keyVarIntLen);\n varuint.encode(valLen, buffer, keyVarIntLen + keyLen);\n keyVal.value.copy(buffer, keyVarIntLen + keyLen + valVarIntLen);\n return buffer;\n}\nexports.keyValToBuffer = keyValToBuffer;\n// https://github.com/feross/buffer/blob/master/index.js#L1127\nfunction verifuint(value, max) {\n if (typeof value !== 'number')\n throw new Error('cannot write a non-number as a number');\n if (value < 0)\n throw new Error('specified a negative value for writing an unsigned value');\n if (value > max) throw new Error('RangeError: value out of range');\n if (Math.floor(value) !== value)\n throw new Error('value has a fractional component');\n}\nfunction readUInt64LE(buffer, offset) {\n const a = buffer.readUInt32LE(offset);\n let b = buffer.readUInt32LE(offset + 4);\n b *= 0x100000000;\n verifuint(b + a, 0x001fffffffffffff);\n return b + a;\n}\nexports.readUInt64LE = readUInt64LE;\nfunction writeUInt64LE(buffer, value, offset) {\n verifuint(value, 0x001fffffffffffff);\n buffer.writeInt32LE(value & -1, offset);\n buffer.writeUInt32LE(Math.floor(value / 0x100000000), offset + 4);\n return offset + 8;\n}\nexports.writeUInt64LE = writeUInt64LE;\n", "'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst typeFields_1 = require('../../typeFields');\nconst tools_1 = require('../tools');\nconst varuint = require('../varint');\nfunction decode(keyVal) {\n if (keyVal.key[0] !== typeFields_1.InputTypes.WITNESS_UTXO) {\n throw new Error(\n 'Decode Error: could not decode witnessUtxo with key 0x' +\n keyVal.key.toString('hex'),\n );\n }\n const value = tools_1.readUInt64LE(keyVal.value, 0);\n let _offset = 8;\n const scriptLen = varuint.decode(keyVal.value, _offset);\n _offset += varuint.encodingLength(scriptLen);\n const script = keyVal.value.slice(_offset);\n if (script.length !== scriptLen) {\n throw new Error('Decode Error: WITNESS_UTXO script is not proper length');\n }\n return {\n script,\n value,\n };\n}\nexports.decode = decode;\nfunction encode(data) {\n const { script, value } = data;\n const varintLen = varuint.encodingLength(script.length);\n const result = Buffer.allocUnsafe(8 + varintLen + script.length);\n tools_1.writeUInt64LE(result, value, 0);\n varuint.encode(script.length, result, 8);\n script.copy(result, 8 + varintLen);\n return {\n key: Buffer.from([typeFields_1.InputTypes.WITNESS_UTXO]),\n value: result,\n };\n}\nexports.encode = encode;\nexports.expected = '{ script: Buffer; value: number; }';\nfunction check(data) {\n return Buffer.isBuffer(data.script) && typeof data.value === 'number';\n}\nexports.check = check;\nfunction canAdd(currentData, newData) {\n return !!currentData && !!newData && currentData.witnessUtxo === undefined;\n}\nexports.canAdd = canAdd;\n", "'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst typeFields_1 = require('../../typeFields');\nconst varuint = require('../varint');\nfunction decode(keyVal) {\n if (\n keyVal.key[0] !== typeFields_1.OutputTypes.TAP_TREE ||\n keyVal.key.length !== 1\n ) {\n throw new Error(\n 'Decode Error: could not decode tapTree with key 0x' +\n keyVal.key.toString('hex'),\n );\n }\n let _offset = 0;\n const data = [];\n while (_offset < keyVal.value.length) {\n const depth = keyVal.value[_offset++];\n const leafVersion = keyVal.value[_offset++];\n const scriptLen = varuint.decode(keyVal.value, _offset);\n _offset += varuint.encodingLength(scriptLen);\n data.push({\n depth,\n leafVersion,\n script: keyVal.value.slice(_offset, _offset + scriptLen),\n });\n _offset += scriptLen;\n }\n return { leaves: data };\n}\nexports.decode = decode;\nfunction encode(tree) {\n const key = Buffer.from([typeFields_1.OutputTypes.TAP_TREE]);\n const bufs = [].concat(\n ...tree.leaves.map(tapLeaf => [\n Buffer.of(tapLeaf.depth, tapLeaf.leafVersion),\n varuint.encode(tapLeaf.script.length),\n tapLeaf.script,\n ]),\n );\n return {\n key,\n value: Buffer.concat(bufs),\n };\n}\nexports.encode = encode;\nexports.expected =\n '{ leaves: [{ depth: number; leafVersion: number, script: Buffer; }] }';\nfunction check(data) {\n return (\n Array.isArray(data.leaves) &&\n data.leaves.every(\n tapLeaf =>\n tapLeaf.depth >= 0 &&\n tapLeaf.depth <= 128 &&\n (tapLeaf.leafVersion & 0xfe) === tapLeaf.leafVersion &&\n Buffer.isBuffer(tapLeaf.script),\n )\n );\n}\nexports.check = check;\nfunction canAdd(currentData, newData) {\n return !!currentData && !!newData && currentData.tapTree === undefined;\n}\nexports.canAdd = canAdd;\n", "'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst range = n => [...Array(n).keys()];\nconst isValidDERKey = pubkey =>\n (pubkey.length === 33 && [2, 3].includes(pubkey[0])) ||\n (pubkey.length === 65 && 4 === pubkey[0]);\nfunction makeConverter(TYPE_BYTE, isValidPubkey = isValidDERKey) {\n function decode(keyVal) {\n if (keyVal.key[0] !== TYPE_BYTE) {\n throw new Error(\n 'Decode Error: could not decode bip32Derivation with key 0x' +\n keyVal.key.toString('hex'),\n );\n }\n const pubkey = keyVal.key.slice(1);\n if (!isValidPubkey(pubkey)) {\n throw new Error(\n 'Decode Error: bip32Derivation has invalid pubkey in key 0x' +\n keyVal.key.toString('hex'),\n );\n }\n if ((keyVal.value.length / 4) % 1 !== 0) {\n throw new Error(\n 'Decode Error: Input BIP32_DERIVATION value length should be multiple of 4',\n );\n }\n const data = {\n masterFingerprint: keyVal.value.slice(0, 4),\n pubkey,\n path: 'm',\n };\n for (const i of range(keyVal.value.length / 4 - 1)) {\n const val = keyVal.value.readUInt32LE(i * 4 + 4);\n const isHard = !!(val & 0x80000000);\n const idx = val & 0x7fffffff;\n data.path += '/' + idx.toString(10) + (isHard ? \"'\" : '');\n }\n return data;\n }\n function encode(data) {\n const head = Buffer.from([TYPE_BYTE]);\n const key = Buffer.concat([head, data.pubkey]);\n const splitPath = data.path.split('/');\n const value = Buffer.allocUnsafe(splitPath.length * 4);\n data.masterFingerprint.copy(value, 0);\n let offset = 4;\n splitPath.slice(1).forEach(level => {\n const isHard = level.slice(-1) === \"'\";\n let num = 0x7fffffff & parseInt(isHard ? level.slice(0, -1) : level, 10);\n if (isHard) num += 0x80000000;\n value.writeUInt32LE(num, offset);\n offset += 4;\n });\n return {\n key,\n value,\n };\n }\n const expected =\n '{ masterFingerprint: Buffer; pubkey: Buffer; path: string; }';\n function check(data) {\n return (\n Buffer.isBuffer(data.pubkey) &&\n Buffer.isBuffer(data.masterFingerprint) &&\n typeof data.path === 'string' &&\n isValidPubkey(data.pubkey) &&\n data.masterFingerprint.length === 4\n );\n }\n function canAddToArray(array, item, dupeSet) {\n const dupeString = item.pubkey.toString('hex');\n if (dupeSet.has(dupeString)) return false;\n dupeSet.add(dupeString);\n return array.filter(v => v.pubkey.equals(item.pubkey)).length === 0;\n }\n return {\n decode,\n encode,\n check,\n expected,\n canAddToArray,\n };\n}\nexports.makeConverter = makeConverter;\n", "'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nfunction makeChecker(pubkeyTypes) {\n return checkPubkey;\n function checkPubkey(keyVal) {\n let pubkey;\n if (pubkeyTypes.includes(keyVal.key[0])) {\n pubkey = keyVal.key.slice(1);\n if (\n !(pubkey.length === 33 || pubkey.length === 65) ||\n ![2, 3, 4].includes(pubkey[0])\n ) {\n throw new Error(\n 'Format Error: invalid pubkey in key 0x' + keyVal.key.toString('hex'),\n );\n }\n }\n return pubkey;\n }\n}\nexports.makeChecker = makeChecker;\n", "'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nfunction makeConverter(TYPE_BYTE) {\n function decode(keyVal) {\n if (keyVal.key[0] !== TYPE_BYTE) {\n throw new Error(\n 'Decode Error: could not decode redeemScript with key 0x' +\n keyVal.key.toString('hex'),\n );\n }\n return keyVal.value;\n }\n function encode(data) {\n const key = Buffer.from([TYPE_BYTE]);\n return {\n key,\n value: data,\n };\n }\n const expected = 'Buffer';\n function check(data) {\n return Buffer.isBuffer(data);\n }\n function canAdd(currentData, newData) {\n return !!currentData && !!newData && currentData.redeemScript === undefined;\n }\n return {\n decode,\n encode,\n check,\n expected,\n canAdd,\n };\n}\nexports.makeConverter = makeConverter;\n", "'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst varuint = require('../varint');\nconst bip32Derivation = require('./bip32Derivation');\nconst isValidBIP340Key = pubkey => pubkey.length === 32;\nfunction makeConverter(TYPE_BYTE) {\n const parent = bip32Derivation.makeConverter(TYPE_BYTE, isValidBIP340Key);\n function decode(keyVal) {\n const nHashes = varuint.decode(keyVal.value);\n const nHashesLen = varuint.encodingLength(nHashes);\n const base = parent.decode({\n key: keyVal.key,\n value: keyVal.value.slice(nHashesLen + nHashes * 32),\n });\n const leafHashes = new Array(nHashes);\n for (let i = 0, _offset = nHashesLen; i < nHashes; i++, _offset += 32) {\n leafHashes[i] = keyVal.value.slice(_offset, _offset + 32);\n }\n return Object.assign({}, base, { leafHashes });\n }\n function encode(data) {\n const base = parent.encode(data);\n const nHashesLen = varuint.encodingLength(data.leafHashes.length);\n const nHashesBuf = Buffer.allocUnsafe(nHashesLen);\n varuint.encode(data.leafHashes.length, nHashesBuf);\n const value = Buffer.concat([nHashesBuf, ...data.leafHashes, base.value]);\n return Object.assign({}, base, { value });\n }\n const expected =\n '{ ' +\n 'masterFingerprint: Buffer; ' +\n 'pubkey: Buffer; ' +\n 'path: string; ' +\n 'leafHashes: Buffer[]; ' +\n '}';\n function check(data) {\n return (\n Array.isArray(data.leafHashes) &&\n data.leafHashes.every(\n leafHash => Buffer.isBuffer(leafHash) && leafHash.length === 32,\n ) &&\n parent.check(data)\n );\n }\n return {\n decode,\n encode,\n check,\n expected,\n canAddToArray: parent.canAddToArray,\n };\n}\nexports.makeConverter = makeConverter;\n", "'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nfunction makeConverter(TYPE_BYTE) {\n function decode(keyVal) {\n if (keyVal.key[0] !== TYPE_BYTE || keyVal.key.length !== 1) {\n throw new Error(\n 'Decode Error: could not decode tapInternalKey with key 0x' +\n keyVal.key.toString('hex'),\n );\n }\n if (keyVal.value.length !== 32) {\n throw new Error(\n 'Decode Error: tapInternalKey not a 32-byte x-only pubkey',\n );\n }\n return keyVal.value;\n }\n function encode(value) {\n const key = Buffer.from([TYPE_BYTE]);\n return { key, value };\n }\n const expected = 'Buffer';\n function check(data) {\n return Buffer.isBuffer(data) && data.length === 32;\n }\n function canAdd(currentData, newData) {\n return (\n !!currentData && !!newData && currentData.tapInternalKey === undefined\n );\n }\n return {\n decode,\n encode,\n check,\n expected,\n canAdd,\n };\n}\nexports.makeConverter = makeConverter;\n", "'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nfunction makeConverter(TYPE_BYTE) {\n function decode(keyVal) {\n if (keyVal.key[0] !== TYPE_BYTE) {\n throw new Error(\n 'Decode Error: could not decode witnessScript with key 0x' +\n keyVal.key.toString('hex'),\n );\n }\n return keyVal.value;\n }\n function encode(data) {\n const key = Buffer.from([TYPE_BYTE]);\n return {\n key,\n value: data,\n };\n }\n const expected = 'Buffer';\n function check(data) {\n return Buffer.isBuffer(data);\n }\n function canAdd(currentData, newData) {\n return (\n !!currentData && !!newData && currentData.witnessScript === undefined\n );\n }\n return {\n decode,\n encode,\n check,\n expected,\n canAdd,\n };\n}\nexports.makeConverter = makeConverter;\n", "'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst typeFields_1 = require('../typeFields');\nconst globalXpub = require('./global/globalXpub');\nconst unsignedTx = require('./global/unsignedTx');\nconst finalScriptSig = require('./input/finalScriptSig');\nconst finalScriptWitness = require('./input/finalScriptWitness');\nconst nonWitnessUtxo = require('./input/nonWitnessUtxo');\nconst partialSig = require('./input/partialSig');\nconst porCommitment = require('./input/porCommitment');\nconst sighashType = require('./input/sighashType');\nconst tapKeySig = require('./input/tapKeySig');\nconst tapLeafScript = require('./input/tapLeafScript');\nconst tapMerkleRoot = require('./input/tapMerkleRoot');\nconst tapScriptSig = require('./input/tapScriptSig');\nconst witnessUtxo = require('./input/witnessUtxo');\nconst tapTree = require('./output/tapTree');\nconst bip32Derivation = require('./shared/bip32Derivation');\nconst checkPubkey = require('./shared/checkPubkey');\nconst redeemScript = require('./shared/redeemScript');\nconst tapBip32Derivation = require('./shared/tapBip32Derivation');\nconst tapInternalKey = require('./shared/tapInternalKey');\nconst witnessScript = require('./shared/witnessScript');\nconst globals = {\n unsignedTx,\n globalXpub,\n // pass an Array of key bytes that require pubkey beside the key\n checkPubkey: checkPubkey.makeChecker([]),\n};\nexports.globals = globals;\nconst inputs = {\n nonWitnessUtxo,\n partialSig,\n sighashType,\n finalScriptSig,\n finalScriptWitness,\n porCommitment,\n witnessUtxo,\n bip32Derivation: bip32Derivation.makeConverter(\n typeFields_1.InputTypes.BIP32_DERIVATION,\n ),\n redeemScript: redeemScript.makeConverter(\n typeFields_1.InputTypes.REDEEM_SCRIPT,\n ),\n witnessScript: witnessScript.makeConverter(\n typeFields_1.InputTypes.WITNESS_SCRIPT,\n ),\n checkPubkey: checkPubkey.makeChecker([\n typeFields_1.InputTypes.PARTIAL_SIG,\n typeFields_1.InputTypes.BIP32_DERIVATION,\n ]),\n tapKeySig,\n tapScriptSig,\n tapLeafScript,\n tapBip32Derivation: tapBip32Derivation.makeConverter(\n typeFields_1.InputTypes.TAP_BIP32_DERIVATION,\n ),\n tapInternalKey: tapInternalKey.makeConverter(\n typeFields_1.InputTypes.TAP_INTERNAL_KEY,\n ),\n tapMerkleRoot,\n};\nexports.inputs = inputs;\nconst outputs = {\n bip32Derivation: bip32Derivation.makeConverter(\n typeFields_1.OutputTypes.BIP32_DERIVATION,\n ),\n redeemScript: redeemScript.makeConverter(\n typeFields_1.OutputTypes.REDEEM_SCRIPT,\n ),\n witnessScript: witnessScript.makeConverter(\n typeFields_1.OutputTypes.WITNESS_SCRIPT,\n ),\n checkPubkey: checkPubkey.makeChecker([\n typeFields_1.OutputTypes.BIP32_DERIVATION,\n ]),\n tapBip32Derivation: tapBip32Derivation.makeConverter(\n typeFields_1.OutputTypes.TAP_BIP32_DERIVATION,\n ),\n tapTree,\n tapInternalKey: tapInternalKey.makeConverter(\n typeFields_1.OutputTypes.TAP_INTERNAL_KEY,\n ),\n};\nexports.outputs = outputs;\n", "'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst convert = require('../converter');\nconst tools_1 = require('../converter/tools');\nconst varuint = require('../converter/varint');\nconst typeFields_1 = require('../typeFields');\nfunction psbtFromBuffer(buffer, txGetter) {\n let offset = 0;\n function varSlice() {\n const keyLen = varuint.decode(buffer, offset);\n offset += varuint.encodingLength(keyLen);\n const key = buffer.slice(offset, offset + keyLen);\n offset += keyLen;\n return key;\n }\n function readUInt32BE() {\n const num = buffer.readUInt32BE(offset);\n offset += 4;\n return num;\n }\n function readUInt8() {\n const num = buffer.readUInt8(offset);\n offset += 1;\n return num;\n }\n function getKeyValue() {\n const key = varSlice();\n const value = varSlice();\n return {\n key,\n value,\n };\n }\n function checkEndOfKeyValPairs() {\n if (offset >= buffer.length) {\n throw new Error('Format Error: Unexpected End of PSBT');\n }\n const isEnd = buffer.readUInt8(offset) === 0;\n if (isEnd) {\n offset++;\n }\n return isEnd;\n }\n if (readUInt32BE() !== 0x70736274) {\n throw new Error('Format Error: Invalid Magic Number');\n }\n if (readUInt8() !== 0xff) {\n throw new Error(\n 'Format Error: Magic Number must be followed by 0xff separator',\n );\n }\n const globalMapKeyVals = [];\n const globalKeyIndex = {};\n while (!checkEndOfKeyValPairs()) {\n const keyVal = getKeyValue();\n const hexKey = keyVal.key.toString('hex');\n if (globalKeyIndex[hexKey]) {\n throw new Error(\n 'Format Error: Keys must be unique for global keymap: key ' + hexKey,\n );\n }\n globalKeyIndex[hexKey] = 1;\n globalMapKeyVals.push(keyVal);\n }\n const unsignedTxMaps = globalMapKeyVals.filter(\n keyVal => keyVal.key[0] === typeFields_1.GlobalTypes.UNSIGNED_TX,\n );\n if (unsignedTxMaps.length !== 1) {\n throw new Error('Format Error: Only one UNSIGNED_TX allowed');\n }\n const unsignedTx = txGetter(unsignedTxMaps[0].value);\n // Get input and output counts to loop the respective fields\n const { inputCount, outputCount } = unsignedTx.getInputOutputCounts();\n const inputKeyVals = [];\n const outputKeyVals = [];\n // Get input fields\n for (const index of tools_1.range(inputCount)) {\n const inputKeyIndex = {};\n const input = [];\n while (!checkEndOfKeyValPairs()) {\n const keyVal = getKeyValue();\n const hexKey = keyVal.key.toString('hex');\n if (inputKeyIndex[hexKey]) {\n throw new Error(\n 'Format Error: Keys must be unique for each input: ' +\n 'input index ' +\n index +\n ' key ' +\n hexKey,\n );\n }\n inputKeyIndex[hexKey] = 1;\n input.push(keyVal);\n }\n inputKeyVals.push(input);\n }\n for (const index of tools_1.range(outputCount)) {\n const outputKeyIndex = {};\n const output = [];\n while (!checkEndOfKeyValPairs()) {\n const keyVal = getKeyValue();\n const hexKey = keyVal.key.toString('hex');\n if (outputKeyIndex[hexKey]) {\n throw new Error(\n 'Format Error: Keys must be unique for each output: ' +\n 'output index ' +\n index +\n ' key ' +\n hexKey,\n );\n }\n outputKeyIndex[hexKey] = 1;\n output.push(keyVal);\n }\n outputKeyVals.push(output);\n }\n return psbtFromKeyVals(unsignedTx, {\n globalMapKeyVals,\n inputKeyVals,\n outputKeyVals,\n });\n}\nexports.psbtFromBuffer = psbtFromBuffer;\nfunction checkKeyBuffer(type, keyBuf, keyNum) {\n if (!keyBuf.equals(Buffer.from([keyNum]))) {\n throw new Error(\n `Format Error: Invalid ${type} key: ${keyBuf.toString('hex')}`,\n );\n }\n}\nexports.checkKeyBuffer = checkKeyBuffer;\nfunction psbtFromKeyVals(\n unsignedTx,\n { globalMapKeyVals, inputKeyVals, outputKeyVals },\n) {\n // That was easy :-)\n const globalMap = {\n unsignedTx,\n };\n let txCount = 0;\n for (const keyVal of globalMapKeyVals) {\n // If a globalMap item needs pubkey, uncomment\n // const pubkey = convert.globals.checkPubkey(keyVal);\n switch (keyVal.key[0]) {\n case typeFields_1.GlobalTypes.UNSIGNED_TX:\n checkKeyBuffer(\n 'global',\n keyVal.key,\n typeFields_1.GlobalTypes.UNSIGNED_TX,\n );\n if (txCount > 0) {\n throw new Error('Format Error: GlobalMap has multiple UNSIGNED_TX');\n }\n txCount++;\n break;\n case typeFields_1.GlobalTypes.GLOBAL_XPUB:\n if (globalMap.globalXpub === undefined) {\n globalMap.globalXpub = [];\n }\n globalMap.globalXpub.push(convert.globals.globalXpub.decode(keyVal));\n break;\n default:\n // This will allow inclusion during serialization.\n if (!globalMap.unknownKeyVals) globalMap.unknownKeyVals = [];\n globalMap.unknownKeyVals.push(keyVal);\n }\n }\n // Get input and output counts to loop the respective fields\n const inputCount = inputKeyVals.length;\n const outputCount = outputKeyVals.length;\n const inputs = [];\n const outputs = [];\n // Get input fields\n for (const index of tools_1.range(inputCount)) {\n const input = {};\n for (const keyVal of inputKeyVals[index]) {\n convert.inputs.checkPubkey(keyVal);\n switch (keyVal.key[0]) {\n case typeFields_1.InputTypes.NON_WITNESS_UTXO:\n checkKeyBuffer(\n 'input',\n keyVal.key,\n typeFields_1.InputTypes.NON_WITNESS_UTXO,\n );\n if (input.nonWitnessUtxo !== undefined) {\n throw new Error(\n 'Format Error: Input has multiple NON_WITNESS_UTXO',\n );\n }\n input.nonWitnessUtxo = convert.inputs.nonWitnessUtxo.decode(keyVal);\n break;\n case typeFields_1.InputTypes.WITNESS_UTXO:\n checkKeyBuffer(\n 'input',\n keyVal.key,\n typeFields_1.InputTypes.WITNESS_UTXO,\n );\n if (input.witnessUtxo !== undefined) {\n throw new Error('Format Error: Input has multiple WITNESS_UTXO');\n }\n input.witnessUtxo = convert.inputs.witnessUtxo.decode(keyVal);\n break;\n case typeFields_1.InputTypes.PARTIAL_SIG:\n if (input.partialSig === undefined) {\n input.partialSig = [];\n }\n input.partialSig.push(convert.inputs.partialSig.decode(keyVal));\n break;\n case typeFields_1.InputTypes.SIGHASH_TYPE:\n checkKeyBuffer(\n 'input',\n keyVal.key,\n typeFields_1.InputTypes.SIGHASH_TYPE,\n );\n if (input.sighashType !== undefined) {\n throw new Error('Format Error: Input has multiple SIGHASH_TYPE');\n }\n input.sighashType = convert.inputs.sighashType.decode(keyVal);\n break;\n case typeFields_1.InputTypes.REDEEM_SCRIPT:\n checkKeyBuffer(\n 'input',\n keyVal.key,\n typeFields_1.InputTypes.REDEEM_SCRIPT,\n );\n if (input.redeemScript !== undefined) {\n throw new Error('Format Error: Input has multiple REDEEM_SCRIPT');\n }\n input.redeemScript = convert.inputs.redeemScript.decode(keyVal);\n break;\n case typeFields_1.InputTypes.WITNESS_SCRIPT:\n checkKeyBuffer(\n 'input',\n keyVal.key,\n typeFields_1.InputTypes.WITNESS_SCRIPT,\n );\n if (input.witnessScript !== undefined) {\n throw new Error('Format Error: Input has multiple WITNESS_SCRIPT');\n }\n input.witnessScript = convert.inputs.witnessScript.decode(keyVal);\n break;\n case typeFields_1.InputTypes.BIP32_DERIVATION:\n if (input.bip32Derivation === undefined) {\n input.bip32Derivation = [];\n }\n input.bip32Derivation.push(\n convert.inputs.bip32Derivation.decode(keyVal),\n );\n break;\n case typeFields_1.InputTypes.FINAL_SCRIPTSIG:\n checkKeyBuffer(\n 'input',\n keyVal.key,\n typeFields_1.InputTypes.FINAL_SCRIPTSIG,\n );\n input.finalScriptSig = convert.inputs.finalScriptSig.decode(keyVal);\n break;\n case typeFields_1.InputTypes.FINAL_SCRIPTWITNESS:\n checkKeyBuffer(\n 'input',\n keyVal.key,\n typeFields_1.InputTypes.FINAL_SCRIPTWITNESS,\n );\n input.finalScriptWitness = convert.inputs.finalScriptWitness.decode(\n keyVal,\n );\n break;\n case typeFields_1.InputTypes.POR_COMMITMENT:\n checkKeyBuffer(\n 'input',\n keyVal.key,\n typeFields_1.InputTypes.POR_COMMITMENT,\n );\n input.porCommitment = convert.inputs.porCommitment.decode(keyVal);\n break;\n case typeFields_1.InputTypes.TAP_KEY_SIG:\n checkKeyBuffer(\n 'input',\n keyVal.key,\n typeFields_1.InputTypes.TAP_KEY_SIG,\n );\n input.tapKeySig = convert.inputs.tapKeySig.decode(keyVal);\n break;\n case typeFields_1.InputTypes.TAP_SCRIPT_SIG:\n if (input.tapScriptSig === undefined) {\n input.tapScriptSig = [];\n }\n input.tapScriptSig.push(convert.inputs.tapScriptSig.decode(keyVal));\n break;\n case typeFields_1.InputTypes.TAP_LEAF_SCRIPT:\n if (input.tapLeafScript === undefined) {\n input.tapLeafScript = [];\n }\n input.tapLeafScript.push(convert.inputs.tapLeafScript.decode(keyVal));\n break;\n case typeFields_1.InputTypes.TAP_BIP32_DERIVATION:\n if (input.tapBip32Derivation === undefined) {\n input.tapBip32Derivation = [];\n }\n input.tapBip32Derivation.push(\n convert.inputs.tapBip32Derivation.decode(keyVal),\n );\n break;\n case typeFields_1.InputTypes.TAP_INTERNAL_KEY:\n checkKeyBuffer(\n 'input',\n keyVal.key,\n typeFields_1.InputTypes.TAP_INTERNAL_KEY,\n );\n input.tapInternalKey = convert.inputs.tapInternalKey.decode(keyVal);\n break;\n case typeFields_1.InputTypes.TAP_MERKLE_ROOT:\n checkKeyBuffer(\n 'input',\n keyVal.key,\n typeFields_1.InputTypes.TAP_MERKLE_ROOT,\n );\n input.tapMerkleRoot = convert.inputs.tapMerkleRoot.decode(keyVal);\n break;\n default:\n // This will allow inclusion during serialization.\n if (!input.unknownKeyVals) input.unknownKeyVals = [];\n input.unknownKeyVals.push(keyVal);\n }\n }\n inputs.push(input);\n }\n for (const index of tools_1.range(outputCount)) {\n const output = {};\n for (const keyVal of outputKeyVals[index]) {\n convert.outputs.checkPubkey(keyVal);\n switch (keyVal.key[0]) {\n case typeFields_1.OutputTypes.REDEEM_SCRIPT:\n checkKeyBuffer(\n 'output',\n keyVal.key,\n typeFields_1.OutputTypes.REDEEM_SCRIPT,\n );\n if (output.redeemScript !== undefined) {\n throw new Error('Format Error: Output has multiple REDEEM_SCRIPT');\n }\n output.redeemScript = convert.outputs.redeemScript.decode(keyVal);\n break;\n case typeFields_1.OutputTypes.WITNESS_SCRIPT:\n checkKeyBuffer(\n 'output',\n keyVal.key,\n typeFields_1.OutputTypes.WITNESS_SCRIPT,\n );\n if (output.witnessScript !== undefined) {\n throw new Error('Format Error: Output has multiple WITNESS_SCRIPT');\n }\n output.witnessScript = convert.outputs.witnessScript.decode(keyVal);\n break;\n case typeFields_1.OutputTypes.BIP32_DERIVATION:\n if (output.bip32Derivation === undefined) {\n output.bip32Derivation = [];\n }\n output.bip32Derivation.push(\n convert.outputs.bip32Derivation.decode(keyVal),\n );\n break;\n case typeFields_1.OutputTypes.TAP_INTERNAL_KEY:\n checkKeyBuffer(\n 'output',\n keyVal.key,\n typeFields_1.OutputTypes.TAP_INTERNAL_KEY,\n );\n output.tapInternalKey = convert.outputs.tapInternalKey.decode(keyVal);\n break;\n case typeFields_1.OutputTypes.TAP_TREE:\n checkKeyBuffer(\n 'output',\n keyVal.key,\n typeFields_1.OutputTypes.TAP_TREE,\n );\n output.tapTree = convert.outputs.tapTree.decode(keyVal);\n break;\n case typeFields_1.OutputTypes.TAP_BIP32_DERIVATION:\n if (output.tapBip32Derivation === undefined) {\n output.tapBip32Derivation = [];\n }\n output.tapBip32Derivation.push(\n convert.outputs.tapBip32Derivation.decode(keyVal),\n );\n break;\n default:\n if (!output.unknownKeyVals) output.unknownKeyVals = [];\n output.unknownKeyVals.push(keyVal);\n }\n }\n outputs.push(output);\n }\n return { globalMap, inputs, outputs };\n}\nexports.psbtFromKeyVals = psbtFromKeyVals;\n", "'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst convert = require('../converter');\nconst tools_1 = require('../converter/tools');\nfunction psbtToBuffer({ globalMap, inputs, outputs }) {\n const { globalKeyVals, inputKeyVals, outputKeyVals } = psbtToKeyVals({\n globalMap,\n inputs,\n outputs,\n });\n const globalBuffer = tools_1.keyValsToBuffer(globalKeyVals);\n const keyValsOrEmptyToBuffer = keyVals =>\n keyVals.length === 0\n ? [Buffer.from([0])]\n : keyVals.map(tools_1.keyValsToBuffer);\n const inputBuffers = keyValsOrEmptyToBuffer(inputKeyVals);\n const outputBuffers = keyValsOrEmptyToBuffer(outputKeyVals);\n const header = Buffer.allocUnsafe(5);\n header.writeUIntBE(0x70736274ff, 0, 5);\n return Buffer.concat(\n [header, globalBuffer].concat(inputBuffers, outputBuffers),\n );\n}\nexports.psbtToBuffer = psbtToBuffer;\nconst sortKeyVals = (a, b) => {\n return a.key.compare(b.key);\n};\nfunction keyValsFromMap(keyValMap, converterFactory) {\n const keyHexSet = new Set();\n const keyVals = Object.entries(keyValMap).reduce((result, [key, value]) => {\n if (key === 'unknownKeyVals') return result;\n // We are checking for undefined anyways. So ignore TS error\n // @ts-ignore\n const converter = converterFactory[key];\n if (converter === undefined) return result;\n const encodedKeyVals = (Array.isArray(value) ? value : [value]).map(\n converter.encode,\n );\n const keyHexes = encodedKeyVals.map(kv => kv.key.toString('hex'));\n keyHexes.forEach(hex => {\n if (keyHexSet.has(hex))\n throw new Error('Serialize Error: Duplicate key: ' + hex);\n keyHexSet.add(hex);\n });\n return result.concat(encodedKeyVals);\n }, []);\n // Get other keyVals that have not yet been gotten\n const otherKeyVals = keyValMap.unknownKeyVals\n ? keyValMap.unknownKeyVals.filter(keyVal => {\n return !keyHexSet.has(keyVal.key.toString('hex'));\n })\n : [];\n return keyVals.concat(otherKeyVals).sort(sortKeyVals);\n}\nfunction psbtToKeyVals({ globalMap, inputs, outputs }) {\n // First parse the global keyVals\n // Get any extra keyvals to pass along\n return {\n globalKeyVals: keyValsFromMap(globalMap, convert.globals),\n inputKeyVals: inputs.map(i => keyValsFromMap(i, convert.inputs)),\n outputKeyVals: outputs.map(o => keyValsFromMap(o, convert.outputs)),\n };\n}\nexports.psbtToKeyVals = psbtToKeyVals;\n", "'use strict';\nfunction __export(m) {\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\n}\nObject.defineProperty(exports, '__esModule', { value: true });\n__export(require('./fromBuffer'));\n__export(require('./toBuffer'));\n", "'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst parser_1 = require('../parser');\nfunction combine(psbts) {\n const self = psbts[0];\n const selfKeyVals = parser_1.psbtToKeyVals(self);\n const others = psbts.slice(1);\n if (others.length === 0) throw new Error('Combine: Nothing to combine');\n const selfTx = getTx(self);\n if (selfTx === undefined) {\n throw new Error('Combine: Self missing transaction');\n }\n const selfGlobalSet = getKeySet(selfKeyVals.globalKeyVals);\n const selfInputSets = selfKeyVals.inputKeyVals.map(getKeySet);\n const selfOutputSets = selfKeyVals.outputKeyVals.map(getKeySet);\n for (const other of others) {\n const otherTx = getTx(other);\n if (\n otherTx === undefined ||\n !otherTx.toBuffer().equals(selfTx.toBuffer())\n ) {\n throw new Error(\n 'Combine: One of the Psbts does not have the same transaction.',\n );\n }\n const otherKeyVals = parser_1.psbtToKeyVals(other);\n const otherGlobalSet = getKeySet(otherKeyVals.globalKeyVals);\n otherGlobalSet.forEach(\n keyPusher(\n selfGlobalSet,\n selfKeyVals.globalKeyVals,\n otherKeyVals.globalKeyVals,\n ),\n );\n const otherInputSets = otherKeyVals.inputKeyVals.map(getKeySet);\n otherInputSets.forEach((inputSet, idx) =>\n inputSet.forEach(\n keyPusher(\n selfInputSets[idx],\n selfKeyVals.inputKeyVals[idx],\n otherKeyVals.inputKeyVals[idx],\n ),\n ),\n );\n const otherOutputSets = otherKeyVals.outputKeyVals.map(getKeySet);\n otherOutputSets.forEach((outputSet, idx) =>\n outputSet.forEach(\n keyPusher(\n selfOutputSets[idx],\n selfKeyVals.outputKeyVals[idx],\n otherKeyVals.outputKeyVals[idx],\n ),\n ),\n );\n }\n return parser_1.psbtFromKeyVals(selfTx, {\n globalMapKeyVals: selfKeyVals.globalKeyVals,\n inputKeyVals: selfKeyVals.inputKeyVals,\n outputKeyVals: selfKeyVals.outputKeyVals,\n });\n}\nexports.combine = combine;\nfunction keyPusher(selfSet, selfKeyVals, otherKeyVals) {\n return key => {\n if (selfSet.has(key)) return;\n const newKv = otherKeyVals.filter(kv => kv.key.toString('hex') === key)[0];\n selfKeyVals.push(newKv);\n selfSet.add(key);\n };\n}\nfunction getTx(psbt) {\n return psbt.globalMap.unsignedTx;\n}\nfunction getKeySet(keyVals) {\n const set = new Set();\n keyVals.forEach(keyVal => {\n const hex = keyVal.key.toString('hex');\n if (set.has(hex))\n throw new Error('Combine: KeyValue Map keys should be unique');\n set.add(hex);\n });\n return set;\n}\n", "'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst converter = require('./converter');\nfunction checkForInput(inputs, inputIndex) {\n const input = inputs[inputIndex];\n if (input === undefined) throw new Error(`No input #${inputIndex}`);\n return input;\n}\nexports.checkForInput = checkForInput;\nfunction checkForOutput(outputs, outputIndex) {\n const output = outputs[outputIndex];\n if (output === undefined) throw new Error(`No output #${outputIndex}`);\n return output;\n}\nexports.checkForOutput = checkForOutput;\nfunction checkHasKey(checkKeyVal, keyVals, enumLength) {\n if (checkKeyVal.key[0] < enumLength) {\n throw new Error(\n `Use the method for your specific key instead of addUnknownKeyVal*`,\n );\n }\n if (\n keyVals &&\n keyVals.filter(kv => kv.key.equals(checkKeyVal.key)).length !== 0\n ) {\n throw new Error(`Duplicate Key: ${checkKeyVal.key.toString('hex')}`);\n }\n}\nexports.checkHasKey = checkHasKey;\nfunction getEnumLength(myenum) {\n let count = 0;\n Object.keys(myenum).forEach(val => {\n if (Number(isNaN(Number(val)))) {\n count++;\n }\n });\n return count;\n}\nexports.getEnumLength = getEnumLength;\nfunction inputCheckUncleanFinalized(inputIndex, input) {\n let result = false;\n if (input.nonWitnessUtxo || input.witnessUtxo) {\n const needScriptSig = !!input.redeemScript;\n const needWitnessScript = !!input.witnessScript;\n const scriptSigOK = !needScriptSig || !!input.finalScriptSig;\n const witnessScriptOK = !needWitnessScript || !!input.finalScriptWitness;\n const hasOneFinal = !!input.finalScriptSig || !!input.finalScriptWitness;\n result = scriptSigOK && witnessScriptOK && hasOneFinal;\n }\n if (result === false) {\n throw new Error(\n `Input #${inputIndex} has too much or too little data to clean`,\n );\n }\n}\nexports.inputCheckUncleanFinalized = inputCheckUncleanFinalized;\nfunction throwForUpdateMaker(typeName, name, expected, data) {\n throw new Error(\n `Data for ${typeName} key ${name} is incorrect: Expected ` +\n `${expected} and got ${JSON.stringify(data)}`,\n );\n}\nfunction updateMaker(typeName) {\n return (updateData, mainData) => {\n for (const name of Object.keys(updateData)) {\n // @ts-ignore\n const data = updateData[name];\n // @ts-ignore\n const { canAdd, canAddToArray, check, expected } =\n // @ts-ignore\n converter[typeName + 's'][name] || {};\n const isArray = !!canAddToArray;\n // If unknown data. ignore and do not add\n if (check) {\n if (isArray) {\n if (\n !Array.isArray(data) ||\n // @ts-ignore\n (mainData[name] && !Array.isArray(mainData[name]))\n ) {\n throw new Error(`Key type ${name} must be an array`);\n }\n if (!data.every(check)) {\n throwForUpdateMaker(typeName, name, expected, data);\n }\n // @ts-ignore\n const arr = mainData[name] || [];\n const dupeCheckSet = new Set();\n if (!data.every(v => canAddToArray(arr, v, dupeCheckSet))) {\n throw new Error('Can not add duplicate data to array');\n }\n // @ts-ignore\n mainData[name] = arr.concat(data);\n } else {\n if (!check(data)) {\n throwForUpdateMaker(typeName, name, expected, data);\n }\n if (!canAdd(mainData, data)) {\n throw new Error(`Can not add duplicate data to ${typeName}`);\n }\n // @ts-ignore\n mainData[name] = data;\n }\n }\n }\n };\n}\nexports.updateGlobal = updateMaker('global');\nexports.updateInput = updateMaker('input');\nexports.updateOutput = updateMaker('output');\nfunction addInputAttributes(inputs, data) {\n const index = inputs.length - 1;\n const input = checkForInput(inputs, index);\n exports.updateInput(data, input);\n}\nexports.addInputAttributes = addInputAttributes;\nfunction addOutputAttributes(outputs, data) {\n const index = outputs.length - 1;\n const output = checkForOutput(outputs, index);\n exports.updateOutput(data, output);\n}\nexports.addOutputAttributes = addOutputAttributes;\nfunction defaultVersionSetter(version, txBuf) {\n if (!Buffer.isBuffer(txBuf) || txBuf.length < 4) {\n throw new Error('Set Version: Invalid Transaction');\n }\n txBuf.writeUInt32LE(version, 0);\n return txBuf;\n}\nexports.defaultVersionSetter = defaultVersionSetter;\nfunction defaultLocktimeSetter(locktime, txBuf) {\n if (!Buffer.isBuffer(txBuf) || txBuf.length < 4) {\n throw new Error('Set Locktime: Invalid Transaction');\n }\n txBuf.writeUInt32LE(locktime, txBuf.length - 4);\n return txBuf;\n}\nexports.defaultLocktimeSetter = defaultLocktimeSetter;\n", "'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst combiner_1 = require('./combiner');\nconst parser_1 = require('./parser');\nconst typeFields_1 = require('./typeFields');\nconst utils_1 = require('./utils');\nclass Psbt {\n constructor(tx) {\n this.inputs = [];\n this.outputs = [];\n this.globalMap = {\n unsignedTx: tx,\n };\n }\n static fromBase64(data, txFromBuffer) {\n const buffer = Buffer.from(data, 'base64');\n return this.fromBuffer(buffer, txFromBuffer);\n }\n static fromHex(data, txFromBuffer) {\n const buffer = Buffer.from(data, 'hex');\n return this.fromBuffer(buffer, txFromBuffer);\n }\n static fromBuffer(buffer, txFromBuffer) {\n const results = parser_1.psbtFromBuffer(buffer, txFromBuffer);\n const psbt = new this(results.globalMap.unsignedTx);\n Object.assign(psbt, results);\n return psbt;\n }\n toBase64() {\n const buffer = this.toBuffer();\n return buffer.toString('base64');\n }\n toHex() {\n const buffer = this.toBuffer();\n return buffer.toString('hex');\n }\n toBuffer() {\n return parser_1.psbtToBuffer(this);\n }\n updateGlobal(updateData) {\n utils_1.updateGlobal(updateData, this.globalMap);\n return this;\n }\n updateInput(inputIndex, updateData) {\n const input = utils_1.checkForInput(this.inputs, inputIndex);\n utils_1.updateInput(updateData, input);\n return this;\n }\n updateOutput(outputIndex, updateData) {\n const output = utils_1.checkForOutput(this.outputs, outputIndex);\n utils_1.updateOutput(updateData, output);\n return this;\n }\n addUnknownKeyValToGlobal(keyVal) {\n utils_1.checkHasKey(\n keyVal,\n this.globalMap.unknownKeyVals,\n utils_1.getEnumLength(typeFields_1.GlobalTypes),\n );\n if (!this.globalMap.unknownKeyVals) this.globalMap.unknownKeyVals = [];\n this.globalMap.unknownKeyVals.push(keyVal);\n return this;\n }\n addUnknownKeyValToInput(inputIndex, keyVal) {\n const input = utils_1.checkForInput(this.inputs, inputIndex);\n utils_1.checkHasKey(\n keyVal,\n input.unknownKeyVals,\n utils_1.getEnumLength(typeFields_1.InputTypes),\n );\n if (!input.unknownKeyVals) input.unknownKeyVals = [];\n input.unknownKeyVals.push(keyVal);\n return this;\n }\n addUnknownKeyValToOutput(outputIndex, keyVal) {\n const output = utils_1.checkForOutput(this.outputs, outputIndex);\n utils_1.checkHasKey(\n keyVal,\n output.unknownKeyVals,\n utils_1.getEnumLength(typeFields_1.OutputTypes),\n );\n if (!output.unknownKeyVals) output.unknownKeyVals = [];\n output.unknownKeyVals.push(keyVal);\n return this;\n }\n addInput(inputData) {\n this.globalMap.unsignedTx.addInput(inputData);\n this.inputs.push({\n unknownKeyVals: [],\n });\n const addKeyVals = inputData.unknownKeyVals || [];\n const inputIndex = this.inputs.length - 1;\n if (!Array.isArray(addKeyVals)) {\n throw new Error('unknownKeyVals must be an Array');\n }\n addKeyVals.forEach(keyVal =>\n this.addUnknownKeyValToInput(inputIndex, keyVal),\n );\n utils_1.addInputAttributes(this.inputs, inputData);\n return this;\n }\n addOutput(outputData) {\n this.globalMap.unsignedTx.addOutput(outputData);\n this.outputs.push({\n unknownKeyVals: [],\n });\n const addKeyVals = outputData.unknownKeyVals || [];\n const outputIndex = this.outputs.length - 1;\n if (!Array.isArray(addKeyVals)) {\n throw new Error('unknownKeyVals must be an Array');\n }\n addKeyVals.forEach(keyVal =>\n this.addUnknownKeyValToInput(outputIndex, keyVal),\n );\n utils_1.addOutputAttributes(this.outputs, outputData);\n return this;\n }\n clearFinalizedInput(inputIndex) {\n const input = utils_1.checkForInput(this.inputs, inputIndex);\n utils_1.inputCheckUncleanFinalized(inputIndex, input);\n for (const key of Object.keys(input)) {\n if (\n ![\n 'witnessUtxo',\n 'nonWitnessUtxo',\n 'finalScriptSig',\n 'finalScriptWitness',\n 'unknownKeyVals',\n ].includes(key)\n ) {\n // @ts-ignore\n delete input[key];\n }\n }\n return this;\n }\n combine(...those) {\n // Combine this with those.\n // Return self for chaining.\n const result = combiner_1.combine([this].concat(those));\n Object.assign(this, result);\n return this;\n }\n getTransaction() {\n return this.globalMap.unsignedTx.toBuffer();\n }\n}\nexports.Psbt = Psbt;\n", "'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst bip174_1 = require('bip174');\nconst varuint = require('bip174/src/lib/converter/varint');\nconst utils_1 = require('bip174/src/lib/utils');\nconst address_1 = require('./address');\nconst bufferutils_1 = require('./bufferutils');\nconst crypto_1 = require('./crypto');\nconst ecpair_1 = require('./ecpair');\nconst networks_1 = require('./networks');\nconst payments = require('./payments');\nconst bscript = require('./script');\nconst transaction_1 = require('./transaction');\n/**\n * These are the default arguments for a Psbt instance.\n */\nconst DEFAULT_OPTS = {\n /**\n * A bitcoinjs Network object. This is only used if you pass an `address`\n * parameter to addOutput. Otherwise it is not needed and can be left default.\n */\n network: networks_1.bitcoin,\n /**\n * When extractTransaction is called, the fee rate is checked.\n * THIS IS NOT TO BE RELIED ON.\n * It is only here as a last ditch effort to prevent sending a 500 BTC fee etc.\n */\n maximumFeeRate: 5000,\n};\n/**\n * Psbt class can parse and generate a PSBT binary based off of the BIP174.\n * There are 6 roles that this class fulfills. (Explained in BIP174)\n *\n * Creator: This can be done with `new Psbt()`\n * Updater: This can be done with `psbt.addInput(input)`, `psbt.addInputs(inputs)`,\n * `psbt.addOutput(output)`, `psbt.addOutputs(outputs)` when you are looking to\n * add new inputs and outputs to the PSBT, and `psbt.updateGlobal(itemObject)`,\n * `psbt.updateInput(itemObject)`, `psbt.updateOutput(itemObject)`\n * addInput requires hash: Buffer | string; and index: number; as attributes\n * and can also include any attributes that are used in updateInput method.\n * addOutput requires script: Buffer; and value: number; and likewise can include\n * data for updateOutput.\n * For a list of what attributes should be what types. Check the bip174 library.\n * Also, check the integration tests for some examples of usage.\n * Signer: There are a few methods. signAllInputs and signAllInputsAsync, which will search all input\n * information for your pubkey or pubkeyhash, and only sign inputs where it finds\n * your info. Or you can explicitly sign a specific input with signInput and\n * signInputAsync. For the async methods you can create a SignerAsync object\n * and use something like a hardware wallet to sign with. (You must implement this)\n * Combiner: psbts can be combined easily with `psbt.combine(psbt2, psbt3, psbt4 ...)`\n * the psbt calling combine will always have precedence when a conflict occurs.\n * Combine checks if the internal bitcoin transaction is the same, so be sure that\n * all sequences, version, locktime, etc. are the same before combining.\n * Input Finalizer: This role is fairly important. Not only does it need to construct\n * the input scriptSigs and witnesses, but it SHOULD verify the signatures etc.\n * Before running `psbt.finalizeAllInputs()` please run `psbt.validateSignaturesOfAllInputs()`\n * Running any finalize method will delete any data in the input(s) that are no longer\n * needed due to the finalized scripts containing the information.\n * Transaction Extractor: This role will perform some checks before returning a\n * Transaction object. Such as fee rate not being larger than maximumFeeRate etc.\n */\nclass Psbt {\n constructor(opts = {}, data = new bip174_1.Psbt(new PsbtTransaction())) {\n this.data = data;\n // set defaults\n this.opts = Object.assign({}, DEFAULT_OPTS, opts);\n this.__CACHE = {\n __NON_WITNESS_UTXO_TX_CACHE: [],\n __NON_WITNESS_UTXO_BUF_CACHE: [],\n __TX_IN_CACHE: {},\n __TX: this.data.globalMap.unsignedTx.tx,\n // Old TransactionBuilder behavior was to not confirm input values\n // before signing. Even though we highly encourage people to get\n // the full parent transaction to verify values, the ability to\n // sign non-segwit inputs without the full transaction was often\n // requested. So the only way to activate is to use @ts-ignore.\n // We will disable exporting the Psbt when unsafe sign is active.\n // because it is not BIP174 compliant.\n __UNSAFE_SIGN_NONSEGWIT: false,\n };\n if (this.data.inputs.length === 0) this.setVersion(2);\n // Make data hidden when enumerating\n const dpew = (obj, attr, enumerable, writable) =>\n Object.defineProperty(obj, attr, {\n enumerable,\n writable,\n });\n dpew(this, '__CACHE', false, true);\n dpew(this, 'opts', false, true);\n }\n static fromBase64(data, opts = {}) {\n const buffer = Buffer.from(data, 'base64');\n return this.fromBuffer(buffer, opts);\n }\n static fromHex(data, opts = {}) {\n const buffer = Buffer.from(data, 'hex');\n return this.fromBuffer(buffer, opts);\n }\n static fromBuffer(buffer, opts = {}) {\n const psbtBase = bip174_1.Psbt.fromBuffer(buffer, transactionFromBuffer);\n const psbt = new Psbt(opts, psbtBase);\n checkTxForDupeIns(psbt.__CACHE.__TX, psbt.__CACHE);\n return psbt;\n }\n get inputCount() {\n return this.data.inputs.length;\n }\n get version() {\n return this.__CACHE.__TX.version;\n }\n set version(version) {\n this.setVersion(version);\n }\n get locktime() {\n return this.__CACHE.__TX.locktime;\n }\n set locktime(locktime) {\n this.setLocktime(locktime);\n }\n get txInputs() {\n return this.__CACHE.__TX.ins.map(input => ({\n hash: bufferutils_1.cloneBuffer(input.hash),\n index: input.index,\n sequence: input.sequence,\n }));\n }\n get txOutputs() {\n return this.__CACHE.__TX.outs.map(output => {\n let address;\n try {\n address = address_1.fromOutputScript(output.script, this.opts.network);\n } catch (_) {}\n return {\n script: bufferutils_1.cloneBuffer(output.script),\n value: output.value,\n address,\n };\n });\n }\n combine(...those) {\n this.data.combine(...those.map(o => o.data));\n return this;\n }\n clone() {\n // TODO: more efficient cloning\n const res = Psbt.fromBuffer(this.data.toBuffer());\n res.opts = JSON.parse(JSON.stringify(this.opts));\n return res;\n }\n setMaximumFeeRate(satoshiPerByte) {\n check32Bit(satoshiPerByte); // 42.9 BTC per byte IS excessive... so throw\n this.opts.maximumFeeRate = satoshiPerByte;\n }\n setVersion(version) {\n check32Bit(version);\n checkInputsForPartialSig(this.data.inputs, 'setVersion');\n const c = this.__CACHE;\n c.__TX.version = version;\n c.__EXTRACTED_TX = undefined;\n return this;\n }\n setLocktime(locktime) {\n check32Bit(locktime);\n checkInputsForPartialSig(this.data.inputs, 'setLocktime');\n const c = this.__CACHE;\n c.__TX.locktime = locktime;\n c.__EXTRACTED_TX = undefined;\n return this;\n }\n setInputSequence(inputIndex, sequence) {\n check32Bit(sequence);\n checkInputsForPartialSig(this.data.inputs, 'setInputSequence');\n const c = this.__CACHE;\n if (c.__TX.ins.length <= inputIndex) {\n throw new Error('Input index too high');\n }\n c.__TX.ins[inputIndex].sequence = sequence;\n c.__EXTRACTED_TX = undefined;\n return this;\n }\n addInputs(inputDatas) {\n inputDatas.forEach(inputData => this.addInput(inputData));\n return this;\n }\n addInput(inputData) {\n if (\n arguments.length > 1 ||\n !inputData ||\n inputData.hash === undefined ||\n inputData.index === undefined\n ) {\n throw new Error(\n `Invalid arguments for Psbt.addInput. ` +\n `Requires single object with at least [hash] and [index]`,\n );\n }\n checkInputsForPartialSig(this.data.inputs, 'addInput');\n if (inputData.witnessScript) checkInvalidP2WSH(inputData.witnessScript);\n const c = this.__CACHE;\n this.data.addInput(inputData);\n const txIn = c.__TX.ins[c.__TX.ins.length - 1];\n checkTxInputCache(c, txIn);\n const inputIndex = this.data.inputs.length - 1;\n const input = this.data.inputs[inputIndex];\n if (input.nonWitnessUtxo) {\n addNonWitnessTxCache(this.__CACHE, input, inputIndex);\n }\n c.__FEE = undefined;\n c.__FEE_RATE = undefined;\n c.__EXTRACTED_TX = undefined;\n return this;\n }\n addOutputs(outputDatas) {\n outputDatas.forEach(outputData => this.addOutput(outputData));\n return this;\n }\n addOutput(outputData) {\n if (\n arguments.length > 1 ||\n !outputData ||\n outputData.value === undefined ||\n (outputData.address === undefined && outputData.script === undefined)\n ) {\n throw new Error(\n `Invalid arguments for Psbt.addOutput. ` +\n `Requires single object with at least [script or address] and [value]`,\n );\n }\n checkInputsForPartialSig(this.data.inputs, 'addOutput');\n const { address } = outputData;\n if (typeof address === 'string') {\n const { network } = this.opts;\n const script = address_1.toOutputScript(address, network);\n outputData = Object.assign(outputData, { script });\n }\n const c = this.__CACHE;\n this.data.addOutput(outputData);\n c.__FEE = undefined;\n c.__FEE_RATE = undefined;\n c.__EXTRACTED_TX = undefined;\n return this;\n }\n extractTransaction(disableFeeCheck) {\n if (!this.data.inputs.every(isFinalized)) throw new Error('Not finalized');\n const c = this.__CACHE;\n if (!disableFeeCheck) {\n checkFees(this, c, this.opts);\n }\n if (c.__EXTRACTED_TX) return c.__EXTRACTED_TX;\n const tx = c.__TX.clone();\n inputFinalizeGetAmts(this.data.inputs, tx, c, true);\n return tx;\n }\n getFeeRate() {\n return getTxCacheValue(\n '__FEE_RATE',\n 'fee rate',\n this.data.inputs,\n this.__CACHE,\n );\n }\n getFee() {\n return getTxCacheValue('__FEE', 'fee', this.data.inputs, this.__CACHE);\n }\n finalizeAllInputs() {\n utils_1.checkForInput(this.data.inputs, 0); // making sure we have at least one\n range(this.data.inputs.length).forEach(idx => this.finalizeInput(idx));\n return this;\n }\n finalizeInput(inputIndex, finalScriptsFunc = getFinalScripts) {\n const input = utils_1.checkForInput(this.data.inputs, inputIndex);\n const { script, isP2SH, isP2WSH, isSegwit } = getScriptFromInput(\n inputIndex,\n input,\n this.__CACHE,\n );\n if (!script) throw new Error(`No script found for input #${inputIndex}`);\n checkPartialSigSighashes(input);\n const { finalScriptSig, finalScriptWitness } = finalScriptsFunc(\n inputIndex,\n input,\n script,\n isSegwit,\n isP2SH,\n isP2WSH,\n );\n if (finalScriptSig) this.data.updateInput(inputIndex, { finalScriptSig });\n if (finalScriptWitness)\n this.data.updateInput(inputIndex, { finalScriptWitness });\n if (!finalScriptSig && !finalScriptWitness)\n throw new Error(`Unknown error finalizing input #${inputIndex}`);\n this.data.clearFinalizedInput(inputIndex);\n return this;\n }\n getInputType(inputIndex) {\n const input = utils_1.checkForInput(this.data.inputs, inputIndex);\n const script = getScriptFromUtxo(inputIndex, input, this.__CACHE);\n const result = getMeaningfulScript(\n script,\n inputIndex,\n 'input',\n input.redeemScript || redeemFromFinalScriptSig(input.finalScriptSig),\n input.witnessScript ||\n redeemFromFinalWitnessScript(input.finalScriptWitness),\n );\n const type = result.type === 'raw' ? '' : result.type + '-';\n const mainType = classifyScript(result.meaningfulScript);\n return type + mainType;\n }\n inputHasPubkey(inputIndex, pubkey) {\n const input = utils_1.checkForInput(this.data.inputs, inputIndex);\n return pubkeyInInput(pubkey, input, inputIndex, this.__CACHE);\n }\n inputHasHDKey(inputIndex, root) {\n const input = utils_1.checkForInput(this.data.inputs, inputIndex);\n const derivationIsMine = bip32DerivationIsMine(root);\n return (\n !!input.bip32Derivation && input.bip32Derivation.some(derivationIsMine)\n );\n }\n outputHasPubkey(outputIndex, pubkey) {\n const output = utils_1.checkForOutput(this.data.outputs, outputIndex);\n return pubkeyInOutput(pubkey, output, outputIndex, this.__CACHE);\n }\n outputHasHDKey(outputIndex, root) {\n const output = utils_1.checkForOutput(this.data.outputs, outputIndex);\n const derivationIsMine = bip32DerivationIsMine(root);\n return (\n !!output.bip32Derivation && output.bip32Derivation.some(derivationIsMine)\n );\n }\n validateSignaturesOfAllInputs() {\n utils_1.checkForInput(this.data.inputs, 0); // making sure we have at least one\n const results = range(this.data.inputs.length).map(idx =>\n this.validateSignaturesOfInput(idx),\n );\n return results.reduce((final, res) => res === true && final, true);\n }\n validateSignaturesOfInput(inputIndex, pubkey) {\n const input = this.data.inputs[inputIndex];\n const partialSig = (input || {}).partialSig;\n if (!input || !partialSig || partialSig.length < 1)\n throw new Error('No signatures to validate');\n const mySigs = pubkey\n ? partialSig.filter(sig => sig.pubkey.equals(pubkey))\n : partialSig;\n if (mySigs.length < 1) throw new Error('No signatures for this pubkey');\n const results = [];\n let hashCache;\n let scriptCache;\n let sighashCache;\n for (const pSig of mySigs) {\n const sig = bscript.signature.decode(pSig.signature);\n const { hash, script } =\n sighashCache !== sig.hashType\n ? getHashForSig(\n inputIndex,\n Object.assign({}, input, { sighashType: sig.hashType }),\n this.__CACHE,\n true,\n )\n : { hash: hashCache, script: scriptCache };\n sighashCache = sig.hashType;\n hashCache = hash;\n scriptCache = script;\n checkScriptForPubkey(pSig.pubkey, script, 'verify');\n const keypair = ecpair_1.fromPublicKey(pSig.pubkey);\n results.push(keypair.verify(hash, sig.signature));\n }\n return results.every(res => res === true);\n }\n signAllInputsHD(\n hdKeyPair,\n sighashTypes = [transaction_1.Transaction.SIGHASH_ALL],\n ) {\n if (!hdKeyPair || !hdKeyPair.publicKey || !hdKeyPair.fingerprint) {\n throw new Error('Need HDSigner to sign input');\n }\n const results = [];\n for (const i of range(this.data.inputs.length)) {\n try {\n this.signInputHD(i, hdKeyPair, sighashTypes);\n results.push(true);\n } catch (err) {\n results.push(false);\n }\n }\n if (results.every(v => v === false)) {\n throw new Error('No inputs were signed');\n }\n return this;\n }\n signAllInputsHDAsync(\n hdKeyPair,\n sighashTypes = [transaction_1.Transaction.SIGHASH_ALL],\n ) {\n return new Promise((resolve, reject) => {\n if (!hdKeyPair || !hdKeyPair.publicKey || !hdKeyPair.fingerprint) {\n return reject(new Error('Need HDSigner to sign input'));\n }\n const results = [];\n const promises = [];\n for (const i of range(this.data.inputs.length)) {\n promises.push(\n this.signInputHDAsync(i, hdKeyPair, sighashTypes).then(\n () => {\n results.push(true);\n },\n () => {\n results.push(false);\n },\n ),\n );\n }\n return Promise.all(promises).then(() => {\n if (results.every(v => v === false)) {\n return reject(new Error('No inputs were signed'));\n }\n resolve();\n });\n });\n }\n signInputHD(\n inputIndex,\n hdKeyPair,\n sighashTypes = [transaction_1.Transaction.SIGHASH_ALL],\n ) {\n if (!hdKeyPair || !hdKeyPair.publicKey || !hdKeyPair.fingerprint) {\n throw new Error('Need HDSigner to sign input');\n }\n const signers = getSignersFromHD(inputIndex, this.data.inputs, hdKeyPair);\n signers.forEach(signer => this.signInput(inputIndex, signer, sighashTypes));\n return this;\n }\n signInputHDAsync(\n inputIndex,\n hdKeyPair,\n sighashTypes = [transaction_1.Transaction.SIGHASH_ALL],\n ) {\n return new Promise((resolve, reject) => {\n if (!hdKeyPair || !hdKeyPair.publicKey || !hdKeyPair.fingerprint) {\n return reject(new Error('Need HDSigner to sign input'));\n }\n const signers = getSignersFromHD(inputIndex, this.data.inputs, hdKeyPair);\n const promises = signers.map(signer =>\n this.signInputAsync(inputIndex, signer, sighashTypes),\n );\n return Promise.all(promises)\n .then(() => {\n resolve();\n })\n .catch(reject);\n });\n }\n signAllInputs(\n keyPair,\n sighashTypes = [transaction_1.Transaction.SIGHASH_ALL],\n ) {\n if (!keyPair || !keyPair.publicKey)\n throw new Error('Need Signer to sign input');\n // TODO: Add a pubkey/pubkeyhash cache to each input\n // as input information is added, then eventually\n // optimize this method.\n const results = [];\n for (const i of range(this.data.inputs.length)) {\n try {\n this.signInput(i, keyPair, sighashTypes);\n results.push(true);\n } catch (err) {\n results.push(false);\n }\n }\n if (results.every(v => v === false)) {\n throw new Error('No inputs were signed');\n }\n return this;\n }\n signAllInputsAsync(\n keyPair,\n sighashTypes = [transaction_1.Transaction.SIGHASH_ALL],\n ) {\n return new Promise((resolve, reject) => {\n if (!keyPair || !keyPair.publicKey)\n return reject(new Error('Need Signer to sign input'));\n // TODO: Add a pubkey/pubkeyhash cache to each input\n // as input information is added, then eventually\n // optimize this method.\n const results = [];\n const promises = [];\n for (const [i] of this.data.inputs.entries()) {\n promises.push(\n this.signInputAsync(i, keyPair, sighashTypes).then(\n () => {\n results.push(true);\n },\n () => {\n results.push(false);\n },\n ),\n );\n }\n return Promise.all(promises).then(() => {\n if (results.every(v => v === false)) {\n return reject(new Error('No inputs were signed'));\n }\n resolve();\n });\n });\n }\n signInput(\n inputIndex,\n keyPair,\n sighashTypes = [transaction_1.Transaction.SIGHASH_ALL],\n ) {\n if (!keyPair || !keyPair.publicKey)\n throw new Error('Need Signer to sign input');\n const { hash, sighashType } = getHashAndSighashType(\n this.data.inputs,\n inputIndex,\n keyPair.publicKey,\n this.__CACHE,\n sighashTypes,\n );\n const partialSig = [\n {\n pubkey: keyPair.publicKey,\n signature: bscript.signature.encode(keyPair.sign(hash), sighashType),\n },\n ];\n this.data.updateInput(inputIndex, { partialSig });\n return this;\n }\n signInputAsync(\n inputIndex,\n keyPair,\n sighashTypes = [transaction_1.Transaction.SIGHASH_ALL],\n ) {\n return Promise.resolve().then(() => {\n if (!keyPair || !keyPair.publicKey)\n throw new Error('Need Signer to sign input');\n const { hash, sighashType } = getHashAndSighashType(\n this.data.inputs,\n inputIndex,\n keyPair.publicKey,\n this.__CACHE,\n sighashTypes,\n );\n return Promise.resolve(keyPair.sign(hash)).then(signature => {\n const partialSig = [\n {\n pubkey: keyPair.publicKey,\n signature: bscript.signature.encode(signature, sighashType),\n },\n ];\n this.data.updateInput(inputIndex, { partialSig });\n });\n });\n }\n toBuffer() {\n checkCache(this.__CACHE);\n return this.data.toBuffer();\n }\n toHex() {\n checkCache(this.__CACHE);\n return this.data.toHex();\n }\n toBase64() {\n checkCache(this.__CACHE);\n return this.data.toBase64();\n }\n updateGlobal(updateData) {\n this.data.updateGlobal(updateData);\n return this;\n }\n updateInput(inputIndex, updateData) {\n if (updateData.witnessScript) checkInvalidP2WSH(updateData.witnessScript);\n this.data.updateInput(inputIndex, updateData);\n if (updateData.nonWitnessUtxo) {\n addNonWitnessTxCache(\n this.__CACHE,\n this.data.inputs[inputIndex],\n inputIndex,\n );\n }\n return this;\n }\n updateOutput(outputIndex, updateData) {\n this.data.updateOutput(outputIndex, updateData);\n return this;\n }\n addUnknownKeyValToGlobal(keyVal) {\n this.data.addUnknownKeyValToGlobal(keyVal);\n return this;\n }\n addUnknownKeyValToInput(inputIndex, keyVal) {\n this.data.addUnknownKeyValToInput(inputIndex, keyVal);\n return this;\n }\n addUnknownKeyValToOutput(outputIndex, keyVal) {\n this.data.addUnknownKeyValToOutput(outputIndex, keyVal);\n return this;\n }\n clearFinalizedInput(inputIndex) {\n this.data.clearFinalizedInput(inputIndex);\n return this;\n }\n}\nexports.Psbt = Psbt;\n/**\n * This function is needed to pass to the bip174 base class's fromBuffer.\n * It takes the \"transaction buffer\" portion of the psbt buffer and returns a\n * Transaction (From the bip174 library) interface.\n */\nconst transactionFromBuffer = buffer => new PsbtTransaction(buffer);\n/**\n * This class implements the Transaction interface from bip174 library.\n * It contains a bitcoinjs-lib Transaction object.\n */\nclass PsbtTransaction {\n constructor(buffer = Buffer.from([2, 0, 0, 0, 0, 0, 0, 0, 0, 0])) {\n this.tx = transaction_1.Transaction.fromBuffer(buffer);\n checkTxEmpty(this.tx);\n Object.defineProperty(this, 'tx', {\n enumerable: false,\n writable: true,\n });\n }\n getInputOutputCounts() {\n return {\n inputCount: this.tx.ins.length,\n outputCount: this.tx.outs.length,\n };\n }\n addInput(input) {\n if (\n input.hash === undefined ||\n input.index === undefined ||\n (!Buffer.isBuffer(input.hash) && typeof input.hash !== 'string') ||\n typeof input.index !== 'number'\n ) {\n throw new Error('Error adding input.');\n }\n const hash =\n typeof input.hash === 'string'\n ? bufferutils_1.reverseBuffer(Buffer.from(input.hash, 'hex'))\n : input.hash;\n this.tx.addInput(hash, input.index, input.sequence);\n }\n addOutput(output) {\n if (\n output.script === undefined ||\n output.value === undefined ||\n !Buffer.isBuffer(output.script) ||\n typeof output.value !== 'number'\n ) {\n throw new Error('Error adding output.');\n }\n this.tx.addOutput(output.script, output.value);\n }\n toBuffer() {\n return this.tx.toBuffer();\n }\n}\nfunction canFinalize(input, script, scriptType) {\n switch (scriptType) {\n case 'pubkey':\n case 'pubkeyhash':\n case 'witnesspubkeyhash':\n return hasSigs(1, input.partialSig);\n case 'multisig':\n const p2ms = payments.p2ms({ output: script });\n return hasSigs(p2ms.m, input.partialSig, p2ms.pubkeys);\n default:\n return false;\n }\n}\nfunction checkCache(cache) {\n if (cache.__UNSAFE_SIGN_NONSEGWIT !== false) {\n throw new Error('Not BIP174 compliant, can not export');\n }\n}\nfunction hasSigs(neededSigs, partialSig, pubkeys) {\n if (!partialSig) return false;\n let sigs;\n if (pubkeys) {\n sigs = pubkeys\n .map(pkey => {\n const pubkey = ecpair_1.fromPublicKey(pkey, { compressed: true })\n .publicKey;\n return partialSig.find(pSig => pSig.pubkey.equals(pubkey));\n })\n .filter(v => !!v);\n } else {\n sigs = partialSig;\n }\n if (sigs.length > neededSigs) throw new Error('Too many signatures');\n return sigs.length === neededSigs;\n}\nfunction isFinalized(input) {\n return !!input.finalScriptSig || !!input.finalScriptWitness;\n}\nfunction isPaymentFactory(payment) {\n return script => {\n try {\n payment({ output: script });\n return true;\n } catch (err) {\n return false;\n }\n };\n}\nconst isP2MS = isPaymentFactory(payments.p2ms);\nconst isP2PK = isPaymentFactory(payments.p2pk);\nconst isP2PKH = isPaymentFactory(payments.p2pkh);\nconst isP2WPKH = isPaymentFactory(payments.p2wpkh);\nconst isP2WSHScript = isPaymentFactory(payments.p2wsh);\nconst isP2SHScript = isPaymentFactory(payments.p2sh);\nfunction bip32DerivationIsMine(root) {\n return d => {\n if (!d.masterFingerprint.equals(root.fingerprint)) return false;\n if (!root.derivePath(d.path).publicKey.equals(d.pubkey)) return false;\n return true;\n };\n}\nfunction check32Bit(num) {\n if (\n typeof num !== 'number' ||\n num !== Math.floor(num) ||\n num > 0xffffffff ||\n num < 0\n ) {\n throw new Error('Invalid 32 bit integer');\n }\n}\nfunction checkFees(psbt, cache, opts) {\n const feeRate = cache.__FEE_RATE || psbt.getFeeRate();\n const vsize = cache.__EXTRACTED_TX.virtualSize();\n const satoshis = feeRate * vsize;\n if (feeRate >= opts.maximumFeeRate) {\n throw new Error(\n `Warning: You are paying around ${(satoshis / 1e8).toFixed(8)} in ` +\n `fees, which is ${feeRate} satoshi per byte for a transaction ` +\n `with a VSize of ${vsize} bytes (segwit counted as 0.25 byte per ` +\n `byte). Use setMaximumFeeRate method to raise your threshold, or ` +\n `pass true to the first arg of extractTransaction.`,\n );\n }\n}\nfunction checkInputsForPartialSig(inputs, action) {\n inputs.forEach(input => {\n let throws = false;\n let pSigs = [];\n if ((input.partialSig || []).length === 0) {\n if (!input.finalScriptSig && !input.finalScriptWitness) return;\n pSigs = getPsigsFromInputFinalScripts(input);\n } else {\n pSigs = input.partialSig;\n }\n pSigs.forEach(pSig => {\n const { hashType } = bscript.signature.decode(pSig.signature);\n const whitelist = [];\n const isAnyoneCanPay =\n hashType & transaction_1.Transaction.SIGHASH_ANYONECANPAY;\n if (isAnyoneCanPay) whitelist.push('addInput');\n const hashMod = hashType & 0x1f;\n switch (hashMod) {\n case transaction_1.Transaction.SIGHASH_ALL:\n break;\n case transaction_1.Transaction.SIGHASH_SINGLE:\n case transaction_1.Transaction.SIGHASH_NONE:\n whitelist.push('addOutput');\n whitelist.push('setInputSequence');\n break;\n }\n if (whitelist.indexOf(action) === -1) {\n throws = true;\n }\n });\n if (throws) {\n throw new Error('Can not modify transaction, signatures exist.');\n }\n });\n}\nfunction checkPartialSigSighashes(input) {\n if (!input.sighashType || !input.partialSig) return;\n const { partialSig, sighashType } = input;\n partialSig.forEach(pSig => {\n const { hashType } = bscript.signature.decode(pSig.signature);\n if (sighashType !== hashType) {\n throw new Error('Signature sighash does not match input sighash type');\n }\n });\n}\nfunction checkScriptForPubkey(pubkey, script, action) {\n if (!pubkeyInScript(pubkey, script)) {\n throw new Error(\n `Can not ${action} for this input with the key ${pubkey.toString('hex')}`,\n );\n }\n}\nfunction checkTxEmpty(tx) {\n const isEmpty = tx.ins.every(\n input =>\n input.script &&\n input.script.length === 0 &&\n input.witness &&\n input.witness.length === 0,\n );\n if (!isEmpty) {\n throw new Error('Format Error: Transaction ScriptSigs are not empty');\n }\n}\nfunction checkTxForDupeIns(tx, cache) {\n tx.ins.forEach(input => {\n checkTxInputCache(cache, input);\n });\n}\nfunction checkTxInputCache(cache, input) {\n const key =\n bufferutils_1.reverseBuffer(Buffer.from(input.hash)).toString('hex') +\n ':' +\n input.index;\n if (cache.__TX_IN_CACHE[key]) throw new Error('Duplicate input detected.');\n cache.__TX_IN_CACHE[key] = 1;\n}\nfunction scriptCheckerFactory(payment, paymentScriptName) {\n return (inputIndex, scriptPubKey, redeemScript, ioType) => {\n const redeemScriptOutput = payment({\n redeem: { output: redeemScript },\n }).output;\n if (!scriptPubKey.equals(redeemScriptOutput)) {\n throw new Error(\n `${paymentScriptName} for ${ioType} #${inputIndex} doesn't match the scriptPubKey in the prevout`,\n );\n }\n };\n}\nconst checkRedeemScript = scriptCheckerFactory(payments.p2sh, 'Redeem script');\nconst checkWitnessScript = scriptCheckerFactory(\n payments.p2wsh,\n 'Witness script',\n);\nfunction getTxCacheValue(key, name, inputs, c) {\n if (!inputs.every(isFinalized))\n throw new Error(`PSBT must be finalized to calculate ${name}`);\n if (key === '__FEE_RATE' && c.__FEE_RATE) return c.__FEE_RATE;\n if (key === '__FEE' && c.__FEE) return c.__FEE;\n let tx;\n let mustFinalize = true;\n if (c.__EXTRACTED_TX) {\n tx = c.__EXTRACTED_TX;\n mustFinalize = false;\n } else {\n tx = c.__TX.clone();\n }\n inputFinalizeGetAmts(inputs, tx, c, mustFinalize);\n if (key === '__FEE_RATE') return c.__FEE_RATE;\n else if (key === '__FEE') return c.__FEE;\n}\nfunction getFinalScripts(inputIndex, input, script, isSegwit, isP2SH, isP2WSH) {\n const scriptType = classifyScript(script);\n if (!canFinalize(input, script, scriptType))\n throw new Error(`Can not finalize input #${inputIndex}`);\n return prepareFinalScripts(\n script,\n scriptType,\n input.partialSig,\n isSegwit,\n isP2SH,\n isP2WSH,\n );\n}\nfunction prepareFinalScripts(\n script,\n scriptType,\n partialSig,\n isSegwit,\n isP2SH,\n isP2WSH,\n) {\n let finalScriptSig;\n let finalScriptWitness;\n // Wow, the payments API is very handy\n const payment = getPayment(script, scriptType, partialSig);\n const p2wsh = !isP2WSH ? null : payments.p2wsh({ redeem: payment });\n const p2sh = !isP2SH ? null : payments.p2sh({ redeem: p2wsh || payment });\n if (isSegwit) {\n if (p2wsh) {\n finalScriptWitness = witnessStackToScriptWitness(p2wsh.witness);\n } else {\n finalScriptWitness = witnessStackToScriptWitness(payment.witness);\n }\n if (p2sh) {\n finalScriptSig = p2sh.input;\n }\n } else {\n if (p2sh) {\n finalScriptSig = p2sh.input;\n } else {\n finalScriptSig = payment.input;\n }\n }\n return {\n finalScriptSig,\n finalScriptWitness,\n };\n}\nfunction getHashAndSighashType(\n inputs,\n inputIndex,\n pubkey,\n cache,\n sighashTypes,\n) {\n const input = utils_1.checkForInput(inputs, inputIndex);\n const { hash, sighashType, script } = getHashForSig(\n inputIndex,\n input,\n cache,\n false,\n sighashTypes,\n );\n checkScriptForPubkey(pubkey, script, 'sign');\n return {\n hash,\n sighashType,\n };\n}\nfunction getHashForSig(inputIndex, input, cache, forValidate, sighashTypes) {\n const unsignedTx = cache.__TX;\n const sighashType =\n input.sighashType || transaction_1.Transaction.SIGHASH_ALL;\n if (sighashTypes && sighashTypes.indexOf(sighashType) < 0) {\n const str = sighashTypeToString(sighashType);\n throw new Error(\n `Sighash type is not allowed. Retry the sign method passing the ` +\n `sighashTypes array of whitelisted types. Sighash type: ${str}`,\n );\n }\n let hash;\n let prevout;\n if (input.nonWitnessUtxo) {\n const nonWitnessUtxoTx = nonWitnessUtxoTxFromCache(\n cache,\n input,\n inputIndex,\n );\n const prevoutHash = unsignedTx.ins[inputIndex].hash;\n const utxoHash = nonWitnessUtxoTx.getHash();\n // If a non-witness UTXO is provided, its hash must match the hash specified in the prevout\n if (!prevoutHash.equals(utxoHash)) {\n throw new Error(\n `Non-witness UTXO hash for input #${inputIndex} doesn't match the hash specified in the prevout`,\n );\n }\n const prevoutIndex = unsignedTx.ins[inputIndex].index;\n prevout = nonWitnessUtxoTx.outs[prevoutIndex];\n } else if (input.witnessUtxo) {\n prevout = input.witnessUtxo;\n } else {\n throw new Error('Need a Utxo input item for signing');\n }\n const { meaningfulScript, type } = getMeaningfulScript(\n prevout.script,\n inputIndex,\n 'input',\n input.redeemScript,\n input.witnessScript,\n );\n if (['p2sh-p2wsh', 'p2wsh'].indexOf(type) >= 0) {\n hash = unsignedTx.hashForWitnessV0(\n inputIndex,\n meaningfulScript,\n prevout.value,\n sighashType,\n );\n } else if (isP2WPKH(meaningfulScript)) {\n // P2WPKH uses the P2PKH template for prevoutScript when signing\n const signingScript = payments.p2pkh({ hash: meaningfulScript.slice(2) })\n .output;\n hash = unsignedTx.hashForWitnessV0(\n inputIndex,\n signingScript,\n prevout.value,\n sighashType,\n );\n } else {\n // non-segwit\n if (\n input.nonWitnessUtxo === undefined &&\n cache.__UNSAFE_SIGN_NONSEGWIT === false\n )\n throw new Error(\n `Input #${inputIndex} has witnessUtxo but non-segwit script: ` +\n `${meaningfulScript.toString('hex')}`,\n );\n if (!forValidate && cache.__UNSAFE_SIGN_NONSEGWIT !== false)\n console.warn(\n 'Warning: Signing non-segwit inputs without the full parent transaction ' +\n 'means there is a chance that a miner could feed you incorrect information ' +\n 'to trick you into paying large fees. This behavior is the same as the old ' +\n 'TransactionBuilder class when signing non-segwit scripts. You are not ' +\n 'able to export this Psbt with toBuffer|toBase64|toHex since it is not ' +\n 'BIP174 compliant.\\n*********************\\nPROCEED WITH CAUTION!\\n' +\n '*********************',\n );\n hash = unsignedTx.hashForSignature(\n inputIndex,\n meaningfulScript,\n sighashType,\n );\n }\n return {\n script: meaningfulScript,\n sighashType,\n hash,\n };\n}\nfunction getPayment(script, scriptType, partialSig) {\n let payment;\n switch (scriptType) {\n case 'multisig':\n const sigs = getSortedSigs(script, partialSig);\n payment = payments.p2ms({\n output: script,\n signatures: sigs,\n });\n break;\n case 'pubkey':\n payment = payments.p2pk({\n output: script,\n signature: partialSig[0].signature,\n });\n break;\n case 'pubkeyhash':\n payment = payments.p2pkh({\n output: script,\n pubkey: partialSig[0].pubkey,\n signature: partialSig[0].signature,\n });\n break;\n case 'witnesspubkeyhash':\n payment = payments.p2wpkh({\n output: script,\n pubkey: partialSig[0].pubkey,\n signature: partialSig[0].signature,\n });\n break;\n }\n return payment;\n}\nfunction getPsigsFromInputFinalScripts(input) {\n const scriptItems = !input.finalScriptSig\n ? []\n : bscript.decompile(input.finalScriptSig) || [];\n const witnessItems = !input.finalScriptWitness\n ? []\n : bscript.decompile(input.finalScriptWitness) || [];\n return scriptItems\n .concat(witnessItems)\n .filter(item => {\n return Buffer.isBuffer(item) && bscript.isCanonicalScriptSignature(item);\n })\n .map(sig => ({ signature: sig }));\n}\nfunction getScriptFromInput(inputIndex, input, cache) {\n const unsignedTx = cache.__TX;\n const res = {\n script: null,\n isSegwit: false,\n isP2SH: false,\n isP2WSH: false,\n };\n res.isP2SH = !!input.redeemScript;\n res.isP2WSH = !!input.witnessScript;\n if (input.witnessScript) {\n res.script = input.witnessScript;\n } else if (input.redeemScript) {\n res.script = input.redeemScript;\n } else {\n if (input.nonWitnessUtxo) {\n const nonWitnessUtxoTx = nonWitnessUtxoTxFromCache(\n cache,\n input,\n inputIndex,\n );\n const prevoutIndex = unsignedTx.ins[inputIndex].index;\n res.script = nonWitnessUtxoTx.outs[prevoutIndex].script;\n } else if (input.witnessUtxo) {\n res.script = input.witnessUtxo.script;\n }\n }\n if (input.witnessScript || isP2WPKH(res.script)) {\n res.isSegwit = true;\n }\n return res;\n}\nfunction getSignersFromHD(inputIndex, inputs, hdKeyPair) {\n const input = utils_1.checkForInput(inputs, inputIndex);\n if (!input.bip32Derivation || input.bip32Derivation.length === 0) {\n throw new Error('Need bip32Derivation to sign with HD');\n }\n const myDerivations = input.bip32Derivation\n .map(bipDv => {\n if (bipDv.masterFingerprint.equals(hdKeyPair.fingerprint)) {\n return bipDv;\n } else {\n return;\n }\n })\n .filter(v => !!v);\n if (myDerivations.length === 0) {\n throw new Error(\n 'Need one bip32Derivation masterFingerprint to match the HDSigner fingerprint',\n );\n }\n const signers = myDerivations.map(bipDv => {\n const node = hdKeyPair.derivePath(bipDv.path);\n if (!bipDv.pubkey.equals(node.publicKey)) {\n throw new Error('pubkey did not match bip32Derivation');\n }\n return node;\n });\n return signers;\n}\nfunction getSortedSigs(script, partialSig) {\n const p2ms = payments.p2ms({ output: script });\n // for each pubkey in order of p2ms script\n return p2ms.pubkeys\n .map(pk => {\n // filter partialSig array by pubkey being equal\n return (\n partialSig.filter(ps => {\n return ps.pubkey.equals(pk);\n })[0] || {}\n ).signature;\n // Any pubkey without a match will return undefined\n // this last filter removes all the undefined items in the array.\n })\n .filter(v => !!v);\n}\nfunction scriptWitnessToWitnessStack(buffer) {\n let offset = 0;\n function readSlice(n) {\n offset += n;\n return buffer.slice(offset - n, offset);\n }\n function readVarInt() {\n const vi = varuint.decode(buffer, offset);\n offset += varuint.decode.bytes;\n return vi;\n }\n function readVarSlice() {\n return readSlice(readVarInt());\n }\n function readVector() {\n const count = readVarInt();\n const vector = [];\n for (let i = 0; i < count; i++) vector.push(readVarSlice());\n return vector;\n }\n return readVector();\n}\nfunction sighashTypeToString(sighashType) {\n let text =\n sighashType & transaction_1.Transaction.SIGHASH_ANYONECANPAY\n ? 'SIGHASH_ANYONECANPAY | '\n : '';\n const sigMod = sighashType & 0x1f;\n switch (sigMod) {\n case transaction_1.Transaction.SIGHASH_ALL:\n text += 'SIGHASH_ALL';\n break;\n case transaction_1.Transaction.SIGHASH_SINGLE:\n text += 'SIGHASH_SINGLE';\n break;\n case transaction_1.Transaction.SIGHASH_NONE:\n text += 'SIGHASH_NONE';\n break;\n }\n return text;\n}\nfunction witnessStackToScriptWitness(witness) {\n let buffer = Buffer.allocUnsafe(0);\n function writeSlice(slice) {\n buffer = Buffer.concat([buffer, Buffer.from(slice)]);\n }\n function writeVarInt(i) {\n const currentLen = buffer.length;\n const varintLen = varuint.encodingLength(i);\n buffer = Buffer.concat([buffer, Buffer.allocUnsafe(varintLen)]);\n varuint.encode(i, buffer, currentLen);\n }\n function writeVarSlice(slice) {\n writeVarInt(slice.length);\n writeSlice(slice);\n }\n function writeVector(vector) {\n writeVarInt(vector.length);\n vector.forEach(writeVarSlice);\n }\n writeVector(witness);\n return buffer;\n}\nfunction addNonWitnessTxCache(cache, input, inputIndex) {\n cache.__NON_WITNESS_UTXO_BUF_CACHE[inputIndex] = input.nonWitnessUtxo;\n const tx = transaction_1.Transaction.fromBuffer(input.nonWitnessUtxo);\n cache.__NON_WITNESS_UTXO_TX_CACHE[inputIndex] = tx;\n const self = cache;\n const selfIndex = inputIndex;\n delete input.nonWitnessUtxo;\n Object.defineProperty(input, 'nonWitnessUtxo', {\n enumerable: true,\n get() {\n const buf = self.__NON_WITNESS_UTXO_BUF_CACHE[selfIndex];\n const txCache = self.__NON_WITNESS_UTXO_TX_CACHE[selfIndex];\n if (buf !== undefined) {\n return buf;\n } else {\n const newBuf = txCache.toBuffer();\n self.__NON_WITNESS_UTXO_BUF_CACHE[selfIndex] = newBuf;\n return newBuf;\n }\n },\n set(data) {\n self.__NON_WITNESS_UTXO_BUF_CACHE[selfIndex] = data;\n },\n });\n}\nfunction inputFinalizeGetAmts(inputs, tx, cache, mustFinalize) {\n let inputAmount = 0;\n inputs.forEach((input, idx) => {\n if (mustFinalize && input.finalScriptSig)\n tx.ins[idx].script = input.finalScriptSig;\n if (mustFinalize && input.finalScriptWitness) {\n tx.ins[idx].witness = scriptWitnessToWitnessStack(\n input.finalScriptWitness,\n );\n }\n if (input.witnessUtxo) {\n inputAmount += input.witnessUtxo.value;\n } else if (input.nonWitnessUtxo) {\n const nwTx = nonWitnessUtxoTxFromCache(cache, input, idx);\n const vout = tx.ins[idx].index;\n const out = nwTx.outs[vout];\n inputAmount += out.value;\n }\n });\n const outputAmount = tx.outs.reduce((total, o) => total + o.value, 0);\n const fee = inputAmount - outputAmount;\n if (fee < 0) {\n throw new Error('Outputs are spending more than Inputs');\n }\n const bytes = tx.virtualSize();\n cache.__FEE = fee;\n cache.__EXTRACTED_TX = tx;\n cache.__FEE_RATE = Math.floor(fee / bytes);\n}\nfunction nonWitnessUtxoTxFromCache(cache, input, inputIndex) {\n const c = cache.__NON_WITNESS_UTXO_TX_CACHE;\n if (!c[inputIndex]) {\n addNonWitnessTxCache(cache, input, inputIndex);\n }\n return c[inputIndex];\n}\nfunction getScriptFromUtxo(inputIndex, input, cache) {\n if (input.witnessUtxo !== undefined) {\n return input.witnessUtxo.script;\n } else if (input.nonWitnessUtxo !== undefined) {\n const nonWitnessUtxoTx = nonWitnessUtxoTxFromCache(\n cache,\n input,\n inputIndex,\n );\n return nonWitnessUtxoTx.outs[cache.__TX.ins[inputIndex].index].script;\n } else {\n throw new Error(\"Can't find pubkey in input without Utxo data\");\n }\n}\nfunction pubkeyInInput(pubkey, input, inputIndex, cache) {\n const script = getScriptFromUtxo(inputIndex, input, cache);\n const { meaningfulScript } = getMeaningfulScript(\n script,\n inputIndex,\n 'input',\n input.redeemScript,\n input.witnessScript,\n );\n return pubkeyInScript(pubkey, meaningfulScript);\n}\nfunction pubkeyInOutput(pubkey, output, outputIndex, cache) {\n const script = cache.__TX.outs[outputIndex].script;\n const { meaningfulScript } = getMeaningfulScript(\n script,\n outputIndex,\n 'output',\n output.redeemScript,\n output.witnessScript,\n );\n return pubkeyInScript(pubkey, meaningfulScript);\n}\nfunction redeemFromFinalScriptSig(finalScript) {\n if (!finalScript) return;\n const decomp = bscript.decompile(finalScript);\n if (!decomp) return;\n const lastItem = decomp[decomp.length - 1];\n if (\n !Buffer.isBuffer(lastItem) ||\n isPubkeyLike(lastItem) ||\n isSigLike(lastItem)\n )\n return;\n const sDecomp = bscript.decompile(lastItem);\n if (!sDecomp) return;\n return lastItem;\n}\nfunction redeemFromFinalWitnessScript(finalScript) {\n if (!finalScript) return;\n const decomp = scriptWitnessToWitnessStack(finalScript);\n const lastItem = decomp[decomp.length - 1];\n if (isPubkeyLike(lastItem)) return;\n const sDecomp = bscript.decompile(lastItem);\n if (!sDecomp) return;\n return lastItem;\n}\nfunction isPubkeyLike(buf) {\n return buf.length === 33 && bscript.isCanonicalPubKey(buf);\n}\nfunction isSigLike(buf) {\n return bscript.isCanonicalScriptSignature(buf);\n}\nfunction getMeaningfulScript(\n script,\n index,\n ioType,\n redeemScript,\n witnessScript,\n) {\n const isP2SH = isP2SHScript(script);\n const isP2SHP2WSH = isP2SH && redeemScript && isP2WSHScript(redeemScript);\n const isP2WSH = isP2WSHScript(script);\n if (isP2SH && redeemScript === undefined)\n throw new Error('scriptPubkey is P2SH but redeemScript missing');\n if ((isP2WSH || isP2SHP2WSH) && witnessScript === undefined)\n throw new Error(\n 'scriptPubkey or redeemScript is P2WSH but witnessScript missing',\n );\n let meaningfulScript;\n if (isP2SHP2WSH) {\n meaningfulScript = witnessScript;\n checkRedeemScript(index, script, redeemScript, ioType);\n checkWitnessScript(index, redeemScript, witnessScript, ioType);\n checkInvalidP2WSH(meaningfulScript);\n } else if (isP2WSH) {\n meaningfulScript = witnessScript;\n checkWitnessScript(index, script, witnessScript, ioType);\n checkInvalidP2WSH(meaningfulScript);\n } else if (isP2SH) {\n meaningfulScript = redeemScript;\n checkRedeemScript(index, script, redeemScript, ioType);\n } else {\n meaningfulScript = script;\n }\n return {\n meaningfulScript,\n type: isP2SHP2WSH\n ? 'p2sh-p2wsh'\n : isP2SH\n ? 'p2sh'\n : isP2WSH\n ? 'p2wsh'\n : 'raw',\n };\n}\nfunction checkInvalidP2WSH(script) {\n if (isP2WPKH(script) || isP2SHScript(script)) {\n throw new Error('P2WPKH or P2SH can not be contained within P2WSH');\n }\n}\nfunction pubkeyInScript(pubkey, script) {\n const pubkeyHash = crypto_1.hash160(pubkey);\n const decompiled = bscript.decompile(script);\n if (decompiled === null) throw new Error('Unknown script error');\n return decompiled.some(element => {\n if (typeof element === 'number') return false;\n return element.equals(pubkey) || element.equals(pubkeyHash);\n });\n}\nfunction classifyScript(script) {\n if (isP2WPKH(script)) return 'witnesspubkeyhash';\n if (isP2PKH(script)) return 'pubkeyhash';\n if (isP2MS(script)) return 'multisig';\n if (isP2PK(script)) return 'pubkey';\n return 'nonstandard';\n}\nfunction range(n) {\n return [...Array(n).keys()];\n}\n", "'use strict';\n// OP_0 [signatures ...]\nObject.defineProperty(exports, '__esModule', { value: true });\nconst bscript = require('../../script');\nconst script_1 = require('../../script');\nfunction partialSignature(value) {\n return (\n value === script_1.OPS.OP_0 || bscript.isCanonicalScriptSignature(value)\n );\n}\nfunction check(script, allowIncomplete) {\n const chunks = bscript.decompile(script);\n if (chunks.length < 2) return false;\n if (chunks[0] !== script_1.OPS.OP_0) return false;\n if (allowIncomplete) {\n return chunks.slice(1).every(partialSignature);\n }\n return chunks.slice(1).every(bscript.isCanonicalScriptSignature);\n}\nexports.check = check;\ncheck.toJSON = () => {\n return 'multisig input';\n};\n", "'use strict';\n// m [pubKeys ...] n OP_CHECKMULTISIG\nObject.defineProperty(exports, '__esModule', { value: true });\nconst bscript = require('../../script');\nconst script_1 = require('../../script');\nconst types = require('../../types');\nconst OP_INT_BASE = script_1.OPS.OP_RESERVED; // OP_1 - 1\nfunction check(script, allowIncomplete) {\n const chunks = bscript.decompile(script);\n if (chunks.length < 4) return false;\n if (chunks[chunks.length - 1] !== script_1.OPS.OP_CHECKMULTISIG) return false;\n if (!types.Number(chunks[0])) return false;\n if (!types.Number(chunks[chunks.length - 2])) return false;\n const m = chunks[0] - OP_INT_BASE;\n const n = chunks[chunks.length - 2] - OP_INT_BASE;\n if (m <= 0) return false;\n if (n > 16) return false;\n if (m > n) return false;\n if (n !== chunks.length - 3) return false;\n if (allowIncomplete) return true;\n const keys = chunks.slice(1, -2);\n return keys.every(bscript.isCanonicalPubKey);\n}\nexports.check = check;\ncheck.toJSON = () => {\n return 'multi-sig output';\n};\n", "'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst input = require('./input');\nexports.input = input;\nconst output = require('./output');\nexports.output = output;\n", "'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\n// OP_RETURN {data}\nconst bscript = require('../script');\nconst OPS = bscript.OPS;\nfunction check(script) {\n const buffer = bscript.compile(script);\n return buffer.length > 1 && buffer[0] === OPS.OP_RETURN;\n}\nexports.check = check;\ncheck.toJSON = () => {\n return 'null data output';\n};\nconst output = { check };\nexports.output = output;\n", "'use strict';\n// {signature}\nObject.defineProperty(exports, '__esModule', { value: true });\nconst bscript = require('../../script');\nfunction check(script) {\n const chunks = bscript.decompile(script);\n return chunks.length === 1 && bscript.isCanonicalScriptSignature(chunks[0]);\n}\nexports.check = check;\ncheck.toJSON = () => {\n return 'pubKey input';\n};\n", "'use strict';\n// {pubKey} OP_CHECKSIG\nObject.defineProperty(exports, '__esModule', { value: true });\nconst bscript = require('../../script');\nconst script_1 = require('../../script');\nfunction check(script) {\n const chunks = bscript.decompile(script);\n return (\n chunks.length === 2 &&\n bscript.isCanonicalPubKey(chunks[0]) &&\n chunks[1] === script_1.OPS.OP_CHECKSIG\n );\n}\nexports.check = check;\ncheck.toJSON = () => {\n return 'pubKey output';\n};\n", "'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst input = require('./input');\nexports.input = input;\nconst output = require('./output');\nexports.output = output;\n", "'use strict';\n// {signature} {pubKey}\nObject.defineProperty(exports, '__esModule', { value: true });\nconst bscript = require('../../script');\nfunction check(script) {\n const chunks = bscript.decompile(script);\n return (\n chunks.length === 2 &&\n bscript.isCanonicalScriptSignature(chunks[0]) &&\n bscript.isCanonicalPubKey(chunks[1])\n );\n}\nexports.check = check;\ncheck.toJSON = () => {\n return 'pubKeyHash input';\n};\n", "'use strict';\n// OP_DUP OP_HASH160 {pubKeyHash} OP_EQUALVERIFY OP_CHECKSIG\nObject.defineProperty(exports, '__esModule', { value: true });\nconst bscript = require('../../script');\nconst script_1 = require('../../script');\nfunction check(script) {\n const buffer = bscript.compile(script);\n return (\n buffer.length === 25 &&\n buffer[0] === script_1.OPS.OP_DUP &&\n buffer[1] === script_1.OPS.OP_HASH160 &&\n buffer[2] === 0x14 &&\n buffer[23] === script_1.OPS.OP_EQUALVERIFY &&\n buffer[24] === script_1.OPS.OP_CHECKSIG\n );\n}\nexports.check = check;\ncheck.toJSON = () => {\n return 'pubKeyHash output';\n};\n", "'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst input = require('./input');\nexports.input = input;\nconst output = require('./output');\nexports.output = output;\n", "'use strict';\n// OP_0 {pubKeyHash}\nObject.defineProperty(exports, '__esModule', { value: true });\nconst bscript = require('../../script');\nconst script_1 = require('../../script');\nfunction check(script) {\n const buffer = bscript.compile(script);\n return (\n buffer.length === 22 &&\n buffer[0] === script_1.OPS.OP_0 &&\n buffer[1] === 0x14\n );\n}\nexports.check = check;\ncheck.toJSON = () => {\n return 'Witness pubKeyHash output';\n};\n", "'use strict';\n// OP_0 {scriptHash}\nObject.defineProperty(exports, '__esModule', { value: true });\nconst bscript = require('../../script');\nconst script_1 = require('../../script');\nfunction check(script) {\n const buffer = bscript.compile(script);\n return (\n buffer.length === 34 &&\n buffer[0] === script_1.OPS.OP_0 &&\n buffer[1] === 0x20\n );\n}\nexports.check = check;\ncheck.toJSON = () => {\n return 'Witness scriptHash output';\n};\n", "'use strict';\n// {serialized scriptPubKey script}\nObject.defineProperty(exports, '__esModule', { value: true });\nconst bscript = require('../../script');\nconst p2ms = require('../multisig');\nconst p2pk = require('../pubkey');\nconst p2pkh = require('../pubkeyhash');\nconst p2wpkho = require('../witnesspubkeyhash/output');\nconst p2wsho = require('../witnessscripthash/output');\nfunction check(script, allowIncomplete) {\n const chunks = bscript.decompile(script);\n if (chunks.length < 1) return false;\n const lastChunk = chunks[chunks.length - 1];\n if (!Buffer.isBuffer(lastChunk)) return false;\n const scriptSigChunks = bscript.decompile(\n bscript.compile(chunks.slice(0, -1)),\n );\n const redeemScriptChunks = bscript.decompile(lastChunk);\n // is redeemScript a valid script?\n if (!redeemScriptChunks) return false;\n // is redeemScriptSig push only?\n if (!bscript.isPushOnly(scriptSigChunks)) return false;\n // is witness?\n if (chunks.length === 1) {\n return (\n p2wsho.check(redeemScriptChunks) || p2wpkho.check(redeemScriptChunks)\n );\n }\n // match types\n if (\n p2pkh.input.check(scriptSigChunks) &&\n p2pkh.output.check(redeemScriptChunks)\n )\n return true;\n if (\n p2ms.input.check(scriptSigChunks, allowIncomplete) &&\n p2ms.output.check(redeemScriptChunks)\n )\n return true;\n if (\n p2pk.input.check(scriptSigChunks) &&\n p2pk.output.check(redeemScriptChunks)\n )\n return true;\n return false;\n}\nexports.check = check;\ncheck.toJSON = () => {\n return 'scriptHash input';\n};\n", "'use strict';\n// OP_HASH160 {scriptHash} OP_EQUAL\nObject.defineProperty(exports, '__esModule', { value: true });\nconst bscript = require('../../script');\nconst script_1 = require('../../script');\nfunction check(script) {\n const buffer = bscript.compile(script);\n return (\n buffer.length === 23 &&\n buffer[0] === script_1.OPS.OP_HASH160 &&\n buffer[1] === 0x14 &&\n buffer[22] === script_1.OPS.OP_EQUAL\n );\n}\nexports.check = check;\ncheck.toJSON = () => {\n return 'scriptHash output';\n};\n", "'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst input = require('./input');\nexports.input = input;\nconst output = require('./output');\nexports.output = output;\n", "'use strict';\n// OP_RETURN {aa21a9ed} {commitment}\nObject.defineProperty(exports, '__esModule', { value: true });\nconst bscript = require('../../script');\nconst script_1 = require('../../script');\nconst types = require('../../types');\nconst typeforce = require('typeforce');\nconst HEADER = Buffer.from('aa21a9ed', 'hex');\nfunction check(script) {\n const buffer = bscript.compile(script);\n return (\n buffer.length > 37 &&\n buffer[0] === script_1.OPS.OP_RETURN &&\n buffer[1] === 0x24 &&\n buffer.slice(2, 6).equals(HEADER)\n );\n}\nexports.check = check;\ncheck.toJSON = () => {\n return 'Witness commitment output';\n};\nfunction encode(commitment) {\n typeforce(types.Hash256bit, commitment);\n const buffer = Buffer.allocUnsafe(36);\n HEADER.copy(buffer, 0);\n commitment.copy(buffer, 4);\n return bscript.compile([script_1.OPS.OP_RETURN, buffer]);\n}\nexports.encode = encode;\nfunction decode(buffer) {\n typeforce(check, buffer);\n return bscript.decompile(buffer)[1].slice(4, 36);\n}\nexports.decode = decode;\n", "'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst output = require('./output');\nexports.output = output;\n", "'use strict';\n// {signature} {pubKey}\nObject.defineProperty(exports, '__esModule', { value: true });\nconst bscript = require('../../script');\nfunction isCompressedCanonicalPubKey(pubKey) {\n return bscript.isCanonicalPubKey(pubKey) && pubKey.length === 33;\n}\nfunction check(script) {\n const chunks = bscript.decompile(script);\n return (\n chunks.length === 2 &&\n bscript.isCanonicalScriptSignature(chunks[0]) &&\n isCompressedCanonicalPubKey(chunks[1])\n );\n}\nexports.check = check;\ncheck.toJSON = () => {\n return 'witnessPubKeyHash input';\n};\n", "'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst input = require('./input');\nexports.input = input;\nconst output = require('./output');\nexports.output = output;\n", "'use strict';\n// {serialized scriptPubKey script}\nObject.defineProperty(exports, '__esModule', { value: true });\nconst bscript = require('../../script');\nconst typeforce = require('typeforce');\nconst p2ms = require('../multisig');\nconst p2pk = require('../pubkey');\nconst p2pkh = require('../pubkeyhash');\nfunction check(chunks, allowIncomplete) {\n typeforce(typeforce.Array, chunks);\n if (chunks.length < 1) return false;\n const witnessScript = chunks[chunks.length - 1];\n if (!Buffer.isBuffer(witnessScript)) return false;\n const witnessScriptChunks = bscript.decompile(witnessScript);\n // is witnessScript a valid script?\n if (!witnessScriptChunks || witnessScriptChunks.length === 0) return false;\n const witnessRawScriptSig = bscript.compile(chunks.slice(0, -1));\n // match types\n if (\n p2pkh.input.check(witnessRawScriptSig) &&\n p2pkh.output.check(witnessScriptChunks)\n )\n return true;\n if (\n p2ms.input.check(witnessRawScriptSig, allowIncomplete) &&\n p2ms.output.check(witnessScriptChunks)\n )\n return true;\n if (\n p2pk.input.check(witnessRawScriptSig) &&\n p2pk.output.check(witnessScriptChunks)\n )\n return true;\n return false;\n}\nexports.check = check;\ncheck.toJSON = () => {\n return 'witnessScriptHash input';\n};\n", "'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst input = require('./input');\nexports.input = input;\nconst output = require('./output');\nexports.output = output;\n", "'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst script_1 = require('./script');\nconst multisig = require('./templates/multisig');\nconst nullData = require('./templates/nulldata');\nconst pubKey = require('./templates/pubkey');\nconst pubKeyHash = require('./templates/pubkeyhash');\nconst scriptHash = require('./templates/scripthash');\nconst witnessCommitment = require('./templates/witnesscommitment');\nconst witnessPubKeyHash = require('./templates/witnesspubkeyhash');\nconst witnessScriptHash = require('./templates/witnessscripthash');\nconst types = {\n P2MS: 'multisig',\n NONSTANDARD: 'nonstandard',\n NULLDATA: 'nulldata',\n P2PK: 'pubkey',\n P2PKH: 'pubkeyhash',\n P2SH: 'scripthash',\n P2WPKH: 'witnesspubkeyhash',\n P2WSH: 'witnessscripthash',\n WITNESS_COMMITMENT: 'witnesscommitment',\n};\nexports.types = types;\nfunction classifyOutput(script) {\n if (witnessPubKeyHash.output.check(script)) return types.P2WPKH;\n if (witnessScriptHash.output.check(script)) return types.P2WSH;\n if (pubKeyHash.output.check(script)) return types.P2PKH;\n if (scriptHash.output.check(script)) return types.P2SH;\n // XXX: optimization, below functions .decompile before use\n const chunks = script_1.decompile(script);\n if (!chunks) throw new TypeError('Invalid script');\n if (multisig.output.check(chunks)) return types.P2MS;\n if (pubKey.output.check(chunks)) return types.P2PK;\n if (witnessCommitment.output.check(chunks)) return types.WITNESS_COMMITMENT;\n if (nullData.output.check(chunks)) return types.NULLDATA;\n return types.NONSTANDARD;\n}\nexports.output = classifyOutput;\nfunction classifyInput(script, allowIncomplete) {\n // XXX: optimization, below functions .decompile before use\n const chunks = script_1.decompile(script);\n if (!chunks) throw new TypeError('Invalid script');\n if (pubKeyHash.input.check(chunks)) return types.P2PKH;\n if (scriptHash.input.check(chunks, allowIncomplete)) return types.P2SH;\n if (multisig.input.check(chunks, allowIncomplete)) return types.P2MS;\n if (pubKey.input.check(chunks)) return types.P2PK;\n return types.NONSTANDARD;\n}\nexports.input = classifyInput;\nfunction classifyWitness(script, allowIncomplete) {\n // XXX: optimization, below functions .decompile before use\n const chunks = script_1.decompile(script);\n if (!chunks) throw new TypeError('Invalid script');\n if (witnessPubKeyHash.input.check(chunks)) return types.P2WPKH;\n if (witnessScriptHash.input.check(chunks, allowIncomplete))\n return types.P2WSH;\n return types.NONSTANDARD;\n}\nexports.witness = classifyWitness;\n", "'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst baddress = require('./address');\nconst bufferutils_1 = require('./bufferutils');\nconst classify = require('./classify');\nconst bcrypto = require('./crypto');\nconst ECPair = require('./ecpair');\nconst networks = require('./networks');\nconst payments = require('./payments');\nconst bscript = require('./script');\nconst script_1 = require('./script');\nconst transaction_1 = require('./transaction');\nconst types = require('./types');\nconst typeforce = require('typeforce');\nconst SCRIPT_TYPES = classify.types;\nconst PREVOUT_TYPES = new Set([\n // Raw\n 'p2pkh',\n 'p2pk',\n 'p2wpkh',\n 'p2ms',\n // P2SH wrapped\n 'p2sh-p2pkh',\n 'p2sh-p2pk',\n 'p2sh-p2wpkh',\n 'p2sh-p2ms',\n // P2WSH wrapped\n 'p2wsh-p2pkh',\n 'p2wsh-p2pk',\n 'p2wsh-p2ms',\n // P2SH-P2WSH wrapper\n 'p2sh-p2wsh-p2pkh',\n 'p2sh-p2wsh-p2pk',\n 'p2sh-p2wsh-p2ms',\n]);\nfunction tfMessage(type, value, message) {\n try {\n typeforce(type, value);\n } catch (err) {\n throw new Error(message);\n }\n}\nfunction txIsString(tx) {\n return typeof tx === 'string' || tx instanceof String;\n}\nfunction txIsTransaction(tx) {\n return tx instanceof transaction_1.Transaction;\n}\nclass TransactionBuilder {\n // WARNING: maximumFeeRate is __NOT__ to be relied on,\n // it's just another potential safety mechanism (safety in-depth)\n constructor(network = networks.bitcoin, maximumFeeRate = 2500) {\n this.network = network;\n this.maximumFeeRate = maximumFeeRate;\n this.__PREV_TX_SET = {};\n this.__INPUTS = [];\n this.__TX = new transaction_1.Transaction();\n this.__TX.version = 2;\n this.__USE_LOW_R = false;\n console.warn(\n 'Deprecation Warning: TransactionBuilder will be removed in the future. ' +\n '(v6.x.x or later) Please use the Psbt class instead. Examples of usage ' +\n 'are available in the transactions-psbt.js integration test file on our ' +\n 'Github. A high level explanation is available in the psbt.ts and psbt.js ' +\n 'files as well.',\n );\n }\n static fromTransaction(transaction, network) {\n const txb = new TransactionBuilder(network);\n // Copy transaction fields\n txb.setVersion(transaction.version);\n txb.setLockTime(transaction.locktime);\n // Copy outputs (done first to avoid signature invalidation)\n transaction.outs.forEach(txOut => {\n txb.addOutput(txOut.script, txOut.value);\n });\n // Copy inputs\n transaction.ins.forEach(txIn => {\n txb.__addInputUnsafe(txIn.hash, txIn.index, {\n sequence: txIn.sequence,\n script: txIn.script,\n witness: txIn.witness,\n });\n });\n // fix some things not possible through the public API\n txb.__INPUTS.forEach((input, i) => {\n fixMultisigOrder(input, transaction, i);\n });\n return txb;\n }\n setLowR(setting) {\n typeforce(typeforce.maybe(typeforce.Boolean), setting);\n if (setting === undefined) {\n setting = true;\n }\n this.__USE_LOW_R = setting;\n return setting;\n }\n setLockTime(locktime) {\n typeforce(types.UInt32, locktime);\n // if any signatures exist, throw\n if (\n this.__INPUTS.some(input => {\n if (!input.signatures) return false;\n return input.signatures.some(s => s !== undefined);\n })\n ) {\n throw new Error('No, this would invalidate signatures');\n }\n this.__TX.locktime = locktime;\n }\n setVersion(version) {\n typeforce(types.UInt32, version);\n // XXX: this might eventually become more complex depending on what the versions represent\n this.__TX.version = version;\n }\n addInput(txHash, vout, sequence, prevOutScript) {\n if (!this.__canModifyInputs()) {\n throw new Error('No, this would invalidate signatures');\n }\n let value;\n // is it a hex string?\n if (txIsString(txHash)) {\n // transaction hashs's are displayed in reverse order, un-reverse it\n txHash = bufferutils_1.reverseBuffer(Buffer.from(txHash, 'hex'));\n // is it a Transaction object?\n } else if (txIsTransaction(txHash)) {\n const txOut = txHash.outs[vout];\n prevOutScript = txOut.script;\n value = txOut.value;\n txHash = txHash.getHash(false);\n }\n return this.__addInputUnsafe(txHash, vout, {\n sequence,\n prevOutScript,\n value,\n });\n }\n addOutput(scriptPubKey, value) {\n if (!this.__canModifyOutputs()) {\n throw new Error('No, this would invalidate signatures');\n }\n // Attempt to get a script if it's a base58 or bech32 address string\n if (typeof scriptPubKey === 'string') {\n scriptPubKey = baddress.toOutputScript(scriptPubKey, this.network);\n }\n return this.__TX.addOutput(scriptPubKey, value);\n }\n build() {\n return this.__build(false);\n }\n buildIncomplete() {\n return this.__build(true);\n }\n sign(\n signParams,\n keyPair,\n redeemScript,\n hashType,\n witnessValue,\n witnessScript,\n ) {\n trySign(\n getSigningData(\n this.network,\n this.__INPUTS,\n this.__needsOutputs.bind(this),\n this.__TX,\n signParams,\n keyPair,\n redeemScript,\n hashType,\n witnessValue,\n witnessScript,\n this.__USE_LOW_R,\n ),\n );\n }\n __addInputUnsafe(txHash, vout, options) {\n if (transaction_1.Transaction.isCoinbaseHash(txHash)) {\n throw new Error('coinbase inputs not supported');\n }\n const prevTxOut = txHash.toString('hex') + ':' + vout;\n if (this.__PREV_TX_SET[prevTxOut] !== undefined)\n throw new Error('Duplicate TxOut: ' + prevTxOut);\n let input = {};\n // derive what we can from the scriptSig\n if (options.script !== undefined) {\n input = expandInput(options.script, options.witness || []);\n }\n // if an input value was given, retain it\n if (options.value !== undefined) {\n input.value = options.value;\n }\n // derive what we can from the previous transactions output script\n if (!input.prevOutScript && options.prevOutScript) {\n let prevOutType;\n if (!input.pubkeys && !input.signatures) {\n const expanded = expandOutput(options.prevOutScript);\n if (expanded.pubkeys) {\n input.pubkeys = expanded.pubkeys;\n input.signatures = expanded.signatures;\n }\n prevOutType = expanded.type;\n }\n input.prevOutScript = options.prevOutScript;\n input.prevOutType = prevOutType || classify.output(options.prevOutScript);\n }\n const vin = this.__TX.addInput(\n txHash,\n vout,\n options.sequence,\n options.scriptSig,\n );\n this.__INPUTS[vin] = input;\n this.__PREV_TX_SET[prevTxOut] = true;\n return vin;\n }\n __build(allowIncomplete) {\n if (!allowIncomplete) {\n if (!this.__TX.ins.length) throw new Error('Transaction has no inputs');\n if (!this.__TX.outs.length) throw new Error('Transaction has no outputs');\n }\n const tx = this.__TX.clone();\n // create script signatures from inputs\n this.__INPUTS.forEach((input, i) => {\n if (!input.prevOutType && !allowIncomplete)\n throw new Error('Transaction is not complete');\n const result = build(input.prevOutType, input, allowIncomplete);\n if (!result) {\n if (!allowIncomplete && input.prevOutType === SCRIPT_TYPES.NONSTANDARD)\n throw new Error('Unknown input type');\n if (!allowIncomplete) throw new Error('Not enough information');\n return;\n }\n tx.setInputScript(i, result.input);\n tx.setWitness(i, result.witness);\n });\n if (!allowIncomplete) {\n // do not rely on this, its merely a last resort\n if (this.__overMaximumFees(tx.virtualSize())) {\n throw new Error('Transaction has absurd fees');\n }\n }\n return tx;\n }\n __canModifyInputs() {\n return this.__INPUTS.every(input => {\n if (!input.signatures) return true;\n return input.signatures.every(signature => {\n if (!signature) return true;\n const hashType = signatureHashType(signature);\n // if SIGHASH_ANYONECANPAY is set, signatures would not\n // be invalidated by more inputs\n return (\n (hashType & transaction_1.Transaction.SIGHASH_ANYONECANPAY) !== 0\n );\n });\n });\n }\n __needsOutputs(signingHashType) {\n if (signingHashType === transaction_1.Transaction.SIGHASH_ALL) {\n return this.__TX.outs.length === 0;\n }\n // if inputs are being signed with SIGHASH_NONE, we don't strictly need outputs\n // .build() will fail, but .buildIncomplete() is OK\n return (\n this.__TX.outs.length === 0 &&\n this.__INPUTS.some(input => {\n if (!input.signatures) return false;\n return input.signatures.some(signature => {\n if (!signature) return false; // no signature, no issue\n const hashType = signatureHashType(signature);\n if (hashType & transaction_1.Transaction.SIGHASH_NONE) return false; // SIGHASH_NONE doesn't care about outputs\n return true; // SIGHASH_* does care\n });\n })\n );\n }\n __canModifyOutputs() {\n const nInputs = this.__TX.ins.length;\n const nOutputs = this.__TX.outs.length;\n return this.__INPUTS.every(input => {\n if (input.signatures === undefined) return true;\n return input.signatures.every(signature => {\n if (!signature) return true;\n const hashType = signatureHashType(signature);\n const hashTypeMod = hashType & 0x1f;\n if (hashTypeMod === transaction_1.Transaction.SIGHASH_NONE) return true;\n if (hashTypeMod === transaction_1.Transaction.SIGHASH_SINGLE) {\n // if SIGHASH_SINGLE is set, and nInputs > nOutputs\n // some signatures would be invalidated by the addition\n // of more outputs\n return nInputs <= nOutputs;\n }\n return false;\n });\n });\n }\n __overMaximumFees(bytes) {\n // not all inputs will have .value defined\n const incoming = this.__INPUTS.reduce((a, x) => a + (x.value >>> 0), 0);\n // but all outputs do, and if we have any input value\n // we can immediately determine if the outputs are too small\n const outgoing = this.__TX.outs.reduce((a, x) => a + x.value, 0);\n const fee = incoming - outgoing;\n const feeRate = fee / bytes;\n return feeRate > this.maximumFeeRate;\n }\n}\nexports.TransactionBuilder = TransactionBuilder;\nfunction expandInput(scriptSig, witnessStack, type, scriptPubKey) {\n if (scriptSig.length === 0 && witnessStack.length === 0) return {};\n if (!type) {\n let ssType = classify.input(scriptSig, true);\n let wsType = classify.witness(witnessStack, true);\n if (ssType === SCRIPT_TYPES.NONSTANDARD) ssType = undefined;\n if (wsType === SCRIPT_TYPES.NONSTANDARD) wsType = undefined;\n type = ssType || wsType;\n }\n switch (type) {\n case SCRIPT_TYPES.P2WPKH: {\n const { output, pubkey, signature } = payments.p2wpkh({\n witness: witnessStack,\n });\n return {\n prevOutScript: output,\n prevOutType: SCRIPT_TYPES.P2WPKH,\n pubkeys: [pubkey],\n signatures: [signature],\n };\n }\n case SCRIPT_TYPES.P2PKH: {\n const { output, pubkey, signature } = payments.p2pkh({\n input: scriptSig,\n });\n return {\n prevOutScript: output,\n prevOutType: SCRIPT_TYPES.P2PKH,\n pubkeys: [pubkey],\n signatures: [signature],\n };\n }\n case SCRIPT_TYPES.P2PK: {\n const { signature } = payments.p2pk({ input: scriptSig });\n return {\n prevOutType: SCRIPT_TYPES.P2PK,\n pubkeys: [undefined],\n signatures: [signature],\n };\n }\n case SCRIPT_TYPES.P2MS: {\n const { m, pubkeys, signatures } = payments.p2ms(\n {\n input: scriptSig,\n output: scriptPubKey,\n },\n { allowIncomplete: true },\n );\n return {\n prevOutType: SCRIPT_TYPES.P2MS,\n pubkeys,\n signatures,\n maxSignatures: m,\n };\n }\n }\n if (type === SCRIPT_TYPES.P2SH) {\n const { output, redeem } = payments.p2sh({\n input: scriptSig,\n witness: witnessStack,\n });\n const outputType = classify.output(redeem.output);\n const expanded = expandInput(\n redeem.input,\n redeem.witness,\n outputType,\n redeem.output,\n );\n if (!expanded.prevOutType) return {};\n return {\n prevOutScript: output,\n prevOutType: SCRIPT_TYPES.P2SH,\n redeemScript: redeem.output,\n redeemScriptType: expanded.prevOutType,\n witnessScript: expanded.witnessScript,\n witnessScriptType: expanded.witnessScriptType,\n pubkeys: expanded.pubkeys,\n signatures: expanded.signatures,\n };\n }\n if (type === SCRIPT_TYPES.P2WSH) {\n const { output, redeem } = payments.p2wsh({\n input: scriptSig,\n witness: witnessStack,\n });\n const outputType = classify.output(redeem.output);\n let expanded;\n if (outputType === SCRIPT_TYPES.P2WPKH) {\n expanded = expandInput(redeem.input, redeem.witness, outputType);\n } else {\n expanded = expandInput(\n bscript.compile(redeem.witness),\n [],\n outputType,\n redeem.output,\n );\n }\n if (!expanded.prevOutType) return {};\n return {\n prevOutScript: output,\n prevOutType: SCRIPT_TYPES.P2WSH,\n witnessScript: redeem.output,\n witnessScriptType: expanded.prevOutType,\n pubkeys: expanded.pubkeys,\n signatures: expanded.signatures,\n };\n }\n return {\n prevOutType: SCRIPT_TYPES.NONSTANDARD,\n prevOutScript: scriptSig,\n };\n}\n// could be done in expandInput, but requires the original Transaction for hashForSignature\nfunction fixMultisigOrder(input, transaction, vin) {\n if (input.redeemScriptType !== SCRIPT_TYPES.P2MS || !input.redeemScript)\n return;\n if (input.pubkeys.length === input.signatures.length) return;\n const unmatched = input.signatures.concat();\n input.signatures = input.pubkeys.map(pubKey => {\n const keyPair = ECPair.fromPublicKey(pubKey);\n let match;\n // check for a signature\n unmatched.some((signature, i) => {\n // skip if undefined || OP_0\n if (!signature) return false;\n // TODO: avoid O(n) hashForSignature\n const parsed = bscript.signature.decode(signature);\n const hash = transaction.hashForSignature(\n vin,\n input.redeemScript,\n parsed.hashType,\n );\n // skip if signature does not match pubKey\n if (!keyPair.verify(hash, parsed.signature)) return false;\n // remove matched signature from unmatched\n unmatched[i] = undefined;\n match = signature;\n return true;\n });\n return match;\n });\n}\nfunction expandOutput(script, ourPubKey) {\n typeforce(types.Buffer, script);\n const type = classify.output(script);\n switch (type) {\n case SCRIPT_TYPES.P2PKH: {\n if (!ourPubKey) return { type };\n // does our hash160(pubKey) match the output scripts?\n const pkh1 = payments.p2pkh({ output: script }).hash;\n const pkh2 = bcrypto.hash160(ourPubKey);\n if (!pkh1.equals(pkh2)) return { type };\n return {\n type,\n pubkeys: [ourPubKey],\n signatures: [undefined],\n };\n }\n case SCRIPT_TYPES.P2WPKH: {\n if (!ourPubKey) return { type };\n // does our hash160(pubKey) match the output scripts?\n const wpkh1 = payments.p2wpkh({ output: script }).hash;\n const wpkh2 = bcrypto.hash160(ourPubKey);\n if (!wpkh1.equals(wpkh2)) return { type };\n return {\n type,\n pubkeys: [ourPubKey],\n signatures: [undefined],\n };\n }\n case SCRIPT_TYPES.P2PK: {\n const p2pk = payments.p2pk({ output: script });\n return {\n type,\n pubkeys: [p2pk.pubkey],\n signatures: [undefined],\n };\n }\n case SCRIPT_TYPES.P2MS: {\n const p2ms = payments.p2ms({ output: script });\n return {\n type,\n pubkeys: p2ms.pubkeys,\n signatures: p2ms.pubkeys.map(() => undefined),\n maxSignatures: p2ms.m,\n };\n }\n }\n return { type };\n}\nfunction prepareInput(input, ourPubKey, redeemScript, witnessScript) {\n if (redeemScript && witnessScript) {\n const p2wsh = payments.p2wsh({\n redeem: { output: witnessScript },\n });\n const p2wshAlt = payments.p2wsh({ output: redeemScript });\n const p2sh = payments.p2sh({ redeem: { output: redeemScript } });\n const p2shAlt = payments.p2sh({ redeem: p2wsh });\n // enforces P2SH(P2WSH(...))\n if (!p2wsh.hash.equals(p2wshAlt.hash))\n throw new Error('Witness script inconsistent with prevOutScript');\n if (!p2sh.hash.equals(p2shAlt.hash))\n throw new Error('Redeem script inconsistent with prevOutScript');\n const expanded = expandOutput(p2wsh.redeem.output, ourPubKey);\n if (!expanded.pubkeys)\n throw new Error(\n expanded.type +\n ' not supported as witnessScript (' +\n bscript.toASM(witnessScript) +\n ')',\n );\n if (input.signatures && input.signatures.some(x => x !== undefined)) {\n expanded.signatures = input.signatures;\n }\n const signScript = witnessScript;\n if (expanded.type === SCRIPT_TYPES.P2WPKH)\n throw new Error('P2SH(P2WSH(P2WPKH)) is a consensus failure');\n return {\n redeemScript,\n redeemScriptType: SCRIPT_TYPES.P2WSH,\n witnessScript,\n witnessScriptType: expanded.type,\n prevOutType: SCRIPT_TYPES.P2SH,\n prevOutScript: p2sh.output,\n hasWitness: true,\n signScript,\n signType: expanded.type,\n pubkeys: expanded.pubkeys,\n signatures: expanded.signatures,\n maxSignatures: expanded.maxSignatures,\n };\n }\n if (redeemScript) {\n const p2sh = payments.p2sh({ redeem: { output: redeemScript } });\n if (input.prevOutScript) {\n let p2shAlt;\n try {\n p2shAlt = payments.p2sh({ output: input.prevOutScript });\n } catch (e) {\n throw new Error('PrevOutScript must be P2SH');\n }\n if (!p2sh.hash.equals(p2shAlt.hash))\n throw new Error('Redeem script inconsistent with prevOutScript');\n }\n const expanded = expandOutput(p2sh.redeem.output, ourPubKey);\n if (!expanded.pubkeys)\n throw new Error(\n expanded.type +\n ' not supported as redeemScript (' +\n bscript.toASM(redeemScript) +\n ')',\n );\n if (input.signatures && input.signatures.some(x => x !== undefined)) {\n expanded.signatures = input.signatures;\n }\n let signScript = redeemScript;\n if (expanded.type === SCRIPT_TYPES.P2WPKH) {\n signScript = payments.p2pkh({ pubkey: expanded.pubkeys[0] }).output;\n }\n return {\n redeemScript,\n redeemScriptType: expanded.type,\n prevOutType: SCRIPT_TYPES.P2SH,\n prevOutScript: p2sh.output,\n hasWitness: expanded.type === SCRIPT_TYPES.P2WPKH,\n signScript,\n signType: expanded.type,\n pubkeys: expanded.pubkeys,\n signatures: expanded.signatures,\n maxSignatures: expanded.maxSignatures,\n };\n }\n if (witnessScript) {\n const p2wsh = payments.p2wsh({ redeem: { output: witnessScript } });\n if (input.prevOutScript) {\n const p2wshAlt = payments.p2wsh({ output: input.prevOutScript });\n if (!p2wsh.hash.equals(p2wshAlt.hash))\n throw new Error('Witness script inconsistent with prevOutScript');\n }\n const expanded = expandOutput(p2wsh.redeem.output, ourPubKey);\n if (!expanded.pubkeys)\n throw new Error(\n expanded.type +\n ' not supported as witnessScript (' +\n bscript.toASM(witnessScript) +\n ')',\n );\n if (input.signatures && input.signatures.some(x => x !== undefined)) {\n expanded.signatures = input.signatures;\n }\n const signScript = witnessScript;\n if (expanded.type === SCRIPT_TYPES.P2WPKH)\n throw new Error('P2WSH(P2WPKH) is a consensus failure');\n return {\n witnessScript,\n witnessScriptType: expanded.type,\n prevOutType: SCRIPT_TYPES.P2WSH,\n prevOutScript: p2wsh.output,\n hasWitness: true,\n signScript,\n signType: expanded.type,\n pubkeys: expanded.pubkeys,\n signatures: expanded.signatures,\n maxSignatures: expanded.maxSignatures,\n };\n }\n if (input.prevOutType && input.prevOutScript) {\n // embedded scripts are not possible without extra information\n if (input.prevOutType === SCRIPT_TYPES.P2SH)\n throw new Error(\n 'PrevOutScript is ' + input.prevOutType + ', requires redeemScript',\n );\n if (input.prevOutType === SCRIPT_TYPES.P2WSH)\n throw new Error(\n 'PrevOutScript is ' + input.prevOutType + ', requires witnessScript',\n );\n if (!input.prevOutScript) throw new Error('PrevOutScript is missing');\n const expanded = expandOutput(input.prevOutScript, ourPubKey);\n if (!expanded.pubkeys)\n throw new Error(\n expanded.type +\n ' not supported (' +\n bscript.toASM(input.prevOutScript) +\n ')',\n );\n if (input.signatures && input.signatures.some(x => x !== undefined)) {\n expanded.signatures = input.signatures;\n }\n let signScript = input.prevOutScript;\n if (expanded.type === SCRIPT_TYPES.P2WPKH) {\n signScript = payments.p2pkh({ pubkey: expanded.pubkeys[0] }).output;\n }\n return {\n prevOutType: expanded.type,\n prevOutScript: input.prevOutScript,\n hasWitness: expanded.type === SCRIPT_TYPES.P2WPKH,\n signScript,\n signType: expanded.type,\n pubkeys: expanded.pubkeys,\n signatures: expanded.signatures,\n maxSignatures: expanded.maxSignatures,\n };\n }\n const prevOutScript = payments.p2pkh({ pubkey: ourPubKey }).output;\n return {\n prevOutType: SCRIPT_TYPES.P2PKH,\n prevOutScript,\n hasWitness: false,\n signScript: prevOutScript,\n signType: SCRIPT_TYPES.P2PKH,\n pubkeys: [ourPubKey],\n signatures: [undefined],\n };\n}\nfunction build(type, input, allowIncomplete) {\n const pubkeys = input.pubkeys || [];\n let signatures = input.signatures || [];\n switch (type) {\n case SCRIPT_TYPES.P2PKH: {\n if (pubkeys.length === 0) break;\n if (signatures.length === 0) break;\n return payments.p2pkh({ pubkey: pubkeys[0], signature: signatures[0] });\n }\n case SCRIPT_TYPES.P2WPKH: {\n if (pubkeys.length === 0) break;\n if (signatures.length === 0) break;\n return payments.p2wpkh({ pubkey: pubkeys[0], signature: signatures[0] });\n }\n case SCRIPT_TYPES.P2PK: {\n if (pubkeys.length === 0) break;\n if (signatures.length === 0) break;\n return payments.p2pk({ signature: signatures[0] });\n }\n case SCRIPT_TYPES.P2MS: {\n const m = input.maxSignatures;\n if (allowIncomplete) {\n signatures = signatures.map(x => x || script_1.OPS.OP_0);\n } else {\n signatures = signatures.filter(x => x);\n }\n // if the transaction is not not complete (complete), or if signatures.length === m, validate\n // otherwise, the number of OP_0's may be >= m, so don't validate (boo)\n const validate = !allowIncomplete || m === signatures.length;\n return payments.p2ms(\n { m, pubkeys, signatures },\n { allowIncomplete, validate },\n );\n }\n case SCRIPT_TYPES.P2SH: {\n const redeem = build(input.redeemScriptType, input, allowIncomplete);\n if (!redeem) return;\n return payments.p2sh({\n redeem: {\n output: redeem.output || input.redeemScript,\n input: redeem.input,\n witness: redeem.witness,\n },\n });\n }\n case SCRIPT_TYPES.P2WSH: {\n const redeem = build(input.witnessScriptType, input, allowIncomplete);\n if (!redeem) return;\n return payments.p2wsh({\n redeem: {\n output: input.witnessScript,\n input: redeem.input,\n witness: redeem.witness,\n },\n });\n }\n }\n}\nfunction canSign(input) {\n return (\n input.signScript !== undefined &&\n input.signType !== undefined &&\n input.pubkeys !== undefined &&\n input.signatures !== undefined &&\n input.signatures.length === input.pubkeys.length &&\n input.pubkeys.length > 0 &&\n (input.hasWitness === false || input.value !== undefined)\n );\n}\nfunction signatureHashType(buffer) {\n return buffer.readUInt8(buffer.length - 1);\n}\nfunction checkSignArgs(inputs, signParams) {\n if (!PREVOUT_TYPES.has(signParams.prevOutScriptType)) {\n throw new TypeError(\n `Unknown prevOutScriptType \"${signParams.prevOutScriptType}\"`,\n );\n }\n tfMessage(\n typeforce.Number,\n signParams.vin,\n `sign must include vin parameter as Number (input index)`,\n );\n tfMessage(\n types.Signer,\n signParams.keyPair,\n `sign must include keyPair parameter as Signer interface`,\n );\n tfMessage(\n typeforce.maybe(typeforce.Number),\n signParams.hashType,\n `sign hashType parameter must be a number`,\n );\n const prevOutType = (inputs[signParams.vin] || []).prevOutType;\n const posType = signParams.prevOutScriptType;\n switch (posType) {\n case 'p2pkh':\n if (prevOutType && prevOutType !== 'pubkeyhash') {\n throw new TypeError(\n `input #${signParams.vin} is not of type p2pkh: ${prevOutType}`,\n );\n }\n tfMessage(\n typeforce.value(undefined),\n signParams.witnessScript,\n `${posType} requires NO witnessScript`,\n );\n tfMessage(\n typeforce.value(undefined),\n signParams.redeemScript,\n `${posType} requires NO redeemScript`,\n );\n tfMessage(\n typeforce.value(undefined),\n signParams.witnessValue,\n `${posType} requires NO witnessValue`,\n );\n break;\n case 'p2pk':\n if (prevOutType && prevOutType !== 'pubkey') {\n throw new TypeError(\n `input #${signParams.vin} is not of type p2pk: ${prevOutType}`,\n );\n }\n tfMessage(\n typeforce.value(undefined),\n signParams.witnessScript,\n `${posType} requires NO witnessScript`,\n );\n tfMessage(\n typeforce.value(undefined),\n signParams.redeemScript,\n `${posType} requires NO redeemScript`,\n );\n tfMessage(\n typeforce.value(undefined),\n signParams.witnessValue,\n `${posType} requires NO witnessValue`,\n );\n break;\n case 'p2wpkh':\n if (prevOutType && prevOutType !== 'witnesspubkeyhash') {\n throw new TypeError(\n `input #${signParams.vin} is not of type p2wpkh: ${prevOutType}`,\n );\n }\n tfMessage(\n typeforce.value(undefined),\n signParams.witnessScript,\n `${posType} requires NO witnessScript`,\n );\n tfMessage(\n typeforce.value(undefined),\n signParams.redeemScript,\n `${posType} requires NO redeemScript`,\n );\n tfMessage(\n types.Satoshi,\n signParams.witnessValue,\n `${posType} requires witnessValue`,\n );\n break;\n case 'p2ms':\n if (prevOutType && prevOutType !== 'multisig') {\n throw new TypeError(\n `input #${signParams.vin} is not of type p2ms: ${prevOutType}`,\n );\n }\n tfMessage(\n typeforce.value(undefined),\n signParams.witnessScript,\n `${posType} requires NO witnessScript`,\n );\n tfMessage(\n typeforce.value(undefined),\n signParams.redeemScript,\n `${posType} requires NO redeemScript`,\n );\n tfMessage(\n typeforce.value(undefined),\n signParams.witnessValue,\n `${posType} requires NO witnessValue`,\n );\n break;\n case 'p2sh-p2wpkh':\n if (prevOutType && prevOutType !== 'scripthash') {\n throw new TypeError(\n `input #${signParams.vin} is not of type p2sh-p2wpkh: ${prevOutType}`,\n );\n }\n tfMessage(\n typeforce.value(undefined),\n signParams.witnessScript,\n `${posType} requires NO witnessScript`,\n );\n tfMessage(\n typeforce.Buffer,\n signParams.redeemScript,\n `${posType} requires redeemScript`,\n );\n tfMessage(\n types.Satoshi,\n signParams.witnessValue,\n `${posType} requires witnessValue`,\n );\n break;\n case 'p2sh-p2ms':\n case 'p2sh-p2pk':\n case 'p2sh-p2pkh':\n if (prevOutType && prevOutType !== 'scripthash') {\n throw new TypeError(\n `input #${signParams.vin} is not of type ${posType}: ${prevOutType}`,\n );\n }\n tfMessage(\n typeforce.value(undefined),\n signParams.witnessScript,\n `${posType} requires NO witnessScript`,\n );\n tfMessage(\n typeforce.Buffer,\n signParams.redeemScript,\n `${posType} requires redeemScript`,\n );\n tfMessage(\n typeforce.value(undefined),\n signParams.witnessValue,\n `${posType} requires NO witnessValue`,\n );\n break;\n case 'p2wsh-p2ms':\n case 'p2wsh-p2pk':\n case 'p2wsh-p2pkh':\n if (prevOutType && prevOutType !== 'witnessscripthash') {\n throw new TypeError(\n `input #${signParams.vin} is not of type ${posType}: ${prevOutType}`,\n );\n }\n tfMessage(\n typeforce.Buffer,\n signParams.witnessScript,\n `${posType} requires witnessScript`,\n );\n tfMessage(\n typeforce.value(undefined),\n signParams.redeemScript,\n `${posType} requires NO redeemScript`,\n );\n tfMessage(\n types.Satoshi,\n signParams.witnessValue,\n `${posType} requires witnessValue`,\n );\n break;\n case 'p2sh-p2wsh-p2ms':\n case 'p2sh-p2wsh-p2pk':\n case 'p2sh-p2wsh-p2pkh':\n if (prevOutType && prevOutType !== 'scripthash') {\n throw new TypeError(\n `input #${signParams.vin} is not of type ${posType}: ${prevOutType}`,\n );\n }\n tfMessage(\n typeforce.Buffer,\n signParams.witnessScript,\n `${posType} requires witnessScript`,\n );\n tfMessage(\n typeforce.Buffer,\n signParams.redeemScript,\n `${posType} requires witnessScript`,\n );\n tfMessage(\n types.Satoshi,\n signParams.witnessValue,\n `${posType} requires witnessScript`,\n );\n break;\n }\n}\nfunction trySign({\n input,\n ourPubKey,\n keyPair,\n signatureHash,\n hashType,\n useLowR,\n}) {\n // enforce in order signing of public keys\n let signed = false;\n for (const [i, pubKey] of input.pubkeys.entries()) {\n if (!ourPubKey.equals(pubKey)) continue;\n if (input.signatures[i]) throw new Error('Signature already exists');\n // TODO: add tests\n if (ourPubKey.length !== 33 && input.hasWitness) {\n throw new Error(\n 'BIP143 rejects uncompressed public keys in P2WPKH or P2WSH',\n );\n }\n const signature = keyPair.sign(signatureHash, useLowR);\n input.signatures[i] = bscript.signature.encode(signature, hashType);\n signed = true;\n }\n if (!signed) throw new Error('Key pair cannot sign for this input');\n}\nfunction getSigningData(\n network,\n inputs,\n needsOutputs,\n tx,\n signParams,\n keyPair,\n redeemScript,\n hashType,\n witnessValue,\n witnessScript,\n useLowR,\n) {\n let vin;\n if (typeof signParams === 'number') {\n console.warn(\n 'DEPRECATED: TransactionBuilder sign method arguments ' +\n 'will change in v6, please use the TxbSignArg interface',\n );\n vin = signParams;\n } else if (typeof signParams === 'object') {\n checkSignArgs(inputs, signParams);\n ({\n vin,\n keyPair,\n redeemScript,\n hashType,\n witnessValue,\n witnessScript,\n } = signParams);\n } else {\n throw new TypeError(\n 'TransactionBuilder sign first arg must be TxbSignArg or number',\n );\n }\n if (keyPair === undefined) {\n throw new Error('sign requires keypair');\n }\n // TODO: remove keyPair.network matching in 4.0.0\n if (keyPair.network && keyPair.network !== network)\n throw new TypeError('Inconsistent network');\n if (!inputs[vin]) throw new Error('No input at index: ' + vin);\n hashType = hashType || transaction_1.Transaction.SIGHASH_ALL;\n if (needsOutputs(hashType)) throw new Error('Transaction needs outputs');\n const input = inputs[vin];\n // if redeemScript was previously provided, enforce consistency\n if (\n input.redeemScript !== undefined &&\n redeemScript &&\n !input.redeemScript.equals(redeemScript)\n ) {\n throw new Error('Inconsistent redeemScript');\n }\n const ourPubKey =\n keyPair.publicKey || (keyPair.getPublicKey && keyPair.getPublicKey());\n if (!canSign(input)) {\n if (witnessValue !== undefined) {\n if (input.value !== undefined && input.value !== witnessValue)\n throw new Error('Input did not match witnessValue');\n typeforce(types.Satoshi, witnessValue);\n input.value = witnessValue;\n }\n if (!canSign(input)) {\n const prepared = prepareInput(\n input,\n ourPubKey,\n redeemScript,\n witnessScript,\n );\n // updates inline\n Object.assign(input, prepared);\n }\n if (!canSign(input)) throw Error(input.prevOutType + ' not supported');\n }\n // ready to sign\n let signatureHash;\n if (input.hasWitness) {\n signatureHash = tx.hashForWitnessV0(\n vin,\n input.signScript,\n input.value,\n hashType,\n );\n } else {\n signatureHash = tx.hashForSignature(vin, input.signScript, hashType);\n }\n return {\n input,\n ourPubKey,\n keyPair,\n signatureHash,\n hashType,\n useLowR: !!useLowR,\n };\n}\n", "'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nconst bip32 = require('bip32');\nexports.bip32 = bip32;\nconst address = require('./address');\nexports.address = address;\nconst crypto = require('./crypto');\nexports.crypto = crypto;\nconst ECPair = require('./ecpair');\nexports.ECPair = ECPair;\nconst networks = require('./networks');\nexports.networks = networks;\nconst payments = require('./payments');\nexports.payments = payments;\nconst script = require('./script');\nexports.script = script;\nvar block_1 = require('./block');\nexports.Block = block_1.Block;\nvar psbt_1 = require('./psbt');\nexports.Psbt = psbt_1.Psbt;\nvar script_1 = require('./script');\nexports.opcodes = script_1.OPS;\nvar transaction_1 = require('./transaction');\nexports.Transaction = transaction_1.Transaction;\nvar transaction_builder_1 = require('./transaction_builder');\nexports.TransactionBuilder = transaction_builder_1.TransactionBuilder;\n", "/*\n * Bitcoin BIP32 path helpers\n * (C) 2016 Alex Beregszaszi\n */\n\nconst HARDENED = 0x80000000\n\nvar BIPPath = function (path) {\n if (!Array.isArray(path)) {\n throw new Error('Input must be an Array')\n }\n if (path.length === 0) {\n throw new Error('Path must contain at least one level')\n }\n for (var i = 0; i < path.length; i++) {\n if (typeof path[i] !== 'number') {\n throw new Error('Path element is not a number')\n }\n }\n this.path = path\n}\n\nBIPPath.validatePathArray = function (path) {\n try {\n BIPPath.fromPathArray(path)\n return true\n } catch (e) {\n return false\n }\n}\n\nBIPPath.validateString = function (text, reqRoot) {\n try {\n BIPPath.fromString(text, reqRoot)\n return true\n } catch (e) {\n return false\n }\n}\n\nBIPPath.fromPathArray = function (path) {\n return new BIPPath(path)\n}\n\nBIPPath.fromString = function (text, reqRoot) {\n // skip the root\n if (/^m\\//i.test(text)) {\n text = text.slice(2)\n } else if (reqRoot) {\n throw new Error('Root element is required')\n }\n\n var path = text.split('/')\n var ret = new Array(path.length)\n for (var i = 0; i < path.length; i++) {\n var tmp = /(\\d+)([hH\\']?)/.exec(path[i])\n if (tmp === null) {\n throw new Error('Invalid input')\n }\n ret[i] = parseInt(tmp[1], 10)\n\n if (ret[i] >= HARDENED) {\n throw new Error('Invalid child index')\n }\n\n if (tmp[2] === 'h' || tmp[2] === 'H' || tmp[2] === '\\'') {\n ret[i] += HARDENED\n } else if (tmp[2].length != 0) {\n throw new Error('Invalid modifier')\n }\n }\n return new BIPPath(ret)\n}\n\nBIPPath.prototype.toPathArray = function () {\n return this.path\n}\n\nBIPPath.prototype.toString = function (noRoot, oldStyle) {\n var ret = new Array(this.path.length)\n for (var i = 0; i < this.path.length; i++) {\n var tmp = this.path[i]\n if (tmp & HARDENED) {\n ret[i] = (tmp & ~HARDENED) + (oldStyle ? 'h' : '\\'')\n } else {\n ret[i] = tmp\n }\n }\n return (noRoot ? '' : 'm/') + ret.join('/')\n}\n\nBIPPath.prototype.inspect = function () {\n return 'BIPPath <' + this.toString() + '>'\n}\n\nmodule.exports = BIPPath\n", "module.exports = require('stream');\n", "'use strict';\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nvar _require = require('buffer'),\n Buffer = _require.Buffer;\n\nvar _require2 = require('util'),\n inspect = _require2.inspect;\n\nvar custom = inspect && inspect.custom || 'inspect';\n\nfunction copyBuffer(src, target, offset) {\n Buffer.prototype.copy.call(src, target, offset);\n}\n\nmodule.exports =\n/*#__PURE__*/\nfunction () {\n function BufferList() {\n _classCallCheck(this, BufferList);\n\n this.head = null;\n this.tail = null;\n this.length = 0;\n }\n\n _createClass(BufferList, [{\n key: \"push\",\n value: function push(v) {\n var entry = {\n data: v,\n next: null\n };\n if (this.length > 0) this.tail.next = entry;else this.head = entry;\n this.tail = entry;\n ++this.length;\n }\n }, {\n key: \"unshift\",\n value: function unshift(v) {\n var entry = {\n data: v,\n next: this.head\n };\n if (this.length === 0) this.tail = entry;\n this.head = entry;\n ++this.length;\n }\n }, {\n key: \"shift\",\n value: function shift() {\n if (this.length === 0) return;\n var ret = this.head.data;\n if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next;\n --this.length;\n return ret;\n }\n }, {\n key: \"clear\",\n value: function clear() {\n this.head = this.tail = null;\n this.length = 0;\n }\n }, {\n key: \"join\",\n value: function join(s) {\n if (this.length === 0) return '';\n var p = this.head;\n var ret = '' + p.data;\n\n while (p = p.next) {\n ret += s + p.data;\n }\n\n return ret;\n }\n }, {\n key: \"concat\",\n value: function concat(n) {\n if (this.length === 0) return Buffer.alloc(0);\n var ret = Buffer.allocUnsafe(n >>> 0);\n var p = this.head;\n var i = 0;\n\n while (p) {\n copyBuffer(p.data, ret, i);\n i += p.data.length;\n p = p.next;\n }\n\n return ret;\n } // Consumes a specified amount of bytes or characters from the buffered data.\n\n }, {\n key: \"consume\",\n value: function consume(n, hasStrings) {\n var ret;\n\n if (n < this.head.data.length) {\n // `slice` is the same for buffers and strings.\n ret = this.head.data.slice(0, n);\n this.head.data = this.head.data.slice(n);\n } else if (n === this.head.data.length) {\n // First chunk is a perfect match.\n ret = this.shift();\n } else {\n // Result spans more than one buffer.\n ret = hasStrings ? this._getString(n) : this._getBuffer(n);\n }\n\n return ret;\n }\n }, {\n key: \"first\",\n value: function first() {\n return this.head.data;\n } // Consumes a specified amount of characters from the buffered data.\n\n }, {\n key: \"_getString\",\n value: function _getString(n) {\n var p = this.head;\n var c = 1;\n var ret = p.data;\n n -= ret.length;\n\n while (p = p.next) {\n var str = p.data;\n var nb = n > str.length ? str.length : n;\n if (nb === str.length) ret += str;else ret += str.slice(0, n);\n n -= nb;\n\n if (n === 0) {\n if (nb === str.length) {\n ++c;\n if (p.next) this.head = p.next;else this.head = this.tail = null;\n } else {\n this.head = p;\n p.data = str.slice(nb);\n }\n\n break;\n }\n\n ++c;\n }\n\n this.length -= c;\n return ret;\n } // Consumes a specified amount of bytes from the buffered data.\n\n }, {\n key: \"_getBuffer\",\n value: function _getBuffer(n) {\n var ret = Buffer.allocUnsafe(n);\n var p = this.head;\n var c = 1;\n p.data.copy(ret);\n n -= p.data.length;\n\n while (p = p.next) {\n var buf = p.data;\n var nb = n > buf.length ? buf.length : n;\n buf.copy(ret, ret.length - n, 0, nb);\n n -= nb;\n\n if (n === 0) {\n if (nb === buf.length) {\n ++c;\n if (p.next) this.head = p.next;else this.head = this.tail = null;\n } else {\n this.head = p;\n p.data = buf.slice(nb);\n }\n\n break;\n }\n\n ++c;\n }\n\n this.length -= c;\n return ret;\n } // Make sure the linked list only shows the minimal necessary information.\n\n }, {\n key: custom,\n value: function value(_, options) {\n return inspect(this, _objectSpread({}, options, {\n // Only inspect one level.\n depth: 0,\n // It should not recurse.\n customInspect: false\n }));\n }\n }]);\n\n return BufferList;\n}();", "'use strict'; // undocumented cb() API, needed for core, not for public API\n\nfunction destroy(err, cb) {\n var _this = this;\n\n var readableDestroyed = this._readableState && this._readableState.destroyed;\n var writableDestroyed = this._writableState && this._writableState.destroyed;\n\n if (readableDestroyed || writableDestroyed) {\n if (cb) {\n cb(err);\n } else if (err) {\n if (!this._writableState) {\n process.nextTick(emitErrorNT, this, err);\n } else if (!this._writableState.errorEmitted) {\n this._writableState.errorEmitted = true;\n process.nextTick(emitErrorNT, this, err);\n }\n }\n\n return this;\n } // we set destroyed to true before firing error callbacks in order\n // to make it re-entrance safe in case destroy() is called within callbacks\n\n\n if (this._readableState) {\n this._readableState.destroyed = true;\n } // if this is a duplex stream mark the writable part as destroyed as well\n\n\n if (this._writableState) {\n this._writableState.destroyed = true;\n }\n\n this._destroy(err || null, function (err) {\n if (!cb && err) {\n if (!_this._writableState) {\n process.nextTick(emitErrorAndCloseNT, _this, err);\n } else if (!_this._writableState.errorEmitted) {\n _this._writableState.errorEmitted = true;\n process.nextTick(emitErrorAndCloseNT, _this, err);\n } else {\n process.nextTick(emitCloseNT, _this);\n }\n } else if (cb) {\n process.nextTick(emitCloseNT, _this);\n cb(err);\n } else {\n process.nextTick(emitCloseNT, _this);\n }\n });\n\n return this;\n}\n\nfunction emitErrorAndCloseNT(self, err) {\n emitErrorNT(self, err);\n emitCloseNT(self);\n}\n\nfunction emitCloseNT(self) {\n if (self._writableState && !self._writableState.emitClose) return;\n if (self._readableState && !self._readableState.emitClose) return;\n self.emit('close');\n}\n\nfunction undestroy() {\n if (this._readableState) {\n this._readableState.destroyed = false;\n this._readableState.reading = false;\n this._readableState.ended = false;\n this._readableState.endEmitted = false;\n }\n\n if (this._writableState) {\n this._writableState.destroyed = false;\n this._writableState.ended = false;\n this._writableState.ending = false;\n this._writableState.finalCalled = false;\n this._writableState.prefinished = false;\n this._writableState.finished = false;\n this._writableState.errorEmitted = false;\n }\n}\n\nfunction emitErrorNT(self, err) {\n self.emit('error', err);\n}\n\nfunction errorOrDestroy(stream, err) {\n // We have tests that rely on errors being emitted\n // in the same tick, so changing this is semver major.\n // For now when you opt-in to autoDestroy we allow\n // the error to be emitted nextTick. In a future\n // semver major update we should change the default to this.\n var rState = stream._readableState;\n var wState = stream._writableState;\n if (rState && rState.autoDestroy || wState && wState.autoDestroy) stream.destroy(err);else stream.emit('error', err);\n}\n\nmodule.exports = {\n destroy: destroy,\n undestroy: undestroy,\n errorOrDestroy: errorOrDestroy\n};", "'use strict';\n\nconst codes = {};\n\nfunction createErrorType(code, message, Base) {\n if (!Base) {\n Base = Error\n }\n\n function getMessage (arg1, arg2, arg3) {\n if (typeof message === 'string') {\n return message\n } else {\n return message(arg1, arg2, arg3)\n }\n }\n\n class NodeError extends Base {\n constructor (arg1, arg2, arg3) {\n super(getMessage(arg1, arg2, arg3));\n }\n }\n\n NodeError.prototype.name = Base.name;\n NodeError.prototype.code = code;\n\n codes[code] = NodeError;\n}\n\n// https://github.com/nodejs/node/blob/v10.8.0/lib/internal/errors.js\nfunction oneOf(expected, thing) {\n if (Array.isArray(expected)) {\n const len = expected.length;\n expected = expected.map((i) => String(i));\n if (len > 2) {\n return `one of ${thing} ${expected.slice(0, len - 1).join(', ')}, or ` +\n expected[len - 1];\n } else if (len === 2) {\n return `one of ${thing} ${expected[0]} or ${expected[1]}`;\n } else {\n return `of ${thing} ${expected[0]}`;\n }\n } else {\n return `of ${thing} ${String(expected)}`;\n }\n}\n\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/startsWith\nfunction startsWith(str, search, pos) {\n\treturn str.substr(!pos || pos < 0 ? 0 : +pos, search.length) === search;\n}\n\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/endsWith\nfunction endsWith(str, search, this_len) {\n\tif (this_len === undefined || this_len > str.length) {\n\t\tthis_len = str.length;\n\t}\n\treturn str.substring(this_len - search.length, this_len) === search;\n}\n\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/includes\nfunction includes(str, search, start) {\n if (typeof start !== 'number') {\n start = 0;\n }\n\n if (start + search.length > str.length) {\n return false;\n } else {\n return str.indexOf(search, start) !== -1;\n }\n}\n\ncreateErrorType('ERR_INVALID_OPT_VALUE', function (name, value) {\n return 'The value \"' + value + '\" is invalid for option \"' + name + '\"'\n}, TypeError);\ncreateErrorType('ERR_INVALID_ARG_TYPE', function (name, expected, actual) {\n // determiner: 'must be' or 'must not be'\n let determiner;\n if (typeof expected === 'string' && startsWith(expected, 'not ')) {\n determiner = 'must not be';\n expected = expected.replace(/^not /, '');\n } else {\n determiner = 'must be';\n }\n\n let msg;\n if (endsWith(name, ' argument')) {\n // For cases like 'first argument'\n msg = `The ${name} ${determiner} ${oneOf(expected, 'type')}`;\n } else {\n const type = includes(name, '.') ? 'property' : 'argument';\n msg = `The \"${name}\" ${type} ${determiner} ${oneOf(expected, 'type')}`;\n }\n\n msg += `. Received type ${typeof actual}`;\n return msg;\n}, TypeError);\ncreateErrorType('ERR_STREAM_PUSH_AFTER_EOF', 'stream.push() after EOF');\ncreateErrorType('ERR_METHOD_NOT_IMPLEMENTED', function (name) {\n return 'The ' + name + ' method is not implemented'\n});\ncreateErrorType('ERR_STREAM_PREMATURE_CLOSE', 'Premature close');\ncreateErrorType('ERR_STREAM_DESTROYED', function (name) {\n return 'Cannot call ' + name + ' after a stream was destroyed';\n});\ncreateErrorType('ERR_MULTIPLE_CALLBACK', 'Callback called multiple times');\ncreateErrorType('ERR_STREAM_CANNOT_PIPE', 'Cannot pipe, not readable');\ncreateErrorType('ERR_STREAM_WRITE_AFTER_END', 'write after end');\ncreateErrorType('ERR_STREAM_NULL_VALUES', 'May not write null values to stream', TypeError);\ncreateErrorType('ERR_UNKNOWN_ENCODING', function (arg) {\n return 'Unknown encoding: ' + arg\n}, TypeError);\ncreateErrorType('ERR_STREAM_UNSHIFT_AFTER_END_EVENT', 'stream.unshift() after end event');\n\nmodule.exports.codes = codes;\n", "'use strict';\n\nvar ERR_INVALID_OPT_VALUE = require('../../../errors').codes.ERR_INVALID_OPT_VALUE;\n\nfunction highWaterMarkFrom(options, isDuplex, duplexKey) {\n return options.highWaterMark != null ? options.highWaterMark : isDuplex ? options[duplexKey] : null;\n}\n\nfunction getHighWaterMark(state, options, duplexKey, isDuplex) {\n var hwm = highWaterMarkFrom(options, isDuplex, duplexKey);\n\n if (hwm != null) {\n if (!(isFinite(hwm) && Math.floor(hwm) === hwm) || hwm < 0) {\n var name = isDuplex ? duplexKey : 'highWaterMark';\n throw new ERR_INVALID_OPT_VALUE(name, hwm);\n }\n\n return Math.floor(hwm);\n } // Default value\n\n\n return state.objectMode ? 16 : 16 * 1024;\n}\n\nmodule.exports = {\n getHighWaterMark: getHighWaterMark\n};", "\n/**\n * For Node.js, simply re-export the core `util.deprecate` function.\n */\n\nmodule.exports = require('util').deprecate;\n", "// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n// A bit simpler than readable streams.\n// Implement an async ._write(chunk, encoding, cb), and it'll handle all\n// the drain event emission and buffering.\n'use strict';\n\nmodule.exports = Writable;\n/* */\n\nfunction WriteReq(chunk, encoding, cb) {\n this.chunk = chunk;\n this.encoding = encoding;\n this.callback = cb;\n this.next = null;\n} // It seems a linked list but it is not\n// there will be only 2 of these for each stream\n\n\nfunction CorkedRequest(state) {\n var _this = this;\n\n this.next = null;\n this.entry = null;\n\n this.finish = function () {\n onCorkedFinish(_this, state);\n };\n}\n/* */\n\n/**/\n\n\nvar Duplex;\n/**/\n\nWritable.WritableState = WritableState;\n/**/\n\nvar internalUtil = {\n deprecate: require('util-deprecate')\n};\n/**/\n\n/**/\n\nvar Stream = require('./internal/streams/stream');\n/**/\n\n\nvar Buffer = require('buffer').Buffer;\n\nvar OurUint8Array = global.Uint8Array || function () {};\n\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\n\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n\nvar destroyImpl = require('./internal/streams/destroy');\n\nvar _require = require('./internal/streams/state'),\n getHighWaterMark = _require.getHighWaterMark;\n\nvar _require$codes = require('../errors').codes,\n ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK,\n ERR_STREAM_CANNOT_PIPE = _require$codes.ERR_STREAM_CANNOT_PIPE,\n ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED,\n ERR_STREAM_NULL_VALUES = _require$codes.ERR_STREAM_NULL_VALUES,\n ERR_STREAM_WRITE_AFTER_END = _require$codes.ERR_STREAM_WRITE_AFTER_END,\n ERR_UNKNOWN_ENCODING = _require$codes.ERR_UNKNOWN_ENCODING;\n\nvar errorOrDestroy = destroyImpl.errorOrDestroy;\n\nrequire('inherits')(Writable, Stream);\n\nfunction nop() {}\n\nfunction WritableState(options, stream, isDuplex) {\n Duplex = Duplex || require('./_stream_duplex');\n options = options || {}; // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream,\n // e.g. options.readableObjectMode vs. options.writableObjectMode, etc.\n\n if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex; // object stream flag to indicate whether or not this stream\n // contains buffers or objects.\n\n this.objectMode = !!options.objectMode;\n if (isDuplex) this.objectMode = this.objectMode || !!options.writableObjectMode; // the point at which write() starts returning false\n // Note: 0 is a valid value, means that we always return false if\n // the entire buffer is not flushed immediately on write()\n\n this.highWaterMark = getHighWaterMark(this, options, 'writableHighWaterMark', isDuplex); // if _final has been called\n\n this.finalCalled = false; // drain event flag.\n\n this.needDrain = false; // at the start of calling end()\n\n this.ending = false; // when end() has been called, and returned\n\n this.ended = false; // when 'finish' is emitted\n\n this.finished = false; // has it been destroyed\n\n this.destroyed = false; // should we decode strings into buffers before passing to _write?\n // this is here so that some node-core streams can optimize string\n // handling at a lower level.\n\n var noDecode = options.decodeStrings === false;\n this.decodeStrings = !noDecode; // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n\n this.defaultEncoding = options.defaultEncoding || 'utf8'; // not an actual buffer we keep track of, but a measurement\n // of how much we're waiting to get pushed to some underlying\n // socket or file.\n\n this.length = 0; // a flag to see when we're in the middle of a write.\n\n this.writing = false; // when true all writes will be buffered until .uncork() call\n\n this.corked = 0; // a flag to be able to tell if the onwrite cb is called immediately,\n // or on a later tick. We set this to true at first, because any\n // actions that shouldn't happen until \"later\" should generally also\n // not happen before the first write call.\n\n this.sync = true; // a flag to know if we're processing previously buffered items, which\n // may call the _write() callback in the same tick, so that we don't\n // end up in an overlapped onwrite situation.\n\n this.bufferProcessing = false; // the callback that's passed to _write(chunk,cb)\n\n this.onwrite = function (er) {\n onwrite(stream, er);\n }; // the callback that the user supplies to write(chunk,encoding,cb)\n\n\n this.writecb = null; // the amount that is being written when _write is called.\n\n this.writelen = 0;\n this.bufferedRequest = null;\n this.lastBufferedRequest = null; // number of pending user-supplied write callbacks\n // this must be 0 before 'finish' can be emitted\n\n this.pendingcb = 0; // emit prefinish if the only thing we're waiting for is _write cbs\n // This is relevant for synchronous Transform streams\n\n this.prefinished = false; // True if the error was already emitted and should not be thrown again\n\n this.errorEmitted = false; // Should close be emitted on destroy. Defaults to true.\n\n this.emitClose = options.emitClose !== false; // Should .destroy() be called after 'finish' (and potentially 'end')\n\n this.autoDestroy = !!options.autoDestroy; // count buffered requests\n\n this.bufferedRequestCount = 0; // allocate the first CorkedRequest, there is always\n // one allocated and free to use, and we maintain at most two\n\n this.corkedRequestsFree = new CorkedRequest(this);\n}\n\nWritableState.prototype.getBuffer = function getBuffer() {\n var current = this.bufferedRequest;\n var out = [];\n\n while (current) {\n out.push(current);\n current = current.next;\n }\n\n return out;\n};\n\n(function () {\n try {\n Object.defineProperty(WritableState.prototype, 'buffer', {\n get: internalUtil.deprecate(function writableStateBufferGetter() {\n return this.getBuffer();\n }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.', 'DEP0003')\n });\n } catch (_) {}\n})(); // Test _writableState for inheritance to account for Duplex streams,\n// whose prototype chain only points to Readable.\n\n\nvar realHasInstance;\n\nif (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') {\n realHasInstance = Function.prototype[Symbol.hasInstance];\n Object.defineProperty(Writable, Symbol.hasInstance, {\n value: function value(object) {\n if (realHasInstance.call(this, object)) return true;\n if (this !== Writable) return false;\n return object && object._writableState instanceof WritableState;\n }\n });\n} else {\n realHasInstance = function realHasInstance(object) {\n return object instanceof this;\n };\n}\n\nfunction Writable(options) {\n Duplex = Duplex || require('./_stream_duplex'); // Writable ctor is applied to Duplexes, too.\n // `realHasInstance` is necessary because using plain `instanceof`\n // would return false, as no `_writableState` property is attached.\n // Trying to use the custom `instanceof` for Writable here will also break the\n // Node.js LazyTransform implementation, which has a non-trivial getter for\n // `_writableState` that would lead to infinite recursion.\n // Checking for a Stream.Duplex instance is faster here instead of inside\n // the WritableState constructor, at least with V8 6.5\n\n var isDuplex = this instanceof Duplex;\n if (!isDuplex && !realHasInstance.call(Writable, this)) return new Writable(options);\n this._writableState = new WritableState(options, this, isDuplex); // legacy.\n\n this.writable = true;\n\n if (options) {\n if (typeof options.write === 'function') this._write = options.write;\n if (typeof options.writev === 'function') this._writev = options.writev;\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n if (typeof options.final === 'function') this._final = options.final;\n }\n\n Stream.call(this);\n} // Otherwise people can pipe Writable streams, which is just wrong.\n\n\nWritable.prototype.pipe = function () {\n errorOrDestroy(this, new ERR_STREAM_CANNOT_PIPE());\n};\n\nfunction writeAfterEnd(stream, cb) {\n var er = new ERR_STREAM_WRITE_AFTER_END(); // TODO: defer error events consistently everywhere, not just the cb\n\n errorOrDestroy(stream, er);\n process.nextTick(cb, er);\n} // Checks that a user-supplied chunk is valid, especially for the particular\n// mode the stream is in. Currently this means that `null` is never accepted\n// and undefined/non-string values are only allowed in object mode.\n\n\nfunction validChunk(stream, state, chunk, cb) {\n var er;\n\n if (chunk === null) {\n er = new ERR_STREAM_NULL_VALUES();\n } else if (typeof chunk !== 'string' && !state.objectMode) {\n er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer'], chunk);\n }\n\n if (er) {\n errorOrDestroy(stream, er);\n process.nextTick(cb, er);\n return false;\n }\n\n return true;\n}\n\nWritable.prototype.write = function (chunk, encoding, cb) {\n var state = this._writableState;\n var ret = false;\n\n var isBuf = !state.objectMode && _isUint8Array(chunk);\n\n if (isBuf && !Buffer.isBuffer(chunk)) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n\n if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n\n if (isBuf) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding;\n if (typeof cb !== 'function') cb = nop;\n if (state.ending) writeAfterEnd(this, cb);else if (isBuf || validChunk(this, state, chunk, cb)) {\n state.pendingcb++;\n ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb);\n }\n return ret;\n};\n\nWritable.prototype.cork = function () {\n this._writableState.corked++;\n};\n\nWritable.prototype.uncork = function () {\n var state = this._writableState;\n\n if (state.corked) {\n state.corked--;\n if (!state.writing && !state.corked && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);\n }\n};\n\nWritable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {\n // node::ParseEncoding() requires lower case.\n if (typeof encoding === 'string') encoding = encoding.toLowerCase();\n if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'raw'].indexOf((encoding + '').toLowerCase()) > -1)) throw new ERR_UNKNOWN_ENCODING(encoding);\n this._writableState.defaultEncoding = encoding;\n return this;\n};\n\nObject.defineProperty(Writable.prototype, 'writableBuffer', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState && this._writableState.getBuffer();\n }\n});\n\nfunction decodeChunk(state, chunk, encoding) {\n if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') {\n chunk = Buffer.from(chunk, encoding);\n }\n\n return chunk;\n}\n\nObject.defineProperty(Writable.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.highWaterMark;\n }\n}); // if we're already writing something, then just put this\n// in the queue, and wait our turn. Otherwise, call _write\n// If we return false, then we need a drain event, so set that flag.\n\nfunction writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) {\n if (!isBuf) {\n var newChunk = decodeChunk(state, chunk, encoding);\n\n if (chunk !== newChunk) {\n isBuf = true;\n encoding = 'buffer';\n chunk = newChunk;\n }\n }\n\n var len = state.objectMode ? 1 : chunk.length;\n state.length += len;\n var ret = state.length < state.highWaterMark; // we must ensure that previous needDrain will not be reset to false.\n\n if (!ret) state.needDrain = true;\n\n if (state.writing || state.corked) {\n var last = state.lastBufferedRequest;\n state.lastBufferedRequest = {\n chunk: chunk,\n encoding: encoding,\n isBuf: isBuf,\n callback: cb,\n next: null\n };\n\n if (last) {\n last.next = state.lastBufferedRequest;\n } else {\n state.bufferedRequest = state.lastBufferedRequest;\n }\n\n state.bufferedRequestCount += 1;\n } else {\n doWrite(stream, state, false, len, chunk, encoding, cb);\n }\n\n return ret;\n}\n\nfunction doWrite(stream, state, writev, len, chunk, encoding, cb) {\n state.writelen = len;\n state.writecb = cb;\n state.writing = true;\n state.sync = true;\n if (state.destroyed) state.onwrite(new ERR_STREAM_DESTROYED('write'));else if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite);\n state.sync = false;\n}\n\nfunction onwriteError(stream, state, sync, er, cb) {\n --state.pendingcb;\n\n if (sync) {\n // defer the callback if we are being called synchronously\n // to avoid piling up things on the stack\n process.nextTick(cb, er); // this can emit finish, and it will always happen\n // after error\n\n process.nextTick(finishMaybe, stream, state);\n stream._writableState.errorEmitted = true;\n errorOrDestroy(stream, er);\n } else {\n // the caller expect this to happen before if\n // it is async\n cb(er);\n stream._writableState.errorEmitted = true;\n errorOrDestroy(stream, er); // this can emit finish, but finish must\n // always follow error\n\n finishMaybe(stream, state);\n }\n}\n\nfunction onwriteStateUpdate(state) {\n state.writing = false;\n state.writecb = null;\n state.length -= state.writelen;\n state.writelen = 0;\n}\n\nfunction onwrite(stream, er) {\n var state = stream._writableState;\n var sync = state.sync;\n var cb = state.writecb;\n if (typeof cb !== 'function') throw new ERR_MULTIPLE_CALLBACK();\n onwriteStateUpdate(state);\n if (er) onwriteError(stream, state, sync, er, cb);else {\n // Check if we're actually ready to finish, but don't emit yet\n var finished = needFinish(state) || stream.destroyed;\n\n if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {\n clearBuffer(stream, state);\n }\n\n if (sync) {\n process.nextTick(afterWrite, stream, state, finished, cb);\n } else {\n afterWrite(stream, state, finished, cb);\n }\n }\n}\n\nfunction afterWrite(stream, state, finished, cb) {\n if (!finished) onwriteDrain(stream, state);\n state.pendingcb--;\n cb();\n finishMaybe(stream, state);\n} // Must force callback to be called on nextTick, so that we don't\n// emit 'drain' before the write() consumer gets the 'false' return\n// value, and has a chance to attach a 'drain' listener.\n\n\nfunction onwriteDrain(stream, state) {\n if (state.length === 0 && state.needDrain) {\n state.needDrain = false;\n stream.emit('drain');\n }\n} // if there's something in the buffer waiting, then process it\n\n\nfunction clearBuffer(stream, state) {\n state.bufferProcessing = true;\n var entry = state.bufferedRequest;\n\n if (stream._writev && entry && entry.next) {\n // Fast case, write everything using _writev()\n var l = state.bufferedRequestCount;\n var buffer = new Array(l);\n var holder = state.corkedRequestsFree;\n holder.entry = entry;\n var count = 0;\n var allBuffers = true;\n\n while (entry) {\n buffer[count] = entry;\n if (!entry.isBuf) allBuffers = false;\n entry = entry.next;\n count += 1;\n }\n\n buffer.allBuffers = allBuffers;\n doWrite(stream, state, true, state.length, buffer, '', holder.finish); // doWrite is almost always async, defer these to save a bit of time\n // as the hot path ends with doWrite\n\n state.pendingcb++;\n state.lastBufferedRequest = null;\n\n if (holder.next) {\n state.corkedRequestsFree = holder.next;\n holder.next = null;\n } else {\n state.corkedRequestsFree = new CorkedRequest(state);\n }\n\n state.bufferedRequestCount = 0;\n } else {\n // Slow case, write chunks one-by-one\n while (entry) {\n var chunk = entry.chunk;\n var encoding = entry.encoding;\n var cb = entry.callback;\n var len = state.objectMode ? 1 : chunk.length;\n doWrite(stream, state, false, len, chunk, encoding, cb);\n entry = entry.next;\n state.bufferedRequestCount--; // if we didn't call the onwrite immediately, then\n // it means that we need to wait until it does.\n // also, that means that the chunk and cb are currently\n // being processed, so move the buffer counter past them.\n\n if (state.writing) {\n break;\n }\n }\n\n if (entry === null) state.lastBufferedRequest = null;\n }\n\n state.bufferedRequest = entry;\n state.bufferProcessing = false;\n}\n\nWritable.prototype._write = function (chunk, encoding, cb) {\n cb(new ERR_METHOD_NOT_IMPLEMENTED('_write()'));\n};\n\nWritable.prototype._writev = null;\n\nWritable.prototype.end = function (chunk, encoding, cb) {\n var state = this._writableState;\n\n if (typeof chunk === 'function') {\n cb = chunk;\n chunk = null;\n encoding = null;\n } else if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n\n if (chunk !== null && chunk !== undefined) this.write(chunk, encoding); // .end() fully uncorks\n\n if (state.corked) {\n state.corked = 1;\n this.uncork();\n } // ignore unnecessary end() calls.\n\n\n if (!state.ending) endWritable(this, state, cb);\n return this;\n};\n\nObject.defineProperty(Writable.prototype, 'writableLength', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.length;\n }\n});\n\nfunction needFinish(state) {\n return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;\n}\n\nfunction callFinal(stream, state) {\n stream._final(function (err) {\n state.pendingcb--;\n\n if (err) {\n errorOrDestroy(stream, err);\n }\n\n state.prefinished = true;\n stream.emit('prefinish');\n finishMaybe(stream, state);\n });\n}\n\nfunction prefinish(stream, state) {\n if (!state.prefinished && !state.finalCalled) {\n if (typeof stream._final === 'function' && !state.destroyed) {\n state.pendingcb++;\n state.finalCalled = true;\n process.nextTick(callFinal, stream, state);\n } else {\n state.prefinished = true;\n stream.emit('prefinish');\n }\n }\n}\n\nfunction finishMaybe(stream, state) {\n var need = needFinish(state);\n\n if (need) {\n prefinish(stream, state);\n\n if (state.pendingcb === 0) {\n state.finished = true;\n stream.emit('finish');\n\n if (state.autoDestroy) {\n // In case of duplex streams we need a way to detect\n // if the readable side is ready for autoDestroy as well\n var rState = stream._readableState;\n\n if (!rState || rState.autoDestroy && rState.endEmitted) {\n stream.destroy();\n }\n }\n }\n }\n\n return need;\n}\n\nfunction endWritable(stream, state, cb) {\n state.ending = true;\n finishMaybe(stream, state);\n\n if (cb) {\n if (state.finished) process.nextTick(cb);else stream.once('finish', cb);\n }\n\n state.ended = true;\n stream.writable = false;\n}\n\nfunction onCorkedFinish(corkReq, state, err) {\n var entry = corkReq.entry;\n corkReq.entry = null;\n\n while (entry) {\n var cb = entry.callback;\n state.pendingcb--;\n cb(err);\n entry = entry.next;\n } // reuse the free corkReq.\n\n\n state.corkedRequestsFree.next = corkReq;\n}\n\nObject.defineProperty(Writable.prototype, 'destroyed', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n if (this._writableState === undefined) {\n return false;\n }\n\n return this._writableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._writableState) {\n return;\n } // backward compatibility, the user is explicitly\n // managing destroyed\n\n\n this._writableState.destroyed = value;\n }\n});\nWritable.prototype.destroy = destroyImpl.destroy;\nWritable.prototype._undestroy = destroyImpl.undestroy;\n\nWritable.prototype._destroy = function (err, cb) {\n cb(err);\n};", "// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n// a duplex stream is just a stream that is both readable and writable.\n// Since JS doesn't have multiple prototypal inheritance, this class\n// prototypally inherits from Readable, and then parasitically from\n// Writable.\n'use strict';\n/**/\n\nvar objectKeys = Object.keys || function (obj) {\n var keys = [];\n\n for (var key in obj) {\n keys.push(key);\n }\n\n return keys;\n};\n/**/\n\n\nmodule.exports = Duplex;\n\nvar Readable = require('./_stream_readable');\n\nvar Writable = require('./_stream_writable');\n\nrequire('inherits')(Duplex, Readable);\n\n{\n // Allow the keys array to be GC'ed.\n var keys = objectKeys(Writable.prototype);\n\n for (var v = 0; v < keys.length; v++) {\n var method = keys[v];\n if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method];\n }\n}\n\nfunction Duplex(options) {\n if (!(this instanceof Duplex)) return new Duplex(options);\n Readable.call(this, options);\n Writable.call(this, options);\n this.allowHalfOpen = true;\n\n if (options) {\n if (options.readable === false) this.readable = false;\n if (options.writable === false) this.writable = false;\n\n if (options.allowHalfOpen === false) {\n this.allowHalfOpen = false;\n this.once('end', onend);\n }\n }\n}\n\nObject.defineProperty(Duplex.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.highWaterMark;\n }\n});\nObject.defineProperty(Duplex.prototype, 'writableBuffer', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState && this._writableState.getBuffer();\n }\n});\nObject.defineProperty(Duplex.prototype, 'writableLength', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.length;\n }\n}); // the no-half-open enforcer\n\nfunction onend() {\n // If the writable side ended, then we're ok.\n if (this._writableState.ended) return; // no more data can be written.\n // But allow more writes to happen in this tick.\n\n process.nextTick(onEndNT, this);\n}\n\nfunction onEndNT(self) {\n self.end();\n}\n\nObject.defineProperty(Duplex.prototype, 'destroyed', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n if (this._readableState === undefined || this._writableState === undefined) {\n return false;\n }\n\n return this._readableState.destroyed && this._writableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (this._readableState === undefined || this._writableState === undefined) {\n return;\n } // backward compatibility, the user is explicitly\n // managing destroyed\n\n\n this._readableState.destroyed = value;\n this._writableState.destroyed = value;\n }\n});", "// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\n/**/\n\nvar Buffer = require('safe-buffer').Buffer;\n/**/\n\nvar isEncoding = Buffer.isEncoding || function (encoding) {\n encoding = '' + encoding;\n switch (encoding && encoding.toLowerCase()) {\n case 'hex':case 'utf8':case 'utf-8':case 'ascii':case 'binary':case 'base64':case 'ucs2':case 'ucs-2':case 'utf16le':case 'utf-16le':case 'raw':\n return true;\n default:\n return false;\n }\n};\n\nfunction _normalizeEncoding(enc) {\n if (!enc) return 'utf8';\n var retried;\n while (true) {\n switch (enc) {\n case 'utf8':\n case 'utf-8':\n return 'utf8';\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return 'utf16le';\n case 'latin1':\n case 'binary':\n return 'latin1';\n case 'base64':\n case 'ascii':\n case 'hex':\n return enc;\n default:\n if (retried) return; // undefined\n enc = ('' + enc).toLowerCase();\n retried = true;\n }\n }\n};\n\n// Do not cache `Buffer.isEncoding` when checking encoding names as some\n// modules monkey-patch it to support additional encodings\nfunction normalizeEncoding(enc) {\n var nenc = _normalizeEncoding(enc);\n if (typeof nenc !== 'string' && (Buffer.isEncoding === isEncoding || !isEncoding(enc))) throw new Error('Unknown encoding: ' + enc);\n return nenc || enc;\n}\n\n// StringDecoder provides an interface for efficiently splitting a series of\n// buffers into a series of JS strings without breaking apart multi-byte\n// characters.\nexports.StringDecoder = StringDecoder;\nfunction StringDecoder(encoding) {\n this.encoding = normalizeEncoding(encoding);\n var nb;\n switch (this.encoding) {\n case 'utf16le':\n this.text = utf16Text;\n this.end = utf16End;\n nb = 4;\n break;\n case 'utf8':\n this.fillLast = utf8FillLast;\n nb = 4;\n break;\n case 'base64':\n this.text = base64Text;\n this.end = base64End;\n nb = 3;\n break;\n default:\n this.write = simpleWrite;\n this.end = simpleEnd;\n return;\n }\n this.lastNeed = 0;\n this.lastTotal = 0;\n this.lastChar = Buffer.allocUnsafe(nb);\n}\n\nStringDecoder.prototype.write = function (buf) {\n if (buf.length === 0) return '';\n var r;\n var i;\n if (this.lastNeed) {\n r = this.fillLast(buf);\n if (r === undefined) return '';\n i = this.lastNeed;\n this.lastNeed = 0;\n } else {\n i = 0;\n }\n if (i < buf.length) return r ? r + this.text(buf, i) : this.text(buf, i);\n return r || '';\n};\n\nStringDecoder.prototype.end = utf8End;\n\n// Returns only complete characters in a Buffer\nStringDecoder.prototype.text = utf8Text;\n\n// Attempts to complete a partial non-UTF-8 character using bytes from a Buffer\nStringDecoder.prototype.fillLast = function (buf) {\n if (this.lastNeed <= buf.length) {\n buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, this.lastNeed);\n return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n }\n buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, buf.length);\n this.lastNeed -= buf.length;\n};\n\n// Checks the type of a UTF-8 byte, whether it's ASCII, a leading byte, or a\n// continuation byte. If an invalid byte is detected, -2 is returned.\nfunction utf8CheckByte(byte) {\n if (byte <= 0x7F) return 0;else if (byte >> 5 === 0x06) return 2;else if (byte >> 4 === 0x0E) return 3;else if (byte >> 3 === 0x1E) return 4;\n return byte >> 6 === 0x02 ? -1 : -2;\n}\n\n// Checks at most 3 bytes at the end of a Buffer in order to detect an\n// incomplete multi-byte UTF-8 character. The total number of bytes (2, 3, or 4)\n// needed to complete the UTF-8 character (if applicable) are returned.\nfunction utf8CheckIncomplete(self, buf, i) {\n var j = buf.length - 1;\n if (j < i) return 0;\n var nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) self.lastNeed = nb - 1;\n return nb;\n }\n if (--j < i || nb === -2) return 0;\n nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) self.lastNeed = nb - 2;\n return nb;\n }\n if (--j < i || nb === -2) return 0;\n nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) {\n if (nb === 2) nb = 0;else self.lastNeed = nb - 3;\n }\n return nb;\n }\n return 0;\n}\n\n// Validates as many continuation bytes for a multi-byte UTF-8 character as\n// needed or are available. If we see a non-continuation byte where we expect\n// one, we \"replace\" the validated continuation bytes we've seen so far with\n// a single UTF-8 replacement character ('\\ufffd'), to match v8's UTF-8 decoding\n// behavior. The continuation byte check is included three times in the case\n// where all of the continuation bytes for a character exist in the same buffer.\n// It is also done this way as a slight performance increase instead of using a\n// loop.\nfunction utf8CheckExtraBytes(self, buf, p) {\n if ((buf[0] & 0xC0) !== 0x80) {\n self.lastNeed = 0;\n return '\\ufffd';\n }\n if (self.lastNeed > 1 && buf.length > 1) {\n if ((buf[1] & 0xC0) !== 0x80) {\n self.lastNeed = 1;\n return '\\ufffd';\n }\n if (self.lastNeed > 2 && buf.length > 2) {\n if ((buf[2] & 0xC0) !== 0x80) {\n self.lastNeed = 2;\n return '\\ufffd';\n }\n }\n }\n}\n\n// Attempts to complete a multi-byte UTF-8 character using bytes from a Buffer.\nfunction utf8FillLast(buf) {\n var p = this.lastTotal - this.lastNeed;\n var r = utf8CheckExtraBytes(this, buf, p);\n if (r !== undefined) return r;\n if (this.lastNeed <= buf.length) {\n buf.copy(this.lastChar, p, 0, this.lastNeed);\n return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n }\n buf.copy(this.lastChar, p, 0, buf.length);\n this.lastNeed -= buf.length;\n}\n\n// Returns all complete UTF-8 characters in a Buffer. If the Buffer ended on a\n// partial character, the character's bytes are buffered until the required\n// number of bytes are available.\nfunction utf8Text(buf, i) {\n var total = utf8CheckIncomplete(this, buf, i);\n if (!this.lastNeed) return buf.toString('utf8', i);\n this.lastTotal = total;\n var end = buf.length - (total - this.lastNeed);\n buf.copy(this.lastChar, 0, end);\n return buf.toString('utf8', i, end);\n}\n\n// For UTF-8, a replacement character is added when ending on a partial\n// character.\nfunction utf8End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) return r + '\\ufffd';\n return r;\n}\n\n// UTF-16LE typically needs two bytes per character, but even if we have an even\n// number of bytes available, we need to check if we end on a leading/high\n// surrogate. In that case, we need to wait for the next two bytes in order to\n// decode the last character properly.\nfunction utf16Text(buf, i) {\n if ((buf.length - i) % 2 === 0) {\n var r = buf.toString('utf16le', i);\n if (r) {\n var c = r.charCodeAt(r.length - 1);\n if (c >= 0xD800 && c <= 0xDBFF) {\n this.lastNeed = 2;\n this.lastTotal = 4;\n this.lastChar[0] = buf[buf.length - 2];\n this.lastChar[1] = buf[buf.length - 1];\n return r.slice(0, -1);\n }\n }\n return r;\n }\n this.lastNeed = 1;\n this.lastTotal = 2;\n this.lastChar[0] = buf[buf.length - 1];\n return buf.toString('utf16le', i, buf.length - 1);\n}\n\n// For UTF-16LE we do not explicitly append special replacement characters if we\n// end on a partial character, we simply let v8 handle that.\nfunction utf16End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) {\n var end = this.lastTotal - this.lastNeed;\n return r + this.lastChar.toString('utf16le', 0, end);\n }\n return r;\n}\n\nfunction base64Text(buf, i) {\n var n = (buf.length - i) % 3;\n if (n === 0) return buf.toString('base64', i);\n this.lastNeed = 3 - n;\n this.lastTotal = 3;\n if (n === 1) {\n this.lastChar[0] = buf[buf.length - 1];\n } else {\n this.lastChar[0] = buf[buf.length - 2];\n this.lastChar[1] = buf[buf.length - 1];\n }\n return buf.toString('base64', i, buf.length - n);\n}\n\nfunction base64End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) return r + this.lastChar.toString('base64', 0, 3 - this.lastNeed);\n return r;\n}\n\n// Pass bytes on through for single-byte encodings (e.g. ascii, latin1, hex)\nfunction simpleWrite(buf) {\n return buf.toString(this.encoding);\n}\n\nfunction simpleEnd(buf) {\n return buf && buf.length ? this.write(buf) : '';\n}", "// Ported from https://github.com/mafintosh/end-of-stream with\n// permission from the author, Mathias Buus (@mafintosh).\n'use strict';\n\nvar ERR_STREAM_PREMATURE_CLOSE = require('../../../errors').codes.ERR_STREAM_PREMATURE_CLOSE;\n\nfunction once(callback) {\n var called = false;\n return function () {\n if (called) return;\n called = true;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n callback.apply(this, args);\n };\n}\n\nfunction noop() {}\n\nfunction isRequest(stream) {\n return stream.setHeader && typeof stream.abort === 'function';\n}\n\nfunction eos(stream, opts, callback) {\n if (typeof opts === 'function') return eos(stream, null, opts);\n if (!opts) opts = {};\n callback = once(callback || noop);\n var readable = opts.readable || opts.readable !== false && stream.readable;\n var writable = opts.writable || opts.writable !== false && stream.writable;\n\n var onlegacyfinish = function onlegacyfinish() {\n if (!stream.writable) onfinish();\n };\n\n var writableEnded = stream._writableState && stream._writableState.finished;\n\n var onfinish = function onfinish() {\n writable = false;\n writableEnded = true;\n if (!readable) callback.call(stream);\n };\n\n var readableEnded = stream._readableState && stream._readableState.endEmitted;\n\n var onend = function onend() {\n readable = false;\n readableEnded = true;\n if (!writable) callback.call(stream);\n };\n\n var onerror = function onerror(err) {\n callback.call(stream, err);\n };\n\n var onclose = function onclose() {\n var err;\n\n if (readable && !readableEnded) {\n if (!stream._readableState || !stream._readableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE();\n return callback.call(stream, err);\n }\n\n if (writable && !writableEnded) {\n if (!stream._writableState || !stream._writableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE();\n return callback.call(stream, err);\n }\n };\n\n var onrequest = function onrequest() {\n stream.req.on('finish', onfinish);\n };\n\n if (isRequest(stream)) {\n stream.on('complete', onfinish);\n stream.on('abort', onclose);\n if (stream.req) onrequest();else stream.on('request', onrequest);\n } else if (writable && !stream._writableState) {\n // legacy streams\n stream.on('end', onlegacyfinish);\n stream.on('close', onlegacyfinish);\n }\n\n stream.on('end', onend);\n stream.on('finish', onfinish);\n if (opts.error !== false) stream.on('error', onerror);\n stream.on('close', onclose);\n return function () {\n stream.removeListener('complete', onfinish);\n stream.removeListener('abort', onclose);\n stream.removeListener('request', onrequest);\n if (stream.req) stream.req.removeListener('finish', onfinish);\n stream.removeListener('end', onlegacyfinish);\n stream.removeListener('close', onlegacyfinish);\n stream.removeListener('finish', onfinish);\n stream.removeListener('end', onend);\n stream.removeListener('error', onerror);\n stream.removeListener('close', onclose);\n };\n}\n\nmodule.exports = eos;", "'use strict';\n\nvar _Object$setPrototypeO;\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar finished = require('./end-of-stream');\n\nvar kLastResolve = Symbol('lastResolve');\nvar kLastReject = Symbol('lastReject');\nvar kError = Symbol('error');\nvar kEnded = Symbol('ended');\nvar kLastPromise = Symbol('lastPromise');\nvar kHandlePromise = Symbol('handlePromise');\nvar kStream = Symbol('stream');\n\nfunction createIterResult(value, done) {\n return {\n value: value,\n done: done\n };\n}\n\nfunction readAndResolve(iter) {\n var resolve = iter[kLastResolve];\n\n if (resolve !== null) {\n var data = iter[kStream].read(); // we defer if data is null\n // we can be expecting either 'end' or\n // 'error'\n\n if (data !== null) {\n iter[kLastPromise] = null;\n iter[kLastResolve] = null;\n iter[kLastReject] = null;\n resolve(createIterResult(data, false));\n }\n }\n}\n\nfunction onReadable(iter) {\n // we wait for the next tick, because it might\n // emit an error with process.nextTick\n process.nextTick(readAndResolve, iter);\n}\n\nfunction wrapForNext(lastPromise, iter) {\n return function (resolve, reject) {\n lastPromise.then(function () {\n if (iter[kEnded]) {\n resolve(createIterResult(undefined, true));\n return;\n }\n\n iter[kHandlePromise](resolve, reject);\n }, reject);\n };\n}\n\nvar AsyncIteratorPrototype = Object.getPrototypeOf(function () {});\nvar ReadableStreamAsyncIteratorPrototype = Object.setPrototypeOf((_Object$setPrototypeO = {\n get stream() {\n return this[kStream];\n },\n\n next: function next() {\n var _this = this;\n\n // if we have detected an error in the meanwhile\n // reject straight away\n var error = this[kError];\n\n if (error !== null) {\n return Promise.reject(error);\n }\n\n if (this[kEnded]) {\n return Promise.resolve(createIterResult(undefined, true));\n }\n\n if (this[kStream].destroyed) {\n // We need to defer via nextTick because if .destroy(err) is\n // called, the error will be emitted via nextTick, and\n // we cannot guarantee that there is no error lingering around\n // waiting to be emitted.\n return new Promise(function (resolve, reject) {\n process.nextTick(function () {\n if (_this[kError]) {\n reject(_this[kError]);\n } else {\n resolve(createIterResult(undefined, true));\n }\n });\n });\n } // if we have multiple next() calls\n // we will wait for the previous Promise to finish\n // this logic is optimized to support for await loops,\n // where next() is only called once at a time\n\n\n var lastPromise = this[kLastPromise];\n var promise;\n\n if (lastPromise) {\n promise = new Promise(wrapForNext(lastPromise, this));\n } else {\n // fast path needed to support multiple this.push()\n // without triggering the next() queue\n var data = this[kStream].read();\n\n if (data !== null) {\n return Promise.resolve(createIterResult(data, false));\n }\n\n promise = new Promise(this[kHandlePromise]);\n }\n\n this[kLastPromise] = promise;\n return promise;\n }\n}, _defineProperty(_Object$setPrototypeO, Symbol.asyncIterator, function () {\n return this;\n}), _defineProperty(_Object$setPrototypeO, \"return\", function _return() {\n var _this2 = this;\n\n // destroy(err, cb) is a private API\n // we can guarantee we have that here, because we control the\n // Readable class this is attached to\n return new Promise(function (resolve, reject) {\n _this2[kStream].destroy(null, function (err) {\n if (err) {\n reject(err);\n return;\n }\n\n resolve(createIterResult(undefined, true));\n });\n });\n}), _Object$setPrototypeO), AsyncIteratorPrototype);\n\nvar createReadableStreamAsyncIterator = function createReadableStreamAsyncIterator(stream) {\n var _Object$create;\n\n var iterator = Object.create(ReadableStreamAsyncIteratorPrototype, (_Object$create = {}, _defineProperty(_Object$create, kStream, {\n value: stream,\n writable: true\n }), _defineProperty(_Object$create, kLastResolve, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kLastReject, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kError, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kEnded, {\n value: stream._readableState.endEmitted,\n writable: true\n }), _defineProperty(_Object$create, kHandlePromise, {\n value: function value(resolve, reject) {\n var data = iterator[kStream].read();\n\n if (data) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n resolve(createIterResult(data, false));\n } else {\n iterator[kLastResolve] = resolve;\n iterator[kLastReject] = reject;\n }\n },\n writable: true\n }), _Object$create));\n iterator[kLastPromise] = null;\n finished(stream, function (err) {\n if (err && err.code !== 'ERR_STREAM_PREMATURE_CLOSE') {\n var reject = iterator[kLastReject]; // reject if we are waiting for data in the Promise\n // returned by next() and store the error\n\n if (reject !== null) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n reject(err);\n }\n\n iterator[kError] = err;\n return;\n }\n\n var resolve = iterator[kLastResolve];\n\n if (resolve !== null) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n resolve(createIterResult(undefined, true));\n }\n\n iterator[kEnded] = true;\n });\n stream.on('readable', onReadable.bind(null, iterator));\n return iterator;\n};\n\nmodule.exports = createReadableStreamAsyncIterator;", "'use strict';\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar ERR_INVALID_ARG_TYPE = require('../../../errors').codes.ERR_INVALID_ARG_TYPE;\n\nfunction from(Readable, iterable, opts) {\n var iterator;\n\n if (iterable && typeof iterable.next === 'function') {\n iterator = iterable;\n } else if (iterable && iterable[Symbol.asyncIterator]) iterator = iterable[Symbol.asyncIterator]();else if (iterable && iterable[Symbol.iterator]) iterator = iterable[Symbol.iterator]();else throw new ERR_INVALID_ARG_TYPE('iterable', ['Iterable'], iterable);\n\n var readable = new Readable(_objectSpread({\n objectMode: true\n }, opts)); // Reading boolean to protect against _read\n // being called before last iteration completion.\n\n var reading = false;\n\n readable._read = function () {\n if (!reading) {\n reading = true;\n next();\n }\n };\n\n function next() {\n return _next2.apply(this, arguments);\n }\n\n function _next2() {\n _next2 = _asyncToGenerator(function* () {\n try {\n var _ref = yield iterator.next(),\n value = _ref.value,\n done = _ref.done;\n\n if (done) {\n readable.push(null);\n } else if (readable.push((yield value))) {\n next();\n } else {\n reading = false;\n }\n } catch (err) {\n readable.destroy(err);\n }\n });\n return _next2.apply(this, arguments);\n }\n\n return readable;\n}\n\nmodule.exports = from;", "// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n'use strict';\n\nmodule.exports = Readable;\n/**/\n\nvar Duplex;\n/**/\n\nReadable.ReadableState = ReadableState;\n/**/\n\nvar EE = require('events').EventEmitter;\n\nvar EElistenerCount = function EElistenerCount(emitter, type) {\n return emitter.listeners(type).length;\n};\n/**/\n\n/**/\n\n\nvar Stream = require('./internal/streams/stream');\n/**/\n\n\nvar Buffer = require('buffer').Buffer;\n\nvar OurUint8Array = global.Uint8Array || function () {};\n\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\n\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n/**/\n\n\nvar debugUtil = require('util');\n\nvar debug;\n\nif (debugUtil && debugUtil.debuglog) {\n debug = debugUtil.debuglog('stream');\n} else {\n debug = function debug() {};\n}\n/**/\n\n\nvar BufferList = require('./internal/streams/buffer_list');\n\nvar destroyImpl = require('./internal/streams/destroy');\n\nvar _require = require('./internal/streams/state'),\n getHighWaterMark = _require.getHighWaterMark;\n\nvar _require$codes = require('../errors').codes,\n ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,\n ERR_STREAM_PUSH_AFTER_EOF = _require$codes.ERR_STREAM_PUSH_AFTER_EOF,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_STREAM_UNSHIFT_AFTER_END_EVENT = _require$codes.ERR_STREAM_UNSHIFT_AFTER_END_EVENT; // Lazy loaded to improve the startup performance.\n\n\nvar StringDecoder;\nvar createReadableStreamAsyncIterator;\nvar from;\n\nrequire('inherits')(Readable, Stream);\n\nvar errorOrDestroy = destroyImpl.errorOrDestroy;\nvar kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume'];\n\nfunction prependListener(emitter, event, fn) {\n // Sadly this is not cacheable as some libraries bundle their own\n // event emitter implementation with them.\n if (typeof emitter.prependListener === 'function') return emitter.prependListener(event, fn); // This is a hack to make sure that our error handler is attached before any\n // userland ones. NEVER DO THIS. This is here only because this code needs\n // to continue to work with older versions of Node.js that do not include\n // the prependListener() method. The goal is to eventually remove this hack.\n\n if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (Array.isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]];\n}\n\nfunction ReadableState(options, stream, isDuplex) {\n Duplex = Duplex || require('./_stream_duplex');\n options = options || {}; // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream.\n // These options can be provided separately as readableXXX and writableXXX.\n\n if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex; // object stream flag. Used to make read(n) ignore n and to\n // make all the buffer merging and length checks go away\n\n this.objectMode = !!options.objectMode;\n if (isDuplex) this.objectMode = this.objectMode || !!options.readableObjectMode; // the point at which it stops calling _read() to fill the buffer\n // Note: 0 is a valid value, means \"don't call _read preemptively ever\"\n\n this.highWaterMark = getHighWaterMark(this, options, 'readableHighWaterMark', isDuplex); // A linked list is used to store data chunks instead of an array because the\n // linked list can remove elements from the beginning faster than\n // array.shift()\n\n this.buffer = new BufferList();\n this.length = 0;\n this.pipes = null;\n this.pipesCount = 0;\n this.flowing = null;\n this.ended = false;\n this.endEmitted = false;\n this.reading = false; // a flag to be able to tell if the event 'readable'/'data' is emitted\n // immediately, or on a later tick. We set this to true at first, because\n // any actions that shouldn't happen until \"later\" should generally also\n // not happen before the first read call.\n\n this.sync = true; // whenever we return null, then we set a flag to say\n // that we're awaiting a 'readable' event emission.\n\n this.needReadable = false;\n this.emittedReadable = false;\n this.readableListening = false;\n this.resumeScheduled = false;\n this.paused = true; // Should close be emitted on destroy. Defaults to true.\n\n this.emitClose = options.emitClose !== false; // Should .destroy() be called after 'end' (and potentially 'finish')\n\n this.autoDestroy = !!options.autoDestroy; // has it been destroyed\n\n this.destroyed = false; // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n\n this.defaultEncoding = options.defaultEncoding || 'utf8'; // the number of writers that are awaiting a drain event in .pipe()s\n\n this.awaitDrain = 0; // if true, a maybeReadMore has been scheduled\n\n this.readingMore = false;\n this.decoder = null;\n this.encoding = null;\n\n if (options.encoding) {\n if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n this.decoder = new StringDecoder(options.encoding);\n this.encoding = options.encoding;\n }\n}\n\nfunction Readable(options) {\n Duplex = Duplex || require('./_stream_duplex');\n if (!(this instanceof Readable)) return new Readable(options); // Checking for a Stream.Duplex instance is faster here instead of inside\n // the ReadableState constructor, at least with V8 6.5\n\n var isDuplex = this instanceof Duplex;\n this._readableState = new ReadableState(options, this, isDuplex); // legacy\n\n this.readable = true;\n\n if (options) {\n if (typeof options.read === 'function') this._read = options.read;\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n }\n\n Stream.call(this);\n}\n\nObject.defineProperty(Readable.prototype, 'destroyed', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n if (this._readableState === undefined) {\n return false;\n }\n\n return this._readableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._readableState) {\n return;\n } // backward compatibility, the user is explicitly\n // managing destroyed\n\n\n this._readableState.destroyed = value;\n }\n});\nReadable.prototype.destroy = destroyImpl.destroy;\nReadable.prototype._undestroy = destroyImpl.undestroy;\n\nReadable.prototype._destroy = function (err, cb) {\n cb(err);\n}; // Manually shove something into the read() buffer.\n// This returns true if the highWaterMark has not been hit yet,\n// similar to how Writable.write() returns true if you should\n// write() some more.\n\n\nReadable.prototype.push = function (chunk, encoding) {\n var state = this._readableState;\n var skipChunkCheck;\n\n if (!state.objectMode) {\n if (typeof chunk === 'string') {\n encoding = encoding || state.defaultEncoding;\n\n if (encoding !== state.encoding) {\n chunk = Buffer.from(chunk, encoding);\n encoding = '';\n }\n\n skipChunkCheck = true;\n }\n } else {\n skipChunkCheck = true;\n }\n\n return readableAddChunk(this, chunk, encoding, false, skipChunkCheck);\n}; // Unshift should *always* be something directly out of read()\n\n\nReadable.prototype.unshift = function (chunk) {\n return readableAddChunk(this, chunk, null, true, false);\n};\n\nfunction readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) {\n debug('readableAddChunk', chunk);\n var state = stream._readableState;\n\n if (chunk === null) {\n state.reading = false;\n onEofChunk(stream, state);\n } else {\n var er;\n if (!skipChunkCheck) er = chunkInvalid(state, chunk);\n\n if (er) {\n errorOrDestroy(stream, er);\n } else if (state.objectMode || chunk && chunk.length > 0) {\n if (typeof chunk !== 'string' && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer.prototype) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n\n if (addToFront) {\n if (state.endEmitted) errorOrDestroy(stream, new ERR_STREAM_UNSHIFT_AFTER_END_EVENT());else addChunk(stream, state, chunk, true);\n } else if (state.ended) {\n errorOrDestroy(stream, new ERR_STREAM_PUSH_AFTER_EOF());\n } else if (state.destroyed) {\n return false;\n } else {\n state.reading = false;\n\n if (state.decoder && !encoding) {\n chunk = state.decoder.write(chunk);\n if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false);else maybeReadMore(stream, state);\n } else {\n addChunk(stream, state, chunk, false);\n }\n }\n } else if (!addToFront) {\n state.reading = false;\n maybeReadMore(stream, state);\n }\n } // We can push more data if we are below the highWaterMark.\n // Also, if we have no data yet, we can stand some more bytes.\n // This is to work around cases where hwm=0, such as the repl.\n\n\n return !state.ended && (state.length < state.highWaterMark || state.length === 0);\n}\n\nfunction addChunk(stream, state, chunk, addToFront) {\n if (state.flowing && state.length === 0 && !state.sync) {\n state.awaitDrain = 0;\n stream.emit('data', chunk);\n } else {\n // update the buffer info.\n state.length += state.objectMode ? 1 : chunk.length;\n if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk);\n if (state.needReadable) emitReadable(stream);\n }\n\n maybeReadMore(stream, state);\n}\n\nfunction chunkInvalid(state, chunk) {\n var er;\n\n if (!_isUint8Array(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {\n er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer', 'Uint8Array'], chunk);\n }\n\n return er;\n}\n\nReadable.prototype.isPaused = function () {\n return this._readableState.flowing === false;\n}; // backwards compatibility.\n\n\nReadable.prototype.setEncoding = function (enc) {\n if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n var decoder = new StringDecoder(enc);\n this._readableState.decoder = decoder; // If setEncoding(null), decoder.encoding equals utf8\n\n this._readableState.encoding = this._readableState.decoder.encoding; // Iterate over current buffer to convert already stored Buffers:\n\n var p = this._readableState.buffer.head;\n var content = '';\n\n while (p !== null) {\n content += decoder.write(p.data);\n p = p.next;\n }\n\n this._readableState.buffer.clear();\n\n if (content !== '') this._readableState.buffer.push(content);\n this._readableState.length = content.length;\n return this;\n}; // Don't raise the hwm > 1GB\n\n\nvar MAX_HWM = 0x40000000;\n\nfunction computeNewHighWaterMark(n) {\n if (n >= MAX_HWM) {\n // TODO(ronag): Throw ERR_VALUE_OUT_OF_RANGE.\n n = MAX_HWM;\n } else {\n // Get the next highest power of 2 to prevent increasing hwm excessively in\n // tiny amounts\n n--;\n n |= n >>> 1;\n n |= n >>> 2;\n n |= n >>> 4;\n n |= n >>> 8;\n n |= n >>> 16;\n n++;\n }\n\n return n;\n} // This function is designed to be inlinable, so please take care when making\n// changes to the function body.\n\n\nfunction howMuchToRead(n, state) {\n if (n <= 0 || state.length === 0 && state.ended) return 0;\n if (state.objectMode) return 1;\n\n if (n !== n) {\n // Only flow one buffer at a time\n if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length;\n } // If we're asking for more than the current hwm, then raise the hwm.\n\n\n if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);\n if (n <= state.length) return n; // Don't have enough\n\n if (!state.ended) {\n state.needReadable = true;\n return 0;\n }\n\n return state.length;\n} // you can override either this method, or the async _read(n) below.\n\n\nReadable.prototype.read = function (n) {\n debug('read', n);\n n = parseInt(n, 10);\n var state = this._readableState;\n var nOrig = n;\n if (n !== 0) state.emittedReadable = false; // if we're doing read(0) to trigger a readable event, but we\n // already have a bunch of data in the buffer, then just trigger\n // the 'readable' event and move on.\n\n if (n === 0 && state.needReadable && ((state.highWaterMark !== 0 ? state.length >= state.highWaterMark : state.length > 0) || state.ended)) {\n debug('read: emitReadable', state.length, state.ended);\n if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this);\n return null;\n }\n\n n = howMuchToRead(n, state); // if we've ended, and we're now clear, then finish it up.\n\n if (n === 0 && state.ended) {\n if (state.length === 0) endReadable(this);\n return null;\n } // All the actual chunk generation logic needs to be\n // *below* the call to _read. The reason is that in certain\n // synthetic stream cases, such as passthrough streams, _read\n // may be a completely synchronous operation which may change\n // the state of the read buffer, providing enough data when\n // before there was *not* enough.\n //\n // So, the steps are:\n // 1. Figure out what the state of things will be after we do\n // a read from the buffer.\n //\n // 2. If that resulting state will trigger a _read, then call _read.\n // Note that this may be asynchronous, or synchronous. Yes, it is\n // deeply ugly to write APIs this way, but that still doesn't mean\n // that the Readable class should behave improperly, as streams are\n // designed to be sync/async agnostic.\n // Take note if the _read call is sync or async (ie, if the read call\n // has returned yet), so that we know whether or not it's safe to emit\n // 'readable' etc.\n //\n // 3. Actually pull the requested chunks out of the buffer and return.\n // if we need a readable event, then we need to do some reading.\n\n\n var doRead = state.needReadable;\n debug('need readable', doRead); // if we currently have less than the highWaterMark, then also read some\n\n if (state.length === 0 || state.length - n < state.highWaterMark) {\n doRead = true;\n debug('length less than watermark', doRead);\n } // however, if we've ended, then there's no point, and if we're already\n // reading, then it's unnecessary.\n\n\n if (state.ended || state.reading) {\n doRead = false;\n debug('reading or ended', doRead);\n } else if (doRead) {\n debug('do read');\n state.reading = true;\n state.sync = true; // if the length is currently zero, then we *need* a readable event.\n\n if (state.length === 0) state.needReadable = true; // call internal read method\n\n this._read(state.highWaterMark);\n\n state.sync = false; // If _read pushed data synchronously, then `reading` will be false,\n // and we need to re-evaluate how much data we can return to the user.\n\n if (!state.reading) n = howMuchToRead(nOrig, state);\n }\n\n var ret;\n if (n > 0) ret = fromList(n, state);else ret = null;\n\n if (ret === null) {\n state.needReadable = state.length <= state.highWaterMark;\n n = 0;\n } else {\n state.length -= n;\n state.awaitDrain = 0;\n }\n\n if (state.length === 0) {\n // If we have nothing in the buffer, then we want to know\n // as soon as we *do* get something into the buffer.\n if (!state.ended) state.needReadable = true; // If we tried to read() past the EOF, then emit end on the next tick.\n\n if (nOrig !== n && state.ended) endReadable(this);\n }\n\n if (ret !== null) this.emit('data', ret);\n return ret;\n};\n\nfunction onEofChunk(stream, state) {\n debug('onEofChunk');\n if (state.ended) return;\n\n if (state.decoder) {\n var chunk = state.decoder.end();\n\n if (chunk && chunk.length) {\n state.buffer.push(chunk);\n state.length += state.objectMode ? 1 : chunk.length;\n }\n }\n\n state.ended = true;\n\n if (state.sync) {\n // if we are sync, wait until next tick to emit the data.\n // Otherwise we risk emitting data in the flow()\n // the readable code triggers during a read() call\n emitReadable(stream);\n } else {\n // emit 'readable' now to make sure it gets picked up.\n state.needReadable = false;\n\n if (!state.emittedReadable) {\n state.emittedReadable = true;\n emitReadable_(stream);\n }\n }\n} // Don't emit readable right away in sync mode, because this can trigger\n// another read() call => stack overflow. This way, it might trigger\n// a nextTick recursion warning, but that's not so bad.\n\n\nfunction emitReadable(stream) {\n var state = stream._readableState;\n debug('emitReadable', state.needReadable, state.emittedReadable);\n state.needReadable = false;\n\n if (!state.emittedReadable) {\n debug('emitReadable', state.flowing);\n state.emittedReadable = true;\n process.nextTick(emitReadable_, stream);\n }\n}\n\nfunction emitReadable_(stream) {\n var state = stream._readableState;\n debug('emitReadable_', state.destroyed, state.length, state.ended);\n\n if (!state.destroyed && (state.length || state.ended)) {\n stream.emit('readable');\n state.emittedReadable = false;\n } // The stream needs another readable event if\n // 1. It is not flowing, as the flow mechanism will take\n // care of it.\n // 2. It is not ended.\n // 3. It is below the highWaterMark, so we can schedule\n // another readable later.\n\n\n state.needReadable = !state.flowing && !state.ended && state.length <= state.highWaterMark;\n flow(stream);\n} // at this point, the user has presumably seen the 'readable' event,\n// and called read() to consume some data. that may have triggered\n// in turn another _read(n) call, in which case reading = true if\n// it's in progress.\n// However, if we're not ended, or reading, and the length < hwm,\n// then go ahead and try to read some more preemptively.\n\n\nfunction maybeReadMore(stream, state) {\n if (!state.readingMore) {\n state.readingMore = true;\n process.nextTick(maybeReadMore_, stream, state);\n }\n}\n\nfunction maybeReadMore_(stream, state) {\n // Attempt to read more data if we should.\n //\n // The conditions for reading more data are (one of):\n // - Not enough data buffered (state.length < state.highWaterMark). The loop\n // is responsible for filling the buffer with enough data if such data\n // is available. If highWaterMark is 0 and we are not in the flowing mode\n // we should _not_ attempt to buffer any extra data. We'll get more data\n // when the stream consumer calls read() instead.\n // - No data in the buffer, and the stream is in flowing mode. In this mode\n // the loop below is responsible for ensuring read() is called. Failing to\n // call read here would abort the flow and there's no other mechanism for\n // continuing the flow if the stream consumer has just subscribed to the\n // 'data' event.\n //\n // In addition to the above conditions to keep reading data, the following\n // conditions prevent the data from being read:\n // - The stream has ended (state.ended).\n // - There is already a pending 'read' operation (state.reading). This is a\n // case where the the stream has called the implementation defined _read()\n // method, but they are processing the call asynchronously and have _not_\n // called push() with new data. In this case we skip performing more\n // read()s. The execution ends in this method again after the _read() ends\n // up calling push() with more data.\n while (!state.reading && !state.ended && (state.length < state.highWaterMark || state.flowing && state.length === 0)) {\n var len = state.length;\n debug('maybeReadMore read 0');\n stream.read(0);\n if (len === state.length) // didn't get any data, stop spinning.\n break;\n }\n\n state.readingMore = false;\n} // abstract method. to be overridden in specific implementation classes.\n// call cb(er, data) where data is <= n in length.\n// for virtual (non-string, non-buffer) streams, \"length\" is somewhat\n// arbitrary, and perhaps not very meaningful.\n\n\nReadable.prototype._read = function (n) {\n errorOrDestroy(this, new ERR_METHOD_NOT_IMPLEMENTED('_read()'));\n};\n\nReadable.prototype.pipe = function (dest, pipeOpts) {\n var src = this;\n var state = this._readableState;\n\n switch (state.pipesCount) {\n case 0:\n state.pipes = dest;\n break;\n\n case 1:\n state.pipes = [state.pipes, dest];\n break;\n\n default:\n state.pipes.push(dest);\n break;\n }\n\n state.pipesCount += 1;\n debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts);\n var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr;\n var endFn = doEnd ? onend : unpipe;\n if (state.endEmitted) process.nextTick(endFn);else src.once('end', endFn);\n dest.on('unpipe', onunpipe);\n\n function onunpipe(readable, unpipeInfo) {\n debug('onunpipe');\n\n if (readable === src) {\n if (unpipeInfo && unpipeInfo.hasUnpiped === false) {\n unpipeInfo.hasUnpiped = true;\n cleanup();\n }\n }\n }\n\n function onend() {\n debug('onend');\n dest.end();\n } // when the dest drains, it reduces the awaitDrain counter\n // on the source. This would be more elegant with a .once()\n // handler in flow(), but adding and removing repeatedly is\n // too slow.\n\n\n var ondrain = pipeOnDrain(src);\n dest.on('drain', ondrain);\n var cleanedUp = false;\n\n function cleanup() {\n debug('cleanup'); // cleanup event handlers once the pipe is broken\n\n dest.removeListener('close', onclose);\n dest.removeListener('finish', onfinish);\n dest.removeListener('drain', ondrain);\n dest.removeListener('error', onerror);\n dest.removeListener('unpipe', onunpipe);\n src.removeListener('end', onend);\n src.removeListener('end', unpipe);\n src.removeListener('data', ondata);\n cleanedUp = true; // if the reader is waiting for a drain event from this\n // specific writer, then it would cause it to never start\n // flowing again.\n // So, if this is awaiting a drain, then we just call it now.\n // If we don't know, then assume that we are waiting for one.\n\n if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();\n }\n\n src.on('data', ondata);\n\n function ondata(chunk) {\n debug('ondata');\n var ret = dest.write(chunk);\n debug('dest.write', ret);\n\n if (ret === false) {\n // If the user unpiped during `dest.write()`, it is possible\n // to get stuck in a permanently paused state if that write\n // also returned false.\n // => Check whether `dest` is still a piping destination.\n if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) {\n debug('false write response, pause', state.awaitDrain);\n state.awaitDrain++;\n }\n\n src.pause();\n }\n } // if the dest has an error, then stop piping into it.\n // however, don't suppress the throwing behavior for this.\n\n\n function onerror(er) {\n debug('onerror', er);\n unpipe();\n dest.removeListener('error', onerror);\n if (EElistenerCount(dest, 'error') === 0) errorOrDestroy(dest, er);\n } // Make sure our error handler is attached before userland ones.\n\n\n prependListener(dest, 'error', onerror); // Both close and finish should trigger unpipe, but only once.\n\n function onclose() {\n dest.removeListener('finish', onfinish);\n unpipe();\n }\n\n dest.once('close', onclose);\n\n function onfinish() {\n debug('onfinish');\n dest.removeListener('close', onclose);\n unpipe();\n }\n\n dest.once('finish', onfinish);\n\n function unpipe() {\n debug('unpipe');\n src.unpipe(dest);\n } // tell the dest that it's being piped to\n\n\n dest.emit('pipe', src); // start the flow if it hasn't been started already.\n\n if (!state.flowing) {\n debug('pipe resume');\n src.resume();\n }\n\n return dest;\n};\n\nfunction pipeOnDrain(src) {\n return function pipeOnDrainFunctionResult() {\n var state = src._readableState;\n debug('pipeOnDrain', state.awaitDrain);\n if (state.awaitDrain) state.awaitDrain--;\n\n if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) {\n state.flowing = true;\n flow(src);\n }\n };\n}\n\nReadable.prototype.unpipe = function (dest) {\n var state = this._readableState;\n var unpipeInfo = {\n hasUnpiped: false\n }; // if we're not piping anywhere, then do nothing.\n\n if (state.pipesCount === 0) return this; // just one destination. most common case.\n\n if (state.pipesCount === 1) {\n // passed in one, but it's not the right one.\n if (dest && dest !== state.pipes) return this;\n if (!dest) dest = state.pipes; // got a match.\n\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n if (dest) dest.emit('unpipe', this, unpipeInfo);\n return this;\n } // slow case. multiple pipe destinations.\n\n\n if (!dest) {\n // remove all.\n var dests = state.pipes;\n var len = state.pipesCount;\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n\n for (var i = 0; i < len; i++) {\n dests[i].emit('unpipe', this, {\n hasUnpiped: false\n });\n }\n\n return this;\n } // try to find the right one.\n\n\n var index = indexOf(state.pipes, dest);\n if (index === -1) return this;\n state.pipes.splice(index, 1);\n state.pipesCount -= 1;\n if (state.pipesCount === 1) state.pipes = state.pipes[0];\n dest.emit('unpipe', this, unpipeInfo);\n return this;\n}; // set up data events if they are asked for\n// Ensure readable listeners eventually get something\n\n\nReadable.prototype.on = function (ev, fn) {\n var res = Stream.prototype.on.call(this, ev, fn);\n var state = this._readableState;\n\n if (ev === 'data') {\n // update readableListening so that resume() may be a no-op\n // a few lines down. This is needed to support once('readable').\n state.readableListening = this.listenerCount('readable') > 0; // Try start flowing on next tick if stream isn't explicitly paused\n\n if (state.flowing !== false) this.resume();\n } else if (ev === 'readable') {\n if (!state.endEmitted && !state.readableListening) {\n state.readableListening = state.needReadable = true;\n state.flowing = false;\n state.emittedReadable = false;\n debug('on readable', state.length, state.reading);\n\n if (state.length) {\n emitReadable(this);\n } else if (!state.reading) {\n process.nextTick(nReadingNextTick, this);\n }\n }\n }\n\n return res;\n};\n\nReadable.prototype.addListener = Readable.prototype.on;\n\nReadable.prototype.removeListener = function (ev, fn) {\n var res = Stream.prototype.removeListener.call(this, ev, fn);\n\n if (ev === 'readable') {\n // We need to check if there is someone still listening to\n // readable and reset the state. However this needs to happen\n // after readable has been emitted but before I/O (nextTick) to\n // support once('readable', fn) cycles. This means that calling\n // resume within the same tick will have no\n // effect.\n process.nextTick(updateReadableListening, this);\n }\n\n return res;\n};\n\nReadable.prototype.removeAllListeners = function (ev) {\n var res = Stream.prototype.removeAllListeners.apply(this, arguments);\n\n if (ev === 'readable' || ev === undefined) {\n // We need to check if there is someone still listening to\n // readable and reset the state. However this needs to happen\n // after readable has been emitted but before I/O (nextTick) to\n // support once('readable', fn) cycles. This means that calling\n // resume within the same tick will have no\n // effect.\n process.nextTick(updateReadableListening, this);\n }\n\n return res;\n};\n\nfunction updateReadableListening(self) {\n var state = self._readableState;\n state.readableListening = self.listenerCount('readable') > 0;\n\n if (state.resumeScheduled && !state.paused) {\n // flowing needs to be set to true now, otherwise\n // the upcoming resume will not flow.\n state.flowing = true; // crude way to check if we should resume\n } else if (self.listenerCount('data') > 0) {\n self.resume();\n }\n}\n\nfunction nReadingNextTick(self) {\n debug('readable nexttick read 0');\n self.read(0);\n} // pause() and resume() are remnants of the legacy readable stream API\n// If the user uses them, then switch into old mode.\n\n\nReadable.prototype.resume = function () {\n var state = this._readableState;\n\n if (!state.flowing) {\n debug('resume'); // we flow only if there is no one listening\n // for readable, but we still have to call\n // resume()\n\n state.flowing = !state.readableListening;\n resume(this, state);\n }\n\n state.paused = false;\n return this;\n};\n\nfunction resume(stream, state) {\n if (!state.resumeScheduled) {\n state.resumeScheduled = true;\n process.nextTick(resume_, stream, state);\n }\n}\n\nfunction resume_(stream, state) {\n debug('resume', state.reading);\n\n if (!state.reading) {\n stream.read(0);\n }\n\n state.resumeScheduled = false;\n stream.emit('resume');\n flow(stream);\n if (state.flowing && !state.reading) stream.read(0);\n}\n\nReadable.prototype.pause = function () {\n debug('call pause flowing=%j', this._readableState.flowing);\n\n if (this._readableState.flowing !== false) {\n debug('pause');\n this._readableState.flowing = false;\n this.emit('pause');\n }\n\n this._readableState.paused = true;\n return this;\n};\n\nfunction flow(stream) {\n var state = stream._readableState;\n debug('flow', state.flowing);\n\n while (state.flowing && stream.read() !== null) {\n ;\n }\n} // wrap an old-style stream as the async data source.\n// This is *not* part of the readable stream interface.\n// It is an ugly unfortunate mess of history.\n\n\nReadable.prototype.wrap = function (stream) {\n var _this = this;\n\n var state = this._readableState;\n var paused = false;\n stream.on('end', function () {\n debug('wrapped end');\n\n if (state.decoder && !state.ended) {\n var chunk = state.decoder.end();\n if (chunk && chunk.length) _this.push(chunk);\n }\n\n _this.push(null);\n });\n stream.on('data', function (chunk) {\n debug('wrapped data');\n if (state.decoder) chunk = state.decoder.write(chunk); // don't skip over falsy values in objectMode\n\n if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return;\n\n var ret = _this.push(chunk);\n\n if (!ret) {\n paused = true;\n stream.pause();\n }\n }); // proxy all the other methods.\n // important when wrapping filters and duplexes.\n\n for (var i in stream) {\n if (this[i] === undefined && typeof stream[i] === 'function') {\n this[i] = function methodWrap(method) {\n return function methodWrapReturnFunction() {\n return stream[method].apply(stream, arguments);\n };\n }(i);\n }\n } // proxy certain important events.\n\n\n for (var n = 0; n < kProxyEvents.length; n++) {\n stream.on(kProxyEvents[n], this.emit.bind(this, kProxyEvents[n]));\n } // when we try to consume some more bytes, simply unpause the\n // underlying stream.\n\n\n this._read = function (n) {\n debug('wrapped _read', n);\n\n if (paused) {\n paused = false;\n stream.resume();\n }\n };\n\n return this;\n};\n\nif (typeof Symbol === 'function') {\n Readable.prototype[Symbol.asyncIterator] = function () {\n if (createReadableStreamAsyncIterator === undefined) {\n createReadableStreamAsyncIterator = require('./internal/streams/async_iterator');\n }\n\n return createReadableStreamAsyncIterator(this);\n };\n}\n\nObject.defineProperty(Readable.prototype, 'readableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.highWaterMark;\n }\n});\nObject.defineProperty(Readable.prototype, 'readableBuffer', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState && this._readableState.buffer;\n }\n});\nObject.defineProperty(Readable.prototype, 'readableFlowing', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.flowing;\n },\n set: function set(state) {\n if (this._readableState) {\n this._readableState.flowing = state;\n }\n }\n}); // exposed for testing purposes only.\n\nReadable._fromList = fromList;\nObject.defineProperty(Readable.prototype, 'readableLength', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.length;\n }\n}); // Pluck off n bytes from an array of buffers.\n// Length is the combined lengths of all the buffers in the list.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\n\nfunction fromList(n, state) {\n // nothing buffered\n if (state.length === 0) return null;\n var ret;\n if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) {\n // read it all, truncate the list\n if (state.decoder) ret = state.buffer.join('');else if (state.buffer.length === 1) ret = state.buffer.first();else ret = state.buffer.concat(state.length);\n state.buffer.clear();\n } else {\n // read part of list\n ret = state.buffer.consume(n, state.decoder);\n }\n return ret;\n}\n\nfunction endReadable(stream) {\n var state = stream._readableState;\n debug('endReadable', state.endEmitted);\n\n if (!state.endEmitted) {\n state.ended = true;\n process.nextTick(endReadableNT, state, stream);\n }\n}\n\nfunction endReadableNT(state, stream) {\n debug('endReadableNT', state.endEmitted, state.length); // Check that we didn't get one last unshift.\n\n if (!state.endEmitted && state.length === 0) {\n state.endEmitted = true;\n stream.readable = false;\n stream.emit('end');\n\n if (state.autoDestroy) {\n // In case of duplex streams we need a way to detect\n // if the writable side is ready for autoDestroy as well\n var wState = stream._writableState;\n\n if (!wState || wState.autoDestroy && wState.finished) {\n stream.destroy();\n }\n }\n }\n}\n\nif (typeof Symbol === 'function') {\n Readable.from = function (iterable, opts) {\n if (from === undefined) {\n from = require('./internal/streams/from');\n }\n\n return from(Readable, iterable, opts);\n };\n}\n\nfunction indexOf(xs, x) {\n for (var i = 0, l = xs.length; i < l; i++) {\n if (xs[i] === x) return i;\n }\n\n return -1;\n}", "// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n// a transform stream is a readable/writable stream where you do\n// something with the data. Sometimes it's called a \"filter\",\n// but that's not a great name for it, since that implies a thing where\n// some bits pass through, and others are simply ignored. (That would\n// be a valid example of a transform, of course.)\n//\n// While the output is causally related to the input, it's not a\n// necessarily symmetric or synchronous transformation. For example,\n// a zlib stream might take multiple plain-text writes(), and then\n// emit a single compressed chunk some time in the future.\n//\n// Here's how this works:\n//\n// The Transform stream has all the aspects of the readable and writable\n// stream classes. When you write(chunk), that calls _write(chunk,cb)\n// internally, and returns false if there's a lot of pending writes\n// buffered up. When you call read(), that calls _read(n) until\n// there's enough pending readable data buffered up.\n//\n// In a transform stream, the written data is placed in a buffer. When\n// _read(n) is called, it transforms the queued up data, calling the\n// buffered _write cb's as it consumes chunks. If consuming a single\n// written chunk would result in multiple output chunks, then the first\n// outputted bit calls the readcb, and subsequent chunks just go into\n// the read buffer, and will cause it to emit 'readable' if necessary.\n//\n// This way, back-pressure is actually determined by the reading side,\n// since _read has to be called to start processing a new chunk. However,\n// a pathological inflate type of transform can cause excessive buffering\n// here. For example, imagine a stream where every byte of input is\n// interpreted as an integer from 0-255, and then results in that many\n// bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in\n// 1kb of data being output. In this case, you could write a very small\n// amount of input, and end up with a very large amount of output. In\n// such a pathological inflating mechanism, there'd be no way to tell\n// the system to stop doing the transform. A single 4MB write could\n// cause the system to run out of memory.\n//\n// However, even in such a pathological case, only a single written chunk\n// would be consumed, and then the rest would wait (un-transformed) until\n// the results of the previous transformed chunk were consumed.\n'use strict';\n\nmodule.exports = Transform;\n\nvar _require$codes = require('../errors').codes,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK,\n ERR_TRANSFORM_ALREADY_TRANSFORMING = _require$codes.ERR_TRANSFORM_ALREADY_TRANSFORMING,\n ERR_TRANSFORM_WITH_LENGTH_0 = _require$codes.ERR_TRANSFORM_WITH_LENGTH_0;\n\nvar Duplex = require('./_stream_duplex');\n\nrequire('inherits')(Transform, Duplex);\n\nfunction afterTransform(er, data) {\n var ts = this._transformState;\n ts.transforming = false;\n var cb = ts.writecb;\n\n if (cb === null) {\n return this.emit('error', new ERR_MULTIPLE_CALLBACK());\n }\n\n ts.writechunk = null;\n ts.writecb = null;\n if (data != null) // single equals check for both `null` and `undefined`\n this.push(data);\n cb(er);\n var rs = this._readableState;\n rs.reading = false;\n\n if (rs.needReadable || rs.length < rs.highWaterMark) {\n this._read(rs.highWaterMark);\n }\n}\n\nfunction Transform(options) {\n if (!(this instanceof Transform)) return new Transform(options);\n Duplex.call(this, options);\n this._transformState = {\n afterTransform: afterTransform.bind(this),\n needTransform: false,\n transforming: false,\n writecb: null,\n writechunk: null,\n writeencoding: null\n }; // start out asking for a readable event once data is transformed.\n\n this._readableState.needReadable = true; // we have implemented the _read method, and done the other things\n // that Readable wants before the first _read call, so unset the\n // sync guard flag.\n\n this._readableState.sync = false;\n\n if (options) {\n if (typeof options.transform === 'function') this._transform = options.transform;\n if (typeof options.flush === 'function') this._flush = options.flush;\n } // When the writable side finishes, then flush out anything remaining.\n\n\n this.on('prefinish', prefinish);\n}\n\nfunction prefinish() {\n var _this = this;\n\n if (typeof this._flush === 'function' && !this._readableState.destroyed) {\n this._flush(function (er, data) {\n done(_this, er, data);\n });\n } else {\n done(this, null, null);\n }\n}\n\nTransform.prototype.push = function (chunk, encoding) {\n this._transformState.needTransform = false;\n return Duplex.prototype.push.call(this, chunk, encoding);\n}; // This is the part where you do stuff!\n// override this function in implementation classes.\n// 'chunk' is an input chunk.\n//\n// Call `push(newChunk)` to pass along transformed output\n// to the readable side. You may call 'push' zero or more times.\n//\n// Call `cb(err)` when you are done with this chunk. If you pass\n// an error, then that'll put the hurt on the whole operation. If you\n// never call cb(), then you'll never get another chunk.\n\n\nTransform.prototype._transform = function (chunk, encoding, cb) {\n cb(new ERR_METHOD_NOT_IMPLEMENTED('_transform()'));\n};\n\nTransform.prototype._write = function (chunk, encoding, cb) {\n var ts = this._transformState;\n ts.writecb = cb;\n ts.writechunk = chunk;\n ts.writeencoding = encoding;\n\n if (!ts.transforming) {\n var rs = this._readableState;\n if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark);\n }\n}; // Doesn't matter what the args are here.\n// _transform does all the work.\n// That we got here means that the readable side wants more data.\n\n\nTransform.prototype._read = function (n) {\n var ts = this._transformState;\n\n if (ts.writechunk !== null && !ts.transforming) {\n ts.transforming = true;\n\n this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);\n } else {\n // mark that we need a transform, so that any data that comes in\n // will get processed, now that we've asked for it.\n ts.needTransform = true;\n }\n};\n\nTransform.prototype._destroy = function (err, cb) {\n Duplex.prototype._destroy.call(this, err, function (err2) {\n cb(err2);\n });\n};\n\nfunction done(stream, er, data) {\n if (er) return stream.emit('error', er);\n if (data != null) // single equals check for both `null` and `undefined`\n stream.push(data); // TODO(BridgeAR): Write a test for these two error cases\n // if there's nothing in the write buffer, then that means\n // that nothing more will ever be provided\n\n if (stream._writableState.length) throw new ERR_TRANSFORM_WITH_LENGTH_0();\n if (stream._transformState.transforming) throw new ERR_TRANSFORM_ALREADY_TRANSFORMING();\n return stream.push(null);\n}", "// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n// a passthrough stream.\n// basically just the most minimal sort of Transform stream.\n// Every written chunk gets output as-is.\n'use strict';\n\nmodule.exports = PassThrough;\n\nvar Transform = require('./_stream_transform');\n\nrequire('inherits')(PassThrough, Transform);\n\nfunction PassThrough(options) {\n if (!(this instanceof PassThrough)) return new PassThrough(options);\n Transform.call(this, options);\n}\n\nPassThrough.prototype._transform = function (chunk, encoding, cb) {\n cb(null, chunk);\n};", "// Ported from https://github.com/mafintosh/pump with\n// permission from the author, Mathias Buus (@mafintosh).\n'use strict';\n\nvar eos;\n\nfunction once(callback) {\n var called = false;\n return function () {\n if (called) return;\n called = true;\n callback.apply(void 0, arguments);\n };\n}\n\nvar _require$codes = require('../../../errors').codes,\n ERR_MISSING_ARGS = _require$codes.ERR_MISSING_ARGS,\n ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED;\n\nfunction noop(err) {\n // Rethrow the error if it exists to avoid swallowing it\n if (err) throw err;\n}\n\nfunction isRequest(stream) {\n return stream.setHeader && typeof stream.abort === 'function';\n}\n\nfunction destroyer(stream, reading, writing, callback) {\n callback = once(callback);\n var closed = false;\n stream.on('close', function () {\n closed = true;\n });\n if (eos === undefined) eos = require('./end-of-stream');\n eos(stream, {\n readable: reading,\n writable: writing\n }, function (err) {\n if (err) return callback(err);\n closed = true;\n callback();\n });\n var destroyed = false;\n return function (err) {\n if (closed) return;\n if (destroyed) return;\n destroyed = true; // request.destroy just do .end - .abort is what we want\n\n if (isRequest(stream)) return stream.abort();\n if (typeof stream.destroy === 'function') return stream.destroy();\n callback(err || new ERR_STREAM_DESTROYED('pipe'));\n };\n}\n\nfunction call(fn) {\n fn();\n}\n\nfunction pipe(from, to) {\n return from.pipe(to);\n}\n\nfunction popCallback(streams) {\n if (!streams.length) return noop;\n if (typeof streams[streams.length - 1] !== 'function') return noop;\n return streams.pop();\n}\n\nfunction pipeline() {\n for (var _len = arguments.length, streams = new Array(_len), _key = 0; _key < _len; _key++) {\n streams[_key] = arguments[_key];\n }\n\n var callback = popCallback(streams);\n if (Array.isArray(streams[0])) streams = streams[0];\n\n if (streams.length < 2) {\n throw new ERR_MISSING_ARGS('streams');\n }\n\n var error;\n var destroys = streams.map(function (stream, i) {\n var reading = i < streams.length - 1;\n var writing = i > 0;\n return destroyer(stream, reading, writing, function (err) {\n if (!error) error = err;\n if (err) destroys.forEach(call);\n if (reading) return;\n destroys.forEach(call);\n callback(error);\n });\n });\n return streams.reduce(pipe);\n}\n\nmodule.exports = pipeline;", "var Stream = require('stream');\nif (process.env.READABLE_STREAM === 'disable' && Stream) {\n module.exports = Stream.Readable;\n Object.assign(module.exports, Stream);\n module.exports.Stream = Stream;\n} else {\n exports = module.exports = require('./lib/_stream_readable.js');\n exports.Stream = Stream || exports;\n exports.Readable = exports;\n exports.Writable = require('./lib/_stream_writable.js');\n exports.Duplex = require('./lib/_stream_duplex.js');\n exports.Transform = require('./lib/_stream_transform.js');\n exports.PassThrough = require('./lib/_stream_passthrough.js');\n exports.finished = require('./lib/internal/streams/end-of-stream.js');\n exports.pipeline = require('./lib/internal/streams/pipeline.js');\n}\n", "'use strict'\nvar Buffer = require('safe-buffer').Buffer\nvar Transform = require('readable-stream').Transform\nvar inherits = require('inherits')\n\nfunction throwIfNotStringOrBuffer (val, prefix) {\n if (!Buffer.isBuffer(val) && typeof val !== 'string') {\n throw new TypeError(prefix + ' must be a string or a buffer')\n }\n}\n\nfunction HashBase (blockSize) {\n Transform.call(this)\n\n this._block = Buffer.allocUnsafe(blockSize)\n this._blockSize = blockSize\n this._blockOffset = 0\n this._length = [0, 0, 0, 0]\n\n this._finalized = false\n}\n\ninherits(HashBase, Transform)\n\nHashBase.prototype._transform = function (chunk, encoding, callback) {\n var error = null\n try {\n this.update(chunk, encoding)\n } catch (err) {\n error = err\n }\n\n callback(error)\n}\n\nHashBase.prototype._flush = function (callback) {\n var error = null\n try {\n this.push(this.digest())\n } catch (err) {\n error = err\n }\n\n callback(error)\n}\n\nHashBase.prototype.update = function (data, encoding) {\n throwIfNotStringOrBuffer(data, 'Data')\n if (this._finalized) throw new Error('Digest already called')\n if (!Buffer.isBuffer(data)) data = Buffer.from(data, encoding)\n\n // consume data\n var block = this._block\n var offset = 0\n while (this._blockOffset + data.length - offset >= this._blockSize) {\n for (var i = this._blockOffset; i < this._blockSize;) block[i++] = data[offset++]\n this._update()\n this._blockOffset = 0\n }\n while (offset < data.length) block[this._blockOffset++] = data[offset++]\n\n // update length\n for (var j = 0, carry = data.length * 8; carry > 0; ++j) {\n this._length[j] += carry\n carry = (this._length[j] / 0x0100000000) | 0\n if (carry > 0) this._length[j] -= 0x0100000000 * carry\n }\n\n return this\n}\n\nHashBase.prototype._update = function () {\n throw new Error('_update is not implemented')\n}\n\nHashBase.prototype.digest = function (encoding) {\n if (this._finalized) throw new Error('Digest already called')\n this._finalized = true\n\n var digest = this._digest()\n if (encoding !== undefined) digest = digest.toString(encoding)\n\n // reset state\n this._block.fill(0)\n this._blockOffset = 0\n for (var i = 0; i < 4; ++i) this._length[i] = 0\n\n return digest\n}\n\nHashBase.prototype._digest = function () {\n throw new Error('_digest is not implemented')\n}\n\nmodule.exports = HashBase\n", "'use strict'\nvar Buffer = require('buffer').Buffer\nvar inherits = require('inherits')\nvar HashBase = require('hash-base')\n\nvar ARRAY16 = new Array(16)\n\nvar zl = [\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,\n 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8,\n 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12,\n 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2,\n 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13\n]\n\nvar zr = [\n 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12,\n 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2,\n 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13,\n 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14,\n 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11\n]\n\nvar sl = [\n 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8,\n 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12,\n 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5,\n 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12,\n 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6\n]\n\nvar sr = [\n 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6,\n 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11,\n 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5,\n 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8,\n 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11\n]\n\nvar hl = [0x00000000, 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc, 0xa953fd4e]\nvar hr = [0x50a28be6, 0x5c4dd124, 0x6d703ef3, 0x7a6d76e9, 0x00000000]\n\nfunction RIPEMD160 () {\n HashBase.call(this, 64)\n\n // state\n this._a = 0x67452301\n this._b = 0xefcdab89\n this._c = 0x98badcfe\n this._d = 0x10325476\n this._e = 0xc3d2e1f0\n}\n\ninherits(RIPEMD160, HashBase)\n\nRIPEMD160.prototype._update = function () {\n var words = ARRAY16\n for (var j = 0; j < 16; ++j) words[j] = this._block.readInt32LE(j * 4)\n\n var al = this._a | 0\n var bl = this._b | 0\n var cl = this._c | 0\n var dl = this._d | 0\n var el = this._e | 0\n\n var ar = this._a | 0\n var br = this._b | 0\n var cr = this._c | 0\n var dr = this._d | 0\n var er = this._e | 0\n\n // computation\n for (var i = 0; i < 80; i += 1) {\n var tl\n var tr\n if (i < 16) {\n tl = fn1(al, bl, cl, dl, el, words[zl[i]], hl[0], sl[i])\n tr = fn5(ar, br, cr, dr, er, words[zr[i]], hr[0], sr[i])\n } else if (i < 32) {\n tl = fn2(al, bl, cl, dl, el, words[zl[i]], hl[1], sl[i])\n tr = fn4(ar, br, cr, dr, er, words[zr[i]], hr[1], sr[i])\n } else if (i < 48) {\n tl = fn3(al, bl, cl, dl, el, words[zl[i]], hl[2], sl[i])\n tr = fn3(ar, br, cr, dr, er, words[zr[i]], hr[2], sr[i])\n } else if (i < 64) {\n tl = fn4(al, bl, cl, dl, el, words[zl[i]], hl[3], sl[i])\n tr = fn2(ar, br, cr, dr, er, words[zr[i]], hr[3], sr[i])\n } else { // if (i<80) {\n tl = fn5(al, bl, cl, dl, el, words[zl[i]], hl[4], sl[i])\n tr = fn1(ar, br, cr, dr, er, words[zr[i]], hr[4], sr[i])\n }\n\n al = el\n el = dl\n dl = rotl(cl, 10)\n cl = bl\n bl = tl\n\n ar = er\n er = dr\n dr = rotl(cr, 10)\n cr = br\n br = tr\n }\n\n // update state\n var t = (this._b + cl + dr) | 0\n this._b = (this._c + dl + er) | 0\n this._c = (this._d + el + ar) | 0\n this._d = (this._e + al + br) | 0\n this._e = (this._a + bl + cr) | 0\n this._a = t\n}\n\nRIPEMD160.prototype._digest = function () {\n // create padding and handle blocks\n this._block[this._blockOffset++] = 0x80\n if (this._blockOffset > 56) {\n this._block.fill(0, this._blockOffset, 64)\n this._update()\n this._blockOffset = 0\n }\n\n this._block.fill(0, this._blockOffset, 56)\n this._block.writeUInt32LE(this._length[0], 56)\n this._block.writeUInt32LE(this._length[1], 60)\n this._update()\n\n // produce result\n var buffer = Buffer.alloc ? Buffer.alloc(20) : new Buffer(20)\n buffer.writeInt32LE(this._a, 0)\n buffer.writeInt32LE(this._b, 4)\n buffer.writeInt32LE(this._c, 8)\n buffer.writeInt32LE(this._d, 12)\n buffer.writeInt32LE(this._e, 16)\n return buffer\n}\n\nfunction rotl (x, n) {\n return (x << n) | (x >>> (32 - n))\n}\n\nfunction fn1 (a, b, c, d, e, m, k, s) {\n return (rotl((a + (b ^ c ^ d) + m + k) | 0, s) + e) | 0\n}\n\nfunction fn2 (a, b, c, d, e, m, k, s) {\n return (rotl((a + ((b & c) | ((~b) & d)) + m + k) | 0, s) + e) | 0\n}\n\nfunction fn3 (a, b, c, d, e, m, k, s) {\n return (rotl((a + ((b | (~c)) ^ d) + m + k) | 0, s) + e) | 0\n}\n\nfunction fn4 (a, b, c, d, e, m, k, s) {\n return (rotl((a + ((b & d) | (c & (~d))) + m + k) | 0, s) + e) | 0\n}\n\nfunction fn5 (a, b, c, d, e, m, k, s) {\n return (rotl((a + (b ^ (c | (~d))) + m + k) | 0, s) + e) | 0\n}\n\nmodule.exports = RIPEMD160\n", "var Buffer = require('safe-buffer').Buffer\n\n// prototype class for hash functions\nfunction Hash (blockSize, finalSize) {\n this._block = Buffer.alloc(blockSize)\n this._finalSize = finalSize\n this._blockSize = blockSize\n this._len = 0\n}\n\nHash.prototype.update = function (data, enc) {\n if (typeof data === 'string') {\n enc = enc || 'utf8'\n data = Buffer.from(data, enc)\n }\n\n var block = this._block\n var blockSize = this._blockSize\n var length = data.length\n var accum = this._len\n\n for (var offset = 0; offset < length;) {\n var assigned = accum % blockSize\n var remainder = Math.min(length - offset, blockSize - assigned)\n\n for (var i = 0; i < remainder; i++) {\n block[assigned + i] = data[offset + i]\n }\n\n accum += remainder\n offset += remainder\n\n if ((accum % blockSize) === 0) {\n this._update(block)\n }\n }\n\n this._len += length\n return this\n}\n\nHash.prototype.digest = function (enc) {\n var rem = this._len % this._blockSize\n\n this._block[rem] = 0x80\n\n // zero (rem + 1) trailing bits, where (rem + 1) is the smallest\n // non-negative solution to the equation (length + 1 + (rem + 1)) === finalSize mod blockSize\n this._block.fill(0, rem + 1)\n\n if (rem >= this._finalSize) {\n this._update(this._block)\n this._block.fill(0)\n }\n\n var bits = this._len * 8\n\n // uint32\n if (bits <= 0xffffffff) {\n this._block.writeUInt32BE(bits, this._blockSize - 4)\n\n // uint64\n } else {\n var lowBits = (bits & 0xffffffff) >>> 0\n var highBits = (bits - lowBits) / 0x100000000\n\n this._block.writeUInt32BE(highBits, this._blockSize - 8)\n this._block.writeUInt32BE(lowBits, this._blockSize - 4)\n }\n\n this._update(this._block)\n var hash = this._hash()\n\n return enc ? hash.toString(enc) : hash\n}\n\nHash.prototype._update = function () {\n throw new Error('_update must be implemented by subclass')\n}\n\nmodule.exports = Hash\n", "/*\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-0, as defined\n * in FIPS PUB 180-1\n * This source code is derived from sha1.js of the same repository.\n * The difference between SHA-0 and SHA-1 is just a bitwise rotate left\n * operation was added.\n */\n\nvar inherits = require('inherits')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar K = [\n 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc | 0, 0xca62c1d6 | 0\n]\n\nvar W = new Array(80)\n\nfunction Sha () {\n this.init()\n this._w = W\n\n Hash.call(this, 64, 56)\n}\n\ninherits(Sha, Hash)\n\nSha.prototype.init = function () {\n this._a = 0x67452301\n this._b = 0xefcdab89\n this._c = 0x98badcfe\n this._d = 0x10325476\n this._e = 0xc3d2e1f0\n\n return this\n}\n\nfunction rotl5 (num) {\n return (num << 5) | (num >>> 27)\n}\n\nfunction rotl30 (num) {\n return (num << 30) | (num >>> 2)\n}\n\nfunction ft (s, b, c, d) {\n if (s === 0) return (b & c) | ((~b) & d)\n if (s === 2) return (b & c) | (b & d) | (c & d)\n return b ^ c ^ d\n}\n\nSha.prototype._update = function (M) {\n var W = this._w\n\n var a = this._a | 0\n var b = this._b | 0\n var c = this._c | 0\n var d = this._d | 0\n var e = this._e | 0\n\n for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)\n for (; i < 80; ++i) W[i] = W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16]\n\n for (var j = 0; j < 80; ++j) {\n var s = ~~(j / 20)\n var t = (rotl5(a) + ft(s, b, c, d) + e + W[j] + K[s]) | 0\n\n e = d\n d = c\n c = rotl30(b)\n b = a\n a = t\n }\n\n this._a = (a + this._a) | 0\n this._b = (b + this._b) | 0\n this._c = (c + this._c) | 0\n this._d = (d + this._d) | 0\n this._e = (e + this._e) | 0\n}\n\nSha.prototype._hash = function () {\n var H = Buffer.allocUnsafe(20)\n\n H.writeInt32BE(this._a | 0, 0)\n H.writeInt32BE(this._b | 0, 4)\n H.writeInt32BE(this._c | 0, 8)\n H.writeInt32BE(this._d | 0, 12)\n H.writeInt32BE(this._e | 0, 16)\n\n return H\n}\n\nmodule.exports = Sha\n", "/*\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-1, as defined\n * in FIPS PUB 180-1\n * Version 2.1a Copyright Paul Johnston 2000 - 2002.\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n * Distributed under the BSD License\n * See http://pajhome.org.uk/crypt/md5 for details.\n */\n\nvar inherits = require('inherits')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar K = [\n 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc | 0, 0xca62c1d6 | 0\n]\n\nvar W = new Array(80)\n\nfunction Sha1 () {\n this.init()\n this._w = W\n\n Hash.call(this, 64, 56)\n}\n\ninherits(Sha1, Hash)\n\nSha1.prototype.init = function () {\n this._a = 0x67452301\n this._b = 0xefcdab89\n this._c = 0x98badcfe\n this._d = 0x10325476\n this._e = 0xc3d2e1f0\n\n return this\n}\n\nfunction rotl1 (num) {\n return (num << 1) | (num >>> 31)\n}\n\nfunction rotl5 (num) {\n return (num << 5) | (num >>> 27)\n}\n\nfunction rotl30 (num) {\n return (num << 30) | (num >>> 2)\n}\n\nfunction ft (s, b, c, d) {\n if (s === 0) return (b & c) | ((~b) & d)\n if (s === 2) return (b & c) | (b & d) | (c & d)\n return b ^ c ^ d\n}\n\nSha1.prototype._update = function (M) {\n var W = this._w\n\n var a = this._a | 0\n var b = this._b | 0\n var c = this._c | 0\n var d = this._d | 0\n var e = this._e | 0\n\n for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)\n for (; i < 80; ++i) W[i] = rotl1(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16])\n\n for (var j = 0; j < 80; ++j) {\n var s = ~~(j / 20)\n var t = (rotl5(a) + ft(s, b, c, d) + e + W[j] + K[s]) | 0\n\n e = d\n d = c\n c = rotl30(b)\n b = a\n a = t\n }\n\n this._a = (a + this._a) | 0\n this._b = (b + this._b) | 0\n this._c = (c + this._c) | 0\n this._d = (d + this._d) | 0\n this._e = (e + this._e) | 0\n}\n\nSha1.prototype._hash = function () {\n var H = Buffer.allocUnsafe(20)\n\n H.writeInt32BE(this._a | 0, 0)\n H.writeInt32BE(this._b | 0, 4)\n H.writeInt32BE(this._c | 0, 8)\n H.writeInt32BE(this._d | 0, 12)\n H.writeInt32BE(this._e | 0, 16)\n\n return H\n}\n\nmodule.exports = Sha1\n", "/**\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined\n * in FIPS 180-2\n * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009.\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n *\n */\n\nvar inherits = require('inherits')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar K = [\n 0x428A2F98, 0x71374491, 0xB5C0FBCF, 0xE9B5DBA5,\n 0x3956C25B, 0x59F111F1, 0x923F82A4, 0xAB1C5ED5,\n 0xD807AA98, 0x12835B01, 0x243185BE, 0x550C7DC3,\n 0x72BE5D74, 0x80DEB1FE, 0x9BDC06A7, 0xC19BF174,\n 0xE49B69C1, 0xEFBE4786, 0x0FC19DC6, 0x240CA1CC,\n 0x2DE92C6F, 0x4A7484AA, 0x5CB0A9DC, 0x76F988DA,\n 0x983E5152, 0xA831C66D, 0xB00327C8, 0xBF597FC7,\n 0xC6E00BF3, 0xD5A79147, 0x06CA6351, 0x14292967,\n 0x27B70A85, 0x2E1B2138, 0x4D2C6DFC, 0x53380D13,\n 0x650A7354, 0x766A0ABB, 0x81C2C92E, 0x92722C85,\n 0xA2BFE8A1, 0xA81A664B, 0xC24B8B70, 0xC76C51A3,\n 0xD192E819, 0xD6990624, 0xF40E3585, 0x106AA070,\n 0x19A4C116, 0x1E376C08, 0x2748774C, 0x34B0BCB5,\n 0x391C0CB3, 0x4ED8AA4A, 0x5B9CCA4F, 0x682E6FF3,\n 0x748F82EE, 0x78A5636F, 0x84C87814, 0x8CC70208,\n 0x90BEFFFA, 0xA4506CEB, 0xBEF9A3F7, 0xC67178F2\n]\n\nvar W = new Array(64)\n\nfunction Sha256 () {\n this.init()\n\n this._w = W // new Array(64)\n\n Hash.call(this, 64, 56)\n}\n\ninherits(Sha256, Hash)\n\nSha256.prototype.init = function () {\n this._a = 0x6a09e667\n this._b = 0xbb67ae85\n this._c = 0x3c6ef372\n this._d = 0xa54ff53a\n this._e = 0x510e527f\n this._f = 0x9b05688c\n this._g = 0x1f83d9ab\n this._h = 0x5be0cd19\n\n return this\n}\n\nfunction ch (x, y, z) {\n return z ^ (x & (y ^ z))\n}\n\nfunction maj (x, y, z) {\n return (x & y) | (z & (x | y))\n}\n\nfunction sigma0 (x) {\n return (x >>> 2 | x << 30) ^ (x >>> 13 | x << 19) ^ (x >>> 22 | x << 10)\n}\n\nfunction sigma1 (x) {\n return (x >>> 6 | x << 26) ^ (x >>> 11 | x << 21) ^ (x >>> 25 | x << 7)\n}\n\nfunction gamma0 (x) {\n return (x >>> 7 | x << 25) ^ (x >>> 18 | x << 14) ^ (x >>> 3)\n}\n\nfunction gamma1 (x) {\n return (x >>> 17 | x << 15) ^ (x >>> 19 | x << 13) ^ (x >>> 10)\n}\n\nSha256.prototype._update = function (M) {\n var W = this._w\n\n var a = this._a | 0\n var b = this._b | 0\n var c = this._c | 0\n var d = this._d | 0\n var e = this._e | 0\n var f = this._f | 0\n var g = this._g | 0\n var h = this._h | 0\n\n for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)\n for (; i < 64; ++i) W[i] = (gamma1(W[i - 2]) + W[i - 7] + gamma0(W[i - 15]) + W[i - 16]) | 0\n\n for (var j = 0; j < 64; ++j) {\n var T1 = (h + sigma1(e) + ch(e, f, g) + K[j] + W[j]) | 0\n var T2 = (sigma0(a) + maj(a, b, c)) | 0\n\n h = g\n g = f\n f = e\n e = (d + T1) | 0\n d = c\n c = b\n b = a\n a = (T1 + T2) | 0\n }\n\n this._a = (a + this._a) | 0\n this._b = (b + this._b) | 0\n this._c = (c + this._c) | 0\n this._d = (d + this._d) | 0\n this._e = (e + this._e) | 0\n this._f = (f + this._f) | 0\n this._g = (g + this._g) | 0\n this._h = (h + this._h) | 0\n}\n\nSha256.prototype._hash = function () {\n var H = Buffer.allocUnsafe(32)\n\n H.writeInt32BE(this._a, 0)\n H.writeInt32BE(this._b, 4)\n H.writeInt32BE(this._c, 8)\n H.writeInt32BE(this._d, 12)\n H.writeInt32BE(this._e, 16)\n H.writeInt32BE(this._f, 20)\n H.writeInt32BE(this._g, 24)\n H.writeInt32BE(this._h, 28)\n\n return H\n}\n\nmodule.exports = Sha256\n", "/**\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined\n * in FIPS 180-2\n * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009.\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n *\n */\n\nvar inherits = require('inherits')\nvar Sha256 = require('./sha256')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar W = new Array(64)\n\nfunction Sha224 () {\n this.init()\n\n this._w = W // new Array(64)\n\n Hash.call(this, 64, 56)\n}\n\ninherits(Sha224, Sha256)\n\nSha224.prototype.init = function () {\n this._a = 0xc1059ed8\n this._b = 0x367cd507\n this._c = 0x3070dd17\n this._d = 0xf70e5939\n this._e = 0xffc00b31\n this._f = 0x68581511\n this._g = 0x64f98fa7\n this._h = 0xbefa4fa4\n\n return this\n}\n\nSha224.prototype._hash = function () {\n var H = Buffer.allocUnsafe(28)\n\n H.writeInt32BE(this._a, 0)\n H.writeInt32BE(this._b, 4)\n H.writeInt32BE(this._c, 8)\n H.writeInt32BE(this._d, 12)\n H.writeInt32BE(this._e, 16)\n H.writeInt32BE(this._f, 20)\n H.writeInt32BE(this._g, 24)\n\n return H\n}\n\nmodule.exports = Sha224\n", "var inherits = require('inherits')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\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\nvar W = new Array(160)\n\nfunction Sha512 () {\n this.init()\n this._w = W\n\n Hash.call(this, 128, 112)\n}\n\ninherits(Sha512, Hash)\n\nSha512.prototype.init = function () {\n this._ah = 0x6a09e667\n this._bh = 0xbb67ae85\n this._ch = 0x3c6ef372\n this._dh = 0xa54ff53a\n this._eh = 0x510e527f\n this._fh = 0x9b05688c\n this._gh = 0x1f83d9ab\n this._hh = 0x5be0cd19\n\n this._al = 0xf3bcc908\n this._bl = 0x84caa73b\n this._cl = 0xfe94f82b\n this._dl = 0x5f1d36f1\n this._el = 0xade682d1\n this._fl = 0x2b3e6c1f\n this._gl = 0xfb41bd6b\n this._hl = 0x137e2179\n\n return this\n}\n\nfunction Ch (x, y, z) {\n return z ^ (x & (y ^ z))\n}\n\nfunction maj (x, y, z) {\n return (x & y) | (z & (x | y))\n}\n\nfunction sigma0 (x, xl) {\n return (x >>> 28 | xl << 4) ^ (xl >>> 2 | x << 30) ^ (xl >>> 7 | x << 25)\n}\n\nfunction sigma1 (x, xl) {\n return (x >>> 14 | xl << 18) ^ (x >>> 18 | xl << 14) ^ (xl >>> 9 | x << 23)\n}\n\nfunction Gamma0 (x, xl) {\n return (x >>> 1 | xl << 31) ^ (x >>> 8 | xl << 24) ^ (x >>> 7)\n}\n\nfunction Gamma0l (x, xl) {\n return (x >>> 1 | xl << 31) ^ (x >>> 8 | xl << 24) ^ (x >>> 7 | xl << 25)\n}\n\nfunction Gamma1 (x, xl) {\n return (x >>> 19 | xl << 13) ^ (xl >>> 29 | x << 3) ^ (x >>> 6)\n}\n\nfunction Gamma1l (x, xl) {\n return (x >>> 19 | xl << 13) ^ (xl >>> 29 | x << 3) ^ (x >>> 6 | xl << 26)\n}\n\nfunction getCarry (a, b) {\n return (a >>> 0) < (b >>> 0) ? 1 : 0\n}\n\nSha512.prototype._update = function (M) {\n var W = this._w\n\n var ah = this._ah | 0\n var bh = this._bh | 0\n var ch = this._ch | 0\n var dh = this._dh | 0\n var eh = this._eh | 0\n var fh = this._fh | 0\n var gh = this._gh | 0\n var hh = this._hh | 0\n\n var al = this._al | 0\n var bl = this._bl | 0\n var cl = this._cl | 0\n var dl = this._dl | 0\n var el = this._el | 0\n var fl = this._fl | 0\n var gl = this._gl | 0\n var hl = this._hl | 0\n\n for (var i = 0; i < 32; i += 2) {\n W[i] = M.readInt32BE(i * 4)\n W[i + 1] = M.readInt32BE(i * 4 + 4)\n }\n for (; i < 160; i += 2) {\n var xh = W[i - 15 * 2]\n var xl = W[i - 15 * 2 + 1]\n var gamma0 = Gamma0(xh, xl)\n var gamma0l = Gamma0l(xl, xh)\n\n xh = W[i - 2 * 2]\n xl = W[i - 2 * 2 + 1]\n var gamma1 = Gamma1(xh, xl)\n var gamma1l = Gamma1l(xl, xh)\n\n // W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16]\n var Wi7h = W[i - 7 * 2]\n var Wi7l = W[i - 7 * 2 + 1]\n\n var Wi16h = W[i - 16 * 2]\n var Wi16l = W[i - 16 * 2 + 1]\n\n var Wil = (gamma0l + Wi7l) | 0\n var Wih = (gamma0 + Wi7h + getCarry(Wil, gamma0l)) | 0\n Wil = (Wil + gamma1l) | 0\n Wih = (Wih + gamma1 + getCarry(Wil, gamma1l)) | 0\n Wil = (Wil + Wi16l) | 0\n Wih = (Wih + Wi16h + getCarry(Wil, Wi16l)) | 0\n\n W[i] = Wih\n W[i + 1] = Wil\n }\n\n for (var j = 0; j < 160; j += 2) {\n Wih = W[j]\n Wil = W[j + 1]\n\n var majh = maj(ah, bh, ch)\n var majl = maj(al, bl, cl)\n\n var sigma0h = sigma0(ah, al)\n var sigma0l = sigma0(al, ah)\n var sigma1h = sigma1(eh, el)\n var sigma1l = sigma1(el, eh)\n\n // t1 = h + sigma1 + ch + K[j] + W[j]\n var Kih = K[j]\n var Kil = K[j + 1]\n\n var chh = Ch(eh, fh, gh)\n var chl = Ch(el, fl, gl)\n\n var t1l = (hl + sigma1l) | 0\n var t1h = (hh + sigma1h + getCarry(t1l, hl)) | 0\n t1l = (t1l + chl) | 0\n t1h = (t1h + chh + getCarry(t1l, chl)) | 0\n t1l = (t1l + Kil) | 0\n t1h = (t1h + Kih + getCarry(t1l, Kil)) | 0\n t1l = (t1l + Wil) | 0\n t1h = (t1h + Wih + getCarry(t1l, Wil)) | 0\n\n // t2 = sigma0 + maj\n var t2l = (sigma0l + majl) | 0\n var t2h = (sigma0h + majh + getCarry(t2l, sigma0l)) | 0\n\n hh = gh\n hl = gl\n gh = fh\n gl = fl\n fh = eh\n fl = el\n el = (dl + t1l) | 0\n eh = (dh + t1h + getCarry(el, dl)) | 0\n dh = ch\n dl = cl\n ch = bh\n cl = bl\n bh = ah\n bl = al\n al = (t1l + t2l) | 0\n ah = (t1h + t2h + getCarry(al, t1l)) | 0\n }\n\n this._al = (this._al + al) | 0\n this._bl = (this._bl + bl) | 0\n this._cl = (this._cl + cl) | 0\n this._dl = (this._dl + dl) | 0\n this._el = (this._el + el) | 0\n this._fl = (this._fl + fl) | 0\n this._gl = (this._gl + gl) | 0\n this._hl = (this._hl + hl) | 0\n\n this._ah = (this._ah + ah + getCarry(this._al, al)) | 0\n this._bh = (this._bh + bh + getCarry(this._bl, bl)) | 0\n this._ch = (this._ch + ch + getCarry(this._cl, cl)) | 0\n this._dh = (this._dh + dh + getCarry(this._dl, dl)) | 0\n this._eh = (this._eh + eh + getCarry(this._el, el)) | 0\n this._fh = (this._fh + fh + getCarry(this._fl, fl)) | 0\n this._gh = (this._gh + gh + getCarry(this._gl, gl)) | 0\n this._hh = (this._hh + hh + getCarry(this._hl, hl)) | 0\n}\n\nSha512.prototype._hash = function () {\n var H = Buffer.allocUnsafe(64)\n\n function writeInt64BE (h, l, offset) {\n H.writeInt32BE(h, offset)\n H.writeInt32BE(l, offset + 4)\n }\n\n writeInt64BE(this._ah, this._al, 0)\n writeInt64BE(this._bh, this._bl, 8)\n writeInt64BE(this._ch, this._cl, 16)\n writeInt64BE(this._dh, this._dl, 24)\n writeInt64BE(this._eh, this._el, 32)\n writeInt64BE(this._fh, this._fl, 40)\n writeInt64BE(this._gh, this._gl, 48)\n writeInt64BE(this._hh, this._hl, 56)\n\n return H\n}\n\nmodule.exports = Sha512\n", "var inherits = require('inherits')\nvar SHA512 = require('./sha512')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar W = new Array(160)\n\nfunction Sha384 () {\n this.init()\n this._w = W\n\n Hash.call(this, 128, 112)\n}\n\ninherits(Sha384, SHA512)\n\nSha384.prototype.init = function () {\n this._ah = 0xcbbb9d5d\n this._bh = 0x629a292a\n this._ch = 0x9159015a\n this._dh = 0x152fecd8\n this._eh = 0x67332667\n this._fh = 0x8eb44a87\n this._gh = 0xdb0c2e0d\n this._hh = 0x47b5481d\n\n this._al = 0xc1059ed8\n this._bl = 0x367cd507\n this._cl = 0x3070dd17\n this._dl = 0xf70e5939\n this._el = 0xffc00b31\n this._fl = 0x68581511\n this._gl = 0x64f98fa7\n this._hl = 0xbefa4fa4\n\n return this\n}\n\nSha384.prototype._hash = function () {\n var H = Buffer.allocUnsafe(48)\n\n function writeInt64BE (h, l, offset) {\n H.writeInt32BE(h, offset)\n H.writeInt32BE(l, offset + 4)\n }\n\n writeInt64BE(this._ah, this._al, 0)\n writeInt64BE(this._bh, this._bl, 8)\n writeInt64BE(this._ch, this._cl, 16)\n writeInt64BE(this._dh, this._dl, 24)\n writeInt64BE(this._eh, this._el, 32)\n writeInt64BE(this._fh, this._fl, 40)\n\n return H\n}\n\nmodule.exports = Sha384\n", "var exports = module.exports = function SHA (algorithm) {\n algorithm = algorithm.toLowerCase()\n\n var Algorithm = exports[algorithm]\n if (!Algorithm) throw new Error(algorithm + ' is not supported (we accept pull requests)')\n\n return new Algorithm()\n}\n\nexports.sha = require('./sha')\nexports.sha1 = require('./sha1')\nexports.sha224 = require('./sha224')\nexports.sha256 = require('./sha256')\nexports.sha384 = require('./sha384')\nexports.sha512 = require('./sha512')\n", "/**\n * A Log object\n */\nexport interface Log {\n type: string;\n message?: string;\n data?: any;\n // unique amount all logs\n id: string;\n // date of the log\n date: Date;\n}\nexport type Unsubscribe = () => void;\nexport type Subscriber = (arg0: Log) => void;\nlet id = 0;\nconst subscribers: Subscriber[] = [];\n\n/**\n * log something\n * @param type a namespaced identifier of the log (it is not a level like \"debug\", \"error\" but more like \"apdu-in\", \"apdu-out\", etc...)\n * @param message a clear message of the log associated to the type\n */\nexport const log = (type: string, message?: string, data?: any) => {\n const obj: Log = {\n type,\n id: String(++id),\n date: new Date(),\n };\n if (message) obj.message = message;\n if (data) obj.data = data;\n dispatch(obj);\n};\n\n/**\n * listen to logs.\n * @param cb that is called for each future log() with the Log object\n * @return a function that can be called to unsubscribe the listener\n */\nexport const listen = (cb: Subscriber): Unsubscribe => {\n subscribers.push(cb);\n return () => {\n const i = subscribers.indexOf(cb);\n\n if (i !== -1) {\n // equivalent of subscribers.splice(i, 1) // https://twitter.com/Rich_Harris/status/1125850391155965952\n subscribers[i] = subscribers[subscribers.length - 1];\n subscribers.pop();\n }\n };\n};\n\nfunction dispatch(log: Log) {\n for (let i = 0; i < subscribers.length; i++) {\n try {\n subscribers[i](log);\n } catch (e) {\n console.error(e);\n }\n }\n}\n\n// for debug purpose\n\ndeclare global {\n interface Window {\n __ledgerLogsListen: any;\n }\n}\n\nif (typeof window !== \"undefined\") {\n window.__ledgerLogsListen = listen;\n}\n", "/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\n/**\n * Use invariant() to assert state which your program assumes to be true.\n *\n * Provide sprintf-style format (only %s is supported) and arguments\n * to provide information about what broke and what you were\n * expecting.\n *\n * The invariant message will be stripped in production, but the invariant\n * will remain to ensure logic does not differ in production.\n */\n\nvar NODE_ENV = process.env.NODE_ENV;\n\nvar invariant = function(condition, format, a, b, c, d, e, f) {\n if (NODE_ENV !== 'production') {\n if (format === undefined) {\n throw new Error('invariant requires an error message argument');\n }\n }\n\n if (!condition) {\n var error;\n if (format === undefined) {\n error = new Error(\n 'Minified exception occurred; use the non-minified dev environment ' +\n 'for the full error message and additional helpful warnings.'\n );\n } else {\n var args = [a, b, c, d, e, f];\n var argIndex = 0;\n error = new Error(\n format.replace(/%s/g, function() { return args[argIndex++]; })\n );\n error.name = 'Invariant Violation';\n }\n\n error.framesToPop = 1; // we don't care about invariant's own frame\n throw error;\n }\n};\n\nmodule.exports = invariant;\n", "// Note: this is the semver.org version of the spec that it implements\n// Not necessarily the package version of this code.\nconst SEMVER_SPEC_VERSION = '2.0.0'\n\nconst MAX_LENGTH = 256\nconst MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER ||\n/* istanbul ignore next */ 9007199254740991\n\n// Max safe segment length for coercion.\nconst MAX_SAFE_COMPONENT_LENGTH = 16\n\nmodule.exports = {\n SEMVER_SPEC_VERSION,\n MAX_LENGTH,\n MAX_SAFE_INTEGER,\n MAX_SAFE_COMPONENT_LENGTH,\n}\n", "const debug = (\n typeof process === 'object' &&\n process.env &&\n process.env.NODE_DEBUG &&\n /\\bsemver\\b/i.test(process.env.NODE_DEBUG)\n) ? (...args) => console.error('SEMVER', ...args)\n : () => {}\n\nmodule.exports = debug\n", "const { MAX_SAFE_COMPONENT_LENGTH } = require('./constants')\nconst debug = require('./debug')\nexports = module.exports = {}\n\n// The actual regexps go on exports.re\nconst re = exports.re = []\nconst src = exports.src = []\nconst t = exports.t = {}\nlet R = 0\n\nconst createToken = (name, value, isGlobal) => {\n const index = R++\n debug(name, index, value)\n t[name] = index\n src[index] = value\n re[index] = new RegExp(value, isGlobal ? 'g' : undefined)\n}\n\n// The following Regular Expressions can be used for tokenizing,\n// validating, and parsing SemVer version strings.\n\n// ## Numeric Identifier\n// A single `0`, or a non-zero digit followed by zero or more digits.\n\ncreateToken('NUMERICIDENTIFIER', '0|[1-9]\\\\d*')\ncreateToken('NUMERICIDENTIFIERLOOSE', '[0-9]+')\n\n// ## Non-numeric Identifier\n// Zero or more digits, followed by a letter or hyphen, and then zero or\n// more letters, digits, or hyphens.\n\ncreateToken('NONNUMERICIDENTIFIER', '\\\\d*[a-zA-Z-][a-zA-Z0-9-]*')\n\n// ## Main Version\n// Three dot-separated numeric identifiers.\n\ncreateToken('MAINVERSION', `(${src[t.NUMERICIDENTIFIER]})\\\\.` +\n `(${src[t.NUMERICIDENTIFIER]})\\\\.` +\n `(${src[t.NUMERICIDENTIFIER]})`)\n\ncreateToken('MAINVERSIONLOOSE', `(${src[t.NUMERICIDENTIFIERLOOSE]})\\\\.` +\n `(${src[t.NUMERICIDENTIFIERLOOSE]})\\\\.` +\n `(${src[t.NUMERICIDENTIFIERLOOSE]})`)\n\n// ## Pre-release Version Identifier\n// A numeric identifier, or a non-numeric identifier.\n\ncreateToken('PRERELEASEIDENTIFIER', `(?:${src[t.NUMERICIDENTIFIER]\n}|${src[t.NONNUMERICIDENTIFIER]})`)\n\ncreateToken('PRERELEASEIDENTIFIERLOOSE', `(?:${src[t.NUMERICIDENTIFIERLOOSE]\n}|${src[t.NONNUMERICIDENTIFIER]})`)\n\n// ## Pre-release Version\n// Hyphen, followed by one or more dot-separated pre-release version\n// identifiers.\n\ncreateToken('PRERELEASE', `(?:-(${src[t.PRERELEASEIDENTIFIER]\n}(?:\\\\.${src[t.PRERELEASEIDENTIFIER]})*))`)\n\ncreateToken('PRERELEASELOOSE', `(?:-?(${src[t.PRERELEASEIDENTIFIERLOOSE]\n}(?:\\\\.${src[t.PRERELEASEIDENTIFIERLOOSE]})*))`)\n\n// ## Build Metadata Identifier\n// Any combination of digits, letters, or hyphens.\n\ncreateToken('BUILDIDENTIFIER', '[0-9A-Za-z-]+')\n\n// ## Build Metadata\n// Plus sign, followed by one or more period-separated build metadata\n// identifiers.\n\ncreateToken('BUILD', `(?:\\\\+(${src[t.BUILDIDENTIFIER]\n}(?:\\\\.${src[t.BUILDIDENTIFIER]})*))`)\n\n// ## Full Version String\n// A main version, followed optionally by a pre-release version and\n// build metadata.\n\n// Note that the only major, minor, patch, and pre-release sections of\n// the version string are capturing groups. The build metadata is not a\n// capturing group, because it should not ever be used in version\n// comparison.\n\ncreateToken('FULLPLAIN', `v?${src[t.MAINVERSION]\n}${src[t.PRERELEASE]}?${\n src[t.BUILD]}?`)\n\ncreateToken('FULL', `^${src[t.FULLPLAIN]}$`)\n\n// like full, but allows v1.2.3 and =1.2.3, which people do sometimes.\n// also, 1.0.0alpha1 (prerelease without the hyphen) which is pretty\n// common in the npm registry.\ncreateToken('LOOSEPLAIN', `[v=\\\\s]*${src[t.MAINVERSIONLOOSE]\n}${src[t.PRERELEASELOOSE]}?${\n src[t.BUILD]}?`)\n\ncreateToken('LOOSE', `^${src[t.LOOSEPLAIN]}$`)\n\ncreateToken('GTLT', '((?:<|>)?=?)')\n\n// Something like \"2.*\" or \"1.2.x\".\n// Note that \"x.x\" is a valid xRange identifer, meaning \"any version\"\n// Only the first item is strictly required.\ncreateToken('XRANGEIDENTIFIERLOOSE', `${src[t.NUMERICIDENTIFIERLOOSE]}|x|X|\\\\*`)\ncreateToken('XRANGEIDENTIFIER', `${src[t.NUMERICIDENTIFIER]}|x|X|\\\\*`)\n\ncreateToken('XRANGEPLAIN', `[v=\\\\s]*(${src[t.XRANGEIDENTIFIER]})` +\n `(?:\\\\.(${src[t.XRANGEIDENTIFIER]})` +\n `(?:\\\\.(${src[t.XRANGEIDENTIFIER]})` +\n `(?:${src[t.PRERELEASE]})?${\n src[t.BUILD]}?` +\n `)?)?`)\n\ncreateToken('XRANGEPLAINLOOSE', `[v=\\\\s]*(${src[t.XRANGEIDENTIFIERLOOSE]})` +\n `(?:\\\\.(${src[t.XRANGEIDENTIFIERLOOSE]})` +\n `(?:\\\\.(${src[t.XRANGEIDENTIFIERLOOSE]})` +\n `(?:${src[t.PRERELEASELOOSE]})?${\n src[t.BUILD]}?` +\n `)?)?`)\n\ncreateToken('XRANGE', `^${src[t.GTLT]}\\\\s*${src[t.XRANGEPLAIN]}$`)\ncreateToken('XRANGELOOSE', `^${src[t.GTLT]}\\\\s*${src[t.XRANGEPLAINLOOSE]}$`)\n\n// Coercion.\n// Extract anything that could conceivably be a part of a valid semver\ncreateToken('COERCE', `${'(^|[^\\\\d])' +\n '(\\\\d{1,'}${MAX_SAFE_COMPONENT_LENGTH}})` +\n `(?:\\\\.(\\\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?` +\n `(?:\\\\.(\\\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?` +\n `(?:$|[^\\\\d])`)\ncreateToken('COERCERTL', src[t.COERCE], true)\n\n// Tilde ranges.\n// Meaning is \"reasonably at or greater than\"\ncreateToken('LONETILDE', '(?:~>?)')\n\ncreateToken('TILDETRIM', `(\\\\s*)${src[t.LONETILDE]}\\\\s+`, true)\nexports.tildeTrimReplace = '$1~'\n\ncreateToken('TILDE', `^${src[t.LONETILDE]}${src[t.XRANGEPLAIN]}$`)\ncreateToken('TILDELOOSE', `^${src[t.LONETILDE]}${src[t.XRANGEPLAINLOOSE]}$`)\n\n// Caret ranges.\n// Meaning is \"at least and backwards compatible with\"\ncreateToken('LONECARET', '(?:\\\\^)')\n\ncreateToken('CARETTRIM', `(\\\\s*)${src[t.LONECARET]}\\\\s+`, true)\nexports.caretTrimReplace = '$1^'\n\ncreateToken('CARET', `^${src[t.LONECARET]}${src[t.XRANGEPLAIN]}$`)\ncreateToken('CARETLOOSE', `^${src[t.LONECARET]}${src[t.XRANGEPLAINLOOSE]}$`)\n\n// A simple gt/lt/eq thing, or just \"\" to indicate \"any version\"\ncreateToken('COMPARATORLOOSE', `^${src[t.GTLT]}\\\\s*(${src[t.LOOSEPLAIN]})$|^$`)\ncreateToken('COMPARATOR', `^${src[t.GTLT]}\\\\s*(${src[t.FULLPLAIN]})$|^$`)\n\n// An expression to strip any whitespace between the gtlt and the thing\n// it modifies, so that `> 1.2.3` ==> `>1.2.3`\ncreateToken('COMPARATORTRIM', `(\\\\s*)${src[t.GTLT]\n}\\\\s*(${src[t.LOOSEPLAIN]}|${src[t.XRANGEPLAIN]})`, true)\nexports.comparatorTrimReplace = '$1$2$3'\n\n// Something like `1.2.3 - 1.2.4`\n// Note that these all use the loose form, because they'll be\n// checked against either the strict or loose comparator form\n// later.\ncreateToken('HYPHENRANGE', `^\\\\s*(${src[t.XRANGEPLAIN]})` +\n `\\\\s+-\\\\s+` +\n `(${src[t.XRANGEPLAIN]})` +\n `\\\\s*$`)\n\ncreateToken('HYPHENRANGELOOSE', `^\\\\s*(${src[t.XRANGEPLAINLOOSE]})` +\n `\\\\s+-\\\\s+` +\n `(${src[t.XRANGEPLAINLOOSE]})` +\n `\\\\s*$`)\n\n// Star ranges basically just allow anything at all.\ncreateToken('STAR', '(<|>)?=?\\\\s*\\\\*')\n// >=0.0.0 is like a star\ncreateToken('GTE0', '^\\\\s*>=\\\\s*0\\\\.0\\\\.0\\\\s*$')\ncreateToken('GTE0PRE', '^\\\\s*>=\\\\s*0\\\\.0\\\\.0-0\\\\s*$')\n", "// parse out just the options we care about so we always get a consistent\n// obj with keys in a consistent order.\nconst opts = ['includePrerelease', 'loose', 'rtl']\nconst parseOptions = options =>\n !options ? {}\n : typeof options !== 'object' ? { loose: true }\n : opts.filter(k => options[k]).reduce((o, k) => {\n o[k] = true\n return o\n }, {})\nmodule.exports = parseOptions\n", "const numeric = /^[0-9]+$/\nconst compareIdentifiers = (a, b) => {\n const anum = numeric.test(a)\n const bnum = numeric.test(b)\n\n if (anum && bnum) {\n a = +a\n b = +b\n }\n\n return a === b ? 0\n : (anum && !bnum) ? -1\n : (bnum && !anum) ? 1\n : a < b ? -1\n : 1\n}\n\nconst rcompareIdentifiers = (a, b) => compareIdentifiers(b, a)\n\nmodule.exports = {\n compareIdentifiers,\n rcompareIdentifiers,\n}\n", "const debug = require('../internal/debug')\nconst { MAX_LENGTH, MAX_SAFE_INTEGER } = require('../internal/constants')\nconst { re, t } = require('../internal/re')\n\nconst parseOptions = require('../internal/parse-options')\nconst { compareIdentifiers } = require('../internal/identifiers')\nclass SemVer {\n constructor (version, options) {\n options = parseOptions(options)\n\n if (version instanceof SemVer) {\n if (version.loose === !!options.loose &&\n version.includePrerelease === !!options.includePrerelease) {\n return version\n } else {\n version = version.version\n }\n } else if (typeof version !== 'string') {\n throw new TypeError(`Invalid Version: ${version}`)\n }\n\n if (version.length > MAX_LENGTH) {\n throw new TypeError(\n `version is longer than ${MAX_LENGTH} characters`\n )\n }\n\n debug('SemVer', version, options)\n this.options = options\n this.loose = !!options.loose\n // this isn't actually relevant for versions, but keep it so that we\n // don't run into trouble passing this.options around.\n this.includePrerelease = !!options.includePrerelease\n\n const m = version.trim().match(options.loose ? re[t.LOOSE] : re[t.FULL])\n\n if (!m) {\n throw new TypeError(`Invalid Version: ${version}`)\n }\n\n this.raw = version\n\n // these are actually numbers\n this.major = +m[1]\n this.minor = +m[2]\n this.patch = +m[3]\n\n if (this.major > MAX_SAFE_INTEGER || this.major < 0) {\n throw new TypeError('Invalid major version')\n }\n\n if (this.minor > MAX_SAFE_INTEGER || this.minor < 0) {\n throw new TypeError('Invalid minor version')\n }\n\n if (this.patch > MAX_SAFE_INTEGER || this.patch < 0) {\n throw new TypeError('Invalid patch version')\n }\n\n // numberify any prerelease numeric ids\n if (!m[4]) {\n this.prerelease = []\n } else {\n this.prerelease = m[4].split('.').map((id) => {\n if (/^[0-9]+$/.test(id)) {\n const num = +id\n if (num >= 0 && num < MAX_SAFE_INTEGER) {\n return num\n }\n }\n return id\n })\n }\n\n this.build = m[5] ? m[5].split('.') : []\n this.format()\n }\n\n format () {\n this.version = `${this.major}.${this.minor}.${this.patch}`\n if (this.prerelease.length) {\n this.version += `-${this.prerelease.join('.')}`\n }\n return this.version\n }\n\n toString () {\n return this.version\n }\n\n compare (other) {\n debug('SemVer.compare', this.version, this.options, other)\n if (!(other instanceof SemVer)) {\n if (typeof other === 'string' && other === this.version) {\n return 0\n }\n other = new SemVer(other, this.options)\n }\n\n if (other.version === this.version) {\n return 0\n }\n\n return this.compareMain(other) || this.comparePre(other)\n }\n\n compareMain (other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options)\n }\n\n return (\n compareIdentifiers(this.major, other.major) ||\n compareIdentifiers(this.minor, other.minor) ||\n compareIdentifiers(this.patch, other.patch)\n )\n }\n\n comparePre (other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options)\n }\n\n // NOT having a prerelease is > having one\n if (this.prerelease.length && !other.prerelease.length) {\n return -1\n } else if (!this.prerelease.length && other.prerelease.length) {\n return 1\n } else if (!this.prerelease.length && !other.prerelease.length) {\n return 0\n }\n\n let i = 0\n do {\n const a = this.prerelease[i]\n const b = other.prerelease[i]\n debug('prerelease compare', i, a, b)\n if (a === undefined && b === undefined) {\n return 0\n } else if (b === undefined) {\n return 1\n } else if (a === undefined) {\n return -1\n } else if (a === b) {\n continue\n } else {\n return compareIdentifiers(a, b)\n }\n } while (++i)\n }\n\n compareBuild (other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options)\n }\n\n let i = 0\n do {\n const a = this.build[i]\n const b = other.build[i]\n debug('prerelease compare', i, a, b)\n if (a === undefined && b === undefined) {\n return 0\n } else if (b === undefined) {\n return 1\n } else if (a === undefined) {\n return -1\n } else if (a === b) {\n continue\n } else {\n return compareIdentifiers(a, b)\n }\n } while (++i)\n }\n\n // preminor will bump the version up to the next minor release, and immediately\n // down to pre-release. premajor and prepatch work the same way.\n inc (release, identifier) {\n switch (release) {\n case 'premajor':\n this.prerelease.length = 0\n this.patch = 0\n this.minor = 0\n this.major++\n this.inc('pre', identifier)\n break\n case 'preminor':\n this.prerelease.length = 0\n this.patch = 0\n this.minor++\n this.inc('pre', identifier)\n break\n case 'prepatch':\n // If this is already a prerelease, it will bump to the next version\n // drop any prereleases that might already exist, since they are not\n // relevant at this point.\n this.prerelease.length = 0\n this.inc('patch', identifier)\n this.inc('pre', identifier)\n break\n // If the input is a non-prerelease version, this acts the same as\n // prepatch.\n case 'prerelease':\n if (this.prerelease.length === 0) {\n this.inc('patch', identifier)\n }\n this.inc('pre', identifier)\n break\n\n case 'major':\n // If this is a pre-major version, bump up to the same major version.\n // Otherwise increment major.\n // 1.0.0-5 bumps to 1.0.0\n // 1.1.0 bumps to 2.0.0\n if (\n this.minor !== 0 ||\n this.patch !== 0 ||\n this.prerelease.length === 0\n ) {\n this.major++\n }\n this.minor = 0\n this.patch = 0\n this.prerelease = []\n break\n case 'minor':\n // If this is a pre-minor version, bump up to the same minor version.\n // Otherwise increment minor.\n // 1.2.0-5 bumps to 1.2.0\n // 1.2.1 bumps to 1.3.0\n if (this.patch !== 0 || this.prerelease.length === 0) {\n this.minor++\n }\n this.patch = 0\n this.prerelease = []\n break\n case 'patch':\n // If this is not a pre-release version, it will increment the patch.\n // If it is a pre-release it will bump up to the same patch version.\n // 1.2.0-5 patches to 1.2.0\n // 1.2.0 patches to 1.2.1\n if (this.prerelease.length === 0) {\n this.patch++\n }\n this.prerelease = []\n break\n // This probably shouldn't be used publicly.\n // 1.0.0 'pre' would become 1.0.0-0 which is the wrong direction.\n case 'pre':\n if (this.prerelease.length === 0) {\n this.prerelease = [0]\n } else {\n let i = this.prerelease.length\n while (--i >= 0) {\n if (typeof this.prerelease[i] === 'number') {\n this.prerelease[i]++\n i = -2\n }\n }\n if (i === -1) {\n // didn't increment anything\n this.prerelease.push(0)\n }\n }\n if (identifier) {\n // 1.2.0-beta.1 bumps to 1.2.0-beta.2,\n // 1.2.0-beta.fooblz or 1.2.0-beta bumps to 1.2.0-beta.0\n if (compareIdentifiers(this.prerelease[0], identifier) === 0) {\n if (isNaN(this.prerelease[1])) {\n this.prerelease = [identifier, 0]\n }\n } else {\n this.prerelease = [identifier, 0]\n }\n }\n break\n\n default:\n throw new Error(`invalid increment argument: ${release}`)\n }\n this.format()\n this.raw = this.version\n return this\n }\n}\n\nmodule.exports = SemVer\n", "const { MAX_LENGTH } = require('../internal/constants')\nconst { re, t } = require('../internal/re')\nconst SemVer = require('../classes/semver')\n\nconst parseOptions = require('../internal/parse-options')\nconst parse = (version, options) => {\n options = parseOptions(options)\n\n if (version instanceof SemVer) {\n return version\n }\n\n if (typeof version !== 'string') {\n return null\n }\n\n if (version.length > MAX_LENGTH) {\n return null\n }\n\n const r = options.loose ? re[t.LOOSE] : re[t.FULL]\n if (!r.test(version)) {\n return null\n }\n\n try {\n return new SemVer(version, options)\n } catch (er) {\n return null\n }\n}\n\nmodule.exports = parse\n", "const parse = require('./parse')\nconst valid = (version, options) => {\n const v = parse(version, options)\n return v ? v.version : null\n}\nmodule.exports = valid\n", "const parse = require('./parse')\nconst clean = (version, options) => {\n const s = parse(version.trim().replace(/^[=v]+/, ''), options)\n return s ? s.version : null\n}\nmodule.exports = clean\n", "const SemVer = require('../classes/semver')\n\nconst inc = (version, release, options, identifier) => {\n if (typeof (options) === 'string') {\n identifier = options\n options = undefined\n }\n\n try {\n return new SemVer(\n version instanceof SemVer ? version.version : version,\n options\n ).inc(release, identifier).version\n } catch (er) {\n return null\n }\n}\nmodule.exports = inc\n", "const SemVer = require('../classes/semver')\nconst compare = (a, b, loose) =>\n new SemVer(a, loose).compare(new SemVer(b, loose))\n\nmodule.exports = compare\n", "const compare = require('./compare')\nconst eq = (a, b, loose) => compare(a, b, loose) === 0\nmodule.exports = eq\n", "const parse = require('./parse')\nconst eq = require('./eq')\n\nconst diff = (version1, version2) => {\n if (eq(version1, version2)) {\n return null\n } else {\n const v1 = parse(version1)\n const v2 = parse(version2)\n const hasPre = v1.prerelease.length || v2.prerelease.length\n const prefix = hasPre ? 'pre' : ''\n const defaultResult = hasPre ? 'prerelease' : ''\n for (const key in v1) {\n if (key === 'major' || key === 'minor' || key === 'patch') {\n if (v1[key] !== v2[key]) {\n return prefix + key\n }\n }\n }\n return defaultResult // may be undefined\n }\n}\nmodule.exports = diff\n", "const SemVer = require('../classes/semver')\nconst major = (a, loose) => new SemVer(a, loose).major\nmodule.exports = major\n", "const SemVer = require('../classes/semver')\nconst minor = (a, loose) => new SemVer(a, loose).minor\nmodule.exports = minor\n", "const SemVer = require('../classes/semver')\nconst patch = (a, loose) => new SemVer(a, loose).patch\nmodule.exports = patch\n", "const parse = require('./parse')\nconst prerelease = (version, options) => {\n const parsed = parse(version, options)\n return (parsed && parsed.prerelease.length) ? parsed.prerelease : null\n}\nmodule.exports = prerelease\n", "const compare = require('./compare')\nconst rcompare = (a, b, loose) => compare(b, a, loose)\nmodule.exports = rcompare\n", "const compare = require('./compare')\nconst compareLoose = (a, b) => compare(a, b, true)\nmodule.exports = compareLoose\n", "const SemVer = require('../classes/semver')\nconst compareBuild = (a, b, loose) => {\n const versionA = new SemVer(a, loose)\n const versionB = new SemVer(b, loose)\n return versionA.compare(versionB) || versionA.compareBuild(versionB)\n}\nmodule.exports = compareBuild\n", "const compareBuild = require('./compare-build')\nconst sort = (list, loose) => list.sort((a, b) => compareBuild(a, b, loose))\nmodule.exports = sort\n", "const compareBuild = require('./compare-build')\nconst rsort = (list, loose) => list.sort((a, b) => compareBuild(b, a, loose))\nmodule.exports = rsort\n", "const compare = require('./compare')\nconst gt = (a, b, loose) => compare(a, b, loose) > 0\nmodule.exports = gt\n", "const compare = require('./compare')\nconst lt = (a, b, loose) => compare(a, b, loose) < 0\nmodule.exports = lt\n", "const compare = require('./compare')\nconst neq = (a, b, loose) => compare(a, b, loose) !== 0\nmodule.exports = neq\n", "const compare = require('./compare')\nconst gte = (a, b, loose) => compare(a, b, loose) >= 0\nmodule.exports = gte\n", "const compare = require('./compare')\nconst lte = (a, b, loose) => compare(a, b, loose) <= 0\nmodule.exports = lte\n", "const eq = require('./eq')\nconst neq = require('./neq')\nconst gt = require('./gt')\nconst gte = require('./gte')\nconst lt = require('./lt')\nconst lte = require('./lte')\n\nconst cmp = (a, op, b, loose) => {\n switch (op) {\n case '===':\n if (typeof a === 'object') {\n a = a.version\n }\n if (typeof b === 'object') {\n b = b.version\n }\n return a === b\n\n case '!==':\n if (typeof a === 'object') {\n a = a.version\n }\n if (typeof b === 'object') {\n b = b.version\n }\n return a !== b\n\n case '':\n case '=':\n case '==':\n return eq(a, b, loose)\n\n case '!=':\n return neq(a, b, loose)\n\n case '>':\n return gt(a, b, loose)\n\n case '>=':\n return gte(a, b, loose)\n\n case '<':\n return lt(a, b, loose)\n\n case '<=':\n return lte(a, b, loose)\n\n default:\n throw new TypeError(`Invalid operator: ${op}`)\n }\n}\nmodule.exports = cmp\n", "const SemVer = require('../classes/semver')\nconst parse = require('./parse')\nconst { re, t } = require('../internal/re')\n\nconst coerce = (version, options) => {\n if (version instanceof SemVer) {\n return version\n }\n\n if (typeof version === 'number') {\n version = String(version)\n }\n\n if (typeof version !== 'string') {\n return null\n }\n\n options = options || {}\n\n let match = null\n if (!options.rtl) {\n match = version.match(re[t.COERCE])\n } else {\n // Find the right-most coercible string that does not share\n // a terminus with a more left-ward coercible string.\n // Eg, '1.2.3.4' wants to coerce '2.3.4', not '3.4' or '4'\n //\n // Walk through the string checking with a /g regexp\n // Manually set the index so as to pick up overlapping matches.\n // Stop when we get a match that ends at the string end, since no\n // coercible string can be more right-ward without the same terminus.\n let next\n while ((next = re[t.COERCERTL].exec(version)) &&\n (!match || match.index + match[0].length !== version.length)\n ) {\n if (!match ||\n next.index + next[0].length !== match.index + match[0].length) {\n match = next\n }\n re[t.COERCERTL].lastIndex = next.index + next[1].length + next[2].length\n }\n // leave it in a clean state\n re[t.COERCERTL].lastIndex = -1\n }\n\n if (match === null) {\n return null\n }\n\n return parse(`${match[2]}.${match[3] || '0'}.${match[4] || '0'}`, options)\n}\nmodule.exports = coerce\n", "'use strict'\nmodule.exports = function (Yallist) {\n Yallist.prototype[Symbol.iterator] = function* () {\n for (let walker = this.head; walker; walker = walker.next) {\n yield walker.value\n }\n }\n}\n", "'use strict'\nmodule.exports = Yallist\n\nYallist.Node = Node\nYallist.create = Yallist\n\nfunction Yallist (list) {\n var self = this\n if (!(self instanceof Yallist)) {\n self = new Yallist()\n }\n\n self.tail = null\n self.head = null\n self.length = 0\n\n if (list && typeof list.forEach === 'function') {\n list.forEach(function (item) {\n self.push(item)\n })\n } else if (arguments.length > 0) {\n for (var i = 0, l = arguments.length; i < l; i++) {\n self.push(arguments[i])\n }\n }\n\n return self\n}\n\nYallist.prototype.removeNode = function (node) {\n if (node.list !== this) {\n throw new Error('removing node which does not belong to this list')\n }\n\n var next = node.next\n var prev = node.prev\n\n if (next) {\n next.prev = prev\n }\n\n if (prev) {\n prev.next = next\n }\n\n if (node === this.head) {\n this.head = next\n }\n if (node === this.tail) {\n this.tail = prev\n }\n\n node.list.length--\n node.next = null\n node.prev = null\n node.list = null\n\n return next\n}\n\nYallist.prototype.unshiftNode = function (node) {\n if (node === this.head) {\n return\n }\n\n if (node.list) {\n node.list.removeNode(node)\n }\n\n var head = this.head\n node.list = this\n node.next = head\n if (head) {\n head.prev = node\n }\n\n this.head = node\n if (!this.tail) {\n this.tail = node\n }\n this.length++\n}\n\nYallist.prototype.pushNode = function (node) {\n if (node === this.tail) {\n return\n }\n\n if (node.list) {\n node.list.removeNode(node)\n }\n\n var tail = this.tail\n node.list = this\n node.prev = tail\n if (tail) {\n tail.next = node\n }\n\n this.tail = node\n if (!this.head) {\n this.head = node\n }\n this.length++\n}\n\nYallist.prototype.push = function () {\n for (var i = 0, l = arguments.length; i < l; i++) {\n push(this, arguments[i])\n }\n return this.length\n}\n\nYallist.prototype.unshift = function () {\n for (var i = 0, l = arguments.length; i < l; i++) {\n unshift(this, arguments[i])\n }\n return this.length\n}\n\nYallist.prototype.pop = function () {\n if (!this.tail) {\n return undefined\n }\n\n var res = this.tail.value\n this.tail = this.tail.prev\n if (this.tail) {\n this.tail.next = null\n } else {\n this.head = null\n }\n this.length--\n return res\n}\n\nYallist.prototype.shift = function () {\n if (!this.head) {\n return undefined\n }\n\n var res = this.head.value\n this.head = this.head.next\n if (this.head) {\n this.head.prev = null\n } else {\n this.tail = null\n }\n this.length--\n return res\n}\n\nYallist.prototype.forEach = function (fn, thisp) {\n thisp = thisp || this\n for (var walker = this.head, i = 0; walker !== null; i++) {\n fn.call(thisp, walker.value, i, this)\n walker = walker.next\n }\n}\n\nYallist.prototype.forEachReverse = function (fn, thisp) {\n thisp = thisp || this\n for (var walker = this.tail, i = this.length - 1; walker !== null; i--) {\n fn.call(thisp, walker.value, i, this)\n walker = walker.prev\n }\n}\n\nYallist.prototype.get = function (n) {\n for (var i = 0, walker = this.head; walker !== null && i < n; i++) {\n // abort out of the list early if we hit a cycle\n walker = walker.next\n }\n if (i === n && walker !== null) {\n return walker.value\n }\n}\n\nYallist.prototype.getReverse = function (n) {\n for (var i = 0, walker = this.tail; walker !== null && i < n; i++) {\n // abort out of the list early if we hit a cycle\n walker = walker.prev\n }\n if (i === n && walker !== null) {\n return walker.value\n }\n}\n\nYallist.prototype.map = function (fn, thisp) {\n thisp = thisp || this\n var res = new Yallist()\n for (var walker = this.head; walker !== null;) {\n res.push(fn.call(thisp, walker.value, this))\n walker = walker.next\n }\n return res\n}\n\nYallist.prototype.mapReverse = function (fn, thisp) {\n thisp = thisp || this\n var res = new Yallist()\n for (var walker = this.tail; walker !== null;) {\n res.push(fn.call(thisp, walker.value, this))\n walker = walker.prev\n }\n return res\n}\n\nYallist.prototype.reduce = function (fn, initial) {\n var acc\n var walker = this.head\n if (arguments.length > 1) {\n acc = initial\n } else if (this.head) {\n walker = this.head.next\n acc = this.head.value\n } else {\n throw new TypeError('Reduce of empty list with no initial value')\n }\n\n for (var i = 0; walker !== null; i++) {\n acc = fn(acc, walker.value, i)\n walker = walker.next\n }\n\n return acc\n}\n\nYallist.prototype.reduceReverse = function (fn, initial) {\n var acc\n var walker = this.tail\n if (arguments.length > 1) {\n acc = initial\n } else if (this.tail) {\n walker = this.tail.prev\n acc = this.tail.value\n } else {\n throw new TypeError('Reduce of empty list with no initial value')\n }\n\n for (var i = this.length - 1; walker !== null; i--) {\n acc = fn(acc, walker.value, i)\n walker = walker.prev\n }\n\n return acc\n}\n\nYallist.prototype.toArray = function () {\n var arr = new Array(this.length)\n for (var i = 0, walker = this.head; walker !== null; i++) {\n arr[i] = walker.value\n walker = walker.next\n }\n return arr\n}\n\nYallist.prototype.toArrayReverse = function () {\n var arr = new Array(this.length)\n for (var i = 0, walker = this.tail; walker !== null; i++) {\n arr[i] = walker.value\n walker = walker.prev\n }\n return arr\n}\n\nYallist.prototype.slice = function (from, to) {\n to = to || this.length\n if (to < 0) {\n to += this.length\n }\n from = from || 0\n if (from < 0) {\n from += this.length\n }\n var ret = new Yallist()\n if (to < from || to < 0) {\n return ret\n }\n if (from < 0) {\n from = 0\n }\n if (to > this.length) {\n to = this.length\n }\n for (var i = 0, walker = this.head; walker !== null && i < from; i++) {\n walker = walker.next\n }\n for (; walker !== null && i < to; i++, walker = walker.next) {\n ret.push(walker.value)\n }\n return ret\n}\n\nYallist.prototype.sliceReverse = function (from, to) {\n to = to || this.length\n if (to < 0) {\n to += this.length\n }\n from = from || 0\n if (from < 0) {\n from += this.length\n }\n var ret = new Yallist()\n if (to < from || to < 0) {\n return ret\n }\n if (from < 0) {\n from = 0\n }\n if (to > this.length) {\n to = this.length\n }\n for (var i = this.length, walker = this.tail; walker !== null && i > to; i--) {\n walker = walker.prev\n }\n for (; walker !== null && i > from; i--, walker = walker.prev) {\n ret.push(walker.value)\n }\n return ret\n}\n\nYallist.prototype.splice = function (start, deleteCount, ...nodes) {\n if (start > this.length) {\n start = this.length - 1\n }\n if (start < 0) {\n start = this.length + start;\n }\n\n for (var i = 0, walker = this.head; walker !== null && i < start; i++) {\n walker = walker.next\n }\n\n var ret = []\n for (var i = 0; walker && i < deleteCount; i++) {\n ret.push(walker.value)\n walker = this.removeNode(walker)\n }\n if (walker === null) {\n walker = this.tail\n }\n\n if (walker !== this.head && walker !== this.tail) {\n walker = walker.prev\n }\n\n for (var i = 0; i < nodes.length; i++) {\n walker = insert(this, walker, nodes[i])\n }\n return ret;\n}\n\nYallist.prototype.reverse = function () {\n var head = this.head\n var tail = this.tail\n for (var walker = head; walker !== null; walker = walker.prev) {\n var p = walker.prev\n walker.prev = walker.next\n walker.next = p\n }\n this.head = tail\n this.tail = head\n return this\n}\n\nfunction insert (self, node, value) {\n var inserted = node === self.head ?\n new Node(value, null, node, self) :\n new Node(value, node, node.next, self)\n\n if (inserted.next === null) {\n self.tail = inserted\n }\n if (inserted.prev === null) {\n self.head = inserted\n }\n\n self.length++\n\n return inserted\n}\n\nfunction push (self, item) {\n self.tail = new Node(item, self.tail, null, self)\n if (!self.head) {\n self.head = self.tail\n }\n self.length++\n}\n\nfunction unshift (self, item) {\n self.head = new Node(item, null, self.head, self)\n if (!self.tail) {\n self.tail = self.head\n }\n self.length++\n}\n\nfunction Node (value, prev, next, list) {\n if (!(this instanceof Node)) {\n return new Node(value, prev, next, list)\n }\n\n this.list = list\n this.value = value\n\n if (prev) {\n prev.next = this\n this.prev = prev\n } else {\n this.prev = null\n }\n\n if (next) {\n next.prev = this\n this.next = next\n } else {\n this.next = null\n }\n}\n\ntry {\n // add if support for Symbol.iterator is present\n require('./iterator.js')(Yallist)\n} catch (er) {}\n", "'use strict'\n\n// A linked list to keep track of recently-used-ness\nconst Yallist = require('yallist')\n\nconst MAX = Symbol('max')\nconst LENGTH = Symbol('length')\nconst LENGTH_CALCULATOR = Symbol('lengthCalculator')\nconst ALLOW_STALE = Symbol('allowStale')\nconst MAX_AGE = Symbol('maxAge')\nconst DISPOSE = Symbol('dispose')\nconst NO_DISPOSE_ON_SET = Symbol('noDisposeOnSet')\nconst LRU_LIST = Symbol('lruList')\nconst CACHE = Symbol('cache')\nconst UPDATE_AGE_ON_GET = Symbol('updateAgeOnGet')\n\nconst naiveLength = () => 1\n\n// lruList is a yallist where the head is the youngest\n// item, and the tail is the oldest. the list contains the Hit\n// objects as the entries.\n// Each Hit object has a reference to its Yallist.Node. This\n// never changes.\n//\n// cache is a Map (or PseudoMap) that matches the keys to\n// the Yallist.Node object.\nclass LRUCache {\n constructor (options) {\n if (typeof options === 'number')\n options = { max: options }\n\n if (!options)\n options = {}\n\n if (options.max && (typeof options.max !== 'number' || options.max < 0))\n throw new TypeError('max must be a non-negative number')\n // Kind of weird to have a default max of Infinity, but oh well.\n const max = this[MAX] = options.max || Infinity\n\n const lc = options.length || naiveLength\n this[LENGTH_CALCULATOR] = (typeof lc !== 'function') ? naiveLength : lc\n this[ALLOW_STALE] = options.stale || false\n if (options.maxAge && typeof options.maxAge !== 'number')\n throw new TypeError('maxAge must be a number')\n this[MAX_AGE] = options.maxAge || 0\n this[DISPOSE] = options.dispose\n this[NO_DISPOSE_ON_SET] = options.noDisposeOnSet || false\n this[UPDATE_AGE_ON_GET] = options.updateAgeOnGet || false\n this.reset()\n }\n\n // resize the cache when the max changes.\n set max (mL) {\n if (typeof mL !== 'number' || mL < 0)\n throw new TypeError('max must be a non-negative number')\n\n this[MAX] = mL || Infinity\n trim(this)\n }\n get max () {\n return this[MAX]\n }\n\n set allowStale (allowStale) {\n this[ALLOW_STALE] = !!allowStale\n }\n get allowStale () {\n return this[ALLOW_STALE]\n }\n\n set maxAge (mA) {\n if (typeof mA !== 'number')\n throw new TypeError('maxAge must be a non-negative number')\n\n this[MAX_AGE] = mA\n trim(this)\n }\n get maxAge () {\n return this[MAX_AGE]\n }\n\n // resize the cache when the lengthCalculator changes.\n set lengthCalculator (lC) {\n if (typeof lC !== 'function')\n lC = naiveLength\n\n if (lC !== this[LENGTH_CALCULATOR]) {\n this[LENGTH_CALCULATOR] = lC\n this[LENGTH] = 0\n this[LRU_LIST].forEach(hit => {\n hit.length = this[LENGTH_CALCULATOR](hit.value, hit.key)\n this[LENGTH] += hit.length\n })\n }\n trim(this)\n }\n get lengthCalculator () { return this[LENGTH_CALCULATOR] }\n\n get length () { return this[LENGTH] }\n get itemCount () { return this[LRU_LIST].length }\n\n rforEach (fn, thisp) {\n thisp = thisp || this\n for (let walker = this[LRU_LIST].tail; walker !== null;) {\n const prev = walker.prev\n forEachStep(this, fn, walker, thisp)\n walker = prev\n }\n }\n\n forEach (fn, thisp) {\n thisp = thisp || this\n for (let walker = this[LRU_LIST].head; walker !== null;) {\n const next = walker.next\n forEachStep(this, fn, walker, thisp)\n walker = next\n }\n }\n\n keys () {\n return this[LRU_LIST].toArray().map(k => k.key)\n }\n\n values () {\n return this[LRU_LIST].toArray().map(k => k.value)\n }\n\n reset () {\n if (this[DISPOSE] &&\n this[LRU_LIST] &&\n this[LRU_LIST].length) {\n this[LRU_LIST].forEach(hit => this[DISPOSE](hit.key, hit.value))\n }\n\n this[CACHE] = new Map() // hash of items by key\n this[LRU_LIST] = new Yallist() // list of items in order of use recency\n this[LENGTH] = 0 // length of items in the list\n }\n\n dump () {\n return this[LRU_LIST].map(hit =>\n isStale(this, hit) ? false : {\n k: hit.key,\n v: hit.value,\n e: hit.now + (hit.maxAge || 0)\n }).toArray().filter(h => h)\n }\n\n dumpLru () {\n return this[LRU_LIST]\n }\n\n set (key, value, maxAge) {\n maxAge = maxAge || this[MAX_AGE]\n\n if (maxAge && typeof maxAge !== 'number')\n throw new TypeError('maxAge must be a number')\n\n const now = maxAge ? Date.now() : 0\n const len = this[LENGTH_CALCULATOR](value, key)\n\n if (this[CACHE].has(key)) {\n if (len > this[MAX]) {\n del(this, this[CACHE].get(key))\n return false\n }\n\n const node = this[CACHE].get(key)\n const item = node.value\n\n // dispose of the old one before overwriting\n // split out into 2 ifs for better coverage tracking\n if (this[DISPOSE]) {\n if (!this[NO_DISPOSE_ON_SET])\n this[DISPOSE](key, item.value)\n }\n\n item.now = now\n item.maxAge = maxAge\n item.value = value\n this[LENGTH] += len - item.length\n item.length = len\n this.get(key)\n trim(this)\n return true\n }\n\n const hit = new Entry(key, value, len, now, maxAge)\n\n // oversized objects fall out of cache automatically.\n if (hit.length > this[MAX]) {\n if (this[DISPOSE])\n this[DISPOSE](key, value)\n\n return false\n }\n\n this[LENGTH] += hit.length\n this[LRU_LIST].unshift(hit)\n this[CACHE].set(key, this[LRU_LIST].head)\n trim(this)\n return true\n }\n\n has (key) {\n if (!this[CACHE].has(key)) return false\n const hit = this[CACHE].get(key).value\n return !isStale(this, hit)\n }\n\n get (key) {\n return get(this, key, true)\n }\n\n peek (key) {\n return get(this, key, false)\n }\n\n pop () {\n const node = this[LRU_LIST].tail\n if (!node)\n return null\n\n del(this, node)\n return node.value\n }\n\n del (key) {\n del(this, this[CACHE].get(key))\n }\n\n load (arr) {\n // reset the cache\n this.reset()\n\n const now = Date.now()\n // A previous serialized cache has the most recent items first\n for (let l = arr.length - 1; l >= 0; l--) {\n const hit = arr[l]\n const expiresAt = hit.e || 0\n if (expiresAt === 0)\n // the item was created without expiration in a non aged cache\n this.set(hit.k, hit.v)\n else {\n const maxAge = expiresAt - now\n // dont add already expired items\n if (maxAge > 0) {\n this.set(hit.k, hit.v, maxAge)\n }\n }\n }\n }\n\n prune () {\n this[CACHE].forEach((value, key) => get(this, key, false))\n }\n}\n\nconst get = (self, key, doUse) => {\n const node = self[CACHE].get(key)\n if (node) {\n const hit = node.value\n if (isStale(self, hit)) {\n del(self, node)\n if (!self[ALLOW_STALE])\n return undefined\n } else {\n if (doUse) {\n if (self[UPDATE_AGE_ON_GET])\n node.value.now = Date.now()\n self[LRU_LIST].unshiftNode(node)\n }\n }\n return hit.value\n }\n}\n\nconst isStale = (self, hit) => {\n if (!hit || (!hit.maxAge && !self[MAX_AGE]))\n return false\n\n const diff = Date.now() - hit.now\n return hit.maxAge ? diff > hit.maxAge\n : self[MAX_AGE] && (diff > self[MAX_AGE])\n}\n\nconst trim = self => {\n if (self[LENGTH] > self[MAX]) {\n for (let walker = self[LRU_LIST].tail;\n self[LENGTH] > self[MAX] && walker !== null;) {\n // We know that we're about to delete this one, and also\n // what the next least recently used key will be, so just\n // go ahead and set it now.\n const prev = walker.prev\n del(self, walker)\n walker = prev\n }\n }\n}\n\nconst del = (self, node) => {\n if (node) {\n const hit = node.value\n if (self[DISPOSE])\n self[DISPOSE](hit.key, hit.value)\n\n self[LENGTH] -= hit.length\n self[CACHE].delete(hit.key)\n self[LRU_LIST].removeNode(node)\n }\n}\n\nclass Entry {\n constructor (key, value, length, now, maxAge) {\n this.key = key\n this.value = value\n this.length = length\n this.now = now\n this.maxAge = maxAge || 0\n }\n}\n\nconst forEachStep = (self, fn, node, thisp) => {\n let hit = node.value\n if (isStale(self, hit)) {\n del(self, node)\n if (!self[ALLOW_STALE])\n hit = undefined\n }\n if (hit)\n fn.call(thisp, hit.value, hit.key, self)\n}\n\nmodule.exports = LRUCache\n", "// hoisted class for cyclic dependency\nclass Range {\n constructor (range, options) {\n options = parseOptions(options)\n\n if (range instanceof Range) {\n if (\n range.loose === !!options.loose &&\n range.includePrerelease === !!options.includePrerelease\n ) {\n return range\n } else {\n return new Range(range.raw, options)\n }\n }\n\n if (range instanceof Comparator) {\n // just put it in the set and return\n this.raw = range.value\n this.set = [[range]]\n this.format()\n return this\n }\n\n this.options = options\n this.loose = !!options.loose\n this.includePrerelease = !!options.includePrerelease\n\n // First, split based on boolean or ||\n this.raw = range\n this.set = range\n .split('||')\n // map the range to a 2d array of comparators\n .map(r => this.parseRange(r.trim()))\n // throw out any comparator lists that are empty\n // this generally means that it was not a valid range, which is allowed\n // in loose mode, but will still throw if the WHOLE range is invalid.\n .filter(c => c.length)\n\n if (!this.set.length) {\n throw new TypeError(`Invalid SemVer Range: ${range}`)\n }\n\n // if we have any that are not the null set, throw out null sets.\n if (this.set.length > 1) {\n // keep the first one, in case they're all null sets\n const first = this.set[0]\n this.set = this.set.filter(c => !isNullSet(c[0]))\n if (this.set.length === 0) {\n this.set = [first]\n } else if (this.set.length > 1) {\n // if we have any that are *, then the range is just *\n for (const c of this.set) {\n if (c.length === 1 && isAny(c[0])) {\n this.set = [c]\n break\n }\n }\n }\n }\n\n this.format()\n }\n\n format () {\n this.range = this.set\n .map((comps) => {\n return comps.join(' ').trim()\n })\n .join('||')\n .trim()\n return this.range\n }\n\n toString () {\n return this.range\n }\n\n parseRange (range) {\n range = range.trim()\n\n // memoize range parsing for performance.\n // this is a very hot path, and fully deterministic.\n const memoOpts = Object.keys(this.options).join(',')\n const memoKey = `parseRange:${memoOpts}:${range}`\n const cached = cache.get(memoKey)\n if (cached) {\n return cached\n }\n\n const loose = this.options.loose\n // `1.2.3 - 1.2.4` => `>=1.2.3 <=1.2.4`\n const hr = loose ? re[t.HYPHENRANGELOOSE] : re[t.HYPHENRANGE]\n range = range.replace(hr, hyphenReplace(this.options.includePrerelease))\n debug('hyphen replace', range)\n // `> 1.2.3 < 1.2.5` => `>1.2.3 <1.2.5`\n range = range.replace(re[t.COMPARATORTRIM], comparatorTrimReplace)\n debug('comparator trim', range)\n\n // `~ 1.2.3` => `~1.2.3`\n range = range.replace(re[t.TILDETRIM], tildeTrimReplace)\n\n // `^ 1.2.3` => `^1.2.3`\n range = range.replace(re[t.CARETTRIM], caretTrimReplace)\n\n // normalize spaces\n range = range.split(/\\s+/).join(' ')\n\n // At this point, the range is completely trimmed and\n // ready to be split into comparators.\n\n let rangeList = range\n .split(' ')\n .map(comp => parseComparator(comp, this.options))\n .join(' ')\n .split(/\\s+/)\n // >=0.0.0 is equivalent to *\n .map(comp => replaceGTE0(comp, this.options))\n\n if (loose) {\n // in loose mode, throw out any that are not valid comparators\n rangeList = rangeList.filter(comp => {\n debug('loose invalid filter', comp, this.options)\n return !!comp.match(re[t.COMPARATORLOOSE])\n })\n }\n debug('range list', rangeList)\n\n // if any comparators are the null set, then replace with JUST null set\n // if more than one comparator, remove any * comparators\n // also, don't include the same comparator more than once\n const rangeMap = new Map()\n const comparators = rangeList.map(comp => new Comparator(comp, this.options))\n for (const comp of comparators) {\n if (isNullSet(comp)) {\n return [comp]\n }\n rangeMap.set(comp.value, comp)\n }\n if (rangeMap.size > 1 && rangeMap.has('')) {\n rangeMap.delete('')\n }\n\n const result = [...rangeMap.values()]\n cache.set(memoKey, result)\n return result\n }\n\n intersects (range, options) {\n if (!(range instanceof Range)) {\n throw new TypeError('a Range is required')\n }\n\n return this.set.some((thisComparators) => {\n return (\n isSatisfiable(thisComparators, options) &&\n range.set.some((rangeComparators) => {\n return (\n isSatisfiable(rangeComparators, options) &&\n thisComparators.every((thisComparator) => {\n return rangeComparators.every((rangeComparator) => {\n return thisComparator.intersects(rangeComparator, options)\n })\n })\n )\n })\n )\n })\n }\n\n // if ANY of the sets match ALL of its comparators, then pass\n test (version) {\n if (!version) {\n return false\n }\n\n if (typeof version === 'string') {\n try {\n version = new SemVer(version, this.options)\n } catch (er) {\n return false\n }\n }\n\n for (let i = 0; i < this.set.length; i++) {\n if (testSet(this.set[i], version, this.options)) {\n return true\n }\n }\n return false\n }\n}\nmodule.exports = Range\n\nconst LRU = require('lru-cache')\nconst cache = new LRU({ max: 1000 })\n\nconst parseOptions = require('../internal/parse-options')\nconst Comparator = require('./comparator')\nconst debug = require('../internal/debug')\nconst SemVer = require('./semver')\nconst {\n re,\n t,\n comparatorTrimReplace,\n tildeTrimReplace,\n caretTrimReplace,\n} = require('../internal/re')\n\nconst isNullSet = c => c.value === '<0.0.0-0'\nconst isAny = c => c.value === ''\n\n// take a set of comparators and determine whether there\n// exists a version which can satisfy it\nconst isSatisfiable = (comparators, options) => {\n let result = true\n const remainingComparators = comparators.slice()\n let testComparator = remainingComparators.pop()\n\n while (result && remainingComparators.length) {\n result = remainingComparators.every((otherComparator) => {\n return testComparator.intersects(otherComparator, options)\n })\n\n testComparator = remainingComparators.pop()\n }\n\n return result\n}\n\n// comprised of xranges, tildes, stars, and gtlt's at this point.\n// already replaced the hyphen ranges\n// turn into a set of JUST comparators.\nconst parseComparator = (comp, options) => {\n debug('comp', comp, options)\n comp = replaceCarets(comp, options)\n debug('caret', comp)\n comp = replaceTildes(comp, options)\n debug('tildes', comp)\n comp = replaceXRanges(comp, options)\n debug('xrange', comp)\n comp = replaceStars(comp, options)\n debug('stars', comp)\n return comp\n}\n\nconst isX = id => !id || id.toLowerCase() === 'x' || id === '*'\n\n// ~, ~> --> * (any, kinda silly)\n// ~2, ~2.x, ~2.x.x, ~>2, ~>2.x ~>2.x.x --> >=2.0.0 <3.0.0-0\n// ~2.0, ~2.0.x, ~>2.0, ~>2.0.x --> >=2.0.0 <2.1.0-0\n// ~1.2, ~1.2.x, ~>1.2, ~>1.2.x --> >=1.2.0 <1.3.0-0\n// ~1.2.3, ~>1.2.3 --> >=1.2.3 <1.3.0-0\n// ~1.2.0, ~>1.2.0 --> >=1.2.0 <1.3.0-0\n// ~0.0.1 --> >=0.0.1 <0.1.0-0\nconst replaceTildes = (comp, options) =>\n comp.trim().split(/\\s+/).map((c) => {\n return replaceTilde(c, options)\n }).join(' ')\n\nconst replaceTilde = (comp, options) => {\n const r = options.loose ? re[t.TILDELOOSE] : re[t.TILDE]\n return comp.replace(r, (_, M, m, p, pr) => {\n debug('tilde', comp, _, M, m, p, pr)\n let ret\n\n if (isX(M)) {\n ret = ''\n } else if (isX(m)) {\n ret = `>=${M}.0.0 <${+M + 1}.0.0-0`\n } else if (isX(p)) {\n // ~1.2 == >=1.2.0 <1.3.0-0\n ret = `>=${M}.${m}.0 <${M}.${+m + 1}.0-0`\n } else if (pr) {\n debug('replaceTilde pr', pr)\n ret = `>=${M}.${m}.${p}-${pr\n } <${M}.${+m + 1}.0-0`\n } else {\n // ~1.2.3 == >=1.2.3 <1.3.0-0\n ret = `>=${M}.${m}.${p\n } <${M}.${+m + 1}.0-0`\n }\n\n debug('tilde return', ret)\n return ret\n })\n}\n\n// ^ --> * (any, kinda silly)\n// ^2, ^2.x, ^2.x.x --> >=2.0.0 <3.0.0-0\n// ^2.0, ^2.0.x --> >=2.0.0 <3.0.0-0\n// ^1.2, ^1.2.x --> >=1.2.0 <2.0.0-0\n// ^1.2.3 --> >=1.2.3 <2.0.0-0\n// ^1.2.0 --> >=1.2.0 <2.0.0-0\n// ^0.0.1 --> >=0.0.1 <0.0.2-0\n// ^0.1.0 --> >=0.1.0 <0.2.0-0\nconst replaceCarets = (comp, options) =>\n comp.trim().split(/\\s+/).map((c) => {\n return replaceCaret(c, options)\n }).join(' ')\n\nconst replaceCaret = (comp, options) => {\n debug('caret', comp, options)\n const r = options.loose ? re[t.CARETLOOSE] : re[t.CARET]\n const z = options.includePrerelease ? '-0' : ''\n return comp.replace(r, (_, M, m, p, pr) => {\n debug('caret', comp, _, M, m, p, pr)\n let ret\n\n if (isX(M)) {\n ret = ''\n } else if (isX(m)) {\n ret = `>=${M}.0.0${z} <${+M + 1}.0.0-0`\n } else if (isX(p)) {\n if (M === '0') {\n ret = `>=${M}.${m}.0${z} <${M}.${+m + 1}.0-0`\n } else {\n ret = `>=${M}.${m}.0${z} <${+M + 1}.0.0-0`\n }\n } else if (pr) {\n debug('replaceCaret pr', pr)\n if (M === '0') {\n if (m === '0') {\n ret = `>=${M}.${m}.${p}-${pr\n } <${M}.${m}.${+p + 1}-0`\n } else {\n ret = `>=${M}.${m}.${p}-${pr\n } <${M}.${+m + 1}.0-0`\n }\n } else {\n ret = `>=${M}.${m}.${p}-${pr\n } <${+M + 1}.0.0-0`\n }\n } else {\n debug('no pr')\n if (M === '0') {\n if (m === '0') {\n ret = `>=${M}.${m}.${p\n }${z} <${M}.${m}.${+p + 1}-0`\n } else {\n ret = `>=${M}.${m}.${p\n }${z} <${M}.${+m + 1}.0-0`\n }\n } else {\n ret = `>=${M}.${m}.${p\n } <${+M + 1}.0.0-0`\n }\n }\n\n debug('caret return', ret)\n return ret\n })\n}\n\nconst replaceXRanges = (comp, options) => {\n debug('replaceXRanges', comp, options)\n return comp.split(/\\s+/).map((c) => {\n return replaceXRange(c, options)\n }).join(' ')\n}\n\nconst replaceXRange = (comp, options) => {\n comp = comp.trim()\n const r = options.loose ? re[t.XRANGELOOSE] : re[t.XRANGE]\n return comp.replace(r, (ret, gtlt, M, m, p, pr) => {\n debug('xRange', comp, ret, gtlt, M, m, p, pr)\n const xM = isX(M)\n const xm = xM || isX(m)\n const xp = xm || isX(p)\n const anyX = xp\n\n if (gtlt === '=' && anyX) {\n gtlt = ''\n }\n\n // if we're including prereleases in the match, then we need\n // to fix this to -0, the lowest possible prerelease value\n pr = options.includePrerelease ? '-0' : ''\n\n if (xM) {\n if (gtlt === '>' || gtlt === '<') {\n // nothing is allowed\n ret = '<0.0.0-0'\n } else {\n // nothing is forbidden\n ret = '*'\n }\n } else if (gtlt && anyX) {\n // we know patch is an x, because we have any x at all.\n // replace X with 0\n if (xm) {\n m = 0\n }\n p = 0\n\n if (gtlt === '>') {\n // >1 => >=2.0.0\n // >1.2 => >=1.3.0\n gtlt = '>='\n if (xm) {\n M = +M + 1\n m = 0\n p = 0\n } else {\n m = +m + 1\n p = 0\n }\n } else if (gtlt === '<=') {\n // <=0.7.x is actually <0.8.0, since any 0.7.x should\n // pass. Similarly, <=7.x is actually <8.0.0, etc.\n gtlt = '<'\n if (xm) {\n M = +M + 1\n } else {\n m = +m + 1\n }\n }\n\n if (gtlt === '<') {\n pr = '-0'\n }\n\n ret = `${gtlt + M}.${m}.${p}${pr}`\n } else if (xm) {\n ret = `>=${M}.0.0${pr} <${+M + 1}.0.0-0`\n } else if (xp) {\n ret = `>=${M}.${m}.0${pr\n } <${M}.${+m + 1}.0-0`\n }\n\n debug('xRange return', ret)\n\n return ret\n })\n}\n\n// Because * is AND-ed with everything else in the comparator,\n// and '' means \"any version\", just remove the *s entirely.\nconst replaceStars = (comp, options) => {\n debug('replaceStars', comp, options)\n // Looseness is ignored here. star is always as loose as it gets!\n return comp.trim().replace(re[t.STAR], '')\n}\n\nconst replaceGTE0 = (comp, options) => {\n debug('replaceGTE0', comp, options)\n return comp.trim()\n .replace(re[options.includePrerelease ? t.GTE0PRE : t.GTE0], '')\n}\n\n// This function is passed to string.replace(re[t.HYPHENRANGE])\n// M, m, patch, prerelease, build\n// 1.2 - 3.4.5 => >=1.2.0 <=3.4.5\n// 1.2.3 - 3.4 => >=1.2.0 <3.5.0-0 Any 3.4.x will do\n// 1.2 - 3.4 => >=1.2.0 <3.5.0-0\nconst hyphenReplace = incPr => ($0,\n from, fM, fm, fp, fpr, fb,\n to, tM, tm, tp, tpr, tb) => {\n if (isX(fM)) {\n from = ''\n } else if (isX(fm)) {\n from = `>=${fM}.0.0${incPr ? '-0' : ''}`\n } else if (isX(fp)) {\n from = `>=${fM}.${fm}.0${incPr ? '-0' : ''}`\n } else if (fpr) {\n from = `>=${from}`\n } else {\n from = `>=${from}${incPr ? '-0' : ''}`\n }\n\n if (isX(tM)) {\n to = ''\n } else if (isX(tm)) {\n to = `<${+tM + 1}.0.0-0`\n } else if (isX(tp)) {\n to = `<${tM}.${+tm + 1}.0-0`\n } else if (tpr) {\n to = `<=${tM}.${tm}.${tp}-${tpr}`\n } else if (incPr) {\n to = `<${tM}.${tm}.${+tp + 1}-0`\n } else {\n to = `<=${to}`\n }\n\n return (`${from} ${to}`).trim()\n}\n\nconst testSet = (set, version, options) => {\n for (let i = 0; i < set.length; i++) {\n if (!set[i].test(version)) {\n return false\n }\n }\n\n if (version.prerelease.length && !options.includePrerelease) {\n // Find the set of versions that are allowed to have prereleases\n // For example, ^1.2.3-pr.1 desugars to >=1.2.3-pr.1 <2.0.0\n // That should allow `1.2.3-pr.2` to pass.\n // However, `1.2.4-alpha.notready` should NOT be allowed,\n // even though it's within the range set by the comparators.\n for (let i = 0; i < set.length; i++) {\n debug(set[i].semver)\n if (set[i].semver === Comparator.ANY) {\n continue\n }\n\n if (set[i].semver.prerelease.length > 0) {\n const allowed = set[i].semver\n if (allowed.major === version.major &&\n allowed.minor === version.minor &&\n allowed.patch === version.patch) {\n return true\n }\n }\n }\n\n // Version has a -pre, but it's not one of the ones we like.\n return false\n }\n\n return true\n}\n", "const ANY = Symbol('SemVer ANY')\n// hoisted class for cyclic dependency\nclass Comparator {\n static get ANY () {\n return ANY\n }\n\n constructor (comp, options) {\n options = parseOptions(options)\n\n if (comp instanceof Comparator) {\n if (comp.loose === !!options.loose) {\n return comp\n } else {\n comp = comp.value\n }\n }\n\n debug('comparator', comp, options)\n this.options = options\n this.loose = !!options.loose\n this.parse(comp)\n\n if (this.semver === ANY) {\n this.value = ''\n } else {\n this.value = this.operator + this.semver.version\n }\n\n debug('comp', this)\n }\n\n parse (comp) {\n const r = this.options.loose ? re[t.COMPARATORLOOSE] : re[t.COMPARATOR]\n const m = comp.match(r)\n\n if (!m) {\n throw new TypeError(`Invalid comparator: ${comp}`)\n }\n\n this.operator = m[1] !== undefined ? m[1] : ''\n if (this.operator === '=') {\n this.operator = ''\n }\n\n // if it literally is just '>' or '' then allow anything.\n if (!m[2]) {\n this.semver = ANY\n } else {\n this.semver = new SemVer(m[2], this.options.loose)\n }\n }\n\n toString () {\n return this.value\n }\n\n test (version) {\n debug('Comparator.test', version, this.options.loose)\n\n if (this.semver === ANY || version === ANY) {\n return true\n }\n\n if (typeof version === 'string') {\n try {\n version = new SemVer(version, this.options)\n } catch (er) {\n return false\n }\n }\n\n return cmp(version, this.operator, this.semver, this.options)\n }\n\n intersects (comp, options) {\n if (!(comp instanceof Comparator)) {\n throw new TypeError('a Comparator is required')\n }\n\n if (!options || typeof options !== 'object') {\n options = {\n loose: !!options,\n includePrerelease: false,\n }\n }\n\n if (this.operator === '') {\n if (this.value === '') {\n return true\n }\n return new Range(comp.value, options).test(this.value)\n } else if (comp.operator === '') {\n if (comp.value === '') {\n return true\n }\n return new Range(this.value, options).test(comp.semver)\n }\n\n const sameDirectionIncreasing =\n (this.operator === '>=' || this.operator === '>') &&\n (comp.operator === '>=' || comp.operator === '>')\n const sameDirectionDecreasing =\n (this.operator === '<=' || this.operator === '<') &&\n (comp.operator === '<=' || comp.operator === '<')\n const sameSemVer = this.semver.version === comp.semver.version\n const differentDirectionsInclusive =\n (this.operator === '>=' || this.operator === '<=') &&\n (comp.operator === '>=' || comp.operator === '<=')\n const oppositeDirectionsLessThan =\n cmp(this.semver, '<', comp.semver, options) &&\n (this.operator === '>=' || this.operator === '>') &&\n (comp.operator === '<=' || comp.operator === '<')\n const oppositeDirectionsGreaterThan =\n cmp(this.semver, '>', comp.semver, options) &&\n (this.operator === '<=' || this.operator === '<') &&\n (comp.operator === '>=' || comp.operator === '>')\n\n return (\n sameDirectionIncreasing ||\n sameDirectionDecreasing ||\n (sameSemVer && differentDirectionsInclusive) ||\n oppositeDirectionsLessThan ||\n oppositeDirectionsGreaterThan\n )\n }\n}\n\nmodule.exports = Comparator\n\nconst parseOptions = require('../internal/parse-options')\nconst { re, t } = require('../internal/re')\nconst cmp = require('../functions/cmp')\nconst debug = require('../internal/debug')\nconst SemVer = require('./semver')\nconst Range = require('./range')\n", "const Range = require('../classes/range')\nconst satisfies = (version, range, options) => {\n try {\n range = new Range(range, options)\n } catch (er) {\n return false\n }\n return range.test(version)\n}\nmodule.exports = satisfies\n", "const Range = require('../classes/range')\n\n// Mostly just for testing and legacy API reasons\nconst toComparators = (range, options) =>\n new Range(range, options).set\n .map(comp => comp.map(c => c.value).join(' ').trim().split(' '))\n\nmodule.exports = toComparators\n", "const SemVer = require('../classes/semver')\nconst Range = require('../classes/range')\n\nconst maxSatisfying = (versions, range, options) => {\n let max = null\n let maxSV = null\n let rangeObj = null\n try {\n rangeObj = new Range(range, options)\n } catch (er) {\n return null\n }\n versions.forEach((v) => {\n if (rangeObj.test(v)) {\n // satisfies(v, range, options)\n if (!max || maxSV.compare(v) === -1) {\n // compare(max, v, true)\n max = v\n maxSV = new SemVer(max, options)\n }\n }\n })\n return max\n}\nmodule.exports = maxSatisfying\n", "const SemVer = require('../classes/semver')\nconst Range = require('../classes/range')\nconst minSatisfying = (versions, range, options) => {\n let min = null\n let minSV = null\n let rangeObj = null\n try {\n rangeObj = new Range(range, options)\n } catch (er) {\n return null\n }\n versions.forEach((v) => {\n if (rangeObj.test(v)) {\n // satisfies(v, range, options)\n if (!min || minSV.compare(v) === 1) {\n // compare(min, v, true)\n min = v\n minSV = new SemVer(min, options)\n }\n }\n })\n return min\n}\nmodule.exports = minSatisfying\n", "const SemVer = require('../classes/semver')\nconst Range = require('../classes/range')\nconst gt = require('../functions/gt')\n\nconst minVersion = (range, loose) => {\n range = new Range(range, loose)\n\n let minver = new SemVer('0.0.0')\n if (range.test(minver)) {\n return minver\n }\n\n minver = new SemVer('0.0.0-0')\n if (range.test(minver)) {\n return minver\n }\n\n minver = null\n for (let i = 0; i < range.set.length; ++i) {\n const comparators = range.set[i]\n\n let setMin = null\n comparators.forEach((comparator) => {\n // Clone to avoid manipulating the comparator's semver object.\n const compver = new SemVer(comparator.semver.version)\n switch (comparator.operator) {\n case '>':\n if (compver.prerelease.length === 0) {\n compver.patch++\n } else {\n compver.prerelease.push(0)\n }\n compver.raw = compver.format()\n /* fallthrough */\n case '':\n case '>=':\n if (!setMin || gt(compver, setMin)) {\n setMin = compver\n }\n break\n case '<':\n case '<=':\n /* Ignore maximum versions */\n break\n /* istanbul ignore next */\n default:\n throw new Error(`Unexpected operation: ${comparator.operator}`)\n }\n })\n if (setMin && (!minver || gt(minver, setMin))) {\n minver = setMin\n }\n }\n\n if (minver && range.test(minver)) {\n return minver\n }\n\n return null\n}\nmodule.exports = minVersion\n", "const Range = require('../classes/range')\nconst validRange = (range, options) => {\n try {\n // Return '*' instead of '' so that truthiness works.\n // This will throw if it's invalid anyway\n return new Range(range, options).range || '*'\n } catch (er) {\n return null\n }\n}\nmodule.exports = validRange\n", "const SemVer = require('../classes/semver')\nconst Comparator = require('../classes/comparator')\nconst { ANY } = Comparator\nconst Range = require('../classes/range')\nconst satisfies = require('../functions/satisfies')\nconst gt = require('../functions/gt')\nconst lt = require('../functions/lt')\nconst lte = require('../functions/lte')\nconst gte = require('../functions/gte')\n\nconst outside = (version, range, hilo, options) => {\n version = new SemVer(version, options)\n range = new Range(range, options)\n\n let gtfn, ltefn, ltfn, comp, ecomp\n switch (hilo) {\n case '>':\n gtfn = gt\n ltefn = lte\n ltfn = lt\n comp = '>'\n ecomp = '>='\n break\n case '<':\n gtfn = lt\n ltefn = gte\n ltfn = gt\n comp = '<'\n ecomp = '<='\n break\n default:\n throw new TypeError('Must provide a hilo val of \"<\" or \">\"')\n }\n\n // If it satisfies the range it is not outside\n if (satisfies(version, range, options)) {\n return false\n }\n\n // From now on, variable terms are as if we're in \"gtr\" mode.\n // but note that everything is flipped for the \"ltr\" function.\n\n for (let i = 0; i < range.set.length; ++i) {\n const comparators = range.set[i]\n\n let high = null\n let low = null\n\n comparators.forEach((comparator) => {\n if (comparator.semver === ANY) {\n comparator = new Comparator('>=0.0.0')\n }\n high = high || comparator\n low = low || comparator\n if (gtfn(comparator.semver, high.semver, options)) {\n high = comparator\n } else if (ltfn(comparator.semver, low.semver, options)) {\n low = comparator\n }\n })\n\n // If the edge version comparator has a operator then our version\n // isn't outside it\n if (high.operator === comp || high.operator === ecomp) {\n return false\n }\n\n // If the lowest version comparator has an operator and our version\n // is less than it then it isn't higher than the range\n if ((!low.operator || low.operator === comp) &&\n ltefn(version, low.semver)) {\n return false\n } else if (low.operator === ecomp && ltfn(version, low.semver)) {\n return false\n }\n }\n return true\n}\n\nmodule.exports = outside\n", "// Determine if version is greater than all the versions possible in the range.\nconst outside = require('./outside')\nconst gtr = (version, range, options) => outside(version, range, '>', options)\nmodule.exports = gtr\n", "const outside = require('./outside')\n// Determine if version is less than all the versions possible in the range\nconst ltr = (version, range, options) => outside(version, range, '<', options)\nmodule.exports = ltr\n", "const Range = require('../classes/range')\nconst intersects = (r1, r2, options) => {\n r1 = new Range(r1, options)\n r2 = new Range(r2, options)\n return r1.intersects(r2)\n}\nmodule.exports = intersects\n", "// given a set of versions and a range, create a \"simplified\" range\n// that includes the same versions that the original range does\n// If the original range is shorter than the simplified one, return that.\nconst satisfies = require('../functions/satisfies.js')\nconst compare = require('../functions/compare.js')\nmodule.exports = (versions, range, options) => {\n const set = []\n let first = null\n let prev = null\n const v = versions.sort((a, b) => compare(a, b, options))\n for (const version of v) {\n const included = satisfies(version, range, options)\n if (included) {\n prev = version\n if (!first) {\n first = version\n }\n } else {\n if (prev) {\n set.push([first, prev])\n }\n prev = null\n first = null\n }\n }\n if (first) {\n set.push([first, null])\n }\n\n const ranges = []\n for (const [min, max] of set) {\n if (min === max) {\n ranges.push(min)\n } else if (!max && min === v[0]) {\n ranges.push('*')\n } else if (!max) {\n ranges.push(`>=${min}`)\n } else if (min === v[0]) {\n ranges.push(`<=${max}`)\n } else {\n ranges.push(`${min} - ${max}`)\n }\n }\n const simplified = ranges.join(' || ')\n const original = typeof range.raw === 'string' ? range.raw : String(range)\n return simplified.length < original.length ? simplified : range\n}\n", "const Range = require('../classes/range.js')\nconst Comparator = require('../classes/comparator.js')\nconst { ANY } = Comparator\nconst satisfies = require('../functions/satisfies.js')\nconst compare = require('../functions/compare.js')\n\n// Complex range `r1 || r2 || ...` is a subset of `R1 || R2 || ...` iff:\n// - Every simple range `r1, r2, ...` is a null set, OR\n// - Every simple range `r1, r2, ...` which is not a null set is a subset of\n// some `R1, R2, ...`\n//\n// Simple range `c1 c2 ...` is a subset of simple range `C1 C2 ...` iff:\n// - If c is only the ANY comparator\n// - If C is only the ANY comparator, return true\n// - Else if in prerelease mode, return false\n// - else replace c with `[>=0.0.0]`\n// - If C is only the ANY comparator\n// - if in prerelease mode, return true\n// - else replace C with `[>=0.0.0]`\n// - Let EQ be the set of = comparators in c\n// - If EQ is more than one, return true (null set)\n// - Let GT be the highest > or >= comparator in c\n// - Let LT be the lowest < or <= comparator in c\n// - If GT and LT, and GT.semver > LT.semver, return true (null set)\n// - If any C is a = range, and GT or LT are set, return false\n// - If EQ\n// - If GT, and EQ does not satisfy GT, return true (null set)\n// - If LT, and EQ does not satisfy LT, return true (null set)\n// - If EQ satisfies every C, return true\n// - Else return false\n// - If GT\n// - If GT.semver is lower than any > or >= comp in C, return false\n// - If GT is >=, and GT.semver does not satisfy every C, return false\n// - If GT.semver has a prerelease, and not in prerelease mode\n// - If no C has a prerelease and the GT.semver tuple, return false\n// - If LT\n// - If LT.semver is greater than any < or <= comp in C, return false\n// - If LT is <=, and LT.semver does not satisfy every C, return false\n// - If GT.semver has a prerelease, and not in prerelease mode\n// - If no C has a prerelease and the LT.semver tuple, return false\n// - Else return true\n\nconst subset = (sub, dom, options = {}) => {\n if (sub === dom) {\n return true\n }\n\n sub = new Range(sub, options)\n dom = new Range(dom, options)\n let sawNonNull = false\n\n OUTER: for (const simpleSub of sub.set) {\n for (const simpleDom of dom.set) {\n const isSub = simpleSubset(simpleSub, simpleDom, options)\n sawNonNull = sawNonNull || isSub !== null\n if (isSub) {\n continue OUTER\n }\n }\n // the null set is a subset of everything, but null simple ranges in\n // a complex range should be ignored. so if we saw a non-null range,\n // then we know this isn't a subset, but if EVERY simple range was null,\n // then it is a subset.\n if (sawNonNull) {\n return false\n }\n }\n return true\n}\n\nconst simpleSubset = (sub, dom, options) => {\n if (sub === dom) {\n return true\n }\n\n if (sub.length === 1 && sub[0].semver === ANY) {\n if (dom.length === 1 && dom[0].semver === ANY) {\n return true\n } else if (options.includePrerelease) {\n sub = [new Comparator('>=0.0.0-0')]\n } else {\n sub = [new Comparator('>=0.0.0')]\n }\n }\n\n if (dom.length === 1 && dom[0].semver === ANY) {\n if (options.includePrerelease) {\n return true\n } else {\n dom = [new Comparator('>=0.0.0')]\n }\n }\n\n const eqSet = new Set()\n let gt, lt\n for (const c of sub) {\n if (c.operator === '>' || c.operator === '>=') {\n gt = higherGT(gt, c, options)\n } else if (c.operator === '<' || c.operator === '<=') {\n lt = lowerLT(lt, c, options)\n } else {\n eqSet.add(c.semver)\n }\n }\n\n if (eqSet.size > 1) {\n return null\n }\n\n let gtltComp\n if (gt && lt) {\n gtltComp = compare(gt.semver, lt.semver, options)\n if (gtltComp > 0) {\n return null\n } else if (gtltComp === 0 && (gt.operator !== '>=' || lt.operator !== '<=')) {\n return null\n }\n }\n\n // will iterate one or zero times\n for (const eq of eqSet) {\n if (gt && !satisfies(eq, String(gt), options)) {\n return null\n }\n\n if (lt && !satisfies(eq, String(lt), options)) {\n return null\n }\n\n for (const c of dom) {\n if (!satisfies(eq, String(c), options)) {\n return false\n }\n }\n\n return true\n }\n\n let higher, lower\n let hasDomLT, hasDomGT\n // if the subset has a prerelease, we need a comparator in the superset\n // with the same tuple and a prerelease, or it's not a subset\n let needDomLTPre = lt &&\n !options.includePrerelease &&\n lt.semver.prerelease.length ? lt.semver : false\n let needDomGTPre = gt &&\n !options.includePrerelease &&\n gt.semver.prerelease.length ? gt.semver : false\n // exception: <1.2.3-0 is the same as <1.2.3\n if (needDomLTPre && needDomLTPre.prerelease.length === 1 &&\n lt.operator === '<' && needDomLTPre.prerelease[0] === 0) {\n needDomLTPre = false\n }\n\n for (const c of dom) {\n hasDomGT = hasDomGT || c.operator === '>' || c.operator === '>='\n hasDomLT = hasDomLT || c.operator === '<' || c.operator === '<='\n if (gt) {\n if (needDomGTPre) {\n if (c.semver.prerelease && c.semver.prerelease.length &&\n c.semver.major === needDomGTPre.major &&\n c.semver.minor === needDomGTPre.minor &&\n c.semver.patch === needDomGTPre.patch) {\n needDomGTPre = false\n }\n }\n if (c.operator === '>' || c.operator === '>=') {\n higher = higherGT(gt, c, options)\n if (higher === c && higher !== gt) {\n return false\n }\n } else if (gt.operator === '>=' && !satisfies(gt.semver, String(c), options)) {\n return false\n }\n }\n if (lt) {\n if (needDomLTPre) {\n if (c.semver.prerelease && c.semver.prerelease.length &&\n c.semver.major === needDomLTPre.major &&\n c.semver.minor === needDomLTPre.minor &&\n c.semver.patch === needDomLTPre.patch) {\n needDomLTPre = false\n }\n }\n if (c.operator === '<' || c.operator === '<=') {\n lower = lowerLT(lt, c, options)\n if (lower === c && lower !== lt) {\n return false\n }\n } else if (lt.operator === '<=' && !satisfies(lt.semver, String(c), options)) {\n return false\n }\n }\n if (!c.operator && (lt || gt) && gtltComp !== 0) {\n return false\n }\n }\n\n // if there was a < or >, and nothing in the dom, then must be false\n // UNLESS it was limited by another range in the other direction.\n // Eg, >1.0.0 <1.0.1 is still a subset of <2.0.0\n if (gt && hasDomLT && !lt && gtltComp !== 0) {\n return false\n }\n\n if (lt && hasDomGT && !gt && gtltComp !== 0) {\n return false\n }\n\n // we needed a prerelease range in a specific tuple, but didn't get one\n // then this isn't a subset. eg >=1.2.3-pre is not a subset of >=1.0.0,\n // because it includes prereleases in the 1.2.3 tuple\n if (needDomGTPre || needDomLTPre) {\n return false\n }\n\n return true\n}\n\n// >=1.2.3 is lower than >1.2.3\nconst higherGT = (a, b, options) => {\n if (!a) {\n return b\n }\n const comp = compare(a.semver, b.semver, options)\n return comp > 0 ? a\n : comp < 0 ? b\n : b.operator === '>' && a.operator === '>=' ? b\n : a\n}\n\n// <=1.2.3 is higher than <1.2.3\nconst lowerLT = (a, b, options) => {\n if (!a) {\n return b\n }\n const comp = compare(a.semver, b.semver, options)\n return comp < 0 ? a\n : comp > 0 ? b\n : b.operator === '<' && a.operator === '<=' ? b\n : a\n}\n\nmodule.exports = subset\n", "// just pre-load all the stuff that index.js lazily exports\nconst internalRe = require('./internal/re')\nconst constants = require('./internal/constants')\nconst SemVer = require('./classes/semver')\nconst identifiers = require('./internal/identifiers')\nconst parse = require('./functions/parse')\nconst valid = require('./functions/valid')\nconst clean = require('./functions/clean')\nconst inc = require('./functions/inc')\nconst diff = require('./functions/diff')\nconst major = require('./functions/major')\nconst minor = require('./functions/minor')\nconst patch = require('./functions/patch')\nconst prerelease = require('./functions/prerelease')\nconst compare = require('./functions/compare')\nconst rcompare = require('./functions/rcompare')\nconst compareLoose = require('./functions/compare-loose')\nconst compareBuild = require('./functions/compare-build')\nconst sort = require('./functions/sort')\nconst rsort = require('./functions/rsort')\nconst gt = require('./functions/gt')\nconst lt = require('./functions/lt')\nconst eq = require('./functions/eq')\nconst neq = require('./functions/neq')\nconst gte = require('./functions/gte')\nconst lte = require('./functions/lte')\nconst cmp = require('./functions/cmp')\nconst coerce = require('./functions/coerce')\nconst Comparator = require('./classes/comparator')\nconst Range = require('./classes/range')\nconst satisfies = require('./functions/satisfies')\nconst toComparators = require('./ranges/to-comparators')\nconst maxSatisfying = require('./ranges/max-satisfying')\nconst minSatisfying = require('./ranges/min-satisfying')\nconst minVersion = require('./ranges/min-version')\nconst validRange = require('./ranges/valid')\nconst outside = require('./ranges/outside')\nconst gtr = require('./ranges/gtr')\nconst ltr = require('./ranges/ltr')\nconst intersects = require('./ranges/intersects')\nconst simplifyRange = require('./ranges/simplify')\nconst subset = require('./ranges/subset')\nmodule.exports = {\n parse,\n valid,\n clean,\n inc,\n diff,\n major,\n minor,\n patch,\n prerelease,\n compare,\n rcompare,\n compareLoose,\n compareBuild,\n sort,\n rsort,\n gt,\n lt,\n eq,\n neq,\n gte,\n lte,\n cmp,\n coerce,\n Comparator,\n Range,\n satisfies,\n toComparators,\n maxSatisfying,\n minSatisfying,\n minVersion,\n validRange,\n outside,\n gtr,\n ltr,\n intersects,\n simplifyRange,\n subset,\n SemVer,\n re: internalRe.re,\n src: internalRe.src,\n tokens: internalRe.t,\n SEMVER_SPEC_VERSION: constants.SEMVER_SPEC_VERSION,\n compareIdentifiers: identifiers.compareIdentifiers,\n rcompareIdentifiers: identifiers.rcompareIdentifiers,\n}\n", "/* eslint-disable no-continue */\n/* eslint-disable no-unused-vars */\n/* eslint-disable no-param-reassign */\n/* eslint-disable no-prototype-builtins */\n\nconst errorClasses = {};\nconst deserializers = {};\n\nexport const addCustomErrorDeserializer = (\n name: string,\n deserializer: (obj: any) => any\n): void => {\n deserializers[name] = deserializer;\n};\n\nexport interface LedgerErrorConstructor\n extends ErrorConstructor {\n new (message?: string, fields?: F, options?: any): Error;\n (message?: string, fields?: F, options?: any): Error;\n readonly prototype: Error;\n}\n\nexport const createCustomErrorClass = <\n F extends { [key: string]: unknown },\n T extends LedgerErrorConstructor\n>(\n name: string\n): T => {\n class CustomErrorClass extends Error {\n cause?: Error;\n constructor(message?: string, fields?: F, options?: any) {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n super(message || name, options);\n // Set the prototype explicitly. See https://github.com/Microsoft/TypeScript/wiki/Breaking-Changes#extending-built-ins-like-error-array-and-map-may-no-longer-work\n Object.setPrototypeOf(this, CustomErrorClass.prototype);\n this.name = name;\n if (fields) {\n for (const k in fields) {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n this[k] = fields[k];\n }\n }\n if (\n options &&\n isObject(options) &&\n \"cause\" in options &&\n !(\"cause\" in this)\n ) {\n // .cause was specified but the superconstructor\n // did not create an instance property.\n const cause = options.cause;\n this.cause = cause;\n if (\"stack\" in cause) {\n this.stack = this.stack + \"\\nCAUSE: \" + cause.stack;\n }\n }\n }\n }\n\n errorClasses[name] = CustomErrorClass;\n\n return CustomErrorClass as unknown as T;\n};\n\nfunction isObject(value) {\n return typeof value === \"object\";\n}\n\n// inspired from https://github.com/programble/errio/blob/master/index.js\nexport const deserializeError = (object: any): Error | undefined => {\n if (object && typeof object === \"object\") {\n try {\n if (typeof object.message === \"string\") {\n const msg = JSON.parse(object.message);\n if (msg.message && msg.name) {\n object = msg;\n }\n }\n } catch (e) {\n // nothing\n }\n\n let error;\n if (typeof object.name === \"string\") {\n const { name } = object;\n const des = deserializers[name];\n if (des) {\n error = des(object);\n } else {\n let constructor = name === \"Error\" ? Error : errorClasses[name];\n\n if (!constructor) {\n console.warn(\"deserializing an unknown class '\" + name + \"'\");\n constructor = createCustomErrorClass(name);\n }\n\n error = Object.create(constructor.prototype);\n try {\n for (const prop in object) {\n if (object.hasOwnProperty(prop)) {\n error[prop] = object[prop];\n }\n }\n } catch (e) {\n // sometimes setting a property can fail (e.g. .name)\n }\n }\n } else {\n if (typeof object.message === \"string\") {\n error = new Error(object.message);\n }\n }\n\n if (error && !error.stack && Error.captureStackTrace) {\n Error.captureStackTrace(error, deserializeError);\n }\n return error;\n }\n return new Error(String(object));\n};\n\n// inspired from https://github.com/sindresorhus/serialize-error/blob/master/index.js\nexport const serializeError = (\n value: undefined | To | string | (() => unknown)\n): undefined | To | string => {\n if (!value) return value;\n if (typeof value === \"object\") {\n return destroyCircular(value, []);\n }\n if (typeof value === \"function\") {\n return `[Function: ${value.name || \"anonymous\"}]`;\n }\n return value;\n};\n\ninterface To {\n name?: string;\n message?: string;\n stack?: string;\n}\n\n// https://www.npmjs.com/package/destroy-circular\nfunction destroyCircular(from: To, seen: Array): To {\n const to: To = {};\n seen.push(from);\n for (const key of Object.keys(from)) {\n const value = from[key];\n if (typeof value === \"function\") {\n continue;\n }\n if (!value || typeof value !== \"object\") {\n to[key] = value;\n continue;\n }\n if (seen.indexOf(from[key]) === -1) {\n to[key] = destroyCircular(from[key], seen.slice(0));\n continue;\n }\n to[key] = \"[Circular]\";\n }\n if (typeof from.name === \"string\") {\n to.name = from.name;\n }\n if (typeof from.message === \"string\") {\n to.message = from.message;\n }\n if (typeof from.stack === \"string\") {\n to.stack = from.stack;\n }\n return to;\n}\n", "import {\n serializeError,\n deserializeError,\n createCustomErrorClass,\n addCustomErrorDeserializer,\n LedgerErrorConstructor,\n} from \"./helpers\";\n\nexport {\n serializeError,\n deserializeError,\n createCustomErrorClass,\n addCustomErrorDeserializer,\n};\n\nexport const AccountNameRequiredError = createCustomErrorClass(\n \"AccountNameRequired\"\n);\nexport const AccountNotSupported = createCustomErrorClass(\n \"AccountNotSupported\"\n);\nexport const AmountRequired = createCustomErrorClass(\"AmountRequired\");\nexport const BluetoothRequired = createCustomErrorClass(\"BluetoothRequired\");\nexport const BtcUnmatchedApp = createCustomErrorClass(\"BtcUnmatchedApp\");\nexport const CantOpenDevice = createCustomErrorClass(\"CantOpenDevice\");\nexport const CashAddrNotSupported = createCustomErrorClass(\n \"CashAddrNotSupported\"\n);\nexport const CurrencyNotSupported = createCustomErrorClass<\n { currencyName: string },\n LedgerErrorConstructor<{ currencyName: string }>\n>(\"CurrencyNotSupported\");\nexport const DeviceAppVerifyNotSupported = createCustomErrorClass(\n \"DeviceAppVerifyNotSupported\"\n);\nexport const DeviceGenuineSocketEarlyClose = createCustomErrorClass(\n \"DeviceGenuineSocketEarlyClose\"\n);\nexport const DeviceNotGenuineError = createCustomErrorClass(\"DeviceNotGenuine\");\nexport const DeviceOnDashboardExpected = createCustomErrorClass(\n \"DeviceOnDashboardExpected\"\n);\nexport const DeviceOnDashboardUnexpected = createCustomErrorClass(\n \"DeviceOnDashboardUnexpected\"\n);\nexport const DeviceInOSUExpected = createCustomErrorClass(\n \"DeviceInOSUExpected\"\n);\nexport const DeviceHalted = createCustomErrorClass(\"DeviceHalted\");\nexport const DeviceNameInvalid = createCustomErrorClass(\"DeviceNameInvalid\");\nexport const DeviceSocketFail = createCustomErrorClass(\"DeviceSocketFail\");\nexport const DeviceSocketNoBulkStatus = createCustomErrorClass(\n \"DeviceSocketNoBulkStatus\"\n);\nexport const LockedDeviceError = createCustomErrorClass(\"LockedDeviceError\");\nexport const DisconnectedDevice = createCustomErrorClass(\"DisconnectedDevice\");\nexport const DisconnectedDeviceDuringOperation = createCustomErrorClass(\n \"DisconnectedDeviceDuringOperation\"\n);\nexport const DeviceExtractOnboardingStateError = createCustomErrorClass(\n \"DeviceExtractOnboardingStateError\"\n);\nexport const DeviceOnboardingStatePollingError = createCustomErrorClass(\n \"DeviceOnboardingStatePollingError\"\n);\nexport const EnpointConfigError = createCustomErrorClass(\"EnpointConfig\");\nexport const EthAppPleaseEnableContractData = createCustomErrorClass(\n \"EthAppPleaseEnableContractData\"\n);\nexport const FeeEstimationFailed = createCustomErrorClass(\n \"FeeEstimationFailed\"\n);\nexport const FirmwareNotRecognized = createCustomErrorClass(\n \"FirmwareNotRecognized\"\n);\nexport const HardResetFail = createCustomErrorClass(\"HardResetFail\");\nexport const InvalidXRPTag = createCustomErrorClass(\"InvalidXRPTag\");\nexport const InvalidAddress = createCustomErrorClass(\"InvalidAddress\");\nexport const InvalidAddressBecauseDestinationIsAlsoSource =\n createCustomErrorClass(\"InvalidAddressBecauseDestinationIsAlsoSource\");\nexport const LatestMCUInstalledError = createCustomErrorClass(\n \"LatestMCUInstalledError\"\n);\nexport const UnknownMCU = createCustomErrorClass(\"UnknownMCU\");\nexport const LedgerAPIError = createCustomErrorClass(\"LedgerAPIError\");\nexport const LedgerAPIErrorWithMessage = createCustomErrorClass(\n \"LedgerAPIErrorWithMessage\"\n);\nexport const LedgerAPINotAvailable = createCustomErrorClass(\n \"LedgerAPINotAvailable\"\n);\nexport const ManagerAppAlreadyInstalledError = createCustomErrorClass(\n \"ManagerAppAlreadyInstalled\"\n);\nexport const ManagerAppRelyOnBTCError = createCustomErrorClass(\n \"ManagerAppRelyOnBTC\"\n);\nexport const ManagerAppDepInstallRequired = createCustomErrorClass(\n \"ManagerAppDepInstallRequired\"\n);\nexport const ManagerAppDepUninstallRequired = createCustomErrorClass(\n \"ManagerAppDepUninstallRequired\"\n);\nexport const ManagerDeviceLockedError = createCustomErrorClass(\n \"ManagerDeviceLocked\"\n);\nexport const ManagerFirmwareNotEnoughSpaceError = createCustomErrorClass(\n \"ManagerFirmwareNotEnoughSpace\"\n);\nexport const ManagerNotEnoughSpaceError = createCustomErrorClass(\n \"ManagerNotEnoughSpace\"\n);\nexport const ManagerUninstallBTCDep = createCustomErrorClass(\n \"ManagerUninstallBTCDep\"\n);\nexport const NetworkDown = createCustomErrorClass(\"NetworkDown\");\nexport const NoAddressesFound = createCustomErrorClass(\"NoAddressesFound\");\nexport const NotEnoughBalance = createCustomErrorClass(\"NotEnoughBalance\");\nexport const NotEnoughBalanceToDelegate = createCustomErrorClass(\n \"NotEnoughBalanceToDelegate\"\n);\nexport const NotEnoughBalanceInParentAccount = createCustomErrorClass(\n \"NotEnoughBalanceInParentAccount\"\n);\nexport const NotEnoughSpendableBalance = createCustomErrorClass(\n \"NotEnoughSpendableBalance\"\n);\nexport const NotEnoughBalanceBecauseDestinationNotCreated =\n createCustomErrorClass(\"NotEnoughBalanceBecauseDestinationNotCreated\");\nexport const NoAccessToCamera = createCustomErrorClass(\"NoAccessToCamera\");\nexport const NotEnoughGas = createCustomErrorClass(\"NotEnoughGas\");\nexport const NotSupportedLegacyAddress = createCustomErrorClass(\n \"NotSupportedLegacyAddress\"\n);\nexport const GasLessThanEstimate = createCustomErrorClass(\n \"GasLessThanEstimate\"\n);\nexport const PriorityFeeTooLow = createCustomErrorClass(\"PriorityFeeTooLow\");\nexport const PriorityFeeTooHigh = createCustomErrorClass(\"PriorityFeeTooHigh\");\nexport const PriorityFeeHigherThanMaxFee = createCustomErrorClass(\n \"PriorityFeeHigherThanMaxFee\"\n);\nexport const MaxFeeTooLow = createCustomErrorClass(\"MaxFeeTooLow\");\nexport const PasswordsDontMatchError =\n createCustomErrorClass(\"PasswordsDontMatch\");\nexport const PasswordIncorrectError =\n createCustomErrorClass(\"PasswordIncorrect\");\nexport const RecommendSubAccountsToEmpty = createCustomErrorClass(\n \"RecommendSubAccountsToEmpty\"\n);\nexport const RecommendUndelegation = createCustomErrorClass(\n \"RecommendUndelegation\"\n);\nexport const TimeoutTagged = createCustomErrorClass(\"TimeoutTagged\");\nexport const UnexpectedBootloader = createCustomErrorClass(\n \"UnexpectedBootloader\"\n);\nexport const MCUNotGenuineToDashboard = createCustomErrorClass(\n \"MCUNotGenuineToDashboard\"\n);\nexport const RecipientRequired = createCustomErrorClass(\"RecipientRequired\");\nexport const UnavailableTezosOriginatedAccountReceive = createCustomErrorClass(\n \"UnavailableTezosOriginatedAccountReceive\"\n);\nexport const UnavailableTezosOriginatedAccountSend = createCustomErrorClass(\n \"UnavailableTezosOriginatedAccountSend\"\n);\nexport const UpdateFetchFileFail = createCustomErrorClass(\n \"UpdateFetchFileFail\"\n);\nexport const UpdateIncorrectHash = createCustomErrorClass(\n \"UpdateIncorrectHash\"\n);\nexport const UpdateIncorrectSig = createCustomErrorClass(\"UpdateIncorrectSig\");\nexport const UpdateYourApp = createCustomErrorClass(\"UpdateYourApp\");\nexport const UserRefusedDeviceNameChange = createCustomErrorClass(\n \"UserRefusedDeviceNameChange\"\n);\nexport const UserRefusedAddress = createCustomErrorClass(\"UserRefusedAddress\");\nexport const UserRefusedFirmwareUpdate = createCustomErrorClass(\n \"UserRefusedFirmwareUpdate\"\n);\nexport const UserRefusedAllowManager = createCustomErrorClass(\n \"UserRefusedAllowManager\"\n);\nexport const UserRefusedOnDevice = createCustomErrorClass(\n \"UserRefusedOnDevice\"\n); // TODO rename because it's just for transaction refusal\nexport const TransportOpenUserCancelled = createCustomErrorClass(\n \"TransportOpenUserCancelled\"\n);\nexport const TransportInterfaceNotAvailable = createCustomErrorClass(\n \"TransportInterfaceNotAvailable\"\n);\nexport const TransportRaceCondition = createCustomErrorClass(\n \"TransportRaceCondition\"\n);\nexport const TransportWebUSBGestureRequired = createCustomErrorClass(\n \"TransportWebUSBGestureRequired\"\n);\nexport const DeviceShouldStayInApp = createCustomErrorClass(\n \"DeviceShouldStayInApp\"\n);\nexport const WebsocketConnectionError = createCustomErrorClass(\n \"WebsocketConnectionError\"\n);\nexport const WebsocketConnectionFailed = createCustomErrorClass(\n \"WebsocketConnectionFailed\"\n);\nexport const WrongDeviceForAccount = createCustomErrorClass(\n \"WrongDeviceForAccount\"\n);\nexport const WrongAppForCurrency = createCustomErrorClass(\n \"WrongAppForCurrency\"\n);\nexport const ETHAddressNonEIP = createCustomErrorClass(\"ETHAddressNonEIP\");\nexport const CantScanQRCode = createCustomErrorClass(\"CantScanQRCode\");\nexport const FeeNotLoaded = createCustomErrorClass(\"FeeNotLoaded\");\nexport const FeeRequired = createCustomErrorClass(\"FeeRequired\");\nexport const FeeTooHigh = createCustomErrorClass(\"FeeTooHigh\");\nexport const DustLimit = createCustomErrorClass(\"DustLimit\");\nexport const PendingOperation = createCustomErrorClass(\"PendingOperation\");\nexport const SyncError = createCustomErrorClass(\"SyncError\");\nexport const PairingFailed = createCustomErrorClass(\"PairingFailed\");\nexport const GenuineCheckFailed = createCustomErrorClass(\"GenuineCheckFailed\");\nexport const LedgerAPI4xx = createCustomErrorClass(\"LedgerAPI4xx\");\nexport const LedgerAPI5xx = createCustomErrorClass(\"LedgerAPI5xx\");\nexport const FirmwareOrAppUpdateRequired = createCustomErrorClass(\n \"FirmwareOrAppUpdateRequired\"\n);\n\nexport const LanguageNotFound = createCustomErrorClass(\"LanguageNotFound\");\n\n// db stuff, no need to translate\nexport const NoDBPathGiven = createCustomErrorClass(\"NoDBPathGiven\");\nexport const DBWrongPassword = createCustomErrorClass(\"DBWrongPassword\");\nexport const DBNotReset = createCustomErrorClass(\"DBNotReset\");\n\n/**\n * Type of a Transport error used to represent all equivalent errors coming from all possible implementation of Transport\n */\nexport enum HwTransportErrorType {\n Unknown = 0,\n BleLocationServicesDisabled = 1,\n BleBluetoothUnauthorized = 2,\n BleScanStartFailed = 3,\n}\n\n/**\n * Represents an error coming from any Transport implementation.\n *\n * Needed to map a specific implementation error into an error that\n * can be managed by any code unaware of the specific Transport implementation\n * that was used.\n */\nexport class HwTransportError extends Error {\n type: HwTransportErrorType;\n\n constructor(type: HwTransportErrorType, message: string) {\n super(message);\n this.name = \"HwTransportError\";\n this.type = type;\n\n // Needed as long as we target < ES6\n Object.setPrototypeOf(this, HwTransportError.prototype);\n }\n}\n\n/**\n * TransportError is used for any generic transport errors.\n * e.g. Error thrown when data received by exchanges are incorrect or if exchanged failed to communicate with the device for various reason.\n */\nexport class TransportError extends Error {\n id: string;\n constructor(message: string, id: string) {\n const name = \"TransportError\";\n super(message || name);\n this.name = name;\n this.message = message;\n this.stack = new Error().stack;\n this.id = id;\n }\n}\n\naddCustomErrorDeserializer(\n \"TransportError\",\n (e) => new TransportError(e.message, e.id)\n);\n\nexport const StatusCodes = {\n ACCESS_CONDITION_NOT_FULFILLED: 0x9804,\n ALGORITHM_NOT_SUPPORTED: 0x9484,\n CLA_NOT_SUPPORTED: 0x6e00,\n CODE_BLOCKED: 0x9840,\n CODE_NOT_INITIALIZED: 0x9802,\n COMMAND_INCOMPATIBLE_FILE_STRUCTURE: 0x6981,\n CONDITIONS_OF_USE_NOT_SATISFIED: 0x6985,\n CONTRADICTION_INVALIDATION: 0x9810,\n CONTRADICTION_SECRET_CODE_STATUS: 0x9808,\n CUSTOM_IMAGE_BOOTLOADER: 0x662f,\n CUSTOM_IMAGE_EMPTY: 0x662e,\n FILE_ALREADY_EXISTS: 0x6a89,\n FILE_NOT_FOUND: 0x9404,\n GP_AUTH_FAILED: 0x6300,\n HALTED: 0x6faa,\n INCONSISTENT_FILE: 0x9408,\n INCORRECT_DATA: 0x6a80,\n INCORRECT_LENGTH: 0x6700,\n INCORRECT_P1_P2: 0x6b00,\n INS_NOT_SUPPORTED: 0x6d00,\n INVALID_KCV: 0x9485,\n INVALID_OFFSET: 0x9402,\n LICENSING: 0x6f42,\n LOCKED_DEVICE: 0x5515,\n MAX_VALUE_REACHED: 0x9850,\n MEMORY_PROBLEM: 0x9240,\n MISSING_CRITICAL_PARAMETER: 0x6800,\n NO_EF_SELECTED: 0x9400,\n NOT_ENOUGH_MEMORY_SPACE: 0x6a84,\n OK: 0x9000,\n PIN_REMAINING_ATTEMPTS: 0x63c0,\n REFERENCED_DATA_NOT_FOUND: 0x6a88,\n SECURITY_STATUS_NOT_SATISFIED: 0x6982,\n TECHNICAL_PROBLEM: 0x6f00,\n UNKNOWN_APDU: 0x6d02,\n USER_REFUSED_ON_DEVICE: 0x5501,\n};\n\nexport function getAltStatusMessage(code: number): string | undefined | null {\n switch (code) {\n // improve text of most common errors\n case 0x6700:\n return \"Incorrect length\";\n case 0x6800:\n return \"Missing critical parameter\";\n case 0x6982:\n return \"Security not satisfied (dongle locked or have invalid access rights)\";\n case 0x6985:\n return \"Condition of use not satisfied (denied by the user?)\";\n case 0x6a80:\n return \"Invalid data received\";\n case 0x6b00:\n return \"Invalid parameter received\";\n case 0x5515:\n return \"Locked device\";\n }\n if (0x6f00 <= code && code <= 0x6fff) {\n return \"Internal error, please report\";\n }\n}\n\n/**\n * Error thrown when a device returned a non success status.\n * the error.statusCode is one of the `StatusCodes` exported by this library.\n */\nexport function TransportStatusError(statusCode: number): void {\n const statusText =\n Object.keys(StatusCodes).find((k) => StatusCodes[k] === statusCode) ||\n \"UNKNOWN_ERROR\";\n const smsg = getAltStatusMessage(statusCode) || statusText;\n const statusCodeStr = statusCode.toString(16);\n const message = `Ledger device: ${smsg} (0x${statusCodeStr})`;\n\n // Maps to a LockedDeviceError\n if (statusCode === StatusCodes.LOCKED_DEVICE) {\n throw new LockedDeviceError(message);\n }\n\n this.name = \"TransportStatusError\";\n this.message = message;\n this.stack = new Error().stack;\n this.statusCode = statusCode;\n this.statusText = statusText;\n}\nTransportStatusError.prototype = new Error();\n\naddCustomErrorDeserializer(\n \"TransportStatusError\",\n (e) => new TransportStatusError(e.statusCode)\n);\n", "import EventEmitter from \"events\";\nimport type { DeviceModel } from \"@ledgerhq/devices\";\nimport {\n TransportRaceCondition,\n TransportError,\n StatusCodes,\n getAltStatusMessage,\n TransportStatusError,\n} from \"@ledgerhq/errors\";\nexport {\n TransportError,\n TransportStatusError,\n StatusCodes,\n getAltStatusMessage,\n};\n\n/**\n */\nexport type Subscription = {\n unsubscribe: () => void;\n};\n\n/**\n */\nexport type Device = any; // Should be a union type of all possible Device object's shape\n\nexport type DescriptorEventType = \"add\" | \"remove\";\n/**\n * A \"descriptor\" is a parameter that is specific to the implementation, and can be an ID, file path, or URL.\n * type: add or remove event\n * descriptor: a parameter that can be passed to open(descriptor)\n * deviceModel: device info on the model (is it a nano s, nano x, ...)\n * device: transport specific device info\n */\nexport interface DescriptorEvent {\n type: DescriptorEventType;\n descriptor: Descriptor;\n deviceModel?: DeviceModel | null | undefined;\n device?: Device;\n}\n\n/**\n * Observer generic type, following the Observer pattern\n */\nexport type Observer = Readonly<{\n next: (event: EventType) => unknown;\n error: (e: EventError) => unknown;\n complete: () => unknown;\n}>;\n\n/**\n * The Transport class defines a generic interface for communicating with a Ledger hardware wallet.\n * There are different kind of transports based on the technology (channels like U2F, HID, Bluetooth, Webusb) and environment (Node, Web,...).\n * It is an abstract class that needs to be implemented.\n */\nexport default class Transport {\n exchangeTimeout = 30000;\n unresponsiveTimeout = 15000;\n deviceModel: DeviceModel | null | undefined = null;\n\n /**\n * Check if the transport is supported on the current platform/browser.\n * @returns {Promise} A promise that resolves with a boolean indicating support.\n */\n static readonly isSupported: () => Promise;\n\n /**\n * List all available descriptors for the transport.\n * For a better granularity, checkout `listen()`.\n *\n * @returns {Promise>} A promise that resolves with an array of descriptors.\n * @example\n * TransportFoo.list().then(descriptors => ...)\n */\n static readonly list: () => Promise>;\n\n /**\n * Listen for device events for the transport. The method takes an observer of DescriptorEvent and returns a Subscription.\n * A DescriptorEvent is an object containing a \"descriptor\" and a \"type\" field. The \"type\" field can be \"add\" or \"remove\", and the \"descriptor\" field can be passed to the \"open\" method.\n * The \"listen\" method will first emit all currently connected devices and then will emit events as they occur, such as when a USB device is plugged in or a Bluetooth device becomes discoverable.\n * @param {Observer>} observer - An object with \"next\", \"error\", and \"complete\" functions, following the observer pattern.\n * @returns {Subscription} A Subscription object on which you can call \".unsubscribe()\" to stop listening to descriptors.\n * @example\n const sub = TransportFoo.listen({\n next: e => {\n if (e.type===\"add\") {\n sub.unsubscribe();\n const transport = await TransportFoo.open(e.descriptor);\n ...\n }\n },\n error: error => {},\n complete: () => {}\n })\n */\n static readonly listen: (\n observer: Observer>\n ) => Subscription;\n\n /**\n * Attempt to create a Transport instance with a specific descriptor.\n * @param {any} descriptor - The descriptor to open the transport with.\n * @param {number} timeout - An optional timeout for the transport connection.\n * @returns {Promise} A promise that resolves with a Transport instance.\n * @example\n TransportFoo.open(descriptor).then(transport => ...)\n */\n static readonly open: (\n descriptor?: any,\n timeout?: number\n ) => Promise;\n\n /**\n * Send data to the device using a low level API.\n * It's recommended to use the \"send\" method for a higher level API.\n * @param {Buffer} apdu - The data to send.\n * @returns {Promise} A promise that resolves with the response data from the device.\n */\n exchange(_apdu: Buffer): Promise {\n throw new Error(\"exchange not implemented\");\n }\n\n /**\n * Send apdus in batch to the device using a low level API.\n * The default implementation is to call exchange for each apdu.\n * @param {Array} apdus - array of apdus to send.\n * @param {Observer} observer - an observer that will receive the response of each apdu.\n * @returns {Subscription} A Subscription object on which you can call \".unsubscribe()\" to stop sending apdus.\n */\n exchangeBulk(apdus: Buffer[], observer: Observer): Subscription {\n let unsubscribed = false;\n const unsubscribe = () => {\n unsubscribed = true;\n };\n\n const main = async () => {\n if (unsubscribed) return;\n for (const apdu of apdus) {\n const r = await this.exchange(apdu);\n if (unsubscribed) return;\n const status = r.readUInt16BE(r.length - 2);\n if (status !== StatusCodes.OK) {\n throw new TransportStatusError(status);\n }\n observer.next(r);\n }\n };\n\n main().then(\n () => !unsubscribed && observer.complete(),\n (e) => !unsubscribed && observer.error(e)\n );\n\n return { unsubscribe };\n }\n\n /**\n * Set the \"scramble key\" for the next data exchanges with the device.\n * Each app can have a different scramble key and it is set internally during instantiation.\n * @param {string} key - The scramble key to set.\n * @deprecated This method is no longer needed for modern transports and should be migrated away from.\n */\n setScrambleKey(_key: string) {}\n\n /**\n * Close the connection with the device.\n * @returns {Promise} A promise that resolves when the transport is closed.\n */\n close(): Promise {\n return Promise.resolve();\n }\n\n _events = new EventEmitter();\n\n /**\n * Listen for an event on the transport instance.\n * Transport implementations may have specific events. Common events include:\n * \"disconnect\" : triggered when the transport is disconnected.\n * @param {string} eventName - The name of the event to listen for.\n * @param {(...args: Array) => any} cb - The callback function to be invoked when the event occurs.\n */\n on(eventName: string, cb: (...args: Array) => any): void {\n this._events.on(eventName, cb);\n }\n\n /**\n * Stop listening to an event on an instance of transport.\n */\n off(eventName: string, cb: (...args: Array) => any): void {\n this._events.removeListener(eventName, cb);\n }\n\n emit(event: string, ...args: any): void {\n this._events.emit(event, ...args);\n }\n\n /**\n * Enable or not logs of the binary exchange\n */\n setDebugMode() {\n console.warn(\n \"setDebugMode is deprecated. use @ledgerhq/logs instead. No logs are emitted in this anymore.\"\n );\n }\n\n /**\n * Set a timeout (in milliseconds) for the exchange call. Only some transport might implement it. (e.g. U2F)\n */\n setExchangeTimeout(exchangeTimeout: number): void {\n this.exchangeTimeout = exchangeTimeout;\n }\n\n /**\n * Define the delay before emitting \"unresponsive\" on an exchange that does not respond\n */\n setExchangeUnresponsiveTimeout(unresponsiveTimeout: number): void {\n this.unresponsiveTimeout = unresponsiveTimeout;\n }\n\n /**\n * Send data to the device using the higher level API.\n * @param {number} cla - The instruction class for the command.\n * @param {number} ins - The instruction code for the command.\n * @param {number} p1 - The first parameter for the instruction.\n * @param {number} p2 - The second parameter for the instruction.\n * @param {Buffer} data - The data to be sent. Defaults to an empty buffer.\n * @param {Array} statusList - A list of acceptable status codes for the response. Defaults to [StatusCodes.OK].\n * @returns {Promise} A promise that resolves with the response data from the device.\n */\n send = async (\n cla: number,\n ins: number,\n p1: number,\n p2: number,\n data: Buffer = Buffer.alloc(0),\n statusList: Array = [StatusCodes.OK]\n ): Promise => {\n if (data.length >= 256) {\n throw new TransportError(\n \"data.length exceed 256 bytes limit. Got: \" + data.length,\n \"DataLengthTooBig\"\n );\n }\n\n const response = await this.exchange(\n Buffer.concat([\n Buffer.from([cla, ins, p1, p2]),\n Buffer.from([data.length]),\n data,\n ])\n );\n const sw = response.readUInt16BE(response.length - 2);\n\n if (!statusList.some((s) => s === sw)) {\n throw new TransportStatusError(sw);\n }\n\n return response;\n };\n\n /**\n * create() allows to open the first descriptor available or\n * throw if there is none or if timeout is reached.\n * This is a light helper, alternative to using listen() and open() (that you may need for any more advanced usecase)\n * @example\n TransportFoo.create().then(transport => ...)\n */\n static create(\n openTimeout = 3000,\n listenTimeout?: number\n ): Promise {\n return new Promise((resolve, reject) => {\n let found = false;\n const sub = this.listen({\n next: (e) => {\n found = true;\n if (sub) sub.unsubscribe();\n if (listenTimeoutId) clearTimeout(listenTimeoutId);\n this.open(e.descriptor, openTimeout).then(resolve, reject);\n },\n error: (e) => {\n if (listenTimeoutId) clearTimeout(listenTimeoutId);\n reject(e);\n },\n complete: () => {\n if (listenTimeoutId) clearTimeout(listenTimeoutId);\n\n if (!found) {\n reject(\n new TransportError(\n this.ErrorMessage_NoDeviceFound,\n \"NoDeviceFound\"\n )\n );\n }\n },\n });\n const listenTimeoutId = listenTimeout\n ? setTimeout(() => {\n sub.unsubscribe();\n reject(\n new TransportError(\n this.ErrorMessage_ListenTimeout,\n \"ListenTimeout\"\n )\n );\n }, listenTimeout)\n : null;\n });\n }\n\n exchangeBusyPromise: Promise | null | undefined;\n exchangeAtomicImpl = async (\n f: () => Promise\n ): Promise => {\n if (this.exchangeBusyPromise) {\n throw new TransportRaceCondition(\n \"An action was already pending on the Ledger device. Please deny or reconnect.\"\n );\n }\n\n let resolveBusy;\n const busyPromise: Promise = new Promise((r) => {\n resolveBusy = r;\n });\n this.exchangeBusyPromise = busyPromise;\n let unresponsiveReached = false;\n const timeout = setTimeout(() => {\n unresponsiveReached = true;\n this.emit(\"unresponsive\");\n }, this.unresponsiveTimeout);\n\n try {\n const res = await f();\n\n if (unresponsiveReached) {\n this.emit(\"responsive\");\n }\n\n return res;\n } finally {\n clearTimeout(timeout);\n if (resolveBusy) resolveBusy();\n this.exchangeBusyPromise = null;\n }\n };\n\n decorateAppAPIMethods(\n self: Record,\n methods: Array,\n scrambleKey: string\n ) {\n for (const methodName of methods) {\n self[methodName] = this.decorateAppAPIMethod(\n methodName,\n self[methodName],\n self,\n scrambleKey\n );\n }\n }\n\n _appAPIlock: string | null = null;\n\n decorateAppAPIMethod(\n methodName: string,\n f: (...args: A) => Promise,\n ctx: any,\n scrambleKey: string\n ): (...args: A) => Promise {\n return async (...args) => {\n const { _appAPIlock } = this;\n\n if (_appAPIlock) {\n return Promise.reject(\n new TransportError(\n \"Ledger Device is busy (lock \" + _appAPIlock + \")\",\n \"TransportLocked\"\n )\n );\n }\n\n try {\n this._appAPIlock = methodName;\n this.setScrambleKey(scrambleKey);\n return await f.apply(ctx, args);\n } finally {\n this._appAPIlock = null;\n }\n };\n }\n\n static ErrorMessage_ListenTimeout = \"No Ledger device found (timeout)\";\n static ErrorMessage_NoDeviceFound = \"No Ledger device found\";\n}\n", "import { TransportError } from \"@ledgerhq/errors\";\nexport type ResponseAcc =\n | {\n data: Buffer;\n dataLength: number;\n sequence: number;\n }\n | null\n | undefined;\nconst Tag = 0x05;\n\nfunction asUInt16BE(value) {\n const b = Buffer.alloc(2);\n b.writeUInt16BE(value, 0);\n return b;\n}\n\nconst initialAcc = {\n data: Buffer.alloc(0),\n dataLength: 0,\n sequence: 0,\n};\n\n/**\n *\n */\nconst createHIDframing = (channel: number, packetSize: number) => {\n return {\n makeBlocks(apdu: Buffer): Buffer[] {\n let data = Buffer.concat([asUInt16BE(apdu.length), apdu]);\n const blockSize = packetSize - 5;\n const nbBlocks = Math.ceil(data.length / blockSize);\n data = Buffer.concat([\n data, // fill data with padding\n Buffer.alloc(nbBlocks * blockSize - data.length + 1).fill(0),\n ]);\n const blocks: Buffer[] = [];\n\n for (let i = 0; i < nbBlocks; i++) {\n const head = Buffer.alloc(5);\n head.writeUInt16BE(channel, 0);\n head.writeUInt8(Tag, 2);\n head.writeUInt16BE(i, 3);\n const chunk = data.slice(i * blockSize, (i + 1) * blockSize);\n blocks.push(Buffer.concat([head, chunk]));\n }\n\n return blocks;\n },\n\n reduceResponse(acc: ResponseAcc, chunk: Buffer): ResponseAcc {\n let { data, dataLength, sequence } = acc || initialAcc;\n\n if (chunk.readUInt16BE(0) !== channel) {\n throw new TransportError(\"Invalid channel\", \"InvalidChannel\");\n }\n\n if (chunk.readUInt8(2) !== Tag) {\n throw new TransportError(\"Invalid tag\", \"InvalidTag\");\n }\n\n if (chunk.readUInt16BE(3) !== sequence) {\n throw new TransportError(\"Invalid sequence\", \"InvalidSequence\");\n }\n\n if (!acc) {\n dataLength = chunk.readUInt16BE(5);\n }\n\n sequence++;\n const chunkData = chunk.slice(acc ? 5 : 7);\n data = Buffer.concat([data, chunkData]);\n\n if (data.length > dataLength) {\n data = data.slice(0, dataLength);\n }\n\n return {\n data,\n dataLength,\n sequence,\n };\n },\n\n getReducedResult(acc: ResponseAcc): Buffer | null | undefined {\n if (acc && acc.dataLength === acc.data.length) {\n return acc.data;\n }\n },\n };\n};\n\nexport default createHIDframing;\n", "import semver from \"semver\";\n\n/**\n * The USB product IDs will be defined as MMII, encoding a model (MM) and an interface bitfield (II)\n *\n ** Model\n * Ledger Nano S : 0x10\n * Ledger Blue : 0x00\n * Ledger Nano X : 0x40\n *\n ** Interface support bitfield\n * Generic HID : 0x01\n * Keyboard HID : 0x02\n * U2F : 0x04\n * CCID : 0x08\n * WebUSB : 0x10\n */\nexport const IIGenericHID = 0x01;\nexport const IIKeyboardHID = 0x02;\nexport const IIU2F = 0x04;\nexport const IICCID = 0x08;\nexport const IIWebUSB = 0x10;\n\nexport enum DeviceModelId {\n blue = \"blue\",\n nanoS = \"nanoS\",\n nanoSP = \"nanoSP\",\n nanoX = \"nanoX\",\n stax = \"stax\",\n}\n\nconst devices: { [key in DeviceModelId]: DeviceModel } = {\n [DeviceModelId.blue]: {\n id: DeviceModelId.blue,\n productName: \"Ledger\u00A0Blue\",\n productIdMM: 0x00,\n legacyUsbProductId: 0x0000,\n usbOnly: true,\n memorySize: 480 * 1024,\n masks: [0x31000000, 0x31010000],\n getBlockSize: (_firwareVersion: string): number => 4 * 1024,\n },\n [DeviceModelId.nanoS]: {\n id: DeviceModelId.nanoS,\n productName: \"Ledger\u00A0Nano\u00A0S\",\n productIdMM: 0x10,\n legacyUsbProductId: 0x0001,\n usbOnly: true,\n memorySize: 320 * 1024,\n masks: [0x31100000],\n getBlockSize: (firmwareVersion: string): number =>\n semver.lt(semver.coerce(firmwareVersion) ?? \"\", \"2.0.0\")\n ? 4 * 1024\n : 2 * 1024,\n },\n [DeviceModelId.nanoSP]: {\n id: DeviceModelId.nanoSP,\n productName: \"Ledger Nano S Plus\",\n productIdMM: 0x50,\n legacyUsbProductId: 0x0005,\n usbOnly: true,\n memorySize: 1536 * 1024,\n masks: [0x33100000],\n getBlockSize: (_firmwareVersion: string): number => 32,\n },\n [DeviceModelId.nanoX]: {\n id: DeviceModelId.nanoX,\n productName: \"Ledger\u00A0Nano\u00A0X\",\n productIdMM: 0x40,\n legacyUsbProductId: 0x0004,\n usbOnly: false,\n memorySize: 2 * 1024 * 1024,\n masks: [0x33000000],\n getBlockSize: (_firwareVersion: string): number => 4 * 1024,\n bluetoothSpec: [\n {\n serviceUuid: \"13d63400-2c97-0004-0000-4c6564676572\",\n notifyUuid: \"13d63400-2c97-0004-0001-4c6564676572\",\n writeUuid: \"13d63400-2c97-0004-0002-4c6564676572\",\n writeCmdUuid: \"13d63400-2c97-0004-0003-4c6564676572\",\n },\n ],\n },\n [DeviceModelId.stax]: {\n id: DeviceModelId.stax,\n productName: \"Ledger\u00A0Stax\",\n productIdMM: 0x60,\n legacyUsbProductId: 0x0006,\n usbOnly: false,\n memorySize: 1536 * 1024,\n masks: [0x33200000],\n getBlockSize: (_firmwareVersion: string): number => 32,\n bluetoothSpec: [\n {\n serviceUuid: \"13d63400-2c97-6004-0000-4c6564676572\",\n notifyUuid: \"13d63400-2c97-6004-0001-4c6564676572\",\n writeUuid: \"13d63400-2c97-6004-0002-4c6564676572\",\n writeCmdUuid: \"13d63400-2c97-6004-0003-4c6564676572\",\n },\n ],\n },\n};\n\nconst productMap = {\n Blue: DeviceModelId.blue,\n \"Nano S\": DeviceModelId.nanoS,\n \"Nano S Plus\": DeviceModelId.nanoSP,\n \"Nano X\": DeviceModelId.nanoX,\n Stax: DeviceModelId.stax,\n};\n\nconst devicesList: DeviceModel[] = Object.values(devices);\n\n/**\n *\n */\nexport const ledgerUSBVendorId = 0x2c97;\n\n/**\n *\n */\nexport const getDeviceModel = (id: DeviceModelId): DeviceModel => {\n const info = devices[id];\n if (!info) throw new Error(\"device '\" + id + \"' does not exist\");\n return info;\n};\n\n/**\n * Given a `targetId`, return the deviceModel associated to it,\n * based on the first two bytes.\n */\nexport const identifyTargetId = (\n targetId: number\n): DeviceModel | null | undefined => {\n const deviceModel = devicesList.find(({ masks }) =>\n masks.find((mask) => (targetId & 0xffff0000) === mask)\n );\n\n return deviceModel;\n};\n\n/**\n *\n */\nexport const identifyUSBProductId = (\n usbProductId: number\n): DeviceModel | null | undefined => {\n const legacy = devicesList.find((d) => d.legacyUsbProductId === usbProductId);\n if (legacy) return legacy;\n const mm = usbProductId >> 8;\n const deviceModel = devicesList.find((d) => d.productIdMM === mm);\n return deviceModel;\n};\n\nexport const identifyProductName = (\n productName: string\n): DeviceModel | null | undefined => {\n const deviceModel = devicesList.find((d) => d.id === productMap[productName]);\n return deviceModel;\n};\n\nconst bluetoothServices: string[] = [];\nconst serviceUuidToInfos: Record = {};\n\nfor (const id in devices) {\n const deviceModel = devices[id];\n const { bluetoothSpec } = deviceModel;\n if (bluetoothSpec) {\n for (let i = 0; i < bluetoothSpec.length; i++) {\n const spec = bluetoothSpec[i];\n bluetoothServices.push(spec.serviceUuid);\n serviceUuidToInfos[spec.serviceUuid] = serviceUuidToInfos[\n spec.serviceUuid.replace(/-/g, \"\")\n ] = {\n deviceModel,\n ...spec,\n };\n }\n }\n}\n\n/**\n *\n */\nexport const getBluetoothServiceUuids = (): string[] => bluetoothServices;\n\n/**\n *\n */\nexport const getInfosForServiceUuid = (\n uuid: string\n): BluetoothInfos | undefined => serviceUuidToInfos[uuid.toLowerCase()];\n\n/**\n *\n */\nexport interface DeviceModel {\n id: DeviceModelId;\n productName: string;\n productIdMM: number;\n legacyUsbProductId: number;\n usbOnly: boolean;\n memorySize: number;\n masks: number[];\n // blockSize: number, // THIS FIELD IS DEPRECATED, use getBlockSize\n getBlockSize: (firmwareVersion: string) => number;\n bluetoothSpec?: {\n serviceUuid: string;\n writeUuid: string;\n writeCmdUuid: string;\n notifyUuid: string;\n }[];\n}\n\n/**\n *\n */\nexport interface BluetoothInfos {\n deviceModel: DeviceModel;\n serviceUuid: string;\n writeUuid: string;\n writeCmdUuid: string;\n notifyUuid: string;\n}\n", "import { ledgerUSBVendorId } from \"@ledgerhq/devices\";\n\nconst ledgerDevices = [\n {\n vendorId: ledgerUSBVendorId,\n },\n];\n\nexport async function requestLedgerDevice(): Promise {\n const device = await navigator.usb.requestDevice({\n filters: ledgerDevices,\n });\n return device;\n}\n\nexport async function getLedgerDevices(): Promise {\n const devices = await navigator.usb.getDevices();\n return devices.filter((d) => d.vendorId === ledgerUSBVendorId);\n}\n\nexport async function getFirstLedgerDevice(): Promise {\n const existingDevices = await getLedgerDevices();\n if (existingDevices.length > 0) return existingDevices[0];\n return requestLedgerDevice();\n}\n\nexport const isSupported = (): Promise =>\n Promise.resolve(\n !!navigator &&\n !!navigator.usb &&\n typeof navigator.usb.getDevices === \"function\"\n );\n", "import Transport from \"@ledgerhq/hw-transport\";\nimport type {\n Observer,\n DescriptorEvent,\n Subscription,\n} from \"@ledgerhq/hw-transport\";\nimport hidFraming from \"@ledgerhq/devices/hid-framing\";\nimport { identifyUSBProductId } from \"@ledgerhq/devices\";\nimport type { DeviceModel } from \"@ledgerhq/devices\";\nimport { log } from \"@ledgerhq/logs\";\nimport {\n TransportOpenUserCancelled,\n TransportInterfaceNotAvailable,\n TransportWebUSBGestureRequired,\n DisconnectedDeviceDuringOperation,\n DisconnectedDevice,\n} from \"@ledgerhq/errors\";\nimport {\n getLedgerDevices,\n getFirstLedgerDevice,\n requestLedgerDevice,\n isSupported,\n} from \"./webusb\";\n\nconst configurationValue = 1;\nconst endpointNumber = 3;\n\n/**\n * WebUSB Transport implementation\n * @example\n * import TransportWebUSB from \"@ledgerhq/hw-transport-webusb\";\n * ...\n * TransportWebUSB.create().then(transport => ...)\n */\nexport default class TransportWebUSB extends Transport {\n device: USBDevice;\n deviceModel: DeviceModel | null | undefined;\n channel = Math.floor(Math.random() * 0xffff);\n packetSize = 64;\n interfaceNumber: number;\n\n constructor(device: USBDevice, interfaceNumber: number) {\n super();\n this.device = device;\n this.interfaceNumber = interfaceNumber;\n this.deviceModel = identifyUSBProductId(device.productId);\n }\n\n /**\n * Check if WebUSB transport is supported.\n */\n static isSupported = isSupported;\n\n /**\n * List the WebUSB devices that was previously authorized by the user.\n */\n static list = getLedgerDevices;\n\n /**\n * Actively listen to WebUSB devices and emit ONE device\n * that was either accepted before, if not it will trigger the native permission UI.\n *\n * Important: it must be called in the context of a UI click!\n */\n static listen = (\n observer: Observer>\n ): Subscription => {\n let unsubscribed = false;\n getFirstLedgerDevice().then(\n (device) => {\n if (!unsubscribed) {\n const deviceModel = identifyUSBProductId(device.productId);\n observer.next({\n type: \"add\",\n descriptor: device,\n deviceModel,\n });\n observer.complete();\n }\n },\n (error) => {\n if (\n window.DOMException &&\n error instanceof window.DOMException &&\n error.code === 18\n ) {\n observer.error(new TransportWebUSBGestureRequired(error.message));\n } else {\n observer.error(new TransportOpenUserCancelled(error.message));\n }\n }\n );\n\n function unsubscribe() {\n unsubscribed = true;\n }\n\n return {\n unsubscribe,\n };\n };\n\n /**\n * Similar to create() except it will always display the device permission (even if some devices are already accepted).\n */\n static async request() {\n const device = await requestLedgerDevice();\n return TransportWebUSB.open(device);\n }\n\n /**\n * Similar to create() except it will never display the device permission (it returns a Promise, null if it fails to find a device).\n */\n static async openConnected() {\n const devices = await getLedgerDevices();\n if (devices.length === 0) return null;\n return TransportWebUSB.open(devices[0]);\n }\n\n /**\n * Create a Ledger transport with a USBDevice\n */\n static async open(device: USBDevice) {\n await device.open();\n\n if (device.configuration === null) {\n await device.selectConfiguration(configurationValue);\n }\n\n await gracefullyResetDevice(device);\n const iface = device.configurations[0].interfaces.find(({ alternates }) =>\n alternates.some((a) => a.interfaceClass === 255)\n );\n\n if (!iface) {\n throw new TransportInterfaceNotAvailable(\n \"No WebUSB interface found for your Ledger device. Please upgrade firmware or contact techsupport.\"\n );\n }\n\n const interfaceNumber = iface.interfaceNumber;\n\n try {\n await device.claimInterface(interfaceNumber);\n } catch (e: any) {\n await device.close();\n throw new TransportInterfaceNotAvailable(e.message);\n }\n\n const transport = new TransportWebUSB(device, interfaceNumber);\n\n const onDisconnect = (e) => {\n if (device === e.device) {\n // $FlowFixMe\n navigator.usb.removeEventListener(\"disconnect\", onDisconnect);\n\n transport._emitDisconnect(new DisconnectedDevice());\n }\n };\n\n // $FlowFixMe\n navigator.usb.addEventListener(\"disconnect\", onDisconnect);\n return transport;\n }\n\n _disconnectEmitted = false;\n _emitDisconnect = (e: Error) => {\n if (this._disconnectEmitted) return;\n this._disconnectEmitted = true;\n this.emit(\"disconnect\", e);\n };\n\n /**\n * Release the transport device\n */\n async close(): Promise {\n await this.exchangeBusyPromise;\n await this.device.releaseInterface(this.interfaceNumber);\n await gracefullyResetDevice(this.device);\n await this.device.close();\n }\n\n /**\n * Exchange with the device using APDU protocol.\n * @param apdu\n * @returns a promise of apdu response\n */\n async exchange(apdu: Buffer): Promise {\n const b = await this.exchangeAtomicImpl(async () => {\n const { channel, packetSize } = this;\n log(\"apdu\", \"=> \" + apdu.toString(\"hex\"));\n const framing = hidFraming(channel, packetSize);\n // Write...\n const blocks = framing.makeBlocks(apdu);\n\n for (let i = 0; i < blocks.length; i++) {\n await this.device.transferOut(endpointNumber, blocks[i]);\n }\n\n // Read...\n let result;\n let acc;\n\n while (!(result = framing.getReducedResult(acc))) {\n const r = await this.device.transferIn(endpointNumber, packetSize);\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n const buffer = Buffer.from(r.data.buffer);\n acc = framing.reduceResponse(acc, buffer);\n }\n\n log(\"apdu\", \"<= \" + result.toString(\"hex\"));\n return result;\n }).catch((e) => {\n if (e && e.message && e.message.includes(\"disconnected\")) {\n this._emitDisconnect(e);\n\n throw new DisconnectedDeviceDuringOperation(e.message);\n }\n\n throw e;\n });\n\n return b as Buffer;\n }\n\n setScrambleKey() {}\n}\n\nasync function gracefullyResetDevice(device: USBDevice) {\n try {\n await device.reset();\n } catch (err) {\n console.warn(err);\n }\n}\n", "import Btc from '@ledgerhq/hw-app-btc'\nimport useTransports from './providers/transports'\nimport { BitcoinLedgerSignerOptions } from './interfaces/BitcoinLedgerSignerOptions'\nimport { TransactionInit } from './interfaces/TransactionInit'\n\nconst defaultPath = '84\\'/0\\'/0\\'/0/0' // Legacy addresses: '44\\'/0\\'/0\\'/0/0', Segwit: '49\\'/0\\'/0\\'/0/0', Native Segwit: '84\\'/0\\'/0\\'/0/0'\n// const defaultPath = '84\\'/1\\'/0\\'/0/0' // TestNetPath\nconst defaultType = 'usb'\nconst { createUSBTransport, createSpeculosTransport } = useTransports()\nconst transportCreators = {\n 'usb': createUSBTransport,\n 'speculos': createSpeculosTransport\n}\n\nexport default class BitcoinLedgerSigner {\n readonly type: string\n readonly path: string\n readonly baseURL?: string\n _btc?: Promise\n\n constructor(options: BitcoinLedgerSignerOptions) {\n if (!options.type) options.type = defaultType\n if (!options.path) options.path = defaultPath\n this.type = options.type\n this.path = options.path\n this.baseURL = options.baseURL\n\n const transportCreatorType = this.type as keyof typeof transportCreators\n const transportCreator = transportCreators[transportCreatorType]\n if (!transportCreator) console.log('Unknown or unsupported type', this.type)\n this._btc = transportCreator(this.baseURL).then(transport => {\n // TODO: Add conditional for testnet\n return new Btc({ transport, currency: 'bitcoin_testnet' })\n return new Btc({ transport, currency: 'bitcoin' })\n })\n }\n\n _retry(callback: (btc: Btc) => Promise, timeout?: number): Promise {\n // The async-promise-executor is ok since _retry handles necessary errors \n // eslint-disable-next-line no-async-promise-executor\n return new Promise(async (resolve, reject) => {\n const ledgerConnectionError = 'Please make sure Ledger is ready and retry'\n if (timeout && timeout > 0) {\n setTimeout(() => reject(new Error(ledgerConnectionError)), timeout)\n }\n\n const btc = await this._btc as Btc\n\n // Wait up to 5 seconds\n for (let i = 0; i < 50; i++) {\n try {\n const result = await callback(btc)\n return resolve(result)\n } catch (error) {\n if ((error as { id: string }).id !== 'TransportLocked') {\n return reject(error)\n }\n }\n await new Promise((resolve) => {\n setTimeout(resolve, 100)\n })\n }\n\n return reject(new Error(ledgerConnectionError))\n })\n }\n\n async getAddress(): Promise {\n const { bitcoinAddress: address } = await this._retry((btc) => btc.getWalletPublicKey(\n this.path,\n { verify: false, format: 'bech32'}\n ))\n return address\n }\n\n async signMessage(message: string): Promise {\n try {\n const messageHex = Buffer.from(message).toString('hex')\n const result = await this._retry((btc) => btc.signMessage(\n this.path,\n messageHex\n ))\n const v = result['v'] + 27 + 4\n const signature = Buffer.from(v.toString(16) + result['r'] + result['s'], 'hex').toString('base64')\n console.log('Signature : ' + signature)\n return signature\n } catch (err) {\n console.log(err)\n throw err\n }\n }\n\n // async signTransaction(path: string, transaction: any) {\n // }\n\n async sendTransaction({from, to, value}: TransactionInit): Promise {\n try {\n // Build the transaction object using splitTransaction to then pass into getTrustedInput\n // Create a transaction hex string\n const transactionHex = 'f85f49b51366f7150d2adea6544bc256743707a38e2bdfbf839349ba1ff2875c'\n const isSegwitSupported = false\n const tx = await this._retry(async (btc) => btc.splitTransaction(\n transactionHex,\n isSegwitSupported\n ))\n return new Promise(resolve => resolve(''))\n // const output_index = 1\n // const inputs = [[tx, output_index]]\n // Get trusted input (returns a string) using getTrustedInput\n // const trustedInput = await this._retry((btc) => btc.getTrustedInput(\n // 0,\n\n // ))\n \n // Build the CreateTransactionArg and pass it to createPaymentTransaction\n } catch (err) {\n console.log('Error in bitcoin-ledger-signer sendTransaction: ', err)\n throw err\n }\n }\n}", "import { crypto } from \"bitcoinjs-lib\";\nimport { pointCompress } from \"tiny-secp256k1\";\nimport {\n getXpubComponents,\n hardenedPathOf,\n pathArrayToString,\n pathStringToArray,\n pubkeyFromXpub,\n} from \"./bip32\";\nimport { BufferReader } from \"./buffertools\";\nimport type { CreateTransactionArg } from \"./createTransaction\";\nimport type { AddressFormat } from \"./getWalletPublicKey\";\nimport {\n AccountType,\n p2pkh,\n p2tr,\n p2wpkh,\n p2wpkhWrapped,\n SpendingCondition,\n} from \"./newops/accounttype\";\nimport { AppClient as Client } from \"./newops/appClient\";\nimport {\n createKey,\n DefaultDescriptorTemplate,\n WalletPolicy,\n} from \"./newops/policy\";\nimport { extract } from \"./newops/psbtExtractor\";\nimport { finalize } from \"./newops/psbtFinalizer\";\nimport { psbtIn, PsbtV2 } from \"./newops/psbtv2\";\nimport { serializeTransaction } from \"./serializeTransaction\";\nimport type { Transaction } from \"./types\";\n\n/**\n * This class implements the same interface as BtcOld (formerly\n * named Btc), but interacts with Bitcoin hardware app version 2+\n * which uses a totally new APDU protocol. This new\n * protocol is documented at\n * https://github.com/LedgerHQ/app-bitcoin-new/blob/master/doc/bitcoin.md\n *\n * Since the interface must remain compatible with BtcOld, the methods\n * of this class are quite clunky, because it needs to adapt legacy\n * input data into the PSBT process. In the future, a new interface should\n * be developed that exposes PSBT to the outer world, which would render\n * a much cleaner implementation.\n */\nexport default class BtcNew {\n constructor(private client: Client) {}\n\n /**\n * This is a new method that allow users to get an xpub at a standard path.\n * Standard paths are described at\n * https://github.com/LedgerHQ/app-bitcoin-new/blob/master/doc/bitcoin.md#description\n *\n * This boils down to paths (N=0 for Bitcoin, N=1 for Testnet):\n * M/44'/N'/x'/**\n * M/48'/N'/x'/y'/**\n * M/49'/N'/x'/**\n * M/84'/N'/x'/**\n * M/86'/N'/x'/**\n *\n * The method was added because of added security in the hardware app v2+. The\n * new hardware app will allow export of any xpub up to and including the\n * deepest hardened key of standard derivation paths, whereas the old app\n * would allow export of any key.\n *\n * This caused an issue for callers of this class, who only had\n * getWalletPublicKey() to call which means they have to constuct xpub\n * themselves:\n *\n * Suppose a user of this class wants to create an account xpub on a standard\n * path, M/44'/0'/Z'. The user must get the parent key fingerprint (see BIP32)\n * by requesting the parent key M/44'/0'. The new app won't allow that, because\n * it only allows exporting deepest level hardened path. So the options are to\n * allow requesting M/44'/0' from the app, or to add a new function\n * \"getWalletXpub\".\n *\n * We opted for adding a new function, which can greatly simplify client code.\n */\n async getWalletXpub({\n path,\n xpubVersion,\n }: {\n path: string;\n xpubVersion: number;\n }): Promise {\n const pathElements: number[] = pathStringToArray(path);\n const xpub = await this.client.getExtendedPubkey(false, pathElements);\n const xpubComponents = getXpubComponents(xpub);\n if (xpubComponents.version != xpubVersion) {\n throw new Error(\n `Expected xpub version ${xpubVersion} doesn't match the xpub version from the device ${xpubComponents.version}`\n );\n }\n return xpub;\n }\n\n /**\n * This method returns a public key, a bitcoin address, and and a chaincode\n * for a specific derivation path.\n *\n * Limitation: If the path is not a leaf node of a standard path, the address\n * will be the empty string \"\", see this.getWalletAddress() for details.\n */\n async getWalletPublicKey(\n path: string,\n opts?: {\n verify?: boolean;\n format?: AddressFormat;\n }\n ): Promise<{\n publicKey: string;\n bitcoinAddress: string;\n chainCode: string;\n }> {\n if (!isPathNormal(path)) {\n throw Error(`non-standard path: ${path}`);\n }\n const pathElements: number[] = pathStringToArray(path);\n const xpub = await this.client.getExtendedPubkey(false, pathElements);\n\n const display = opts?.verify ?? false;\n\n const address = await this.getWalletAddress(\n pathElements,\n descrTemplFrom(opts?.format ?? \"legacy\"),\n display\n );\n const components = getXpubComponents(xpub);\n const uncompressedPubkey = Buffer.from(\n pointCompress(components.pubkey, false)\n );\n return {\n publicKey: uncompressedPubkey.toString(\"hex\"),\n bitcoinAddress: address,\n chainCode: components.chaincode.toString(\"hex\"),\n };\n }\n\n /**\n * Get an address for the specified path.\n *\n * If display is true, we must get the address from the device, which would require\n * us to determine WalletPolicy. This requires two *extra* queries to the device, one\n * for the account xpub and one for master key fingerprint.\n *\n * If display is false we *could* generate the address ourselves, but chose to\n * get it from the device to save development time. However, it shouldn't take\n * too much time to implement local address generation.\n *\n * Moreover, if the path is not for a leaf, ie accountPath+/X/Y, there is no\n * way to get the address from the device. In this case we have to create it\n * ourselves, but we don't at this time, and instead return an empty (\"\") address.\n */\n private async getWalletAddress(\n pathElements: number[],\n descrTempl: DefaultDescriptorTemplate,\n display: boolean\n ): Promise {\n const accountPath = hardenedPathOf(pathElements);\n if (accountPath.length + 2 != pathElements.length) {\n return \"\";\n }\n const accountXpub = await this.client.getExtendedPubkey(false, accountPath);\n const masterFingerprint = await this.client.getMasterFingerprint();\n const policy = new WalletPolicy(\n descrTempl,\n createKey(masterFingerprint, accountPath, accountXpub)\n );\n const changeAndIndex = pathElements.slice(-2, pathElements.length);\n return this.client.getWalletAddress(\n policy,\n Buffer.alloc(32, 0),\n changeAndIndex[0],\n changeAndIndex[1],\n display\n );\n }\n\n /**\n * Build and sign a transaction. See Btc.createPaymentTransaction for\n * details on how to use this method.\n *\n * This method will convert the legacy arguments, CreateTransactionArg, into\n * a psbt which is finally signed and finalized, and the extracted fully signed\n * transaction is returned.\n */\n async createPaymentTransaction(arg: CreateTransactionArg): Promise {\n const inputCount = arg.inputs.length;\n if (inputCount == 0) {\n throw Error(\"No inputs\");\n }\n const psbt = new PsbtV2();\n // The master fingerprint is needed when adding BIP32 derivation paths on\n // the psbt.\n const masterFp = await this.client.getMasterFingerprint();\n\n const accountType = accountTypeFromArg(arg, psbt, masterFp);\n\n if (arg.lockTime != undefined) {\n // The signer will assume locktime 0 if unset\n psbt.setGlobalFallbackLocktime(arg.lockTime);\n }\n psbt.setGlobalInputCount(inputCount);\n psbt.setGlobalPsbtVersion(2);\n psbt.setGlobalTxVersion(2);\n\n let notifyCount = 0;\n const progress = () => {\n if (!arg.onDeviceStreaming) return;\n arg.onDeviceStreaming({\n total: 2 * inputCount,\n index: notifyCount,\n progress: ++notifyCount / (2 * inputCount),\n });\n };\n\n let accountXpub = \"\";\n let accountPath: number[] = [];\n for (let i = 0; i < inputCount; i++) {\n progress();\n const pathElems: number[] = pathStringToArray(arg.associatedKeysets[i]);\n if (accountXpub == \"\") {\n // We assume all inputs belong to the same account so we set\n // the account xpub and path based on the first input.\n accountPath = pathElems.slice(0, -2);\n accountXpub = await this.client.getExtendedPubkey(false, accountPath);\n }\n await this.setInput(\n psbt,\n i,\n arg.inputs[i],\n pathElems,\n accountType,\n masterFp,\n arg.sigHashType\n );\n }\n\n const outputsConcat = Buffer.from(arg.outputScriptHex, \"hex\");\n const outputsBufferReader = new BufferReader(outputsConcat);\n const outputCount = outputsBufferReader.readVarInt();\n psbt.setGlobalOutputCount(outputCount);\n const changeData = await this.outputScriptAt(\n accountPath,\n accountType,\n arg.changePath\n );\n // If the caller supplied a changePath, we must make sure there actually is\n // a change output. If no change output found, we'll throw an error.\n let changeFound = !changeData;\n for (let i = 0; i < outputCount; i++) {\n const amount = Number(outputsBufferReader.readUInt64());\n const outputScript = outputsBufferReader.readVarSlice();\n psbt.setOutputAmount(i, amount);\n psbt.setOutputScript(i, outputScript);\n\n // We won't know if we're paying to ourselves, because there's no\n // information in arg to support multiple \"change paths\". One exception is\n // if there are multiple outputs to the change address.\n const isChange =\n changeData && outputScript.equals(changeData?.cond.scriptPubKey);\n if (isChange) {\n changeFound = true;\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const changePath = pathStringToArray(arg.changePath!);\n const pubkey = changeData.pubkey;\n\n accountType.setOwnOutput(i, changeData.cond, [pubkey], [changePath]);\n }\n }\n if (!changeFound) {\n throw new Error(\n \"Change script not found among outputs! \" +\n changeData?.cond.scriptPubKey.toString(\"hex\")\n );\n }\n\n const key = createKey(masterFp, accountPath, accountXpub);\n const p = new WalletPolicy(accountType.getDescriptorTemplate(), key);\n // This is cheating, because it's not actually requested on the\n // device yet, but it will be, soonish.\n if (arg.onDeviceSignatureRequested) arg.onDeviceSignatureRequested();\n\n let firstSigned = false;\n // This callback will be called once for each signature yielded.\n const progressCallback = () => {\n if (!firstSigned) {\n firstSigned = true;\n arg.onDeviceSignatureGranted && arg.onDeviceSignatureGranted();\n }\n progress();\n };\n\n await this.signPsbt(psbt, p, progressCallback);\n finalize(psbt);\n const serializedTx = extract(psbt);\n return serializedTx.toString(\"hex\");\n }\n\n /**\n * Calculates an output script along with public key and possible redeemScript\n * from a path and accountType. The accountPath must be a prefix of path.\n *\n * @returns an object with output script (property \"script\"), redeemScript (if\n * wrapped p2wpkh), and pubkey at provided path. The values of these three\n * properties depend on the accountType used.\n */\n private async outputScriptAt(\n accountPath: number[],\n accountType: AccountType,\n path: string | undefined\n ): Promise<{ cond: SpendingCondition; pubkey: Buffer } | undefined> {\n if (!path) return undefined;\n const pathElems = pathStringToArray(path);\n // Make sure path is in our account, otherwise something fishy is probably\n // going on.\n for (let i = 0; i < accountPath.length; i++) {\n if (accountPath[i] != pathElems[i]) {\n throw new Error(\n `Path ${path} not in account ${pathArrayToString(accountPath)}`\n );\n }\n }\n const xpub = await this.client.getExtendedPubkey(false, pathElems);\n const pubkey = pubkeyFromXpub(xpub);\n const cond = accountType.spendingCondition([pubkey]);\n return { cond, pubkey };\n }\n\n /**\n * Adds relevant data about an input to the psbt. This includes sequence,\n * previous txid, output index, spent UTXO, redeem script for wrapped p2wpkh,\n * public key and its derivation path.\n */\n private async setInput(\n psbt: PsbtV2,\n i: number,\n input: [\n Transaction,\n number,\n string | null | undefined,\n number | null | undefined\n ],\n pathElements: number[],\n accountType: AccountType,\n masterFP: Buffer,\n sigHashType?: number\n ): Promise {\n const inputTx = input[0];\n const spentOutputIndex = input[1];\n // redeemScript will be null for wrapped p2wpkh, we need to create it\n // ourselves. But if set, it should be used.\n const redeemScript = input[2] ? Buffer.from(input[2], \"hex\") : undefined;\n const sequence = input[3];\n if (sequence != undefined) {\n psbt.setInputSequence(i, sequence);\n }\n if (sigHashType != undefined) {\n psbt.setInputSighashType(i, sigHashType);\n }\n const inputTxBuffer = serializeTransaction(inputTx, true);\n const inputTxid = crypto.hash256(inputTxBuffer);\n const xpubBase58 = await this.client.getExtendedPubkey(false, pathElements);\n\n const pubkey = pubkeyFromXpub(xpubBase58);\n if (!inputTx.outputs)\n throw Error(\"Missing outputs array in transaction to sign\");\n const spentTxOutput = inputTx.outputs[spentOutputIndex];\n const spendCondition: SpendingCondition = {\n scriptPubKey: spentTxOutput.script,\n redeemScript: redeemScript,\n };\n const spentOutput = { cond: spendCondition, amount: spentTxOutput.amount };\n accountType.setInput(\n i,\n inputTxBuffer,\n spentOutput,\n [pubkey],\n [pathElements]\n );\n\n psbt.setInputPreviousTxId(i, inputTxid);\n psbt.setInputOutputIndex(i, spentOutputIndex);\n }\n\n /**\n * This implements the \"Signer\" role of the BIP370 transaction signing\n * process.\n *\n * It ssks the hardware device to sign the a psbt using the specified wallet\n * policy. This method assumes BIP32 derived keys are used for all inputs, see\n * comment in-line. The signatures returned from the hardware device is added\n * to the appropriate input fields of the PSBT.\n */\n private async signPsbt(\n psbt: PsbtV2,\n walletPolicy: WalletPolicy,\n progressCallback: () => void\n ): Promise {\n const sigs: Map = await this.client.signPsbt(\n psbt,\n walletPolicy,\n Buffer.alloc(32, 0),\n progressCallback\n );\n sigs.forEach((v, k) => {\n // Note: Looking at BIP32 derivation does not work in the generic case,\n // since some inputs might not have a BIP32-derived pubkey.\n const pubkeys = psbt.getInputKeyDatas(k, psbtIn.BIP32_DERIVATION);\n let pubkey;\n if (pubkeys.length != 1) {\n // No legacy BIP32_DERIVATION, assume we're using taproot.\n pubkey = psbt.getInputKeyDatas(k, psbtIn.TAP_BIP32_DERIVATION);\n if (pubkey.length == 0) {\n throw Error(`Missing pubkey derivation for input ${k}`);\n }\n psbt.setInputTapKeySig(k, v);\n } else {\n pubkey = pubkeys[0];\n psbt.setInputPartialSig(k, pubkey, v);\n }\n });\n }\n}\n\nfunction descrTemplFrom(\n addressFormat: AddressFormat\n): DefaultDescriptorTemplate {\n if (addressFormat == \"legacy\") return \"pkh(@0)\";\n if (addressFormat == \"p2sh\") return \"sh(wpkh(@0))\";\n if (addressFormat == \"bech32\") return \"wpkh(@0)\";\n if (addressFormat == \"bech32m\") return \"tr(@0)\";\n throw new Error(\"Unsupported address format \" + addressFormat);\n}\n\nfunction accountTypeFromArg(\n arg: CreateTransactionArg,\n psbt: PsbtV2,\n masterFp: Buffer\n): AccountType {\n if (arg.additionals.includes(\"bech32m\")) return new p2tr(psbt, masterFp);\n if (arg.additionals.includes(\"bech32\")) return new p2wpkh(psbt, masterFp);\n if (arg.segwit) return new p2wpkhWrapped(psbt, masterFp);\n return new p2pkh(psbt, masterFp);\n}\n\n/*\n The new protocol only allows standard path.\n Standard paths are (currently):\n M/44'/(1|0)'/X'\n M/49'/(1|0)'/X'\n M/84'/(1|0)'/X'\n M/86'/(1|0)'/X'\n M/48'/(1|0)'/X'/Y'\n followed by \"\", \"(0|1)\", or \"(0|1)/b\", where a and b are \n non-hardened. For example, the following paths are standard\n M/48'/1'/99'/7'\n M/86'/1'/99'/0\n M/48'/0'/99'/7'/1/17\n The following paths are non-standard\n M/48'/0'/99' // Not deepest hardened path\n M/48'/0'/99'/7'/1/17/2 // Too many non-hardened derivation steps\n M/199'/0'/1'/0/88 // Not a known purpose 199\n M/86'/1'/99'/2 // Change path item must be 0 or 1\n*/\nfunction isPathNormal(path: string): boolean {\n //path is not deepest hardened node of a standard path or deeper, use BtcOld\n const h = 0x80000000; //HARDENED from bip32\n const pathElems = pathStringToArray(path);\n\n const hard = (n: number) => n >= h;\n const soft = (n: number | undefined) => n === undefined || n < h;\n const change = (n: number | undefined) =>\n n === undefined || n === 0 || n === 1;\n\n if (\n pathElems.length >= 3 &&\n pathElems.length <= 5 &&\n [44 + h, 49 + h, 84 + h, 86 + h].some((v) => v == pathElems[0]) &&\n [0 + h, 1 + h].some((v) => v == pathElems[1]) &&\n hard(pathElems[2]) &&\n change(pathElems[3]) &&\n soft(pathElems[4])\n ) {\n return true;\n }\n if (\n pathElems.length >= 4 &&\n pathElems.length <= 6 &&\n 48 + h == pathElems[0] &&\n [0 + h, 1 + h].some((v) => v == pathElems[1]) &&\n hard(pathElems[2]) &&\n hard(pathElems[3]) &&\n change(pathElems[4]) &&\n soft(pathElems[5])\n ) {\n return true;\n }\n return false;\n}\n", "import bippath from \"bip32-path\";\nimport bs58check from \"bs58check\";\n\nexport function pathElementsToBuffer(paths: number[]): Buffer {\n const buffer = Buffer.alloc(1 + paths.length * 4);\n buffer[0] = paths.length;\n paths.forEach((element, index) => {\n buffer.writeUInt32BE(element, 1 + 4 * index);\n });\n return buffer;\n}\n\nexport function bip32asBuffer(path: string): Buffer {\n const pathElements = !path ? [] : pathStringToArray(path);\n return pathElementsToBuffer(pathElements);\n}\n\nexport function pathArrayToString(pathElements: number[]): string {\n // Limitation: bippath can't handle and empty path. It shouldn't affect us\n // right now, but might in the future.\n // TODO: Fix support for empty path.\n return bippath.fromPathArray(pathElements).toString();\n}\n\nexport function pathStringToArray(path: string): number[] {\n return bippath.fromString(path).toPathArray();\n}\n\nexport function pubkeyFromXpub(xpub: string): Buffer {\n const xpubBuf = bs58check.decode(xpub);\n return xpubBuf.slice(xpubBuf.length - 33);\n}\n\nexport function getXpubComponents(xpub: string): {\n chaincode: Buffer;\n pubkey: Buffer;\n version: number;\n} {\n const xpubBuf: Buffer = bs58check.decode(xpub);\n return {\n chaincode: xpubBuf.slice(13, 13 + 32),\n pubkey: xpubBuf.slice(xpubBuf.length - 33),\n version: xpubBuf.readUInt32BE(0),\n };\n}\n\nexport function hardenedPathOf(pathElements: number[]): number[] {\n for (let i = pathElements.length - 1; i >= 0; i--) {\n if (pathElements[i] >= 0x80000000) {\n return pathElements.slice(0, i + 1);\n }\n }\n return [];\n}\n", "import varuint from \"varuint-bitcoin\";\n\nexport function unsafeTo64bitLE(n: number): Buffer {\n // we want to represent the input as a 8-bytes array\n if (n > Number.MAX_SAFE_INTEGER) {\n throw new Error(\"Can't convert numbers > MAX_SAFE_INT\");\n }\n const byteArray = Buffer.alloc(8, 0);\n for (let index = 0; index < byteArray.length; index++) {\n const byte = n & 0xff;\n byteArray[index] = byte;\n n = (n - byte) / 256;\n }\n return byteArray;\n}\n\nexport function unsafeFrom64bitLE(byteArray: Buffer): number {\n let value = 0;\n if (byteArray.length != 8) {\n throw new Error(\"Expected Bufffer of lenght 8\");\n }\n if (byteArray[7] != 0) {\n throw new Error(\"Can't encode numbers > MAX_SAFE_INT\");\n }\n if (byteArray[6] > 0x1f) {\n throw new Error(\"Can't encode numbers > MAX_SAFE_INT\");\n }\n for (let i = byteArray.length - 1; i >= 0; i--) {\n value = value * 256 + byteArray[i];\n }\n return value;\n}\n\nexport class BufferWriter {\n private bufs: Buffer[] = [];\n\n write(alloc: number, fn: (b: Buffer) => void): void {\n const b = Buffer.alloc(alloc);\n fn(b);\n this.bufs.push(b);\n }\n\n writeUInt8(i: number): void {\n this.write(1, (b) => b.writeUInt8(i, 0));\n }\n\n writeInt32(i: number): void {\n this.write(4, (b) => b.writeInt32LE(i, 0));\n }\n\n writeUInt32(i: number): void {\n this.write(4, (b) => b.writeUInt32LE(i, 0));\n }\n\n writeUInt64(i: number): void {\n const bytes = unsafeTo64bitLE(i);\n this.writeSlice(bytes);\n }\n\n writeVarInt(i: number): void {\n this.bufs.push(varuint.encode(i));\n }\n\n writeSlice(slice: Buffer): void {\n this.bufs.push(Buffer.from(slice));\n }\n\n writeVarSlice(slice: Buffer): void {\n this.writeVarInt(slice.length);\n this.writeSlice(slice);\n }\n\n buffer(): Buffer {\n return Buffer.concat(this.bufs);\n }\n}\n\nexport class BufferReader {\n constructor(public buffer: Buffer, public offset: number = 0) {}\n\n available(): number {\n return this.buffer.length - this.offset;\n }\n\n readUInt8(): number {\n const result = this.buffer.readUInt8(this.offset);\n this.offset++;\n return result;\n }\n\n readInt32(): number {\n const result = this.buffer.readInt32LE(this.offset);\n this.offset += 4;\n return result;\n }\n\n readUInt32(): number {\n const result = this.buffer.readUInt32LE(this.offset);\n this.offset += 4;\n return result;\n }\n\n readUInt64(): number {\n const buf = this.readSlice(8);\n const n = unsafeFrom64bitLE(buf);\n return n;\n }\n\n readVarInt(): number {\n const vi = varuint.decode(this.buffer, this.offset);\n this.offset += varuint.decode.bytes;\n return vi;\n }\n\n readSlice(n: number): Buffer {\n if (this.buffer.length < this.offset + n) {\n throw new Error(\"Cannot read slice out of bounds\");\n }\n const result = this.buffer.slice(this.offset, this.offset + n);\n this.offset += n;\n return result;\n }\n\n readVarSlice(): Buffer {\n return this.readSlice(this.readVarInt());\n }\n\n readVector(): Buffer[] {\n const count = this.readVarInt();\n const vector: Buffer[] = [];\n for (let i = 0; i < count; i++) vector.push(this.readVarSlice());\n return vector;\n }\n}\n", "import { crypto } from \"bitcoinjs-lib\";\nimport { pointAddScalar } from \"tiny-secp256k1\";\nimport { BufferWriter } from \"../buffertools\";\nimport {\n HASH_SIZE,\n OP_CHECKSIG,\n OP_DUP,\n OP_EQUAL,\n OP_EQUALVERIFY,\n OP_HASH160,\n} from \"../constants\";\nimport { hashPublicKey } from \"../hashPublicKey\";\nimport { DefaultDescriptorTemplate } from \"./policy\";\nimport { PsbtV2 } from \"./psbtv2\";\n\nexport type SpendingCondition = {\n scriptPubKey: Buffer;\n redeemScript?: Buffer;\n // Possible future extension:\n // witnessScript?: Buffer; // For p2wsh witnessScript\n // tapScript?: {tapPath: Buffer[], script: Buffer} // For taproot\n};\n\nexport type SpentOutput = { cond: SpendingCondition; amount: Buffer };\n\n/**\n * Encapsulates differences between account types, for example p2wpkh,\n * p2wpkhWrapped, p2tr.\n */\nexport interface AccountType {\n /**\n * Generates a scriptPubKey (output script) from a list of public keys. If a\n * p2sh redeemScript or a p2wsh witnessScript is needed it will also be set on\n * the returned SpendingCondition.\n *\n * The pubkeys are expected to be 33 byte ecdsa compressed pubkeys.\n */\n spendingCondition(pubkeys: Buffer[]): SpendingCondition;\n\n /**\n * Populates the psbt with account type-specific data for an input.\n * @param i The index of the input map to populate\n * @param inputTx The full transaction containing the spent output. This may\n * be omitted for taproot.\n * @param spentOutput The amount and spending condition of the spent output\n * @param pubkeys The 33 byte ecdsa compressed public keys involved in the input\n * @param pathElems The paths corresponding to the pubkeys, in same order.\n */\n setInput(\n i: number,\n inputTx: Buffer | undefined,\n spentOutput: SpentOutput,\n pubkeys: Buffer[],\n pathElems: number[][]\n ): void;\n\n /**\n * Populates the psbt with account type-specific data for an output. This is typically\n * done for change outputs and other outputs that goes to the same account as\n * being spent from.\n * @param i The index of the output map to populate\n * @param cond The spending condition for this output\n * @param pubkeys The 33 byte ecdsa compressed public keys involved in this output\n * @param paths The paths corresponding to the pubkeys, in same order.\n */\n setOwnOutput(\n i: number,\n cond: SpendingCondition,\n pubkeys: Buffer[],\n paths: number[][]\n ): void;\n\n /**\n * Returns the descriptor template for this account type. Currently only\n * DefaultDescriptorTemplates are allowed, but that might be changed in the\n * future. See class WalletPolicy for more information on descriptor\n * templates.\n */\n getDescriptorTemplate(): DefaultDescriptorTemplate;\n}\n\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\ninterface BaseAccount extends AccountType {}\n\nabstract class BaseAccount implements AccountType {\n constructor(protected psbt: PsbtV2, protected masterFp: Buffer) {}\n}\n\n/**\n * Superclass for single signature accounts. This will make sure that the pubkey\n * arrays and path arrays in the method arguments contains exactly one element\n * and calls an abstract method to do the actual work.\n */\nabstract class SingleKeyAccount extends BaseAccount {\n spendingCondition(pubkeys: Buffer[]): SpendingCondition {\n if (pubkeys.length != 1) {\n throw new Error(\"Expected single key, got \" + pubkeys.length);\n }\n return this.singleKeyCondition(pubkeys[0]);\n }\n protected abstract singleKeyCondition(pubkey: Buffer): SpendingCondition;\n\n setInput(\n i: number,\n inputTx: Buffer | undefined,\n spentOutput: SpentOutput,\n pubkeys: Buffer[],\n pathElems: number[][]\n ) {\n if (pubkeys.length != 1) {\n throw new Error(\"Expected single key, got \" + pubkeys.length);\n }\n if (pathElems.length != 1) {\n throw new Error(\"Expected single path, got \" + pathElems.length);\n }\n this.setSingleKeyInput(i, inputTx, spentOutput, pubkeys[0], pathElems[0]);\n }\n protected abstract setSingleKeyInput(\n i: number,\n inputTx: Buffer | undefined,\n spentOutput: SpentOutput,\n pubkey: Buffer,\n path: number[]\n );\n\n setOwnOutput(\n i: number,\n cond: SpendingCondition,\n pubkeys: Buffer[],\n paths: number[][]\n ) {\n if (pubkeys.length != 1) {\n throw new Error(\"Expected single key, got \" + pubkeys.length);\n }\n if (paths.length != 1) {\n throw new Error(\"Expected single path, got \" + paths.length);\n }\n this.setSingleKeyOutput(i, cond, pubkeys[0], paths[0]);\n }\n protected abstract setSingleKeyOutput(\n i: number,\n cond: SpendingCondition,\n pubkey: Buffer,\n path: number[]\n );\n}\n\nexport class p2pkh extends SingleKeyAccount {\n singleKeyCondition(pubkey: Buffer): SpendingCondition {\n const buf = new BufferWriter();\n const pubkeyHash = hashPublicKey(pubkey);\n buf.writeSlice(Buffer.from([OP_DUP, OP_HASH160, HASH_SIZE]));\n buf.writeSlice(pubkeyHash);\n buf.writeSlice(Buffer.from([OP_EQUALVERIFY, OP_CHECKSIG]));\n return { scriptPubKey: buf.buffer() };\n }\n\n setSingleKeyInput(\n i: number,\n inputTx: Buffer | undefined,\n _spentOutput: SpentOutput,\n pubkey: Buffer,\n path: number[]\n ) {\n if (!inputTx) {\n throw new Error(\"Full input base transaction required\");\n }\n this.psbt.setInputNonWitnessUtxo(i, inputTx);\n this.psbt.setInputBip32Derivation(i, pubkey, this.masterFp, path);\n }\n\n setSingleKeyOutput(\n i: number,\n cond: SpendingCondition,\n pubkey: Buffer,\n path: number[]\n ) {\n this.psbt.setOutputBip32Derivation(i, pubkey, this.masterFp, path);\n }\n\n getDescriptorTemplate(): DefaultDescriptorTemplate {\n return \"pkh(@0)\";\n }\n}\n\nexport class p2tr extends SingleKeyAccount {\n singleKeyCondition(pubkey: Buffer): SpendingCondition {\n const xonlyPubkey = pubkey.slice(1); // x-only pubkey\n const buf = new BufferWriter();\n const outputKey = this.getTaprootOutputKey(xonlyPubkey);\n buf.writeSlice(Buffer.from([0x51, 32])); // push1, pubkeylen\n buf.writeSlice(outputKey);\n return { scriptPubKey: buf.buffer() };\n }\n\n setSingleKeyInput(\n i: number,\n _inputTx: Buffer | undefined,\n spentOutput: SpentOutput,\n pubkey: Buffer,\n path: number[]\n ) {\n const xonly = pubkey.slice(1);\n this.psbt.setInputTapBip32Derivation(i, xonly, [], this.masterFp, path);\n this.psbt.setInputWitnessUtxo(\n i,\n spentOutput.amount,\n spentOutput.cond.scriptPubKey\n );\n }\n\n setSingleKeyOutput(\n i: number,\n cond: SpendingCondition,\n pubkey: Buffer,\n path: number[]\n ) {\n const xonly = pubkey.slice(1);\n this.psbt.setOutputTapBip32Derivation(i, xonly, [], this.masterFp, path);\n }\n\n getDescriptorTemplate(): DefaultDescriptorTemplate {\n return \"tr(@0)\";\n }\n\n /*\n The following two functions are copied from wallet-btc and adapted.\n They should be moved to a library to avoid code reuse.\n */\n private hashTapTweak(x: Buffer): Buffer {\n // hash_tag(x) = SHA256(SHA256(tag) || SHA256(tag) || x), see BIP340\n // See https://github.com/bitcoin/bips/blob/master/bip-0340.mediawiki#specification\n const h = crypto.sha256(Buffer.from(\"TapTweak\", \"utf-8\"));\n return crypto.sha256(Buffer.concat([h, h, x]));\n }\n\n /**\n * Calculates a taproot output key from an internal key. This output key will be\n * used as witness program in a taproot output. The internal key is tweaked\n * according to recommendation in BIP341:\n * https://github.com/bitcoin/bips/blob/master/bip-0341.mediawiki#cite_ref-22-0\n *\n * @param internalPubkey A 32 byte x-only taproot internal key\n * @returns The output key\n */\n getTaprootOutputKey(internalPubkey: Buffer): Buffer {\n if (internalPubkey.length != 32) {\n throw new Error(\"Expected 32 byte pubkey. Got \" + internalPubkey.length);\n }\n // A BIP32 derived key can be converted to a schnorr pubkey by dropping\n // the first byte, which represent the oddness/evenness. In schnorr all\n // pubkeys are even.\n // https://github.com/bitcoin/bips/blob/master/bip-0340.mediawiki#public-key-conversion\n const evenEcdsaPubkey = Buffer.concat([\n Buffer.from([0x02]),\n internalPubkey,\n ]);\n const tweak = this.hashTapTweak(internalPubkey);\n\n // Q = P + int(hash_TapTweak(bytes(P)))G\n const outputEcdsaKey = Buffer.from(pointAddScalar(evenEcdsaPubkey, tweak));\n // Convert to schnorr.\n const outputSchnorrKey = outputEcdsaKey.slice(1);\n // Create address\n return outputSchnorrKey;\n }\n}\n\nexport class p2wpkhWrapped extends SingleKeyAccount {\n singleKeyCondition(pubkey: Buffer): SpendingCondition {\n const buf = new BufferWriter();\n const redeemScript = this.createRedeemScript(pubkey);\n const scriptHash = hashPublicKey(redeemScript);\n buf.writeSlice(Buffer.from([OP_HASH160, HASH_SIZE]));\n buf.writeSlice(scriptHash);\n buf.writeUInt8(OP_EQUAL);\n return { scriptPubKey: buf.buffer(), redeemScript: redeemScript };\n }\n\n setSingleKeyInput(\n i: number,\n inputTx: Buffer | undefined,\n spentOutput: SpentOutput,\n pubkey: Buffer,\n path: number[]\n ) {\n if (!inputTx) {\n throw new Error(\"Full input base transaction required\");\n }\n this.psbt.setInputNonWitnessUtxo(i, inputTx);\n this.psbt.setInputBip32Derivation(i, pubkey, this.masterFp, path);\n\n const userSuppliedRedeemScript = spentOutput.cond.redeemScript;\n const expectedRedeemScript = this.createRedeemScript(pubkey);\n if (\n userSuppliedRedeemScript &&\n !expectedRedeemScript.equals(userSuppliedRedeemScript)\n ) {\n // At what point might a user set the redeemScript on its own?\n throw new Error(`User-supplied redeemScript ${userSuppliedRedeemScript.toString(\n \"hex\"\n )} doesn't\n match expected ${expectedRedeemScript.toString(\"hex\")} for input ${i}`);\n }\n this.psbt.setInputRedeemScript(i, expectedRedeemScript);\n this.psbt.setInputWitnessUtxo(\n i,\n spentOutput.amount,\n spentOutput.cond.scriptPubKey\n );\n }\n\n setSingleKeyOutput(\n i: number,\n cond: SpendingCondition,\n pubkey: Buffer,\n path: number[]\n ) {\n this.psbt.setOutputRedeemScript(i, cond.redeemScript!);\n this.psbt.setOutputBip32Derivation(i, pubkey, this.masterFp, path);\n }\n\n getDescriptorTemplate(): DefaultDescriptorTemplate {\n return \"sh(wpkh(@0))\";\n }\n\n private createRedeemScript(pubkey: Buffer): Buffer {\n const pubkeyHash = hashPublicKey(pubkey);\n return Buffer.concat([Buffer.from(\"0014\", \"hex\"), pubkeyHash]);\n }\n}\n\nexport class p2wpkh extends SingleKeyAccount {\n singleKeyCondition(pubkey: Buffer): SpendingCondition {\n const buf = new BufferWriter();\n const pubkeyHash = hashPublicKey(pubkey);\n buf.writeSlice(Buffer.from([0, HASH_SIZE]));\n buf.writeSlice(pubkeyHash);\n return { scriptPubKey: buf.buffer() };\n }\n\n setSingleKeyInput(\n i: number,\n inputTx: Buffer | undefined,\n spentOutput: SpentOutput,\n pubkey: Buffer,\n path: number[]\n ) {\n if (!inputTx) {\n throw new Error(\"Full input base transaction required\");\n }\n this.psbt.setInputNonWitnessUtxo(i, inputTx);\n this.psbt.setInputBip32Derivation(i, pubkey, this.masterFp, path);\n this.psbt.setInputWitnessUtxo(\n i,\n spentOutput.amount,\n spentOutput.cond.scriptPubKey\n );\n }\n\n setSingleKeyOutput(\n i: number,\n cond: SpendingCondition,\n pubkey: Buffer,\n path: number[]\n ) {\n this.psbt.setOutputBip32Derivation(i, pubkey, this.masterFp, path);\n }\n\n getDescriptorTemplate(): DefaultDescriptorTemplate {\n return \"wpkh(@0)\";\n }\n}\n", "// flow\nexport const MAX_SCRIPT_BLOCK = 50;\nexport const DEFAULT_VERSION = 1;\nexport const DEFAULT_LOCKTIME = 0;\nexport const DEFAULT_SEQUENCE = 0xffffffff;\nexport const SIGHASH_ALL = 1;\nexport const OP_DUP = 0x76;\nexport const OP_HASH160 = 0xa9;\nexport const HASH_SIZE = 0x14;\nexport const OP_EQUAL = 0x87;\nexport const OP_EQUALVERIFY = 0x88;\nexport const OP_CHECKSIG = 0xac;\nexport const OP_RETURN = 0x6a;\n", "import RIPEMD160 from \"ripemd160\";\nimport sha from \"sha.js\";\nexport function hashPublicKey(buffer: Buffer): Buffer {\n return new RIPEMD160().update(sha(\"sha256\").update(buffer).digest()).digest();\n}\n", "import { crypto } from \"bitcoinjs-lib\";\nimport { pathArrayToString } from \"../bip32\";\nimport { BufferWriter } from \"../buffertools\";\nimport { hashLeaf, Merkle } from \"./merkle\";\n\nexport type DefaultDescriptorTemplate =\n | \"pkh(@0)\"\n | \"sh(wpkh(@0))\"\n | \"wpkh(@0)\"\n | \"tr(@0)\";\n\n/**\n * The Bitcon hardware app uses a descriptors-like thing to describe\n * how to construct output scripts from keys. A \"Wallet Policy\" consists\n * of a \"Descriptor Template\" and a list of \"keys\". A key is basically\n * a serialized BIP32 extended public key with some added derivation path\n * information. This is documented at\n * https://github.com/LedgerHQ/app-bitcoin-new/blob/master/doc/wallet.md\n */\nexport class WalletPolicy {\n descriptorTemplate: string;\n keys: string[];\n /**\n * For now, we only support default descriptor templates.\n */\n constructor(descriptorTemplate: DefaultDescriptorTemplate, key: string) {\n this.descriptorTemplate = descriptorTemplate;\n this.keys = [key];\n }\n\n getWalletId(): Buffer {\n // wallet_id (sha256 of the wallet serialization),\n return crypto.sha256(this.serialize());\n }\n\n serialize(): Buffer {\n const keyBuffers = this.keys.map((k) => {\n return Buffer.from(k, \"ascii\");\n });\n const m = new Merkle(keyBuffers.map((k) => hashLeaf(k)));\n\n const buf = new BufferWriter();\n buf.writeUInt8(0x01); // wallet type (policy map)\n buf.writeUInt8(0); // length of wallet name (empty string for default wallets)\n buf.writeVarSlice(Buffer.from(this.descriptorTemplate, \"ascii\"));\n buf.writeVarInt(this.keys.length), buf.writeSlice(m.getRoot());\n return buf.buffer();\n }\n}\n\nexport function createKey(\n masterFingerprint: Buffer,\n path: number[],\n xpub: string\n): string {\n const accountPath = pathArrayToString(path);\n return `[${masterFingerprint.toString(\"hex\")}${accountPath.substring(\n 1\n )}]${xpub}/**`;\n}\n", "import { crypto } from \"bitcoinjs-lib\";\n\n/**\n * This class implements the merkle tree used by Ledger Bitcoin app v2+,\n * which is documented at\n * https://github.com/LedgerHQ/app-bitcoin-new/blob/master/doc/merkle.md\n */\nexport class Merkle {\n private leaves: Buffer[];\n private rootNode: Node;\n private leafNodes: Node[];\n private h: (buf: Buffer) => Buffer;\n constructor(\n leaves: Buffer[],\n hasher: (buf: Buffer) => Buffer = crypto.sha256\n ) {\n this.leaves = leaves;\n this.h = hasher;\n const nodes = this.calculateRoot(leaves);\n this.rootNode = nodes.root;\n this.leafNodes = nodes.leaves;\n }\n getRoot(): Buffer {\n return this.rootNode.hash;\n }\n size(): number {\n return this.leaves.length;\n }\n getLeaves(): Buffer[] {\n return this.leaves;\n }\n getLeafHash(index: number): Buffer {\n return this.leafNodes[index].hash;\n }\n getProof(index: number): Buffer[] {\n if (index >= this.leaves.length) throw Error(\"Index out of bounds\");\n return proveNode(this.leafNodes[index]);\n }\n\n calculateRoot(leaves: Buffer[]): { root: Node; leaves: Node[] } {\n const n = leaves.length;\n if (n == 0) {\n return {\n root: new Node(undefined, undefined, Buffer.alloc(32, 0)),\n leaves: [],\n };\n }\n if (n == 1) {\n const newNode = new Node(undefined, undefined, leaves[0]);\n return { root: newNode, leaves: [newNode] };\n }\n const leftCount = highestPowerOf2LessThan(n);\n const leftBranch = this.calculateRoot(leaves.slice(0, leftCount));\n const rightBranch = this.calculateRoot(leaves.slice(leftCount));\n const leftChild = leftBranch.root;\n const rightChild = rightBranch.root;\n const hash = this.hashNode(leftChild.hash, rightChild.hash);\n const node = new Node(leftChild, rightChild, hash);\n leftChild.parent = node;\n rightChild.parent = node;\n return { root: node, leaves: leftBranch.leaves.concat(rightBranch.leaves) };\n }\n\n hashNode(left: Buffer, right: Buffer): Buffer {\n return this.h(Buffer.concat([Buffer.from([1]), left, right]));\n }\n}\n\nexport function hashLeaf(\n buf: Buffer,\n hashFunction: (buf: Buffer) => Buffer = crypto.sha256\n): Buffer {\n return hashConcat(Buffer.from([0]), buf, hashFunction);\n}\n\nfunction hashConcat(\n bufA: Buffer,\n bufB: Buffer,\n hashFunction: (buf: Buffer) => Buffer\n): Buffer {\n return hashFunction(Buffer.concat([bufA, bufB]));\n}\n\nclass Node {\n leftChild?: Node;\n rightChild?: Node;\n parent?: Node;\n hash: Buffer;\n constructor(left: Node | undefined, right: Node | undefined, hash: Buffer) {\n this.leftChild = left;\n this.rightChild = right;\n this.hash = hash;\n }\n isLeaf(): boolean {\n return this.leftChild == undefined;\n }\n}\n\nfunction proveNode(node: Node): Buffer[] {\n if (!node.parent) {\n return [];\n }\n if (node.parent.leftChild == node) {\n if (!node.parent.rightChild) {\n throw new Error(\"Expected right child to exist\");\n }\n return [node.parent.rightChild.hash, ...proveNode(node.parent)];\n } else {\n if (!node.parent.leftChild) {\n throw new Error(\"Expected left child to exist\");\n }\n return [node.parent.leftChild.hash, ...proveNode(node.parent)];\n }\n}\n\nfunction highestPowerOf2LessThan(n: number) {\n if (n < 2) {\n throw Error(\"Expected n >= 2\");\n }\n if (isPowerOf2(n)) {\n return n / 2;\n }\n return 1 << Math.floor(Math.log2(n));\n}\n\nfunction isPowerOf2(n: number): boolean {\n return (n & (n - 1)) == 0;\n}\n", "import { BufferWriter } from \"../buffertools\";\nimport { PsbtV2 } from \"./psbtv2\";\n\n/**\n * This implements the \"Transaction Extractor\" role of BIP370 (PSBTv2\n * https://github.com/bitcoin/bips/blob/master/bip-0370.mediawiki#transaction-extractor). However\n * the role is partially documented in BIP174 (PSBTv0\n * https://github.com/bitcoin/bips/blob/master/bip-0174.mediawiki#transaction-extractor).\n */\nexport function extract(psbt: PsbtV2): Buffer {\n const tx = new BufferWriter();\n tx.writeUInt32(psbt.getGlobalTxVersion());\n\n const isSegwit = !!psbt.getInputWitnessUtxo(0);\n if (isSegwit) {\n tx.writeSlice(Buffer.from([0, 1]));\n }\n const inputCount = psbt.getGlobalInputCount();\n tx.writeVarInt(inputCount);\n const witnessWriter = new BufferWriter();\n for (let i = 0; i < inputCount; i++) {\n tx.writeSlice(psbt.getInputPreviousTxid(i));\n tx.writeUInt32(psbt.getInputOutputIndex(i));\n tx.writeVarSlice(psbt.getInputFinalScriptsig(i) ?? Buffer.from([]));\n tx.writeUInt32(psbt.getInputSequence(i));\n if (isSegwit) {\n witnessWriter.writeSlice(psbt.getInputFinalScriptwitness(i));\n }\n }\n const outputCount = psbt.getGlobalOutputCount();\n tx.writeVarInt(outputCount);\n for (let i = 0; i < outputCount; i++) {\n tx.writeUInt64(psbt.getOutputAmount(i));\n tx.writeVarSlice(psbt.getOutputScript(i));\n }\n tx.writeSlice(witnessWriter.buffer());\n tx.writeUInt32(psbt.getGlobalFallbackLocktime() ?? 0);\n return tx.buffer();\n}\n", "/* eslint-disable @typescript-eslint/no-non-null-assertion */\n/* eslint-disable @typescript-eslint/explicit-module-boundary-types */\nimport {\n BufferReader,\n BufferWriter,\n unsafeFrom64bitLE,\n unsafeTo64bitLE,\n} from \"../buffertools\";\n\nexport enum psbtGlobal {\n TX_VERSION = 0x02,\n FALLBACK_LOCKTIME = 0x03,\n INPUT_COUNT = 0x04,\n OUTPUT_COUNT = 0x05,\n TX_MODIFIABLE = 0x06,\n VERSION = 0xfb,\n}\nexport enum psbtIn {\n NON_WITNESS_UTXO = 0x00,\n WITNESS_UTXO = 0x01,\n PARTIAL_SIG = 0x02,\n SIGHASH_TYPE = 0x03,\n REDEEM_SCRIPT = 0x04,\n BIP32_DERIVATION = 0x06,\n FINAL_SCRIPTSIG = 0x07,\n FINAL_SCRIPTWITNESS = 0x08,\n PREVIOUS_TXID = 0x0e,\n OUTPUT_INDEX = 0x0f,\n SEQUENCE = 0x10,\n TAP_KEY_SIG = 0x13,\n TAP_BIP32_DERIVATION = 0x16,\n}\nexport enum psbtOut {\n REDEEM_SCRIPT = 0x00,\n BIP_32_DERIVATION = 0x02,\n AMOUNT = 0x03,\n SCRIPT = 0x04,\n TAP_BIP32_DERIVATION = 0x07,\n}\n\nconst PSBT_MAGIC_BYTES = Buffer.from([0x70, 0x73, 0x62, 0x74, 0xff]);\n\nexport class NoSuchEntry extends Error {}\n\n/**\n * Implements Partially Signed Bitcoin Transaction version 2, BIP370, as\n * documented at https://github.com/bitcoin/bips/blob/master/bip-0370.mediawiki\n * and https://github.com/bitcoin/bips/blob/master/bip-0174.mediawiki\n *\n * A psbt is a data structure that can carry all relevant information about a\n * transaction through all stages of the signing process. From constructing an\n * unsigned transaction to extracting the final serialized transaction ready for\n * broadcast.\n *\n * This implementation is limited to what's needed in ledgerjs to carry out its\n * duties, which means that support for features like multisig or taproot script\n * path spending are not implemented. Specifically, it supports p2pkh,\n * p2wpkhWrappedInP2sh, p2wpkh and p2tr key path spending.\n *\n * This class is made purposefully dumb, so it's easy to add support for\n * complemantary fields as needed in the future.\n */\nexport class PsbtV2 {\n protected globalMap: Map = new Map();\n protected inputMaps: Map[] = [];\n protected outputMaps: Map[] = [];\n\n setGlobalTxVersion(version: number) {\n this.setGlobal(psbtGlobal.TX_VERSION, uint32LE(version));\n }\n getGlobalTxVersion(): number {\n return this.getGlobal(psbtGlobal.TX_VERSION).readUInt32LE(0);\n }\n setGlobalFallbackLocktime(locktime: number) {\n this.setGlobal(psbtGlobal.FALLBACK_LOCKTIME, uint32LE(locktime));\n }\n getGlobalFallbackLocktime(): number | undefined {\n return this.getGlobalOptional(psbtGlobal.FALLBACK_LOCKTIME)?.readUInt32LE(\n 0\n );\n }\n setGlobalInputCount(inputCount: number) {\n this.setGlobal(psbtGlobal.INPUT_COUNT, varint(inputCount));\n }\n getGlobalInputCount(): number {\n return fromVarint(this.getGlobal(psbtGlobal.INPUT_COUNT));\n }\n setGlobalOutputCount(outputCount: number) {\n this.setGlobal(psbtGlobal.OUTPUT_COUNT, varint(outputCount));\n }\n getGlobalOutputCount(): number {\n return fromVarint(this.getGlobal(psbtGlobal.OUTPUT_COUNT));\n }\n setGlobalTxModifiable(byte: Buffer) {\n this.setGlobal(psbtGlobal.TX_MODIFIABLE, byte);\n }\n getGlobalTxModifiable(): Buffer | undefined {\n return this.getGlobalOptional(psbtGlobal.TX_MODIFIABLE);\n }\n setGlobalPsbtVersion(psbtVersion: number) {\n this.setGlobal(psbtGlobal.VERSION, uint32LE(psbtVersion));\n }\n getGlobalPsbtVersion(): number {\n return this.getGlobal(psbtGlobal.VERSION).readUInt32LE(0);\n }\n\n setInputNonWitnessUtxo(inputIndex: number, transaction: Buffer) {\n this.setInput(inputIndex, psbtIn.NON_WITNESS_UTXO, b(), transaction);\n }\n getInputNonWitnessUtxo(inputIndex: number): Buffer | undefined {\n return this.getInputOptional(inputIndex, psbtIn.NON_WITNESS_UTXO, b());\n }\n setInputWitnessUtxo(\n inputIndex: number,\n amount: Buffer,\n scriptPubKey: Buffer\n ) {\n const buf = new BufferWriter();\n buf.writeSlice(amount);\n buf.writeVarSlice(scriptPubKey);\n this.setInput(inputIndex, psbtIn.WITNESS_UTXO, b(), buf.buffer());\n }\n getInputWitnessUtxo(\n inputIndex: number\n ): { amount: Buffer; scriptPubKey: Buffer } | undefined {\n const utxo = this.getInputOptional(inputIndex, psbtIn.WITNESS_UTXO, b());\n if (!utxo) return undefined;\n const buf = new BufferReader(utxo);\n return { amount: buf.readSlice(8), scriptPubKey: buf.readVarSlice() };\n }\n setInputPartialSig(inputIndex: number, pubkey: Buffer, signature: Buffer) {\n this.setInput(inputIndex, psbtIn.PARTIAL_SIG, pubkey, signature);\n }\n getInputPartialSig(inputIndex: number, pubkey: Buffer): Buffer | undefined {\n return this.getInputOptional(inputIndex, psbtIn.PARTIAL_SIG, pubkey);\n }\n setInputSighashType(inputIndex: number, sigHashtype: number) {\n this.setInput(inputIndex, psbtIn.SIGHASH_TYPE, b(), uint32LE(sigHashtype));\n }\n getInputSighashType(inputIndex: number): number | undefined {\n const result = this.getInputOptional(inputIndex, psbtIn.SIGHASH_TYPE, b());\n if (!result) return undefined;\n return result.readUInt32LE(0);\n }\n setInputRedeemScript(inputIndex: number, redeemScript: Buffer) {\n this.setInput(inputIndex, psbtIn.REDEEM_SCRIPT, b(), redeemScript);\n }\n getInputRedeemScript(inputIndex: number): Buffer | undefined {\n return this.getInputOptional(inputIndex, psbtIn.REDEEM_SCRIPT, b());\n }\n setInputBip32Derivation(\n inputIndex: number,\n pubkey: Buffer,\n masterFingerprint: Buffer,\n path: number[]\n ) {\n if (pubkey.length != 33)\n throw new Error(\"Invalid pubkey length: \" + pubkey.length);\n this.setInput(\n inputIndex,\n psbtIn.BIP32_DERIVATION,\n pubkey,\n this.encodeBip32Derivation(masterFingerprint, path)\n );\n }\n getInputBip32Derivation(\n inputIndex: number,\n pubkey: Buffer\n ): { masterFingerprint: Buffer; path: number[] } | undefined {\n const buf = this.getInputOptional(\n inputIndex,\n psbtIn.BIP32_DERIVATION,\n pubkey\n );\n if (!buf) return undefined;\n return this.decodeBip32Derivation(buf);\n }\n setInputFinalScriptsig(inputIndex: number, scriptSig: Buffer) {\n this.setInput(inputIndex, psbtIn.FINAL_SCRIPTSIG, b(), scriptSig);\n }\n getInputFinalScriptsig(inputIndex: number): Buffer | undefined {\n return this.getInputOptional(inputIndex, psbtIn.FINAL_SCRIPTSIG, b());\n }\n setInputFinalScriptwitness(inputIndex: number, scriptWitness: Buffer) {\n this.setInput(inputIndex, psbtIn.FINAL_SCRIPTWITNESS, b(), scriptWitness);\n }\n getInputFinalScriptwitness(inputIndex: number): Buffer {\n return this.getInput(inputIndex, psbtIn.FINAL_SCRIPTWITNESS, b());\n }\n setInputPreviousTxId(inputIndex: number, txid: Buffer) {\n this.setInput(inputIndex, psbtIn.PREVIOUS_TXID, b(), txid);\n }\n getInputPreviousTxid(inputIndex: number): Buffer {\n return this.getInput(inputIndex, psbtIn.PREVIOUS_TXID, b());\n }\n setInputOutputIndex(inputIndex: number, outputIndex: number) {\n this.setInput(inputIndex, psbtIn.OUTPUT_INDEX, b(), uint32LE(outputIndex));\n }\n getInputOutputIndex(inputIndex: number): number {\n return this.getInput(inputIndex, psbtIn.OUTPUT_INDEX, b()).readUInt32LE(0);\n }\n setInputSequence(inputIndex: number, sequence: number) {\n this.setInput(inputIndex, psbtIn.SEQUENCE, b(), uint32LE(sequence));\n }\n getInputSequence(inputIndex: number): number {\n return (\n this.getInputOptional(inputIndex, psbtIn.SEQUENCE, b())?.readUInt32LE(\n 0\n ) ?? 0xffffffff\n );\n }\n setInputTapKeySig(inputIndex: number, sig: Buffer) {\n this.setInput(inputIndex, psbtIn.TAP_KEY_SIG, b(), sig);\n }\n getInputTapKeySig(inputIndex: number): Buffer | undefined {\n return this.getInputOptional(inputIndex, psbtIn.TAP_KEY_SIG, b());\n }\n setInputTapBip32Derivation(\n inputIndex: number,\n pubkey: Buffer,\n hashes: Buffer[],\n masterFingerprint: Buffer,\n path: number[]\n ) {\n if (pubkey.length != 32)\n throw new Error(\"Invalid pubkey length: \" + pubkey.length);\n const buf = this.encodeTapBip32Derivation(hashes, masterFingerprint, path);\n this.setInput(inputIndex, psbtIn.TAP_BIP32_DERIVATION, pubkey, buf);\n }\n getInputTapBip32Derivation(\n inputIndex: number,\n pubkey: Buffer\n ): { hashes: Buffer[]; masterFingerprint: Buffer; path: number[] } {\n const buf = this.getInput(inputIndex, psbtIn.TAP_BIP32_DERIVATION, pubkey);\n return this.decodeTapBip32Derivation(buf);\n }\n getInputKeyDatas(inputIndex: number, keyType: KeyType): Buffer[] {\n return this.getKeyDatas(this.inputMaps[inputIndex], keyType);\n }\n\n setOutputRedeemScript(outputIndex: number, redeemScript: Buffer) {\n this.setOutput(outputIndex, psbtOut.REDEEM_SCRIPT, b(), redeemScript);\n }\n getOutputRedeemScript(outputIndex: number): Buffer {\n return this.getOutput(outputIndex, psbtOut.REDEEM_SCRIPT, b());\n }\n setOutputBip32Derivation(\n outputIndex: number,\n pubkey: Buffer,\n masterFingerprint: Buffer,\n path: number[]\n ) {\n this.setOutput(\n outputIndex,\n psbtOut.BIP_32_DERIVATION,\n pubkey,\n this.encodeBip32Derivation(masterFingerprint, path)\n );\n }\n getOutputBip32Derivation(\n outputIndex: number,\n pubkey: Buffer\n ): { masterFingerprint: Buffer; path: number[] } {\n const buf = this.getOutput(outputIndex, psbtOut.BIP_32_DERIVATION, pubkey);\n return this.decodeBip32Derivation(buf);\n }\n setOutputAmount(outputIndex: number, amount: number) {\n this.setOutput(outputIndex, psbtOut.AMOUNT, b(), uint64LE(amount));\n }\n getOutputAmount(outputIndex: number): number {\n const buf = this.getOutput(outputIndex, psbtOut.AMOUNT, b());\n return unsafeFrom64bitLE(buf);\n }\n setOutputScript(outputIndex: number, scriptPubKey: Buffer) {\n this.setOutput(outputIndex, psbtOut.SCRIPT, b(), scriptPubKey);\n }\n getOutputScript(outputIndex: number): Buffer {\n return this.getOutput(outputIndex, psbtOut.SCRIPT, b());\n }\n setOutputTapBip32Derivation(\n outputIndex: number,\n pubkey: Buffer,\n hashes: Buffer[],\n fingerprint: Buffer,\n path: number[]\n ) {\n const buf = this.encodeTapBip32Derivation(hashes, fingerprint, path);\n this.setOutput(outputIndex, psbtOut.TAP_BIP32_DERIVATION, pubkey, buf);\n }\n getOutputTapBip32Derivation(\n outputIndex: number,\n pubkey: Buffer\n ): { hashes: Buffer[]; masterFingerprint: Buffer; path: number[] } {\n const buf = this.getOutput(\n outputIndex,\n psbtOut.TAP_BIP32_DERIVATION,\n pubkey\n );\n return this.decodeTapBip32Derivation(buf);\n }\n\n deleteInputEntries(inputIndex: number, keyTypes: psbtIn[]) {\n const map = this.inputMaps[inputIndex];\n map.forEach((_v, k, m) => {\n if (this.isKeyType(k, keyTypes)) {\n m.delete(k);\n }\n });\n }\n\n copy(to: PsbtV2) {\n this.copyMap(this.globalMap, to.globalMap);\n this.copyMaps(this.inputMaps, to.inputMaps);\n this.copyMaps(this.outputMaps, to.outputMaps);\n }\n copyMaps(from: Map[], to: Map[]) {\n from.forEach((m, index) => {\n const to_index = new Map();\n this.copyMap(m, to_index);\n to[index] = to_index;\n });\n }\n copyMap(from: Map, to: Map) {\n from.forEach((v, k) => to.set(k, Buffer.from(v)));\n }\n serialize(): Buffer {\n const buf = new BufferWriter();\n buf.writeSlice(Buffer.from([0x70, 0x73, 0x62, 0x74, 0xff]));\n serializeMap(buf, this.globalMap);\n this.inputMaps.forEach((map) => {\n serializeMap(buf, map);\n });\n this.outputMaps.forEach((map) => {\n serializeMap(buf, map);\n });\n return buf.buffer();\n }\n deserialize(psbt: Buffer) {\n const buf = new BufferReader(psbt);\n if (!buf.readSlice(5).equals(PSBT_MAGIC_BYTES)) {\n throw new Error(\"Invalid magic bytes\");\n }\n while (this.readKeyPair(this.globalMap, buf));\n for (let i = 0; i < this.getGlobalInputCount(); i++) {\n this.inputMaps[i] = new Map();\n while (this.readKeyPair(this.inputMaps[i], buf));\n }\n for (let i = 0; i < this.getGlobalOutputCount(); i++) {\n this.outputMaps[i] = new Map();\n while (this.readKeyPair(this.outputMaps[i], buf));\n }\n }\n private readKeyPair(map: Map, buf: BufferReader): boolean {\n const keyLen = buf.readVarInt();\n if (keyLen == 0) {\n return false;\n }\n const keyType = buf.readUInt8();\n const keyData = buf.readSlice(keyLen - 1);\n const value = buf.readVarSlice();\n set(map, keyType, keyData, value);\n return true;\n }\n private getKeyDatas(map: Map, keyType: KeyType): Buffer[] {\n const result: Buffer[] = [];\n map.forEach((_v, k) => {\n if (this.isKeyType(k, [keyType])) {\n result.push(Buffer.from(k.substring(2), \"hex\"));\n }\n });\n return result;\n }\n private isKeyType(hexKey: string, keyTypes: KeyType[]): boolean {\n const keyType = Buffer.from(hexKey.substring(0, 2), \"hex\").readUInt8(0);\n return keyTypes.some((k) => k == keyType);\n }\n private setGlobal(keyType: KeyType, value: Buffer) {\n const key = new Key(keyType, Buffer.from([]));\n this.globalMap.set(key.toString(), value);\n }\n private getGlobal(keyType: KeyType): Buffer {\n return get(this.globalMap, keyType, b(), false)!;\n }\n private getGlobalOptional(keyType: KeyType): Buffer | undefined {\n return get(this.globalMap, keyType, b(), true);\n }\n private setInput(\n index: number,\n keyType: KeyType,\n keyData: Buffer,\n value: Buffer\n ) {\n set(this.getMap(index, this.inputMaps), keyType, keyData, value);\n }\n private getInput(index: number, keyType: KeyType, keyData: Buffer): Buffer {\n return get(this.inputMaps[index], keyType, keyData, false)!;\n }\n private getInputOptional(\n index: number,\n keyType: KeyType,\n keyData: Buffer\n ): Buffer | undefined {\n return get(this.inputMaps[index], keyType, keyData, true);\n }\n private setOutput(\n index: number,\n keyType: KeyType,\n keyData: Buffer,\n value: Buffer\n ) {\n set(this.getMap(index, this.outputMaps), keyType, keyData, value);\n }\n private getOutput(index: number, keyType: KeyType, keyData: Buffer): Buffer {\n return get(this.outputMaps[index], keyType, keyData, false)!;\n }\n private getMap(\n index: number,\n maps: Map[]\n ): Map {\n if (maps[index]) {\n return maps[index];\n }\n return (maps[index] = new Map());\n }\n private encodeBip32Derivation(masterFingerprint: Buffer, path: number[]) {\n const buf = new BufferWriter();\n this.writeBip32Derivation(buf, masterFingerprint, path);\n return buf.buffer();\n }\n private decodeBip32Derivation(buffer: Buffer): {\n masterFingerprint: Buffer;\n path: number[];\n } {\n const buf = new BufferReader(buffer);\n return this.readBip32Derivation(buf);\n }\n private writeBip32Derivation(\n buf: BufferWriter,\n masterFingerprint: Buffer,\n path: number[]\n ) {\n buf.writeSlice(masterFingerprint);\n path.forEach((element) => {\n buf.writeUInt32(element);\n });\n }\n private readBip32Derivation(buf: BufferReader): {\n masterFingerprint: Buffer;\n path: number[];\n } {\n const masterFingerprint = buf.readSlice(4);\n const path: number[] = [];\n while (buf.offset < buf.buffer.length) {\n path.push(buf.readUInt32());\n }\n return { masterFingerprint, path };\n }\n private encodeTapBip32Derivation(\n hashes: Buffer[],\n masterFingerprint: Buffer,\n path: number[]\n ): Buffer {\n const buf = new BufferWriter();\n buf.writeVarInt(hashes.length);\n hashes.forEach((h) => {\n buf.writeSlice(h);\n });\n this.writeBip32Derivation(buf, masterFingerprint, path);\n return buf.buffer();\n }\n private decodeTapBip32Derivation(buffer: Buffer): {\n hashes: Buffer[];\n masterFingerprint: Buffer;\n path: number[];\n } {\n const buf = new BufferReader(buffer);\n const hashCount = buf.readVarInt();\n const hashes: Buffer[] = [];\n for (let i = 0; i < hashCount; i++) {\n hashes.push(buf.readSlice(32));\n }\n const deriv = this.readBip32Derivation(buf);\n return { hashes, ...deriv };\n }\n}\nfunction get(\n map: Map,\n keyType: KeyType,\n keyData: Buffer,\n acceptUndefined: boolean\n): Buffer | undefined {\n if (!map) throw Error(\"No such map\");\n const key = new Key(keyType, keyData);\n const value = map.get(key.toString());\n if (!value) {\n if (acceptUndefined) {\n return undefined;\n }\n throw new NoSuchEntry(key.toString());\n }\n // Make sure to return a copy, to protect the underlying data.\n return Buffer.from(value);\n}\ntype KeyType = number;\n\nclass Key {\n keyType: KeyType;\n keyData: Buffer;\n constructor(keyType: KeyType, keyData: Buffer) {\n this.keyType = keyType;\n this.keyData = keyData;\n }\n toString(): string {\n const buf = new BufferWriter();\n this.toBuffer(buf);\n return buf.buffer().toString(\"hex\");\n }\n serialize(buf: BufferWriter) {\n buf.writeVarInt(1 + this.keyData.length);\n this.toBuffer(buf);\n }\n private toBuffer(buf: BufferWriter) {\n buf.writeUInt8(this.keyType);\n buf.writeSlice(this.keyData);\n }\n}\nclass KeyPair {\n key: Key;\n value: Buffer;\n constructor(key: Key, value: Buffer) {\n this.key = key;\n this.value = value;\n }\n serialize(buf: BufferWriter) {\n this.key.serialize(buf);\n buf.writeVarSlice(this.value);\n }\n}\nfunction createKey(buf: Buffer): Key {\n return new Key(buf.readUInt8(0), buf.slice(1));\n}\nfunction serializeMap(buf: BufferWriter, map: Map) {\n for (const k in map.keys) {\n const value = map.get(k)!;\n const keyPair = new KeyPair(createKey(Buffer.from(k, \"hex\")), value);\n keyPair.serialize(buf);\n }\n buf.writeUInt8(0);\n}\n\nfunction b(): Buffer {\n return Buffer.from([]);\n}\nfunction set(\n map: Map,\n keyType: KeyType,\n keyData: Buffer,\n value: Buffer\n) {\n const key = new Key(keyType, keyData);\n map.set(key.toString(), value);\n}\nfunction uint32LE(n: number): Buffer {\n const b = Buffer.alloc(4);\n b.writeUInt32LE(n, 0);\n return b;\n}\nfunction uint64LE(n: number): Buffer {\n return unsafeTo64bitLE(n);\n}\nfunction varint(n: number): Buffer {\n const b = new BufferWriter();\n b.writeVarInt(n);\n return b.buffer();\n}\nfunction fromVarint(buf: Buffer): number {\n return new BufferReader(buf).readVarInt();\n}\n", "import { BufferWriter } from \"../buffertools\";\nimport { psbtIn, PsbtV2 } from \"./psbtv2\";\n\n/**\n * This roughly implements the \"input finalizer\" role of BIP370 (PSBTv2\n * https://github.com/bitcoin/bips/blob/master/bip-0370.mediawiki). However\n * the role is documented in BIP174 (PSBTv0\n * https://github.com/bitcoin/bips/blob/master/bip-0174.mediawiki).\n *\n * Verify that all inputs have a signature, and set inputFinalScriptwitness\n * and/or inputFinalScriptSig depending on the type of the spent outputs. Clean\n * fields that aren't useful anymore, partial signatures, redeem script and\n * derivation paths.\n *\n * @param psbt The psbt with all signatures added as partial sigs, either\n * through PSBT_IN_PARTIAL_SIG or PSBT_IN_TAP_KEY_SIG\n */\nexport function finalize(psbt: PsbtV2): void {\n // First check that each input has a signature\n const inputCount = psbt.getGlobalInputCount();\n for (let i = 0; i < inputCount; i++) {\n const legacyPubkeys = psbt.getInputKeyDatas(i, psbtIn.PARTIAL_SIG);\n const taprootSig = psbt.getInputTapKeySig(i);\n if (legacyPubkeys.length == 0 && !taprootSig) {\n throw Error(`No signature for input ${i} present`);\n }\n if (legacyPubkeys.length > 0) {\n if (legacyPubkeys.length > 1) {\n throw Error(\n `Expected exactly one signature, got ${legacyPubkeys.length}`\n );\n }\n if (taprootSig) {\n throw Error(\"Both taproot and non-taproot signatures present.\");\n }\n\n const isSegwitV0 = !!psbt.getInputWitnessUtxo(i);\n const redeemScript = psbt.getInputRedeemScript(i);\n const isWrappedSegwit = !!redeemScript;\n const signature = psbt.getInputPartialSig(i, legacyPubkeys[0]);\n if (!signature)\n throw new Error(\"Expected partial signature for input \" + i);\n if (isSegwitV0) {\n const witnessBuf = new BufferWriter();\n witnessBuf.writeVarInt(2);\n witnessBuf.writeVarInt(signature.length);\n witnessBuf.writeSlice(signature);\n witnessBuf.writeVarInt(legacyPubkeys[0].length);\n witnessBuf.writeSlice(legacyPubkeys[0]);\n psbt.setInputFinalScriptwitness(i, witnessBuf.buffer());\n if (isWrappedSegwit) {\n if (!redeemScript || redeemScript.length == 0) {\n throw new Error(\n \"Expected non-empty redeemscript. Can't finalize intput \" + i\n );\n }\n const scriptSigBuf = new BufferWriter();\n // Push redeemScript length\n scriptSigBuf.writeUInt8(redeemScript.length);\n scriptSigBuf.writeSlice(redeemScript);\n psbt.setInputFinalScriptsig(i, scriptSigBuf.buffer());\n }\n } else {\n // Legacy input\n const scriptSig = new BufferWriter();\n writePush(scriptSig, signature);\n writePush(scriptSig, legacyPubkeys[0]);\n psbt.setInputFinalScriptsig(i, scriptSig.buffer());\n }\n } else {\n // Taproot input\n const signature = psbt.getInputTapKeySig(i);\n if (!signature) {\n throw Error(\"No taproot signature found\");\n }\n if (signature.length != 64 && signature.length != 65) {\n throw Error(\"Unexpected length of schnorr signature.\");\n }\n const witnessBuf = new BufferWriter();\n witnessBuf.writeVarInt(1);\n witnessBuf.writeVarSlice(signature);\n psbt.setInputFinalScriptwitness(i, witnessBuf.buffer());\n }\n clearFinalizedInput(psbt, i);\n }\n}\n\n/**\n * Deletes fields that are no longer neccesary from the psbt.\n *\n * Note, the spec doesn't say anything about removing ouput fields\n * like PSBT_OUT_BIP32_DERIVATION_PATH and others, so we keep them\n * without actually knowing why. I think we should remove them too.\n */\nfunction clearFinalizedInput(psbt: PsbtV2, inputIndex: number) {\n const keyTypes = [\n psbtIn.BIP32_DERIVATION,\n psbtIn.PARTIAL_SIG,\n psbtIn.TAP_BIP32_DERIVATION,\n psbtIn.TAP_KEY_SIG,\n ];\n const witnessUtxoAvailable = !!psbt.getInputWitnessUtxo(inputIndex);\n const nonWitnessUtxoAvailable = !!psbt.getInputNonWitnessUtxo(inputIndex);\n if (witnessUtxoAvailable && nonWitnessUtxoAvailable) {\n // Remove NON_WITNESS_UTXO for segwit v0 as it's only needed while signing.\n // Segwit v1 doesn't have NON_WITNESS_UTXO set.\n // See https://github.com/bitcoin/bips/blob/master/bip-0174.mediawiki#cite_note-7\n keyTypes.push(psbtIn.NON_WITNESS_UTXO);\n }\n psbt.deleteInputEntries(inputIndex, keyTypes);\n}\n\n/**\n * Writes a script push operation to buf, which looks different\n * depending on the size of the data. See\n * https://en.bitcoin.it/wiki/Script#Constants\n *\n * @param buf the BufferWriter to write to\n * @param data the Buffer to be pushed.\n */\nfunction writePush(buf: BufferWriter, data: Buffer) {\n if (data.length <= 75) {\n buf.writeUInt8(data.length);\n } else if (data.length <= 256) {\n buf.writeUInt8(76);\n buf.writeUInt8(data.length);\n } else if (data.length <= 256 * 256) {\n buf.writeUInt8(77);\n const b = Buffer.alloc(2);\n b.writeUInt16LE(data.length, 0);\n buf.writeSlice(b);\n }\n buf.writeSlice(data);\n}\n", "export function getVarint(data: Buffer, offset: number): [number, number] {\n if (data[offset] < 0xfd) {\n return [data[offset], 1];\n }\n\n if (data[offset] === 0xfd) {\n return [(data[offset + 2] << 8) + data[offset + 1], 3];\n }\n\n if (data[offset] === 0xfe) {\n return [\n (data[offset + 4] << 24) +\n (data[offset + 3] << 16) +\n (data[offset + 2] << 8) +\n data[offset + 1],\n 5,\n ];\n }\n\n throw new Error(\"getVarint called with unexpected parameters\");\n}\nexport function createVarint(value: number): Buffer {\n if (value < 0xfd) {\n const buffer = Buffer.alloc(1);\n buffer[0] = value;\n return buffer;\n }\n\n if (value <= 0xffff) {\n const buffer = Buffer.alloc(3);\n buffer[0] = 0xfd;\n buffer[1] = value & 0xff;\n buffer[2] = (value >> 8) & 0xff;\n return buffer;\n }\n\n const buffer = Buffer.alloc(5);\n buffer[0] = 0xfe;\n buffer[1] = value & 0xff;\n buffer[2] = (value >> 8) & 0xff;\n buffer[3] = (value >> 16) & 0xff;\n buffer[4] = (value >> 24) & 0xff;\n return buffer;\n}\n", "import type { Transaction } from \"./types\";\nimport { createVarint } from \"./varint\";\n\n/**\n @example\nconst tx1 = btc.splitTransaction(\"01000000014ea60aeac5252c14291d428915bd7ccd1bfc4af009f4d4dc57ae597ed0420b71010000008a47304402201f36a12c240dbf9e566bc04321050b1984cd6eaf6caee8f02bb0bfec08e3354b022012ee2aeadcbbfd1e92959f57c15c1c6debb757b798451b104665aa3010569b49014104090b15bde569386734abf2a2b99f9ca6a50656627e77de663ca7325702769986cf26cc9dd7fdea0af432c8e2becc867c932e1b9dd742f2a108997c2252e2bdebffffffff0281b72e00000000001976a91472a5d75c8d2d0565b656a5232703b167d50d5a2b88aca0860100000000001976a9144533f5fb9b4817f713c48f0bfe96b9f50c476c9b88ac00000000\");\nconst outputScript = btc.serializeTransactionOutputs(tx1).toString('hex');\n */\nexport function serializeTransactionOutputs({ outputs }: Transaction): Buffer {\n let outputBuffer = Buffer.alloc(0);\n\n if (typeof outputs !== \"undefined\") {\n outputBuffer = Buffer.concat([outputBuffer, createVarint(outputs.length)]);\n outputs.forEach((output) => {\n outputBuffer = Buffer.concat([\n outputBuffer,\n output.amount,\n createVarint(output.script.length),\n output.script,\n ]);\n });\n }\n\n return outputBuffer;\n}\nexport function serializeTransaction(\n transaction: Transaction,\n skipWitness: boolean,\n timestamp?: Buffer,\n additionals: string[] = []\n) {\n const isDecred = additionals.includes(\"decred\");\n const isZcash = additionals.includes(\"zcash\");\n const isBech32 = additionals.includes(\"bech32\");\n let inputBuffer = Buffer.alloc(0);\n const useWitness =\n typeof transaction[\"witness\"] != \"undefined\" && !skipWitness;\n transaction.inputs.forEach((input) => {\n inputBuffer =\n isDecred || isBech32\n ? Buffer.concat([\n inputBuffer,\n input.prevout,\n Buffer.from([0x00]), //tree\n input.sequence,\n ])\n : Buffer.concat([\n inputBuffer,\n input.prevout,\n createVarint(input.script.length),\n input.script,\n input.sequence,\n ]);\n });\n let outputBuffer = serializeTransactionOutputs(transaction);\n\n if (\n typeof transaction.outputs !== \"undefined\" &&\n typeof transaction.locktime !== \"undefined\"\n ) {\n outputBuffer = Buffer.concat([\n outputBuffer,\n (useWitness && transaction.witness) || Buffer.alloc(0),\n transaction.locktime,\n transaction.nExpiryHeight || Buffer.alloc(0),\n transaction.extraData || Buffer.alloc(0),\n ]);\n }\n // from to https://zips.z.cash/zip-0225, zcash is different with other coins, the lock_time and nExpiryHeight fields are before the inputs and outputs\n if (isZcash) {\n return Buffer.concat([\n transaction.version,\n transaction.nVersionGroupId || Buffer.alloc(0),\n Buffer.from([0xb4, 0xd0, 0xd6, 0xc2]), // Zcash Consensus Branch ID: 0xC2D6D0B4 refer to https://z.cash/upgrade/nu5/\n transaction.locktime || Buffer.from([0x00, 0x00, 0x00, 0x00]),\n transaction.nExpiryHeight || Buffer.from([0x00, 0x00, 0x00, 0x00]),\n useWitness ? Buffer.from(\"0001\", \"hex\") : Buffer.alloc(0),\n createVarint(transaction.inputs.length),\n inputBuffer,\n outputBuffer,\n ]);\n }\n return Buffer.concat([\n transaction.version,\n timestamp ? timestamp : Buffer.alloc(0),\n transaction.nVersionGroupId || Buffer.alloc(0),\n useWitness ? Buffer.from(\"0001\", \"hex\") : Buffer.alloc(0),\n createVarint(transaction.inputs.length),\n inputBuffer,\n outputBuffer,\n ]);\n}\n", "import bs58 from \"bs58\";\nimport RIPEMD160 from \"ripemd160\";\nimport sha from \"sha.js\";\nimport type Transport from \"@ledgerhq/hw-transport\";\nimport type { CreateTransactionArg } from \"./createTransaction\";\nimport { createTransaction } from \"./createTransaction\";\nimport type { AddressFormat } from \"./getWalletPublicKey\";\nimport { getWalletPublicKey } from \"./getWalletPublicKey\";\nimport { pathArrayToString, pathStringToArray } from \"./bip32\";\nexport type { AddressFormat };\n\n/**\n * Bitcoin API.\n *\n * @example\n * import Btc from \"@ledgerhq/hw-app-btc\";\n * const btc = new Btc({ transport, currency: \"zcash\" });\n */\n\nexport default class BtcOld {\n constructor(private transport: Transport) {}\n\n private derivationsCache = {};\n private async derivatePath(path: string) {\n if (this.derivationsCache[path]) return this.derivationsCache[path];\n const res = await getWalletPublicKey(this.transport, {\n path,\n });\n this.derivationsCache[path] = res;\n return res;\n }\n\n async getWalletXpub({\n path,\n xpubVersion,\n }: {\n path: string;\n xpubVersion: number;\n }): Promise {\n const pathElements = pathStringToArray(path);\n const parentPath = pathElements.slice(0, -1);\n const parentDerivation = await this.derivatePath(\n pathArrayToString(parentPath)\n );\n const accountDerivation = await this.derivatePath(path);\n const fingerprint = makeFingerprint(\n compressPublicKeySECP256(Buffer.from(parentDerivation.publicKey, \"hex\"))\n );\n const xpub = makeXpub(\n xpubVersion,\n pathElements.length,\n fingerprint,\n pathElements[pathElements.length - 1],\n Buffer.from(accountDerivation.chainCode, \"hex\"),\n compressPublicKeySECP256(Buffer.from(accountDerivation.publicKey, \"hex\"))\n );\n return xpub;\n }\n\n /**\n * @param path a BIP 32 path\n * @param options an object with optional these fields:\n *\n * - verify (boolean) will ask user to confirm the address on the device\n *\n * - format (\"legacy\" | \"p2sh\" | \"bech32\" | \"cashaddr\") to use different bitcoin address formatter.\n *\n * NB The normal usage is to use:\n *\n * - legacy format with 44' paths\n *\n * - p2sh format with 49' paths\n *\n * - bech32 format with 173' paths\n *\n * - cashaddr in case of Bitcoin Cash\n *\n * @example\n * btc.getWalletPublicKey(\"44'/0'/0'/0/0\").then(o => o.bitcoinAddress)\n * btc.getWalletPublicKey(\"49'/0'/0'/0/0\", { format: \"p2sh\" }).then(o => o.bitcoinAddress)\n */\n getWalletPublicKey(\n path: string,\n opts?: {\n verify?: boolean;\n format?: AddressFormat;\n }\n ): Promise<{\n publicKey: string;\n bitcoinAddress: string;\n chainCode: string;\n }> {\n if (opts?.format === \"bech32m\") {\n throw new Error(\"Unsupported address format bech32m\");\n }\n return getWalletPublicKey(this.transport, { ...opts, path });\n }\n\n /**\n * To sign a transaction involving standard (P2PKH) inputs, call createTransaction with the following parameters\n * @param inputs is an array of [ transaction, output_index, optional redeem script, optional sequence ] where\n *\n * * transaction is the previously computed transaction object for this UTXO\n * * output_index is the output in the transaction used as input for this UTXO (counting from 0)\n * * redeem script is the optional redeem script to use when consuming a Segregated Witness input\n * * sequence is the sequence number to use for this input (when using RBF), or non present\n * @param associatedKeysets is an array of BIP 32 paths pointing to the path to the private key used for each UTXO\n * @param changePath is an optional BIP 32 path pointing to the path to the public key used to compute the change address\n * @param outputScriptHex is the hexadecimal serialized outputs of the transaction to sign\n * @param lockTime is the optional lockTime of the transaction to sign, or default (0)\n * @param sigHashType is the hash type of the transaction to sign, or default (all)\n * @param segwit is an optional boolean indicating wether to use segwit or not\n * @param initialTimestamp is an optional timestamp of the function call to use for coins that necessitate timestamps only, (not the one that the tx will include)\n * @param additionals list of additionnal options\n *\n * - \"bech32\" for spending native segwit outputs\n * - \"abc\" for bch\n * - \"gold\" for btg\n * - \"bipxxx\" for using BIPxxx\n * - \"sapling\" to indicate a zec transaction is supporting sapling (to be set over block 419200)\n * @param expiryHeight is an optional Buffer for zec overwinter / sapling Txs\n * @param useTrustedInputForSegwit trust inputs for segwit transactions\n * @return the signed transaction ready to be broadcast\n * @example\n btc.createTransaction({\n inputs: [ [tx1, 1] ],\n associatedKeysets: [\"0'/0/0\"],\n outputScriptHex: \"01905f0100000000001976a91472a5d75c8d2d0565b656a5232703b167d50d5a2b88ac\"\n }).then(res => ...);\n */\n createPaymentTransaction(arg: CreateTransactionArg): Promise {\n if (arguments.length > 1) {\n throw new Error(\n \"@ledgerhq/hw-app-btc: createPaymentTransaction multi argument signature is deprecated. please switch to named parameters.\"\n );\n }\n return createTransaction(this.transport, arg);\n }\n}\n\nfunction makeFingerprint(compressedPubKey) {\n return hash160(compressedPubKey).slice(0, 4);\n}\n\nfunction asBufferUInt32BE(n: number): Buffer {\n const buf = Buffer.allocUnsafe(4);\n buf.writeUInt32BE(n, 0);\n return buf;\n}\n\nconst compressPublicKeySECP256 = (publicKey: Buffer) =>\n Buffer.concat([\n Buffer.from([0x02 + (publicKey[64] & 0x01)]),\n publicKey.slice(1, 33),\n ]);\n\nfunction makeXpub(\n version: number,\n depth: number,\n parentFingerprint: Buffer,\n index: number,\n chainCode: Buffer,\n pubKey: Buffer\n) {\n const indexBuffer = asBufferUInt32BE(index);\n indexBuffer[0] |= 0x80;\n const extendedKeyBytes = Buffer.concat([\n asBufferUInt32BE(version),\n Buffer.from([depth]),\n parentFingerprint,\n indexBuffer,\n chainCode,\n pubKey,\n ]);\n const checksum = hash256(extendedKeyBytes).slice(0, 4);\n return bs58.encode(Buffer.concat([extendedKeyBytes, checksum]));\n}\n\nfunction sha256(buffer: Buffer | string) {\n return sha(\"sha256\").update(buffer).digest();\n}\nfunction hash256(buffer: Buffer | string) {\n return sha256(sha256(buffer));\n}\nfunction ripemd160(buffer: Buffer | string) {\n return new RIPEMD160().update(buffer).digest();\n}\nfunction hash160(buffer: Buffer | string) {\n return ripemd160(sha256(buffer));\n}\n", "import { log } from \"@ledgerhq/logs\";\nimport type Transport from \"@ledgerhq/hw-transport\";\nimport { hashPublicKey } from \"./hashPublicKey\";\nimport { getWalletPublicKey } from \"./getWalletPublicKey\";\nimport type { AddressFormat } from \"./getWalletPublicKey\";\nimport { getTrustedInput } from \"./getTrustedInput\";\nimport { startUntrustedHashTransactionInput } from \"./startUntrustedHashTransactionInput\";\nimport { serializeTransaction } from \"./serializeTransaction\";\nimport { getTrustedInputBIP143 } from \"./getTrustedInputBIP143\";\nimport { compressPublicKey } from \"./compressPublicKey\";\nimport { signTransaction } from \"./signTransaction\";\nimport { hashOutputFull, provideOutputFullChangePath } from \"./finalizeInput\";\nimport { getAppAndVersion } from \"./getAppAndVersion\";\nimport type { TransactionOutput, Transaction } from \"./types\";\nimport {\n DEFAULT_LOCKTIME,\n DEFAULT_SEQUENCE,\n SIGHASH_ALL,\n OP_DUP,\n OP_HASH160,\n HASH_SIZE,\n OP_EQUALVERIFY,\n OP_CHECKSIG,\n} from \"./constants\";\nimport { shouldUseTrustedInputForSegwit } from \"./shouldUseTrustedInputForSegwit\";\nexport type { AddressFormat };\nconst defaultsSignTransaction = {\n lockTime: DEFAULT_LOCKTIME,\n sigHashType: SIGHASH_ALL,\n segwit: false,\n additionals: [],\n onDeviceStreaming: (_e) => {},\n onDeviceSignatureGranted: () => {},\n onDeviceSignatureRequested: () => {},\n};\n\n/**\n *\n */\nexport type CreateTransactionArg = {\n inputs: Array<\n [Transaction, number, string | null | undefined, number | null | undefined]\n >;\n associatedKeysets: string[];\n changePath?: string;\n outputScriptHex: string;\n lockTime?: number;\n sigHashType?: number;\n segwit?: boolean;\n initialTimestamp?: number;\n additionals: Array;\n expiryHeight?: Buffer;\n useTrustedInputForSegwit?: boolean;\n onDeviceStreaming?: (arg0: {\n progress: number;\n total: number;\n index: number;\n }) => void;\n onDeviceSignatureRequested?: () => void;\n onDeviceSignatureGranted?: () => void;\n};\nexport async function createTransaction(\n transport: Transport,\n arg: CreateTransactionArg\n): Promise {\n const signTx = { ...defaultsSignTransaction, ...arg };\n const {\n inputs,\n associatedKeysets,\n changePath,\n outputScriptHex,\n lockTime,\n sigHashType,\n segwit,\n initialTimestamp,\n additionals,\n expiryHeight,\n onDeviceStreaming,\n onDeviceSignatureGranted,\n onDeviceSignatureRequested,\n } = signTx;\n let useTrustedInputForSegwit = signTx.useTrustedInputForSegwit;\n\n if (useTrustedInputForSegwit === undefined) {\n try {\n const a = await getAppAndVersion(transport);\n useTrustedInputForSegwit = shouldUseTrustedInputForSegwit(a);\n } catch (e: any) {\n if (e.statusCode === 0x6d00) {\n useTrustedInputForSegwit = false;\n } else {\n throw e;\n }\n }\n }\n\n // loop: 0 or 1 (before and after)\n // i: index of the input being streamed\n // i goes on 0...n, inluding n. in order for the progress value to go to 1\n // we normalize the 2 loops to make a global percentage\n const notify = (loop, i) => {\n const { length } = inputs;\n if (length < 3) return; // there is not enough significant event to worth notifying (aka just use a spinner)\n\n const index = length * loop + i;\n const total = 2 * length;\n const progress = index / total;\n onDeviceStreaming({\n progress,\n total,\n index,\n });\n };\n\n const isDecred = additionals.includes(\"decred\");\n const isZcash = additionals.includes(\"zcash\");\n const isXST = additionals.includes(\"stealthcoin\");\n const startTime = Date.now();\n const sapling = additionals.includes(\"sapling\");\n const bech32 = segwit && additionals.includes(\"bech32\");\n const useBip143 =\n segwit ||\n (!!additionals &&\n (additionals.includes(\"abc\") ||\n additionals.includes(\"gold\") ||\n additionals.includes(\"bip143\"))) ||\n (!!expiryHeight && !isDecred);\n // Inputs are provided as arrays of [transaction, output_index, optional redeem script, optional sequence]\n // associatedKeysets are provided as arrays of [path]\n const lockTimeBuffer = Buffer.alloc(4);\n lockTimeBuffer.writeUInt32LE(lockTime, 0);\n const nullScript = Buffer.alloc(0);\n const nullPrevout = Buffer.alloc(0);\n const defaultVersion = Buffer.alloc(4);\n !!expiryHeight && !isDecred\n ? defaultVersion.writeUInt32LE(\n isZcash ? 0x80000005 : sapling ? 0x80000004 : 0x80000003,\n 0\n ) // v5 format for zcash refer to https://zips.z.cash/zip-0225\n : isXST\n ? defaultVersion.writeUInt32LE(2, 0)\n : defaultVersion.writeUInt32LE(1, 0);\n // Default version to 2 for XST not to have timestamp\n const trustedInputs: Array = [];\n const regularOutputs: Array = [];\n const signatures: Buffer[] = [];\n const publicKeys: Buffer[] = [];\n let firstRun = true;\n const resuming = false;\n const targetTransaction: Transaction = {\n inputs: [],\n version: defaultVersion,\n timestamp: Buffer.alloc(0),\n };\n const getTrustedInputCall =\n useBip143 && !useTrustedInputForSegwit\n ? getTrustedInputBIP143\n : getTrustedInput;\n const outputScript = Buffer.from(outputScriptHex, \"hex\");\n notify(0, 0);\n // first pass on inputs to get trusted inputs\n for (const input of inputs) {\n if (!resuming) {\n const trustedInput = await getTrustedInputCall(\n transport,\n input[1],\n input[0],\n additionals\n );\n log(\"hw\", \"got trustedInput=\" + trustedInput);\n const sequence = Buffer.alloc(4);\n sequence.writeUInt32LE(\n input.length >= 4 && typeof input[3] === \"number\"\n ? input[3]\n : DEFAULT_SEQUENCE,\n 0\n );\n trustedInputs.push({\n trustedInput: true,\n value: Buffer.from(trustedInput, \"hex\"),\n sequence,\n });\n }\n\n const { outputs } = input[0];\n const index = input[1];\n\n if (outputs && index <= outputs.length - 1) {\n regularOutputs.push(outputs[index]);\n }\n\n if (expiryHeight && !isDecred) {\n targetTransaction.nVersionGroupId = Buffer.from(\n // nVersionGroupId is 0x26A7270A for zcash from https://z.cash/upgrade/nu5/\n isZcash\n ? [0x0a, 0x27, 0xa7, 0x26]\n : sapling\n ? [0x85, 0x20, 0x2f, 0x89]\n : [0x70, 0x82, 0xc4, 0x03]\n );\n targetTransaction.nExpiryHeight = expiryHeight;\n // For sapling : valueBalance (8), nShieldedSpend (1), nShieldedOutput (1), nJoinSplit (1)\n // Overwinter : use nJoinSplit (1)\n targetTransaction.extraData = Buffer.from(\n sapling\n ? [0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00]\n : [0x00]\n );\n } else if (isDecred) {\n targetTransaction.nExpiryHeight = expiryHeight;\n }\n }\n\n targetTransaction.inputs = inputs.map((input, idx) => {\n const sequence = Buffer.alloc(4);\n sequence.writeUInt32LE(\n input.length >= 4 && typeof input[3] === \"number\"\n ? input[3]\n : DEFAULT_SEQUENCE,\n 0\n );\n return {\n script: isZcash ? regularOutputs[idx].script : nullScript,\n prevout: nullPrevout,\n sequence,\n };\n });\n\n if (!resuming) {\n // Collect public keys\n const result: {\n publicKey: string;\n bitcoinAddress: string;\n chainCode: string;\n }[] = [];\n\n for (let i = 0; i < inputs.length; i++) {\n const r = await getWalletPublicKey(transport, {\n path: associatedKeysets[i],\n });\n notify(0, i + 1);\n result.push(r);\n }\n\n for (let i = 0; i < result.length; i++) {\n publicKeys.push(\n compressPublicKey(Buffer.from(result[i].publicKey, \"hex\"))\n );\n }\n }\n\n if (initialTimestamp !== undefined) {\n targetTransaction.timestamp = Buffer.alloc(4);\n targetTransaction.timestamp.writeUInt32LE(\n Math.floor(initialTimestamp + (Date.now() - startTime) / 1000),\n 0\n );\n }\n\n onDeviceSignatureRequested();\n\n if (useBip143) {\n // Do the first run with all inputs\n await startUntrustedHashTransactionInput(\n transport,\n true,\n targetTransaction,\n trustedInputs,\n true,\n !!expiryHeight,\n additionals,\n useTrustedInputForSegwit\n );\n\n if (!resuming && changePath) {\n await provideOutputFullChangePath(transport, changePath);\n }\n\n await hashOutputFull(transport, outputScript);\n }\n\n if (!!expiryHeight && !isDecred) {\n await signTransaction(transport, \"\", lockTime, SIGHASH_ALL, expiryHeight);\n }\n\n // Do the second run with the individual transaction\n for (let i = 0; i < inputs.length; i++) {\n const input = inputs[i];\n const script =\n inputs[i].length >= 3 && typeof input[2] === \"string\"\n ? Buffer.from(input[2], \"hex\")\n : !segwit\n ? regularOutputs[i].script\n : Buffer.concat([\n Buffer.from([OP_DUP, OP_HASH160, HASH_SIZE]),\n hashPublicKey(publicKeys[i]),\n Buffer.from([OP_EQUALVERIFY, OP_CHECKSIG]),\n ]);\n const pseudoTX = Object.assign({}, targetTransaction);\n const pseudoTrustedInputs = useBip143 ? [trustedInputs[i]] : trustedInputs;\n\n if (useBip143) {\n pseudoTX.inputs = [{ ...pseudoTX.inputs[i], script }];\n } else {\n pseudoTX.inputs[i].script = script;\n }\n\n await startUntrustedHashTransactionInput(\n transport,\n !useBip143 && firstRun,\n pseudoTX,\n pseudoTrustedInputs,\n useBip143,\n !!expiryHeight && !isDecred,\n additionals,\n useTrustedInputForSegwit\n );\n\n if (!useBip143) {\n if (!resuming && changePath) {\n await provideOutputFullChangePath(transport, changePath);\n }\n\n await hashOutputFull(transport, outputScript, additionals);\n }\n\n if (firstRun) {\n onDeviceSignatureGranted();\n notify(1, 0);\n }\n\n const signature = await signTransaction(\n transport,\n associatedKeysets[i],\n lockTime,\n sigHashType,\n expiryHeight,\n additionals\n );\n notify(1, i + 1);\n signatures.push(signature);\n targetTransaction.inputs[i].script = nullScript;\n\n if (firstRun) {\n firstRun = false;\n }\n }\n\n // Populate the final input scripts\n for (let i = 0; i < inputs.length; i++) {\n if (segwit) {\n targetTransaction.witness = Buffer.alloc(0);\n\n if (!bech32) {\n targetTransaction.inputs[i].script = Buffer.concat([\n Buffer.from(\"160014\", \"hex\"),\n hashPublicKey(publicKeys[i]),\n ]);\n }\n } else {\n const signatureSize = Buffer.alloc(1);\n const keySize = Buffer.alloc(1);\n signatureSize[0] = signatures[i].length;\n keySize[0] = publicKeys[i].length;\n targetTransaction.inputs[i].script = Buffer.concat([\n signatureSize,\n signatures[i],\n keySize,\n publicKeys[i],\n ]);\n }\n\n const offset = useBip143 && !useTrustedInputForSegwit ? 0 : 4;\n targetTransaction.inputs[i].prevout = trustedInputs[i].value.slice(\n offset,\n offset + 0x24\n );\n }\n targetTransaction.locktime = lockTimeBuffer;\n let result = Buffer.concat([\n serializeTransaction(\n targetTransaction,\n false,\n targetTransaction.timestamp,\n additionals\n ),\n outputScript,\n ]);\n\n if (segwit && !isDecred) {\n let witness = Buffer.alloc(0);\n\n for (let i = 0; i < inputs.length; i++) {\n const tmpScriptData = Buffer.concat([\n Buffer.from(\"02\", \"hex\"),\n Buffer.from([signatures[i].length]),\n signatures[i],\n Buffer.from([publicKeys[i].length]),\n publicKeys[i],\n ]);\n witness = Buffer.concat([witness, tmpScriptData]);\n }\n\n result = Buffer.concat([result, witness]);\n }\n\n // from to https://zips.z.cash/zip-0225, zcash is different with other coins, the lock_time and nExpiryHeight fields are before the inputs and outputs\n if (!isZcash) {\n result = Buffer.concat([result, lockTimeBuffer]);\n if (expiryHeight) {\n result = Buffer.concat([\n result,\n targetTransaction.nExpiryHeight || Buffer.alloc(0),\n targetTransaction.extraData || Buffer.alloc(0),\n ]);\n }\n }\n if (isDecred) {\n let decredWitness = Buffer.from([targetTransaction.inputs.length]);\n inputs.forEach((input, inputIndex) => {\n decredWitness = Buffer.concat([\n decredWitness,\n Buffer.from([0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00]),\n Buffer.from([0x00, 0x00, 0x00, 0x00]), //Block height\n Buffer.from([0xff, 0xff, 0xff, 0xff]), //Block index\n Buffer.from([targetTransaction.inputs[inputIndex].script.length]),\n targetTransaction.inputs[inputIndex].script,\n ]);\n });\n result = Buffer.concat([result, decredWitness]);\n }\n if (isZcash) {\n result = Buffer.concat([result, Buffer.from([0x00, 0x00, 0x00])]);\n }\n return result.toString(\"hex\");\n}\n", "import type Transport from \"@ledgerhq/hw-transport\";\nimport { bip32asBuffer } from \"./bip32\";\n\n/**\n * address format is one of legacy | p2sh | bech32 | cashaddr\n */\nexport type AddressFormat =\n | \"legacy\"\n | \"p2sh\"\n | \"bech32\"\n | \"bech32m\"\n | \"cashaddr\";\nconst addressFormatMap = {\n legacy: 0,\n p2sh: 1,\n bech32: 2,\n cashaddr: 3,\n};\nexport async function getWalletPublicKey(\n transport: Transport,\n options: {\n path: string;\n verify?: boolean;\n format?: AddressFormat;\n }\n): Promise<{\n publicKey: string;\n bitcoinAddress: string;\n chainCode: string;\n}> {\n const { path, verify, format } = {\n verify: false,\n format: \"legacy\",\n ...options,\n };\n\n if (!(format in addressFormatMap)) {\n throw new Error(\"btc.getWalletPublicKey invalid format=\" + format);\n }\n\n const buffer = bip32asBuffer(path);\n const p1 = verify ? 1 : 0;\n const p2 = addressFormatMap[format];\n const response = await transport.send(0xe0, 0x40, p1, p2, buffer);\n const publicKeyLength = response[0];\n const addressLength = response[1 + publicKeyLength];\n const publicKey = response.slice(1, 1 + publicKeyLength).toString(\"hex\");\n const bitcoinAddress = response\n .slice(1 + publicKeyLength + 1, 1 + publicKeyLength + 1 + addressLength)\n .toString(\"ascii\");\n const chainCode = response\n .slice(\n 1 + publicKeyLength + 1 + addressLength,\n 1 + publicKeyLength + 1 + addressLength + 32\n )\n .toString(\"hex\");\n return {\n publicKey,\n bitcoinAddress,\n chainCode,\n };\n}\n", "import invariant from \"invariant\";\nimport type Transport from \"@ledgerhq/hw-transport\";\nimport type { Transaction } from \"./types\";\nimport { MAX_SCRIPT_BLOCK } from \"./constants\";\nimport { createVarint } from \"./varint\";\nexport async function getTrustedInputRaw(\n transport: Transport,\n transactionData: Buffer,\n indexLookup?: number | null | undefined\n): Promise {\n let data;\n let firstRound = false;\n\n if (typeof indexLookup === \"number\") {\n firstRound = true;\n const prefix = Buffer.alloc(4);\n prefix.writeUInt32BE(indexLookup, 0);\n data = Buffer.concat([prefix, transactionData], transactionData.length + 4);\n } else {\n data = transactionData;\n }\n\n const trustedInput = await transport.send(\n 0xe0,\n 0x42,\n firstRound ? 0x00 : 0x80,\n 0x00,\n data\n );\n const res = trustedInput.slice(0, trustedInput.length - 2).toString(\"hex\");\n return res;\n}\nexport async function getTrustedInput(\n transport: Transport,\n indexLookup: number,\n transaction: Transaction,\n additionals: Array = []\n): Promise {\n const { version, inputs, outputs, locktime, nExpiryHeight, extraData } =\n transaction;\n\n if (!outputs || !locktime) {\n throw new Error(\"getTrustedInput: locktime & outputs is expected\");\n }\n\n const isDecred = additionals.includes(\"decred\");\n const isXST = additionals.includes(\"stealthcoin\");\n\n const processScriptBlocks = async (script, sequence?: Buffer) => {\n const seq = sequence || Buffer.alloc(0);\n const scriptBlocks: Buffer[] = [];\n let offset = 0;\n\n while (offset !== script.length) {\n const blockSize =\n script.length - offset > MAX_SCRIPT_BLOCK\n ? MAX_SCRIPT_BLOCK\n : script.length - offset;\n\n if (offset + blockSize !== script.length) {\n scriptBlocks.push(script.slice(offset, offset + blockSize));\n } else {\n scriptBlocks.push(\n Buffer.concat([script.slice(offset, offset + blockSize), seq])\n );\n }\n\n offset += blockSize;\n }\n\n // Handle case when no script length: we still want to pass the sequence\n // relatable: https://github.com/LedgerHQ/ledger-live-desktop/issues/1386\n if (script.length === 0) {\n scriptBlocks.push(seq);\n }\n\n let res;\n\n for (const scriptBlock of scriptBlocks) {\n res = await getTrustedInputRaw(transport, scriptBlock);\n }\n\n return res;\n };\n\n const processWholeScriptBlock = (block) =>\n getTrustedInputRaw(transport, block);\n\n await getTrustedInputRaw(\n transport,\n Buffer.concat([\n transaction.version,\n transaction.timestamp || Buffer.alloc(0),\n transaction.nVersionGroupId || Buffer.alloc(0),\n createVarint(inputs.length),\n ]),\n indexLookup\n );\n\n for (const input of inputs) {\n const isXSTV2 =\n isXST &&\n Buffer.compare(version, Buffer.from([0x02, 0x00, 0x00, 0x00])) === 0;\n const treeField = isDecred\n ? input.tree || Buffer.from([0x00])\n : Buffer.alloc(0);\n const data = Buffer.concat([\n input.prevout,\n treeField,\n isXSTV2 ? Buffer.from([0x00]) : createVarint(input.script.length),\n ]);\n await getTrustedInputRaw(transport, data);\n // iteration (eachSeries) ended\n // TODO notify progress\n // deferred.notify(\"input\");\n // Reference: https://github.com/StealthSend/Stealth/commit/5be35d6c2c500b32ed82e5d6913d66d18a4b0a7f#diff-e8db9b851adc2422aadfffca88f14c91R566\n await (isDecred\n ? processWholeScriptBlock(Buffer.concat([input.script, input.sequence]))\n : isXSTV2\n ? processWholeScriptBlock(input.sequence)\n : processScriptBlocks(input.script, input.sequence));\n }\n\n await getTrustedInputRaw(transport, createVarint(outputs.length));\n\n for (const output of outputs) {\n const data = Buffer.concat([\n output.amount,\n isDecred ? Buffer.from([0x00, 0x00]) : Buffer.alloc(0), //Version script\n createVarint(output.script.length),\n output.script,\n ]);\n await getTrustedInputRaw(transport, data);\n }\n\n const endData: Buffer[] = [];\n\n if (nExpiryHeight && nExpiryHeight.length > 0) {\n endData.push(nExpiryHeight);\n }\n\n if (extraData && extraData.length > 0) {\n endData.push(extraData);\n }\n\n let extraPart;\n\n if (endData.length) {\n const data = Buffer.concat(endData);\n extraPart = isDecred\n ? data\n : Buffer.concat([createVarint(data.length), data]);\n }\n\n const res = await processScriptBlocks(\n Buffer.concat([locktime, extraPart || Buffer.alloc(0)])\n );\n invariant(res, \"missing result in processScriptBlocks\");\n return res;\n}\n", "import type Transport from \"@ledgerhq/hw-transport\";\nimport type { Transaction } from \"./types\";\nimport { createVarint } from \"./varint\";\nimport { MAX_SCRIPT_BLOCK } from \"./constants\";\nexport function startUntrustedHashTransactionInputRaw(\n transport: Transport,\n newTransaction: boolean,\n firstRound: boolean,\n transactionData: Buffer,\n bip143 = false,\n overwinter = false,\n additionals: Array = []\n): Promise {\n const p2 = additionals.includes(\"cashaddr\")\n ? 0x03\n : bip143\n ? additionals.includes(\"sapling\")\n ? 0x05\n : overwinter\n ? 0x04\n : 0x02\n : 0x00;\n return transport.send(\n 0xe0,\n 0x44,\n firstRound ? 0x00 : 0x80,\n newTransaction ? p2 : 0x80,\n transactionData\n );\n}\nexport async function startUntrustedHashTransactionInput(\n transport: Transport,\n newTransaction: boolean,\n transaction: Transaction,\n inputs: Array<{\n trustedInput: boolean;\n value: Buffer;\n }>,\n bip143 = false,\n overwinter = false,\n additionals: Array = [],\n useTrustedInputForSegwit = false\n): Promise {\n let data = Buffer.concat([\n transaction.version,\n transaction.timestamp || Buffer.alloc(0),\n transaction.nVersionGroupId || Buffer.alloc(0),\n createVarint(transaction.inputs.length),\n ]);\n await startUntrustedHashTransactionInputRaw(\n transport,\n newTransaction,\n true,\n data,\n bip143,\n overwinter,\n additionals\n );\n let i = 0;\n const isDecred = additionals.includes(\"decred\");\n\n for (const input of transaction.inputs) {\n let prefix;\n const inputValue = inputs[i].value;\n\n if (bip143) {\n if (useTrustedInputForSegwit && inputs[i].trustedInput) {\n prefix = Buffer.from([0x01, inputValue.length]);\n } else {\n prefix = Buffer.from([0x02]);\n }\n } else {\n if (inputs[i].trustedInput) {\n prefix = Buffer.from([0x01, inputs[i].value.length]);\n } else {\n prefix = Buffer.from([0x00]);\n }\n }\n\n data = Buffer.concat([\n prefix,\n inputValue,\n isDecred ? Buffer.from([0x00]) : Buffer.alloc(0),\n createVarint(input.script.length),\n ]);\n await startUntrustedHashTransactionInputRaw(\n transport,\n newTransaction,\n false,\n data,\n bip143,\n overwinter,\n additionals\n );\n const scriptBlocks: Buffer[] = [];\n let offset = 0;\n\n if (input.script.length === 0) {\n scriptBlocks.push(input.sequence);\n } else {\n while (offset !== input.script.length) {\n const blockSize =\n input.script.length - offset > MAX_SCRIPT_BLOCK\n ? MAX_SCRIPT_BLOCK\n : input.script.length - offset;\n\n if (offset + blockSize !== input.script.length) {\n scriptBlocks.push(input.script.slice(offset, offset + blockSize));\n } else {\n scriptBlocks.push(\n Buffer.concat([\n input.script.slice(offset, offset + blockSize),\n input.sequence,\n ])\n );\n }\n\n offset += blockSize;\n }\n }\n\n for (const scriptBlock of scriptBlocks) {\n await startUntrustedHashTransactionInputRaw(\n transport,\n newTransaction,\n false,\n scriptBlock,\n bip143,\n overwinter,\n additionals\n );\n }\n\n i++;\n }\n}\n", "import Transport from \"@ledgerhq/hw-transport\";\nimport shajs from \"sha.js\";\nimport type { Transaction } from \"./types\";\nimport { serializeTransaction } from \"./serializeTransaction\";\nexport function getTrustedInputBIP143(\n transport: Transport,\n indexLookup: number,\n transaction: Transaction,\n additionals: Array = []\n): string {\n if (!transaction) {\n throw new Error(\"getTrustedInputBIP143: missing tx\");\n }\n\n const isDecred = additionals.includes(\"decred\");\n\n if (isDecred) {\n throw new Error(\"Decred does not implement BIP143\");\n }\n\n let hash = shajs(\"sha256\")\n .update(\n shajs(\"sha256\").update(serializeTransaction(transaction, true)).digest()\n )\n .digest();\n const data = Buffer.alloc(4);\n data.writeUInt32LE(indexLookup, 0);\n const { outputs, locktime } = transaction;\n\n if (!outputs || !locktime) {\n throw new Error(\"getTrustedInputBIP143: locktime & outputs is expected\");\n }\n\n if (!outputs[indexLookup]) {\n throw new Error(\"getTrustedInputBIP143: wrong index\");\n }\n\n hash = Buffer.concat([hash, data, outputs[indexLookup].amount]);\n return hash.toString(\"hex\");\n}\n", "export function compressPublicKey(publicKey: Buffer): Buffer {\n const prefix = (publicKey[64] & 1) !== 0 ? 0x03 : 0x02;\n const prefixBuffer = Buffer.alloc(1);\n prefixBuffer[0] = prefix;\n return Buffer.concat([prefixBuffer, publicKey.slice(1, 1 + 32)]);\n}\n", "import type Transport from \"@ledgerhq/hw-transport\";\nimport { bip32asBuffer } from \"./bip32\";\nexport function signTransaction(\n transport: Transport,\n path: string,\n lockTime: number,\n sigHashType: number,\n expiryHeight?: Buffer,\n additionals: Array = []\n): Promise {\n const isDecred = additionals.includes(\"decred\");\n const pathsBuffer = bip32asBuffer(path);\n const lockTimeBuffer = Buffer.alloc(4);\n lockTimeBuffer.writeUInt32BE(lockTime, 0);\n let buffer = isDecred\n ? Buffer.concat([\n pathsBuffer,\n lockTimeBuffer,\n expiryHeight || Buffer.from([0x00, 0x00, 0x00, 0x00]),\n Buffer.from([sigHashType]),\n ])\n : Buffer.concat([\n pathsBuffer,\n Buffer.from([0x00]),\n lockTimeBuffer,\n Buffer.from([sigHashType]),\n ]);\n\n if (expiryHeight && !isDecred) {\n buffer = Buffer.concat([buffer, expiryHeight]);\n }\n\n return transport.send(0xe0, 0x48, 0x00, 0x00, buffer).then((result) => {\n if (result.length > 0) {\n result[0] = 0x30;\n return result.slice(0, result.length - 2);\n }\n\n return result;\n });\n}\n", "import Transport from \"@ledgerhq/hw-transport\";\nimport { bip32asBuffer } from \"./bip32\";\nimport { MAX_SCRIPT_BLOCK } from \"./constants\";\nexport function provideOutputFullChangePath(\n transport: Transport,\n path: string\n): Promise {\n const buffer = bip32asBuffer(path);\n return transport.send(0xe0, 0x4a, 0xff, 0x00, buffer);\n}\nexport async function hashOutputFull(\n transport: Transport,\n outputScript: Buffer,\n additionals: Array = []\n): Promise {\n let offset = 0;\n const p1 = Number(0x80);\n const isDecred = additionals.includes(\"decred\");\n\n ///WARNING: Decred works only with one call (without chunking)\n //TODO: test without this for Decred\n if (isDecred) {\n return transport.send(0xe0, 0x4a, p1, 0x00, outputScript);\n }\n\n while (offset < outputScript.length) {\n const blockSize =\n offset + MAX_SCRIPT_BLOCK >= outputScript.length\n ? outputScript.length - offset\n : MAX_SCRIPT_BLOCK;\n const p1 = offset + blockSize === outputScript.length ? 0x80 : 0x00;\n const data = outputScript.slice(offset, offset + blockSize);\n await transport.send(0xe0, 0x4a, p1, 0x00, data);\n offset += blockSize;\n }\n}\n", "import invariant from \"invariant\";\nimport Transport from \"@ledgerhq/hw-transport\";\n\nexport type AppAndVersion = {\n name: string;\n version: string;\n flags: number | Buffer;\n};\n\nexport const getAppAndVersion = async (\n transport: Transport\n): Promise => {\n const r = await transport.send(0xb0, 0x01, 0x00, 0x00);\n let i = 0;\n const format = r[i++];\n invariant(format === 1, \"getAppAndVersion: format not supported\");\n const nameLength = r[i++];\n const name = r.slice(i, (i += nameLength)).toString(\"ascii\");\n const versionLength = r[i++];\n const version = r.slice(i, (i += versionLength)).toString(\"ascii\");\n const flagLength = r[i++];\n const flags = r.slice(i, (i += flagLength));\n return {\n name,\n version,\n flags,\n };\n};\n\nexport const checkIsBtcLegacy = async (\n transport: Transport\n): Promise => {\n try {\n // Call old btc API, it will throw an exception with new btc app. It is a workaround to differentiate new/old btc nano app\n await transport.send(0xe0, 0xc4, 0, 0);\n } catch (e: unknown) {\n return false;\n }\n return true;\n};\n", "import semver from \"semver\";\nexport function shouldUseTrustedInputForSegwit({\n version,\n name,\n}: {\n version: string;\n name: string;\n}): boolean {\n if (name === \"Decred\") return false;\n if (name === \"Exchange\") return true;\n return semver.gte(version, \"1.4.0\");\n}\n", "import { createVarint } from \"../varint\";\nimport { hashLeaf, Merkle } from \"./merkle\";\n\n/**\n * This implements \"Merkelized Maps\", documented at\n * https://github.com/LedgerHQ/app-bitcoin-new/blob/master/doc/merkle.md#merkleized-maps\n *\n * A merkelized map consist of two merkle trees, one for the keys of\n * a map and one for the values of the same map, thus the two merkle\n * trees have the same shape. The commitment is the number elements\n * in the map followed by the keys' merkle root followed by the\n * values' merkle root.\n */\nexport class MerkleMap {\n keys: Buffer[];\n keysTree: Merkle;\n values: Buffer[];\n valuesTree: Merkle;\n /**\n * @param keys Sorted list of (unhashed) keys\n * @param values values, in corresponding order as the keys, and of equal length\n */\n constructor(keys: Buffer[], values: Buffer[]) {\n if (keys.length != values.length) {\n throw new Error(\"keys and values should have the same length\");\n }\n\n // Sanity check: verify that keys are actually sorted and with no duplicates\n for (let i = 0; i < keys.length - 1; i++) {\n if (keys[i].toString(\"hex\") >= keys[i + 1].toString(\"hex\")) {\n throw new Error(\"keys must be in strictly increasing order\");\n }\n }\n\n this.keys = keys;\n this.keysTree = new Merkle(keys.map((k) => hashLeaf(k)));\n this.values = values;\n this.valuesTree = new Merkle(values.map((v) => hashLeaf(v)));\n }\n\n commitment(): Buffer {\n // returns a buffer between 65 and 73 (included) bytes long\n return Buffer.concat([\n createVarint(this.keys.length),\n this.keysTree.getRoot(),\n this.valuesTree.getRoot(),\n ]);\n }\n}\n", "import { MerkleMap } from \"./merkleMap\";\nimport { PsbtV2 } from \"./psbtv2\";\n\n/**\n * This class merkelizes a PSBTv2, by merkelizing the different\n * maps of the psbt. This is used during the transaction signing process,\n * where the hardware app can request specific parts of the psbt from the\n * client code and be sure that the response data actually belong to the psbt.\n * The reason for this is the limited amount of memory available to the app,\n * so it can't always store the full psbt in memory.\n *\n * The signing process is documented at\n * https://github.com/LedgerHQ/app-bitcoin-new/blob/master/doc/bitcoin.md#sign_psbt\n */\nexport class MerkelizedPsbt extends PsbtV2 {\n public globalMerkleMap: MerkleMap;\n public inputMerkleMaps: MerkleMap[] = [];\n public outputMerkleMaps: MerkleMap[] = [];\n public inputMapCommitments: Buffer[];\n public outputMapCommitments: Buffer[];\n constructor(psbt: PsbtV2) {\n super();\n psbt.copy(this);\n this.globalMerkleMap = MerkelizedPsbt.createMerkleMap(this.globalMap);\n\n for (let i = 0; i < this.getGlobalInputCount(); i++) {\n this.inputMerkleMaps.push(\n MerkelizedPsbt.createMerkleMap(this.inputMaps[i])\n );\n }\n this.inputMapCommitments = [...this.inputMerkleMaps.values()].map((v) =>\n v.commitment()\n );\n\n for (let i = 0; i < this.getGlobalOutputCount(); i++) {\n this.outputMerkleMaps.push(\n MerkelizedPsbt.createMerkleMap(this.outputMaps[i])\n );\n }\n this.outputMapCommitments = [...this.outputMerkleMaps.values()].map((v) =>\n v.commitment()\n );\n }\n // These public functions are for MerkelizedPsbt.\n getGlobalSize(): number {\n return this.globalMap.size;\n }\n getGlobalKeysValuesRoot(): Buffer {\n return this.globalMerkleMap.commitment();\n }\n\n private static createMerkleMap(map: Map): MerkleMap {\n const sortedKeysStrings = [...map.keys()].sort();\n const values = sortedKeysStrings.map((k) => {\n const v = map.get(k);\n if (!v) {\n throw new Error(\"No value for key \" + k);\n }\n return v;\n });\n const sortedKeys = sortedKeysStrings.map((k) => Buffer.from(k, \"hex\"));\n\n const merkleMap = new MerkleMap(sortedKeys, values);\n return merkleMap;\n }\n}\n", "import { crypto } from \"bitcoinjs-lib\";\nimport { BufferReader } from \"../buffertools\";\nimport { createVarint } from \"../varint\";\nimport { hashLeaf, Merkle } from \"./merkle\";\nimport { MerkleMap } from \"./merkleMap\";\n\nenum ClientCommandCode {\n YIELD = 0x10,\n GET_PREIMAGE = 0x40,\n GET_MERKLE_LEAF_PROOF = 0x41,\n GET_MERKLE_LEAF_INDEX = 0x42,\n GET_MORE_ELEMENTS = 0xa0,\n}\n\nabstract class ClientCommand {\n abstract code: ClientCommandCode;\n abstract execute(request: Buffer): Buffer;\n}\n\nexport class YieldCommand extends ClientCommand {\n private results: Buffer[];\n\n code = ClientCommandCode.YIELD;\n\n constructor(results: Buffer[], private progressCallback: () => void) {\n super();\n this.results = results;\n }\n\n execute(request: Buffer): Buffer {\n this.results.push(Buffer.from(request.subarray(1)));\n this.progressCallback();\n return Buffer.from(\"\");\n }\n}\n\nexport class GetPreimageCommand extends ClientCommand {\n private known_preimages: Map;\n private queue: Buffer[];\n\n code = ClientCommandCode.GET_PREIMAGE;\n\n constructor(known_preimages: Map, queue: Buffer[]) {\n super();\n this.known_preimages = known_preimages;\n this.queue = queue;\n }\n\n execute(request: Buffer): Buffer {\n const req = Buffer.from(request.subarray(1));\n\n // we expect no more data to read\n if (req.length != 1 + 32) {\n throw new Error(\"Invalid request, unexpected trailing data\");\n }\n\n if (req[0] != 0) {\n throw new Error(\"Unsupported request, the first byte should be 0\");\n }\n\n // read the hash\n const hash = Buffer.alloc(32);\n for (let i = 0; i < 32; i++) {\n hash[i] = req[1 + i];\n }\n const req_hash_hex = hash.toString(\"hex\");\n\n const known_preimage = this.known_preimages.get(req_hash_hex);\n if (known_preimage != undefined) {\n const preimage_len_varint = createVarint(known_preimage.length);\n\n // We can send at most 255 - len(preimage_len_out) - 1 bytes in a single message;\n // the rest will be stored in the queue for GET_MORE_ELEMENTS\n const max_payload_size = 255 - preimage_len_varint.length - 1;\n\n const payload_size = Math.min(max_payload_size, known_preimage.length);\n\n if (payload_size < known_preimage.length) {\n for (let i = payload_size; i < known_preimage.length; i++) {\n this.queue.push(Buffer.from([known_preimage[i]]));\n }\n }\n\n return Buffer.concat([\n preimage_len_varint,\n Buffer.from([payload_size]),\n Buffer.from(known_preimage.subarray(0, payload_size)),\n ]);\n }\n\n throw Error(`Requested unknown preimage for: ${req_hash_hex}`);\n }\n}\n\nexport class GetMerkleLeafProofCommand extends ClientCommand {\n private known_trees: Map;\n private queue: Buffer[];\n\n code = ClientCommandCode.GET_MERKLE_LEAF_PROOF;\n\n constructor(known_trees: Map, queue: Buffer[]) {\n super();\n this.known_trees = known_trees;\n this.queue = queue;\n }\n\n execute(request: Buffer): Buffer {\n const req = Buffer.from(request.subarray(1));\n\n if (req.length < 32 + 1 + 1) {\n throw new Error(\"Invalid request, expected at least 34 bytes\");\n }\n\n const reqBuf = new BufferReader(req);\n const hash = reqBuf.readSlice(32);\n const hash_hex = hash.toString(\"hex\");\n\n let tree_size;\n let leaf_index;\n try {\n tree_size = reqBuf.readVarInt();\n leaf_index = reqBuf.readVarInt();\n } catch (e: any) {\n throw new Error(\n \"Invalid request, couldn't parse tree_size or leaf_index\"\n );\n }\n\n const mt = this.known_trees.get(hash_hex);\n if (!mt) {\n throw Error(`Requested Merkle leaf proof for unknown tree: ${hash_hex}`);\n }\n\n if (leaf_index >= tree_size || mt.size() != tree_size) {\n throw Error(\"Invalid index or tree size.\");\n }\n\n if (this.queue.length != 0) {\n throw Error(\n \"This command should not execute when the queue is not empty.\"\n );\n }\n\n const proof = mt.getProof(leaf_index);\n\n const n_response_elements = Math.min(\n Math.floor((255 - 32 - 1 - 1) / 32),\n proof.length\n );\n const n_leftover_elements = proof.length - n_response_elements;\n\n // Add to the queue any proof elements that do not fit the response\n if (n_leftover_elements > 0) {\n this.queue.push(...proof.slice(-n_leftover_elements));\n }\n\n return Buffer.concat([\n mt.getLeafHash(leaf_index),\n Buffer.from([proof.length]),\n Buffer.from([n_response_elements]),\n ...proof.slice(0, n_response_elements),\n ]);\n }\n}\n\nexport class GetMerkleLeafIndexCommand extends ClientCommand {\n private known_trees: Map;\n\n code = ClientCommandCode.GET_MERKLE_LEAF_INDEX;\n\n constructor(known_trees: Map) {\n super();\n this.known_trees = known_trees;\n }\n\n execute(request: Buffer): Buffer {\n const req = Buffer.from(request.subarray(1));\n\n if (req.length != 32 + 32) {\n throw new Error(\"Invalid request, unexpected trailing data\");\n }\n\n // read the root hash\n const root_hash = Buffer.alloc(32);\n for (let i = 0; i < 32; i++) {\n root_hash[i] = req.readUInt8(i);\n }\n const root_hash_hex = root_hash.toString(\"hex\");\n\n // read the leaf hash\n const leef_hash = Buffer.alloc(32);\n for (let i = 0; i < 32; i++) {\n leef_hash[i] = req.readUInt8(32 + i);\n }\n const leef_hash_hex = leef_hash.toString(\"hex\");\n\n const mt = this.known_trees.get(root_hash_hex);\n if (!mt) {\n throw Error(\n `Requested Merkle leaf index for unknown root: ${root_hash_hex}`\n );\n }\n\n let leaf_index = 0;\n let found = 0;\n for (let i = 0; i < mt.size(); i++) {\n if (mt.getLeafHash(i).toString(\"hex\") == leef_hash_hex) {\n found = 1;\n leaf_index = i;\n break;\n }\n }\n return Buffer.concat([Buffer.from([found]), createVarint(leaf_index)]);\n }\n}\n\nexport class GetMoreElementsCommand extends ClientCommand {\n queue: Buffer[];\n\n code = ClientCommandCode.GET_MORE_ELEMENTS;\n\n constructor(queue: Buffer[]) {\n super();\n this.queue = queue;\n }\n\n execute(request: Buffer): Buffer {\n if (request.length != 1) {\n throw new Error(\"Invalid request, unexpected trailing data\");\n }\n\n if (this.queue.length === 0) {\n throw new Error(\"No elements to get\");\n }\n\n // all elements should have the same length\n const element_len = this.queue[0].length;\n if (this.queue.some((el) => el.length != element_len)) {\n throw new Error(\n \"The queue contains elements with different byte length, which is not expected\"\n );\n }\n\n const max_elements = Math.floor(253 / element_len);\n const n_returned_elements = Math.min(max_elements, this.queue.length);\n\n const returned_elements = this.queue.splice(0, n_returned_elements);\n\n return Buffer.concat([\n Buffer.from([n_returned_elements]),\n Buffer.from([element_len]),\n ...returned_elements,\n ]);\n }\n}\n\n/**\n * This class will dispatch a client command coming from the hardware device to\n * the appropriate client command implementation. Those client commands\n * typically requests data from a merkle tree or merkelized maps.\n *\n * A ClientCommandInterpreter is prepared by adding the merkle trees and\n * merkelized maps it should be able to serve to the hardware device. This class\n * doesn't know anything about the semantics of the data it holds, it just\n * serves merkle data. It doesn't even know in what context it is being\n * executed, ie SignPsbt, getWalletAddress, etc.\n *\n * If the command yelds results to the client, as signPsbt does, the yielded\n * data will be accessible after the command completed by calling getYielded(),\n * which will return the yields in the same order as they came in.\n */\nexport class ClientCommandInterpreter {\n private roots: Map = new Map();\n private preimages: Map = new Map();\n\n private yielded: Buffer[] = [];\n\n private queue: Buffer[] = [];\n\n private commands: Map = new Map();\n\n constructor(progressCallback: () => void) {\n const commands = [\n new YieldCommand(this.yielded, progressCallback),\n new GetPreimageCommand(this.preimages, this.queue),\n new GetMerkleLeafIndexCommand(this.roots),\n new GetMerkleLeafProofCommand(this.roots, this.queue),\n new GetMoreElementsCommand(this.queue),\n ];\n\n for (const cmd of commands) {\n if (this.commands.has(cmd.code)) {\n throw new Error(`Multiple commands with code ${cmd.code}`);\n }\n this.commands.set(cmd.code, cmd);\n }\n }\n\n getYielded(): Buffer[] {\n return this.yielded;\n }\n\n addKnownPreimage(preimage: Buffer): void {\n this.preimages.set(crypto.sha256(preimage).toString(\"hex\"), preimage);\n }\n\n addKnownList(elements: Buffer[]): void {\n for (const el of elements) {\n const preimage = Buffer.concat([Buffer.from([0]), el]);\n this.addKnownPreimage(preimage);\n }\n const mt = new Merkle(elements.map((el) => hashLeaf(el)));\n this.roots.set(mt.getRoot().toString(\"hex\"), mt);\n }\n\n addKnownMapping(mm: MerkleMap): void {\n this.addKnownList(mm.keys);\n this.addKnownList(mm.values);\n }\n\n execute(request: Buffer): Buffer {\n if (request.length == 0) {\n throw new Error(\"Unexpected empty command\");\n }\n\n const cmdCode = request[0];\n const cmd = this.commands.get(cmdCode);\n if (!cmd) {\n throw new Error(`Unexpected command code ${cmdCode}`);\n }\n\n return cmd.execute(request);\n }\n}\n", "import Transport from \"@ledgerhq/hw-transport\";\nimport { pathElementsToBuffer } from \"../bip32\";\nimport { PsbtV2 } from \"./psbtv2\";\nimport { MerkelizedPsbt } from \"./merkelizedPsbt\";\nimport { ClientCommandInterpreter } from \"./clientCommands\";\nimport { WalletPolicy } from \"./policy\";\nimport { createVarint } from \"../varint\";\nimport { hashLeaf, Merkle } from \"./merkle\";\n\nconst CLA_BTC = 0xe1;\nconst CLA_FRAMEWORK = 0xf8;\n\nenum BitcoinIns {\n GET_PUBKEY = 0x00,\n // GET_ADDRESS = 0x01, // Removed from app\n REGISTER_WALLET = 0x02,\n GET_WALLET_ADDRESS = 0x03,\n SIGN_PSBT = 0x04,\n GET_MASTER_FINGERPRINT = 0x05,\n}\n\nenum FrameworkIns {\n CONTINUE_INTERRUPTED = 0x01,\n}\n\n/**\n * This class encapsulates the APDU protocol documented at\n * https://github.com/LedgerHQ/app-bitcoin-new/blob/master/doc/bitcoin.md\n */\nexport class AppClient {\n transport: Transport;\n\n constructor(transport: Transport) {\n this.transport = transport;\n }\n\n private async makeRequest(\n ins: BitcoinIns,\n data: Buffer,\n cci?: ClientCommandInterpreter\n ): Promise {\n let response: Buffer = await this.transport.send(\n CLA_BTC,\n ins,\n 0,\n 0,\n data,\n [0x9000, 0xe000]\n );\n while (response.readUInt16BE(response.length - 2) === 0xe000) {\n if (!cci) {\n throw new Error(\"Unexpected SW_INTERRUPTED_EXECUTION\");\n }\n\n const hwRequest = response.slice(0, -2);\n const commandResponse = cci.execute(hwRequest);\n\n response = await this.transport.send(\n CLA_FRAMEWORK,\n FrameworkIns.CONTINUE_INTERRUPTED,\n 0,\n 0,\n commandResponse,\n [0x9000, 0xe000]\n );\n }\n return response.slice(0, -2); // drop the status word (can only be 0x9000 at this point)\n }\n\n async getExtendedPubkey(\n display: boolean,\n pathElements: number[]\n ): Promise {\n if (pathElements.length > 6) {\n throw new Error(\"Path too long. At most 6 levels allowed.\");\n }\n const response = await this.makeRequest(\n BitcoinIns.GET_PUBKEY,\n Buffer.concat([\n Buffer.from(display ? [1] : [0]),\n pathElementsToBuffer(pathElements),\n ])\n );\n return response.toString(\"ascii\");\n }\n\n async getWalletAddress(\n walletPolicy: WalletPolicy,\n walletHMAC: Buffer | null,\n change: number,\n addressIndex: number,\n display: boolean\n ): Promise {\n if (change !== 0 && change !== 1)\n throw new Error(\"Change can only be 0 or 1\");\n if (addressIndex < 0 || !Number.isInteger(addressIndex))\n throw new Error(\"Invalid address index\");\n\n if (walletHMAC != null && walletHMAC.length != 32) {\n throw new Error(\"Invalid HMAC length\");\n }\n\n const clientInterpreter = new ClientCommandInterpreter(() => {});\n clientInterpreter.addKnownList(\n walletPolicy.keys.map((k) => Buffer.from(k, \"ascii\"))\n );\n clientInterpreter.addKnownPreimage(walletPolicy.serialize());\n\n const addressIndexBuffer = Buffer.alloc(4);\n addressIndexBuffer.writeUInt32BE(addressIndex, 0);\n\n const response = await this.makeRequest(\n BitcoinIns.GET_WALLET_ADDRESS,\n Buffer.concat([\n Buffer.from(display ? [1] : [0]),\n walletPolicy.getWalletId(),\n walletHMAC || Buffer.alloc(32, 0),\n Buffer.from([change]),\n addressIndexBuffer,\n ]),\n clientInterpreter\n );\n\n return response.toString(\"ascii\");\n }\n\n async signPsbt(\n psbt: PsbtV2,\n walletPolicy: WalletPolicy,\n walletHMAC: Buffer | null,\n progressCallback: () => void\n ): Promise> {\n const merkelizedPsbt = new MerkelizedPsbt(psbt);\n\n if (walletHMAC != null && walletHMAC.length != 32) {\n throw new Error(\"Invalid HMAC length\");\n }\n\n const clientInterpreter = new ClientCommandInterpreter(progressCallback);\n\n // prepare ClientCommandInterpreter\n clientInterpreter.addKnownList(\n walletPolicy.keys.map((k) => Buffer.from(k, \"ascii\"))\n );\n clientInterpreter.addKnownPreimage(walletPolicy.serialize());\n\n clientInterpreter.addKnownMapping(merkelizedPsbt.globalMerkleMap);\n for (const map of merkelizedPsbt.inputMerkleMaps) {\n clientInterpreter.addKnownMapping(map);\n }\n for (const map of merkelizedPsbt.outputMerkleMaps) {\n clientInterpreter.addKnownMapping(map);\n }\n\n clientInterpreter.addKnownList(merkelizedPsbt.inputMapCommitments);\n const inputMapsRoot = new Merkle(\n merkelizedPsbt.inputMapCommitments.map((m) => hashLeaf(m))\n ).getRoot();\n clientInterpreter.addKnownList(merkelizedPsbt.outputMapCommitments);\n const outputMapsRoot = new Merkle(\n merkelizedPsbt.outputMapCommitments.map((m) => hashLeaf(m))\n ).getRoot();\n\n await this.makeRequest(\n BitcoinIns.SIGN_PSBT,\n Buffer.concat([\n merkelizedPsbt.getGlobalKeysValuesRoot(),\n createVarint(merkelizedPsbt.getGlobalInputCount()),\n inputMapsRoot,\n createVarint(merkelizedPsbt.getGlobalOutputCount()),\n outputMapsRoot,\n walletPolicy.getWalletId(),\n walletHMAC || Buffer.alloc(32, 0),\n ]),\n clientInterpreter\n );\n\n const yielded = clientInterpreter.getYielded();\n\n const ret: Map = new Map();\n for (const inputAndSig of yielded) {\n ret.set(inputAndSig[0], inputAndSig.slice(1));\n }\n return ret;\n }\n\n async getMasterFingerprint(): Promise {\n return this.makeRequest(BitcoinIns.GET_MASTER_FINGERPRINT, Buffer.from([]));\n }\n}\n", "import { log } from \"@ledgerhq/logs\";\nimport type { Transaction, TransactionInput, TransactionOutput } from \"./types\";\nimport { getVarint } from \"./varint\";\nimport { formatTransactionDebug } from \"./debug\";\nexport function splitTransaction(\n transactionHex: string,\n isSegwitSupported: boolean | null | undefined = false,\n hasTimestamp = false,\n hasExtraData = false,\n additionals: Array = []\n): Transaction {\n const inputs: TransactionInput[] = [];\n const outputs: TransactionOutput[] = [];\n let witness = false;\n let offset = 0;\n let timestamp = Buffer.alloc(0);\n let nExpiryHeight = Buffer.alloc(0);\n let nVersionGroupId = Buffer.alloc(0);\n let extraData = Buffer.alloc(0);\n let witnessScript, locktime;\n const isDecred = additionals.includes(\"decred\");\n const isZencash = additionals.includes(\"zencash\");\n const isZcash = additionals.includes(\"zcash\");\n const transaction = Buffer.from(transactionHex, \"hex\");\n const version = transaction.slice(offset, offset + 4);\n const overwinter =\n version.equals(Buffer.from([0x03, 0x00, 0x00, 0x80])) ||\n version.equals(Buffer.from([0x04, 0x00, 0x00, 0x80])) ||\n version.equals(Buffer.from([0x05, 0x00, 0x00, 0x80]));\n const isZcashv5 =\n isZcash && version.equals(Buffer.from([0x05, 0x00, 0x00, 0x80]));\n offset += 4;\n if (\n !hasTimestamp &&\n isSegwitSupported &&\n transaction[offset] === 0 &&\n transaction[offset + 1] !== 0 &&\n !isZencash\n ) {\n offset += 2;\n witness = true;\n }\n\n if (hasTimestamp) {\n timestamp = transaction.slice(offset, 4 + offset);\n offset += 4;\n }\n\n if (overwinter) {\n nVersionGroupId = transaction.slice(offset, 4 + offset);\n offset += 4;\n }\n if (isZcashv5) {\n locktime = transaction.slice(offset + 4, offset + 8);\n nExpiryHeight = transaction.slice(offset + 8, offset + 12);\n offset += 12;\n }\n let varint = getVarint(transaction, offset);\n const numberInputs = varint[0];\n offset += varint[1];\n\n for (let i = 0; i < numberInputs; i++) {\n const prevout = transaction.slice(offset, offset + 36);\n offset += 36;\n let script = Buffer.alloc(0);\n let tree = Buffer.alloc(0);\n\n //No script for decred, it has a witness\n if (!isDecred) {\n varint = getVarint(transaction, offset);\n offset += varint[1];\n script = transaction.slice(offset, offset + varint[0]);\n offset += varint[0];\n } else {\n //Tree field\n tree = transaction.slice(offset, offset + 1);\n offset += 1;\n }\n\n const sequence = transaction.slice(offset, offset + 4);\n offset += 4;\n inputs.push({\n prevout,\n script,\n sequence,\n tree,\n });\n }\n varint = getVarint(transaction, offset);\n const numberOutputs = varint[0];\n offset += varint[1];\n for (let i = 0; i < numberOutputs; i++) {\n const amount = transaction.slice(offset, offset + 8);\n offset += 8;\n\n if (isDecred) {\n //Script version\n offset += 2;\n }\n\n varint = getVarint(transaction, offset);\n offset += varint[1];\n const script = transaction.slice(offset, offset + varint[0]);\n offset += varint[0];\n outputs.push({\n amount,\n script,\n });\n }\n\n if (witness) {\n witnessScript = transaction.slice(offset, -4);\n locktime = transaction.slice(transaction.length - 4);\n } else if (!isZcashv5) {\n locktime = transaction.slice(offset, offset + 4);\n }\n\n offset += 4;\n\n if ((overwinter || isDecred) && !isZcashv5) {\n nExpiryHeight = transaction.slice(offset, offset + 4);\n offset += 4;\n }\n\n if (hasExtraData) {\n extraData = transaction.slice(offset);\n }\n\n //Get witnesses for Decred\n if (isDecred) {\n varint = getVarint(transaction, offset);\n offset += varint[1];\n\n if (varint[0] !== numberInputs) {\n throw new Error(\"splitTransaction: incoherent number of witnesses\");\n }\n\n for (let i = 0; i < numberInputs; i++) {\n //amount\n offset += 8;\n //block height\n offset += 4;\n //block index\n offset += 4;\n //Script size\n varint = getVarint(transaction, offset);\n offset += varint[1];\n const script = transaction.slice(offset, offset + varint[0]);\n offset += varint[0];\n inputs[i].script = script;\n }\n }\n\n const t: Transaction = {\n version,\n inputs,\n outputs,\n locktime,\n witness: witnessScript,\n timestamp,\n nVersionGroupId,\n nExpiryHeight,\n extraData,\n };\n log(\n \"btc\",\n `splitTransaction ${transactionHex}:\\n${formatTransactionDebug(t)}`\n );\n return t;\n}\n", "import type { Transaction } from \"./types\";\nexport function formatTransactionDebug(transaction: Transaction): string {\n let str = \"TX\";\n str += \" version \" + transaction.version.toString(\"hex\");\n\n if (transaction.locktime) {\n str += \" locktime \" + transaction.locktime.toString(\"hex\");\n }\n\n if (transaction.witness) {\n str += \" witness \" + transaction.witness.toString(\"hex\");\n }\n\n if (transaction.timestamp) {\n str += \" timestamp \" + transaction.timestamp.toString(\"hex\");\n }\n\n if (transaction.nVersionGroupId) {\n str += \" nVersionGroupId \" + transaction.nVersionGroupId.toString(\"hex\");\n }\n\n if (transaction.nExpiryHeight) {\n str += \" nExpiryHeight \" + transaction.nExpiryHeight.toString(\"hex\");\n }\n\n if (transaction.extraData) {\n str += \" extraData \" + transaction.extraData.toString(\"hex\");\n }\n\n transaction.inputs.forEach(({ prevout, script, sequence }, i) => {\n str += `\\ninput ${i}:`;\n str += ` prevout ${prevout.toString(\"hex\")}`;\n str += ` script ${script.toString(\"hex\")}`;\n str += ` sequence ${sequence.toString(\"hex\")}`;\n });\n (transaction.outputs || []).forEach(({ amount, script }, i) => {\n str += `\\noutput ${i}:`;\n str += ` amount ${amount.toString(\"hex\")}`;\n str += ` script ${script.toString(\"hex\")}`;\n });\n return str;\n}\nexport function displayTransactionDebug(transaction: Transaction): void {\n console.log(formatTransactionDebug(transaction));\n}\n", "import type Transport from \"@ledgerhq/hw-transport\";\nimport { getTrustedInput } from \"./getTrustedInput\";\nimport { startUntrustedHashTransactionInput } from \"./startUntrustedHashTransactionInput\";\nimport { getTrustedInputBIP143 } from \"./getTrustedInputBIP143\";\nimport { signTransaction } from \"./signTransaction\";\nimport { hashOutputFull } from \"./finalizeInput\";\nimport type { TransactionOutput, Transaction, TrustedInput } from \"./types\";\nimport {\n DEFAULT_LOCKTIME,\n DEFAULT_VERSION,\n DEFAULT_SEQUENCE,\n SIGHASH_ALL,\n} from \"./constants\";\nconst defaultArg = {\n lockTime: DEFAULT_LOCKTIME,\n sigHashType: SIGHASH_ALL,\n segwit: false,\n transactionVersion: DEFAULT_VERSION,\n};\n\n/**\n *\n */\nexport type SignP2SHTransactionArg = {\n inputs: Array<\n [Transaction, number, string | null | undefined, number | null | undefined]\n >;\n associatedKeysets: string[];\n outputScriptHex: string;\n lockTime?: number;\n sigHashType?: number;\n segwit?: boolean;\n transactionVersion?: number;\n};\nexport async function signP2SHTransaction(\n transport: Transport,\n arg: SignP2SHTransactionArg\n) {\n const {\n inputs,\n associatedKeysets,\n outputScriptHex,\n lockTime,\n sigHashType,\n segwit,\n transactionVersion,\n } = { ...defaultArg, ...arg };\n // Inputs are provided as arrays of [transaction, output_index, redeem script, optional sequence]\n // associatedKeysets are provided as arrays of [path]\n const nullScript = Buffer.alloc(0);\n const nullPrevout = Buffer.alloc(0);\n const defaultVersion = Buffer.alloc(4);\n defaultVersion.writeUInt32LE(transactionVersion, 0);\n const trustedInputs: TrustedInput[] = [];\n const regularOutputs: Array = [];\n const signatures: string[] = [];\n let firstRun = true;\n const resuming = false;\n const targetTransaction: Transaction = {\n inputs: [],\n version: defaultVersion,\n };\n const getTrustedInputCall = segwit ? getTrustedInputBIP143 : getTrustedInput;\n const outputScript = Buffer.from(outputScriptHex, \"hex\");\n\n for (const input of inputs) {\n if (!resuming) {\n const trustedInput = await getTrustedInputCall(\n transport,\n input[1],\n input[0]\n );\n const sequence = Buffer.alloc(4);\n sequence.writeUInt32LE(\n input.length >= 4 && typeof input[3] === \"number\"\n ? input[3]\n : DEFAULT_SEQUENCE,\n 0\n );\n trustedInputs.push({\n trustedInput: false,\n value: segwit\n ? Buffer.from(trustedInput, \"hex\")\n : Buffer.from(trustedInput, \"hex\").slice(4, 4 + 0x24),\n sequence,\n });\n }\n\n const { outputs } = input[0];\n const index = input[1];\n\n if (outputs && index <= outputs.length - 1) {\n regularOutputs.push(outputs[index]);\n }\n }\n\n // Pre-build the target transaction\n for (let i = 0; i < inputs.length; i++) {\n const sequence = Buffer.alloc(4);\n sequence.writeUInt32LE(\n inputs[i].length >= 4 && typeof inputs[i][3] === \"number\"\n ? (inputs[i][3] as number)\n : DEFAULT_SEQUENCE,\n 0\n );\n targetTransaction.inputs.push({\n script: nullScript,\n prevout: nullPrevout,\n sequence,\n });\n }\n\n if (segwit) {\n await startUntrustedHashTransactionInput(\n transport,\n true,\n targetTransaction,\n trustedInputs,\n true\n );\n await hashOutputFull(transport, outputScript);\n }\n\n for (let i = 0; i < inputs.length; i++) {\n const input = inputs[i];\n const script =\n inputs[i].length >= 3 && typeof input[2] === \"string\"\n ? Buffer.from(input[2], \"hex\")\n : regularOutputs[i].script;\n const pseudoTX = Object.assign({}, targetTransaction);\n const pseudoTrustedInputs = segwit ? [trustedInputs[i]] : trustedInputs;\n\n if (segwit) {\n pseudoTX.inputs = [{ ...pseudoTX.inputs[i], script }];\n } else {\n pseudoTX.inputs[i].script = script;\n }\n\n await startUntrustedHashTransactionInput(\n transport,\n !segwit && firstRun,\n pseudoTX,\n pseudoTrustedInputs,\n segwit\n );\n\n if (!segwit) {\n await hashOutputFull(transport, outputScript);\n }\n\n const signature = await signTransaction(\n transport,\n associatedKeysets[i],\n lockTime,\n sigHashType\n );\n signatures.push(\n segwit\n ? signature.toString(\"hex\")\n : signature.slice(0, signature.length - 1).toString(\"hex\")\n );\n targetTransaction.inputs[i].script = nullScript;\n\n if (firstRun) {\n firstRun = false;\n }\n }\n\n return signatures;\n}\n", "import type Transport from \"@ledgerhq/hw-transport\";\nimport bippath from \"bip32-path\";\nimport { MAX_SCRIPT_BLOCK } from \"./constants\";\nexport async function signMessage(\n transport: Transport,\n {\n path,\n messageHex,\n }: {\n path: string;\n messageHex: string;\n }\n): Promise<{\n v: number;\n r: string;\n s: string;\n}> {\n const paths = bippath.fromString(path).toPathArray();\n const message = Buffer.from(messageHex, \"hex\");\n let offset = 0;\n\n while (offset !== message.length) {\n const maxChunkSize =\n offset === 0\n ? MAX_SCRIPT_BLOCK - 1 - paths.length * 4 - 4\n : MAX_SCRIPT_BLOCK;\n const chunkSize =\n offset + maxChunkSize > message.length\n ? message.length - offset\n : maxChunkSize;\n const buffer = Buffer.alloc(\n offset === 0 ? 1 + paths.length * 4 + 2 + chunkSize : chunkSize\n );\n\n if (offset === 0) {\n buffer[0] = paths.length;\n paths.forEach((element, index) => {\n buffer.writeUInt32BE(element, 1 + 4 * index);\n });\n buffer.writeUInt16BE(message.length, 1 + 4 * paths.length);\n message.copy(\n buffer,\n 1 + 4 * paths.length + 2,\n offset,\n offset + chunkSize\n );\n } else {\n message.copy(buffer, 0, offset, offset + chunkSize);\n }\n\n await transport.send(0xe0, 0x4e, 0x00, offset === 0 ? 0x01 : 0x80, buffer);\n offset += chunkSize;\n }\n\n const res = await transport.send(0xe0, 0x4e, 0x80, 0x00, Buffer.from([0x00]));\n const v = res[0] - 0x30;\n let r: Buffer | string = res.slice(4, 4 + res[3]);\n\n if (r[0] === 0) {\n r = r.slice(1);\n }\n\n r = r.toString(\"hex\");\n offset = 4 + res[3] + 2;\n let s: Buffer | string = res.slice(offset, offset + res[offset - 1]);\n\n if (s[0] === 0) {\n s = s.slice(1);\n }\n\n s = s.toString(\"hex\");\n return {\n v,\n r,\n s,\n };\n}\n", "import type Transport from \"@ledgerhq/hw-transport\";\nimport BtcNew from \"./BtcNew\";\nimport BtcOld from \"./BtcOld\";\nimport type { CreateTransactionArg } from \"./createTransaction\";\nimport { getTrustedInput } from \"./getTrustedInput\";\nimport { getTrustedInputBIP143 } from \"./getTrustedInputBIP143\";\nimport type { AddressFormat } from \"./getWalletPublicKey\";\nimport { AppClient } from \"./newops/appClient\";\nimport { serializeTransactionOutputs } from \"./serializeTransaction\";\nimport type { SignP2SHTransactionArg } from \"./signP2SHTransaction\";\nimport { splitTransaction } from \"./splitTransaction\";\nimport type { Transaction } from \"./types\";\nexport type { AddressFormat };\nimport { signP2SHTransaction } from \"./signP2SHTransaction\";\nimport { signMessage } from \"./signMessage\";\nimport { checkIsBtcLegacy, getAppAndVersion } from \"./getAppAndVersion\";\n\n/**\n * Bitcoin API.\n *\n * @example\n * import Btc from \"@ledgerhq/hw-app-btc\";\n * const btc = new Btc({ transport, currency: \"bitcoin\" });\n */\n\nexport default class Btc {\n private _transport: Transport;\n private _impl: BtcOld | BtcNew;\n\n constructor({\n transport,\n scrambleKey = \"BTC\",\n currency = \"bitcoin\",\n }: {\n transport: Transport;\n scrambleKey?: string;\n currency?: string;\n }) {\n this._transport = transport;\n this._transport.decorateAppAPIMethods(\n this,\n [\n \"getWalletXpub\",\n \"getWalletPublicKey\",\n \"signP2SHTransaction\",\n \"signMessage\",\n \"createPaymentTransaction\",\n \"getTrustedInput\",\n \"getTrustedInputBIP143\",\n ],\n scrambleKey\n );\n // new APDU (nano app API) for bitcoin and old APDU for altcoin\n if (currency === \"bitcoin\" || currency === \"bitcoin_testnet\") {\n this._impl = new BtcNew(new AppClient(this._transport));\n } else {\n this._impl = new BtcOld(this._transport);\n }\n }\n\n /**\n * Get an XPUB with a ledger device\n * @param arg derivation parameter\n * - path: a BIP 32 path of the account level. e.g. `84'/0'/0'`\n * - xpubVersion: the XPUBVersion of the coin used. (use @ledgerhq/currencies if needed)\n * @returns XPUB of the account\n */\n getWalletXpub(arg: { path: string; xpubVersion: number }): Promise {\n return this.changeImplIfNecessary().then((impl) => {\n return impl.getWalletXpub(arg);\n });\n }\n\n /**\n * @param path a BIP 32 path\n * @param options an object with optional these fields:\n *\n * - verify (boolean) will ask user to confirm the address on the device\n *\n * - format (\"legacy\" | \"p2sh\" | \"bech32\" | \"bech32m\" | \"cashaddr\") to use different bitcoin address formatter.\n *\n * NB The normal usage is to use:\n *\n * - legacy format with 44' paths\n *\n * - p2sh format with 49' paths\n *\n * - bech32 format with 84' paths\n *\n * - cashaddr in case of Bitcoin Cash\n *\n * @example\n * btc.getWalletPublicKey(\"44'/0'/0'/0/0\").then(o => o.bitcoinAddress)\n * btc.getWalletPublicKey(\"49'/0'/0'/0/0\", { format: \"p2sh\" }).then(o => o.bitcoinAddress)\n */\n getWalletPublicKey(\n path: string,\n opts?: {\n verify?: boolean;\n format?: AddressFormat;\n }\n ): Promise<{\n publicKey: string;\n bitcoinAddress: string;\n chainCode: string;\n }> {\n let options;\n if (arguments.length > 2 || typeof opts === \"boolean\") {\n console.warn(\n \"btc.getWalletPublicKey deprecated signature used. Please switch to getWalletPublicKey(path, { format, verify })\"\n );\n options = {\n verify: !!opts,\n // eslint-disable-next-line prefer-rest-params\n format: arguments[2] ? \"p2sh\" : \"legacy\",\n };\n } else {\n options = opts || {};\n }\n return this.changeImplIfNecessary().then((impl) => {\n return impl.getWalletPublicKey(path, options);\n });\n }\n\n /**\n * You can sign a message according to the Bitcoin Signature format and retrieve v, r, s given the message and the BIP 32 path of the account to sign.\n * @example\n btc.signMessage(\"44'/60'/0'/0'/0\", Buffer.from(\"test\").toString(\"hex\")).then(function(result) {\n var v = result['v'] + 27 + 4;\n var signature = Buffer.from(v.toString(16) + result['r'] + result['s'], 'hex').toString('base64');\n console.log(\"Signature : \" + signature);\n }).catch(function(ex) {console.log(ex);});\n */\n signMessage(\n path: string,\n messageHex: string\n ): Promise<{\n v: number;\n r: string;\n s: string;\n }> {\n return signMessage(this._transport, {\n path,\n messageHex,\n });\n }\n\n /**\n * To sign a transaction involving standard (P2PKH) inputs, call createTransaction with the following parameters\n * @param inputs is an array of [ transaction, output_index, optional redeem script, optional sequence ] where\n *\n * * transaction is the previously computed transaction object for this UTXO\n * * output_index is the output in the transaction used as input for this UTXO (counting from 0)\n * * redeem script is the optional redeem script to use when consuming a Segregated Witness input\n * * sequence is the sequence number to use for this input (when using RBF), or non present\n * @param associatedKeysets is an array of BIP 32 paths pointing to the path to the private key used for each UTXO\n * @param changePath is an optional BIP 32 path pointing to the path to the public key used to compute the change address\n * @param outputScriptHex is the hexadecimal serialized outputs of the transaction to sign, including leading vararg voutCount\n * @param lockTime is the optional lockTime of the transaction to sign, or default (0)\n * @param sigHashType is the hash type of the transaction to sign, or default (all)\n * @param segwit is an optional boolean indicating wether to use segwit or not. This includes wrapped segwit.\n * @param initialTimestamp is an optional timestamp of the function call to use for coins that necessitate timestamps only, (not the one that the tx will include)\n * @param additionals list of additionnal options\n *\n * - \"bech32\" for spending native segwit outputs\n * - \"bech32m\" for spending segwit v1+ outputs\n * - \"abc\" for bch\n * - \"gold\" for btg\n * - \"bipxxx\" for using BIPxxx\n * - \"sapling\" to indicate a zec transaction is supporting sapling (to be set over block 419200)\n * @param expiryHeight is an optional Buffer for zec overwinter / sapling Txs\n * @param useTrustedInputForSegwit trust inputs for segwit transactions. If app version >= 1.4.0 this should be true.\n * @return the signed transaction ready to be broadcast\n * @example\n btc.createTransaction({\n inputs: [ [tx1, 1] ],\n associatedKeysets: [\"0'/0/0\"],\n outputScriptHex: \"01905f0100000000001976a91472a5d75c8d2d0565b656a5232703b167d50d5a2b88ac\"\n }).then(res => ...);\n */\n createPaymentTransaction(arg: CreateTransactionArg): Promise {\n if (arguments.length > 1) {\n throw new Error(\n \"@ledgerhq/hw-app-btc: createPaymentTransaction multi argument signature is deprecated. please switch to named parameters.\"\n );\n }\n return this.changeImplIfNecessary().then((impl) => {\n return impl.createPaymentTransaction(arg);\n });\n }\n\n /**\n * To obtain the signature of multisignature (P2SH) inputs, call signP2SHTransaction_async with the folowing parameters\n * @param inputs is an array of [ transaction, output_index, redeem script, optional sequence ] where\n * * transaction is the previously computed transaction object for this UTXO\n * * output_index is the output in the transaction used as input for this UTXO (counting from 0)\n * * redeem script is the mandatory redeem script associated to the current P2SH input\n * * sequence is the sequence number to use for this input (when using RBF), or non present\n * @param associatedKeysets is an array of BIP 32 paths pointing to the path to the private key used for each UTXO\n * @param outputScriptHex is the hexadecimal serialized outputs of the transaction to sign\n * @param lockTime is the optional lockTime of the transaction to sign, or default (0)\n * @param sigHashType is the hash type of the transaction to sign, or default (all)\n * @return the signed transaction ready to be broadcast\n * @example\n btc.signP2SHTransaction({\n inputs: [ [tx, 1, \"52210289b4a3ad52a919abd2bdd6920d8a6879b1e788c38aa76f0440a6f32a9f1996d02103a3393b1439d1693b063482c04bd40142db97bdf139eedd1b51ffb7070a37eac321030b9a409a1e476b0d5d17b804fcdb81cf30f9b99c6f3ae1178206e08bc500639853ae\"] ],\n associatedKeysets: [\"0'/0/0\"],\n outputScriptHex: \"01905f0100000000001976a91472a5d75c8d2d0565b656a5232703b167d50d5a2b88ac\"\n }).then(result => ...);\n */\n signP2SHTransaction(arg: SignP2SHTransactionArg): Promise {\n return signP2SHTransaction(this._transport, arg);\n }\n\n /**\n * For each UTXO included in your transaction, create a transaction object from the raw serialized version of the transaction used in this UTXO.\n * @example\n const tx1 = btc.splitTransaction(\"01000000014ea60aeac5252c14291d428915bd7ccd1bfc4af009f4d4dc57ae597ed0420b71010000008a47304402201f36a12c240dbf9e566bc04321050b1984cd6eaf6caee8f02bb0bfec08e3354b022012ee2aeadcbbfd1e92959f57c15c1c6debb757b798451b104665aa3010569b49014104090b15bde569386734abf2a2b99f9ca6a50656627e77de663ca7325702769986cf26cc9dd7fdea0af432c8e2becc867c932e1b9dd742f2a108997c2252e2bdebffffffff0281b72e00000000001976a91472a5d75c8d2d0565b656a5232703b167d50d5a2b88aca0860100000000001976a9144533f5fb9b4817f713c48f0bfe96b9f50c476c9b88ac00000000\");\n */\n splitTransaction(\n transactionHex: string,\n isSegwitSupported: boolean | null | undefined = false,\n hasTimestamp = false,\n hasExtraData = false,\n additionals: Array = []\n ): Transaction {\n return splitTransaction(\n transactionHex,\n isSegwitSupported,\n hasTimestamp,\n hasExtraData,\n additionals\n );\n }\n\n /**\n @example\n const tx1 = btc.splitTransaction(\"01000000014ea60aeac5252c14291d428915bd7ccd1bfc4af009f4d4dc57ae597ed0420b71010000008a47304402201f36a12c240dbf9e566bc04321050b1984cd6eaf6caee8f02bb0bfec08e3354b022012ee2aeadcbbfd1e92959f57c15c1c6debb757b798451b104665aa3010569b49014104090b15bde569386734abf2a2b99f9ca6a50656627e77de663ca7325702769986cf26cc9dd7fdea0af432c8e2becc867c932e1b9dd742f2a108997c2252e2bdebffffffff0281b72e00000000001976a91472a5d75c8d2d0565b656a5232703b167d50d5a2b88aca0860100000000001976a9144533f5fb9b4817f713c48f0bfe96b9f50c476c9b88ac00000000\");\n const outputScript = btc.serializeTransactionOutputs(tx1).toString('hex');\n */\n serializeTransactionOutputs(t: Transaction): Buffer {\n return serializeTransactionOutputs(t);\n }\n\n getTrustedInput(\n indexLookup: number,\n transaction: Transaction,\n additionals: Array = []\n ): Promise {\n return getTrustedInput(\n this._transport,\n indexLookup,\n transaction,\n additionals\n );\n }\n\n getTrustedInputBIP143(\n indexLookup: number,\n transaction: Transaction,\n additionals: Array = []\n ): string {\n return getTrustedInputBIP143(\n this._transport,\n indexLookup,\n transaction,\n additionals\n );\n }\n\n async changeImplIfNecessary(): Promise {\n const appAndVersion = await getAppAndVersion(this._transport);\n if (appAndVersion.name === \"Exchange\" && this._impl instanceof BtcNew) {\n const isBtcLegacy = await checkIsBtcLegacy(this._transport);\n if (isBtcLegacy) {\n this._impl = new BtcOld(this._transport);\n }\n }\n return this._impl;\n }\n}\n", "import Transport from '@ledgerhq/hw-transport'\n\n/**\n * Speculos TCP transport implementation\n *\n * @example\n * import TransportSpeculosHTTP from \"@casimir/speculos-transport\"\n * const transport = await TransportSpeculosHTTP.create()\n * const res = await transport.send(0xE0, 0x01, 0, 0)\n */\nexport default class TransportSpeculosHTTP extends Transport {\n baseURL: string\n eventStream!: EventSource\n\n constructor(baseURL: string) {\n super()\n this.baseURL = baseURL\n }\n\n static isSupported = (): Promise => Promise.resolve(true)\n // this transport is not discoverable\n static list = (): Promise => Promise.resolve([])\n static listen = () => ({\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n unsubscribe: () => {},\n })\n\n static open = async (\n baseURL?: string\n ): Promise => {\n try {\n baseURL = baseURL || 'http://127.0.0.1:5000'\n const transport = new TransportSpeculosHTTP(baseURL)\n const eventSource = new EventSource(`${baseURL}/events?stream=true`)\n // eventSource.addEventListener('open', (event: Event) => console.warn('Ledger', event.type), false)\n // eventSource.addEventListener('error', (event: Event) => console.warn('Ledger', event.type, eventSource.readyState), false)\n // eventSource.addEventListener('message', (message: MessageEvent) => console.warn('Ledger', message.type, message.data), false)\n transport.eventStream = eventSource\n return transport\n } catch (error) {\n console.log(error)\n throw error\n }\n }\n\n /**\n * Press and release button\n * buttons available: left, right, both\n * @param {*} but\n */\n button = async (but: string): Promise => {\n const action = { action: 'press-and-release' }\n await fetch(`${this.baseURL}/button/${but}`, { method: 'POST', body: JSON.stringify(action) })\n }\n\n async exchange(apdu: Buffer): Promise {\n const hex = apdu.toString('hex')\n const response = await fetch(`${this.baseURL}/apdu`, { method: 'POST', body: JSON.stringify({ data: hex }) })\n const json = await response.json()\n const { data } = json\n return Buffer.from(data, 'hex')\n }\n\n async close() {\n // close event stream\n this.eventStream.close()\n return Promise.resolve()\n }\n}\n", "import Transport from '@ledgerhq/hw-transport'\nimport TransportSpeculosHTTP from '@casimir/transport-speculos-http'\nimport TransportWebUSB from '@ledgerhq/hw-transport-webusb'\n\nexport default function useTransports() {\n\n async function createUSBTransport(): Promise {\n return await TransportWebUSB.create()\n }\n\n async function createSpeculosTransport(baseURL?: string): Promise {\n return await TransportSpeculosHTTP.open(baseURL)\n }\n\n return { createUSBTransport, createSpeculosTransport }\n}"], + "mappings": "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ACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,kEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,kEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,gEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,kEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,kEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,CACF,CACF,EACA,IAAK,CACH,IAAK,EACL,OAAQ,CACN,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,kEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,kEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,kEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,kEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,iEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,kEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CAC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", + "names": ["require_create_hash", "__commonJSMin", "exports", "module", "require_create_hmac", "__commonJSMin", "exports", "module", "require_crypto", "__commonJSMin", "exports", "createHash", "createHmac", "hash160", "buffer", "sha256Hash", "hmacSHA512", "key", "data", "require_safe_buffer", "__commonJSMin", "exports", "module", "buffer", "Buffer", "copyProps", "src", "dst", "key", "SafeBuffer", "arg", "encodingOrOffset", "length", "size", "fill", "encoding", "buf", "require_src", "__commonJSMin", "exports", "module", "_Buffer", "base", "ALPHABET", "BASE_MAP", "j", "i", "x", "xc", "BASE", "LEADER", "FACTOR", "iFACTOR", "encode", "source", "zeroes", "length", "pbegin", "pend", "size", "b58", "carry", "it1", "it2", "str", "decodeUnsafe", "psz", "b256", "it3", "it4", "vch", "decode", "string", "buffer", "require_bs58", "__commonJSMin", "exports", "module", "basex", "ALPHABET", "require_base", "__commonJSMin", "exports", "module", "base58", "Buffer", "checksumFn", "encode", "payload", "checksum", "decodeRaw", "buffer", "newChecksum", "decodeUnsafe", "string", "decode", "require_bs58check", "__commonJSMin", "exports", "module", "createHash", "bs58checkBase", "sha256x2", "buffer", "tmp", "require_file_uri_to_path", "__commonJSMin", "exports", "module", "sep", "fileUriToPath", "uri", "rest", "firstSlash", "host", "path", "require_bindings", "__commonJSMin", "exports", "module", "fs", "path", "fileURLToPath", "join", "dirname", "exists", "defaults", "bindings", "opts", "i", "requireFunc", "tries", "l", "n", "b", "err", "p", "e", "a", "calling_file", "origPST", "origSTL", "dummy", "fileName", "st", "fileSchema", "file", "dir", "prev", "require_native", "__commonJSMin", "exports", "module", "binding", "key", "require_bn", "__commonJSMin", "exports", "module", "assert", "val", "msg", "inherits", "ctor", "superCtor", "TempCtor", "BN", "number", "base", "endian", "Buffer", "num", "left", "right", "start", "i", "j", "w", "off", "parseHex4Bits", "string", "index", "c", "parseHexByte", "lowerBound", "r", "parseLength", "parseBase", "str", "end", "mul", "len", "limbLen", "limbPow", "total", "mod", "word", "pow", "dest", "size", "zeros", "groupSizes", "groupBases", "padding", "out", "carry", "groupSize", "groupBase", "ret", "length", "ArrayType", "byteLength", "reqLength", "littleEndian", "res", "q", "t", "hi", "toBitArray", "bit", "wbit", "b", "width", "a", "bytesNeeded", "bitsLeft", "cmp", "smallMulTo", "self", "lo", "k", "ncarry", "rword", "maxJ", "comb10MulTo", "o", "mid", "a0", "al0", "ah0", "a1", "al1", "ah1", "a2", "al2", "ah2", "a3", "al3", "ah3", "a4", "al4", "ah4", "a5", "al5", "ah5", "a6", "al6", "ah6", "a7", "al7", "ah7", "a8", "al8", "ah8", "a9", "al9", "ah9", "b0", "bl0", "bh0", "b1", "bl1", "bh1", "b2", "bl2", "bh2", "b3", "bl3", "bh3", "b4", "bl4", "bh4", "b5", "bl5", "bh5", "b6", "bl6", "bh6", "b7", "bl7", "bh7", "b8", "bl8", "bh8", "b9", "bl9", "bh9", "w0", "w1", "w2", "w3", "w4", "w5", "w6", "w7", "w8", "w9", "w10", "w11", "w12", "w13", "w14", "w15", "w16", "w17", "w18", "bigMulTo", "hncarry", "jumboMulTo", "fftm", "FFTM", "x", "y", "N", "l", "rb", "rbt", "rws", "iws", "rtws", "itws", "s", "rtwdf", "itwdf", "p", "rtwdf_", "itwdf_", "re", "ie", "ro", "io", "rx", "n", "m", "odd", "ws", "ph", "rwst", "iwst", "nrws", "nrwst", "niwst", "rmws", "bits", "carryMask", "newCarry", "hint", "extended", "h", "mask", "maskedWords", "shift", "mode", "bhi", "bhiBits", "diff", "qj", "positive", "div", "dm", "half", "r2", "acc", "A", "B", "C", "D", "g", "yp", "xp", "im", "jm", "x1", "x2", "delta", "negative", "Red", "ctx", "primes", "MPrime", "name", "tmp", "rlen", "input", "K256", "output", "outLen", "prev", "next", "P224", "P192", "P25519", "prime", "mod3", "one", "nOne", "lpow", "z", "inv", "windowSize", "wnd", "current", "currentLen", "Mont", "u", "require_bn", "__commonJSMin", "exports", "module", "assert", "val", "msg", "inherits", "ctor", "superCtor", "TempCtor", "BN", "number", "base", "endian", "Buffer", "num", "left", "right", "start", "i", "j", "w", "off", "parseHex4Bits", "string", "index", "c", "parseHexByte", "lowerBound", "r", "parseLength", "parseBase", "str", "end", "mul", "len", "limbLen", "limbPow", "total", "mod", "word", "pow", "dest", "size", "zeros", "groupSizes", "groupBases", "padding", "out", "carry", "groupSize", "groupBase", "ret", "length", "ArrayType", "byteLength", "reqLength", "littleEndian", "res", "q", "t", "hi", "toBitArray", "bit", "wbit", "b", "width", "a", "bytesNeeded", "bitsLeft", "cmp", "smallMulTo", "self", "lo", "k", "ncarry", "rword", "maxJ", "comb10MulTo", "o", "mid", "a0", "al0", "ah0", "a1", "al1", "ah1", "a2", "al2", "ah2", "a3", "al3", "ah3", "a4", "al4", "ah4", "a5", "al5", "ah5", "a6", "al6", "ah6", "a7", "al7", "ah7", "a8", "al8", "ah8", "a9", "al9", "ah9", "b0", "bl0", "bh0", "b1", "bl1", "bh1", "b2", "bl2", "bh2", "b3", "bl3", "bh3", "b4", "bl4", "bh4", "b5", "bl5", "bh5", "b6", "bl6", "bh6", "b7", "bl7", "bh7", "b8", "bl8", "bh8", "b9", "bl9", "bh9", "w0", "w1", "w2", "w3", "w4", "w5", "w6", "w7", "w8", "w9", "w10", "w11", "w12", "w13", "w14", "w15", "w16", "w17", "w18", "bigMulTo", "hncarry", "jumboMulTo", "fftm", "FFTM", "x", "y", "N", "l", "rb", "rbt", "rws", "iws", "rtws", "itws", "s", "rtwdf", "itwdf", "p", "rtwdf_", "itwdf_", "re", "ie", "ro", "io", "rx", "n", "m", "odd", "ws", "ph", "rwst", "iwst", "nrws", "nrwst", "niwst", "rmws", "bits", "carryMask", "newCarry", "hint", "extended", "h", "mask", "maskedWords", "shift", "mode", "bhi", "bhiBits", "diff", "qj", "positive", "div", "dm", "half", "r2", "acc", "A", "B", "C", "D", "g", "yp", "xp", "im", "jm", "x1", "x2", "delta", "negative", "Red", "ctx", "primes", "MPrime", "name", "tmp", "rlen", "input", "K256", "output", "outLen", "prev", "next", "P224", "P192", "P25519", "prime", "mod3", "one", "nOne", "lpow", "z", "inv", "windowSize", "wnd", "current", "currentLen", "Mont", "u", "require_minimalistic_assert", "__commonJSMin", "exports", "module", "assert", "val", "msg", "l", "require_utils", "__commonJSMin", "exports", "utils", "toArray", "msg", "enc", "res", "i", "c", "hi", "lo", "zero2", "word", "toHex", "arr", "require_utils", "__commonJSMin", "exports", "utils", "BN", "minAssert", "minUtils", "getNAF", "num", "w", "bits", "naf", "ws", "k", "i", "z", "mod", "getJSF", "k1", "k2", "jsf", "d1", "d2", "m8", "m14", "m24", "u1", "u2", "cachedProperty", "obj", "name", "computer", "key", "parseBytes", "bytes", "intFromLE", "require_brorand", "__commonJSMin", "exports", "module", "r", "len", "Rand", "rand", "n", "res", "i", "arr", "crypto", "require_base", "__commonJSMin", "exports", "module", "BN", "utils", "getNAF", "getJSF", "assert", "BaseCurve", "type", "conf", "adjustCount", "p", "k", "doubles", "naf", "I", "repr", "j", "nafW", "l", "a", "b", "i", "w", "nafPoints", "wnd", "acc", "z", "defW", "points", "coeffs", "len", "jacobianResult", "wndWidth", "max", "comb", "index", "jsf", "ja", "jb", "tmp", "zero", "BasePoint", "curve", "bytes", "enc", "res", "compact", "x", "power", "precomputed", "step", "dbl", "require_inherits_browser", "__commonJSMin", "exports", "module", "ctor", "superCtor", "TempCtor", "require_inherits", "__commonJSMin", "exports", "module", "util", "require_short", "__commonJSMin", "exports", "module", "utils", "BN", "inherits", "Base", "assert", "ShortCurve", "conf", "beta", "lambda", "betas", "lambdas", "basis", "vec", "num", "red", "tinv", "ntinv", "l1", "l2", "aprxSqrt", "u", "v", "x1", "y1", "x2", "y2", "a0", "b0", "a1", "b1", "a2", "b2", "prevR", "i", "r", "x", "q", "y", "len1", "len2", "k", "v1", "v2", "c1", "c2", "p1", "p2", "q1", "q2", "k1", "k2", "odd", "isOdd", "point", "ax", "rhs", "points", "coeffs", "jacobianResult", "npoints", "ncoeffs", "split", "p", "res", "j", "Point", "curve", "isRed", "obj", "pre", "endoMul", "obj2point", "c", "nx", "ny", "ys1", "a", "dyinv", "_precompute", "negate", "JPoint", "z", "zinv", "zinv2", "ay", "pz2", "z2", "u1", "u2", "s1", "s2", "h", "h2", "h3", "nz", "pow", "jx", "jy", "jz", "jz4", "jyd", "jx2", "jyd2", "jyd4", "t1", "t2", "dny", "xx", "yy", "yyyy", "s", "m", "t", "yyyy8", "b", "d", "e", "f", "c8", "delta", "gamma", "alpha", "beta4", "beta8", "ggamma8", "jy2", "jxd4", "jyd8", "zz", "mm", "ee", "yyu4", "kbase", "z3", "pz3", "zs", "rx", "xc", "require_mont", "__commonJSMin", "exports", "module", "BN", "inherits", "Base", "utils", "MontCurve", "conf", "point", "x", "x2", "rhs", "y", "Point", "curve", "z", "bytes", "enc", "obj", "a", "aa", "b", "bb", "c", "nx", "nz", "p", "diff", "d", "da", "cb", "k", "t", "bits", "i", "other", "require_edwards", "__commonJSMin", "exports", "module", "utils", "BN", "inherits", "Base", "assert", "EdwardsCurve", "conf", "num", "x", "y", "z", "t", "odd", "x2", "rhs", "lhs", "y2", "isOdd", "point", "Point", "curve", "obj", "a", "b", "c", "d", "e", "g", "f", "h", "nx", "ny", "nt", "nz", "j", "p", "tmp", "k", "k1", "k2", "zi", "other", "rx", "xc", "require_curve", "__commonJSMin", "exports", "curve", "require_utils", "__commonJSMin", "exports", "assert", "inherits", "isSurrogatePair", "msg", "i", "toArray", "enc", "res", "p", "c", "toHex", "zero2", "htonl", "w", "toHex32", "endian", "zero8", "word", "join32", "start", "end", "len", "k", "split32", "m", "rotr32", "b", "rotl32", "sum32", "a", "sum32_3", "sum32_4", "d", "sum32_5", "e", "sum64", "buf", "pos", "ah", "al", "bh", "bl", "lo", "hi", "sum64_hi", "sum64_lo", "sum64_4_hi", "ch", "cl", "dh", "dl", "carry", "sum64_4_lo", "sum64_5_hi", "eh", "el", "sum64_5_lo", "rotr64_hi", "num", "r", "rotr64_lo", "shr64_hi", "shr64_lo", "require_common", "__commonJSMin", "exports", "utils", "assert", "BlockHash", "msg", "enc", "r", "len", "bytes", "k", "res", "i", "t", "require_common", "__commonJSMin", "exports", "utils", "rotr32", "ft_1", "s", "x", "y", "z", "ch32", "p32", "maj32", "s0_256", "s1_256", "g0_256", "g1_256", "require__", "__commonJSMin", "exports", "module", "utils", "common", "shaCommon", "rotl32", "sum32", "sum32_5", "ft_1", "BlockHash", "sha1_K", "SHA1", "msg", "start", "W", "a", "b", "c", "d", "e", "s", "t", "enc", "require__", "__commonJSMin", "exports", "module", "utils", "common", "shaCommon", "assert", "sum32", "sum32_4", "sum32_5", "ch32", "maj32", "s0_256", "s1_256", "g0_256", "g1_256", "BlockHash", "sha256_K", "SHA256", "msg", "start", "W", "a", "b", "c", "d", "e", "f", "g", "h", "T1", "T2", "enc", "require__", "__commonJSMin", "exports", "module", "utils", "SHA256", "SHA224", "enc", "require__", "__commonJSMin", "exports", "module", "utils", "common", "assert", "rotr64_hi", "rotr64_lo", "shr64_hi", "shr64_lo", "sum64", "sum64_hi", "sum64_lo", "sum64_4_hi", "sum64_4_lo", "sum64_5_hi", "sum64_5_lo", "BlockHash", "sha512_K", "SHA512", "msg", "start", "W", "c0_hi", "g1_512_hi", "c0_lo", "g1_512_lo", "c1_hi", "c1_lo", "c2_hi", "g0_512_hi", "c2_lo", "g0_512_lo", "c3_hi", "c3_lo", "ah", "al", "bh", "bl", "ch", "cl", "dh", "dl", "eh", "el", "fh", "fl", "gh", "gl", "hh", "hl", "i", "s1_512_hi", "s1_512_lo", "ch64_hi", "ch64_lo", "c4_hi", "c4_lo", "T1_hi", "T1_lo", "s0_512_hi", "s0_512_lo", "maj64_hi", "maj64_lo", "T2_hi", "T2_lo", "enc", "xh", "xl", "yh", "yl", "zh", "r", "zl", "require__", "__commonJSMin", "exports", "module", "utils", "SHA512", "SHA384", "enc", "require_sha", "__commonJSMin", "exports", "require_ripemd", "__commonJSMin", "exports", "utils", "common", "rotl32", "sum32", "sum32_3", "sum32_4", "BlockHash", "RIPEMD160", "msg", "start", "A", "B", "C", "D", "E", "Ah", "Bh", "Ch", "Dh", "Eh", "j", "T", "f", "r", "K", "s", "rh", "Kh", "sh", "enc", "x", "y", "z", "require_hmac", "__commonJSMin", "exports", "module", "utils", "assert", "Hmac", "hash", "key", "enc", "i", "msg", "require_hash", "__commonJSMin", "exports", "hash", "require_secp256k1", "__commonJSMin", "exports", "module", "require_curves", "__commonJSMin", "exports", "curves", "hash", "curve", "utils", "assert", "PresetCurve", "options", "defineCurve", "name", "pre", "require_hmac_drbg", "__commonJSMin", "exports", "module", "hash", "utils", "assert", "HmacDRBG", "options", "entropy", "nonce", "pers", "seed", "i", "kmac", "entropyEnc", "add", "addEnc", "len", "enc", "temp", "res", "require_key", "__commonJSMin", "exports", "module", "BN", "utils", "assert", "KeyPair", "ec", "options", "pub", "enc", "priv", "compact", "key", "msg", "signature", "require_signature", "__commonJSMin", "exports", "module", "BN", "utils", "assert", "Signature", "options", "enc", "Position", "getLength", "buf", "p", "initial", "octetLen", "val", "i", "off", "rmPadding", "len", "data", "rlen", "r", "slen", "s", "constructLength", "arr", "octets", "backHalf", "res", "require_ec", "__commonJSMin", "exports", "module", "BN", "HmacDRBG", "utils", "curves", "rand", "assert", "KeyPair", "Signature", "EC", "options", "priv", "enc", "pub", "drbg", "bytes", "ns2", "msg", "truncOnly", "delta", "key", "bkey", "nonce", "ns1", "iter", "k", "kp", "kpX", "r", "s", "recoveryParam", "signature", "sinv", "u1", "u2", "j", "n", "e", "isYOdd", "isSecondKey", "rInv", "s1", "s2", "Q", "Qprime", "require_key", "__commonJSMin", "exports", "module", "utils", "assert", "parseBytes", "cachedProperty", "KeyPair", "eddsa", "params", "pub", "secret", "hash", "lastIx", "a", "message", "sig", "enc", "require_signature", "__commonJSMin", "exports", "module", "BN", "utils", "assert", "cachedProperty", "parseBytes", "Signature", "eddsa", "sig", "require_eddsa", "__commonJSMin", "exports", "module", "hash", "curves", "utils", "assert", "parseBytes", "KeyPair", "Signature", "EDDSA", "curve", "message", "secret", "key", "r", "R", "Rencoded", "s_", "S", "sig", "pub", "h", "SG", "RplusAh", "i", "point", "enc", "bytes", "lastIx", "normed", "xIsOdd", "y", "num", "val", "require_elliptic", "__commonJSMin", "exports", "elliptic", "require_rfc6979", "__commonJSMin", "exports", "module", "createHmac", "ONE1", "ZERO1", "deterministicGenerateK", "hash", "x", "checkSig", "isPrivate", "extraEntropy", "k", "v", "T", "require_js", "__commonJSMin", "exports", "module", "BN", "EC", "secp256k1", "deterministicGenerateK", "ZERO32", "EC_GROUP_ORDER", "EC_P", "n", "nDiv2", "G", "THROW_BAD_PRIVATE", "THROW_BAD_POINT", "THROW_BAD_TWEAK", "THROW_BAD_HASH", "THROW_BAD_SIGNATURE", "THROW_BAD_EXTRA_DATA", "isScalar", "x", "isOrderScalar", "isPoint", "p", "decodeFrom", "y", "__isPointCompressed", "isPointCompressed", "isPrivate", "isSignature", "value", "r", "s", "assumeCompression", "pubkey", "fromBuffer", "d", "toBuffer", "P", "getEncoded", "compressed", "pointAdd", "pA", "pB", "__compressed", "a", "b", "pp", "pointAddScalar", "tweak", "tt", "qq", "uu", "pointCompress", "pointFromScalar", "dd", "pointMultiply", "privateAdd", "dt", "privateSub", "sign", "hash", "__sign", "signWithEntropy", "addData", "e", "k", "kI", "Q", "buffer", "verify", "q", "signature", "strict", "sInv", "u1", "u2", "R", "require_tiny_secp256k1", "__commonJSMin", "exports", "module", "require_native", "__commonJSMin", "exports", "module", "types", "value", "typeName", "t", "require_errors", "__commonJSMin", "exports", "module", "native", "getTypeName", "fn", "getValueTypeName", "value", "getValue", "captureStackTrace", "tfJSON", "type", "tfErrorString", "valueTypeName", "valueJson", "TfTypeError", "tfPropertyErrorString", "label", "name", "description", "TfPropertyTypeError", "property", "tfCustomError", "expected", "actual", "tfSubError", "require_extra", "__commonJSMin", "exports", "module", "NATIVE", "ERRORS", "_Buffer", "value", "Hex", "_LengthN", "type", "length", "name", "Length", "_ArrayN", "_BufferN", "_HexN", "_StringN", "Range", "a", "b", "f", "_range", "strict", "INT53_MAX", "Finite", "Int8", "Int16", "Int32", "Int53", "UInt8", "UInt16", "UInt32", "UInt53", "types", "typeName", "t", "require_typeforce", "__commonJSMin", "exports", "module", "ERRORS", "NATIVE", "tfJSON", "TfTypeError", "TfPropertyTypeError", "tfSubError", "getValueTypeName", "TYPES", "type", "options", "compile", "_arrayOf", "array", "strict", "value", "i", "typeforce", "e", "str", "maybe", "_maybe", "propertyType", "propertyKeyType", "_map", "propertyName", "propertyValue", "uncompiled", "typePropertyName", "_object", "types", "_anyOf", "_allOf", "_quacksLike", "_tuple", "values", "expected", "_value", "actual", "surrogate", "typeName", "EXTRA", "require_wif", "__commonJSMin", "exports", "module", "bs58check", "decodeRaw", "buffer", "version", "encodeRaw", "privateKey", "compressed", "result", "decode", "string", "encode", "require_bip32", "__commonJSMin", "exports", "crypto", "bs58check", "ecc", "typeforce", "wif", "UINT256_TYPE", "NETWORK_TYPE", "BITCOIN", "HIGHEST_BIT", "UINT31_MAX", "BIP32Path", "value", "UInt31", "BIP32", "__D", "__Q", "chainCode", "network", "__DEPTH", "__INDEX", "__PARENT_FINGERPRINT", "fromPublicKeyLocal", "version", "buffer", "index", "isHardened", "data", "I", "IL", "IR", "hd", "Ki", "ki", "fromPrivateKeyLocal", "path", "splitPath", "prevHd", "indexStr", "hash", "lowR", "sig", "extraData", "counter", "signature", "fromBase58", "inString", "depth", "parentFingerprint", "k", "X", "fromPrivateKey", "privateKey", "fromPublicKey", "publicKey", "fromSeed", "seed", "require_src", "__commonJSMin", "exports", "bip32_1", "require_networks", "__commonJSMin", "exports", "require_script_number", "__commonJSMin", "exports", "decode", "buffer", "maxLength", "minimal", "length", "a", "b", "result", "i", "scriptNumSize", "encode", "_number", "value", "size", "negative", "require_types", "__commonJSMin", "exports", "typeforce", "UINT31_MAX", "UInt31", "value", "BIP32Path", "Signer", "obj", "SATOSHI_MAX", "Satoshi", "require_bip66", "__commonJSMin", "exports", "module", "Buffer", "check", "buffer", "lenR", "lenS", "decode", "encode", "r", "s", "signature", "require_script_signature", "__commonJSMin", "exports", "types", "bip66", "typeforce", "ZERO", "toDER", "x", "i", "fromDER", "buffer", "bstart", "decode", "hashType", "hashTypeMod", "decoded", "r", "encode", "signature", "hashTypeBuffer", "require_pushdata_bitcoin", "__commonJSMin", "exports", "module", "OPS", "encodingLength", "i", "encode", "buffer", "number", "offset", "size", "decode", "opcode", "require_map", "__commonJSMin", "exports", "module", "OPS", "map", "op", "code", "require_script", "__commonJSMin", "exports", "scriptNumber", "scriptSignature", "types", "bip66", "ecc", "pushdata", "typeforce", "REVERSE_OPS", "OP_INT_BASE", "isOPInt", "value", "isPushOnlyChunk", "isPushOnly", "asMinimalOP", "buffer", "chunksIsBuffer", "buf", "chunksIsArray", "singleChunkIsBuffer", "compile", "chunks", "bufferSize", "accum", "chunk", "offset", "opcode", "decompile", "i", "d", "data", "op", "toASM", "fromASM", "asm", "chunkStr", "toStack", "isCanonicalPubKey", "isDefinedHashType", "hashType", "hashTypeMod", "isCanonicalScriptSignature", "require_lazy", "__commonJSMin", "exports", "prop", "object", "name", "f", "_value", "value", "require_embed", "__commonJSMin", "exports", "networks_1", "bscript", "lazy", "typef", "OPS", "stacksEqual", "a", "b", "x", "i", "p2data", "opts", "o", "chunks", "require_p2ms", "__commonJSMin", "exports", "networks_1", "bscript", "lazy", "OPS", "typef", "ecc", "OP_INT_BASE", "stacksEqual", "a", "b", "x", "i", "p2ms", "opts", "isAcceptableSignature", "o", "chunks", "decoded", "decode", "output", "require_p2pk", "__commonJSMin", "exports", "networks_1", "bscript", "lazy", "typef", "OPS", "ecc", "p2pk", "a", "opts", "_chunks", "o", "require_crypto", "__commonJSMin", "exports", "createHash", "ripemd160", "buffer", "sha1", "sha256", "hash160", "hash256", "require_p2pkh", "__commonJSMin", "exports", "bcrypto", "networks_1", "bscript", "lazy", "typef", "OPS", "ecc", "bs58check", "p2pkh", "a", "opts", "_address", "payload", "version", "hash", "_chunks", "network", "o", "hash2", "pkh", "chunks", "require_p2sh", "__commonJSMin", "exports", "bcrypto", "networks_1", "bscript", "lazy", "typef", "OPS", "bs58check", "stacksEqual", "a", "b", "x", "i", "p2sh", "opts", "network", "o", "_address", "payload", "version", "hash", "_chunks", "_redeem", "chunks", "nameParts", "hash2", "checkRedeem", "redeem", "decompile", "hasInput", "hasWitness", "richunks", "require_bech32", "__commonJSMin", "exports", "module", "ALPHABET", "ALPHABET_MAP", "z", "x", "polymodStep", "pre", "b", "prefixChk", "prefix", "chk", "i", "c", "v", "encode", "words", "LIMIT", "result", "__decode", "str", "lowered", "uppered", "split", "wordChars", "decodeUnsafe", "res", "decode", "convert", "data", "inBits", "outBits", "pad", "value", "bits", "maxV", "toWordsUnsafe", "bytes", "toWords", "fromWordsUnsafe", "fromWords", "require_p2wpkh", "__commonJSMin", "exports", "bcrypto", "networks_1", "bscript", "lazy", "typef", "OPS", "ecc", "bech32", "EMPTY_BUFFER", "p2wpkh", "a", "opts", "_address", "result", "version", "data", "network", "o", "words", "hash", "pkh", "require_p2wsh", "__commonJSMin", "exports", "bcrypto", "networks_1", "bscript", "lazy", "typef", "OPS", "ecc", "bech32", "EMPTY_BUFFER", "stacksEqual", "a", "b", "x", "i", "chunkHasUncompressedPubkey", "chunk", "p2wsh", "opts", "_address", "result", "version", "data", "_rchunks", "network", "o", "words", "stack", "nameParts", "hash", "hash2", "wScript", "require_payments", "__commonJSMin", "exports", "embed_1", "p2ms_1", "p2pk_1", "p2pkh_1", "p2sh_1", "p2wpkh_1", "p2wsh_1", "require_address", "__commonJSMin", "exports", "networks", "payments", "bscript", "types", "bech32", "bs58check", "typeforce", "fromBase58Check", "address", "payload", "version", "hash", "fromBech32", "result", "data", "toBase58Check", "toBech32", "prefix", "words", "fromOutputScript", "output", "network", "toOutputScript", "decodeBase58", "decodeBech32", "require_randombytes", "__commonJSMin", "exports", "module", "require_ecpair", "__commonJSMin", "exports", "NETWORKS", "types", "ecc", "randomBytes", "typeforce", "wif", "isOptions", "ECPair", "__D", "__Q", "options", "hash", "lowR", "sig", "extraData", "counter", "signature", "fromPrivateKey", "buffer", "fromPublicKey", "fromWIF", "wifString", "network", "decoded", "version", "x", "makeRandom", "rng", "d", "require_varuint_bitcoin", "__commonJSMin", "exports", "module", "Buffer", "MAX_SAFE_INTEGER", "checkUInt53", "n", "encode", "number", "buffer", "offset", "encodingLength", "decode", "first", "lo", "hi", "require_bufferutils", "__commonJSMin", "exports", "types", "typeforce", "varuint", "verifuint", "value", "max", "readUInt64LE", "buffer", "offset", "a", "b", "writeUInt64LE", "reverseBuffer", "j", "tmp", "i", "cloneBuffer", "clone", "BufferWriter", "slice", "vector", "buf", "BufferReader", "result", "vi", "n", "count", "require_transaction", "__commonJSMin", "exports", "bufferutils_1", "bcrypto", "bscript", "script_1", "types", "typeforce", "varuint", "varSliceSize", "someScript", "length", "vectorSize", "someVector", "sum", "witness", "EMPTY_SCRIPT", "EMPTY_WITNESS", "ZERO", "ONE", "VALUE_UINT64_MAX", "BLANK_OUTPUT", "isOutput", "out", "Transaction", "buffer", "_NO_STRICT", "bufferReader", "tx", "marker", "flag", "hasWitnesses", "vinLen", "i", "voutLen", "hex", "hash", "index", "sequence", "scriptSig", "scriptPubKey", "value", "x", "base", "total", "_ALLOW_WITNESS", "input", "output", "newTx", "txIn", "txOut", "inIndex", "prevOutScript", "hashType", "ourScript", "txTmp", "y", "tbuffer", "bufferWriter", "hashOutputs", "hashPrevouts", "hashSequence", "txOutsSize", "forWitness", "initialOffset", "require_fastRoot", "__commonJSMin", "exports", "module", "values", "digestFn", "length", "results", "j", "i", "left", "right", "data", "require_block", "__commonJSMin", "exports", "bufferutils_1", "bcrypto", "transaction_1", "types", "fastMerkleRoot", "typeforce", "varuint", "errorMerkleNoTxes", "errorWitnessNotSegwit", "Block", "buffer", "bufferReader", "block", "readTransaction", "tx", "nTransactions", "i", "witnessCommit", "hex", "bits", "exponent", "mantissa", "target", "transactions", "forWitness", "txesHaveWitnessCommit", "hashes", "transaction", "rootHash", "witnessCommits", "out", "result", "anyTxHasWitness", "base", "total", "headersOnly", "allowWitness", "a", "x", "date", "bufferWriter", "txSize", "hasWitnessCommit", "hash", "actualMerkleRoot", "actualWitnessCommit", "input", "require_typeFields", "__commonJSMin", "exports", "GlobalTypes", "InputTypes", "OutputTypes", "require_globalXpub", "__commonJSMin", "exports", "typeFields_1", "range", "n", "decode", "keyVal", "extendedPubkey", "data", "i", "val", "isHard", "idx", "encode", "head", "key", "splitPath", "value", "offset", "level", "num", "check", "epk", "mfp", "p", "canAddToArray", "array", "item", "dupeSet", "dupeString", "v", "require_unsignedTx", "__commonJSMin", "exports", "typeFields_1", "encode", "data", "require_finalScriptSig", "__commonJSMin", "exports", "typeFields_1", "decode", "keyVal", "encode", "data", "check", "canAdd", "currentData", "newData", "require_finalScriptWitness", "__commonJSMin", "exports", "typeFields_1", "decode", "keyVal", "encode", "data", "check", "canAdd", "currentData", "newData", "require_nonWitnessUtxo", "__commonJSMin", "exports", "typeFields_1", "decode", "keyVal", "encode", "data", "check", "canAdd", "currentData", "newData", "require_partialSig", "__commonJSMin", "exports", "typeFields_1", "decode", "keyVal", "encode", "pSig", "head", "check", "data", "isDerSigWithSighash", "buf", "rLen", "sLen", "canAddToArray", "array", "item", "dupeSet", "dupeString", "v", "require_porCommitment", "__commonJSMin", "exports", "typeFields_1", "decode", "keyVal", "encode", "data", "check", "canAdd", "currentData", "newData", "require_sighashType", "__commonJSMin", "exports", "typeFields_1", "decode", "keyVal", "encode", "data", "key", "value", "check", "canAdd", "currentData", "newData", "require_tapKeySig", "__commonJSMin", "exports", "typeFields_1", "decode", "keyVal", "check", "encode", "value", "data", "canAdd", "currentData", "newData", "require_tapLeafScript", "__commonJSMin", "exports", "typeFields_1", "decode", "keyVal", "leafVersion", "script", "encode", "tScript", "head", "verBuf", "check", "data", "canAddToArray", "array", "item", "dupeSet", "dupeString", "v", "require_tapMerkleRoot", "__commonJSMin", "exports", "typeFields_1", "decode", "keyVal", "check", "encode", "value", "data", "canAdd", "currentData", "newData", "require_tapScriptSig", "__commonJSMin", "exports", "typeFields_1", "decode", "keyVal", "pubkey", "leafHash", "encode", "tSig", "head", "check", "data", "canAddToArray", "array", "item", "dupeSet", "dupeString", "v", "require_varint", "__commonJSMin", "exports", "MAX_SAFE_INTEGER", "checkUInt53", "n", "encode", "_number", "buffer", "offset", "encodingLength", "decode", "first", "lo", "require_tools", "__commonJSMin", "exports", "varuint", "n", "reverseBuffer", "buffer", "j", "tmp", "i", "keyValsToBuffer", "keyVals", "buffers", "keyValToBuffer", "keyVal", "keyLen", "valLen", "keyVarIntLen", "valVarIntLen", "verifuint", "value", "max", "readUInt64LE", "offset", "a", "b", "writeUInt64LE", "require_witnessUtxo", "__commonJSMin", "exports", "typeFields_1", "tools_1", "varuint", "decode", "keyVal", "value", "_offset", "scriptLen", "script", "encode", "data", "varintLen", "result", "check", "canAdd", "currentData", "newData", "require_tapTree", "__commonJSMin", "exports", "typeFields_1", "varuint", "decode", "keyVal", "_offset", "data", "depth", "leafVersion", "scriptLen", "encode", "tree", "key", "bufs", "tapLeaf", "check", "canAdd", "currentData", "newData", "require_bip32Derivation", "__commonJSMin", "exports", "range", "n", "isValidDERKey", "pubkey", "makeConverter", "TYPE_BYTE", "isValidPubkey", "decode", "keyVal", "data", "i", "val", "isHard", "idx", "encode", "head", "key", "splitPath", "value", "offset", "level", "num", "expected", "check", "canAddToArray", "array", "item", "dupeSet", "dupeString", "v", "require_checkPubkey", "__commonJSMin", "exports", "makeChecker", "pubkeyTypes", "checkPubkey", "keyVal", "pubkey", "require_redeemScript", "__commonJSMin", "exports", "makeConverter", "TYPE_BYTE", "decode", "keyVal", "encode", "data", "expected", "check", "canAdd", "currentData", "newData", "require_tapBip32Derivation", "__commonJSMin", "exports", "varuint", "bip32Derivation", "isValidBIP340Key", "pubkey", "makeConverter", "TYPE_BYTE", "parent", "decode", "keyVal", "nHashes", "nHashesLen", "base", "leafHashes", "i", "_offset", "encode", "data", "nHashesBuf", "value", "expected", "check", "leafHash", "require_tapInternalKey", "__commonJSMin", "exports", "makeConverter", "TYPE_BYTE", "decode", "keyVal", "encode", "value", "expected", "check", "data", "canAdd", "currentData", "newData", "require_witnessScript", "__commonJSMin", "exports", "makeConverter", "TYPE_BYTE", "decode", "keyVal", "encode", "data", "expected", "check", "canAdd", "currentData", "newData", "require_converter", "__commonJSMin", "exports", "typeFields_1", "globalXpub", "unsignedTx", "finalScriptSig", "finalScriptWitness", "nonWitnessUtxo", "partialSig", "porCommitment", "sighashType", "tapKeySig", "tapLeafScript", "tapMerkleRoot", "tapScriptSig", "witnessUtxo", "tapTree", "bip32Derivation", "checkPubkey", "redeemScript", "tapBip32Derivation", "tapInternalKey", "witnessScript", "globals", "inputs", "outputs", "require_fromBuffer", "__commonJSMin", "exports", "convert", "tools_1", "varuint", "typeFields_1", "psbtFromBuffer", "buffer", "txGetter", "offset", "varSlice", "keyLen", "key", "readUInt32BE", "num", "readUInt8", "getKeyValue", "value", "checkEndOfKeyValPairs", "isEnd", "globalMapKeyVals", "globalKeyIndex", "keyVal", "hexKey", "unsignedTxMaps", "unsignedTx", "inputCount", "outputCount", "inputKeyVals", "outputKeyVals", "index", "inputKeyIndex", "input", "outputKeyIndex", "output", "psbtFromKeyVals", "checkKeyBuffer", "type", "keyBuf", "keyNum", "globalMap", "txCount", "inputs", "outputs", "require_toBuffer", "__commonJSMin", "exports", "convert", "tools_1", "psbtToBuffer", "globalMap", "inputs", "outputs", "globalKeyVals", "inputKeyVals", "outputKeyVals", "psbtToKeyVals", "globalBuffer", "keyValsOrEmptyToBuffer", "keyVals", "inputBuffers", "outputBuffers", "header", "sortKeyVals", "a", "b", "keyValsFromMap", "keyValMap", "converterFactory", "keyHexSet", "result", "key", "value", "converter", "encodedKeyVals", "kv", "hex", "otherKeyVals", "keyVal", "i", "o", "require_parser", "__commonJSMin", "exports", "__export", "m", "p", "require_combiner", "__commonJSMin", "exports", "parser_1", "combine", "psbts", "self", "selfKeyVals", "others", "selfTx", "getTx", "selfGlobalSet", "getKeySet", "selfInputSets", "selfOutputSets", "other", "otherTx", "otherKeyVals", "keyPusher", "inputSet", "idx", "outputSet", "selfSet", "key", "newKv", "kv", "psbt", "keyVals", "set", "keyVal", "hex", "require_utils", "__commonJSMin", "exports", "converter", "checkForInput", "inputs", "inputIndex", "input", "checkForOutput", "outputs", "outputIndex", "output", "checkHasKey", "checkKeyVal", "keyVals", "enumLength", "kv", "getEnumLength", "myenum", "count", "val", "inputCheckUncleanFinalized", "result", "needScriptSig", "needWitnessScript", "scriptSigOK", "witnessScriptOK", "hasOneFinal", "throwForUpdateMaker", "typeName", "name", "expected", "data", "updateMaker", "updateData", "mainData", "canAdd", "canAddToArray", "check", "isArray", "arr", "dupeCheckSet", "v", "addInputAttributes", "index", "addOutputAttributes", "defaultVersionSetter", "version", "txBuf", "defaultLocktimeSetter", "locktime", "require_psbt", "__commonJSMin", "exports", "combiner_1", "parser_1", "typeFields_1", "utils_1", "Psbt", "tx", "data", "txFromBuffer", "buffer", "results", "psbt", "updateData", "inputIndex", "input", "outputIndex", "output", "keyVal", "inputData", "addKeyVals", "outputData", "key", "those", "result", "require_psbt", "__commonJSMin", "exports", "bip174_1", "varuint", "utils_1", "address_1", "bufferutils_1", "crypto_1", "ecpair_1", "networks_1", "payments", "bscript", "transaction_1", "DEFAULT_OPTS", "Psbt", "opts", "data", "PsbtTransaction", "dpew", "obj", "attr", "enumerable", "writable", "buffer", "psbtBase", "transactionFromBuffer", "psbt", "checkTxForDupeIns", "version", "locktime", "input", "output", "address", "those", "o", "res", "satoshiPerByte", "check32Bit", "checkInputsForPartialSig", "c", "inputIndex", "sequence", "inputDatas", "inputData", "checkInvalidP2WSH", "txIn", "checkTxInputCache", "addNonWitnessTxCache", "outputDatas", "outputData", "network", "script", "disableFeeCheck", "isFinalized", "checkFees", "tx", "inputFinalizeGetAmts", "getTxCacheValue", "range", "idx", "finalScriptsFunc", "getFinalScripts", "isP2SH", "isP2WSH", "isSegwit", "getScriptFromInput", "checkPartialSigSighashes", "finalScriptSig", "finalScriptWitness", "getScriptFromUtxo", "result", "getMeaningfulScript", "redeemFromFinalScriptSig", "redeemFromFinalWitnessScript", "type", "mainType", "classifyScript", "pubkey", "pubkeyInInput", "root", "derivationIsMine", "bip32DerivationIsMine", "outputIndex", "pubkeyInOutput", "final", "partialSig", "mySigs", "sig", "results", "hashCache", "scriptCache", "sighashCache", "pSig", "hash", "getHashForSig", "checkScriptForPubkey", "keypair", "hdKeyPair", "sighashTypes", "v", "resolve", "reject", "promises", "i", "getSignersFromHD", "signer", "keyPair", "sighashType", "getHashAndSighashType", "signature", "checkCache", "updateData", "keyVal", "checkTxEmpty", "canFinalize", "scriptType", "hasSigs", "p2ms", "cache", "neededSigs", "pubkeys", "sigs", "pkey", "isPaymentFactory", "payment", "isP2MS", "isP2PK", "isP2PKH", "isP2WPKH", "isP2WSHScript", "isP2SHScript", "d", "num", "feeRate", "vsize", "satoshis", "inputs", "action", "throws", "pSigs", "getPsigsFromInputFinalScripts", "hashType", "whitelist", "pubkeyInScript", "key", "scriptCheckerFactory", "paymentScriptName", "scriptPubKey", "redeemScript", "ioType", "redeemScriptOutput", "checkRedeemScript", "checkWitnessScript", "name", "mustFinalize", "prepareFinalScripts", "getPayment", "p2wsh", "p2sh", "witnessStackToScriptWitness", "forValidate", "unsignedTx", "str", "sighashTypeToString", "prevout", "nonWitnessUtxoTx", "nonWitnessUtxoTxFromCache", "prevoutHash", "utxoHash", "prevoutIndex", "meaningfulScript", "signingScript", "getSortedSigs", "scriptItems", "witnessItems", "item", "myDerivations", "bipDv", "node", "pk", "ps", "scriptWitnessToWitnessStack", "offset", "readSlice", "n", "readVarInt", "vi", "readVarSlice", "readVector", "count", "vector", "text", "witness", "writeSlice", "slice", "writeVarInt", "currentLen", "varintLen", "writeVarSlice", "writeVector", "self", "selfIndex", "buf", "txCache", "newBuf", "inputAmount", "nwTx", "vout", "out", "outputAmount", "total", "fee", "bytes", "finalScript", "decomp", "lastItem", "isPubkeyLike", "isSigLike", "index", "witnessScript", "isP2SHP2WSH", "pubkeyHash", "decompiled", "element", "require_input", "__commonJSMin", "exports", "bscript", "script_1", "partialSignature", "value", "check", "script", "allowIncomplete", "chunks", "require_output", "__commonJSMin", "exports", "bscript", "script_1", "types", "OP_INT_BASE", "check", "script", "allowIncomplete", "chunks", "m", "n", "require_multisig", "__commonJSMin", "exports", "input", "output", "require_nulldata", "__commonJSMin", "exports", "bscript", "OPS", "check", "script", "buffer", "output", "require_input", "__commonJSMin", "exports", "bscript", "check", "script", "chunks", "require_output", "__commonJSMin", "exports", "bscript", "script_1", "check", "script", "chunks", "require_pubkey", "__commonJSMin", "exports", "input", "output", "require_input", "__commonJSMin", "exports", "bscript", "check", "script", "chunks", "require_output", "__commonJSMin", "exports", "bscript", "script_1", "check", "script", "buffer", "require_pubkeyhash", "__commonJSMin", "exports", "input", "output", "require_output", "__commonJSMin", "exports", "bscript", "script_1", "check", "script", "buffer", "require_output", "__commonJSMin", "exports", "bscript", "script_1", "check", "script", "buffer", "require_input", "__commonJSMin", "exports", "bscript", "p2ms", "p2pk", "p2pkh", "p2wpkho", "p2wsho", "check", "script", "allowIncomplete", "chunks", "lastChunk", "scriptSigChunks", "redeemScriptChunks", "require_output", "__commonJSMin", "exports", "bscript", "script_1", "check", "script", "buffer", "require_scripthash", "__commonJSMin", "exports", "input", "output", "require_output", "__commonJSMin", "exports", "bscript", "script_1", "types", "typeforce", "HEADER", "check", "script", "buffer", "encode", "commitment", "decode", "require_witnesscommitment", "__commonJSMin", "exports", "output", "require_input", "__commonJSMin", "exports", "bscript", "isCompressedCanonicalPubKey", "pubKey", "check", "script", "chunks", "require_witnesspubkeyhash", "__commonJSMin", "exports", "input", "output", "require_input", "__commonJSMin", "exports", "bscript", "typeforce", "p2ms", "p2pk", "p2pkh", "check", "chunks", "allowIncomplete", "witnessScript", "witnessScriptChunks", "witnessRawScriptSig", "require_witnessscripthash", "__commonJSMin", "exports", "input", "output", "require_classify", "__commonJSMin", "exports", "script_1", "multisig", "nullData", "pubKey", "pubKeyHash", "scriptHash", "witnessCommitment", "witnessPubKeyHash", "witnessScriptHash", "types", "classifyOutput", "script", "chunks", "classifyInput", "allowIncomplete", "classifyWitness", "require_transaction_builder", "__commonJSMin", "exports", "baddress", "bufferutils_1", "classify", "bcrypto", "ECPair", "networks", "payments", "bscript", "script_1", "transaction_1", "types", "typeforce", "SCRIPT_TYPES", "PREVOUT_TYPES", "tfMessage", "type", "value", "message", "txIsString", "tx", "txIsTransaction", "TransactionBuilder", "network", "maximumFeeRate", "transaction", "txb", "txOut", "txIn", "input", "i", "fixMultisigOrder", "setting", "locktime", "s", "version", "txHash", "vout", "sequence", "prevOutScript", "scriptPubKey", "signParams", "keyPair", "redeemScript", "hashType", "witnessValue", "witnessScript", "trySign", "getSigningData", "options", "prevTxOut", "expandInput", "prevOutType", "expanded", "expandOutput", "vin", "allowIncomplete", "result", "build", "signature", "signatureHashType", "signingHashType", "nInputs", "nOutputs", "hashTypeMod", "bytes", "incoming", "a", "x", "outgoing", "scriptSig", "witnessStack", "ssType", "wsType", "output", "pubkey", "m", "pubkeys", "signatures", "redeem", "outputType", "unmatched", "pubKey", "match", "parsed", "hash", "script", "ourPubKey", "pkh1", "pkh2", "wpkh1", "wpkh2", "p2pk", "p2ms", "prepareInput", "p2wsh", "p2wshAlt", "p2sh", "p2shAlt", "signScript", "validate", "canSign", "buffer", "checkSignArgs", "inputs", "posType", "signatureHash", "useLowR", "signed", "needsOutputs", "prepared", "require_src", "__commonJSMin", "exports", "bip32", "address", "crypto", "ECPair", "networks", "payments", "script", "block_1", "psbt_1", "script_1", "transaction_1", "transaction_builder_1", "require_bip32_path", "__commonJSMin", "exports", "module", "BIPPath", "path", "i", "text", "reqRoot", "ret", "tmp", "noRoot", "oldStyle", "require_stream", "__commonJSMin", "exports", "module", "require_buffer_list", "__commonJSMin", "exports", "module", "ownKeys", "object", "enumerableOnly", "keys", "symbols", "sym", "_objectSpread", "target", "i", "source", "key", "_defineProperty", "obj", "value", "_classCallCheck", "instance", "Constructor", "_defineProperties", "props", "descriptor", "_createClass", "protoProps", "staticProps", "_require", "Buffer", "_require2", "inspect", "custom", "copyBuffer", "src", "offset", "BufferList", "v", "entry", "ret", "s", "p", "n", "hasStrings", "c", "str", "nb", "buf", "_", "options", "require_destroy", "__commonJSMin", "exports", "module", "destroy", "err", "cb", "_this", "readableDestroyed", "writableDestroyed", "emitErrorNT", "emitCloseNT", "emitErrorAndCloseNT", "self", "undestroy", "errorOrDestroy", "stream", "rState", "wState", "require_errors", "__commonJSMin", "exports", "module", "codes", "createErrorType", "code", "message", "Base", "getMessage", "arg1", "arg2", "arg3", "NodeError", "oneOf", "expected", "thing", "len", "i", "startsWith", "str", "search", "pos", "endsWith", "this_len", "includes", "start", "name", "value", "actual", "determiner", "msg", "type", "arg", "require_state", "__commonJSMin", "exports", "module", "ERR_INVALID_OPT_VALUE", "highWaterMarkFrom", "options", "isDuplex", "duplexKey", "getHighWaterMark", "state", "hwm", "name", "require_node", "__commonJSMin", "exports", "module", "require_stream_writable", "__commonJSMin", "exports", "module", "Writable", "CorkedRequest", "state", "_this", "onCorkedFinish", "Duplex", "WritableState", "internalUtil", "Stream", "Buffer", "OurUint8Array", "_uint8ArrayToBuffer", "chunk", "_isUint8Array", "obj", "destroyImpl", "_require", "getHighWaterMark", "_require$codes", "ERR_INVALID_ARG_TYPE", "ERR_METHOD_NOT_IMPLEMENTED", "ERR_MULTIPLE_CALLBACK", "ERR_STREAM_CANNOT_PIPE", "ERR_STREAM_DESTROYED", "ERR_STREAM_NULL_VALUES", "ERR_STREAM_WRITE_AFTER_END", "ERR_UNKNOWN_ENCODING", "errorOrDestroy", "nop", "options", "stream", "isDuplex", "noDecode", "er", "onwrite", "current", "out", "realHasInstance", "object", "writeAfterEnd", "cb", "validChunk", "encoding", "ret", "isBuf", "writeOrBuffer", "clearBuffer", "decodeChunk", "newChunk", "len", "last", "doWrite", "writev", "onwriteError", "sync", "finishMaybe", "onwriteStateUpdate", "finished", "needFinish", "afterWrite", "onwriteDrain", "entry", "l", "buffer", "holder", "count", "allBuffers", "endWritable", "callFinal", "err", "prefinish", "need", "rState", "corkReq", "value", "require_stream_duplex", "__commonJSMin", "exports", "module", "objectKeys", "obj", "keys", "key", "Duplex", "Readable", "Writable", "v", "method", "options", "onend", "onEndNT", "self", "value", "require_string_decoder", "__commonJSMin", "exports", "Buffer", "isEncoding", "encoding", "_normalizeEncoding", "enc", "retried", "normalizeEncoding", "nenc", "StringDecoder", "nb", "utf16Text", "utf16End", "utf8FillLast", "base64Text", "base64End", "simpleWrite", "simpleEnd", "buf", "r", "i", "utf8End", "utf8Text", "utf8CheckByte", "byte", "utf8CheckIncomplete", "self", "j", "utf8CheckExtraBytes", "p", "total", "end", "c", "n", "require_end_of_stream", "__commonJSMin", "exports", "module", "ERR_STREAM_PREMATURE_CLOSE", "once", "callback", "called", "_len", "args", "_key", "noop", "isRequest", "stream", "eos", "opts", "readable", "writable", "onlegacyfinish", "onfinish", "writableEnded", "readableEnded", "onend", "onerror", "err", "onclose", "onrequest", "require_async_iterator", "__commonJSMin", "exports", "module", "_Object$setPrototypeO", "_defineProperty", "obj", "key", "value", "finished", "kLastResolve", "kLastReject", "kError", "kEnded", "kLastPromise", "kHandlePromise", "kStream", "createIterResult", "done", "readAndResolve", "iter", "resolve", "data", "onReadable", "wrapForNext", "lastPromise", "reject", "AsyncIteratorPrototype", "ReadableStreamAsyncIteratorPrototype", "_this", "error", "promise", "_this2", "err", "createReadableStreamAsyncIterator", "stream", "_Object$create", "iterator", "require_from", "__commonJSMin", "exports", "module", "asyncGeneratorStep", "gen", "resolve", "reject", "_next", "_throw", "key", "arg", "info", "value", "error", "_asyncToGenerator", "fn", "self", "args", "err", "ownKeys", "object", "enumerableOnly", "keys", "symbols", "sym", "_objectSpread", "target", "i", "source", "_defineProperty", "obj", "ERR_INVALID_ARG_TYPE", "from", "Readable", "iterable", "opts", "iterator", "readable", "reading", "next", "_next2", "_ref", "done", "require_stream_readable", "__commonJSMin", "exports", "module", "Readable", "Duplex", "ReadableState", "EE", "EElistenerCount", "emitter", "type", "Stream", "Buffer", "OurUint8Array", "_uint8ArrayToBuffer", "chunk", "_isUint8Array", "obj", "debugUtil", "debug", "BufferList", "destroyImpl", "_require", "getHighWaterMark", "_require$codes", "ERR_INVALID_ARG_TYPE", "ERR_STREAM_PUSH_AFTER_EOF", "ERR_METHOD_NOT_IMPLEMENTED", "ERR_STREAM_UNSHIFT_AFTER_END_EVENT", "StringDecoder", "createReadableStreamAsyncIterator", "from", "errorOrDestroy", "kProxyEvents", "prependListener", "event", "fn", "options", "stream", "isDuplex", "value", "err", "cb", "encoding", "state", "skipChunkCheck", "readableAddChunk", "addToFront", "onEofChunk", "er", "chunkInvalid", "addChunk", "maybeReadMore", "emitReadable", "enc", "decoder", "p", "content", "MAX_HWM", "computeNewHighWaterMark", "n", "howMuchToRead", "nOrig", "endReadable", "doRead", "ret", "fromList", "emitReadable_", "flow", "maybeReadMore_", "len", "dest", "pipeOpts", "src", "doEnd", "endFn", "onend", "unpipe", "onunpipe", "readable", "unpipeInfo", "cleanup", "ondrain", "pipeOnDrain", "cleanedUp", "onclose", "onfinish", "onerror", "ondata", "indexOf", "dests", "i", "index", "ev", "res", "nReadingNextTick", "updateReadableListening", "self", "resume", "resume_", "_this", "paused", "method", "endReadableNT", "wState", "iterable", "opts", "xs", "x", "l", "require_stream_transform", "__commonJSMin", "exports", "module", "Transform", "_require$codes", "ERR_METHOD_NOT_IMPLEMENTED", "ERR_MULTIPLE_CALLBACK", "ERR_TRANSFORM_ALREADY_TRANSFORMING", "ERR_TRANSFORM_WITH_LENGTH_0", "Duplex", "afterTransform", "er", "data", "ts", "cb", "rs", "options", "prefinish", "_this", "done", "chunk", "encoding", "n", "err", "err2", "stream", "require_stream_passthrough", "__commonJSMin", "exports", "module", "PassThrough", "Transform", "options", "chunk", "encoding", "cb", "require_pipeline", "__commonJSMin", "exports", "module", "eos", "once", "callback", "called", "_require$codes", "ERR_MISSING_ARGS", "ERR_STREAM_DESTROYED", "noop", "err", "isRequest", "stream", "destroyer", "reading", "writing", "closed", "destroyed", "call", "fn", "pipe", "from", "to", "popCallback", "streams", "pipeline", "_len", "_key", "error", "destroys", "i", "require_readable", "__commonJSMin", "exports", "module", "Stream", "require_hash_base", "__commonJSMin", "exports", "module", "Buffer", "Transform", "inherits", "throwIfNotStringOrBuffer", "val", "prefix", "HashBase", "blockSize", "chunk", "encoding", "callback", "error", "err", "data", "block", "offset", "j", "carry", "digest", "i", "require_ripemd160", "__commonJSMin", "exports", "module", "Buffer", "inherits", "HashBase", "ARRAY16", "zl", "zr", "sl", "sr", "hl", "hr", "RIPEMD160", "words", "j", "al", "bl", "cl", "dl", "el", "ar", "br", "cr", "dr", "er", "i", "tl", "tr", "fn1", "fn5", "fn2", "fn4", "fn3", "rotl", "t", "buffer", "x", "n", "a", "b", "c", "d", "e", "m", "k", "s", "require_hash", "__commonJSMin", "exports", "module", "Buffer", "Hash", "blockSize", "finalSize", "data", "enc", "block", "length", "accum", "offset", "assigned", "remainder", "i", "rem", "bits", "lowBits", "highBits", "hash", "require_sha", "__commonJSMin", "exports", "module", "inherits", "Hash", "Buffer", "K", "W", "Sha", "rotl5", "num", "rotl30", "ft", "s", "b", "c", "d", "M", "a", "e", "i", "j", "t", "H", "require_sha1", "__commonJSMin", "exports", "module", "inherits", "Hash", "Buffer", "K", "W", "Sha1", "rotl1", "num", "rotl5", "rotl30", "ft", "s", "b", "c", "d", "M", "a", "e", "i", "j", "t", "H", "require_sha256", "__commonJSMin", "exports", "module", "inherits", "Hash", "Buffer", "K", "W", "Sha256", "ch", "x", "y", "z", "maj", "sigma0", "sigma1", "gamma0", "gamma1", "M", "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "T1", "T2", "H", "require_sha224", "__commonJSMin", "exports", "module", "inherits", "Sha256", "Hash", "Buffer", "W", "Sha224", "H", "require_sha512", "__commonJSMin", "exports", "module", "inherits", "Hash", "Buffer", "K", "W", "Sha512", "Ch", "x", "y", "z", "maj", "sigma0", "xl", "sigma1", "Gamma0", "Gamma0l", "Gamma1", "Gamma1l", "getCarry", "a", "b", "M", "ah", "bh", "ch", "dh", "eh", "fh", "gh", "hh", "al", "bl", "cl", "dl", "el", "fl", "gl", "hl", "i", "xh", "gamma0", "gamma0l", "gamma1", "gamma1l", "Wi7h", "Wi7l", "Wi16h", "Wi16l", "Wil", "Wih", "j", "majh", "majl", "sigma0h", "sigma0l", "sigma1h", "sigma1l", "Kih", "Kil", "chh", "chl", "t1l", "t1h", "t2l", "t2h", "H", "writeInt64BE", "h", "l", "offset", "require_sha384", "__commonJSMin", "exports", "module", "inherits", "SHA512", "Hash", "Buffer", "W", "Sha384", "H", "writeInt64BE", "h", "l", "offset", "require_sha", "__commonJSMin", "exports", "module", "algorithm", "Algorithm", "id", "subscribers", "log", "type", "message", "data", "obj", "dispatch", "exports", "listen", "cb", "i", "e", "require_invariant", "__commonJSMin", "exports", "module", "NODE_ENV", "invariant", "condition", "format", "a", "b", "c", "d", "e", "f", "error", "args", "argIndex", "require_constants", "__commonJSMin", "exports", "module", "SEMVER_SPEC_VERSION", "MAX_SAFE_INTEGER", "MAX_SAFE_COMPONENT_LENGTH", "require_debug", "__commonJSMin", "exports", "module", "debug", "args", "require_re", "__commonJSMin", "exports", "module", "MAX_SAFE_COMPONENT_LENGTH", "debug", "re", "src", "t", "R", "createToken", "name", "value", "isGlobal", "index", "require_parse_options", "__commonJSMin", "exports", "module", "opts", "parseOptions", "options", "k", "o", "require_identifiers", "__commonJSMin", "exports", "module", "numeric", "compareIdentifiers", "a", "b", "anum", "bnum", "rcompareIdentifiers", "require_semver", "__commonJSMin", "exports", "module", "debug", "MAX_LENGTH", "MAX_SAFE_INTEGER", "re", "t", "parseOptions", "compareIdentifiers", "SemVer", "version", "options", "m", "id", "num", "other", "i", "a", "b", "release", "identifier", "require_parse", "__commonJSMin", "exports", "module", "MAX_LENGTH", "re", "t", "SemVer", "parseOptions", "parse", "version", "options", "require_valid", "__commonJSMin", "exports", "module", "parse", "valid", "version", "options", "v", "require_clean", "__commonJSMin", "exports", "module", "parse", "clean", "version", "options", "s", "require_inc", "__commonJSMin", "exports", "module", "SemVer", "inc", "version", "release", "options", "identifier", "require_compare", "__commonJSMin", "exports", "module", "SemVer", "compare", "a", "b", "loose", "require_eq", "__commonJSMin", "exports", "module", "compare", "eq", "a", "b", "loose", "require_diff", "__commonJSMin", "exports", "module", "parse", "eq", "diff", "version1", "version2", "v1", "v2", "hasPre", "prefix", "defaultResult", "key", "require_major", "__commonJSMin", "exports", "module", "SemVer", "major", "a", "loose", "require_minor", "__commonJSMin", "exports", "module", "SemVer", "minor", "a", "loose", "require_patch", "__commonJSMin", "exports", "module", "SemVer", "patch", "a", "loose", "require_prerelease", "__commonJSMin", "exports", "module", "parse", "prerelease", "version", "options", "parsed", "require_rcompare", "__commonJSMin", "exports", "module", "compare", "rcompare", "a", "b", "loose", "require_compare_loose", "__commonJSMin", "exports", "module", "compare", "compareLoose", "a", "b", "require_compare_build", "__commonJSMin", "exports", "module", "SemVer", "compareBuild", "a", "b", "loose", "versionA", "versionB", "require_sort", "__commonJSMin", "exports", "module", "compareBuild", "sort", "list", "loose", "a", "b", "require_rsort", "__commonJSMin", "exports", "module", "compareBuild", "rsort", "list", "loose", "a", "b", "require_gt", "__commonJSMin", "exports", "module", "compare", "gt", "a", "b", "loose", "require_lt", "__commonJSMin", "exports", "module", "compare", "lt", "a", "b", "loose", "require_neq", "__commonJSMin", "exports", "module", "compare", "neq", "a", "b", "loose", "require_gte", "__commonJSMin", "exports", "module", "compare", "gte", "a", "b", "loose", "require_lte", "__commonJSMin", "exports", "module", "compare", "lte", "a", "b", "loose", "require_cmp", "__commonJSMin", "exports", "module", "eq", "neq", "gt", "gte", "lt", "lte", "cmp", "a", "op", "b", "loose", "require_coerce", "__commonJSMin", "exports", "module", "SemVer", "parse", "re", "t", "coerce", "version", "options", "match", "next", "require_iterator", "__commonJSMin", "exports", "module", "Yallist", "walker", "require_yallist", "__commonJSMin", "exports", "module", "Yallist", "Node", "list", "self", "item", "i", "l", "node", "next", "prev", "head", "tail", "push", "unshift", "res", "fn", "thisp", "walker", "n", "initial", "acc", "arr", "from", "to", "ret", "start", "deleteCount", "nodes", "insert", "p", "value", "inserted", "require_lru_cache", "__commonJSMin", "exports", "module", "Yallist", "MAX", "LENGTH", "LENGTH_CALCULATOR", "ALLOW_STALE", "MAX_AGE", "DISPOSE", "NO_DISPOSE_ON_SET", "LRU_LIST", "CACHE", "UPDATE_AGE_ON_GET", "naiveLength", "LRUCache", "options", "max", "lc", "mL", "trim", "allowStale", "mA", "lC", "hit", "fn", "thisp", "walker", "prev", "forEachStep", "next", "k", "isStale", "h", "key", "value", "maxAge", "now", "len", "del", "item", "Entry", "get", "node", "arr", "l", "expiresAt", "self", "doUse", "diff", "length", "require_range", "__commonJSMin", "exports", "module", "Range", "range", "options", "parseOptions", "Comparator", "r", "c", "first", "isNullSet", "isAny", "comps", "memoKey", "cached", "cache", "loose", "hr", "re", "t", "hyphenReplace", "debug", "comparatorTrimReplace", "tildeTrimReplace", "caretTrimReplace", "rangeList", "comp", "parseComparator", "replaceGTE0", "rangeMap", "comparators", "result", "thisComparators", "isSatisfiable", "rangeComparators", "thisComparator", "rangeComparator", "version", "SemVer", "i", "testSet", "LRU", "remainingComparators", "testComparator", "otherComparator", "replaceCarets", "replaceTildes", "replaceXRanges", "replaceStars", "isX", "id", "replaceTilde", "_", "M", "m", "p", "pr", "ret", "replaceCaret", "z", "replaceXRange", "gtlt", "xM", "xm", "xp", "anyX", "incPr", "$0", "from", "fM", "fm", "fp", "fpr", "fb", "to", "tM", "tm", "tp", "tpr", "tb", "set", "allowed", "require_comparator", "__commonJSMin", "exports", "module", "ANY", "Comparator", "comp", "options", "parseOptions", "debug", "re", "t", "m", "SemVer", "version", "cmp", "Range", "sameDirectionIncreasing", "sameDirectionDecreasing", "sameSemVer", "differentDirectionsInclusive", "oppositeDirectionsLessThan", "oppositeDirectionsGreaterThan", "require_satisfies", "__commonJSMin", "exports", "module", "Range", "satisfies", "version", "range", "options", "require_to_comparators", "__commonJSMin", "exports", "module", "Range", "toComparators", "range", "options", "comp", "c", "require_max_satisfying", "__commonJSMin", "exports", "module", "SemVer", "Range", "maxSatisfying", "versions", "range", "options", "max", "maxSV", "rangeObj", "v", "require_min_satisfying", "__commonJSMin", "exports", "module", "SemVer", "Range", "minSatisfying", "versions", "range", "options", "min", "minSV", "rangeObj", "v", "require_min_version", "__commonJSMin", "exports", "module", "SemVer", "Range", "gt", "minVersion", "range", "loose", "minver", "i", "comparators", "setMin", "comparator", "compver", "require_valid", "__commonJSMin", "exports", "module", "Range", "validRange", "range", "options", "require_outside", "__commonJSMin", "exports", "module", "SemVer", "Comparator", "ANY", "Range", "satisfies", "gt", "lt", "lte", "gte", "outside", "version", "range", "hilo", "options", "gtfn", "ltefn", "ltfn", "comp", "ecomp", "i", "comparators", "high", "low", "comparator", "require_gtr", "__commonJSMin", "exports", "module", "outside", "gtr", "version", "range", "options", "require_ltr", "__commonJSMin", "exports", "module", "outside", "ltr", "version", "range", "options", "require_intersects", "__commonJSMin", "exports", "module", "Range", "intersects", "r1", "r2", "options", "require_simplify", "__commonJSMin", "exports", "module", "satisfies", "compare", "versions", "range", "options", "set", "first", "prev", "v", "a", "b", "version", "ranges", "min", "max", "simplified", "original", "require_subset", "__commonJSMin", "exports", "module", "Range", "Comparator", "ANY", "satisfies", "compare", "subset", "sub", "dom", "options", "sawNonNull", "OUTER", "simpleSub", "simpleDom", "isSub", "simpleSubset", "eqSet", "gt", "lt", "c", "higherGT", "lowerLT", "gtltComp", "eq", "higher", "lower", "hasDomLT", "hasDomGT", "needDomLTPre", "needDomGTPre", "a", "b", "comp", "require_semver", "__commonJSMin", "exports", "module", "internalRe", "constants", "SemVer", "identifiers", "parse", "valid", "clean", "inc", "diff", "major", "minor", "patch", "prerelease", "compare", "rcompare", "compareLoose", "compareBuild", "sort", "rsort", "gt", "lt", "eq", "neq", "gte", "lte", "cmp", "coerce", "Comparator", "Range", "satisfies", "toComparators", "maxSatisfying", "minSatisfying", "minVersion", "validRange", "outside", "gtr", "ltr", "intersects", "simplifyRange", "subset", "errorClasses", "deserializers", "addCustomErrorDeserializer", "name", "deserializer", "exports", "createCustomErrorClass", "CustomErrorClass", "_super", "__extends", "message", "fields", "options", "_this", "k", "isObject", "cause", "value", "deserializeError", "object", "msg", "error", "name_1", "des", "constructor", "prop", "serializeError", "destroyCircular", "from", "seen", "to", "_b", "__values", "_c", "key", "helpers_1", "exports", "HwTransportErrorType", "HwTransportError", "_super", "__extends", "type", "message", "_this", "TransportError", "id", "name", "getAltStatusMessage", "code", "TransportStatusError", "statusCode", "statusText", "k", "smsg", "statusCodeStr", "events_1", "__importDefault", "errors_1", "exports", "Transport", "_this", "cla", "ins", "p1", "p2", "data", "statusList", "response", "_a", "sw", "s", "f", "__awaiter", "busyPromise", "r", "resolveBusy", "unresponsiveReached", "timeout", "res", "_apdu", "apdus", "observer", "unsubscribed", "unsubscribe", "main", "apdus_1", "__values", "apdus_1_1", "apdu", "_b", "status_1", "e", "_key", "eventName", "cb", "event", "args", "_i", "__spreadArray", "__read", "exchangeTimeout", "unresponsiveTimeout", "openTimeout", "listenTimeout", "resolve", "reject", "found", "sub", "listenTimeoutId", "self", "methods", "scrambleKey", "methods_1", "methods_1_1", "methodName", "ctx", "_appAPIlock", "errors_1", "Tag", "asUInt16BE", "value", "b", "initialAcc", "createHIDframing", "channel", "packetSize", "apdu", "data", "blockSize", "nbBlocks", "blocks", "i", "head", "chunk", "acc", "_a", "dataLength", "sequence", "chunkData", "exports", "semver_1", "__importDefault", "exports", "DeviceModelId", "devices", "_a", "_firwareVersion", "firmwareVersion", "_firmwareVersion", "productMap", "devicesList", "getDeviceModel", "id", "info", "identifyTargetId", "targetId", "deviceModel", "masks", "mask", "identifyUSBProductId", "usbProductId", "legacy", "d", "mm", "identifyProductName", "productName", "bluetoothServices", "serviceUuidToInfos", "bluetoothSpec", "i", "spec", "__assign", "getBluetoothServiceUuids", "getInfosForServiceUuid", "uuid", "devices_1", "ledgerDevices", "requestLedgerDevice", "device", "_a", "exports", "getLedgerDevices", "devices", "d", "getFirstLedgerDevice", "existingDevices", "isSupported", "hw_transport_1", "__importDefault", "hid_framing_1", "devices_1", "logs_1", "errors_1", "webusb_1", "configurationValue", "endpointNumber", "TransportWebUSB", "_super", "__extends", "device", "interfaceNumber", "_this", "e", "_a", "devices", "gracefullyResetDevice", "iface", "alternates", "a", "e_1", "transport", "onDisconnect", "apdu", "__awaiter", "channel", "packetSize", "framing", "blocks", "i", "_b", "result", "acc", "r", "buffer", "b", "observer", "unsubscribed", "deviceModel", "error", "unsubscribe", "err_1", "src_exports", "__export", "BitcoinLedgerSigner", "__toCommonJS", "import_bitcoinjs_lib", "import_tiny_secp256k1", "import_bip32_path", "import_bs58check", "pathElementsToBuffer", "paths", "buffer", "element", "index", "bip32asBuffer", "path", "pathElements", "pathStringToArray", "pathArrayToString", "bippath", "pubkeyFromXpub", "xpub", "xpubBuf", "bs58check", "getXpubComponents", "hardenedPathOf", "i", "import_varuint_bitcoin", "unsafeTo64bitLE", "n", "byteArray", "index", "byte", "unsafeFrom64bitLE", "value", "i", "BufferWriter", "alloc", "fn", "b", "bytes", "varuint", "slice", "BufferReader", "buffer", "offset", "result", "buf", "n", "unsafeFrom64bitLE", "vi", "varuint", "count", "vector", "i", "import_bitcoinjs_lib", "import_tiny_secp256k1", "MAX_SCRIPT_BLOCK", "DEFAULT_VERSION", "DEFAULT_LOCKTIME", "DEFAULT_SEQUENCE", "SIGHASH_ALL", "OP_DUP", "OP_HASH160", "HASH_SIZE", "OP_EQUAL", "OP_EQUALVERIFY", "OP_CHECKSIG", "import_ripemd160", "import_sha", "hashPublicKey", "buffer", "RIPEMD160", "sha", "BaseAccount", "psbt", "masterFp", "SingleKeyAccount", "_super", "__extends", "pubkeys", "i", "inputTx", "spentOutput", "pathElems", "cond", "paths", "p2pkh", "pubkey", "buf", "BufferWriter", "pubkeyHash", "hashPublicKey", "OP_DUP", "OP_HASH160", "HASH_SIZE", "OP_EQUALVERIFY", "OP_CHECKSIG", "_spentOutput", "path", "p2tr", "_super", "__extends", "pubkey", "xonlyPubkey", "buf", "BufferWriter", "outputKey", "i", "_inputTx", "spentOutput", "path", "xonly", "cond", "x", "h", "internalPubkey", "evenEcdsaPubkey", "tweak", "outputEcdsaKey", "outputSchnorrKey", "SingleKeyAccount", "p2wpkhWrapped", "_super", "__extends", "pubkey", "buf", "BufferWriter", "redeemScript", "scriptHash", "hashPublicKey", "OP_HASH160", "HASH_SIZE", "OP_EQUAL", "i", "inputTx", "spentOutput", "path", "userSuppliedRedeemScript", "expectedRedeemScript", "cond", "pubkeyHash", "SingleKeyAccount", "p2wpkh", "_super", "__extends", "pubkey", "buf", "BufferWriter", "pubkeyHash", "hashPublicKey", "HASH_SIZE", "i", "inputTx", "spentOutput", "path", "cond", "SingleKeyAccount", "import_bitcoinjs_lib", "import_bitcoinjs_lib", "Merkle", "leaves", "hasher", "nodes", "index", "proveNode", "n", "Node", "newNode", "leftCount", "highestPowerOf2LessThan", "leftBranch", "rightBranch", "leftChild", "rightChild", "hash", "node", "left", "right", "hashLeaf", "buf", "hashFunction", "hashConcat", "bufA", "bufB", "Node", "left", "right", "hash", "proveNode", "node", "__spreadArray", "__read", "highestPowerOf2LessThan", "n", "isPowerOf2", "WalletPolicy", "descriptorTemplate", "key", "keyBuffers", "k", "m", "Merkle", "hashLeaf", "buf", "BufferWriter", "createKey", "masterFingerprint", "path", "xpub", "accountPath", "pathArrayToString", "extract", "psbt", "tx", "BufferWriter", "isSegwit", "inputCount", "witnessWriter", "i", "_a", "outputCount", "_b", "psbtGlobal", "psbtIn", "psbtOut", "PSBT_MAGIC_BYTES", "NoSuchEntry", "_super", "__extends", "PsbtV2", "version", "psbtGlobal", "uint32LE", "locktime", "_a", "inputCount", "varint", "fromVarint", "outputCount", "byte", "psbtVersion", "inputIndex", "transaction", "psbtIn", "b", "amount", "scriptPubKey", "buf", "BufferWriter", "utxo", "BufferReader", "pubkey", "signature", "sigHashtype", "result", "redeemScript", "masterFingerprint", "path", "scriptSig", "scriptWitness", "txid", "outputIndex", "sequence", "_b", "sig", "hashes", "keyType", "psbtOut", "uint64LE", "unsafeFrom64bitLE", "fingerprint", "keyTypes", "_this", "map", "_v", "k", "m", "to", "from", "index", "to_index", "v", "serializeMap", "psbt", "PSBT_MAGIC_BYTES", "i", "keyLen", "keyData", "value", "set", "hexKey", "key", "Key", "get", "maps", "buffer", "element", "h", "hashCount", "deriv", "__assign", "get", "map", "keyType", "keyData", "acceptUndefined", "key", "Key", "value", "NoSuchEntry", "buf", "BufferWriter", "KeyPair", "createKey", "serializeMap", "k", "keyPair", "b", "set", "uint32LE", "n", "uint64LE", "unsafeTo64bitLE", "varint", "fromVarint", "BufferReader", "finalize", "psbt", "inputCount", "i", "legacyPubkeys", "psbtIn", "taprootSig", "isSegwitV0", "redeemScript", "isWrappedSegwit", "signature", "witnessBuf", "BufferWriter", "scriptSigBuf", "scriptSig", "writePush", "clearFinalizedInput", "inputIndex", "keyTypes", "witnessUtxoAvailable", "nonWitnessUtxoAvailable", "buf", "data", "b", "getVarint", "data", "offset", "createVarint", "value", "buffer_1", "buffer_2", "buffer", "serializeTransactionOutputs", "_a", "outputs", "outputBuffer", "createVarint", "output", "serializeTransaction", "transaction", "skipWitness", "timestamp", "additionals", "isDecred", "isZcash", "isBech32", "inputBuffer", "useWitness", "input", "BtcNew", "client", "_a", "path", "xpubVersion", "pathElements", "pathStringToArray", "xpub", "_b", "xpubComponents", "getXpubComponents", "opts", "isPathNormal", "_c", "display", "descrTemplFrom", "address", "components", "uncompressedPubkey", "descrTempl", "accountPath", "hardenedPathOf", "accountXpub", "masterFingerprint", "policy", "WalletPolicy", "createKey", "changeAndIndex", "arg", "inputCount", "psbt", "PsbtV2", "masterFp", "accountType", "accountTypeFromArg", "notifyCount", "progress", "i", "pathElems", "outputsConcat", "outputsBufferReader", "BufferReader", "outputCount", "changeData", "changeFound", "amount", "outputScript", "isChange", "changePath", "pubkey", "key", "p", "firstSigned", "progressCallback", "finalize", "serializedTx", "extract", "pathArrayToString", "pubkeyFromXpub", "cond", "input", "masterFP", "sigHashType", "inputTx", "spentOutputIndex", "redeemScript", "sequence", "inputTxBuffer", "serializeTransaction", "inputTxid", "xpubBase58", "spentTxOutput", "spendCondition", "spentOutput", "walletPolicy", "sigs", "v", "k", "pubkeys", "psbtIn", "addressFormat", "p2tr", "p2wpkh", "p2wpkhWrapped", "p2pkh", "h", "hard", "n", "soft", "change", "import_bs58", "import_ripemd160", "import_sha", "import_logs", "addressFormatMap", "getWalletPublicKey", "transport", "options", "_a", "__assign", "path", "verify", "format", "buffer", "bip32asBuffer", "p1", "p2", "response", "_b", "publicKeyLength", "addressLength", "publicKey", "bitcoinAddress", "chainCode", "import_invariant", "getTrustedInputRaw", "transport", "transactionData", "indexLookup", "firstRound", "prefix", "data", "trustedInput", "_a", "res", "getTrustedInput", "transaction", "additionals", "version", "inputs", "outputs", "locktime", "nExpiryHeight", "extraData", "isDecred", "isXST", "processScriptBlocks", "script", "sequence", "__awaiter", "_this", "seq", "scriptBlocks", "offset", "blockSize", "MAX_SCRIPT_BLOCK", "scriptBlocks_1", "__values", "scriptBlocks_1_1", "scriptBlock", "_b", "processWholeScriptBlock", "block", "createVarint", "_c", "inputs_1", "inputs_1_1", "input", "isXSTV2", "treeField", "outputs_1", "outputs_1_1", "output", "endData", "extraPart", "invariant", "startUntrustedHashTransactionInputRaw", "transport", "newTransaction", "firstRound", "transactionData", "bip143", "overwinter", "additionals", "p2", "startUntrustedHashTransactionInput", "transaction", "inputs", "useTrustedInputForSegwit", "data", "createVarint", "_e", "i", "isDecred", "_a", "__values", "_b", "input", "prefix", "inputValue", "scriptBlocks", "offset", "blockSize", "MAX_SCRIPT_BLOCK", "scriptBlocks_1", "e_1", "scriptBlocks_1_1", "scriptBlock", "import_sha", "getTrustedInputBIP143", "transport", "indexLookup", "transaction", "additionals", "isDecred", "hash", "shajs", "serializeTransaction", "data", "outputs", "locktime", "compressPublicKey", "publicKey", "prefix", "prefixBuffer", "signTransaction", "transport", "path", "lockTime", "sigHashType", "expiryHeight", "additionals", "isDecred", "pathsBuffer", "bip32asBuffer", "lockTimeBuffer", "buffer", "result", "provideOutputFullChangePath", "transport", "path", "buffer", "bip32asBuffer", "hashOutputFull", "outputScript", "additionals", "offset", "p1", "isDecred", "blockSize", "MAX_SCRIPT_BLOCK", "p1_1", "data", "_a", "import_invariant", "getAppAndVersion", "transport", "__awaiter", "r", "_a", "i", "format", "invariant", "nameLength", "name", "versionLength", "version", "flagLength", "flags", "checkIsBtcLegacy", "import_semver", "shouldUseTrustedInputForSegwit", "_a", "version", "name", "semver", "defaultsSignTransaction", "DEFAULT_LOCKTIME", "SIGHASH_ALL", "_e", "createTransaction", "transport", "arg", "signTx", "__assign", "inputs", "associatedKeysets", "changePath", "outputScriptHex", "lockTime", "sigHashType", "segwit", "initialTimestamp", "additionals", "expiryHeight", "onDeviceStreaming", "onDeviceSignatureGranted", "onDeviceSignatureRequested", "useTrustedInputForSegwit", "getAppAndVersion", "a", "_b", "shouldUseTrustedInputForSegwit", "e_1", "notify", "loop", "i", "length", "index", "total", "progress", "isDecred", "isZcash", "isXST", "startTime", "sapling", "bech32", "useBip143", "lockTimeBuffer", "nullScript", "nullPrevout", "defaultVersion", "trustedInputs", "regularOutputs", "signatures", "publicKeys", "firstRun", "resuming", "targetTransaction", "getTrustedInputCall", "getTrustedInputBIP143", "getTrustedInput", "outputScript", "inputs_1", "__values", "inputs_1_1", "input", "trustedInput", "sequence", "DEFAULT_SEQUENCE", "outputs", "idx", "result_1", "getWalletPublicKey", "r", "compressPublicKey", "startUntrustedHashTransactionInput", "provideOutputFullChangePath", "hashOutputFull", "signTransaction", "script", "OP_DUP", "OP_HASH160", "HASH_SIZE", "hashPublicKey", "OP_EQUALVERIFY", "OP_CHECKSIG", "pseudoTX", "pseudoTrustedInputs", "signature", "signatureSize", "keySize", "offset", "result", "serializeTransaction", "witness", "tmpScriptData", "decredWitness_1", "inputIndex", "BtcOld", "transport", "path", "getWalletPublicKey", "res", "_a", "xpubVersion", "pathElements", "pathStringToArray", "parentPath", "pathArrayToString", "parentDerivation", "_b", "accountDerivation", "fingerprint", "makeFingerprint", "compressPublicKeySECP256", "xpub", "makeXpub", "opts", "__assign", "arg", "createTransaction", "compressedPubKey", "hash160", "asBufferUInt32BE", "n", "buf", "publicKey", "version", "depth", "parentFingerprint", "index", "chainCode", "pubKey", "indexBuffer", "extendedKeyBytes", "checksum", "hash256", "bs58", "sha256", "buffer", "sha", "ripemd160", "RIPEMD160", "MerkleMap", "keys", "values", "i", "Merkle", "k", "hashLeaf", "v", "createVarint", "MerkelizedPsbt", "_super", "__extends", "psbt", "_this", "__spreadArray", "__read", "v", "map", "sortedKeysStrings", "values", "k", "sortedKeys", "merkleMap", "MerkleMap", "PsbtV2", "import_bitcoinjs_lib", "ClientCommandCode", "ClientCommand", "YieldCommand", "_super", "__extends", "results", "progressCallback", "_this", "request", "GetPreimageCommand", "_super", "__extends", "known_preimages", "queue", "_this", "ClientCommandCode", "request", "req", "hash", "i", "req_hash_hex", "known_preimage", "preimage_len_varint", "createVarint", "max_payload_size", "payload_size", "ClientCommand", "GetMerkleLeafProofCommand", "_super", "__extends", "known_trees", "queue", "_this", "ClientCommandCode", "request", "req", "reqBuf", "BufferReader", "hash", "hash_hex", "tree_size", "leaf_index", "mt", "proof", "n_response_elements", "n_leftover_elements", "_a", "__spreadArray", "__read", "ClientCommand", "GetMerkleLeafIndexCommand", "_super", "__extends", "known_trees", "_this", "ClientCommandCode", "request", "req", "root_hash", "i", "root_hash_hex", "leef_hash", "leef_hash_hex", "mt", "leaf_index", "found", "createVarint", "ClientCommand", "GetMoreElementsCommand", "_super", "__extends", "queue", "_this", "ClientCommandCode", "request", "element_len", "el", "max_elements", "n_returned_elements", "returned_elements", "__spreadArray", "ClientCommand", "ClientCommandInterpreter", "progressCallback", "commands", "YieldCommand", "GetPreimageCommand", "GetMerkleLeafIndexCommand", "GetMerkleLeafProofCommand", "GetMoreElementsCommand", "commands_1", "__values", "commands_1_1", "cmd", "preimage", "elements", "elements_1", "elements_1_1", "el", "mt", "Merkle", "hashLeaf", "mm", "request", "cmdCode", "CLA_BTC", "CLA_FRAMEWORK", "BitcoinIns", "FrameworkIns", "AppClient", "transport", "ins", "data", "cci", "response", "_a", "hwRequest", "commandResponse", "display", "pathElements", "pathElementsToBuffer", "walletPolicy", "walletHMAC", "change", "addressIndex", "clientInterpreter", "ClientCommandInterpreter", "k", "addressIndexBuffer", "psbt", "progressCallback", "merkelizedPsbt", "MerkelizedPsbt", "__values", "_b", "map", "_c", "_d", "inputMapsRoot", "Merkle", "m", "hashLeaf", "outputMapsRoot", "createVarint", "_h", "yielded", "ret", "yielded_1", "yielded_1_1", "inputAndSig", "import_logs", "formatTransactionDebug", "transaction", "str", "_a", "i", "prevout", "script", "sequence", "amount", "splitTransaction", "transactionHex", "isSegwitSupported", "hasTimestamp", "hasExtraData", "additionals", "inputs", "outputs", "witness", "offset", "timestamp", "nExpiryHeight", "nVersionGroupId", "extraData", "witnessScript", "locktime", "isDecred", "isZencash", "isZcash", "transaction", "version", "overwinter", "isZcashv5", "varint", "getVarint", "numberInputs", "i", "prevout", "script", "tree", "sequence", "numberOutputs", "amount", "t", "formatTransactionDebug", "defaultArg", "DEFAULT_LOCKTIME", "SIGHASH_ALL", "DEFAULT_VERSION", "signP2SHTransaction", "transport", "arg", "_a", "__assign", "inputs", "associatedKeysets", "outputScriptHex", "lockTime", "sigHashType", "segwit", "transactionVersion", "nullScript", "nullPrevout", "defaultVersion", "trustedInputs", "regularOutputs", "signatures", "firstRun", "resuming", "targetTransaction", "getTrustedInputCall", "getTrustedInputBIP143", "getTrustedInput", "outputScript", "inputs_1", "__values", "inputs_1_1", "input", "trustedInput", "_c", "sequence", "DEFAULT_SEQUENCE", "outputs", "index", "i", "startUntrustedHashTransactionInput", "hashOutputFull", "script", "pseudoTX", "pseudoTrustedInputs", "signTransaction", "signature", "import_bip32_path", "signMessage", "transport", "_a", "path", "messageHex", "paths", "bippath", "message", "offset", "maxChunkSize", "MAX_SCRIPT_BLOCK", "chunkSize", "buffer", "element", "index", "_c", "res", "_b", "v", "r", "s", "Btc", "_a", "transport", "_b", "scrambleKey", "_c", "currency", "BtcNew_default", "AppClient", "BtcOld_default", "arg", "impl", "path", "opts", "options", "messageHex", "signMessage", "signP2SHTransaction", "transactionHex", "isSegwitSupported", "hasTimestamp", "hasExtraData", "additionals", "splitTransaction", "serializeTransactionOutputs", "indexLookup", "transaction", "getTrustedInput", "getTrustedInputBIP143", "getAppAndVersion", "appAndVersion", "checkIsBtcLegacy", "isBtcLegacy", "import_hw_transport", "_TransportSpeculosHTTP", "Transport", "baseURL", "but", "action", "apdu", "hex", "json", "data", "TransportSpeculosHTTP", "__publicField", "transport", "eventSource", "error", "import_hw_transport_webusb", "useTransports", "createUSBTransport", "TransportWebUSB", "createSpeculosTransport", "baseURL", "TransportSpeculosHTTP", "defaultPath", "defaultType", "createUSBTransport", "createSpeculosTransport", "useTransports", "transportCreators", "BitcoinLedgerSigner", "options", "transportCreatorType", "transportCreator", "transport", "Btc_default", "callback", "timeout", "resolve", "reject", "ledgerConnectionError", "btc", "i", "result", "error", "address", "message", "messageHex", "v", "signature", "err", "from", "to", "value", "transactionHex", "tx"] } diff --git a/common/bitcoin-ledger-signer/src/index.ts b/common/bitcoin-ledger-signer/src/index.ts index 0397ba3cc..c55a63128 100644 --- a/common/bitcoin-ledger-signer/src/index.ts +++ b/common/bitcoin-ledger-signer/src/index.ts @@ -90,8 +90,8 @@ export default class BitcoinLedgerSigner { } } - async signTransaction(path: string, transaction: any) { - } + // async signTransaction(path: string, transaction: any) { + // } async sendTransaction({from, to, value}: TransactionInit): Promise { try { diff --git a/common/string-helpers/src/index.ts b/common/string-helpers/src/index.ts index 371673f8d..516d26779 100644 --- a/common/string-helpers/src/index.ts +++ b/common/string-helpers/src/index.ts @@ -19,11 +19,23 @@ * * @param string - The input string * @returns A snake_case string from the input string - * */ export function snakeCase(string: string): string { return string.replace(/\W+/g, ' ') .split(/ |\B(?=[A-Z])/) .map(word => word.toLowerCase()) .join('_') -} \ No newline at end of file +} + +/** + * Converts any string to kebab-case. + * + * @param string - The input string + * @returns A kebab-case string from the input string + */ +export function kebabCase(string: string): string { + return string.replace(/\W+/g, ' ') + .split(/ |\B(?=[A-Z])/) + .map(word => word.toLowerCase()) + .join('-') + } \ No newline at end of file diff --git a/contracts/ethereum/docs/index.md b/contracts/ethereum/docs/index.md deleted file mode 100644 index e39ce8963..000000000 --- a/contracts/ethereum/docs/index.md +++ /dev/null @@ -1,595 +0,0 @@ -# Solidity API - -## SSVManager - -### Balance - -```solidity -struct Balance { - uint256 rewards; - uint256 stake; -} -``` - -### DepositFunds - -```solidity -struct DepositFunds { - uint256 linkAmount; - uint256 ssvAmount; - uint256 stakeAmount; -} -``` - -### Fees - -```solidity -struct Fees { - uint32 LINK; - uint32 SSV; -} -``` - -### Pool - -```solidity -struct Pool { - uint256 depositAmount; - uint32[] operatorIds; - mapping(address => uint256) userStakes; - bytes validatorPublicKey; -} -``` - -### PoolUserDetails - -```solidity -struct PoolUserDetails { - struct SSVManager.Balance balance; - struct SSVManager.Balance userBalance; -} -``` - -### Token - -```solidity -enum Token { - LINK, - SSV, - WETH -} -``` - -### User - -```solidity -struct User { - mapping(uint32 => bool) poolIdLookup; - uint32[] poolIds; -} -``` - -### Validator - -```solidity -struct Validator { - bytes32 depositDataRoot; - uint32[] operatorIds; - bytes[] sharesEncrypted; - bytes[] sharesPublicKeys; - bytes signature; - bytes withdrawalCredentials; -} -``` - -### lastPoolId - -```solidity -struct Counters.Counter lastPoolId -``` - -Pool ID generator - -### ManagerDeposit - -```solidity -event ManagerDeposit(address userAddress, uint256 linkAmount, uint256 ssvAmount, uint256 stakeAmount, uint256 depositTime) -``` - -Event signaling a user deposit to the manager - -### PoolStake - -```solidity -event PoolStake(address userAddress, uint32 poolId, uint256 linkAmount, uint256 ssvAmount, uint256 stakeAmount, uint256 stakeTime) -``` - -Event signaling a user stake to a pool - -### ValidatorActivated - -```solidity -event ValidatorActivated(uint32 poolId, uint32[] operatorIds, bytes publicKey) -``` - -Event signaling a validator activation - -### ValidatorAdded - -```solidity -event ValidatorAdded(uint32[] operatorIds, bytes publicKey) -``` - -Event signaling a validator registration - -### constructor - -```solidity -constructor(address beaconDepositAddress, address linkFeedAddress, address linkTokenAddress, address ssvNetworkAddress, address ssvTokenAddress, address swapRouterAddress, address wethTokenAddress) public -``` - -Constructor - -#### Parameters - -| Name | Type | Description | -| ---- | ---- | ----------- | -| beaconDepositAddress | address | The Beacon deposit address | -| linkFeedAddress | address | The Chainlink data feed address | -| linkTokenAddress | address | The Chainlink token address | -| ssvNetworkAddress | address | The SSV network address | -| ssvTokenAddress | address | The SSV token address | -| swapRouterAddress | address | The Uniswap router address | -| wethTokenAddress | address | The WETH contract address | - -### deposit - -```solidity -function deposit() external payable -``` - -Deposit to the pool manager - -### getFees - -```solidity -function getFees() public pure returns (struct SSVManager.Fees) -``` - -Get the current token fees as percentages - -#### Return Values - -| Name | Type | Description | -| ---- | ---- | ----------- | -| [0] | struct SSVManager.Fees | The current token fees as percentages | - -### getLINKFee - -```solidity -function getLINKFee() public pure returns (uint32) -``` - -Get the LINK fee percentage to charge on each deposit - -#### Return Values - -| Name | Type | Description | -| ---- | ---- | ----------- | -| [0] | uint32 | The LINK fee percentage to charge on each deposit | - -### getSSVFee - -```solidity -function getSSVFee() public pure returns (uint32) -``` - -Get the SSV fee percentage to charge on each deposit - -#### Return Values - -| Name | Type | Description | -| ---- | ---- | ----------- | -| [0] | uint32 | The SSV fee percentage to charge on each deposit | - -### addValidator - -```solidity -function addValidator(bytes32 depositDataRoot, bytes publicKey, uint32[] operatorIds, bytes[] sharesEncrypted, bytes[] sharesPublicKeys, bytes signature, bytes withdrawalCredentials) public -``` - -_Add a validator to the pool manager_ - -### getActiveValidatorPublicKeys - -```solidity -function getActiveValidatorPublicKeys() external view returns (bytes[]) -``` - -Get active validator public keys - -#### Return Values - -| Name | Type | Description | -| ---- | ---- | ----------- | -| [0] | bytes[] | A list of active validator public keys | - -### getInactiveValidatorPublicKeys - -```solidity -function getInactiveValidatorPublicKeys() external view returns (bytes[]) -``` - -Get inactive validator public keys - -#### Return Values - -| Name | Type | Description | -| ---- | ---- | ----------- | -| [0] | bytes[] | A list of inactive validator public keys | - -### getOpenPoolIds - -```solidity -function getOpenPoolIds() external view returns (uint32[]) -``` - -Get a list of all open pool IDs - -#### Return Values - -| Name | Type | Description | -| ---- | ---- | ----------- | -| [0] | uint32[] | A list of all open pool IDs | - -### getStakedPoolIds - -```solidity -function getStakedPoolIds() external view returns (uint32[]) -``` - -Get a list of all staked pool IDs - -#### Return Values - -| Name | Type | Description | -| ---- | ---- | ----------- | -| [0] | uint32[] | A list of all staked pool IDs | - -### getUserPoolIds - -```solidity -function getUserPoolIds(address userAddress) external view returns (uint32[]) -``` - -Get a list of a user's pool IDs by user address - -#### Parameters - -| Name | Type | Description | -| ---- | ---- | ----------- | -| userAddress | address | The user address | - -#### Return Values - -| Name | Type | Description | -| ---- | ---- | ----------- | -| [0] | uint32[] | A list of a user's pool IDs | - -### getPoolUserDetails - -```solidity -function getPoolUserDetails(uint32 poolId, address userAddress) external view returns (struct SSVManager.PoolUserDetails) -``` - -### getPoolUserBalance - -```solidity -function getPoolUserBalance(uint32 poolId, address userAddress) public view returns (struct SSVManager.Balance) -``` - -Get a user's balance in a pool by user address and pool ID - -#### Parameters - -| Name | Type | Description | -| ---- | ---- | ----------- | -| poolId | uint32 | The pool ID | -| userAddress | address | The user address | - -#### Return Values - -| Name | Type | Description | -| ---- | ---- | ----------- | -| [0] | struct SSVManager.Balance | A user's balance in a pool | - -### getPoolUserRewards - -```solidity -function getPoolUserRewards(uint32 poolId, address userAddress) public view returns (uint256) -``` - -Get a user's rewards in a pool by user address and pool ID - -#### Parameters - -| Name | Type | Description | -| ---- | ---- | ----------- | -| poolId | uint32 | The pool ID | -| userAddress | address | The user address | - -#### Return Values - -| Name | Type | Description | -| ---- | ---- | ----------- | -| [0] | uint256 | A user's rewards in a pool | - -### getPoolUserStake - -```solidity -function getPoolUserStake(uint32 poolId, address userAddress) public view returns (uint256) -``` - -Get a user's stake in a pool by user address and pool ID - -#### Parameters - -| Name | Type | Description | -| ---- | ---- | ----------- | -| poolId | uint32 | The pool ID | -| userAddress | address | The user address | - -#### Return Values - -| Name | Type | Description | -| ---- | ---- | ----------- | -| [0] | uint256 | A user's stake in a pool | - -### getPoolBalance - -```solidity -function getPoolBalance(uint32 poolId) public view returns (struct SSVManager.Balance) -``` - -Get a pool's balance by pool ID - -#### Parameters - -| Name | Type | Description | -| ---- | ---- | ----------- | -| poolId | uint32 | The pool ID | - -#### Return Values - -| Name | Type | Description | -| ---- | ---- | ----------- | -| [0] | struct SSVManager.Balance | The pool's balance | - -### getPoolValidatorPublicKey - -```solidity -function getPoolValidatorPublicKey(uint32 poolId) external view returns (bytes) -``` - -Get a pool's validator public key by pool ID - -#### Parameters - -| Name | Type | Description | -| ---- | ---- | ----------- | -| poolId | uint32 | The pool ID | - -#### Return Values - -| Name | Type | Description | -| ---- | ---- | ----------- | -| [0] | bytes | The pool's validator public key | - -### getPoolOperatorIds - -```solidity -function getPoolOperatorIds(uint32 poolId) external view returns (uint32[]) -``` - -Get a pool's operators by pool ID - -#### Parameters - -| Name | Type | Description | -| ---- | ---- | ----------- | -| poolId | uint32 | The pool ID | - -#### Return Values - -| Name | Type | Description | -| ---- | ---- | ----------- | -| [0] | uint32[] | The pool's operators | - -### getLatestBalance - -```solidity -function getLatestBalance(uint32 poolId, bytes validatorPublicKey) public view returns (int256) -``` - -Get the latest balance for a validator (PoR) - -#### Parameters - -| Name | Type | Description | -| ---- | ---- | ----------- | -| poolId | uint32 | | -| validatorPublicKey | bytes | The validator address | - -#### Return Values - -| Name | Type | Description | -| ---- | ---- | ----------- | -| [0] | int256 | The latest balance | - -### getPoRAddressListLength - -```solidity -function getPoRAddressListLength() external view returns (uint256) -``` - -Get the length of the PoR (active) address list - -#### Return Values - -| Name | Type | Description | -| ---- | ---- | ----------- | -| [0] | uint256 | The length of the PoR address list | - -### getPoRAddressList - -```solidity -function getPoRAddressList(uint256 startIndex, uint256 endIndex) external view returns (string[]) -``` - -Get a slice of the PoR address list as strings - -#### Parameters - -| Name | Type | Description | -| ---- | ---- | ----------- | -| startIndex | uint256 | The list start index | -| endIndex | uint256 | The list end index | - -#### Return Values - -| Name | Type | Description | -| ---- | ---- | ----------- | -| [0] | string[] | The slice of the PoR address list as strings | - -## IDepositContract - -### DepositEvent - -```solidity -event DepositEvent(bytes pubkey, bytes withdrawal_credentials, bytes amount, bytes signature, bytes index) -``` - -A processed deposit event. - -### deposit - -```solidity -function deposit(bytes pubkey, bytes withdrawal_credentials, bytes signature, bytes32 deposit_data_root) external payable -``` - -Submit a Phase 0 DepositData object. - -#### Parameters - -| Name | Type | Description | -| ---- | ---- | ----------- | -| pubkey | bytes | A BLS12-381 public key. | -| withdrawal_credentials | bytes | Commitment to a public key for withdrawals. | -| signature | bytes | A BLS12-381 signature. | -| deposit_data_root | bytes32 | The SHA-256 hash of the SSZ-encoded DepositData object. Used as a protection against malformed input. | - -### get_deposit_root - -```solidity -function get_deposit_root() external view returns (bytes32) -``` - -Query the current deposit root hash. - -#### Return Values - -| Name | Type | Description | -| ---- | ---- | ----------- | -| [0] | bytes32 | The deposit root hash. | - -### get_deposit_count - -```solidity -function get_deposit_count() external view returns (bytes) -``` - -Query the current deposit count. - -#### Return Values - -| Name | Type | Description | -| ---- | ---- | ----------- | -| [0] | bytes | The deposit count encoded as a little endian 64-bit number. | - -## IPoRAddressList - -This interface enables Chainlink nodes to get the list addresses to be used in a PoR feed. A single -contract that implements this interface can only store an address list for a single PoR feed. - -_All functions in this interface are expected to be called off-chain, so gas usage is not a big concern. -This makes it possible to store addresses in optimized data types and convert them to human-readable strings -in `getPoRAddressList()`._ - -### getPoRAddressListLength - -```solidity -function getPoRAddressListLength() external view returns (uint256) -``` - -Get total number of addresses in the list. - -### getPoRAddressList - -```solidity -function getPoRAddressList(uint256 startIndex, uint256 endIndex) external view returns (string[]) -``` - -Get a batch of human-readable addresses from the address list. - -_Due to limitations of gas usage in off-chain calls, we need to support fetching the addresses in batches. -EVM addresses need to be converted to human-readable strings. The address strings need to be in the same format -that would be used when querying the balance of that address._ - -#### Parameters - -| Name | Type | Description | -| ---- | ---- | ----------- | -| startIndex | uint256 | The index of the first address in the batch. | -| endIndex | uint256 | The index of the last address in the batch. If `endIndex > getPoRAddressListLength()-1`, endIndex need to default to `getPoRAddressListLength()-1`. If `endIndex < startIndex`, the result would be an empty array. | - -#### Return Values - -| Name | Type | Description | -| ---- | ---- | ----------- | -| [0] | string[] | Array of addresses as strings. | - -## ISSVToken - -### mint - -```solidity -function mint(address to, uint256 amount) external -``` - -Mint tokens - -#### Parameters - -| Name | Type | Description | -| ---- | ---- | ----------- | -| to | address | The target address | -| amount | uint256 | The amount of token to mint | - -## IWETH9 - -### deposit - -```solidity -function deposit() external payable -``` - -Deposit ether to get wrapped ether - -### withdraw - -```solidity -function withdraw(uint256) external -``` - -Withdraw wrapped ether to get ether - diff --git a/contracts/ethereum/package.json b/contracts/ethereum/package.json index 04c6e6554..4cdacd635 100644 --- a/contracts/ethereum/package.json +++ b/contracts/ethereum/package.json @@ -10,7 +10,7 @@ "task:clean": "npx hardhat clean", "task:compile": "npm run task:clean && npx hardhat compile --show-stack-traces", "pretest": "npm run task:compile", - "postinstall": "npm run task:compile" + "prepare": "npm run task:compile" }, "dependencies": { "@chainlink/contracts": "^0.5.1", diff --git a/infrastructure/cdk/bin/index.ts b/infrastructure/cdk/bin/index.ts deleted file mode 100755 index f0c659a72..000000000 --- a/infrastructure/cdk/bin/index.ts +++ /dev/null @@ -1,29 +0,0 @@ -#!/usr/bin/env node -import 'source-map-support/register' -import * as cdk from 'aws-cdk-lib' -import { pascalCase } from '@casimir/string-helpers' -import { AuthStack } from '../lib/auth' -import { DnsStack } from '../lib/dns' -import { EtlStack } from '../lib/etl' -import { LandingStack } from '../lib/landing' - -const defaultEnv = { account: '257202027633', region: 'us-east-2' } - -if (!process.env.PROJECT || !process.env.STAGE) { - console.log('Please specify a project and stage for this CDK stack') -} else { - const project = pascalCase(process.env.PROJECT) - const stage = pascalCase(process.env.STAGE) - - const app = new cdk.App() - const dnsStack = new DnsStack(app, `${project}DnsStack${stage}`, { env: defaultEnv, project, stage }) - const { domain, dnsRecords, hostedZone } = dnsStack - - if (process.env.STAGE !== 'prod') { - /** Deploy pre-production resources */ - new EtlStack(app, `${project}EtlStack${stage}`, { env: defaultEnv, project, stage }) - new AuthStack(app, `${project}AuthStack${stage}`, { env: defaultEnv, project, stage, domain, dnsRecords, hostedZone }) - } - /** Deploy production-ready resources */ - new LandingStack(app, `${project}LandingStack${stage}`, { env: defaultEnv, project, stage, domain, dnsRecords, hostedZone }) -} diff --git a/infrastructure/cdk/cdk.json b/infrastructure/cdk/cdk.json index 9289d3023..ba26fa02c 100644 --- a/infrastructure/cdk/cdk.json +++ b/infrastructure/cdk/cdk.json @@ -1,19 +1,8 @@ { - "app": "npx esno bin/index.ts", + "app": "npx esno src/index.ts", "watch": { "include": [ - "**" - ], - "exclude": [ - "README.md", - "cdk*.json", - "**/*.d.ts", - "**/*.js", - "tsconfig.json", - "package*.json", - "yarn.lock", - "node_modules", - "test" + "src" ] }, "context": { diff --git a/infrastructure/cdk/lib/auth.ts b/infrastructure/cdk/lib/auth.ts deleted file mode 100644 index 73afba3b1..000000000 --- a/infrastructure/cdk/lib/auth.ts +++ /dev/null @@ -1,94 +0,0 @@ -import { Duration, Stack, StackProps } from 'aws-cdk-lib' -import { Construct } from 'constructs' -import * as apigateway from 'aws-cdk-lib/aws-apigateway' -import * as lambda from 'aws-cdk-lib/aws-lambda' -import * as iam from 'aws-cdk-lib/aws-iam' -import * as route53targets from 'aws-cdk-lib/aws-route53-targets' -import * as route53 from 'aws-cdk-lib/aws-route53' -import * as certmgr from 'aws-cdk-lib/aws-certificatemanager' - -export interface AuthStackProps extends StackProps { - project: string; - stage: string; - domain: string; - dnsRecords: Record; - hostedZone: route53.HostedZone; -} - -/** - * Class representing the auth stack. - * - * Shortest name: {@link AuthStack} - * Full name: {@link (AuthStack:class)} - */ -export class AuthStack extends Stack { - - public readonly service: string = 'Auth' - public readonly assetPath: string = '../../services/auth/dist' - - /** - * AuthStack class constructor. - * - * Shortest name: {@link (AuthStack:constructor)} - * Full name: {@link (AuthStack:constructor)} - */ - constructor(scope: Construct, id: string, props: AuthStackProps) { - - /** - * AuthStack class constructor super method. - * - * Shortest name: {@link (AuthStack:constructor:super)} - * Full name: {@link (AuthStack:constructor:super)} - */ - super(scope, id, props) - - const { project, stage, domain, dnsRecords, hostedZone } = props - - // Use casimir.co for prod and dev.casimir.co for dev - const serviceDomain = stage === 'Prod' ? domain : [stage.toLowerCase(), domain].join('.') - - const certificate = new certmgr.DnsValidatedCertificate(this, `${project}${this.service}Cert${stage}`, { - domainName: serviceDomain, - subjectAlternativeNames: [ - [dnsRecords.auth, serviceDomain].join('.') - ], - hostedZone, - region: 'us-east-2' - }) - - const lambdaHandler = new lambda.Function(this, `${project}${this.service}Api${stage}`, { - runtime: lambda.Runtime.NODEJS_14_X, - handler: 'index.handler', - code: lambda.Code.fromAsset(this.assetPath), - environment: { - PROJECT: project.toLowerCase(), - STAGE: stage.toLowerCase() - }, - timeout: Duration.seconds(25) - }) - - // Todo update to use new api gateway version when stable - // https://docs.aws.amazon.com/cdk/api/v2/docs/aws-apigateway-readme.html#apigateway-v2 - const apiGateway = new apigateway.LambdaRestApi(this, `${project}${this.service}ApiGateway${stage}`, { - restApiName: `${project}${this.service}Gateway${stage}`, - handler: lambdaHandler, - domainName: { - domainName: [dnsRecords.auth, serviceDomain].join('.'), - certificate - }, - defaultCorsPreflightOptions: { - allowHeaders: apigateway.Cors.DEFAULT_HEADERS, - allowOrigins: apigateway.Cors.ALL_ORIGINS, - allowMethods: apigateway.Cors.ALL_METHODS - } - }) - - new route53.ARecord(this, `${project}${this.service}DnsARecordApi${stage}`, { - recordName: [dnsRecords.auth, serviceDomain].join('.'), - zone: hostedZone as route53.IHostedZone, - target: route53.RecordTarget.fromAlias(new route53targets.ApiGateway(apiGateway)), - ttl: Duration.minutes(1), - }) - - } -} \ No newline at end of file diff --git a/infrastructure/cdk/lib/dns.ts b/infrastructure/cdk/lib/dns.ts deleted file mode 100644 index 278089536..000000000 --- a/infrastructure/cdk/lib/dns.ts +++ /dev/null @@ -1,58 +0,0 @@ -import { Stack, StackProps } from 'aws-cdk-lib' -import { Construct } from 'constructs' -import * as route53 from 'aws-cdk-lib/aws-route53' - -export interface DnsStackProps extends StackProps { - project: string; - stage: string; -} - -/** - * Class representing the dns stack. - * - * Shortest name: {@link DnsStack} - * Full name: {@link (DnsStack:class)} - */ -export class DnsStack extends Stack { - - public readonly service: string = 'Dns' - public readonly domain: string - public readonly dnsRecords: Record - public readonly hostedZone: route53.HostedZone - - /** - * DnsStack class constructor. - * - * Shortest name: {@link (DnsStack:constructor)} - * Full name: {@link (DnsStack:constructor)} - */ - constructor(scope: Construct, id: string, props: DnsStackProps) { - - /** - * DnsStack class constructor super method. - * - * Shortest name: {@link (DnsStack:constructor:super)} - * Full name: {@link (DnsStack:constructor:super)} - */ - super(scope, id, props) - - const { project, stage } = props - - const domain = 'casimir.co' - - const dnsRecords = { - wildcard: '*', - landing: 'www', - auth: 'auth' - } - - const hostedZone = route53.HostedZone.fromLookup(this, `${project}${this.service}HostedZone${stage}`, { - domainName: domain, - }) as route53.HostedZone - - this.domain = domain - this.dnsRecords = dnsRecords - this.hostedZone = hostedZone - - } -} \ No newline at end of file diff --git a/infrastructure/cdk/lib/etl.ts b/infrastructure/cdk/lib/etl.ts deleted file mode 100644 index 8caf75e9b..000000000 --- a/infrastructure/cdk/lib/etl.ts +++ /dev/null @@ -1,61 +0,0 @@ -import { Stack, StackProps } from 'aws-cdk-lib' -import { Construct } from 'constructs' -import * as s3 from 'aws-cdk-lib/aws-s3' -import * as glue from '@aws-cdk/aws-glue-alpha' -import { schemaToGlueColumns, eventSchema, aggSchema } from '@casimir/data' - -// Get Glue Columns from JSON Schema for each table -const eventColumns = schemaToGlueColumns(eventSchema) -const aggColumns = schemaToGlueColumns(aggSchema) - -export interface EtlStackProps extends StackProps { - project: string; - stage: string; -} - -export class EtlStack extends Stack { - - public readonly service: string = 'Etl' - - constructor(scope: Construct, id: string, props: EtlStackProps) { - super(scope, id, props) - - const { project, stage } = props - - const databaseName = `${project}_${this.service}_Database_${stage}` - const database = new glue.Database(this, `${project}${this.service}Database${stage}`, { - databaseName: databaseName.toLowerCase() - }) - - const eventBucket = new s3.Bucket(this, `${project}${this.service}EventBucket${stage}`, { - bucketName: `${project}-${this.service}-event-bucket-${stage}`.toLowerCase(), - }) - - const aggBucket = new s3.Bucket(this, `${project}${this.service}AggBucket${stage}`, { - bucketName: `${project}-${this.service}-agg-bucket-${stage}`.toLowerCase(), - }) - - // Output bucket for Athena queries - new s3.Bucket(this, `${project}${this.service}OutputBucket${stage}`, { - bucketName: `${project}-${this.service}-output-bucket-${stage}`.toLowerCase(), - }) - - const eventTableName = `${project}_${this.service}_Event_Table_${stage}` - new glue.Table(this, `${project}${this.service}EventTable${stage}`, { - database: database, - tableName: eventTableName.toLowerCase(), - bucket: eventBucket, - columns: eventColumns, - dataFormat: glue.DataFormat.JSON, - }) - - const aggTableName = `${project}_${this.service}_Agg_Table_${stage}` - new glue.Table(this, `${project}${this.service}AggTable${stage}`, { - database: database, - tableName: aggTableName.toLowerCase(), - bucket: aggBucket, - columns: aggColumns, - dataFormat: glue.DataFormat.JSON, - }) - } -} \ No newline at end of file diff --git a/infrastructure/cdk/lib/landing.ts b/infrastructure/cdk/lib/landing.ts deleted file mode 100644 index 7da2a70e1..000000000 --- a/infrastructure/cdk/lib/landing.ts +++ /dev/null @@ -1,113 +0,0 @@ -import { Duration, Stack, StackProps } from 'aws-cdk-lib' -import { Construct } from 'constructs' -import * as certmgr from 'aws-cdk-lib/aws-certificatemanager' -import * as route53targets from 'aws-cdk-lib/aws-route53-targets' -import * as route53 from 'aws-cdk-lib/aws-route53' -import { Bucket, BucketAccessControl } from 'aws-cdk-lib/aws-s3' -import { BucketDeployment, Source } from 'aws-cdk-lib/aws-s3-deployment' -import { Distribution, OriginAccessIdentity, ViewerProtocolPolicy } from 'aws-cdk-lib/aws-cloudfront' -import { S3Origin } from 'aws-cdk-lib/aws-cloudfront-origins' - -export interface LandingStackProps extends StackProps { - project: string; - stage: string; - domain: string; - dnsRecords: Record; - hostedZone: route53.HostedZone; -} - -/** - * Class representing the landing stack. - * - * Shortest name: {@link LandingStack} - * Full name: {@link (LandingStack:class)} - */ -export class LandingStack extends Stack { - - public readonly service: string = 'Landing' - public readonly assetPath: string = '../../apps/landing/dist' - - /** - * LandingStack class constructor. - * - * Shortest name: {@link (LandingStack:constructor)} - * Full name: {@link (LandingStack:constructor)} - */ - constructor(scope: Construct, id: string, props: LandingStackProps) { - - /** - * LandingStack class constructor super method. - * - * Shortest name: {@link (LandingStack:constructor:super)} - * Full name: {@link (LandingStack:constructor:super)} - */ - super(scope, id, props) - - const { project, stage, domain, dnsRecords, hostedZone } = props - - // Use casimir.co for prod and dev.casimir.co for dev - const serviceDomain = stage === 'Prod' ? domain : [stage.toLowerCase(), domain].join('.') - - const certificate = new certmgr.DnsValidatedCertificate(this, `${project}${this.service}Cert${stage}`, { - domainName: serviceDomain, - subjectAlternativeNames: [ - [dnsRecords.landing, serviceDomain].join('.') - ], - hostedZone, - region: 'us-east-1' - }) - - const bucket = new Bucket(this, `${project}${this.service}Bucket${stage}`, { - accessControl: BucketAccessControl.PRIVATE - }) - - const originAccessIdentity = new OriginAccessIdentity(this, `${project}${this.service}OriginAccessIdentity${stage}`) - bucket.grantRead(originAccessIdentity) - - const distribution = new Distribution(this, `${project}${this.service}Distribution${stage}`, { - defaultRootObject: 'index.html', - errorResponses: [ - { - httpStatus: 403, - responseHttpStatus: 200, - responsePagePath: '/index.html', - ttl: Duration.minutes(30) - }, - { - httpStatus: 404, - responseHttpStatus: 200, - responsePagePath: '/index.html', - ttl: Duration.minutes(30) - } - ], - defaultBehavior: { - viewerProtocolPolicy: ViewerProtocolPolicy.REDIRECT_TO_HTTPS, - origin: new S3Origin(bucket, { originAccessIdentity }) - }, - domainNames: [serviceDomain, [dnsRecords.landing, serviceDomain].join('.')], - certificate - }) - - new BucketDeployment(this, `${project}${this.service}BucketDeployment${stage}`, { - destinationBucket: bucket, - sources: [Source.asset(this.assetPath)], - distribution, - distributionPaths: ['/*'] - }) - - new route53.ARecord(this, `${project}${this.service}DnsARecord${stage}`, { - recordName: serviceDomain, - zone: hostedZone as route53.IHostedZone, - target: route53.RecordTarget.fromAlias(new route53targets.CloudFrontTarget(distribution)), - ttl: Duration.minutes(1), - }) - - new route53.ARecord(this, `${project}${this.service}DnsARecordWww${stage}`, { - recordName: [dnsRecords.landing, serviceDomain].join('.'), - zone: hostedZone as route53.IHostedZone, - target: route53.RecordTarget.fromAlias(new route53targets.CloudFrontTarget(distribution)), - ttl: Duration.minutes(1), - }) - - } -} diff --git a/infrastructure/cdk/package.json b/infrastructure/cdk/package.json index 9b5bcddc6..81835fd17 100644 --- a/infrastructure/cdk/package.json +++ b/infrastructure/cdk/package.json @@ -1,12 +1,11 @@ { "name": "@casimir/cdk", "bin": { - "index": "bin/index.ts" + "index": "src/index.ts" }, "scripts": { "build": "echo 'Warning: @casimir/cdk build not specified. Disregard this warning and any listed errors above if @casimir/cdk is not needed for the current project build.' && exit 0", - "pretest": "export PROJECT=casimir && export STAGE=test", - "test": "jest --config jest.config.js", + "test": "jest", "bootstrap": "npx cdk bootstrap", "metadata": "npx cdk metadata", "synth": "npx cdk synth --no-staging", diff --git a/infrastructure/cdk/src/index.ts b/infrastructure/cdk/src/index.ts new file mode 100755 index 000000000..f2c112689 --- /dev/null +++ b/infrastructure/cdk/src/index.ts @@ -0,0 +1,23 @@ +import * as cdk from 'aws-cdk-lib' +import { Config } from './providers/config' +import { UsersStack } from './providers/users' +import { NetworkStack } from './providers/network' +import { EtlStack } from './providers/etl' +import { LandingStack } from './providers/landing' +import { NodesStack } from './providers/nodes' + +/** Create CDK app and stacks */ +const config = new Config() +const { env } = config +const app = new cdk.App() +const { hostedZone, certificate, cluster } = new NetworkStack(app, config.getFullStackName('network'), { env }) +if (process.env.STAGE !== 'prod') { + /** Create development-only stacks */ + new EtlStack(app, config.getFullStackName('etl'), { env }) + new UsersStack(app, config.getFullStackName('users'), { env, hostedZone, certificate, cluster }) +} else { + /** Create production-only stacks */ + new NodesStack(app, config.getFullStackName('nodes'), { env, hostedZone, certificate }) +} +/** Create remaining stacks */ +new LandingStack(app, config.getFullStackName('landing'), { env, hostedZone }) diff --git a/infrastructure/cdk/src/interfaces/ProjectConfig.ts b/infrastructure/cdk/src/interfaces/ProjectConfig.ts new file mode 100644 index 000000000..ddbb49426 --- /dev/null +++ b/infrastructure/cdk/src/interfaces/ProjectConfig.ts @@ -0,0 +1,24 @@ +export interface ProjectConfig { + /** Deployment AWS env */ + env: { + /** AWS account number */ + account: string + /** AWS region */ + region: string + } + /** Project name */ + project: string + /** Stage name */ + stage: string + /** Stage-specific root domain (i.e., casimir.co for prod, dev.casimir.co for dev) */ + rootDomain: string + /** Stage-specific subdomains (i.e., api.casimir.co for prod, api.dev.casimir.co for dev) */ + subdomains: { + landing: string + nodes: string + users: string + wildcard: string + } + /** Nodes IP address */ + nodesIp: string +} \ No newline at end of file diff --git a/infrastructure/cdk/src/interfaces/StackProps.ts b/infrastructure/cdk/src/interfaces/StackProps.ts new file mode 100644 index 000000000..162e189fa --- /dev/null +++ b/infrastructure/cdk/src/interfaces/StackProps.ts @@ -0,0 +1,31 @@ +import * as cdk from 'aws-cdk-lib' +import * as certmgr from 'aws-cdk-lib/aws-certificatemanager' +import * as ecs from 'aws-cdk-lib/aws-ecs' +import * as route53 from 'aws-cdk-lib/aws-route53' + +export type EtlStackProps = cdk.StackProps + +export type NetworkStackProps = cdk.StackProps + +export interface LandingStackProps extends cdk.StackProps { + /** Project-wide route53 hosted zone */ + hostedZone: route53.HostedZone + /** Stage-specific certificate */ + certificate?: certmgr.Certificate +} + +export interface NodesStackProps extends cdk.StackProps { + /** Project-wide route53 hosted zone */ + hostedZone: route53.HostedZone + /** Stage-specific certificate */ + certificate?: certmgr.Certificate +} + +export interface UsersStackProps extends cdk.StackProps { + /** Project-wide route53 hosted zone */ + hostedZone: route53.HostedZone + /** Stage-specific ECS cluster */ + cluster: ecs.Cluster + /** Stage-specific certificate */ + certificate?: certmgr.Certificate +} \ No newline at end of file diff --git a/infrastructure/cdk/src/providers/config.ts b/infrastructure/cdk/src/providers/config.ts new file mode 100644 index 000000000..ee830a0a0 --- /dev/null +++ b/infrastructure/cdk/src/providers/config.ts @@ -0,0 +1,78 @@ +import { pascalCase } from '@casimir/string-helpers' +import { ProjectConfig } from '../interfaces/ProjectConfig' + +/** + * CDK app config + */ +export class Config implements ProjectConfig { + public readonly project + public readonly stage + public readonly env + public readonly rootDomain + public readonly subdomains + public readonly nodesIp + + /** List of required environment variables */ + public readonly requiredEnvVars = ['PROJECT', 'STAGE', 'AWS_ACCOUNT', 'AWS_REGION'] + + constructor() { + this.checkEnvVars() + this.project = pascalCase(process.env.PROJECT as string) + this.stage = pascalCase(process.env.STAGE as string) + this.env = { + account: process.env.AWS_ACCOUNT as string, + region: process.env.AWS_REGION as string + } + this.rootDomain = `${this.stage === 'Prod' ? '' : `${this.stage.toLowerCase()}.`}casimir.co` + this.subdomains = { + nodes: 'nodes', + landing: 'www', + users: 'users', + wildcard: '*' + } + this.nodesIp = process.env.NODES_IP as string + } + + /** + * Check for required environment variables and exit if any are missing + * @returns void + */ + checkEnvVars(): void { + this.requiredEnvVars.forEach(v => { + if (!process.env[v]) { + console.log('No value provided for', v) + process.exit(1) + } + }) + } + + /** + * Get stack name with project prefix and stage suffix + * @param stackName Stack name + * @returns Full stack name + * @example + * ```typescript + * const stackName = config.getFullStackName('etl') + * console.log(stackName) // EtlDev + * ``` + */ + getFullStackName(stackName: string): string { + return this.project + pascalCase(stackName) + this.stage + } + + /** + * Get stack resource name with project prefix and stage suffix + * @param stackName Stack name + * @param resourceName Resource name + * @returns Resource name + * @example + * ```typescript + * const resourceName = config.getFullStackResourceName('etl', 'event-bucket') + * console.log(resourceName) // EtlEventBucketDev + * ``` + */ + getFullStackResourceName(stackName: string, resourceName: string): string { + return this.project + pascalCase(stackName) + pascalCase(resourceName) + this.stage + } + +} \ No newline at end of file diff --git a/infrastructure/cdk/src/providers/etl.ts b/infrastructure/cdk/src/providers/etl.ts new file mode 100644 index 000000000..5beaea5c6 --- /dev/null +++ b/infrastructure/cdk/src/providers/etl.ts @@ -0,0 +1,58 @@ +import { Construct } from 'constructs' +import * as cdk from 'aws-cdk-lib' +import * as s3 from 'aws-cdk-lib/aws-s3' +import * as glue from '@aws-cdk/aws-glue-alpha' +import { schemaToGlueColumns, eventSchema, aggSchema } from '@casimir/data' +import { kebabCase, pascalCase, snakeCase } from '@casimir/string-helpers' +import { Config } from '../providers/config' +import { EtlStackProps } from '../interfaces/StackProps' + +/** + * Chain analytics ETL stack + */ +export class EtlStack extends cdk.Stack { + /** Stack name */ + public readonly name = pascalCase('etl') + + constructor(scope: Construct, id: string, props: EtlStackProps) { + super(scope, id, props) + + const config = new Config() + + /** Get Glue Columns from JSON Schema for each table */ + const eventColumns = schemaToGlueColumns(eventSchema) + const aggColumns = schemaToGlueColumns(aggSchema) + + /** Create Glue DB */ + const database = new glue.Database(this, config.getFullStackResourceName(this.name, 'database'), { + databaseName: snakeCase(config.getFullStackResourceName(this.name, 'database')) + }) + + /** Create S3 buckets */ + const eventBucket = new s3.Bucket(this, config.getFullStackResourceName(this.name, 'event-bucket'), { + bucketName: kebabCase(config.getFullStackResourceName(this.name, 'event-bucket')), + }) + const aggBucket = new s3.Bucket(this, config.getFullStackResourceName(this.name, 'agg-bucket'), { + bucketName: kebabCase(config.getFullStackResourceName(this.name, 'agg-bucket')), + }) + new s3.Bucket(this, config.getFullStackResourceName(this.name, 'output-bucket'), { + bucketName: kebabCase(config.getFullStackResourceName(this.name, 'output-bucket')) + }) + + /** Create Glue tables */ + new glue.Table(this, config.getFullStackResourceName(this.name, 'event-table'), { + database: database, + tableName: snakeCase(config.getFullStackResourceName(this.name, 'event-table')), + bucket: eventBucket, + columns: eventColumns, + dataFormat: glue.DataFormat.JSON, + }) + new glue.Table(this, config.getFullStackResourceName(this.name, 'agg-table'), { + database: database, + tableName: snakeCase(config.getFullStackResourceName(this.name, 'agg-table')), + bucket: aggBucket, + columns: aggColumns, + dataFormat: glue.DataFormat.JSON, + }) + } +} \ No newline at end of file diff --git a/infrastructure/cdk/src/providers/landing.ts b/infrastructure/cdk/src/providers/landing.ts new file mode 100644 index 000000000..fdb0ff2e2 --- /dev/null +++ b/infrastructure/cdk/src/providers/landing.ts @@ -0,0 +1,88 @@ +import { Construct } from 'constructs' +import * as cdk from 'aws-cdk-lib' +import * as route53targets from 'aws-cdk-lib/aws-route53-targets' +import * as route53 from 'aws-cdk-lib/aws-route53' +import * as s3 from 'aws-cdk-lib/aws-s3' +import * as s3Deployment from 'aws-cdk-lib/aws-s3-deployment' +import * as cloudfront from 'aws-cdk-lib/aws-cloudfront' +import * as cloudfrontOrigins from 'aws-cdk-lib/aws-cloudfront-origins' +import { LandingStackProps } from '../interfaces/StackProps' +import { pascalCase } from '@casimir/string-helpers' +import { Config } from './config' + +/** + * Landing page stack + */ +export class LandingStack extends cdk.Stack { + /** Stack name */ + public readonly name = pascalCase('landing') + /** Path to stack build assets or Dockerfile */ + public readonly assetPath = '../../apps/landing/dist' + + constructor(scope: Construct, id: string, props: LandingStackProps) { + super(scope, id, props) + + const config = new Config() + const { rootDomain, subdomains } = config + const { hostedZone, certificate } = props + + + /** Create a bucket for the landing page */ + const bucket = new s3.Bucket(this, config.getFullStackResourceName(this.name, 'bucket'), { + accessControl: s3.BucketAccessControl.PRIVATE + }) + + /** Set bucket to allow cloudfront origin */ + const originAccessIdentity = new cloudfront.OriginAccessIdentity(this, config.getFullStackResourceName(this.name, 'origin-access-identity')) + bucket.grantRead(originAccessIdentity) + + /** Create a cloudfront distribution for the landing page */ + const distribution = new cloudfront.Distribution(this, config.getFullStackResourceName(this.name, 'distribution'), { + defaultRootObject: 'index.html', + errorResponses: [ + { + httpStatus: 403, + responseHttpStatus: 200, + responsePagePath: '/index.html', + ttl: cdk.Duration.minutes(30) + }, + { + httpStatus: 404, + responseHttpStatus: 200, + responsePagePath: '/index.html', + ttl: cdk.Duration.minutes(30) + } + ], + defaultBehavior: { + viewerProtocolPolicy: cloudfront.ViewerProtocolPolicy.REDIRECT_TO_HTTPS, + origin: new cloudfrontOrigins.S3Origin(bucket, { originAccessIdentity }) + }, + domainNames: [rootDomain, `${subdomains.landing}.${rootDomain}`], + certificate + }) + + /** Deploy the landing page to the bucket */ + new s3Deployment.BucketDeployment(this, config.getFullStackResourceName(this.name, 'bucket-deployment'), { + destinationBucket: bucket, + sources: [s3Deployment.Source.asset(this.assetPath)], + distribution, + distributionPaths: ['/*'] + }) + + /** Create an A record for the landing page root */ + new route53.ARecord(this, config.getFullStackResourceName(this.name, 'a-record'), { + recordName: rootDomain, + zone: hostedZone as route53.IHostedZone, + target: route53.RecordTarget.fromAlias(new route53targets.CloudFrontTarget(distribution)), + ttl: cdk.Duration.minutes(1), + }) + + /** Create an A record for the landing page www subdomain */ + new route53.ARecord(this, config.getFullStackResourceName(this.name, 'a-record-www'), { + recordName: `${subdomains.landing}.${rootDomain}`, + zone: hostedZone as route53.IHostedZone, + target: route53.RecordTarget.fromAlias(new route53targets.CloudFrontTarget(distribution)), + ttl: cdk.Duration.minutes(1), + }) + } +} diff --git a/infrastructure/cdk/src/providers/network.ts b/infrastructure/cdk/src/providers/network.ts new file mode 100644 index 000000000..9ee565e10 --- /dev/null +++ b/infrastructure/cdk/src/providers/network.ts @@ -0,0 +1,57 @@ +import { Construct } from 'constructs' +import * as cdk from 'aws-cdk-lib' +import * as certmgr from 'aws-cdk-lib/aws-certificatemanager' +import * as ec2 from 'aws-cdk-lib/aws-ec2' +import * as ecs from 'aws-cdk-lib/aws-ecs' +import * as route53 from 'aws-cdk-lib/aws-route53' +import { NetworkStackProps } from '../interfaces/StackProps' +import { pascalCase } from '@casimir/string-helpers' +import { Config } from './config' + +/** + * Route53 network stack + */ +export class NetworkStack extends cdk.Stack { + /** Stack name */ + public readonly name = pascalCase('network') + /** Project-wide route53 hosted zone */ + public readonly hostedZone: route53.HostedZone + /** Stage-specific certificate */ + public readonly certificate: certmgr.Certificate + /** Stage-specific Ec2 VPC */ + public readonly vpc: ec2.Vpc + /** Stage-specific ECS cluster */ + public readonly cluster: ecs.Cluster + + + constructor(scope: Construct, id: string, props: NetworkStackProps) { + super(scope, id, props) + + const config = new Config() + const { rootDomain, subdomains } = config + + /** Remove stage-specific subdomain */ + const absoluteRootDomain = (() => { + if (rootDomain.split('.').length > 2) { + return rootDomain.split('.').slice(1).join('.') + } + return rootDomain + })() + + /** Get the hosted zone for the project domain */ + this.hostedZone = route53.HostedZone.fromLookup(this, config.getFullStackResourceName(this.name, 'hosted-zone'), { + domainName: absoluteRootDomain + }) as route53.HostedZone + + /** Create a stage-specific Ec2 VPC and ECS cluster */ + this.vpc = new ec2.Vpc(this, config.getFullStackResourceName(this.name, 'vpc')) + this.cluster = new ecs.Cluster(this, config.getFullStackResourceName(this.name, 'cluster'), { vpc: this.vpc }) + + /** Create a stage-specific SSL certificate */ + this.certificate = new certmgr.Certificate(this, config.getFullStackResourceName(this.name, 'cert'), { + domainName: rootDomain, + subjectAlternativeNames: [`${subdomains.wildcard}.${rootDomain}`], + validation: certmgr.CertificateValidation.fromDns(this.hostedZone) + }) + } +} \ No newline at end of file diff --git a/infrastructure/cdk/src/providers/nodes.ts b/infrastructure/cdk/src/providers/nodes.ts new file mode 100644 index 000000000..e03c24e19 --- /dev/null +++ b/infrastructure/cdk/src/providers/nodes.ts @@ -0,0 +1,30 @@ +import { Construct } from 'constructs' +import * as cdk from 'aws-cdk-lib' +import * as route53 from 'aws-cdk-lib/aws-route53' +import { NodesStackProps } from '../interfaces/StackProps' +import { pascalCase } from '@casimir/string-helpers' +import { Config } from './config' + +/** + * Cryptonodes stack + */ +export class NodesStack extends cdk.Stack { + /** Stack name */ + public readonly name = pascalCase('nodes') + + constructor(scope: Construct, id: string, props: NodesStackProps) { + super(scope, id, props) + + const config = new Config() + const { rootDomain, subdomains, nodesIp } = config + const { hostedZone } = props + + /** Create an A record for the nodes web server IP */ + new route53.ARecord(this, config.getFullStackResourceName(this.name, 'a-record-api'), { + recordName: `${subdomains.nodes}.${rootDomain}`, + zone: hostedZone as route53.IHostedZone, + target: route53.RecordTarget.fromIpAddresses(nodesIp), + ttl: cdk.Duration.minutes(1), + }) + } +} \ No newline at end of file diff --git a/infrastructure/cdk/src/providers/users.ts b/infrastructure/cdk/src/providers/users.ts new file mode 100644 index 000000000..53225a432 --- /dev/null +++ b/infrastructure/cdk/src/providers/users.ts @@ -0,0 +1,50 @@ +import { Construct } from 'constructs' +import * as cdk from 'aws-cdk-lib' +import * as ecs from 'aws-cdk-lib/aws-ecs' +import * as ecsPatterns from 'aws-cdk-lib/aws-ecs-patterns' +import * as route53targets from 'aws-cdk-lib/aws-route53-targets' +import * as route53 from 'aws-cdk-lib/aws-route53' +import { UsersStackProps } from '../interfaces/StackProps' +import { Config } from './config' + +/** + * Users API stack + */ +export class UsersStack extends cdk.Stack { + /** Stack name */ + public readonly name = 'users' + /** Path to stack build assets or Dockerfile */ + public readonly assetPath = '../../services/users' + + constructor(scope: Construct, id: string, props: UsersStackProps) { + super(scope, id, props) + + const config = new Config() + const { project, stage, rootDomain, subdomains } = config + const { certificate, cluster, hostedZone } = props + + /** Create a load-balanced service for the users express API */ + const service = new ecsPatterns.ApplicationLoadBalancedFargateService(this, config.getFullStackResourceName(this.name, 'fargate'), { + certificate, + cluster, + domainName: `${subdomains.users}.${rootDomain}`, // e.g. users.casimir.co or users.dev.casimir.co + domainZone: hostedZone, + taskImageOptions: { + containerPort: 4000, + image: ecs.ContainerImage.fromAsset(this.assetPath), + environment: { + PROJECT: project, + STAGE: stage + } + } + }) + + /** Create an A record for the landing page www subdomain */ + new route53.ARecord(this, config.getFullStackResourceName(this.name, 'a-record'), { + recordName: `${subdomains.users}.${rootDomain}`, + zone: hostedZone as route53.IHostedZone, + target: route53.RecordTarget.fromAlias(new route53targets.LoadBalancerTarget(service.loadBalancer)), + ttl: cdk.Duration.minutes(1) + }) + } +} \ No newline at end of file diff --git a/infrastructure/cdk/test/all.test.ts b/infrastructure/cdk/test/all.test.ts index ec75e9481..8b02deb1e 100644 --- a/infrastructure/cdk/test/all.test.ts +++ b/infrastructure/cdk/test/all.test.ts @@ -1,41 +1,39 @@ import * as cdk from 'aws-cdk-lib' -import { Template } from 'aws-cdk-lib/assertions' -import { DnsStack } from '../lib/dns' -import { EtlStack } from '../lib/etl' -import { AuthStack } from '../lib/auth' -import { LandingStack } from '../lib/landing' +import * as assertions from 'aws-cdk-lib/assertions' +import { Config } from '../src/providers/config' +import { UsersStack } from '../src/providers/users' +import { NetworkStack } from '../src/providers/network' +import { EtlStack } from '../src/providers/etl' +import { LandingStack } from '../src/providers/landing' +import { NodesStack } from '../src/providers/nodes' test('All stacks created', () => { - - const defaultEnv = { account: '257202027633', region: 'us-east-2' } - const project = 'Casimir' - const stage = 'Test' - + const config = new Config() + const { env } = config const app = new cdk.App() - const dnsStack = new DnsStack(app, `${project}DnsStack${stage}`, { env: defaultEnv, project, stage }) - const { domain, dnsRecords, hostedZone } = dnsStack - const etlStack = new EtlStack(app, `${project}EtlStack${stage}`, { env: defaultEnv, project, stage }) - const landingStack = new LandingStack(app, `${project}LandingStack${stage}`, { env: defaultEnv, project, stage, domain, dnsRecords, hostedZone }) - const authStack = new AuthStack(app, `${project}AuthStack${stage}`, { env: defaultEnv, project, stage, domain, dnsRecords, hostedZone }) + const { hostedZone, certificate, cluster } = new NetworkStack(app, config.getFullStackName('network'), { env }) + const etlStack = new EtlStack(app, config.getFullStackName('etl'), { env }) + const usersStack = new UsersStack(app, config.getFullStackName('users'), { env, hostedZone, certificate, cluster }) + const nodesStack = new NodesStack(app, config.getFullStackName('nodes'), { env, hostedZone, certificate }) + const landingStack = new LandingStack(app, config.getFullStackName('landing'), { env, hostedZone }) - const etlTemplate = Template.fromStack(etlStack) - console.log(etlTemplate) + const etlTemplate = assertions.Template.fromStack(etlStack) Object.keys(etlTemplate.findOutputs('*')).forEach(output => { - console.log(output) expect(output).toBeDefined() }) - - const landingTemplate = Template.fromStack(landingStack) - console.log(landingTemplate) - Object.keys(landingTemplate.findOutputs('*')).forEach(output => { - console.log(output) + + const usersTemplate = assertions.Template.fromStack(usersStack) + Object.keys(usersTemplate.findOutputs('*')).forEach(output => { + expect(output).toBeDefined() + }) + + const nodesTemplate = assertions.Template.fromStack(nodesStack) + Object.keys(nodesTemplate.findOutputs('*')).forEach(output => { expect(output).toBeDefined() }) - const authTemplate = Template.fromStack(authStack) - console.log(authTemplate) - Object.keys(authTemplate.findOutputs('*')).forEach(output => { - console.log(output) + const landingTemplate = assertions.Template.fromStack(landingStack) + Object.keys(landingTemplate.findOutputs('*')).forEach(output => { expect(output).toBeDefined() }) }) diff --git a/infrastructure/cdk/test/etl.test.ts b/infrastructure/cdk/test/etl.test.ts index 29fbec396..91b98c6bd 100644 --- a/infrastructure/cdk/test/etl.test.ts +++ b/infrastructure/cdk/test/etl.test.ts @@ -1,18 +1,16 @@ import * as cdk from 'aws-cdk-lib' -import { Template } from 'aws-cdk-lib/assertions' -import { EtlStack } from '../lib/etl' +import * as assertions from 'aws-cdk-lib/assertions' +import { Config } from '../src/providers/config' +import { EtlStack } from '../src/providers/etl' import { eventSchema, aggSchema, schemaToGlueColumns } from '@casimir/data' test('ETL stack created', () => { - - const defaultEnv = { account: '257202027633', region: 'us-east-2' } - const project = 'Casimir' - const stage = 'Test' - + const config = new Config() + const { env } = config const app = new cdk.App() - const etlStack = new EtlStack(app, `${project}EtlStack${stage}`, { env: defaultEnv, project, stage }) + const etlStack = new EtlStack(app, config.getFullStackName('etl'), { env }) - const etlTemplate = Template.fromStack(etlStack) + const etlTemplate = assertions.Template.fromStack(etlStack) const resource = etlTemplate.findResources('AWS::Glue::Table') diff --git a/package-lock.json b/package-lock.json index e352b38a3..82c4fcf14 100644 --- a/package-lock.json +++ b/package-lock.json @@ -244,7 +244,6 @@ }, "contracts/ethereum": { "name": "@casimir/ethereum", - "hasInstallScript": true, "dependencies": { "@chainlink/contracts": "^0.5.1", "@uniswap/v3-core": "^1.0.1", @@ -290,7 +289,7 @@ "source-map-support": "^0.5.16" }, "bin": { - "index": "bin/index.ts" + "index": "src/index.ts" }, "devDependencies": { "@types/jest": "^29.4.0", @@ -333,9 +332,9 @@ } }, "node_modules/@aws-cdk/asset-awscli-v1": { - "version": "2.2.74", - "resolved": "https://registry.npmjs.org/@aws-cdk/asset-awscli-v1/-/asset-awscli-v1-2.2.74.tgz", - "integrity": "sha512-YoLl74xG1q5byb7iY2enz809j9Vc4aAAe+w0OsGZdRPR1iXipnPXLGGJxiM3uCB8UNIfqzs+gw8HMU9tECsBVA==" + "version": "2.2.78", + "resolved": "https://registry.npmjs.org/@aws-cdk/asset-awscli-v1/-/asset-awscli-v1-2.2.78.tgz", + "integrity": "sha512-RaQD7ZNxndo3KvPOX003sbG4GbDOVVbaDVUPbbH8u/GZ31fi1FDPD0YpWfQ2cp976jtJilPP5D6TcQj6+ejL6w==" }, "node_modules/@aws-cdk/asset-kubectl-v20": { "version": "2.1.1", @@ -343,9 +342,9 @@ "integrity": "sha512-U1ntiX8XiMRRRH5J1IdC+1t5CE89015cwyt5U63Cpk0GnMlN5+h9WsWMlKlPXZR4rdq/m806JRlBMRpBUB2Dhw==" }, "node_modules/@aws-cdk/asset-node-proxy-agent-v5": { - "version": "2.0.63", - "resolved": "https://registry.npmjs.org/@aws-cdk/asset-node-proxy-agent-v5/-/asset-node-proxy-agent-v5-2.0.63.tgz", - "integrity": "sha512-2FC27PQC6Twy9MIVGhb44F2JuWgyF+cwWBbpB/sbVAFY72RmYA3GmDJpvjjrWBsXjPVZ+sUq9e2wn9/V15mh6g==" + "version": "2.0.64", + "resolved": "https://registry.npmjs.org/@aws-cdk/asset-node-proxy-agent-v5/-/asset-node-proxy-agent-v5-2.0.64.tgz", + "integrity": "sha512-pUG6YX1JTKTMca7YF8D+sCndDQvv5jOS9N+bvsrSVhS0LX499XdPOuKwnM4MZNGV9iEn8xqNlMJPYFdEp1nQaw==" }, "node_modules/@aws-cdk/aws-glue-alpha": { "version": "2.33.0-alpha.0", @@ -514,13 +513,13 @@ } }, "node_modules/@aws-sdk/client-athena": { - "version": "3.272.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-athena/-/client-athena-3.272.0.tgz", - "integrity": "sha512-BZCR7noLGogFDbk0Z4clFe6Xdml0EhTvItpYGanKLtcDkpyh9x55/e46p0zo9er6LTQWLNnz/e6QdlID7RCmuA==", + "version": "3.276.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-athena/-/client-athena-3.276.0.tgz", + "integrity": "sha512-jVXEwCt2rUbyKIQxGyaQHkN2K5Nhuh2ZfhNsowWlUZFNqbD6gjW3dhkJURi3eNuhvE4TBr301nxIqMqIhDkzUw==", "dependencies": { "@aws-crypto/sha256-browser": "3.0.0", "@aws-crypto/sha256-js": "3.0.0", - "@aws-sdk/client-sts": "3.272.0", + "@aws-sdk/client-sts": "3.276.0", "@aws-sdk/config-resolver": "3.272.0", "@aws-sdk/credential-provider-node": "3.272.0", "@aws-sdk/fetch-http-handler": "3.272.0", @@ -560,13 +559,13 @@ } }, "node_modules/@aws-sdk/client-cognito-identity": { - "version": "3.272.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-cognito-identity/-/client-cognito-identity-3.272.0.tgz", - "integrity": "sha512-uMjRWcNvX7SoGaVn0mXWD43+Z1awPahQwGW3riDLfXHZdOgw2oFDhD3Jg5jQ8OzQLUfDvArhE3WyZwlS4muMuQ==", + "version": "3.276.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-cognito-identity/-/client-cognito-identity-3.276.0.tgz", + "integrity": "sha512-haFxr8QKNxoRLIWyawc4EfEN6ep4yrWv5e5KWzbulJaw6QwLKmTCLyv09mScbk1FUgpn1MaIy2mJiijiu2RJJQ==", "dependencies": { "@aws-crypto/sha256-browser": "3.0.0", "@aws-crypto/sha256-js": "3.0.0", - "@aws-sdk/client-sts": "3.272.0", + "@aws-sdk/client-sts": "3.276.0", "@aws-sdk/config-resolver": "3.272.0", "@aws-sdk/credential-provider-node": "3.272.0", "@aws-sdk/fetch-http-handler": "3.272.0", @@ -605,14 +604,14 @@ } }, "node_modules/@aws-sdk/client-s3": { - "version": "3.272.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-s3/-/client-s3-3.272.0.tgz", - "integrity": "sha512-KxlVhTHfmcm3HlAP5+vY1cuQt60AaYOISp1ccYOPsww7Ly7fbDnbov0AV9bcwlLLVcfZFWQYJqH+Gvk2SpyXFQ==", + "version": "3.276.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-s3/-/client-s3-3.276.0.tgz", + "integrity": "sha512-9cwrYeMTx9a9MUWSxBr2i87NACEw3Vc8ALnDYZSvhps8UivdgZ1v3zN8c0v/g/3RrJJNco2HCs9je+lOPRvq3w==", "dependencies": { "@aws-crypto/sha1-browser": "3.0.0", "@aws-crypto/sha256-browser": "3.0.0", "@aws-crypto/sha256-js": "3.0.0", - "@aws-sdk/client-sts": "3.272.0", + "@aws-sdk/client-sts": "3.276.0", "@aws-sdk/config-resolver": "3.272.0", "@aws-sdk/credential-provider-node": "3.272.0", "@aws-sdk/eventstream-serde-browser": "3.272.0", @@ -661,7 +660,7 @@ "@aws-sdk/util-utf8": "3.254.0", "@aws-sdk/util-waiter": "3.272.0", "@aws-sdk/xml-builder": "3.201.0", - "fast-xml-parser": "4.0.11", + "fast-xml-parser": "4.1.2", "tslib": "^2.3.1" }, "engines": { @@ -669,13 +668,13 @@ } }, "node_modules/@aws-sdk/client-secrets-manager": { - "version": "3.272.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-secrets-manager/-/client-secrets-manager-3.272.0.tgz", - "integrity": "sha512-dKTl+vFyo7Sqy63AxRO3D2aSnwUK9yQajfWzN9Fhu7z2/iit11t5oaTPndSmAwHpFY9+YySdwqtYUGu3413rUA==", + "version": "3.276.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-secrets-manager/-/client-secrets-manager-3.276.0.tgz", + "integrity": "sha512-7BNOkNp9xZk3nDfA6oRo3HxDIzfA1JGDGgRMkIAYZZnK8Cjy0pWzoamYtK85QDvWYgsmHs7m3ue+Wx+VhMOZPw==", "dependencies": { "@aws-crypto/sha256-browser": "3.0.0", "@aws-crypto/sha256-js": "3.0.0", - "@aws-sdk/client-sts": "3.272.0", + "@aws-sdk/client-sts": "3.276.0", "@aws-sdk/config-resolver": "3.272.0", "@aws-sdk/credential-provider-node": "3.272.0", "@aws-sdk/fetch-http-handler": "3.272.0", @@ -799,9 +798,9 @@ } }, "node_modules/@aws-sdk/client-sts": { - "version": "3.272.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.272.0.tgz", - "integrity": "sha512-kigxCxURp3WupufGaL/LABMb7UQfzAQkKcj9royizL3ItJ0vw5kW/JFrPje5IW1mfLgdPF7PI9ShOjE0fCLTqA==", + "version": "3.276.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.276.0.tgz", + "integrity": "sha512-J6FR4tYa/WdDdwWAKhw/mXQXKWUaZZQpMiyFEbFPQyURSWu3u17nv97NUdvVOgCth48H6Wb6a4ksssYy4K9tFQ==", "dependencies": { "@aws-crypto/sha256-browser": "3.0.0", "@aws-crypto/sha256-js": "3.0.0", @@ -837,7 +836,7 @@ "@aws-sdk/util-user-agent-browser": "3.272.0", "@aws-sdk/util-user-agent-node": "3.272.0", "@aws-sdk/util-utf8": "3.254.0", - "fast-xml-parser": "4.0.11", + "fast-xml-parser": "4.1.2", "tslib": "^2.3.1" }, "engines": { @@ -860,11 +859,11 @@ } }, "node_modules/@aws-sdk/credential-provider-cognito-identity": { - "version": "3.272.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-cognito-identity/-/credential-provider-cognito-identity-3.272.0.tgz", - "integrity": "sha512-rVx0rtQjbiYCM0nah2rB/2ut2YJYPpRr1AbW/Hd4r/PI+yiusrmXAwuT4HIW2yr34zsQMPi1jZ3WHN9Rn9mzlg==", + "version": "3.276.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-cognito-identity/-/credential-provider-cognito-identity-3.276.0.tgz", + "integrity": "sha512-LaIQNt2F+XWvX031MzYNoHWuqjpyomsdI+1y6KaeC/9z51Y+usmB/ay1jYK/kUmXl/NcBmZR5gPELZu7P6WtaQ==", "dependencies": { - "@aws-sdk/client-cognito-identity": "3.272.0", + "@aws-sdk/client-cognito-identity": "3.276.0", "@aws-sdk/property-provider": "3.272.0", "@aws-sdk/types": "3.272.0", "tslib": "^2.3.1" @@ -984,14 +983,14 @@ } }, "node_modules/@aws-sdk/credential-providers": { - "version": "3.272.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-providers/-/credential-providers-3.272.0.tgz", - "integrity": "sha512-ucd6Xq6aBMf+nM4uz5zkjL11mwaE5BV1Q4hkulaGu2v1dRA8n6zhLJk/sb4hOJ7leelqMJMErlbQ2T3MkYvlJQ==", + "version": "3.276.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-providers/-/credential-providers-3.276.0.tgz", + "integrity": "sha512-pgKP0dRMP48eDfXIcGENKzi6CIA7IVUAqFdWLY1bonq7DGSLveBvD7hkxu1ZXVp6HlucLiGtncgGrRKBmtK6Jg==", "dependencies": { - "@aws-sdk/client-cognito-identity": "3.272.0", + "@aws-sdk/client-cognito-identity": "3.276.0", "@aws-sdk/client-sso": "3.272.0", - "@aws-sdk/client-sts": "3.272.0", - "@aws-sdk/credential-provider-cognito-identity": "3.272.0", + "@aws-sdk/client-sts": "3.276.0", + "@aws-sdk/credential-provider-cognito-identity": "3.276.0", "@aws-sdk/credential-provider-env": "3.272.0", "@aws-sdk/credential-provider-imds": "3.272.0", "@aws-sdk/credential-provider-ini": "3.272.0", @@ -1141,9 +1140,9 @@ } }, "node_modules/@aws-sdk/lib-storage": { - "version": "3.272.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/lib-storage/-/lib-storage-3.272.0.tgz", - "integrity": "sha512-HVgPSztekEGXsy0SA9MxEq+ya/HbXpYpLeZpFcdxbvOm0nztlxoQJrTAZC4VsKq64JlVjEP+12QcSIFJVbUwrQ==", + "version": "3.276.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/lib-storage/-/lib-storage-3.276.0.tgz", + "integrity": "sha512-fOlPEaDoMQpLPm8Im+kAF54ldPUI69YbITjtRNTvO0MAizcGCwFMtfPsXWWeUXV9tasgY8cANdb8IMlEcqrA9Q==", "dependencies": { "@aws-sdk/middleware-endpoint": "3.272.0", "@aws-sdk/smithy-client": "3.272.0", @@ -2487,10 +2486,6 @@ "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", "dev": true }, - "node_modules/@casimir/auth": { - "resolved": "services/auth", - "link": true - }, "node_modules/@casimir/aws-helpers": { "resolved": "common/aws-helpers", "link": true @@ -2555,6 +2550,10 @@ "resolved": "common/types", "link": true }, + "node_modules/@casimir/users": { + "resolved": "services/users", + "link": true + }, "node_modules/@casimir/web": { "resolved": "apps/web", "link": true @@ -7182,8 +7181,6 @@ "integrity": "sha512-bdM5cEGCOhDSwminryHJbRmXc1x7dPKg6Pqns3qyTwFlxsqUgxE29lsERS3PlIW1HTjoIGMUqsk1zQQwST1Yxw==", "dev": true, "hasInstallScript": true, - "optional": true, - "peer": true, "dependencies": { "node-gyp-build": "4.3.0" }, @@ -7299,12 +7296,6 @@ "integrity": "sha512-M2P4Ng26QbAeITiH7w1d7OxtldgfAe0wobpyJzVK/XOb0cUGKU2R4pfAhqcJBXAe2ife5ZOhSv4wk7p+ffURtg==", "dev": true }, - "node_modules/@types/aws-lambda": { - "version": "8.10.97", - "resolved": "https://registry.npmjs.org/@types/aws-lambda/-/aws-lambda-8.10.97.tgz", - "integrity": "sha512-BZk3qO4R2KN8Ts3eR6CW1n8LI46UOgv1KoDZjo8J9vOQvDeX/rsrv1H0BpEAMcSqZ1mLwTEyAMtlua5tlSn0kw==", - "dev": true - }, "node_modules/@types/babel__core": { "version": "7.20.0", "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.0.tgz", @@ -7497,9 +7488,9 @@ "integrity": "sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ==" }, "node_modules/@types/http-proxy": { - "version": "1.17.9", - "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.9.tgz", - "integrity": "sha512-QsbSjA/fSk7xB+UXlCT3wHBy5ai9wOcNDWwZAtud+jXhwOM3l+EYZh8Lng4+/6n8uar0J7xILzqftJdJ/Wdfkw==", + "version": "1.17.10", + "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.10.tgz", + "integrity": "sha512-Qs5aULi+zV1bwKAg5z1PWnDXWmsn+LxIvUGv6E2+OOMYhclZMO+OXd9pYVf2gLykf2I7IV2u7oTHwChPNsvJ7g==", "dev": true, "dependencies": { "@types/node": "*" @@ -8436,9 +8427,9 @@ "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" }, "node_modules/@walletconnect/jsonrpc-utils": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/@walletconnect/jsonrpc-utils/-/jsonrpc-utils-1.0.5.tgz", - "integrity": "sha512-4xdaegX9K6rEdguqCLvudYq2h0KCeTYWnWwNNMhooWnkilT7PrR1kmatpr/HP4l191zyvS33K5VClWhkCTeAxQ==", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/@walletconnect/jsonrpc-utils/-/jsonrpc-utils-1.0.6.tgz", + "integrity": "sha512-snp0tfkjPiDLQp/jrBewI+9SM33GPV4+Gjgldod6XQ7rFyQ5FZjnBxUkY4xWH0+arNxzQSi6v5iDXjCjSaorpg==", "dependencies": { "@walletconnect/environment": "^1.0.1", "@walletconnect/jsonrpc-types": "^1.0.2", @@ -8644,7 +8635,6 @@ "resolved": "https://registry.npmjs.org/abstract-leveldown/-/abstract-leveldown-6.3.0.tgz", "integrity": "sha512-TU5nlYgta8YrBMNpc9FwQzRbiXsj49gsALsXadbGHt9CROPzX5fB0rWDR5mtdpOOKa5XqRFpbj1QroPAoPzVjQ==", "dev": true, - "peer": true, "dependencies": { "buffer": "^5.5.0", "immediate": "^3.2.3", @@ -8661,7 +8651,6 @@ "resolved": "https://registry.npmjs.org/level-supports/-/level-supports-1.0.1.tgz", "integrity": "sha512-rXM7GYnW8gsl1vedTJIbzOrRv85c/2uCMpiiCzO2fndd06U/kUXEEU9evYn4zFggBOg36IsBW8LzqIpETwwQzg==", "dev": true, - "peer": true, "dependencies": { "xtend": "^4.0.2" }, @@ -9286,9 +9275,9 @@ } }, "node_modules/aws-cdk": { - "version": "2.65.0", - "resolved": "https://registry.npmjs.org/aws-cdk/-/aws-cdk-2.65.0.tgz", - "integrity": "sha512-a1xtdf95N7MLPcwCs+IkE6kCD1utLMuDh+1RIyYbX7SYzAjlNJzOXQ7M16kBktt4KflVWseZnYsGbKWJ2DraMw==", + "version": "2.66.0", + "resolved": "https://registry.npmjs.org/aws-cdk/-/aws-cdk-2.66.0.tgz", + "integrity": "sha512-UQ2NJsL+j1I8N0/rabORBC74Q84vZD+wK5K8tfX7a7hwCqqmon7TJ7c3lUsQgVGpbi66grcrDxmm4dXeB6cb0w==", "dev": true, "bin": { "cdk": "bin/cdk" @@ -9301,9 +9290,9 @@ } }, "node_modules/aws-cdk-lib": { - "version": "2.65.0", - "resolved": "https://registry.npmjs.org/aws-cdk-lib/-/aws-cdk-lib-2.65.0.tgz", - "integrity": "sha512-yTeBe9+Li8ZHZICJc0y1uarbSruc3KIXP1KC7tjVrkg+ye7EE8eJTZm7+PpJd6O0ciPinn/k/dE9gHwUImygGA==", + "version": "2.66.0", + "resolved": "https://registry.npmjs.org/aws-cdk-lib/-/aws-cdk-lib-2.66.0.tgz", + "integrity": "sha512-Qmw+lB8uFO+wJX8czw05ciUJObB5gJ5euOXYXXC9BuFPMy1WTA+HYqgSRvgv2mIEnjQb1zlG05oNalvH24Ha7Q==", "bundleDependencies": [ "@balena/dockerignore", "case", @@ -9316,9 +9305,9 @@ "yaml" ], "dependencies": { - "@aws-cdk/asset-awscli-v1": "^2.2.65", + "@aws-cdk/asset-awscli-v1": "^2.2.69", "@aws-cdk/asset-kubectl-v20": "^2.1.1", - "@aws-cdk/asset-node-proxy-agent-v5": "^2.0.54", + "@aws-cdk/asset-node-proxy-agent-v5": "^2.0.58", "@balena/dockerignore": "^1.0.2", "case": "1.6.3", "fs-extra": "^9.1.0", @@ -9500,6 +9489,15 @@ "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.12.0.tgz", "integrity": "sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg==" }, + "node_modules/axios": { + "version": "0.21.4", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz", + "integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==", + "dev": true, + "dependencies": { + "follow-redirects": "^1.14.0" + } + }, "node_modules/babel-jest": { "version": "29.4.3", "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.4.3.tgz", @@ -11319,9 +11317,9 @@ } }, "node_modules/constructs": { - "version": "10.1.256", - "resolved": "https://registry.npmjs.org/constructs/-/constructs-10.1.256.tgz", - "integrity": "sha512-R9mPHqGo+Y2mkaBeQc2+fTC3SZgr8a39tpy3hXT70yvpbxSrTcqPqukksm7ZltDDr2osLjv5Xwt5x/SqjHtATw==", + "version": "10.1.257", + "resolved": "https://registry.npmjs.org/constructs/-/constructs-10.1.257.tgz", + "integrity": "sha512-Wyg17gM+YE/2TsuPMmS+QyWVZ39fTW77AD+87kSs3M94A+0hIrakPH58kif3Q0FlAVyoUDCZIy/qtTBh2AC+jA==", "engines": { "node": ">= 14.17.0" } @@ -12506,9 +12504,9 @@ "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" }, "node_modules/electron-to-chromium": { - "version": "1.4.304", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.304.tgz", - "integrity": "sha512-6c8M+ojPgDIXN2NyfGn8oHASXYnayj+gSEnGeLMKb9zjsySeVB/j7KkNAAG9yDcv8gNlhvFg5REa1N/kQU6pgA==" + "version": "1.4.307", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.307.tgz", + "integrity": "sha512-n54V0t4LyHM2oQiAOmD3qC2peB+orUktXORSnWxqtv3uEMSoUcsq+hoMpU08VEJCNbfgBtzy169P0TcrLuq53A==" }, "node_modules/elliptic": { "version": "6.5.4", @@ -12539,7 +12537,6 @@ "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.10.0.tgz", "integrity": "sha512-AGvFfs+d0JKCJQ4o01ASQLGPmSCxgfU9RFXvzPvZdjKK8oscynksuJhWrSTSw7j7Ep/sZct5b5ZhYCi8S/t0HQ==", "dev": true, - "peer": true, "engines": { "node": ">=12" }, @@ -15864,9 +15861,9 @@ "integrity": "sha512-wpYMUmFu5f00Sm0cj2pfivpmawLZ0NKdviQ4w9zJeR8JVtOpOxHmLaJuj0vxvGqMJQWyP/COUkF75/57OKyRag==" }, "node_modules/fast-xml-parser": { - "version": "4.0.11", - "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.0.11.tgz", - "integrity": "sha512-4aUg3aNRR/WjQAcpceODG1C3x3lFANXRo8+1biqfieHmg9pyMt7qB4lQV/Ta6sJCTbA5vfD8fnA8S54JATiFUA==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.1.2.tgz", + "integrity": "sha512-CDYeykkle1LiA/uqQyNwYpFbyF6Axec6YapmpUP+/RHWIoR1zKjocdvNaTsxCxZzQ6v9MLXaSYm9Qq0thv0DHg==", "dependencies": { "strnum": "^1.0.5" }, @@ -16198,7 +16195,6 @@ "version": "7.0.1", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", - "dev": true, "dependencies": { "graceful-fs": "^4.1.2", "jsonfile": "^4.0.0", @@ -18150,7 +18146,6 @@ "version": "5.2.4", "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", - "dev": true, "engines": { "node": ">= 4" } @@ -20045,8 +20040,6 @@ "version": "1.4.1", "resolved": "https://registry.npmjs.org/jsonschema/-/jsonschema-1.4.1.tgz", "integrity": "sha512-S6cATIPVv1z0IlxdN+zUk5EPjkGCdnhN4wVSBlvoUO1tOLJootbo9CquNJmbIh4yikWHiUedhRYrNPn1arpEmQ==", - "dev": true, - "peer": true, "engines": { "node": "*" } @@ -20209,7 +20202,6 @@ "resolved": "https://registry.npmjs.org/level-concat-iterator/-/level-concat-iterator-2.0.1.tgz", "integrity": "sha512-OTKKOqeav2QWcERMJR7IS9CUo1sHnke2C0gkSmcR7QuEtFNLLzHQAvnMw8ykvEcv0Qtkg0p7FOwP1v9e5Smdcw==", "dev": true, - "peer": true, "engines": { "node": ">=6" } @@ -20709,15 +20701,6 @@ "node": ">=8.3.0" } }, - "node_modules/localtunnel/node_modules/axios": { - "version": "0.21.4", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz", - "integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==", - "dev": true, - "dependencies": { - "follow-redirects": "^1.14.0" - } - }, "node_modules/localtunnel/node_modules/cliui": { "version": "7.0.4", "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", @@ -25645,14 +25628,6 @@ "node": ">= 0.8.0" } }, - "node_modules/serverless-http": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/serverless-http/-/serverless-http-3.1.1.tgz", - "integrity": "sha512-apCJb/xsB/E2IVT23bG9lBGoPv7kTgwhi6b/Reshc181vJv7Df4hCOj0WNQQRpPoKMEZAuGBEzhdIHUaL3pCLQ==", - "engines": { - "node": ">=12.0" - } - }, "node_modules/servify": { "version": "0.1.12", "resolved": "https://registry.npmjs.org/servify/-/servify-0.1.12.tgz", @@ -25948,9 +25923,9 @@ } }, "node_modules/solidity-ast": { - "version": "0.4.45", - "resolved": "https://registry.npmjs.org/solidity-ast/-/solidity-ast-0.4.45.tgz", - "integrity": "sha512-N6uqfaDulVZqjpjru+KvMLjV89M3hesyr/1/t8nkjohRagFSDmDxZvb9viKV98pdwpMzs61Nt2JAApgh0fkL0g==", + "version": "0.4.46", + "resolved": "https://registry.npmjs.org/solidity-ast/-/solidity-ast-0.4.46.tgz", + "integrity": "sha512-MlPZQfPhjWXqh7YxWcBGDXaPZIfMYCOHYoLEhGDWulNwEPIQQZuB7mA9eP17CU0jY/bGR4avCEUVVpvHtT2gbA==", "dev": true }, "node_modules/solidity-coverage": { @@ -32605,7 +32580,6 @@ "version": "2.2.1", "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.2.1.tgz", "integrity": "sha512-e0WHiYql7+9wr4cWMx3TVQrNwejKaEe7/rHNmQmqRjazfOP5W8PB6Jpebb5o6fIapbz9o9+2ipcaTM2ZwDI6lw==", - "dev": true, "engines": { "node": ">= 14" } @@ -32854,43 +32828,6 @@ "node": ">= 10.0.0" } }, - "services/auth": { - "name": "@casimir/auth", - "version": "0.0.1", - "dependencies": { - "cors": "^2.8.5", - "ethers": "^5.7.2", - "express": "^4.18.1", - "serverless-http": "^3.0.1" - }, - "devDependencies": { - "@nomiclabs/hardhat-ethers": "^2.0.6", - "@nomiclabs/hardhat-waffle": "^2.0.3", - "@types/aws-lambda": "8.10.97", - "@types/chai": "^4.3.3", - "@types/cors": "^2.8.12", - "@types/express": "^4.17.13", - "@types/mocha": "^10.0.0", - "@types/node": "^17.0.38", - "chai": "^4.3.6", - "esbuild": "^0.15.9", - "hardhat": "^2.12.2", - "mocha": "^10.0.0", - "ts-node": "^10.9.1" - } - }, - "services/auth/node_modules/@types/mocha": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-10.0.1.tgz", - "integrity": "sha512-/fvYntiO1GeICvqbQ3doGDIP97vWmvFt83GKguJ6prmQM2iXZfFcq6YE8KteFyRtX2/h5Hf91BYvPodJKFYv5Q==", - "dev": true - }, - "services/auth/node_modules/@types/node": { - "version": "17.0.45", - "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.45.tgz", - "integrity": "sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==", - "dev": true - }, "services/crawler": { "name": "@casimir/crawler", "dependencies": { @@ -34011,6 +33948,29 @@ "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.45.tgz", "integrity": "sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==", "dev": true + }, + "services/users": { + "name": "@casimir/users", + "version": "0.0.1", + "dependencies": { + "cors": "^2.8.5", + "ethers": "^5.7.2", + "express": "^4.18.1" + }, + "devDependencies": { + "@types/cors": "^2.8.12", + "@types/express": "^4.17.13", + "@types/node": "^17.0.38", + "chai": "^4.3.6", + "esbuild": "^0.15.9", + "ts-node-dev": "^2.0.0" + } + }, + "services/users/node_modules/@types/node": { + "version": "17.0.45", + "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.45.tgz", + "integrity": "sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==", + "dev": true } }, "dependencies": { @@ -34024,9 +33984,9 @@ } }, "@aws-cdk/asset-awscli-v1": { - "version": "2.2.74", - "resolved": "https://registry.npmjs.org/@aws-cdk/asset-awscli-v1/-/asset-awscli-v1-2.2.74.tgz", - "integrity": "sha512-YoLl74xG1q5byb7iY2enz809j9Vc4aAAe+w0OsGZdRPR1iXipnPXLGGJxiM3uCB8UNIfqzs+gw8HMU9tECsBVA==" + "version": "2.2.78", + "resolved": "https://registry.npmjs.org/@aws-cdk/asset-awscli-v1/-/asset-awscli-v1-2.2.78.tgz", + "integrity": "sha512-RaQD7ZNxndo3KvPOX003sbG4GbDOVVbaDVUPbbH8u/GZ31fi1FDPD0YpWfQ2cp976jtJilPP5D6TcQj6+ejL6w==" }, "@aws-cdk/asset-kubectl-v20": { "version": "2.1.1", @@ -34034,9 +33994,9 @@ "integrity": "sha512-U1ntiX8XiMRRRH5J1IdC+1t5CE89015cwyt5U63Cpk0GnMlN5+h9WsWMlKlPXZR4rdq/m806JRlBMRpBUB2Dhw==" }, "@aws-cdk/asset-node-proxy-agent-v5": { - "version": "2.0.63", - "resolved": "https://registry.npmjs.org/@aws-cdk/asset-node-proxy-agent-v5/-/asset-node-proxy-agent-v5-2.0.63.tgz", - "integrity": "sha512-2FC27PQC6Twy9MIVGhb44F2JuWgyF+cwWBbpB/sbVAFY72RmYA3GmDJpvjjrWBsXjPVZ+sUq9e2wn9/V15mh6g==" + "version": "2.0.64", + "resolved": "https://registry.npmjs.org/@aws-cdk/asset-node-proxy-agent-v5/-/asset-node-proxy-agent-v5-2.0.64.tgz", + "integrity": "sha512-pUG6YX1JTKTMca7YF8D+sCndDQvv5jOS9N+bvsrSVhS0LX499XdPOuKwnM4MZNGV9iEn8xqNlMJPYFdEp1nQaw==" }, "@aws-cdk/aws-glue-alpha": { "version": "2.33.0-alpha.0", @@ -34212,13 +34172,13 @@ } }, "@aws-sdk/client-athena": { - "version": "3.272.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-athena/-/client-athena-3.272.0.tgz", - "integrity": "sha512-BZCR7noLGogFDbk0Z4clFe6Xdml0EhTvItpYGanKLtcDkpyh9x55/e46p0zo9er6LTQWLNnz/e6QdlID7RCmuA==", + "version": "3.276.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-athena/-/client-athena-3.276.0.tgz", + "integrity": "sha512-jVXEwCt2rUbyKIQxGyaQHkN2K5Nhuh2ZfhNsowWlUZFNqbD6gjW3dhkJURi3eNuhvE4TBr301nxIqMqIhDkzUw==", "requires": { "@aws-crypto/sha256-browser": "3.0.0", "@aws-crypto/sha256-js": "3.0.0", - "@aws-sdk/client-sts": "3.272.0", + "@aws-sdk/client-sts": "3.276.0", "@aws-sdk/config-resolver": "3.272.0", "@aws-sdk/credential-provider-node": "3.272.0", "@aws-sdk/fetch-http-handler": "3.272.0", @@ -34255,13 +34215,13 @@ } }, "@aws-sdk/client-cognito-identity": { - "version": "3.272.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-cognito-identity/-/client-cognito-identity-3.272.0.tgz", - "integrity": "sha512-uMjRWcNvX7SoGaVn0mXWD43+Z1awPahQwGW3riDLfXHZdOgw2oFDhD3Jg5jQ8OzQLUfDvArhE3WyZwlS4muMuQ==", + "version": "3.276.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-cognito-identity/-/client-cognito-identity-3.276.0.tgz", + "integrity": "sha512-haFxr8QKNxoRLIWyawc4EfEN6ep4yrWv5e5KWzbulJaw6QwLKmTCLyv09mScbk1FUgpn1MaIy2mJiijiu2RJJQ==", "requires": { "@aws-crypto/sha256-browser": "3.0.0", "@aws-crypto/sha256-js": "3.0.0", - "@aws-sdk/client-sts": "3.272.0", + "@aws-sdk/client-sts": "3.276.0", "@aws-sdk/config-resolver": "3.272.0", "@aws-sdk/credential-provider-node": "3.272.0", "@aws-sdk/fetch-http-handler": "3.272.0", @@ -34297,14 +34257,14 @@ } }, "@aws-sdk/client-s3": { - "version": "3.272.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-s3/-/client-s3-3.272.0.tgz", - "integrity": "sha512-KxlVhTHfmcm3HlAP5+vY1cuQt60AaYOISp1ccYOPsww7Ly7fbDnbov0AV9bcwlLLVcfZFWQYJqH+Gvk2SpyXFQ==", + "version": "3.276.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-s3/-/client-s3-3.276.0.tgz", + "integrity": "sha512-9cwrYeMTx9a9MUWSxBr2i87NACEw3Vc8ALnDYZSvhps8UivdgZ1v3zN8c0v/g/3RrJJNco2HCs9je+lOPRvq3w==", "requires": { "@aws-crypto/sha1-browser": "3.0.0", "@aws-crypto/sha256-browser": "3.0.0", "@aws-crypto/sha256-js": "3.0.0", - "@aws-sdk/client-sts": "3.272.0", + "@aws-sdk/client-sts": "3.276.0", "@aws-sdk/config-resolver": "3.272.0", "@aws-sdk/credential-provider-node": "3.272.0", "@aws-sdk/eventstream-serde-browser": "3.272.0", @@ -34353,18 +34313,18 @@ "@aws-sdk/util-utf8": "3.254.0", "@aws-sdk/util-waiter": "3.272.0", "@aws-sdk/xml-builder": "3.201.0", - "fast-xml-parser": "4.0.11", + "fast-xml-parser": "4.1.2", "tslib": "^2.3.1" } }, "@aws-sdk/client-secrets-manager": { - "version": "3.272.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-secrets-manager/-/client-secrets-manager-3.272.0.tgz", - "integrity": "sha512-dKTl+vFyo7Sqy63AxRO3D2aSnwUK9yQajfWzN9Fhu7z2/iit11t5oaTPndSmAwHpFY9+YySdwqtYUGu3413rUA==", + "version": "3.276.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-secrets-manager/-/client-secrets-manager-3.276.0.tgz", + "integrity": "sha512-7BNOkNp9xZk3nDfA6oRo3HxDIzfA1JGDGgRMkIAYZZnK8Cjy0pWzoamYtK85QDvWYgsmHs7m3ue+Wx+VhMOZPw==", "requires": { "@aws-crypto/sha256-browser": "3.0.0", "@aws-crypto/sha256-js": "3.0.0", - "@aws-sdk/client-sts": "3.272.0", + "@aws-sdk/client-sts": "3.276.0", "@aws-sdk/config-resolver": "3.272.0", "@aws-sdk/credential-provider-node": "3.272.0", "@aws-sdk/fetch-http-handler": "3.272.0", @@ -34479,9 +34439,9 @@ } }, "@aws-sdk/client-sts": { - "version": "3.272.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.272.0.tgz", - "integrity": "sha512-kigxCxURp3WupufGaL/LABMb7UQfzAQkKcj9royizL3ItJ0vw5kW/JFrPje5IW1mfLgdPF7PI9ShOjE0fCLTqA==", + "version": "3.276.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.276.0.tgz", + "integrity": "sha512-J6FR4tYa/WdDdwWAKhw/mXQXKWUaZZQpMiyFEbFPQyURSWu3u17nv97NUdvVOgCth48H6Wb6a4ksssYy4K9tFQ==", "requires": { "@aws-crypto/sha256-browser": "3.0.0", "@aws-crypto/sha256-js": "3.0.0", @@ -34517,7 +34477,7 @@ "@aws-sdk/util-user-agent-browser": "3.272.0", "@aws-sdk/util-user-agent-node": "3.272.0", "@aws-sdk/util-utf8": "3.254.0", - "fast-xml-parser": "4.0.11", + "fast-xml-parser": "4.1.2", "tslib": "^2.3.1" } }, @@ -34534,11 +34494,11 @@ } }, "@aws-sdk/credential-provider-cognito-identity": { - "version": "3.272.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-cognito-identity/-/credential-provider-cognito-identity-3.272.0.tgz", - "integrity": "sha512-rVx0rtQjbiYCM0nah2rB/2ut2YJYPpRr1AbW/Hd4r/PI+yiusrmXAwuT4HIW2yr34zsQMPi1jZ3WHN9Rn9mzlg==", + "version": "3.276.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-cognito-identity/-/credential-provider-cognito-identity-3.276.0.tgz", + "integrity": "sha512-LaIQNt2F+XWvX031MzYNoHWuqjpyomsdI+1y6KaeC/9z51Y+usmB/ay1jYK/kUmXl/NcBmZR5gPELZu7P6WtaQ==", "requires": { - "@aws-sdk/client-cognito-identity": "3.272.0", + "@aws-sdk/client-cognito-identity": "3.276.0", "@aws-sdk/property-provider": "3.272.0", "@aws-sdk/types": "3.272.0", "tslib": "^2.3.1" @@ -34634,14 +34594,14 @@ } }, "@aws-sdk/credential-providers": { - "version": "3.272.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-providers/-/credential-providers-3.272.0.tgz", - "integrity": "sha512-ucd6Xq6aBMf+nM4uz5zkjL11mwaE5BV1Q4hkulaGu2v1dRA8n6zhLJk/sb4hOJ7leelqMJMErlbQ2T3MkYvlJQ==", + "version": "3.276.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-providers/-/credential-providers-3.276.0.tgz", + "integrity": "sha512-pgKP0dRMP48eDfXIcGENKzi6CIA7IVUAqFdWLY1bonq7DGSLveBvD7hkxu1ZXVp6HlucLiGtncgGrRKBmtK6Jg==", "requires": { - "@aws-sdk/client-cognito-identity": "3.272.0", + "@aws-sdk/client-cognito-identity": "3.276.0", "@aws-sdk/client-sso": "3.272.0", - "@aws-sdk/client-sts": "3.272.0", - "@aws-sdk/credential-provider-cognito-identity": "3.272.0", + "@aws-sdk/client-sts": "3.276.0", + "@aws-sdk/credential-provider-cognito-identity": "3.276.0", "@aws-sdk/credential-provider-env": "3.272.0", "@aws-sdk/credential-provider-imds": "3.272.0", "@aws-sdk/credential-provider-ini": "3.272.0", @@ -34767,9 +34727,9 @@ } }, "@aws-sdk/lib-storage": { - "version": "3.272.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/lib-storage/-/lib-storage-3.272.0.tgz", - "integrity": "sha512-HVgPSztekEGXsy0SA9MxEq+ya/HbXpYpLeZpFcdxbvOm0nztlxoQJrTAZC4VsKq64JlVjEP+12QcSIFJVbUwrQ==", + "version": "3.276.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/lib-storage/-/lib-storage-3.276.0.tgz", + "integrity": "sha512-fOlPEaDoMQpLPm8Im+kAF54ldPUI69YbITjtRNTvO0MAizcGCwFMtfPsXWWeUXV9tasgY8cANdb8IMlEcqrA9Q==", "requires": { "@aws-sdk/middleware-endpoint": "3.272.0", "@aws-sdk/smithy-client": "3.272.0", @@ -35788,42 +35748,6 @@ "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", "dev": true }, - "@casimir/auth": { - "version": "file:services/auth", - "requires": { - "@nomiclabs/hardhat-ethers": "^2.0.6", - "@nomiclabs/hardhat-waffle": "^2.0.3", - "@types/aws-lambda": "8.10.97", - "@types/chai": "^4.3.3", - "@types/cors": "^2.8.12", - "@types/express": "^4.17.13", - "@types/mocha": "^10.0.0", - "@types/node": "^17.0.38", - "chai": "^4.3.6", - "cors": "^2.8.5", - "esbuild": "^0.15.9", - "ethers": "^5.7.2", - "express": "^4.18.1", - "hardhat": "^2.12.2", - "mocha": "^10.0.0", - "serverless-http": "^3.0.1", - "ts-node": "^10.9.1" - }, - "dependencies": { - "@types/mocha": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-10.0.1.tgz", - "integrity": "sha512-/fvYntiO1GeICvqbQ3doGDIP97vWmvFt83GKguJ6prmQM2iXZfFcq6YE8KteFyRtX2/h5Hf91BYvPodJKFYv5Q==", - "dev": true - }, - "@types/node": { - "version": "17.0.45", - "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.45.tgz", - "integrity": "sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==", - "dev": true - } - } - }, "@casimir/aws-helpers": { "version": "file:common/aws-helpers", "requires": { @@ -36887,6 +36811,28 @@ "@casimir/types": { "version": "file:common/types" }, + "@casimir/users": { + "version": "file:services/users", + "requires": { + "@types/cors": "^2.8.12", + "@types/express": "^4.17.13", + "@types/node": "^17.0.38", + "chai": "^4.3.6", + "cors": "^2.8.5", + "esbuild": "^0.15.9", + "ethers": "^5.7.2", + "express": "^4.18.1", + "ts-node-dev": "^2.0.0" + }, + "dependencies": { + "@types/node": { + "version": "17.0.45", + "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.45.tgz", + "integrity": "sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==", + "dev": true + } + } + }, "@casimir/web": { "version": "file:apps/web", "requires": { @@ -40334,8 +40280,6 @@ "resolved": "https://registry.npmjs.org/@trufflesuite/bigint-buffer/-/bigint-buffer-1.1.9.tgz", "integrity": "sha512-bdM5cEGCOhDSwminryHJbRmXc1x7dPKg6Pqns3qyTwFlxsqUgxE29lsERS3PlIW1HTjoIGMUqsk1zQQwST1Yxw==", "dev": true, - "optional": true, - "peer": true, "requires": { "node-gyp-build": "4.3.0" } @@ -40426,12 +40370,6 @@ "integrity": "sha512-M2P4Ng26QbAeITiH7w1d7OxtldgfAe0wobpyJzVK/XOb0cUGKU2R4pfAhqcJBXAe2ife5ZOhSv4wk7p+ffURtg==", "dev": true }, - "@types/aws-lambda": { - "version": "8.10.97", - "resolved": "https://registry.npmjs.org/@types/aws-lambda/-/aws-lambda-8.10.97.tgz", - "integrity": "sha512-BZk3qO4R2KN8Ts3eR6CW1n8LI46UOgv1KoDZjo8J9vOQvDeX/rsrv1H0BpEAMcSqZ1mLwTEyAMtlua5tlSn0kw==", - "dev": true - }, "@types/babel__core": { "version": "7.20.0", "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.0.tgz", @@ -40624,9 +40562,9 @@ "integrity": "sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ==" }, "@types/http-proxy": { - "version": "1.17.9", - "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.9.tgz", - "integrity": "sha512-QsbSjA/fSk7xB+UXlCT3wHBy5ai9wOcNDWwZAtud+jXhwOM3l+EYZh8Lng4+/6n8uar0J7xILzqftJdJ/Wdfkw==", + "version": "1.17.10", + "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.10.tgz", + "integrity": "sha512-Qs5aULi+zV1bwKAg5z1PWnDXWmsn+LxIvUGv6E2+OOMYhclZMO+OXd9pYVf2gLykf2I7IV2u7oTHwChPNsvJ7g==", "dev": true, "requires": { "@types/node": "*" @@ -41408,9 +41346,9 @@ } }, "@walletconnect/jsonrpc-utils": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/@walletconnect/jsonrpc-utils/-/jsonrpc-utils-1.0.5.tgz", - "integrity": "sha512-4xdaegX9K6rEdguqCLvudYq2h0KCeTYWnWwNNMhooWnkilT7PrR1kmatpr/HP4l191zyvS33K5VClWhkCTeAxQ==", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/@walletconnect/jsonrpc-utils/-/jsonrpc-utils-1.0.6.tgz", + "integrity": "sha512-snp0tfkjPiDLQp/jrBewI+9SM33GPV4+Gjgldod6XQ7rFyQ5FZjnBxUkY4xWH0+arNxzQSi6v5iDXjCjSaorpg==", "requires": { "@walletconnect/environment": "^1.0.1", "@walletconnect/jsonrpc-types": "^1.0.2", @@ -41588,7 +41526,6 @@ "resolved": "https://registry.npmjs.org/abstract-leveldown/-/abstract-leveldown-6.3.0.tgz", "integrity": "sha512-TU5nlYgta8YrBMNpc9FwQzRbiXsj49gsALsXadbGHt9CROPzX5fB0rWDR5mtdpOOKa5XqRFpbj1QroPAoPzVjQ==", "dev": true, - "peer": true, "requires": { "buffer": "^5.5.0", "immediate": "^3.2.3", @@ -41602,7 +41539,6 @@ "resolved": "https://registry.npmjs.org/level-supports/-/level-supports-1.0.1.tgz", "integrity": "sha512-rXM7GYnW8gsl1vedTJIbzOrRv85c/2uCMpiiCzO2fndd06U/kUXEEU9evYn4zFggBOg36IsBW8LzqIpETwwQzg==", "dev": true, - "peer": true, "requires": { "xtend": "^4.0.2" } @@ -42072,22 +42008,22 @@ "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==" }, "aws-cdk": { - "version": "2.65.0", - "resolved": "https://registry.npmjs.org/aws-cdk/-/aws-cdk-2.65.0.tgz", - "integrity": "sha512-a1xtdf95N7MLPcwCs+IkE6kCD1utLMuDh+1RIyYbX7SYzAjlNJzOXQ7M16kBktt4KflVWseZnYsGbKWJ2DraMw==", + "version": "2.66.0", + "resolved": "https://registry.npmjs.org/aws-cdk/-/aws-cdk-2.66.0.tgz", + "integrity": "sha512-UQ2NJsL+j1I8N0/rabORBC74Q84vZD+wK5K8tfX7a7hwCqqmon7TJ7c3lUsQgVGpbi66grcrDxmm4dXeB6cb0w==", "dev": true, "requires": { "fsevents": "2.3.2" } }, "aws-cdk-lib": { - "version": "2.65.0", - "resolved": "https://registry.npmjs.org/aws-cdk-lib/-/aws-cdk-lib-2.65.0.tgz", - "integrity": "sha512-yTeBe9+Li8ZHZICJc0y1uarbSruc3KIXP1KC7tjVrkg+ye7EE8eJTZm7+PpJd6O0ciPinn/k/dE9gHwUImygGA==", + "version": "2.66.0", + "resolved": "https://registry.npmjs.org/aws-cdk-lib/-/aws-cdk-lib-2.66.0.tgz", + "integrity": "sha512-Qmw+lB8uFO+wJX8czw05ciUJObB5gJ5euOXYXXC9BuFPMy1WTA+HYqgSRvgv2mIEnjQb1zlG05oNalvH24Ha7Q==", "requires": { - "@aws-cdk/asset-awscli-v1": "^2.2.65", + "@aws-cdk/asset-awscli-v1": "^2.2.69", "@aws-cdk/asset-kubectl-v20": "^2.1.1", - "@aws-cdk/asset-node-proxy-agent-v5": "^2.0.54", + "@aws-cdk/asset-node-proxy-agent-v5": "^2.0.58", "@balena/dockerignore": "^1.0.2", "case": "1.6.3", "fs-extra": "^9.1.0", @@ -42206,6 +42142,15 @@ "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.12.0.tgz", "integrity": "sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg==" }, + "axios": { + "version": "0.21.4", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz", + "integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==", + "dev": true, + "requires": { + "follow-redirects": "^1.14.0" + } + }, "babel-jest": { "version": "29.4.3", "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.4.3.tgz", @@ -43634,9 +43579,9 @@ } }, "constructs": { - "version": "10.1.256", - "resolved": "https://registry.npmjs.org/constructs/-/constructs-10.1.256.tgz", - "integrity": "sha512-R9mPHqGo+Y2mkaBeQc2+fTC3SZgr8a39tpy3hXT70yvpbxSrTcqPqukksm7ZltDDr2osLjv5Xwt5x/SqjHtATw==" + "version": "10.1.257", + "resolved": "https://registry.npmjs.org/constructs/-/constructs-10.1.257.tgz", + "integrity": "sha512-Wyg17gM+YE/2TsuPMmS+QyWVZ39fTW77AD+87kSs3M94A+0hIrakPH58kif3Q0FlAVyoUDCZIy/qtTBh2AC+jA==" }, "content-disposition": { "version": "0.5.4", @@ -44535,9 +44480,9 @@ "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" }, "electron-to-chromium": { - "version": "1.4.304", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.304.tgz", - "integrity": "sha512-6c8M+ojPgDIXN2NyfGn8oHASXYnayj+gSEnGeLMKb9zjsySeVB/j7KkNAAG9yDcv8gNlhvFg5REa1N/kQU6pgA==" + "version": "1.4.307", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.307.tgz", + "integrity": "sha512-n54V0t4LyHM2oQiAOmD3qC2peB+orUktXORSnWxqtv3uEMSoUcsq+hoMpU08VEJCNbfgBtzy169P0TcrLuq53A==" }, "elliptic": { "version": "6.5.4", @@ -44569,8 +44514,7 @@ "version": "0.10.0", "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.10.0.tgz", "integrity": "sha512-AGvFfs+d0JKCJQ4o01ASQLGPmSCxgfU9RFXvzPvZdjKK8oscynksuJhWrSTSw7j7Ep/sZct5b5ZhYCi8S/t0HQ==", - "dev": true, - "peer": true + "dev": true }, "emoji-regex": { "version": "8.0.0", @@ -47305,9 +47249,9 @@ "integrity": "sha512-wpYMUmFu5f00Sm0cj2pfivpmawLZ0NKdviQ4w9zJeR8JVtOpOxHmLaJuj0vxvGqMJQWyP/COUkF75/57OKyRag==" }, "fast-xml-parser": { - "version": "4.0.11", - "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.0.11.tgz", - "integrity": "sha512-4aUg3aNRR/WjQAcpceODG1C3x3lFANXRo8+1biqfieHmg9pyMt7qB4lQV/Ta6sJCTbA5vfD8fnA8S54JATiFUA==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.1.2.tgz", + "integrity": "sha512-CDYeykkle1LiA/uqQyNwYpFbyF6Axec6YapmpUP+/RHWIoR1zKjocdvNaTsxCxZzQ6v9MLXaSYm9Qq0thv0DHg==", "requires": { "strnum": "^1.0.5" } @@ -47539,7 +47483,6 @@ "version": "7.0.1", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", - "dev": true, "requires": { "graceful-fs": "^4.1.2", "jsonfile": "^4.0.0", @@ -48995,8 +48938,7 @@ "ignore": { "version": "5.2.4", "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", - "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", - "dev": true + "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==" }, "immediate": { "version": "3.3.0", @@ -50364,9 +50306,7 @@ "jsonschema": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/jsonschema/-/jsonschema-1.4.1.tgz", - "integrity": "sha512-S6cATIPVv1z0IlxdN+zUk5EPjkGCdnhN4wVSBlvoUO1tOLJootbo9CquNJmbIh4yikWHiUedhRYrNPn1arpEmQ==", - "dev": true, - "peer": true + "integrity": "sha512-S6cATIPVv1z0IlxdN+zUk5EPjkGCdnhN4wVSBlvoUO1tOLJootbo9CquNJmbIh4yikWHiUedhRYrNPn1arpEmQ==" }, "JSONStream": { "version": "1.3.5", @@ -50484,8 +50424,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/level-concat-iterator/-/level-concat-iterator-2.0.1.tgz", "integrity": "sha512-OTKKOqeav2QWcERMJR7IS9CUo1sHnke2C0gkSmcR7QuEtFNLLzHQAvnMw8ykvEcv0Qtkg0p7FOwP1v9e5Smdcw==", - "dev": true, - "peer": true + "dev": true }, "level-errors": { "version": "2.0.1", @@ -50835,15 +50774,6 @@ "yargs": "17.1.1" }, "dependencies": { - "axios": { - "version": "0.21.4", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz", - "integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==", - "dev": true, - "requires": { - "follow-redirects": "^1.14.0" - } - }, "cliui": { "version": "7.0.4", "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", @@ -54439,11 +54369,6 @@ "send": "0.18.0" } }, - "serverless-http": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/serverless-http/-/serverless-http-3.1.1.tgz", - "integrity": "sha512-apCJb/xsB/E2IVT23bG9lBGoPv7kTgwhi6b/Reshc181vJv7Df4hCOj0WNQQRpPoKMEZAuGBEzhdIHUaL3pCLQ==" - }, "servify": { "version": "0.1.12", "resolved": "https://registry.npmjs.org/servify/-/servify-0.1.12.tgz", @@ -54662,9 +54587,9 @@ } }, "solidity-ast": { - "version": "0.4.45", - "resolved": "https://registry.npmjs.org/solidity-ast/-/solidity-ast-0.4.45.tgz", - "integrity": "sha512-N6uqfaDulVZqjpjru+KvMLjV89M3hesyr/1/t8nkjohRagFSDmDxZvb9viKV98pdwpMzs61Nt2JAApgh0fkL0g==", + "version": "0.4.46", + "resolved": "https://registry.npmjs.org/solidity-ast/-/solidity-ast-0.4.46.tgz", + "integrity": "sha512-MlPZQfPhjWXqh7YxWcBGDXaPZIfMYCOHYoLEhGDWulNwEPIQQZuB7mA9eP17CU0jY/bGR4avCEUVVpvHtT2gbA==", "dev": true }, "solidity-coverage": { @@ -59678,8 +59603,7 @@ "yaml": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.2.1.tgz", - "integrity": "sha512-e0WHiYql7+9wr4cWMx3TVQrNwejKaEe7/rHNmQmqRjazfOP5W8PB6Jpebb5o6fIapbz9o9+2ipcaTM2ZwDI6lw==", - "dev": true + "integrity": "sha512-e0WHiYql7+9wr4cWMx3TVQrNwejKaEe7/rHNmQmqRjazfOP5W8PB6Jpebb5o6fIapbz9o9+2ipcaTM2ZwDI6lw==" }, "yargs": { "version": "17.7.1", diff --git a/package.json b/package.json index f1337a735..2e0dfb654 100644 --- a/package.json +++ b/package.json @@ -12,7 +12,7 @@ "scripts": { "clean": "npm exec --workspaces -- npx rimraf node_modules && npx rimraf node_modules package-lock.json && npm i", "curl": "curl -H 'Content-Type: application/json' -d \"$npm_config_body\" \"$npm_config_url\"", - "deploy": "npx esno -r dotenv/config scripts/cdk/deploy.ts", + "deploy:cdk": "npx esno -r dotenv/config scripts/cdk/deploy.ts", "dev": "npx esno -r dotenv/config scripts/local/dev.ts --fork \"$npm_config_fork\" --ledger \"$npm_config_ledger\" --mock \"$npm_config_mock\" --network \"$npm_config_network\" --trezor \"$npm_config_trezor\" --external \"$npm_config_external\"", "dev:crawler": "scripts/crawler/dev -c \"$npm_config_chains\" -f \"$npm_config_fork\" -n \"$npm_config_network\" -u \"$npm_config_upload\"", "dev:ethereum": "npx esno -r dotenv/config scripts/ethereum/dev.ts --execution \"$npm_config_execution\" --fork \"$npm_config_fork\"", @@ -20,12 +20,14 @@ "dev:ssv": "scripts/ssv/dev -n \"$npm_config_nodes\"", "docgen": "npm run docgen --workspace @casimir/ethereum", "lint": "eslint --ext .vue,.ts ./ --fix", - "postinstall": "git submodule update --init --recursive && npm exec --workspaces npm run build", + "postinstall": "npm exec --workspaces npm run build", + "preinstall": "git submodule update --init --recursive", "prepare": "husky install", "test": "echo \"Error: no test specified\" && exit 1", - "test:ethereum": "npx esno -r dotenv/config scripts/ethereum/test.ts --fork \"$npm_config_fork\"", - "test:crawler": "scripts/crawler/test -f \"$npm_config_fork\" -n \"$npm_config_network\"", "test:actions": "npx esno -r dotenv/config scripts/actions/test.ts --workflow \"$npm_config_workflow\"", + "test:cdk": "npx esno -r dotenv/config scripts/cdk/test.ts", + "test:crawler": "scripts/crawler/test -f \"$npm_config_fork\" -n \"$npm_config_network\"", + "test:ethereum": "npx esno -r dotenv/config scripts/ethereum/test.ts --fork \"$npm_config_fork\"", "release": "release-it" }, "repository": { diff --git a/scripts/actions/test.ts b/scripts/actions/test.ts index 84d7521e9..75ebd569f 100755 --- a/scripts/actions/test.ts +++ b/scripts/actions/test.ts @@ -1,5 +1,5 @@ import { $, argv, echo } from 'zx' -import { getCredentials } from '@casimir/aws-helpers' +import { loadCredentials } from '@casimir/aws-helpers' /** * Test the GitHub Actions workflows in `.github/workflows` @@ -18,7 +18,7 @@ void async function () { const workflow = workflows.includes(argv.workflow) ? argv.workflow : 'push' /** Get AWS credentials for deployment */ - const { accessKeyId, secretAccessKey } = await getCredentials() + const { accessKeyId, secretAccessKey } = await loadCredentials() /** Get Slack webhook URL for notifications */ const slackWebhookURL = process.env.SLACK_WEBHOOK_URL diff --git a/scripts/cdk/deploy.ts b/scripts/cdk/deploy.ts index 9a07d5903..4637ed8b4 100755 --- a/scripts/cdk/deploy.ts +++ b/scripts/cdk/deploy.ts @@ -1,3 +1,4 @@ +import { getSecret, loadCredentials } from '@casimir/aws-helpers' import { $, echo } from 'zx' /** @@ -7,6 +8,11 @@ import { $, echo } from 'zx' * See https://docs.aws.amazon.com/cdk/api/v2 */ void async function () { + /** Get AWS secrets */ + await loadCredentials() + process.env.AWS_ACCOUNT = await getSecret('casimir-aws-account') + process.env.NODES_IP = await getSecret('casimir-nodes-ip') + /** Prepare the CDK app */ await $`npm run bootstrap --workspace @casimir/cdk` await $`npm run synth --workspace @casimir/cdk` diff --git a/scripts/cdk/test.ts b/scripts/cdk/test.ts new file mode 100644 index 000000000..4ad7fde7f --- /dev/null +++ b/scripts/cdk/test.ts @@ -0,0 +1,20 @@ +import { $, echo } from 'zx' + +/** + * Test a CDK app built for a CF cluster + * + * Further information: + * See https://docs.aws.amazon.com/cdk/api/v2 + */ +void async function () { + /** Configure the environment with fallback default values */ + process.env.PROJECT = process.env.PROJECT || 'casimir' + process.env.STAGE = process.env.STAGE || 'test' + process.env.AWS_REGION = process.env.AWS_REGION || 'us-east-1' + process.env.AWS_ACCOUNT = process.env.AWS_ACCOUNT || '000000000000' + process.env.NODES_IP = process.env.NODES_IP || '123.456.789.012' + + /** Test the CDK app */ + echo('🚀 Testing CDK app') + $`npm run test --workspace @casimir/cdk` +}() \ No newline at end of file diff --git a/scripts/ethereum/dev.ts b/scripts/ethereum/dev.ts index 462b90808..dc048669b 100644 --- a/scripts/ethereum/dev.ts +++ b/scripts/ethereum/dev.ts @@ -12,9 +12,6 @@ import { getSecret } from '@casimir/aws-helpers' * - https://hardhat.org/hardhat-network/docs/overview */ void async function () { - // Fetch remote submodule code - $`git submodule update --init --recursive` - // Get shared seed const seed = await getSecret('consensus-networks-bip39-seed') process.env.BIP39_SEED = seed diff --git a/scripts/ethereum/test.ts b/scripts/ethereum/test.ts index 51f0923b3..488c28392 100755 --- a/scripts/ethereum/test.ts +++ b/scripts/ethereum/test.ts @@ -11,9 +11,6 @@ import { getSecret } from '@casimir/aws-helpers' * - https://hardhat.org/hardhat-network/docs/overview */ void async function () { - // Fetch remote submodule code - $`git submodule update --init --recursive` - const seed = await getSecret('consensus-networks-bip39-seed') process.env.BIP39_SEED = seed echo(chalk.bgBlackBright('Your mnemonic is ') + chalk.bgBlue(seed)) diff --git a/scripts/ledger/emulate b/scripts/ledger/emulate index e9ce16ec8..7cc3988a7 100755 --- a/scripts/ledger/emulate +++ b/scripts/ledger/emulate @@ -38,9 +38,6 @@ if [ -z "$app" ]; then echo "app is not set, using default app $app" fi -# Fetch submodules for speculos and ledger apps -git submodule update --init --recursive - resource_path=scripts/ledger/resources if [ ! -f "$resource_path/speculos/apps/$app.elf" ]; then diff --git a/scripts/local/dev.ts b/scripts/local/dev.ts index aac705773..aed42570a 100644 --- a/scripts/local/dev.ts +++ b/scripts/local/dev.ts @@ -1,34 +1,7 @@ import { $, argv, chalk, echo } from 'zx' import { getSecret } from '@casimir/aws-helpers' -import { pascalCase } from '@casimir/string-helpers' import { parseStdout } from '@casimir/zx-helpers' -/** Local apps and configuration */ -const apps = { - web: { - chains: ['ethereum'], - infrastructure: 'cdk', - services: ['auth'] - } -} - -const forks = { - ethereum: { - mainnet: 'mainnet', - testnet: 'goerli' - } -} - -/** The name of the CDK project */ -const project = process.env.PROJECT || 'casimir' - -/** The default development stage of the CDK project */ -const stage = process.env.STAGE || 'dev' - -/** Pascal case representations of CDK variables */ -const Project = pascalCase(project as string) -const Stage = pascalCase(stage as string) - /** * Run a Casimir dev server * @@ -42,12 +15,28 @@ const Stage = pascalCase(stage as string) * --external: externalize all rpc urls (optional, i.e., --external=true) */ void async function () { - /** Fetch remote submodule code */ - $`git submodule update --init --recursive` + + /** Local apps and configuration */ + const apps = { + web: { + chains: ['ethereum'], + infrastructure: 'cdk', + services: ['users'] + } + } + + /** Chain forks */ + const forks = { + ethereum: { + mainnet: 'mainnet', + testnet: 'goerli' + } + } /** Set project-wide variables */ - process.env.PROJECT = project - process.env.STAGE = stage + process.env.PROJECT = process.env.PROJECT || 'casimir' + process.env.STAGE = process.env.STAGE || 'dev' + process.env.PUBLIC_STAGE = process.env.STAGE // Pass stage to client apps /** Todo get network/fork nonce based on selection and predict address */ process.env.PUBLIC_SSV_ADDRESS = '0x07E05700CB4E946BA50244e27f01805354cD8eF0' // '0xaaf5751d370d2fD5F1D5642C2f88bbFa67a29301' @@ -73,24 +62,14 @@ void async function () { /** Default to no trezor emulator */ const trezor = argv.trezor === 'true' - const { chains, infrastructure, services } = apps[app as keyof typeof apps] + const { chains, services } = apps[app as keyof typeof apps] if (mock) { - - /** Skip bootstrap if stack exists for current stage (and bootstrap throws) */ - try { - await $`npm run bootstrap --workspace @casimir/cdk` - } catch { - echo(chalk.bgBlackBright('CDK Toolkit stack for ') + chalk.bgBlue(`${Project}${Stage}`) + chalk.bgBlackBright(' was already bootstrapped. Disregard any CDK errors listed above this line.')) - } - await $`npm run synth --workspace @casimir/cdk` - let port = 4000 for (const service of services) { process.env[`PUBLIC_${service.toUpperCase()}_PORT`] = `${port}` - $`npm run watch --workspace @casimir/${service}` - const Service = pascalCase(service) + $`npm run dev --workspace @casimir/${service}` try { if (parseStdout(await $`lsof -ti:${port}`)) { @@ -100,13 +79,6 @@ void async function () { console.log(`Port ${port} is available.`) } - $`sam local start-api \ - --warm-containers "LAZY" \ - --port ${port} \ - --template infrastructure/${infrastructure}/cdk.out/${Project}${Service}Stack${Stage}.template.json \ - --log-file "services/${service}/mock-logs.txt" \ - --profile ${process.env.PROFILE || 'consensus-networks-dev'}` - ++port } } diff --git a/scripts/trezor/emulate b/scripts/trezor/emulate index 4e15144f4..c72c7b600 100755 --- a/scripts/trezor/emulate +++ b/scripts/trezor/emulate @@ -12,9 +12,6 @@ else echo "PROFILE is not set, using default profile '$PROFILE'" fi -# Fetch submodules for trezor apps -git submodule update --init --recursive - # Todo programmatically launch emulator with seed # # Get the bip39 seed from AWS # seed_secret_id=consensus-networks-bip39-seed diff --git a/services/auth/build.js b/services/auth/build.js deleted file mode 100644 index 1f6354823..000000000 --- a/services/auth/build.js +++ /dev/null @@ -1,36 +0,0 @@ -/* eslint-disable @typescript-eslint/no-var-requires */ -const esbuild = require('esbuild') -const { spawn } = require('child_process') - -const esbuildArgs = process.argv.slice(2) -const shouldWatch = esbuildArgs.includes('--watch') - -esbuild.build({ - entryPoints: ['src/index.ts'], - outfile: 'dist/index.js', - bundle: true, - minify: true, - sourcemap: true, - platform: 'node', - target: 'esnext', - watch: shouldWatch ? { - onRebuild(error, buildResult) { - if (error) console.error('Watch build failed', error) - else { - console.log('Watch build succeeded', buildResult) - spawn('npm', ['run', 'synth', '--workspace', '@casimir/cdk'], { stdio: 'inherit' }) - } - handleBuildProcessClose(buildResult) - } - } : false -}).then(buildResult => { - console.log('Build succeeded', buildResult) - handleBuildProcessClose(buildResult) -}) - -function handleBuildProcessClose(buildProcess) { - process.on('SIGINT', () => { - console.log('...Stopping esbuild watch process') - buildProcess.stop() - }) -} \ No newline at end of file diff --git a/services/auth/dist/index.js b/services/auth/dist/index.js new file mode 100644 index 000000000..d0b126dba --- /dev/null +++ b/services/auth/dist/index.js @@ -0,0 +1,304 @@ +"use strict";var TT=Object.create;var Vl=Object.defineProperty;var kT=Object.getOwnPropertyDescriptor;var CT=Object.getOwnPropertyNames;var OT=Object.getPrototypeOf,PT=Object.prototype.hasOwnProperty;var P=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports),MT=(t,e)=>{for(var r in e)Vl(t,r,{get:e[r],enumerable:!0})},Vg=(t,e,r,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of CT(e))!PT.call(t,i)&&i!==r&&Vl(t,i,{get:()=>e[i],enumerable:!(n=kT(e,i))||n.enumerable});return t};var Ti=(t,e,r)=>(r=t!=null?TT(OT(t)):{},Vg(e||!t||!t.__esModule?Vl(r,"default",{value:t,enumerable:!0}):r,t)),BT=t=>Vg(Vl({},"__esModule",{value:!0}),t);var Qg=P((iW,Zg)=>{"use strict";Zg.exports=async function(e,r,...n){return await new Promise((i,a)=>{if(e.finished||e.complete){i();return}let o=!1;function c(u){o||(o=!0,e.removeListener("error",c),e.removeListener("end",c),e.removeListener("finish",c),u?a(u):i())}e.once("error",c),e.once("end",c),e.once("finish",c)}),typeof r=="function"?await r(e,...n):typeof r=="object"&&r!==null&&Object.assign(e,r),e}});var Ql=P((aW,e1)=>{"use strict";var FT=require("http"),Wg=`\r +\r +`,Zl=Symbol(),Xc=Symbol();function LT(t){if(Buffer.isBuffer(t))return t.toString("utf8");if(typeof t=="string")return t;throw new Error(`response.write() of unexpected type: ${typeof t}`)}function Yg(t,e){if(Buffer.isBuffer(e)||typeof e=="string"||e instanceof Uint8Array)t[Zl].push(Buffer.from(e));else throw new Error(`response.write() of unexpected type: ${typeof e}`)}e1.exports=class $g extends FT.ServerResponse{static from(e){let r=new $g(e);return r.statusCode=e.statusCode,r[Xc]=e.headers,r[Zl]=[Buffer.from(e.body)],r.end(),r}static body(e){return Buffer.concat(e[Zl])}static headers(e){let r=typeof e.getHeaders=="function"?e.getHeaders():e._headers;return Object.assign(r,e[Xc])}get headers(){return this[Xc]}setHeader(e,r){this._wroteHeader?this[Xc][e]=r:super.setHeader(e,r)}writeHead(e,r,n){let i=typeof r=="string"?n:r;for(let a in i)if(this.setHeader(a,i[a]),!this._wroteHeader)break;super.writeHead(e,r,n)}constructor({method:e}){super({method:e}),this[Zl]=[],this[Xc]={},this.useChunkedEncodingByDefault=!1,this.chunkedEncoding=!1,this._header="",this.assignSocket({_writableState:{},writable:!0,on:Function.prototype,removeListener:Function.prototype,destroy:Function.prototype,cork:Function.prototype,uncork:Function.prototype,write:(r,n,i)=>{if(typeof n=="function"&&(i=n,n=null),this._header===""||this._wroteHeader)Yg(this,r);else{let a=LT(r),o=a.indexOf(Wg);if(o!==-1){let c=a.slice(o+Wg.length);c&&Yg(this,c),this._wroteHeader=!0}}typeof i=="function"&&i()}}),this.once("finish",()=>{this.emit("close")})}}});var t1=P((oW,r1)=>{"use strict";var RT=require("http"),B0=Ql();function Qi(t){return e=>{let r=new B0(e);return t(e,r),r}}r1.exports=function(e){if(e instanceof RT.Server)return r=>{let n=new B0(r);return e.emit("request",r,n),n};if(typeof e.callback=="function")return Qi(e.callback());if(typeof e.handle=="function")return Qi((r,n)=>{e.handle(r,n)});if(typeof e.handler=="function")return Qi((r,n)=>{e.handler(r,n)});if(typeof e._onRequest=="function")return Qi((r,n)=>{e._onRequest(r,n)});if(typeof e=="function")return Qi(e);if(e.router&&typeof e.router.route=="function")return Qi((r,n)=>{let{url:i,method:a,headers:o,body:c}=r;e.router.route({url:i,method:a,headers:o,body:c},n)});if(e._core&&typeof e._core._dispatch=="function")return Qi(e._core._dispatch({app:e}));if(typeof e.inject=="function")return async r=>{let{method:n,url:i,headers:a,body:o}=r,c=await e.inject({method:n,url:i,headers:a,payload:o});return B0.from(c)};if(typeof e.main=="function")return Qi(e.main);throw new Error("Unsupported framework")}});var s1=P((sW,o1)=>{"use strict";function n1(t="/",e){if(e){let r=t.indexOf(e);if(r>-1)return t.substr(r+e.length)||"/"}return t}function a1(t){return typeof t=="string"||t instanceof String}function i1(t){if(!a1(t))return t;let e;try{e=decodeURIComponent(t.replace(/[+]/g,"%20"))}catch{e=t.replace(/[+]/g,"%20")}return e}function Wl(t){if(a1(t))return i1(t);if(Array.isArray(t)){let e=[];for(let r in t)e.push(Wl(t[r]));return e}else if(t instanceof Object){let e={};for(let r of Object.keys(t))e[i1(r)]=Wl(t[r]);return e}return t}o1.exports=function(e,r){let n=e||{};return n.requestContext=n.requestContext||{},n.body=n.body||"",n.headers=n.headers||{},"elb"in n.requestContext&&(n.multiValueQueryStringParameters&&(n.multiValueQueryStringParameters=Wl(n.multiValueQueryStringParameters)),n.queryStringParameters&&(n.queryStringParameters=Wl(n.queryStringParameters))),n.version==="2.0"?(n.requestContext.authorizer=n.requestContext.authorizer||{},n.requestContext.http.method=n.requestContext.http.method||"GET",n.rawPath=n1(n.requestPath||n.rawPath,r.basePath)):(n.requestContext.identity=n.requestContext.identity||{},n.httpMethod=n.httpMethod||"GET",n.path=n1(n.requestPath||n.path,r.basePath)),n}});var F0=P((uW,c1)=>{"use strict";var IT=require("http");c1.exports=class extends IT.IncomingMessage{constructor({method:e,url:r,headers:n,body:i,remoteAddress:a}){super({encrypted:!0,readable:!1,remoteAddress:a,address:()=>({port:443}),end:Function.prototype,destroy:Function.prototype}),typeof n["content-length"]>"u"&&(n["content-length"]=Buffer.byteLength(i)),Object.assign(this,{ip:a,complete:!0,httpVersion:"1.1",httpVersionMajor:"1",httpVersionMinor:"1",method:e,headers:n,body:i,url:r}),this._read=()=>{this.push(i),this.push(null)}}}});var f1=P((lW,l1)=>{"use strict";var u1=require("url"),NT=F0();function DT(t){return t.version==="2.0"?t.requestContext.http.method:t.httpMethod}function JT(t){return t.version==="2.0"?t.requestContext.http.sourceIp:t.requestContext.identity.sourceIp}function qT(t){let e=t.version==="2.0"&&Array.isArray(t.cookies)?{cookie:t.cookies.join("; ")}:{};return t.multiValueHeaders?Object.keys(t.multiValueHeaders).reduce((r,n)=>(r[n.toLowerCase()]=t.multiValueHeaders[n].join(", "),r),e):Object.keys(t.headers).reduce((r,n)=>(r[n.toLowerCase()]=t.headers[n],r),e)}function jT(t){let e=typeof t.body;if(Buffer.isBuffer(t.body))return t.body;if(e==="string")return Buffer.from(t.body,t.isBase64Encoded?"base64":"utf8");if(e==="object")return Buffer.from(JSON.stringify(t.body));throw new Error(`Unexpected event.body type: ${typeof t.body}`)}function UT(t){if(t.version==="2.0")return u1.format({pathname:t.rawPath,search:t.rawQueryString});let e=t.multiValueQueryStringParameters||{};return t.queryStringParameters&&Object.keys(t.queryStringParameters).forEach(r=>{Array.isArray(e[r])?e[r].includes(t.queryStringParameters[r])||e[r].push(t.queryStringParameters[r]):e[r]=[t.queryStringParameters[r]]}),u1.format({pathname:t.path,query:e})}l1.exports=(t,e,r)=>{let n=DT(t),i=JT(t),a=qT(t),o=jT(t),c=UT(t);if(typeof r.requestId=="string"&&r.requestId.length>0){let s=r.requestId.toLowerCase(),f=a[s]||t.requestContext.requestId;f&&(a[s]=f)}let u=new NT({method:n,headers:a,body:o,remoteAddress:i,url:c});return u.requestContext=t.requestContext,u.apiGateway={event:t,context:e},u}});var p1=P((fW,d1)=>{"use strict";var HT=["gzip","deflate","br"],zT=(process.env.BINARY_CONTENT_TYPES||"").split(",");function GT(t){let e=t["content-encoding"];if(typeof e=="string")return e.split(",").some(r=>HT.some(n=>r.indexOf(n)!==-1))}function XT(t,e){let r=[].concat(e.binary?e.binary:zT).map(i=>new RegExp(`^${i.replace(/\*/g,".*")}$`)),n=(t["content-type"]||"").split(";")[0];return!!n&&r.some(i=>i.test(n))}d1.exports=function(e,r){return r.binary===!1?!1:r.binary===!0?!0:typeof r.binary=="function"?r.binary(e):GT(e)||XT(e,r)}});var v1=P((dW,h1)=>{"use strict";h1.exports=function(e){return Object.keys(e).reduce((r,n)=>{let i=e[n];return Array.isArray(i)?(r.multiValueHeaders[n]=i,n.toLowerCase()!=="set-cookie"&&(r.headers[n]=i.join(", "))):r.headers[n]=i==null?"":i.toString(),r},{headers:{},multiValueHeaders:{}})}});var b1=P((pW,m1)=>{"use strict";var KT=p1(),L0=Ql(),VT=v1();m1.exports=(t,e,r)=>{let{statusCode:n}=e,{headers:i,multiValueHeaders:a}=VT(L0.headers(e)),o=[];a["set-cookie"]&&(o=a["set-cookie"]);let c=KT(i,r),u=c?"base64":"utf8",s=L0.body(e).toString(u);if(i["transfer-encoding"]==="chunked"||e.chunkedEncoding){let m=L0.body(e).toString().split(`\r +`),w=[];for(let T=0;T{var ZT=s1(),QT=f1(),WT=b1();g1.exports=t=>e=>async(r,n={})=>{let i=ZT(r,t),a=QT(i,n,t),o=await e(a,i,n);return WT(i,o,t)}});var w1=P((vW,y1)=>{"use strict";function YT({requestPath:t,url:e}){return t||(typeof e=="string"?e:"/")}function $T(t){let e={};e.identity={};let r=t.headers["x-forwarded-for"],n=t.headers["client-ip"],i=r||n||"";return i&&(e.identity.sourceIp=i.split(":")[0]),e}y1.exports=function(e,r){let n=e||{};if(n.requestContext=$T(e),n.method=n.method||"GET",n.url=YT(n),n.body=n.body||"",n.headers=n.headers||{},r.basePath){let i=n.url.indexOf(r.basePath);i>-1&&(n.url=n.url.substr(i+r.basePath.length))}return n}});var E1=P((mW,A1)=>{"use strict";var ek=require("url"),rk=F0();function tk(t){return Object.keys(t.headers).reduce((e,r)=>(e[r.toLowerCase()]=t.headers[r],e),{})}function nk(t){let e=typeof t.rawBody;if(Buffer.isBuffer(t.rawBody))return t.rawBody;if(e==="string")return Buffer.from(t.rawBody,"utf8");if(e==="object")return Buffer.from(JSON.stringify(t.rawBody));throw new Error(`Unexpected request.body type: ${typeof t.rawBody}`)}A1.exports=t=>{let e=t.method,r=t.query,n=tk(t),i=nk(t),a=new rk({method:e,headers:n,body:i,url:ek.format({pathname:t.url,query:r})});return a.requestContext=t.requestContext,a}});var _1=P((bW,S1)=>{"use strict";var ik=["gzip","deflate","br"],ak=(process.env.BINARY_CONTENT_TYPES||"").split(",");function ok(t){let e=t["content-encoding"];if(typeof e=="string")return e.split(",").some(r=>ik.some(n=>r.indexOf(n)!==-1))}function sk(t,e){let r=[].concat(e.binary?e.binary:ak).map(i=>new RegExp(`^${i.replace(/\*/g,".*")}$`)),n=(t["content-type"]||"").split(";")[0];return!!n&&r.some(i=>i.test(n))}S1.exports=function(e,r){return r.binary===!1?!1:r.binary===!0?!0:typeof r.binary=="function"?r.binary(e):ok(e)||sk(e,r)}});var T1=P((gW,ck)=>{ck.exports={variations:["set-cookie","Set-cookie","sEt-cookie","SEt-cookie","seT-cookie","SeT-cookie","sET-cookie","SET-cookie","set-Cookie","Set-Cookie","sEt-Cookie","SEt-Cookie","seT-Cookie","SeT-Cookie","sET-Cookie","SET-Cookie","set-cOokie","Set-cOokie","sEt-cOokie","SEt-cOokie","seT-cOokie","SeT-cOokie","sET-cOokie","SET-cOokie","set-COokie","Set-COokie","sEt-COokie","SEt-COokie","seT-COokie","SeT-COokie","sET-COokie","SET-COokie","set-coOkie","Set-coOkie","sEt-coOkie","SEt-coOkie","seT-coOkie","SeT-coOkie","sET-coOkie","SET-coOkie","set-CoOkie","Set-CoOkie","sEt-CoOkie","SEt-CoOkie","seT-CoOkie","SeT-CoOkie","sET-CoOkie","SET-CoOkie","set-cOOkie","Set-cOOkie","sEt-cOOkie","SEt-cOOkie","seT-cOOkie","SeT-cOOkie","sET-cOOkie","SET-cOOkie","set-COOkie","Set-COOkie","sEt-COOkie","SEt-COOkie","seT-COOkie","SeT-COOkie","sET-COOkie","SET-COOkie","set-cooKie","Set-cooKie","sEt-cooKie","SEt-cooKie","seT-cooKie","SeT-cooKie","sET-cooKie","SET-cooKie","set-CooKie","Set-CooKie","sEt-CooKie","SEt-CooKie","seT-CooKie","SeT-CooKie","sET-CooKie","SET-CooKie","set-cOoKie","Set-cOoKie","sEt-cOoKie","SEt-cOoKie","seT-cOoKie","SeT-cOoKie","sET-cOoKie","SET-cOoKie","set-COoKie","Set-COoKie","sEt-COoKie","SEt-COoKie","seT-COoKie","SeT-COoKie","sET-COoKie","SET-COoKie","set-coOKie","Set-coOKie","sEt-coOKie","SEt-coOKie","seT-coOKie","SeT-coOKie","sET-coOKie","SET-coOKie","set-CoOKie","Set-CoOKie","sEt-CoOKie","SEt-CoOKie","seT-CoOKie","SeT-CoOKie","sET-CoOKie","SET-CoOKie","set-cOOKie","Set-cOOKie","sEt-cOOKie","SEt-cOOKie","seT-cOOKie","SeT-cOOKie","sET-cOOKie","SET-cOOKie","set-COOKie","Set-COOKie","sEt-COOKie","SEt-COOKie","seT-COOKie","SeT-COOKie","sET-COOKie","SET-COOKie","set-cookIe","Set-cookIe","sEt-cookIe","SEt-cookIe","seT-cookIe","SeT-cookIe","sET-cookIe","SET-cookIe","set-CookIe","Set-CookIe","sEt-CookIe","SEt-CookIe","seT-CookIe","SeT-CookIe","sET-CookIe","SET-CookIe","set-cOokIe","Set-cOokIe","sEt-cOokIe","SEt-cOokIe","seT-cOokIe","SeT-cOokIe","sET-cOokIe","SET-cOokIe","set-COokIe","Set-COokIe","sEt-COokIe","SEt-COokIe","seT-COokIe","SeT-COokIe","sET-COokIe","SET-COokIe","set-coOkIe","Set-coOkIe","sEt-coOkIe","SEt-coOkIe","seT-coOkIe","SeT-coOkIe","sET-coOkIe","SET-coOkIe","set-CoOkIe","Set-CoOkIe","sEt-CoOkIe","SEt-CoOkIe","seT-CoOkIe","SeT-CoOkIe","sET-CoOkIe","SET-CoOkIe","set-cOOkIe","Set-cOOkIe","sEt-cOOkIe","SEt-cOOkIe","seT-cOOkIe","SeT-cOOkIe","sET-cOOkIe","SET-cOOkIe","set-COOkIe","Set-COOkIe","sEt-COOkIe","SEt-COOkIe","seT-COOkIe","SeT-COOkIe","sET-COOkIe","SET-COOkIe","set-cooKIe","Set-cooKIe","sEt-cooKIe","SEt-cooKIe","seT-cooKIe","SeT-cooKIe","sET-cooKIe","SET-cooKIe","set-CooKIe","Set-CooKIe","sEt-CooKIe","SEt-CooKIe","seT-CooKIe","SeT-CooKIe","sET-CooKIe","SET-CooKIe","set-cOoKIe","Set-cOoKIe","sEt-cOoKIe","SEt-cOoKIe","seT-cOoKIe","SeT-cOoKIe","sET-cOoKIe","SET-cOoKIe","set-COoKIe","Set-COoKIe","sEt-COoKIe","SEt-COoKIe","seT-COoKIe","SeT-COoKIe","sET-COoKIe","SET-COoKIe","set-coOKIe","Set-coOKIe","sEt-coOKIe","SEt-coOKIe","seT-coOKIe","SeT-coOKIe","sET-coOKIe","SET-coOKIe","set-CoOKIe","Set-CoOKIe","sEt-CoOKIe","SEt-CoOKIe","seT-CoOKIe","SeT-CoOKIe","sET-CoOKIe","SET-CoOKIe","set-cOOKIe","Set-cOOKIe","sEt-cOOKIe","SEt-cOOKIe","seT-cOOKIe","SeT-cOOKIe","sET-cOOKIe","SET-cOOKIe","set-COOKIe","Set-COOKIe","sEt-COOKIe","SEt-COOKIe","seT-COOKIe","SeT-COOKIe","sET-COOKIe","SET-COOKIe","set-cookiE","Set-cookiE","sEt-cookiE","SEt-cookiE","seT-cookiE","SeT-cookiE","sET-cookiE","SET-cookiE","set-CookiE","Set-CookiE","sEt-CookiE","SEt-CookiE","seT-CookiE","SeT-CookiE","sET-CookiE","SET-CookiE","set-cOokiE","Set-cOokiE","sEt-cOokiE","SEt-cOokiE","seT-cOokiE","SeT-cOokiE","sET-cOokiE","SET-cOokiE","set-COokiE","Set-COokiE","sEt-COokiE","SEt-COokiE","seT-COokiE","SeT-COokiE","sET-COokiE","SET-COokiE","set-coOkiE","Set-coOkiE","sEt-coOkiE","SEt-coOkiE","seT-coOkiE","SeT-coOkiE","sET-coOkiE","SET-coOkiE","set-CoOkiE","Set-CoOkiE","sEt-CoOkiE","SEt-CoOkiE","seT-CoOkiE","SeT-CoOkiE","sET-CoOkiE","SET-CoOkiE","set-cOOkiE","Set-cOOkiE","sEt-cOOkiE","SEt-cOOkiE","seT-cOOkiE","SeT-cOOkiE","sET-cOOkiE","SET-cOOkiE","set-COOkiE","Set-COOkiE","sEt-COOkiE","SEt-COOkiE","seT-COOkiE","SeT-COOkiE","sET-COOkiE","SET-COOkiE","set-cooKiE","Set-cooKiE","sEt-cooKiE","SEt-cooKiE","seT-cooKiE","SeT-cooKiE","sET-cooKiE","SET-cooKiE","set-CooKiE","Set-CooKiE","sEt-CooKiE","SEt-CooKiE","seT-CooKiE","SeT-CooKiE","sET-CooKiE","SET-CooKiE","set-cOoKiE","Set-cOoKiE","sEt-cOoKiE","SEt-cOoKiE","seT-cOoKiE","SeT-cOoKiE","sET-cOoKiE","SET-cOoKiE","set-COoKiE","Set-COoKiE","sEt-COoKiE","SEt-COoKiE","seT-COoKiE","SeT-COoKiE","sET-COoKiE","SET-COoKiE","set-coOKiE","Set-coOKiE","sEt-coOKiE","SEt-coOKiE","seT-coOKiE","SeT-coOKiE","sET-coOKiE","SET-coOKiE","set-CoOKiE","Set-CoOKiE","sEt-CoOKiE","SEt-CoOKiE","seT-CoOKiE","SeT-CoOKiE","sET-CoOKiE","SET-CoOKiE","set-cOOKiE","Set-cOOKiE","sEt-cOOKiE","SEt-cOOKiE","seT-cOOKiE","SeT-cOOKiE","sET-cOOKiE","SET-cOOKiE","set-COOKiE","Set-COOKiE","sEt-COOKiE","SEt-COOKiE","seT-COOKiE","SeT-COOKiE","sET-COOKiE","SET-COOKiE","set-cookIE","Set-cookIE","sEt-cookIE","SEt-cookIE","seT-cookIE","SeT-cookIE","sET-cookIE","SET-cookIE","set-CookIE","Set-CookIE","sEt-CookIE","SEt-CookIE","seT-CookIE","SeT-CookIE","sET-CookIE","SET-CookIE","set-cOokIE","Set-cOokIE","sEt-cOokIE","SEt-cOokIE","seT-cOokIE","SeT-cOokIE","sET-cOokIE","SET-cOokIE","set-COokIE","Set-COokIE","sEt-COokIE","SEt-COokIE","seT-COokIE","SeT-COokIE","sET-COokIE","SET-COokIE","set-coOkIE","Set-coOkIE","sEt-coOkIE","SEt-coOkIE","seT-coOkIE","SeT-coOkIE","sET-coOkIE","SET-coOkIE","set-CoOkIE","Set-CoOkIE","sEt-CoOkIE","SEt-CoOkIE","seT-CoOkIE","SeT-CoOkIE","sET-CoOkIE","SET-CoOkIE","set-cOOkIE","Set-cOOkIE","sEt-cOOkIE","SEt-cOOkIE","seT-cOOkIE","SeT-cOOkIE","sET-cOOkIE","SET-cOOkIE","set-COOkIE","Set-COOkIE","sEt-COOkIE","SEt-COOkIE","seT-COOkIE","SeT-COOkIE","sET-COOkIE","SET-COOkIE","set-cooKIE","Set-cooKIE","sEt-cooKIE","SEt-cooKIE","seT-cooKIE","SeT-cooKIE","sET-cooKIE","SET-cooKIE","set-CooKIE","Set-CooKIE","sEt-CooKIE","SEt-CooKIE","seT-CooKIE","SeT-CooKIE","sET-CooKIE","SET-CooKIE","set-cOoKIE","Set-cOoKIE","sEt-cOoKIE","SEt-cOoKIE","seT-cOoKIE","SeT-cOoKIE","sET-cOoKIE","SET-cOoKIE","set-COoKIE","Set-COoKIE","sEt-COoKIE","SEt-COoKIE","seT-COoKIE","SeT-COoKIE","sET-COoKIE","SET-COoKIE","set-coOKIE","Set-coOKIE","sEt-coOKIE","SEt-coOKIE","seT-coOKIE","SeT-coOKIE","sET-coOKIE","SET-coOKIE","set-CoOKIE","Set-CoOKIE","sEt-CoOKIE","SEt-CoOKIE","seT-CoOKIE","SeT-CoOKIE","sET-CoOKIE","SET-CoOKIE","set-cOOKIE","Set-cOOKIE","sEt-cOOKIE","SEt-cOOKIE","seT-cOOKIE","SeT-cOOKIE","sET-cOOKIE","SET-cOOKIE","set-COOKIE","Set-COOKIE","sEt-COOKIE","SEt-COOKIE","seT-COOKIE","SeT-COOKIE","sET-COOKIE","SET-COOKIE"]}});var C1=P((xW,k1)=>{"use strict";var uk=T1().variations;k1.exports=function(e){return Object.keys(e).reduce((r,n)=>{let i=e[n];return Array.isArray(i)?n.toLowerCase()==="set-cookie"?i.forEach((a,o)=>{r[uk[o]]=a}):r[n]=i.join(", "):r[n]=i==null?"":i.toString(),r},{})}});var M1=P((yW,P1)=>{var lk=_1(),O1=Ql(),fk=C1();P1.exports=(t,e)=>{let{statusCode:r}=t,n=fk(O1.headers(t));if(n["transfer-encoding"]==="chunked"||t.chunkedEncoding)throw new Error("chunked encoding not supported");let i=lk(n,e),a=i?"base64":"utf8",o=O1.body(t).toString(a);return{status:r,headers:n,isBase64Encoded:i,body:o}}});var F1=P((wW,B1)=>{var dk=w1(),pk=E1(),hk=M1();B1.exports=t=>e=>async(r,n)=>{let i=dk(n,t),a=pk(i,t),o=await e(a,r,i);return r.log(o),hk(o,t)}});var I1=P((AW,R1)=>{var vk=x1(),mk=F1(),L1={aws:vk,azure:mk};R1.exports=function(e){let{provider:r="aws"}=e;if(r in L1)return L1[r](e);throw new Error(`Unsupported provider ${r}`)}});var J1=P((EW,D1)=>{"use strict";var N1=Qg(),bk=t1(),gk=I1(),xk={requestId:"x-request-id"};D1.exports=function(t,e){let r=Object.assign({},xk,e),n=bk(t);return gk(r)(async(a,...o)=>{await N1(a,r.request,...o);let c=await n(a);return await N1(c,r.response,...o),c})}});var qn=P((SW,H1)=>{var yk=require("path").relative;H1.exports=_k;var wk=process.cwd();function j1(t,e){for(var r=t.split(/[ ,]+/),n=String(e).toLowerCase(),i=0;i0}function kk(t){if(process.noDeprecation)return!0;var e=process.env.NO_DEPRECATION||"";return j1(e,t)}function Ck(t){if(process.traceDeprecation)return!0;var e=process.env.TRACE_DEPRECATION||"";return j1(e,t)}function Yl(t,e){var r=Tk(process,"deprecation");if(!(!r&&this._ignored)){var n,i,a,o,c=0,u=!1,s=$l(),f=this._file;for(e?(o=e,a=Qo(s[1]),a.name=o.name,f=a[0]):(c=2,o=Qo(s[c]),a=o);c",r=t.getLineNumber(),n=t.getColumnNumber();t.isEval()&&(e=t.getEvalOrigin()+", "+e);var i=[e,r,n];return i.callSite=t,i.name=t.getFunctionName(),i}function q1(t){var e=t.callSite,r=t.name;r||(r="");var n=e.getThis(),i=n&&e.getTypeName();return i==="Object"&&(i=void 0),i==="Function"&&(i=n.name||i),i&&e.getMethodName()?i+"."+r:r}function Ok(t,e,r){var n=new Date().toUTCString(),i=n+" "+this._namespace+" deprecated "+t;if(this._traced){for(var a=0;a{"use strict";ef.exports=Nk;ef.exports.format=z1;ef.exports.parse=G1;var Lk=/\B(?=(\d{3})+(?!\d))/g,Rk=/(?:\.0*|(\.[^0]+)0+)$/,Wi={b:1,kb:1<<10,mb:1<<20,gb:1<<30,tb:Math.pow(1024,4),pb:Math.pow(1024,5)},Ik=/^((-|\+)?(\d+(?:\.\d+)?)) *(kb|mb|gb|tb|pb)$/i;function Nk(t,e){return typeof t=="string"?G1(t):typeof t=="number"?z1(t,e):null}function z1(t,e){if(!Number.isFinite(t))return null;var r=Math.abs(t),n=e&&e.thousandsSeparator||"",i=e&&e.unitSeparator||"",a=e&&e.decimalPlaces!==void 0?e.decimalPlaces:2,o=Boolean(e&&e.fixedDecimals),c=e&&e.unit||"";(!c||!Wi[c.toLowerCase()])&&(r>=Wi.pb?c="PB":r>=Wi.tb?c="TB":r>=Wi.gb?c="GB":r>=Wi.mb?c="MB":r>=Wi.kb?c="KB":c="B");var u=t/Wi[c.toLowerCase()],s=u.toFixed(a);return o||(s=s.replace(Rk,"$1")),n&&(s=s.split(".").map(function(f,m){return m===0?f.replace(Lk,n):f}).join(".")),s+i+c}function G1(t){if(typeof t=="number"&&!isNaN(t))return t;if(typeof t!="string")return null;var e=Ik.exec(t),r,n="b";return e?(r=parseFloat(e[1]),n=e[4].toLowerCase()):(r=parseInt(t,10),n="b"),isNaN(r)?null:Math.floor(Wi[n]*r)}});var Kc=P(I0=>{"use strict";var X1=/; *([!#$%&'*+.^_`|~0-9A-Za-z-]+) *= *("(?:[\u000b\u0020\u0021\u0023-\u005b\u005d-\u007e\u0080-\u00ff]|\\[\u000b\u0020-\u00ff])*"|[!#$%&'*+.^_`|~0-9A-Za-z-]+) */g,Dk=/^[\u000b\u0020-\u007e\u0080-\u00ff]+$/,K1=/^[!#$%&'*+.^_`|~0-9A-Za-z-]+$/,Jk=/\\([\u000b\u0020-\u00ff])/g,qk=/([\\"])/g,V1=/^[!#$%&'*+.^_`|~0-9A-Za-z-]+\/[!#$%&'*+.^_`|~0-9A-Za-z-]+$/;I0.format=jk;I0.parse=Uk;function jk(t){if(!t||typeof t!="object")throw new TypeError("argument obj is required");var e=t.parameters,r=t.type;if(!r||!V1.test(r))throw new TypeError("invalid type");var n=r;if(e&&typeof e=="object")for(var i,a=Object.keys(e).sort(),o=0;o0&&!Dk.test(e))throw new TypeError("invalid parameter value");return'"'+e.replace(qk,"\\$1")+'"'}function Gk(t){this.parameters=Object.create(null),this.type=t}});var Vc=P((kW,Z1)=>{"use strict";Z1.exports=Object.setPrototypeOf||({__proto__:[]}instanceof Array?Xk:Kk);function Xk(t,e){return t.__proto__=e,t}function Kk(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(t,r)||(t[r]=e[r]);return t}});var Q1=P((CW,Vk)=>{Vk.exports={"100":"Continue","101":"Switching Protocols","102":"Processing","103":"Early Hints","200":"OK","201":"Created","202":"Accepted","203":"Non-Authoritative Information","204":"No Content","205":"Reset Content","206":"Partial Content","207":"Multi-Status","208":"Already Reported","226":"IM Used","300":"Multiple Choices","301":"Moved Permanently","302":"Found","303":"See Other","304":"Not Modified","305":"Use Proxy","307":"Temporary Redirect","308":"Permanent Redirect","400":"Bad Request","401":"Unauthorized","402":"Payment Required","403":"Forbidden","404":"Not Found","405":"Method Not Allowed","406":"Not Acceptable","407":"Proxy Authentication Required","408":"Request Timeout","409":"Conflict","410":"Gone","411":"Length Required","412":"Precondition Failed","413":"Payload Too Large","414":"URI Too Long","415":"Unsupported Media Type","416":"Range Not Satisfiable","417":"Expectation Failed","418":"I'm a Teapot","421":"Misdirected Request","422":"Unprocessable Entity","423":"Locked","424":"Failed Dependency","425":"Too Early","426":"Upgrade Required","428":"Precondition Required","429":"Too Many Requests","431":"Request Header Fields Too Large","451":"Unavailable For Legal Reasons","500":"Internal Server Error","501":"Not Implemented","502":"Bad Gateway","503":"Service Unavailable","504":"Gateway Timeout","505":"HTTP Version Not Supported","506":"Variant Also Negotiates","507":"Insufficient Storage","508":"Loop Detected","509":"Bandwidth Limit Exceeded","510":"Not Extended","511":"Network Authentication Required"}});var Zc=P((OW,Y1)=>{"use strict";var N0=Q1();Y1.exports=fn;fn.message=N0;fn.code=Zk(N0);fn.codes=Qk(N0);fn.redirect={300:!0,301:!0,302:!0,303:!0,305:!0,307:!0,308:!0};fn.empty={204:!0,205:!0,304:!0};fn.retry={502:!0,503:!0,504:!0};function Zk(t){var e={};return Object.keys(t).forEach(function(n){var i=t[n],a=Number(n);e[i.toLowerCase()]=a}),e}function Qk(t){return Object.keys(t).map(function(r){return Number(r)})}function Wk(t){var e=t.toLowerCase();if(!Object.prototype.hasOwnProperty.call(fn.code,e))throw new Error('invalid status message: "'+t+'"');return fn.code[e]}function W1(t){if(!Object.prototype.hasOwnProperty.call(fn.message,t))throw new Error("invalid status code: "+t);return fn.message[t]}function fn(t){if(typeof t=="number")return W1(t);if(typeof t!="string")throw new TypeError("code must be a number or string");var e=parseInt(t,10);return isNaN(e)?Wk(t):W1(e)}});var $1=P((PW,D0)=>{typeof Object.create=="function"?D0.exports=function(e,r){r&&(e.super_=r,e.prototype=Object.create(r.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}))}:D0.exports=function(e,r){if(r){e.super_=r;var n=function(){};n.prototype=r.prototype,e.prototype=new n,e.prototype.constructor=e}}});var Yo=P((MW,q0)=>{try{if(J0=require("util"),typeof J0.inherits!="function")throw"";q0.exports=J0.inherits}catch{q0.exports=$1()}var J0});var rx=P((BW,ex)=>{"use strict";ex.exports=Yk;function Yk(t){return t.split(" ").map(function(e){return e.slice(0,1).toUpperCase()+e.slice(1)}).join("").replace(/[^ _0-9a-z]/gi,"")}});var ro=P((FW,eo)=>{"use strict";var $k=qn()("http-errors"),tx=Vc(),$o=Zc(),j0=Yo(),eC=rx();eo.exports=rf;eo.exports.HttpError=rC();eo.exports.isHttpError=nC(eo.exports.HttpError);aC(eo.exports,$o.codes,eo.exports.HttpError);function nx(t){return Number(String(t).charAt(0)+"00")}function rf(){for(var t,e,r=500,n={},i=0;i=600)&&$k("non-error status code; use only 4xx or 5xx status codes"),(typeof r!="number"||!$o.message[r]&&(r<400||r>=600))&&(r=500);var c=rf[r]||rf[nx(r)];t||(t=c?new c(e):new Error(e||$o.message[r]),Error.captureStackTrace(t,rf)),(!c||!(t instanceof c)||t.status!==r)&&(t.expose=r<500,t.status=t.statusCode=r);for(var u in n)u!=="status"&&u!=="statusCode"&&(t[u]=n[u]);return t}function rC(){function t(){throw new TypeError("cannot construct abstract class")}return j0(t,Error),t}function tC(t,e,r){var n=ax(e);function i(a){var o=a??$o.message[r],c=new Error(o);return Error.captureStackTrace(c,i),tx(c,i.prototype),Object.defineProperty(c,"message",{enumerable:!0,configurable:!0,value:o,writable:!0}),Object.defineProperty(c,"name",{enumerable:!1,configurable:!0,value:n,writable:!0}),c}return j0(i,t),ix(i,n),i.prototype.status=r,i.prototype.statusCode=r,i.prototype.expose=!0,i}function nC(t){return function(r){return!r||typeof r!="object"?!1:r instanceof t?!0:r instanceof Error&&typeof r.expose=="boolean"&&typeof r.statusCode=="number"&&r.status===r.statusCode}}function iC(t,e,r){var n=ax(e);function i(a){var o=a??$o.message[r],c=new Error(o);return Error.captureStackTrace(c,i),tx(c,i.prototype),Object.defineProperty(c,"message",{enumerable:!0,configurable:!0,value:o,writable:!0}),Object.defineProperty(c,"name",{enumerable:!1,configurable:!0,value:n,writable:!0}),c}return j0(i,t),ix(i,n),i.prototype.status=r,i.prototype.statusCode=r,i.prototype.expose=!1,i}function ix(t,e){var r=Object.getOwnPropertyDescriptor(t,"name");r&&r.configurable&&(r.value=e,Object.defineProperty(t,"name",r))}function aC(t,e,r){e.forEach(function(i){var a,o=eC($o.message[i]);switch(nx(i)){case 400:a=tC(r,o,i);break;case 500:a=iC(r,o,i);break}a&&(t[i]=a,t[o]=a)})}function ax(t){return t.substr(-5)!=="Error"?t+"Error":t}});var sx=P((LW,ox)=>{var Qc=1e3,Wc=Qc*60,Yc=Wc*60,$c=Yc*24,oC=$c*365.25;ox.exports=function(t,e){e=e||{};var r=typeof t;if(r==="string"&&t.length>0)return sC(t);if(r==="number"&&isNaN(t)===!1)return e.long?uC(t):cC(t);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(t))};function sC(t){if(t=String(t),!(t.length>100)){var e=/^((?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|years?|yrs?|y)?$/i.exec(t);if(!!e){var r=parseFloat(e[1]),n=(e[2]||"ms").toLowerCase();switch(n){case"years":case"year":case"yrs":case"yr":case"y":return r*oC;case"days":case"day":case"d":return r*$c;case"hours":case"hour":case"hrs":case"hr":case"h":return r*Yc;case"minutes":case"minute":case"mins":case"min":case"m":return r*Wc;case"seconds":case"second":case"secs":case"sec":case"s":return r*Qc;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return r;default:return}}}}function cC(t){return t>=$c?Math.round(t/$c)+"d":t>=Yc?Math.round(t/Yc)+"h":t>=Wc?Math.round(t/Wc)+"m":t>=Qc?Math.round(t/Qc)+"s":t+"ms"}function uC(t){return tf(t,$c,"day")||tf(t,Yc,"hour")||tf(t,Wc,"minute")||tf(t,Qc,"second")||t+" ms"}function tf(t,e,r){if(!(t{Qe=cx.exports=H0.debug=H0.default=H0;Qe.coerce=hC;Qe.disable=dC;Qe.enable=fC;Qe.enabled=pC;Qe.humanize=sx();Qe.names=[];Qe.skips=[];Qe.formatters={};var U0;function lC(t){var e=0,r;for(r in t)e=(e<<5)-e+t.charCodeAt(r),e|=0;return Qe.colors[Math.abs(e)%Qe.colors.length]}function H0(t){function e(){if(!!e.enabled){var r=e,n=+new Date,i=n-(U0||n);r.diff=i,r.prev=U0,r.curr=n,U0=n;for(var a=new Array(arguments.length),o=0;o{mt=lx.exports=z0();mt.log=bC;mt.formatArgs=mC;mt.save=gC;mt.load=ux;mt.useColors=vC;mt.storage=typeof chrome<"u"&&typeof chrome.storage<"u"?chrome.storage.local:xC();mt.colors=["lightseagreen","forestgreen","goldenrod","dodgerblue","darkorchid","crimson"];function vC(){return typeof window<"u"&&window.process&&window.process.type==="renderer"?!0:typeof document<"u"&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||typeof window<"u"&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)&&parseInt(RegExp.$1,10)>=31||typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)}mt.formatters.j=function(t){try{return JSON.stringify(t)}catch(e){return"[UnexpectedJSONParseError]: "+e.message}};function mC(t){var e=this.useColors;if(t[0]=(e?"%c":"")+this.namespace+(e?" %c":" ")+t[0]+(e?"%c ":" ")+"+"+mt.humanize(this.diff),!!e){var r="color: "+this.color;t.splice(1,0,r,"color: inherit");var n=0,i=0;t[0].replace(/%[a-zA-Z%]/g,function(a){a!=="%%"&&(n++,a==="%c"&&(i=n))}),t.splice(i,0,r)}}function bC(){return typeof console=="object"&&console.log&&Function.prototype.apply.call(console.log,console,arguments)}function gC(t){try{t==null?mt.storage.removeItem("debug"):mt.storage.debug=t}catch{}}function ux(){var t;try{t=mt.storage.debug}catch{}return!t&&typeof process<"u"&&"env"in process&&(t=process.env.DEBUG),t}mt.enable(ux());function xC(){try{return window.localStorage}catch{}}});var vx=P((Rr,hx)=>{var dx=require("tty"),eu=require("util");Rr=hx.exports=z0();Rr.init=TC;Rr.log=EC;Rr.formatArgs=AC;Rr.save=SC;Rr.load=px;Rr.useColors=wC;Rr.colors=[6,2,3,4,5,1];Rr.inspectOpts=Object.keys(process.env).filter(function(t){return/^debug_/i.test(t)}).reduce(function(t,e){var r=e.substring(6).toLowerCase().replace(/_([a-z])/g,function(i,a){return a.toUpperCase()}),n=process.env[e];return/^(yes|on|true|enabled)$/i.test(n)?n=!0:/^(no|off|false|disabled)$/i.test(n)?n=!1:n==="null"?n=null:n=Number(n),t[r]=n,t},{});var es=parseInt(process.env.DEBUG_FD,10)||2;es!==1&&es!==2&&eu.deprecate(function(){},"except for stderr(2) and stdout(1), any other usage of DEBUG_FD is deprecated. Override debug.log if you want to use a different log function (https://git.io/debug_fd)")();var yC=es===1?process.stdout:es===2?process.stderr:_C(es);function wC(){return"colors"in Rr.inspectOpts?Boolean(Rr.inspectOpts.colors):dx.isatty(es)}Rr.formatters.o=function(t){return this.inspectOpts.colors=this.useColors,eu.inspect(t,this.inspectOpts).split(` +`).map(function(e){return e.trim()}).join(" ")};Rr.formatters.O=function(t){return this.inspectOpts.colors=this.useColors,eu.inspect(t,this.inspectOpts)};function AC(t){var e=this.namespace,r=this.useColors;if(r){var n=this.color,i=" \x1B[3"+n+";1m"+e+" \x1B[0m";t[0]=i+t[0].split(` +`).join(` +`+i),t.push("\x1B[3"+n+"m+"+Rr.humanize(this.diff)+"\x1B[0m")}else t[0]=new Date().toUTCString()+" "+e+" "+t[0]}function EC(){return yC.write(eu.format.apply(eu,arguments)+` +`)}function SC(t){t==null?delete process.env.DEBUG:process.env.DEBUG=t}function px(){return process.env.DEBUG}function _C(t){var e,r=process.binding("tty_wrap");switch(r.guessHandleType(t)){case"TTY":e=new dx.WriteStream(t),e._type="tty",e._handle&&e._handle.unref&&e._handle.unref();break;case"FILE":var n=require("fs");e=new n.SyncWriteStream(t,{autoClose:!1}),e._type="fs";break;case"PIPE":case"TCP":var i=require("net");e=new i.Socket({fd:t,readable:!1,writable:!0}),e.readable=!1,e.read=null,e._type="pipe",e._handle&&e._handle.unref&&e._handle.unref();break;default:throw new Error("Implement me. Unknown stream file type!")}return e.fd=t,e._isStdio=!0,e}function TC(t){t.inspectOpts={};for(var e=Object.keys(Rr.inspectOpts),r=0;r{typeof process<"u"&&process.type==="renderer"?G0.exports=fx():G0.exports=vx()});var X0=P((IW,bx)=>{"use strict";var kC=require("events").EventEmitter,CC=require("fs").ReadStream,mx=require("stream"),to=require("zlib");bx.exports=OC;function OC(t,e){return RC(t)?PC(t):IC(t)?BC(t):FC(t)&&t.destroy(),LC(t)&&e&&(t.removeAllListeners("error"),t.addListener("error",NC)),t}function PC(t){t.destroy(),typeof t.close=="function"&&t.on("open",JC)}function MC(t){if(t._hadError===!0){var e=t._binding===null?"_binding":"_handle";t[e]={close:function(){this[e]=null}}}t.close()}function BC(t){typeof t.destroy=="function"?t._binding?(t.destroy(),t._processing?(t._needDrain=!0,t.once("drain",DC)):t._binding.clear()):t._destroy&&t._destroy!==mx.Transform.prototype._destroy?t.destroy():t._destroy&&typeof t.close=="function"?(t.destroyed=!0,t.close()):t.destroy():typeof t.close=="function"&&MC(t)}function FC(t){return t instanceof mx&&typeof t.destroy=="function"}function LC(t){return t instanceof kC}function RC(t){return t instanceof CC}function IC(t){return t instanceof to.Gzip||t instanceof to.Gunzip||t instanceof to.Deflate||t instanceof to.DeflateRaw||t instanceof to.Inflate||t instanceof to.InflateRaw||t instanceof to.Unzip}function NC(){}function DC(){this._binding.clear()}function JC(){typeof this.fd=="number"&&this.close()}});var no=P((NW,gx)=>{"use strict";var nf=require("buffer"),rs=nf.Buffer,jt={},Ut;for(Ut in nf)!nf.hasOwnProperty(Ut)||Ut==="SlowBuffer"||Ut==="Buffer"||(jt[Ut]=nf[Ut]);var ts=jt.Buffer={};for(Ut in rs)!rs.hasOwnProperty(Ut)||Ut==="allocUnsafe"||Ut==="allocUnsafeSlow"||(ts[Ut]=rs[Ut]);jt.Buffer.prototype=rs.prototype;(!ts.from||ts.from===Uint8Array.from)&&(ts.from=function(t,e,r){if(typeof t=="number")throw new TypeError('The "value" argument must not be of type number. Received type '+typeof t);if(t&&typeof t.length>"u")throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof t);return rs(t,e,r)});ts.alloc||(ts.alloc=function(t,e,r){if(typeof t!="number")throw new TypeError('The "size" argument must be of type number. Received type '+typeof t);if(t<0||t>=2*(1<<30))throw new RangeError('The value "'+t+'" is invalid for option "size"');var n=rs(t);return!e||e.length===0?n.fill(0):typeof r=="string"?n.fill(e,r):n.fill(e),n});if(!jt.kStringMaxLength)try{jt.kStringMaxLength=process.binding("buffer").kStringMaxLength}catch{}jt.constants||(jt.constants={MAX_LENGTH:jt.kMaxLength},jt.kStringMaxLength&&(jt.constants.MAX_STRING_LENGTH=jt.kStringMaxLength));gx.exports=jt});var yx=P(Z0=>{"use strict";var xx="\uFEFF";Z0.PrependBOM=K0;function K0(t,e){this.encoder=t,this.addBOM=!0}K0.prototype.write=function(t){return this.addBOM&&(t=xx+t,this.addBOM=!1),this.encoder.write(t)};K0.prototype.end=function(){return this.encoder.end()};Z0.StripBOM=V0;function V0(t,e){this.decoder=t,this.pass=!1,this.options=e||{}}V0.prototype.write=function(t){var e=this.decoder.write(t);return this.pass||!e||(e[0]===xx&&(e=e.slice(1),typeof this.options.stripBOM=="function"&&this.options.stripBOM()),this.pass=!0),e};V0.prototype.end=function(){return this.decoder.end()}});var Ex=P((JW,Ax)=>{"use strict";var tu=no().Buffer;Ax.exports={utf8:{type:"_internal",bomAware:!0},cesu8:{type:"_internal",bomAware:!0},unicode11utf8:"utf8",ucs2:{type:"_internal",bomAware:!0},utf16le:"ucs2",binary:{type:"_internal"},base64:{type:"_internal"},hex:{type:"_internal"},_internal:Q0};function Q0(t,e){this.enc=t.encodingName,this.bomAware=t.bomAware,this.enc==="base64"?this.encoder=Y0:this.enc==="cesu8"&&(this.enc="utf8",this.encoder=$0,tu.from("eda0bdedb2a9","hex").toString()!=="\u{1F4A9}"&&(this.decoder=eh,this.defaultCharUnicode=e.defaultCharUnicode))}Q0.prototype.encoder=W0;Q0.prototype.decoder=wx;var af=require("string_decoder").StringDecoder;af.prototype.end||(af.prototype.end=function(){});function wx(t,e){af.call(this,e.enc)}wx.prototype=af.prototype;function W0(t,e){this.enc=e.enc}W0.prototype.write=function(t){return tu.from(t,this.enc)};W0.prototype.end=function(){};function Y0(t,e){this.prevStr=""}Y0.prototype.write=function(t){t=this.prevStr+t;var e=t.length-t.length%4;return this.prevStr=t.slice(e),t=t.slice(0,e),tu.from(t,"base64")};Y0.prototype.end=function(){return tu.from(this.prevStr,"base64")};function $0(t,e){}$0.prototype.write=function(t){for(var e=tu.alloc(t.length*3),r=0,n=0;n>>6),e[r++]=128+(i&63)):(e[r++]=224+(i>>>12),e[r++]=128+(i>>>6&63),e[r++]=128+(i&63))}return e.slice(0,r)};$0.prototype.end=function(){};function eh(t,e){this.acc=0,this.contBytes=0,this.accBytes=0,this.defaultCharUnicode=e.defaultCharUnicode}eh.prototype.write=function(t){for(var e=this.acc,r=this.contBytes,n=this.accBytes,i="",a=0;a0&&(i+=this.defaultCharUnicode,r=0),o<128?i+=String.fromCharCode(o):o<224?(e=o&31,r=1,n=1):o<240?(e=o&15,r=2,n=1):i+=this.defaultCharUnicode):r>0?(e=e<<6|o&63,r--,n++,r===0&&(n===2&&e<128&&e>0?i+=this.defaultCharUnicode:n===3&&e<2048?i+=this.defaultCharUnicode:i+=String.fromCharCode(e))):i+=this.defaultCharUnicode}return this.acc=e,this.contBytes=r,this.accBytes=n,i};eh.prototype.end=function(){var t=0;return this.contBytes>0&&(t+=this.defaultCharUnicode),t}});var _x=P(oh=>{"use strict";var of=no().Buffer;oh.utf16be=sf;function sf(){}sf.prototype.encoder=rh;sf.prototype.decoder=th;sf.prototype.bomAware=!0;function rh(){}rh.prototype.write=function(t){for(var e=of.from(t,"ucs2"),r=0;r=2)if(t[0]==254&&t[1]==255)r="utf-16be";else if(t[0]==255&&t[1]==254)r="utf-16le";else{for(var n=0,i=0,a=Math.min(t.length-t.length%2,64),o=0;on?r="utf-16be":i{"use strict";var jn=no().Buffer;lf.utf7=cf;lf.unicode11utf7="utf7";function cf(t,e){this.iconv=e}cf.prototype.encoder=ch;cf.prototype.decoder=uh;cf.prototype.bomAware=!0;var qC=/[^A-Za-z0-9'\(\),-\.\/:\? \n\r\t]+/g;function ch(t,e){this.iconv=e.iconv}ch.prototype.write=function(t){return jn.from(t.replace(qC,function(e){return"+"+(e==="+"?"":this.iconv.encode(e,"utf16-be").toString("base64").replace(/=+$/,""))+"-"}.bind(this)))};ch.prototype.end=function(){};function uh(t,e){this.iconv=e.iconv,this.inBase64=!1,this.base64Accum=""}var jC=/[A-Za-z0-9\/+]/,lh=[];for(nu=0;nu<256;nu++)lh[nu]=jC.test(String.fromCharCode(nu));var nu,UC="+".charCodeAt(0),io="-".charCodeAt(0),sh="&".charCodeAt(0);uh.prototype.write=function(t){for(var e="",r=0,n=this.inBase64,i=this.base64Accum,a=0;a0&&(t=this.iconv.decode(jn.from(this.base64Accum,"base64"),"utf16-be")),this.inBase64=!1,this.base64Accum="",t};lf.utf7imap=uf;function uf(t,e){this.iconv=e}uf.prototype.encoder=fh;uf.prototype.decoder=dh;uf.prototype.bomAware=!0;function fh(t,e){this.iconv=e.iconv,this.inBase64=!1,this.base64Accum=jn.alloc(6),this.base64AccumIdx=0}fh.prototype.write=function(t){for(var e=this.inBase64,r=this.base64Accum,n=this.base64AccumIdx,i=jn.alloc(t.length*5+10),a=0,o=0;o0&&(a+=i.write(r.slice(0,n).toString("base64").replace(/\//g,",").replace(/=+$/,""),a),n=0),i[a++]=io,e=!1),e||(i[a++]=c,c===sh&&(i[a++]=io))):(e||(i[a++]=sh,e=!0),e&&(r[n++]=c>>8,r[n++]=c&255,n==r.length&&(a+=i.write(r.toString("base64").replace(/\//g,","),a),n=0)))}return this.inBase64=e,this.base64AccumIdx=n,i.slice(0,a)};fh.prototype.end=function(){var t=jn.alloc(10),e=0;return this.inBase64&&(this.base64AccumIdx>0&&(e+=t.write(this.base64Accum.slice(0,this.base64AccumIdx).toString("base64").replace(/\//g,",").replace(/=+$/,""),e),this.base64AccumIdx=0),t[e++]=io,this.inBase64=!1),t.slice(0,e)};function dh(t,e){this.iconv=e.iconv,this.inBase64=!1,this.base64Accum=""}var Tx=lh.slice();Tx[",".charCodeAt(0)]=!0;dh.prototype.write=function(t){for(var e="",r=0,n=this.inBase64,i=this.base64Accum,a=0;a0&&(t=this.iconv.decode(jn.from(this.base64Accum,"base64"),"utf16-be")),this.inBase64=!1,this.base64Accum="",t}});var Ox=P(Cx=>{"use strict";var ff=no().Buffer;Cx._sbcs=ph;function ph(t,e){if(!t)throw new Error("SBCS codec is called without the data.");if(!t.chars||t.chars.length!==128&&t.chars.length!==256)throw new Error("Encoding '"+t.type+"' has incorrect 'chars' (must be of len 128 or 256)");if(t.chars.length===128){for(var r="",n=0;n<128;n++)r+=String.fromCharCode(n);t.chars=r+t.chars}this.decodeBuf=ff.from(t.chars,"ucs2");for(var i=ff.alloc(65536,e.defaultCharSingleByte.charCodeAt(0)),n=0;n{"use strict";Px.exports={10029:"maccenteuro",maccenteuro:{type:"_sbcs",chars:"\xC4\u0100\u0101\xC9\u0104\xD6\xDC\xE1\u0105\u010C\xE4\u010D\u0106\u0107\xE9\u0179\u017A\u010E\xED\u010F\u0112\u0113\u0116\xF3\u0117\xF4\xF6\xF5\xFA\u011A\u011B\xFC\u2020\xB0\u0118\xA3\xA7\u2022\xB6\xDF\xAE\xA9\u2122\u0119\xA8\u2260\u0123\u012E\u012F\u012A\u2264\u2265\u012B\u0136\u2202\u2211\u0142\u013B\u013C\u013D\u013E\u0139\u013A\u0145\u0146\u0143\xAC\u221A\u0144\u0147\u2206\xAB\xBB\u2026\xA0\u0148\u0150\xD5\u0151\u014C\u2013\u2014\u201C\u201D\u2018\u2019\xF7\u25CA\u014D\u0154\u0155\u0158\u2039\u203A\u0159\u0156\u0157\u0160\u201A\u201E\u0161\u015A\u015B\xC1\u0164\u0165\xCD\u017D\u017E\u016A\xD3\xD4\u016B\u016E\xDA\u016F\u0170\u0171\u0172\u0173\xDD\xFD\u0137\u017B\u0141\u017C\u0122\u02C7"},808:"cp808",ibm808:"cp808",cp808:{type:"_sbcs",chars:"\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F\u0401\u0451\u0404\u0454\u0407\u0457\u040E\u045E\xB0\u2219\xB7\u221A\u2116\u20AC\u25A0\xA0"},mik:{type:"_sbcs",chars:"\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F\u2514\u2534\u252C\u251C\u2500\u253C\u2563\u2551\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2510\u2591\u2592\u2593\u2502\u2524\u2116\xA7\u2557\u255D\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03B1\xDF\u0393\u03C0\u03A3\u03C3\xB5\u03C4\u03A6\u0398\u03A9\u03B4\u221E\u03C6\u03B5\u2229\u2261\xB1\u2265\u2264\u2320\u2321\xF7\u2248\xB0\u2219\xB7\u221A\u207F\xB2\u25A0\xA0"},ascii8bit:"ascii",usascii:"ascii",ansix34:"ascii",ansix341968:"ascii",ansix341986:"ascii",csascii:"ascii",cp367:"ascii",ibm367:"ascii",isoir6:"ascii",iso646us:"ascii",iso646irv:"ascii",us:"ascii",latin1:"iso88591",latin2:"iso88592",latin3:"iso88593",latin4:"iso88594",latin5:"iso88599",latin6:"iso885910",latin7:"iso885913",latin8:"iso885914",latin9:"iso885915",latin10:"iso885916",csisolatin1:"iso88591",csisolatin2:"iso88592",csisolatin3:"iso88593",csisolatin4:"iso88594",csisolatincyrillic:"iso88595",csisolatinarabic:"iso88596",csisolatingreek:"iso88597",csisolatinhebrew:"iso88598",csisolatin5:"iso88599",csisolatin6:"iso885910",l1:"iso88591",l2:"iso88592",l3:"iso88593",l4:"iso88594",l5:"iso88599",l6:"iso885910",l7:"iso885913",l8:"iso885914",l9:"iso885915",l10:"iso885916",isoir14:"iso646jp",isoir57:"iso646cn",isoir100:"iso88591",isoir101:"iso88592",isoir109:"iso88593",isoir110:"iso88594",isoir144:"iso88595",isoir127:"iso88596",isoir126:"iso88597",isoir138:"iso88598",isoir148:"iso88599",isoir157:"iso885910",isoir166:"tis620",isoir179:"iso885913",isoir199:"iso885914",isoir203:"iso885915",isoir226:"iso885916",cp819:"iso88591",ibm819:"iso88591",cyrillic:"iso88595",arabic:"iso88596",arabic8:"iso88596",ecma114:"iso88596",asmo708:"iso88596",greek:"iso88597",greek8:"iso88597",ecma118:"iso88597",elot928:"iso88597",hebrew:"iso88598",hebrew8:"iso88598",turkish:"iso88599",turkish8:"iso88599",thai:"iso885911",thai8:"iso885911",celtic:"iso885914",celtic8:"iso885914",isoceltic:"iso885914",tis6200:"tis620",tis62025291:"tis620",tis62025330:"tis620",1e4:"macroman",10006:"macgreek",10007:"maccyrillic",10079:"maciceland",10081:"macturkish",cspc8codepage437:"cp437",cspc775baltic:"cp775",cspc850multilingual:"cp850",cspcp852:"cp852",cspc862latinhebrew:"cp862",cpgr:"cp869",msee:"cp1250",mscyrl:"cp1251",msansi:"cp1252",msgreek:"cp1253",msturk:"cp1254",mshebr:"cp1255",msarab:"cp1256",winbaltrim:"cp1257",cp20866:"koi8r",20866:"koi8r",ibm878:"koi8r",cskoi8r:"koi8r",cp21866:"koi8u",21866:"koi8u",ibm1168:"koi8u",strk10482002:"rk1048",tcvn5712:"tcvn",tcvn57121:"tcvn",gb198880:"iso646cn",cn:"iso646cn",csiso14jisc6220ro:"iso646jp",jisc62201969ro:"iso646jp",jp:"iso646jp",cshproman8:"hproman8",r8:"hproman8",roman8:"hproman8",xroman8:"hproman8",ibm1051:"hproman8",mac:"macintosh",csmacintosh:"macintosh"}});var Fx=P((zW,Bx)=>{"use strict";Bx.exports={437:"cp437",737:"cp737",775:"cp775",850:"cp850",852:"cp852",855:"cp855",856:"cp856",857:"cp857",858:"cp858",860:"cp860",861:"cp861",862:"cp862",863:"cp863",864:"cp864",865:"cp865",866:"cp866",869:"cp869",874:"windows874",922:"cp922",1046:"cp1046",1124:"cp1124",1125:"cp1125",1129:"cp1129",1133:"cp1133",1161:"cp1161",1162:"cp1162",1163:"cp1163",1250:"windows1250",1251:"windows1251",1252:"windows1252",1253:"windows1253",1254:"windows1254",1255:"windows1255",1256:"windows1256",1257:"windows1257",1258:"windows1258",28591:"iso88591",28592:"iso88592",28593:"iso88593",28594:"iso88594",28595:"iso88595",28596:"iso88596",28597:"iso88597",28598:"iso88598",28599:"iso88599",28600:"iso885910",28601:"iso885911",28603:"iso885913",28604:"iso885914",28605:"iso885915",28606:"iso885916",windows874:{type:"_sbcs",chars:"\u20AC\uFFFD\uFFFD\uFFFD\uFFFD\u2026\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\xA0\u0E01\u0E02\u0E03\u0E04\u0E05\u0E06\u0E07\u0E08\u0E09\u0E0A\u0E0B\u0E0C\u0E0D\u0E0E\u0E0F\u0E10\u0E11\u0E12\u0E13\u0E14\u0E15\u0E16\u0E17\u0E18\u0E19\u0E1A\u0E1B\u0E1C\u0E1D\u0E1E\u0E1F\u0E20\u0E21\u0E22\u0E23\u0E24\u0E25\u0E26\u0E27\u0E28\u0E29\u0E2A\u0E2B\u0E2C\u0E2D\u0E2E\u0E2F\u0E30\u0E31\u0E32\u0E33\u0E34\u0E35\u0E36\u0E37\u0E38\u0E39\u0E3A\uFFFD\uFFFD\uFFFD\uFFFD\u0E3F\u0E40\u0E41\u0E42\u0E43\u0E44\u0E45\u0E46\u0E47\u0E48\u0E49\u0E4A\u0E4B\u0E4C\u0E4D\u0E4E\u0E4F\u0E50\u0E51\u0E52\u0E53\u0E54\u0E55\u0E56\u0E57\u0E58\u0E59\u0E5A\u0E5B\uFFFD\uFFFD\uFFFD\uFFFD"},win874:"windows874",cp874:"windows874",windows1250:{type:"_sbcs",chars:"\u20AC\uFFFD\u201A\uFFFD\u201E\u2026\u2020\u2021\uFFFD\u2030\u0160\u2039\u015A\u0164\u017D\u0179\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\uFFFD\u2122\u0161\u203A\u015B\u0165\u017E\u017A\xA0\u02C7\u02D8\u0141\xA4\u0104\xA6\xA7\xA8\xA9\u015E\xAB\xAC\xAD\xAE\u017B\xB0\xB1\u02DB\u0142\xB4\xB5\xB6\xB7\xB8\u0105\u015F\xBB\u013D\u02DD\u013E\u017C\u0154\xC1\xC2\u0102\xC4\u0139\u0106\xC7\u010C\xC9\u0118\xCB\u011A\xCD\xCE\u010E\u0110\u0143\u0147\xD3\xD4\u0150\xD6\xD7\u0158\u016E\xDA\u0170\xDC\xDD\u0162\xDF\u0155\xE1\xE2\u0103\xE4\u013A\u0107\xE7\u010D\xE9\u0119\xEB\u011B\xED\xEE\u010F\u0111\u0144\u0148\xF3\xF4\u0151\xF6\xF7\u0159\u016F\xFA\u0171\xFC\xFD\u0163\u02D9"},win1250:"windows1250",cp1250:"windows1250",windows1251:{type:"_sbcs",chars:"\u0402\u0403\u201A\u0453\u201E\u2026\u2020\u2021\u20AC\u2030\u0409\u2039\u040A\u040C\u040B\u040F\u0452\u2018\u2019\u201C\u201D\u2022\u2013\u2014\uFFFD\u2122\u0459\u203A\u045A\u045C\u045B\u045F\xA0\u040E\u045E\u0408\xA4\u0490\xA6\xA7\u0401\xA9\u0404\xAB\xAC\xAD\xAE\u0407\xB0\xB1\u0406\u0456\u0491\xB5\xB6\xB7\u0451\u2116\u0454\xBB\u0458\u0405\u0455\u0457\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F"},win1251:"windows1251",cp1251:"windows1251",windows1252:{type:"_sbcs",chars:"\u20AC\uFFFD\u201A\u0192\u201E\u2026\u2020\u2021\u02C6\u2030\u0160\u2039\u0152\uFFFD\u017D\uFFFD\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u02DC\u2122\u0161\u203A\u0153\uFFFD\u017E\u0178\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF\xC0\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\xD0\xD1\xD2\xD3\xD4\xD5\xD6\xD7\xD8\xD9\xDA\xDB\xDC\xDD\xDE\xDF\xE0\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\xF0\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\xFD\xFE\xFF"},win1252:"windows1252",cp1252:"windows1252",windows1253:{type:"_sbcs",chars:"\u20AC\uFFFD\u201A\u0192\u201E\u2026\u2020\u2021\uFFFD\u2030\uFFFD\u2039\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\uFFFD\u2122\uFFFD\u203A\uFFFD\uFFFD\uFFFD\uFFFD\xA0\u0385\u0386\xA3\xA4\xA5\xA6\xA7\xA8\xA9\uFFFD\xAB\xAC\xAD\xAE\u2015\xB0\xB1\xB2\xB3\u0384\xB5\xB6\xB7\u0388\u0389\u038A\xBB\u038C\xBD\u038E\u038F\u0390\u0391\u0392\u0393\u0394\u0395\u0396\u0397\u0398\u0399\u039A\u039B\u039C\u039D\u039E\u039F\u03A0\u03A1\uFFFD\u03A3\u03A4\u03A5\u03A6\u03A7\u03A8\u03A9\u03AA\u03AB\u03AC\u03AD\u03AE\u03AF\u03B0\u03B1\u03B2\u03B3\u03B4\u03B5\u03B6\u03B7\u03B8\u03B9\u03BA\u03BB\u03BC\u03BD\u03BE\u03BF\u03C0\u03C1\u03C2\u03C3\u03C4\u03C5\u03C6\u03C7\u03C8\u03C9\u03CA\u03CB\u03CC\u03CD\u03CE\uFFFD"},win1253:"windows1253",cp1253:"windows1253",windows1254:{type:"_sbcs",chars:"\u20AC\uFFFD\u201A\u0192\u201E\u2026\u2020\u2021\u02C6\u2030\u0160\u2039\u0152\uFFFD\uFFFD\uFFFD\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u02DC\u2122\u0161\u203A\u0153\uFFFD\uFFFD\u0178\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF\xC0\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\u011E\xD1\xD2\xD3\xD4\xD5\xD6\xD7\xD8\xD9\xDA\xDB\xDC\u0130\u015E\xDF\xE0\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\u011F\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\u0131\u015F\xFF"},win1254:"windows1254",cp1254:"windows1254",windows1255:{type:"_sbcs",chars:"\u20AC\uFFFD\u201A\u0192\u201E\u2026\u2020\u2021\u02C6\u2030\uFFFD\u2039\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u02DC\u2122\uFFFD\u203A\uFFFD\uFFFD\uFFFD\uFFFD\xA0\xA1\xA2\xA3\u20AA\xA5\xA6\xA7\xA8\xA9\xD7\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xF7\xBB\xBC\xBD\xBE\xBF\u05B0\u05B1\u05B2\u05B3\u05B4\u05B5\u05B6\u05B7\u05B8\u05B9\u05BA\u05BB\u05BC\u05BD\u05BE\u05BF\u05C0\u05C1\u05C2\u05C3\u05F0\u05F1\u05F2\u05F3\u05F4\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u05D0\u05D1\u05D2\u05D3\u05D4\u05D5\u05D6\u05D7\u05D8\u05D9\u05DA\u05DB\u05DC\u05DD\u05DE\u05DF\u05E0\u05E1\u05E2\u05E3\u05E4\u05E5\u05E6\u05E7\u05E8\u05E9\u05EA\uFFFD\uFFFD\u200E\u200F\uFFFD"},win1255:"windows1255",cp1255:"windows1255",windows1256:{type:"_sbcs",chars:"\u20AC\u067E\u201A\u0192\u201E\u2026\u2020\u2021\u02C6\u2030\u0679\u2039\u0152\u0686\u0698\u0688\u06AF\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u06A9\u2122\u0691\u203A\u0153\u200C\u200D\u06BA\xA0\u060C\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\u06BE\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\u061B\xBB\xBC\xBD\xBE\u061F\u06C1\u0621\u0622\u0623\u0624\u0625\u0626\u0627\u0628\u0629\u062A\u062B\u062C\u062D\u062E\u062F\u0630\u0631\u0632\u0633\u0634\u0635\u0636\xD7\u0637\u0638\u0639\u063A\u0640\u0641\u0642\u0643\xE0\u0644\xE2\u0645\u0646\u0647\u0648\xE7\xE8\xE9\xEA\xEB\u0649\u064A\xEE\xEF\u064B\u064C\u064D\u064E\xF4\u064F\u0650\xF7\u0651\xF9\u0652\xFB\xFC\u200E\u200F\u06D2"},win1256:"windows1256",cp1256:"windows1256",windows1257:{type:"_sbcs",chars:"\u20AC\uFFFD\u201A\uFFFD\u201E\u2026\u2020\u2021\uFFFD\u2030\uFFFD\u2039\uFFFD\xA8\u02C7\xB8\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\uFFFD\u2122\uFFFD\u203A\uFFFD\xAF\u02DB\uFFFD\xA0\uFFFD\xA2\xA3\xA4\uFFFD\xA6\xA7\xD8\xA9\u0156\xAB\xAC\xAD\xAE\xC6\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xF8\xB9\u0157\xBB\xBC\xBD\xBE\xE6\u0104\u012E\u0100\u0106\xC4\xC5\u0118\u0112\u010C\xC9\u0179\u0116\u0122\u0136\u012A\u013B\u0160\u0143\u0145\xD3\u014C\xD5\xD6\xD7\u0172\u0141\u015A\u016A\xDC\u017B\u017D\xDF\u0105\u012F\u0101\u0107\xE4\xE5\u0119\u0113\u010D\xE9\u017A\u0117\u0123\u0137\u012B\u013C\u0161\u0144\u0146\xF3\u014D\xF5\xF6\xF7\u0173\u0142\u015B\u016B\xFC\u017C\u017E\u02D9"},win1257:"windows1257",cp1257:"windows1257",windows1258:{type:"_sbcs",chars:"\u20AC\uFFFD\u201A\u0192\u201E\u2026\u2020\u2021\u02C6\u2030\uFFFD\u2039\u0152\uFFFD\uFFFD\uFFFD\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u02DC\u2122\uFFFD\u203A\u0153\uFFFD\uFFFD\u0178\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF\xC0\xC1\xC2\u0102\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\u0300\xCD\xCE\xCF\u0110\xD1\u0309\xD3\xD4\u01A0\xD6\xD7\xD8\xD9\xDA\xDB\xDC\u01AF\u0303\xDF\xE0\xE1\xE2\u0103\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\u0301\xED\xEE\xEF\u0111\xF1\u0323\xF3\xF4\u01A1\xF6\xF7\xF8\xF9\xFA\xFB\xFC\u01B0\u20AB\xFF"},win1258:"windows1258",cp1258:"windows1258",iso88591:{type:"_sbcs",chars:"\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF\xC0\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\xD0\xD1\xD2\xD3\xD4\xD5\xD6\xD7\xD8\xD9\xDA\xDB\xDC\xDD\xDE\xDF\xE0\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\xF0\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\xFD\xFE\xFF"},cp28591:"iso88591",iso88592:{type:"_sbcs",chars:"\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u0104\u02D8\u0141\xA4\u013D\u015A\xA7\xA8\u0160\u015E\u0164\u0179\xAD\u017D\u017B\xB0\u0105\u02DB\u0142\xB4\u013E\u015B\u02C7\xB8\u0161\u015F\u0165\u017A\u02DD\u017E\u017C\u0154\xC1\xC2\u0102\xC4\u0139\u0106\xC7\u010C\xC9\u0118\xCB\u011A\xCD\xCE\u010E\u0110\u0143\u0147\xD3\xD4\u0150\xD6\xD7\u0158\u016E\xDA\u0170\xDC\xDD\u0162\xDF\u0155\xE1\xE2\u0103\xE4\u013A\u0107\xE7\u010D\xE9\u0119\xEB\u011B\xED\xEE\u010F\u0111\u0144\u0148\xF3\xF4\u0151\xF6\xF7\u0159\u016F\xFA\u0171\xFC\xFD\u0163\u02D9"},cp28592:"iso88592",iso88593:{type:"_sbcs",chars:"\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u0126\u02D8\xA3\xA4\uFFFD\u0124\xA7\xA8\u0130\u015E\u011E\u0134\xAD\uFFFD\u017B\xB0\u0127\xB2\xB3\xB4\xB5\u0125\xB7\xB8\u0131\u015F\u011F\u0135\xBD\uFFFD\u017C\xC0\xC1\xC2\uFFFD\xC4\u010A\u0108\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\uFFFD\xD1\xD2\xD3\xD4\u0120\xD6\xD7\u011C\xD9\xDA\xDB\xDC\u016C\u015C\xDF\xE0\xE1\xE2\uFFFD\xE4\u010B\u0109\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\uFFFD\xF1\xF2\xF3\xF4\u0121\xF6\xF7\u011D\xF9\xFA\xFB\xFC\u016D\u015D\u02D9"},cp28593:"iso88593",iso88594:{type:"_sbcs",chars:"\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u0104\u0138\u0156\xA4\u0128\u013B\xA7\xA8\u0160\u0112\u0122\u0166\xAD\u017D\xAF\xB0\u0105\u02DB\u0157\xB4\u0129\u013C\u02C7\xB8\u0161\u0113\u0123\u0167\u014A\u017E\u014B\u0100\xC1\xC2\xC3\xC4\xC5\xC6\u012E\u010C\xC9\u0118\xCB\u0116\xCD\xCE\u012A\u0110\u0145\u014C\u0136\xD4\xD5\xD6\xD7\xD8\u0172\xDA\xDB\xDC\u0168\u016A\xDF\u0101\xE1\xE2\xE3\xE4\xE5\xE6\u012F\u010D\xE9\u0119\xEB\u0117\xED\xEE\u012B\u0111\u0146\u014D\u0137\xF4\xF5\xF6\xF7\xF8\u0173\xFA\xFB\xFC\u0169\u016B\u02D9"},cp28594:"iso88594",iso88595:{type:"_sbcs",chars:"\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u0401\u0402\u0403\u0404\u0405\u0406\u0407\u0408\u0409\u040A\u040B\u040C\xAD\u040E\u040F\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F\u2116\u0451\u0452\u0453\u0454\u0455\u0456\u0457\u0458\u0459\u045A\u045B\u045C\xA7\u045E\u045F"},cp28595:"iso88595",iso88596:{type:"_sbcs",chars:"\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\uFFFD\uFFFD\uFFFD\xA4\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u060C\xAD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u061B\uFFFD\uFFFD\uFFFD\u061F\uFFFD\u0621\u0622\u0623\u0624\u0625\u0626\u0627\u0628\u0629\u062A\u062B\u062C\u062D\u062E\u062F\u0630\u0631\u0632\u0633\u0634\u0635\u0636\u0637\u0638\u0639\u063A\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u0640\u0641\u0642\u0643\u0644\u0645\u0646\u0647\u0648\u0649\u064A\u064B\u064C\u064D\u064E\u064F\u0650\u0651\u0652\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"},cp28596:"iso88596",iso88597:{type:"_sbcs",chars:"\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u2018\u2019\xA3\u20AC\u20AF\xA6\xA7\xA8\xA9\u037A\xAB\xAC\xAD\uFFFD\u2015\xB0\xB1\xB2\xB3\u0384\u0385\u0386\xB7\u0388\u0389\u038A\xBB\u038C\xBD\u038E\u038F\u0390\u0391\u0392\u0393\u0394\u0395\u0396\u0397\u0398\u0399\u039A\u039B\u039C\u039D\u039E\u039F\u03A0\u03A1\uFFFD\u03A3\u03A4\u03A5\u03A6\u03A7\u03A8\u03A9\u03AA\u03AB\u03AC\u03AD\u03AE\u03AF\u03B0\u03B1\u03B2\u03B3\u03B4\u03B5\u03B6\u03B7\u03B8\u03B9\u03BA\u03BB\u03BC\u03BD\u03BE\u03BF\u03C0\u03C1\u03C2\u03C3\u03C4\u03C5\u03C6\u03C7\u03C8\u03C9\u03CA\u03CB\u03CC\u03CD\u03CE\uFFFD"},cp28597:"iso88597",iso88598:{type:"_sbcs",chars:"\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\uFFFD\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xD7\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xF7\xBB\xBC\xBD\xBE\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u2017\u05D0\u05D1\u05D2\u05D3\u05D4\u05D5\u05D6\u05D7\u05D8\u05D9\u05DA\u05DB\u05DC\u05DD\u05DE\u05DF\u05E0\u05E1\u05E2\u05E3\u05E4\u05E5\u05E6\u05E7\u05E8\u05E9\u05EA\uFFFD\uFFFD\u200E\u200F\uFFFD"},cp28598:"iso88598",iso88599:{type:"_sbcs",chars:"\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF\xC0\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\u011E\xD1\xD2\xD3\xD4\xD5\xD6\xD7\xD8\xD9\xDA\xDB\xDC\u0130\u015E\xDF\xE0\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\u011F\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\u0131\u015F\xFF"},cp28599:"iso88599",iso885910:{type:"_sbcs",chars:"\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u0104\u0112\u0122\u012A\u0128\u0136\xA7\u013B\u0110\u0160\u0166\u017D\xAD\u016A\u014A\xB0\u0105\u0113\u0123\u012B\u0129\u0137\xB7\u013C\u0111\u0161\u0167\u017E\u2015\u016B\u014B\u0100\xC1\xC2\xC3\xC4\xC5\xC6\u012E\u010C\xC9\u0118\xCB\u0116\xCD\xCE\xCF\xD0\u0145\u014C\xD3\xD4\xD5\xD6\u0168\xD8\u0172\xDA\xDB\xDC\xDD\xDE\xDF\u0101\xE1\xE2\xE3\xE4\xE5\xE6\u012F\u010D\xE9\u0119\xEB\u0117\xED\xEE\xEF\xF0\u0146\u014D\xF3\xF4\xF5\xF6\u0169\xF8\u0173\xFA\xFB\xFC\xFD\xFE\u0138"},cp28600:"iso885910",iso885911:{type:"_sbcs",chars:"\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u0E01\u0E02\u0E03\u0E04\u0E05\u0E06\u0E07\u0E08\u0E09\u0E0A\u0E0B\u0E0C\u0E0D\u0E0E\u0E0F\u0E10\u0E11\u0E12\u0E13\u0E14\u0E15\u0E16\u0E17\u0E18\u0E19\u0E1A\u0E1B\u0E1C\u0E1D\u0E1E\u0E1F\u0E20\u0E21\u0E22\u0E23\u0E24\u0E25\u0E26\u0E27\u0E28\u0E29\u0E2A\u0E2B\u0E2C\u0E2D\u0E2E\u0E2F\u0E30\u0E31\u0E32\u0E33\u0E34\u0E35\u0E36\u0E37\u0E38\u0E39\u0E3A\uFFFD\uFFFD\uFFFD\uFFFD\u0E3F\u0E40\u0E41\u0E42\u0E43\u0E44\u0E45\u0E46\u0E47\u0E48\u0E49\u0E4A\u0E4B\u0E4C\u0E4D\u0E4E\u0E4F\u0E50\u0E51\u0E52\u0E53\u0E54\u0E55\u0E56\u0E57\u0E58\u0E59\u0E5A\u0E5B\uFFFD\uFFFD\uFFFD\uFFFD"},cp28601:"iso885911",iso885913:{type:"_sbcs",chars:"\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u201D\xA2\xA3\xA4\u201E\xA6\xA7\xD8\xA9\u0156\xAB\xAC\xAD\xAE\xC6\xB0\xB1\xB2\xB3\u201C\xB5\xB6\xB7\xF8\xB9\u0157\xBB\xBC\xBD\xBE\xE6\u0104\u012E\u0100\u0106\xC4\xC5\u0118\u0112\u010C\xC9\u0179\u0116\u0122\u0136\u012A\u013B\u0160\u0143\u0145\xD3\u014C\xD5\xD6\xD7\u0172\u0141\u015A\u016A\xDC\u017B\u017D\xDF\u0105\u012F\u0101\u0107\xE4\xE5\u0119\u0113\u010D\xE9\u017A\u0117\u0123\u0137\u012B\u013C\u0161\u0144\u0146\xF3\u014D\xF5\xF6\xF7\u0173\u0142\u015B\u016B\xFC\u017C\u017E\u2019"},cp28603:"iso885913",iso885914:{type:"_sbcs",chars:"\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u1E02\u1E03\xA3\u010A\u010B\u1E0A\xA7\u1E80\xA9\u1E82\u1E0B\u1EF2\xAD\xAE\u0178\u1E1E\u1E1F\u0120\u0121\u1E40\u1E41\xB6\u1E56\u1E81\u1E57\u1E83\u1E60\u1EF3\u1E84\u1E85\u1E61\xC0\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\u0174\xD1\xD2\xD3\xD4\xD5\xD6\u1E6A\xD8\xD9\xDA\xDB\xDC\xDD\u0176\xDF\xE0\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\u0175\xF1\xF2\xF3\xF4\xF5\xF6\u1E6B\xF8\xF9\xFA\xFB\xFC\xFD\u0177\xFF"},cp28604:"iso885914",iso885915:{type:"_sbcs",chars:"\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\xA1\xA2\xA3\u20AC\xA5\u0160\xA7\u0161\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\u017D\xB5\xB6\xB7\u017E\xB9\xBA\xBB\u0152\u0153\u0178\xBF\xC0\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\xD0\xD1\xD2\xD3\xD4\xD5\xD6\xD7\xD8\xD9\xDA\xDB\xDC\xDD\xDE\xDF\xE0\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\xF0\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\xFD\xFE\xFF"},cp28605:"iso885915",iso885916:{type:"_sbcs",chars:"\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u0104\u0105\u0141\u20AC\u201E\u0160\xA7\u0161\xA9\u0218\xAB\u0179\xAD\u017A\u017B\xB0\xB1\u010C\u0142\u017D\u201D\xB6\xB7\u017E\u010D\u0219\xBB\u0152\u0153\u0178\u017C\xC0\xC1\xC2\u0102\xC4\u0106\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\u0110\u0143\xD2\xD3\xD4\u0150\xD6\u015A\u0170\xD9\xDA\xDB\xDC\u0118\u021A\xDF\xE0\xE1\xE2\u0103\xE4\u0107\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\u0111\u0144\xF2\xF3\xF4\u0151\xF6\u015B\u0171\xF9\xFA\xFB\xFC\u0119\u021B\xFF"},cp28606:"iso885916",cp437:{type:"_sbcs",chars:"\xC7\xFC\xE9\xE2\xE4\xE0\xE5\xE7\xEA\xEB\xE8\xEF\xEE\xEC\xC4\xC5\xC9\xE6\xC6\xF4\xF6\xF2\xFB\xF9\xFF\xD6\xDC\xA2\xA3\xA5\u20A7\u0192\xE1\xED\xF3\xFA\xF1\xD1\xAA\xBA\xBF\u2310\xAC\xBD\xBC\xA1\xAB\xBB\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03B1\xDF\u0393\u03C0\u03A3\u03C3\xB5\u03C4\u03A6\u0398\u03A9\u03B4\u221E\u03C6\u03B5\u2229\u2261\xB1\u2265\u2264\u2320\u2321\xF7\u2248\xB0\u2219\xB7\u221A\u207F\xB2\u25A0\xA0"},ibm437:"cp437",csibm437:"cp437",cp737:{type:"_sbcs",chars:"\u0391\u0392\u0393\u0394\u0395\u0396\u0397\u0398\u0399\u039A\u039B\u039C\u039D\u039E\u039F\u03A0\u03A1\u03A3\u03A4\u03A5\u03A6\u03A7\u03A8\u03A9\u03B1\u03B2\u03B3\u03B4\u03B5\u03B6\u03B7\u03B8\u03B9\u03BA\u03BB\u03BC\u03BD\u03BE\u03BF\u03C0\u03C1\u03C3\u03C2\u03C4\u03C5\u03C6\u03C7\u03C8\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03C9\u03AC\u03AD\u03AE\u03CA\u03AF\u03CC\u03CD\u03CB\u03CE\u0386\u0388\u0389\u038A\u038C\u038E\u038F\xB1\u2265\u2264\u03AA\u03AB\xF7\u2248\xB0\u2219\xB7\u221A\u207F\xB2\u25A0\xA0"},ibm737:"cp737",csibm737:"cp737",cp775:{type:"_sbcs",chars:"\u0106\xFC\xE9\u0101\xE4\u0123\xE5\u0107\u0142\u0113\u0156\u0157\u012B\u0179\xC4\xC5\xC9\xE6\xC6\u014D\xF6\u0122\xA2\u015A\u015B\xD6\xDC\xF8\xA3\xD8\xD7\xA4\u0100\u012A\xF3\u017B\u017C\u017A\u201D\xA6\xA9\xAE\xAC\xBD\xBC\u0141\xAB\xBB\u2591\u2592\u2593\u2502\u2524\u0104\u010C\u0118\u0116\u2563\u2551\u2557\u255D\u012E\u0160\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u0172\u016A\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u017D\u0105\u010D\u0119\u0117\u012F\u0161\u0173\u016B\u017E\u2518\u250C\u2588\u2584\u258C\u2590\u2580\xD3\xDF\u014C\u0143\xF5\xD5\xB5\u0144\u0136\u0137\u013B\u013C\u0146\u0112\u0145\u2019\xAD\xB1\u201C\xBE\xB6\xA7\xF7\u201E\xB0\u2219\xB7\xB9\xB3\xB2\u25A0\xA0"},ibm775:"cp775",csibm775:"cp775",cp850:{type:"_sbcs",chars:"\xC7\xFC\xE9\xE2\xE4\xE0\xE5\xE7\xEA\xEB\xE8\xEF\xEE\xEC\xC4\xC5\xC9\xE6\xC6\xF4\xF6\xF2\xFB\xF9\xFF\xD6\xDC\xF8\xA3\xD8\xD7\u0192\xE1\xED\xF3\xFA\xF1\xD1\xAA\xBA\xBF\xAE\xAC\xBD\xBC\xA1\xAB\xBB\u2591\u2592\u2593\u2502\u2524\xC1\xC2\xC0\xA9\u2563\u2551\u2557\u255D\xA2\xA5\u2510\u2514\u2534\u252C\u251C\u2500\u253C\xE3\xC3\u255A\u2554\u2569\u2566\u2560\u2550\u256C\xA4\xF0\xD0\xCA\xCB\xC8\u0131\xCD\xCE\xCF\u2518\u250C\u2588\u2584\xA6\xCC\u2580\xD3\xDF\xD4\xD2\xF5\xD5\xB5\xFE\xDE\xDA\xDB\xD9\xFD\xDD\xAF\xB4\xAD\xB1\u2017\xBE\xB6\xA7\xF7\xB8\xB0\xA8\xB7\xB9\xB3\xB2\u25A0\xA0"},ibm850:"cp850",csibm850:"cp850",cp852:{type:"_sbcs",chars:"\xC7\xFC\xE9\xE2\xE4\u016F\u0107\xE7\u0142\xEB\u0150\u0151\xEE\u0179\xC4\u0106\xC9\u0139\u013A\xF4\xF6\u013D\u013E\u015A\u015B\xD6\xDC\u0164\u0165\u0141\xD7\u010D\xE1\xED\xF3\xFA\u0104\u0105\u017D\u017E\u0118\u0119\xAC\u017A\u010C\u015F\xAB\xBB\u2591\u2592\u2593\u2502\u2524\xC1\xC2\u011A\u015E\u2563\u2551\u2557\u255D\u017B\u017C\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u0102\u0103\u255A\u2554\u2569\u2566\u2560\u2550\u256C\xA4\u0111\u0110\u010E\xCB\u010F\u0147\xCD\xCE\u011B\u2518\u250C\u2588\u2584\u0162\u016E\u2580\xD3\xDF\xD4\u0143\u0144\u0148\u0160\u0161\u0154\xDA\u0155\u0170\xFD\xDD\u0163\xB4\xAD\u02DD\u02DB\u02C7\u02D8\xA7\xF7\xB8\xB0\xA8\u02D9\u0171\u0158\u0159\u25A0\xA0"},ibm852:"cp852",csibm852:"cp852",cp855:{type:"_sbcs",chars:"\u0452\u0402\u0453\u0403\u0451\u0401\u0454\u0404\u0455\u0405\u0456\u0406\u0457\u0407\u0458\u0408\u0459\u0409\u045A\u040A\u045B\u040B\u045C\u040C\u045E\u040E\u045F\u040F\u044E\u042E\u044A\u042A\u0430\u0410\u0431\u0411\u0446\u0426\u0434\u0414\u0435\u0415\u0444\u0424\u0433\u0413\xAB\xBB\u2591\u2592\u2593\u2502\u2524\u0445\u0425\u0438\u0418\u2563\u2551\u2557\u255D\u0439\u0419\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u043A\u041A\u255A\u2554\u2569\u2566\u2560\u2550\u256C\xA4\u043B\u041B\u043C\u041C\u043D\u041D\u043E\u041E\u043F\u2518\u250C\u2588\u2584\u041F\u044F\u2580\u042F\u0440\u0420\u0441\u0421\u0442\u0422\u0443\u0423\u0436\u0416\u0432\u0412\u044C\u042C\u2116\xAD\u044B\u042B\u0437\u0417\u0448\u0428\u044D\u042D\u0449\u0429\u0447\u0427\xA7\u25A0\xA0"},ibm855:"cp855",csibm855:"cp855",cp856:{type:"_sbcs",chars:"\u05D0\u05D1\u05D2\u05D3\u05D4\u05D5\u05D6\u05D7\u05D8\u05D9\u05DA\u05DB\u05DC\u05DD\u05DE\u05DF\u05E0\u05E1\u05E2\u05E3\u05E4\u05E5\u05E6\u05E7\u05E8\u05E9\u05EA\uFFFD\xA3\uFFFD\xD7\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\xAE\xAC\xBD\xBC\uFFFD\xAB\xBB\u2591\u2592\u2593\u2502\u2524\uFFFD\uFFFD\uFFFD\xA9\u2563\u2551\u2557\u255D\xA2\xA5\u2510\u2514\u2534\u252C\u251C\u2500\u253C\uFFFD\uFFFD\u255A\u2554\u2569\u2566\u2560\u2550\u256C\xA4\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u2518\u250C\u2588\u2584\xA6\uFFFD\u2580\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\xB5\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\xAF\xB4\xAD\xB1\u2017\xBE\xB6\xA7\xF7\xB8\xB0\xA8\xB7\xB9\xB3\xB2\u25A0\xA0"},ibm856:"cp856",csibm856:"cp856",cp857:{type:"_sbcs",chars:"\xC7\xFC\xE9\xE2\xE4\xE0\xE5\xE7\xEA\xEB\xE8\xEF\xEE\u0131\xC4\xC5\xC9\xE6\xC6\xF4\xF6\xF2\xFB\xF9\u0130\xD6\xDC\xF8\xA3\xD8\u015E\u015F\xE1\xED\xF3\xFA\xF1\xD1\u011E\u011F\xBF\xAE\xAC\xBD\xBC\xA1\xAB\xBB\u2591\u2592\u2593\u2502\u2524\xC1\xC2\xC0\xA9\u2563\u2551\u2557\u255D\xA2\xA5\u2510\u2514\u2534\u252C\u251C\u2500\u253C\xE3\xC3\u255A\u2554\u2569\u2566\u2560\u2550\u256C\xA4\xBA\xAA\xCA\xCB\xC8\uFFFD\xCD\xCE\xCF\u2518\u250C\u2588\u2584\xA6\xCC\u2580\xD3\xDF\xD4\xD2\xF5\xD5\xB5\uFFFD\xD7\xDA\xDB\xD9\xEC\xFF\xAF\xB4\xAD\xB1\uFFFD\xBE\xB6\xA7\xF7\xB8\xB0\xA8\xB7\xB9\xB3\xB2\u25A0\xA0"},ibm857:"cp857",csibm857:"cp857",cp858:{type:"_sbcs",chars:"\xC7\xFC\xE9\xE2\xE4\xE0\xE5\xE7\xEA\xEB\xE8\xEF\xEE\xEC\xC4\xC5\xC9\xE6\xC6\xF4\xF6\xF2\xFB\xF9\xFF\xD6\xDC\xF8\xA3\xD8\xD7\u0192\xE1\xED\xF3\xFA\xF1\xD1\xAA\xBA\xBF\xAE\xAC\xBD\xBC\xA1\xAB\xBB\u2591\u2592\u2593\u2502\u2524\xC1\xC2\xC0\xA9\u2563\u2551\u2557\u255D\xA2\xA5\u2510\u2514\u2534\u252C\u251C\u2500\u253C\xE3\xC3\u255A\u2554\u2569\u2566\u2560\u2550\u256C\xA4\xF0\xD0\xCA\xCB\xC8\u20AC\xCD\xCE\xCF\u2518\u250C\u2588\u2584\xA6\xCC\u2580\xD3\xDF\xD4\xD2\xF5\xD5\xB5\xFE\xDE\xDA\xDB\xD9\xFD\xDD\xAF\xB4\xAD\xB1\u2017\xBE\xB6\xA7\xF7\xB8\xB0\xA8\xB7\xB9\xB3\xB2\u25A0\xA0"},ibm858:"cp858",csibm858:"cp858",cp860:{type:"_sbcs",chars:"\xC7\xFC\xE9\xE2\xE3\xE0\xC1\xE7\xEA\xCA\xE8\xCD\xD4\xEC\xC3\xC2\xC9\xC0\xC8\xF4\xF5\xF2\xDA\xF9\xCC\xD5\xDC\xA2\xA3\xD9\u20A7\xD3\xE1\xED\xF3\xFA\xF1\xD1\xAA\xBA\xBF\xD2\xAC\xBD\xBC\xA1\xAB\xBB\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03B1\xDF\u0393\u03C0\u03A3\u03C3\xB5\u03C4\u03A6\u0398\u03A9\u03B4\u221E\u03C6\u03B5\u2229\u2261\xB1\u2265\u2264\u2320\u2321\xF7\u2248\xB0\u2219\xB7\u221A\u207F\xB2\u25A0\xA0"},ibm860:"cp860",csibm860:"cp860",cp861:{type:"_sbcs",chars:"\xC7\xFC\xE9\xE2\xE4\xE0\xE5\xE7\xEA\xEB\xE8\xD0\xF0\xDE\xC4\xC5\xC9\xE6\xC6\xF4\xF6\xFE\xFB\xDD\xFD\xD6\xDC\xF8\xA3\xD8\u20A7\u0192\xE1\xED\xF3\xFA\xC1\xCD\xD3\xDA\xBF\u2310\xAC\xBD\xBC\xA1\xAB\xBB\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03B1\xDF\u0393\u03C0\u03A3\u03C3\xB5\u03C4\u03A6\u0398\u03A9\u03B4\u221E\u03C6\u03B5\u2229\u2261\xB1\u2265\u2264\u2320\u2321\xF7\u2248\xB0\u2219\xB7\u221A\u207F\xB2\u25A0\xA0"},ibm861:"cp861",csibm861:"cp861",cp862:{type:"_sbcs",chars:"\u05D0\u05D1\u05D2\u05D3\u05D4\u05D5\u05D6\u05D7\u05D8\u05D9\u05DA\u05DB\u05DC\u05DD\u05DE\u05DF\u05E0\u05E1\u05E2\u05E3\u05E4\u05E5\u05E6\u05E7\u05E8\u05E9\u05EA\xA2\xA3\xA5\u20A7\u0192\xE1\xED\xF3\xFA\xF1\xD1\xAA\xBA\xBF\u2310\xAC\xBD\xBC\xA1\xAB\xBB\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03B1\xDF\u0393\u03C0\u03A3\u03C3\xB5\u03C4\u03A6\u0398\u03A9\u03B4\u221E\u03C6\u03B5\u2229\u2261\xB1\u2265\u2264\u2320\u2321\xF7\u2248\xB0\u2219\xB7\u221A\u207F\xB2\u25A0\xA0"},ibm862:"cp862",csibm862:"cp862",cp863:{type:"_sbcs",chars:"\xC7\xFC\xE9\xE2\xC2\xE0\xB6\xE7\xEA\xEB\xE8\xEF\xEE\u2017\xC0\xA7\xC9\xC8\xCA\xF4\xCB\xCF\xFB\xF9\xA4\xD4\xDC\xA2\xA3\xD9\xDB\u0192\xA6\xB4\xF3\xFA\xA8\xB8\xB3\xAF\xCE\u2310\xAC\xBD\xBC\xBE\xAB\xBB\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03B1\xDF\u0393\u03C0\u03A3\u03C3\xB5\u03C4\u03A6\u0398\u03A9\u03B4\u221E\u03C6\u03B5\u2229\u2261\xB1\u2265\u2264\u2320\u2321\xF7\u2248\xB0\u2219\xB7\u221A\u207F\xB2\u25A0\xA0"},ibm863:"cp863",csibm863:"cp863",cp864:{type:"_sbcs",chars:`\0\x07\b +\v\f\r\x1B !"#$\u066A&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_\`abcdefghijklmnopqrstuvwxyz{|}~\x7F\xB0\xB7\u2219\u221A\u2592\u2500\u2502\u253C\u2524\u252C\u251C\u2534\u2510\u250C\u2514\u2518\u03B2\u221E\u03C6\xB1\xBD\xBC\u2248\xAB\xBB\uFEF7\uFEF8\uFFFD\uFFFD\uFEFB\uFEFC\uFFFD\xA0\xAD\uFE82\xA3\xA4\uFE84\uFFFD\uFFFD\uFE8E\uFE8F\uFE95\uFE99\u060C\uFE9D\uFEA1\uFEA5\u0660\u0661\u0662\u0663\u0664\u0665\u0666\u0667\u0668\u0669\uFED1\u061B\uFEB1\uFEB5\uFEB9\u061F\xA2\uFE80\uFE81\uFE83\uFE85\uFECA\uFE8B\uFE8D\uFE91\uFE93\uFE97\uFE9B\uFE9F\uFEA3\uFEA7\uFEA9\uFEAB\uFEAD\uFEAF\uFEB3\uFEB7\uFEBB\uFEBF\uFEC1\uFEC5\uFECB\uFECF\xA6\xAC\xF7\xD7\uFEC9\u0640\uFED3\uFED7\uFEDB\uFEDF\uFEE3\uFEE7\uFEEB\uFEED\uFEEF\uFEF3\uFEBD\uFECC\uFECE\uFECD\uFEE1\uFE7D\u0651\uFEE5\uFEE9\uFEEC\uFEF0\uFEF2\uFED0\uFED5\uFEF5\uFEF6\uFEDD\uFED9\uFEF1\u25A0\uFFFD`},ibm864:"cp864",csibm864:"cp864",cp865:{type:"_sbcs",chars:"\xC7\xFC\xE9\xE2\xE4\xE0\xE5\xE7\xEA\xEB\xE8\xEF\xEE\xEC\xC4\xC5\xC9\xE6\xC6\xF4\xF6\xF2\xFB\xF9\xFF\xD6\xDC\xF8\xA3\xD8\u20A7\u0192\xE1\xED\xF3\xFA\xF1\xD1\xAA\xBA\xBF\u2310\xAC\xBD\xBC\xA1\xAB\xA4\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03B1\xDF\u0393\u03C0\u03A3\u03C3\xB5\u03C4\u03A6\u0398\u03A9\u03B4\u221E\u03C6\u03B5\u2229\u2261\xB1\u2265\u2264\u2320\u2321\xF7\u2248\xB0\u2219\xB7\u221A\u207F\xB2\u25A0\xA0"},ibm865:"cp865",csibm865:"cp865",cp866:{type:"_sbcs",chars:"\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F\u0401\u0451\u0404\u0454\u0407\u0457\u040E\u045E\xB0\u2219\xB7\u221A\u2116\xA4\u25A0\xA0"},ibm866:"cp866",csibm866:"cp866",cp869:{type:"_sbcs",chars:"\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u0386\uFFFD\xB7\xAC\xA6\u2018\u2019\u0388\u2015\u0389\u038A\u03AA\u038C\uFFFD\uFFFD\u038E\u03AB\xA9\u038F\xB2\xB3\u03AC\xA3\u03AD\u03AE\u03AF\u03CA\u0390\u03CC\u03CD\u0391\u0392\u0393\u0394\u0395\u0396\u0397\xBD\u0398\u0399\xAB\xBB\u2591\u2592\u2593\u2502\u2524\u039A\u039B\u039C\u039D\u2563\u2551\u2557\u255D\u039E\u039F\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u03A0\u03A1\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u03A3\u03A4\u03A5\u03A6\u03A7\u03A8\u03A9\u03B1\u03B2\u03B3\u2518\u250C\u2588\u2584\u03B4\u03B5\u2580\u03B6\u03B7\u03B8\u03B9\u03BA\u03BB\u03BC\u03BD\u03BE\u03BF\u03C0\u03C1\u03C3\u03C2\u03C4\u0384\xAD\xB1\u03C5\u03C6\u03C7\xA7\u03C8\u0385\xB0\xA8\u03C9\u03CB\u03B0\u03CE\u25A0\xA0"},ibm869:"cp869",csibm869:"cp869",cp922:{type:"_sbcs",chars:"\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\u203E\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF\xC0\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\u0160\xD1\xD2\xD3\xD4\xD5\xD6\xD7\xD8\xD9\xDA\xDB\xDC\xDD\u017D\xDF\xE0\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\u0161\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\xFD\u017E\xFF"},ibm922:"cp922",csibm922:"cp922",cp1046:{type:"_sbcs",chars:"\uFE88\xD7\xF7\uF8F6\uF8F5\uF8F4\uF8F7\uFE71\x88\u25A0\u2502\u2500\u2510\u250C\u2514\u2518\uFE79\uFE7B\uFE7D\uFE7F\uFE77\uFE8A\uFEF0\uFEF3\uFEF2\uFECE\uFECF\uFED0\uFEF6\uFEF8\uFEFA\uFEFC\xA0\uF8FA\uF8F9\uF8F8\xA4\uF8FB\uFE8B\uFE91\uFE97\uFE9B\uFE9F\uFEA3\u060C\xAD\uFEA7\uFEB3\u0660\u0661\u0662\u0663\u0664\u0665\u0666\u0667\u0668\u0669\uFEB7\u061B\uFEBB\uFEBF\uFECA\u061F\uFECB\u0621\u0622\u0623\u0624\u0625\u0626\u0627\u0628\u0629\u062A\u062B\u062C\u062D\u062E\u062F\u0630\u0631\u0632\u0633\u0634\u0635\u0636\u0637\uFEC7\u0639\u063A\uFECC\uFE82\uFE84\uFE8E\uFED3\u0640\u0641\u0642\u0643\u0644\u0645\u0646\u0647\u0648\u0649\u064A\u064B\u064C\u064D\u064E\u064F\u0650\u0651\u0652\uFED7\uFEDB\uFEDF\uF8FC\uFEF5\uFEF7\uFEF9\uFEFB\uFEE3\uFEE7\uFEEC\uFEE9\uFFFD"},ibm1046:"cp1046",csibm1046:"cp1046",cp1124:{type:"_sbcs",chars:"\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u0401\u0402\u0490\u0404\u0405\u0406\u0407\u0408\u0409\u040A\u040B\u040C\xAD\u040E\u040F\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F\u2116\u0451\u0452\u0491\u0454\u0455\u0456\u0457\u0458\u0459\u045A\u045B\u045C\xA7\u045E\u045F"},ibm1124:"cp1124",csibm1124:"cp1124",cp1125:{type:"_sbcs",chars:"\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F\u0401\u0451\u0490\u0491\u0404\u0454\u0406\u0456\u0407\u0457\xB7\u221A\u2116\xA4\u25A0\xA0"},ibm1125:"cp1125",csibm1125:"cp1125",cp1129:{type:"_sbcs",chars:"\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\u0153\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\u0178\xB5\xB6\xB7\u0152\xB9\xBA\xBB\xBC\xBD\xBE\xBF\xC0\xC1\xC2\u0102\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\u0300\xCD\xCE\xCF\u0110\xD1\u0309\xD3\xD4\u01A0\xD6\xD7\xD8\xD9\xDA\xDB\xDC\u01AF\u0303\xDF\xE0\xE1\xE2\u0103\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\u0301\xED\xEE\xEF\u0111\xF1\u0323\xF3\xF4\u01A1\xF6\xF7\xF8\xF9\xFA\xFB\xFC\u01B0\u20AB\xFF"},ibm1129:"cp1129",csibm1129:"cp1129",cp1133:{type:"_sbcs",chars:"\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u0E81\u0E82\u0E84\u0E87\u0E88\u0EAA\u0E8A\u0E8D\u0E94\u0E95\u0E96\u0E97\u0E99\u0E9A\u0E9B\u0E9C\u0E9D\u0E9E\u0E9F\u0EA1\u0EA2\u0EA3\u0EA5\u0EA7\u0EAB\u0EAD\u0EAE\uFFFD\uFFFD\uFFFD\u0EAF\u0EB0\u0EB2\u0EB3\u0EB4\u0EB5\u0EB6\u0EB7\u0EB8\u0EB9\u0EBC\u0EB1\u0EBB\u0EBD\uFFFD\uFFFD\uFFFD\u0EC0\u0EC1\u0EC2\u0EC3\u0EC4\u0EC8\u0EC9\u0ECA\u0ECB\u0ECC\u0ECD\u0EC6\uFFFD\u0EDC\u0EDD\u20AD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u0ED0\u0ED1\u0ED2\u0ED3\u0ED4\u0ED5\u0ED6\u0ED7\u0ED8\u0ED9\uFFFD\uFFFD\xA2\xAC\xA6\uFFFD"},ibm1133:"cp1133",csibm1133:"cp1133",cp1161:{type:"_sbcs",chars:"\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u0E48\u0E01\u0E02\u0E03\u0E04\u0E05\u0E06\u0E07\u0E08\u0E09\u0E0A\u0E0B\u0E0C\u0E0D\u0E0E\u0E0F\u0E10\u0E11\u0E12\u0E13\u0E14\u0E15\u0E16\u0E17\u0E18\u0E19\u0E1A\u0E1B\u0E1C\u0E1D\u0E1E\u0E1F\u0E20\u0E21\u0E22\u0E23\u0E24\u0E25\u0E26\u0E27\u0E28\u0E29\u0E2A\u0E2B\u0E2C\u0E2D\u0E2E\u0E2F\u0E30\u0E31\u0E32\u0E33\u0E34\u0E35\u0E36\u0E37\u0E38\u0E39\u0E3A\u0E49\u0E4A\u0E4B\u20AC\u0E3F\u0E40\u0E41\u0E42\u0E43\u0E44\u0E45\u0E46\u0E47\u0E48\u0E49\u0E4A\u0E4B\u0E4C\u0E4D\u0E4E\u0E4F\u0E50\u0E51\u0E52\u0E53\u0E54\u0E55\u0E56\u0E57\u0E58\u0E59\u0E5A\u0E5B\xA2\xAC\xA6\xA0"},ibm1161:"cp1161",csibm1161:"cp1161",cp1162:{type:"_sbcs",chars:"\u20AC\x81\x82\x83\x84\u2026\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\u2018\u2019\u201C\u201D\u2022\u2013\u2014\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u0E01\u0E02\u0E03\u0E04\u0E05\u0E06\u0E07\u0E08\u0E09\u0E0A\u0E0B\u0E0C\u0E0D\u0E0E\u0E0F\u0E10\u0E11\u0E12\u0E13\u0E14\u0E15\u0E16\u0E17\u0E18\u0E19\u0E1A\u0E1B\u0E1C\u0E1D\u0E1E\u0E1F\u0E20\u0E21\u0E22\u0E23\u0E24\u0E25\u0E26\u0E27\u0E28\u0E29\u0E2A\u0E2B\u0E2C\u0E2D\u0E2E\u0E2F\u0E30\u0E31\u0E32\u0E33\u0E34\u0E35\u0E36\u0E37\u0E38\u0E39\u0E3A\uFFFD\uFFFD\uFFFD\uFFFD\u0E3F\u0E40\u0E41\u0E42\u0E43\u0E44\u0E45\u0E46\u0E47\u0E48\u0E49\u0E4A\u0E4B\u0E4C\u0E4D\u0E4E\u0E4F\u0E50\u0E51\u0E52\u0E53\u0E54\u0E55\u0E56\u0E57\u0E58\u0E59\u0E5A\u0E5B\uFFFD\uFFFD\uFFFD\uFFFD"},ibm1162:"cp1162",csibm1162:"cp1162",cp1163:{type:"_sbcs",chars:"\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\xA1\xA2\xA3\u20AC\xA5\xA6\xA7\u0153\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\u0178\xB5\xB6\xB7\u0152\xB9\xBA\xBB\xBC\xBD\xBE\xBF\xC0\xC1\xC2\u0102\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\u0300\xCD\xCE\xCF\u0110\xD1\u0309\xD3\xD4\u01A0\xD6\xD7\xD8\xD9\xDA\xDB\xDC\u01AF\u0303\xDF\xE0\xE1\xE2\u0103\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\u0301\xED\xEE\xEF\u0111\xF1\u0323\xF3\xF4\u01A1\xF6\xF7\xF8\xF9\xFA\xFB\xFC\u01B0\u20AB\xFF"},ibm1163:"cp1163",csibm1163:"cp1163",maccroatian:{type:"_sbcs",chars:"\xC4\xC5\xC7\xC9\xD1\xD6\xDC\xE1\xE0\xE2\xE4\xE3\xE5\xE7\xE9\xE8\xEA\xEB\xED\xEC\xEE\xEF\xF1\xF3\xF2\xF4\xF6\xF5\xFA\xF9\xFB\xFC\u2020\xB0\xA2\xA3\xA7\u2022\xB6\xDF\xAE\u0160\u2122\xB4\xA8\u2260\u017D\xD8\u221E\xB1\u2264\u2265\u2206\xB5\u2202\u2211\u220F\u0161\u222B\xAA\xBA\u2126\u017E\xF8\xBF\xA1\xAC\u221A\u0192\u2248\u0106\xAB\u010C\u2026\xA0\xC0\xC3\xD5\u0152\u0153\u0110\u2014\u201C\u201D\u2018\u2019\xF7\u25CA\uFFFD\xA9\u2044\xA4\u2039\u203A\xC6\xBB\u2013\xB7\u201A\u201E\u2030\xC2\u0107\xC1\u010D\xC8\xCD\xCE\xCF\xCC\xD3\xD4\u0111\xD2\xDA\xDB\xD9\u0131\u02C6\u02DC\xAF\u03C0\xCB\u02DA\xB8\xCA\xE6\u02C7"},maccyrillic:{type:"_sbcs",chars:"\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u2020\xB0\xA2\xA3\xA7\u2022\xB6\u0406\xAE\xA9\u2122\u0402\u0452\u2260\u0403\u0453\u221E\xB1\u2264\u2265\u0456\xB5\u2202\u0408\u0404\u0454\u0407\u0457\u0409\u0459\u040A\u045A\u0458\u0405\xAC\u221A\u0192\u2248\u2206\xAB\xBB\u2026\xA0\u040B\u045B\u040C\u045C\u0455\u2013\u2014\u201C\u201D\u2018\u2019\xF7\u201E\u040E\u045E\u040F\u045F\u2116\u0401\u0451\u044F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\xA4"},macgreek:{type:"_sbcs",chars:"\xC4\xB9\xB2\xC9\xB3\xD6\xDC\u0385\xE0\xE2\xE4\u0384\xA8\xE7\xE9\xE8\xEA\xEB\xA3\u2122\xEE\xEF\u2022\xBD\u2030\xF4\xF6\xA6\xAD\xF9\xFB\xFC\u2020\u0393\u0394\u0398\u039B\u039E\u03A0\xDF\xAE\xA9\u03A3\u03AA\xA7\u2260\xB0\u0387\u0391\xB1\u2264\u2265\xA5\u0392\u0395\u0396\u0397\u0399\u039A\u039C\u03A6\u03AB\u03A8\u03A9\u03AC\u039D\xAC\u039F\u03A1\u2248\u03A4\xAB\xBB\u2026\xA0\u03A5\u03A7\u0386\u0388\u0153\u2013\u2015\u201C\u201D\u2018\u2019\xF7\u0389\u038A\u038C\u038E\u03AD\u03AE\u03AF\u03CC\u038F\u03CD\u03B1\u03B2\u03C8\u03B4\u03B5\u03C6\u03B3\u03B7\u03B9\u03BE\u03BA\u03BB\u03BC\u03BD\u03BF\u03C0\u03CE\u03C1\u03C3\u03C4\u03B8\u03C9\u03C2\u03C7\u03C5\u03B6\u03CA\u03CB\u0390\u03B0\uFFFD"},maciceland:{type:"_sbcs",chars:"\xC4\xC5\xC7\xC9\xD1\xD6\xDC\xE1\xE0\xE2\xE4\xE3\xE5\xE7\xE9\xE8\xEA\xEB\xED\xEC\xEE\xEF\xF1\xF3\xF2\xF4\xF6\xF5\xFA\xF9\xFB\xFC\xDD\xB0\xA2\xA3\xA7\u2022\xB6\xDF\xAE\xA9\u2122\xB4\xA8\u2260\xC6\xD8\u221E\xB1\u2264\u2265\xA5\xB5\u2202\u2211\u220F\u03C0\u222B\xAA\xBA\u2126\xE6\xF8\xBF\xA1\xAC\u221A\u0192\u2248\u2206\xAB\xBB\u2026\xA0\xC0\xC3\xD5\u0152\u0153\u2013\u2014\u201C\u201D\u2018\u2019\xF7\u25CA\xFF\u0178\u2044\xA4\xD0\xF0\xDE\xFE\xFD\xB7\u201A\u201E\u2030\xC2\xCA\xC1\xCB\xC8\xCD\xCE\xCF\xCC\xD3\xD4\uFFFD\xD2\xDA\xDB\xD9\u0131\u02C6\u02DC\xAF\u02D8\u02D9\u02DA\xB8\u02DD\u02DB\u02C7"},macroman:{type:"_sbcs",chars:"\xC4\xC5\xC7\xC9\xD1\xD6\xDC\xE1\xE0\xE2\xE4\xE3\xE5\xE7\xE9\xE8\xEA\xEB\xED\xEC\xEE\xEF\xF1\xF3\xF2\xF4\xF6\xF5\xFA\xF9\xFB\xFC\u2020\xB0\xA2\xA3\xA7\u2022\xB6\xDF\xAE\xA9\u2122\xB4\xA8\u2260\xC6\xD8\u221E\xB1\u2264\u2265\xA5\xB5\u2202\u2211\u220F\u03C0\u222B\xAA\xBA\u2126\xE6\xF8\xBF\xA1\xAC\u221A\u0192\u2248\u2206\xAB\xBB\u2026\xA0\xC0\xC3\xD5\u0152\u0153\u2013\u2014\u201C\u201D\u2018\u2019\xF7\u25CA\xFF\u0178\u2044\xA4\u2039\u203A\uFB01\uFB02\u2021\xB7\u201A\u201E\u2030\xC2\xCA\xC1\xCB\xC8\xCD\xCE\xCF\xCC\xD3\xD4\uFFFD\xD2\xDA\xDB\xD9\u0131\u02C6\u02DC\xAF\u02D8\u02D9\u02DA\xB8\u02DD\u02DB\u02C7"},macromania:{type:"_sbcs",chars:"\xC4\xC5\xC7\xC9\xD1\xD6\xDC\xE1\xE0\xE2\xE4\xE3\xE5\xE7\xE9\xE8\xEA\xEB\xED\xEC\xEE\xEF\xF1\xF3\xF2\xF4\xF6\xF5\xFA\xF9\xFB\xFC\u2020\xB0\xA2\xA3\xA7\u2022\xB6\xDF\xAE\xA9\u2122\xB4\xA8\u2260\u0102\u015E\u221E\xB1\u2264\u2265\xA5\xB5\u2202\u2211\u220F\u03C0\u222B\xAA\xBA\u2126\u0103\u015F\xBF\xA1\xAC\u221A\u0192\u2248\u2206\xAB\xBB\u2026\xA0\xC0\xC3\xD5\u0152\u0153\u2013\u2014\u201C\u201D\u2018\u2019\xF7\u25CA\xFF\u0178\u2044\xA4\u2039\u203A\u0162\u0163\u2021\xB7\u201A\u201E\u2030\xC2\xCA\xC1\xCB\xC8\xCD\xCE\xCF\xCC\xD3\xD4\uFFFD\xD2\xDA\xDB\xD9\u0131\u02C6\u02DC\xAF\u02D8\u02D9\u02DA\xB8\u02DD\u02DB\u02C7"},macthai:{type:"_sbcs",chars:"\xAB\xBB\u2026\uF88C\uF88F\uF892\uF895\uF898\uF88B\uF88E\uF891\uF894\uF897\u201C\u201D\uF899\uFFFD\u2022\uF884\uF889\uF885\uF886\uF887\uF888\uF88A\uF88D\uF890\uF893\uF896\u2018\u2019\uFFFD\xA0\u0E01\u0E02\u0E03\u0E04\u0E05\u0E06\u0E07\u0E08\u0E09\u0E0A\u0E0B\u0E0C\u0E0D\u0E0E\u0E0F\u0E10\u0E11\u0E12\u0E13\u0E14\u0E15\u0E16\u0E17\u0E18\u0E19\u0E1A\u0E1B\u0E1C\u0E1D\u0E1E\u0E1F\u0E20\u0E21\u0E22\u0E23\u0E24\u0E25\u0E26\u0E27\u0E28\u0E29\u0E2A\u0E2B\u0E2C\u0E2D\u0E2E\u0E2F\u0E30\u0E31\u0E32\u0E33\u0E34\u0E35\u0E36\u0E37\u0E38\u0E39\u0E3A\uFEFF\u200B\u2013\u2014\u0E3F\u0E40\u0E41\u0E42\u0E43\u0E44\u0E45\u0E46\u0E47\u0E48\u0E49\u0E4A\u0E4B\u0E4C\u0E4D\u2122\u0E4F\u0E50\u0E51\u0E52\u0E53\u0E54\u0E55\u0E56\u0E57\u0E58\u0E59\xAE\xA9\uFFFD\uFFFD\uFFFD\uFFFD"},macturkish:{type:"_sbcs",chars:"\xC4\xC5\xC7\xC9\xD1\xD6\xDC\xE1\xE0\xE2\xE4\xE3\xE5\xE7\xE9\xE8\xEA\xEB\xED\xEC\xEE\xEF\xF1\xF3\xF2\xF4\xF6\xF5\xFA\xF9\xFB\xFC\u2020\xB0\xA2\xA3\xA7\u2022\xB6\xDF\xAE\xA9\u2122\xB4\xA8\u2260\xC6\xD8\u221E\xB1\u2264\u2265\xA5\xB5\u2202\u2211\u220F\u03C0\u222B\xAA\xBA\u2126\xE6\xF8\xBF\xA1\xAC\u221A\u0192\u2248\u2206\xAB\xBB\u2026\xA0\xC0\xC3\xD5\u0152\u0153\u2013\u2014\u201C\u201D\u2018\u2019\xF7\u25CA\xFF\u0178\u011E\u011F\u0130\u0131\u015E\u015F\u2021\xB7\u201A\u201E\u2030\xC2\xCA\xC1\xCB\xC8\xCD\xCE\xCF\xCC\xD3\xD4\uFFFD\xD2\xDA\xDB\xD9\uFFFD\u02C6\u02DC\xAF\u02D8\u02D9\u02DA\xB8\u02DD\u02DB\u02C7"},macukraine:{type:"_sbcs",chars:"\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u2020\xB0\u0490\xA3\xA7\u2022\xB6\u0406\xAE\xA9\u2122\u0402\u0452\u2260\u0403\u0453\u221E\xB1\u2264\u2265\u0456\xB5\u0491\u0408\u0404\u0454\u0407\u0457\u0409\u0459\u040A\u045A\u0458\u0405\xAC\u221A\u0192\u2248\u2206\xAB\xBB\u2026\xA0\u040B\u045B\u040C\u045C\u0455\u2013\u2014\u201C\u201D\u2018\u2019\xF7\u201E\u040E\u045E\u040F\u045F\u2116\u0401\u0451\u044F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\xA4"},koi8r:{type:"_sbcs",chars:"\u2500\u2502\u250C\u2510\u2514\u2518\u251C\u2524\u252C\u2534\u253C\u2580\u2584\u2588\u258C\u2590\u2591\u2592\u2593\u2320\u25A0\u2219\u221A\u2248\u2264\u2265\xA0\u2321\xB0\xB2\xB7\xF7\u2550\u2551\u2552\u0451\u2553\u2554\u2555\u2556\u2557\u2558\u2559\u255A\u255B\u255C\u255D\u255E\u255F\u2560\u2561\u0401\u2562\u2563\u2564\u2565\u2566\u2567\u2568\u2569\u256A\u256B\u256C\xA9\u044E\u0430\u0431\u0446\u0434\u0435\u0444\u0433\u0445\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u044F\u0440\u0441\u0442\u0443\u0436\u0432\u044C\u044B\u0437\u0448\u044D\u0449\u0447\u044A\u042E\u0410\u0411\u0426\u0414\u0415\u0424\u0413\u0425\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u042F\u0420\u0421\u0422\u0423\u0416\u0412\u042C\u042B\u0417\u0428\u042D\u0429\u0427\u042A"},koi8u:{type:"_sbcs",chars:"\u2500\u2502\u250C\u2510\u2514\u2518\u251C\u2524\u252C\u2534\u253C\u2580\u2584\u2588\u258C\u2590\u2591\u2592\u2593\u2320\u25A0\u2219\u221A\u2248\u2264\u2265\xA0\u2321\xB0\xB2\xB7\xF7\u2550\u2551\u2552\u0451\u0454\u2554\u0456\u0457\u2557\u2558\u2559\u255A\u255B\u0491\u255D\u255E\u255F\u2560\u2561\u0401\u0404\u2563\u0406\u0407\u2566\u2567\u2568\u2569\u256A\u0490\u256C\xA9\u044E\u0430\u0431\u0446\u0434\u0435\u0444\u0433\u0445\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u044F\u0440\u0441\u0442\u0443\u0436\u0432\u044C\u044B\u0437\u0448\u044D\u0449\u0447\u044A\u042E\u0410\u0411\u0426\u0414\u0415\u0424\u0413\u0425\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u042F\u0420\u0421\u0422\u0423\u0416\u0412\u042C\u042B\u0417\u0428\u042D\u0429\u0427\u042A"},koi8ru:{type:"_sbcs",chars:"\u2500\u2502\u250C\u2510\u2514\u2518\u251C\u2524\u252C\u2534\u253C\u2580\u2584\u2588\u258C\u2590\u2591\u2592\u2593\u2320\u25A0\u2219\u221A\u2248\u2264\u2265\xA0\u2321\xB0\xB2\xB7\xF7\u2550\u2551\u2552\u0451\u0454\u2554\u0456\u0457\u2557\u2558\u2559\u255A\u255B\u0491\u045E\u255E\u255F\u2560\u2561\u0401\u0404\u2563\u0406\u0407\u2566\u2567\u2568\u2569\u256A\u0490\u040E\xA9\u044E\u0430\u0431\u0446\u0434\u0435\u0444\u0433\u0445\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u044F\u0440\u0441\u0442\u0443\u0436\u0432\u044C\u044B\u0437\u0448\u044D\u0449\u0447\u044A\u042E\u0410\u0411\u0426\u0414\u0415\u0424\u0413\u0425\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u042F\u0420\u0421\u0422\u0423\u0416\u0412\u042C\u042B\u0417\u0428\u042D\u0429\u0427\u042A"},koi8t:{type:"_sbcs",chars:"\u049B\u0493\u201A\u0492\u201E\u2026\u2020\u2021\uFFFD\u2030\u04B3\u2039\u04B2\u04B7\u04B6\uFFFD\u049A\u2018\u2019\u201C\u201D\u2022\u2013\u2014\uFFFD\u2122\uFFFD\u203A\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u04EF\u04EE\u0451\xA4\u04E3\xA6\xA7\uFFFD\uFFFD\uFFFD\xAB\xAC\xAD\xAE\uFFFD\xB0\xB1\xB2\u0401\uFFFD\u04E2\xB6\xB7\uFFFD\u2116\uFFFD\xBB\uFFFD\uFFFD\uFFFD\xA9\u044E\u0430\u0431\u0446\u0434\u0435\u0444\u0433\u0445\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u044F\u0440\u0441\u0442\u0443\u0436\u0432\u044C\u044B\u0437\u0448\u044D\u0449\u0447\u044A\u042E\u0410\u0411\u0426\u0414\u0415\u0424\u0413\u0425\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u042F\u0420\u0421\u0422\u0423\u0416\u0412\u042C\u042B\u0417\u0428\u042D\u0429\u0427\u042A"},armscii8:{type:"_sbcs",chars:"\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\uFFFD\u0587\u0589)(\xBB\xAB\u2014.\u055D,-\u058A\u2026\u055C\u055B\u055E\u0531\u0561\u0532\u0562\u0533\u0563\u0534\u0564\u0535\u0565\u0536\u0566\u0537\u0567\u0538\u0568\u0539\u0569\u053A\u056A\u053B\u056B\u053C\u056C\u053D\u056D\u053E\u056E\u053F\u056F\u0540\u0570\u0541\u0571\u0542\u0572\u0543\u0573\u0544\u0574\u0545\u0575\u0546\u0576\u0547\u0577\u0548\u0578\u0549\u0579\u054A\u057A\u054B\u057B\u054C\u057C\u054D\u057D\u054E\u057E\u054F\u057F\u0550\u0580\u0551\u0581\u0552\u0582\u0553\u0583\u0554\u0584\u0555\u0585\u0556\u0586\u055A\uFFFD"},rk1048:{type:"_sbcs",chars:"\u0402\u0403\u201A\u0453\u201E\u2026\u2020\u2021\u20AC\u2030\u0409\u2039\u040A\u049A\u04BA\u040F\u0452\u2018\u2019\u201C\u201D\u2022\u2013\u2014\uFFFD\u2122\u0459\u203A\u045A\u049B\u04BB\u045F\xA0\u04B0\u04B1\u04D8\xA4\u04E8\xA6\xA7\u0401\xA9\u0492\xAB\xAC\xAD\xAE\u04AE\xB0\xB1\u0406\u0456\u04E9\xB5\xB6\xB7\u0451\u2116\u0493\xBB\u04D9\u04A2\u04A3\u04AF\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F"},tcvn:{type:"_sbcs",chars:`\0\xDA\u1EE4\u1EEA\u1EEC\u1EEE\x07\b +\v\f\r\u1EE8\u1EF0\u1EF2\u1EF6\u1EF8\xDD\u1EF4\x1B !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_\`abcdefghijklmnopqrstuvwxyz{|}~\x7F\xC0\u1EA2\xC3\xC1\u1EA0\u1EB6\u1EAC\xC8\u1EBA\u1EBC\xC9\u1EB8\u1EC6\xCC\u1EC8\u0128\xCD\u1ECA\xD2\u1ECE\xD5\xD3\u1ECC\u1ED8\u1EDC\u1EDE\u1EE0\u1EDA\u1EE2\xD9\u1EE6\u0168\xA0\u0102\xC2\xCA\xD4\u01A0\u01AF\u0110\u0103\xE2\xEA\xF4\u01A1\u01B0\u0111\u1EB0\u0300\u0309\u0303\u0301\u0323\xE0\u1EA3\xE3\xE1\u1EA1\u1EB2\u1EB1\u1EB3\u1EB5\u1EAF\u1EB4\u1EAE\u1EA6\u1EA8\u1EAA\u1EA4\u1EC0\u1EB7\u1EA7\u1EA9\u1EAB\u1EA5\u1EAD\xE8\u1EC2\u1EBB\u1EBD\xE9\u1EB9\u1EC1\u1EC3\u1EC5\u1EBF\u1EC7\xEC\u1EC9\u1EC4\u1EBE\u1ED2\u0129\xED\u1ECB\xF2\u1ED4\u1ECF\xF5\xF3\u1ECD\u1ED3\u1ED5\u1ED7\u1ED1\u1ED9\u1EDD\u1EDF\u1EE1\u1EDB\u1EE3\xF9\u1ED6\u1EE7\u0169\xFA\u1EE5\u1EEB\u1EED\u1EEF\u1EE9\u1EF1\u1EF3\u1EF7\u1EF9\xFD\u1EF5\u1ED0`},georgianacademy:{type:"_sbcs",chars:"\x80\x81\u201A\u0192\u201E\u2026\u2020\u2021\u02C6\u2030\u0160\u2039\u0152\x8D\x8E\x8F\x90\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u02DC\u2122\u0161\u203A\u0153\x9D\x9E\u0178\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF\u10D0\u10D1\u10D2\u10D3\u10D4\u10D5\u10D6\u10D7\u10D8\u10D9\u10DA\u10DB\u10DC\u10DD\u10DE\u10DF\u10E0\u10E1\u10E2\u10E3\u10E4\u10E5\u10E6\u10E7\u10E8\u10E9\u10EA\u10EB\u10EC\u10ED\u10EE\u10EF\u10F0\u10F1\u10F2\u10F3\u10F4\u10F5\u10F6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\xF0\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\xFD\xFE\xFF"},georgianps:{type:"_sbcs",chars:"\x80\x81\u201A\u0192\u201E\u2026\u2020\u2021\u02C6\u2030\u0160\u2039\u0152\x8D\x8E\x8F\x90\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u02DC\u2122\u0161\u203A\u0153\x9D\x9E\u0178\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF\u10D0\u10D1\u10D2\u10D3\u10D4\u10D5\u10D6\u10F1\u10D7\u10D8\u10D9\u10DA\u10DB\u10DC\u10F2\u10DD\u10DE\u10DF\u10E0\u10E1\u10E2\u10F3\u10E3\u10E4\u10E5\u10E6\u10E7\u10E8\u10E9\u10EA\u10EB\u10EC\u10ED\u10EE\u10F4\u10EF\u10F0\u10F5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\xF0\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\xFD\xFE\xFF"},pt154:{type:"_sbcs",chars:"\u0496\u0492\u04EE\u0493\u201E\u2026\u04B6\u04AE\u04B2\u04AF\u04A0\u04E2\u04A2\u049A\u04BA\u04B8\u0497\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u04B3\u04B7\u04A1\u04E3\u04A3\u049B\u04BB\u04B9\xA0\u040E\u045E\u0408\u04E8\u0498\u04B0\xA7\u0401\xA9\u04D8\xAB\xAC\u04EF\xAE\u049C\xB0\u04B1\u0406\u0456\u0499\u04E9\xB6\xB7\u0451\u2116\u04D9\xBB\u0458\u04AA\u04AB\u049D\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F"},viscii:{type:"_sbcs",chars:`\0\u1EB2\u1EB4\u1EAA\x07\b +\v\f\r\u1EF6\u1EF8\x1B\u1EF4 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_\`abcdefghijklmnopqrstuvwxyz{|}~\x7F\u1EA0\u1EAE\u1EB0\u1EB6\u1EA4\u1EA6\u1EA8\u1EAC\u1EBC\u1EB8\u1EBE\u1EC0\u1EC2\u1EC4\u1EC6\u1ED0\u1ED2\u1ED4\u1ED6\u1ED8\u1EE2\u1EDA\u1EDC\u1EDE\u1ECA\u1ECE\u1ECC\u1EC8\u1EE6\u0168\u1EE4\u1EF2\xD5\u1EAF\u1EB1\u1EB7\u1EA5\u1EA7\u1EA9\u1EAD\u1EBD\u1EB9\u1EBF\u1EC1\u1EC3\u1EC5\u1EC7\u1ED1\u1ED3\u1ED5\u1ED7\u1EE0\u01A0\u1ED9\u1EDD\u1EDF\u1ECB\u1EF0\u1EE8\u1EEA\u1EEC\u01A1\u1EDB\u01AF\xC0\xC1\xC2\xC3\u1EA2\u0102\u1EB3\u1EB5\xC8\xC9\xCA\u1EBA\xCC\xCD\u0128\u1EF3\u0110\u1EE9\xD2\xD3\xD4\u1EA1\u1EF7\u1EEB\u1EED\xD9\xDA\u1EF9\u1EF5\xDD\u1EE1\u01B0\xE0\xE1\xE2\xE3\u1EA3\u0103\u1EEF\u1EAB\xE8\xE9\xEA\u1EBB\xEC\xED\u0129\u1EC9\u0111\u1EF1\xF2\xF3\xF4\xF5\u1ECF\u1ECD\u1EE5\xF9\xFA\u0169\u1EE7\xFD\u1EE3\u1EEE`},iso646cn:{type:"_sbcs",chars:`\0\x07\b +\v\f\r\x1B !"#\xA5%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_\`abcdefghijklmnopqrstuvwxyz{|}\u203E\x7F\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD`},iso646jp:{type:"_sbcs",chars:`\0\x07\b +\v\f\r\x1B !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\xA5]^_\`abcdefghijklmnopqrstuvwxyz{|}\u203E\x7F\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD`},hproman8:{type:"_sbcs",chars:"\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\xC0\xC2\xC8\xCA\xCB\xCE\xCF\xB4\u02CB\u02C6\xA8\u02DC\xD9\xDB\u20A4\xAF\xDD\xFD\xB0\xC7\xE7\xD1\xF1\xA1\xBF\xA4\xA3\xA5\xA7\u0192\xA2\xE2\xEA\xF4\xFB\xE1\xE9\xF3\xFA\xE0\xE8\xF2\xF9\xE4\xEB\xF6\xFC\xC5\xEE\xD8\xC6\xE5\xED\xF8\xE6\xC4\xEC\xD6\xDC\xC9\xEF\xDF\xD4\xC1\xC3\xE3\xD0\xF0\xCD\xCC\xD3\xD2\xD5\xF5\u0160\u0161\xDA\u0178\xFF\xDE\xFE\xB7\xB5\xB6\xBE\u2014\xBC\xBD\xAA\xBA\xAB\u25A0\xBB\xB1\uFFFD"},macintosh:{type:"_sbcs",chars:"\xC4\xC5\xC7\xC9\xD1\xD6\xDC\xE1\xE0\xE2\xE4\xE3\xE5\xE7\xE9\xE8\xEA\xEB\xED\xEC\xEE\xEF\xF1\xF3\xF2\xF4\xF6\xF5\xFA\xF9\xFB\xFC\u2020\xB0\xA2\xA3\xA7\u2022\xB6\xDF\xAE\xA9\u2122\xB4\xA8\u2260\xC6\xD8\u221E\xB1\u2264\u2265\xA5\xB5\u2202\u2211\u220F\u03C0\u222B\xAA\xBA\u2126\xE6\xF8\xBF\xA1\xAC\u221A\u0192\u2248\u2206\xAB\xBB\u2026\xA0\xC0\xC3\xD5\u0152\u0153\u2013\u2014\u201C\u201D\u2018\u2019\xF7\u25CA\xFF\u0178\u2044\xA4\u2039\u203A\uFB01\uFB02\u2021\xB7\u201A\u201E\u2030\xC2\xCA\xC1\xCB\xC8\xCD\xCE\xCF\xCC\xD3\xD4\uFFFD\xD2\xDA\xDB\xD9\u0131\u02C6\u02DC\xAF\u02D8\u02D9\u02DA\xB8\u02DD\u02DB\u02C7"},ascii:{type:"_sbcs",chars:"\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"},tis620:{type:"_sbcs",chars:"\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u0E01\u0E02\u0E03\u0E04\u0E05\u0E06\u0E07\u0E08\u0E09\u0E0A\u0E0B\u0E0C\u0E0D\u0E0E\u0E0F\u0E10\u0E11\u0E12\u0E13\u0E14\u0E15\u0E16\u0E17\u0E18\u0E19\u0E1A\u0E1B\u0E1C\u0E1D\u0E1E\u0E1F\u0E20\u0E21\u0E22\u0E23\u0E24\u0E25\u0E26\u0E27\u0E28\u0E29\u0E2A\u0E2B\u0E2C\u0E2D\u0E2E\u0E2F\u0E30\u0E31\u0E32\u0E33\u0E34\u0E35\u0E36\u0E37\u0E38\u0E39\u0E3A\uFFFD\uFFFD\uFFFD\uFFFD\u0E3F\u0E40\u0E41\u0E42\u0E43\u0E44\u0E45\u0E46\u0E47\u0E48\u0E49\u0E4A\u0E4B\u0E4C\u0E4D\u0E4E\u0E4F\u0E50\u0E51\u0E52\u0E53\u0E54\u0E55\u0E56\u0E57\u0E58\u0E59\u0E5A\u0E5B\uFFFD\uFFFD\uFFFD\uFFFD"}}});var Ix=P(Rx=>{"use strict";var is=no().Buffer;Rx._dbcs=ki;var At=-1,Lx=-2,Ht=-10,Un=-1e3,ns=new Array(256),iu=-1;for(df=0;df<256;df++)ns[df]=At;var df;function ki(t,e){if(this.encodingName=t.encodingName,!t)throw new Error("DBCS codec is called without the data.");if(!t.table)throw new Error("Encoding '"+this.encodingName+"' has no data.");var r=t.table();this.decodeTables=[],this.decodeTables[0]=ns.slice(0),this.decodeTableSeq=[];for(var n=0;n0;t>>=8)e.push(t&255);e.length==0&&e.push(0);for(var r=this.decodeTables[0],n=e.length-1;n>0;n--){var i=r[e[n]];if(i==At)r[e[n]]=Un-this.decodeTables.length,this.decodeTables.push(r=ns.slice(0));else if(i<=Un)r=this.decodeTables[Un-i];else throw new Error("Overwrite byte in "+this.encodingName+", addr: "+t.toString(16))}return r};ki.prototype._addDecodeChunk=function(t){var e=parseInt(t[0],16),r=this._getDecodeTrieNode(e);e=e&255;for(var n=1;n255)throw new Error("Incorrect chunk in "+this.encodingName+" at addr "+t[0]+": too long"+e)};ki.prototype._getEncodeBucket=function(t){var e=t>>8;return this.encodeTable[e]===void 0&&(this.encodeTable[e]=ns.slice(0)),this.encodeTable[e]};ki.prototype._setEncodeChar=function(t,e){var r=this._getEncodeBucket(t),n=t&255;r[n]<=Ht?this.encodeTableSeq[Ht-r[n]][iu]=e:r[n]==At&&(r[n]=e)};ki.prototype._setEncodeSequence=function(t,e){var r=t[0],n=this._getEncodeBucket(r),i=r&255,a;n[i]<=Ht?a=this.encodeTableSeq[Ht-n[i]]:(a={},n[i]!==At&&(a[iu]=n[i]),n[i]=Ht-this.encodeTableSeq.length,this.encodeTableSeq.push(a));for(var o=1;o=0?this._setEncodeChar(a,o):a<=Un?this._fillEncodeTable(Un-a,o<<8,r):a<=Ht&&this._setEncodeSequence(this.decodeTableSeq[Ht-a],o))}};function pf(t,e){this.leadSurrogate=-1,this.seqObj=void 0,this.encodeTable=e.encodeTable,this.encodeTableSeq=e.encodeTableSeq,this.defaultCharSingleByte=e.defCharSB,this.gb18030=e.gb18030}pf.prototype.write=function(t){for(var e=is.alloc(t.length*(this.gb18030?4:3)),r=this.leadSurrogate,n=this.seqObj,i=-1,a=0,o=0;;){if(i===-1){if(a==t.length)break;var c=t.charCodeAt(a++)}else{var c=i;i=-1}if(55296<=c&&c<57344)if(c<56320)if(r===-1){r=c;continue}else r=c,c=At;else r!==-1?(c=65536+(r-55296)*1024+(c-56320),r=-1):c=At;else r!==-1&&(i=c,c=At,r=-1);var u=At;if(n!==void 0&&c!=At){var s=n[c];if(typeof s=="object"){n=s;continue}else typeof s=="number"?u=s:s==null&&(s=n[iu],s!==void 0&&(u=s,i=c));n=void 0}else if(c>=0){var f=this.encodeTable[c>>8];if(f!==void 0&&(u=f[c&255]),u<=Ht){n=this.encodeTableSeq[Ht-u];continue}if(u==At&&this.gb18030){var m=bh(this.gb18030.uChars,c);if(m!=-1){var u=this.gb18030.gbChars[m]+(c-this.gb18030.uChars[m]);e[o++]=129+Math.floor(u/12600),u=u%12600,e[o++]=48+Math.floor(u/1260),u=u%1260,e[o++]=129+Math.floor(u/10),u=u%10,e[o++]=48+u;continue}}}u===At&&(u=this.defaultCharSingleByte),u<256?e[o++]=u:u<65536?(e[o++]=u>>8,e[o++]=u&255):(e[o++]=u>>16,e[o++]=u>>8&255,e[o++]=u&255)}return this.seqObj=n,this.leadSurrogate=r,e.slice(0,o)};pf.prototype.end=function(){if(!(this.leadSurrogate===-1&&this.seqObj===void 0)){var t=is.alloc(10),e=0;if(this.seqObj){var r=this.seqObj[iu];r!==void 0&&(r<256?t[e++]=r:(t[e++]=r>>8,t[e++]=r&255)),this.seqObj=void 0}return this.leadSurrogate!==-1&&(t[e++]=this.defaultCharSingleByte,this.leadSurrogate=-1),t.slice(0,e)}};pf.prototype.findIdx=bh;function mh(t,e){this.nodeIdx=0,this.prevBuf=is.alloc(0),this.decodeTables=e.decodeTables,this.decodeTableSeq=e.decodeTableSeq,this.defaultCharUnicode=e.defaultCharUnicode,this.gb18030=e.gb18030}mh.prototype.write=function(t){var e=is.alloc(t.length*2),r=this.nodeIdx,n=this.prevBuf,i=this.prevBuf.length,a=-this.prevBuf.length,o;i>0&&(n=is.concat([n,t.slice(0,10)]));for(var c=0,u=0;c=0?t[c]:n[c+i],o=this.decodeTables[r][s];if(!(o>=0))if(o===At)c=a,o=this.defaultCharUnicode.charCodeAt(0);else if(o===Lx){var f=a>=0?t.slice(a,c+1):n.slice(a+i,c+1+i),m=(f[0]-129)*12600+(f[1]-48)*1260+(f[2]-129)*10+(f[3]-48),w=bh(this.gb18030.gbChars,m);o=this.gb18030.uChars[w]+m-this.gb18030.gbChars[w]}else if(o<=Un){r=Un-o;continue}else if(o<=Ht){for(var T=this.decodeTableSeq[Ht-o],A=0;A>8;o=T[T.length-1]}else throw new Error("iconv-lite internal error: invalid decoding table value "+o+" at "+r+"/"+s);if(o>65535){o-=65536;var O=55296+Math.floor(o/1024);e[u++]=O&255,e[u++]=O>>8,o=56320+o%1024}e[u++]=o&255,e[u++]=o>>8,r=0,a=c+1}return this.nodeIdx=r,this.prevBuf=a>=0?t.slice(a):n.slice(a+i),e.slice(0,u).toString("ucs2")};mh.prototype.end=function(){for(var t="";this.prevBuf.length>0;){t+=this.defaultCharUnicode;var e=this.prevBuf.slice(1);this.prevBuf=is.alloc(0),this.nodeIdx=0,e.length>0&&(t+=this.write(e))}return this.nodeIdx=0,t};function bh(t,e){if(t[0]>e)return-1;for(var r=0,n=t.length;r{HC.exports=[["0","\0",128],["a1","\uFF61",62],["8140","\u3000\u3001\u3002\uFF0C\uFF0E\u30FB\uFF1A\uFF1B\uFF1F\uFF01\u309B\u309C\xB4\uFF40\xA8\uFF3E\uFFE3\uFF3F\u30FD\u30FE\u309D\u309E\u3003\u4EDD\u3005\u3006\u3007\u30FC\u2015\u2010\uFF0F\uFF3C\uFF5E\u2225\uFF5C\u2026\u2025\u2018\u2019\u201C\u201D\uFF08\uFF09\u3014\u3015\uFF3B\uFF3D\uFF5B\uFF5D\u3008",9,"\uFF0B\uFF0D\xB1\xD7"],["8180","\xF7\uFF1D\u2260\uFF1C\uFF1E\u2266\u2267\u221E\u2234\u2642\u2640\xB0\u2032\u2033\u2103\uFFE5\uFF04\uFFE0\uFFE1\uFF05\uFF03\uFF06\uFF0A\uFF20\xA7\u2606\u2605\u25CB\u25CF\u25CE\u25C7\u25C6\u25A1\u25A0\u25B3\u25B2\u25BD\u25BC\u203B\u3012\u2192\u2190\u2191\u2193\u3013"],["81b8","\u2208\u220B\u2286\u2287\u2282\u2283\u222A\u2229"],["81c8","\u2227\u2228\uFFE2\u21D2\u21D4\u2200\u2203"],["81da","\u2220\u22A5\u2312\u2202\u2207\u2261\u2252\u226A\u226B\u221A\u223D\u221D\u2235\u222B\u222C"],["81f0","\u212B\u2030\u266F\u266D\u266A\u2020\u2021\xB6"],["81fc","\u25EF"],["824f","\uFF10",9],["8260","\uFF21",25],["8281","\uFF41",25],["829f","\u3041",82],["8340","\u30A1",62],["8380","\u30E0",22],["839f","\u0391",16,"\u03A3",6],["83bf","\u03B1",16,"\u03C3",6],["8440","\u0410",5,"\u0401\u0416",25],["8470","\u0430",5,"\u0451\u0436",7],["8480","\u043E",17],["849f","\u2500\u2502\u250C\u2510\u2518\u2514\u251C\u252C\u2524\u2534\u253C\u2501\u2503\u250F\u2513\u251B\u2517\u2523\u2533\u252B\u253B\u254B\u2520\u252F\u2528\u2537\u253F\u251D\u2530\u2525\u2538\u2542"],["8740","\u2460",19,"\u2160",9],["875f","\u3349\u3314\u3322\u334D\u3318\u3327\u3303\u3336\u3351\u3357\u330D\u3326\u3323\u332B\u334A\u333B\u339C\u339D\u339E\u338E\u338F\u33C4\u33A1"],["877e","\u337B"],["8780","\u301D\u301F\u2116\u33CD\u2121\u32A4",4,"\u3231\u3232\u3239\u337E\u337D\u337C\u2252\u2261\u222B\u222E\u2211\u221A\u22A5\u2220\u221F\u22BF\u2235\u2229\u222A"],["889f","\u4E9C\u5516\u5A03\u963F\u54C0\u611B\u6328\u59F6\u9022\u8475\u831C\u7A50\u60AA\u63E1\u6E25\u65ED\u8466\u82A6\u9BF5\u6893\u5727\u65A1\u6271\u5B9B\u59D0\u867B\u98F4\u7D62\u7DBE\u9B8E\u6216\u7C9F\u88B7\u5B89\u5EB5\u6309\u6697\u6848\u95C7\u978D\u674F\u4EE5\u4F0A\u4F4D\u4F9D\u5049\u56F2\u5937\u59D4\u5A01\u5C09\u60DF\u610F\u6170\u6613\u6905\u70BA\u754F\u7570\u79FB\u7DAD\u7DEF\u80C3\u840E\u8863\u8B02\u9055\u907A\u533B\u4E95\u4EA5\u57DF\u80B2\u90C1\u78EF\u4E00\u58F1\u6EA2\u9038\u7A32\u8328\u828B\u9C2F\u5141\u5370\u54BD\u54E1\u56E0\u59FB\u5F15\u98F2\u6DEB\u80E4\u852D"],["8940","\u9662\u9670\u96A0\u97FB\u540B\u53F3\u5B87\u70CF\u7FBD\u8FC2\u96E8\u536F\u9D5C\u7ABA\u4E11\u7893\u81FC\u6E26\u5618\u5504\u6B1D\u851A\u9C3B\u59E5\u53A9\u6D66\u74DC\u958F\u5642\u4E91\u904B\u96F2\u834F\u990C\u53E1\u55B6\u5B30\u5F71\u6620\u66F3\u6804\u6C38\u6CF3\u6D29\u745B\u76C8\u7A4E\u9834\u82F1\u885B\u8A60\u92ED\u6DB2\u75AB\u76CA\u99C5\u60A6\u8B01\u8D8A\u95B2\u698E\u53AD\u5186"],["8980","\u5712\u5830\u5944\u5BB4\u5EF6\u6028\u63A9\u63F4\u6CBF\u6F14\u708E\u7114\u7159\u71D5\u733F\u7E01\u8276\u82D1\u8597\u9060\u925B\u9D1B\u5869\u65BC\u6C5A\u7525\u51F9\u592E\u5965\u5F80\u5FDC\u62BC\u65FA\u6A2A\u6B27\u6BB4\u738B\u7FC1\u8956\u9D2C\u9D0E\u9EC4\u5CA1\u6C96\u837B\u5104\u5C4B\u61B6\u81C6\u6876\u7261\u4E59\u4FFA\u5378\u6069\u6E29\u7A4F\u97F3\u4E0B\u5316\u4EEE\u4F55\u4F3D\u4FA1\u4F73\u52A0\u53EF\u5609\u590F\u5AC1\u5BB6\u5BE1\u79D1\u6687\u679C\u67B6\u6B4C\u6CB3\u706B\u73C2\u798D\u79BE\u7A3C\u7B87\u82B1\u82DB\u8304\u8377\u83EF\u83D3\u8766\u8AB2\u5629\u8CA8\u8FE6\u904E\u971E\u868A\u4FC4\u5CE8\u6211\u7259\u753B\u81E5\u82BD\u86FE\u8CC0\u96C5\u9913\u99D5\u4ECB\u4F1A\u89E3\u56DE\u584A\u58CA\u5EFB\u5FEB\u602A\u6094\u6062\u61D0\u6212\u62D0\u6539"],["8a40","\u9B41\u6666\u68B0\u6D77\u7070\u754C\u7686\u7D75\u82A5\u87F9\u958B\u968E\u8C9D\u51F1\u52BE\u5916\u54B3\u5BB3\u5D16\u6168\u6982\u6DAF\u788D\u84CB\u8857\u8A72\u93A7\u9AB8\u6D6C\u99A8\u86D9\u57A3\u67FF\u86CE\u920E\u5283\u5687\u5404\u5ED3\u62E1\u64B9\u683C\u6838\u6BBB\u7372\u78BA\u7A6B\u899A\u89D2\u8D6B\u8F03\u90ED\u95A3\u9694\u9769\u5B66\u5CB3\u697D\u984D\u984E\u639B\u7B20\u6A2B"],["8a80","\u6A7F\u68B6\u9C0D\u6F5F\u5272\u559D\u6070\u62EC\u6D3B\u6E07\u6ED1\u845B\u8910\u8F44\u4E14\u9C39\u53F6\u691B\u6A3A\u9784\u682A\u515C\u7AC3\u84B2\u91DC\u938C\u565B\u9D28\u6822\u8305\u8431\u7CA5\u5208\u82C5\u74E6\u4E7E\u4F83\u51A0\u5BD2\u520A\u52D8\u52E7\u5DFB\u559A\u582A\u59E6\u5B8C\u5B98\u5BDB\u5E72\u5E79\u60A3\u611F\u6163\u61BE\u63DB\u6562\u67D1\u6853\u68FA\u6B3E\u6B53\u6C57\u6F22\u6F97\u6F45\u74B0\u7518\u76E3\u770B\u7AFF\u7BA1\u7C21\u7DE9\u7F36\u7FF0\u809D\u8266\u839E\u89B3\u8ACC\u8CAB\u9084\u9451\u9593\u9591\u95A2\u9665\u97D3\u9928\u8218\u4E38\u542B\u5CB8\u5DCC\u73A9\u764C\u773C\u5CA9\u7FEB\u8D0B\u96C1\u9811\u9854\u9858\u4F01\u4F0E\u5371\u559C\u5668\u57FA\u5947\u5B09\u5BC4\u5C90\u5E0C\u5E7E\u5FCC\u63EE\u673A\u65D7\u65E2\u671F\u68CB\u68C4"],["8b40","\u6A5F\u5E30\u6BC5\u6C17\u6C7D\u757F\u7948\u5B63\u7A00\u7D00\u5FBD\u898F\u8A18\u8CB4\u8D77\u8ECC\u8F1D\u98E2\u9A0E\u9B3C\u4E80\u507D\u5100\u5993\u5B9C\u622F\u6280\u64EC\u6B3A\u72A0\u7591\u7947\u7FA9\u87FB\u8ABC\u8B70\u63AC\u83CA\u97A0\u5409\u5403\u55AB\u6854\u6A58\u8A70\u7827\u6775\u9ECD\u5374\u5BA2\u811A\u8650\u9006\u4E18\u4E45\u4EC7\u4F11\u53CA\u5438\u5BAE\u5F13\u6025\u6551"],["8b80","\u673D\u6C42\u6C72\u6CE3\u7078\u7403\u7A76\u7AAE\u7B08\u7D1A\u7CFE\u7D66\u65E7\u725B\u53BB\u5C45\u5DE8\u62D2\u62E0\u6319\u6E20\u865A\u8A31\u8DDD\u92F8\u6F01\u79A6\u9B5A\u4EA8\u4EAB\u4EAC\u4F9B\u4FA0\u50D1\u5147\u7AF6\u5171\u51F6\u5354\u5321\u537F\u53EB\u55AC\u5883\u5CE1\u5F37\u5F4A\u602F\u6050\u606D\u631F\u6559\u6A4B\u6CC1\u72C2\u72ED\u77EF\u80F8\u8105\u8208\u854E\u90F7\u93E1\u97FF\u9957\u9A5A\u4EF0\u51DD\u5C2D\u6681\u696D\u5C40\u66F2\u6975\u7389\u6850\u7C81\u50C5\u52E4\u5747\u5DFE\u9326\u65A4\u6B23\u6B3D\u7434\u7981\u79BD\u7B4B\u7DCA\u82B9\u83CC\u887F\u895F\u8B39\u8FD1\u91D1\u541F\u9280\u4E5D\u5036\u53E5\u533A\u72D7\u7396\u77E9\u82E6\u8EAF\u99C6\u99C8\u99D2\u5177\u611A\u865E\u55B0\u7A7A\u5076\u5BD3\u9047\u9685\u4E32\u6ADB\u91E7\u5C51\u5C48"],["8c40","\u6398\u7A9F\u6C93\u9774\u8F61\u7AAA\u718A\u9688\u7C82\u6817\u7E70\u6851\u936C\u52F2\u541B\u85AB\u8A13\u7FA4\u8ECD\u90E1\u5366\u8888\u7941\u4FC2\u50BE\u5211\u5144\u5553\u572D\u73EA\u578B\u5951\u5F62\u5F84\u6075\u6176\u6167\u61A9\u63B2\u643A\u656C\u666F\u6842\u6E13\u7566\u7A3D\u7CFB\u7D4C\u7D99\u7E4B\u7F6B\u830E\u834A\u86CD\u8A08\u8A63\u8B66\u8EFD\u981A\u9D8F\u82B8\u8FCE\u9BE8"],["8c80","\u5287\u621F\u6483\u6FC0\u9699\u6841\u5091\u6B20\u6C7A\u6F54\u7A74\u7D50\u8840\u8A23\u6708\u4EF6\u5039\u5026\u5065\u517C\u5238\u5263\u55A7\u570F\u5805\u5ACC\u5EFA\u61B2\u61F8\u62F3\u6372\u691C\u6A29\u727D\u72AC\u732E\u7814\u786F\u7D79\u770C\u80A9\u898B\u8B19\u8CE2\u8ED2\u9063\u9375\u967A\u9855\u9A13\u9E78\u5143\u539F\u53B3\u5E7B\u5F26\u6E1B\u6E90\u7384\u73FE\u7D43\u8237\u8A00\u8AFA\u9650\u4E4E\u500B\u53E4\u547C\u56FA\u59D1\u5B64\u5DF1\u5EAB\u5F27\u6238\u6545\u67AF\u6E56\u72D0\u7CCA\u88B4\u80A1\u80E1\u83F0\u864E\u8A87\u8DE8\u9237\u96C7\u9867\u9F13\u4E94\u4E92\u4F0D\u5348\u5449\u543E\u5A2F\u5F8C\u5FA1\u609F\u68A7\u6A8E\u745A\u7881\u8A9E\u8AA4\u8B77\u9190\u4E5E\u9BC9\u4EA4\u4F7C\u4FAF\u5019\u5016\u5149\u516C\u529F\u52B9\u52FE\u539A\u53E3\u5411"],["8d40","\u540E\u5589\u5751\u57A2\u597D\u5B54\u5B5D\u5B8F\u5DE5\u5DE7\u5DF7\u5E78\u5E83\u5E9A\u5EB7\u5F18\u6052\u614C\u6297\u62D8\u63A7\u653B\u6602\u6643\u66F4\u676D\u6821\u6897\u69CB\u6C5F\u6D2A\u6D69\u6E2F\u6E9D\u7532\u7687\u786C\u7A3F\u7CE0\u7D05\u7D18\u7D5E\u7DB1\u8015\u8003\u80AF\u80B1\u8154\u818F\u822A\u8352\u884C\u8861\u8B1B\u8CA2\u8CFC\u90CA\u9175\u9271\u783F\u92FC\u95A4\u964D"],["8d80","\u9805\u9999\u9AD8\u9D3B\u525B\u52AB\u53F7\u5408\u58D5\u62F7\u6FE0\u8C6A\u8F5F\u9EB9\u514B\u523B\u544A\u56FD\u7A40\u9177\u9D60\u9ED2\u7344\u6F09\u8170\u7511\u5FFD\u60DA\u9AA8\u72DB\u8FBC\u6B64\u9803\u4ECA\u56F0\u5764\u58BE\u5A5A\u6068\u61C7\u660F\u6606\u6839\u68B1\u6DF7\u75D5\u7D3A\u826E\u9B42\u4E9B\u4F50\u53C9\u5506\u5D6F\u5DE6\u5DEE\u67FB\u6C99\u7473\u7802\u8A50\u9396\u88DF\u5750\u5EA7\u632B\u50B5\u50AC\u518D\u6700\u54C9\u585E\u59BB\u5BB0\u5F69\u624D\u63A1\u683D\u6B73\u6E08\u707D\u91C7\u7280\u7815\u7826\u796D\u658E\u7D30\u83DC\u88C1\u8F09\u969B\u5264\u5728\u6750\u7F6A\u8CA1\u51B4\u5742\u962A\u583A\u698A\u80B4\u54B2\u5D0E\u57FC\u7895\u9DFA\u4F5C\u524A\u548B\u643E\u6628\u6714\u67F5\u7A84\u7B56\u7D22\u932F\u685C\u9BAD\u7B39\u5319\u518A\u5237"],["8e40","\u5BDF\u62F6\u64AE\u64E6\u672D\u6BBA\u85A9\u96D1\u7690\u9BD6\u634C\u9306\u9BAB\u76BF\u6652\u4E09\u5098\u53C2\u5C71\u60E8\u6492\u6563\u685F\u71E6\u73CA\u7523\u7B97\u7E82\u8695\u8B83\u8CDB\u9178\u9910\u65AC\u66AB\u6B8B\u4ED5\u4ED4\u4F3A\u4F7F\u523A\u53F8\u53F2\u55E3\u56DB\u58EB\u59CB\u59C9\u59FF\u5B50\u5C4D\u5E02\u5E2B\u5FD7\u601D\u6307\u652F\u5B5C\u65AF\u65BD\u65E8\u679D\u6B62"],["8e80","\u6B7B\u6C0F\u7345\u7949\u79C1\u7CF8\u7D19\u7D2B\u80A2\u8102\u81F3\u8996\u8A5E\u8A69\u8A66\u8A8C\u8AEE\u8CC7\u8CDC\u96CC\u98FC\u6B6F\u4E8B\u4F3C\u4F8D\u5150\u5B57\u5BFA\u6148\u6301\u6642\u6B21\u6ECB\u6CBB\u723E\u74BD\u75D4\u78C1\u793A\u800C\u8033\u81EA\u8494\u8F9E\u6C50\u9E7F\u5F0F\u8B58\u9D2B\u7AFA\u8EF8\u5B8D\u96EB\u4E03\u53F1\u57F7\u5931\u5AC9\u5BA4\u6089\u6E7F\u6F06\u75BE\u8CEA\u5B9F\u8500\u7BE0\u5072\u67F4\u829D\u5C61\u854A\u7E1E\u820E\u5199\u5C04\u6368\u8D66\u659C\u716E\u793E\u7D17\u8005\u8B1D\u8ECA\u906E\u86C7\u90AA\u501F\u52FA\u5C3A\u6753\u707C\u7235\u914C\u91C8\u932B\u82E5\u5BC2\u5F31\u60F9\u4E3B\u53D6\u5B88\u624B\u6731\u6B8A\u72E9\u73E0\u7A2E\u816B\u8DA3\u9152\u9996\u5112\u53D7\u546A\u5BFF\u6388\u6A39\u7DAC\u9700\u56DA\u53CE\u5468"],["8f40","\u5B97\u5C31\u5DDE\u4FEE\u6101\u62FE\u6D32\u79C0\u79CB\u7D42\u7E4D\u7FD2\u81ED\u821F\u8490\u8846\u8972\u8B90\u8E74\u8F2F\u9031\u914B\u916C\u96C6\u919C\u4EC0\u4F4F\u5145\u5341\u5F93\u620E\u67D4\u6C41\u6E0B\u7363\u7E26\u91CD\u9283\u53D4\u5919\u5BBF\u6DD1\u795D\u7E2E\u7C9B\u587E\u719F\u51FA\u8853\u8FF0\u4FCA\u5CFB\u6625\u77AC\u7AE3\u821C\u99FF\u51C6\u5FAA\u65EC\u696F\u6B89\u6DF3"],["8f80","\u6E96\u6F64\u76FE\u7D14\u5DE1\u9075\u9187\u9806\u51E6\u521D\u6240\u6691\u66D9\u6E1A\u5EB6\u7DD2\u7F72\u66F8\u85AF\u85F7\u8AF8\u52A9\u53D9\u5973\u5E8F\u5F90\u6055\u92E4\u9664\u50B7\u511F\u52DD\u5320\u5347\u53EC\u54E8\u5546\u5531\u5617\u5968\u59BE\u5A3C\u5BB5\u5C06\u5C0F\u5C11\u5C1A\u5E84\u5E8A\u5EE0\u5F70\u627F\u6284\u62DB\u638C\u6377\u6607\u660C\u662D\u6676\u677E\u68A2\u6A1F\u6A35\u6CBC\u6D88\u6E09\u6E58\u713C\u7126\u7167\u75C7\u7701\u785D\u7901\u7965\u79F0\u7AE0\u7B11\u7CA7\u7D39\u8096\u83D6\u848B\u8549\u885D\u88F3\u8A1F\u8A3C\u8A54\u8A73\u8C61\u8CDE\u91A4\u9266\u937E\u9418\u969C\u9798\u4E0A\u4E08\u4E1E\u4E57\u5197\u5270\u57CE\u5834\u58CC\u5B22\u5E38\u60C5\u64FE\u6761\u6756\u6D44\u72B6\u7573\u7A63\u84B8\u8B72\u91B8\u9320\u5631\u57F4\u98FE"],["9040","\u62ED\u690D\u6B96\u71ED\u7E54\u8077\u8272\u89E6\u98DF\u8755\u8FB1\u5C3B\u4F38\u4FE1\u4FB5\u5507\u5A20\u5BDD\u5BE9\u5FC3\u614E\u632F\u65B0\u664B\u68EE\u699B\u6D78\u6DF1\u7533\u75B9\u771F\u795E\u79E6\u7D33\u81E3\u82AF\u85AA\u89AA\u8A3A\u8EAB\u8F9B\u9032\u91DD\u9707\u4EBA\u4EC1\u5203\u5875\u58EC\u5C0B\u751A\u5C3D\u814E\u8A0A\u8FC5\u9663\u976D\u7B25\u8ACF\u9808\u9162\u56F3\u53A8"],["9080","\u9017\u5439\u5782\u5E25\u63A8\u6C34\u708A\u7761\u7C8B\u7FE0\u8870\u9042\u9154\u9310\u9318\u968F\u745E\u9AC4\u5D07\u5D69\u6570\u67A2\u8DA8\u96DB\u636E\u6749\u6919\u83C5\u9817\u96C0\u88FE\u6F84\u647A\u5BF8\u4E16\u702C\u755D\u662F\u51C4\u5236\u52E2\u59D3\u5F81\u6027\u6210\u653F\u6574\u661F\u6674\u68F2\u6816\u6B63\u6E05\u7272\u751F\u76DB\u7CBE\u8056\u58F0\u88FD\u897F\u8AA0\u8A93\u8ACB\u901D\u9192\u9752\u9759\u6589\u7A0E\u8106\u96BB\u5E2D\u60DC\u621A\u65A5\u6614\u6790\u77F3\u7A4D\u7C4D\u7E3E\u810A\u8CAC\u8D64\u8DE1\u8E5F\u78A9\u5207\u62D9\u63A5\u6442\u6298\u8A2D\u7A83\u7BC0\u8AAC\u96EA\u7D76\u820C\u8749\u4ED9\u5148\u5343\u5360\u5BA3\u5C02\u5C16\u5DDD\u6226\u6247\u64B0\u6813\u6834\u6CC9\u6D45\u6D17\u67D3\u6F5C\u714E\u717D\u65CB\u7A7F\u7BAD\u7DDA"],["9140","\u7E4A\u7FA8\u817A\u821B\u8239\u85A6\u8A6E\u8CCE\u8DF5\u9078\u9077\u92AD\u9291\u9583\u9BAE\u524D\u5584\u6F38\u7136\u5168\u7985\u7E55\u81B3\u7CCE\u564C\u5851\u5CA8\u63AA\u66FE\u66FD\u695A\u72D9\u758F\u758E\u790E\u7956\u79DF\u7C97\u7D20\u7D44\u8607\u8A34\u963B\u9061\u9F20\u50E7\u5275\u53CC\u53E2\u5009\u55AA\u58EE\u594F\u723D\u5B8B\u5C64\u531D\u60E3\u60F3\u635C\u6383\u633F\u63BB"],["9180","\u64CD\u65E9\u66F9\u5DE3\u69CD\u69FD\u6F15\u71E5\u4E89\u75E9\u76F8\u7A93\u7CDF\u7DCF\u7D9C\u8061\u8349\u8358\u846C\u84BC\u85FB\u88C5\u8D70\u9001\u906D\u9397\u971C\u9A12\u50CF\u5897\u618E\u81D3\u8535\u8D08\u9020\u4FC3\u5074\u5247\u5373\u606F\u6349\u675F\u6E2C\u8DB3\u901F\u4FD7\u5C5E\u8CCA\u65CF\u7D9A\u5352\u8896\u5176\u63C3\u5B58\u5B6B\u5C0A\u640D\u6751\u905C\u4ED6\u591A\u592A\u6C70\u8A51\u553E\u5815\u59A5\u60F0\u6253\u67C1\u8235\u6955\u9640\u99C4\u9A28\u4F53\u5806\u5BFE\u8010\u5CB1\u5E2F\u5F85\u6020\u614B\u6234\u66FF\u6CF0\u6EDE\u80CE\u817F\u82D4\u888B\u8CB8\u9000\u902E\u968A\u9EDB\u9BDB\u4EE3\u53F0\u5927\u7B2C\u918D\u984C\u9DF9\u6EDD\u7027\u5353\u5544\u5B85\u6258\u629E\u62D3\u6CA2\u6FEF\u7422\u8A17\u9438\u6FC1\u8AFE\u8338\u51E7\u86F8\u53EA"],["9240","\u53E9\u4F46\u9054\u8FB0\u596A\u8131\u5DFD\u7AEA\u8FBF\u68DA\u8C37\u72F8\u9C48\u6A3D\u8AB0\u4E39\u5358\u5606\u5766\u62C5\u63A2\u65E6\u6B4E\u6DE1\u6E5B\u70AD\u77ED\u7AEF\u7BAA\u7DBB\u803D\u80C6\u86CB\u8A95\u935B\u56E3\u58C7\u5F3E\u65AD\u6696\u6A80\u6BB5\u7537\u8AC7\u5024\u77E5\u5730\u5F1B\u6065\u667A\u6C60\u75F4\u7A1A\u7F6E\u81F4\u8718\u9045\u99B3\u7BC9\u755C\u7AF9\u7B51\u84C4"],["9280","\u9010\u79E9\u7A92\u8336\u5AE1\u7740\u4E2D\u4EF2\u5B99\u5FE0\u62BD\u663C\u67F1\u6CE8\u866B\u8877\u8A3B\u914E\u92F3\u99D0\u6A17\u7026\u732A\u82E7\u8457\u8CAF\u4E01\u5146\u51CB\u558B\u5BF5\u5E16\u5E33\u5E81\u5F14\u5F35\u5F6B\u5FB4\u61F2\u6311\u66A2\u671D\u6F6E\u7252\u753A\u773A\u8074\u8139\u8178\u8776\u8ABF\u8ADC\u8D85\u8DF3\u929A\u9577\u9802\u9CE5\u52C5\u6357\u76F4\u6715\u6C88\u73CD\u8CC3\u93AE\u9673\u6D25\u589C\u690E\u69CC\u8FFD\u939A\u75DB\u901A\u585A\u6802\u63B4\u69FB\u4F43\u6F2C\u67D8\u8FBB\u8526\u7DB4\u9354\u693F\u6F70\u576A\u58F7\u5B2C\u7D2C\u722A\u540A\u91E3\u9DB4\u4EAD\u4F4E\u505C\u5075\u5243\u8C9E\u5448\u5824\u5B9A\u5E1D\u5E95\u5EAD\u5EF7\u5F1F\u608C\u62B5\u633A\u63D0\u68AF\u6C40\u7887\u798E\u7A0B\u7DE0\u8247\u8A02\u8AE6\u8E44\u9013"],["9340","\u90B8\u912D\u91D8\u9F0E\u6CE5\u6458\u64E2\u6575\u6EF4\u7684\u7B1B\u9069\u93D1\u6EBA\u54F2\u5FB9\u64A4\u8F4D\u8FED\u9244\u5178\u586B\u5929\u5C55\u5E97\u6DFB\u7E8F\u751C\u8CBC\u8EE2\u985B\u70B9\u4F1D\u6BBF\u6FB1\u7530\u96FB\u514E\u5410\u5835\u5857\u59AC\u5C60\u5F92\u6597\u675C\u6E21\u767B\u83DF\u8CED\u9014\u90FD\u934D\u7825\u783A\u52AA\u5EA6\u571F\u5974\u6012\u5012\u515A\u51AC"],["9380","\u51CD\u5200\u5510\u5854\u5858\u5957\u5B95\u5CF6\u5D8B\u60BC\u6295\u642D\u6771\u6843\u68BC\u68DF\u76D7\u6DD8\u6E6F\u6D9B\u706F\u71C8\u5F53\u75D8\u7977\u7B49\u7B54\u7B52\u7CD6\u7D71\u5230\u8463\u8569\u85E4\u8A0E\u8B04\u8C46\u8E0F\u9003\u900F\u9419\u9676\u982D\u9A30\u95D8\u50CD\u52D5\u540C\u5802\u5C0E\u61A7\u649E\u6D1E\u77B3\u7AE5\u80F4\u8404\u9053\u9285\u5CE0\u9D07\u533F\u5F97\u5FB3\u6D9C\u7279\u7763\u79BF\u7BE4\u6BD2\u72EC\u8AAD\u6803\u6A61\u51F8\u7A81\u6934\u5C4A\u9CF6\u82EB\u5BC5\u9149\u701E\u5678\u5C6F\u60C7\u6566\u6C8C\u8C5A\u9041\u9813\u5451\u66C7\u920D\u5948\u90A3\u5185\u4E4D\u51EA\u8599\u8B0E\u7058\u637A\u934B\u6962\u99B4\u7E04\u7577\u5357\u6960\u8EDF\u96E3\u6C5D\u4E8C\u5C3C\u5F10\u8FE9\u5302\u8CD1\u8089\u8679\u5EFF\u65E5\u4E73\u5165"],["9440","\u5982\u5C3F\u97EE\u4EFB\u598A\u5FCD\u8A8D\u6FE1\u79B0\u7962\u5BE7\u8471\u732B\u71B1\u5E74\u5FF5\u637B\u649A\u71C3\u7C98\u4E43\u5EFC\u4E4B\u57DC\u56A2\u60A9\u6FC3\u7D0D\u80FD\u8133\u81BF\u8FB2\u8997\u86A4\u5DF4\u628A\u64AD\u8987\u6777\u6CE2\u6D3E\u7436\u7834\u5A46\u7F75\u82AD\u99AC\u4FF3\u5EC3\u62DD\u6392\u6557\u676F\u76C3\u724C\u80CC\u80BA\u8F29\u914D\u500D\u57F9\u5A92\u6885"],["9480","\u6973\u7164\u72FD\u8CB7\u58F2\u8CE0\u966A\u9019\u877F\u79E4\u77E7\u8429\u4F2F\u5265\u535A\u62CD\u67CF\u6CCA\u767D\u7B94\u7C95\u8236\u8584\u8FEB\u66DD\u6F20\u7206\u7E1B\u83AB\u99C1\u9EA6\u51FD\u7BB1\u7872\u7BB8\u8087\u7B48\u6AE8\u5E61\u808C\u7551\u7560\u516B\u9262\u6E8C\u767A\u9197\u9AEA\u4F10\u7F70\u629C\u7B4F\u95A5\u9CE9\u567A\u5859\u86E4\u96BC\u4F34\u5224\u534A\u53CD\u53DB\u5E06\u642C\u6591\u677F\u6C3E\u6C4E\u7248\u72AF\u73ED\u7554\u7E41\u822C\u85E9\u8CA9\u7BC4\u91C6\u7169\u9812\u98EF\u633D\u6669\u756A\u76E4\u78D0\u8543\u86EE\u532A\u5351\u5426\u5983\u5E87\u5F7C\u60B2\u6249\u6279\u62AB\u6590\u6BD4\u6CCC\u75B2\u76AE\u7891\u79D8\u7DCB\u7F77\u80A5\u88AB\u8AB9\u8CBB\u907F\u975E\u98DB\u6A0B\u7C38\u5099\u5C3E\u5FAE\u6787\u6BD8\u7435\u7709\u7F8E"],["9540","\u9F3B\u67CA\u7A17\u5339\u758B\u9AED\u5F66\u819D\u83F1\u8098\u5F3C\u5FC5\u7562\u7B46\u903C\u6867\u59EB\u5A9B\u7D10\u767E\u8B2C\u4FF5\u5F6A\u6A19\u6C37\u6F02\u74E2\u7968\u8868\u8A55\u8C79\u5EDF\u63CF\u75C5\u79D2\u82D7\u9328\u92F2\u849C\u86ED\u9C2D\u54C1\u5F6C\u658C\u6D5C\u7015\u8CA7\u8CD3\u983B\u654F\u74F6\u4E0D\u4ED8\u57E0\u592B\u5A66\u5BCC\u51A8\u5E03\u5E9C\u6016\u6276\u6577"],["9580","\u65A7\u666E\u6D6E\u7236\u7B26\u8150\u819A\u8299\u8B5C\u8CA0\u8CE6\u8D74\u961C\u9644\u4FAE\u64AB\u6B66\u821E\u8461\u856A\u90E8\u5C01\u6953\u98A8\u847A\u8557\u4F0F\u526F\u5FA9\u5E45\u670D\u798F\u8179\u8907\u8986\u6DF5\u5F17\u6255\u6CB8\u4ECF\u7269\u9B92\u5206\u543B\u5674\u58B3\u61A4\u626E\u711A\u596E\u7C89\u7CDE\u7D1B\u96F0\u6587\u805E\u4E19\u4F75\u5175\u5840\u5E63\u5E73\u5F0A\u67C4\u4E26\u853D\u9589\u965B\u7C73\u9801\u50FB\u58C1\u7656\u78A7\u5225\u77A5\u8511\u7B86\u504F\u5909\u7247\u7BC7\u7DE8\u8FBA\u8FD4\u904D\u4FBF\u52C9\u5A29\u5F01\u97AD\u4FDD\u8217\u92EA\u5703\u6355\u6B69\u752B\u88DC\u8F14\u7A42\u52DF\u5893\u6155\u620A\u66AE\u6BCD\u7C3F\u83E9\u5023\u4FF8\u5305\u5446\u5831\u5949\u5B9D\u5CF0\u5CEF\u5D29\u5E96\u62B1\u6367\u653E\u65B9\u670B"],["9640","\u6CD5\u6CE1\u70F9\u7832\u7E2B\u80DE\u82B3\u840C\u84EC\u8702\u8912\u8A2A\u8C4A\u90A6\u92D2\u98FD\u9CF3\u9D6C\u4E4F\u4EA1\u508D\u5256\u574A\u59A8\u5E3D\u5FD8\u5FD9\u623F\u66B4\u671B\u67D0\u68D2\u5192\u7D21\u80AA\u81A8\u8B00\u8C8C\u8CBF\u927E\u9632\u5420\u982C\u5317\u50D5\u535C\u58A8\u64B2\u6734\u7267\u7766\u7A46\u91E6\u52C3\u6CA1\u6B86\u5800\u5E4C\u5954\u672C\u7FFB\u51E1\u76C6"],["9680","\u6469\u78E8\u9B54\u9EBB\u57CB\u59B9\u6627\u679A\u6BCE\u54E9\u69D9\u5E55\u819C\u6795\u9BAA\u67FE\u9C52\u685D\u4EA6\u4FE3\u53C8\u62B9\u672B\u6CAB\u8FC4\u4FAD\u7E6D\u9EBF\u4E07\u6162\u6E80\u6F2B\u8513\u5473\u672A\u9B45\u5DF3\u7B95\u5CAC\u5BC6\u871C\u6E4A\u84D1\u7A14\u8108\u5999\u7C8D\u6C11\u7720\u52D9\u5922\u7121\u725F\u77DB\u9727\u9D61\u690B\u5A7F\u5A18\u51A5\u540D\u547D\u660E\u76DF\u8FF7\u9298\u9CF4\u59EA\u725D\u6EC5\u514D\u68C9\u7DBF\u7DEC\u9762\u9EBA\u6478\u6A21\u8302\u5984\u5B5F\u6BDB\u731B\u76F2\u7DB2\u8017\u8499\u5132\u6728\u9ED9\u76EE\u6762\u52FF\u9905\u5C24\u623B\u7C7E\u8CB0\u554F\u60B6\u7D0B\u9580\u5301\u4E5F\u51B6\u591C\u723A\u8036\u91CE\u5F25\u77E2\u5384\u5F79\u7D04\u85AC\u8A33\u8E8D\u9756\u67F3\u85AE\u9453\u6109\u6108\u6CB9\u7652"],["9740","\u8AED\u8F38\u552F\u4F51\u512A\u52C7\u53CB\u5BA5\u5E7D\u60A0\u6182\u63D6\u6709\u67DA\u6E67\u6D8C\u7336\u7337\u7531\u7950\u88D5\u8A98\u904A\u9091\u90F5\u96C4\u878D\u5915\u4E88\u4F59\u4E0E\u8A89\u8F3F\u9810\u50AD\u5E7C\u5996\u5BB9\u5EB8\u63DA\u63FA\u64C1\u66DC\u694A\u69D8\u6D0B\u6EB6\u7194\u7528\u7AAF\u7F8A\u8000\u8449\u84C9\u8981\u8B21\u8E0A\u9065\u967D\u990A\u617E\u6291\u6B32"],["9780","\u6C83\u6D74\u7FCC\u7FFC\u6DC0\u7F85\u87BA\u88F8\u6765\u83B1\u983C\u96F7\u6D1B\u7D61\u843D\u916A\u4E71\u5375\u5D50\u6B04\u6FEB\u85CD\u862D\u89A7\u5229\u540F\u5C65\u674E\u68A8\u7406\u7483\u75E2\u88CF\u88E1\u91CC\u96E2\u9678\u5F8B\u7387\u7ACB\u844E\u63A0\u7565\u5289\u6D41\u6E9C\u7409\u7559\u786B\u7C92\u9686\u7ADC\u9F8D\u4FB6\u616E\u65C5\u865C\u4E86\u4EAE\u50DA\u4E21\u51CC\u5BEE\u6599\u6881\u6DBC\u731F\u7642\u77AD\u7A1C\u7CE7\u826F\u8AD2\u907C\u91CF\u9675\u9818\u529B\u7DD1\u502B\u5398\u6797\u6DCB\u71D0\u7433\u81E8\u8F2A\u96A3\u9C57\u9E9F\u7460\u5841\u6D99\u7D2F\u985E\u4EE4\u4F36\u4F8B\u51B7\u52B1\u5DBA\u601C\u73B2\u793C\u82D3\u9234\u96B7\u96F6\u970A\u9E97\u9F62\u66A6\u6B74\u5217\u52A3\u70C8\u88C2\u5EC9\u604B\u6190\u6F23\u7149\u7C3E\u7DF4\u806F"],["9840","\u84EE\u9023\u932C\u5442\u9B6F\u6AD3\u7089\u8CC2\u8DEF\u9732\u52B4\u5A41\u5ECA\u5F04\u6717\u697C\u6994\u6D6A\u6F0F\u7262\u72FC\u7BED\u8001\u807E\u874B\u90CE\u516D\u9E93\u7984\u808B\u9332\u8AD6\u502D\u548C\u8A71\u6B6A\u8CC4\u8107\u60D1\u67A0\u9DF2\u4E99\u4E98\u9C10\u8A6B\u85C1\u8568\u6900\u6E7E\u7897\u8155"],["989f","\u5F0C\u4E10\u4E15\u4E2A\u4E31\u4E36\u4E3C\u4E3F\u4E42\u4E56\u4E58\u4E82\u4E85\u8C6B\u4E8A\u8212\u5F0D\u4E8E\u4E9E\u4E9F\u4EA0\u4EA2\u4EB0\u4EB3\u4EB6\u4ECE\u4ECD\u4EC4\u4EC6\u4EC2\u4ED7\u4EDE\u4EED\u4EDF\u4EF7\u4F09\u4F5A\u4F30\u4F5B\u4F5D\u4F57\u4F47\u4F76\u4F88\u4F8F\u4F98\u4F7B\u4F69\u4F70\u4F91\u4F6F\u4F86\u4F96\u5118\u4FD4\u4FDF\u4FCE\u4FD8\u4FDB\u4FD1\u4FDA\u4FD0\u4FE4\u4FE5\u501A\u5028\u5014\u502A\u5025\u5005\u4F1C\u4FF6\u5021\u5029\u502C\u4FFE\u4FEF\u5011\u5006\u5043\u5047\u6703\u5055\u5050\u5048\u505A\u5056\u506C\u5078\u5080\u509A\u5085\u50B4\u50B2"],["9940","\u50C9\u50CA\u50B3\u50C2\u50D6\u50DE\u50E5\u50ED\u50E3\u50EE\u50F9\u50F5\u5109\u5101\u5102\u5116\u5115\u5114\u511A\u5121\u513A\u5137\u513C\u513B\u513F\u5140\u5152\u514C\u5154\u5162\u7AF8\u5169\u516A\u516E\u5180\u5182\u56D8\u518C\u5189\u518F\u5191\u5193\u5195\u5196\u51A4\u51A6\u51A2\u51A9\u51AA\u51AB\u51B3\u51B1\u51B2\u51B0\u51B5\u51BD\u51C5\u51C9\u51DB\u51E0\u8655\u51E9\u51ED"],["9980","\u51F0\u51F5\u51FE\u5204\u520B\u5214\u520E\u5227\u522A\u522E\u5233\u5239\u524F\u5244\u524B\u524C\u525E\u5254\u526A\u5274\u5269\u5273\u527F\u527D\u528D\u5294\u5292\u5271\u5288\u5291\u8FA8\u8FA7\u52AC\u52AD\u52BC\u52B5\u52C1\u52CD\u52D7\u52DE\u52E3\u52E6\u98ED\u52E0\u52F3\u52F5\u52F8\u52F9\u5306\u5308\u7538\u530D\u5310\u530F\u5315\u531A\u5323\u532F\u5331\u5333\u5338\u5340\u5346\u5345\u4E17\u5349\u534D\u51D6\u535E\u5369\u536E\u5918\u537B\u5377\u5382\u5396\u53A0\u53A6\u53A5\u53AE\u53B0\u53B6\u53C3\u7C12\u96D9\u53DF\u66FC\u71EE\u53EE\u53E8\u53ED\u53FA\u5401\u543D\u5440\u542C\u542D\u543C\u542E\u5436\u5429\u541D\u544E\u548F\u5475\u548E\u545F\u5471\u5477\u5470\u5492\u547B\u5480\u5476\u5484\u5490\u5486\u54C7\u54A2\u54B8\u54A5\u54AC\u54C4\u54C8\u54A8"],["9a40","\u54AB\u54C2\u54A4\u54BE\u54BC\u54D8\u54E5\u54E6\u550F\u5514\u54FD\u54EE\u54ED\u54FA\u54E2\u5539\u5540\u5563\u554C\u552E\u555C\u5545\u5556\u5557\u5538\u5533\u555D\u5599\u5580\u54AF\u558A\u559F\u557B\u557E\u5598\u559E\u55AE\u557C\u5583\u55A9\u5587\u55A8\u55DA\u55C5\u55DF\u55C4\u55DC\u55E4\u55D4\u5614\u55F7\u5616\u55FE\u55FD\u561B\u55F9\u564E\u5650\u71DF\u5634\u5636\u5632\u5638"],["9a80","\u566B\u5664\u562F\u566C\u566A\u5686\u5680\u568A\u56A0\u5694\u568F\u56A5\u56AE\u56B6\u56B4\u56C2\u56BC\u56C1\u56C3\u56C0\u56C8\u56CE\u56D1\u56D3\u56D7\u56EE\u56F9\u5700\u56FF\u5704\u5709\u5708\u570B\u570D\u5713\u5718\u5716\u55C7\u571C\u5726\u5737\u5738\u574E\u573B\u5740\u574F\u5769\u57C0\u5788\u5761\u577F\u5789\u5793\u57A0\u57B3\u57A4\u57AA\u57B0\u57C3\u57C6\u57D4\u57D2\u57D3\u580A\u57D6\u57E3\u580B\u5819\u581D\u5872\u5821\u5862\u584B\u5870\u6BC0\u5852\u583D\u5879\u5885\u58B9\u589F\u58AB\u58BA\u58DE\u58BB\u58B8\u58AE\u58C5\u58D3\u58D1\u58D7\u58D9\u58D8\u58E5\u58DC\u58E4\u58DF\u58EF\u58FA\u58F9\u58FB\u58FC\u58FD\u5902\u590A\u5910\u591B\u68A6\u5925\u592C\u592D\u5932\u5938\u593E\u7AD2\u5955\u5950\u594E\u595A\u5958\u5962\u5960\u5967\u596C\u5969"],["9b40","\u5978\u5981\u599D\u4F5E\u4FAB\u59A3\u59B2\u59C6\u59E8\u59DC\u598D\u59D9\u59DA\u5A25\u5A1F\u5A11\u5A1C\u5A09\u5A1A\u5A40\u5A6C\u5A49\u5A35\u5A36\u5A62\u5A6A\u5A9A\u5ABC\u5ABE\u5ACB\u5AC2\u5ABD\u5AE3\u5AD7\u5AE6\u5AE9\u5AD6\u5AFA\u5AFB\u5B0C\u5B0B\u5B16\u5B32\u5AD0\u5B2A\u5B36\u5B3E\u5B43\u5B45\u5B40\u5B51\u5B55\u5B5A\u5B5B\u5B65\u5B69\u5B70\u5B73\u5B75\u5B78\u6588\u5B7A\u5B80"],["9b80","\u5B83\u5BA6\u5BB8\u5BC3\u5BC7\u5BC9\u5BD4\u5BD0\u5BE4\u5BE6\u5BE2\u5BDE\u5BE5\u5BEB\u5BF0\u5BF6\u5BF3\u5C05\u5C07\u5C08\u5C0D\u5C13\u5C20\u5C22\u5C28\u5C38\u5C39\u5C41\u5C46\u5C4E\u5C53\u5C50\u5C4F\u5B71\u5C6C\u5C6E\u4E62\u5C76\u5C79\u5C8C\u5C91\u5C94\u599B\u5CAB\u5CBB\u5CB6\u5CBC\u5CB7\u5CC5\u5CBE\u5CC7\u5CD9\u5CE9\u5CFD\u5CFA\u5CED\u5D8C\u5CEA\u5D0B\u5D15\u5D17\u5D5C\u5D1F\u5D1B\u5D11\u5D14\u5D22\u5D1A\u5D19\u5D18\u5D4C\u5D52\u5D4E\u5D4B\u5D6C\u5D73\u5D76\u5D87\u5D84\u5D82\u5DA2\u5D9D\u5DAC\u5DAE\u5DBD\u5D90\u5DB7\u5DBC\u5DC9\u5DCD\u5DD3\u5DD2\u5DD6\u5DDB\u5DEB\u5DF2\u5DF5\u5E0B\u5E1A\u5E19\u5E11\u5E1B\u5E36\u5E37\u5E44\u5E43\u5E40\u5E4E\u5E57\u5E54\u5E5F\u5E62\u5E64\u5E47\u5E75\u5E76\u5E7A\u9EBC\u5E7F\u5EA0\u5EC1\u5EC2\u5EC8\u5ED0\u5ECF"],["9c40","\u5ED6\u5EE3\u5EDD\u5EDA\u5EDB\u5EE2\u5EE1\u5EE8\u5EE9\u5EEC\u5EF1\u5EF3\u5EF0\u5EF4\u5EF8\u5EFE\u5F03\u5F09\u5F5D\u5F5C\u5F0B\u5F11\u5F16\u5F29\u5F2D\u5F38\u5F41\u5F48\u5F4C\u5F4E\u5F2F\u5F51\u5F56\u5F57\u5F59\u5F61\u5F6D\u5F73\u5F77\u5F83\u5F82\u5F7F\u5F8A\u5F88\u5F91\u5F87\u5F9E\u5F99\u5F98\u5FA0\u5FA8\u5FAD\u5FBC\u5FD6\u5FFB\u5FE4\u5FF8\u5FF1\u5FDD\u60B3\u5FFF\u6021\u6060"],["9c80","\u6019\u6010\u6029\u600E\u6031\u601B\u6015\u602B\u6026\u600F\u603A\u605A\u6041\u606A\u6077\u605F\u604A\u6046\u604D\u6063\u6043\u6064\u6042\u606C\u606B\u6059\u6081\u608D\u60E7\u6083\u609A\u6084\u609B\u6096\u6097\u6092\u60A7\u608B\u60E1\u60B8\u60E0\u60D3\u60B4\u5FF0\u60BD\u60C6\u60B5\u60D8\u614D\u6115\u6106\u60F6\u60F7\u6100\u60F4\u60FA\u6103\u6121\u60FB\u60F1\u610D\u610E\u6147\u613E\u6128\u6127\u614A\u613F\u613C\u612C\u6134\u613D\u6142\u6144\u6173\u6177\u6158\u6159\u615A\u616B\u6174\u616F\u6165\u6171\u615F\u615D\u6153\u6175\u6199\u6196\u6187\u61AC\u6194\u619A\u618A\u6191\u61AB\u61AE\u61CC\u61CA\u61C9\u61F7\u61C8\u61C3\u61C6\u61BA\u61CB\u7F79\u61CD\u61E6\u61E3\u61F6\u61FA\u61F4\u61FF\u61FD\u61FC\u61FE\u6200\u6208\u6209\u620D\u620C\u6214\u621B"],["9d40","\u621E\u6221\u622A\u622E\u6230\u6232\u6233\u6241\u624E\u625E\u6263\u625B\u6260\u6268\u627C\u6282\u6289\u627E\u6292\u6293\u6296\u62D4\u6283\u6294\u62D7\u62D1\u62BB\u62CF\u62FF\u62C6\u64D4\u62C8\u62DC\u62CC\u62CA\u62C2\u62C7\u629B\u62C9\u630C\u62EE\u62F1\u6327\u6302\u6308\u62EF\u62F5\u6350\u633E\u634D\u641C\u634F\u6396\u638E\u6380\u63AB\u6376\u63A3\u638F\u6389\u639F\u63B5\u636B"],["9d80","\u6369\u63BE\u63E9\u63C0\u63C6\u63E3\u63C9\u63D2\u63F6\u63C4\u6416\u6434\u6406\u6413\u6426\u6436\u651D\u6417\u6428\u640F\u6467\u646F\u6476\u644E\u652A\u6495\u6493\u64A5\u64A9\u6488\u64BC\u64DA\u64D2\u64C5\u64C7\u64BB\u64D8\u64C2\u64F1\u64E7\u8209\u64E0\u64E1\u62AC\u64E3\u64EF\u652C\u64F6\u64F4\u64F2\u64FA\u6500\u64FD\u6518\u651C\u6505\u6524\u6523\u652B\u6534\u6535\u6537\u6536\u6538\u754B\u6548\u6556\u6555\u654D\u6558\u655E\u655D\u6572\u6578\u6582\u6583\u8B8A\u659B\u659F\u65AB\u65B7\u65C3\u65C6\u65C1\u65C4\u65CC\u65D2\u65DB\u65D9\u65E0\u65E1\u65F1\u6772\u660A\u6603\u65FB\u6773\u6635\u6636\u6634\u661C\u664F\u6644\u6649\u6641\u665E\u665D\u6664\u6667\u6668\u665F\u6662\u6670\u6683\u6688\u668E\u6689\u6684\u6698\u669D\u66C1\u66B9\u66C9\u66BE\u66BC"],["9e40","\u66C4\u66B8\u66D6\u66DA\u66E0\u663F\u66E6\u66E9\u66F0\u66F5\u66F7\u670F\u6716\u671E\u6726\u6727\u9738\u672E\u673F\u6736\u6741\u6738\u6737\u6746\u675E\u6760\u6759\u6763\u6764\u6789\u6770\u67A9\u677C\u676A\u678C\u678B\u67A6\u67A1\u6785\u67B7\u67EF\u67B4\u67EC\u67B3\u67E9\u67B8\u67E4\u67DE\u67DD\u67E2\u67EE\u67B9\u67CE\u67C6\u67E7\u6A9C\u681E\u6846\u6829\u6840\u684D\u6832\u684E"],["9e80","\u68B3\u682B\u6859\u6863\u6877\u687F\u689F\u688F\u68AD\u6894\u689D\u689B\u6883\u6AAE\u68B9\u6874\u68B5\u68A0\u68BA\u690F\u688D\u687E\u6901\u68CA\u6908\u68D8\u6922\u6926\u68E1\u690C\u68CD\u68D4\u68E7\u68D5\u6936\u6912\u6904\u68D7\u68E3\u6925\u68F9\u68E0\u68EF\u6928\u692A\u691A\u6923\u6921\u68C6\u6979\u6977\u695C\u6978\u696B\u6954\u697E\u696E\u6939\u6974\u693D\u6959\u6930\u6961\u695E\u695D\u6981\u696A\u69B2\u69AE\u69D0\u69BF\u69C1\u69D3\u69BE\u69CE\u5BE8\u69CA\u69DD\u69BB\u69C3\u69A7\u6A2E\u6991\u69A0\u699C\u6995\u69B4\u69DE\u69E8\u6A02\u6A1B\u69FF\u6B0A\u69F9\u69F2\u69E7\u6A05\u69B1\u6A1E\u69ED\u6A14\u69EB\u6A0A\u6A12\u6AC1\u6A23\u6A13\u6A44\u6A0C\u6A72\u6A36\u6A78\u6A47\u6A62\u6A59\u6A66\u6A48\u6A38\u6A22\u6A90\u6A8D\u6AA0\u6A84\u6AA2\u6AA3"],["9f40","\u6A97\u8617\u6ABB\u6AC3\u6AC2\u6AB8\u6AB3\u6AAC\u6ADE\u6AD1\u6ADF\u6AAA\u6ADA\u6AEA\u6AFB\u6B05\u8616\u6AFA\u6B12\u6B16\u9B31\u6B1F\u6B38\u6B37\u76DC\u6B39\u98EE\u6B47\u6B43\u6B49\u6B50\u6B59\u6B54\u6B5B\u6B5F\u6B61\u6B78\u6B79\u6B7F\u6B80\u6B84\u6B83\u6B8D\u6B98\u6B95\u6B9E\u6BA4\u6BAA\u6BAB\u6BAF\u6BB2\u6BB1\u6BB3\u6BB7\u6BBC\u6BC6\u6BCB\u6BD3\u6BDF\u6BEC\u6BEB\u6BF3\u6BEF"],["9f80","\u9EBE\u6C08\u6C13\u6C14\u6C1B\u6C24\u6C23\u6C5E\u6C55\u6C62\u6C6A\u6C82\u6C8D\u6C9A\u6C81\u6C9B\u6C7E\u6C68\u6C73\u6C92\u6C90\u6CC4\u6CF1\u6CD3\u6CBD\u6CD7\u6CC5\u6CDD\u6CAE\u6CB1\u6CBE\u6CBA\u6CDB\u6CEF\u6CD9\u6CEA\u6D1F\u884D\u6D36\u6D2B\u6D3D\u6D38\u6D19\u6D35\u6D33\u6D12\u6D0C\u6D63\u6D93\u6D64\u6D5A\u6D79\u6D59\u6D8E\u6D95\u6FE4\u6D85\u6DF9\u6E15\u6E0A\u6DB5\u6DC7\u6DE6\u6DB8\u6DC6\u6DEC\u6DDE\u6DCC\u6DE8\u6DD2\u6DC5\u6DFA\u6DD9\u6DE4\u6DD5\u6DEA\u6DEE\u6E2D\u6E6E\u6E2E\u6E19\u6E72\u6E5F\u6E3E\u6E23\u6E6B\u6E2B\u6E76\u6E4D\u6E1F\u6E43\u6E3A\u6E4E\u6E24\u6EFF\u6E1D\u6E38\u6E82\u6EAA\u6E98\u6EC9\u6EB7\u6ED3\u6EBD\u6EAF\u6EC4\u6EB2\u6ED4\u6ED5\u6E8F\u6EA5\u6EC2\u6E9F\u6F41\u6F11\u704C\u6EEC\u6EF8\u6EFE\u6F3F\u6EF2\u6F31\u6EEF\u6F32\u6ECC"],["e040","\u6F3E\u6F13\u6EF7\u6F86\u6F7A\u6F78\u6F81\u6F80\u6F6F\u6F5B\u6FF3\u6F6D\u6F82\u6F7C\u6F58\u6F8E\u6F91\u6FC2\u6F66\u6FB3\u6FA3\u6FA1\u6FA4\u6FB9\u6FC6\u6FAA\u6FDF\u6FD5\u6FEC\u6FD4\u6FD8\u6FF1\u6FEE\u6FDB\u7009\u700B\u6FFA\u7011\u7001\u700F\u6FFE\u701B\u701A\u6F74\u701D\u7018\u701F\u7030\u703E\u7032\u7051\u7063\u7099\u7092\u70AF\u70F1\u70AC\u70B8\u70B3\u70AE\u70DF\u70CB\u70DD"],["e080","\u70D9\u7109\u70FD\u711C\u7119\u7165\u7155\u7188\u7166\u7162\u714C\u7156\u716C\u718F\u71FB\u7184\u7195\u71A8\u71AC\u71D7\u71B9\u71BE\u71D2\u71C9\u71D4\u71CE\u71E0\u71EC\u71E7\u71F5\u71FC\u71F9\u71FF\u720D\u7210\u721B\u7228\u722D\u722C\u7230\u7232\u723B\u723C\u723F\u7240\u7246\u724B\u7258\u7274\u727E\u7282\u7281\u7287\u7292\u7296\u72A2\u72A7\u72B9\u72B2\u72C3\u72C6\u72C4\u72CE\u72D2\u72E2\u72E0\u72E1\u72F9\u72F7\u500F\u7317\u730A\u731C\u7316\u731D\u7334\u732F\u7329\u7325\u733E\u734E\u734F\u9ED8\u7357\u736A\u7368\u7370\u7378\u7375\u737B\u737A\u73C8\u73B3\u73CE\u73BB\u73C0\u73E5\u73EE\u73DE\u74A2\u7405\u746F\u7425\u73F8\u7432\u743A\u7455\u743F\u745F\u7459\u7441\u745C\u7469\u7470\u7463\u746A\u7476\u747E\u748B\u749E\u74A7\u74CA\u74CF\u74D4\u73F1"],["e140","\u74E0\u74E3\u74E7\u74E9\u74EE\u74F2\u74F0\u74F1\u74F8\u74F7\u7504\u7503\u7505\u750C\u750E\u750D\u7515\u7513\u751E\u7526\u752C\u753C\u7544\u754D\u754A\u7549\u755B\u7546\u755A\u7569\u7564\u7567\u756B\u756D\u7578\u7576\u7586\u7587\u7574\u758A\u7589\u7582\u7594\u759A\u759D\u75A5\u75A3\u75C2\u75B3\u75C3\u75B5\u75BD\u75B8\u75BC\u75B1\u75CD\u75CA\u75D2\u75D9\u75E3\u75DE\u75FE\u75FF"],["e180","\u75FC\u7601\u75F0\u75FA\u75F2\u75F3\u760B\u760D\u7609\u761F\u7627\u7620\u7621\u7622\u7624\u7634\u7630\u763B\u7647\u7648\u7646\u765C\u7658\u7661\u7662\u7668\u7669\u766A\u7667\u766C\u7670\u7672\u7676\u7678\u767C\u7680\u7683\u7688\u768B\u768E\u7696\u7693\u7699\u769A\u76B0\u76B4\u76B8\u76B9\u76BA\u76C2\u76CD\u76D6\u76D2\u76DE\u76E1\u76E5\u76E7\u76EA\u862F\u76FB\u7708\u7707\u7704\u7729\u7724\u771E\u7725\u7726\u771B\u7737\u7738\u7747\u775A\u7768\u776B\u775B\u7765\u777F\u777E\u7779\u778E\u778B\u7791\u77A0\u779E\u77B0\u77B6\u77B9\u77BF\u77BC\u77BD\u77BB\u77C7\u77CD\u77D7\u77DA\u77DC\u77E3\u77EE\u77FC\u780C\u7812\u7926\u7820\u792A\u7845\u788E\u7874\u7886\u787C\u789A\u788C\u78A3\u78B5\u78AA\u78AF\u78D1\u78C6\u78CB\u78D4\u78BE\u78BC\u78C5\u78CA\u78EC"],["e240","\u78E7\u78DA\u78FD\u78F4\u7907\u7912\u7911\u7919\u792C\u792B\u7940\u7960\u7957\u795F\u795A\u7955\u7953\u797A\u797F\u798A\u799D\u79A7\u9F4B\u79AA\u79AE\u79B3\u79B9\u79BA\u79C9\u79D5\u79E7\u79EC\u79E1\u79E3\u7A08\u7A0D\u7A18\u7A19\u7A20\u7A1F\u7980\u7A31\u7A3B\u7A3E\u7A37\u7A43\u7A57\u7A49\u7A61\u7A62\u7A69\u9F9D\u7A70\u7A79\u7A7D\u7A88\u7A97\u7A95\u7A98\u7A96\u7AA9\u7AC8\u7AB0"],["e280","\u7AB6\u7AC5\u7AC4\u7ABF\u9083\u7AC7\u7ACA\u7ACD\u7ACF\u7AD5\u7AD3\u7AD9\u7ADA\u7ADD\u7AE1\u7AE2\u7AE6\u7AED\u7AF0\u7B02\u7B0F\u7B0A\u7B06\u7B33\u7B18\u7B19\u7B1E\u7B35\u7B28\u7B36\u7B50\u7B7A\u7B04\u7B4D\u7B0B\u7B4C\u7B45\u7B75\u7B65\u7B74\u7B67\u7B70\u7B71\u7B6C\u7B6E\u7B9D\u7B98\u7B9F\u7B8D\u7B9C\u7B9A\u7B8B\u7B92\u7B8F\u7B5D\u7B99\u7BCB\u7BC1\u7BCC\u7BCF\u7BB4\u7BC6\u7BDD\u7BE9\u7C11\u7C14\u7BE6\u7BE5\u7C60\u7C00\u7C07\u7C13\u7BF3\u7BF7\u7C17\u7C0D\u7BF6\u7C23\u7C27\u7C2A\u7C1F\u7C37\u7C2B\u7C3D\u7C4C\u7C43\u7C54\u7C4F\u7C40\u7C50\u7C58\u7C5F\u7C64\u7C56\u7C65\u7C6C\u7C75\u7C83\u7C90\u7CA4\u7CAD\u7CA2\u7CAB\u7CA1\u7CA8\u7CB3\u7CB2\u7CB1\u7CAE\u7CB9\u7CBD\u7CC0\u7CC5\u7CC2\u7CD8\u7CD2\u7CDC\u7CE2\u9B3B\u7CEF\u7CF2\u7CF4\u7CF6\u7CFA\u7D06"],["e340","\u7D02\u7D1C\u7D15\u7D0A\u7D45\u7D4B\u7D2E\u7D32\u7D3F\u7D35\u7D46\u7D73\u7D56\u7D4E\u7D72\u7D68\u7D6E\u7D4F\u7D63\u7D93\u7D89\u7D5B\u7D8F\u7D7D\u7D9B\u7DBA\u7DAE\u7DA3\u7DB5\u7DC7\u7DBD\u7DAB\u7E3D\u7DA2\u7DAF\u7DDC\u7DB8\u7D9F\u7DB0\u7DD8\u7DDD\u7DE4\u7DDE\u7DFB\u7DF2\u7DE1\u7E05\u7E0A\u7E23\u7E21\u7E12\u7E31\u7E1F\u7E09\u7E0B\u7E22\u7E46\u7E66\u7E3B\u7E35\u7E39\u7E43\u7E37"],["e380","\u7E32\u7E3A\u7E67\u7E5D\u7E56\u7E5E\u7E59\u7E5A\u7E79\u7E6A\u7E69\u7E7C\u7E7B\u7E83\u7DD5\u7E7D\u8FAE\u7E7F\u7E88\u7E89\u7E8C\u7E92\u7E90\u7E93\u7E94\u7E96\u7E8E\u7E9B\u7E9C\u7F38\u7F3A\u7F45\u7F4C\u7F4D\u7F4E\u7F50\u7F51\u7F55\u7F54\u7F58\u7F5F\u7F60\u7F68\u7F69\u7F67\u7F78\u7F82\u7F86\u7F83\u7F88\u7F87\u7F8C\u7F94\u7F9E\u7F9D\u7F9A\u7FA3\u7FAF\u7FB2\u7FB9\u7FAE\u7FB6\u7FB8\u8B71\u7FC5\u7FC6\u7FCA\u7FD5\u7FD4\u7FE1\u7FE6\u7FE9\u7FF3\u7FF9\u98DC\u8006\u8004\u800B\u8012\u8018\u8019\u801C\u8021\u8028\u803F\u803B\u804A\u8046\u8052\u8058\u805A\u805F\u8062\u8068\u8073\u8072\u8070\u8076\u8079\u807D\u807F\u8084\u8086\u8085\u809B\u8093\u809A\u80AD\u5190\u80AC\u80DB\u80E5\u80D9\u80DD\u80C4\u80DA\u80D6\u8109\u80EF\u80F1\u811B\u8129\u8123\u812F\u814B"],["e440","\u968B\u8146\u813E\u8153\u8151\u80FC\u8171\u816E\u8165\u8166\u8174\u8183\u8188\u818A\u8180\u8182\u81A0\u8195\u81A4\u81A3\u815F\u8193\u81A9\u81B0\u81B5\u81BE\u81B8\u81BD\u81C0\u81C2\u81BA\u81C9\u81CD\u81D1\u81D9\u81D8\u81C8\u81DA\u81DF\u81E0\u81E7\u81FA\u81FB\u81FE\u8201\u8202\u8205\u8207\u820A\u820D\u8210\u8216\u8229\u822B\u8238\u8233\u8240\u8259\u8258\u825D\u825A\u825F\u8264"],["e480","\u8262\u8268\u826A\u826B\u822E\u8271\u8277\u8278\u827E\u828D\u8292\u82AB\u829F\u82BB\u82AC\u82E1\u82E3\u82DF\u82D2\u82F4\u82F3\u82FA\u8393\u8303\u82FB\u82F9\u82DE\u8306\u82DC\u8309\u82D9\u8335\u8334\u8316\u8332\u8331\u8340\u8339\u8350\u8345\u832F\u832B\u8317\u8318\u8385\u839A\u83AA\u839F\u83A2\u8396\u8323\u838E\u8387\u838A\u837C\u83B5\u8373\u8375\u83A0\u8389\u83A8\u83F4\u8413\u83EB\u83CE\u83FD\u8403\u83D8\u840B\u83C1\u83F7\u8407\u83E0\u83F2\u840D\u8422\u8420\u83BD\u8438\u8506\u83FB\u846D\u842A\u843C\u855A\u8484\u8477\u846B\u84AD\u846E\u8482\u8469\u8446\u842C\u846F\u8479\u8435\u84CA\u8462\u84B9\u84BF\u849F\u84D9\u84CD\u84BB\u84DA\u84D0\u84C1\u84C6\u84D6\u84A1\u8521\u84FF\u84F4\u8517\u8518\u852C\u851F\u8515\u8514\u84FC\u8540\u8563\u8558\u8548"],["e540","\u8541\u8602\u854B\u8555\u8580\u85A4\u8588\u8591\u858A\u85A8\u856D\u8594\u859B\u85EA\u8587\u859C\u8577\u857E\u8590\u85C9\u85BA\u85CF\u85B9\u85D0\u85D5\u85DD\u85E5\u85DC\u85F9\u860A\u8613\u860B\u85FE\u85FA\u8606\u8622\u861A\u8630\u863F\u864D\u4E55\u8654\u865F\u8667\u8671\u8693\u86A3\u86A9\u86AA\u868B\u868C\u86B6\u86AF\u86C4\u86C6\u86B0\u86C9\u8823\u86AB\u86D4\u86DE\u86E9\u86EC"],["e580","\u86DF\u86DB\u86EF\u8712\u8706\u8708\u8700\u8703\u86FB\u8711\u8709\u870D\u86F9\u870A\u8734\u873F\u8737\u873B\u8725\u8729\u871A\u8760\u875F\u8778\u874C\u874E\u8774\u8757\u8768\u876E\u8759\u8753\u8763\u876A\u8805\u87A2\u879F\u8782\u87AF\u87CB\u87BD\u87C0\u87D0\u96D6\u87AB\u87C4\u87B3\u87C7\u87C6\u87BB\u87EF\u87F2\u87E0\u880F\u880D\u87FE\u87F6\u87F7\u880E\u87D2\u8811\u8816\u8815\u8822\u8821\u8831\u8836\u8839\u8827\u883B\u8844\u8842\u8852\u8859\u885E\u8862\u886B\u8881\u887E\u889E\u8875\u887D\u88B5\u8872\u8882\u8897\u8892\u88AE\u8899\u88A2\u888D\u88A4\u88B0\u88BF\u88B1\u88C3\u88C4\u88D4\u88D8\u88D9\u88DD\u88F9\u8902\u88FC\u88F4\u88E8\u88F2\u8904\u890C\u890A\u8913\u8943\u891E\u8925\u892A\u892B\u8941\u8944\u893B\u8936\u8938\u894C\u891D\u8960\u895E"],["e640","\u8966\u8964\u896D\u896A\u896F\u8974\u8977\u897E\u8983\u8988\u898A\u8993\u8998\u89A1\u89A9\u89A6\u89AC\u89AF\u89B2\u89BA\u89BD\u89BF\u89C0\u89DA\u89DC\u89DD\u89E7\u89F4\u89F8\u8A03\u8A16\u8A10\u8A0C\u8A1B\u8A1D\u8A25\u8A36\u8A41\u8A5B\u8A52\u8A46\u8A48\u8A7C\u8A6D\u8A6C\u8A62\u8A85\u8A82\u8A84\u8AA8\u8AA1\u8A91\u8AA5\u8AA6\u8A9A\u8AA3\u8AC4\u8ACD\u8AC2\u8ADA\u8AEB\u8AF3\u8AE7"],["e680","\u8AE4\u8AF1\u8B14\u8AE0\u8AE2\u8AF7\u8ADE\u8ADB\u8B0C\u8B07\u8B1A\u8AE1\u8B16\u8B10\u8B17\u8B20\u8B33\u97AB\u8B26\u8B2B\u8B3E\u8B28\u8B41\u8B4C\u8B4F\u8B4E\u8B49\u8B56\u8B5B\u8B5A\u8B6B\u8B5F\u8B6C\u8B6F\u8B74\u8B7D\u8B80\u8B8C\u8B8E\u8B92\u8B93\u8B96\u8B99\u8B9A\u8C3A\u8C41\u8C3F\u8C48\u8C4C\u8C4E\u8C50\u8C55\u8C62\u8C6C\u8C78\u8C7A\u8C82\u8C89\u8C85\u8C8A\u8C8D\u8C8E\u8C94\u8C7C\u8C98\u621D\u8CAD\u8CAA\u8CBD\u8CB2\u8CB3\u8CAE\u8CB6\u8CC8\u8CC1\u8CE4\u8CE3\u8CDA\u8CFD\u8CFA\u8CFB\u8D04\u8D05\u8D0A\u8D07\u8D0F\u8D0D\u8D10\u9F4E\u8D13\u8CCD\u8D14\u8D16\u8D67\u8D6D\u8D71\u8D73\u8D81\u8D99\u8DC2\u8DBE\u8DBA\u8DCF\u8DDA\u8DD6\u8DCC\u8DDB\u8DCB\u8DEA\u8DEB\u8DDF\u8DE3\u8DFC\u8E08\u8E09\u8DFF\u8E1D\u8E1E\u8E10\u8E1F\u8E42\u8E35\u8E30\u8E34\u8E4A"],["e740","\u8E47\u8E49\u8E4C\u8E50\u8E48\u8E59\u8E64\u8E60\u8E2A\u8E63\u8E55\u8E76\u8E72\u8E7C\u8E81\u8E87\u8E85\u8E84\u8E8B\u8E8A\u8E93\u8E91\u8E94\u8E99\u8EAA\u8EA1\u8EAC\u8EB0\u8EC6\u8EB1\u8EBE\u8EC5\u8EC8\u8ECB\u8EDB\u8EE3\u8EFC\u8EFB\u8EEB\u8EFE\u8F0A\u8F05\u8F15\u8F12\u8F19\u8F13\u8F1C\u8F1F\u8F1B\u8F0C\u8F26\u8F33\u8F3B\u8F39\u8F45\u8F42\u8F3E\u8F4C\u8F49\u8F46\u8F4E\u8F57\u8F5C"],["e780","\u8F62\u8F63\u8F64\u8F9C\u8F9F\u8FA3\u8FAD\u8FAF\u8FB7\u8FDA\u8FE5\u8FE2\u8FEA\u8FEF\u9087\u8FF4\u9005\u8FF9\u8FFA\u9011\u9015\u9021\u900D\u901E\u9016\u900B\u9027\u9036\u9035\u9039\u8FF8\u904F\u9050\u9051\u9052\u900E\u9049\u903E\u9056\u9058\u905E\u9068\u906F\u9076\u96A8\u9072\u9082\u907D\u9081\u9080\u908A\u9089\u908F\u90A8\u90AF\u90B1\u90B5\u90E2\u90E4\u6248\u90DB\u9102\u9112\u9119\u9132\u9130\u914A\u9156\u9158\u9163\u9165\u9169\u9173\u9172\u918B\u9189\u9182\u91A2\u91AB\u91AF\u91AA\u91B5\u91B4\u91BA\u91C0\u91C1\u91C9\u91CB\u91D0\u91D6\u91DF\u91E1\u91DB\u91FC\u91F5\u91F6\u921E\u91FF\u9214\u922C\u9215\u9211\u925E\u9257\u9245\u9249\u9264\u9248\u9295\u923F\u924B\u9250\u929C\u9296\u9293\u929B\u925A\u92CF\u92B9\u92B7\u92E9\u930F\u92FA\u9344\u932E"],["e840","\u9319\u9322\u931A\u9323\u933A\u9335\u933B\u935C\u9360\u937C\u936E\u9356\u93B0\u93AC\u93AD\u9394\u93B9\u93D6\u93D7\u93E8\u93E5\u93D8\u93C3\u93DD\u93D0\u93C8\u93E4\u941A\u9414\u9413\u9403\u9407\u9410\u9436\u942B\u9435\u9421\u943A\u9441\u9452\u9444\u945B\u9460\u9462\u945E\u946A\u9229\u9470\u9475\u9477\u947D\u945A\u947C\u947E\u9481\u947F\u9582\u9587\u958A\u9594\u9596\u9598\u9599"],["e880","\u95A0\u95A8\u95A7\u95AD\u95BC\u95BB\u95B9\u95BE\u95CA\u6FF6\u95C3\u95CD\u95CC\u95D5\u95D4\u95D6\u95DC\u95E1\u95E5\u95E2\u9621\u9628\u962E\u962F\u9642\u964C\u964F\u964B\u9677\u965C\u965E\u965D\u965F\u9666\u9672\u966C\u968D\u9698\u9695\u9697\u96AA\u96A7\u96B1\u96B2\u96B0\u96B4\u96B6\u96B8\u96B9\u96CE\u96CB\u96C9\u96CD\u894D\u96DC\u970D\u96D5\u96F9\u9704\u9706\u9708\u9713\u970E\u9711\u970F\u9716\u9719\u9724\u972A\u9730\u9739\u973D\u973E\u9744\u9746\u9748\u9742\u9749\u975C\u9760\u9764\u9766\u9768\u52D2\u976B\u9771\u9779\u9785\u977C\u9781\u977A\u9786\u978B\u978F\u9790\u979C\u97A8\u97A6\u97A3\u97B3\u97B4\u97C3\u97C6\u97C8\u97CB\u97DC\u97ED\u9F4F\u97F2\u7ADF\u97F6\u97F5\u980F\u980C\u9838\u9824\u9821\u9837\u983D\u9846\u984F\u984B\u986B\u986F\u9870"],["e940","\u9871\u9874\u9873\u98AA\u98AF\u98B1\u98B6\u98C4\u98C3\u98C6\u98E9\u98EB\u9903\u9909\u9912\u9914\u9918\u9921\u991D\u991E\u9924\u9920\u992C\u992E\u993D\u993E\u9942\u9949\u9945\u9950\u994B\u9951\u9952\u994C\u9955\u9997\u9998\u99A5\u99AD\u99AE\u99BC\u99DF\u99DB\u99DD\u99D8\u99D1\u99ED\u99EE\u99F1\u99F2\u99FB\u99F8\u9A01\u9A0F\u9A05\u99E2\u9A19\u9A2B\u9A37\u9A45\u9A42\u9A40\u9A43"],["e980","\u9A3E\u9A55\u9A4D\u9A5B\u9A57\u9A5F\u9A62\u9A65\u9A64\u9A69\u9A6B\u9A6A\u9AAD\u9AB0\u9ABC\u9AC0\u9ACF\u9AD1\u9AD3\u9AD4\u9ADE\u9ADF\u9AE2\u9AE3\u9AE6\u9AEF\u9AEB\u9AEE\u9AF4\u9AF1\u9AF7\u9AFB\u9B06\u9B18\u9B1A\u9B1F\u9B22\u9B23\u9B25\u9B27\u9B28\u9B29\u9B2A\u9B2E\u9B2F\u9B32\u9B44\u9B43\u9B4F\u9B4D\u9B4E\u9B51\u9B58\u9B74\u9B93\u9B83\u9B91\u9B96\u9B97\u9B9F\u9BA0\u9BA8\u9BB4\u9BC0\u9BCA\u9BB9\u9BC6\u9BCF\u9BD1\u9BD2\u9BE3\u9BE2\u9BE4\u9BD4\u9BE1\u9C3A\u9BF2\u9BF1\u9BF0\u9C15\u9C14\u9C09\u9C13\u9C0C\u9C06\u9C08\u9C12\u9C0A\u9C04\u9C2E\u9C1B\u9C25\u9C24\u9C21\u9C30\u9C47\u9C32\u9C46\u9C3E\u9C5A\u9C60\u9C67\u9C76\u9C78\u9CE7\u9CEC\u9CF0\u9D09\u9D08\u9CEB\u9D03\u9D06\u9D2A\u9D26\u9DAF\u9D23\u9D1F\u9D44\u9D15\u9D12\u9D41\u9D3F\u9D3E\u9D46\u9D48"],["ea40","\u9D5D\u9D5E\u9D64\u9D51\u9D50\u9D59\u9D72\u9D89\u9D87\u9DAB\u9D6F\u9D7A\u9D9A\u9DA4\u9DA9\u9DB2\u9DC4\u9DC1\u9DBB\u9DB8\u9DBA\u9DC6\u9DCF\u9DC2\u9DD9\u9DD3\u9DF8\u9DE6\u9DED\u9DEF\u9DFD\u9E1A\u9E1B\u9E1E\u9E75\u9E79\u9E7D\u9E81\u9E88\u9E8B\u9E8C\u9E92\u9E95\u9E91\u9E9D\u9EA5\u9EA9\u9EB8\u9EAA\u9EAD\u9761\u9ECC\u9ECE\u9ECF\u9ED0\u9ED4\u9EDC\u9EDE\u9EDD\u9EE0\u9EE5\u9EE8\u9EEF"],["ea80","\u9EF4\u9EF6\u9EF7\u9EF9\u9EFB\u9EFC\u9EFD\u9F07\u9F08\u76B7\u9F15\u9F21\u9F2C\u9F3E\u9F4A\u9F52\u9F54\u9F63\u9F5F\u9F60\u9F61\u9F66\u9F67\u9F6C\u9F6A\u9F77\u9F72\u9F76\u9F95\u9F9C\u9FA0\u582F\u69C7\u9059\u7464\u51DC\u7199"],["ed40","\u7E8A\u891C\u9348\u9288\u84DC\u4FC9\u70BB\u6631\u68C8\u92F9\u66FB\u5F45\u4E28\u4EE1\u4EFC\u4F00\u4F03\u4F39\u4F56\u4F92\u4F8A\u4F9A\u4F94\u4FCD\u5040\u5022\u4FFF\u501E\u5046\u5070\u5042\u5094\u50F4\u50D8\u514A\u5164\u519D\u51BE\u51EC\u5215\u529C\u52A6\u52C0\u52DB\u5300\u5307\u5324\u5372\u5393\u53B2\u53DD\uFA0E\u549C\u548A\u54A9\u54FF\u5586\u5759\u5765\u57AC\u57C8\u57C7\uFA0F"],["ed80","\uFA10\u589E\u58B2\u590B\u5953\u595B\u595D\u5963\u59A4\u59BA\u5B56\u5BC0\u752F\u5BD8\u5BEC\u5C1E\u5CA6\u5CBA\u5CF5\u5D27\u5D53\uFA11\u5D42\u5D6D\u5DB8\u5DB9\u5DD0\u5F21\u5F34\u5F67\u5FB7\u5FDE\u605D\u6085\u608A\u60DE\u60D5\u6120\u60F2\u6111\u6137\u6130\u6198\u6213\u62A6\u63F5\u6460\u649D\u64CE\u654E\u6600\u6615\u663B\u6609\u662E\u661E\u6624\u6665\u6657\u6659\uFA12\u6673\u6699\u66A0\u66B2\u66BF\u66FA\u670E\uF929\u6766\u67BB\u6852\u67C0\u6801\u6844\u68CF\uFA13\u6968\uFA14\u6998\u69E2\u6A30\u6A6B\u6A46\u6A73\u6A7E\u6AE2\u6AE4\u6BD6\u6C3F\u6C5C\u6C86\u6C6F\u6CDA\u6D04\u6D87\u6D6F\u6D96\u6DAC\u6DCF\u6DF8\u6DF2\u6DFC\u6E39\u6E5C\u6E27\u6E3C\u6EBF\u6F88\u6FB5\u6FF5\u7005\u7007\u7028\u7085\u70AB\u710F\u7104\u715C\u7146\u7147\uFA15\u71C1\u71FE\u72B1"],["ee40","\u72BE\u7324\uFA16\u7377\u73BD\u73C9\u73D6\u73E3\u73D2\u7407\u73F5\u7426\u742A\u7429\u742E\u7462\u7489\u749F\u7501\u756F\u7682\u769C\u769E\u769B\u76A6\uFA17\u7746\u52AF\u7821\u784E\u7864\u787A\u7930\uFA18\uFA19\uFA1A\u7994\uFA1B\u799B\u7AD1\u7AE7\uFA1C\u7AEB\u7B9E\uFA1D\u7D48\u7D5C\u7DB7\u7DA0\u7DD6\u7E52\u7F47\u7FA1\uFA1E\u8301\u8362\u837F\u83C7\u83F6\u8448\u84B4\u8553\u8559"],["ee80","\u856B\uFA1F\u85B0\uFA20\uFA21\u8807\u88F5\u8A12\u8A37\u8A79\u8AA7\u8ABE\u8ADF\uFA22\u8AF6\u8B53\u8B7F\u8CF0\u8CF4\u8D12\u8D76\uFA23\u8ECF\uFA24\uFA25\u9067\u90DE\uFA26\u9115\u9127\u91DA\u91D7\u91DE\u91ED\u91EE\u91E4\u91E5\u9206\u9210\u920A\u923A\u9240\u923C\u924E\u9259\u9251\u9239\u9267\u92A7\u9277\u9278\u92E7\u92D7\u92D9\u92D0\uFA27\u92D5\u92E0\u92D3\u9325\u9321\u92FB\uFA28\u931E\u92FF\u931D\u9302\u9370\u9357\u93A4\u93C6\u93DE\u93F8\u9431\u9445\u9448\u9592\uF9DC\uFA29\u969D\u96AF\u9733\u973B\u9743\u974D\u974F\u9751\u9755\u9857\u9865\uFA2A\uFA2B\u9927\uFA2C\u999E\u9A4E\u9AD9\u9ADC\u9B75\u9B72\u9B8F\u9BB1\u9BBB\u9C00\u9D70\u9D6B\uFA2D\u9E19\u9ED1"],["eeef","\u2170",9,"\uFFE2\uFFE4\uFF07\uFF02"],["f040","\uE000",62],["f080","\uE03F",124],["f140","\uE0BC",62],["f180","\uE0FB",124],["f240","\uE178",62],["f280","\uE1B7",124],["f340","\uE234",62],["f380","\uE273",124],["f440","\uE2F0",62],["f480","\uE32F",124],["f540","\uE3AC",62],["f580","\uE3EB",124],["f640","\uE468",62],["f680","\uE4A7",124],["f740","\uE524",62],["f780","\uE563",124],["f840","\uE5E0",62],["f880","\uE61F",124],["f940","\uE69C"],["fa40","\u2170",9,"\u2160",9,"\uFFE2\uFFE4\uFF07\uFF02\u3231\u2116\u2121\u2235\u7E8A\u891C\u9348\u9288\u84DC\u4FC9\u70BB\u6631\u68C8\u92F9\u66FB\u5F45\u4E28\u4EE1\u4EFC\u4F00\u4F03\u4F39\u4F56\u4F92\u4F8A\u4F9A\u4F94\u4FCD\u5040\u5022\u4FFF\u501E\u5046\u5070\u5042\u5094\u50F4\u50D8\u514A"],["fa80","\u5164\u519D\u51BE\u51EC\u5215\u529C\u52A6\u52C0\u52DB\u5300\u5307\u5324\u5372\u5393\u53B2\u53DD\uFA0E\u549C\u548A\u54A9\u54FF\u5586\u5759\u5765\u57AC\u57C8\u57C7\uFA0F\uFA10\u589E\u58B2\u590B\u5953\u595B\u595D\u5963\u59A4\u59BA\u5B56\u5BC0\u752F\u5BD8\u5BEC\u5C1E\u5CA6\u5CBA\u5CF5\u5D27\u5D53\uFA11\u5D42\u5D6D\u5DB8\u5DB9\u5DD0\u5F21\u5F34\u5F67\u5FB7\u5FDE\u605D\u6085\u608A\u60DE\u60D5\u6120\u60F2\u6111\u6137\u6130\u6198\u6213\u62A6\u63F5\u6460\u649D\u64CE\u654E\u6600\u6615\u663B\u6609\u662E\u661E\u6624\u6665\u6657\u6659\uFA12\u6673\u6699\u66A0\u66B2\u66BF\u66FA\u670E\uF929\u6766\u67BB\u6852\u67C0\u6801\u6844\u68CF\uFA13\u6968\uFA14\u6998\u69E2\u6A30\u6A6B\u6A46\u6A73\u6A7E\u6AE2\u6AE4\u6BD6\u6C3F\u6C5C\u6C86\u6C6F\u6CDA\u6D04\u6D87\u6D6F"],["fb40","\u6D96\u6DAC\u6DCF\u6DF8\u6DF2\u6DFC\u6E39\u6E5C\u6E27\u6E3C\u6EBF\u6F88\u6FB5\u6FF5\u7005\u7007\u7028\u7085\u70AB\u710F\u7104\u715C\u7146\u7147\uFA15\u71C1\u71FE\u72B1\u72BE\u7324\uFA16\u7377\u73BD\u73C9\u73D6\u73E3\u73D2\u7407\u73F5\u7426\u742A\u7429\u742E\u7462\u7489\u749F\u7501\u756F\u7682\u769C\u769E\u769B\u76A6\uFA17\u7746\u52AF\u7821\u784E\u7864\u787A\u7930\uFA18\uFA19"],["fb80","\uFA1A\u7994\uFA1B\u799B\u7AD1\u7AE7\uFA1C\u7AEB\u7B9E\uFA1D\u7D48\u7D5C\u7DB7\u7DA0\u7DD6\u7E52\u7F47\u7FA1\uFA1E\u8301\u8362\u837F\u83C7\u83F6\u8448\u84B4\u8553\u8559\u856B\uFA1F\u85B0\uFA20\uFA21\u8807\u88F5\u8A12\u8A37\u8A79\u8AA7\u8ABE\u8ADF\uFA22\u8AF6\u8B53\u8B7F\u8CF0\u8CF4\u8D12\u8D76\uFA23\u8ECF\uFA24\uFA25\u9067\u90DE\uFA26\u9115\u9127\u91DA\u91D7\u91DE\u91ED\u91EE\u91E4\u91E5\u9206\u9210\u920A\u923A\u9240\u923C\u924E\u9259\u9251\u9239\u9267\u92A7\u9277\u9278\u92E7\u92D7\u92D9\u92D0\uFA27\u92D5\u92E0\u92D3\u9325\u9321\u92FB\uFA28\u931E\u92FF\u931D\u9302\u9370\u9357\u93A4\u93C6\u93DE\u93F8\u9431\u9445\u9448\u9592\uF9DC\uFA29\u969D\u96AF\u9733\u973B\u9743\u974D\u974F\u9751\u9755\u9857\u9865\uFA2A\uFA2B\u9927\uFA2C\u999E\u9A4E\u9AD9"],["fc40","\u9ADC\u9B75\u9B72\u9B8F\u9BB1\u9BBB\u9C00\u9D70\u9D6B\uFA2D\u9E19\u9ED1"]]});var Dx=P((KW,zC)=>{zC.exports=[["0","\0",127],["8ea1","\uFF61",62],["a1a1","\u3000\u3001\u3002\uFF0C\uFF0E\u30FB\uFF1A\uFF1B\uFF1F\uFF01\u309B\u309C\xB4\uFF40\xA8\uFF3E\uFFE3\uFF3F\u30FD\u30FE\u309D\u309E\u3003\u4EDD\u3005\u3006\u3007\u30FC\u2015\u2010\uFF0F\uFF3C\uFF5E\u2225\uFF5C\u2026\u2025\u2018\u2019\u201C\u201D\uFF08\uFF09\u3014\u3015\uFF3B\uFF3D\uFF5B\uFF5D\u3008",9,"\uFF0B\uFF0D\xB1\xD7\xF7\uFF1D\u2260\uFF1C\uFF1E\u2266\u2267\u221E\u2234\u2642\u2640\xB0\u2032\u2033\u2103\uFFE5\uFF04\uFFE0\uFFE1\uFF05\uFF03\uFF06\uFF0A\uFF20\xA7\u2606\u2605\u25CB\u25CF\u25CE\u25C7"],["a2a1","\u25C6\u25A1\u25A0\u25B3\u25B2\u25BD\u25BC\u203B\u3012\u2192\u2190\u2191\u2193\u3013"],["a2ba","\u2208\u220B\u2286\u2287\u2282\u2283\u222A\u2229"],["a2ca","\u2227\u2228\uFFE2\u21D2\u21D4\u2200\u2203"],["a2dc","\u2220\u22A5\u2312\u2202\u2207\u2261\u2252\u226A\u226B\u221A\u223D\u221D\u2235\u222B\u222C"],["a2f2","\u212B\u2030\u266F\u266D\u266A\u2020\u2021\xB6"],["a2fe","\u25EF"],["a3b0","\uFF10",9],["a3c1","\uFF21",25],["a3e1","\uFF41",25],["a4a1","\u3041",82],["a5a1","\u30A1",85],["a6a1","\u0391",16,"\u03A3",6],["a6c1","\u03B1",16,"\u03C3",6],["a7a1","\u0410",5,"\u0401\u0416",25],["a7d1","\u0430",5,"\u0451\u0436",25],["a8a1","\u2500\u2502\u250C\u2510\u2518\u2514\u251C\u252C\u2524\u2534\u253C\u2501\u2503\u250F\u2513\u251B\u2517\u2523\u2533\u252B\u253B\u254B\u2520\u252F\u2528\u2537\u253F\u251D\u2530\u2525\u2538\u2542"],["ada1","\u2460",19,"\u2160",9],["adc0","\u3349\u3314\u3322\u334D\u3318\u3327\u3303\u3336\u3351\u3357\u330D\u3326\u3323\u332B\u334A\u333B\u339C\u339D\u339E\u338E\u338F\u33C4\u33A1"],["addf","\u337B\u301D\u301F\u2116\u33CD\u2121\u32A4",4,"\u3231\u3232\u3239\u337E\u337D\u337C\u2252\u2261\u222B\u222E\u2211\u221A\u22A5\u2220\u221F\u22BF\u2235\u2229\u222A"],["b0a1","\u4E9C\u5516\u5A03\u963F\u54C0\u611B\u6328\u59F6\u9022\u8475\u831C\u7A50\u60AA\u63E1\u6E25\u65ED\u8466\u82A6\u9BF5\u6893\u5727\u65A1\u6271\u5B9B\u59D0\u867B\u98F4\u7D62\u7DBE\u9B8E\u6216\u7C9F\u88B7\u5B89\u5EB5\u6309\u6697\u6848\u95C7\u978D\u674F\u4EE5\u4F0A\u4F4D\u4F9D\u5049\u56F2\u5937\u59D4\u5A01\u5C09\u60DF\u610F\u6170\u6613\u6905\u70BA\u754F\u7570\u79FB\u7DAD\u7DEF\u80C3\u840E\u8863\u8B02\u9055\u907A\u533B\u4E95\u4EA5\u57DF\u80B2\u90C1\u78EF\u4E00\u58F1\u6EA2\u9038\u7A32\u8328\u828B\u9C2F\u5141\u5370\u54BD\u54E1\u56E0\u59FB\u5F15\u98F2\u6DEB\u80E4\u852D"],["b1a1","\u9662\u9670\u96A0\u97FB\u540B\u53F3\u5B87\u70CF\u7FBD\u8FC2\u96E8\u536F\u9D5C\u7ABA\u4E11\u7893\u81FC\u6E26\u5618\u5504\u6B1D\u851A\u9C3B\u59E5\u53A9\u6D66\u74DC\u958F\u5642\u4E91\u904B\u96F2\u834F\u990C\u53E1\u55B6\u5B30\u5F71\u6620\u66F3\u6804\u6C38\u6CF3\u6D29\u745B\u76C8\u7A4E\u9834\u82F1\u885B\u8A60\u92ED\u6DB2\u75AB\u76CA\u99C5\u60A6\u8B01\u8D8A\u95B2\u698E\u53AD\u5186\u5712\u5830\u5944\u5BB4\u5EF6\u6028\u63A9\u63F4\u6CBF\u6F14\u708E\u7114\u7159\u71D5\u733F\u7E01\u8276\u82D1\u8597\u9060\u925B\u9D1B\u5869\u65BC\u6C5A\u7525\u51F9\u592E\u5965\u5F80\u5FDC"],["b2a1","\u62BC\u65FA\u6A2A\u6B27\u6BB4\u738B\u7FC1\u8956\u9D2C\u9D0E\u9EC4\u5CA1\u6C96\u837B\u5104\u5C4B\u61B6\u81C6\u6876\u7261\u4E59\u4FFA\u5378\u6069\u6E29\u7A4F\u97F3\u4E0B\u5316\u4EEE\u4F55\u4F3D\u4FA1\u4F73\u52A0\u53EF\u5609\u590F\u5AC1\u5BB6\u5BE1\u79D1\u6687\u679C\u67B6\u6B4C\u6CB3\u706B\u73C2\u798D\u79BE\u7A3C\u7B87\u82B1\u82DB\u8304\u8377\u83EF\u83D3\u8766\u8AB2\u5629\u8CA8\u8FE6\u904E\u971E\u868A\u4FC4\u5CE8\u6211\u7259\u753B\u81E5\u82BD\u86FE\u8CC0\u96C5\u9913\u99D5\u4ECB\u4F1A\u89E3\u56DE\u584A\u58CA\u5EFB\u5FEB\u602A\u6094\u6062\u61D0\u6212\u62D0\u6539"],["b3a1","\u9B41\u6666\u68B0\u6D77\u7070\u754C\u7686\u7D75\u82A5\u87F9\u958B\u968E\u8C9D\u51F1\u52BE\u5916\u54B3\u5BB3\u5D16\u6168\u6982\u6DAF\u788D\u84CB\u8857\u8A72\u93A7\u9AB8\u6D6C\u99A8\u86D9\u57A3\u67FF\u86CE\u920E\u5283\u5687\u5404\u5ED3\u62E1\u64B9\u683C\u6838\u6BBB\u7372\u78BA\u7A6B\u899A\u89D2\u8D6B\u8F03\u90ED\u95A3\u9694\u9769\u5B66\u5CB3\u697D\u984D\u984E\u639B\u7B20\u6A2B\u6A7F\u68B6\u9C0D\u6F5F\u5272\u559D\u6070\u62EC\u6D3B\u6E07\u6ED1\u845B\u8910\u8F44\u4E14\u9C39\u53F6\u691B\u6A3A\u9784\u682A\u515C\u7AC3\u84B2\u91DC\u938C\u565B\u9D28\u6822\u8305\u8431"],["b4a1","\u7CA5\u5208\u82C5\u74E6\u4E7E\u4F83\u51A0\u5BD2\u520A\u52D8\u52E7\u5DFB\u559A\u582A\u59E6\u5B8C\u5B98\u5BDB\u5E72\u5E79\u60A3\u611F\u6163\u61BE\u63DB\u6562\u67D1\u6853\u68FA\u6B3E\u6B53\u6C57\u6F22\u6F97\u6F45\u74B0\u7518\u76E3\u770B\u7AFF\u7BA1\u7C21\u7DE9\u7F36\u7FF0\u809D\u8266\u839E\u89B3\u8ACC\u8CAB\u9084\u9451\u9593\u9591\u95A2\u9665\u97D3\u9928\u8218\u4E38\u542B\u5CB8\u5DCC\u73A9\u764C\u773C\u5CA9\u7FEB\u8D0B\u96C1\u9811\u9854\u9858\u4F01\u4F0E\u5371\u559C\u5668\u57FA\u5947\u5B09\u5BC4\u5C90\u5E0C\u5E7E\u5FCC\u63EE\u673A\u65D7\u65E2\u671F\u68CB\u68C4"],["b5a1","\u6A5F\u5E30\u6BC5\u6C17\u6C7D\u757F\u7948\u5B63\u7A00\u7D00\u5FBD\u898F\u8A18\u8CB4\u8D77\u8ECC\u8F1D\u98E2\u9A0E\u9B3C\u4E80\u507D\u5100\u5993\u5B9C\u622F\u6280\u64EC\u6B3A\u72A0\u7591\u7947\u7FA9\u87FB\u8ABC\u8B70\u63AC\u83CA\u97A0\u5409\u5403\u55AB\u6854\u6A58\u8A70\u7827\u6775\u9ECD\u5374\u5BA2\u811A\u8650\u9006\u4E18\u4E45\u4EC7\u4F11\u53CA\u5438\u5BAE\u5F13\u6025\u6551\u673D\u6C42\u6C72\u6CE3\u7078\u7403\u7A76\u7AAE\u7B08\u7D1A\u7CFE\u7D66\u65E7\u725B\u53BB\u5C45\u5DE8\u62D2\u62E0\u6319\u6E20\u865A\u8A31\u8DDD\u92F8\u6F01\u79A6\u9B5A\u4EA8\u4EAB\u4EAC"],["b6a1","\u4F9B\u4FA0\u50D1\u5147\u7AF6\u5171\u51F6\u5354\u5321\u537F\u53EB\u55AC\u5883\u5CE1\u5F37\u5F4A\u602F\u6050\u606D\u631F\u6559\u6A4B\u6CC1\u72C2\u72ED\u77EF\u80F8\u8105\u8208\u854E\u90F7\u93E1\u97FF\u9957\u9A5A\u4EF0\u51DD\u5C2D\u6681\u696D\u5C40\u66F2\u6975\u7389\u6850\u7C81\u50C5\u52E4\u5747\u5DFE\u9326\u65A4\u6B23\u6B3D\u7434\u7981\u79BD\u7B4B\u7DCA\u82B9\u83CC\u887F\u895F\u8B39\u8FD1\u91D1\u541F\u9280\u4E5D\u5036\u53E5\u533A\u72D7\u7396\u77E9\u82E6\u8EAF\u99C6\u99C8\u99D2\u5177\u611A\u865E\u55B0\u7A7A\u5076\u5BD3\u9047\u9685\u4E32\u6ADB\u91E7\u5C51\u5C48"],["b7a1","\u6398\u7A9F\u6C93\u9774\u8F61\u7AAA\u718A\u9688\u7C82\u6817\u7E70\u6851\u936C\u52F2\u541B\u85AB\u8A13\u7FA4\u8ECD\u90E1\u5366\u8888\u7941\u4FC2\u50BE\u5211\u5144\u5553\u572D\u73EA\u578B\u5951\u5F62\u5F84\u6075\u6176\u6167\u61A9\u63B2\u643A\u656C\u666F\u6842\u6E13\u7566\u7A3D\u7CFB\u7D4C\u7D99\u7E4B\u7F6B\u830E\u834A\u86CD\u8A08\u8A63\u8B66\u8EFD\u981A\u9D8F\u82B8\u8FCE\u9BE8\u5287\u621F\u6483\u6FC0\u9699\u6841\u5091\u6B20\u6C7A\u6F54\u7A74\u7D50\u8840\u8A23\u6708\u4EF6\u5039\u5026\u5065\u517C\u5238\u5263\u55A7\u570F\u5805\u5ACC\u5EFA\u61B2\u61F8\u62F3\u6372"],["b8a1","\u691C\u6A29\u727D\u72AC\u732E\u7814\u786F\u7D79\u770C\u80A9\u898B\u8B19\u8CE2\u8ED2\u9063\u9375\u967A\u9855\u9A13\u9E78\u5143\u539F\u53B3\u5E7B\u5F26\u6E1B\u6E90\u7384\u73FE\u7D43\u8237\u8A00\u8AFA\u9650\u4E4E\u500B\u53E4\u547C\u56FA\u59D1\u5B64\u5DF1\u5EAB\u5F27\u6238\u6545\u67AF\u6E56\u72D0\u7CCA\u88B4\u80A1\u80E1\u83F0\u864E\u8A87\u8DE8\u9237\u96C7\u9867\u9F13\u4E94\u4E92\u4F0D\u5348\u5449\u543E\u5A2F\u5F8C\u5FA1\u609F\u68A7\u6A8E\u745A\u7881\u8A9E\u8AA4\u8B77\u9190\u4E5E\u9BC9\u4EA4\u4F7C\u4FAF\u5019\u5016\u5149\u516C\u529F\u52B9\u52FE\u539A\u53E3\u5411"],["b9a1","\u540E\u5589\u5751\u57A2\u597D\u5B54\u5B5D\u5B8F\u5DE5\u5DE7\u5DF7\u5E78\u5E83\u5E9A\u5EB7\u5F18\u6052\u614C\u6297\u62D8\u63A7\u653B\u6602\u6643\u66F4\u676D\u6821\u6897\u69CB\u6C5F\u6D2A\u6D69\u6E2F\u6E9D\u7532\u7687\u786C\u7A3F\u7CE0\u7D05\u7D18\u7D5E\u7DB1\u8015\u8003\u80AF\u80B1\u8154\u818F\u822A\u8352\u884C\u8861\u8B1B\u8CA2\u8CFC\u90CA\u9175\u9271\u783F\u92FC\u95A4\u964D\u9805\u9999\u9AD8\u9D3B\u525B\u52AB\u53F7\u5408\u58D5\u62F7\u6FE0\u8C6A\u8F5F\u9EB9\u514B\u523B\u544A\u56FD\u7A40\u9177\u9D60\u9ED2\u7344\u6F09\u8170\u7511\u5FFD\u60DA\u9AA8\u72DB\u8FBC"],["baa1","\u6B64\u9803\u4ECA\u56F0\u5764\u58BE\u5A5A\u6068\u61C7\u660F\u6606\u6839\u68B1\u6DF7\u75D5\u7D3A\u826E\u9B42\u4E9B\u4F50\u53C9\u5506\u5D6F\u5DE6\u5DEE\u67FB\u6C99\u7473\u7802\u8A50\u9396\u88DF\u5750\u5EA7\u632B\u50B5\u50AC\u518D\u6700\u54C9\u585E\u59BB\u5BB0\u5F69\u624D\u63A1\u683D\u6B73\u6E08\u707D\u91C7\u7280\u7815\u7826\u796D\u658E\u7D30\u83DC\u88C1\u8F09\u969B\u5264\u5728\u6750\u7F6A\u8CA1\u51B4\u5742\u962A\u583A\u698A\u80B4\u54B2\u5D0E\u57FC\u7895\u9DFA\u4F5C\u524A\u548B\u643E\u6628\u6714\u67F5\u7A84\u7B56\u7D22\u932F\u685C\u9BAD\u7B39\u5319\u518A\u5237"],["bba1","\u5BDF\u62F6\u64AE\u64E6\u672D\u6BBA\u85A9\u96D1\u7690\u9BD6\u634C\u9306\u9BAB\u76BF\u6652\u4E09\u5098\u53C2\u5C71\u60E8\u6492\u6563\u685F\u71E6\u73CA\u7523\u7B97\u7E82\u8695\u8B83\u8CDB\u9178\u9910\u65AC\u66AB\u6B8B\u4ED5\u4ED4\u4F3A\u4F7F\u523A\u53F8\u53F2\u55E3\u56DB\u58EB\u59CB\u59C9\u59FF\u5B50\u5C4D\u5E02\u5E2B\u5FD7\u601D\u6307\u652F\u5B5C\u65AF\u65BD\u65E8\u679D\u6B62\u6B7B\u6C0F\u7345\u7949\u79C1\u7CF8\u7D19\u7D2B\u80A2\u8102\u81F3\u8996\u8A5E\u8A69\u8A66\u8A8C\u8AEE\u8CC7\u8CDC\u96CC\u98FC\u6B6F\u4E8B\u4F3C\u4F8D\u5150\u5B57\u5BFA\u6148\u6301\u6642"],["bca1","\u6B21\u6ECB\u6CBB\u723E\u74BD\u75D4\u78C1\u793A\u800C\u8033\u81EA\u8494\u8F9E\u6C50\u9E7F\u5F0F\u8B58\u9D2B\u7AFA\u8EF8\u5B8D\u96EB\u4E03\u53F1\u57F7\u5931\u5AC9\u5BA4\u6089\u6E7F\u6F06\u75BE\u8CEA\u5B9F\u8500\u7BE0\u5072\u67F4\u829D\u5C61\u854A\u7E1E\u820E\u5199\u5C04\u6368\u8D66\u659C\u716E\u793E\u7D17\u8005\u8B1D\u8ECA\u906E\u86C7\u90AA\u501F\u52FA\u5C3A\u6753\u707C\u7235\u914C\u91C8\u932B\u82E5\u5BC2\u5F31\u60F9\u4E3B\u53D6\u5B88\u624B\u6731\u6B8A\u72E9\u73E0\u7A2E\u816B\u8DA3\u9152\u9996\u5112\u53D7\u546A\u5BFF\u6388\u6A39\u7DAC\u9700\u56DA\u53CE\u5468"],["bda1","\u5B97\u5C31\u5DDE\u4FEE\u6101\u62FE\u6D32\u79C0\u79CB\u7D42\u7E4D\u7FD2\u81ED\u821F\u8490\u8846\u8972\u8B90\u8E74\u8F2F\u9031\u914B\u916C\u96C6\u919C\u4EC0\u4F4F\u5145\u5341\u5F93\u620E\u67D4\u6C41\u6E0B\u7363\u7E26\u91CD\u9283\u53D4\u5919\u5BBF\u6DD1\u795D\u7E2E\u7C9B\u587E\u719F\u51FA\u8853\u8FF0\u4FCA\u5CFB\u6625\u77AC\u7AE3\u821C\u99FF\u51C6\u5FAA\u65EC\u696F\u6B89\u6DF3\u6E96\u6F64\u76FE\u7D14\u5DE1\u9075\u9187\u9806\u51E6\u521D\u6240\u6691\u66D9\u6E1A\u5EB6\u7DD2\u7F72\u66F8\u85AF\u85F7\u8AF8\u52A9\u53D9\u5973\u5E8F\u5F90\u6055\u92E4\u9664\u50B7\u511F"],["bea1","\u52DD\u5320\u5347\u53EC\u54E8\u5546\u5531\u5617\u5968\u59BE\u5A3C\u5BB5\u5C06\u5C0F\u5C11\u5C1A\u5E84\u5E8A\u5EE0\u5F70\u627F\u6284\u62DB\u638C\u6377\u6607\u660C\u662D\u6676\u677E\u68A2\u6A1F\u6A35\u6CBC\u6D88\u6E09\u6E58\u713C\u7126\u7167\u75C7\u7701\u785D\u7901\u7965\u79F0\u7AE0\u7B11\u7CA7\u7D39\u8096\u83D6\u848B\u8549\u885D\u88F3\u8A1F\u8A3C\u8A54\u8A73\u8C61\u8CDE\u91A4\u9266\u937E\u9418\u969C\u9798\u4E0A\u4E08\u4E1E\u4E57\u5197\u5270\u57CE\u5834\u58CC\u5B22\u5E38\u60C5\u64FE\u6761\u6756\u6D44\u72B6\u7573\u7A63\u84B8\u8B72\u91B8\u9320\u5631\u57F4\u98FE"],["bfa1","\u62ED\u690D\u6B96\u71ED\u7E54\u8077\u8272\u89E6\u98DF\u8755\u8FB1\u5C3B\u4F38\u4FE1\u4FB5\u5507\u5A20\u5BDD\u5BE9\u5FC3\u614E\u632F\u65B0\u664B\u68EE\u699B\u6D78\u6DF1\u7533\u75B9\u771F\u795E\u79E6\u7D33\u81E3\u82AF\u85AA\u89AA\u8A3A\u8EAB\u8F9B\u9032\u91DD\u9707\u4EBA\u4EC1\u5203\u5875\u58EC\u5C0B\u751A\u5C3D\u814E\u8A0A\u8FC5\u9663\u976D\u7B25\u8ACF\u9808\u9162\u56F3\u53A8\u9017\u5439\u5782\u5E25\u63A8\u6C34\u708A\u7761\u7C8B\u7FE0\u8870\u9042\u9154\u9310\u9318\u968F\u745E\u9AC4\u5D07\u5D69\u6570\u67A2\u8DA8\u96DB\u636E\u6749\u6919\u83C5\u9817\u96C0\u88FE"],["c0a1","\u6F84\u647A\u5BF8\u4E16\u702C\u755D\u662F\u51C4\u5236\u52E2\u59D3\u5F81\u6027\u6210\u653F\u6574\u661F\u6674\u68F2\u6816\u6B63\u6E05\u7272\u751F\u76DB\u7CBE\u8056\u58F0\u88FD\u897F\u8AA0\u8A93\u8ACB\u901D\u9192\u9752\u9759\u6589\u7A0E\u8106\u96BB\u5E2D\u60DC\u621A\u65A5\u6614\u6790\u77F3\u7A4D\u7C4D\u7E3E\u810A\u8CAC\u8D64\u8DE1\u8E5F\u78A9\u5207\u62D9\u63A5\u6442\u6298\u8A2D\u7A83\u7BC0\u8AAC\u96EA\u7D76\u820C\u8749\u4ED9\u5148\u5343\u5360\u5BA3\u5C02\u5C16\u5DDD\u6226\u6247\u64B0\u6813\u6834\u6CC9\u6D45\u6D17\u67D3\u6F5C\u714E\u717D\u65CB\u7A7F\u7BAD\u7DDA"],["c1a1","\u7E4A\u7FA8\u817A\u821B\u8239\u85A6\u8A6E\u8CCE\u8DF5\u9078\u9077\u92AD\u9291\u9583\u9BAE\u524D\u5584\u6F38\u7136\u5168\u7985\u7E55\u81B3\u7CCE\u564C\u5851\u5CA8\u63AA\u66FE\u66FD\u695A\u72D9\u758F\u758E\u790E\u7956\u79DF\u7C97\u7D20\u7D44\u8607\u8A34\u963B\u9061\u9F20\u50E7\u5275\u53CC\u53E2\u5009\u55AA\u58EE\u594F\u723D\u5B8B\u5C64\u531D\u60E3\u60F3\u635C\u6383\u633F\u63BB\u64CD\u65E9\u66F9\u5DE3\u69CD\u69FD\u6F15\u71E5\u4E89\u75E9\u76F8\u7A93\u7CDF\u7DCF\u7D9C\u8061\u8349\u8358\u846C\u84BC\u85FB\u88C5\u8D70\u9001\u906D\u9397\u971C\u9A12\u50CF\u5897\u618E"],["c2a1","\u81D3\u8535\u8D08\u9020\u4FC3\u5074\u5247\u5373\u606F\u6349\u675F\u6E2C\u8DB3\u901F\u4FD7\u5C5E\u8CCA\u65CF\u7D9A\u5352\u8896\u5176\u63C3\u5B58\u5B6B\u5C0A\u640D\u6751\u905C\u4ED6\u591A\u592A\u6C70\u8A51\u553E\u5815\u59A5\u60F0\u6253\u67C1\u8235\u6955\u9640\u99C4\u9A28\u4F53\u5806\u5BFE\u8010\u5CB1\u5E2F\u5F85\u6020\u614B\u6234\u66FF\u6CF0\u6EDE\u80CE\u817F\u82D4\u888B\u8CB8\u9000\u902E\u968A\u9EDB\u9BDB\u4EE3\u53F0\u5927\u7B2C\u918D\u984C\u9DF9\u6EDD\u7027\u5353\u5544\u5B85\u6258\u629E\u62D3\u6CA2\u6FEF\u7422\u8A17\u9438\u6FC1\u8AFE\u8338\u51E7\u86F8\u53EA"],["c3a1","\u53E9\u4F46\u9054\u8FB0\u596A\u8131\u5DFD\u7AEA\u8FBF\u68DA\u8C37\u72F8\u9C48\u6A3D\u8AB0\u4E39\u5358\u5606\u5766\u62C5\u63A2\u65E6\u6B4E\u6DE1\u6E5B\u70AD\u77ED\u7AEF\u7BAA\u7DBB\u803D\u80C6\u86CB\u8A95\u935B\u56E3\u58C7\u5F3E\u65AD\u6696\u6A80\u6BB5\u7537\u8AC7\u5024\u77E5\u5730\u5F1B\u6065\u667A\u6C60\u75F4\u7A1A\u7F6E\u81F4\u8718\u9045\u99B3\u7BC9\u755C\u7AF9\u7B51\u84C4\u9010\u79E9\u7A92\u8336\u5AE1\u7740\u4E2D\u4EF2\u5B99\u5FE0\u62BD\u663C\u67F1\u6CE8\u866B\u8877\u8A3B\u914E\u92F3\u99D0\u6A17\u7026\u732A\u82E7\u8457\u8CAF\u4E01\u5146\u51CB\u558B\u5BF5"],["c4a1","\u5E16\u5E33\u5E81\u5F14\u5F35\u5F6B\u5FB4\u61F2\u6311\u66A2\u671D\u6F6E\u7252\u753A\u773A\u8074\u8139\u8178\u8776\u8ABF\u8ADC\u8D85\u8DF3\u929A\u9577\u9802\u9CE5\u52C5\u6357\u76F4\u6715\u6C88\u73CD\u8CC3\u93AE\u9673\u6D25\u589C\u690E\u69CC\u8FFD\u939A\u75DB\u901A\u585A\u6802\u63B4\u69FB\u4F43\u6F2C\u67D8\u8FBB\u8526\u7DB4\u9354\u693F\u6F70\u576A\u58F7\u5B2C\u7D2C\u722A\u540A\u91E3\u9DB4\u4EAD\u4F4E\u505C\u5075\u5243\u8C9E\u5448\u5824\u5B9A\u5E1D\u5E95\u5EAD\u5EF7\u5F1F\u608C\u62B5\u633A\u63D0\u68AF\u6C40\u7887\u798E\u7A0B\u7DE0\u8247\u8A02\u8AE6\u8E44\u9013"],["c5a1","\u90B8\u912D\u91D8\u9F0E\u6CE5\u6458\u64E2\u6575\u6EF4\u7684\u7B1B\u9069\u93D1\u6EBA\u54F2\u5FB9\u64A4\u8F4D\u8FED\u9244\u5178\u586B\u5929\u5C55\u5E97\u6DFB\u7E8F\u751C\u8CBC\u8EE2\u985B\u70B9\u4F1D\u6BBF\u6FB1\u7530\u96FB\u514E\u5410\u5835\u5857\u59AC\u5C60\u5F92\u6597\u675C\u6E21\u767B\u83DF\u8CED\u9014\u90FD\u934D\u7825\u783A\u52AA\u5EA6\u571F\u5974\u6012\u5012\u515A\u51AC\u51CD\u5200\u5510\u5854\u5858\u5957\u5B95\u5CF6\u5D8B\u60BC\u6295\u642D\u6771\u6843\u68BC\u68DF\u76D7\u6DD8\u6E6F\u6D9B\u706F\u71C8\u5F53\u75D8\u7977\u7B49\u7B54\u7B52\u7CD6\u7D71\u5230"],["c6a1","\u8463\u8569\u85E4\u8A0E\u8B04\u8C46\u8E0F\u9003\u900F\u9419\u9676\u982D\u9A30\u95D8\u50CD\u52D5\u540C\u5802\u5C0E\u61A7\u649E\u6D1E\u77B3\u7AE5\u80F4\u8404\u9053\u9285\u5CE0\u9D07\u533F\u5F97\u5FB3\u6D9C\u7279\u7763\u79BF\u7BE4\u6BD2\u72EC\u8AAD\u6803\u6A61\u51F8\u7A81\u6934\u5C4A\u9CF6\u82EB\u5BC5\u9149\u701E\u5678\u5C6F\u60C7\u6566\u6C8C\u8C5A\u9041\u9813\u5451\u66C7\u920D\u5948\u90A3\u5185\u4E4D\u51EA\u8599\u8B0E\u7058\u637A\u934B\u6962\u99B4\u7E04\u7577\u5357\u6960\u8EDF\u96E3\u6C5D\u4E8C\u5C3C\u5F10\u8FE9\u5302\u8CD1\u8089\u8679\u5EFF\u65E5\u4E73\u5165"],["c7a1","\u5982\u5C3F\u97EE\u4EFB\u598A\u5FCD\u8A8D\u6FE1\u79B0\u7962\u5BE7\u8471\u732B\u71B1\u5E74\u5FF5\u637B\u649A\u71C3\u7C98\u4E43\u5EFC\u4E4B\u57DC\u56A2\u60A9\u6FC3\u7D0D\u80FD\u8133\u81BF\u8FB2\u8997\u86A4\u5DF4\u628A\u64AD\u8987\u6777\u6CE2\u6D3E\u7436\u7834\u5A46\u7F75\u82AD\u99AC\u4FF3\u5EC3\u62DD\u6392\u6557\u676F\u76C3\u724C\u80CC\u80BA\u8F29\u914D\u500D\u57F9\u5A92\u6885\u6973\u7164\u72FD\u8CB7\u58F2\u8CE0\u966A\u9019\u877F\u79E4\u77E7\u8429\u4F2F\u5265\u535A\u62CD\u67CF\u6CCA\u767D\u7B94\u7C95\u8236\u8584\u8FEB\u66DD\u6F20\u7206\u7E1B\u83AB\u99C1\u9EA6"],["c8a1","\u51FD\u7BB1\u7872\u7BB8\u8087\u7B48\u6AE8\u5E61\u808C\u7551\u7560\u516B\u9262\u6E8C\u767A\u9197\u9AEA\u4F10\u7F70\u629C\u7B4F\u95A5\u9CE9\u567A\u5859\u86E4\u96BC\u4F34\u5224\u534A\u53CD\u53DB\u5E06\u642C\u6591\u677F\u6C3E\u6C4E\u7248\u72AF\u73ED\u7554\u7E41\u822C\u85E9\u8CA9\u7BC4\u91C6\u7169\u9812\u98EF\u633D\u6669\u756A\u76E4\u78D0\u8543\u86EE\u532A\u5351\u5426\u5983\u5E87\u5F7C\u60B2\u6249\u6279\u62AB\u6590\u6BD4\u6CCC\u75B2\u76AE\u7891\u79D8\u7DCB\u7F77\u80A5\u88AB\u8AB9\u8CBB\u907F\u975E\u98DB\u6A0B\u7C38\u5099\u5C3E\u5FAE\u6787\u6BD8\u7435\u7709\u7F8E"],["c9a1","\u9F3B\u67CA\u7A17\u5339\u758B\u9AED\u5F66\u819D\u83F1\u8098\u5F3C\u5FC5\u7562\u7B46\u903C\u6867\u59EB\u5A9B\u7D10\u767E\u8B2C\u4FF5\u5F6A\u6A19\u6C37\u6F02\u74E2\u7968\u8868\u8A55\u8C79\u5EDF\u63CF\u75C5\u79D2\u82D7\u9328\u92F2\u849C\u86ED\u9C2D\u54C1\u5F6C\u658C\u6D5C\u7015\u8CA7\u8CD3\u983B\u654F\u74F6\u4E0D\u4ED8\u57E0\u592B\u5A66\u5BCC\u51A8\u5E03\u5E9C\u6016\u6276\u6577\u65A7\u666E\u6D6E\u7236\u7B26\u8150\u819A\u8299\u8B5C\u8CA0\u8CE6\u8D74\u961C\u9644\u4FAE\u64AB\u6B66\u821E\u8461\u856A\u90E8\u5C01\u6953\u98A8\u847A\u8557\u4F0F\u526F\u5FA9\u5E45\u670D"],["caa1","\u798F\u8179\u8907\u8986\u6DF5\u5F17\u6255\u6CB8\u4ECF\u7269\u9B92\u5206\u543B\u5674\u58B3\u61A4\u626E\u711A\u596E\u7C89\u7CDE\u7D1B\u96F0\u6587\u805E\u4E19\u4F75\u5175\u5840\u5E63\u5E73\u5F0A\u67C4\u4E26\u853D\u9589\u965B\u7C73\u9801\u50FB\u58C1\u7656\u78A7\u5225\u77A5\u8511\u7B86\u504F\u5909\u7247\u7BC7\u7DE8\u8FBA\u8FD4\u904D\u4FBF\u52C9\u5A29\u5F01\u97AD\u4FDD\u8217\u92EA\u5703\u6355\u6B69\u752B\u88DC\u8F14\u7A42\u52DF\u5893\u6155\u620A\u66AE\u6BCD\u7C3F\u83E9\u5023\u4FF8\u5305\u5446\u5831\u5949\u5B9D\u5CF0\u5CEF\u5D29\u5E96\u62B1\u6367\u653E\u65B9\u670B"],["cba1","\u6CD5\u6CE1\u70F9\u7832\u7E2B\u80DE\u82B3\u840C\u84EC\u8702\u8912\u8A2A\u8C4A\u90A6\u92D2\u98FD\u9CF3\u9D6C\u4E4F\u4EA1\u508D\u5256\u574A\u59A8\u5E3D\u5FD8\u5FD9\u623F\u66B4\u671B\u67D0\u68D2\u5192\u7D21\u80AA\u81A8\u8B00\u8C8C\u8CBF\u927E\u9632\u5420\u982C\u5317\u50D5\u535C\u58A8\u64B2\u6734\u7267\u7766\u7A46\u91E6\u52C3\u6CA1\u6B86\u5800\u5E4C\u5954\u672C\u7FFB\u51E1\u76C6\u6469\u78E8\u9B54\u9EBB\u57CB\u59B9\u6627\u679A\u6BCE\u54E9\u69D9\u5E55\u819C\u6795\u9BAA\u67FE\u9C52\u685D\u4EA6\u4FE3\u53C8\u62B9\u672B\u6CAB\u8FC4\u4FAD\u7E6D\u9EBF\u4E07\u6162\u6E80"],["cca1","\u6F2B\u8513\u5473\u672A\u9B45\u5DF3\u7B95\u5CAC\u5BC6\u871C\u6E4A\u84D1\u7A14\u8108\u5999\u7C8D\u6C11\u7720\u52D9\u5922\u7121\u725F\u77DB\u9727\u9D61\u690B\u5A7F\u5A18\u51A5\u540D\u547D\u660E\u76DF\u8FF7\u9298\u9CF4\u59EA\u725D\u6EC5\u514D\u68C9\u7DBF\u7DEC\u9762\u9EBA\u6478\u6A21\u8302\u5984\u5B5F\u6BDB\u731B\u76F2\u7DB2\u8017\u8499\u5132\u6728\u9ED9\u76EE\u6762\u52FF\u9905\u5C24\u623B\u7C7E\u8CB0\u554F\u60B6\u7D0B\u9580\u5301\u4E5F\u51B6\u591C\u723A\u8036\u91CE\u5F25\u77E2\u5384\u5F79\u7D04\u85AC\u8A33\u8E8D\u9756\u67F3\u85AE\u9453\u6109\u6108\u6CB9\u7652"],["cda1","\u8AED\u8F38\u552F\u4F51\u512A\u52C7\u53CB\u5BA5\u5E7D\u60A0\u6182\u63D6\u6709\u67DA\u6E67\u6D8C\u7336\u7337\u7531\u7950\u88D5\u8A98\u904A\u9091\u90F5\u96C4\u878D\u5915\u4E88\u4F59\u4E0E\u8A89\u8F3F\u9810\u50AD\u5E7C\u5996\u5BB9\u5EB8\u63DA\u63FA\u64C1\u66DC\u694A\u69D8\u6D0B\u6EB6\u7194\u7528\u7AAF\u7F8A\u8000\u8449\u84C9\u8981\u8B21\u8E0A\u9065\u967D\u990A\u617E\u6291\u6B32\u6C83\u6D74\u7FCC\u7FFC\u6DC0\u7F85\u87BA\u88F8\u6765\u83B1\u983C\u96F7\u6D1B\u7D61\u843D\u916A\u4E71\u5375\u5D50\u6B04\u6FEB\u85CD\u862D\u89A7\u5229\u540F\u5C65\u674E\u68A8\u7406\u7483"],["cea1","\u75E2\u88CF\u88E1\u91CC\u96E2\u9678\u5F8B\u7387\u7ACB\u844E\u63A0\u7565\u5289\u6D41\u6E9C\u7409\u7559\u786B\u7C92\u9686\u7ADC\u9F8D\u4FB6\u616E\u65C5\u865C\u4E86\u4EAE\u50DA\u4E21\u51CC\u5BEE\u6599\u6881\u6DBC\u731F\u7642\u77AD\u7A1C\u7CE7\u826F\u8AD2\u907C\u91CF\u9675\u9818\u529B\u7DD1\u502B\u5398\u6797\u6DCB\u71D0\u7433\u81E8\u8F2A\u96A3\u9C57\u9E9F\u7460\u5841\u6D99\u7D2F\u985E\u4EE4\u4F36\u4F8B\u51B7\u52B1\u5DBA\u601C\u73B2\u793C\u82D3\u9234\u96B7\u96F6\u970A\u9E97\u9F62\u66A6\u6B74\u5217\u52A3\u70C8\u88C2\u5EC9\u604B\u6190\u6F23\u7149\u7C3E\u7DF4\u806F"],["cfa1","\u84EE\u9023\u932C\u5442\u9B6F\u6AD3\u7089\u8CC2\u8DEF\u9732\u52B4\u5A41\u5ECA\u5F04\u6717\u697C\u6994\u6D6A\u6F0F\u7262\u72FC\u7BED\u8001\u807E\u874B\u90CE\u516D\u9E93\u7984\u808B\u9332\u8AD6\u502D\u548C\u8A71\u6B6A\u8CC4\u8107\u60D1\u67A0\u9DF2\u4E99\u4E98\u9C10\u8A6B\u85C1\u8568\u6900\u6E7E\u7897\u8155"],["d0a1","\u5F0C\u4E10\u4E15\u4E2A\u4E31\u4E36\u4E3C\u4E3F\u4E42\u4E56\u4E58\u4E82\u4E85\u8C6B\u4E8A\u8212\u5F0D\u4E8E\u4E9E\u4E9F\u4EA0\u4EA2\u4EB0\u4EB3\u4EB6\u4ECE\u4ECD\u4EC4\u4EC6\u4EC2\u4ED7\u4EDE\u4EED\u4EDF\u4EF7\u4F09\u4F5A\u4F30\u4F5B\u4F5D\u4F57\u4F47\u4F76\u4F88\u4F8F\u4F98\u4F7B\u4F69\u4F70\u4F91\u4F6F\u4F86\u4F96\u5118\u4FD4\u4FDF\u4FCE\u4FD8\u4FDB\u4FD1\u4FDA\u4FD0\u4FE4\u4FE5\u501A\u5028\u5014\u502A\u5025\u5005\u4F1C\u4FF6\u5021\u5029\u502C\u4FFE\u4FEF\u5011\u5006\u5043\u5047\u6703\u5055\u5050\u5048\u505A\u5056\u506C\u5078\u5080\u509A\u5085\u50B4\u50B2"],["d1a1","\u50C9\u50CA\u50B3\u50C2\u50D6\u50DE\u50E5\u50ED\u50E3\u50EE\u50F9\u50F5\u5109\u5101\u5102\u5116\u5115\u5114\u511A\u5121\u513A\u5137\u513C\u513B\u513F\u5140\u5152\u514C\u5154\u5162\u7AF8\u5169\u516A\u516E\u5180\u5182\u56D8\u518C\u5189\u518F\u5191\u5193\u5195\u5196\u51A4\u51A6\u51A2\u51A9\u51AA\u51AB\u51B3\u51B1\u51B2\u51B0\u51B5\u51BD\u51C5\u51C9\u51DB\u51E0\u8655\u51E9\u51ED\u51F0\u51F5\u51FE\u5204\u520B\u5214\u520E\u5227\u522A\u522E\u5233\u5239\u524F\u5244\u524B\u524C\u525E\u5254\u526A\u5274\u5269\u5273\u527F\u527D\u528D\u5294\u5292\u5271\u5288\u5291\u8FA8"],["d2a1","\u8FA7\u52AC\u52AD\u52BC\u52B5\u52C1\u52CD\u52D7\u52DE\u52E3\u52E6\u98ED\u52E0\u52F3\u52F5\u52F8\u52F9\u5306\u5308\u7538\u530D\u5310\u530F\u5315\u531A\u5323\u532F\u5331\u5333\u5338\u5340\u5346\u5345\u4E17\u5349\u534D\u51D6\u535E\u5369\u536E\u5918\u537B\u5377\u5382\u5396\u53A0\u53A6\u53A5\u53AE\u53B0\u53B6\u53C3\u7C12\u96D9\u53DF\u66FC\u71EE\u53EE\u53E8\u53ED\u53FA\u5401\u543D\u5440\u542C\u542D\u543C\u542E\u5436\u5429\u541D\u544E\u548F\u5475\u548E\u545F\u5471\u5477\u5470\u5492\u547B\u5480\u5476\u5484\u5490\u5486\u54C7\u54A2\u54B8\u54A5\u54AC\u54C4\u54C8\u54A8"],["d3a1","\u54AB\u54C2\u54A4\u54BE\u54BC\u54D8\u54E5\u54E6\u550F\u5514\u54FD\u54EE\u54ED\u54FA\u54E2\u5539\u5540\u5563\u554C\u552E\u555C\u5545\u5556\u5557\u5538\u5533\u555D\u5599\u5580\u54AF\u558A\u559F\u557B\u557E\u5598\u559E\u55AE\u557C\u5583\u55A9\u5587\u55A8\u55DA\u55C5\u55DF\u55C4\u55DC\u55E4\u55D4\u5614\u55F7\u5616\u55FE\u55FD\u561B\u55F9\u564E\u5650\u71DF\u5634\u5636\u5632\u5638\u566B\u5664\u562F\u566C\u566A\u5686\u5680\u568A\u56A0\u5694\u568F\u56A5\u56AE\u56B6\u56B4\u56C2\u56BC\u56C1\u56C3\u56C0\u56C8\u56CE\u56D1\u56D3\u56D7\u56EE\u56F9\u5700\u56FF\u5704\u5709"],["d4a1","\u5708\u570B\u570D\u5713\u5718\u5716\u55C7\u571C\u5726\u5737\u5738\u574E\u573B\u5740\u574F\u5769\u57C0\u5788\u5761\u577F\u5789\u5793\u57A0\u57B3\u57A4\u57AA\u57B0\u57C3\u57C6\u57D4\u57D2\u57D3\u580A\u57D6\u57E3\u580B\u5819\u581D\u5872\u5821\u5862\u584B\u5870\u6BC0\u5852\u583D\u5879\u5885\u58B9\u589F\u58AB\u58BA\u58DE\u58BB\u58B8\u58AE\u58C5\u58D3\u58D1\u58D7\u58D9\u58D8\u58E5\u58DC\u58E4\u58DF\u58EF\u58FA\u58F9\u58FB\u58FC\u58FD\u5902\u590A\u5910\u591B\u68A6\u5925\u592C\u592D\u5932\u5938\u593E\u7AD2\u5955\u5950\u594E\u595A\u5958\u5962\u5960\u5967\u596C\u5969"],["d5a1","\u5978\u5981\u599D\u4F5E\u4FAB\u59A3\u59B2\u59C6\u59E8\u59DC\u598D\u59D9\u59DA\u5A25\u5A1F\u5A11\u5A1C\u5A09\u5A1A\u5A40\u5A6C\u5A49\u5A35\u5A36\u5A62\u5A6A\u5A9A\u5ABC\u5ABE\u5ACB\u5AC2\u5ABD\u5AE3\u5AD7\u5AE6\u5AE9\u5AD6\u5AFA\u5AFB\u5B0C\u5B0B\u5B16\u5B32\u5AD0\u5B2A\u5B36\u5B3E\u5B43\u5B45\u5B40\u5B51\u5B55\u5B5A\u5B5B\u5B65\u5B69\u5B70\u5B73\u5B75\u5B78\u6588\u5B7A\u5B80\u5B83\u5BA6\u5BB8\u5BC3\u5BC7\u5BC9\u5BD4\u5BD0\u5BE4\u5BE6\u5BE2\u5BDE\u5BE5\u5BEB\u5BF0\u5BF6\u5BF3\u5C05\u5C07\u5C08\u5C0D\u5C13\u5C20\u5C22\u5C28\u5C38\u5C39\u5C41\u5C46\u5C4E\u5C53"],["d6a1","\u5C50\u5C4F\u5B71\u5C6C\u5C6E\u4E62\u5C76\u5C79\u5C8C\u5C91\u5C94\u599B\u5CAB\u5CBB\u5CB6\u5CBC\u5CB7\u5CC5\u5CBE\u5CC7\u5CD9\u5CE9\u5CFD\u5CFA\u5CED\u5D8C\u5CEA\u5D0B\u5D15\u5D17\u5D5C\u5D1F\u5D1B\u5D11\u5D14\u5D22\u5D1A\u5D19\u5D18\u5D4C\u5D52\u5D4E\u5D4B\u5D6C\u5D73\u5D76\u5D87\u5D84\u5D82\u5DA2\u5D9D\u5DAC\u5DAE\u5DBD\u5D90\u5DB7\u5DBC\u5DC9\u5DCD\u5DD3\u5DD2\u5DD6\u5DDB\u5DEB\u5DF2\u5DF5\u5E0B\u5E1A\u5E19\u5E11\u5E1B\u5E36\u5E37\u5E44\u5E43\u5E40\u5E4E\u5E57\u5E54\u5E5F\u5E62\u5E64\u5E47\u5E75\u5E76\u5E7A\u9EBC\u5E7F\u5EA0\u5EC1\u5EC2\u5EC8\u5ED0\u5ECF"],["d7a1","\u5ED6\u5EE3\u5EDD\u5EDA\u5EDB\u5EE2\u5EE1\u5EE8\u5EE9\u5EEC\u5EF1\u5EF3\u5EF0\u5EF4\u5EF8\u5EFE\u5F03\u5F09\u5F5D\u5F5C\u5F0B\u5F11\u5F16\u5F29\u5F2D\u5F38\u5F41\u5F48\u5F4C\u5F4E\u5F2F\u5F51\u5F56\u5F57\u5F59\u5F61\u5F6D\u5F73\u5F77\u5F83\u5F82\u5F7F\u5F8A\u5F88\u5F91\u5F87\u5F9E\u5F99\u5F98\u5FA0\u5FA8\u5FAD\u5FBC\u5FD6\u5FFB\u5FE4\u5FF8\u5FF1\u5FDD\u60B3\u5FFF\u6021\u6060\u6019\u6010\u6029\u600E\u6031\u601B\u6015\u602B\u6026\u600F\u603A\u605A\u6041\u606A\u6077\u605F\u604A\u6046\u604D\u6063\u6043\u6064\u6042\u606C\u606B\u6059\u6081\u608D\u60E7\u6083\u609A"],["d8a1","\u6084\u609B\u6096\u6097\u6092\u60A7\u608B\u60E1\u60B8\u60E0\u60D3\u60B4\u5FF0\u60BD\u60C6\u60B5\u60D8\u614D\u6115\u6106\u60F6\u60F7\u6100\u60F4\u60FA\u6103\u6121\u60FB\u60F1\u610D\u610E\u6147\u613E\u6128\u6127\u614A\u613F\u613C\u612C\u6134\u613D\u6142\u6144\u6173\u6177\u6158\u6159\u615A\u616B\u6174\u616F\u6165\u6171\u615F\u615D\u6153\u6175\u6199\u6196\u6187\u61AC\u6194\u619A\u618A\u6191\u61AB\u61AE\u61CC\u61CA\u61C9\u61F7\u61C8\u61C3\u61C6\u61BA\u61CB\u7F79\u61CD\u61E6\u61E3\u61F6\u61FA\u61F4\u61FF\u61FD\u61FC\u61FE\u6200\u6208\u6209\u620D\u620C\u6214\u621B"],["d9a1","\u621E\u6221\u622A\u622E\u6230\u6232\u6233\u6241\u624E\u625E\u6263\u625B\u6260\u6268\u627C\u6282\u6289\u627E\u6292\u6293\u6296\u62D4\u6283\u6294\u62D7\u62D1\u62BB\u62CF\u62FF\u62C6\u64D4\u62C8\u62DC\u62CC\u62CA\u62C2\u62C7\u629B\u62C9\u630C\u62EE\u62F1\u6327\u6302\u6308\u62EF\u62F5\u6350\u633E\u634D\u641C\u634F\u6396\u638E\u6380\u63AB\u6376\u63A3\u638F\u6389\u639F\u63B5\u636B\u6369\u63BE\u63E9\u63C0\u63C6\u63E3\u63C9\u63D2\u63F6\u63C4\u6416\u6434\u6406\u6413\u6426\u6436\u651D\u6417\u6428\u640F\u6467\u646F\u6476\u644E\u652A\u6495\u6493\u64A5\u64A9\u6488\u64BC"],["daa1","\u64DA\u64D2\u64C5\u64C7\u64BB\u64D8\u64C2\u64F1\u64E7\u8209\u64E0\u64E1\u62AC\u64E3\u64EF\u652C\u64F6\u64F4\u64F2\u64FA\u6500\u64FD\u6518\u651C\u6505\u6524\u6523\u652B\u6534\u6535\u6537\u6536\u6538\u754B\u6548\u6556\u6555\u654D\u6558\u655E\u655D\u6572\u6578\u6582\u6583\u8B8A\u659B\u659F\u65AB\u65B7\u65C3\u65C6\u65C1\u65C4\u65CC\u65D2\u65DB\u65D9\u65E0\u65E1\u65F1\u6772\u660A\u6603\u65FB\u6773\u6635\u6636\u6634\u661C\u664F\u6644\u6649\u6641\u665E\u665D\u6664\u6667\u6668\u665F\u6662\u6670\u6683\u6688\u668E\u6689\u6684\u6698\u669D\u66C1\u66B9\u66C9\u66BE\u66BC"],["dba1","\u66C4\u66B8\u66D6\u66DA\u66E0\u663F\u66E6\u66E9\u66F0\u66F5\u66F7\u670F\u6716\u671E\u6726\u6727\u9738\u672E\u673F\u6736\u6741\u6738\u6737\u6746\u675E\u6760\u6759\u6763\u6764\u6789\u6770\u67A9\u677C\u676A\u678C\u678B\u67A6\u67A1\u6785\u67B7\u67EF\u67B4\u67EC\u67B3\u67E9\u67B8\u67E4\u67DE\u67DD\u67E2\u67EE\u67B9\u67CE\u67C6\u67E7\u6A9C\u681E\u6846\u6829\u6840\u684D\u6832\u684E\u68B3\u682B\u6859\u6863\u6877\u687F\u689F\u688F\u68AD\u6894\u689D\u689B\u6883\u6AAE\u68B9\u6874\u68B5\u68A0\u68BA\u690F\u688D\u687E\u6901\u68CA\u6908\u68D8\u6922\u6926\u68E1\u690C\u68CD"],["dca1","\u68D4\u68E7\u68D5\u6936\u6912\u6904\u68D7\u68E3\u6925\u68F9\u68E0\u68EF\u6928\u692A\u691A\u6923\u6921\u68C6\u6979\u6977\u695C\u6978\u696B\u6954\u697E\u696E\u6939\u6974\u693D\u6959\u6930\u6961\u695E\u695D\u6981\u696A\u69B2\u69AE\u69D0\u69BF\u69C1\u69D3\u69BE\u69CE\u5BE8\u69CA\u69DD\u69BB\u69C3\u69A7\u6A2E\u6991\u69A0\u699C\u6995\u69B4\u69DE\u69E8\u6A02\u6A1B\u69FF\u6B0A\u69F9\u69F2\u69E7\u6A05\u69B1\u6A1E\u69ED\u6A14\u69EB\u6A0A\u6A12\u6AC1\u6A23\u6A13\u6A44\u6A0C\u6A72\u6A36\u6A78\u6A47\u6A62\u6A59\u6A66\u6A48\u6A38\u6A22\u6A90\u6A8D\u6AA0\u6A84\u6AA2\u6AA3"],["dda1","\u6A97\u8617\u6ABB\u6AC3\u6AC2\u6AB8\u6AB3\u6AAC\u6ADE\u6AD1\u6ADF\u6AAA\u6ADA\u6AEA\u6AFB\u6B05\u8616\u6AFA\u6B12\u6B16\u9B31\u6B1F\u6B38\u6B37\u76DC\u6B39\u98EE\u6B47\u6B43\u6B49\u6B50\u6B59\u6B54\u6B5B\u6B5F\u6B61\u6B78\u6B79\u6B7F\u6B80\u6B84\u6B83\u6B8D\u6B98\u6B95\u6B9E\u6BA4\u6BAA\u6BAB\u6BAF\u6BB2\u6BB1\u6BB3\u6BB7\u6BBC\u6BC6\u6BCB\u6BD3\u6BDF\u6BEC\u6BEB\u6BF3\u6BEF\u9EBE\u6C08\u6C13\u6C14\u6C1B\u6C24\u6C23\u6C5E\u6C55\u6C62\u6C6A\u6C82\u6C8D\u6C9A\u6C81\u6C9B\u6C7E\u6C68\u6C73\u6C92\u6C90\u6CC4\u6CF1\u6CD3\u6CBD\u6CD7\u6CC5\u6CDD\u6CAE\u6CB1\u6CBE"],["dea1","\u6CBA\u6CDB\u6CEF\u6CD9\u6CEA\u6D1F\u884D\u6D36\u6D2B\u6D3D\u6D38\u6D19\u6D35\u6D33\u6D12\u6D0C\u6D63\u6D93\u6D64\u6D5A\u6D79\u6D59\u6D8E\u6D95\u6FE4\u6D85\u6DF9\u6E15\u6E0A\u6DB5\u6DC7\u6DE6\u6DB8\u6DC6\u6DEC\u6DDE\u6DCC\u6DE8\u6DD2\u6DC5\u6DFA\u6DD9\u6DE4\u6DD5\u6DEA\u6DEE\u6E2D\u6E6E\u6E2E\u6E19\u6E72\u6E5F\u6E3E\u6E23\u6E6B\u6E2B\u6E76\u6E4D\u6E1F\u6E43\u6E3A\u6E4E\u6E24\u6EFF\u6E1D\u6E38\u6E82\u6EAA\u6E98\u6EC9\u6EB7\u6ED3\u6EBD\u6EAF\u6EC4\u6EB2\u6ED4\u6ED5\u6E8F\u6EA5\u6EC2\u6E9F\u6F41\u6F11\u704C\u6EEC\u6EF8\u6EFE\u6F3F\u6EF2\u6F31\u6EEF\u6F32\u6ECC"],["dfa1","\u6F3E\u6F13\u6EF7\u6F86\u6F7A\u6F78\u6F81\u6F80\u6F6F\u6F5B\u6FF3\u6F6D\u6F82\u6F7C\u6F58\u6F8E\u6F91\u6FC2\u6F66\u6FB3\u6FA3\u6FA1\u6FA4\u6FB9\u6FC6\u6FAA\u6FDF\u6FD5\u6FEC\u6FD4\u6FD8\u6FF1\u6FEE\u6FDB\u7009\u700B\u6FFA\u7011\u7001\u700F\u6FFE\u701B\u701A\u6F74\u701D\u7018\u701F\u7030\u703E\u7032\u7051\u7063\u7099\u7092\u70AF\u70F1\u70AC\u70B8\u70B3\u70AE\u70DF\u70CB\u70DD\u70D9\u7109\u70FD\u711C\u7119\u7165\u7155\u7188\u7166\u7162\u714C\u7156\u716C\u718F\u71FB\u7184\u7195\u71A8\u71AC\u71D7\u71B9\u71BE\u71D2\u71C9\u71D4\u71CE\u71E0\u71EC\u71E7\u71F5\u71FC"],["e0a1","\u71F9\u71FF\u720D\u7210\u721B\u7228\u722D\u722C\u7230\u7232\u723B\u723C\u723F\u7240\u7246\u724B\u7258\u7274\u727E\u7282\u7281\u7287\u7292\u7296\u72A2\u72A7\u72B9\u72B2\u72C3\u72C6\u72C4\u72CE\u72D2\u72E2\u72E0\u72E1\u72F9\u72F7\u500F\u7317\u730A\u731C\u7316\u731D\u7334\u732F\u7329\u7325\u733E\u734E\u734F\u9ED8\u7357\u736A\u7368\u7370\u7378\u7375\u737B\u737A\u73C8\u73B3\u73CE\u73BB\u73C0\u73E5\u73EE\u73DE\u74A2\u7405\u746F\u7425\u73F8\u7432\u743A\u7455\u743F\u745F\u7459\u7441\u745C\u7469\u7470\u7463\u746A\u7476\u747E\u748B\u749E\u74A7\u74CA\u74CF\u74D4\u73F1"],["e1a1","\u74E0\u74E3\u74E7\u74E9\u74EE\u74F2\u74F0\u74F1\u74F8\u74F7\u7504\u7503\u7505\u750C\u750E\u750D\u7515\u7513\u751E\u7526\u752C\u753C\u7544\u754D\u754A\u7549\u755B\u7546\u755A\u7569\u7564\u7567\u756B\u756D\u7578\u7576\u7586\u7587\u7574\u758A\u7589\u7582\u7594\u759A\u759D\u75A5\u75A3\u75C2\u75B3\u75C3\u75B5\u75BD\u75B8\u75BC\u75B1\u75CD\u75CA\u75D2\u75D9\u75E3\u75DE\u75FE\u75FF\u75FC\u7601\u75F0\u75FA\u75F2\u75F3\u760B\u760D\u7609\u761F\u7627\u7620\u7621\u7622\u7624\u7634\u7630\u763B\u7647\u7648\u7646\u765C\u7658\u7661\u7662\u7668\u7669\u766A\u7667\u766C\u7670"],["e2a1","\u7672\u7676\u7678\u767C\u7680\u7683\u7688\u768B\u768E\u7696\u7693\u7699\u769A\u76B0\u76B4\u76B8\u76B9\u76BA\u76C2\u76CD\u76D6\u76D2\u76DE\u76E1\u76E5\u76E7\u76EA\u862F\u76FB\u7708\u7707\u7704\u7729\u7724\u771E\u7725\u7726\u771B\u7737\u7738\u7747\u775A\u7768\u776B\u775B\u7765\u777F\u777E\u7779\u778E\u778B\u7791\u77A0\u779E\u77B0\u77B6\u77B9\u77BF\u77BC\u77BD\u77BB\u77C7\u77CD\u77D7\u77DA\u77DC\u77E3\u77EE\u77FC\u780C\u7812\u7926\u7820\u792A\u7845\u788E\u7874\u7886\u787C\u789A\u788C\u78A3\u78B5\u78AA\u78AF\u78D1\u78C6\u78CB\u78D4\u78BE\u78BC\u78C5\u78CA\u78EC"],["e3a1","\u78E7\u78DA\u78FD\u78F4\u7907\u7912\u7911\u7919\u792C\u792B\u7940\u7960\u7957\u795F\u795A\u7955\u7953\u797A\u797F\u798A\u799D\u79A7\u9F4B\u79AA\u79AE\u79B3\u79B9\u79BA\u79C9\u79D5\u79E7\u79EC\u79E1\u79E3\u7A08\u7A0D\u7A18\u7A19\u7A20\u7A1F\u7980\u7A31\u7A3B\u7A3E\u7A37\u7A43\u7A57\u7A49\u7A61\u7A62\u7A69\u9F9D\u7A70\u7A79\u7A7D\u7A88\u7A97\u7A95\u7A98\u7A96\u7AA9\u7AC8\u7AB0\u7AB6\u7AC5\u7AC4\u7ABF\u9083\u7AC7\u7ACA\u7ACD\u7ACF\u7AD5\u7AD3\u7AD9\u7ADA\u7ADD\u7AE1\u7AE2\u7AE6\u7AED\u7AF0\u7B02\u7B0F\u7B0A\u7B06\u7B33\u7B18\u7B19\u7B1E\u7B35\u7B28\u7B36\u7B50"],["e4a1","\u7B7A\u7B04\u7B4D\u7B0B\u7B4C\u7B45\u7B75\u7B65\u7B74\u7B67\u7B70\u7B71\u7B6C\u7B6E\u7B9D\u7B98\u7B9F\u7B8D\u7B9C\u7B9A\u7B8B\u7B92\u7B8F\u7B5D\u7B99\u7BCB\u7BC1\u7BCC\u7BCF\u7BB4\u7BC6\u7BDD\u7BE9\u7C11\u7C14\u7BE6\u7BE5\u7C60\u7C00\u7C07\u7C13\u7BF3\u7BF7\u7C17\u7C0D\u7BF6\u7C23\u7C27\u7C2A\u7C1F\u7C37\u7C2B\u7C3D\u7C4C\u7C43\u7C54\u7C4F\u7C40\u7C50\u7C58\u7C5F\u7C64\u7C56\u7C65\u7C6C\u7C75\u7C83\u7C90\u7CA4\u7CAD\u7CA2\u7CAB\u7CA1\u7CA8\u7CB3\u7CB2\u7CB1\u7CAE\u7CB9\u7CBD\u7CC0\u7CC5\u7CC2\u7CD8\u7CD2\u7CDC\u7CE2\u9B3B\u7CEF\u7CF2\u7CF4\u7CF6\u7CFA\u7D06"],["e5a1","\u7D02\u7D1C\u7D15\u7D0A\u7D45\u7D4B\u7D2E\u7D32\u7D3F\u7D35\u7D46\u7D73\u7D56\u7D4E\u7D72\u7D68\u7D6E\u7D4F\u7D63\u7D93\u7D89\u7D5B\u7D8F\u7D7D\u7D9B\u7DBA\u7DAE\u7DA3\u7DB5\u7DC7\u7DBD\u7DAB\u7E3D\u7DA2\u7DAF\u7DDC\u7DB8\u7D9F\u7DB0\u7DD8\u7DDD\u7DE4\u7DDE\u7DFB\u7DF2\u7DE1\u7E05\u7E0A\u7E23\u7E21\u7E12\u7E31\u7E1F\u7E09\u7E0B\u7E22\u7E46\u7E66\u7E3B\u7E35\u7E39\u7E43\u7E37\u7E32\u7E3A\u7E67\u7E5D\u7E56\u7E5E\u7E59\u7E5A\u7E79\u7E6A\u7E69\u7E7C\u7E7B\u7E83\u7DD5\u7E7D\u8FAE\u7E7F\u7E88\u7E89\u7E8C\u7E92\u7E90\u7E93\u7E94\u7E96\u7E8E\u7E9B\u7E9C\u7F38\u7F3A"],["e6a1","\u7F45\u7F4C\u7F4D\u7F4E\u7F50\u7F51\u7F55\u7F54\u7F58\u7F5F\u7F60\u7F68\u7F69\u7F67\u7F78\u7F82\u7F86\u7F83\u7F88\u7F87\u7F8C\u7F94\u7F9E\u7F9D\u7F9A\u7FA3\u7FAF\u7FB2\u7FB9\u7FAE\u7FB6\u7FB8\u8B71\u7FC5\u7FC6\u7FCA\u7FD5\u7FD4\u7FE1\u7FE6\u7FE9\u7FF3\u7FF9\u98DC\u8006\u8004\u800B\u8012\u8018\u8019\u801C\u8021\u8028\u803F\u803B\u804A\u8046\u8052\u8058\u805A\u805F\u8062\u8068\u8073\u8072\u8070\u8076\u8079\u807D\u807F\u8084\u8086\u8085\u809B\u8093\u809A\u80AD\u5190\u80AC\u80DB\u80E5\u80D9\u80DD\u80C4\u80DA\u80D6\u8109\u80EF\u80F1\u811B\u8129\u8123\u812F\u814B"],["e7a1","\u968B\u8146\u813E\u8153\u8151\u80FC\u8171\u816E\u8165\u8166\u8174\u8183\u8188\u818A\u8180\u8182\u81A0\u8195\u81A4\u81A3\u815F\u8193\u81A9\u81B0\u81B5\u81BE\u81B8\u81BD\u81C0\u81C2\u81BA\u81C9\u81CD\u81D1\u81D9\u81D8\u81C8\u81DA\u81DF\u81E0\u81E7\u81FA\u81FB\u81FE\u8201\u8202\u8205\u8207\u820A\u820D\u8210\u8216\u8229\u822B\u8238\u8233\u8240\u8259\u8258\u825D\u825A\u825F\u8264\u8262\u8268\u826A\u826B\u822E\u8271\u8277\u8278\u827E\u828D\u8292\u82AB\u829F\u82BB\u82AC\u82E1\u82E3\u82DF\u82D2\u82F4\u82F3\u82FA\u8393\u8303\u82FB\u82F9\u82DE\u8306\u82DC\u8309\u82D9"],["e8a1","\u8335\u8334\u8316\u8332\u8331\u8340\u8339\u8350\u8345\u832F\u832B\u8317\u8318\u8385\u839A\u83AA\u839F\u83A2\u8396\u8323\u838E\u8387\u838A\u837C\u83B5\u8373\u8375\u83A0\u8389\u83A8\u83F4\u8413\u83EB\u83CE\u83FD\u8403\u83D8\u840B\u83C1\u83F7\u8407\u83E0\u83F2\u840D\u8422\u8420\u83BD\u8438\u8506\u83FB\u846D\u842A\u843C\u855A\u8484\u8477\u846B\u84AD\u846E\u8482\u8469\u8446\u842C\u846F\u8479\u8435\u84CA\u8462\u84B9\u84BF\u849F\u84D9\u84CD\u84BB\u84DA\u84D0\u84C1\u84C6\u84D6\u84A1\u8521\u84FF\u84F4\u8517\u8518\u852C\u851F\u8515\u8514\u84FC\u8540\u8563\u8558\u8548"],["e9a1","\u8541\u8602\u854B\u8555\u8580\u85A4\u8588\u8591\u858A\u85A8\u856D\u8594\u859B\u85EA\u8587\u859C\u8577\u857E\u8590\u85C9\u85BA\u85CF\u85B9\u85D0\u85D5\u85DD\u85E5\u85DC\u85F9\u860A\u8613\u860B\u85FE\u85FA\u8606\u8622\u861A\u8630\u863F\u864D\u4E55\u8654\u865F\u8667\u8671\u8693\u86A3\u86A9\u86AA\u868B\u868C\u86B6\u86AF\u86C4\u86C6\u86B0\u86C9\u8823\u86AB\u86D4\u86DE\u86E9\u86EC\u86DF\u86DB\u86EF\u8712\u8706\u8708\u8700\u8703\u86FB\u8711\u8709\u870D\u86F9\u870A\u8734\u873F\u8737\u873B\u8725\u8729\u871A\u8760\u875F\u8778\u874C\u874E\u8774\u8757\u8768\u876E\u8759"],["eaa1","\u8753\u8763\u876A\u8805\u87A2\u879F\u8782\u87AF\u87CB\u87BD\u87C0\u87D0\u96D6\u87AB\u87C4\u87B3\u87C7\u87C6\u87BB\u87EF\u87F2\u87E0\u880F\u880D\u87FE\u87F6\u87F7\u880E\u87D2\u8811\u8816\u8815\u8822\u8821\u8831\u8836\u8839\u8827\u883B\u8844\u8842\u8852\u8859\u885E\u8862\u886B\u8881\u887E\u889E\u8875\u887D\u88B5\u8872\u8882\u8897\u8892\u88AE\u8899\u88A2\u888D\u88A4\u88B0\u88BF\u88B1\u88C3\u88C4\u88D4\u88D8\u88D9\u88DD\u88F9\u8902\u88FC\u88F4\u88E8\u88F2\u8904\u890C\u890A\u8913\u8943\u891E\u8925\u892A\u892B\u8941\u8944\u893B\u8936\u8938\u894C\u891D\u8960\u895E"],["eba1","\u8966\u8964\u896D\u896A\u896F\u8974\u8977\u897E\u8983\u8988\u898A\u8993\u8998\u89A1\u89A9\u89A6\u89AC\u89AF\u89B2\u89BA\u89BD\u89BF\u89C0\u89DA\u89DC\u89DD\u89E7\u89F4\u89F8\u8A03\u8A16\u8A10\u8A0C\u8A1B\u8A1D\u8A25\u8A36\u8A41\u8A5B\u8A52\u8A46\u8A48\u8A7C\u8A6D\u8A6C\u8A62\u8A85\u8A82\u8A84\u8AA8\u8AA1\u8A91\u8AA5\u8AA6\u8A9A\u8AA3\u8AC4\u8ACD\u8AC2\u8ADA\u8AEB\u8AF3\u8AE7\u8AE4\u8AF1\u8B14\u8AE0\u8AE2\u8AF7\u8ADE\u8ADB\u8B0C\u8B07\u8B1A\u8AE1\u8B16\u8B10\u8B17\u8B20\u8B33\u97AB\u8B26\u8B2B\u8B3E\u8B28\u8B41\u8B4C\u8B4F\u8B4E\u8B49\u8B56\u8B5B\u8B5A\u8B6B"],["eca1","\u8B5F\u8B6C\u8B6F\u8B74\u8B7D\u8B80\u8B8C\u8B8E\u8B92\u8B93\u8B96\u8B99\u8B9A\u8C3A\u8C41\u8C3F\u8C48\u8C4C\u8C4E\u8C50\u8C55\u8C62\u8C6C\u8C78\u8C7A\u8C82\u8C89\u8C85\u8C8A\u8C8D\u8C8E\u8C94\u8C7C\u8C98\u621D\u8CAD\u8CAA\u8CBD\u8CB2\u8CB3\u8CAE\u8CB6\u8CC8\u8CC1\u8CE4\u8CE3\u8CDA\u8CFD\u8CFA\u8CFB\u8D04\u8D05\u8D0A\u8D07\u8D0F\u8D0D\u8D10\u9F4E\u8D13\u8CCD\u8D14\u8D16\u8D67\u8D6D\u8D71\u8D73\u8D81\u8D99\u8DC2\u8DBE\u8DBA\u8DCF\u8DDA\u8DD6\u8DCC\u8DDB\u8DCB\u8DEA\u8DEB\u8DDF\u8DE3\u8DFC\u8E08\u8E09\u8DFF\u8E1D\u8E1E\u8E10\u8E1F\u8E42\u8E35\u8E30\u8E34\u8E4A"],["eda1","\u8E47\u8E49\u8E4C\u8E50\u8E48\u8E59\u8E64\u8E60\u8E2A\u8E63\u8E55\u8E76\u8E72\u8E7C\u8E81\u8E87\u8E85\u8E84\u8E8B\u8E8A\u8E93\u8E91\u8E94\u8E99\u8EAA\u8EA1\u8EAC\u8EB0\u8EC6\u8EB1\u8EBE\u8EC5\u8EC8\u8ECB\u8EDB\u8EE3\u8EFC\u8EFB\u8EEB\u8EFE\u8F0A\u8F05\u8F15\u8F12\u8F19\u8F13\u8F1C\u8F1F\u8F1B\u8F0C\u8F26\u8F33\u8F3B\u8F39\u8F45\u8F42\u8F3E\u8F4C\u8F49\u8F46\u8F4E\u8F57\u8F5C\u8F62\u8F63\u8F64\u8F9C\u8F9F\u8FA3\u8FAD\u8FAF\u8FB7\u8FDA\u8FE5\u8FE2\u8FEA\u8FEF\u9087\u8FF4\u9005\u8FF9\u8FFA\u9011\u9015\u9021\u900D\u901E\u9016\u900B\u9027\u9036\u9035\u9039\u8FF8"],["eea1","\u904F\u9050\u9051\u9052\u900E\u9049\u903E\u9056\u9058\u905E\u9068\u906F\u9076\u96A8\u9072\u9082\u907D\u9081\u9080\u908A\u9089\u908F\u90A8\u90AF\u90B1\u90B5\u90E2\u90E4\u6248\u90DB\u9102\u9112\u9119\u9132\u9130\u914A\u9156\u9158\u9163\u9165\u9169\u9173\u9172\u918B\u9189\u9182\u91A2\u91AB\u91AF\u91AA\u91B5\u91B4\u91BA\u91C0\u91C1\u91C9\u91CB\u91D0\u91D6\u91DF\u91E1\u91DB\u91FC\u91F5\u91F6\u921E\u91FF\u9214\u922C\u9215\u9211\u925E\u9257\u9245\u9249\u9264\u9248\u9295\u923F\u924B\u9250\u929C\u9296\u9293\u929B\u925A\u92CF\u92B9\u92B7\u92E9\u930F\u92FA\u9344\u932E"],["efa1","\u9319\u9322\u931A\u9323\u933A\u9335\u933B\u935C\u9360\u937C\u936E\u9356\u93B0\u93AC\u93AD\u9394\u93B9\u93D6\u93D7\u93E8\u93E5\u93D8\u93C3\u93DD\u93D0\u93C8\u93E4\u941A\u9414\u9413\u9403\u9407\u9410\u9436\u942B\u9435\u9421\u943A\u9441\u9452\u9444\u945B\u9460\u9462\u945E\u946A\u9229\u9470\u9475\u9477\u947D\u945A\u947C\u947E\u9481\u947F\u9582\u9587\u958A\u9594\u9596\u9598\u9599\u95A0\u95A8\u95A7\u95AD\u95BC\u95BB\u95B9\u95BE\u95CA\u6FF6\u95C3\u95CD\u95CC\u95D5\u95D4\u95D6\u95DC\u95E1\u95E5\u95E2\u9621\u9628\u962E\u962F\u9642\u964C\u964F\u964B\u9677\u965C\u965E"],["f0a1","\u965D\u965F\u9666\u9672\u966C\u968D\u9698\u9695\u9697\u96AA\u96A7\u96B1\u96B2\u96B0\u96B4\u96B6\u96B8\u96B9\u96CE\u96CB\u96C9\u96CD\u894D\u96DC\u970D\u96D5\u96F9\u9704\u9706\u9708\u9713\u970E\u9711\u970F\u9716\u9719\u9724\u972A\u9730\u9739\u973D\u973E\u9744\u9746\u9748\u9742\u9749\u975C\u9760\u9764\u9766\u9768\u52D2\u976B\u9771\u9779\u9785\u977C\u9781\u977A\u9786\u978B\u978F\u9790\u979C\u97A8\u97A6\u97A3\u97B3\u97B4\u97C3\u97C6\u97C8\u97CB\u97DC\u97ED\u9F4F\u97F2\u7ADF\u97F6\u97F5\u980F\u980C\u9838\u9824\u9821\u9837\u983D\u9846\u984F\u984B\u986B\u986F\u9870"],["f1a1","\u9871\u9874\u9873\u98AA\u98AF\u98B1\u98B6\u98C4\u98C3\u98C6\u98E9\u98EB\u9903\u9909\u9912\u9914\u9918\u9921\u991D\u991E\u9924\u9920\u992C\u992E\u993D\u993E\u9942\u9949\u9945\u9950\u994B\u9951\u9952\u994C\u9955\u9997\u9998\u99A5\u99AD\u99AE\u99BC\u99DF\u99DB\u99DD\u99D8\u99D1\u99ED\u99EE\u99F1\u99F2\u99FB\u99F8\u9A01\u9A0F\u9A05\u99E2\u9A19\u9A2B\u9A37\u9A45\u9A42\u9A40\u9A43\u9A3E\u9A55\u9A4D\u9A5B\u9A57\u9A5F\u9A62\u9A65\u9A64\u9A69\u9A6B\u9A6A\u9AAD\u9AB0\u9ABC\u9AC0\u9ACF\u9AD1\u9AD3\u9AD4\u9ADE\u9ADF\u9AE2\u9AE3\u9AE6\u9AEF\u9AEB\u9AEE\u9AF4\u9AF1\u9AF7"],["f2a1","\u9AFB\u9B06\u9B18\u9B1A\u9B1F\u9B22\u9B23\u9B25\u9B27\u9B28\u9B29\u9B2A\u9B2E\u9B2F\u9B32\u9B44\u9B43\u9B4F\u9B4D\u9B4E\u9B51\u9B58\u9B74\u9B93\u9B83\u9B91\u9B96\u9B97\u9B9F\u9BA0\u9BA8\u9BB4\u9BC0\u9BCA\u9BB9\u9BC6\u9BCF\u9BD1\u9BD2\u9BE3\u9BE2\u9BE4\u9BD4\u9BE1\u9C3A\u9BF2\u9BF1\u9BF0\u9C15\u9C14\u9C09\u9C13\u9C0C\u9C06\u9C08\u9C12\u9C0A\u9C04\u9C2E\u9C1B\u9C25\u9C24\u9C21\u9C30\u9C47\u9C32\u9C46\u9C3E\u9C5A\u9C60\u9C67\u9C76\u9C78\u9CE7\u9CEC\u9CF0\u9D09\u9D08\u9CEB\u9D03\u9D06\u9D2A\u9D26\u9DAF\u9D23\u9D1F\u9D44\u9D15\u9D12\u9D41\u9D3F\u9D3E\u9D46\u9D48"],["f3a1","\u9D5D\u9D5E\u9D64\u9D51\u9D50\u9D59\u9D72\u9D89\u9D87\u9DAB\u9D6F\u9D7A\u9D9A\u9DA4\u9DA9\u9DB2\u9DC4\u9DC1\u9DBB\u9DB8\u9DBA\u9DC6\u9DCF\u9DC2\u9DD9\u9DD3\u9DF8\u9DE6\u9DED\u9DEF\u9DFD\u9E1A\u9E1B\u9E1E\u9E75\u9E79\u9E7D\u9E81\u9E88\u9E8B\u9E8C\u9E92\u9E95\u9E91\u9E9D\u9EA5\u9EA9\u9EB8\u9EAA\u9EAD\u9761\u9ECC\u9ECE\u9ECF\u9ED0\u9ED4\u9EDC\u9EDE\u9EDD\u9EE0\u9EE5\u9EE8\u9EEF\u9EF4\u9EF6\u9EF7\u9EF9\u9EFB\u9EFC\u9EFD\u9F07\u9F08\u76B7\u9F15\u9F21\u9F2C\u9F3E\u9F4A\u9F52\u9F54\u9F63\u9F5F\u9F60\u9F61\u9F66\u9F67\u9F6C\u9F6A\u9F77\u9F72\u9F76\u9F95\u9F9C\u9FA0"],["f4a1","\u582F\u69C7\u9059\u7464\u51DC\u7199"],["f9a1","\u7E8A\u891C\u9348\u9288\u84DC\u4FC9\u70BB\u6631\u68C8\u92F9\u66FB\u5F45\u4E28\u4EE1\u4EFC\u4F00\u4F03\u4F39\u4F56\u4F92\u4F8A\u4F9A\u4F94\u4FCD\u5040\u5022\u4FFF\u501E\u5046\u5070\u5042\u5094\u50F4\u50D8\u514A\u5164\u519D\u51BE\u51EC\u5215\u529C\u52A6\u52C0\u52DB\u5300\u5307\u5324\u5372\u5393\u53B2\u53DD\uFA0E\u549C\u548A\u54A9\u54FF\u5586\u5759\u5765\u57AC\u57C8\u57C7\uFA0F\uFA10\u589E\u58B2\u590B\u5953\u595B\u595D\u5963\u59A4\u59BA\u5B56\u5BC0\u752F\u5BD8\u5BEC\u5C1E\u5CA6\u5CBA\u5CF5\u5D27\u5D53\uFA11\u5D42\u5D6D\u5DB8\u5DB9\u5DD0\u5F21\u5F34\u5F67\u5FB7"],["faa1","\u5FDE\u605D\u6085\u608A\u60DE\u60D5\u6120\u60F2\u6111\u6137\u6130\u6198\u6213\u62A6\u63F5\u6460\u649D\u64CE\u654E\u6600\u6615\u663B\u6609\u662E\u661E\u6624\u6665\u6657\u6659\uFA12\u6673\u6699\u66A0\u66B2\u66BF\u66FA\u670E\uF929\u6766\u67BB\u6852\u67C0\u6801\u6844\u68CF\uFA13\u6968\uFA14\u6998\u69E2\u6A30\u6A6B\u6A46\u6A73\u6A7E\u6AE2\u6AE4\u6BD6\u6C3F\u6C5C\u6C86\u6C6F\u6CDA\u6D04\u6D87\u6D6F\u6D96\u6DAC\u6DCF\u6DF8\u6DF2\u6DFC\u6E39\u6E5C\u6E27\u6E3C\u6EBF\u6F88\u6FB5\u6FF5\u7005\u7007\u7028\u7085\u70AB\u710F\u7104\u715C\u7146\u7147\uFA15\u71C1\u71FE\u72B1"],["fba1","\u72BE\u7324\uFA16\u7377\u73BD\u73C9\u73D6\u73E3\u73D2\u7407\u73F5\u7426\u742A\u7429\u742E\u7462\u7489\u749F\u7501\u756F\u7682\u769C\u769E\u769B\u76A6\uFA17\u7746\u52AF\u7821\u784E\u7864\u787A\u7930\uFA18\uFA19\uFA1A\u7994\uFA1B\u799B\u7AD1\u7AE7\uFA1C\u7AEB\u7B9E\uFA1D\u7D48\u7D5C\u7DB7\u7DA0\u7DD6\u7E52\u7F47\u7FA1\uFA1E\u8301\u8362\u837F\u83C7\u83F6\u8448\u84B4\u8553\u8559\u856B\uFA1F\u85B0\uFA20\uFA21\u8807\u88F5\u8A12\u8A37\u8A79\u8AA7\u8ABE\u8ADF\uFA22\u8AF6\u8B53\u8B7F\u8CF0\u8CF4\u8D12\u8D76\uFA23\u8ECF\uFA24\uFA25\u9067\u90DE\uFA26\u9115\u9127\u91DA"],["fca1","\u91D7\u91DE\u91ED\u91EE\u91E4\u91E5\u9206\u9210\u920A\u923A\u9240\u923C\u924E\u9259\u9251\u9239\u9267\u92A7\u9277\u9278\u92E7\u92D7\u92D9\u92D0\uFA27\u92D5\u92E0\u92D3\u9325\u9321\u92FB\uFA28\u931E\u92FF\u931D\u9302\u9370\u9357\u93A4\u93C6\u93DE\u93F8\u9431\u9445\u9448\u9592\uF9DC\uFA29\u969D\u96AF\u9733\u973B\u9743\u974D\u974F\u9751\u9755\u9857\u9865\uFA2A\uFA2B\u9927\uFA2C\u999E\u9A4E\u9AD9\u9ADC\u9B75\u9B72\u9B8F\u9BB1\u9BBB\u9C00\u9D70\u9D6B\uFA2D\u9E19\u9ED1"],["fcf1","\u2170",9,"\uFFE2\uFFE4\uFF07\uFF02"],["8fa2af","\u02D8\u02C7\xB8\u02D9\u02DD\xAF\u02DB\u02DA\uFF5E\u0384\u0385"],["8fa2c2","\xA1\xA6\xBF"],["8fa2eb","\xBA\xAA\xA9\xAE\u2122\xA4\u2116"],["8fa6e1","\u0386\u0388\u0389\u038A\u03AA"],["8fa6e7","\u038C"],["8fa6e9","\u038E\u03AB"],["8fa6ec","\u038F"],["8fa6f1","\u03AC\u03AD\u03AE\u03AF\u03CA\u0390\u03CC\u03C2\u03CD\u03CB\u03B0\u03CE"],["8fa7c2","\u0402",10,"\u040E\u040F"],["8fa7f2","\u0452",10,"\u045E\u045F"],["8fa9a1","\xC6\u0110"],["8fa9a4","\u0126"],["8fa9a6","\u0132"],["8fa9a8","\u0141\u013F"],["8fa9ab","\u014A\xD8\u0152"],["8fa9af","\u0166\xDE"],["8fa9c1","\xE6\u0111\xF0\u0127\u0131\u0133\u0138\u0142\u0140\u0149\u014B\xF8\u0153\xDF\u0167\xFE"],["8faaa1","\xC1\xC0\xC4\xC2\u0102\u01CD\u0100\u0104\xC5\xC3\u0106\u0108\u010C\xC7\u010A\u010E\xC9\xC8\xCB\xCA\u011A\u0116\u0112\u0118"],["8faaba","\u011C\u011E\u0122\u0120\u0124\xCD\xCC\xCF\xCE\u01CF\u0130\u012A\u012E\u0128\u0134\u0136\u0139\u013D\u013B\u0143\u0147\u0145\xD1\xD3\xD2\xD6\xD4\u01D1\u0150\u014C\xD5\u0154\u0158\u0156\u015A\u015C\u0160\u015E\u0164\u0162\xDA\xD9\xDC\xDB\u016C\u01D3\u0170\u016A\u0172\u016E\u0168\u01D7\u01DB\u01D9\u01D5\u0174\xDD\u0178\u0176\u0179\u017D\u017B"],["8faba1","\xE1\xE0\xE4\xE2\u0103\u01CE\u0101\u0105\xE5\xE3\u0107\u0109\u010D\xE7\u010B\u010F\xE9\xE8\xEB\xEA\u011B\u0117\u0113\u0119\u01F5\u011D\u011F"],["8fabbd","\u0121\u0125\xED\xEC\xEF\xEE\u01D0"],["8fabc5","\u012B\u012F\u0129\u0135\u0137\u013A\u013E\u013C\u0144\u0148\u0146\xF1\xF3\xF2\xF6\xF4\u01D2\u0151\u014D\xF5\u0155\u0159\u0157\u015B\u015D\u0161\u015F\u0165\u0163\xFA\xF9\xFC\xFB\u016D\u01D4\u0171\u016B\u0173\u016F\u0169\u01D8\u01DC\u01DA\u01D6\u0175\xFD\xFF\u0177\u017A\u017E\u017C"],["8fb0a1","\u4E02\u4E04\u4E05\u4E0C\u4E12\u4E1F\u4E23\u4E24\u4E28\u4E2B\u4E2E\u4E2F\u4E30\u4E35\u4E40\u4E41\u4E44\u4E47\u4E51\u4E5A\u4E5C\u4E63\u4E68\u4E69\u4E74\u4E75\u4E79\u4E7F\u4E8D\u4E96\u4E97\u4E9D\u4EAF\u4EB9\u4EC3\u4ED0\u4EDA\u4EDB\u4EE0\u4EE1\u4EE2\u4EE8\u4EEF\u4EF1\u4EF3\u4EF5\u4EFD\u4EFE\u4EFF\u4F00\u4F02\u4F03\u4F08\u4F0B\u4F0C\u4F12\u4F15\u4F16\u4F17\u4F19\u4F2E\u4F31\u4F60\u4F33\u4F35\u4F37\u4F39\u4F3B\u4F3E\u4F40\u4F42\u4F48\u4F49\u4F4B\u4F4C\u4F52\u4F54\u4F56\u4F58\u4F5F\u4F63\u4F6A\u4F6C\u4F6E\u4F71\u4F77\u4F78\u4F79\u4F7A\u4F7D\u4F7E\u4F81\u4F82\u4F84"],["8fb1a1","\u4F85\u4F89\u4F8A\u4F8C\u4F8E\u4F90\u4F92\u4F93\u4F94\u4F97\u4F99\u4F9A\u4F9E\u4F9F\u4FB2\u4FB7\u4FB9\u4FBB\u4FBC\u4FBD\u4FBE\u4FC0\u4FC1\u4FC5\u4FC6\u4FC8\u4FC9\u4FCB\u4FCC\u4FCD\u4FCF\u4FD2\u4FDC\u4FE0\u4FE2\u4FF0\u4FF2\u4FFC\u4FFD\u4FFF\u5000\u5001\u5004\u5007\u500A\u500C\u500E\u5010\u5013\u5017\u5018\u501B\u501C\u501D\u501E\u5022\u5027\u502E\u5030\u5032\u5033\u5035\u5040\u5041\u5042\u5045\u5046\u504A\u504C\u504E\u5051\u5052\u5053\u5057\u5059\u505F\u5060\u5062\u5063\u5066\u5067\u506A\u506D\u5070\u5071\u503B\u5081\u5083\u5084\u5086\u508A\u508E\u508F\u5090"],["8fb2a1","\u5092\u5093\u5094\u5096\u509B\u509C\u509E",4,"\u50AA\u50AF\u50B0\u50B9\u50BA\u50BD\u50C0\u50C3\u50C4\u50C7\u50CC\u50CE\u50D0\u50D3\u50D4\u50D8\u50DC\u50DD\u50DF\u50E2\u50E4\u50E6\u50E8\u50E9\u50EF\u50F1\u50F6\u50FA\u50FE\u5103\u5106\u5107\u5108\u510B\u510C\u510D\u510E\u50F2\u5110\u5117\u5119\u511B\u511C\u511D\u511E\u5123\u5127\u5128\u512C\u512D\u512F\u5131\u5133\u5134\u5135\u5138\u5139\u5142\u514A\u514F\u5153\u5155\u5157\u5158\u515F\u5164\u5166\u517E\u5183\u5184\u518B\u518E\u5198\u519D\u51A1\u51A3\u51AD\u51B8\u51BA\u51BC\u51BE\u51BF\u51C2"],["8fb3a1","\u51C8\u51CF\u51D1\u51D2\u51D3\u51D5\u51D8\u51DE\u51E2\u51E5\u51EE\u51F2\u51F3\u51F4\u51F7\u5201\u5202\u5205\u5212\u5213\u5215\u5216\u5218\u5222\u5228\u5231\u5232\u5235\u523C\u5245\u5249\u5255\u5257\u5258\u525A\u525C\u525F\u5260\u5261\u5266\u526E\u5277\u5278\u5279\u5280\u5282\u5285\u528A\u528C\u5293\u5295\u5296\u5297\u5298\u529A\u529C\u52A4\u52A5\u52A6\u52A7\u52AF\u52B0\u52B6\u52B7\u52B8\u52BA\u52BB\u52BD\u52C0\u52C4\u52C6\u52C8\u52CC\u52CF\u52D1\u52D4\u52D6\u52DB\u52DC\u52E1\u52E5\u52E8\u52E9\u52EA\u52EC\u52F0\u52F1\u52F4\u52F6\u52F7\u5300\u5303\u530A\u530B"],["8fb4a1","\u530C\u5311\u5313\u5318\u531B\u531C\u531E\u531F\u5325\u5327\u5328\u5329\u532B\u532C\u532D\u5330\u5332\u5335\u533C\u533D\u533E\u5342\u534C\u534B\u5359\u535B\u5361\u5363\u5365\u536C\u536D\u5372\u5379\u537E\u5383\u5387\u5388\u538E\u5393\u5394\u5399\u539D\u53A1\u53A4\u53AA\u53AB\u53AF\u53B2\u53B4\u53B5\u53B7\u53B8\u53BA\u53BD\u53C0\u53C5\u53CF\u53D2\u53D3\u53D5\u53DA\u53DD\u53DE\u53E0\u53E6\u53E7\u53F5\u5402\u5413\u541A\u5421\u5427\u5428\u542A\u542F\u5431\u5434\u5435\u5443\u5444\u5447\u544D\u544F\u545E\u5462\u5464\u5466\u5467\u5469\u546B\u546D\u546E\u5474\u547F"],["8fb5a1","\u5481\u5483\u5485\u5488\u5489\u548D\u5491\u5495\u5496\u549C\u549F\u54A1\u54A6\u54A7\u54A9\u54AA\u54AD\u54AE\u54B1\u54B7\u54B9\u54BA\u54BB\u54BF\u54C6\u54CA\u54CD\u54CE\u54E0\u54EA\u54EC\u54EF\u54F6\u54FC\u54FE\u54FF\u5500\u5501\u5505\u5508\u5509\u550C\u550D\u550E\u5515\u552A\u552B\u5532\u5535\u5536\u553B\u553C\u553D\u5541\u5547\u5549\u554A\u554D\u5550\u5551\u5558\u555A\u555B\u555E\u5560\u5561\u5564\u5566\u557F\u5581\u5582\u5586\u5588\u558E\u558F\u5591\u5592\u5593\u5594\u5597\u55A3\u55A4\u55AD\u55B2\u55BF\u55C1\u55C3\u55C6\u55C9\u55CB\u55CC\u55CE\u55D1\u55D2"],["8fb6a1","\u55D3\u55D7\u55D8\u55DB\u55DE\u55E2\u55E9\u55F6\u55FF\u5605\u5608\u560A\u560D",5,"\u5619\u562C\u5630\u5633\u5635\u5637\u5639\u563B\u563C\u563D\u563F\u5640\u5641\u5643\u5644\u5646\u5649\u564B\u564D\u564F\u5654\u565E\u5660\u5661\u5662\u5663\u5666\u5669\u566D\u566F\u5671\u5672\u5675\u5684\u5685\u5688\u568B\u568C\u5695\u5699\u569A\u569D\u569E\u569F\u56A6\u56A7\u56A8\u56A9\u56AB\u56AC\u56AD\u56B1\u56B3\u56B7\u56BE\u56C5\u56C9\u56CA\u56CB\u56CF\u56D0\u56CC\u56CD\u56D9\u56DC\u56DD\u56DF\u56E1\u56E4",4,"\u56F1\u56EB\u56ED"],["8fb7a1","\u56F6\u56F7\u5701\u5702\u5707\u570A\u570C\u5711\u5715\u571A\u571B\u571D\u5720\u5722\u5723\u5724\u5725\u5729\u572A\u572C\u572E\u572F\u5733\u5734\u573D\u573E\u573F\u5745\u5746\u574C\u574D\u5752\u5762\u5765\u5767\u5768\u576B\u576D",4,"\u5773\u5774\u5775\u5777\u5779\u577A\u577B\u577C\u577E\u5781\u5783\u578C\u5794\u5797\u5799\u579A\u579C\u579D\u579E\u579F\u57A1\u5795\u57A7\u57A8\u57A9\u57AC\u57B8\u57BD\u57C7\u57C8\u57CC\u57CF\u57D5\u57DD\u57DE\u57E4\u57E6\u57E7\u57E9\u57ED\u57F0\u57F5\u57F6\u57F8\u57FD\u57FE\u57FF\u5803\u5804\u5808\u5809\u57E1"],["8fb8a1","\u580C\u580D\u581B\u581E\u581F\u5820\u5826\u5827\u582D\u5832\u5839\u583F\u5849\u584C\u584D\u584F\u5850\u5855\u585F\u5861\u5864\u5867\u5868\u5878\u587C\u587F\u5880\u5881\u5887\u5888\u5889\u588A\u588C\u588D\u588F\u5890\u5894\u5896\u589D\u58A0\u58A1\u58A2\u58A6\u58A9\u58B1\u58B2\u58C4\u58BC\u58C2\u58C8\u58CD\u58CE\u58D0\u58D2\u58D4\u58D6\u58DA\u58DD\u58E1\u58E2\u58E9\u58F3\u5905\u5906\u590B\u590C\u5912\u5913\u5914\u8641\u591D\u5921\u5923\u5924\u5928\u592F\u5930\u5933\u5935\u5936\u593F\u5943\u5946\u5952\u5953\u5959\u595B\u595D\u595E\u595F\u5961\u5963\u596B\u596D"],["8fb9a1","\u596F\u5972\u5975\u5976\u5979\u597B\u597C\u598B\u598C\u598E\u5992\u5995\u5997\u599F\u59A4\u59A7\u59AD\u59AE\u59AF\u59B0\u59B3\u59B7\u59BA\u59BC\u59C1\u59C3\u59C4\u59C8\u59CA\u59CD\u59D2\u59DD\u59DE\u59DF\u59E3\u59E4\u59E7\u59EE\u59EF\u59F1\u59F2\u59F4\u59F7\u5A00\u5A04\u5A0C\u5A0D\u5A0E\u5A12\u5A13\u5A1E\u5A23\u5A24\u5A27\u5A28\u5A2A\u5A2D\u5A30\u5A44\u5A45\u5A47\u5A48\u5A4C\u5A50\u5A55\u5A5E\u5A63\u5A65\u5A67\u5A6D\u5A77\u5A7A\u5A7B\u5A7E\u5A8B\u5A90\u5A93\u5A96\u5A99\u5A9C\u5A9E\u5A9F\u5AA0\u5AA2\u5AA7\u5AAC\u5AB1\u5AB2\u5AB3\u5AB5\u5AB8\u5ABA\u5ABB\u5ABF"],["8fbaa1","\u5AC4\u5AC6\u5AC8\u5ACF\u5ADA\u5ADC\u5AE0\u5AE5\u5AEA\u5AEE\u5AF5\u5AF6\u5AFD\u5B00\u5B01\u5B08\u5B17\u5B34\u5B19\u5B1B\u5B1D\u5B21\u5B25\u5B2D\u5B38\u5B41\u5B4B\u5B4C\u5B52\u5B56\u5B5E\u5B68\u5B6E\u5B6F\u5B7C\u5B7D\u5B7E\u5B7F\u5B81\u5B84\u5B86\u5B8A\u5B8E\u5B90\u5B91\u5B93\u5B94\u5B96\u5BA8\u5BA9\u5BAC\u5BAD\u5BAF\u5BB1\u5BB2\u5BB7\u5BBA\u5BBC\u5BC0\u5BC1\u5BCD\u5BCF\u5BD6",4,"\u5BE0\u5BEF\u5BF1\u5BF4\u5BFD\u5C0C\u5C17\u5C1E\u5C1F\u5C23\u5C26\u5C29\u5C2B\u5C2C\u5C2E\u5C30\u5C32\u5C35\u5C36\u5C59\u5C5A\u5C5C\u5C62\u5C63\u5C67\u5C68\u5C69"],["8fbba1","\u5C6D\u5C70\u5C74\u5C75\u5C7A\u5C7B\u5C7C\u5C7D\u5C87\u5C88\u5C8A\u5C8F\u5C92\u5C9D\u5C9F\u5CA0\u5CA2\u5CA3\u5CA6\u5CAA\u5CB2\u5CB4\u5CB5\u5CBA\u5CC9\u5CCB\u5CD2\u5CDD\u5CD7\u5CEE\u5CF1\u5CF2\u5CF4\u5D01\u5D06\u5D0D\u5D12\u5D2B\u5D23\u5D24\u5D26\u5D27\u5D31\u5D34\u5D39\u5D3D\u5D3F\u5D42\u5D43\u5D46\u5D48\u5D55\u5D51\u5D59\u5D4A\u5D5F\u5D60\u5D61\u5D62\u5D64\u5D6A\u5D6D\u5D70\u5D79\u5D7A\u5D7E\u5D7F\u5D81\u5D83\u5D88\u5D8A\u5D92\u5D93\u5D94\u5D95\u5D99\u5D9B\u5D9F\u5DA0\u5DA7\u5DAB\u5DB0\u5DB4\u5DB8\u5DB9\u5DC3\u5DC7\u5DCB\u5DD0\u5DCE\u5DD8\u5DD9\u5DE0\u5DE4"],["8fbca1","\u5DE9\u5DF8\u5DF9\u5E00\u5E07\u5E0D\u5E12\u5E14\u5E15\u5E18\u5E1F\u5E20\u5E2E\u5E28\u5E32\u5E35\u5E3E\u5E4B\u5E50\u5E49\u5E51\u5E56\u5E58\u5E5B\u5E5C\u5E5E\u5E68\u5E6A",4,"\u5E70\u5E80\u5E8B\u5E8E\u5EA2\u5EA4\u5EA5\u5EA8\u5EAA\u5EAC\u5EB1\u5EB3\u5EBD\u5EBE\u5EBF\u5EC6\u5ECC\u5ECB\u5ECE\u5ED1\u5ED2\u5ED4\u5ED5\u5EDC\u5EDE\u5EE5\u5EEB\u5F02\u5F06\u5F07\u5F08\u5F0E\u5F19\u5F1C\u5F1D\u5F21\u5F22\u5F23\u5F24\u5F28\u5F2B\u5F2C\u5F2E\u5F30\u5F34\u5F36\u5F3B\u5F3D\u5F3F\u5F40\u5F44\u5F45\u5F47\u5F4D\u5F50\u5F54\u5F58\u5F5B\u5F60\u5F63\u5F64\u5F67"],["8fbda1","\u5F6F\u5F72\u5F74\u5F75\u5F78\u5F7A\u5F7D\u5F7E\u5F89\u5F8D\u5F8F\u5F96\u5F9C\u5F9D\u5FA2\u5FA7\u5FAB\u5FA4\u5FAC\u5FAF\u5FB0\u5FB1\u5FB8\u5FC4\u5FC7\u5FC8\u5FC9\u5FCB\u5FD0",4,"\u5FDE\u5FE1\u5FE2\u5FE8\u5FE9\u5FEA\u5FEC\u5FED\u5FEE\u5FEF\u5FF2\u5FF3\u5FF6\u5FFA\u5FFC\u6007\u600A\u600D\u6013\u6014\u6017\u6018\u601A\u601F\u6024\u602D\u6033\u6035\u6040\u6047\u6048\u6049\u604C\u6051\u6054\u6056\u6057\u605D\u6061\u6067\u6071\u607E\u607F\u6082\u6086\u6088\u608A\u608E\u6091\u6093\u6095\u6098\u609D\u609E\u60A2\u60A4\u60A5\u60A8\u60B0\u60B1\u60B7"],["8fbea1","\u60BB\u60BE\u60C2\u60C4\u60C8\u60C9\u60CA\u60CB\u60CE\u60CF\u60D4\u60D5\u60D9\u60DB\u60DD\u60DE\u60E2\u60E5\u60F2\u60F5\u60F8\u60FC\u60FD\u6102\u6107\u610A\u610C\u6110",4,"\u6116\u6117\u6119\u611C\u611E\u6122\u612A\u612B\u6130\u6131\u6135\u6136\u6137\u6139\u6141\u6145\u6146\u6149\u615E\u6160\u616C\u6172\u6178\u617B\u617C\u617F\u6180\u6181\u6183\u6184\u618B\u618D\u6192\u6193\u6197\u6198\u619C\u619D\u619F\u61A0\u61A5\u61A8\u61AA\u61AD\u61B8\u61B9\u61BC\u61C0\u61C1\u61C2\u61CE\u61CF\u61D5\u61DC\u61DD\u61DE\u61DF\u61E1\u61E2\u61E7\u61E9\u61E5"],["8fbfa1","\u61EC\u61ED\u61EF\u6201\u6203\u6204\u6207\u6213\u6215\u621C\u6220\u6222\u6223\u6227\u6229\u622B\u6239\u623D\u6242\u6243\u6244\u6246\u624C\u6250\u6251\u6252\u6254\u6256\u625A\u625C\u6264\u626D\u626F\u6273\u627A\u627D\u628D\u628E\u628F\u6290\u62A6\u62A8\u62B3\u62B6\u62B7\u62BA\u62BE\u62BF\u62C4\u62CE\u62D5\u62D6\u62DA\u62EA\u62F2\u62F4\u62FC\u62FD\u6303\u6304\u630A\u630B\u630D\u6310\u6313\u6316\u6318\u6329\u632A\u632D\u6335\u6336\u6339\u633C\u6341\u6342\u6343\u6344\u6346\u634A\u634B\u634E\u6352\u6353\u6354\u6358\u635B\u6365\u6366\u636C\u636D\u6371\u6374\u6375"],["8fc0a1","\u6378\u637C\u637D\u637F\u6382\u6384\u6387\u638A\u6390\u6394\u6395\u6399\u639A\u639E\u63A4\u63A6\u63AD\u63AE\u63AF\u63BD\u63C1\u63C5\u63C8\u63CE\u63D1\u63D3\u63D4\u63D5\u63DC\u63E0\u63E5\u63EA\u63EC\u63F2\u63F3\u63F5\u63F8\u63F9\u6409\u640A\u6410\u6412\u6414\u6418\u641E\u6420\u6422\u6424\u6425\u6429\u642A\u642F\u6430\u6435\u643D\u643F\u644B\u644F\u6451\u6452\u6453\u6454\u645A\u645B\u645C\u645D\u645F\u6460\u6461\u6463\u646D\u6473\u6474\u647B\u647D\u6485\u6487\u648F\u6490\u6491\u6498\u6499\u649B\u649D\u649F\u64A1\u64A3\u64A6\u64A8\u64AC\u64B3\u64BD\u64BE\u64BF"],["8fc1a1","\u64C4\u64C9\u64CA\u64CB\u64CC\u64CE\u64D0\u64D1\u64D5\u64D7\u64E4\u64E5\u64E9\u64EA\u64ED\u64F0\u64F5\u64F7\u64FB\u64FF\u6501\u6504\u6508\u6509\u650A\u650F\u6513\u6514\u6516\u6519\u651B\u651E\u651F\u6522\u6526\u6529\u652E\u6531\u653A\u653C\u653D\u6543\u6547\u6549\u6550\u6552\u6554\u655F\u6560\u6567\u656B\u657A\u657D\u6581\u6585\u658A\u6592\u6595\u6598\u659D\u65A0\u65A3\u65A6\u65AE\u65B2\u65B3\u65B4\u65BF\u65C2\u65C8\u65C9\u65CE\u65D0\u65D4\u65D6\u65D8\u65DF\u65F0\u65F2\u65F4\u65F5\u65F9\u65FE\u65FF\u6600\u6604\u6608\u6609\u660D\u6611\u6612\u6615\u6616\u661D"],["8fc2a1","\u661E\u6621\u6622\u6623\u6624\u6626\u6629\u662A\u662B\u662C\u662E\u6630\u6631\u6633\u6639\u6637\u6640\u6645\u6646\u664A\u664C\u6651\u664E\u6657\u6658\u6659\u665B\u665C\u6660\u6661\u66FB\u666A\u666B\u666C\u667E\u6673\u6675\u667F\u6677\u6678\u6679\u667B\u6680\u667C\u668B\u668C\u668D\u6690\u6692\u6699\u669A\u669B\u669C\u669F\u66A0\u66A4\u66AD\u66B1\u66B2\u66B5\u66BB\u66BF\u66C0\u66C2\u66C3\u66C8\u66CC\u66CE\u66CF\u66D4\u66DB\u66DF\u66E8\u66EB\u66EC\u66EE\u66FA\u6705\u6707\u670E\u6713\u6719\u671C\u6720\u6722\u6733\u673E\u6745\u6747\u6748\u674C\u6754\u6755\u675D"],["8fc3a1","\u6766\u676C\u676E\u6774\u6776\u677B\u6781\u6784\u678E\u678F\u6791\u6793\u6796\u6798\u6799\u679B\u67B0\u67B1\u67B2\u67B5\u67BB\u67BC\u67BD\u67F9\u67C0\u67C2\u67C3\u67C5\u67C8\u67C9\u67D2\u67D7\u67D9\u67DC\u67E1\u67E6\u67F0\u67F2\u67F6\u67F7\u6852\u6814\u6819\u681D\u681F\u6828\u6827\u682C\u682D\u682F\u6830\u6831\u6833\u683B\u683F\u6844\u6845\u684A\u684C\u6855\u6857\u6858\u685B\u686B\u686E",4,"\u6875\u6879\u687A\u687B\u687C\u6882\u6884\u6886\u6888\u6896\u6898\u689A\u689C\u68A1\u68A3\u68A5\u68A9\u68AA\u68AE\u68B2\u68BB\u68C5\u68C8\u68CC\u68CF"],["8fc4a1","\u68D0\u68D1\u68D3\u68D6\u68D9\u68DC\u68DD\u68E5\u68E8\u68EA\u68EB\u68EC\u68ED\u68F0\u68F1\u68F5\u68F6\u68FB\u68FC\u68FD\u6906\u6909\u690A\u6910\u6911\u6913\u6916\u6917\u6931\u6933\u6935\u6938\u693B\u6942\u6945\u6949\u694E\u6957\u695B\u6963\u6964\u6965\u6966\u6968\u6969\u696C\u6970\u6971\u6972\u697A\u697B\u697F\u6980\u698D\u6992\u6996\u6998\u69A1\u69A5\u69A6\u69A8\u69AB\u69AD\u69AF\u69B7\u69B8\u69BA\u69BC\u69C5\u69C8\u69D1\u69D6\u69D7\u69E2\u69E5\u69EE\u69EF\u69F1\u69F3\u69F5\u69FE\u6A00\u6A01\u6A03\u6A0F\u6A11\u6A15\u6A1A\u6A1D\u6A20\u6A24\u6A28\u6A30\u6A32"],["8fc5a1","\u6A34\u6A37\u6A3B\u6A3E\u6A3F\u6A45\u6A46\u6A49\u6A4A\u6A4E\u6A50\u6A51\u6A52\u6A55\u6A56\u6A5B\u6A64\u6A67\u6A6A\u6A71\u6A73\u6A7E\u6A81\u6A83\u6A86\u6A87\u6A89\u6A8B\u6A91\u6A9B\u6A9D\u6A9E\u6A9F\u6AA5\u6AAB\u6AAF\u6AB0\u6AB1\u6AB4\u6ABD\u6ABE\u6ABF\u6AC6\u6AC9\u6AC8\u6ACC\u6AD0\u6AD4\u6AD5\u6AD6\u6ADC\u6ADD\u6AE4\u6AE7\u6AEC\u6AF0\u6AF1\u6AF2\u6AFC\u6AFD\u6B02\u6B03\u6B06\u6B07\u6B09\u6B0F\u6B10\u6B11\u6B17\u6B1B\u6B1E\u6B24\u6B28\u6B2B\u6B2C\u6B2F\u6B35\u6B36\u6B3B\u6B3F\u6B46\u6B4A\u6B4D\u6B52\u6B56\u6B58\u6B5D\u6B60\u6B67\u6B6B\u6B6E\u6B70\u6B75\u6B7D"],["8fc6a1","\u6B7E\u6B82\u6B85\u6B97\u6B9B\u6B9F\u6BA0\u6BA2\u6BA3\u6BA8\u6BA9\u6BAC\u6BAD\u6BAE\u6BB0\u6BB8\u6BB9\u6BBD\u6BBE\u6BC3\u6BC4\u6BC9\u6BCC\u6BD6\u6BDA\u6BE1\u6BE3\u6BE6\u6BE7\u6BEE\u6BF1\u6BF7\u6BF9\u6BFF\u6C02\u6C04\u6C05\u6C09\u6C0D\u6C0E\u6C10\u6C12\u6C19\u6C1F\u6C26\u6C27\u6C28\u6C2C\u6C2E\u6C33\u6C35\u6C36\u6C3A\u6C3B\u6C3F\u6C4A\u6C4B\u6C4D\u6C4F\u6C52\u6C54\u6C59\u6C5B\u6C5C\u6C6B\u6C6D\u6C6F\u6C74\u6C76\u6C78\u6C79\u6C7B\u6C85\u6C86\u6C87\u6C89\u6C94\u6C95\u6C97\u6C98\u6C9C\u6C9F\u6CB0\u6CB2\u6CB4\u6CC2\u6CC6\u6CCD\u6CCF\u6CD0\u6CD1\u6CD2\u6CD4\u6CD6"],["8fc7a1","\u6CDA\u6CDC\u6CE0\u6CE7\u6CE9\u6CEB\u6CEC\u6CEE\u6CF2\u6CF4\u6D04\u6D07\u6D0A\u6D0E\u6D0F\u6D11\u6D13\u6D1A\u6D26\u6D27\u6D28\u6C67\u6D2E\u6D2F\u6D31\u6D39\u6D3C\u6D3F\u6D57\u6D5E\u6D5F\u6D61\u6D65\u6D67\u6D6F\u6D70\u6D7C\u6D82\u6D87\u6D91\u6D92\u6D94\u6D96\u6D97\u6D98\u6DAA\u6DAC\u6DB4\u6DB7\u6DB9\u6DBD\u6DBF\u6DC4\u6DC8\u6DCA\u6DCE\u6DCF\u6DD6\u6DDB\u6DDD\u6DDF\u6DE0\u6DE2\u6DE5\u6DE9\u6DEF\u6DF0\u6DF4\u6DF6\u6DFC\u6E00\u6E04\u6E1E\u6E22\u6E27\u6E32\u6E36\u6E39\u6E3B\u6E3C\u6E44\u6E45\u6E48\u6E49\u6E4B\u6E4F\u6E51\u6E52\u6E53\u6E54\u6E57\u6E5C\u6E5D\u6E5E"],["8fc8a1","\u6E62\u6E63\u6E68\u6E73\u6E7B\u6E7D\u6E8D\u6E93\u6E99\u6EA0\u6EA7\u6EAD\u6EAE\u6EB1\u6EB3\u6EBB\u6EBF\u6EC0\u6EC1\u6EC3\u6EC7\u6EC8\u6ECA\u6ECD\u6ECE\u6ECF\u6EEB\u6EED\u6EEE\u6EF9\u6EFB\u6EFD\u6F04\u6F08\u6F0A\u6F0C\u6F0D\u6F16\u6F18\u6F1A\u6F1B\u6F26\u6F29\u6F2A\u6F2F\u6F30\u6F33\u6F36\u6F3B\u6F3C\u6F2D\u6F4F\u6F51\u6F52\u6F53\u6F57\u6F59\u6F5A\u6F5D\u6F5E\u6F61\u6F62\u6F68\u6F6C\u6F7D\u6F7E\u6F83\u6F87\u6F88\u6F8B\u6F8C\u6F8D\u6F90\u6F92\u6F93\u6F94\u6F96\u6F9A\u6F9F\u6FA0\u6FA5\u6FA6\u6FA7\u6FA8\u6FAE\u6FAF\u6FB0\u6FB5\u6FB6\u6FBC\u6FC5\u6FC7\u6FC8\u6FCA"],["8fc9a1","\u6FDA\u6FDE\u6FE8\u6FE9\u6FF0\u6FF5\u6FF9\u6FFC\u6FFD\u7000\u7005\u7006\u7007\u700D\u7017\u7020\u7023\u702F\u7034\u7037\u7039\u703C\u7043\u7044\u7048\u7049\u704A\u704B\u7054\u7055\u705D\u705E\u704E\u7064\u7065\u706C\u706E\u7075\u7076\u707E\u7081\u7085\u7086\u7094",4,"\u709B\u70A4\u70AB\u70B0\u70B1\u70B4\u70B7\u70CA\u70D1\u70D3\u70D4\u70D5\u70D6\u70D8\u70DC\u70E4\u70FA\u7103",4,"\u710B\u710C\u710F\u711E\u7120\u712B\u712D\u712F\u7130\u7131\u7138\u7141\u7145\u7146\u7147\u714A\u714B\u7150\u7152\u7157\u715A\u715C\u715E\u7160"],["8fcaa1","\u7168\u7179\u7180\u7185\u7187\u718C\u7192\u719A\u719B\u71A0\u71A2\u71AF\u71B0\u71B2\u71B3\u71BA\u71BF\u71C0\u71C1\u71C4\u71CB\u71CC\u71D3\u71D6\u71D9\u71DA\u71DC\u71F8\u71FE\u7200\u7207\u7208\u7209\u7213\u7217\u721A\u721D\u721F\u7224\u722B\u722F\u7234\u7238\u7239\u7241\u7242\u7243\u7245\u724E\u724F\u7250\u7253\u7255\u7256\u725A\u725C\u725E\u7260\u7263\u7268\u726B\u726E\u726F\u7271\u7277\u7278\u727B\u727C\u727F\u7284\u7289\u728D\u728E\u7293\u729B\u72A8\u72AD\u72AE\u72B1\u72B4\u72BE\u72C1\u72C7\u72C9\u72CC\u72D5\u72D6\u72D8\u72DF\u72E5\u72F3\u72F4\u72FA\u72FB"],["8fcba1","\u72FE\u7302\u7304\u7305\u7307\u730B\u730D\u7312\u7313\u7318\u7319\u731E\u7322\u7324\u7327\u7328\u732C\u7331\u7332\u7335\u733A\u733B\u733D\u7343\u734D\u7350\u7352\u7356\u7358\u735D\u735E\u735F\u7360\u7366\u7367\u7369\u736B\u736C\u736E\u736F\u7371\u7377\u7379\u737C\u7380\u7381\u7383\u7385\u7386\u738E\u7390\u7393\u7395\u7397\u7398\u739C\u739E\u739F\u73A0\u73A2\u73A5\u73A6\u73AA\u73AB\u73AD\u73B5\u73B7\u73B9\u73BC\u73BD\u73BF\u73C5\u73C6\u73C9\u73CB\u73CC\u73CF\u73D2\u73D3\u73D6\u73D9\u73DD\u73E1\u73E3\u73E6\u73E7\u73E9\u73F4\u73F5\u73F7\u73F9\u73FA\u73FB\u73FD"],["8fcca1","\u73FF\u7400\u7401\u7404\u7407\u740A\u7411\u741A\u741B\u7424\u7426\u7428",9,"\u7439\u7440\u7443\u7444\u7446\u7447\u744B\u744D\u7451\u7452\u7457\u745D\u7462\u7466\u7467\u7468\u746B\u746D\u746E\u7471\u7472\u7480\u7481\u7485\u7486\u7487\u7489\u748F\u7490\u7491\u7492\u7498\u7499\u749A\u749C\u749F\u74A0\u74A1\u74A3\u74A6\u74A8\u74A9\u74AA\u74AB\u74AE\u74AF\u74B1\u74B2\u74B5\u74B9\u74BB\u74BF\u74C8\u74C9\u74CC\u74D0\u74D3\u74D8\u74DA\u74DB\u74DE\u74DF\u74E4\u74E8\u74EA\u74EB\u74EF\u74F4\u74FA\u74FB\u74FC\u74FF\u7506"],["8fcda1","\u7512\u7516\u7517\u7520\u7521\u7524\u7527\u7529\u752A\u752F\u7536\u7539\u753D\u753E\u753F\u7540\u7543\u7547\u7548\u754E\u7550\u7552\u7557\u755E\u755F\u7561\u756F\u7571\u7579",5,"\u7581\u7585\u7590\u7592\u7593\u7595\u7599\u759C\u75A2\u75A4\u75B4\u75BA\u75BF\u75C0\u75C1\u75C4\u75C6\u75CC\u75CE\u75CF\u75D7\u75DC\u75DF\u75E0\u75E1\u75E4\u75E7\u75EC\u75EE\u75EF\u75F1\u75F9\u7600\u7602\u7603\u7604\u7607\u7608\u760A\u760C\u760F\u7612\u7613\u7615\u7616\u7619\u761B\u761C\u761D\u761E\u7623\u7625\u7626\u7629\u762D\u7632\u7633\u7635\u7638\u7639"],["8fcea1","\u763A\u763C\u764A\u7640\u7641\u7643\u7644\u7645\u7649\u764B\u7655\u7659\u765F\u7664\u7665\u766D\u766E\u766F\u7671\u7674\u7681\u7685\u768C\u768D\u7695\u769B\u769C\u769D\u769F\u76A0\u76A2",6,"\u76AA\u76AD\u76BD\u76C1\u76C5\u76C9\u76CB\u76CC\u76CE\u76D4\u76D9\u76E0\u76E6\u76E8\u76EC\u76F0\u76F1\u76F6\u76F9\u76FC\u7700\u7706\u770A\u770E\u7712\u7714\u7715\u7717\u7719\u771A\u771C\u7722\u7728\u772D\u772E\u772F\u7734\u7735\u7736\u7739\u773D\u773E\u7742\u7745\u7746\u774A\u774D\u774E\u774F\u7752\u7756\u7757\u775C\u775E\u775F\u7760\u7762"],["8fcfa1","\u7764\u7767\u776A\u776C\u7770\u7772\u7773\u7774\u777A\u777D\u7780\u7784\u778C\u778D\u7794\u7795\u7796\u779A\u779F\u77A2\u77A7\u77AA\u77AE\u77AF\u77B1\u77B5\u77BE\u77C3\u77C9\u77D1\u77D2\u77D5\u77D9\u77DE\u77DF\u77E0\u77E4\u77E6\u77EA\u77EC\u77F0\u77F1\u77F4\u77F8\u77FB\u7805\u7806\u7809\u780D\u780E\u7811\u781D\u7821\u7822\u7823\u782D\u782E\u7830\u7835\u7837\u7843\u7844\u7847\u7848\u784C\u784E\u7852\u785C\u785E\u7860\u7861\u7863\u7864\u7868\u786A\u786E\u787A\u787E\u788A\u788F\u7894\u7898\u78A1\u789D\u789E\u789F\u78A4\u78A8\u78AC\u78AD\u78B0\u78B1\u78B2\u78B3"],["8fd0a1","\u78BB\u78BD\u78BF\u78C7\u78C8\u78C9\u78CC\u78CE\u78D2\u78D3\u78D5\u78D6\u78E4\u78DB\u78DF\u78E0\u78E1\u78E6\u78EA\u78F2\u78F3\u7900\u78F6\u78F7\u78FA\u78FB\u78FF\u7906\u790C\u7910\u791A\u791C\u791E\u791F\u7920\u7925\u7927\u7929\u792D\u7931\u7934\u7935\u793B\u793D\u793F\u7944\u7945\u7946\u794A\u794B\u794F\u7951\u7954\u7958\u795B\u795C\u7967\u7969\u796B\u7972\u7979\u797B\u797C\u797E\u798B\u798C\u7991\u7993\u7994\u7995\u7996\u7998\u799B\u799C\u79A1\u79A8\u79A9\u79AB\u79AF\u79B1\u79B4\u79B8\u79BB\u79C2\u79C4\u79C7\u79C8\u79CA\u79CF\u79D4\u79D6\u79DA\u79DD\u79DE"],["8fd1a1","\u79E0\u79E2\u79E5\u79EA\u79EB\u79ED\u79F1\u79F8\u79FC\u7A02\u7A03\u7A07\u7A09\u7A0A\u7A0C\u7A11\u7A15\u7A1B\u7A1E\u7A21\u7A27\u7A2B\u7A2D\u7A2F\u7A30\u7A34\u7A35\u7A38\u7A39\u7A3A\u7A44\u7A45\u7A47\u7A48\u7A4C\u7A55\u7A56\u7A59\u7A5C\u7A5D\u7A5F\u7A60\u7A65\u7A67\u7A6A\u7A6D\u7A75\u7A78\u7A7E\u7A80\u7A82\u7A85\u7A86\u7A8A\u7A8B\u7A90\u7A91\u7A94\u7A9E\u7AA0\u7AA3\u7AAC\u7AB3\u7AB5\u7AB9\u7ABB\u7ABC\u7AC6\u7AC9\u7ACC\u7ACE\u7AD1\u7ADB\u7AE8\u7AE9\u7AEB\u7AEC\u7AF1\u7AF4\u7AFB\u7AFD\u7AFE\u7B07\u7B14\u7B1F\u7B23\u7B27\u7B29\u7B2A\u7B2B\u7B2D\u7B2E\u7B2F\u7B30"],["8fd2a1","\u7B31\u7B34\u7B3D\u7B3F\u7B40\u7B41\u7B47\u7B4E\u7B55\u7B60\u7B64\u7B66\u7B69\u7B6A\u7B6D\u7B6F\u7B72\u7B73\u7B77\u7B84\u7B89\u7B8E\u7B90\u7B91\u7B96\u7B9B\u7B9E\u7BA0\u7BA5\u7BAC\u7BAF\u7BB0\u7BB2\u7BB5\u7BB6\u7BBA\u7BBB\u7BBC\u7BBD\u7BC2\u7BC5\u7BC8\u7BCA\u7BD4\u7BD6\u7BD7\u7BD9\u7BDA\u7BDB\u7BE8\u7BEA\u7BF2\u7BF4\u7BF5\u7BF8\u7BF9\u7BFA\u7BFC\u7BFE\u7C01\u7C02\u7C03\u7C04\u7C06\u7C09\u7C0B\u7C0C\u7C0E\u7C0F\u7C19\u7C1B\u7C20\u7C25\u7C26\u7C28\u7C2C\u7C31\u7C33\u7C34\u7C36\u7C39\u7C3A\u7C46\u7C4A\u7C55\u7C51\u7C52\u7C53\u7C59",5],["8fd3a1","\u7C61\u7C63\u7C67\u7C69\u7C6D\u7C6E\u7C70\u7C72\u7C79\u7C7C\u7C7D\u7C86\u7C87\u7C8F\u7C94\u7C9E\u7CA0\u7CA6\u7CB0\u7CB6\u7CB7\u7CBA\u7CBB\u7CBC\u7CBF\u7CC4\u7CC7\u7CC8\u7CC9\u7CCD\u7CCF\u7CD3\u7CD4\u7CD5\u7CD7\u7CD9\u7CDA\u7CDD\u7CE6\u7CE9\u7CEB\u7CF5\u7D03\u7D07\u7D08\u7D09\u7D0F\u7D11\u7D12\u7D13\u7D16\u7D1D\u7D1E\u7D23\u7D26\u7D2A\u7D2D\u7D31\u7D3C\u7D3D\u7D3E\u7D40\u7D41\u7D47\u7D48\u7D4D\u7D51\u7D53\u7D57\u7D59\u7D5A\u7D5C\u7D5D\u7D65\u7D67\u7D6A\u7D70\u7D78\u7D7A\u7D7B\u7D7F\u7D81\u7D82\u7D83\u7D85\u7D86\u7D88\u7D8B\u7D8C\u7D8D\u7D91\u7D96\u7D97\u7D9D"],["8fd4a1","\u7D9E\u7DA6\u7DA7\u7DAA\u7DB3\u7DB6\u7DB7\u7DB9\u7DC2",4,"\u7DCC\u7DCD\u7DCE\u7DD7\u7DD9\u7E00\u7DE2\u7DE5\u7DE6\u7DEA\u7DEB\u7DED\u7DF1\u7DF5\u7DF6\u7DF9\u7DFA\u7E08\u7E10\u7E11\u7E15\u7E17\u7E1C\u7E1D\u7E20\u7E27\u7E28\u7E2C\u7E2D\u7E2F\u7E33\u7E36\u7E3F\u7E44\u7E45\u7E47\u7E4E\u7E50\u7E52\u7E58\u7E5F\u7E61\u7E62\u7E65\u7E6B\u7E6E\u7E6F\u7E73\u7E78\u7E7E\u7E81\u7E86\u7E87\u7E8A\u7E8D\u7E91\u7E95\u7E98\u7E9A\u7E9D\u7E9E\u7F3C\u7F3B\u7F3D\u7F3E\u7F3F\u7F43\u7F44\u7F47\u7F4F\u7F52\u7F53\u7F5B\u7F5C\u7F5D\u7F61\u7F63\u7F64\u7F65\u7F66\u7F6D"],["8fd5a1","\u7F71\u7F7D\u7F7E\u7F7F\u7F80\u7F8B\u7F8D\u7F8F\u7F90\u7F91\u7F96\u7F97\u7F9C\u7FA1\u7FA2\u7FA6\u7FAA\u7FAD\u7FB4\u7FBC\u7FBF\u7FC0\u7FC3\u7FC8\u7FCE\u7FCF\u7FDB\u7FDF\u7FE3\u7FE5\u7FE8\u7FEC\u7FEE\u7FEF\u7FF2\u7FFA\u7FFD\u7FFE\u7FFF\u8007\u8008\u800A\u800D\u800E\u800F\u8011\u8013\u8014\u8016\u801D\u801E\u801F\u8020\u8024\u8026\u802C\u802E\u8030\u8034\u8035\u8037\u8039\u803A\u803C\u803E\u8040\u8044\u8060\u8064\u8066\u806D\u8071\u8075\u8081\u8088\u808E\u809C\u809E\u80A6\u80A7\u80AB\u80B8\u80B9\u80C8\u80CD\u80CF\u80D2\u80D4\u80D5\u80D7\u80D8\u80E0\u80ED\u80EE"],["8fd6a1","\u80F0\u80F2\u80F3\u80F6\u80F9\u80FA\u80FE\u8103\u810B\u8116\u8117\u8118\u811C\u811E\u8120\u8124\u8127\u812C\u8130\u8135\u813A\u813C\u8145\u8147\u814A\u814C\u8152\u8157\u8160\u8161\u8167\u8168\u8169\u816D\u816F\u8177\u8181\u8190\u8184\u8185\u8186\u818B\u818E\u8196\u8198\u819B\u819E\u81A2\u81AE\u81B2\u81B4\u81BB\u81CB\u81C3\u81C5\u81CA\u81CE\u81CF\u81D5\u81D7\u81DB\u81DD\u81DE\u81E1\u81E4\u81EB\u81EC\u81F0\u81F1\u81F2\u81F5\u81F6\u81F8\u81F9\u81FD\u81FF\u8200\u8203\u820F\u8213\u8214\u8219\u821A\u821D\u8221\u8222\u8228\u8232\u8234\u823A\u8243\u8244\u8245\u8246"],["8fd7a1","\u824B\u824E\u824F\u8251\u8256\u825C\u8260\u8263\u8267\u826D\u8274\u827B\u827D\u827F\u8280\u8281\u8283\u8284\u8287\u8289\u828A\u828E\u8291\u8294\u8296\u8298\u829A\u829B\u82A0\u82A1\u82A3\u82A4\u82A7\u82A8\u82A9\u82AA\u82AE\u82B0\u82B2\u82B4\u82B7\u82BA\u82BC\u82BE\u82BF\u82C6\u82D0\u82D5\u82DA\u82E0\u82E2\u82E4\u82E8\u82EA\u82ED\u82EF\u82F6\u82F7\u82FD\u82FE\u8300\u8301\u8307\u8308\u830A\u830B\u8354\u831B\u831D\u831E\u831F\u8321\u8322\u832C\u832D\u832E\u8330\u8333\u8337\u833A\u833C\u833D\u8342\u8343\u8344\u8347\u834D\u834E\u8351\u8355\u8356\u8357\u8370\u8378"],["8fd8a1","\u837D\u837F\u8380\u8382\u8384\u8386\u838D\u8392\u8394\u8395\u8398\u8399\u839B\u839C\u839D\u83A6\u83A7\u83A9\u83AC\u83BE\u83BF\u83C0\u83C7\u83C9\u83CF\u83D0\u83D1\u83D4\u83DD\u8353\u83E8\u83EA\u83F6\u83F8\u83F9\u83FC\u8401\u8406\u840A\u840F\u8411\u8415\u8419\u83AD\u842F\u8439\u8445\u8447\u8448\u844A\u844D\u844F\u8451\u8452\u8456\u8458\u8459\u845A\u845C\u8460\u8464\u8465\u8467\u846A\u8470\u8473\u8474\u8476\u8478\u847C\u847D\u8481\u8485\u8492\u8493\u8495\u849E\u84A6\u84A8\u84A9\u84AA\u84AF\u84B1\u84B4\u84BA\u84BD\u84BE\u84C0\u84C2\u84C7\u84C8\u84CC\u84CF\u84D3"],["8fd9a1","\u84DC\u84E7\u84EA\u84EF\u84F0\u84F1\u84F2\u84F7\u8532\u84FA\u84FB\u84FD\u8502\u8503\u8507\u850C\u850E\u8510\u851C\u851E\u8522\u8523\u8524\u8525\u8527\u852A\u852B\u852F\u8533\u8534\u8536\u853F\u8546\u854F",4,"\u8556\u8559\u855C",6,"\u8564\u856B\u856F\u8579\u857A\u857B\u857D\u857F\u8581\u8585\u8586\u8589\u858B\u858C\u858F\u8593\u8598\u859D\u859F\u85A0\u85A2\u85A5\u85A7\u85B4\u85B6\u85B7\u85B8\u85BC\u85BD\u85BE\u85BF\u85C2\u85C7\u85CA\u85CB\u85CE\u85AD\u85D8\u85DA\u85DF\u85E0\u85E6\u85E8\u85ED\u85F3\u85F6\u85FC"],["8fdaa1","\u85FF\u8600\u8604\u8605\u860D\u860E\u8610\u8611\u8612\u8618\u8619\u861B\u861E\u8621\u8627\u8629\u8636\u8638\u863A\u863C\u863D\u8640\u8642\u8646\u8652\u8653\u8656\u8657\u8658\u8659\u865D\u8660",4,"\u8669\u866C\u866F\u8675\u8676\u8677\u867A\u868D\u8691\u8696\u8698\u869A\u869C\u86A1\u86A6\u86A7\u86A8\u86AD\u86B1\u86B3\u86B4\u86B5\u86B7\u86B8\u86B9\u86BF\u86C0\u86C1\u86C3\u86C5\u86D1\u86D2\u86D5\u86D7\u86DA\u86DC\u86E0\u86E3\u86E5\u86E7\u8688\u86FA\u86FC\u86FD\u8704\u8705\u8707\u870B\u870E\u870F\u8710\u8713\u8714\u8719\u871E\u871F\u8721\u8723"],["8fdba1","\u8728\u872E\u872F\u8731\u8732\u8739\u873A\u873C\u873D\u873E\u8740\u8743\u8745\u874D\u8758\u875D\u8761\u8764\u8765\u876F\u8771\u8772\u877B\u8783",6,"\u878B\u878C\u8790\u8793\u8795\u8797\u8798\u8799\u879E\u87A0\u87A3\u87A7\u87AC\u87AD\u87AE\u87B1\u87B5\u87BE\u87BF\u87C1\u87C8\u87C9\u87CA\u87CE\u87D5\u87D6\u87D9\u87DA\u87DC\u87DF\u87E2\u87E3\u87E4\u87EA\u87EB\u87ED\u87F1\u87F3\u87F8\u87FA\u87FF\u8801\u8803\u8806\u8809\u880A\u880B\u8810\u8819\u8812\u8813\u8814\u8818\u881A\u881B\u881C\u881E\u881F\u8828\u882D\u882E\u8830\u8832\u8835"],["8fdca1","\u883A\u883C\u8841\u8843\u8845\u8848\u8849\u884A\u884B\u884E\u8851\u8855\u8856\u8858\u885A\u885C\u885F\u8860\u8864\u8869\u8871\u8879\u887B\u8880\u8898\u889A\u889B\u889C\u889F\u88A0\u88A8\u88AA\u88BA\u88BD\u88BE\u88C0\u88CA",4,"\u88D1\u88D2\u88D3\u88DB\u88DE\u88E7\u88EF\u88F0\u88F1\u88F5\u88F7\u8901\u8906\u890D\u890E\u890F\u8915\u8916\u8918\u8919\u891A\u891C\u8920\u8926\u8927\u8928\u8930\u8931\u8932\u8935\u8939\u893A\u893E\u8940\u8942\u8945\u8946\u8949\u894F\u8952\u8957\u895A\u895B\u895C\u8961\u8962\u8963\u896B\u896E\u8970\u8973\u8975\u897A"],["8fdda1","\u897B\u897C\u897D\u8989\u898D\u8990\u8994\u8995\u899B\u899C\u899F\u89A0\u89A5\u89B0\u89B4\u89B5\u89B6\u89B7\u89BC\u89D4",4,"\u89E5\u89E9\u89EB\u89ED\u89F1\u89F3\u89F6\u89F9\u89FD\u89FF\u8A04\u8A05\u8A07\u8A0F\u8A11\u8A12\u8A14\u8A15\u8A1E\u8A20\u8A22\u8A24\u8A26\u8A2B\u8A2C\u8A2F\u8A35\u8A37\u8A3D\u8A3E\u8A40\u8A43\u8A45\u8A47\u8A49\u8A4D\u8A4E\u8A53\u8A56\u8A57\u8A58\u8A5C\u8A5D\u8A61\u8A65\u8A67\u8A75\u8A76\u8A77\u8A79\u8A7A\u8A7B\u8A7E\u8A7F\u8A80\u8A83\u8A86\u8A8B\u8A8F\u8A90\u8A92\u8A96\u8A97\u8A99\u8A9F\u8AA7\u8AA9\u8AAE\u8AAF\u8AB3"],["8fdea1","\u8AB6\u8AB7\u8ABB\u8ABE\u8AC3\u8AC6\u8AC8\u8AC9\u8ACA\u8AD1\u8AD3\u8AD4\u8AD5\u8AD7\u8ADD\u8ADF\u8AEC\u8AF0\u8AF4\u8AF5\u8AF6\u8AFC\u8AFF\u8B05\u8B06\u8B0B\u8B11\u8B1C\u8B1E\u8B1F\u8B0A\u8B2D\u8B30\u8B37\u8B3C\u8B42",4,"\u8B48\u8B52\u8B53\u8B54\u8B59\u8B4D\u8B5E\u8B63\u8B6D\u8B76\u8B78\u8B79\u8B7C\u8B7E\u8B81\u8B84\u8B85\u8B8B\u8B8D\u8B8F\u8B94\u8B95\u8B9C\u8B9E\u8B9F\u8C38\u8C39\u8C3D\u8C3E\u8C45\u8C47\u8C49\u8C4B\u8C4F\u8C51\u8C53\u8C54\u8C57\u8C58\u8C5B\u8C5D\u8C59\u8C63\u8C64\u8C66\u8C68\u8C69\u8C6D\u8C73\u8C75\u8C76\u8C7B\u8C7E\u8C86"],["8fdfa1","\u8C87\u8C8B\u8C90\u8C92\u8C93\u8C99\u8C9B\u8C9C\u8CA4\u8CB9\u8CBA\u8CC5\u8CC6\u8CC9\u8CCB\u8CCF\u8CD6\u8CD5\u8CD9\u8CDD\u8CE1\u8CE8\u8CEC\u8CEF\u8CF0\u8CF2\u8CF5\u8CF7\u8CF8\u8CFE\u8CFF\u8D01\u8D03\u8D09\u8D12\u8D17\u8D1B\u8D65\u8D69\u8D6C\u8D6E\u8D7F\u8D82\u8D84\u8D88\u8D8D\u8D90\u8D91\u8D95\u8D9E\u8D9F\u8DA0\u8DA6\u8DAB\u8DAC\u8DAF\u8DB2\u8DB5\u8DB7\u8DB9\u8DBB\u8DC0\u8DC5\u8DC6\u8DC7\u8DC8\u8DCA\u8DCE\u8DD1\u8DD4\u8DD5\u8DD7\u8DD9\u8DE4\u8DE5\u8DE7\u8DEC\u8DF0\u8DBC\u8DF1\u8DF2\u8DF4\u8DFD\u8E01\u8E04\u8E05\u8E06\u8E0B\u8E11\u8E14\u8E16\u8E20\u8E21\u8E22"],["8fe0a1","\u8E23\u8E26\u8E27\u8E31\u8E33\u8E36\u8E37\u8E38\u8E39\u8E3D\u8E40\u8E41\u8E4B\u8E4D\u8E4E\u8E4F\u8E54\u8E5B\u8E5C\u8E5D\u8E5E\u8E61\u8E62\u8E69\u8E6C\u8E6D\u8E6F\u8E70\u8E71\u8E79\u8E7A\u8E7B\u8E82\u8E83\u8E89\u8E90\u8E92\u8E95\u8E9A\u8E9B\u8E9D\u8E9E\u8EA2\u8EA7\u8EA9\u8EAD\u8EAE\u8EB3\u8EB5\u8EBA\u8EBB\u8EC0\u8EC1\u8EC3\u8EC4\u8EC7\u8ECF\u8ED1\u8ED4\u8EDC\u8EE8\u8EEE\u8EF0\u8EF1\u8EF7\u8EF9\u8EFA\u8EED\u8F00\u8F02\u8F07\u8F08\u8F0F\u8F10\u8F16\u8F17\u8F18\u8F1E\u8F20\u8F21\u8F23\u8F25\u8F27\u8F28\u8F2C\u8F2D\u8F2E\u8F34\u8F35\u8F36\u8F37\u8F3A\u8F40\u8F41"],["8fe1a1","\u8F43\u8F47\u8F4F\u8F51",4,"\u8F58\u8F5D\u8F5E\u8F65\u8F9D\u8FA0\u8FA1\u8FA4\u8FA5\u8FA6\u8FB5\u8FB6\u8FB8\u8FBE\u8FC0\u8FC1\u8FC6\u8FCA\u8FCB\u8FCD\u8FD0\u8FD2\u8FD3\u8FD5\u8FE0\u8FE3\u8FE4\u8FE8\u8FEE\u8FF1\u8FF5\u8FF6\u8FFB\u8FFE\u9002\u9004\u9008\u900C\u9018\u901B\u9028\u9029\u902F\u902A\u902C\u902D\u9033\u9034\u9037\u903F\u9043\u9044\u904C\u905B\u905D\u9062\u9066\u9067\u906C\u9070\u9074\u9079\u9085\u9088\u908B\u908C\u908E\u9090\u9095\u9097\u9098\u9099\u909B\u90A0\u90A1\u90A2\u90A5\u90B0\u90B2\u90B3\u90B4\u90B6\u90BD\u90CC\u90BE\u90C3"],["8fe2a1","\u90C4\u90C5\u90C7\u90C8\u90D5\u90D7\u90D8\u90D9\u90DC\u90DD\u90DF\u90E5\u90D2\u90F6\u90EB\u90EF\u90F0\u90F4\u90FE\u90FF\u9100\u9104\u9105\u9106\u9108\u910D\u9110\u9114\u9116\u9117\u9118\u911A\u911C\u911E\u9120\u9125\u9122\u9123\u9127\u9129\u912E\u912F\u9131\u9134\u9136\u9137\u9139\u913A\u913C\u913D\u9143\u9147\u9148\u914F\u9153\u9157\u9159\u915A\u915B\u9161\u9164\u9167\u916D\u9174\u9179\u917A\u917B\u9181\u9183\u9185\u9186\u918A\u918E\u9191\u9193\u9194\u9195\u9198\u919E\u91A1\u91A6\u91A8\u91AC\u91AD\u91AE\u91B0\u91B1\u91B2\u91B3\u91B6\u91BB\u91BC\u91BD\u91BF"],["8fe3a1","\u91C2\u91C3\u91C5\u91D3\u91D4\u91D7\u91D9\u91DA\u91DE\u91E4\u91E5\u91E9\u91EA\u91EC",5,"\u91F7\u91F9\u91FB\u91FD\u9200\u9201\u9204\u9205\u9206\u9207\u9209\u920A\u920C\u9210\u9212\u9213\u9216\u9218\u921C\u921D\u9223\u9224\u9225\u9226\u9228\u922E\u922F\u9230\u9233\u9235\u9236\u9238\u9239\u923A\u923C\u923E\u9240\u9242\u9243\u9246\u9247\u924A\u924D\u924E\u924F\u9251\u9258\u9259\u925C\u925D\u9260\u9261\u9265\u9267\u9268\u9269\u926E\u926F\u9270\u9275",4,"\u927B\u927C\u927D\u927F\u9288\u9289\u928A\u928D\u928E\u9292\u9297"],["8fe4a1","\u9299\u929F\u92A0\u92A4\u92A5\u92A7\u92A8\u92AB\u92AF\u92B2\u92B6\u92B8\u92BA\u92BB\u92BC\u92BD\u92BF",4,"\u92C5\u92C6\u92C7\u92C8\u92CB\u92CC\u92CD\u92CE\u92D0\u92D3\u92D5\u92D7\u92D8\u92D9\u92DC\u92DD\u92DF\u92E0\u92E1\u92E3\u92E5\u92E7\u92E8\u92EC\u92EE\u92F0\u92F9\u92FB\u92FF\u9300\u9302\u9308\u930D\u9311\u9314\u9315\u931C\u931D\u931E\u931F\u9321\u9324\u9325\u9327\u9329\u932A\u9333\u9334\u9336\u9337\u9347\u9348\u9349\u9350\u9351\u9352\u9355\u9357\u9358\u935A\u935E\u9364\u9365\u9367\u9369\u936A\u936D\u936F\u9370\u9371\u9373\u9374\u9376"],["8fe5a1","\u937A\u937D\u937F\u9380\u9381\u9382\u9388\u938A\u938B\u938D\u938F\u9392\u9395\u9398\u939B\u939E\u93A1\u93A3\u93A4\u93A6\u93A8\u93AB\u93B4\u93B5\u93B6\u93BA\u93A9\u93C1\u93C4\u93C5\u93C6\u93C7\u93C9",4,"\u93D3\u93D9\u93DC\u93DE\u93DF\u93E2\u93E6\u93E7\u93F9\u93F7\u93F8\u93FA\u93FB\u93FD\u9401\u9402\u9404\u9408\u9409\u940D\u940E\u940F\u9415\u9416\u9417\u941F\u942E\u942F\u9431\u9432\u9433\u9434\u943B\u943F\u943D\u9443\u9445\u9448\u944A\u944C\u9455\u9459\u945C\u945F\u9461\u9463\u9468\u946B\u946D\u946E\u946F\u9471\u9472\u9484\u9483\u9578\u9579"],["8fe6a1","\u957E\u9584\u9588\u958C\u958D\u958E\u959D\u959E\u959F\u95A1\u95A6\u95A9\u95AB\u95AC\u95B4\u95B6\u95BA\u95BD\u95BF\u95C6\u95C8\u95C9\u95CB\u95D0\u95D1\u95D2\u95D3\u95D9\u95DA\u95DD\u95DE\u95DF\u95E0\u95E4\u95E6\u961D\u961E\u9622\u9624\u9625\u9626\u962C\u9631\u9633\u9637\u9638\u9639\u963A\u963C\u963D\u9641\u9652\u9654\u9656\u9657\u9658\u9661\u966E\u9674\u967B\u967C\u967E\u967F\u9681\u9682\u9683\u9684\u9689\u9691\u9696\u969A\u969D\u969F\u96A4\u96A5\u96A6\u96A9\u96AE\u96AF\u96B3\u96BA\u96CA\u96D2\u5DB2\u96D8\u96DA\u96DD\u96DE\u96DF\u96E9\u96EF\u96F1\u96FA\u9702"],["8fe7a1","\u9703\u9705\u9709\u971A\u971B\u971D\u9721\u9722\u9723\u9728\u9731\u9733\u9741\u9743\u974A\u974E\u974F\u9755\u9757\u9758\u975A\u975B\u9763\u9767\u976A\u976E\u9773\u9776\u9777\u9778\u977B\u977D\u977F\u9780\u9789\u9795\u9796\u9797\u9799\u979A\u979E\u979F\u97A2\u97AC\u97AE\u97B1\u97B2\u97B5\u97B6\u97B8\u97B9\u97BA\u97BC\u97BE\u97BF\u97C1\u97C4\u97C5\u97C7\u97C9\u97CA\u97CC\u97CD\u97CE\u97D0\u97D1\u97D4\u97D7\u97D8\u97D9\u97DD\u97DE\u97E0\u97DB\u97E1\u97E4\u97EF\u97F1\u97F4\u97F7\u97F8\u97FA\u9807\u980A\u9819\u980D\u980E\u9814\u9816\u981C\u981E\u9820\u9823\u9826"],["8fe8a1","\u982B\u982E\u982F\u9830\u9832\u9833\u9835\u9825\u983E\u9844\u9847\u984A\u9851\u9852\u9853\u9856\u9857\u9859\u985A\u9862\u9863\u9865\u9866\u986A\u986C\u98AB\u98AD\u98AE\u98B0\u98B4\u98B7\u98B8\u98BA\u98BB\u98BF\u98C2\u98C5\u98C8\u98CC\u98E1\u98E3\u98E5\u98E6\u98E7\u98EA\u98F3\u98F6\u9902\u9907\u9908\u9911\u9915\u9916\u9917\u991A\u991B\u991C\u991F\u9922\u9926\u9927\u992B\u9931",4,"\u9939\u993A\u993B\u993C\u9940\u9941\u9946\u9947\u9948\u994D\u994E\u9954\u9958\u9959\u995B\u995C\u995E\u995F\u9960\u999B\u999D\u999F\u99A6\u99B0\u99B1\u99B2\u99B5"],["8fe9a1","\u99B9\u99BA\u99BD\u99BF\u99C3\u99C9\u99D3\u99D4\u99D9\u99DA\u99DC\u99DE\u99E7\u99EA\u99EB\u99EC\u99F0\u99F4\u99F5\u99F9\u99FD\u99FE\u9A02\u9A03\u9A04\u9A0B\u9A0C\u9A10\u9A11\u9A16\u9A1E\u9A20\u9A22\u9A23\u9A24\u9A27\u9A2D\u9A2E\u9A33\u9A35\u9A36\u9A38\u9A47\u9A41\u9A44\u9A4A\u9A4B\u9A4C\u9A4E\u9A51\u9A54\u9A56\u9A5D\u9AAA\u9AAC\u9AAE\u9AAF\u9AB2\u9AB4\u9AB5\u9AB6\u9AB9\u9ABB\u9ABE\u9ABF\u9AC1\u9AC3\u9AC6\u9AC8\u9ACE\u9AD0\u9AD2\u9AD5\u9AD6\u9AD7\u9ADB\u9ADC\u9AE0\u9AE4\u9AE5\u9AE7\u9AE9\u9AEC\u9AF2\u9AF3\u9AF5\u9AF9\u9AFA\u9AFD\u9AFF",4],["8feaa1","\u9B04\u9B05\u9B08\u9B09\u9B0B\u9B0C\u9B0D\u9B0E\u9B10\u9B12\u9B16\u9B19\u9B1B\u9B1C\u9B20\u9B26\u9B2B\u9B2D\u9B33\u9B34\u9B35\u9B37\u9B39\u9B3A\u9B3D\u9B48\u9B4B\u9B4C\u9B55\u9B56\u9B57\u9B5B\u9B5E\u9B61\u9B63\u9B65\u9B66\u9B68\u9B6A",4,"\u9B73\u9B75\u9B77\u9B78\u9B79\u9B7F\u9B80\u9B84\u9B85\u9B86\u9B87\u9B89\u9B8A\u9B8B\u9B8D\u9B8F\u9B90\u9B94\u9B9A\u9B9D\u9B9E\u9BA6\u9BA7\u9BA9\u9BAC\u9BB0\u9BB1\u9BB2\u9BB7\u9BB8\u9BBB\u9BBC\u9BBE\u9BBF\u9BC1\u9BC7\u9BC8\u9BCE\u9BD0\u9BD7\u9BD8\u9BDD\u9BDF\u9BE5\u9BE7\u9BEA\u9BEB\u9BEF\u9BF3\u9BF7\u9BF8"],["8feba1","\u9BF9\u9BFA\u9BFD\u9BFF\u9C00\u9C02\u9C0B\u9C0F\u9C11\u9C16\u9C18\u9C19\u9C1A\u9C1C\u9C1E\u9C22\u9C23\u9C26",4,"\u9C31\u9C35\u9C36\u9C37\u9C3D\u9C41\u9C43\u9C44\u9C45\u9C49\u9C4A\u9C4E\u9C4F\u9C50\u9C53\u9C54\u9C56\u9C58\u9C5B\u9C5D\u9C5E\u9C5F\u9C63\u9C69\u9C6A\u9C5C\u9C6B\u9C68\u9C6E\u9C70\u9C72\u9C75\u9C77\u9C7B\u9CE6\u9CF2\u9CF7\u9CF9\u9D0B\u9D02\u9D11\u9D17\u9D18\u9D1C\u9D1D\u9D1E\u9D2F\u9D30\u9D32\u9D33\u9D34\u9D3A\u9D3C\u9D45\u9D3D\u9D42\u9D43\u9D47\u9D4A\u9D53\u9D54\u9D5F\u9D63\u9D62\u9D65\u9D69\u9D6A\u9D6B\u9D70\u9D76\u9D77\u9D7B"],["8feca1","\u9D7C\u9D7E\u9D83\u9D84\u9D86\u9D8A\u9D8D\u9D8E\u9D92\u9D93\u9D95\u9D96\u9D97\u9D98\u9DA1\u9DAA\u9DAC\u9DAE\u9DB1\u9DB5\u9DB9\u9DBC\u9DBF\u9DC3\u9DC7\u9DC9\u9DCA\u9DD4\u9DD5\u9DD6\u9DD7\u9DDA\u9DDE\u9DDF\u9DE0\u9DE5\u9DE7\u9DE9\u9DEB\u9DEE\u9DF0\u9DF3\u9DF4\u9DFE\u9E0A\u9E02\u9E07\u9E0E\u9E10\u9E11\u9E12\u9E15\u9E16\u9E19\u9E1C\u9E1D\u9E7A\u9E7B\u9E7C\u9E80\u9E82\u9E83\u9E84\u9E85\u9E87\u9E8E\u9E8F\u9E96\u9E98\u9E9B\u9E9E\u9EA4\u9EA8\u9EAC\u9EAE\u9EAF\u9EB0\u9EB3\u9EB4\u9EB5\u9EC6\u9EC8\u9ECB\u9ED5\u9EDF\u9EE4\u9EE7\u9EEC\u9EED\u9EEE\u9EF0\u9EF1\u9EF2\u9EF5"],["8feda1","\u9EF8\u9EFF\u9F02\u9F03\u9F09\u9F0F\u9F10\u9F11\u9F12\u9F14\u9F16\u9F17\u9F19\u9F1A\u9F1B\u9F1F\u9F22\u9F26\u9F2A\u9F2B\u9F2F\u9F31\u9F32\u9F34\u9F37\u9F39\u9F3A\u9F3C\u9F3D\u9F3F\u9F41\u9F43",4,"\u9F53\u9F55\u9F56\u9F57\u9F58\u9F5A\u9F5D\u9F5E\u9F68\u9F69\u9F6D",4,"\u9F73\u9F75\u9F7A\u9F7D\u9F8F\u9F90\u9F91\u9F92\u9F94\u9F96\u9F97\u9F9E\u9FA1\u9FA2\u9FA3\u9FA5"]]});var hf=P((VW,GC)=>{GC.exports=[["0","\0",127,"\u20AC"],["8140","\u4E02\u4E04\u4E05\u4E06\u4E0F\u4E12\u4E17\u4E1F\u4E20\u4E21\u4E23\u4E26\u4E29\u4E2E\u4E2F\u4E31\u4E33\u4E35\u4E37\u4E3C\u4E40\u4E41\u4E42\u4E44\u4E46\u4E4A\u4E51\u4E55\u4E57\u4E5A\u4E5B\u4E62\u4E63\u4E64\u4E65\u4E67\u4E68\u4E6A",5,"\u4E72\u4E74",9,"\u4E7F",6,"\u4E87\u4E8A"],["8180","\u4E90\u4E96\u4E97\u4E99\u4E9C\u4E9D\u4E9E\u4EA3\u4EAA\u4EAF\u4EB0\u4EB1\u4EB4\u4EB6\u4EB7\u4EB8\u4EB9\u4EBC\u4EBD\u4EBE\u4EC8\u4ECC\u4ECF\u4ED0\u4ED2\u4EDA\u4EDB\u4EDC\u4EE0\u4EE2\u4EE6\u4EE7\u4EE9\u4EED\u4EEE\u4EEF\u4EF1\u4EF4\u4EF8\u4EF9\u4EFA\u4EFC\u4EFE\u4F00\u4F02",6,"\u4F0B\u4F0C\u4F12",4,"\u4F1C\u4F1D\u4F21\u4F23\u4F28\u4F29\u4F2C\u4F2D\u4F2E\u4F31\u4F33\u4F35\u4F37\u4F39\u4F3B\u4F3E",4,"\u4F44\u4F45\u4F47",5,"\u4F52\u4F54\u4F56\u4F61\u4F62\u4F66\u4F68\u4F6A\u4F6B\u4F6D\u4F6E\u4F71\u4F72\u4F75\u4F77\u4F78\u4F79\u4F7A\u4F7D\u4F80\u4F81\u4F82\u4F85\u4F86\u4F87\u4F8A\u4F8C\u4F8E\u4F90\u4F92\u4F93\u4F95\u4F96\u4F98\u4F99\u4F9A\u4F9C\u4F9E\u4F9F\u4FA1\u4FA2"],["8240","\u4FA4\u4FAB\u4FAD\u4FB0",4,"\u4FB6",8,"\u4FC0\u4FC1\u4FC2\u4FC6\u4FC7\u4FC8\u4FC9\u4FCB\u4FCC\u4FCD\u4FD2",4,"\u4FD9\u4FDB\u4FE0\u4FE2\u4FE4\u4FE5\u4FE7\u4FEB\u4FEC\u4FF0\u4FF2\u4FF4\u4FF5\u4FF6\u4FF7\u4FF9\u4FFB\u4FFC\u4FFD\u4FFF",11],["8280","\u500B\u500E\u5010\u5011\u5013\u5015\u5016\u5017\u501B\u501D\u501E\u5020\u5022\u5023\u5024\u5027\u502B\u502F",10,"\u503B\u503D\u503F\u5040\u5041\u5042\u5044\u5045\u5046\u5049\u504A\u504B\u504D\u5050",4,"\u5056\u5057\u5058\u5059\u505B\u505D",7,"\u5066",5,"\u506D",8,"\u5078\u5079\u507A\u507C\u507D\u5081\u5082\u5083\u5084\u5086\u5087\u5089\u508A\u508B\u508C\u508E",20,"\u50A4\u50A6\u50AA\u50AB\u50AD",4,"\u50B3",6,"\u50BC"],["8340","\u50BD",17,"\u50D0",5,"\u50D7\u50D8\u50D9\u50DB",10,"\u50E8\u50E9\u50EA\u50EB\u50EF\u50F0\u50F1\u50F2\u50F4\u50F6",4,"\u50FC",9,"\u5108"],["8380","\u5109\u510A\u510C",5,"\u5113",13,"\u5122",28,"\u5142\u5147\u514A\u514C\u514E\u514F\u5150\u5152\u5153\u5157\u5158\u5159\u515B\u515D",4,"\u5163\u5164\u5166\u5167\u5169\u516A\u516F\u5172\u517A\u517E\u517F\u5183\u5184\u5186\u5187\u518A\u518B\u518E\u518F\u5190\u5191\u5193\u5194\u5198\u519A\u519D\u519E\u519F\u51A1\u51A3\u51A6",4,"\u51AD\u51AE\u51B4\u51B8\u51B9\u51BA\u51BE\u51BF\u51C1\u51C2\u51C3\u51C5\u51C8\u51CA\u51CD\u51CE\u51D0\u51D2",5],["8440","\u51D8\u51D9\u51DA\u51DC\u51DE\u51DF\u51E2\u51E3\u51E5",5,"\u51EC\u51EE\u51F1\u51F2\u51F4\u51F7\u51FE\u5204\u5205\u5209\u520B\u520C\u520F\u5210\u5213\u5214\u5215\u521C\u521E\u521F\u5221\u5222\u5223\u5225\u5226\u5227\u522A\u522C\u522F\u5231\u5232\u5234\u5235\u523C\u523E\u5244",5,"\u524B\u524E\u524F\u5252\u5253\u5255\u5257\u5258"],["8480","\u5259\u525A\u525B\u525D\u525F\u5260\u5262\u5263\u5264\u5266\u5268\u526B\u526C\u526D\u526E\u5270\u5271\u5273",9,"\u527E\u5280\u5283",4,"\u5289",6,"\u5291\u5292\u5294",6,"\u529C\u52A4\u52A5\u52A6\u52A7\u52AE\u52AF\u52B0\u52B4",9,"\u52C0\u52C1\u52C2\u52C4\u52C5\u52C6\u52C8\u52CA\u52CC\u52CD\u52CE\u52CF\u52D1\u52D3\u52D4\u52D5\u52D7\u52D9",5,"\u52E0\u52E1\u52E2\u52E3\u52E5",10,"\u52F1",7,"\u52FB\u52FC\u52FD\u5301\u5302\u5303\u5304\u5307\u5309\u530A\u530B\u530C\u530E"],["8540","\u5311\u5312\u5313\u5314\u5318\u531B\u531C\u531E\u531F\u5322\u5324\u5325\u5327\u5328\u5329\u532B\u532C\u532D\u532F",9,"\u533C\u533D\u5340\u5342\u5344\u5346\u534B\u534C\u534D\u5350\u5354\u5358\u5359\u535B\u535D\u5365\u5368\u536A\u536C\u536D\u5372\u5376\u5379\u537B\u537C\u537D\u537E\u5380\u5381\u5383\u5387\u5388\u538A\u538E\u538F"],["8580","\u5390",4,"\u5396\u5397\u5399\u539B\u539C\u539E\u53A0\u53A1\u53A4\u53A7\u53AA\u53AB\u53AC\u53AD\u53AF",6,"\u53B7\u53B8\u53B9\u53BA\u53BC\u53BD\u53BE\u53C0\u53C3",4,"\u53CE\u53CF\u53D0\u53D2\u53D3\u53D5\u53DA\u53DC\u53DD\u53DE\u53E1\u53E2\u53E7\u53F4\u53FA\u53FE\u53FF\u5400\u5402\u5405\u5407\u540B\u5414\u5418\u5419\u541A\u541C\u5422\u5424\u5425\u542A\u5430\u5433\u5436\u5437\u543A\u543D\u543F\u5441\u5442\u5444\u5445\u5447\u5449\u544C\u544D\u544E\u544F\u5451\u545A\u545D",4,"\u5463\u5465\u5467\u5469",7,"\u5474\u5479\u547A\u547E\u547F\u5481\u5483\u5485\u5487\u5488\u5489\u548A\u548D\u5491\u5493\u5497\u5498\u549C\u549E\u549F\u54A0\u54A1"],["8640","\u54A2\u54A5\u54AE\u54B0\u54B2\u54B5\u54B6\u54B7\u54B9\u54BA\u54BC\u54BE\u54C3\u54C5\u54CA\u54CB\u54D6\u54D8\u54DB\u54E0",4,"\u54EB\u54EC\u54EF\u54F0\u54F1\u54F4",5,"\u54FB\u54FE\u5500\u5502\u5503\u5504\u5505\u5508\u550A",4,"\u5512\u5513\u5515",5,"\u551C\u551D\u551E\u551F\u5521\u5525\u5526"],["8680","\u5528\u5529\u552B\u552D\u5532\u5534\u5535\u5536\u5538\u5539\u553A\u553B\u553D\u5540\u5542\u5545\u5547\u5548\u554B",4,"\u5551\u5552\u5553\u5554\u5557",4,"\u555D\u555E\u555F\u5560\u5562\u5563\u5568\u5569\u556B\u556F",5,"\u5579\u557A\u557D\u557F\u5585\u5586\u558C\u558D\u558E\u5590\u5592\u5593\u5595\u5596\u5597\u559A\u559B\u559E\u55A0",6,"\u55A8",8,"\u55B2\u55B4\u55B6\u55B8\u55BA\u55BC\u55BF",4,"\u55C6\u55C7\u55C8\u55CA\u55CB\u55CE\u55CF\u55D0\u55D5\u55D7",4,"\u55DE\u55E0\u55E2\u55E7\u55E9\u55ED\u55EE\u55F0\u55F1\u55F4\u55F6\u55F8",4,"\u55FF\u5602\u5603\u5604\u5605"],["8740","\u5606\u5607\u560A\u560B\u560D\u5610",7,"\u5619\u561A\u561C\u561D\u5620\u5621\u5622\u5625\u5626\u5628\u5629\u562A\u562B\u562E\u562F\u5630\u5633\u5635\u5637\u5638\u563A\u563C\u563D\u563E\u5640",11,"\u564F",4,"\u5655\u5656\u565A\u565B\u565D",4],["8780","\u5663\u5665\u5666\u5667\u566D\u566E\u566F\u5670\u5672\u5673\u5674\u5675\u5677\u5678\u5679\u567A\u567D",7,"\u5687",6,"\u5690\u5691\u5692\u5694",14,"\u56A4",10,"\u56B0",6,"\u56B8\u56B9\u56BA\u56BB\u56BD",12,"\u56CB",8,"\u56D5\u56D6\u56D8\u56D9\u56DC\u56E3\u56E5",5,"\u56EC\u56EE\u56EF\u56F2\u56F3\u56F6\u56F7\u56F8\u56FB\u56FC\u5700\u5701\u5702\u5705\u5707\u570B",6],["8840","\u5712",9,"\u571D\u571E\u5720\u5721\u5722\u5724\u5725\u5726\u5727\u572B\u5731\u5732\u5734",4,"\u573C\u573D\u573F\u5741\u5743\u5744\u5745\u5746\u5748\u5749\u574B\u5752",4,"\u5758\u5759\u5762\u5763\u5765\u5767\u576C\u576E\u5770\u5771\u5772\u5774\u5775\u5778\u5779\u577A\u577D\u577E\u577F\u5780"],["8880","\u5781\u5787\u5788\u5789\u578A\u578D",4,"\u5794",6,"\u579C\u579D\u579E\u579F\u57A5\u57A8\u57AA\u57AC\u57AF\u57B0\u57B1\u57B3\u57B5\u57B6\u57B7\u57B9",8,"\u57C4",6,"\u57CC\u57CD\u57D0\u57D1\u57D3\u57D6\u57D7\u57DB\u57DC\u57DE\u57E1\u57E2\u57E3\u57E5",7,"\u57EE\u57F0\u57F1\u57F2\u57F3\u57F5\u57F6\u57F7\u57FB\u57FC\u57FE\u57FF\u5801\u5803\u5804\u5805\u5808\u5809\u580A\u580C\u580E\u580F\u5810\u5812\u5813\u5814\u5816\u5817\u5818\u581A\u581B\u581C\u581D\u581F\u5822\u5823\u5825",4,"\u582B",4,"\u5831\u5832\u5833\u5834\u5836",7],["8940","\u583E",5,"\u5845",6,"\u584E\u584F\u5850\u5852\u5853\u5855\u5856\u5857\u5859",4,"\u585F",5,"\u5866",4,"\u586D",16,"\u587F\u5882\u5884\u5886\u5887\u5888\u588A\u588B\u588C"],["8980","\u588D",4,"\u5894",4,"\u589B\u589C\u589D\u58A0",7,"\u58AA",17,"\u58BD\u58BE\u58BF\u58C0\u58C2\u58C3\u58C4\u58C6",10,"\u58D2\u58D3\u58D4\u58D6",13,"\u58E5",5,"\u58ED\u58EF\u58F1\u58F2\u58F4\u58F5\u58F7\u58F8\u58FA",7,"\u5903\u5905\u5906\u5908",4,"\u590E\u5910\u5911\u5912\u5913\u5917\u5918\u591B\u591D\u591E\u5920\u5921\u5922\u5923\u5926\u5928\u592C\u5930\u5932\u5933\u5935\u5936\u593B"],["8a40","\u593D\u593E\u593F\u5940\u5943\u5945\u5946\u594A\u594C\u594D\u5950\u5952\u5953\u5959\u595B",4,"\u5961\u5963\u5964\u5966",12,"\u5975\u5977\u597A\u597B\u597C\u597E\u597F\u5980\u5985\u5989\u598B\u598C\u598E\u598F\u5990\u5991\u5994\u5995\u5998\u599A\u599B\u599C\u599D\u599F\u59A0\u59A1\u59A2\u59A6"],["8a80","\u59A7\u59AC\u59AD\u59B0\u59B1\u59B3",5,"\u59BA\u59BC\u59BD\u59BF",6,"\u59C7\u59C8\u59C9\u59CC\u59CD\u59CE\u59CF\u59D5\u59D6\u59D9\u59DB\u59DE",4,"\u59E4\u59E6\u59E7\u59E9\u59EA\u59EB\u59ED",11,"\u59FA\u59FC\u59FD\u59FE\u5A00\u5A02\u5A0A\u5A0B\u5A0D\u5A0E\u5A0F\u5A10\u5A12\u5A14\u5A15\u5A16\u5A17\u5A19\u5A1A\u5A1B\u5A1D\u5A1E\u5A21\u5A22\u5A24\u5A26\u5A27\u5A28\u5A2A",6,"\u5A33\u5A35\u5A37",4,"\u5A3D\u5A3E\u5A3F\u5A41",4,"\u5A47\u5A48\u5A4B",9,"\u5A56\u5A57\u5A58\u5A59\u5A5B",5],["8b40","\u5A61\u5A63\u5A64\u5A65\u5A66\u5A68\u5A69\u5A6B",8,"\u5A78\u5A79\u5A7B\u5A7C\u5A7D\u5A7E\u5A80",17,"\u5A93",6,"\u5A9C",13,"\u5AAB\u5AAC"],["8b80","\u5AAD",4,"\u5AB4\u5AB6\u5AB7\u5AB9",4,"\u5ABF\u5AC0\u5AC3",5,"\u5ACA\u5ACB\u5ACD",4,"\u5AD3\u5AD5\u5AD7\u5AD9\u5ADA\u5ADB\u5ADD\u5ADE\u5ADF\u5AE2\u5AE4\u5AE5\u5AE7\u5AE8\u5AEA\u5AEC",4,"\u5AF2",22,"\u5B0A",11,"\u5B18",25,"\u5B33\u5B35\u5B36\u5B38",7,"\u5B41",6],["8c40","\u5B48",7,"\u5B52\u5B56\u5B5E\u5B60\u5B61\u5B67\u5B68\u5B6B\u5B6D\u5B6E\u5B6F\u5B72\u5B74\u5B76\u5B77\u5B78\u5B79\u5B7B\u5B7C\u5B7E\u5B7F\u5B82\u5B86\u5B8A\u5B8D\u5B8E\u5B90\u5B91\u5B92\u5B94\u5B96\u5B9F\u5BA7\u5BA8\u5BA9\u5BAC\u5BAD\u5BAE\u5BAF\u5BB1\u5BB2\u5BB7\u5BBA\u5BBB\u5BBC\u5BC0\u5BC1\u5BC3\u5BC8\u5BC9\u5BCA\u5BCB\u5BCD\u5BCE\u5BCF"],["8c80","\u5BD1\u5BD4",8,"\u5BE0\u5BE2\u5BE3\u5BE6\u5BE7\u5BE9",4,"\u5BEF\u5BF1",6,"\u5BFD\u5BFE\u5C00\u5C02\u5C03\u5C05\u5C07\u5C08\u5C0B\u5C0C\u5C0D\u5C0E\u5C10\u5C12\u5C13\u5C17\u5C19\u5C1B\u5C1E\u5C1F\u5C20\u5C21\u5C23\u5C26\u5C28\u5C29\u5C2A\u5C2B\u5C2D\u5C2E\u5C2F\u5C30\u5C32\u5C33\u5C35\u5C36\u5C37\u5C43\u5C44\u5C46\u5C47\u5C4C\u5C4D\u5C52\u5C53\u5C54\u5C56\u5C57\u5C58\u5C5A\u5C5B\u5C5C\u5C5D\u5C5F\u5C62\u5C64\u5C67",6,"\u5C70\u5C72",6,"\u5C7B\u5C7C\u5C7D\u5C7E\u5C80\u5C83",4,"\u5C89\u5C8A\u5C8B\u5C8E\u5C8F\u5C92\u5C93\u5C95\u5C9D",4,"\u5CA4",4],["8d40","\u5CAA\u5CAE\u5CAF\u5CB0\u5CB2\u5CB4\u5CB6\u5CB9\u5CBA\u5CBB\u5CBC\u5CBE\u5CC0\u5CC2\u5CC3\u5CC5",5,"\u5CCC",5,"\u5CD3",5,"\u5CDA",6,"\u5CE2\u5CE3\u5CE7\u5CE9\u5CEB\u5CEC\u5CEE\u5CEF\u5CF1",9,"\u5CFC",4],["8d80","\u5D01\u5D04\u5D05\u5D08",5,"\u5D0F",4,"\u5D15\u5D17\u5D18\u5D19\u5D1A\u5D1C\u5D1D\u5D1F",4,"\u5D25\u5D28\u5D2A\u5D2B\u5D2C\u5D2F",4,"\u5D35",7,"\u5D3F",7,"\u5D48\u5D49\u5D4D",10,"\u5D59\u5D5A\u5D5C\u5D5E",10,"\u5D6A\u5D6D\u5D6E\u5D70\u5D71\u5D72\u5D73\u5D75",12,"\u5D83",21,"\u5D9A\u5D9B\u5D9C\u5D9E\u5D9F\u5DA0"],["8e40","\u5DA1",21,"\u5DB8",12,"\u5DC6",6,"\u5DCE",12,"\u5DDC\u5DDF\u5DE0\u5DE3\u5DE4\u5DEA\u5DEC\u5DED"],["8e80","\u5DF0\u5DF5\u5DF6\u5DF8",4,"\u5DFF\u5E00\u5E04\u5E07\u5E09\u5E0A\u5E0B\u5E0D\u5E0E\u5E12\u5E13\u5E17\u5E1E",7,"\u5E28",4,"\u5E2F\u5E30\u5E32",4,"\u5E39\u5E3A\u5E3E\u5E3F\u5E40\u5E41\u5E43\u5E46",5,"\u5E4D",6,"\u5E56",4,"\u5E5C\u5E5D\u5E5F\u5E60\u5E63",14,"\u5E75\u5E77\u5E79\u5E7E\u5E81\u5E82\u5E83\u5E85\u5E88\u5E89\u5E8C\u5E8D\u5E8E\u5E92\u5E98\u5E9B\u5E9D\u5EA1\u5EA2\u5EA3\u5EA4\u5EA8",4,"\u5EAE",4,"\u5EB4\u5EBA\u5EBB\u5EBC\u5EBD\u5EBF",6],["8f40","\u5EC6\u5EC7\u5EC8\u5ECB",5,"\u5ED4\u5ED5\u5ED7\u5ED8\u5ED9\u5EDA\u5EDC",11,"\u5EE9\u5EEB",8,"\u5EF5\u5EF8\u5EF9\u5EFB\u5EFC\u5EFD\u5F05\u5F06\u5F07\u5F09\u5F0C\u5F0D\u5F0E\u5F10\u5F12\u5F14\u5F16\u5F19\u5F1A\u5F1C\u5F1D\u5F1E\u5F21\u5F22\u5F23\u5F24"],["8f80","\u5F28\u5F2B\u5F2C\u5F2E\u5F30\u5F32",6,"\u5F3B\u5F3D\u5F3E\u5F3F\u5F41",14,"\u5F51\u5F54\u5F59\u5F5A\u5F5B\u5F5C\u5F5E\u5F5F\u5F60\u5F63\u5F65\u5F67\u5F68\u5F6B\u5F6E\u5F6F\u5F72\u5F74\u5F75\u5F76\u5F78\u5F7A\u5F7D\u5F7E\u5F7F\u5F83\u5F86\u5F8D\u5F8E\u5F8F\u5F91\u5F93\u5F94\u5F96\u5F9A\u5F9B\u5F9D\u5F9E\u5F9F\u5FA0\u5FA2",5,"\u5FA9\u5FAB\u5FAC\u5FAF",5,"\u5FB6\u5FB8\u5FB9\u5FBA\u5FBB\u5FBE",4,"\u5FC7\u5FC8\u5FCA\u5FCB\u5FCE\u5FD3\u5FD4\u5FD5\u5FDA\u5FDB\u5FDC\u5FDE\u5FDF\u5FE2\u5FE3\u5FE5\u5FE6\u5FE8\u5FE9\u5FEC\u5FEF\u5FF0\u5FF2\u5FF3\u5FF4\u5FF6\u5FF7\u5FF9\u5FFA\u5FFC\u6007"],["9040","\u6008\u6009\u600B\u600C\u6010\u6011\u6013\u6017\u6018\u601A\u601E\u601F\u6022\u6023\u6024\u602C\u602D\u602E\u6030",4,"\u6036",4,"\u603D\u603E\u6040\u6044",6,"\u604C\u604E\u604F\u6051\u6053\u6054\u6056\u6057\u6058\u605B\u605C\u605E\u605F\u6060\u6061\u6065\u6066\u606E\u6071\u6072\u6074\u6075\u6077\u607E\u6080"],["9080","\u6081\u6082\u6085\u6086\u6087\u6088\u608A\u608B\u608E\u608F\u6090\u6091\u6093\u6095\u6097\u6098\u6099\u609C\u609E\u60A1\u60A2\u60A4\u60A5\u60A7\u60A9\u60AA\u60AE\u60B0\u60B3\u60B5\u60B6\u60B7\u60B9\u60BA\u60BD",7,"\u60C7\u60C8\u60C9\u60CC",4,"\u60D2\u60D3\u60D4\u60D6\u60D7\u60D9\u60DB\u60DE\u60E1",4,"\u60EA\u60F1\u60F2\u60F5\u60F7\u60F8\u60FB",4,"\u6102\u6103\u6104\u6105\u6107\u610A\u610B\u610C\u6110",4,"\u6116\u6117\u6118\u6119\u611B\u611C\u611D\u611E\u6121\u6122\u6125\u6128\u6129\u612A\u612C",18,"\u6140",6],["9140","\u6147\u6149\u614B\u614D\u614F\u6150\u6152\u6153\u6154\u6156",6,"\u615E\u615F\u6160\u6161\u6163\u6164\u6165\u6166\u6169",6,"\u6171\u6172\u6173\u6174\u6176\u6178",18,"\u618C\u618D\u618F",4,"\u6195"],["9180","\u6196",6,"\u619E",8,"\u61AA\u61AB\u61AD",9,"\u61B8",5,"\u61BF\u61C0\u61C1\u61C3",4,"\u61C9\u61CC",4,"\u61D3\u61D5",16,"\u61E7",13,"\u61F6",8,"\u6200",5,"\u6207\u6209\u6213\u6214\u6219\u621C\u621D\u621E\u6220\u6223\u6226\u6227\u6228\u6229\u622B\u622D\u622F\u6230\u6231\u6232\u6235\u6236\u6238",4,"\u6242\u6244\u6245\u6246\u624A"],["9240","\u624F\u6250\u6255\u6256\u6257\u6259\u625A\u625C",6,"\u6264\u6265\u6268\u6271\u6272\u6274\u6275\u6277\u6278\u627A\u627B\u627D\u6281\u6282\u6283\u6285\u6286\u6287\u6288\u628B",5,"\u6294\u6299\u629C\u629D\u629E\u62A3\u62A6\u62A7\u62A9\u62AA\u62AD\u62AE\u62AF\u62B0\u62B2\u62B3\u62B4\u62B6\u62B7\u62B8\u62BA\u62BE\u62C0\u62C1"],["9280","\u62C3\u62CB\u62CF\u62D1\u62D5\u62DD\u62DE\u62E0\u62E1\u62E4\u62EA\u62EB\u62F0\u62F2\u62F5\u62F8\u62F9\u62FA\u62FB\u6300\u6303\u6304\u6305\u6306\u630A\u630B\u630C\u630D\u630F\u6310\u6312\u6313\u6314\u6315\u6317\u6318\u6319\u631C\u6326\u6327\u6329\u632C\u632D\u632E\u6330\u6331\u6333",5,"\u633B\u633C\u633E\u633F\u6340\u6341\u6344\u6347\u6348\u634A\u6351\u6352\u6353\u6354\u6356",7,"\u6360\u6364\u6365\u6366\u6368\u636A\u636B\u636C\u636F\u6370\u6372\u6373\u6374\u6375\u6378\u6379\u637C\u637D\u637E\u637F\u6381\u6383\u6384\u6385\u6386\u638B\u638D\u6391\u6393\u6394\u6395\u6397\u6399",6,"\u63A1\u63A4\u63A6\u63AB\u63AF\u63B1\u63B2\u63B5\u63B6\u63B9\u63BB\u63BD\u63BF\u63C0"],["9340","\u63C1\u63C2\u63C3\u63C5\u63C7\u63C8\u63CA\u63CB\u63CC\u63D1\u63D3\u63D4\u63D5\u63D7",6,"\u63DF\u63E2\u63E4",4,"\u63EB\u63EC\u63EE\u63EF\u63F0\u63F1\u63F3\u63F5\u63F7\u63F9\u63FA\u63FB\u63FC\u63FE\u6403\u6404\u6406",4,"\u640D\u640E\u6411\u6412\u6415",5,"\u641D\u641F\u6422\u6423\u6424"],["9380","\u6425\u6427\u6428\u6429\u642B\u642E",5,"\u6435",4,"\u643B\u643C\u643E\u6440\u6442\u6443\u6449\u644B",6,"\u6453\u6455\u6456\u6457\u6459",4,"\u645F",7,"\u6468\u646A\u646B\u646C\u646E",9,"\u647B",6,"\u6483\u6486\u6488",8,"\u6493\u6494\u6497\u6498\u649A\u649B\u649C\u649D\u649F",4,"\u64A5\u64A6\u64A7\u64A8\u64AA\u64AB\u64AF\u64B1\u64B2\u64B3\u64B4\u64B6\u64B9\u64BB\u64BD\u64BE\u64BF\u64C1\u64C3\u64C4\u64C6",6,"\u64CF\u64D1\u64D3\u64D4\u64D5\u64D6\u64D9\u64DA"],["9440","\u64DB\u64DC\u64DD\u64DF\u64E0\u64E1\u64E3\u64E5\u64E7",24,"\u6501",7,"\u650A",7,"\u6513",4,"\u6519",8],["9480","\u6522\u6523\u6524\u6526",4,"\u652C\u652D\u6530\u6531\u6532\u6533\u6537\u653A\u653C\u653D\u6540",4,"\u6546\u6547\u654A\u654B\u654D\u654E\u6550\u6552\u6553\u6554\u6557\u6558\u655A\u655C\u655F\u6560\u6561\u6564\u6565\u6567\u6568\u6569\u656A\u656D\u656E\u656F\u6571\u6573\u6575\u6576\u6578",14,"\u6588\u6589\u658A\u658D\u658E\u658F\u6592\u6594\u6595\u6596\u6598\u659A\u659D\u659E\u65A0\u65A2\u65A3\u65A6\u65A8\u65AA\u65AC\u65AE\u65B1",7,"\u65BA\u65BB\u65BE\u65BF\u65C0\u65C2\u65C7\u65C8\u65C9\u65CA\u65CD\u65D0\u65D1\u65D3\u65D4\u65D5\u65D8",7,"\u65E1\u65E3\u65E4\u65EA\u65EB"],["9540","\u65F2\u65F3\u65F4\u65F5\u65F8\u65F9\u65FB",4,"\u6601\u6604\u6605\u6607\u6608\u6609\u660B\u660D\u6610\u6611\u6612\u6616\u6617\u6618\u661A\u661B\u661C\u661E\u6621\u6622\u6623\u6624\u6626\u6629\u662A\u662B\u662C\u662E\u6630\u6632\u6633\u6637",4,"\u663D\u663F\u6640\u6642\u6644",6,"\u664D\u664E\u6650\u6651\u6658"],["9580","\u6659\u665B\u665C\u665D\u665E\u6660\u6662\u6663\u6665\u6667\u6669",4,"\u6671\u6672\u6673\u6675\u6678\u6679\u667B\u667C\u667D\u667F\u6680\u6681\u6683\u6685\u6686\u6688\u6689\u668A\u668B\u668D\u668E\u668F\u6690\u6692\u6693\u6694\u6695\u6698",4,"\u669E",8,"\u66A9",4,"\u66AF",4,"\u66B5\u66B6\u66B7\u66B8\u66BA\u66BB\u66BC\u66BD\u66BF",25,"\u66DA\u66DE",7,"\u66E7\u66E8\u66EA",5,"\u66F1\u66F5\u66F6\u66F8\u66FA\u66FB\u66FD\u6701\u6702\u6703"],["9640","\u6704\u6705\u6706\u6707\u670C\u670E\u670F\u6711\u6712\u6713\u6716\u6718\u6719\u671A\u671C\u671E\u6720",5,"\u6727\u6729\u672E\u6730\u6732\u6733\u6736\u6737\u6738\u6739\u673B\u673C\u673E\u673F\u6741\u6744\u6745\u6747\u674A\u674B\u674D\u6752\u6754\u6755\u6757",4,"\u675D\u6762\u6763\u6764\u6766\u6767\u676B\u676C\u676E\u6771\u6774\u6776"],["9680","\u6778\u6779\u677A\u677B\u677D\u6780\u6782\u6783\u6785\u6786\u6788\u678A\u678C\u678D\u678E\u678F\u6791\u6792\u6793\u6794\u6796\u6799\u679B\u679F\u67A0\u67A1\u67A4\u67A6\u67A9\u67AC\u67AE\u67B1\u67B2\u67B4\u67B9",7,"\u67C2\u67C5",9,"\u67D5\u67D6\u67D7\u67DB\u67DF\u67E1\u67E3\u67E4\u67E6\u67E7\u67E8\u67EA\u67EB\u67ED\u67EE\u67F2\u67F5",7,"\u67FE\u6801\u6802\u6803\u6804\u6806\u680D\u6810\u6812\u6814\u6815\u6818",4,"\u681E\u681F\u6820\u6822",6,"\u682B",6,"\u6834\u6835\u6836\u683A\u683B\u683F\u6847\u684B\u684D\u684F\u6852\u6856",5],["9740","\u685C\u685D\u685E\u685F\u686A\u686C",7,"\u6875\u6878",8,"\u6882\u6884\u6887",7,"\u6890\u6891\u6892\u6894\u6895\u6896\u6898",9,"\u68A3\u68A4\u68A5\u68A9\u68AA\u68AB\u68AC\u68AE\u68B1\u68B2\u68B4\u68B6\u68B7\u68B8"],["9780","\u68B9",6,"\u68C1\u68C3",5,"\u68CA\u68CC\u68CE\u68CF\u68D0\u68D1\u68D3\u68D4\u68D6\u68D7\u68D9\u68DB",4,"\u68E1\u68E2\u68E4",9,"\u68EF\u68F2\u68F3\u68F4\u68F6\u68F7\u68F8\u68FB\u68FD\u68FE\u68FF\u6900\u6902\u6903\u6904\u6906",4,"\u690C\u690F\u6911\u6913",11,"\u6921\u6922\u6923\u6925",7,"\u692E\u692F\u6931\u6932\u6933\u6935\u6936\u6937\u6938\u693A\u693B\u693C\u693E\u6940\u6941\u6943",16,"\u6955\u6956\u6958\u6959\u695B\u695C\u695F"],["9840","\u6961\u6962\u6964\u6965\u6967\u6968\u6969\u696A\u696C\u696D\u696F\u6970\u6972",4,"\u697A\u697B\u697D\u697E\u697F\u6981\u6983\u6985\u698A\u698B\u698C\u698E",5,"\u6996\u6997\u6999\u699A\u699D",9,"\u69A9\u69AA\u69AC\u69AE\u69AF\u69B0\u69B2\u69B3\u69B5\u69B6\u69B8\u69B9\u69BA\u69BC\u69BD"],["9880","\u69BE\u69BF\u69C0\u69C2",7,"\u69CB\u69CD\u69CF\u69D1\u69D2\u69D3\u69D5",5,"\u69DC\u69DD\u69DE\u69E1",11,"\u69EE\u69EF\u69F0\u69F1\u69F3",9,"\u69FE\u6A00",9,"\u6A0B",11,"\u6A19",5,"\u6A20\u6A22",5,"\u6A29\u6A2B\u6A2C\u6A2D\u6A2E\u6A30\u6A32\u6A33\u6A34\u6A36",6,"\u6A3F",4,"\u6A45\u6A46\u6A48",7,"\u6A51",6,"\u6A5A"],["9940","\u6A5C",4,"\u6A62\u6A63\u6A64\u6A66",10,"\u6A72",6,"\u6A7A\u6A7B\u6A7D\u6A7E\u6A7F\u6A81\u6A82\u6A83\u6A85",8,"\u6A8F\u6A92",4,"\u6A98",7,"\u6AA1",5],["9980","\u6AA7\u6AA8\u6AAA\u6AAD",114,"\u6B25\u6B26\u6B28",6],["9a40","\u6B2F\u6B30\u6B31\u6B33\u6B34\u6B35\u6B36\u6B38\u6B3B\u6B3C\u6B3D\u6B3F\u6B40\u6B41\u6B42\u6B44\u6B45\u6B48\u6B4A\u6B4B\u6B4D",11,"\u6B5A",7,"\u6B68\u6B69\u6B6B",13,"\u6B7A\u6B7D\u6B7E\u6B7F\u6B80\u6B85\u6B88"],["9a80","\u6B8C\u6B8E\u6B8F\u6B90\u6B91\u6B94\u6B95\u6B97\u6B98\u6B99\u6B9C",4,"\u6BA2",7,"\u6BAB",7,"\u6BB6\u6BB8",6,"\u6BC0\u6BC3\u6BC4\u6BC6",4,"\u6BCC\u6BCE\u6BD0\u6BD1\u6BD8\u6BDA\u6BDC",4,"\u6BE2",7,"\u6BEC\u6BED\u6BEE\u6BF0\u6BF1\u6BF2\u6BF4\u6BF6\u6BF7\u6BF8\u6BFA\u6BFB\u6BFC\u6BFE",6,"\u6C08",4,"\u6C0E\u6C12\u6C17\u6C1C\u6C1D\u6C1E\u6C20\u6C23\u6C25\u6C2B\u6C2C\u6C2D\u6C31\u6C33\u6C36\u6C37\u6C39\u6C3A\u6C3B\u6C3C\u6C3E\u6C3F\u6C43\u6C44\u6C45\u6C48\u6C4B",4,"\u6C51\u6C52\u6C53\u6C56\u6C58"],["9b40","\u6C59\u6C5A\u6C62\u6C63\u6C65\u6C66\u6C67\u6C6B",4,"\u6C71\u6C73\u6C75\u6C77\u6C78\u6C7A\u6C7B\u6C7C\u6C7F\u6C80\u6C84\u6C87\u6C8A\u6C8B\u6C8D\u6C8E\u6C91\u6C92\u6C95\u6C96\u6C97\u6C98\u6C9A\u6C9C\u6C9D\u6C9E\u6CA0\u6CA2\u6CA8\u6CAC\u6CAF\u6CB0\u6CB4\u6CB5\u6CB6\u6CB7\u6CBA\u6CC0\u6CC1\u6CC2\u6CC3\u6CC6\u6CC7\u6CC8\u6CCB\u6CCD\u6CCE\u6CCF\u6CD1\u6CD2\u6CD8"],["9b80","\u6CD9\u6CDA\u6CDC\u6CDD\u6CDF\u6CE4\u6CE6\u6CE7\u6CE9\u6CEC\u6CED\u6CF2\u6CF4\u6CF9\u6CFF\u6D00\u6D02\u6D03\u6D05\u6D06\u6D08\u6D09\u6D0A\u6D0D\u6D0F\u6D10\u6D11\u6D13\u6D14\u6D15\u6D16\u6D18\u6D1C\u6D1D\u6D1F",5,"\u6D26\u6D28\u6D29\u6D2C\u6D2D\u6D2F\u6D30\u6D34\u6D36\u6D37\u6D38\u6D3A\u6D3F\u6D40\u6D42\u6D44\u6D49\u6D4C\u6D50\u6D55\u6D56\u6D57\u6D58\u6D5B\u6D5D\u6D5F\u6D61\u6D62\u6D64\u6D65\u6D67\u6D68\u6D6B\u6D6C\u6D6D\u6D70\u6D71\u6D72\u6D73\u6D75\u6D76\u6D79\u6D7A\u6D7B\u6D7D",4,"\u6D83\u6D84\u6D86\u6D87\u6D8A\u6D8B\u6D8D\u6D8F\u6D90\u6D92\u6D96",4,"\u6D9C\u6DA2\u6DA5\u6DAC\u6DAD\u6DB0\u6DB1\u6DB3\u6DB4\u6DB6\u6DB7\u6DB9",5,"\u6DC1\u6DC2\u6DC3\u6DC8\u6DC9\u6DCA"],["9c40","\u6DCD\u6DCE\u6DCF\u6DD0\u6DD2\u6DD3\u6DD4\u6DD5\u6DD7\u6DDA\u6DDB\u6DDC\u6DDF\u6DE2\u6DE3\u6DE5\u6DE7\u6DE8\u6DE9\u6DEA\u6DED\u6DEF\u6DF0\u6DF2\u6DF4\u6DF5\u6DF6\u6DF8\u6DFA\u6DFD",7,"\u6E06\u6E07\u6E08\u6E09\u6E0B\u6E0F\u6E12\u6E13\u6E15\u6E18\u6E19\u6E1B\u6E1C\u6E1E\u6E1F\u6E22\u6E26\u6E27\u6E28\u6E2A\u6E2C\u6E2E\u6E30\u6E31\u6E33\u6E35"],["9c80","\u6E36\u6E37\u6E39\u6E3B",7,"\u6E45",7,"\u6E4F\u6E50\u6E51\u6E52\u6E55\u6E57\u6E59\u6E5A\u6E5C\u6E5D\u6E5E\u6E60",10,"\u6E6C\u6E6D\u6E6F",14,"\u6E80\u6E81\u6E82\u6E84\u6E87\u6E88\u6E8A",4,"\u6E91",6,"\u6E99\u6E9A\u6E9B\u6E9D\u6E9E\u6EA0\u6EA1\u6EA3\u6EA4\u6EA6\u6EA8\u6EA9\u6EAB\u6EAC\u6EAD\u6EAE\u6EB0\u6EB3\u6EB5\u6EB8\u6EB9\u6EBC\u6EBE\u6EBF\u6EC0\u6EC3\u6EC4\u6EC5\u6EC6\u6EC8\u6EC9\u6ECA\u6ECC\u6ECD\u6ECE\u6ED0\u6ED2\u6ED6\u6ED8\u6ED9\u6EDB\u6EDC\u6EDD\u6EE3\u6EE7\u6EEA",5],["9d40","\u6EF0\u6EF1\u6EF2\u6EF3\u6EF5\u6EF6\u6EF7\u6EF8\u6EFA",7,"\u6F03\u6F04\u6F05\u6F07\u6F08\u6F0A",4,"\u6F10\u6F11\u6F12\u6F16",9,"\u6F21\u6F22\u6F23\u6F25\u6F26\u6F27\u6F28\u6F2C\u6F2E\u6F30\u6F32\u6F34\u6F35\u6F37",6,"\u6F3F\u6F40\u6F41\u6F42"],["9d80","\u6F43\u6F44\u6F45\u6F48\u6F49\u6F4A\u6F4C\u6F4E",9,"\u6F59\u6F5A\u6F5B\u6F5D\u6F5F\u6F60\u6F61\u6F63\u6F64\u6F65\u6F67",5,"\u6F6F\u6F70\u6F71\u6F73\u6F75\u6F76\u6F77\u6F79\u6F7B\u6F7D",6,"\u6F85\u6F86\u6F87\u6F8A\u6F8B\u6F8F",12,"\u6F9D\u6F9E\u6F9F\u6FA0\u6FA2",4,"\u6FA8",10,"\u6FB4\u6FB5\u6FB7\u6FB8\u6FBA",5,"\u6FC1\u6FC3",5,"\u6FCA",6,"\u6FD3",10,"\u6FDF\u6FE2\u6FE3\u6FE4\u6FE5"],["9e40","\u6FE6",7,"\u6FF0",32,"\u7012",7,"\u701C",6,"\u7024",6],["9e80","\u702B",9,"\u7036\u7037\u7038\u703A",17,"\u704D\u704E\u7050",13,"\u705F",11,"\u706E\u7071\u7072\u7073\u7074\u7077\u7079\u707A\u707B\u707D\u7081\u7082\u7083\u7084\u7086\u7087\u7088\u708B\u708C\u708D\u708F\u7090\u7091\u7093\u7097\u7098\u709A\u709B\u709E",12,"\u70B0\u70B2\u70B4\u70B5\u70B6\u70BA\u70BE\u70BF\u70C4\u70C5\u70C6\u70C7\u70C9\u70CB",12,"\u70DA"],["9f40","\u70DC\u70DD\u70DE\u70E0\u70E1\u70E2\u70E3\u70E5\u70EA\u70EE\u70F0",6,"\u70F8\u70FA\u70FB\u70FC\u70FE",10,"\u710B",4,"\u7111\u7112\u7114\u7117\u711B",10,"\u7127",7,"\u7132\u7133\u7134"],["9f80","\u7135\u7137",13,"\u7146\u7147\u7148\u7149\u714B\u714D\u714F",12,"\u715D\u715F",4,"\u7165\u7169",4,"\u716F\u7170\u7171\u7174\u7175\u7176\u7177\u7179\u717B\u717C\u717E",5,"\u7185",4,"\u718B\u718C\u718D\u718E\u7190\u7191\u7192\u7193\u7195\u7196\u7197\u719A",4,"\u71A1",6,"\u71A9\u71AA\u71AB\u71AD",5,"\u71B4\u71B6\u71B7\u71B8\u71BA",8,"\u71C4",9,"\u71CF",4],["a040","\u71D6",9,"\u71E1\u71E2\u71E3\u71E4\u71E6\u71E8",5,"\u71EF",9,"\u71FA",11,"\u7207",19],["a080","\u721B\u721C\u721E",9,"\u7229\u722B\u722D\u722E\u722F\u7232\u7233\u7234\u723A\u723C\u723E\u7240",6,"\u7249\u724A\u724B\u724E\u724F\u7250\u7251\u7253\u7254\u7255\u7257\u7258\u725A\u725C\u725E\u7260\u7263\u7264\u7265\u7268\u726A\u726B\u726C\u726D\u7270\u7271\u7273\u7274\u7276\u7277\u7278\u727B\u727C\u727D\u7282\u7283\u7285",4,"\u728C\u728E\u7290\u7291\u7293",11,"\u72A0",11,"\u72AE\u72B1\u72B2\u72B3\u72B5\u72BA",6,"\u72C5\u72C6\u72C7\u72C9\u72CA\u72CB\u72CC\u72CF\u72D1\u72D3\u72D4\u72D5\u72D6\u72D8\u72DA\u72DB"],["a1a1","\u3000\u3001\u3002\xB7\u02C9\u02C7\xA8\u3003\u3005\u2014\uFF5E\u2016\u2026\u2018\u2019\u201C\u201D\u3014\u3015\u3008",7,"\u3016\u3017\u3010\u3011\xB1\xD7\xF7\u2236\u2227\u2228\u2211\u220F\u222A\u2229\u2208\u2237\u221A\u22A5\u2225\u2220\u2312\u2299\u222B\u222E\u2261\u224C\u2248\u223D\u221D\u2260\u226E\u226F\u2264\u2265\u221E\u2235\u2234\u2642\u2640\xB0\u2032\u2033\u2103\uFF04\xA4\uFFE0\uFFE1\u2030\xA7\u2116\u2606\u2605\u25CB\u25CF\u25CE\u25C7\u25C6\u25A1\u25A0\u25B3\u25B2\u203B\u2192\u2190\u2191\u2193\u3013"],["a2a1","\u2170",9],["a2b1","\u2488",19,"\u2474",19,"\u2460",9],["a2e5","\u3220",9],["a2f1","\u2160",11],["a3a1","\uFF01\uFF02\uFF03\uFFE5\uFF05",88,"\uFFE3"],["a4a1","\u3041",82],["a5a1","\u30A1",85],["a6a1","\u0391",16,"\u03A3",6],["a6c1","\u03B1",16,"\u03C3",6],["a6e0","\uFE35\uFE36\uFE39\uFE3A\uFE3F\uFE40\uFE3D\uFE3E\uFE41\uFE42\uFE43\uFE44"],["a6ee","\uFE3B\uFE3C\uFE37\uFE38\uFE31"],["a6f4","\uFE33\uFE34"],["a7a1","\u0410",5,"\u0401\u0416",25],["a7d1","\u0430",5,"\u0451\u0436",25],["a840","\u02CA\u02CB\u02D9\u2013\u2015\u2025\u2035\u2105\u2109\u2196\u2197\u2198\u2199\u2215\u221F\u2223\u2252\u2266\u2267\u22BF\u2550",35,"\u2581",6],["a880","\u2588",7,"\u2593\u2594\u2595\u25BC\u25BD\u25E2\u25E3\u25E4\u25E5\u2609\u2295\u3012\u301D\u301E"],["a8a1","\u0101\xE1\u01CE\xE0\u0113\xE9\u011B\xE8\u012B\xED\u01D0\xEC\u014D\xF3\u01D2\xF2\u016B\xFA\u01D4\xF9\u01D6\u01D8\u01DA\u01DC\xFC\xEA\u0251"],["a8bd","\u0144\u0148"],["a8c0","\u0261"],["a8c5","\u3105",36],["a940","\u3021",8,"\u32A3\u338E\u338F\u339C\u339D\u339E\u33A1\u33C4\u33CE\u33D1\u33D2\u33D5\uFE30\uFFE2\uFFE4"],["a959","\u2121\u3231"],["a95c","\u2010"],["a960","\u30FC\u309B\u309C\u30FD\u30FE\u3006\u309D\u309E\uFE49",9,"\uFE54\uFE55\uFE56\uFE57\uFE59",8],["a980","\uFE62",4,"\uFE68\uFE69\uFE6A\uFE6B"],["a996","\u3007"],["a9a4","\u2500",75],["aa40","\u72DC\u72DD\u72DF\u72E2",5,"\u72EA\u72EB\u72F5\u72F6\u72F9\u72FD\u72FE\u72FF\u7300\u7302\u7304",5,"\u730B\u730C\u730D\u730F\u7310\u7311\u7312\u7314\u7318\u7319\u731A\u731F\u7320\u7323\u7324\u7326\u7327\u7328\u732D\u732F\u7330\u7332\u7333\u7335\u7336\u733A\u733B\u733C\u733D\u7340",8],["aa80","\u7349\u734A\u734B\u734C\u734E\u734F\u7351\u7353\u7354\u7355\u7356\u7358",7,"\u7361",10,"\u736E\u7370\u7371"],["ab40","\u7372",11,"\u737F",4,"\u7385\u7386\u7388\u738A\u738C\u738D\u738F\u7390\u7392\u7393\u7394\u7395\u7397\u7398\u7399\u739A\u739C\u739D\u739E\u73A0\u73A1\u73A3",5,"\u73AA\u73AC\u73AD\u73B1\u73B4\u73B5\u73B6\u73B8\u73B9\u73BC\u73BD\u73BE\u73BF\u73C1\u73C3",4],["ab80","\u73CB\u73CC\u73CE\u73D2",6,"\u73DA\u73DB\u73DC\u73DD\u73DF\u73E1\u73E2\u73E3\u73E4\u73E6\u73E8\u73EA\u73EB\u73EC\u73EE\u73EF\u73F0\u73F1\u73F3",4],["ac40","\u73F8",10,"\u7404\u7407\u7408\u740B\u740C\u740D\u740E\u7411",8,"\u741C",5,"\u7423\u7424\u7427\u7429\u742B\u742D\u742F\u7431\u7432\u7437",4,"\u743D\u743E\u743F\u7440\u7442",11],["ac80","\u744E",6,"\u7456\u7458\u745D\u7460",12,"\u746E\u746F\u7471",4,"\u7478\u7479\u747A"],["ad40","\u747B\u747C\u747D\u747F\u7482\u7484\u7485\u7486\u7488\u7489\u748A\u748C\u748D\u748F\u7491",10,"\u749D\u749F",7,"\u74AA",15,"\u74BB",12],["ad80","\u74C8",9,"\u74D3",8,"\u74DD\u74DF\u74E1\u74E5\u74E7",6,"\u74F0\u74F1\u74F2"],["ae40","\u74F3\u74F5\u74F8",6,"\u7500\u7501\u7502\u7503\u7505",7,"\u750E\u7510\u7512\u7514\u7515\u7516\u7517\u751B\u751D\u751E\u7520",4,"\u7526\u7527\u752A\u752E\u7534\u7536\u7539\u753C\u753D\u753F\u7541\u7542\u7543\u7544\u7546\u7547\u7549\u754A\u754D\u7550\u7551\u7552\u7553\u7555\u7556\u7557\u7558"],["ae80","\u755D",7,"\u7567\u7568\u7569\u756B",6,"\u7573\u7575\u7576\u7577\u757A",4,"\u7580\u7581\u7582\u7584\u7585\u7587"],["af40","\u7588\u7589\u758A\u758C\u758D\u758E\u7590\u7593\u7595\u7598\u759B\u759C\u759E\u75A2\u75A6",4,"\u75AD\u75B6\u75B7\u75BA\u75BB\u75BF\u75C0\u75C1\u75C6\u75CB\u75CC\u75CE\u75CF\u75D0\u75D1\u75D3\u75D7\u75D9\u75DA\u75DC\u75DD\u75DF\u75E0\u75E1\u75E5\u75E9\u75EC\u75ED\u75EE\u75EF\u75F2\u75F3\u75F5\u75F6\u75F7\u75F8\u75FA\u75FB\u75FD\u75FE\u7602\u7604\u7606\u7607"],["af80","\u7608\u7609\u760B\u760D\u760E\u760F\u7611\u7612\u7613\u7614\u7616\u761A\u761C\u761D\u761E\u7621\u7623\u7627\u7628\u762C\u762E\u762F\u7631\u7632\u7636\u7637\u7639\u763A\u763B\u763D\u7641\u7642\u7644"],["b040","\u7645",6,"\u764E",5,"\u7655\u7657",4,"\u765D\u765F\u7660\u7661\u7662\u7664",6,"\u766C\u766D\u766E\u7670",7,"\u7679\u767A\u767C\u767F\u7680\u7681\u7683\u7685\u7689\u768A\u768C\u768D\u768F\u7690\u7692\u7694\u7695\u7697\u7698\u769A\u769B"],["b080","\u769C",7,"\u76A5",8,"\u76AF\u76B0\u76B3\u76B5",9,"\u76C0\u76C1\u76C3\u554A\u963F\u57C3\u6328\u54CE\u5509\u54C0\u7691\u764C\u853C\u77EE\u827E\u788D\u7231\u9698\u978D\u6C28\u5B89\u4FFA\u6309\u6697\u5CB8\u80FA\u6848\u80AE\u6602\u76CE\u51F9\u6556\u71AC\u7FF1\u8884\u50B2\u5965\u61CA\u6FB3\u82AD\u634C\u6252\u53ED\u5427\u7B06\u516B\u75A4\u5DF4\u62D4\u8DCB\u9776\u628A\u8019\u575D\u9738\u7F62\u7238\u767D\u67CF\u767E\u6446\u4F70\u8D25\u62DC\u7A17\u6591\u73ED\u642C\u6273\u822C\u9881\u677F\u7248\u626E\u62CC\u4F34\u74E3\u534A\u529E\u7ECA\u90A6\u5E2E\u6886\u699C\u8180\u7ED1\u68D2\u78C5\u868C\u9551\u508D\u8C24\u82DE\u80DE\u5305\u8912\u5265"],["b140","\u76C4\u76C7\u76C9\u76CB\u76CC\u76D3\u76D5\u76D9\u76DA\u76DC\u76DD\u76DE\u76E0",4,"\u76E6",7,"\u76F0\u76F3\u76F5\u76F6\u76F7\u76FA\u76FB\u76FD\u76FF\u7700\u7702\u7703\u7705\u7706\u770A\u770C\u770E",10,"\u771B\u771C\u771D\u771E\u7721\u7723\u7724\u7725\u7727\u772A\u772B"],["b180","\u772C\u772E\u7730",4,"\u7739\u773B\u773D\u773E\u773F\u7742\u7744\u7745\u7746\u7748",7,"\u7752",7,"\u775C\u8584\u96F9\u4FDD\u5821\u9971\u5B9D\u62B1\u62A5\u66B4\u8C79\u9C8D\u7206\u676F\u7891\u60B2\u5351\u5317\u8F88\u80CC\u8D1D\u94A1\u500D\u72C8\u5907\u60EB\u7119\u88AB\u5954\u82EF\u672C\u7B28\u5D29\u7EF7\u752D\u6CF5\u8E66\u8FF8\u903C\u9F3B\u6BD4\u9119\u7B14\u5F7C\u78A7\u84D6\u853D\u6BD5\u6BD9\u6BD6\u5E01\u5E87\u75F9\u95ED\u655D\u5F0A\u5FC5\u8F9F\u58C1\u81C2\u907F\u965B\u97AD\u8FB9\u7F16\u8D2C\u6241\u4FBF\u53D8\u535E\u8FA8\u8FA9\u8FAB\u904D\u6807\u5F6A\u8198\u8868\u9CD6\u618B\u522B\u762A\u5F6C\u658C\u6FD2\u6EE8\u5BBE\u6448\u5175\u51B0\u67C4\u4E19\u79C9\u997C\u70B3"],["b240","\u775D\u775E\u775F\u7760\u7764\u7767\u7769\u776A\u776D",11,"\u777A\u777B\u777C\u7781\u7782\u7783\u7786",5,"\u778F\u7790\u7793",11,"\u77A1\u77A3\u77A4\u77A6\u77A8\u77AB\u77AD\u77AE\u77AF\u77B1\u77B2\u77B4\u77B6",4],["b280","\u77BC\u77BE\u77C0",12,"\u77CE",8,"\u77D8\u77D9\u77DA\u77DD",4,"\u77E4\u75C5\u5E76\u73BB\u83E0\u64AD\u62E8\u94B5\u6CE2\u535A\u52C3\u640F\u94C2\u7B94\u4F2F\u5E1B\u8236\u8116\u818A\u6E24\u6CCA\u9A73\u6355\u535C\u54FA\u8865\u57E0\u4E0D\u5E03\u6B65\u7C3F\u90E8\u6016\u64E6\u731C\u88C1\u6750\u624D\u8D22\u776C\u8E29\u91C7\u5F69\u83DC\u8521\u9910\u53C2\u8695\u6B8B\u60ED\u60E8\u707F\u82CD\u8231\u4ED3\u6CA7\u85CF\u64CD\u7CD9\u69FD\u66F9\u8349\u5395\u7B56\u4FA7\u518C\u6D4B\u5C42\u8E6D\u63D2\u53C9\u832C\u8336\u67E5\u78B4\u643D\u5BDF\u5C94\u5DEE\u8BE7\u62C6\u67F4\u8C7A\u6400\u63BA\u8749\u998B\u8C17\u7F20\u94F2\u4EA7\u9610\u98A4\u660C\u7316"],["b340","\u77E6\u77E8\u77EA\u77EF\u77F0\u77F1\u77F2\u77F4\u77F5\u77F7\u77F9\u77FA\u77FB\u77FC\u7803",5,"\u780A\u780B\u780E\u780F\u7810\u7813\u7815\u7819\u781B\u781E\u7820\u7821\u7822\u7824\u7828\u782A\u782B\u782E\u782F\u7831\u7832\u7833\u7835\u7836\u783D\u783F\u7841\u7842\u7843\u7844\u7846\u7848\u7849\u784A\u784B\u784D\u784F\u7851\u7853\u7854\u7858\u7859\u785A"],["b380","\u785B\u785C\u785E",11,"\u786F",7,"\u7878\u7879\u787A\u787B\u787D",6,"\u573A\u5C1D\u5E38\u957F\u507F\u80A0\u5382\u655E\u7545\u5531\u5021\u8D85\u6284\u949E\u671D\u5632\u6F6E\u5DE2\u5435\u7092\u8F66\u626F\u64A4\u63A3\u5F7B\u6F88\u90F4\u81E3\u8FB0\u5C18\u6668\u5FF1\u6C89\u9648\u8D81\u886C\u6491\u79F0\u57CE\u6A59\u6210\u5448\u4E58\u7A0B\u60E9\u6F84\u8BDA\u627F\u901E\u9A8B\u79E4\u5403\u75F4\u6301\u5319\u6C60\u8FDF\u5F1B\u9A70\u803B\u9F7F\u4F88\u5C3A\u8D64\u7FC5\u65A5\u70BD\u5145\u51B2\u866B\u5D07\u5BA0\u62BD\u916C\u7574\u8E0C\u7A20\u6101\u7B79\u4EC7\u7EF8\u7785\u4E11\u81ED\u521D\u51FA\u6A71\u53A8\u8E87\u9504\u96CF\u6EC1\u9664\u695A"],["b440","\u7884\u7885\u7886\u7888\u788A\u788B\u788F\u7890\u7892\u7894\u7895\u7896\u7899\u789D\u789E\u78A0\u78A2\u78A4\u78A6\u78A8",7,"\u78B5\u78B6\u78B7\u78B8\u78BA\u78BB\u78BC\u78BD\u78BF\u78C0\u78C2\u78C3\u78C4\u78C6\u78C7\u78C8\u78CC\u78CD\u78CE\u78CF\u78D1\u78D2\u78D3\u78D6\u78D7\u78D8\u78DA",9],["b480","\u78E4\u78E5\u78E6\u78E7\u78E9\u78EA\u78EB\u78ED",4,"\u78F3\u78F5\u78F6\u78F8\u78F9\u78FB",5,"\u7902\u7903\u7904\u7906",6,"\u7840\u50A8\u77D7\u6410\u89E6\u5904\u63E3\u5DDD\u7A7F\u693D\u4F20\u8239\u5598\u4E32\u75AE\u7A97\u5E62\u5E8A\u95EF\u521B\u5439\u708A\u6376\u9524\u5782\u6625\u693F\u9187\u5507\u6DF3\u7EAF\u8822\u6233\u7EF0\u75B5\u8328\u78C1\u96CC\u8F9E\u6148\u74F7\u8BCD\u6B64\u523A\u8D50\u6B21\u806A\u8471\u56F1\u5306\u4ECE\u4E1B\u51D1\u7C97\u918B\u7C07\u4FC3\u8E7F\u7BE1\u7A9C\u6467\u5D14\u50AC\u8106\u7601\u7CB9\u6DEC\u7FE0\u6751\u5B58\u5BF8\u78CB\u64AE\u6413\u63AA\u632B\u9519\u642D\u8FBE\u7B54\u7629\u6253\u5927\u5446\u6B79\u50A3\u6234\u5E26\u6B86\u4EE3\u8D37\u888B\u5F85\u902E"],["b540","\u790D",5,"\u7914",9,"\u791F",4,"\u7925",14,"\u7935",4,"\u793D\u793F\u7942\u7943\u7944\u7945\u7947\u794A",8,"\u7954\u7955\u7958\u7959\u7961\u7963"],["b580","\u7964\u7966\u7969\u796A\u796B\u796C\u796E\u7970",6,"\u7979\u797B",4,"\u7982\u7983\u7986\u7987\u7988\u7989\u798B\u798C\u798D\u798E\u7990\u7991\u7992\u6020\u803D\u62C5\u4E39\u5355\u90F8\u63B8\u80C6\u65E6\u6C2E\u4F46\u60EE\u6DE1\u8BDE\u5F39\u86CB\u5F53\u6321\u515A\u8361\u6863\u5200\u6363\u8E48\u5012\u5C9B\u7977\u5BFC\u5230\u7A3B\u60BC\u9053\u76D7\u5FB7\u5F97\u7684\u8E6C\u706F\u767B\u7B49\u77AA\u51F3\u9093\u5824\u4F4E\u6EF4\u8FEA\u654C\u7B1B\u72C4\u6DA4\u7FDF\u5AE1\u62B5\u5E95\u5730\u8482\u7B2C\u5E1D\u5F1F\u9012\u7F14\u98A0\u6382\u6EC7\u7898\u70B9\u5178\u975B\u57AB\u7535\u4F43\u7538\u5E97\u60E6\u5960\u6DC0\u6BBF\u7889\u53FC\u96D5\u51CB\u5201\u6389\u540A\u9493\u8C03\u8DCC\u7239\u789F\u8776\u8FED\u8C0D\u53E0"],["b640","\u7993",6,"\u799B",11,"\u79A8",10,"\u79B4",4,"\u79BC\u79BF\u79C2\u79C4\u79C5\u79C7\u79C8\u79CA\u79CC\u79CE\u79CF\u79D0\u79D3\u79D4\u79D6\u79D7\u79D9",5,"\u79E0\u79E1\u79E2\u79E5\u79E8\u79EA"],["b680","\u79EC\u79EE\u79F1",6,"\u79F9\u79FA\u79FC\u79FE\u79FF\u7A01\u7A04\u7A05\u7A07\u7A08\u7A09\u7A0A\u7A0C\u7A0F",4,"\u7A15\u7A16\u7A18\u7A19\u7A1B\u7A1C\u4E01\u76EF\u53EE\u9489\u9876\u9F0E\u952D\u5B9A\u8BA2\u4E22\u4E1C\u51AC\u8463\u61C2\u52A8\u680B\u4F97\u606B\u51BB\u6D1E\u515C\u6296\u6597\u9661\u8C46\u9017\u75D8\u90FD\u7763\u6BD2\u728A\u72EC\u8BFB\u5835\u7779\u8D4C\u675C\u9540\u809A\u5EA6\u6E21\u5992\u7AEF\u77ED\u953B\u6BB5\u65AD\u7F0E\u5806\u5151\u961F\u5BF9\u58A9\u5428\u8E72\u6566\u987F\u56E4\u949D\u76FE\u9041\u6387\u54C6\u591A\u593A\u579B\u8EB2\u6735\u8DFA\u8235\u5241\u60F0\u5815\u86FE\u5CE8\u9E45\u4FC4\u989D\u8BB9\u5A25\u6076\u5384\u627C\u904F\u9102\u997F\u6069\u800C\u513F\u8033\u5C14\u9975\u6D31\u4E8C"],["b740","\u7A1D\u7A1F\u7A21\u7A22\u7A24",14,"\u7A34\u7A35\u7A36\u7A38\u7A3A\u7A3E\u7A40",5,"\u7A47",9,"\u7A52",4,"\u7A58",16],["b780","\u7A69",6,"\u7A71\u7A72\u7A73\u7A75\u7A7B\u7A7C\u7A7D\u7A7E\u7A82\u7A85\u7A87\u7A89\u7A8A\u7A8B\u7A8C\u7A8E\u7A8F\u7A90\u7A93\u7A94\u7A99\u7A9A\u7A9B\u7A9E\u7AA1\u7AA2\u8D30\u53D1\u7F5A\u7B4F\u4F10\u4E4F\u9600\u6CD5\u73D0\u85E9\u5E06\u756A\u7FFB\u6A0A\u77FE\u9492\u7E41\u51E1\u70E6\u53CD\u8FD4\u8303\u8D29\u72AF\u996D\u6CDB\u574A\u82B3\u65B9\u80AA\u623F\u9632\u59A8\u4EFF\u8BBF\u7EBA\u653E\u83F2\u975E\u5561\u98DE\u80A5\u532A\u8BFD\u5420\u80BA\u5E9F\u6CB8\u8D39\u82AC\u915A\u5429\u6C1B\u5206\u7EB7\u575F\u711A\u6C7E\u7C89\u594B\u4EFD\u5FFF\u6124\u7CAA\u4E30\u5C01\u67AB\u8702\u5CF0\u950B\u98CE\u75AF\u70FD\u9022\u51AF\u7F1D\u8BBD\u5949\u51E4\u4F5B\u5426\u592B\u6577\u80A4\u5B75\u6276\u62C2\u8F90\u5E45\u6C1F\u7B26\u4F0F\u4FD8\u670D"],["b840","\u7AA3\u7AA4\u7AA7\u7AA9\u7AAA\u7AAB\u7AAE",4,"\u7AB4",10,"\u7AC0",10,"\u7ACC",9,"\u7AD7\u7AD8\u7ADA\u7ADB\u7ADC\u7ADD\u7AE1\u7AE2\u7AE4\u7AE7",5,"\u7AEE\u7AF0\u7AF1\u7AF2\u7AF3"],["b880","\u7AF4",4,"\u7AFB\u7AFC\u7AFE\u7B00\u7B01\u7B02\u7B05\u7B07\u7B09\u7B0C\u7B0D\u7B0E\u7B10\u7B12\u7B13\u7B16\u7B17\u7B18\u7B1A\u7B1C\u7B1D\u7B1F\u7B21\u7B22\u7B23\u7B27\u7B29\u7B2D\u6D6E\u6DAA\u798F\u88B1\u5F17\u752B\u629A\u8F85\u4FEF\u91DC\u65A7\u812F\u8151\u5E9C\u8150\u8D74\u526F\u8986\u8D4B\u590D\u5085\u4ED8\u961C\u7236\u8179\u8D1F\u5BCC\u8BA3\u9644\u5987\u7F1A\u5490\u5676\u560E\u8BE5\u6539\u6982\u9499\u76D6\u6E89\u5E72\u7518\u6746\u67D1\u7AFF\u809D\u8D76\u611F\u79C6\u6562\u8D63\u5188\u521A\u94A2\u7F38\u809B\u7EB2\u5C97\u6E2F\u6760\u7BD9\u768B\u9AD8\u818F\u7F94\u7CD5\u641E\u9550\u7A3F\u544A\u54E5\u6B4C\u6401\u6208\u9E3D\u80F3\u7599\u5272\u9769\u845B\u683C\u86E4\u9601\u9694\u94EC\u4E2A\u5404\u7ED9\u6839\u8DDF\u8015\u66F4\u5E9A\u7FB9"],["b940","\u7B2F\u7B30\u7B32\u7B34\u7B35\u7B36\u7B37\u7B39\u7B3B\u7B3D\u7B3F",5,"\u7B46\u7B48\u7B4A\u7B4D\u7B4E\u7B53\u7B55\u7B57\u7B59\u7B5C\u7B5E\u7B5F\u7B61\u7B63",10,"\u7B6F\u7B70\u7B73\u7B74\u7B76\u7B78\u7B7A\u7B7C\u7B7D\u7B7F\u7B81\u7B82\u7B83\u7B84\u7B86",6,"\u7B8E\u7B8F"],["b980","\u7B91\u7B92\u7B93\u7B96\u7B98\u7B99\u7B9A\u7B9B\u7B9E\u7B9F\u7BA0\u7BA3\u7BA4\u7BA5\u7BAE\u7BAF\u7BB0\u7BB2\u7BB3\u7BB5\u7BB6\u7BB7\u7BB9",7,"\u7BC2\u7BC3\u7BC4\u57C2\u803F\u6897\u5DE5\u653B\u529F\u606D\u9F9A\u4F9B\u8EAC\u516C\u5BAB\u5F13\u5DE9\u6C5E\u62F1\u8D21\u5171\u94A9\u52FE\u6C9F\u82DF\u72D7\u57A2\u6784\u8D2D\u591F\u8F9C\u83C7\u5495\u7B8D\u4F30\u6CBD\u5B64\u59D1\u9F13\u53E4\u86CA\u9AA8\u8C37\u80A1\u6545\u987E\u56FA\u96C7\u522E\u74DC\u5250\u5BE1\u6302\u8902\u4E56\u62D0\u602A\u68FA\u5173\u5B98\u51A0\u89C2\u7BA1\u9986\u7F50\u60EF\u704C\u8D2F\u5149\u5E7F\u901B\u7470\u89C4\u572D\u7845\u5F52\u9F9F\u95FA\u8F68\u9B3C\u8BE1\u7678\u6842\u67DC\u8DEA\u8D35\u523D\u8F8A\u6EDA\u68CD\u9505\u90ED\u56FD\u679C\u88F9\u8FC7\u54C8"],["ba40","\u7BC5\u7BC8\u7BC9\u7BCA\u7BCB\u7BCD\u7BCE\u7BCF\u7BD0\u7BD2\u7BD4",4,"\u7BDB\u7BDC\u7BDE\u7BDF\u7BE0\u7BE2\u7BE3\u7BE4\u7BE7\u7BE8\u7BE9\u7BEB\u7BEC\u7BED\u7BEF\u7BF0\u7BF2",4,"\u7BF8\u7BF9\u7BFA\u7BFB\u7BFD\u7BFF",7,"\u7C08\u7C09\u7C0A\u7C0D\u7C0E\u7C10",5,"\u7C17\u7C18\u7C19"],["ba80","\u7C1A",4,"\u7C20",5,"\u7C28\u7C29\u7C2B",12,"\u7C39",5,"\u7C42\u9AB8\u5B69\u6D77\u6C26\u4EA5\u5BB3\u9A87\u9163\u61A8\u90AF\u97E9\u542B\u6DB5\u5BD2\u51FD\u558A\u7F55\u7FF0\u64BC\u634D\u65F1\u61BE\u608D\u710A\u6C57\u6C49\u592F\u676D\u822A\u58D5\u568E\u8C6A\u6BEB\u90DD\u597D\u8017\u53F7\u6D69\u5475\u559D\u8377\u83CF\u6838\u79BE\u548C\u4F55\u5408\u76D2\u8C89\u9602\u6CB3\u6DB8\u8D6B\u8910\u9E64\u8D3A\u563F\u9ED1\u75D5\u5F88\u72E0\u6068\u54FC\u4EA8\u6A2A\u8861\u6052\u8F70\u54C4\u70D8\u8679\u9E3F\u6D2A\u5B8F\u5F18\u7EA2\u5589\u4FAF\u7334\u543C\u539A\u5019\u540E\u547C\u4E4E\u5FFD\u745A\u58F6\u846B\u80E1\u8774\u72D0\u7CCA\u6E56"],["bb40","\u7C43",9,"\u7C4E",36,"\u7C75",5,"\u7C7E",9],["bb80","\u7C88\u7C8A",6,"\u7C93\u7C94\u7C96\u7C99\u7C9A\u7C9B\u7CA0\u7CA1\u7CA3\u7CA6\u7CA7\u7CA8\u7CA9\u7CAB\u7CAC\u7CAD\u7CAF\u7CB0\u7CB4",4,"\u7CBA\u7CBB\u5F27\u864E\u552C\u62A4\u4E92\u6CAA\u6237\u82B1\u54D7\u534E\u733E\u6ED1\u753B\u5212\u5316\u8BDD\u69D0\u5F8A\u6000\u6DEE\u574F\u6B22\u73AF\u6853\u8FD8\u7F13\u6362\u60A3\u5524\u75EA\u8C62\u7115\u6DA3\u5BA6\u5E7B\u8352\u614C\u9EC4\u78FA\u8757\u7C27\u7687\u51F0\u60F6\u714C\u6643\u5E4C\u604D\u8C0E\u7070\u6325\u8F89\u5FBD\u6062\u86D4\u56DE\u6BC1\u6094\u6167\u5349\u60E0\u6666\u8D3F\u79FD\u4F1A\u70E9\u6C47\u8BB3\u8BF2\u7ED8\u8364\u660F\u5A5A\u9B42\u6D51\u6DF7\u8C41\u6D3B\u4F19\u706B\u83B7\u6216\u60D1\u970D\u8D27\u7978\u51FB\u573E\u57FA\u673A\u7578\u7A3D\u79EF\u7B95"],["bc40","\u7CBF\u7CC0\u7CC2\u7CC3\u7CC4\u7CC6\u7CC9\u7CCB\u7CCE",6,"\u7CD8\u7CDA\u7CDB\u7CDD\u7CDE\u7CE1",6,"\u7CE9",5,"\u7CF0",7,"\u7CF9\u7CFA\u7CFC",13,"\u7D0B",5],["bc80","\u7D11",14,"\u7D21\u7D23\u7D24\u7D25\u7D26\u7D28\u7D29\u7D2A\u7D2C\u7D2D\u7D2E\u7D30",6,"\u808C\u9965\u8FF9\u6FC0\u8BA5\u9E21\u59EC\u7EE9\u7F09\u5409\u6781\u68D8\u8F91\u7C4D\u96C6\u53CA\u6025\u75BE\u6C72\u5373\u5AC9\u7EA7\u6324\u51E0\u810A\u5DF1\u84DF\u6280\u5180\u5B63\u4F0E\u796D\u5242\u60B8\u6D4E\u5BC4\u5BC2\u8BA1\u8BB0\u65E2\u5FCC\u9645\u5993\u7EE7\u7EAA\u5609\u67B7\u5939\u4F73\u5BB6\u52A0\u835A\u988A\u8D3E\u7532\u94BE\u5047\u7A3C\u4EF7\u67B6\u9A7E\u5AC1\u6B7C\u76D1\u575A\u5C16\u7B3A\u95F4\u714E\u517C\u80A9\u8270\u5978\u7F04\u8327\u68C0\u67EC\u78B1\u7877\u62E3\u6361\u7B80\u4FED\u526A\u51CF\u8350\u69DB\u9274\u8DF5\u8D31\u89C1\u952E\u7BAD\u4EF6"],["bd40","\u7D37",54,"\u7D6F",7],["bd80","\u7D78",32,"\u5065\u8230\u5251\u996F\u6E10\u6E85\u6DA7\u5EFA\u50F5\u59DC\u5C06\u6D46\u6C5F\u7586\u848B\u6868\u5956\u8BB2\u5320\u9171\u964D\u8549\u6912\u7901\u7126\u80F6\u4EA4\u90CA\u6D47\u9A84\u5A07\u56BC\u6405\u94F0\u77EB\u4FA5\u811A\u72E1\u89D2\u997A\u7F34\u7EDE\u527F\u6559\u9175\u8F7F\u8F83\u53EB\u7A96\u63ED\u63A5\u7686\u79F8\u8857\u9636\u622A\u52AB\u8282\u6854\u6770\u6377\u776B\u7AED\u6D01\u7ED3\u89E3\u59D0\u6212\u85C9\u82A5\u754C\u501F\u4ECB\u75A5\u8BEB\u5C4A\u5DFE\u7B4B\u65A4\u91D1\u4ECA\u6D25\u895F\u7D27\u9526\u4EC5\u8C28\u8FDB\u9773\u664B\u7981\u8FD1\u70EC\u6D78"],["be40","\u7D99",12,"\u7DA7",6,"\u7DAF",42],["be80","\u7DDA",32,"\u5C3D\u52B2\u8346\u5162\u830E\u775B\u6676\u9CB8\u4EAC\u60CA\u7CBE\u7CB3\u7ECF\u4E95\u8B66\u666F\u9888\u9759\u5883\u656C\u955C\u5F84\u75C9\u9756\u7ADF\u7ADE\u51C0\u70AF\u7A98\u63EA\u7A76\u7EA0\u7396\u97ED\u4E45\u7078\u4E5D\u9152\u53A9\u6551\u65E7\u81FC\u8205\u548E\u5C31\u759A\u97A0\u62D8\u72D9\u75BD\u5C45\u9A79\u83CA\u5C40\u5480\u77E9\u4E3E\u6CAE\u805A\u62D2\u636E\u5DE8\u5177\u8DDD\u8E1E\u952F\u4FF1\u53E5\u60E7\u70AC\u5267\u6350\u9E43\u5A1F\u5026\u7737\u5377\u7EE2\u6485\u652B\u6289\u6398\u5014\u7235\u89C9\u51B3\u8BC0\u7EDD\u5747\u83CC\u94A7\u519B\u541B\u5CFB"],["bf40","\u7DFB",62],["bf80","\u7E3A\u7E3C",4,"\u7E42",4,"\u7E48",21,"\u4FCA\u7AE3\u6D5A\u90E1\u9A8F\u5580\u5496\u5361\u54AF\u5F00\u63E9\u6977\u51EF\u6168\u520A\u582A\u52D8\u574E\u780D\u770B\u5EB7\u6177\u7CE0\u625B\u6297\u4EA2\u7095\u8003\u62F7\u70E4\u9760\u5777\u82DB\u67EF\u68F5\u78D5\u9897\u79D1\u58F3\u54B3\u53EF\u6E34\u514B\u523B\u5BA2\u8BFE\u80AF\u5543\u57A6\u6073\u5751\u542D\u7A7A\u6050\u5B54\u63A7\u62A0\u53E3\u6263\u5BC7\u67AF\u54ED\u7A9F\u82E6\u9177\u5E93\u88E4\u5938\u57AE\u630E\u8DE8\u80EF\u5757\u7B77\u4FA9\u5FEB\u5BBD\u6B3E\u5321\u7B50\u72C2\u6846\u77FF\u7736\u65F7\u51B5\u4E8F\u76D4\u5CBF\u7AA5\u8475\u594E\u9B41\u5080"],["c040","\u7E5E",35,"\u7E83",23,"\u7E9C\u7E9D\u7E9E"],["c080","\u7EAE\u7EB4\u7EBB\u7EBC\u7ED6\u7EE4\u7EEC\u7EF9\u7F0A\u7F10\u7F1E\u7F37\u7F39\u7F3B",6,"\u7F43\u7F46",9,"\u7F52\u7F53\u9988\u6127\u6E83\u5764\u6606\u6346\u56F0\u62EC\u6269\u5ED3\u9614\u5783\u62C9\u5587\u8721\u814A\u8FA3\u5566\u83B1\u6765\u8D56\u84DD\u5A6A\u680F\u62E6\u7BEE\u9611\u5170\u6F9C\u8C30\u63FD\u89C8\u61D2\u7F06\u70C2\u6EE5\u7405\u6994\u72FC\u5ECA\u90CE\u6717\u6D6A\u635E\u52B3\u7262\u8001\u4F6C\u59E5\u916A\u70D9\u6D9D\u52D2\u4E50\u96F7\u956D\u857E\u78CA\u7D2F\u5121\u5792\u64C2\u808B\u7C7B\u6CEA\u68F1\u695E\u51B7\u5398\u68A8\u7281\u9ECE\u7BF1\u72F8\u79BB\u6F13\u7406\u674E\u91CC\u9CA4\u793C\u8389\u8354\u540F\u6817\u4E3D\u5389\u52B1\u783E\u5386\u5229\u5088\u4F8B\u4FD0"],["c140","\u7F56\u7F59\u7F5B\u7F5C\u7F5D\u7F5E\u7F60\u7F63",4,"\u7F6B\u7F6C\u7F6D\u7F6F\u7F70\u7F73\u7F75\u7F76\u7F77\u7F78\u7F7A\u7F7B\u7F7C\u7F7D\u7F7F\u7F80\u7F82",7,"\u7F8B\u7F8D\u7F8F",4,"\u7F95",4,"\u7F9B\u7F9C\u7FA0\u7FA2\u7FA3\u7FA5\u7FA6\u7FA8",6,"\u7FB1"],["c180","\u7FB3",4,"\u7FBA\u7FBB\u7FBE\u7FC0\u7FC2\u7FC3\u7FC4\u7FC6\u7FC7\u7FC8\u7FC9\u7FCB\u7FCD\u7FCF",4,"\u7FD6\u7FD7\u7FD9",5,"\u7FE2\u7FE3\u75E2\u7ACB\u7C92\u6CA5\u96B6\u529B\u7483\u54E9\u4FE9\u8054\u83B2\u8FDE\u9570\u5EC9\u601C\u6D9F\u5E18\u655B\u8138\u94FE\u604B\u70BC\u7EC3\u7CAE\u51C9\u6881\u7CB1\u826F\u4E24\u8F86\u91CF\u667E\u4EAE\u8C05\u64A9\u804A\u50DA\u7597\u71CE\u5BE5\u8FBD\u6F66\u4E86\u6482\u9563\u5ED6\u6599\u5217\u88C2\u70C8\u52A3\u730E\u7433\u6797\u78F7\u9716\u4E34\u90BB\u9CDE\u6DCB\u51DB\u8D41\u541D\u62CE\u73B2\u83F1\u96F6\u9F84\u94C3\u4F36\u7F9A\u51CC\u7075\u9675\u5CAD\u9886\u53E6\u4EE4\u6E9C\u7409\u69B4\u786B\u998F\u7559\u5218\u7624\u6D41\u67F3\u516D\u9F99\u804B\u5499\u7B3C\u7ABF"],["c240","\u7FE4\u7FE7\u7FE8\u7FEA\u7FEB\u7FEC\u7FED\u7FEF\u7FF2\u7FF4",6,"\u7FFD\u7FFE\u7FFF\u8002\u8007\u8008\u8009\u800A\u800E\u800F\u8011\u8013\u801A\u801B\u801D\u801E\u801F\u8021\u8023\u8024\u802B",5,"\u8032\u8034\u8039\u803A\u803C\u803E\u8040\u8041\u8044\u8045\u8047\u8048\u8049\u804E\u804F\u8050\u8051\u8053\u8055\u8056\u8057"],["c280","\u8059\u805B",13,"\u806B",5,"\u8072",11,"\u9686\u5784\u62E2\u9647\u697C\u5A04\u6402\u7BD3\u6F0F\u964B\u82A6\u5362\u9885\u5E90\u7089\u63B3\u5364\u864F\u9C81\u9E93\u788C\u9732\u8DEF\u8D42\u9E7F\u6F5E\u7984\u5F55\u9646\u622E\u9A74\u5415\u94DD\u4FA3\u65C5\u5C65\u5C61\u7F15\u8651\u6C2F\u5F8B\u7387\u6EE4\u7EFF\u5CE6\u631B\u5B6A\u6EE6\u5375\u4E71\u63A0\u7565\u62A1\u8F6E\u4F26\u4ED1\u6CA6\u7EB6\u8BBA\u841D\u87BA\u7F57\u903B\u9523\u7BA9\u9AA1\u88F8\u843D\u6D1B\u9A86\u7EDC\u5988\u9EBB\u739B\u7801\u8682\u9A6C\u9A82\u561B\u5417\u57CB\u4E70\u9EA6\u5356\u8FC8\u8109\u7792\u9992\u86EE\u6EE1\u8513\u66FC\u6162\u6F2B"],["c340","\u807E\u8081\u8082\u8085\u8088\u808A\u808D",5,"\u8094\u8095\u8097\u8099\u809E\u80A3\u80A6\u80A7\u80A8\u80AC\u80B0\u80B3\u80B5\u80B6\u80B8\u80B9\u80BB\u80C5\u80C7",4,"\u80CF",6,"\u80D8\u80DF\u80E0\u80E2\u80E3\u80E6\u80EE\u80F5\u80F7\u80F9\u80FB\u80FE\u80FF\u8100\u8101\u8103\u8104\u8105\u8107\u8108\u810B"],["c380","\u810C\u8115\u8117\u8119\u811B\u811C\u811D\u811F",12,"\u812D\u812E\u8130\u8133\u8134\u8135\u8137\u8139",4,"\u813F\u8C29\u8292\u832B\u76F2\u6C13\u5FD9\u83BD\u732B\u8305\u951A\u6BDB\u77DB\u94C6\u536F\u8302\u5192\u5E3D\u8C8C\u8D38\u4E48\u73AB\u679A\u6885\u9176\u9709\u7164\u6CA1\u7709\u5A92\u9541\u6BCF\u7F8E\u6627\u5BD0\u59B9\u5A9A\u95E8\u95F7\u4EEC\u840C\u8499\u6AAC\u76DF\u9530\u731B\u68A6\u5B5F\u772F\u919A\u9761\u7CDC\u8FF7\u8C1C\u5F25\u7C73\u79D8\u89C5\u6CCC\u871C\u5BC6\u5E42\u68C9\u7720\u7EF5\u5195\u514D\u52C9\u5A29\u7F05\u9762\u82D7\u63CF\u7784\u85D0\u79D2\u6E3A\u5E99\u5999\u8511\u706D\u6C11\u62BF\u76BF\u654F\u60AF\u95FD\u660E\u879F\u9E23\u94ED\u540D\u547D\u8C2C\u6478"],["c440","\u8140",5,"\u8147\u8149\u814D\u814E\u814F\u8152\u8156\u8157\u8158\u815B",4,"\u8161\u8162\u8163\u8164\u8166\u8168\u816A\u816B\u816C\u816F\u8172\u8173\u8175\u8176\u8177\u8178\u8181\u8183",4,"\u8189\u818B\u818C\u818D\u818E\u8190\u8192",5,"\u8199\u819A\u819E",4,"\u81A4\u81A5"],["c480","\u81A7\u81A9\u81AB",7,"\u81B4",5,"\u81BC\u81BD\u81BE\u81BF\u81C4\u81C5\u81C7\u81C8\u81C9\u81CB\u81CD",6,"\u6479\u8611\u6A21\u819C\u78E8\u6469\u9B54\u62B9\u672B\u83AB\u58A8\u9ED8\u6CAB\u6F20\u5BDE\u964C\u8C0B\u725F\u67D0\u62C7\u7261\u4EA9\u59C6\u6BCD\u5893\u66AE\u5E55\u52DF\u6155\u6728\u76EE\u7766\u7267\u7A46\u62FF\u54EA\u5450\u94A0\u90A3\u5A1C\u7EB3\u6C16\u4E43\u5976\u8010\u5948\u5357\u7537\u96BE\u56CA\u6320\u8111\u607C\u95F9\u6DD6\u5462\u9981\u5185\u5AE9\u80FD\u59AE\u9713\u502A\u6CE5\u5C3C\u62DF\u4F60\u533F\u817B\u9006\u6EBA\u852B\u62C8\u5E74\u78BE\u64B5\u637B\u5FF5\u5A18\u917F\u9E1F\u5C3F\u634F\u8042\u5B7D\u556E\u954A\u954D\u6D85\u60A8\u67E0\u72DE\u51DD\u5B81"],["c540","\u81D4",14,"\u81E4\u81E5\u81E6\u81E8\u81E9\u81EB\u81EE",4,"\u81F5",5,"\u81FD\u81FF\u8203\u8207",4,"\u820E\u820F\u8211\u8213\u8215",5,"\u821D\u8220\u8224\u8225\u8226\u8227\u8229\u822E\u8232\u823A\u823C\u823D\u823F"],["c580","\u8240\u8241\u8242\u8243\u8245\u8246\u8248\u824A\u824C\u824D\u824E\u8250",7,"\u8259\u825B\u825C\u825D\u825E\u8260",7,"\u8269\u62E7\u6CDE\u725B\u626D\u94AE\u7EBD\u8113\u6D53\u519C\u5F04\u5974\u52AA\u6012\u5973\u6696\u8650\u759F\u632A\u61E6\u7CEF\u8BFA\u54E6\u6B27\u9E25\u6BB4\u85D5\u5455\u5076\u6CA4\u556A\u8DB4\u722C\u5E15\u6015\u7436\u62CD\u6392\u724C\u5F98\u6E43\u6D3E\u6500\u6F58\u76D8\u78D0\u76FC\u7554\u5224\u53DB\u4E53\u5E9E\u65C1\u802A\u80D6\u629B\u5486\u5228\u70AE\u888D\u8DD1\u6CE1\u5478\u80DA\u57F9\u88F4\u8D54\u966A\u914D\u4F69\u6C9B\u55B7\u76C6\u7830\u62A8\u70F9\u6F8E\u5F6D\u84EC\u68DA\u787C\u7BF7\u81A8\u670B\u9E4F\u6367\u78B0\u576F\u7812\u9739\u6279\u62AB\u5288\u7435\u6BD7"],["c640","\u826A\u826B\u826C\u826D\u8271\u8275\u8276\u8277\u8278\u827B\u827C\u8280\u8281\u8283\u8285\u8286\u8287\u8289\u828C\u8290\u8293\u8294\u8295\u8296\u829A\u829B\u829E\u82A0\u82A2\u82A3\u82A7\u82B2\u82B5\u82B6\u82BA\u82BB\u82BC\u82BF\u82C0\u82C2\u82C3\u82C5\u82C6\u82C9\u82D0\u82D6\u82D9\u82DA\u82DD\u82E2\u82E7\u82E8\u82E9\u82EA\u82EC\u82ED\u82EE\u82F0\u82F2\u82F3\u82F5\u82F6\u82F8"],["c680","\u82FA\u82FC",4,"\u830A\u830B\u830D\u8310\u8312\u8313\u8316\u8318\u8319\u831D",9,"\u8329\u832A\u832E\u8330\u8332\u8337\u833B\u833D\u5564\u813E\u75B2\u76AE\u5339\u75DE\u50FB\u5C41\u8B6C\u7BC7\u504F\u7247\u9A97\u98D8\u6F02\u74E2\u7968\u6487\u77A5\u62FC\u9891\u8D2B\u54C1\u8058\u4E52\u576A\u82F9\u840D\u5E73\u51ED\u74F6\u8BC4\u5C4F\u5761\u6CFC\u9887\u5A46\u7834\u9B44\u8FEB\u7C95\u5256\u6251\u94FA\u4EC6\u8386\u8461\u83E9\u84B2\u57D4\u6734\u5703\u666E\u6D66\u8C31\u66DD\u7011\u671F\u6B3A\u6816\u621A\u59BB\u4E03\u51C4\u6F06\u67D2\u6C8F\u5176\u68CB\u5947\u6B67\u7566\u5D0E\u8110\u9F50\u65D7\u7948\u7941\u9A91\u8D77\u5C82\u4E5E\u4F01\u542F\u5951\u780C\u5668\u6C14\u8FC4\u5F03\u6C7D\u6CE3\u8BAB\u6390"],["c740","\u833E\u833F\u8341\u8342\u8344\u8345\u8348\u834A",4,"\u8353\u8355",4,"\u835D\u8362\u8370",6,"\u8379\u837A\u837E",6,"\u8387\u8388\u838A\u838B\u838C\u838D\u838F\u8390\u8391\u8394\u8395\u8396\u8397\u8399\u839A\u839D\u839F\u83A1",6,"\u83AC\u83AD\u83AE"],["c780","\u83AF\u83B5\u83BB\u83BE\u83BF\u83C2\u83C3\u83C4\u83C6\u83C8\u83C9\u83CB\u83CD\u83CE\u83D0\u83D1\u83D2\u83D3\u83D5\u83D7\u83D9\u83DA\u83DB\u83DE\u83E2\u83E3\u83E4\u83E6\u83E7\u83E8\u83EB\u83EC\u83ED\u6070\u6D3D\u7275\u6266\u948E\u94C5\u5343\u8FC1\u7B7E\u4EDF\u8C26\u4E7E\u9ED4\u94B1\u94B3\u524D\u6F5C\u9063\u6D45\u8C34\u5811\u5D4C\u6B20\u6B49\u67AA\u545B\u8154\u7F8C\u5899\u8537\u5F3A\u62A2\u6A47\u9539\u6572\u6084\u6865\u77A7\u4E54\u4FA8\u5DE7\u9798\u64AC\u7FD8\u5CED\u4FCF\u7A8D\u5207\u8304\u4E14\u602F\u7A83\u94A6\u4FB5\u4EB2\u79E6\u7434\u52E4\u82B9\u64D2\u79BD\u5BDD\u6C81\u9752\u8F7B\u6C22\u503E\u537F\u6E05\u64CE\u6674\u6C30\u60C5\u9877\u8BF7\u5E86\u743C\u7A77\u79CB\u4E18\u90B1\u7403\u6C42\u56DA\u914B\u6CC5\u8D8B\u533A\u86C6\u66F2\u8EAF\u5C48\u9A71\u6E20"],["c840","\u83EE\u83EF\u83F3",4,"\u83FA\u83FB\u83FC\u83FE\u83FF\u8400\u8402\u8405\u8407\u8408\u8409\u840A\u8410\u8412",5,"\u8419\u841A\u841B\u841E",5,"\u8429",7,"\u8432",5,"\u8439\u843A\u843B\u843E",7,"\u8447\u8448\u8449"],["c880","\u844A",6,"\u8452",4,"\u8458\u845D\u845E\u845F\u8460\u8462\u8464",4,"\u846A\u846E\u846F\u8470\u8472\u8474\u8477\u8479\u847B\u847C\u53D6\u5A36\u9F8B\u8DA3\u53BB\u5708\u98A7\u6743\u919B\u6CC9\u5168\u75CA\u62F3\u72AC\u5238\u529D\u7F3A\u7094\u7638\u5374\u9E4A\u69B7\u786E\u96C0\u88D9\u7FA4\u7136\u71C3\u5189\u67D3\u74E4\u58E4\u6518\u56B7\u8BA9\u9976\u6270\u7ED5\u60F9\u70ED\u58EC\u4EC1\u4EBA\u5FCD\u97E7\u4EFB\u8BA4\u5203\u598A\u7EAB\u6254\u4ECD\u65E5\u620E\u8338\u84C9\u8363\u878D\u7194\u6EB6\u5BB9\u7ED2\u5197\u63C9\u67D4\u8089\u8339\u8815\u5112\u5B7A\u5982\u8FB1\u4E73\u6C5D\u5165\u8925\u8F6F\u962E\u854A\u745E\u9510\u95F0\u6DA6\u82E5\u5F31\u6492\u6D12\u8428\u816E\u9CC3\u585E\u8D5B\u4E09\u53C1"],["c940","\u847D",4,"\u8483\u8484\u8485\u8486\u848A\u848D\u848F",7,"\u8498\u849A\u849B\u849D\u849E\u849F\u84A0\u84A2",12,"\u84B0\u84B1\u84B3\u84B5\u84B6\u84B7\u84BB\u84BC\u84BE\u84C0\u84C2\u84C3\u84C5\u84C6\u84C7\u84C8\u84CB\u84CC\u84CE\u84CF\u84D2\u84D4\u84D5\u84D7"],["c980","\u84D8",4,"\u84DE\u84E1\u84E2\u84E4\u84E7",4,"\u84ED\u84EE\u84EF\u84F1",10,"\u84FD\u84FE\u8500\u8501\u8502\u4F1E\u6563\u6851\u55D3\u4E27\u6414\u9A9A\u626B\u5AC2\u745F\u8272\u6DA9\u68EE\u50E7\u838E\u7802\u6740\u5239\u6C99\u7EB1\u50BB\u5565\u715E\u7B5B\u6652\u73CA\u82EB\u6749\u5C71\u5220\u717D\u886B\u95EA\u9655\u64C5\u8D61\u81B3\u5584\u6C55\u6247\u7F2E\u5892\u4F24\u5546\u8D4F\u664C\u4E0A\u5C1A\u88F3\u68A2\u634E\u7A0D\u70E7\u828D\u52FA\u97F6\u5C11\u54E8\u90B5\u7ECD\u5962\u8D4A\u86C7\u820C\u820D\u8D66\u6444\u5C04\u6151\u6D89\u793E\u8BBE\u7837\u7533\u547B\u4F38\u8EAB\u6DF1\u5A20\u7EC5\u795E\u6C88\u5BA1\u5A76\u751A\u80BE\u614E\u6E17\u58F0\u751F\u7525\u7272\u5347\u7EF3"],["ca40","\u8503",8,"\u850D\u850E\u850F\u8510\u8512\u8514\u8515\u8516\u8518\u8519\u851B\u851C\u851D\u851E\u8520\u8522",8,"\u852D",9,"\u853E",4,"\u8544\u8545\u8546\u8547\u854B",10],["ca80","\u8557\u8558\u855A\u855B\u855C\u855D\u855F",4,"\u8565\u8566\u8567\u8569",8,"\u8573\u8575\u8576\u8577\u8578\u857C\u857D\u857F\u8580\u8581\u7701\u76DB\u5269\u80DC\u5723\u5E08\u5931\u72EE\u65BD\u6E7F\u8BD7\u5C38\u8671\u5341\u77F3\u62FE\u65F6\u4EC0\u98DF\u8680\u5B9E\u8BC6\u53F2\u77E2\u4F7F\u5C4E\u9A76\u59CB\u5F0F\u793A\u58EB\u4E16\u67FF\u4E8B\u62ED\u8A93\u901D\u52BF\u662F\u55DC\u566C\u9002\u4ED5\u4F8D\u91CA\u9970\u6C0F\u5E02\u6043\u5BA4\u89C6\u8BD5\u6536\u624B\u9996\u5B88\u5BFF\u6388\u552E\u53D7\u7626\u517D\u852C\u67A2\u68B3\u6B8A\u6292\u8F93\u53D4\u8212\u6DD1\u758F\u4E66\u8D4E\u5B70\u719F\u85AF\u6691\u66D9\u7F72\u8700\u9ECD\u9F20\u5C5E\u672F\u8FF0\u6811\u675F\u620D\u7AD6\u5885\u5EB6\u6570\u6F31"],["cb40","\u8582\u8583\u8586\u8588",6,"\u8590",10,"\u859D",6,"\u85A5\u85A6\u85A7\u85A9\u85AB\u85AC\u85AD\u85B1",5,"\u85B8\u85BA",6,"\u85C2",6,"\u85CA",4,"\u85D1\u85D2"],["cb80","\u85D4\u85D6",5,"\u85DD",6,"\u85E5\u85E6\u85E7\u85E8\u85EA",14,"\u6055\u5237\u800D\u6454\u8870\u7529\u5E05\u6813\u62F4\u971C\u53CC\u723D\u8C01\u6C34\u7761\u7A0E\u542E\u77AC\u987A\u821C\u8BF4\u7855\u6714\u70C1\u65AF\u6495\u5636\u601D\u79C1\u53F8\u4E1D\u6B7B\u8086\u5BFA\u55E3\u56DB\u4F3A\u4F3C\u9972\u5DF3\u677E\u8038\u6002\u9882\u9001\u5B8B\u8BBC\u8BF5\u641C\u8258\u64DE\u55FD\u82CF\u9165\u4FD7\u7D20\u901F\u7C9F\u50F3\u5851\u6EAF\u5BBF\u8BC9\u8083\u9178\u849C\u7B97\u867D\u968B\u968F\u7EE5\u9AD3\u788E\u5C81\u7A57\u9042\u96A7\u795F\u5B59\u635F\u7B0B\u84D1\u68AD\u5506\u7F29\u7410\u7D22\u9501\u6240\u584C\u4ED6\u5B83\u5979\u5854"],["cc40","\u85F9\u85FA\u85FC\u85FD\u85FE\u8600",4,"\u8606",10,"\u8612\u8613\u8614\u8615\u8617",15,"\u8628\u862A",13,"\u8639\u863A\u863B\u863D\u863E\u863F\u8640"],["cc80","\u8641",11,"\u8652\u8653\u8655",4,"\u865B\u865C\u865D\u865F\u8660\u8661\u8663",7,"\u736D\u631E\u8E4B\u8E0F\u80CE\u82D4\u62AC\u53F0\u6CF0\u915E\u592A\u6001\u6C70\u574D\u644A\u8D2A\u762B\u6EE9\u575B\u6A80\u75F0\u6F6D\u8C2D\u8C08\u5766\u6BEF\u8892\u78B3\u63A2\u53F9\u70AD\u6C64\u5858\u642A\u5802\u68E0\u819B\u5510\u7CD6\u5018\u8EBA\u6DCC\u8D9F\u70EB\u638F\u6D9B\u6ED4\u7EE6\u8404\u6843\u9003\u6DD8\u9676\u8BA8\u5957\u7279\u85E4\u817E\u75BC\u8A8A\u68AF\u5254\u8E22\u9511\u63D0\u9898\u8E44\u557C\u4F53\u66FF\u568F\u60D5\u6D95\u5243\u5C49\u5929\u6DFB\u586B\u7530\u751C\u606C\u8214\u8146\u6311\u6761\u8FE2\u773A\u8DF3\u8D34\u94C1\u5E16\u5385\u542C\u70C3"],["cd40","\u866D\u866F\u8670\u8672",6,"\u8683",6,"\u868E",4,"\u8694\u8696",5,"\u869E",4,"\u86A5\u86A6\u86AB\u86AD\u86AE\u86B2\u86B3\u86B7\u86B8\u86B9\u86BB",4,"\u86C1\u86C2\u86C3\u86C5\u86C8\u86CC\u86CD\u86D2\u86D3\u86D5\u86D6\u86D7\u86DA\u86DC"],["cd80","\u86DD\u86E0\u86E1\u86E2\u86E3\u86E5\u86E6\u86E7\u86E8\u86EA\u86EB\u86EC\u86EF\u86F5\u86F6\u86F7\u86FA\u86FB\u86FC\u86FD\u86FF\u8701\u8704\u8705\u8706\u870B\u870C\u870E\u870F\u8710\u8711\u8714\u8716\u6C40\u5EF7\u505C\u4EAD\u5EAD\u633A\u8247\u901A\u6850\u916E\u77B3\u540C\u94DC\u5F64\u7AE5\u6876\u6345\u7B52\u7EDF\u75DB\u5077\u6295\u5934\u900F\u51F8\u79C3\u7A81\u56FE\u5F92\u9014\u6D82\u5C60\u571F\u5410\u5154\u6E4D\u56E2\u63A8\u9893\u817F\u8715\u892A\u9000\u541E\u5C6F\u81C0\u62D6\u6258\u8131\u9E35\u9640\u9A6E\u9A7C\u692D\u59A5\u62D3\u553E\u6316\u54C7\u86D9\u6D3C\u5A03\u74E6\u889C\u6B6A\u5916\u8C4C\u5F2F\u6E7E\u73A9\u987D\u4E38\u70F7\u5B8C\u7897\u633D\u665A\u7696\u60CB\u5B9B\u5A49\u4E07\u8155\u6C6A\u738B\u4EA1\u6789\u7F51\u5F80\u65FA\u671B\u5FD8\u5984\u5A01"],["ce40","\u8719\u871B\u871D\u871F\u8720\u8724\u8726\u8727\u8728\u872A\u872B\u872C\u872D\u872F\u8730\u8732\u8733\u8735\u8736\u8738\u8739\u873A\u873C\u873D\u8740",6,"\u874A\u874B\u874D\u874F\u8750\u8751\u8752\u8754\u8755\u8756\u8758\u875A",5,"\u8761\u8762\u8766",7,"\u876F\u8771\u8772\u8773\u8775"],["ce80","\u8777\u8778\u8779\u877A\u877F\u8780\u8781\u8784\u8786\u8787\u8789\u878A\u878C\u878E",4,"\u8794\u8795\u8796\u8798",6,"\u87A0",4,"\u5DCD\u5FAE\u5371\u97E6\u8FDD\u6845\u56F4\u552F\u60DF\u4E3A\u6F4D\u7EF4\u82C7\u840E\u59D4\u4F1F\u4F2A\u5C3E\u7EAC\u672A\u851A\u5473\u754F\u80C3\u5582\u9B4F\u4F4D\u6E2D\u8C13\u5C09\u6170\u536B\u761F\u6E29\u868A\u6587\u95FB\u7EB9\u543B\u7A33\u7D0A\u95EE\u55E1\u7FC1\u74EE\u631D\u8717\u6DA1\u7A9D\u6211\u65A1\u5367\u63E1\u6C83\u5DEB\u545C\u94A8\u4E4C\u6C61\u8BEC\u5C4B\u65E0\u829C\u68A7\u543E\u5434\u6BCB\u6B66\u4E94\u6342\u5348\u821E\u4F0D\u4FAE\u575E\u620A\u96FE\u6664\u7269\u52FF\u52A1\u609F\u8BEF\u6614\u7199\u6790\u897F\u7852\u77FD\u6670\u563B\u5438\u9521\u727A"],["cf40","\u87A5\u87A6\u87A7\u87A9\u87AA\u87AE\u87B0\u87B1\u87B2\u87B4\u87B6\u87B7\u87B8\u87B9\u87BB\u87BC\u87BE\u87BF\u87C1",4,"\u87C7\u87C8\u87C9\u87CC",4,"\u87D4",6,"\u87DC\u87DD\u87DE\u87DF\u87E1\u87E2\u87E3\u87E4\u87E6\u87E7\u87E8\u87E9\u87EB\u87EC\u87ED\u87EF",9],["cf80","\u87FA\u87FB\u87FC\u87FD\u87FF\u8800\u8801\u8802\u8804",5,"\u880B",7,"\u8814\u8817\u8818\u8819\u881A\u881C",4,"\u8823\u7A00\u606F\u5E0C\u6089\u819D\u5915\u60DC\u7184\u70EF\u6EAA\u6C50\u7280\u6A84\u88AD\u5E2D\u4E60\u5AB3\u559C\u94E3\u6D17\u7CFB\u9699\u620F\u7EC6\u778E\u867E\u5323\u971E\u8F96\u6687\u5CE1\u4FA0\u72ED\u4E0B\u53A6\u590F\u5413\u6380\u9528\u5148\u4ED9\u9C9C\u7EA4\u54B8\u8D24\u8854\u8237\u95F2\u6D8E\u5F26\u5ACC\u663E\u9669\u73B0\u732E\u53BF\u817A\u9985\u7FA1\u5BAA\u9677\u9650\u7EBF\u76F8\u53A2\u9576\u9999\u7BB1\u8944\u6E58\u4E61\u7FD4\u7965\u8BE6\u60F3\u54CD\u4EAB\u9879\u5DF7\u6A61\u50CF\u5411\u8C61\u8427\u785D\u9704\u524A\u54EE\u56A3\u9500\u6D88\u5BB5\u6DC6\u6653"],["d040","\u8824",13,"\u8833",5,"\u883A\u883B\u883D\u883E\u883F\u8841\u8842\u8843\u8846",5,"\u884E",5,"\u8855\u8856\u8858\u885A",6,"\u8866\u8867\u886A\u886D\u886F\u8871\u8873\u8874\u8875\u8876\u8878\u8879\u887A"],["d080","\u887B\u887C\u8880\u8883\u8886\u8887\u8889\u888A\u888C\u888E\u888F\u8890\u8891\u8893\u8894\u8895\u8897",4,"\u889D",4,"\u88A3\u88A5",5,"\u5C0F\u5B5D\u6821\u8096\u5578\u7B11\u6548\u6954\u4E9B\u6B47\u874E\u978B\u534F\u631F\u643A\u90AA\u659C\u80C1\u8C10\u5199\u68B0\u5378\u87F9\u61C8\u6CC4\u6CFB\u8C22\u5C51\u85AA\u82AF\u950C\u6B23\u8F9B\u65B0\u5FFB\u5FC3\u4FE1\u8845\u661F\u8165\u7329\u60FA\u5174\u5211\u578B\u5F62\u90A2\u884C\u9192\u5E78\u674F\u6027\u59D3\u5144\u51F6\u80F8\u5308\u6C79\u96C4\u718A\u4F11\u4FEE\u7F9E\u673D\u55C5\u9508\u79C0\u8896\u7EE3\u589F\u620C\u9700\u865A\u5618\u987B\u5F90\u8BB8\u84C4\u9157\u53D9\u65ED\u5E8F\u755C\u6064\u7D6E\u5A7F\u7EEA\u7EED\u8F69\u55A7\u5BA3\u60AC\u65CB\u7384"],["d140","\u88AC\u88AE\u88AF\u88B0\u88B2",4,"\u88B8\u88B9\u88BA\u88BB\u88BD\u88BE\u88BF\u88C0\u88C3\u88C4\u88C7\u88C8\u88CA\u88CB\u88CC\u88CD\u88CF\u88D0\u88D1\u88D3\u88D6\u88D7\u88DA",4,"\u88E0\u88E1\u88E6\u88E7\u88E9",6,"\u88F2\u88F5\u88F6\u88F7\u88FA\u88FB\u88FD\u88FF\u8900\u8901\u8903",5],["d180","\u8909\u890B",4,"\u8911\u8914",4,"\u891C",4,"\u8922\u8923\u8924\u8926\u8927\u8928\u8929\u892C\u892D\u892E\u892F\u8931\u8932\u8933\u8935\u8937\u9009\u7663\u7729\u7EDA\u9774\u859B\u5B66\u7A74\u96EA\u8840\u52CB\u718F\u5FAA\u65EC\u8BE2\u5BFB\u9A6F\u5DE1\u6B89\u6C5B\u8BAD\u8BAF\u900A\u8FC5\u538B\u62BC\u9E26\u9E2D\u5440\u4E2B\u82BD\u7259\u869C\u5D16\u8859\u6DAF\u96C5\u54D1\u4E9A\u8BB6\u7109\u54BD\u9609\u70DF\u6DF9\u76D0\u4E25\u7814\u8712\u5CA9\u5EF6\u8A00\u989C\u960E\u708E\u6CBF\u5944\u63A9\u773C\u884D\u6F14\u8273\u5830\u71D5\u538C\u781A\u96C1\u5501\u5F66\u7130\u5BB4\u8C1A\u9A8C\u6B83\u592E\u9E2F\u79E7\u6768\u626C\u4F6F\u75A1\u7F8A\u6D0B\u9633\u6C27\u4EF0\u75D2\u517B\u6837\u6F3E\u9080\u8170\u5996\u7476"],["d240","\u8938",8,"\u8942\u8943\u8945",24,"\u8960",5,"\u8967",19,"\u897C"],["d280","\u897D\u897E\u8980\u8982\u8984\u8985\u8987",26,"\u6447\u5C27\u9065\u7A91\u8C23\u59DA\u54AC\u8200\u836F\u8981\u8000\u6930\u564E\u8036\u7237\u91CE\u51B6\u4E5F\u9875\u6396\u4E1A\u53F6\u66F3\u814B\u591C\u6DB2\u4E00\u58F9\u533B\u63D6\u94F1\u4F9D\u4F0A\u8863\u9890\u5937\u9057\u79FB\u4EEA\u80F0\u7591\u6C82\u5B9C\u59E8\u5F5D\u6905\u8681\u501A\u5DF2\u4E59\u77E3\u4EE5\u827A\u6291\u6613\u9091\u5C79\u4EBF\u5F79\u81C6\u9038\u8084\u75AB\u4EA6\u88D4\u610F\u6BC5\u5FC6\u4E49\u76CA\u6EA2\u8BE3\u8BAE\u8C0A\u8BD1\u5F02\u7FFC\u7FCC\u7ECE\u8335\u836B\u56E0\u6BB7\u97F3\u9634\u59FB\u541F\u94F6\u6DEB\u5BC5\u996E\u5C39\u5F15\u9690"],["d340","\u89A2",30,"\u89C3\u89CD\u89D3\u89D4\u89D5\u89D7\u89D8\u89D9\u89DB\u89DD\u89DF\u89E0\u89E1\u89E2\u89E4\u89E7\u89E8\u89E9\u89EA\u89EC\u89ED\u89EE\u89F0\u89F1\u89F2\u89F4",6],["d380","\u89FB",4,"\u8A01",5,"\u8A08",21,"\u5370\u82F1\u6A31\u5A74\u9E70\u5E94\u7F28\u83B9\u8424\u8425\u8367\u8747\u8FCE\u8D62\u76C8\u5F71\u9896\u786C\u6620\u54DF\u62E5\u4F63\u81C3\u75C8\u5EB8\u96CD\u8E0A\u86F9\u548F\u6CF3\u6D8C\u6C38\u607F\u52C7\u7528\u5E7D\u4F18\u60A0\u5FE7\u5C24\u7531\u90AE\u94C0\u72B9\u6CB9\u6E38\u9149\u6709\u53CB\u53F3\u4F51\u91C9\u8BF1\u53C8\u5E7C\u8FC2\u6DE4\u4E8E\u76C2\u6986\u865E\u611A\u8206\u4F59\u4FDE\u903E\u9C7C\u6109\u6E1D\u6E14\u9685\u4E88\u5A31\u96E8\u4E0E\u5C7F\u79B9\u5B87\u8BED\u7FBD\u7389\u57DF\u828B\u90C1\u5401\u9047\u55BB\u5CEA\u5FA1\u6108\u6B32\u72F1\u80B2\u8A89"],["d440","\u8A1E",31,"\u8A3F",8,"\u8A49",21],["d480","\u8A5F",25,"\u8A7A",6,"\u6D74\u5BD3\u88D5\u9884\u8C6B\u9A6D\u9E33\u6E0A\u51A4\u5143\u57A3\u8881\u539F\u63F4\u8F95\u56ED\u5458\u5706\u733F\u6E90\u7F18\u8FDC\u82D1\u613F\u6028\u9662\u66F0\u7EA6\u8D8A\u8DC3\u94A5\u5CB3\u7CA4\u6708\u60A6\u9605\u8018\u4E91\u90E7\u5300\u9668\u5141\u8FD0\u8574\u915D\u6655\u97F5\u5B55\u531D\u7838\u6742\u683D\u54C9\u707E\u5BB0\u8F7D\u518D\u5728\u54B1\u6512\u6682\u8D5E\u8D43\u810F\u846C\u906D\u7CDF\u51FF\u85FB\u67A3\u65E9\u6FA1\u86A4\u8E81\u566A\u9020\u7682\u7076\u71E5\u8D23\u62E9\u5219\u6CFD\u8D3C\u600E\u589E\u618E\u66FE\u8D60\u624E\u55B3\u6E23\u672D\u8F67"],["d540","\u8A81",7,"\u8A8B",7,"\u8A94",46],["d580","\u8AC3",32,"\u94E1\u95F8\u7728\u6805\u69A8\u548B\u4E4D\u70B8\u8BC8\u6458\u658B\u5B85\u7A84\u503A\u5BE8\u77BB\u6BE1\u8A79\u7C98\u6CBE\u76CF\u65A9\u8F97\u5D2D\u5C55\u8638\u6808\u5360\u6218\u7AD9\u6E5B\u7EFD\u6A1F\u7AE0\u5F70\u6F33\u5F20\u638C\u6DA8\u6756\u4E08\u5E10\u8D26\u4ED7\u80C0\u7634\u969C\u62DB\u662D\u627E\u6CBC\u8D75\u7167\u7F69\u5146\u8087\u53EC\u906E\u6298\u54F2\u86F0\u8F99\u8005\u9517\u8517\u8FD9\u6D59\u73CD\u659F\u771F\u7504\u7827\u81FB\u8D1E\u9488\u4FA6\u6795\u75B9\u8BCA\u9707\u632F\u9547\u9635\u84B8\u6323\u7741\u5F81\u72F0\u4E89\u6014\u6574\u62EF\u6B63\u653F"],["d640","\u8AE4",34,"\u8B08",27],["d680","\u8B24\u8B25\u8B27",30,"\u5E27\u75C7\u90D1\u8BC1\u829D\u679D\u652F\u5431\u8718\u77E5\u80A2\u8102\u6C41\u4E4B\u7EC7\u804C\u76F4\u690D\u6B96\u6267\u503C\u4F84\u5740\u6307\u6B62\u8DBE\u53EA\u65E8\u7EB8\u5FD7\u631A\u63B7\u81F3\u81F4\u7F6E\u5E1C\u5CD9\u5236\u667A\u79E9\u7A1A\u8D28\u7099\u75D4\u6EDE\u6CBB\u7A92\u4E2D\u76C5\u5FE0\u949F\u8877\u7EC8\u79CD\u80BF\u91CD\u4EF2\u4F17\u821F\u5468\u5DDE\u6D32\u8BCC\u7CA5\u8F74\u8098\u5E1A\u5492\u76B1\u5B99\u663C\u9AA4\u73E0\u682A\u86DB\u6731\u732A\u8BF8\u8BDB\u9010\u7AF9\u70DB\u716E\u62C4\u77A9\u5631\u4E3B\u8457\u67F1\u52A9\u86C0\u8D2E\u94F8\u7B51"],["d740","\u8B46",31,"\u8B67",4,"\u8B6D",25],["d780","\u8B87",24,"\u8BAC\u8BB1\u8BBB\u8BC7\u8BD0\u8BEA\u8C09\u8C1E\u4F4F\u6CE8\u795D\u9A7B\u6293\u722A\u62FD\u4E13\u7816\u8F6C\u64B0\u8D5A\u7BC6\u6869\u5E84\u88C5\u5986\u649E\u58EE\u72B6\u690E\u9525\u8FFD\u8D58\u5760\u7F00\u8C06\u51C6\u6349\u62D9\u5353\u684C\u7422\u8301\u914C\u5544\u7740\u707C\u6D4A\u5179\u54A8\u8D44\u59FF\u6ECB\u6DC4\u5B5C\u7D2B\u4ED4\u7C7D\u6ED3\u5B50\u81EA\u6E0D\u5B57\u9B03\u68D5\u8E2A\u5B97\u7EFC\u603B\u7EB5\u90B9\u8D70\u594F\u63CD\u79DF\u8DB3\u5352\u65CF\u7956\u8BC5\u963B\u7EC4\u94BB\u7E82\u5634\u9189\u6700\u7F6A\u5C0A\u9075\u6628\u5DE6\u4F50\u67DE\u505A\u4F5C\u5750\u5EA7"],["d840","\u8C38",8,"\u8C42\u8C43\u8C44\u8C45\u8C48\u8C4A\u8C4B\u8C4D",7,"\u8C56\u8C57\u8C58\u8C59\u8C5B",5,"\u8C63",6,"\u8C6C",6,"\u8C74\u8C75\u8C76\u8C77\u8C7B",6,"\u8C83\u8C84\u8C86\u8C87"],["d880","\u8C88\u8C8B\u8C8D",6,"\u8C95\u8C96\u8C97\u8C99",20,"\u4E8D\u4E0C\u5140\u4E10\u5EFF\u5345\u4E15\u4E98\u4E1E\u9B32\u5B6C\u5669\u4E28\u79BA\u4E3F\u5315\u4E47\u592D\u723B\u536E\u6C10\u56DF\u80E4\u9997\u6BD3\u777E\u9F17\u4E36\u4E9F\u9F10\u4E5C\u4E69\u4E93\u8288\u5B5B\u556C\u560F\u4EC4\u538D\u539D\u53A3\u53A5\u53AE\u9765\u8D5D\u531A\u53F5\u5326\u532E\u533E\u8D5C\u5366\u5363\u5202\u5208\u520E\u522D\u5233\u523F\u5240\u524C\u525E\u5261\u525C\u84AF\u527D\u5282\u5281\u5290\u5293\u5182\u7F54\u4EBB\u4EC3\u4EC9\u4EC2\u4EE8\u4EE1\u4EEB\u4EDE\u4F1B\u4EF3\u4F22\u4F64\u4EF5\u4F25\u4F27\u4F09\u4F2B\u4F5E\u4F67\u6538\u4F5A\u4F5D"],["d940","\u8CAE",62],["d980","\u8CED",32,"\u4F5F\u4F57\u4F32\u4F3D\u4F76\u4F74\u4F91\u4F89\u4F83\u4F8F\u4F7E\u4F7B\u4FAA\u4F7C\u4FAC\u4F94\u4FE6\u4FE8\u4FEA\u4FC5\u4FDA\u4FE3\u4FDC\u4FD1\u4FDF\u4FF8\u5029\u504C\u4FF3\u502C\u500F\u502E\u502D\u4FFE\u501C\u500C\u5025\u5028\u507E\u5043\u5055\u5048\u504E\u506C\u507B\u50A5\u50A7\u50A9\u50BA\u50D6\u5106\u50ED\u50EC\u50E6\u50EE\u5107\u510B\u4EDD\u6C3D\u4F58\u4F65\u4FCE\u9FA0\u6C46\u7C74\u516E\u5DFD\u9EC9\u9998\u5181\u5914\u52F9\u530D\u8A07\u5310\u51EB\u5919\u5155\u4EA0\u5156\u4EB3\u886E\u88A4\u4EB5\u8114\u88D2\u7980\u5B34\u8803\u7FB8\u51AB\u51B1\u51BD\u51BC"],["da40","\u8D0E",14,"\u8D20\u8D51\u8D52\u8D57\u8D5F\u8D65\u8D68\u8D69\u8D6A\u8D6C\u8D6E\u8D6F\u8D71\u8D72\u8D78",8,"\u8D82\u8D83\u8D86\u8D87\u8D88\u8D89\u8D8C",4,"\u8D92\u8D93\u8D95",9,"\u8DA0\u8DA1"],["da80","\u8DA2\u8DA4",12,"\u8DB2\u8DB6\u8DB7\u8DB9\u8DBB\u8DBD\u8DC0\u8DC1\u8DC2\u8DC5\u8DC7\u8DC8\u8DC9\u8DCA\u8DCD\u8DD0\u8DD2\u8DD3\u8DD4\u51C7\u5196\u51A2\u51A5\u8BA0\u8BA6\u8BA7\u8BAA\u8BB4\u8BB5\u8BB7\u8BC2\u8BC3\u8BCB\u8BCF\u8BCE\u8BD2\u8BD3\u8BD4\u8BD6\u8BD8\u8BD9\u8BDC\u8BDF\u8BE0\u8BE4\u8BE8\u8BE9\u8BEE\u8BF0\u8BF3\u8BF6\u8BF9\u8BFC\u8BFF\u8C00\u8C02\u8C04\u8C07\u8C0C\u8C0F\u8C11\u8C12\u8C14\u8C15\u8C16\u8C19\u8C1B\u8C18\u8C1D\u8C1F\u8C20\u8C21\u8C25\u8C27\u8C2A\u8C2B\u8C2E\u8C2F\u8C32\u8C33\u8C35\u8C36\u5369\u537A\u961D\u9622\u9621\u9631\u962A\u963D\u963C\u9642\u9649\u9654\u965F\u9667\u966C\u9672\u9674\u9688\u968D\u9697\u96B0\u9097\u909B\u909D\u9099\u90AC\u90A1\u90B4\u90B3\u90B6\u90BA"],["db40","\u8DD5\u8DD8\u8DD9\u8DDC\u8DE0\u8DE1\u8DE2\u8DE5\u8DE6\u8DE7\u8DE9\u8DED\u8DEE\u8DF0\u8DF1\u8DF2\u8DF4\u8DF6\u8DFC\u8DFE",6,"\u8E06\u8E07\u8E08\u8E0B\u8E0D\u8E0E\u8E10\u8E11\u8E12\u8E13\u8E15",7,"\u8E20\u8E21\u8E24",4,"\u8E2B\u8E2D\u8E30\u8E32\u8E33\u8E34\u8E36\u8E37\u8E38\u8E3B\u8E3C\u8E3E"],["db80","\u8E3F\u8E43\u8E45\u8E46\u8E4C",4,"\u8E53",5,"\u8E5A",11,"\u8E67\u8E68\u8E6A\u8E6B\u8E6E\u8E71\u90B8\u90B0\u90CF\u90C5\u90BE\u90D0\u90C4\u90C7\u90D3\u90E6\u90E2\u90DC\u90D7\u90DB\u90EB\u90EF\u90FE\u9104\u9122\u911E\u9123\u9131\u912F\u9139\u9143\u9146\u520D\u5942\u52A2\u52AC\u52AD\u52BE\u54FF\u52D0\u52D6\u52F0\u53DF\u71EE\u77CD\u5EF4\u51F5\u51FC\u9B2F\u53B6\u5F01\u755A\u5DEF\u574C\u57A9\u57A1\u587E\u58BC\u58C5\u58D1\u5729\u572C\u572A\u5733\u5739\u572E\u572F\u575C\u573B\u5742\u5769\u5785\u576B\u5786\u577C\u577B\u5768\u576D\u5776\u5773\u57AD\u57A4\u578C\u57B2\u57CF\u57A7\u57B4\u5793\u57A0\u57D5\u57D8\u57DA\u57D9\u57D2\u57B8\u57F4\u57EF\u57F8\u57E4\u57DD"],["dc40","\u8E73\u8E75\u8E77",4,"\u8E7D\u8E7E\u8E80\u8E82\u8E83\u8E84\u8E86\u8E88",6,"\u8E91\u8E92\u8E93\u8E95",6,"\u8E9D\u8E9F",11,"\u8EAD\u8EAE\u8EB0\u8EB1\u8EB3",6,"\u8EBB",7],["dc80","\u8EC3",10,"\u8ECF",21,"\u580B\u580D\u57FD\u57ED\u5800\u581E\u5819\u5844\u5820\u5865\u586C\u5881\u5889\u589A\u5880\u99A8\u9F19\u61FF\u8279\u827D\u827F\u828F\u828A\u82A8\u8284\u828E\u8291\u8297\u8299\u82AB\u82B8\u82BE\u82B0\u82C8\u82CA\u82E3\u8298\u82B7\u82AE\u82CB\u82CC\u82C1\u82A9\u82B4\u82A1\u82AA\u829F\u82C4\u82CE\u82A4\u82E1\u8309\u82F7\u82E4\u830F\u8307\u82DC\u82F4\u82D2\u82D8\u830C\u82FB\u82D3\u8311\u831A\u8306\u8314\u8315\u82E0\u82D5\u831C\u8351\u835B\u835C\u8308\u8392\u833C\u8334\u8331\u839B\u835E\u832F\u834F\u8347\u8343\u835F\u8340\u8317\u8360\u832D\u833A\u8333\u8366\u8365"],["dd40","\u8EE5",62],["dd80","\u8F24",32,"\u8368\u831B\u8369\u836C\u836A\u836D\u836E\u83B0\u8378\u83B3\u83B4\u83A0\u83AA\u8393\u839C\u8385\u837C\u83B6\u83A9\u837D\u83B8\u837B\u8398\u839E\u83A8\u83BA\u83BC\u83C1\u8401\u83E5\u83D8\u5807\u8418\u840B\u83DD\u83FD\u83D6\u841C\u8438\u8411\u8406\u83D4\u83DF\u840F\u8403\u83F8\u83F9\u83EA\u83C5\u83C0\u8426\u83F0\u83E1\u845C\u8451\u845A\u8459\u8473\u8487\u8488\u847A\u8489\u8478\u843C\u8446\u8469\u8476\u848C\u848E\u8431\u846D\u84C1\u84CD\u84D0\u84E6\u84BD\u84D3\u84CA\u84BF\u84BA\u84E0\u84A1\u84B9\u84B4\u8497\u84E5\u84E3\u850C\u750D\u8538\u84F0\u8539\u851F\u853A"],["de40","\u8F45",32,"\u8F6A\u8F80\u8F8C\u8F92\u8F9D\u8FA0\u8FA1\u8FA2\u8FA4\u8FA5\u8FA6\u8FA7\u8FAA\u8FAC\u8FAD\u8FAE\u8FAF\u8FB2\u8FB3\u8FB4\u8FB5\u8FB7\u8FB8\u8FBA\u8FBB\u8FBC\u8FBF\u8FC0\u8FC3\u8FC6"],["de80","\u8FC9",4,"\u8FCF\u8FD2\u8FD6\u8FD7\u8FDA\u8FE0\u8FE1\u8FE3\u8FE7\u8FEC\u8FEF\u8FF1\u8FF2\u8FF4\u8FF5\u8FF6\u8FFA\u8FFB\u8FFC\u8FFE\u8FFF\u9007\u9008\u900C\u900E\u9013\u9015\u9018\u8556\u853B\u84FF\u84FC\u8559\u8548\u8568\u8564\u855E\u857A\u77A2\u8543\u8572\u857B\u85A4\u85A8\u8587\u858F\u8579\u85AE\u859C\u8585\u85B9\u85B7\u85B0\u85D3\u85C1\u85DC\u85FF\u8627\u8605\u8629\u8616\u863C\u5EFE\u5F08\u593C\u5941\u8037\u5955\u595A\u5958\u530F\u5C22\u5C25\u5C2C\u5C34\u624C\u626A\u629F\u62BB\u62CA\u62DA\u62D7\u62EE\u6322\u62F6\u6339\u634B\u6343\u63AD\u63F6\u6371\u637A\u638E\u63B4\u636D\u63AC\u638A\u6369\u63AE\u63BC\u63F2\u63F8\u63E0\u63FF\u63C4\u63DE\u63CE\u6452\u63C6\u63BE\u6445\u6441\u640B\u641B\u6420\u640C\u6426\u6421\u645E\u6484\u646D\u6496"],["df40","\u9019\u901C\u9023\u9024\u9025\u9027",5,"\u9030",4,"\u9037\u9039\u903A\u903D\u903F\u9040\u9043\u9045\u9046\u9048",4,"\u904E\u9054\u9055\u9056\u9059\u905A\u905C",5,"\u9064\u9066\u9067\u9069\u906A\u906B\u906C\u906F",4,"\u9076",6,"\u907E\u9081"],["df80","\u9084\u9085\u9086\u9087\u9089\u908A\u908C",4,"\u9092\u9094\u9096\u9098\u909A\u909C\u909E\u909F\u90A0\u90A4\u90A5\u90A7\u90A8\u90A9\u90AB\u90AD\u90B2\u90B7\u90BC\u90BD\u90BF\u90C0\u647A\u64B7\u64B8\u6499\u64BA\u64C0\u64D0\u64D7\u64E4\u64E2\u6509\u6525\u652E\u5F0B\u5FD2\u7519\u5F11\u535F\u53F1\u53FD\u53E9\u53E8\u53FB\u5412\u5416\u5406\u544B\u5452\u5453\u5454\u5456\u5443\u5421\u5457\u5459\u5423\u5432\u5482\u5494\u5477\u5471\u5464\u549A\u549B\u5484\u5476\u5466\u549D\u54D0\u54AD\u54C2\u54B4\u54D2\u54A7\u54A6\u54D3\u54D4\u5472\u54A3\u54D5\u54BB\u54BF\u54CC\u54D9\u54DA\u54DC\u54A9\u54AA\u54A4\u54DD\u54CF\u54DE\u551B\u54E7\u5520\u54FD\u5514\u54F3\u5522\u5523\u550F\u5511\u5527\u552A\u5567\u558F\u55B5\u5549\u556D\u5541\u5555\u553F\u5550\u553C"],["e040","\u90C2\u90C3\u90C6\u90C8\u90C9\u90CB\u90CC\u90CD\u90D2\u90D4\u90D5\u90D6\u90D8\u90D9\u90DA\u90DE\u90DF\u90E0\u90E3\u90E4\u90E5\u90E9\u90EA\u90EC\u90EE\u90F0\u90F1\u90F2\u90F3\u90F5\u90F6\u90F7\u90F9\u90FA\u90FB\u90FC\u90FF\u9100\u9101\u9103\u9105",19,"\u911A\u911B\u911C"],["e080","\u911D\u911F\u9120\u9121\u9124",10,"\u9130\u9132",6,"\u913A",8,"\u9144\u5537\u5556\u5575\u5576\u5577\u5533\u5530\u555C\u558B\u55D2\u5583\u55B1\u55B9\u5588\u5581\u559F\u557E\u55D6\u5591\u557B\u55DF\u55BD\u55BE\u5594\u5599\u55EA\u55F7\u55C9\u561F\u55D1\u55EB\u55EC\u55D4\u55E6\u55DD\u55C4\u55EF\u55E5\u55F2\u55F3\u55CC\u55CD\u55E8\u55F5\u55E4\u8F94\u561E\u5608\u560C\u5601\u5624\u5623\u55FE\u5600\u5627\u562D\u5658\u5639\u5657\u562C\u564D\u5662\u5659\u565C\u564C\u5654\u5686\u5664\u5671\u566B\u567B\u567C\u5685\u5693\u56AF\u56D4\u56D7\u56DD\u56E1\u56F5\u56EB\u56F9\u56FF\u5704\u570A\u5709\u571C\u5E0F\u5E19\u5E14\u5E11\u5E31\u5E3B\u5E3C"],["e140","\u9145\u9147\u9148\u9151\u9153\u9154\u9155\u9156\u9158\u9159\u915B\u915C\u915F\u9160\u9166\u9167\u9168\u916B\u916D\u9173\u917A\u917B\u917C\u9180",4,"\u9186\u9188\u918A\u918E\u918F\u9193",6,"\u919C",5,"\u91A4",5,"\u91AB\u91AC\u91B0\u91B1\u91B2\u91B3\u91B6\u91B7\u91B8\u91B9\u91BB"],["e180","\u91BC",10,"\u91C8\u91CB\u91D0\u91D2",9,"\u91DD",8,"\u5E37\u5E44\u5E54\u5E5B\u5E5E\u5E61\u5C8C\u5C7A\u5C8D\u5C90\u5C96\u5C88\u5C98\u5C99\u5C91\u5C9A\u5C9C\u5CB5\u5CA2\u5CBD\u5CAC\u5CAB\u5CB1\u5CA3\u5CC1\u5CB7\u5CC4\u5CD2\u5CE4\u5CCB\u5CE5\u5D02\u5D03\u5D27\u5D26\u5D2E\u5D24\u5D1E\u5D06\u5D1B\u5D58\u5D3E\u5D34\u5D3D\u5D6C\u5D5B\u5D6F\u5D5D\u5D6B\u5D4B\u5D4A\u5D69\u5D74\u5D82\u5D99\u5D9D\u8C73\u5DB7\u5DC5\u5F73\u5F77\u5F82\u5F87\u5F89\u5F8C\u5F95\u5F99\u5F9C\u5FA8\u5FAD\u5FB5\u5FBC\u8862\u5F61\u72AD\u72B0\u72B4\u72B7\u72B8\u72C3\u72C1\u72CE\u72CD\u72D2\u72E8\u72EF\u72E9\u72F2\u72F4\u72F7\u7301\u72F3\u7303\u72FA"],["e240","\u91E6",62],["e280","\u9225",32,"\u72FB\u7317\u7313\u7321\u730A\u731E\u731D\u7315\u7322\u7339\u7325\u732C\u7338\u7331\u7350\u734D\u7357\u7360\u736C\u736F\u737E\u821B\u5925\u98E7\u5924\u5902\u9963\u9967",5,"\u9974\u9977\u997D\u9980\u9984\u9987\u998A\u998D\u9990\u9991\u9993\u9994\u9995\u5E80\u5E91\u5E8B\u5E96\u5EA5\u5EA0\u5EB9\u5EB5\u5EBE\u5EB3\u8D53\u5ED2\u5ED1\u5EDB\u5EE8\u5EEA\u81BA\u5FC4\u5FC9\u5FD6\u5FCF\u6003\u5FEE\u6004\u5FE1\u5FE4\u5FFE\u6005\u6006\u5FEA\u5FED\u5FF8\u6019\u6035\u6026\u601B\u600F\u600D\u6029\u602B\u600A\u603F\u6021\u6078\u6079\u607B\u607A\u6042"],["e340","\u9246",45,"\u9275",16],["e380","\u9286",7,"\u928F",24,"\u606A\u607D\u6096\u609A\u60AD\u609D\u6083\u6092\u608C\u609B\u60EC\u60BB\u60B1\u60DD\u60D8\u60C6\u60DA\u60B4\u6120\u6126\u6115\u6123\u60F4\u6100\u610E\u612B\u614A\u6175\u61AC\u6194\u61A7\u61B7\u61D4\u61F5\u5FDD\u96B3\u95E9\u95EB\u95F1\u95F3\u95F5\u95F6\u95FC\u95FE\u9603\u9604\u9606\u9608\u960A\u960B\u960C\u960D\u960F\u9612\u9615\u9616\u9617\u9619\u961A\u4E2C\u723F\u6215\u6C35\u6C54\u6C5C\u6C4A\u6CA3\u6C85\u6C90\u6C94\u6C8C\u6C68\u6C69\u6C74\u6C76\u6C86\u6CA9\u6CD0\u6CD4\u6CAD\u6CF7\u6CF8\u6CF1\u6CD7\u6CB2\u6CE0\u6CD6\u6CFA\u6CEB\u6CEE\u6CB1\u6CD3\u6CEF\u6CFE"],["e440","\u92A8",5,"\u92AF",24,"\u92C9",31],["e480","\u92E9",32,"\u6D39\u6D27\u6D0C\u6D43\u6D48\u6D07\u6D04\u6D19\u6D0E\u6D2B\u6D4D\u6D2E\u6D35\u6D1A\u6D4F\u6D52\u6D54\u6D33\u6D91\u6D6F\u6D9E\u6DA0\u6D5E\u6D93\u6D94\u6D5C\u6D60\u6D7C\u6D63\u6E1A\u6DC7\u6DC5\u6DDE\u6E0E\u6DBF\u6DE0\u6E11\u6DE6\u6DDD\u6DD9\u6E16\u6DAB\u6E0C\u6DAE\u6E2B\u6E6E\u6E4E\u6E6B\u6EB2\u6E5F\u6E86\u6E53\u6E54\u6E32\u6E25\u6E44\u6EDF\u6EB1\u6E98\u6EE0\u6F2D\u6EE2\u6EA5\u6EA7\u6EBD\u6EBB\u6EB7\u6ED7\u6EB4\u6ECF\u6E8F\u6EC2\u6E9F\u6F62\u6F46\u6F47\u6F24\u6F15\u6EF9\u6F2F\u6F36\u6F4B\u6F74\u6F2A\u6F09\u6F29\u6F89\u6F8D\u6F8C\u6F78\u6F72\u6F7C\u6F7A\u6FD1"],["e540","\u930A",51,"\u933F",10],["e580","\u934A",31,"\u936B\u6FC9\u6FA7\u6FB9\u6FB6\u6FC2\u6FE1\u6FEE\u6FDE\u6FE0\u6FEF\u701A\u7023\u701B\u7039\u7035\u704F\u705E\u5B80\u5B84\u5B95\u5B93\u5BA5\u5BB8\u752F\u9A9E\u6434\u5BE4\u5BEE\u8930\u5BF0\u8E47\u8B07\u8FB6\u8FD3\u8FD5\u8FE5\u8FEE\u8FE4\u8FE9\u8FE6\u8FF3\u8FE8\u9005\u9004\u900B\u9026\u9011\u900D\u9016\u9021\u9035\u9036\u902D\u902F\u9044\u9051\u9052\u9050\u9068\u9058\u9062\u905B\u66B9\u9074\u907D\u9082\u9088\u9083\u908B\u5F50\u5F57\u5F56\u5F58\u5C3B\u54AB\u5C50\u5C59\u5B71\u5C63\u5C66\u7FBC\u5F2A\u5F29\u5F2D\u8274\u5F3C\u9B3B\u5C6E\u5981\u5983\u598D\u59A9\u59AA\u59A3"],["e640","\u936C",34,"\u9390",27],["e680","\u93AC",29,"\u93CB\u93CC\u93CD\u5997\u59CA\u59AB\u599E\u59A4\u59D2\u59B2\u59AF\u59D7\u59BE\u5A05\u5A06\u59DD\u5A08\u59E3\u59D8\u59F9\u5A0C\u5A09\u5A32\u5A34\u5A11\u5A23\u5A13\u5A40\u5A67\u5A4A\u5A55\u5A3C\u5A62\u5A75\u80EC\u5AAA\u5A9B\u5A77\u5A7A\u5ABE\u5AEB\u5AB2\u5AD2\u5AD4\u5AB8\u5AE0\u5AE3\u5AF1\u5AD6\u5AE6\u5AD8\u5ADC\u5B09\u5B17\u5B16\u5B32\u5B37\u5B40\u5C15\u5C1C\u5B5A\u5B65\u5B73\u5B51\u5B53\u5B62\u9A75\u9A77\u9A78\u9A7A\u9A7F\u9A7D\u9A80\u9A81\u9A85\u9A88\u9A8A\u9A90\u9A92\u9A93\u9A96\u9A98\u9A9B\u9A9C\u9A9D\u9A9F\u9AA0\u9AA2\u9AA3\u9AA5\u9AA7\u7E9F\u7EA1\u7EA3\u7EA5\u7EA8\u7EA9"],["e740","\u93CE",7,"\u93D7",54],["e780","\u940E",32,"\u7EAD\u7EB0\u7EBE\u7EC0\u7EC1\u7EC2\u7EC9\u7ECB\u7ECC\u7ED0\u7ED4\u7ED7\u7EDB\u7EE0\u7EE1\u7EE8\u7EEB\u7EEE\u7EEF\u7EF1\u7EF2\u7F0D\u7EF6\u7EFA\u7EFB\u7EFE\u7F01\u7F02\u7F03\u7F07\u7F08\u7F0B\u7F0C\u7F0F\u7F11\u7F12\u7F17\u7F19\u7F1C\u7F1B\u7F1F\u7F21",6,"\u7F2A\u7F2B\u7F2C\u7F2D\u7F2F",4,"\u7F35\u5E7A\u757F\u5DDB\u753E\u9095\u738E\u7391\u73AE\u73A2\u739F\u73CF\u73C2\u73D1\u73B7\u73B3\u73C0\u73C9\u73C8\u73E5\u73D9\u987C\u740A\u73E9\u73E7\u73DE\u73BA\u73F2\u740F\u742A\u745B\u7426\u7425\u7428\u7430\u742E\u742C"],["e840","\u942F",14,"\u943F",43,"\u946C\u946D\u946E\u946F"],["e880","\u9470",20,"\u9491\u9496\u9498\u94C7\u94CF\u94D3\u94D4\u94DA\u94E6\u94FB\u951C\u9520\u741B\u741A\u7441\u745C\u7457\u7455\u7459\u7477\u746D\u747E\u749C\u748E\u7480\u7481\u7487\u748B\u749E\u74A8\u74A9\u7490\u74A7\u74D2\u74BA\u97EA\u97EB\u97EC\u674C\u6753\u675E\u6748\u6769\u67A5\u6787\u676A\u6773\u6798\u67A7\u6775\u67A8\u679E\u67AD\u678B\u6777\u677C\u67F0\u6809\u67D8\u680A\u67E9\u67B0\u680C\u67D9\u67B5\u67DA\u67B3\u67DD\u6800\u67C3\u67B8\u67E2\u680E\u67C1\u67FD\u6832\u6833\u6860\u6861\u684E\u6862\u6844\u6864\u6883\u681D\u6855\u6866\u6841\u6867\u6840\u683E\u684A\u6849\u6829\u68B5\u688F\u6874\u6877\u6893\u686B\u68C2\u696E\u68FC\u691F\u6920\u68F9"],["e940","\u9527\u9533\u953D\u9543\u9548\u954B\u9555\u955A\u9560\u956E\u9574\u9575\u9577",7,"\u9580",42],["e980","\u95AB",32,"\u6924\u68F0\u690B\u6901\u6957\u68E3\u6910\u6971\u6939\u6960\u6942\u695D\u6984\u696B\u6980\u6998\u6978\u6934\u69CC\u6987\u6988\u69CE\u6989\u6966\u6963\u6979\u699B\u69A7\u69BB\u69AB\u69AD\u69D4\u69B1\u69C1\u69CA\u69DF\u6995\u69E0\u698D\u69FF\u6A2F\u69ED\u6A17\u6A18\u6A65\u69F2\u6A44\u6A3E\u6AA0\u6A50\u6A5B\u6A35\u6A8E\u6A79\u6A3D\u6A28\u6A58\u6A7C\u6A91\u6A90\u6AA9\u6A97\u6AAB\u7337\u7352\u6B81\u6B82\u6B87\u6B84\u6B92\u6B93\u6B8D\u6B9A\u6B9B\u6BA1\u6BAA\u8F6B\u8F6D\u8F71\u8F72\u8F73\u8F75\u8F76\u8F78\u8F77\u8F79\u8F7A\u8F7C\u8F7E\u8F81\u8F82\u8F84\u8F87\u8F8B"],["ea40","\u95CC",27,"\u95EC\u95FF\u9607\u9613\u9618\u961B\u961E\u9620\u9623",6,"\u962B\u962C\u962D\u962F\u9630\u9637\u9638\u9639\u963A\u963E\u9641\u9643\u964A\u964E\u964F\u9651\u9652\u9653\u9656\u9657"],["ea80","\u9658\u9659\u965A\u965C\u965D\u965E\u9660\u9663\u9665\u9666\u966B\u966D",4,"\u9673\u9678",12,"\u9687\u9689\u968A\u8F8D\u8F8E\u8F8F\u8F98\u8F9A\u8ECE\u620B\u6217\u621B\u621F\u6222\u6221\u6225\u6224\u622C\u81E7\u74EF\u74F4\u74FF\u750F\u7511\u7513\u6534\u65EE\u65EF\u65F0\u660A\u6619\u6772\u6603\u6615\u6600\u7085\u66F7\u661D\u6634\u6631\u6636\u6635\u8006\u665F\u6654\u6641\u664F\u6656\u6661\u6657\u6677\u6684\u668C\u66A7\u669D\u66BE\u66DB\u66DC\u66E6\u66E9\u8D32\u8D33\u8D36\u8D3B\u8D3D\u8D40\u8D45\u8D46\u8D48\u8D49\u8D47\u8D4D\u8D55\u8D59\u89C7\u89CA\u89CB\u89CC\u89CE\u89CF\u89D0\u89D1\u726E\u729F\u725D\u7266\u726F\u727E\u727F\u7284\u728B\u728D\u728F\u7292\u6308\u6332\u63B0"],["eb40","\u968C\u968E\u9691\u9692\u9693\u9695\u9696\u969A\u969B\u969D",9,"\u96A8",7,"\u96B1\u96B2\u96B4\u96B5\u96B7\u96B8\u96BA\u96BB\u96BF\u96C2\u96C3\u96C8\u96CA\u96CB\u96D0\u96D1\u96D3\u96D4\u96D6",9,"\u96E1",6,"\u96EB"],["eb80","\u96EC\u96ED\u96EE\u96F0\u96F1\u96F2\u96F4\u96F5\u96F8\u96FA\u96FB\u96FC\u96FD\u96FF\u9702\u9703\u9705\u970A\u970B\u970C\u9710\u9711\u9712\u9714\u9715\u9717",4,"\u971D\u971F\u9720\u643F\u64D8\u8004\u6BEA\u6BF3\u6BFD\u6BF5\u6BF9\u6C05\u6C07\u6C06\u6C0D\u6C15\u6C18\u6C19\u6C1A\u6C21\u6C29\u6C24\u6C2A\u6C32\u6535\u6555\u656B\u724D\u7252\u7256\u7230\u8662\u5216\u809F\u809C\u8093\u80BC\u670A\u80BD\u80B1\u80AB\u80AD\u80B4\u80B7\u80E7\u80E8\u80E9\u80EA\u80DB\u80C2\u80C4\u80D9\u80CD\u80D7\u6710\u80DD\u80EB\u80F1\u80F4\u80ED\u810D\u810E\u80F2\u80FC\u6715\u8112\u8C5A\u8136\u811E\u812C\u8118\u8132\u8148\u814C\u8153\u8174\u8159\u815A\u8171\u8160\u8169\u817C\u817D\u816D\u8167\u584D\u5AB5\u8188\u8182\u8191\u6ED5\u81A3\u81AA\u81CC\u6726\u81CA\u81BB"],["ec40","\u9721",8,"\u972B\u972C\u972E\u972F\u9731\u9733",4,"\u973A\u973B\u973C\u973D\u973F",18,"\u9754\u9755\u9757\u9758\u975A\u975C\u975D\u975F\u9763\u9764\u9766\u9767\u9768\u976A",7],["ec80","\u9772\u9775\u9777",4,"\u977D",7,"\u9786",4,"\u978C\u978E\u978F\u9790\u9793\u9795\u9796\u9797\u9799",4,"\u81C1\u81A6\u6B24\u6B37\u6B39\u6B43\u6B46\u6B59\u98D1\u98D2\u98D3\u98D5\u98D9\u98DA\u6BB3\u5F40\u6BC2\u89F3\u6590\u9F51\u6593\u65BC\u65C6\u65C4\u65C3\u65CC\u65CE\u65D2\u65D6\u7080\u709C\u7096\u709D\u70BB\u70C0\u70B7\u70AB\u70B1\u70E8\u70CA\u7110\u7113\u7116\u712F\u7131\u7173\u715C\u7168\u7145\u7172\u714A\u7178\u717A\u7198\u71B3\u71B5\u71A8\u71A0\u71E0\u71D4\u71E7\u71F9\u721D\u7228\u706C\u7118\u7166\u71B9\u623E\u623D\u6243\u6248\u6249\u793B\u7940\u7946\u7949\u795B\u795C\u7953\u795A\u7962\u7957\u7960\u796F\u7967\u797A\u7985\u798A\u799A\u79A7\u79B3\u5FD1\u5FD0"],["ed40","\u979E\u979F\u97A1\u97A2\u97A4",6,"\u97AC\u97AE\u97B0\u97B1\u97B3\u97B5",46],["ed80","\u97E4\u97E5\u97E8\u97EE",4,"\u97F4\u97F7",23,"\u603C\u605D\u605A\u6067\u6041\u6059\u6063\u60AB\u6106\u610D\u615D\u61A9\u619D\u61CB\u61D1\u6206\u8080\u807F\u6C93\u6CF6\u6DFC\u77F6\u77F8\u7800\u7809\u7817\u7818\u7811\u65AB\u782D\u781C\u781D\u7839\u783A\u783B\u781F\u783C\u7825\u782C\u7823\u7829\u784E\u786D\u7856\u7857\u7826\u7850\u7847\u784C\u786A\u789B\u7893\u789A\u7887\u789C\u78A1\u78A3\u78B2\u78B9\u78A5\u78D4\u78D9\u78C9\u78EC\u78F2\u7905\u78F4\u7913\u7924\u791E\u7934\u9F9B\u9EF9\u9EFB\u9EFC\u76F1\u7704\u770D\u76F9\u7707\u7708\u771A\u7722\u7719\u772D\u7726\u7735\u7738\u7750\u7751\u7747\u7743\u775A\u7768"],["ee40","\u980F",62],["ee80","\u984E",32,"\u7762\u7765\u777F\u778D\u777D\u7780\u778C\u7791\u779F\u77A0\u77B0\u77B5\u77BD\u753A\u7540\u754E\u754B\u7548\u755B\u7572\u7579\u7583\u7F58\u7F61\u7F5F\u8A48\u7F68\u7F74\u7F71\u7F79\u7F81\u7F7E\u76CD\u76E5\u8832\u9485\u9486\u9487\u948B\u948A\u948C\u948D\u948F\u9490\u9494\u9497\u9495\u949A\u949B\u949C\u94A3\u94A4\u94AB\u94AA\u94AD\u94AC\u94AF\u94B0\u94B2\u94B4\u94B6",4,"\u94BC\u94BD\u94BF\u94C4\u94C8",6,"\u94D0\u94D1\u94D2\u94D5\u94D6\u94D7\u94D9\u94D8\u94DB\u94DE\u94DF\u94E0\u94E2\u94E4\u94E5\u94E7\u94E8\u94EA"],["ef40","\u986F",5,"\u988B\u988E\u9892\u9895\u9899\u98A3\u98A8",37,"\u98CF\u98D0\u98D4\u98D6\u98D7\u98DB\u98DC\u98DD\u98E0",4],["ef80","\u98E5\u98E6\u98E9",30,"\u94E9\u94EB\u94EE\u94EF\u94F3\u94F4\u94F5\u94F7\u94F9\u94FC\u94FD\u94FF\u9503\u9502\u9506\u9507\u9509\u950A\u950D\u950E\u950F\u9512",4,"\u9518\u951B\u951D\u951E\u951F\u9522\u952A\u952B\u9529\u952C\u9531\u9532\u9534\u9536\u9537\u9538\u953C\u953E\u953F\u9542\u9535\u9544\u9545\u9546\u9549\u954C\u954E\u954F\u9552\u9553\u9554\u9556\u9557\u9558\u9559\u955B\u955E\u955F\u955D\u9561\u9562\u9564",8,"\u956F\u9571\u9572\u9573\u953A\u77E7\u77EC\u96C9\u79D5\u79ED\u79E3\u79EB\u7A06\u5D47\u7A03\u7A02\u7A1E\u7A14"],["f040","\u9908",4,"\u990E\u990F\u9911",28,"\u992F",26],["f080","\u994A",9,"\u9956",12,"\u9964\u9966\u9973\u9978\u9979\u997B\u997E\u9982\u9983\u9989\u7A39\u7A37\u7A51\u9ECF\u99A5\u7A70\u7688\u768E\u7693\u7699\u76A4\u74DE\u74E0\u752C\u9E20\u9E22\u9E28",4,"\u9E32\u9E31\u9E36\u9E38\u9E37\u9E39\u9E3A\u9E3E\u9E41\u9E42\u9E44\u9E46\u9E47\u9E48\u9E49\u9E4B\u9E4C\u9E4E\u9E51\u9E55\u9E57\u9E5A\u9E5B\u9E5C\u9E5E\u9E63\u9E66",6,"\u9E71\u9E6D\u9E73\u7592\u7594\u7596\u75A0\u759D\u75AC\u75A3\u75B3\u75B4\u75B8\u75C4\u75B1\u75B0\u75C3\u75C2\u75D6\u75CD\u75E3\u75E8\u75E6\u75E4\u75EB\u75E7\u7603\u75F1\u75FC\u75FF\u7610\u7600\u7605\u760C\u7617\u760A\u7625\u7618\u7615\u7619"],["f140","\u998C\u998E\u999A",10,"\u99A6\u99A7\u99A9",47],["f180","\u99D9",32,"\u761B\u763C\u7622\u7620\u7640\u762D\u7630\u763F\u7635\u7643\u763E\u7633\u764D\u765E\u7654\u765C\u7656\u766B\u766F\u7FCA\u7AE6\u7A78\u7A79\u7A80\u7A86\u7A88\u7A95\u7AA6\u7AA0\u7AAC\u7AA8\u7AAD\u7AB3\u8864\u8869\u8872\u887D\u887F\u8882\u88A2\u88C6\u88B7\u88BC\u88C9\u88E2\u88CE\u88E3\u88E5\u88F1\u891A\u88FC\u88E8\u88FE\u88F0\u8921\u8919\u8913\u891B\u890A\u8934\u892B\u8936\u8941\u8966\u897B\u758B\u80E5\u76B2\u76B4\u77DC\u8012\u8014\u8016\u801C\u8020\u8022\u8025\u8026\u8027\u8029\u8028\u8031\u800B\u8035\u8043\u8046\u804D\u8052\u8069\u8071\u8983\u9878\u9880\u9883"],["f240","\u99FA",62],["f280","\u9A39",32,"\u9889\u988C\u988D\u988F\u9894\u989A\u989B\u989E\u989F\u98A1\u98A2\u98A5\u98A6\u864D\u8654\u866C\u866E\u867F\u867A\u867C\u867B\u86A8\u868D\u868B\u86AC\u869D\u86A7\u86A3\u86AA\u8693\u86A9\u86B6\u86C4\u86B5\u86CE\u86B0\u86BA\u86B1\u86AF\u86C9\u86CF\u86B4\u86E9\u86F1\u86F2\u86ED\u86F3\u86D0\u8713\u86DE\u86F4\u86DF\u86D8\u86D1\u8703\u8707\u86F8\u8708\u870A\u870D\u8709\u8723\u873B\u871E\u8725\u872E\u871A\u873E\u8748\u8734\u8731\u8729\u8737\u873F\u8782\u8722\u877D\u877E\u877B\u8760\u8770\u874C\u876E\u878B\u8753\u8763\u877C\u8764\u8759\u8765\u8793\u87AF\u87A8\u87D2"],["f340","\u9A5A",17,"\u9A72\u9A83\u9A89\u9A8D\u9A8E\u9A94\u9A95\u9A99\u9AA6\u9AA9",6,"\u9AB2\u9AB3\u9AB4\u9AB5\u9AB9\u9ABB\u9ABD\u9ABE\u9ABF\u9AC3\u9AC4\u9AC6",4,"\u9ACD\u9ACE\u9ACF\u9AD0\u9AD2\u9AD4\u9AD5\u9AD6\u9AD7\u9AD9\u9ADA\u9ADB\u9ADC"],["f380","\u9ADD\u9ADE\u9AE0\u9AE2\u9AE3\u9AE4\u9AE5\u9AE7\u9AE8\u9AE9\u9AEA\u9AEC\u9AEE\u9AF0",8,"\u9AFA\u9AFC",6,"\u9B04\u9B05\u9B06\u87C6\u8788\u8785\u87AD\u8797\u8783\u87AB\u87E5\u87AC\u87B5\u87B3\u87CB\u87D3\u87BD\u87D1\u87C0\u87CA\u87DB\u87EA\u87E0\u87EE\u8816\u8813\u87FE\u880A\u881B\u8821\u8839\u883C\u7F36\u7F42\u7F44\u7F45\u8210\u7AFA\u7AFD\u7B08\u7B03\u7B04\u7B15\u7B0A\u7B2B\u7B0F\u7B47\u7B38\u7B2A\u7B19\u7B2E\u7B31\u7B20\u7B25\u7B24\u7B33\u7B3E\u7B1E\u7B58\u7B5A\u7B45\u7B75\u7B4C\u7B5D\u7B60\u7B6E\u7B7B\u7B62\u7B72\u7B71\u7B90\u7BA6\u7BA7\u7BB8\u7BAC\u7B9D\u7BA8\u7B85\u7BAA\u7B9C\u7BA2\u7BAB\u7BB4\u7BD1\u7BC1\u7BCC\u7BDD\u7BDA\u7BE5\u7BE6\u7BEA\u7C0C\u7BFE\u7BFC\u7C0F\u7C16\u7C0B"],["f440","\u9B07\u9B09",5,"\u9B10\u9B11\u9B12\u9B14",10,"\u9B20\u9B21\u9B22\u9B24",10,"\u9B30\u9B31\u9B33",7,"\u9B3D\u9B3E\u9B3F\u9B40\u9B46\u9B4A\u9B4B\u9B4C\u9B4E\u9B50\u9B52\u9B53\u9B55",5],["f480","\u9B5B",32,"\u7C1F\u7C2A\u7C26\u7C38\u7C41\u7C40\u81FE\u8201\u8202\u8204\u81EC\u8844\u8221\u8222\u8223\u822D\u822F\u8228\u822B\u8238\u823B\u8233\u8234\u823E\u8244\u8249\u824B\u824F\u825A\u825F\u8268\u887E\u8885\u8888\u88D8\u88DF\u895E\u7F9D\u7F9F\u7FA7\u7FAF\u7FB0\u7FB2\u7C7C\u6549\u7C91\u7C9D\u7C9C\u7C9E\u7CA2\u7CB2\u7CBC\u7CBD\u7CC1\u7CC7\u7CCC\u7CCD\u7CC8\u7CC5\u7CD7\u7CE8\u826E\u66A8\u7FBF\u7FCE\u7FD5\u7FE5\u7FE1\u7FE6\u7FE9\u7FEE\u7FF3\u7CF8\u7D77\u7DA6\u7DAE\u7E47\u7E9B\u9EB8\u9EB4\u8D73\u8D84\u8D94\u8D91\u8DB1\u8D67\u8D6D\u8C47\u8C49\u914A\u9150\u914E\u914F\u9164"],["f540","\u9B7C",62],["f580","\u9BBB",32,"\u9162\u9161\u9170\u9169\u916F\u917D\u917E\u9172\u9174\u9179\u918C\u9185\u9190\u918D\u9191\u91A2\u91A3\u91AA\u91AD\u91AE\u91AF\u91B5\u91B4\u91BA\u8C55\u9E7E\u8DB8\u8DEB\u8E05\u8E59\u8E69\u8DB5\u8DBF\u8DBC\u8DBA\u8DC4\u8DD6\u8DD7\u8DDA\u8DDE\u8DCE\u8DCF\u8DDB\u8DC6\u8DEC\u8DF7\u8DF8\u8DE3\u8DF9\u8DFB\u8DE4\u8E09\u8DFD\u8E14\u8E1D\u8E1F\u8E2C\u8E2E\u8E23\u8E2F\u8E3A\u8E40\u8E39\u8E35\u8E3D\u8E31\u8E49\u8E41\u8E42\u8E51\u8E52\u8E4A\u8E70\u8E76\u8E7C\u8E6F\u8E74\u8E85\u8E8F\u8E94\u8E90\u8E9C\u8E9E\u8C78\u8C82\u8C8A\u8C85\u8C98\u8C94\u659B\u89D6\u89DE\u89DA\u89DC"],["f640","\u9BDC",62],["f680","\u9C1B",32,"\u89E5\u89EB\u89EF\u8A3E\u8B26\u9753\u96E9\u96F3\u96EF\u9706\u9701\u9708\u970F\u970E\u972A\u972D\u9730\u973E\u9F80\u9F83\u9F85",5,"\u9F8C\u9EFE\u9F0B\u9F0D\u96B9\u96BC\u96BD\u96CE\u96D2\u77BF\u96E0\u928E\u92AE\u92C8\u933E\u936A\u93CA\u938F\u943E\u946B\u9C7F\u9C82\u9C85\u9C86\u9C87\u9C88\u7A23\u9C8B\u9C8E\u9C90\u9C91\u9C92\u9C94\u9C95\u9C9A\u9C9B\u9C9E",5,"\u9CA5",4,"\u9CAB\u9CAD\u9CAE\u9CB0",7,"\u9CBA\u9CBB\u9CBC\u9CBD\u9CC4\u9CC5\u9CC6\u9CC7\u9CCA\u9CCB"],["f740","\u9C3C",62],["f780","\u9C7B\u9C7D\u9C7E\u9C80\u9C83\u9C84\u9C89\u9C8A\u9C8C\u9C8F\u9C93\u9C96\u9C97\u9C98\u9C99\u9C9D\u9CAA\u9CAC\u9CAF\u9CB9\u9CBE",4,"\u9CC8\u9CC9\u9CD1\u9CD2\u9CDA\u9CDB\u9CE0\u9CE1\u9CCC",4,"\u9CD3\u9CD4\u9CD5\u9CD7\u9CD8\u9CD9\u9CDC\u9CDD\u9CDF\u9CE2\u977C\u9785\u9791\u9792\u9794\u97AF\u97AB\u97A3\u97B2\u97B4\u9AB1\u9AB0\u9AB7\u9E58\u9AB6\u9ABA\u9ABC\u9AC1\u9AC0\u9AC5\u9AC2\u9ACB\u9ACC\u9AD1\u9B45\u9B43\u9B47\u9B49\u9B48\u9B4D\u9B51\u98E8\u990D\u992E\u9955\u9954\u9ADF\u9AE1\u9AE6\u9AEF\u9AEB\u9AFB\u9AED\u9AF9\u9B08\u9B0F\u9B13\u9B1F\u9B23\u9EBD\u9EBE\u7E3B\u9E82\u9E87\u9E88\u9E8B\u9E92\u93D6\u9E9D\u9E9F\u9EDB\u9EDC\u9EDD\u9EE0\u9EDF\u9EE2\u9EE9\u9EE7\u9EE5\u9EEA\u9EEF\u9F22\u9F2C\u9F2F\u9F39\u9F37\u9F3D\u9F3E\u9F44"],["f840","\u9CE3",62],["f880","\u9D22",32],["f940","\u9D43",62],["f980","\u9D82",32],["fa40","\u9DA3",62],["fa80","\u9DE2",32],["fb40","\u9E03",27,"\u9E24\u9E27\u9E2E\u9E30\u9E34\u9E3B\u9E3C\u9E40\u9E4D\u9E50\u9E52\u9E53\u9E54\u9E56\u9E59\u9E5D\u9E5F\u9E60\u9E61\u9E62\u9E65\u9E6E\u9E6F\u9E72\u9E74",9,"\u9E80"],["fb80","\u9E81\u9E83\u9E84\u9E85\u9E86\u9E89\u9E8A\u9E8C",5,"\u9E94",8,"\u9E9E\u9EA0",5,"\u9EA7\u9EA8\u9EA9\u9EAA"],["fc40","\u9EAB",8,"\u9EB5\u9EB6\u9EB7\u9EB9\u9EBA\u9EBC\u9EBF",4,"\u9EC5\u9EC6\u9EC7\u9EC8\u9ECA\u9ECB\u9ECC\u9ED0\u9ED2\u9ED3\u9ED5\u9ED6\u9ED7\u9ED9\u9EDA\u9EDE\u9EE1\u9EE3\u9EE4\u9EE6\u9EE8\u9EEB\u9EEC\u9EED\u9EEE\u9EF0",8,"\u9EFA\u9EFD\u9EFF",6],["fc80","\u9F06",4,"\u9F0C\u9F0F\u9F11\u9F12\u9F14\u9F15\u9F16\u9F18\u9F1A",5,"\u9F21\u9F23",8,"\u9F2D\u9F2E\u9F30\u9F31"],["fd40","\u9F32",4,"\u9F38\u9F3A\u9F3C\u9F3F",4,"\u9F45",10,"\u9F52",38],["fd80","\u9F79",5,"\u9F81\u9F82\u9F8D",11,"\u9F9C\u9F9D\u9F9E\u9FA1",4,"\uF92C\uF979\uF995\uF9E7\uF9F1"],["fe40","\uFA0C\uFA0D\uFA0E\uFA0F\uFA11\uFA13\uFA14\uFA18\uFA1F\uFA20\uFA21\uFA23\uFA24\uFA27\uFA28\uFA29"]]});var gh=P((ZW,XC)=>{XC.exports=[["a140","\uE4C6",62],["a180","\uE505",32],["a240","\uE526",62],["a280","\uE565",32],["a2ab","\uE766",5],["a2e3","\u20AC\uE76D"],["a2ef","\uE76E\uE76F"],["a2fd","\uE770\uE771"],["a340","\uE586",62],["a380","\uE5C5",31,"\u3000"],["a440","\uE5E6",62],["a480","\uE625",32],["a4f4","\uE772",10],["a540","\uE646",62],["a580","\uE685",32],["a5f7","\uE77D",7],["a640","\uE6A6",62],["a680","\uE6E5",32],["a6b9","\uE785",7],["a6d9","\uE78D",6],["a6ec","\uE794\uE795"],["a6f3","\uE796"],["a6f6","\uE797",8],["a740","\uE706",62],["a780","\uE745",32],["a7c2","\uE7A0",14],["a7f2","\uE7AF",12],["a896","\uE7BC",10],["a8bc","\uE7C7"],["a8bf","\u01F9"],["a8c1","\uE7C9\uE7CA\uE7CB\uE7CC"],["a8ea","\uE7CD",20],["a958","\uE7E2"],["a95b","\uE7E3"],["a95d","\uE7E4\uE7E5\uE7E6"],["a989","\u303E\u2FF0",11],["a997","\uE7F4",12],["a9f0","\uE801",14],["aaa1","\uE000",93],["aba1","\uE05E",93],["aca1","\uE0BC",93],["ada1","\uE11A",93],["aea1","\uE178",93],["afa1","\uE1D6",93],["d7fa","\uE810",4],["f8a1","\uE234",93],["f9a1","\uE292",93],["faa1","\uE2F0",93],["fba1","\uE34E",93],["fca1","\uE3AC",93],["fda1","\uE40A",93],["fe50","\u2E81\uE816\uE817\uE818\u2E84\u3473\u3447\u2E88\u2E8B\uE81E\u359E\u361A\u360E\u2E8C\u2E97\u396E\u3918\uE826\u39CF\u39DF\u3A73\u39D0\uE82B\uE82C\u3B4E\u3C6E\u3CE0\u2EA7\uE831\uE832\u2EAA\u4056\u415F\u2EAE\u4337\u2EB3\u2EB6\u2EB7\uE83B\u43B1\u43AC\u2EBB\u43DD\u44D6\u4661\u464C\uE843"],["fe80","\u4723\u4729\u477C\u478D\u2ECA\u4947\u497A\u497D\u4982\u4983\u4985\u4986\u499F\u499B\u49B7\u49B6\uE854\uE855\u4CA3\u4C9F\u4CA0\u4CA1\u4C77\u4CA2\u4D13",6,"\u4DAE\uE864\uE468",93]]});var Jx=P((QW,KC)=>{KC.exports={uChars:[128,165,169,178,184,216,226,235,238,244,248,251,253,258,276,284,300,325,329,334,364,463,465,467,469,471,473,475,477,506,594,610,712,716,730,930,938,962,970,1026,1104,1106,8209,8215,8218,8222,8231,8241,8244,8246,8252,8365,8452,8454,8458,8471,8482,8556,8570,8596,8602,8713,8720,8722,8726,8731,8737,8740,8742,8748,8751,8760,8766,8777,8781,8787,8802,8808,8816,8854,8858,8870,8896,8979,9322,9372,9548,9588,9616,9622,9634,9652,9662,9672,9676,9680,9702,9735,9738,9793,9795,11906,11909,11913,11917,11928,11944,11947,11951,11956,11960,11964,11979,12284,12292,12312,12319,12330,12351,12436,12447,12535,12543,12586,12842,12850,12964,13200,13215,13218,13253,13263,13267,13270,13384,13428,13727,13839,13851,14617,14703,14801,14816,14964,15183,15471,15585,16471,16736,17208,17325,17330,17374,17623,17997,18018,18212,18218,18301,18318,18760,18811,18814,18820,18823,18844,18848,18872,19576,19620,19738,19887,40870,59244,59336,59367,59413,59417,59423,59431,59437,59443,59452,59460,59478,59493,63789,63866,63894,63976,63986,64016,64018,64021,64025,64034,64037,64042,65074,65093,65107,65112,65127,65132,65375,65510,65536],gbChars:[0,36,38,45,50,81,89,95,96,100,103,104,105,109,126,133,148,172,175,179,208,306,307,308,309,310,311,312,313,341,428,443,544,545,558,741,742,749,750,805,819,820,7922,7924,7925,7927,7934,7943,7944,7945,7950,8062,8148,8149,8152,8164,8174,8236,8240,8262,8264,8374,8380,8381,8384,8388,8390,8392,8393,8394,8396,8401,8406,8416,8419,8424,8437,8439,8445,8482,8485,8496,8521,8603,8936,8946,9046,9050,9063,9066,9076,9092,9100,9108,9111,9113,9131,9162,9164,9218,9219,11329,11331,11334,11336,11346,11361,11363,11366,11370,11372,11375,11389,11682,11686,11687,11692,11694,11714,11716,11723,11725,11730,11736,11982,11989,12102,12336,12348,12350,12384,12393,12395,12397,12510,12553,12851,12962,12973,13738,13823,13919,13933,14080,14298,14585,14698,15583,15847,16318,16434,16438,16481,16729,17102,17122,17315,17320,17402,17418,17859,17909,17911,17915,17916,17936,17939,17961,18664,18703,18814,18962,19043,33469,33470,33471,33484,33485,33490,33497,33501,33505,33513,33520,33536,33550,37845,37921,37948,38029,38038,38064,38065,38066,38069,38075,38076,38078,39108,39109,39113,39114,39115,39116,39265,39394,189e3]}});var qx=P((WW,VC)=>{VC.exports=[["0","\0",127],["8141","\uAC02\uAC03\uAC05\uAC06\uAC0B",4,"\uAC18\uAC1E\uAC1F\uAC21\uAC22\uAC23\uAC25",6,"\uAC2E\uAC32\uAC33\uAC34"],["8161","\uAC35\uAC36\uAC37\uAC3A\uAC3B\uAC3D\uAC3E\uAC3F\uAC41",9,"\uAC4C\uAC4E",5,"\uAC55"],["8181","\uAC56\uAC57\uAC59\uAC5A\uAC5B\uAC5D",18,"\uAC72\uAC73\uAC75\uAC76\uAC79\uAC7B",4,"\uAC82\uAC87\uAC88\uAC8D\uAC8E\uAC8F\uAC91\uAC92\uAC93\uAC95",6,"\uAC9E\uACA2",5,"\uACAB\uACAD\uACAE\uACB1",6,"\uACBA\uACBE\uACBF\uACC0\uACC2\uACC3\uACC5\uACC6\uACC7\uACC9\uACCA\uACCB\uACCD",7,"\uACD6\uACD8",7,"\uACE2\uACE3\uACE5\uACE6\uACE9\uACEB\uACED\uACEE\uACF2\uACF4\uACF7",4,"\uACFE\uACFF\uAD01\uAD02\uAD03\uAD05\uAD07",4,"\uAD0E\uAD10\uAD12\uAD13"],["8241","\uAD14\uAD15\uAD16\uAD17\uAD19\uAD1A\uAD1B\uAD1D\uAD1E\uAD1F\uAD21",7,"\uAD2A\uAD2B\uAD2E",5],["8261","\uAD36\uAD37\uAD39\uAD3A\uAD3B\uAD3D",6,"\uAD46\uAD48\uAD4A",5,"\uAD51\uAD52\uAD53\uAD55\uAD56\uAD57"],["8281","\uAD59",7,"\uAD62\uAD64",7,"\uAD6E\uAD6F\uAD71\uAD72\uAD77\uAD78\uAD79\uAD7A\uAD7E\uAD80\uAD83",4,"\uAD8A\uAD8B\uAD8D\uAD8E\uAD8F\uAD91",10,"\uAD9E",5,"\uADA5",17,"\uADB8",7,"\uADC2\uADC3\uADC5\uADC6\uADC7\uADC9",6,"\uADD2\uADD4",7,"\uADDD\uADDE\uADDF\uADE1\uADE2\uADE3\uADE5",18],["8341","\uADFA\uADFB\uADFD\uADFE\uAE02",5,"\uAE0A\uAE0C\uAE0E",5,"\uAE15",7],["8361","\uAE1D",18,"\uAE32\uAE33\uAE35\uAE36\uAE39\uAE3B\uAE3C"],["8381","\uAE3D\uAE3E\uAE3F\uAE42\uAE44\uAE47\uAE48\uAE49\uAE4B\uAE4F\uAE51\uAE52\uAE53\uAE55\uAE57",4,"\uAE5E\uAE62\uAE63\uAE64\uAE66\uAE67\uAE6A\uAE6B\uAE6D\uAE6E\uAE6F\uAE71",6,"\uAE7A\uAE7E",5,"\uAE86",5,"\uAE8D",46,"\uAEBF\uAEC1\uAEC2\uAEC3\uAEC5",6,"\uAECE\uAED2",5,"\uAEDA\uAEDB\uAEDD",8],["8441","\uAEE6\uAEE7\uAEE9\uAEEA\uAEEC\uAEEE",5,"\uAEF5\uAEF6\uAEF7\uAEF9\uAEFA\uAEFB\uAEFD",8],["8461","\uAF06\uAF09\uAF0A\uAF0B\uAF0C\uAF0E\uAF0F\uAF11",18],["8481","\uAF24",7,"\uAF2E\uAF2F\uAF31\uAF33\uAF35",6,"\uAF3E\uAF40\uAF44\uAF45\uAF46\uAF47\uAF4A",5,"\uAF51",10,"\uAF5E",5,"\uAF66",18,"\uAF7A",5,"\uAF81\uAF82\uAF83\uAF85\uAF86\uAF87\uAF89",6,"\uAF92\uAF93\uAF94\uAF96",5,"\uAF9D",26,"\uAFBA\uAFBB\uAFBD\uAFBE"],["8541","\uAFBF\uAFC1",5,"\uAFCA\uAFCC\uAFCF",4,"\uAFD5",6,"\uAFDD",4],["8561","\uAFE2",5,"\uAFEA",5,"\uAFF2\uAFF3\uAFF5\uAFF6\uAFF7\uAFF9",6,"\uB002\uB003"],["8581","\uB005",6,"\uB00D\uB00E\uB00F\uB011\uB012\uB013\uB015",6,"\uB01E",9,"\uB029",26,"\uB046\uB047\uB049\uB04B\uB04D\uB04F\uB050\uB051\uB052\uB056\uB058\uB05A\uB05B\uB05C\uB05E",29,"\uB07E\uB07F\uB081\uB082\uB083\uB085",6,"\uB08E\uB090\uB092",5,"\uB09B\uB09D\uB09E\uB0A3\uB0A4"],["8641","\uB0A5\uB0A6\uB0A7\uB0AA\uB0B0\uB0B2\uB0B6\uB0B7\uB0B9\uB0BA\uB0BB\uB0BD",6,"\uB0C6\uB0CA",5,"\uB0D2"],["8661","\uB0D3\uB0D5\uB0D6\uB0D7\uB0D9",6,"\uB0E1\uB0E2\uB0E3\uB0E4\uB0E6",10],["8681","\uB0F1",22,"\uB10A\uB10D\uB10E\uB10F\uB111\uB114\uB115\uB116\uB117\uB11A\uB11E",4,"\uB126\uB127\uB129\uB12A\uB12B\uB12D",6,"\uB136\uB13A",5,"\uB142\uB143\uB145\uB146\uB147\uB149",6,"\uB152\uB153\uB156\uB157\uB159\uB15A\uB15B\uB15D\uB15E\uB15F\uB161",22,"\uB17A\uB17B\uB17D\uB17E\uB17F\uB181\uB183",4,"\uB18A\uB18C\uB18E\uB18F\uB190\uB191\uB195\uB196\uB197\uB199\uB19A\uB19B\uB19D"],["8741","\uB19E",9,"\uB1A9",15],["8761","\uB1B9",18,"\uB1CD\uB1CE\uB1CF\uB1D1\uB1D2\uB1D3\uB1D5"],["8781","\uB1D6",5,"\uB1DE\uB1E0",7,"\uB1EA\uB1EB\uB1ED\uB1EE\uB1EF\uB1F1",7,"\uB1FA\uB1FC\uB1FE",5,"\uB206\uB207\uB209\uB20A\uB20D",6,"\uB216\uB218\uB21A",5,"\uB221",18,"\uB235",6,"\uB23D",26,"\uB259\uB25A\uB25B\uB25D\uB25E\uB25F\uB261",6,"\uB26A",4],["8841","\uB26F",4,"\uB276",5,"\uB27D",6,"\uB286\uB287\uB288\uB28A",4],["8861","\uB28F\uB292\uB293\uB295\uB296\uB297\uB29B",4,"\uB2A2\uB2A4\uB2A7\uB2A8\uB2A9\uB2AB\uB2AD\uB2AE\uB2AF\uB2B1\uB2B2\uB2B3\uB2B5\uB2B6\uB2B7"],["8881","\uB2B8",15,"\uB2CA\uB2CB\uB2CD\uB2CE\uB2CF\uB2D1\uB2D3",4,"\uB2DA\uB2DC\uB2DE\uB2DF\uB2E0\uB2E1\uB2E3\uB2E7\uB2E9\uB2EA\uB2F0\uB2F1\uB2F2\uB2F6\uB2FC\uB2FD\uB2FE\uB302\uB303\uB305\uB306\uB307\uB309",6,"\uB312\uB316",5,"\uB31D",54,"\uB357\uB359\uB35A\uB35D\uB360\uB361\uB362\uB363"],["8941","\uB366\uB368\uB36A\uB36C\uB36D\uB36F\uB372\uB373\uB375\uB376\uB377\uB379",6,"\uB382\uB386",5,"\uB38D"],["8961","\uB38E\uB38F\uB391\uB392\uB393\uB395",10,"\uB3A2",5,"\uB3A9\uB3AA\uB3AB\uB3AD"],["8981","\uB3AE",21,"\uB3C6\uB3C7\uB3C9\uB3CA\uB3CD\uB3CF\uB3D1\uB3D2\uB3D3\uB3D6\uB3D8\uB3DA\uB3DC\uB3DE\uB3DF\uB3E1\uB3E2\uB3E3\uB3E5\uB3E6\uB3E7\uB3E9",18,"\uB3FD",18,"\uB411",6,"\uB419\uB41A\uB41B\uB41D\uB41E\uB41F\uB421",6,"\uB42A\uB42C",7,"\uB435",15],["8a41","\uB445",10,"\uB452\uB453\uB455\uB456\uB457\uB459",6,"\uB462\uB464\uB466"],["8a61","\uB467",4,"\uB46D",18,"\uB481\uB482"],["8a81","\uB483",4,"\uB489",19,"\uB49E",5,"\uB4A5\uB4A6\uB4A7\uB4A9\uB4AA\uB4AB\uB4AD",7,"\uB4B6\uB4B8\uB4BA",5,"\uB4C1\uB4C2\uB4C3\uB4C5\uB4C6\uB4C7\uB4C9",6,"\uB4D1\uB4D2\uB4D3\uB4D4\uB4D6",5,"\uB4DE\uB4DF\uB4E1\uB4E2\uB4E5\uB4E7",4,"\uB4EE\uB4F0\uB4F2",5,"\uB4F9",26,"\uB516\uB517\uB519\uB51A\uB51D"],["8b41","\uB51E",5,"\uB526\uB52B",4,"\uB532\uB533\uB535\uB536\uB537\uB539",6,"\uB542\uB546"],["8b61","\uB547\uB548\uB549\uB54A\uB54E\uB54F\uB551\uB552\uB553\uB555",6,"\uB55E\uB562",8],["8b81","\uB56B",52,"\uB5A2\uB5A3\uB5A5\uB5A6\uB5A7\uB5A9\uB5AC\uB5AD\uB5AE\uB5AF\uB5B2\uB5B6",4,"\uB5BE\uB5BF\uB5C1\uB5C2\uB5C3\uB5C5",6,"\uB5CE\uB5D2",5,"\uB5D9",18,"\uB5ED",18],["8c41","\uB600",15,"\uB612\uB613\uB615\uB616\uB617\uB619",4],["8c61","\uB61E",6,"\uB626",5,"\uB62D",6,"\uB635",5],["8c81","\uB63B",12,"\uB649",26,"\uB665\uB666\uB667\uB669",50,"\uB69E\uB69F\uB6A1\uB6A2\uB6A3\uB6A5",5,"\uB6AD\uB6AE\uB6AF\uB6B0\uB6B2",16],["8d41","\uB6C3",16,"\uB6D5",8],["8d61","\uB6DE",17,"\uB6F1\uB6F2\uB6F3\uB6F5\uB6F6\uB6F7\uB6F9\uB6FA"],["8d81","\uB6FB",4,"\uB702\uB703\uB704\uB706",33,"\uB72A\uB72B\uB72D\uB72E\uB731",6,"\uB73A\uB73C",7,"\uB745\uB746\uB747\uB749\uB74A\uB74B\uB74D",6,"\uB756",9,"\uB761\uB762\uB763\uB765\uB766\uB767\uB769",6,"\uB772\uB774\uB776",5,"\uB77E\uB77F\uB781\uB782\uB783\uB785",6,"\uB78E\uB793\uB794\uB795\uB79A\uB79B\uB79D\uB79E"],["8e41","\uB79F\uB7A1",6,"\uB7AA\uB7AE",5,"\uB7B6\uB7B7\uB7B9",8],["8e61","\uB7C2",4,"\uB7C8\uB7CA",19],["8e81","\uB7DE",13,"\uB7EE\uB7EF\uB7F1\uB7F2\uB7F3\uB7F5",6,"\uB7FE\uB802",4,"\uB80A\uB80B\uB80D\uB80E\uB80F\uB811",6,"\uB81A\uB81C\uB81E",5,"\uB826\uB827\uB829\uB82A\uB82B\uB82D",6,"\uB836\uB83A",5,"\uB841\uB842\uB843\uB845",11,"\uB852\uB854",7,"\uB85E\uB85F\uB861\uB862\uB863\uB865",6,"\uB86E\uB870\uB872",5,"\uB879\uB87A\uB87B\uB87D",7],["8f41","\uB885",7,"\uB88E",17],["8f61","\uB8A0",7,"\uB8A9",6,"\uB8B1\uB8B2\uB8B3\uB8B5\uB8B6\uB8B7\uB8B9",4],["8f81","\uB8BE\uB8BF\uB8C2\uB8C4\uB8C6",5,"\uB8CD\uB8CE\uB8CF\uB8D1\uB8D2\uB8D3\uB8D5",7,"\uB8DE\uB8E0\uB8E2",5,"\uB8EA\uB8EB\uB8ED\uB8EE\uB8EF\uB8F1",6,"\uB8FA\uB8FC\uB8FE",5,"\uB905",18,"\uB919",6,"\uB921",26,"\uB93E\uB93F\uB941\uB942\uB943\uB945",6,"\uB94D\uB94E\uB950\uB952",5],["9041","\uB95A\uB95B\uB95D\uB95E\uB95F\uB961",6,"\uB96A\uB96C\uB96E",5,"\uB976\uB977\uB979\uB97A\uB97B\uB97D"],["9061","\uB97E",5,"\uB986\uB988\uB98B\uB98C\uB98F",15],["9081","\uB99F",12,"\uB9AE\uB9AF\uB9B1\uB9B2\uB9B3\uB9B5",6,"\uB9BE\uB9C0\uB9C2",5,"\uB9CA\uB9CB\uB9CD\uB9D3",4,"\uB9DA\uB9DC\uB9DF\uB9E0\uB9E2\uB9E6\uB9E7\uB9E9\uB9EA\uB9EB\uB9ED",6,"\uB9F6\uB9FB",4,"\uBA02",5,"\uBA09",11,"\uBA16",33,"\uBA3A\uBA3B\uBA3D\uBA3E\uBA3F\uBA41\uBA43\uBA44\uBA45\uBA46"],["9141","\uBA47\uBA4A\uBA4C\uBA4F\uBA50\uBA51\uBA52\uBA56\uBA57\uBA59\uBA5A\uBA5B\uBA5D",6,"\uBA66\uBA6A",5],["9161","\uBA72\uBA73\uBA75\uBA76\uBA77\uBA79",9,"\uBA86\uBA88\uBA89\uBA8A\uBA8B\uBA8D",5],["9181","\uBA93",20,"\uBAAA\uBAAD\uBAAE\uBAAF\uBAB1\uBAB3",4,"\uBABA\uBABC\uBABE",5,"\uBAC5\uBAC6\uBAC7\uBAC9",14,"\uBADA",33,"\uBAFD\uBAFE\uBAFF\uBB01\uBB02\uBB03\uBB05",7,"\uBB0E\uBB10\uBB12",5,"\uBB19\uBB1A\uBB1B\uBB1D\uBB1E\uBB1F\uBB21",6],["9241","\uBB28\uBB2A\uBB2C",7,"\uBB37\uBB39\uBB3A\uBB3F",4,"\uBB46\uBB48\uBB4A\uBB4B\uBB4C\uBB4E\uBB51\uBB52"],["9261","\uBB53\uBB55\uBB56\uBB57\uBB59",7,"\uBB62\uBB64",7,"\uBB6D",4],["9281","\uBB72",21,"\uBB89\uBB8A\uBB8B\uBB8D\uBB8E\uBB8F\uBB91",18,"\uBBA5\uBBA6\uBBA7\uBBA9\uBBAA\uBBAB\uBBAD",6,"\uBBB5\uBBB6\uBBB8",7,"\uBBC1\uBBC2\uBBC3\uBBC5\uBBC6\uBBC7\uBBC9",6,"\uBBD1\uBBD2\uBBD4",35,"\uBBFA\uBBFB\uBBFD\uBBFE\uBC01"],["9341","\uBC03",4,"\uBC0A\uBC0E\uBC10\uBC12\uBC13\uBC19\uBC1A\uBC20\uBC21\uBC22\uBC23\uBC26\uBC28\uBC2A\uBC2B\uBC2C\uBC2E\uBC2F\uBC32\uBC33\uBC35"],["9361","\uBC36\uBC37\uBC39",6,"\uBC42\uBC46\uBC47\uBC48\uBC4A\uBC4B\uBC4E\uBC4F\uBC51",8],["9381","\uBC5A\uBC5B\uBC5C\uBC5E",37,"\uBC86\uBC87\uBC89\uBC8A\uBC8D\uBC8F",4,"\uBC96\uBC98\uBC9B",4,"\uBCA2\uBCA3\uBCA5\uBCA6\uBCA9",6,"\uBCB2\uBCB6",5,"\uBCBE\uBCBF\uBCC1\uBCC2\uBCC3\uBCC5",7,"\uBCCE\uBCD2\uBCD3\uBCD4\uBCD6\uBCD7\uBCD9\uBCDA\uBCDB\uBCDD",22,"\uBCF7\uBCF9\uBCFA\uBCFB\uBCFD"],["9441","\uBCFE",5,"\uBD06\uBD08\uBD0A",5,"\uBD11\uBD12\uBD13\uBD15",8],["9461","\uBD1E",5,"\uBD25",6,"\uBD2D",12],["9481","\uBD3A",5,"\uBD41",6,"\uBD4A\uBD4B\uBD4D\uBD4E\uBD4F\uBD51",6,"\uBD5A",9,"\uBD65\uBD66\uBD67\uBD69",22,"\uBD82\uBD83\uBD85\uBD86\uBD8B",4,"\uBD92\uBD94\uBD96\uBD97\uBD98\uBD9B\uBD9D",6,"\uBDA5",10,"\uBDB1",6,"\uBDB9",24],["9541","\uBDD2\uBDD3\uBDD6\uBDD7\uBDD9\uBDDA\uBDDB\uBDDD",11,"\uBDEA",5,"\uBDF1"],["9561","\uBDF2\uBDF3\uBDF5\uBDF6\uBDF7\uBDF9",6,"\uBE01\uBE02\uBE04\uBE06",5,"\uBE0E\uBE0F\uBE11\uBE12\uBE13"],["9581","\uBE15",6,"\uBE1E\uBE20",35,"\uBE46\uBE47\uBE49\uBE4A\uBE4B\uBE4D\uBE4F",4,"\uBE56\uBE58\uBE5C\uBE5D\uBE5E\uBE5F\uBE62\uBE63\uBE65\uBE66\uBE67\uBE69\uBE6B",4,"\uBE72\uBE76",4,"\uBE7E\uBE7F\uBE81\uBE82\uBE83\uBE85",6,"\uBE8E\uBE92",5,"\uBE9A",13,"\uBEA9",14],["9641","\uBEB8",23,"\uBED2\uBED3"],["9661","\uBED5\uBED6\uBED9",6,"\uBEE1\uBEE2\uBEE6",5,"\uBEED",8],["9681","\uBEF6",10,"\uBF02",5,"\uBF0A",13,"\uBF1A\uBF1E",33,"\uBF42\uBF43\uBF45\uBF46\uBF47\uBF49",6,"\uBF52\uBF53\uBF54\uBF56",44],["9741","\uBF83",16,"\uBF95",8],["9761","\uBF9E",17,"\uBFB1",7],["9781","\uBFB9",11,"\uBFC6",5,"\uBFCE\uBFCF\uBFD1\uBFD2\uBFD3\uBFD5",6,"\uBFDD\uBFDE\uBFE0\uBFE2",89,"\uC03D\uC03E\uC03F"],["9841","\uC040",16,"\uC052",5,"\uC059\uC05A\uC05B"],["9861","\uC05D\uC05E\uC05F\uC061",6,"\uC06A",15],["9881","\uC07A",21,"\uC092\uC093\uC095\uC096\uC097\uC099",6,"\uC0A2\uC0A4\uC0A6",5,"\uC0AE\uC0B1\uC0B2\uC0B7",4,"\uC0BE\uC0C2\uC0C3\uC0C4\uC0C6\uC0C7\uC0CA\uC0CB\uC0CD\uC0CE\uC0CF\uC0D1",6,"\uC0DA\uC0DE",5,"\uC0E6\uC0E7\uC0E9\uC0EA\uC0EB\uC0ED",6,"\uC0F6\uC0F8\uC0FA",5,"\uC101\uC102\uC103\uC105\uC106\uC107\uC109",6,"\uC111\uC112\uC113\uC114\uC116",5,"\uC121\uC122\uC125\uC128\uC129\uC12A\uC12B\uC12E"],["9941","\uC132\uC133\uC134\uC135\uC137\uC13A\uC13B\uC13D\uC13E\uC13F\uC141",6,"\uC14A\uC14E",5,"\uC156\uC157"],["9961","\uC159\uC15A\uC15B\uC15D",6,"\uC166\uC16A",5,"\uC171\uC172\uC173\uC175\uC176\uC177\uC179\uC17A\uC17B"],["9981","\uC17C",8,"\uC186",5,"\uC18F\uC191\uC192\uC193\uC195\uC197",4,"\uC19E\uC1A0\uC1A2\uC1A3\uC1A4\uC1A6\uC1A7\uC1AA\uC1AB\uC1AD\uC1AE\uC1AF\uC1B1",11,"\uC1BE",5,"\uC1C5\uC1C6\uC1C7\uC1C9\uC1CA\uC1CB\uC1CD",6,"\uC1D5\uC1D6\uC1D9",6,"\uC1E1\uC1E2\uC1E3\uC1E5\uC1E6\uC1E7\uC1E9",6,"\uC1F2\uC1F4",7,"\uC1FE\uC1FF\uC201\uC202\uC203\uC205",6,"\uC20E\uC210\uC212",5,"\uC21A\uC21B\uC21D\uC21E\uC221\uC222\uC223"],["9a41","\uC224\uC225\uC226\uC227\uC22A\uC22C\uC22E\uC230\uC233\uC235",16],["9a61","\uC246\uC247\uC249",6,"\uC252\uC253\uC255\uC256\uC257\uC259",6,"\uC261\uC262\uC263\uC264\uC266"],["9a81","\uC267",4,"\uC26E\uC26F\uC271\uC272\uC273\uC275",6,"\uC27E\uC280\uC282",5,"\uC28A",5,"\uC291",6,"\uC299\uC29A\uC29C\uC29E",5,"\uC2A6\uC2A7\uC2A9\uC2AA\uC2AB\uC2AE",5,"\uC2B6\uC2B8\uC2BA",33,"\uC2DE\uC2DF\uC2E1\uC2E2\uC2E5",5,"\uC2EE\uC2F0\uC2F2\uC2F3\uC2F4\uC2F5\uC2F7\uC2FA\uC2FD\uC2FE\uC2FF\uC301",6,"\uC30A\uC30B\uC30E\uC30F"],["9b41","\uC310\uC311\uC312\uC316\uC317\uC319\uC31A\uC31B\uC31D",6,"\uC326\uC327\uC32A",8],["9b61","\uC333",17,"\uC346",7],["9b81","\uC34E",25,"\uC36A\uC36B\uC36D\uC36E\uC36F\uC371\uC373",4,"\uC37A\uC37B\uC37E",5,"\uC385\uC386\uC387\uC389\uC38A\uC38B\uC38D",50,"\uC3C1",22,"\uC3DA"],["9c41","\uC3DB\uC3DD\uC3DE\uC3E1\uC3E3",4,"\uC3EA\uC3EB\uC3EC\uC3EE",5,"\uC3F6\uC3F7\uC3F9",5],["9c61","\uC3FF",8,"\uC409",6,"\uC411",9],["9c81","\uC41B",8,"\uC425",6,"\uC42D\uC42E\uC42F\uC431\uC432\uC433\uC435",6,"\uC43E",9,"\uC449",26,"\uC466\uC467\uC469\uC46A\uC46B\uC46D",6,"\uC476\uC477\uC478\uC47A",5,"\uC481",18,"\uC495",6,"\uC49D",12],["9d41","\uC4AA",13,"\uC4B9\uC4BA\uC4BB\uC4BD",8],["9d61","\uC4C6",25],["9d81","\uC4E0",8,"\uC4EA",5,"\uC4F2\uC4F3\uC4F5\uC4F6\uC4F7\uC4F9\uC4FB\uC4FC\uC4FD\uC4FE\uC502",9,"\uC50D\uC50E\uC50F\uC511\uC512\uC513\uC515",6,"\uC51D",10,"\uC52A\uC52B\uC52D\uC52E\uC52F\uC531",6,"\uC53A\uC53C\uC53E",5,"\uC546\uC547\uC54B\uC54F\uC550\uC551\uC552\uC556\uC55A\uC55B\uC55C\uC55F\uC562\uC563\uC565\uC566\uC567\uC569",6,"\uC572\uC576",5,"\uC57E\uC57F\uC581\uC582\uC583\uC585\uC586\uC588\uC589\uC58A\uC58B\uC58E\uC590\uC592\uC593\uC594"],["9e41","\uC596\uC599\uC59A\uC59B\uC59D\uC59E\uC59F\uC5A1",7,"\uC5AA",9,"\uC5B6"],["9e61","\uC5B7\uC5BA\uC5BF",4,"\uC5CB\uC5CD\uC5CF\uC5D2\uC5D3\uC5D5\uC5D6\uC5D7\uC5D9",6,"\uC5E2\uC5E4\uC5E6\uC5E7"],["9e81","\uC5E8\uC5E9\uC5EA\uC5EB\uC5EF\uC5F1\uC5F2\uC5F3\uC5F5\uC5F8\uC5F9\uC5FA\uC5FB\uC602\uC603\uC604\uC609\uC60A\uC60B\uC60D\uC60E\uC60F\uC611",6,"\uC61A\uC61D",6,"\uC626\uC627\uC629\uC62A\uC62B\uC62F\uC631\uC632\uC636\uC638\uC63A\uC63C\uC63D\uC63E\uC63F\uC642\uC643\uC645\uC646\uC647\uC649",6,"\uC652\uC656",5,"\uC65E\uC65F\uC661",10,"\uC66D\uC66E\uC670\uC672",5,"\uC67A\uC67B\uC67D\uC67E\uC67F\uC681",6,"\uC68A\uC68C\uC68E",5,"\uC696\uC697\uC699\uC69A\uC69B\uC69D",6,"\uC6A6"],["9f41","\uC6A8\uC6AA",5,"\uC6B2\uC6B3\uC6B5\uC6B6\uC6B7\uC6BB",4,"\uC6C2\uC6C4\uC6C6",5,"\uC6CE"],["9f61","\uC6CF\uC6D1\uC6D2\uC6D3\uC6D5",6,"\uC6DE\uC6DF\uC6E2",5,"\uC6EA\uC6EB\uC6ED\uC6EE\uC6EF\uC6F1\uC6F2"],["9f81","\uC6F3",4,"\uC6FA\uC6FB\uC6FC\uC6FE",5,"\uC706\uC707\uC709\uC70A\uC70B\uC70D",6,"\uC716\uC718\uC71A",5,"\uC722\uC723\uC725\uC726\uC727\uC729",6,"\uC732\uC734\uC736\uC738\uC739\uC73A\uC73B\uC73E\uC73F\uC741\uC742\uC743\uC745",4,"\uC74B\uC74E\uC750\uC759\uC75A\uC75B\uC75D\uC75E\uC75F\uC761",6,"\uC769\uC76A\uC76C",7,"\uC776\uC777\uC779\uC77A\uC77B\uC77F\uC780\uC781\uC782\uC786\uC78B\uC78C\uC78D\uC78F\uC792\uC793\uC795\uC799\uC79B",4,"\uC7A2\uC7A7",4,"\uC7AE\uC7AF\uC7B1\uC7B2\uC7B3\uC7B5\uC7B6\uC7B7"],["a041","\uC7B8\uC7B9\uC7BA\uC7BB\uC7BE\uC7C2",5,"\uC7CA\uC7CB\uC7CD\uC7CF\uC7D1",6,"\uC7D9\uC7DA\uC7DB\uC7DC"],["a061","\uC7DE",5,"\uC7E5\uC7E6\uC7E7\uC7E9\uC7EA\uC7EB\uC7ED",13],["a081","\uC7FB",4,"\uC802\uC803\uC805\uC806\uC807\uC809\uC80B",4,"\uC812\uC814\uC817",4,"\uC81E\uC81F\uC821\uC822\uC823\uC825",6,"\uC82E\uC830\uC832",5,"\uC839\uC83A\uC83B\uC83D\uC83E\uC83F\uC841",6,"\uC84A\uC84B\uC84E",5,"\uC855",26,"\uC872\uC873\uC875\uC876\uC877\uC879\uC87B",4,"\uC882\uC884\uC888\uC889\uC88A\uC88E",5,"\uC895",7,"\uC89E\uC8A0\uC8A2\uC8A3\uC8A4"],["a141","\uC8A5\uC8A6\uC8A7\uC8A9",18,"\uC8BE\uC8BF\uC8C0\uC8C1"],["a161","\uC8C2\uC8C3\uC8C5\uC8C6\uC8C7\uC8C9\uC8CA\uC8CB\uC8CD",6,"\uC8D6\uC8D8\uC8DA",5,"\uC8E2\uC8E3\uC8E5"],["a181","\uC8E6",14,"\uC8F6",5,"\uC8FE\uC8FF\uC901\uC902\uC903\uC907",4,"\uC90E\u3000\u3001\u3002\xB7\u2025\u2026\xA8\u3003\xAD\u2015\u2225\uFF3C\u223C\u2018\u2019\u201C\u201D\u3014\u3015\u3008",9,"\xB1\xD7\xF7\u2260\u2264\u2265\u221E\u2234\xB0\u2032\u2033\u2103\u212B\uFFE0\uFFE1\uFFE5\u2642\u2640\u2220\u22A5\u2312\u2202\u2207\u2261\u2252\xA7\u203B\u2606\u2605\u25CB\u25CF\u25CE\u25C7\u25C6\u25A1\u25A0\u25B3\u25B2\u25BD\u25BC\u2192\u2190\u2191\u2193\u2194\u3013\u226A\u226B\u221A\u223D\u221D\u2235\u222B\u222C\u2208\u220B\u2286\u2287\u2282\u2283\u222A\u2229\u2227\u2228\uFFE2"],["a241","\uC910\uC912",5,"\uC919",18],["a261","\uC92D",6,"\uC935",18],["a281","\uC948",7,"\uC952\uC953\uC955\uC956\uC957\uC959",6,"\uC962\uC964",7,"\uC96D\uC96E\uC96F\u21D2\u21D4\u2200\u2203\xB4\uFF5E\u02C7\u02D8\u02DD\u02DA\u02D9\xB8\u02DB\xA1\xBF\u02D0\u222E\u2211\u220F\xA4\u2109\u2030\u25C1\u25C0\u25B7\u25B6\u2664\u2660\u2661\u2665\u2667\u2663\u2299\u25C8\u25A3\u25D0\u25D1\u2592\u25A4\u25A5\u25A8\u25A7\u25A6\u25A9\u2668\u260F\u260E\u261C\u261E\xB6\u2020\u2021\u2195\u2197\u2199\u2196\u2198\u266D\u2669\u266A\u266C\u327F\u321C\u2116\u33C7\u2122\u33C2\u33D8\u2121\u20AC\xAE"],["a341","\uC971\uC972\uC973\uC975",6,"\uC97D",10,"\uC98A\uC98B\uC98D\uC98E\uC98F"],["a361","\uC991",6,"\uC99A\uC99C\uC99E",16],["a381","\uC9AF",16,"\uC9C2\uC9C3\uC9C5\uC9C6\uC9C9\uC9CB",4,"\uC9D2\uC9D4\uC9D7\uC9D8\uC9DB\uFF01",58,"\uFFE6\uFF3D",32,"\uFFE3"],["a441","\uC9DE\uC9DF\uC9E1\uC9E3\uC9E5\uC9E6\uC9E8\uC9E9\uC9EA\uC9EB\uC9EE\uC9F2",5,"\uC9FA\uC9FB\uC9FD\uC9FE\uC9FF\uCA01\uCA02\uCA03\uCA04"],["a461","\uCA05\uCA06\uCA07\uCA0A\uCA0E",5,"\uCA15\uCA16\uCA17\uCA19",12],["a481","\uCA26\uCA27\uCA28\uCA2A",28,"\u3131",93],["a541","\uCA47",4,"\uCA4E\uCA4F\uCA51\uCA52\uCA53\uCA55",6,"\uCA5E\uCA62",5,"\uCA69\uCA6A"],["a561","\uCA6B",17,"\uCA7E",5,"\uCA85\uCA86"],["a581","\uCA87",16,"\uCA99",14,"\u2170",9],["a5b0","\u2160",9],["a5c1","\u0391",16,"\u03A3",6],["a5e1","\u03B1",16,"\u03C3",6],["a641","\uCAA8",19,"\uCABE\uCABF\uCAC1\uCAC2\uCAC3\uCAC5"],["a661","\uCAC6",5,"\uCACE\uCAD0\uCAD2\uCAD4\uCAD5\uCAD6\uCAD7\uCADA",5,"\uCAE1",6],["a681","\uCAE8\uCAE9\uCAEA\uCAEB\uCAED",6,"\uCAF5",18,"\uCB09\uCB0A\u2500\u2502\u250C\u2510\u2518\u2514\u251C\u252C\u2524\u2534\u253C\u2501\u2503\u250F\u2513\u251B\u2517\u2523\u2533\u252B\u253B\u254B\u2520\u252F\u2528\u2537\u253F\u251D\u2530\u2525\u2538\u2542\u2512\u2511\u251A\u2519\u2516\u2515\u250E\u250D\u251E\u251F\u2521\u2522\u2526\u2527\u2529\u252A\u252D\u252E\u2531\u2532\u2535\u2536\u2539\u253A\u253D\u253E\u2540\u2541\u2543",7],["a741","\uCB0B",4,"\uCB11\uCB12\uCB13\uCB15\uCB16\uCB17\uCB19",6,"\uCB22",7],["a761","\uCB2A",22,"\uCB42\uCB43\uCB44"],["a781","\uCB45\uCB46\uCB47\uCB4A\uCB4B\uCB4D\uCB4E\uCB4F\uCB51",6,"\uCB5A\uCB5B\uCB5C\uCB5E",5,"\uCB65",7,"\u3395\u3396\u3397\u2113\u3398\u33C4\u33A3\u33A4\u33A5\u33A6\u3399",9,"\u33CA\u338D\u338E\u338F\u33CF\u3388\u3389\u33C8\u33A7\u33A8\u33B0",9,"\u3380",4,"\u33BA",5,"\u3390",4,"\u2126\u33C0\u33C1\u338A\u338B\u338C\u33D6\u33C5\u33AD\u33AE\u33AF\u33DB\u33A9\u33AA\u33AB\u33AC\u33DD\u33D0\u33D3\u33C3\u33C9\u33DC\u33C6"],["a841","\uCB6D",10,"\uCB7A",14],["a861","\uCB89",18,"\uCB9D",6],["a881","\uCBA4",19,"\uCBB9",11,"\xC6\xD0\xAA\u0126"],["a8a6","\u0132"],["a8a8","\u013F\u0141\xD8\u0152\xBA\xDE\u0166\u014A"],["a8b1","\u3260",27,"\u24D0",25,"\u2460",14,"\xBD\u2153\u2154\xBC\xBE\u215B\u215C\u215D\u215E"],["a941","\uCBC5",14,"\uCBD5",10],["a961","\uCBE0\uCBE1\uCBE2\uCBE3\uCBE5\uCBE6\uCBE8\uCBEA",18],["a981","\uCBFD",14,"\uCC0E\uCC0F\uCC11\uCC12\uCC13\uCC15",6,"\uCC1E\uCC1F\uCC20\uCC23\uCC24\xE6\u0111\xF0\u0127\u0131\u0133\u0138\u0140\u0142\xF8\u0153\xDF\xFE\u0167\u014B\u0149\u3200",27,"\u249C",25,"\u2474",14,"\xB9\xB2\xB3\u2074\u207F\u2081\u2082\u2083\u2084"],["aa41","\uCC25\uCC26\uCC2A\uCC2B\uCC2D\uCC2F\uCC31",6,"\uCC3A\uCC3F",4,"\uCC46\uCC47\uCC49\uCC4A\uCC4B\uCC4D\uCC4E"],["aa61","\uCC4F",4,"\uCC56\uCC5A",5,"\uCC61\uCC62\uCC63\uCC65\uCC67\uCC69",6,"\uCC71\uCC72"],["aa81","\uCC73\uCC74\uCC76",29,"\u3041",82],["ab41","\uCC94\uCC95\uCC96\uCC97\uCC9A\uCC9B\uCC9D\uCC9E\uCC9F\uCCA1",6,"\uCCAA\uCCAE",5,"\uCCB6\uCCB7\uCCB9"],["ab61","\uCCBA\uCCBB\uCCBD",6,"\uCCC6\uCCC8\uCCCA",5,"\uCCD1\uCCD2\uCCD3\uCCD5",5],["ab81","\uCCDB",8,"\uCCE5",6,"\uCCED\uCCEE\uCCEF\uCCF1",12,"\u30A1",85],["ac41","\uCCFE\uCCFF\uCD00\uCD02",5,"\uCD0A\uCD0B\uCD0D\uCD0E\uCD0F\uCD11",6,"\uCD1A\uCD1C\uCD1E\uCD1F\uCD20"],["ac61","\uCD21\uCD22\uCD23\uCD25\uCD26\uCD27\uCD29\uCD2A\uCD2B\uCD2D",11,"\uCD3A",4],["ac81","\uCD3F",28,"\uCD5D\uCD5E\uCD5F\u0410",5,"\u0401\u0416",25],["acd1","\u0430",5,"\u0451\u0436",25],["ad41","\uCD61\uCD62\uCD63\uCD65",6,"\uCD6E\uCD70\uCD72",5,"\uCD79",7],["ad61","\uCD81",6,"\uCD89",10,"\uCD96\uCD97\uCD99\uCD9A\uCD9B\uCD9D\uCD9E\uCD9F"],["ad81","\uCDA0\uCDA1\uCDA2\uCDA3\uCDA6\uCDA8\uCDAA",5,"\uCDB1",18,"\uCDC5"],["ae41","\uCDC6",5,"\uCDCD\uCDCE\uCDCF\uCDD1",16],["ae61","\uCDE2",5,"\uCDE9\uCDEA\uCDEB\uCDED\uCDEE\uCDEF\uCDF1",6,"\uCDFA\uCDFC\uCDFE",4],["ae81","\uCE03\uCE05\uCE06\uCE07\uCE09\uCE0A\uCE0B\uCE0D",6,"\uCE15\uCE16\uCE17\uCE18\uCE1A",5,"\uCE22\uCE23\uCE25\uCE26\uCE27\uCE29\uCE2A\uCE2B"],["af41","\uCE2C\uCE2D\uCE2E\uCE2F\uCE32\uCE34\uCE36",19],["af61","\uCE4A",13,"\uCE5A\uCE5B\uCE5D\uCE5E\uCE62",5,"\uCE6A\uCE6C"],["af81","\uCE6E",5,"\uCE76\uCE77\uCE79\uCE7A\uCE7B\uCE7D",6,"\uCE86\uCE88\uCE8A",5,"\uCE92\uCE93\uCE95\uCE96\uCE97\uCE99"],["b041","\uCE9A",5,"\uCEA2\uCEA6",5,"\uCEAE",12],["b061","\uCEBB",5,"\uCEC2",19],["b081","\uCED6",13,"\uCEE6\uCEE7\uCEE9\uCEEA\uCEED",6,"\uCEF6\uCEFA",5,"\uAC00\uAC01\uAC04\uAC07\uAC08\uAC09\uAC0A\uAC10",7,"\uAC19",4,"\uAC20\uAC24\uAC2C\uAC2D\uAC2F\uAC30\uAC31\uAC38\uAC39\uAC3C\uAC40\uAC4B\uAC4D\uAC54\uAC58\uAC5C\uAC70\uAC71\uAC74\uAC77\uAC78\uAC7A\uAC80\uAC81\uAC83\uAC84\uAC85\uAC86\uAC89\uAC8A\uAC8B\uAC8C\uAC90\uAC94\uAC9C\uAC9D\uAC9F\uACA0\uACA1\uACA8\uACA9\uACAA\uACAC\uACAF\uACB0\uACB8\uACB9\uACBB\uACBC\uACBD\uACC1\uACC4\uACC8\uACCC\uACD5\uACD7\uACE0\uACE1\uACE4\uACE7\uACE8\uACEA\uACEC\uACEF\uACF0\uACF1\uACF3\uACF5\uACF6\uACFC\uACFD\uAD00\uAD04\uAD06"],["b141","\uCF02\uCF03\uCF05\uCF06\uCF07\uCF09",6,"\uCF12\uCF14\uCF16",5,"\uCF1D\uCF1E\uCF1F\uCF21\uCF22\uCF23"],["b161","\uCF25",6,"\uCF2E\uCF32",5,"\uCF39",11],["b181","\uCF45",14,"\uCF56\uCF57\uCF59\uCF5A\uCF5B\uCF5D",6,"\uCF66\uCF68\uCF6A\uCF6B\uCF6C\uAD0C\uAD0D\uAD0F\uAD11\uAD18\uAD1C\uAD20\uAD29\uAD2C\uAD2D\uAD34\uAD35\uAD38\uAD3C\uAD44\uAD45\uAD47\uAD49\uAD50\uAD54\uAD58\uAD61\uAD63\uAD6C\uAD6D\uAD70\uAD73\uAD74\uAD75\uAD76\uAD7B\uAD7C\uAD7D\uAD7F\uAD81\uAD82\uAD88\uAD89\uAD8C\uAD90\uAD9C\uAD9D\uADA4\uADB7\uADC0\uADC1\uADC4\uADC8\uADD0\uADD1\uADD3\uADDC\uADE0\uADE4\uADF8\uADF9\uADFC\uADFF\uAE00\uAE01\uAE08\uAE09\uAE0B\uAE0D\uAE14\uAE30\uAE31\uAE34\uAE37\uAE38\uAE3A\uAE40\uAE41\uAE43\uAE45\uAE46\uAE4A\uAE4C\uAE4D\uAE4E\uAE50\uAE54\uAE56\uAE5C\uAE5D\uAE5F\uAE60\uAE61\uAE65\uAE68\uAE69\uAE6C\uAE70\uAE78"],["b241","\uCF6D\uCF6E\uCF6F\uCF72\uCF73\uCF75\uCF76\uCF77\uCF79",6,"\uCF81\uCF82\uCF83\uCF84\uCF86",5,"\uCF8D"],["b261","\uCF8E",18,"\uCFA2",5,"\uCFA9"],["b281","\uCFAA",5,"\uCFB1",18,"\uCFC5",6,"\uAE79\uAE7B\uAE7C\uAE7D\uAE84\uAE85\uAE8C\uAEBC\uAEBD\uAEBE\uAEC0\uAEC4\uAECC\uAECD\uAECF\uAED0\uAED1\uAED8\uAED9\uAEDC\uAEE8\uAEEB\uAEED\uAEF4\uAEF8\uAEFC\uAF07\uAF08\uAF0D\uAF10\uAF2C\uAF2D\uAF30\uAF32\uAF34\uAF3C\uAF3D\uAF3F\uAF41\uAF42\uAF43\uAF48\uAF49\uAF50\uAF5C\uAF5D\uAF64\uAF65\uAF79\uAF80\uAF84\uAF88\uAF90\uAF91\uAF95\uAF9C\uAFB8\uAFB9\uAFBC\uAFC0\uAFC7\uAFC8\uAFC9\uAFCB\uAFCD\uAFCE\uAFD4\uAFDC\uAFE8\uAFE9\uAFF0\uAFF1\uAFF4\uAFF8\uB000\uB001\uB004\uB00C\uB010\uB014\uB01C\uB01D\uB028\uB044\uB045\uB048\uB04A\uB04C\uB04E\uB053\uB054\uB055\uB057\uB059"],["b341","\uCFCC",19,"\uCFE2\uCFE3\uCFE5\uCFE6\uCFE7\uCFE9"],["b361","\uCFEA",5,"\uCFF2\uCFF4\uCFF6",5,"\uCFFD\uCFFE\uCFFF\uD001\uD002\uD003\uD005",5],["b381","\uD00B",5,"\uD012",5,"\uD019",19,"\uB05D\uB07C\uB07D\uB080\uB084\uB08C\uB08D\uB08F\uB091\uB098\uB099\uB09A\uB09C\uB09F\uB0A0\uB0A1\uB0A2\uB0A8\uB0A9\uB0AB",4,"\uB0B1\uB0B3\uB0B4\uB0B5\uB0B8\uB0BC\uB0C4\uB0C5\uB0C7\uB0C8\uB0C9\uB0D0\uB0D1\uB0D4\uB0D8\uB0E0\uB0E5\uB108\uB109\uB10B\uB10C\uB110\uB112\uB113\uB118\uB119\uB11B\uB11C\uB11D\uB123\uB124\uB125\uB128\uB12C\uB134\uB135\uB137\uB138\uB139\uB140\uB141\uB144\uB148\uB150\uB151\uB154\uB155\uB158\uB15C\uB160\uB178\uB179\uB17C\uB180\uB182\uB188\uB189\uB18B\uB18D\uB192\uB193\uB194\uB198\uB19C\uB1A8\uB1CC\uB1D0\uB1D4\uB1DC\uB1DD"],["b441","\uD02E",5,"\uD036\uD037\uD039\uD03A\uD03B\uD03D",6,"\uD046\uD048\uD04A",5],["b461","\uD051\uD052\uD053\uD055\uD056\uD057\uD059",6,"\uD061",10,"\uD06E\uD06F"],["b481","\uD071\uD072\uD073\uD075",6,"\uD07E\uD07F\uD080\uD082",18,"\uB1DF\uB1E8\uB1E9\uB1EC\uB1F0\uB1F9\uB1FB\uB1FD\uB204\uB205\uB208\uB20B\uB20C\uB214\uB215\uB217\uB219\uB220\uB234\uB23C\uB258\uB25C\uB260\uB268\uB269\uB274\uB275\uB27C\uB284\uB285\uB289\uB290\uB291\uB294\uB298\uB299\uB29A\uB2A0\uB2A1\uB2A3\uB2A5\uB2A6\uB2AA\uB2AC\uB2B0\uB2B4\uB2C8\uB2C9\uB2CC\uB2D0\uB2D2\uB2D8\uB2D9\uB2DB\uB2DD\uB2E2\uB2E4\uB2E5\uB2E6\uB2E8\uB2EB",4,"\uB2F3\uB2F4\uB2F5\uB2F7",4,"\uB2FF\uB300\uB301\uB304\uB308\uB310\uB311\uB313\uB314\uB315\uB31C\uB354\uB355\uB356\uB358\uB35B\uB35C\uB35E\uB35F\uB364\uB365"],["b541","\uD095",14,"\uD0A6\uD0A7\uD0A9\uD0AA\uD0AB\uD0AD",5],["b561","\uD0B3\uD0B6\uD0B8\uD0BA",5,"\uD0C2\uD0C3\uD0C5\uD0C6\uD0C7\uD0CA",5,"\uD0D2\uD0D6",4],["b581","\uD0DB\uD0DE\uD0DF\uD0E1\uD0E2\uD0E3\uD0E5",6,"\uD0EE\uD0F2",5,"\uD0F9",11,"\uB367\uB369\uB36B\uB36E\uB370\uB371\uB374\uB378\uB380\uB381\uB383\uB384\uB385\uB38C\uB390\uB394\uB3A0\uB3A1\uB3A8\uB3AC\uB3C4\uB3C5\uB3C8\uB3CB\uB3CC\uB3CE\uB3D0\uB3D4\uB3D5\uB3D7\uB3D9\uB3DB\uB3DD\uB3E0\uB3E4\uB3E8\uB3FC\uB410\uB418\uB41C\uB420\uB428\uB429\uB42B\uB434\uB450\uB451\uB454\uB458\uB460\uB461\uB463\uB465\uB46C\uB480\uB488\uB49D\uB4A4\uB4A8\uB4AC\uB4B5\uB4B7\uB4B9\uB4C0\uB4C4\uB4C8\uB4D0\uB4D5\uB4DC\uB4DD\uB4E0\uB4E3\uB4E4\uB4E6\uB4EC\uB4ED\uB4EF\uB4F1\uB4F8\uB514\uB515\uB518\uB51B\uB51C\uB524\uB525\uB527\uB528\uB529\uB52A\uB530\uB531\uB534\uB538"],["b641","\uD105",7,"\uD10E",17],["b661","\uD120",15,"\uD132\uD133\uD135\uD136\uD137\uD139\uD13B\uD13C\uD13D\uD13E"],["b681","\uD13F\uD142\uD146",5,"\uD14E\uD14F\uD151\uD152\uD153\uD155",6,"\uD15E\uD160\uD162",5,"\uD169\uD16A\uD16B\uD16D\uB540\uB541\uB543\uB544\uB545\uB54B\uB54C\uB54D\uB550\uB554\uB55C\uB55D\uB55F\uB560\uB561\uB5A0\uB5A1\uB5A4\uB5A8\uB5AA\uB5AB\uB5B0\uB5B1\uB5B3\uB5B4\uB5B5\uB5BB\uB5BC\uB5BD\uB5C0\uB5C4\uB5CC\uB5CD\uB5CF\uB5D0\uB5D1\uB5D8\uB5EC\uB610\uB611\uB614\uB618\uB625\uB62C\uB634\uB648\uB664\uB668\uB69C\uB69D\uB6A0\uB6A4\uB6AB\uB6AC\uB6B1\uB6D4\uB6F0\uB6F4\uB6F8\uB700\uB701\uB705\uB728\uB729\uB72C\uB72F\uB730\uB738\uB739\uB73B\uB744\uB748\uB74C\uB754\uB755\uB760\uB764\uB768\uB770\uB771\uB773\uB775\uB77C\uB77D\uB780\uB784\uB78C\uB78D\uB78F\uB790\uB791\uB792\uB796\uB797"],["b741","\uD16E",13,"\uD17D",6,"\uD185\uD186\uD187\uD189\uD18A"],["b761","\uD18B",20,"\uD1A2\uD1A3\uD1A5\uD1A6\uD1A7"],["b781","\uD1A9",6,"\uD1B2\uD1B4\uD1B6\uD1B7\uD1B8\uD1B9\uD1BB\uD1BD\uD1BE\uD1BF\uD1C1",14,"\uB798\uB799\uB79C\uB7A0\uB7A8\uB7A9\uB7AB\uB7AC\uB7AD\uB7B4\uB7B5\uB7B8\uB7C7\uB7C9\uB7EC\uB7ED\uB7F0\uB7F4\uB7FC\uB7FD\uB7FF\uB800\uB801\uB807\uB808\uB809\uB80C\uB810\uB818\uB819\uB81B\uB81D\uB824\uB825\uB828\uB82C\uB834\uB835\uB837\uB838\uB839\uB840\uB844\uB851\uB853\uB85C\uB85D\uB860\uB864\uB86C\uB86D\uB86F\uB871\uB878\uB87C\uB88D\uB8A8\uB8B0\uB8B4\uB8B8\uB8C0\uB8C1\uB8C3\uB8C5\uB8CC\uB8D0\uB8D4\uB8DD\uB8DF\uB8E1\uB8E8\uB8E9\uB8EC\uB8F0\uB8F8\uB8F9\uB8FB\uB8FD\uB904\uB918\uB920\uB93C\uB93D\uB940\uB944\uB94C\uB94F\uB951\uB958\uB959\uB95C\uB960\uB968\uB969"],["b841","\uD1D0",7,"\uD1D9",17],["b861","\uD1EB",8,"\uD1F5\uD1F6\uD1F7\uD1F9",13],["b881","\uD208\uD20A",5,"\uD211",24,"\uB96B\uB96D\uB974\uB975\uB978\uB97C\uB984\uB985\uB987\uB989\uB98A\uB98D\uB98E\uB9AC\uB9AD\uB9B0\uB9B4\uB9BC\uB9BD\uB9BF\uB9C1\uB9C8\uB9C9\uB9CC\uB9CE",4,"\uB9D8\uB9D9\uB9DB\uB9DD\uB9DE\uB9E1\uB9E3\uB9E4\uB9E5\uB9E8\uB9EC\uB9F4\uB9F5\uB9F7\uB9F8\uB9F9\uB9FA\uBA00\uBA01\uBA08\uBA15\uBA38\uBA39\uBA3C\uBA40\uBA42\uBA48\uBA49\uBA4B\uBA4D\uBA4E\uBA53\uBA54\uBA55\uBA58\uBA5C\uBA64\uBA65\uBA67\uBA68\uBA69\uBA70\uBA71\uBA74\uBA78\uBA83\uBA84\uBA85\uBA87\uBA8C\uBAA8\uBAA9\uBAAB\uBAAC\uBAB0\uBAB2\uBAB8\uBAB9\uBABB\uBABD\uBAC4\uBAC8\uBAD8\uBAD9\uBAFC"],["b941","\uD22A\uD22B\uD22E\uD22F\uD231\uD232\uD233\uD235",6,"\uD23E\uD240\uD242",5,"\uD249\uD24A\uD24B\uD24C"],["b961","\uD24D",14,"\uD25D",6,"\uD265\uD266\uD267\uD268"],["b981","\uD269",22,"\uD282\uD283\uD285\uD286\uD287\uD289\uD28A\uD28B\uD28C\uBB00\uBB04\uBB0D\uBB0F\uBB11\uBB18\uBB1C\uBB20\uBB29\uBB2B\uBB34\uBB35\uBB36\uBB38\uBB3B\uBB3C\uBB3D\uBB3E\uBB44\uBB45\uBB47\uBB49\uBB4D\uBB4F\uBB50\uBB54\uBB58\uBB61\uBB63\uBB6C\uBB88\uBB8C\uBB90\uBBA4\uBBA8\uBBAC\uBBB4\uBBB7\uBBC0\uBBC4\uBBC8\uBBD0\uBBD3\uBBF8\uBBF9\uBBFC\uBBFF\uBC00\uBC02\uBC08\uBC09\uBC0B\uBC0C\uBC0D\uBC0F\uBC11\uBC14",4,"\uBC1B",4,"\uBC24\uBC25\uBC27\uBC29\uBC2D\uBC30\uBC31\uBC34\uBC38\uBC40\uBC41\uBC43\uBC44\uBC45\uBC49\uBC4C\uBC4D\uBC50\uBC5D\uBC84\uBC85\uBC88\uBC8B\uBC8C\uBC8E\uBC94\uBC95\uBC97"],["ba41","\uD28D\uD28E\uD28F\uD292\uD293\uD294\uD296",5,"\uD29D\uD29E\uD29F\uD2A1\uD2A2\uD2A3\uD2A5",6,"\uD2AD"],["ba61","\uD2AE\uD2AF\uD2B0\uD2B2",5,"\uD2BA\uD2BB\uD2BD\uD2BE\uD2C1\uD2C3",4,"\uD2CA\uD2CC",5],["ba81","\uD2D2\uD2D3\uD2D5\uD2D6\uD2D7\uD2D9\uD2DA\uD2DB\uD2DD",6,"\uD2E6",9,"\uD2F2\uD2F3\uD2F5\uD2F6\uD2F7\uD2F9\uD2FA\uBC99\uBC9A\uBCA0\uBCA1\uBCA4\uBCA7\uBCA8\uBCB0\uBCB1\uBCB3\uBCB4\uBCB5\uBCBC\uBCBD\uBCC0\uBCC4\uBCCD\uBCCF\uBCD0\uBCD1\uBCD5\uBCD8\uBCDC\uBCF4\uBCF5\uBCF6\uBCF8\uBCFC\uBD04\uBD05\uBD07\uBD09\uBD10\uBD14\uBD24\uBD2C\uBD40\uBD48\uBD49\uBD4C\uBD50\uBD58\uBD59\uBD64\uBD68\uBD80\uBD81\uBD84\uBD87\uBD88\uBD89\uBD8A\uBD90\uBD91\uBD93\uBD95\uBD99\uBD9A\uBD9C\uBDA4\uBDB0\uBDB8\uBDD4\uBDD5\uBDD8\uBDDC\uBDE9\uBDF0\uBDF4\uBDF8\uBE00\uBE03\uBE05\uBE0C\uBE0D\uBE10\uBE14\uBE1C\uBE1D\uBE1F\uBE44\uBE45\uBE48\uBE4C\uBE4E\uBE54\uBE55\uBE57\uBE59\uBE5A\uBE5B\uBE60\uBE61\uBE64"],["bb41","\uD2FB",4,"\uD302\uD304\uD306",5,"\uD30F\uD311\uD312\uD313\uD315\uD317",4,"\uD31E\uD322\uD323"],["bb61","\uD324\uD326\uD327\uD32A\uD32B\uD32D\uD32E\uD32F\uD331",6,"\uD33A\uD33E",5,"\uD346\uD347\uD348\uD349"],["bb81","\uD34A",31,"\uBE68\uBE6A\uBE70\uBE71\uBE73\uBE74\uBE75\uBE7B\uBE7C\uBE7D\uBE80\uBE84\uBE8C\uBE8D\uBE8F\uBE90\uBE91\uBE98\uBE99\uBEA8\uBED0\uBED1\uBED4\uBED7\uBED8\uBEE0\uBEE3\uBEE4\uBEE5\uBEEC\uBF01\uBF08\uBF09\uBF18\uBF19\uBF1B\uBF1C\uBF1D\uBF40\uBF41\uBF44\uBF48\uBF50\uBF51\uBF55\uBF94\uBFB0\uBFC5\uBFCC\uBFCD\uBFD0\uBFD4\uBFDC\uBFDF\uBFE1\uC03C\uC051\uC058\uC05C\uC060\uC068\uC069\uC090\uC091\uC094\uC098\uC0A0\uC0A1\uC0A3\uC0A5\uC0AC\uC0AD\uC0AF\uC0B0\uC0B3\uC0B4\uC0B5\uC0B6\uC0BC\uC0BD\uC0BF\uC0C0\uC0C1\uC0C5\uC0C8\uC0C9\uC0CC\uC0D0\uC0D8\uC0D9\uC0DB\uC0DC\uC0DD\uC0E4"],["bc41","\uD36A",17,"\uD37E\uD37F\uD381\uD382\uD383\uD385\uD386\uD387"],["bc61","\uD388\uD389\uD38A\uD38B\uD38E\uD392",5,"\uD39A\uD39B\uD39D\uD39E\uD39F\uD3A1",6,"\uD3AA\uD3AC\uD3AE"],["bc81","\uD3AF",4,"\uD3B5\uD3B6\uD3B7\uD3B9\uD3BA\uD3BB\uD3BD",6,"\uD3C6\uD3C7\uD3CA",5,"\uD3D1",5,"\uC0E5\uC0E8\uC0EC\uC0F4\uC0F5\uC0F7\uC0F9\uC100\uC104\uC108\uC110\uC115\uC11C",4,"\uC123\uC124\uC126\uC127\uC12C\uC12D\uC12F\uC130\uC131\uC136\uC138\uC139\uC13C\uC140\uC148\uC149\uC14B\uC14C\uC14D\uC154\uC155\uC158\uC15C\uC164\uC165\uC167\uC168\uC169\uC170\uC174\uC178\uC185\uC18C\uC18D\uC18E\uC190\uC194\uC196\uC19C\uC19D\uC19F\uC1A1\uC1A5\uC1A8\uC1A9\uC1AC\uC1B0\uC1BD\uC1C4\uC1C8\uC1CC\uC1D4\uC1D7\uC1D8\uC1E0\uC1E4\uC1E8\uC1F0\uC1F1\uC1F3\uC1FC\uC1FD\uC200\uC204\uC20C\uC20D\uC20F\uC211\uC218\uC219\uC21C\uC21F\uC220\uC228\uC229\uC22B\uC22D"],["bd41","\uD3D7\uD3D9",7,"\uD3E2\uD3E4",7,"\uD3EE\uD3EF\uD3F1\uD3F2\uD3F3\uD3F5\uD3F6\uD3F7"],["bd61","\uD3F8\uD3F9\uD3FA\uD3FB\uD3FE\uD400\uD402",5,"\uD409",13],["bd81","\uD417",5,"\uD41E",25,"\uC22F\uC231\uC232\uC234\uC248\uC250\uC251\uC254\uC258\uC260\uC265\uC26C\uC26D\uC270\uC274\uC27C\uC27D\uC27F\uC281\uC288\uC289\uC290\uC298\uC29B\uC29D\uC2A4\uC2A5\uC2A8\uC2AC\uC2AD\uC2B4\uC2B5\uC2B7\uC2B9\uC2DC\uC2DD\uC2E0\uC2E3\uC2E4\uC2EB\uC2EC\uC2ED\uC2EF\uC2F1\uC2F6\uC2F8\uC2F9\uC2FB\uC2FC\uC300\uC308\uC309\uC30C\uC30D\uC313\uC314\uC315\uC318\uC31C\uC324\uC325\uC328\uC329\uC345\uC368\uC369\uC36C\uC370\uC372\uC378\uC379\uC37C\uC37D\uC384\uC388\uC38C\uC3C0\uC3D8\uC3D9\uC3DC\uC3DF\uC3E0\uC3E2\uC3E8\uC3E9\uC3ED\uC3F4\uC3F5\uC3F8\uC408\uC410\uC424\uC42C\uC430"],["be41","\uD438",7,"\uD441\uD442\uD443\uD445",14],["be61","\uD454",7,"\uD45D\uD45E\uD45F\uD461\uD462\uD463\uD465",7,"\uD46E\uD470\uD471\uD472"],["be81","\uD473",4,"\uD47A\uD47B\uD47D\uD47E\uD481\uD483",4,"\uD48A\uD48C\uD48E",5,"\uD495",8,"\uC434\uC43C\uC43D\uC448\uC464\uC465\uC468\uC46C\uC474\uC475\uC479\uC480\uC494\uC49C\uC4B8\uC4BC\uC4E9\uC4F0\uC4F1\uC4F4\uC4F8\uC4FA\uC4FF\uC500\uC501\uC50C\uC510\uC514\uC51C\uC528\uC529\uC52C\uC530\uC538\uC539\uC53B\uC53D\uC544\uC545\uC548\uC549\uC54A\uC54C\uC54D\uC54E\uC553\uC554\uC555\uC557\uC558\uC559\uC55D\uC55E\uC560\uC561\uC564\uC568\uC570\uC571\uC573\uC574\uC575\uC57C\uC57D\uC580\uC584\uC587\uC58C\uC58D\uC58F\uC591\uC595\uC597\uC598\uC59C\uC5A0\uC5A9\uC5B4\uC5B5\uC5B8\uC5B9\uC5BB\uC5BC\uC5BD\uC5BE\uC5C4",6,"\uC5CC\uC5CE"],["bf41","\uD49E",10,"\uD4AA",14],["bf61","\uD4B9",18,"\uD4CD\uD4CE\uD4CF\uD4D1\uD4D2\uD4D3\uD4D5"],["bf81","\uD4D6",5,"\uD4DD\uD4DE\uD4E0",7,"\uD4E9\uD4EA\uD4EB\uD4ED\uD4EE\uD4EF\uD4F1",6,"\uD4F9\uD4FA\uD4FC\uC5D0\uC5D1\uC5D4\uC5D8\uC5E0\uC5E1\uC5E3\uC5E5\uC5EC\uC5ED\uC5EE\uC5F0\uC5F4\uC5F6\uC5F7\uC5FC",5,"\uC605\uC606\uC607\uC608\uC60C\uC610\uC618\uC619\uC61B\uC61C\uC624\uC625\uC628\uC62C\uC62D\uC62E\uC630\uC633\uC634\uC635\uC637\uC639\uC63B\uC640\uC641\uC644\uC648\uC650\uC651\uC653\uC654\uC655\uC65C\uC65D\uC660\uC66C\uC66F\uC671\uC678\uC679\uC67C\uC680\uC688\uC689\uC68B\uC68D\uC694\uC695\uC698\uC69C\uC6A4\uC6A5\uC6A7\uC6A9\uC6B0\uC6B1\uC6B4\uC6B8\uC6B9\uC6BA\uC6C0\uC6C1\uC6C3\uC6C5\uC6CC\uC6CD\uC6D0\uC6D4\uC6DC\uC6DD\uC6E0\uC6E1\uC6E8"],["c041","\uD4FE",5,"\uD505\uD506\uD507\uD509\uD50A\uD50B\uD50D",6,"\uD516\uD518",5],["c061","\uD51E",25],["c081","\uD538\uD539\uD53A\uD53B\uD53E\uD53F\uD541\uD542\uD543\uD545",6,"\uD54E\uD550\uD552",5,"\uD55A\uD55B\uD55D\uD55E\uD55F\uD561\uD562\uD563\uC6E9\uC6EC\uC6F0\uC6F8\uC6F9\uC6FD\uC704\uC705\uC708\uC70C\uC714\uC715\uC717\uC719\uC720\uC721\uC724\uC728\uC730\uC731\uC733\uC735\uC737\uC73C\uC73D\uC740\uC744\uC74A\uC74C\uC74D\uC74F\uC751",7,"\uC75C\uC760\uC768\uC76B\uC774\uC775\uC778\uC77C\uC77D\uC77E\uC783\uC784\uC785\uC787\uC788\uC789\uC78A\uC78E\uC790\uC791\uC794\uC796\uC797\uC798\uC79A\uC7A0\uC7A1\uC7A3\uC7A4\uC7A5\uC7A6\uC7AC\uC7AD\uC7B0\uC7B4\uC7BC\uC7BD\uC7BF\uC7C0\uC7C1\uC7C8\uC7C9\uC7CC\uC7CE\uC7D0\uC7D8\uC7DD\uC7E4\uC7E8\uC7EC\uC800\uC801\uC804\uC808\uC80A"],["c141","\uD564\uD566\uD567\uD56A\uD56C\uD56E",5,"\uD576\uD577\uD579\uD57A\uD57B\uD57D",6,"\uD586\uD58A\uD58B"],["c161","\uD58C\uD58D\uD58E\uD58F\uD591",19,"\uD5A6\uD5A7"],["c181","\uD5A8",31,"\uC810\uC811\uC813\uC815\uC816\uC81C\uC81D\uC820\uC824\uC82C\uC82D\uC82F\uC831\uC838\uC83C\uC840\uC848\uC849\uC84C\uC84D\uC854\uC870\uC871\uC874\uC878\uC87A\uC880\uC881\uC883\uC885\uC886\uC887\uC88B\uC88C\uC88D\uC894\uC89D\uC89F\uC8A1\uC8A8\uC8BC\uC8BD\uC8C4\uC8C8\uC8CC\uC8D4\uC8D5\uC8D7\uC8D9\uC8E0\uC8E1\uC8E4\uC8F5\uC8FC\uC8FD\uC900\uC904\uC905\uC906\uC90C\uC90D\uC90F\uC911\uC918\uC92C\uC934\uC950\uC951\uC954\uC958\uC960\uC961\uC963\uC96C\uC970\uC974\uC97C\uC988\uC989\uC98C\uC990\uC998\uC999\uC99B\uC99D\uC9C0\uC9C1\uC9C4\uC9C7\uC9C8\uC9CA\uC9D0\uC9D1\uC9D3"],["c241","\uD5CA\uD5CB\uD5CD\uD5CE\uD5CF\uD5D1\uD5D3",4,"\uD5DA\uD5DC\uD5DE",5,"\uD5E6\uD5E7\uD5E9\uD5EA\uD5EB\uD5ED\uD5EE"],["c261","\uD5EF",4,"\uD5F6\uD5F8\uD5FA",5,"\uD602\uD603\uD605\uD606\uD607\uD609",6,"\uD612"],["c281","\uD616",5,"\uD61D\uD61E\uD61F\uD621\uD622\uD623\uD625",7,"\uD62E",9,"\uD63A\uD63B\uC9D5\uC9D6\uC9D9\uC9DA\uC9DC\uC9DD\uC9E0\uC9E2\uC9E4\uC9E7\uC9EC\uC9ED\uC9EF\uC9F0\uC9F1\uC9F8\uC9F9\uC9FC\uCA00\uCA08\uCA09\uCA0B\uCA0C\uCA0D\uCA14\uCA18\uCA29\uCA4C\uCA4D\uCA50\uCA54\uCA5C\uCA5D\uCA5F\uCA60\uCA61\uCA68\uCA7D\uCA84\uCA98\uCABC\uCABD\uCAC0\uCAC4\uCACC\uCACD\uCACF\uCAD1\uCAD3\uCAD8\uCAD9\uCAE0\uCAEC\uCAF4\uCB08\uCB10\uCB14\uCB18\uCB20\uCB21\uCB41\uCB48\uCB49\uCB4C\uCB50\uCB58\uCB59\uCB5D\uCB64\uCB78\uCB79\uCB9C\uCBB8\uCBD4\uCBE4\uCBE7\uCBE9\uCC0C\uCC0D\uCC10\uCC14\uCC1C\uCC1D\uCC21\uCC22\uCC27\uCC28\uCC29\uCC2C\uCC2E\uCC30\uCC38\uCC39\uCC3B"],["c341","\uD63D\uD63E\uD63F\uD641\uD642\uD643\uD644\uD646\uD647\uD64A\uD64C\uD64E\uD64F\uD650\uD652\uD653\uD656\uD657\uD659\uD65A\uD65B\uD65D",4],["c361","\uD662",4,"\uD668\uD66A",5,"\uD672\uD673\uD675",11],["c381","\uD681\uD682\uD684\uD686",5,"\uD68E\uD68F\uD691\uD692\uD693\uD695",7,"\uD69E\uD6A0\uD6A2",5,"\uD6A9\uD6AA\uCC3C\uCC3D\uCC3E\uCC44\uCC45\uCC48\uCC4C\uCC54\uCC55\uCC57\uCC58\uCC59\uCC60\uCC64\uCC66\uCC68\uCC70\uCC75\uCC98\uCC99\uCC9C\uCCA0\uCCA8\uCCA9\uCCAB\uCCAC\uCCAD\uCCB4\uCCB5\uCCB8\uCCBC\uCCC4\uCCC5\uCCC7\uCCC9\uCCD0\uCCD4\uCCE4\uCCEC\uCCF0\uCD01\uCD08\uCD09\uCD0C\uCD10\uCD18\uCD19\uCD1B\uCD1D\uCD24\uCD28\uCD2C\uCD39\uCD5C\uCD60\uCD64\uCD6C\uCD6D\uCD6F\uCD71\uCD78\uCD88\uCD94\uCD95\uCD98\uCD9C\uCDA4\uCDA5\uCDA7\uCDA9\uCDB0\uCDC4\uCDCC\uCDD0\uCDE8\uCDEC\uCDF0\uCDF8\uCDF9\uCDFB\uCDFD\uCE04\uCE08\uCE0C\uCE14\uCE19\uCE20\uCE21\uCE24\uCE28\uCE30\uCE31\uCE33\uCE35"],["c441","\uD6AB\uD6AD\uD6AE\uD6AF\uD6B1",7,"\uD6BA\uD6BC",7,"\uD6C6\uD6C7\uD6C9\uD6CA\uD6CB"],["c461","\uD6CD\uD6CE\uD6CF\uD6D0\uD6D2\uD6D3\uD6D5\uD6D6\uD6D8\uD6DA",5,"\uD6E1\uD6E2\uD6E3\uD6E5\uD6E6\uD6E7\uD6E9",4],["c481","\uD6EE\uD6EF\uD6F1\uD6F2\uD6F3\uD6F4\uD6F6",5,"\uD6FE\uD6FF\uD701\uD702\uD703\uD705",11,"\uD712\uD713\uD714\uCE58\uCE59\uCE5C\uCE5F\uCE60\uCE61\uCE68\uCE69\uCE6B\uCE6D\uCE74\uCE75\uCE78\uCE7C\uCE84\uCE85\uCE87\uCE89\uCE90\uCE91\uCE94\uCE98\uCEA0\uCEA1\uCEA3\uCEA4\uCEA5\uCEAC\uCEAD\uCEC1\uCEE4\uCEE5\uCEE8\uCEEB\uCEEC\uCEF4\uCEF5\uCEF7\uCEF8\uCEF9\uCF00\uCF01\uCF04\uCF08\uCF10\uCF11\uCF13\uCF15\uCF1C\uCF20\uCF24\uCF2C\uCF2D\uCF2F\uCF30\uCF31\uCF38\uCF54\uCF55\uCF58\uCF5C\uCF64\uCF65\uCF67\uCF69\uCF70\uCF71\uCF74\uCF78\uCF80\uCF85\uCF8C\uCFA1\uCFA8\uCFB0\uCFC4\uCFE0\uCFE1\uCFE4\uCFE8\uCFF0\uCFF1\uCFF3\uCFF5\uCFFC\uD000\uD004\uD011\uD018\uD02D\uD034\uD035\uD038\uD03C"],["c541","\uD715\uD716\uD717\uD71A\uD71B\uD71D\uD71E\uD71F\uD721",6,"\uD72A\uD72C\uD72E",5,"\uD736\uD737\uD739"],["c561","\uD73A\uD73B\uD73D",6,"\uD745\uD746\uD748\uD74A",5,"\uD752\uD753\uD755\uD75A",4],["c581","\uD75F\uD762\uD764\uD766\uD767\uD768\uD76A\uD76B\uD76D\uD76E\uD76F\uD771\uD772\uD773\uD775",6,"\uD77E\uD77F\uD780\uD782",5,"\uD78A\uD78B\uD044\uD045\uD047\uD049\uD050\uD054\uD058\uD060\uD06C\uD06D\uD070\uD074\uD07C\uD07D\uD081\uD0A4\uD0A5\uD0A8\uD0AC\uD0B4\uD0B5\uD0B7\uD0B9\uD0C0\uD0C1\uD0C4\uD0C8\uD0C9\uD0D0\uD0D1\uD0D3\uD0D4\uD0D5\uD0DC\uD0DD\uD0E0\uD0E4\uD0EC\uD0ED\uD0EF\uD0F0\uD0F1\uD0F8\uD10D\uD130\uD131\uD134\uD138\uD13A\uD140\uD141\uD143\uD144\uD145\uD14C\uD14D\uD150\uD154\uD15C\uD15D\uD15F\uD161\uD168\uD16C\uD17C\uD184\uD188\uD1A0\uD1A1\uD1A4\uD1A8\uD1B0\uD1B1\uD1B3\uD1B5\uD1BA\uD1BC\uD1C0\uD1D8\uD1F4\uD1F8\uD207\uD209\uD210\uD22C\uD22D\uD230\uD234\uD23C\uD23D\uD23F\uD241\uD248\uD25C"],["c641","\uD78D\uD78E\uD78F\uD791",6,"\uD79A\uD79C\uD79E",5],["c6a1","\uD264\uD280\uD281\uD284\uD288\uD290\uD291\uD295\uD29C\uD2A0\uD2A4\uD2AC\uD2B1\uD2B8\uD2B9\uD2BC\uD2BF\uD2C0\uD2C2\uD2C8\uD2C9\uD2CB\uD2D4\uD2D8\uD2DC\uD2E4\uD2E5\uD2F0\uD2F1\uD2F4\uD2F8\uD300\uD301\uD303\uD305\uD30C\uD30D\uD30E\uD310\uD314\uD316\uD31C\uD31D\uD31F\uD320\uD321\uD325\uD328\uD329\uD32C\uD330\uD338\uD339\uD33B\uD33C\uD33D\uD344\uD345\uD37C\uD37D\uD380\uD384\uD38C\uD38D\uD38F\uD390\uD391\uD398\uD399\uD39C\uD3A0\uD3A8\uD3A9\uD3AB\uD3AD\uD3B4\uD3B8\uD3BC\uD3C4\uD3C5\uD3C8\uD3C9\uD3D0\uD3D8\uD3E1\uD3E3\uD3EC\uD3ED\uD3F0\uD3F4\uD3FC\uD3FD\uD3FF\uD401"],["c7a1","\uD408\uD41D\uD440\uD444\uD45C\uD460\uD464\uD46D\uD46F\uD478\uD479\uD47C\uD47F\uD480\uD482\uD488\uD489\uD48B\uD48D\uD494\uD4A9\uD4CC\uD4D0\uD4D4\uD4DC\uD4DF\uD4E8\uD4EC\uD4F0\uD4F8\uD4FB\uD4FD\uD504\uD508\uD50C\uD514\uD515\uD517\uD53C\uD53D\uD540\uD544\uD54C\uD54D\uD54F\uD551\uD558\uD559\uD55C\uD560\uD565\uD568\uD569\uD56B\uD56D\uD574\uD575\uD578\uD57C\uD584\uD585\uD587\uD588\uD589\uD590\uD5A5\uD5C8\uD5C9\uD5CC\uD5D0\uD5D2\uD5D8\uD5D9\uD5DB\uD5DD\uD5E4\uD5E5\uD5E8\uD5EC\uD5F4\uD5F5\uD5F7\uD5F9\uD600\uD601\uD604\uD608\uD610\uD611\uD613\uD614\uD615\uD61C\uD620"],["c8a1","\uD624\uD62D\uD638\uD639\uD63C\uD640\uD645\uD648\uD649\uD64B\uD64D\uD651\uD654\uD655\uD658\uD65C\uD667\uD669\uD670\uD671\uD674\uD683\uD685\uD68C\uD68D\uD690\uD694\uD69D\uD69F\uD6A1\uD6A8\uD6AC\uD6B0\uD6B9\uD6BB\uD6C4\uD6C5\uD6C8\uD6CC\uD6D1\uD6D4\uD6D7\uD6D9\uD6E0\uD6E4\uD6E8\uD6F0\uD6F5\uD6FC\uD6FD\uD700\uD704\uD711\uD718\uD719\uD71C\uD720\uD728\uD729\uD72B\uD72D\uD734\uD735\uD738\uD73C\uD744\uD747\uD749\uD750\uD751\uD754\uD756\uD757\uD758\uD759\uD760\uD761\uD763\uD765\uD769\uD76C\uD770\uD774\uD77C\uD77D\uD781\uD788\uD789\uD78C\uD790\uD798\uD799\uD79B\uD79D"],["caa1","\u4F3D\u4F73\u5047\u50F9\u52A0\u53EF\u5475\u54E5\u5609\u5AC1\u5BB6\u6687\u67B6\u67B7\u67EF\u6B4C\u73C2\u75C2\u7A3C\u82DB\u8304\u8857\u8888\u8A36\u8CC8\u8DCF\u8EFB\u8FE6\u99D5\u523B\u5374\u5404\u606A\u6164\u6BBC\u73CF\u811A\u89BA\u89D2\u95A3\u4F83\u520A\u58BE\u5978\u59E6\u5E72\u5E79\u61C7\u63C0\u6746\u67EC\u687F\u6F97\u764E\u770B\u78F5\u7A08\u7AFF\u7C21\u809D\u826E\u8271\u8AEB\u9593\u4E6B\u559D\u66F7\u6E34\u78A3\u7AED\u845B\u8910\u874E\u97A8\u52D8\u574E\u582A\u5D4C\u611F\u61BE\u6221\u6562\u67D1\u6A44\u6E1B\u7518\u75B3\u76E3\u77B0\u7D3A\u90AF\u9451\u9452\u9F95"],["cba1","\u5323\u5CAC\u7532\u80DB\u9240\u9598\u525B\u5808\u59DC\u5CA1\u5D17\u5EB7\u5F3A\u5F4A\u6177\u6C5F\u757A\u7586\u7CE0\u7D73\u7DB1\u7F8C\u8154\u8221\u8591\u8941\u8B1B\u92FC\u964D\u9C47\u4ECB\u4EF7\u500B\u51F1\u584F\u6137\u613E\u6168\u6539\u69EA\u6F11\u75A5\u7686\u76D6\u7B87\u82A5\u84CB\uF900\u93A7\u958B\u5580\u5BA2\u5751\uF901\u7CB3\u7FB9\u91B5\u5028\u53BB\u5C45\u5DE8\u62D2\u636E\u64DA\u64E7\u6E20\u70AC\u795B\u8DDD\u8E1E\uF902\u907D\u9245\u92F8\u4E7E\u4EF6\u5065\u5DFE\u5EFA\u6106\u6957\u8171\u8654\u8E47\u9375\u9A2B\u4E5E\u5091\u6770\u6840\u5109\u528D\u5292\u6AA2"],["cca1","\u77BC\u9210\u9ED4\u52AB\u602F\u8FF2\u5048\u61A9\u63ED\u64CA\u683C\u6A84\u6FC0\u8188\u89A1\u9694\u5805\u727D\u72AC\u7504\u7D79\u7E6D\u80A9\u898B\u8B74\u9063\u9D51\u6289\u6C7A\u6F54\u7D50\u7F3A\u8A23\u517C\u614A\u7B9D\u8B19\u9257\u938C\u4EAC\u4FD3\u501E\u50BE\u5106\u52C1\u52CD\u537F\u5770\u5883\u5E9A\u5F91\u6176\u61AC\u64CE\u656C\u666F\u66BB\u66F4\u6897\u6D87\u7085\u70F1\u749F\u74A5\u74CA\u75D9\u786C\u78EC\u7ADF\u7AF6\u7D45\u7D93\u8015\u803F\u811B\u8396\u8B66\u8F15\u9015\u93E1\u9803\u9838\u9A5A\u9BE8\u4FC2\u5553\u583A\u5951\u5B63\u5C46\u60B8\u6212\u6842\u68B0"],["cda1","\u68E8\u6EAA\u754C\u7678\u78CE\u7A3D\u7CFB\u7E6B\u7E7C\u8A08\u8AA1\u8C3F\u968E\u9DC4\u53E4\u53E9\u544A\u5471\u56FA\u59D1\u5B64\u5C3B\u5EAB\u62F7\u6537\u6545\u6572\u66A0\u67AF\u69C1\u6CBD\u75FC\u7690\u777E\u7A3F\u7F94\u8003\u80A1\u818F\u82E6\u82FD\u83F0\u85C1\u8831\u88B4\u8AA5\uF903\u8F9C\u932E\u96C7\u9867\u9AD8\u9F13\u54ED\u659B\u66F2\u688F\u7A40\u8C37\u9D60\u56F0\u5764\u5D11\u6606\u68B1\u68CD\u6EFE\u7428\u889E\u9BE4\u6C68\uF904\u9AA8\u4F9B\u516C\u5171\u529F\u5B54\u5DE5\u6050\u606D\u62F1\u63A7\u653B\u73D9\u7A7A\u86A3\u8CA2\u978F\u4E32\u5BE1\u6208\u679C\u74DC"],["cea1","\u79D1\u83D3\u8A87\u8AB2\u8DE8\u904E\u934B\u9846\u5ED3\u69E8\u85FF\u90ED\uF905\u51A0\u5B98\u5BEC\u6163\u68FA\u6B3E\u704C\u742F\u74D8\u7BA1\u7F50\u83C5\u89C0\u8CAB\u95DC\u9928\u522E\u605D\u62EC\u9002\u4F8A\u5149\u5321\u58D9\u5EE3\u66E0\u6D38\u709A\u72C2\u73D6\u7B50\u80F1\u945B\u5366\u639B\u7F6B\u4E56\u5080\u584A\u58DE\u602A\u6127\u62D0\u69D0\u9B41\u5B8F\u7D18\u80B1\u8F5F\u4EA4\u50D1\u54AC\u55AC\u5B0C\u5DA0\u5DE7\u652A\u654E\u6821\u6A4B\u72E1\u768E\u77EF\u7D5E\u7FF9\u81A0\u854E\u86DF\u8F03\u8F4E\u90CA\u9903\u9A55\u9BAB\u4E18\u4E45\u4E5D\u4EC7\u4FF1\u5177\u52FE"],["cfa1","\u5340\u53E3\u53E5\u548E\u5614\u5775\u57A2\u5BC7\u5D87\u5ED0\u61FC\u62D8\u6551\u67B8\u67E9\u69CB\u6B50\u6BC6\u6BEC\u6C42\u6E9D\u7078\u72D7\u7396\u7403\u77BF\u77E9\u7A76\u7D7F\u8009\u81FC\u8205\u820A\u82DF\u8862\u8B33\u8CFC\u8EC0\u9011\u90B1\u9264\u92B6\u99D2\u9A45\u9CE9\u9DD7\u9F9C\u570B\u5C40\u83CA\u97A0\u97AB\u9EB4\u541B\u7A98\u7FA4\u88D9\u8ECD\u90E1\u5800\u5C48\u6398\u7A9F\u5BAE\u5F13\u7A79\u7AAE\u828E\u8EAC\u5026\u5238\u52F8\u5377\u5708\u62F3\u6372\u6B0A\u6DC3\u7737\u53A5\u7357\u8568\u8E76\u95D5\u673A\u6AC3\u6F70\u8A6D\u8ECC\u994B\uF906\u6677\u6B78\u8CB4"],["d0a1","\u9B3C\uF907\u53EB\u572D\u594E\u63C6\u69FB\u73EA\u7845\u7ABA\u7AC5\u7CFE\u8475\u898F\u8D73\u9035\u95A8\u52FB\u5747\u7547\u7B60\u83CC\u921E\uF908\u6A58\u514B\u524B\u5287\u621F\u68D8\u6975\u9699\u50C5\u52A4\u52E4\u61C3\u65A4\u6839\u69FF\u747E\u7B4B\u82B9\u83EB\u89B2\u8B39\u8FD1\u9949\uF909\u4ECA\u5997\u64D2\u6611\u6A8E\u7434\u7981\u79BD\u82A9\u887E\u887F\u895F\uF90A\u9326\u4F0B\u53CA\u6025\u6271\u6C72\u7D1A\u7D66\u4E98\u5162\u77DC\u80AF\u4F01\u4F0E\u5176\u5180\u55DC\u5668\u573B\u57FA\u57FC\u5914\u5947\u5993\u5BC4\u5C90\u5D0E\u5DF1\u5E7E\u5FCC\u6280\u65D7\u65E3"],["d1a1","\u671E\u671F\u675E\u68CB\u68C4\u6A5F\u6B3A\u6C23\u6C7D\u6C82\u6DC7\u7398\u7426\u742A\u7482\u74A3\u7578\u757F\u7881\u78EF\u7941\u7947\u7948\u797A\u7B95\u7D00\u7DBA\u7F88\u8006\u802D\u808C\u8A18\u8B4F\u8C48\u8D77\u9321\u9324\u98E2\u9951\u9A0E\u9A0F\u9A65\u9E92\u7DCA\u4F76\u5409\u62EE\u6854\u91D1\u55AB\u513A\uF90B\uF90C\u5A1C\u61E6\uF90D\u62CF\u62FF\uF90E",5,"\u90A3\uF914",4,"\u8AFE\uF919\uF91A\uF91B\uF91C\u6696\uF91D\u7156\uF91E\uF91F\u96E3\uF920\u634F\u637A\u5357\uF921\u678F\u6960\u6E73\uF922\u7537\uF923\uF924\uF925"],["d2a1","\u7D0D\uF926\uF927\u8872\u56CA\u5A18\uF928",4,"\u4E43\uF92D\u5167\u5948\u67F0\u8010\uF92E\u5973\u5E74\u649A\u79CA\u5FF5\u606C\u62C8\u637B\u5BE7\u5BD7\u52AA\uF92F\u5974\u5F29\u6012\uF930\uF931\uF932\u7459\uF933",5,"\u99D1\uF939",10,"\u6FC3\uF944\uF945\u81BF\u8FB2\u60F1\uF946\uF947\u8166\uF948\uF949\u5C3F\uF94A",7,"\u5AE9\u8A25\u677B\u7D10\uF952",5,"\u80FD\uF958\uF959\u5C3C\u6CE5\u533F\u6EBA\u591A\u8336"],["d3a1","\u4E39\u4EB6\u4F46\u55AE\u5718\u58C7\u5F56\u65B7\u65E6\u6A80\u6BB5\u6E4D\u77ED\u7AEF\u7C1E\u7DDE\u86CB\u8892\u9132\u935B\u64BB\u6FBE\u737A\u75B8\u9054\u5556\u574D\u61BA\u64D4\u66C7\u6DE1\u6E5B\u6F6D\u6FB9\u75F0\u8043\u81BD\u8541\u8983\u8AC7\u8B5A\u931F\u6C93\u7553\u7B54\u8E0F\u905D\u5510\u5802\u5858\u5E62\u6207\u649E\u68E0\u7576\u7CD6\u87B3\u9EE8\u4EE3\u5788\u576E\u5927\u5C0D\u5CB1\u5E36\u5F85\u6234\u64E1\u73B3\u81FA\u888B\u8CB8\u968A\u9EDB\u5B85\u5FB7\u60B3\u5012\u5200\u5230\u5716\u5835\u5857\u5C0E\u5C60\u5CF6\u5D8B\u5EA6\u5F92\u60BC\u6311\u6389\u6417\u6843"],["d4a1","\u68F9\u6AC2\u6DD8\u6E21\u6ED4\u6FE4\u71FE\u76DC\u7779\u79B1\u7A3B\u8404\u89A9\u8CED\u8DF3\u8E48\u9003\u9014\u9053\u90FD\u934D\u9676\u97DC\u6BD2\u7006\u7258\u72A2\u7368\u7763\u79BF\u7BE4\u7E9B\u8B80\u58A9\u60C7\u6566\u65FD\u66BE\u6C8C\u711E\u71C9\u8C5A\u9813\u4E6D\u7A81\u4EDD\u51AC\u51CD\u52D5\u540C\u61A7\u6771\u6850\u68DF\u6D1E\u6F7C\u75BC\u77B3\u7AE5\u80F4\u8463\u9285\u515C\u6597\u675C\u6793\u75D8\u7AC7\u8373\uF95A\u8C46\u9017\u982D\u5C6F\u81C0\u829A\u9041\u906F\u920D\u5F97\u5D9D\u6A59\u71C8\u767B\u7B49\u85E4\u8B04\u9127\u9A30\u5587\u61F6\uF95B\u7669\u7F85"],["d5a1","\u863F\u87BA\u88F8\u908F\uF95C\u6D1B\u70D9\u73DE\u7D61\u843D\uF95D\u916A\u99F1\uF95E\u4E82\u5375\u6B04\u6B12\u703E\u721B\u862D\u9E1E\u524C\u8FA3\u5D50\u64E5\u652C\u6B16\u6FEB\u7C43\u7E9C\u85CD\u8964\u89BD\u62C9\u81D8\u881F\u5ECA\u6717\u6D6A\u72FC\u7405\u746F\u8782\u90DE\u4F86\u5D0D\u5FA0\u840A\u51B7\u63A0\u7565\u4EAE\u5006\u5169\u51C9\u6881\u6A11\u7CAE\u7CB1\u7CE7\u826F\u8AD2\u8F1B\u91CF\u4FB6\u5137\u52F5\u5442\u5EEC\u616E\u623E\u65C5\u6ADA\u6FFE\u792A\u85DC\u8823\u95AD\u9A62\u9A6A\u9E97\u9ECE\u529B\u66C6\u6B77\u701D\u792B\u8F62\u9742\u6190\u6200\u6523\u6F23"],["d6a1","\u7149\u7489\u7DF4\u806F\u84EE\u8F26\u9023\u934A\u51BD\u5217\u52A3\u6D0C\u70C8\u88C2\u5EC9\u6582\u6BAE\u6FC2\u7C3E\u7375\u4EE4\u4F36\u56F9\uF95F\u5CBA\u5DBA\u601C\u73B2\u7B2D\u7F9A\u7FCE\u8046\u901E\u9234\u96F6\u9748\u9818\u9F61\u4F8B\u6FA7\u79AE\u91B4\u96B7\u52DE\uF960\u6488\u64C4\u6AD3\u6F5E\u7018\u7210\u76E7\u8001\u8606\u865C\u8DEF\u8F05\u9732\u9B6F\u9DFA\u9E75\u788C\u797F\u7DA0\u83C9\u9304\u9E7F\u9E93\u8AD6\u58DF\u5F04\u6727\u7027\u74CF\u7C60\u807E\u5121\u7028\u7262\u78CA\u8CC2\u8CDA\u8CF4\u96F7\u4E86\u50DA\u5BEE\u5ED6\u6599\u71CE\u7642\u77AD\u804A\u84FC"],["d7a1","\u907C\u9B27\u9F8D\u58D8\u5A41\u5C62\u6A13\u6DDA\u6F0F\u763B\u7D2F\u7E37\u851E\u8938\u93E4\u964B\u5289\u65D2\u67F3\u69B4\u6D41\u6E9C\u700F\u7409\u7460\u7559\u7624\u786B\u8B2C\u985E\u516D\u622E\u9678\u4F96\u502B\u5D19\u6DEA\u7DB8\u8F2A\u5F8B\u6144\u6817\uF961\u9686\u52D2\u808B\u51DC\u51CC\u695E\u7A1C\u7DBE\u83F1\u9675\u4FDA\u5229\u5398\u540F\u550E\u5C65\u60A7\u674E\u68A8\u6D6C\u7281\u72F8\u7406\u7483\uF962\u75E2\u7C6C\u7F79\u7FB8\u8389\u88CF\u88E1\u91CC\u91D0\u96E2\u9BC9\u541D\u6F7E\u71D0\u7498\u85FA\u8EAA\u96A3\u9C57\u9E9F\u6797\u6DCB\u7433\u81E8\u9716\u782C"],["d8a1","\u7ACB\u7B20\u7C92\u6469\u746A\u75F2\u78BC\u78E8\u99AC\u9B54\u9EBB\u5BDE\u5E55\u6F20\u819C\u83AB\u9088\u4E07\u534D\u5A29\u5DD2\u5F4E\u6162\u633D\u6669\u66FC\u6EFF\u6F2B\u7063\u779E\u842C\u8513\u883B\u8F13\u9945\u9C3B\u551C\u62B9\u672B\u6CAB\u8309\u896A\u977A\u4EA1\u5984\u5FD8\u5FD9\u671B\u7DB2\u7F54\u8292\u832B\u83BD\u8F1E\u9099\u57CB\u59B9\u5A92\u5BD0\u6627\u679A\u6885\u6BCF\u7164\u7F75\u8CB7\u8CE3\u9081\u9B45\u8108\u8C8A\u964C\u9A40\u9EA5\u5B5F\u6C13\u731B\u76F2\u76DF\u840C\u51AA\u8993\u514D\u5195\u52C9\u68C9\u6C94\u7704\u7720\u7DBF\u7DEC\u9762\u9EB5\u6EC5"],["d9a1","\u8511\u51A5\u540D\u547D\u660E\u669D\u6927\u6E9F\u76BF\u7791\u8317\u84C2\u879F\u9169\u9298\u9CF4\u8882\u4FAE\u5192\u52DF\u59C6\u5E3D\u6155\u6478\u6479\u66AE\u67D0\u6A21\u6BCD\u6BDB\u725F\u7261\u7441\u7738\u77DB\u8017\u82BC\u8305\u8B00\u8B28\u8C8C\u6728\u6C90\u7267\u76EE\u7766\u7A46\u9DA9\u6B7F\u6C92\u5922\u6726\u8499\u536F\u5893\u5999\u5EDF\u63CF\u6634\u6773\u6E3A\u732B\u7AD7\u82D7\u9328\u52D9\u5DEB\u61AE\u61CB\u620A\u62C7\u64AB\u65E0\u6959\u6B66\u6BCB\u7121\u73F7\u755D\u7E46\u821E\u8302\u856A\u8AA3\u8CBF\u9727\u9D61\u58A8\u9ED8\u5011\u520E\u543B\u554F\u6587"],["daa1","\u6C76\u7D0A\u7D0B\u805E\u868A\u9580\u96EF\u52FF\u6C95\u7269\u5473\u5A9A\u5C3E\u5D4B\u5F4C\u5FAE\u672A\u68B6\u6963\u6E3C\u6E44\u7709\u7C73\u7F8E\u8587\u8B0E\u8FF7\u9761\u9EF4\u5CB7\u60B6\u610D\u61AB\u654F\u65FB\u65FC\u6C11\u6CEF\u739F\u73C9\u7DE1\u9594\u5BC6\u871C\u8B10\u525D\u535A\u62CD\u640F\u64B2\u6734\u6A38\u6CCA\u73C0\u749E\u7B94\u7C95\u7E1B\u818A\u8236\u8584\u8FEB\u96F9\u99C1\u4F34\u534A\u53CD\u53DB\u62CC\u642C\u6500\u6591\u69C3\u6CEE\u6F58\u73ED\u7554\u7622\u76E4\u76FC\u78D0\u78FB\u792C\u7D46\u822C\u87E0\u8FD4\u9812\u98EF\u52C3\u62D4\u64A5\u6E24\u6F51"],["dba1","\u767C\u8DCB\u91B1\u9262\u9AEE\u9B43\u5023\u508D\u574A\u59A8\u5C28\u5E47\u5F77\u623F\u653E\u65B9\u65C1\u6609\u678B\u699C\u6EC2\u78C5\u7D21\u80AA\u8180\u822B\u82B3\u84A1\u868C\u8A2A\u8B17\u90A6\u9632\u9F90\u500D\u4FF3\uF963\u57F9\u5F98\u62DC\u6392\u676F\u6E43\u7119\u76C3\u80CC\u80DA\u88F4\u88F5\u8919\u8CE0\u8F29\u914D\u966A\u4F2F\u4F70\u5E1B\u67CF\u6822\u767D\u767E\u9B44\u5E61\u6A0A\u7169\u71D4\u756A\uF964\u7E41\u8543\u85E9\u98DC\u4F10\u7B4F\u7F70\u95A5\u51E1\u5E06\u68B5\u6C3E\u6C4E\u6CDB\u72AF\u7BC4\u8303\u6CD5\u743A\u50FB\u5288\u58C1\u64D8\u6A97\u74A7\u7656"],["dca1","\u78A7\u8617\u95E2\u9739\uF965\u535E\u5F01\u8B8A\u8FA8\u8FAF\u908A\u5225\u77A5\u9C49\u9F08\u4E19\u5002\u5175\u5C5B\u5E77\u661E\u663A\u67C4\u68C5\u70B3\u7501\u75C5\u79C9\u7ADD\u8F27\u9920\u9A08\u4FDD\u5821\u5831\u5BF6\u666E\u6B65\u6D11\u6E7A\u6F7D\u73E4\u752B\u83E9\u88DC\u8913\u8B5C\u8F14\u4F0F\u50D5\u5310\u535C\u5B93\u5FA9\u670D\u798F\u8179\u832F\u8514\u8907\u8986\u8F39\u8F3B\u99A5\u9C12\u672C\u4E76\u4FF8\u5949\u5C01\u5CEF\u5CF0\u6367\u68D2\u70FD\u71A2\u742B\u7E2B\u84EC\u8702\u9022\u92D2\u9CF3\u4E0D\u4ED8\u4FEF\u5085\u5256\u526F\u5426\u5490\u57E0\u592B\u5A66"],["dda1","\u5B5A\u5B75\u5BCC\u5E9C\uF966\u6276\u6577\u65A7\u6D6E\u6EA5\u7236\u7B26\u7C3F\u7F36\u8150\u8151\u819A\u8240\u8299\u83A9\u8A03\u8CA0\u8CE6\u8CFB\u8D74\u8DBA\u90E8\u91DC\u961C\u9644\u99D9\u9CE7\u5317\u5206\u5429\u5674\u58B3\u5954\u596E\u5FFF\u61A4\u626E\u6610\u6C7E\u711A\u76C6\u7C89\u7CDE\u7D1B\u82AC\u8CC1\u96F0\uF967\u4F5B\u5F17\u5F7F\u62C2\u5D29\u670B\u68DA\u787C\u7E43\u9D6C\u4E15\u5099\u5315\u532A\u5351\u5983\u5A62\u5E87\u60B2\u618A\u6249\u6279\u6590\u6787\u69A7\u6BD4\u6BD6\u6BD7\u6BD8\u6CB8\uF968\u7435\u75FA\u7812\u7891\u79D5\u79D8\u7C83\u7DCB\u7FE1\u80A5"],["dea1","\u813E\u81C2\u83F2\u871A\u88E8\u8AB9\u8B6C\u8CBB\u9119\u975E\u98DB\u9F3B\u56AC\u5B2A\u5F6C\u658C\u6AB3\u6BAF\u6D5C\u6FF1\u7015\u725D\u73AD\u8CA7\u8CD3\u983B\u6191\u6C37\u8058\u9A01\u4E4D\u4E8B\u4E9B\u4ED5\u4F3A\u4F3C\u4F7F\u4FDF\u50FF\u53F2\u53F8\u5506\u55E3\u56DB\u58EB\u5962\u5A11\u5BEB\u5BFA\u5C04\u5DF3\u5E2B\u5F99\u601D\u6368\u659C\u65AF\u67F6\u67FB\u68AD\u6B7B\u6C99\u6CD7\u6E23\u7009\u7345\u7802\u793E\u7940\u7960\u79C1\u7BE9\u7D17\u7D72\u8086\u820D\u838E\u84D1\u86C7\u88DF\u8A50\u8A5E\u8B1D\u8CDC\u8D66\u8FAD\u90AA\u98FC\u99DF\u9E9D\u524A\uF969\u6714\uF96A"],["dfa1","\u5098\u522A\u5C71\u6563\u6C55\u73CA\u7523\u759D\u7B97\u849C\u9178\u9730\u4E77\u6492\u6BBA\u715E\u85A9\u4E09\uF96B\u6749\u68EE\u6E17\u829F\u8518\u886B\u63F7\u6F81\u9212\u98AF\u4E0A\u50B7\u50CF\u511F\u5546\u55AA\u5617\u5B40\u5C19\u5CE0\u5E38\u5E8A\u5EA0\u5EC2\u60F3\u6851\u6A61\u6E58\u723D\u7240\u72C0\u76F8\u7965\u7BB1\u7FD4\u88F3\u89F4\u8A73\u8C61\u8CDE\u971C\u585E\u74BD\u8CFD\u55C7\uF96C\u7A61\u7D22\u8272\u7272\u751F\u7525\uF96D\u7B19\u5885\u58FB\u5DBC\u5E8F\u5EB6\u5F90\u6055\u6292\u637F\u654D\u6691\u66D9\u66F8\u6816\u68F2\u7280\u745E\u7B6E\u7D6E\u7DD6\u7F72"],["e0a1","\u80E5\u8212\u85AF\u897F\u8A93\u901D\u92E4\u9ECD\u9F20\u5915\u596D\u5E2D\u60DC\u6614\u6673\u6790\u6C50\u6DC5\u6F5F\u77F3\u78A9\u84C6\u91CB\u932B\u4ED9\u50CA\u5148\u5584\u5B0B\u5BA3\u6247\u657E\u65CB\u6E32\u717D\u7401\u7444\u7487\u74BF\u766C\u79AA\u7DDA\u7E55\u7FA8\u817A\u81B3\u8239\u861A\u87EC\u8A75\u8DE3\u9078\u9291\u9425\u994D\u9BAE\u5368\u5C51\u6954\u6CC4\u6D29\u6E2B\u820C\u859B\u893B\u8A2D\u8AAA\u96EA\u9F67\u5261\u66B9\u6BB2\u7E96\u87FE\u8D0D\u9583\u965D\u651D\u6D89\u71EE\uF96E\u57CE\u59D3\u5BAC\u6027\u60FA\u6210\u661F\u665F\u7329\u73F9\u76DB\u7701\u7B6C"],["e1a1","\u8056\u8072\u8165\u8AA0\u9192\u4E16\u52E2\u6B72\u6D17\u7A05\u7B39\u7D30\uF96F\u8CB0\u53EC\u562F\u5851\u5BB5\u5C0F\u5C11\u5DE2\u6240\u6383\u6414\u662D\u68B3\u6CBC\u6D88\u6EAF\u701F\u70A4\u71D2\u7526\u758F\u758E\u7619\u7B11\u7BE0\u7C2B\u7D20\u7D39\u852C\u856D\u8607\u8A34\u900D\u9061\u90B5\u92B7\u97F6\u9A37\u4FD7\u5C6C\u675F\u6D91\u7C9F\u7E8C\u8B16\u8D16\u901F\u5B6B\u5DFD\u640D\u84C0\u905C\u98E1\u7387\u5B8B\u609A\u677E\u6DDE\u8A1F\u8AA6\u9001\u980C\u5237\uF970\u7051\u788E\u9396\u8870\u91D7\u4FEE\u53D7\u55FD\u56DA\u5782\u58FD\u5AC2\u5B88\u5CAB\u5CC0\u5E25\u6101"],["e2a1","\u620D\u624B\u6388\u641C\u6536\u6578\u6A39\u6B8A\u6C34\u6D19\u6F31\u71E7\u72E9\u7378\u7407\u74B2\u7626\u7761\u79C0\u7A57\u7AEA\u7CB9\u7D8F\u7DAC\u7E61\u7F9E\u8129\u8331\u8490\u84DA\u85EA\u8896\u8AB0\u8B90\u8F38\u9042\u9083\u916C\u9296\u92B9\u968B\u96A7\u96A8\u96D6\u9700\u9808\u9996\u9AD3\u9B1A\u53D4\u587E\u5919\u5B70\u5BBF\u6DD1\u6F5A\u719F\u7421\u74B9\u8085\u83FD\u5DE1\u5F87\u5FAA\u6042\u65EC\u6812\u696F\u6A53\u6B89\u6D35\u6DF3\u73E3\u76FE\u77AC\u7B4D\u7D14\u8123\u821C\u8340\u84F4\u8563\u8A62\u8AC4\u9187\u931E\u9806\u99B4\u620C\u8853\u8FF0\u9265\u5D07\u5D27"],["e3a1","\u5D69\u745F\u819D\u8768\u6FD5\u62FE\u7FD2\u8936\u8972\u4E1E\u4E58\u50E7\u52DD\u5347\u627F\u6607\u7E69\u8805\u965E\u4F8D\u5319\u5636\u59CB\u5AA4\u5C38\u5C4E\u5C4D\u5E02\u5F11\u6043\u65BD\u662F\u6642\u67BE\u67F4\u731C\u77E2\u793A\u7FC5\u8494\u84CD\u8996\u8A66\u8A69\u8AE1\u8C55\u8C7A\u57F4\u5BD4\u5F0F\u606F\u62ED\u690D\u6B96\u6E5C\u7184\u7BD2\u8755\u8B58\u8EFE\u98DF\u98FE\u4F38\u4F81\u4FE1\u547B\u5A20\u5BB8\u613C\u65B0\u6668\u71FC\u7533\u795E\u7D33\u814E\u81E3\u8398\u85AA\u85CE\u8703\u8A0A\u8EAB\u8F9B\uF971\u8FC5\u5931\u5BA4\u5BE6\u6089\u5BE9\u5C0B\u5FC3\u6C81"],["e4a1","\uF972\u6DF1\u700B\u751A\u82AF\u8AF6\u4EC0\u5341\uF973\u96D9\u6C0F\u4E9E\u4FC4\u5152\u555E\u5A25\u5CE8\u6211\u7259\u82BD\u83AA\u86FE\u8859\u8A1D\u963F\u96C5\u9913\u9D09\u9D5D\u580A\u5CB3\u5DBD\u5E44\u60E1\u6115\u63E1\u6A02\u6E25\u9102\u9354\u984E\u9C10\u9F77\u5B89\u5CB8\u6309\u664F\u6848\u773C\u96C1\u978D\u9854\u9B9F\u65A1\u8B01\u8ECB\u95BC\u5535\u5CA9\u5DD6\u5EB5\u6697\u764C\u83F4\u95C7\u58D3\u62BC\u72CE\u9D28\u4EF0\u592E\u600F\u663B\u6B83\u79E7\u9D26\u5393\u54C0\u57C3\u5D16\u611B\u66D6\u6DAF\u788D\u827E\u9698\u9744\u5384\u627C\u6396\u6DB2\u7E0A\u814B\u984D"],["e5a1","\u6AFB\u7F4C\u9DAF\u9E1A\u4E5F\u503B\u51B6\u591C\u60F9\u63F6\u6930\u723A\u8036\uF974\u91CE\u5F31\uF975\uF976\u7D04\u82E5\u846F\u84BB\u85E5\u8E8D\uF977\u4F6F\uF978\uF979\u58E4\u5B43\u6059\u63DA\u6518\u656D\u6698\uF97A\u694A\u6A23\u6D0B\u7001\u716C\u75D2\u760D\u79B3\u7A70\uF97B\u7F8A\uF97C\u8944\uF97D\u8B93\u91C0\u967D\uF97E\u990A\u5704\u5FA1\u65BC\u6F01\u7600\u79A6\u8A9E\u99AD\u9B5A\u9F6C\u5104\u61B6\u6291\u6A8D\u81C6\u5043\u5830\u5F66\u7109\u8A00\u8AFA\u5B7C\u8616\u4FFA\u513C\u56B4\u5944\u63A9\u6DF9\u5DAA\u696D\u5186\u4E88\u4F59\uF97F\uF980\uF981\u5982\uF982"],["e6a1","\uF983\u6B5F\u6C5D\uF984\u74B5\u7916\uF985\u8207\u8245\u8339\u8F3F\u8F5D\uF986\u9918\uF987\uF988\uF989\u4EA6\uF98A\u57DF\u5F79\u6613\uF98B\uF98C\u75AB\u7E79\u8B6F\uF98D\u9006\u9A5B\u56A5\u5827\u59F8\u5A1F\u5BB4\uF98E\u5EF6\uF98F\uF990\u6350\u633B\uF991\u693D\u6C87\u6CBF\u6D8E\u6D93\u6DF5\u6F14\uF992\u70DF\u7136\u7159\uF993\u71C3\u71D5\uF994\u784F\u786F\uF995\u7B75\u7DE3\uF996\u7E2F\uF997\u884D\u8EDF\uF998\uF999\uF99A\u925B\uF99B\u9CF6\uF99C\uF99D\uF99E\u6085\u6D85\uF99F\u71B1\uF9A0\uF9A1\u95B1\u53AD\uF9A2\uF9A3\uF9A4\u67D3\uF9A5\u708E\u7130\u7430\u8276\u82D2"],["e7a1","\uF9A6\u95BB\u9AE5\u9E7D\u66C4\uF9A7\u71C1\u8449\uF9A8\uF9A9\u584B\uF9AA\uF9AB\u5DB8\u5F71\uF9AC\u6620\u668E\u6979\u69AE\u6C38\u6CF3\u6E36\u6F41\u6FDA\u701B\u702F\u7150\u71DF\u7370\uF9AD\u745B\uF9AE\u74D4\u76C8\u7A4E\u7E93\uF9AF\uF9B0\u82F1\u8A60\u8FCE\uF9B1\u9348\uF9B2\u9719\uF9B3\uF9B4\u4E42\u502A\uF9B5\u5208\u53E1\u66F3\u6C6D\u6FCA\u730A\u777F\u7A62\u82AE\u85DD\u8602\uF9B6\u88D4\u8A63\u8B7D\u8C6B\uF9B7\u92B3\uF9B8\u9713\u9810\u4E94\u4F0D\u4FC9\u50B2\u5348\u543E\u5433\u55DA\u5862\u58BA\u5967\u5A1B\u5BE4\u609F\uF9B9\u61CA\u6556\u65FF\u6664\u68A7\u6C5A\u6FB3"],["e8a1","\u70CF\u71AC\u7352\u7B7D\u8708\u8AA4\u9C32\u9F07\u5C4B\u6C83\u7344\u7389\u923A\u6EAB\u7465\u761F\u7A69\u7E15\u860A\u5140\u58C5\u64C1\u74EE\u7515\u7670\u7FC1\u9095\u96CD\u9954\u6E26\u74E6\u7AA9\u7AAA\u81E5\u86D9\u8778\u8A1B\u5A49\u5B8C\u5B9B\u68A1\u6900\u6D63\u73A9\u7413\u742C\u7897\u7DE9\u7FEB\u8118\u8155\u839E\u8C4C\u962E\u9811\u66F0\u5F80\u65FA\u6789\u6C6A\u738B\u502D\u5A03\u6B6A\u77EE\u5916\u5D6C\u5DCD\u7325\u754F\uF9BA\uF9BB\u50E5\u51F9\u582F\u592D\u5996\u59DA\u5BE5\uF9BC\uF9BD\u5DA2\u62D7\u6416\u6493\u64FE\uF9BE\u66DC\uF9BF\u6A48\uF9C0\u71FF\u7464\uF9C1"],["e9a1","\u7A88\u7AAF\u7E47\u7E5E\u8000\u8170\uF9C2\u87EF\u8981\u8B20\u9059\uF9C3\u9080\u9952\u617E\u6B32\u6D74\u7E1F\u8925\u8FB1\u4FD1\u50AD\u5197\u52C7\u57C7\u5889\u5BB9\u5EB8\u6142\u6995\u6D8C\u6E67\u6EB6\u7194\u7462\u7528\u752C\u8073\u8338\u84C9\u8E0A\u9394\u93DE\uF9C4\u4E8E\u4F51\u5076\u512A\u53C8\u53CB\u53F3\u5B87\u5BD3\u5C24\u611A\u6182\u65F4\u725B\u7397\u7440\u76C2\u7950\u7991\u79B9\u7D06\u7FBD\u828B\u85D5\u865E\u8FC2\u9047\u90F5\u91EA\u9685\u96E8\u96E9\u52D6\u5F67\u65ED\u6631\u682F\u715C\u7A36\u90C1\u980A\u4E91\uF9C5\u6A52\u6B9E\u6F90\u7189\u8018\u82B8\u8553"],["eaa1","\u904B\u9695\u96F2\u97FB\u851A\u9B31\u4E90\u718A\u96C4\u5143\u539F\u54E1\u5713\u5712\u57A3\u5A9B\u5AC4\u5BC3\u6028\u613F\u63F4\u6C85\u6D39\u6E72\u6E90\u7230\u733F\u7457\u82D1\u8881\u8F45\u9060\uF9C6\u9662\u9858\u9D1B\u6708\u8D8A\u925E\u4F4D\u5049\u50DE\u5371\u570D\u59D4\u5A01\u5C09\u6170\u6690\u6E2D\u7232\u744B\u7DEF\u80C3\u840E\u8466\u853F\u875F\u885B\u8918\u8B02\u9055\u97CB\u9B4F\u4E73\u4F91\u5112\u516A\uF9C7\u552F\u55A9\u5B7A\u5BA5\u5E7C\u5E7D\u5EBE\u60A0\u60DF\u6108\u6109\u63C4\u6538\u6709\uF9C8\u67D4\u67DA\uF9C9\u6961\u6962\u6CB9\u6D27\uF9CA\u6E38\uF9CB"],["eba1","\u6FE1\u7336\u7337\uF9CC\u745C\u7531\uF9CD\u7652\uF9CE\uF9CF\u7DAD\u81FE\u8438\u88D5\u8A98\u8ADB\u8AED\u8E30\u8E42\u904A\u903E\u907A\u9149\u91C9\u936E\uF9D0\uF9D1\u5809\uF9D2\u6BD3\u8089\u80B2\uF9D3\uF9D4\u5141\u596B\u5C39\uF9D5\uF9D6\u6F64\u73A7\u80E4\u8D07\uF9D7\u9217\u958F\uF9D8\uF9D9\uF9DA\uF9DB\u807F\u620E\u701C\u7D68\u878D\uF9DC\u57A0\u6069\u6147\u6BB7\u8ABE\u9280\u96B1\u4E59\u541F\u6DEB\u852D\u9670\u97F3\u98EE\u63D6\u6CE3\u9091\u51DD\u61C9\u81BA\u9DF9\u4F9D\u501A\u5100\u5B9C\u610F\u61FF\u64EC\u6905\u6BC5\u7591\u77E3\u7FA9\u8264\u858F\u87FB\u8863\u8ABC"],["eca1","\u8B70\u91AB\u4E8C\u4EE5\u4F0A\uF9DD\uF9DE\u5937\u59E8\uF9DF\u5DF2\u5F1B\u5F5B\u6021\uF9E0\uF9E1\uF9E2\uF9E3\u723E\u73E5\uF9E4\u7570\u75CD\uF9E5\u79FB\uF9E6\u800C\u8033\u8084\u82E1\u8351\uF9E7\uF9E8\u8CBD\u8CB3\u9087\uF9E9\uF9EA\u98F4\u990C\uF9EB\uF9EC\u7037\u76CA\u7FCA\u7FCC\u7FFC\u8B1A\u4EBA\u4EC1\u5203\u5370\uF9ED\u54BD\u56E0\u59FB\u5BC5\u5F15\u5FCD\u6E6E\uF9EE\uF9EF\u7D6A\u8335\uF9F0\u8693\u8A8D\uF9F1\u976D\u9777\uF9F2\uF9F3\u4E00\u4F5A\u4F7E\u58F9\u65E5\u6EA2\u9038\u93B0\u99B9\u4EFB\u58EC\u598A\u59D9\u6041\uF9F4\uF9F5\u7A14\uF9F6\u834F\u8CC3\u5165\u5344"],["eda1","\uF9F7\uF9F8\uF9F9\u4ECD\u5269\u5B55\u82BF\u4ED4\u523A\u54A8\u59C9\u59FF\u5B50\u5B57\u5B5C\u6063\u6148\u6ECB\u7099\u716E\u7386\u74F7\u75B5\u78C1\u7D2B\u8005\u81EA\u8328\u8517\u85C9\u8AEE\u8CC7\u96CC\u4F5C\u52FA\u56BC\u65AB\u6628\u707C\u70B8\u7235\u7DBD\u828D\u914C\u96C0\u9D72\u5B71\u68E7\u6B98\u6F7A\u76DE\u5C91\u66AB\u6F5B\u7BB4\u7C2A\u8836\u96DC\u4E08\u4ED7\u5320\u5834\u58BB\u58EF\u596C\u5C07\u5E33\u5E84\u5F35\u638C\u66B2\u6756\u6A1F\u6AA3\u6B0C\u6F3F\u7246\uF9FA\u7350\u748B\u7AE0\u7CA7\u8178\u81DF\u81E7\u838A\u846C\u8523\u8594\u85CF\u88DD\u8D13\u91AC\u9577"],["eea1","\u969C\u518D\u54C9\u5728\u5BB0\u624D\u6750\u683D\u6893\u6E3D\u6ED3\u707D\u7E21\u88C1\u8CA1\u8F09\u9F4B\u9F4E\u722D\u7B8F\u8ACD\u931A\u4F47\u4F4E\u5132\u5480\u59D0\u5E95\u62B5\u6775\u696E\u6A17\u6CAE\u6E1A\u72D9\u732A\u75BD\u7BB8\u7D35\u82E7\u83F9\u8457\u85F7\u8A5B\u8CAF\u8E87\u9019\u90B8\u96CE\u9F5F\u52E3\u540A\u5AE1\u5BC2\u6458\u6575\u6EF4\u72C4\uF9FB\u7684\u7A4D\u7B1B\u7C4D\u7E3E\u7FDF\u837B\u8B2B\u8CCA\u8D64\u8DE1\u8E5F\u8FEA\u8FF9\u9069\u93D1\u4F43\u4F7A\u50B3\u5168\u5178\u524D\u526A\u5861\u587C\u5960\u5C08\u5C55\u5EDB\u609B\u6230\u6813\u6BBF\u6C08\u6FB1"],["efa1","\u714E\u7420\u7530\u7538\u7551\u7672\u7B4C\u7B8B\u7BAD\u7BC6\u7E8F\u8A6E\u8F3E\u8F49\u923F\u9293\u9322\u942B\u96FB\u985A\u986B\u991E\u5207\u622A\u6298\u6D59\u7664\u7ACA\u7BC0\u7D76\u5360\u5CBE\u5E97\u6F38\u70B9\u7C98\u9711\u9B8E\u9EDE\u63A5\u647A\u8776\u4E01\u4E95\u4EAD\u505C\u5075\u5448\u59C3\u5B9A\u5E40\u5EAD\u5EF7\u5F81\u60C5\u633A\u653F\u6574\u65CC\u6676\u6678\u67FE\u6968\u6A89\u6B63\u6C40\u6DC0\u6DE8\u6E1F\u6E5E\u701E\u70A1\u738E\u73FD\u753A\u775B\u7887\u798E\u7A0B\u7A7D\u7CBE\u7D8E\u8247\u8A02\u8AEA\u8C9E\u912D\u914A\u91D8\u9266\u92CC\u9320\u9706\u9756"],["f0a1","\u975C\u9802\u9F0E\u5236\u5291\u557C\u5824\u5E1D\u5F1F\u608C\u63D0\u68AF\u6FDF\u796D\u7B2C\u81CD\u85BA\u88FD\u8AF8\u8E44\u918D\u9664\u969B\u973D\u984C\u9F4A\u4FCE\u5146\u51CB\u52A9\u5632\u5F14\u5F6B\u63AA\u64CD\u65E9\u6641\u66FA\u66F9\u671D\u689D\u68D7\u69FD\u6F15\u6F6E\u7167\u71E5\u722A\u74AA\u773A\u7956\u795A\u79DF\u7A20\u7A95\u7C97\u7CDF\u7D44\u7E70\u8087\u85FB\u86A4\u8A54\u8ABF\u8D99\u8E81\u9020\u906D\u91E3\u963B\u96D5\u9CE5\u65CF\u7C07\u8DB3\u93C3\u5B58\u5C0A\u5352\u62D9\u731D\u5027\u5B97\u5F9E\u60B0\u616B\u68D5\u6DD9\u742E\u7A2E\u7D42\u7D9C\u7E31\u816B"],["f1a1","\u8E2A\u8E35\u937E\u9418\u4F50\u5750\u5DE6\u5EA7\u632B\u7F6A\u4E3B\u4F4F\u4F8F\u505A\u59DD\u80C4\u546A\u5468\u55FE\u594F\u5B99\u5DDE\u5EDA\u665D\u6731\u67F1\u682A\u6CE8\u6D32\u6E4A\u6F8D\u70B7\u73E0\u7587\u7C4C\u7D02\u7D2C\u7DA2\u821F\u86DB\u8A3B\u8A85\u8D70\u8E8A\u8F33\u9031\u914E\u9152\u9444\u99D0\u7AF9\u7CA5\u4FCA\u5101\u51C6\u57C8\u5BEF\u5CFB\u6659\u6A3D\u6D5A\u6E96\u6FEC\u710C\u756F\u7AE3\u8822\u9021\u9075\u96CB\u99FF\u8301\u4E2D\u4EF2\u8846\u91CD\u537D\u6ADB\u696B\u6C41\u847A\u589E\u618E\u66FE\u62EF\u70DD\u7511\u75C7\u7E52\u84B8\u8B49\u8D08\u4E4B\u53EA"],["f2a1","\u54AB\u5730\u5740\u5FD7\u6301\u6307\u646F\u652F\u65E8\u667A\u679D\u67B3\u6B62\u6C60\u6C9A\u6F2C\u77E5\u7825\u7949\u7957\u7D19\u80A2\u8102\u81F3\u829D\u82B7\u8718\u8A8C\uF9FC\u8D04\u8DBE\u9072\u76F4\u7A19\u7A37\u7E54\u8077\u5507\u55D4\u5875\u632F\u6422\u6649\u664B\u686D\u699B\u6B84\u6D25\u6EB1\u73CD\u7468\u74A1\u755B\u75B9\u76E1\u771E\u778B\u79E6\u7E09\u7E1D\u81FB\u852F\u8897\u8A3A\u8CD1\u8EEB\u8FB0\u9032\u93AD\u9663\u9673\u9707\u4F84\u53F1\u59EA\u5AC9\u5E19\u684E\u74C6\u75BE\u79E9\u7A92\u81A3\u86ED\u8CEA\u8DCC\u8FED\u659F\u6715\uF9FD\u57F7\u6F57\u7DDD\u8F2F"],["f3a1","\u93F6\u96C6\u5FB5\u61F2\u6F84\u4E14\u4F98\u501F\u53C9\u55DF\u5D6F\u5DEE\u6B21\u6B64\u78CB\u7B9A\uF9FE\u8E49\u8ECA\u906E\u6349\u643E\u7740\u7A84\u932F\u947F\u9F6A\u64B0\u6FAF\u71E6\u74A8\u74DA\u7AC4\u7C12\u7E82\u7CB2\u7E98\u8B9A\u8D0A\u947D\u9910\u994C\u5239\u5BDF\u64E6\u672D\u7D2E\u50ED\u53C3\u5879\u6158\u6159\u61FA\u65AC\u7AD9\u8B92\u8B96\u5009\u5021\u5275\u5531\u5A3C\u5EE0\u5F70\u6134\u655E\u660C\u6636\u66A2\u69CD\u6EC4\u6F32\u7316\u7621\u7A93\u8139\u8259\u83D6\u84BC\u50B5\u57F0\u5BC0\u5BE8\u5F69\u63A1\u7826\u7DB5\u83DC\u8521\u91C7\u91F5\u518A\u67F5\u7B56"],["f4a1","\u8CAC\u51C4\u59BB\u60BD\u8655\u501C\uF9FF\u5254\u5C3A\u617D\u621A\u62D3\u64F2\u65A5\u6ECC\u7620\u810A\u8E60\u965F\u96BB\u4EDF\u5343\u5598\u5929\u5DDD\u64C5\u6CC9\u6DFA\u7394\u7A7F\u821B\u85A6\u8CE4\u8E10\u9077\u91E7\u95E1\u9621\u97C6\u51F8\u54F2\u5586\u5FB9\u64A4\u6F88\u7DB4\u8F1F\u8F4D\u9435\u50C9\u5C16\u6CBE\u6DFB\u751B\u77BB\u7C3D\u7C64\u8A79\u8AC2\u581E\u59BE\u5E16\u6377\u7252\u758A\u776B\u8ADC\u8CBC\u8F12\u5EF3\u6674\u6DF8\u807D\u83C1\u8ACB\u9751\u9BD6\uFA00\u5243\u66FF\u6D95\u6EEF\u7DE0\u8AE6\u902E\u905E\u9AD4\u521D\u527F\u54E8\u6194\u6284\u62DB\u68A2"],["f5a1","\u6912\u695A\u6A35\u7092\u7126\u785D\u7901\u790E\u79D2\u7A0D\u8096\u8278\u82D5\u8349\u8549\u8C82\u8D85\u9162\u918B\u91AE\u4FC3\u56D1\u71ED\u77D7\u8700\u89F8\u5BF8\u5FD6\u6751\u90A8\u53E2\u585A\u5BF5\u60A4\u6181\u6460\u7E3D\u8070\u8525\u9283\u64AE\u50AC\u5D14\u6700\u589C\u62BD\u63A8\u690E\u6978\u6A1E\u6E6B\u76BA\u79CB\u82BB\u8429\u8ACF\u8DA8\u8FFD\u9112\u914B\u919C\u9310\u9318\u939A\u96DB\u9A36\u9C0D\u4E11\u755C\u795D\u7AFA\u7B51\u7BC9\u7E2E\u84C4\u8E59\u8E74\u8EF8\u9010\u6625\u693F\u7443\u51FA\u672E\u9EDC\u5145\u5FE0\u6C96\u87F2\u885D\u8877\u60B4\u81B5\u8403"],["f6a1","\u8D05\u53D6\u5439\u5634\u5A36\u5C31\u708A\u7FE0\u805A\u8106\u81ED\u8DA3\u9189\u9A5F\u9DF2\u5074\u4EC4\u53A0\u60FB\u6E2C\u5C64\u4F88\u5024\u55E4\u5CD9\u5E5F\u6065\u6894\u6CBB\u6DC4\u71BE\u75D4\u75F4\u7661\u7A1A\u7A49\u7DC7\u7DFB\u7F6E\u81F4\u86A9\u8F1C\u96C9\u99B3\u9F52\u5247\u52C5\u98ED\u89AA\u4E03\u67D2\u6F06\u4FB5\u5BE2\u6795\u6C88\u6D78\u741B\u7827\u91DD\u937C\u87C4\u79E4\u7A31\u5FEB\u4ED6\u54A4\u553E\u58AE\u59A5\u60F0\u6253\u62D6\u6736\u6955\u8235\u9640\u99B1\u99DD\u502C\u5353\u5544\u577C\uFA01\u6258\uFA02\u64E2\u666B\u67DD\u6FC1\u6FEF\u7422\u7438\u8A17"],["f7a1","\u9438\u5451\u5606\u5766\u5F48\u619A\u6B4E\u7058\u70AD\u7DBB\u8A95\u596A\u812B\u63A2\u7708\u803D\u8CAA\u5854\u642D\u69BB\u5B95\u5E11\u6E6F\uFA03\u8569\u514C\u53F0\u592A\u6020\u614B\u6B86\u6C70\u6CF0\u7B1E\u80CE\u82D4\u8DC6\u90B0\u98B1\uFA04\u64C7\u6FA4\u6491\u6504\u514E\u5410\u571F\u8A0E\u615F\u6876\uFA05\u75DB\u7B52\u7D71\u901A\u5806\u69CC\u817F\u892A\u9000\u9839\u5078\u5957\u59AC\u6295\u900F\u9B2A\u615D\u7279\u95D6\u5761\u5A46\u5DF4\u628A\u64AD\u64FA\u6777\u6CE2\u6D3E\u722C\u7436\u7834\u7F77\u82AD\u8DDB\u9817\u5224\u5742\u677F\u7248\u74E3\u8CA9\u8FA6\u9211"],["f8a1","\u962A\u516B\u53ED\u634C\u4F69\u5504\u6096\u6557\u6C9B\u6D7F\u724C\u72FD\u7A17\u8987\u8C9D\u5F6D\u6F8E\u70F9\u81A8\u610E\u4FBF\u504F\u6241\u7247\u7BC7\u7DE8\u7FE9\u904D\u97AD\u9A19\u8CB6\u576A\u5E73\u67B0\u840D\u8A55\u5420\u5B16\u5E63\u5EE2\u5F0A\u6583\u80BA\u853D\u9589\u965B\u4F48\u5305\u530D\u530F\u5486\u54FA\u5703\u5E03\u6016\u629B\u62B1\u6355\uFA06\u6CE1\u6D66\u75B1\u7832\u80DE\u812F\u82DE\u8461\u84B2\u888D\u8912\u900B\u92EA\u98FD\u9B91\u5E45\u66B4\u66DD\u7011\u7206\uFA07\u4FF5\u527D\u5F6A\u6153\u6753\u6A19\u6F02\u74E2\u7968\u8868\u8C79\u98C7\u98C4\u9A43"],["f9a1","\u54C1\u7A1F\u6953\u8AF7\u8C4A\u98A8\u99AE\u5F7C\u62AB\u75B2\u76AE\u88AB\u907F\u9642\u5339\u5F3C\u5FC5\u6CCC\u73CC\u7562\u758B\u7B46\u82FE\u999D\u4E4F\u903C\u4E0B\u4F55\u53A6\u590F\u5EC8\u6630\u6CB3\u7455\u8377\u8766\u8CC0\u9050\u971E\u9C15\u58D1\u5B78\u8650\u8B14\u9DB4\u5BD2\u6068\u608D\u65F1\u6C57\u6F22\u6FA3\u701A\u7F55\u7FF0\u9591\u9592\u9650\u97D3\u5272\u8F44\u51FD\u542B\u54B8\u5563\u558A\u6ABB\u6DB5\u7DD8\u8266\u929C\u9677\u9E79\u5408\u54C8\u76D2\u86E4\u95A4\u95D4\u965C\u4EA2\u4F09\u59EE\u5AE6\u5DF7\u6052\u6297\u676D\u6841\u6C86\u6E2F\u7F38\u809B\u822A"],["faa1","\uFA08\uFA09\u9805\u4EA5\u5055\u54B3\u5793\u595A\u5B69\u5BB3\u61C8\u6977\u6D77\u7023\u87F9\u89E3\u8A72\u8AE7\u9082\u99ED\u9AB8\u52BE\u6838\u5016\u5E78\u674F\u8347\u884C\u4EAB\u5411\u56AE\u73E6\u9115\u97FF\u9909\u9957\u9999\u5653\u589F\u865B\u8A31\u61B2\u6AF6\u737B\u8ED2\u6B47\u96AA\u9A57\u5955\u7200\u8D6B\u9769\u4FD4\u5CF4\u5F26\u61F8\u665B\u6CEB\u70AB\u7384\u73B9\u73FE\u7729\u774D\u7D43\u7D62\u7E23\u8237\u8852\uFA0A\u8CE2\u9249\u986F\u5B51\u7A74\u8840\u9801\u5ACC\u4FE0\u5354\u593E\u5CFD\u633E\u6D79\u72F9\u8105\u8107\u83A2\u92CF\u9830\u4EA8\u5144\u5211\u578B"],["fba1","\u5F62\u6CC2\u6ECE\u7005\u7050\u70AF\u7192\u73E9\u7469\u834A\u87A2\u8861\u9008\u90A2\u93A3\u99A8\u516E\u5F57\u60E0\u6167\u66B3\u8559\u8E4A\u91AF\u978B\u4E4E\u4E92\u547C\u58D5\u58FA\u597D\u5CB5\u5F27\u6236\u6248\u660A\u6667\u6BEB\u6D69\u6DCF\u6E56\u6EF8\u6F94\u6FE0\u6FE9\u705D\u72D0\u7425\u745A\u74E0\u7693\u795C\u7CCA\u7E1E\u80E1\u82A6\u846B\u84BF\u864E\u865F\u8774\u8B77\u8C6A\u93AC\u9800\u9865\u60D1\u6216\u9177\u5A5A\u660F\u6DF7\u6E3E\u743F\u9B42\u5FFD\u60DA\u7B0F\u54C4\u5F18\u6C5E\u6CD3\u6D2A\u70D8\u7D05\u8679\u8A0C\u9D3B\u5316\u548C\u5B05\u6A3A\u706B\u7575"],["fca1","\u798D\u79BE\u82B1\u83EF\u8A71\u8B41\u8CA8\u9774\uFA0B\u64F4\u652B\u78BA\u78BB\u7A6B\u4E38\u559A\u5950\u5BA6\u5E7B\u60A3\u63DB\u6B61\u6665\u6853\u6E19\u7165\u74B0\u7D08\u9084\u9A69\u9C25\u6D3B\u6ED1\u733E\u8C41\u95CA\u51F0\u5E4C\u5FA8\u604D\u60F6\u6130\u614C\u6643\u6644\u69A5\u6CC1\u6E5F\u6EC9\u6F62\u714C\u749C\u7687\u7BC1\u7C27\u8352\u8757\u9051\u968D\u9EC3\u532F\u56DE\u5EFB\u5F8A\u6062\u6094\u61F7\u6666\u6703\u6A9C\u6DEE\u6FAE\u7070\u736A\u7E6A\u81BE\u8334\u86D4\u8AA8\u8CC4\u5283\u7372\u5B96\u6A6B\u9404\u54EE\u5686\u5B5D\u6548\u6585\u66C9\u689F\u6D8D\u6DC6"],["fda1","\u723B\u80B4\u9175\u9A4D\u4FAF\u5019\u539A\u540E\u543C\u5589\u55C5\u5E3F\u5F8C\u673D\u7166\u73DD\u9005\u52DB\u52F3\u5864\u58CE\u7104\u718F\u71FB\u85B0\u8A13\u6688\u85A8\u55A7\u6684\u714A\u8431\u5349\u5599\u6BC1\u5F59\u5FBD\u63EE\u6689\u7147\u8AF1\u8F1D\u9EBE\u4F11\u643A\u70CB\u7566\u8667\u6064\u8B4E\u9DF8\u5147\u51F6\u5308\u6D36\u80F8\u9ED1\u6615\u6B23\u7098\u75D5\u5403\u5C79\u7D07\u8A16\u6B20\u6B3D\u6B46\u5438\u6070\u6D3D\u7FD5\u8208\u50D6\u51DE\u559C\u566B\u56CD\u59EC\u5B09\u5E0C\u6199\u6198\u6231\u665E\u66E6\u7199\u71B9\u71BA\u72A7\u79A7\u7A00\u7FB2\u8A70"]]});var xh=P((YW,ZC)=>{ZC.exports=[["0","\0",127],["a140","\u3000\uFF0C\u3001\u3002\uFF0E\u2027\uFF1B\uFF1A\uFF1F\uFF01\uFE30\u2026\u2025\uFE50\uFE51\uFE52\xB7\uFE54\uFE55\uFE56\uFE57\uFF5C\u2013\uFE31\u2014\uFE33\u2574\uFE34\uFE4F\uFF08\uFF09\uFE35\uFE36\uFF5B\uFF5D\uFE37\uFE38\u3014\u3015\uFE39\uFE3A\u3010\u3011\uFE3B\uFE3C\u300A\u300B\uFE3D\uFE3E\u3008\u3009\uFE3F\uFE40\u300C\u300D\uFE41\uFE42\u300E\u300F\uFE43\uFE44\uFE59\uFE5A"],["a1a1","\uFE5B\uFE5C\uFE5D\uFE5E\u2018\u2019\u201C\u201D\u301D\u301E\u2035\u2032\uFF03\uFF06\uFF0A\u203B\xA7\u3003\u25CB\u25CF\u25B3\u25B2\u25CE\u2606\u2605\u25C7\u25C6\u25A1\u25A0\u25BD\u25BC\u32A3\u2105\xAF\uFFE3\uFF3F\u02CD\uFE49\uFE4A\uFE4D\uFE4E\uFE4B\uFE4C\uFE5F\uFE60\uFE61\uFF0B\uFF0D\xD7\xF7\xB1\u221A\uFF1C\uFF1E\uFF1D\u2266\u2267\u2260\u221E\u2252\u2261\uFE62",4,"\uFF5E\u2229\u222A\u22A5\u2220\u221F\u22BF\u33D2\u33D1\u222B\u222E\u2235\u2234\u2640\u2642\u2295\u2299\u2191\u2193\u2190\u2192\u2196\u2197\u2199\u2198\u2225\u2223\uFF0F"],["a240","\uFF3C\u2215\uFE68\uFF04\uFFE5\u3012\uFFE0\uFFE1\uFF05\uFF20\u2103\u2109\uFE69\uFE6A\uFE6B\u33D5\u339C\u339D\u339E\u33CE\u33A1\u338E\u338F\u33C4\xB0\u5159\u515B\u515E\u515D\u5161\u5163\u55E7\u74E9\u7CCE\u2581",7,"\u258F\u258E\u258D\u258C\u258B\u258A\u2589\u253C\u2534\u252C\u2524\u251C\u2594\u2500\u2502\u2595\u250C\u2510\u2514\u2518\u256D"],["a2a1","\u256E\u2570\u256F\u2550\u255E\u256A\u2561\u25E2\u25E3\u25E5\u25E4\u2571\u2572\u2573\uFF10",9,"\u2160",9,"\u3021",8,"\u5341\u5344\u5345\uFF21",25,"\uFF41",21],["a340","\uFF57\uFF58\uFF59\uFF5A\u0391",16,"\u03A3",6,"\u03B1",16,"\u03C3",6,"\u3105",10],["a3a1","\u3110",25,"\u02D9\u02C9\u02CA\u02C7\u02CB"],["a3e1","\u20AC"],["a440","\u4E00\u4E59\u4E01\u4E03\u4E43\u4E5D\u4E86\u4E8C\u4EBA\u513F\u5165\u516B\u51E0\u5200\u5201\u529B\u5315\u5341\u535C\u53C8\u4E09\u4E0B\u4E08\u4E0A\u4E2B\u4E38\u51E1\u4E45\u4E48\u4E5F\u4E5E\u4E8E\u4EA1\u5140\u5203\u52FA\u5343\u53C9\u53E3\u571F\u58EB\u5915\u5927\u5973\u5B50\u5B51\u5B53\u5BF8\u5C0F\u5C22\u5C38\u5C71\u5DDD\u5DE5\u5DF1\u5DF2\u5DF3\u5DFE\u5E72\u5EFE\u5F0B\u5F13\u624D"],["a4a1","\u4E11\u4E10\u4E0D\u4E2D\u4E30\u4E39\u4E4B\u5C39\u4E88\u4E91\u4E95\u4E92\u4E94\u4EA2\u4EC1\u4EC0\u4EC3\u4EC6\u4EC7\u4ECD\u4ECA\u4ECB\u4EC4\u5143\u5141\u5167\u516D\u516E\u516C\u5197\u51F6\u5206\u5207\u5208\u52FB\u52FE\u52FF\u5316\u5339\u5348\u5347\u5345\u535E\u5384\u53CB\u53CA\u53CD\u58EC\u5929\u592B\u592A\u592D\u5B54\u5C11\u5C24\u5C3A\u5C6F\u5DF4\u5E7B\u5EFF\u5F14\u5F15\u5FC3\u6208\u6236\u624B\u624E\u652F\u6587\u6597\u65A4\u65B9\u65E5\u66F0\u6708\u6728\u6B20\u6B62\u6B79\u6BCB\u6BD4\u6BDB\u6C0F\u6C34\u706B\u722A\u7236\u723B\u7247\u7259\u725B\u72AC\u738B\u4E19"],["a540","\u4E16\u4E15\u4E14\u4E18\u4E3B\u4E4D\u4E4F\u4E4E\u4EE5\u4ED8\u4ED4\u4ED5\u4ED6\u4ED7\u4EE3\u4EE4\u4ED9\u4EDE\u5145\u5144\u5189\u518A\u51AC\u51F9\u51FA\u51F8\u520A\u52A0\u529F\u5305\u5306\u5317\u531D\u4EDF\u534A\u5349\u5361\u5360\u536F\u536E\u53BB\u53EF\u53E4\u53F3\u53EC\u53EE\u53E9\u53E8\u53FC\u53F8\u53F5\u53EB\u53E6\u53EA\u53F2\u53F1\u53F0\u53E5\u53ED\u53FB\u56DB\u56DA\u5916"],["a5a1","\u592E\u5931\u5974\u5976\u5B55\u5B83\u5C3C\u5DE8\u5DE7\u5DE6\u5E02\u5E03\u5E73\u5E7C\u5F01\u5F18\u5F17\u5FC5\u620A\u6253\u6254\u6252\u6251\u65A5\u65E6\u672E\u672C\u672A\u672B\u672D\u6B63\u6BCD\u6C11\u6C10\u6C38\u6C41\u6C40\u6C3E\u72AF\u7384\u7389\u74DC\u74E6\u7518\u751F\u7528\u7529\u7530\u7531\u7532\u7533\u758B\u767D\u76AE\u76BF\u76EE\u77DB\u77E2\u77F3\u793A\u79BE\u7A74\u7ACB\u4E1E\u4E1F\u4E52\u4E53\u4E69\u4E99\u4EA4\u4EA6\u4EA5\u4EFF\u4F09\u4F19\u4F0A\u4F15\u4F0D\u4F10\u4F11\u4F0F\u4EF2\u4EF6\u4EFB\u4EF0\u4EF3\u4EFD\u4F01\u4F0B\u5149\u5147\u5146\u5148\u5168"],["a640","\u5171\u518D\u51B0\u5217\u5211\u5212\u520E\u5216\u52A3\u5308\u5321\u5320\u5370\u5371\u5409\u540F\u540C\u540A\u5410\u5401\u540B\u5404\u5411\u540D\u5408\u5403\u540E\u5406\u5412\u56E0\u56DE\u56DD\u5733\u5730\u5728\u572D\u572C\u572F\u5729\u5919\u591A\u5937\u5938\u5984\u5978\u5983\u597D\u5979\u5982\u5981\u5B57\u5B58\u5B87\u5B88\u5B85\u5B89\u5BFA\u5C16\u5C79\u5DDE\u5E06\u5E76\u5E74"],["a6a1","\u5F0F\u5F1B\u5FD9\u5FD6\u620E\u620C\u620D\u6210\u6263\u625B\u6258\u6536\u65E9\u65E8\u65EC\u65ED\u66F2\u66F3\u6709\u673D\u6734\u6731\u6735\u6B21\u6B64\u6B7B\u6C16\u6C5D\u6C57\u6C59\u6C5F\u6C60\u6C50\u6C55\u6C61\u6C5B\u6C4D\u6C4E\u7070\u725F\u725D\u767E\u7AF9\u7C73\u7CF8\u7F36\u7F8A\u7FBD\u8001\u8003\u800C\u8012\u8033\u807F\u8089\u808B\u808C\u81E3\u81EA\u81F3\u81FC\u820C\u821B\u821F\u826E\u8272\u827E\u866B\u8840\u884C\u8863\u897F\u9621\u4E32\u4EA8\u4F4D\u4F4F\u4F47\u4F57\u4F5E\u4F34\u4F5B\u4F55\u4F30\u4F50\u4F51\u4F3D\u4F3A\u4F38\u4F43\u4F54\u4F3C\u4F46\u4F63"],["a740","\u4F5C\u4F60\u4F2F\u4F4E\u4F36\u4F59\u4F5D\u4F48\u4F5A\u514C\u514B\u514D\u5175\u51B6\u51B7\u5225\u5224\u5229\u522A\u5228\u52AB\u52A9\u52AA\u52AC\u5323\u5373\u5375\u541D\u542D\u541E\u543E\u5426\u544E\u5427\u5446\u5443\u5433\u5448\u5442\u541B\u5429\u544A\u5439\u543B\u5438\u542E\u5435\u5436\u5420\u543C\u5440\u5431\u542B\u541F\u542C\u56EA\u56F0\u56E4\u56EB\u574A\u5751\u5740\u574D"],["a7a1","\u5747\u574E\u573E\u5750\u574F\u573B\u58EF\u593E\u599D\u5992\u59A8\u599E\u59A3\u5999\u5996\u598D\u59A4\u5993\u598A\u59A5\u5B5D\u5B5C\u5B5A\u5B5B\u5B8C\u5B8B\u5B8F\u5C2C\u5C40\u5C41\u5C3F\u5C3E\u5C90\u5C91\u5C94\u5C8C\u5DEB\u5E0C\u5E8F\u5E87\u5E8A\u5EF7\u5F04\u5F1F\u5F64\u5F62\u5F77\u5F79\u5FD8\u5FCC\u5FD7\u5FCD\u5FF1\u5FEB\u5FF8\u5FEA\u6212\u6211\u6284\u6297\u6296\u6280\u6276\u6289\u626D\u628A\u627C\u627E\u6279\u6273\u6292\u626F\u6298\u626E\u6295\u6293\u6291\u6286\u6539\u653B\u6538\u65F1\u66F4\u675F\u674E\u674F\u6750\u6751\u675C\u6756\u675E\u6749\u6746\u6760"],["a840","\u6753\u6757\u6B65\u6BCF\u6C42\u6C5E\u6C99\u6C81\u6C88\u6C89\u6C85\u6C9B\u6C6A\u6C7A\u6C90\u6C70\u6C8C\u6C68\u6C96\u6C92\u6C7D\u6C83\u6C72\u6C7E\u6C74\u6C86\u6C76\u6C8D\u6C94\u6C98\u6C82\u7076\u707C\u707D\u7078\u7262\u7261\u7260\u72C4\u72C2\u7396\u752C\u752B\u7537\u7538\u7682\u76EF\u77E3\u79C1\u79C0\u79BF\u7A76\u7CFB\u7F55\u8096\u8093\u809D\u8098\u809B\u809A\u80B2\u826F\u8292"],["a8a1","\u828B\u828D\u898B\u89D2\u8A00\u8C37\u8C46\u8C55\u8C9D\u8D64\u8D70\u8DB3\u8EAB\u8ECA\u8F9B\u8FB0\u8FC2\u8FC6\u8FC5\u8FC4\u5DE1\u9091\u90A2\u90AA\u90A6\u90A3\u9149\u91C6\u91CC\u9632\u962E\u9631\u962A\u962C\u4E26\u4E56\u4E73\u4E8B\u4E9B\u4E9E\u4EAB\u4EAC\u4F6F\u4F9D\u4F8D\u4F73\u4F7F\u4F6C\u4F9B\u4F8B\u4F86\u4F83\u4F70\u4F75\u4F88\u4F69\u4F7B\u4F96\u4F7E\u4F8F\u4F91\u4F7A\u5154\u5152\u5155\u5169\u5177\u5176\u5178\u51BD\u51FD\u523B\u5238\u5237\u523A\u5230\u522E\u5236\u5241\u52BE\u52BB\u5352\u5354\u5353\u5351\u5366\u5377\u5378\u5379\u53D6\u53D4\u53D7\u5473\u5475"],["a940","\u5496\u5478\u5495\u5480\u547B\u5477\u5484\u5492\u5486\u547C\u5490\u5471\u5476\u548C\u549A\u5462\u5468\u548B\u547D\u548E\u56FA\u5783\u5777\u576A\u5769\u5761\u5766\u5764\u577C\u591C\u5949\u5947\u5948\u5944\u5954\u59BE\u59BB\u59D4\u59B9\u59AE\u59D1\u59C6\u59D0\u59CD\u59CB\u59D3\u59CA\u59AF\u59B3\u59D2\u59C5\u5B5F\u5B64\u5B63\u5B97\u5B9A\u5B98\u5B9C\u5B99\u5B9B\u5C1A\u5C48\u5C45"],["a9a1","\u5C46\u5CB7\u5CA1\u5CB8\u5CA9\u5CAB\u5CB1\u5CB3\u5E18\u5E1A\u5E16\u5E15\u5E1B\u5E11\u5E78\u5E9A\u5E97\u5E9C\u5E95\u5E96\u5EF6\u5F26\u5F27\u5F29\u5F80\u5F81\u5F7F\u5F7C\u5FDD\u5FE0\u5FFD\u5FF5\u5FFF\u600F\u6014\u602F\u6035\u6016\u602A\u6015\u6021\u6027\u6029\u602B\u601B\u6216\u6215\u623F\u623E\u6240\u627F\u62C9\u62CC\u62C4\u62BF\u62C2\u62B9\u62D2\u62DB\u62AB\u62D3\u62D4\u62CB\u62C8\u62A8\u62BD\u62BC\u62D0\u62D9\u62C7\u62CD\u62B5\u62DA\u62B1\u62D8\u62D6\u62D7\u62C6\u62AC\u62CE\u653E\u65A7\u65BC\u65FA\u6614\u6613\u660C\u6606\u6602\u660E\u6600\u660F\u6615\u660A"],["aa40","\u6607\u670D\u670B\u676D\u678B\u6795\u6771\u679C\u6773\u6777\u6787\u679D\u6797\u676F\u6770\u677F\u6789\u677E\u6790\u6775\u679A\u6793\u677C\u676A\u6772\u6B23\u6B66\u6B67\u6B7F\u6C13\u6C1B\u6CE3\u6CE8\u6CF3\u6CB1\u6CCC\u6CE5\u6CB3\u6CBD\u6CBE\u6CBC\u6CE2\u6CAB\u6CD5\u6CD3\u6CB8\u6CC4\u6CB9\u6CC1\u6CAE\u6CD7\u6CC5\u6CF1\u6CBF\u6CBB\u6CE1\u6CDB\u6CCA\u6CAC\u6CEF\u6CDC\u6CD6\u6CE0"],["aaa1","\u7095\u708E\u7092\u708A\u7099\u722C\u722D\u7238\u7248\u7267\u7269\u72C0\u72CE\u72D9\u72D7\u72D0\u73A9\u73A8\u739F\u73AB\u73A5\u753D\u759D\u7599\u759A\u7684\u76C2\u76F2\u76F4\u77E5\u77FD\u793E\u7940\u7941\u79C9\u79C8\u7A7A\u7A79\u7AFA\u7CFE\u7F54\u7F8C\u7F8B\u8005\u80BA\u80A5\u80A2\u80B1\u80A1\u80AB\u80A9\u80B4\u80AA\u80AF\u81E5\u81FE\u820D\u82B3\u829D\u8299\u82AD\u82BD\u829F\u82B9\u82B1\u82AC\u82A5\u82AF\u82B8\u82A3\u82B0\u82BE\u82B7\u864E\u8671\u521D\u8868\u8ECB\u8FCE\u8FD4\u8FD1\u90B5\u90B8\u90B1\u90B6\u91C7\u91D1\u9577\u9580\u961C\u9640\u963F\u963B\u9644"],["ab40","\u9642\u96B9\u96E8\u9752\u975E\u4E9F\u4EAD\u4EAE\u4FE1\u4FB5\u4FAF\u4FBF\u4FE0\u4FD1\u4FCF\u4FDD\u4FC3\u4FB6\u4FD8\u4FDF\u4FCA\u4FD7\u4FAE\u4FD0\u4FC4\u4FC2\u4FDA\u4FCE\u4FDE\u4FB7\u5157\u5192\u5191\u51A0\u524E\u5243\u524A\u524D\u524C\u524B\u5247\u52C7\u52C9\u52C3\u52C1\u530D\u5357\u537B\u539A\u53DB\u54AC\u54C0\u54A8\u54CE\u54C9\u54B8\u54A6\u54B3\u54C7\u54C2\u54BD\u54AA\u54C1"],["aba1","\u54C4\u54C8\u54AF\u54AB\u54B1\u54BB\u54A9\u54A7\u54BF\u56FF\u5782\u578B\u57A0\u57A3\u57A2\u57CE\u57AE\u5793\u5955\u5951\u594F\u594E\u5950\u59DC\u59D8\u59FF\u59E3\u59E8\u5A03\u59E5\u59EA\u59DA\u59E6\u5A01\u59FB\u5B69\u5BA3\u5BA6\u5BA4\u5BA2\u5BA5\u5C01\u5C4E\u5C4F\u5C4D\u5C4B\u5CD9\u5CD2\u5DF7\u5E1D\u5E25\u5E1F\u5E7D\u5EA0\u5EA6\u5EFA\u5F08\u5F2D\u5F65\u5F88\u5F85\u5F8A\u5F8B\u5F87\u5F8C\u5F89\u6012\u601D\u6020\u6025\u600E\u6028\u604D\u6070\u6068\u6062\u6046\u6043\u606C\u606B\u606A\u6064\u6241\u62DC\u6316\u6309\u62FC\u62ED\u6301\u62EE\u62FD\u6307\u62F1\u62F7"],["ac40","\u62EF\u62EC\u62FE\u62F4\u6311\u6302\u653F\u6545\u65AB\u65BD\u65E2\u6625\u662D\u6620\u6627\u662F\u661F\u6628\u6631\u6624\u66F7\u67FF\u67D3\u67F1\u67D4\u67D0\u67EC\u67B6\u67AF\u67F5\u67E9\u67EF\u67C4\u67D1\u67B4\u67DA\u67E5\u67B8\u67CF\u67DE\u67F3\u67B0\u67D9\u67E2\u67DD\u67D2\u6B6A\u6B83\u6B86\u6BB5\u6BD2\u6BD7\u6C1F\u6CC9\u6D0B\u6D32\u6D2A\u6D41\u6D25\u6D0C\u6D31\u6D1E\u6D17"],["aca1","\u6D3B\u6D3D\u6D3E\u6D36\u6D1B\u6CF5\u6D39\u6D27\u6D38\u6D29\u6D2E\u6D35\u6D0E\u6D2B\u70AB\u70BA\u70B3\u70AC\u70AF\u70AD\u70B8\u70AE\u70A4\u7230\u7272\u726F\u7274\u72E9\u72E0\u72E1\u73B7\u73CA\u73BB\u73B2\u73CD\u73C0\u73B3\u751A\u752D\u754F\u754C\u754E\u754B\u75AB\u75A4\u75A5\u75A2\u75A3\u7678\u7686\u7687\u7688\u76C8\u76C6\u76C3\u76C5\u7701\u76F9\u76F8\u7709\u770B\u76FE\u76FC\u7707\u77DC\u7802\u7814\u780C\u780D\u7946\u7949\u7948\u7947\u79B9\u79BA\u79D1\u79D2\u79CB\u7A7F\u7A81\u7AFF\u7AFD\u7C7D\u7D02\u7D05\u7D00\u7D09\u7D07\u7D04\u7D06\u7F38\u7F8E\u7FBF\u8004"],["ad40","\u8010\u800D\u8011\u8036\u80D6\u80E5\u80DA\u80C3\u80C4\u80CC\u80E1\u80DB\u80CE\u80DE\u80E4\u80DD\u81F4\u8222\u82E7\u8303\u8305\u82E3\u82DB\u82E6\u8304\u82E5\u8302\u8309\u82D2\u82D7\u82F1\u8301\u82DC\u82D4\u82D1\u82DE\u82D3\u82DF\u82EF\u8306\u8650\u8679\u867B\u867A\u884D\u886B\u8981\u89D4\u8A08\u8A02\u8A03\u8C9E\u8CA0\u8D74\u8D73\u8DB4\u8ECD\u8ECC\u8FF0\u8FE6\u8FE2\u8FEA\u8FE5"],["ada1","\u8FED\u8FEB\u8FE4\u8FE8\u90CA\u90CE\u90C1\u90C3\u914B\u914A\u91CD\u9582\u9650\u964B\u964C\u964D\u9762\u9769\u97CB\u97ED\u97F3\u9801\u98A8\u98DB\u98DF\u9996\u9999\u4E58\u4EB3\u500C\u500D\u5023\u4FEF\u5026\u5025\u4FF8\u5029\u5016\u5006\u503C\u501F\u501A\u5012\u5011\u4FFA\u5000\u5014\u5028\u4FF1\u5021\u500B\u5019\u5018\u4FF3\u4FEE\u502D\u502A\u4FFE\u502B\u5009\u517C\u51A4\u51A5\u51A2\u51CD\u51CC\u51C6\u51CB\u5256\u525C\u5254\u525B\u525D\u532A\u537F\u539F\u539D\u53DF\u54E8\u5510\u5501\u5537\u54FC\u54E5\u54F2\u5506\u54FA\u5514\u54E9\u54ED\u54E1\u5509\u54EE\u54EA"],["ae40","\u54E6\u5527\u5507\u54FD\u550F\u5703\u5704\u57C2\u57D4\u57CB\u57C3\u5809\u590F\u5957\u5958\u595A\u5A11\u5A18\u5A1C\u5A1F\u5A1B\u5A13\u59EC\u5A20\u5A23\u5A29\u5A25\u5A0C\u5A09\u5B6B\u5C58\u5BB0\u5BB3\u5BB6\u5BB4\u5BAE\u5BB5\u5BB9\u5BB8\u5C04\u5C51\u5C55\u5C50\u5CED\u5CFD\u5CFB\u5CEA\u5CE8\u5CF0\u5CF6\u5D01\u5CF4\u5DEE\u5E2D\u5E2B\u5EAB\u5EAD\u5EA7\u5F31\u5F92\u5F91\u5F90\u6059"],["aea1","\u6063\u6065\u6050\u6055\u606D\u6069\u606F\u6084\u609F\u609A\u608D\u6094\u608C\u6085\u6096\u6247\u62F3\u6308\u62FF\u634E\u633E\u632F\u6355\u6342\u6346\u634F\u6349\u633A\u6350\u633D\u632A\u632B\u6328\u634D\u634C\u6548\u6549\u6599\u65C1\u65C5\u6642\u6649\u664F\u6643\u6652\u664C\u6645\u6641\u66F8\u6714\u6715\u6717\u6821\u6838\u6848\u6846\u6853\u6839\u6842\u6854\u6829\u68B3\u6817\u684C\u6851\u683D\u67F4\u6850\u6840\u683C\u6843\u682A\u6845\u6813\u6818\u6841\u6B8A\u6B89\u6BB7\u6C23\u6C27\u6C28\u6C26\u6C24\u6CF0\u6D6A\u6D95\u6D88\u6D87\u6D66\u6D78\u6D77\u6D59\u6D93"],["af40","\u6D6C\u6D89\u6D6E\u6D5A\u6D74\u6D69\u6D8C\u6D8A\u6D79\u6D85\u6D65\u6D94\u70CA\u70D8\u70E4\u70D9\u70C8\u70CF\u7239\u7279\u72FC\u72F9\u72FD\u72F8\u72F7\u7386\u73ED\u7409\u73EE\u73E0\u73EA\u73DE\u7554\u755D\u755C\u755A\u7559\u75BE\u75C5\u75C7\u75B2\u75B3\u75BD\u75BC\u75B9\u75C2\u75B8\u768B\u76B0\u76CA\u76CD\u76CE\u7729\u771F\u7720\u7728\u77E9\u7830\u7827\u7838\u781D\u7834\u7837"],["afa1","\u7825\u782D\u7820\u781F\u7832\u7955\u7950\u7960\u795F\u7956\u795E\u795D\u7957\u795A\u79E4\u79E3\u79E7\u79DF\u79E6\u79E9\u79D8\u7A84\u7A88\u7AD9\u7B06\u7B11\u7C89\u7D21\u7D17\u7D0B\u7D0A\u7D20\u7D22\u7D14\u7D10\u7D15\u7D1A\u7D1C\u7D0D\u7D19\u7D1B\u7F3A\u7F5F\u7F94\u7FC5\u7FC1\u8006\u8018\u8015\u8019\u8017\u803D\u803F\u80F1\u8102\u80F0\u8105\u80ED\u80F4\u8106\u80F8\u80F3\u8108\u80FD\u810A\u80FC\u80EF\u81ED\u81EC\u8200\u8210\u822A\u822B\u8228\u822C\u82BB\u832B\u8352\u8354\u834A\u8338\u8350\u8349\u8335\u8334\u834F\u8332\u8339\u8336\u8317\u8340\u8331\u8328\u8343"],["b040","\u8654\u868A\u86AA\u8693\u86A4\u86A9\u868C\u86A3\u869C\u8870\u8877\u8881\u8882\u887D\u8879\u8A18\u8A10\u8A0E\u8A0C\u8A15\u8A0A\u8A17\u8A13\u8A16\u8A0F\u8A11\u8C48\u8C7A\u8C79\u8CA1\u8CA2\u8D77\u8EAC\u8ED2\u8ED4\u8ECF\u8FB1\u9001\u9006\u8FF7\u9000\u8FFA\u8FF4\u9003\u8FFD\u9005\u8FF8\u9095\u90E1\u90DD\u90E2\u9152\u914D\u914C\u91D8\u91DD\u91D7\u91DC\u91D9\u9583\u9662\u9663\u9661"],["b0a1","\u965B\u965D\u9664\u9658\u965E\u96BB\u98E2\u99AC\u9AA8\u9AD8\u9B25\u9B32\u9B3C\u4E7E\u507A\u507D\u505C\u5047\u5043\u504C\u505A\u5049\u5065\u5076\u504E\u5055\u5075\u5074\u5077\u504F\u500F\u506F\u506D\u515C\u5195\u51F0\u526A\u526F\u52D2\u52D9\u52D8\u52D5\u5310\u530F\u5319\u533F\u5340\u533E\u53C3\u66FC\u5546\u556A\u5566\u5544\u555E\u5561\u5543\u554A\u5531\u5556\u554F\u5555\u552F\u5564\u5538\u552E\u555C\u552C\u5563\u5533\u5541\u5557\u5708\u570B\u5709\u57DF\u5805\u580A\u5806\u57E0\u57E4\u57FA\u5802\u5835\u57F7\u57F9\u5920\u5962\u5A36\u5A41\u5A49\u5A66\u5A6A\u5A40"],["b140","\u5A3C\u5A62\u5A5A\u5A46\u5A4A\u5B70\u5BC7\u5BC5\u5BC4\u5BC2\u5BBF\u5BC6\u5C09\u5C08\u5C07\u5C60\u5C5C\u5C5D\u5D07\u5D06\u5D0E\u5D1B\u5D16\u5D22\u5D11\u5D29\u5D14\u5D19\u5D24\u5D27\u5D17\u5DE2\u5E38\u5E36\u5E33\u5E37\u5EB7\u5EB8\u5EB6\u5EB5\u5EBE\u5F35\u5F37\u5F57\u5F6C\u5F69\u5F6B\u5F97\u5F99\u5F9E\u5F98\u5FA1\u5FA0\u5F9C\u607F\u60A3\u6089\u60A0\u60A8\u60CB\u60B4\u60E6\u60BD"],["b1a1","\u60C5\u60BB\u60B5\u60DC\u60BC\u60D8\u60D5\u60C6\u60DF\u60B8\u60DA\u60C7\u621A\u621B\u6248\u63A0\u63A7\u6372\u6396\u63A2\u63A5\u6377\u6367\u6398\u63AA\u6371\u63A9\u6389\u6383\u639B\u636B\u63A8\u6384\u6388\u6399\u63A1\u63AC\u6392\u638F\u6380\u637B\u6369\u6368\u637A\u655D\u6556\u6551\u6559\u6557\u555F\u654F\u6558\u6555\u6554\u659C\u659B\u65AC\u65CF\u65CB\u65CC\u65CE\u665D\u665A\u6664\u6668\u6666\u665E\u66F9\u52D7\u671B\u6881\u68AF\u68A2\u6893\u68B5\u687F\u6876\u68B1\u68A7\u6897\u68B0\u6883\u68C4\u68AD\u6886\u6885\u6894\u689D\u68A8\u689F\u68A1\u6882\u6B32\u6BBA"],["b240","\u6BEB\u6BEC\u6C2B\u6D8E\u6DBC\u6DF3\u6DD9\u6DB2\u6DE1\u6DCC\u6DE4\u6DFB\u6DFA\u6E05\u6DC7\u6DCB\u6DAF\u6DD1\u6DAE\u6DDE\u6DF9\u6DB8\u6DF7\u6DF5\u6DC5\u6DD2\u6E1A\u6DB5\u6DDA\u6DEB\u6DD8\u6DEA\u6DF1\u6DEE\u6DE8\u6DC6\u6DC4\u6DAA\u6DEC\u6DBF\u6DE6\u70F9\u7109\u710A\u70FD\u70EF\u723D\u727D\u7281\u731C\u731B\u7316\u7313\u7319\u7387\u7405\u740A\u7403\u7406\u73FE\u740D\u74E0\u74F6"],["b2a1","\u74F7\u751C\u7522\u7565\u7566\u7562\u7570\u758F\u75D4\u75D5\u75B5\u75CA\u75CD\u768E\u76D4\u76D2\u76DB\u7737\u773E\u773C\u7736\u7738\u773A\u786B\u7843\u784E\u7965\u7968\u796D\u79FB\u7A92\u7A95\u7B20\u7B28\u7B1B\u7B2C\u7B26\u7B19\u7B1E\u7B2E\u7C92\u7C97\u7C95\u7D46\u7D43\u7D71\u7D2E\u7D39\u7D3C\u7D40\u7D30\u7D33\u7D44\u7D2F\u7D42\u7D32\u7D31\u7F3D\u7F9E\u7F9A\u7FCC\u7FCE\u7FD2\u801C\u804A\u8046\u812F\u8116\u8123\u812B\u8129\u8130\u8124\u8202\u8235\u8237\u8236\u8239\u838E\u839E\u8398\u8378\u83A2\u8396\u83BD\u83AB\u8392\u838A\u8393\u8389\u83A0\u8377\u837B\u837C"],["b340","\u8386\u83A7\u8655\u5F6A\u86C7\u86C0\u86B6\u86C4\u86B5\u86C6\u86CB\u86B1\u86AF\u86C9\u8853\u889E\u8888\u88AB\u8892\u8896\u888D\u888B\u8993\u898F\u8A2A\u8A1D\u8A23\u8A25\u8A31\u8A2D\u8A1F\u8A1B\u8A22\u8C49\u8C5A\u8CA9\u8CAC\u8CAB\u8CA8\u8CAA\u8CA7\u8D67\u8D66\u8DBE\u8DBA\u8EDB\u8EDF\u9019\u900D\u901A\u9017\u9023\u901F\u901D\u9010\u9015\u901E\u9020\u900F\u9022\u9016\u901B\u9014"],["b3a1","\u90E8\u90ED\u90FD\u9157\u91CE\u91F5\u91E6\u91E3\u91E7\u91ED\u91E9\u9589\u966A\u9675\u9673\u9678\u9670\u9674\u9676\u9677\u966C\u96C0\u96EA\u96E9\u7AE0\u7ADF\u9802\u9803\u9B5A\u9CE5\u9E75\u9E7F\u9EA5\u9EBB\u50A2\u508D\u5085\u5099\u5091\u5080\u5096\u5098\u509A\u6700\u51F1\u5272\u5274\u5275\u5269\u52DE\u52DD\u52DB\u535A\u53A5\u557B\u5580\u55A7\u557C\u558A\u559D\u5598\u5582\u559C\u55AA\u5594\u5587\u558B\u5583\u55B3\u55AE\u559F\u553E\u55B2\u559A\u55BB\u55AC\u55B1\u557E\u5589\u55AB\u5599\u570D\u582F\u582A\u5834\u5824\u5830\u5831\u5821\u581D\u5820\u58F9\u58FA\u5960"],["b440","\u5A77\u5A9A\u5A7F\u5A92\u5A9B\u5AA7\u5B73\u5B71\u5BD2\u5BCC\u5BD3\u5BD0\u5C0A\u5C0B\u5C31\u5D4C\u5D50\u5D34\u5D47\u5DFD\u5E45\u5E3D\u5E40\u5E43\u5E7E\u5ECA\u5EC1\u5EC2\u5EC4\u5F3C\u5F6D\u5FA9\u5FAA\u5FA8\u60D1\u60E1\u60B2\u60B6\u60E0\u611C\u6123\u60FA\u6115\u60F0\u60FB\u60F4\u6168\u60F1\u610E\u60F6\u6109\u6100\u6112\u621F\u6249\u63A3\u638C\u63CF\u63C0\u63E9\u63C9\u63C6\u63CD"],["b4a1","\u63D2\u63E3\u63D0\u63E1\u63D6\u63ED\u63EE\u6376\u63F4\u63EA\u63DB\u6452\u63DA\u63F9\u655E\u6566\u6562\u6563\u6591\u6590\u65AF\u666E\u6670\u6674\u6676\u666F\u6691\u667A\u667E\u6677\u66FE\u66FF\u671F\u671D\u68FA\u68D5\u68E0\u68D8\u68D7\u6905\u68DF\u68F5\u68EE\u68E7\u68F9\u68D2\u68F2\u68E3\u68CB\u68CD\u690D\u6912\u690E\u68C9\u68DA\u696E\u68FB\u6B3E\u6B3A\u6B3D\u6B98\u6B96\u6BBC\u6BEF\u6C2E\u6C2F\u6C2C\u6E2F\u6E38\u6E54\u6E21\u6E32\u6E67\u6E4A\u6E20\u6E25\u6E23\u6E1B\u6E5B\u6E58\u6E24\u6E56\u6E6E\u6E2D\u6E26\u6E6F\u6E34\u6E4D\u6E3A\u6E2C\u6E43\u6E1D\u6E3E\u6ECB"],["b540","\u6E89\u6E19\u6E4E\u6E63\u6E44\u6E72\u6E69\u6E5F\u7119\u711A\u7126\u7130\u7121\u7136\u716E\u711C\u724C\u7284\u7280\u7336\u7325\u7334\u7329\u743A\u742A\u7433\u7422\u7425\u7435\u7436\u7434\u742F\u741B\u7426\u7428\u7525\u7526\u756B\u756A\u75E2\u75DB\u75E3\u75D9\u75D8\u75DE\u75E0\u767B\u767C\u7696\u7693\u76B4\u76DC\u774F\u77ED\u785D\u786C\u786F\u7A0D\u7A08\u7A0B\u7A05\u7A00\u7A98"],["b5a1","\u7A97\u7A96\u7AE5\u7AE3\u7B49\u7B56\u7B46\u7B50\u7B52\u7B54\u7B4D\u7B4B\u7B4F\u7B51\u7C9F\u7CA5\u7D5E\u7D50\u7D68\u7D55\u7D2B\u7D6E\u7D72\u7D61\u7D66\u7D62\u7D70\u7D73\u5584\u7FD4\u7FD5\u800B\u8052\u8085\u8155\u8154\u814B\u8151\u814E\u8139\u8146\u813E\u814C\u8153\u8174\u8212\u821C\u83E9\u8403\u83F8\u840D\u83E0\u83C5\u840B\u83C1\u83EF\u83F1\u83F4\u8457\u840A\u83F0\u840C\u83CC\u83FD\u83F2\u83CA\u8438\u840E\u8404\u83DC\u8407\u83D4\u83DF\u865B\u86DF\u86D9\u86ED\u86D4\u86DB\u86E4\u86D0\u86DE\u8857\u88C1\u88C2\u88B1\u8983\u8996\u8A3B\u8A60\u8A55\u8A5E\u8A3C\u8A41"],["b640","\u8A54\u8A5B\u8A50\u8A46\u8A34\u8A3A\u8A36\u8A56\u8C61\u8C82\u8CAF\u8CBC\u8CB3\u8CBD\u8CC1\u8CBB\u8CC0\u8CB4\u8CB7\u8CB6\u8CBF\u8CB8\u8D8A\u8D85\u8D81\u8DCE\u8DDD\u8DCB\u8DDA\u8DD1\u8DCC\u8DDB\u8DC6\u8EFB\u8EF8\u8EFC\u8F9C\u902E\u9035\u9031\u9038\u9032\u9036\u9102\u90F5\u9109\u90FE\u9163\u9165\u91CF\u9214\u9215\u9223\u9209\u921E\u920D\u9210\u9207\u9211\u9594\u958F\u958B\u9591"],["b6a1","\u9593\u9592\u958E\u968A\u968E\u968B\u967D\u9685\u9686\u968D\u9672\u9684\u96C1\u96C5\u96C4\u96C6\u96C7\u96EF\u96F2\u97CC\u9805\u9806\u9808\u98E7\u98EA\u98EF\u98E9\u98F2\u98ED\u99AE\u99AD\u9EC3\u9ECD\u9ED1\u4E82\u50AD\u50B5\u50B2\u50B3\u50C5\u50BE\u50AC\u50B7\u50BB\u50AF\u50C7\u527F\u5277\u527D\u52DF\u52E6\u52E4\u52E2\u52E3\u532F\u55DF\u55E8\u55D3\u55E6\u55CE\u55DC\u55C7\u55D1\u55E3\u55E4\u55EF\u55DA\u55E1\u55C5\u55C6\u55E5\u55C9\u5712\u5713\u585E\u5851\u5858\u5857\u585A\u5854\u586B\u584C\u586D\u584A\u5862\u5852\u584B\u5967\u5AC1\u5AC9\u5ACC\u5ABE\u5ABD\u5ABC"],["b740","\u5AB3\u5AC2\u5AB2\u5D69\u5D6F\u5E4C\u5E79\u5EC9\u5EC8\u5F12\u5F59\u5FAC\u5FAE\u611A\u610F\u6148\u611F\u60F3\u611B\u60F9\u6101\u6108\u614E\u614C\u6144\u614D\u613E\u6134\u6127\u610D\u6106\u6137\u6221\u6222\u6413\u643E\u641E\u642A\u642D\u643D\u642C\u640F\u641C\u6414\u640D\u6436\u6416\u6417\u6406\u656C\u659F\u65B0\u6697\u6689\u6687\u6688\u6696\u6684\u6698\u668D\u6703\u6994\u696D"],["b7a1","\u695A\u6977\u6960\u6954\u6975\u6930\u6982\u694A\u6968\u696B\u695E\u6953\u6979\u6986\u695D\u6963\u695B\u6B47\u6B72\u6BC0\u6BBF\u6BD3\u6BFD\u6EA2\u6EAF\u6ED3\u6EB6\u6EC2\u6E90\u6E9D\u6EC7\u6EC5\u6EA5\u6E98\u6EBC\u6EBA\u6EAB\u6ED1\u6E96\u6E9C\u6EC4\u6ED4\u6EAA\u6EA7\u6EB4\u714E\u7159\u7169\u7164\u7149\u7167\u715C\u716C\u7166\u714C\u7165\u715E\u7146\u7168\u7156\u723A\u7252\u7337\u7345\u733F\u733E\u746F\u745A\u7455\u745F\u745E\u7441\u743F\u7459\u745B\u745C\u7576\u7578\u7600\u75F0\u7601\u75F2\u75F1\u75FA\u75FF\u75F4\u75F3\u76DE\u76DF\u775B\u776B\u7766\u775E\u7763"],["b840","\u7779\u776A\u776C\u775C\u7765\u7768\u7762\u77EE\u788E\u78B0\u7897\u7898\u788C\u7889\u787C\u7891\u7893\u787F\u797A\u797F\u7981\u842C\u79BD\u7A1C\u7A1A\u7A20\u7A14\u7A1F\u7A1E\u7A9F\u7AA0\u7B77\u7BC0\u7B60\u7B6E\u7B67\u7CB1\u7CB3\u7CB5\u7D93\u7D79\u7D91\u7D81\u7D8F\u7D5B\u7F6E\u7F69\u7F6A\u7F72\u7FA9\u7FA8\u7FA4\u8056\u8058\u8086\u8084\u8171\u8170\u8178\u8165\u816E\u8173\u816B"],["b8a1","\u8179\u817A\u8166\u8205\u8247\u8482\u8477\u843D\u8431\u8475\u8466\u846B\u8449\u846C\u845B\u843C\u8435\u8461\u8463\u8469\u846D\u8446\u865E\u865C\u865F\u86F9\u8713\u8708\u8707\u8700\u86FE\u86FB\u8702\u8703\u8706\u870A\u8859\u88DF\u88D4\u88D9\u88DC\u88D8\u88DD\u88E1\u88CA\u88D5\u88D2\u899C\u89E3\u8A6B\u8A72\u8A73\u8A66\u8A69\u8A70\u8A87\u8A7C\u8A63\u8AA0\u8A71\u8A85\u8A6D\u8A62\u8A6E\u8A6C\u8A79\u8A7B\u8A3E\u8A68\u8C62\u8C8A\u8C89\u8CCA\u8CC7\u8CC8\u8CC4\u8CB2\u8CC3\u8CC2\u8CC5\u8DE1\u8DDF\u8DE8\u8DEF\u8DF3\u8DFA\u8DEA\u8DE4\u8DE6\u8EB2\u8F03\u8F09\u8EFE\u8F0A"],["b940","\u8F9F\u8FB2\u904B\u904A\u9053\u9042\u9054\u903C\u9055\u9050\u9047\u904F\u904E\u904D\u9051\u903E\u9041\u9112\u9117\u916C\u916A\u9169\u91C9\u9237\u9257\u9238\u923D\u9240\u923E\u925B\u924B\u9264\u9251\u9234\u9249\u924D\u9245\u9239\u923F\u925A\u9598\u9698\u9694\u9695\u96CD\u96CB\u96C9\u96CA\u96F7\u96FB\u96F9\u96F6\u9756\u9774\u9776\u9810\u9811\u9813\u980A\u9812\u980C\u98FC\u98F4"],["b9a1","\u98FD\u98FE\u99B3\u99B1\u99B4\u9AE1\u9CE9\u9E82\u9F0E\u9F13\u9F20\u50E7\u50EE\u50E5\u50D6\u50ED\u50DA\u50D5\u50CF\u50D1\u50F1\u50CE\u50E9\u5162\u51F3\u5283\u5282\u5331\u53AD\u55FE\u5600\u561B\u5617\u55FD\u5614\u5606\u5609\u560D\u560E\u55F7\u5616\u561F\u5608\u5610\u55F6\u5718\u5716\u5875\u587E\u5883\u5893\u588A\u5879\u5885\u587D\u58FD\u5925\u5922\u5924\u596A\u5969\u5AE1\u5AE6\u5AE9\u5AD7\u5AD6\u5AD8\u5AE3\u5B75\u5BDE\u5BE7\u5BE1\u5BE5\u5BE6\u5BE8\u5BE2\u5BE4\u5BDF\u5C0D\u5C62\u5D84\u5D87\u5E5B\u5E63\u5E55\u5E57\u5E54\u5ED3\u5ED6\u5F0A\u5F46\u5F70\u5FB9\u6147"],["ba40","\u613F\u614B\u6177\u6162\u6163\u615F\u615A\u6158\u6175\u622A\u6487\u6458\u6454\u64A4\u6478\u645F\u647A\u6451\u6467\u6434\u646D\u647B\u6572\u65A1\u65D7\u65D6\u66A2\u66A8\u669D\u699C\u69A8\u6995\u69C1\u69AE\u69D3\u69CB\u699B\u69B7\u69BB\u69AB\u69B4\u69D0\u69CD\u69AD\u69CC\u69A6\u69C3\u69A3\u6B49\u6B4C\u6C33\u6F33\u6F14\u6EFE\u6F13\u6EF4\u6F29\u6F3E\u6F20\u6F2C\u6F0F\u6F02\u6F22"],["baa1","\u6EFF\u6EEF\u6F06\u6F31\u6F38\u6F32\u6F23\u6F15\u6F2B\u6F2F\u6F88\u6F2A\u6EEC\u6F01\u6EF2\u6ECC\u6EF7\u7194\u7199\u717D\u718A\u7184\u7192\u723E\u7292\u7296\u7344\u7350\u7464\u7463\u746A\u7470\u746D\u7504\u7591\u7627\u760D\u760B\u7609\u7613\u76E1\u76E3\u7784\u777D\u777F\u7761\u78C1\u789F\u78A7\u78B3\u78A9\u78A3\u798E\u798F\u798D\u7A2E\u7A31\u7AAA\u7AA9\u7AED\u7AEF\u7BA1\u7B95\u7B8B\u7B75\u7B97\u7B9D\u7B94\u7B8F\u7BB8\u7B87\u7B84\u7CB9\u7CBD\u7CBE\u7DBB\u7DB0\u7D9C\u7DBD\u7DBE\u7DA0\u7DCA\u7DB4\u7DB2\u7DB1\u7DBA\u7DA2\u7DBF\u7DB5\u7DB8\u7DAD\u7DD2\u7DC7\u7DAC"],["bb40","\u7F70\u7FE0\u7FE1\u7FDF\u805E\u805A\u8087\u8150\u8180\u818F\u8188\u818A\u817F\u8182\u81E7\u81FA\u8207\u8214\u821E\u824B\u84C9\u84BF\u84C6\u84C4\u8499\u849E\u84B2\u849C\u84CB\u84B8\u84C0\u84D3\u8490\u84BC\u84D1\u84CA\u873F\u871C\u873B\u8722\u8725\u8734\u8718\u8755\u8737\u8729\u88F3\u8902\u88F4\u88F9\u88F8\u88FD\u88E8\u891A\u88EF\u8AA6\u8A8C\u8A9E\u8AA3\u8A8D\u8AA1\u8A93\u8AA4"],["bba1","\u8AAA\u8AA5\u8AA8\u8A98\u8A91\u8A9A\u8AA7\u8C6A\u8C8D\u8C8C\u8CD3\u8CD1\u8CD2\u8D6B\u8D99\u8D95\u8DFC\u8F14\u8F12\u8F15\u8F13\u8FA3\u9060\u9058\u905C\u9063\u9059\u905E\u9062\u905D\u905B\u9119\u9118\u911E\u9175\u9178\u9177\u9174\u9278\u9280\u9285\u9298\u9296\u927B\u9293\u929C\u92A8\u927C\u9291\u95A1\u95A8\u95A9\u95A3\u95A5\u95A4\u9699\u969C\u969B\u96CC\u96D2\u9700\u977C\u9785\u97F6\u9817\u9818\u98AF\u98B1\u9903\u9905\u990C\u9909\u99C1\u9AAF\u9AB0\u9AE6\u9B41\u9B42\u9CF4\u9CF6\u9CF3\u9EBC\u9F3B\u9F4A\u5104\u5100\u50FB\u50F5\u50F9\u5102\u5108\u5109\u5105\u51DC"],["bc40","\u5287\u5288\u5289\u528D\u528A\u52F0\u53B2\u562E\u563B\u5639\u5632\u563F\u5634\u5629\u5653\u564E\u5657\u5674\u5636\u562F\u5630\u5880\u589F\u589E\u58B3\u589C\u58AE\u58A9\u58A6\u596D\u5B09\u5AFB\u5B0B\u5AF5\u5B0C\u5B08\u5BEE\u5BEC\u5BE9\u5BEB\u5C64\u5C65\u5D9D\u5D94\u5E62\u5E5F\u5E61\u5EE2\u5EDA\u5EDF\u5EDD\u5EE3\u5EE0\u5F48\u5F71\u5FB7\u5FB5\u6176\u6167\u616E\u615D\u6155\u6182"],["bca1","\u617C\u6170\u616B\u617E\u61A7\u6190\u61AB\u618E\u61AC\u619A\u61A4\u6194\u61AE\u622E\u6469\u646F\u6479\u649E\u64B2\u6488\u6490\u64B0\u64A5\u6493\u6495\u64A9\u6492\u64AE\u64AD\u64AB\u649A\u64AC\u6499\u64A2\u64B3\u6575\u6577\u6578\u66AE\u66AB\u66B4\u66B1\u6A23\u6A1F\u69E8\u6A01\u6A1E\u6A19\u69FD\u6A21\u6A13\u6A0A\u69F3\u6A02\u6A05\u69ED\u6A11\u6B50\u6B4E\u6BA4\u6BC5\u6BC6\u6F3F\u6F7C\u6F84\u6F51\u6F66\u6F54\u6F86\u6F6D\u6F5B\u6F78\u6F6E\u6F8E\u6F7A\u6F70\u6F64\u6F97\u6F58\u6ED5\u6F6F\u6F60\u6F5F\u719F\u71AC\u71B1\u71A8\u7256\u729B\u734E\u7357\u7469\u748B\u7483"],["bd40","\u747E\u7480\u757F\u7620\u7629\u761F\u7624\u7626\u7621\u7622\u769A\u76BA\u76E4\u778E\u7787\u778C\u7791\u778B\u78CB\u78C5\u78BA\u78CA\u78BE\u78D5\u78BC\u78D0\u7A3F\u7A3C\u7A40\u7A3D\u7A37\u7A3B\u7AAF\u7AAE\u7BAD\u7BB1\u7BC4\u7BB4\u7BC6\u7BC7\u7BC1\u7BA0\u7BCC\u7CCA\u7DE0\u7DF4\u7DEF\u7DFB\u7DD8\u7DEC\u7DDD\u7DE8\u7DE3\u7DDA\u7DDE\u7DE9\u7D9E\u7DD9\u7DF2\u7DF9\u7F75\u7F77\u7FAF"],["bda1","\u7FE9\u8026\u819B\u819C\u819D\u81A0\u819A\u8198\u8517\u853D\u851A\u84EE\u852C\u852D\u8513\u8511\u8523\u8521\u8514\u84EC\u8525\u84FF\u8506\u8782\u8774\u8776\u8760\u8766\u8778\u8768\u8759\u8757\u874C\u8753\u885B\u885D\u8910\u8907\u8912\u8913\u8915\u890A\u8ABC\u8AD2\u8AC7\u8AC4\u8A95\u8ACB\u8AF8\u8AB2\u8AC9\u8AC2\u8ABF\u8AB0\u8AD6\u8ACD\u8AB6\u8AB9\u8ADB\u8C4C\u8C4E\u8C6C\u8CE0\u8CDE\u8CE6\u8CE4\u8CEC\u8CED\u8CE2\u8CE3\u8CDC\u8CEA\u8CE1\u8D6D\u8D9F\u8DA3\u8E2B\u8E10\u8E1D\u8E22\u8E0F\u8E29\u8E1F\u8E21\u8E1E\u8EBA\u8F1D\u8F1B\u8F1F\u8F29\u8F26\u8F2A\u8F1C\u8F1E"],["be40","\u8F25\u9069\u906E\u9068\u906D\u9077\u9130\u912D\u9127\u9131\u9187\u9189\u918B\u9183\u92C5\u92BB\u92B7\u92EA\u92AC\u92E4\u92C1\u92B3\u92BC\u92D2\u92C7\u92F0\u92B2\u95AD\u95B1\u9704\u9706\u9707\u9709\u9760\u978D\u978B\u978F\u9821\u982B\u981C\u98B3\u990A\u9913\u9912\u9918\u99DD\u99D0\u99DF\u99DB\u99D1\u99D5\u99D2\u99D9\u9AB7\u9AEE\u9AEF\u9B27\u9B45\u9B44\u9B77\u9B6F\u9D06\u9D09"],["bea1","\u9D03\u9EA9\u9EBE\u9ECE\u58A8\u9F52\u5112\u5118\u5114\u5110\u5115\u5180\u51AA\u51DD\u5291\u5293\u52F3\u5659\u566B\u5679\u5669\u5664\u5678\u566A\u5668\u5665\u5671\u566F\u566C\u5662\u5676\u58C1\u58BE\u58C7\u58C5\u596E\u5B1D\u5B34\u5B78\u5BF0\u5C0E\u5F4A\u61B2\u6191\u61A9\u618A\u61CD\u61B6\u61BE\u61CA\u61C8\u6230\u64C5\u64C1\u64CB\u64BB\u64BC\u64DA\u64C4\u64C7\u64C2\u64CD\u64BF\u64D2\u64D4\u64BE\u6574\u66C6\u66C9\u66B9\u66C4\u66C7\u66B8\u6A3D\u6A38\u6A3A\u6A59\u6A6B\u6A58\u6A39\u6A44\u6A62\u6A61\u6A4B\u6A47\u6A35\u6A5F\u6A48\u6B59\u6B77\u6C05\u6FC2\u6FB1\u6FA1"],["bf40","\u6FC3\u6FA4\u6FC1\u6FA7\u6FB3\u6FC0\u6FB9\u6FB6\u6FA6\u6FA0\u6FB4\u71BE\u71C9\u71D0\u71D2\u71C8\u71D5\u71B9\u71CE\u71D9\u71DC\u71C3\u71C4\u7368\u749C\u74A3\u7498\u749F\u749E\u74E2\u750C\u750D\u7634\u7638\u763A\u76E7\u76E5\u77A0\u779E\u779F\u77A5\u78E8\u78DA\u78EC\u78E7\u79A6\u7A4D\u7A4E\u7A46\u7A4C\u7A4B\u7ABA\u7BD9\u7C11\u7BC9\u7BE4\u7BDB\u7BE1\u7BE9\u7BE6\u7CD5\u7CD6\u7E0A"],["bfa1","\u7E11\u7E08\u7E1B\u7E23\u7E1E\u7E1D\u7E09\u7E10\u7F79\u7FB2\u7FF0\u7FF1\u7FEE\u8028\u81B3\u81A9\u81A8\u81FB\u8208\u8258\u8259\u854A\u8559\u8548\u8568\u8569\u8543\u8549\u856D\u856A\u855E\u8783\u879F\u879E\u87A2\u878D\u8861\u892A\u8932\u8925\u892B\u8921\u89AA\u89A6\u8AE6\u8AFA\u8AEB\u8AF1\u8B00\u8ADC\u8AE7\u8AEE\u8AFE\u8B01\u8B02\u8AF7\u8AED\u8AF3\u8AF6\u8AFC\u8C6B\u8C6D\u8C93\u8CF4\u8E44\u8E31\u8E34\u8E42\u8E39\u8E35\u8F3B\u8F2F\u8F38\u8F33\u8FA8\u8FA6\u9075\u9074\u9078\u9072\u907C\u907A\u9134\u9192\u9320\u9336\u92F8\u9333\u932F\u9322\u92FC\u932B\u9304\u931A"],["c040","\u9310\u9326\u9321\u9315\u932E\u9319\u95BB\u96A7\u96A8\u96AA\u96D5\u970E\u9711\u9716\u970D\u9713\u970F\u975B\u975C\u9766\u9798\u9830\u9838\u983B\u9837\u982D\u9839\u9824\u9910\u9928\u991E\u991B\u9921\u991A\u99ED\u99E2\u99F1\u9AB8\u9ABC\u9AFB\u9AED\u9B28\u9B91\u9D15\u9D23\u9D26\u9D28\u9D12\u9D1B\u9ED8\u9ED4\u9F8D\u9F9C\u512A\u511F\u5121\u5132\u52F5\u568E\u5680\u5690\u5685\u5687"],["c0a1","\u568F\u58D5\u58D3\u58D1\u58CE\u5B30\u5B2A\u5B24\u5B7A\u5C37\u5C68\u5DBC\u5DBA\u5DBD\u5DB8\u5E6B\u5F4C\u5FBD\u61C9\u61C2\u61C7\u61E6\u61CB\u6232\u6234\u64CE\u64CA\u64D8\u64E0\u64F0\u64E6\u64EC\u64F1\u64E2\u64ED\u6582\u6583\u66D9\u66D6\u6A80\u6A94\u6A84\u6AA2\u6A9C\u6ADB\u6AA3\u6A7E\u6A97\u6A90\u6AA0\u6B5C\u6BAE\u6BDA\u6C08\u6FD8\u6FF1\u6FDF\u6FE0\u6FDB\u6FE4\u6FEB\u6FEF\u6F80\u6FEC\u6FE1\u6FE9\u6FD5\u6FEE\u6FF0\u71E7\u71DF\u71EE\u71E6\u71E5\u71ED\u71EC\u71F4\u71E0\u7235\u7246\u7370\u7372\u74A9\u74B0\u74A6\u74A8\u7646\u7642\u764C\u76EA\u77B3\u77AA\u77B0\u77AC"],["c140","\u77A7\u77AD\u77EF\u78F7\u78FA\u78F4\u78EF\u7901\u79A7\u79AA\u7A57\u7ABF\u7C07\u7C0D\u7BFE\u7BF7\u7C0C\u7BE0\u7CE0\u7CDC\u7CDE\u7CE2\u7CDF\u7CD9\u7CDD\u7E2E\u7E3E\u7E46\u7E37\u7E32\u7E43\u7E2B\u7E3D\u7E31\u7E45\u7E41\u7E34\u7E39\u7E48\u7E35\u7E3F\u7E2F\u7F44\u7FF3\u7FFC\u8071\u8072\u8070\u806F\u8073\u81C6\u81C3\u81BA\u81C2\u81C0\u81BF\u81BD\u81C9\u81BE\u81E8\u8209\u8271\u85AA"],["c1a1","\u8584\u857E\u859C\u8591\u8594\u85AF\u859B\u8587\u85A8\u858A\u8667\u87C0\u87D1\u87B3\u87D2\u87C6\u87AB\u87BB\u87BA\u87C8\u87CB\u893B\u8936\u8944\u8938\u893D\u89AC\u8B0E\u8B17\u8B19\u8B1B\u8B0A\u8B20\u8B1D\u8B04\u8B10\u8C41\u8C3F\u8C73\u8CFA\u8CFD\u8CFC\u8CF8\u8CFB\u8DA8\u8E49\u8E4B\u8E48\u8E4A\u8F44\u8F3E\u8F42\u8F45\u8F3F\u907F\u907D\u9084\u9081\u9082\u9080\u9139\u91A3\u919E\u919C\u934D\u9382\u9328\u9375\u934A\u9365\u934B\u9318\u937E\u936C\u935B\u9370\u935A\u9354\u95CA\u95CB\u95CC\u95C8\u95C6\u96B1\u96B8\u96D6\u971C\u971E\u97A0\u97D3\u9846\u98B6\u9935\u9A01"],["c240","\u99FF\u9BAE\u9BAB\u9BAA\u9BAD\u9D3B\u9D3F\u9E8B\u9ECF\u9EDE\u9EDC\u9EDD\u9EDB\u9F3E\u9F4B\u53E2\u5695\u56AE\u58D9\u58D8\u5B38\u5F5D\u61E3\u6233\u64F4\u64F2\u64FE\u6506\u64FA\u64FB\u64F7\u65B7\u66DC\u6726\u6AB3\u6AAC\u6AC3\u6ABB\u6AB8\u6AC2\u6AAE\u6AAF\u6B5F\u6B78\u6BAF\u7009\u700B\u6FFE\u7006\u6FFA\u7011\u700F\u71FB\u71FC\u71FE\u71F8\u7377\u7375\u74A7\u74BF\u7515\u7656\u7658"],["c2a1","\u7652\u77BD\u77BF\u77BB\u77BC\u790E\u79AE\u7A61\u7A62\u7A60\u7AC4\u7AC5\u7C2B\u7C27\u7C2A\u7C1E\u7C23\u7C21\u7CE7\u7E54\u7E55\u7E5E\u7E5A\u7E61\u7E52\u7E59\u7F48\u7FF9\u7FFB\u8077\u8076\u81CD\u81CF\u820A\u85CF\u85A9\u85CD\u85D0\u85C9\u85B0\u85BA\u85B9\u85A6\u87EF\u87EC\u87F2\u87E0\u8986\u89B2\u89F4\u8B28\u8B39\u8B2C\u8B2B\u8C50\u8D05\u8E59\u8E63\u8E66\u8E64\u8E5F\u8E55\u8EC0\u8F49\u8F4D\u9087\u9083\u9088\u91AB\u91AC\u91D0\u9394\u938A\u9396\u93A2\u93B3\u93AE\u93AC\u93B0\u9398\u939A\u9397\u95D4\u95D6\u95D0\u95D5\u96E2\u96DC\u96D9\u96DB\u96DE\u9724\u97A3\u97A6"],["c340","\u97AD\u97F9\u984D\u984F\u984C\u984E\u9853\u98BA\u993E\u993F\u993D\u992E\u99A5\u9A0E\u9AC1\u9B03\u9B06\u9B4F\u9B4E\u9B4D\u9BCA\u9BC9\u9BFD\u9BC8\u9BC0\u9D51\u9D5D\u9D60\u9EE0\u9F15\u9F2C\u5133\u56A5\u58DE\u58DF\u58E2\u5BF5\u9F90\u5EEC\u61F2\u61F7\u61F6\u61F5\u6500\u650F\u66E0\u66DD\u6AE5\u6ADD\u6ADA\u6AD3\u701B\u701F\u7028\u701A\u701D\u7015\u7018\u7206\u720D\u7258\u72A2\u7378"],["c3a1","\u737A\u74BD\u74CA\u74E3\u7587\u7586\u765F\u7661\u77C7\u7919\u79B1\u7A6B\u7A69\u7C3E\u7C3F\u7C38\u7C3D\u7C37\u7C40\u7E6B\u7E6D\u7E79\u7E69\u7E6A\u7F85\u7E73\u7FB6\u7FB9\u7FB8\u81D8\u85E9\u85DD\u85EA\u85D5\u85E4\u85E5\u85F7\u87FB\u8805\u880D\u87F9\u87FE\u8960\u895F\u8956\u895E\u8B41\u8B5C\u8B58\u8B49\u8B5A\u8B4E\u8B4F\u8B46\u8B59\u8D08\u8D0A\u8E7C\u8E72\u8E87\u8E76\u8E6C\u8E7A\u8E74\u8F54\u8F4E\u8FAD\u908A\u908B\u91B1\u91AE\u93E1\u93D1\u93DF\u93C3\u93C8\u93DC\u93DD\u93D6\u93E2\u93CD\u93D8\u93E4\u93D7\u93E8\u95DC\u96B4\u96E3\u972A\u9727\u9761\u97DC\u97FB\u985E"],["c440","\u9858\u985B\u98BC\u9945\u9949\u9A16\u9A19\u9B0D\u9BE8\u9BE7\u9BD6\u9BDB\u9D89\u9D61\u9D72\u9D6A\u9D6C\u9E92\u9E97\u9E93\u9EB4\u52F8\u56A8\u56B7\u56B6\u56B4\u56BC\u58E4\u5B40\u5B43\u5B7D\u5BF6\u5DC9\u61F8\u61FA\u6518\u6514\u6519\u66E6\u6727\u6AEC\u703E\u7030\u7032\u7210\u737B\u74CF\u7662\u7665\u7926\u792A\u792C\u792B\u7AC7\u7AF6\u7C4C\u7C43\u7C4D\u7CEF\u7CF0\u8FAE\u7E7D\u7E7C"],["c4a1","\u7E82\u7F4C\u8000\u81DA\u8266\u85FB\u85F9\u8611\u85FA\u8606\u860B\u8607\u860A\u8814\u8815\u8964\u89BA\u89F8\u8B70\u8B6C\u8B66\u8B6F\u8B5F\u8B6B\u8D0F\u8D0D\u8E89\u8E81\u8E85\u8E82\u91B4\u91CB\u9418\u9403\u93FD\u95E1\u9730\u98C4\u9952\u9951\u99A8\u9A2B\u9A30\u9A37\u9A35\u9C13\u9C0D\u9E79\u9EB5\u9EE8\u9F2F\u9F5F\u9F63\u9F61\u5137\u5138\u56C1\u56C0\u56C2\u5914\u5C6C\u5DCD\u61FC\u61FE\u651D\u651C\u6595\u66E9\u6AFB\u6B04\u6AFA\u6BB2\u704C\u721B\u72A7\u74D6\u74D4\u7669\u77D3\u7C50\u7E8F\u7E8C\u7FBC\u8617\u862D\u861A\u8823\u8822\u8821\u881F\u896A\u896C\u89BD\u8B74"],["c540","\u8B77\u8B7D\u8D13\u8E8A\u8E8D\u8E8B\u8F5F\u8FAF\u91BA\u942E\u9433\u9435\u943A\u9438\u9432\u942B\u95E2\u9738\u9739\u9732\u97FF\u9867\u9865\u9957\u9A45\u9A43\u9A40\u9A3E\u9ACF\u9B54\u9B51\u9C2D\u9C25\u9DAF\u9DB4\u9DC2\u9DB8\u9E9D\u9EEF\u9F19\u9F5C\u9F66\u9F67\u513C\u513B\u56C8\u56CA\u56C9\u5B7F\u5DD4\u5DD2\u5F4E\u61FF\u6524\u6B0A\u6B61\u7051\u7058\u7380\u74E4\u758A\u766E\u766C"],["c5a1","\u79B3\u7C60\u7C5F\u807E\u807D\u81DF\u8972\u896F\u89FC\u8B80\u8D16\u8D17\u8E91\u8E93\u8F61\u9148\u9444\u9451\u9452\u973D\u973E\u97C3\u97C1\u986B\u9955\u9A55\u9A4D\u9AD2\u9B1A\u9C49\u9C31\u9C3E\u9C3B\u9DD3\u9DD7\u9F34\u9F6C\u9F6A\u9F94\u56CC\u5DD6\u6200\u6523\u652B\u652A\u66EC\u6B10\u74DA\u7ACA\u7C64\u7C63\u7C65\u7E93\u7E96\u7E94\u81E2\u8638\u863F\u8831\u8B8A\u9090\u908F\u9463\u9460\u9464\u9768\u986F\u995C\u9A5A\u9A5B\u9A57\u9AD3\u9AD4\u9AD1\u9C54\u9C57\u9C56\u9DE5\u9E9F\u9EF4\u56D1\u58E9\u652C\u705E\u7671\u7672\u77D7\u7F50\u7F88\u8836\u8839\u8862\u8B93\u8B92"],["c640","\u8B96\u8277\u8D1B\u91C0\u946A\u9742\u9748\u9744\u97C6\u9870\u9A5F\u9B22\u9B58\u9C5F\u9DF9\u9DFA\u9E7C\u9E7D\u9F07\u9F77\u9F72\u5EF3\u6B16\u7063\u7C6C\u7C6E\u883B\u89C0\u8EA1\u91C1\u9472\u9470\u9871\u995E\u9AD6\u9B23\u9ECC\u7064\u77DA\u8B9A\u9477\u97C9\u9A62\u9A65\u7E9C\u8B9C\u8EAA\u91C5\u947D\u947E\u947C\u9C77\u9C78\u9EF7\u8C54\u947F\u9E1A\u7228\u9A6A\u9B31\u9E1B\u9E1E\u7C72"],["c940","\u4E42\u4E5C\u51F5\u531A\u5382\u4E07\u4E0C\u4E47\u4E8D\u56D7\uFA0C\u5C6E\u5F73\u4E0F\u5187\u4E0E\u4E2E\u4E93\u4EC2\u4EC9\u4EC8\u5198\u52FC\u536C\u53B9\u5720\u5903\u592C\u5C10\u5DFF\u65E1\u6BB3\u6BCC\u6C14\u723F\u4E31\u4E3C\u4EE8\u4EDC\u4EE9\u4EE1\u4EDD\u4EDA\u520C\u531C\u534C\u5722\u5723\u5917\u592F\u5B81\u5B84\u5C12\u5C3B\u5C74\u5C73\u5E04\u5E80\u5E82\u5FC9\u6209\u6250\u6C15"],["c9a1","\u6C36\u6C43\u6C3F\u6C3B\u72AE\u72B0\u738A\u79B8\u808A\u961E\u4F0E\u4F18\u4F2C\u4EF5\u4F14\u4EF1\u4F00\u4EF7\u4F08\u4F1D\u4F02\u4F05\u4F22\u4F13\u4F04\u4EF4\u4F12\u51B1\u5213\u5209\u5210\u52A6\u5322\u531F\u534D\u538A\u5407\u56E1\u56DF\u572E\u572A\u5734\u593C\u5980\u597C\u5985\u597B\u597E\u5977\u597F\u5B56\u5C15\u5C25\u5C7C\u5C7A\u5C7B\u5C7E\u5DDF\u5E75\u5E84\u5F02\u5F1A\u5F74\u5FD5\u5FD4\u5FCF\u625C\u625E\u6264\u6261\u6266\u6262\u6259\u6260\u625A\u6265\u65EF\u65EE\u673E\u6739\u6738\u673B\u673A\u673F\u673C\u6733\u6C18\u6C46\u6C52\u6C5C\u6C4F\u6C4A\u6C54\u6C4B"],["ca40","\u6C4C\u7071\u725E\u72B4\u72B5\u738E\u752A\u767F\u7A75\u7F51\u8278\u827C\u8280\u827D\u827F\u864D\u897E\u9099\u9097\u9098\u909B\u9094\u9622\u9624\u9620\u9623\u4F56\u4F3B\u4F62\u4F49\u4F53\u4F64\u4F3E\u4F67\u4F52\u4F5F\u4F41\u4F58\u4F2D\u4F33\u4F3F\u4F61\u518F\u51B9\u521C\u521E\u5221\u52AD\u52AE\u5309\u5363\u5372\u538E\u538F\u5430\u5437\u542A\u5454\u5445\u5419\u541C\u5425\u5418"],["caa1","\u543D\u544F\u5441\u5428\u5424\u5447\u56EE\u56E7\u56E5\u5741\u5745\u574C\u5749\u574B\u5752\u5906\u5940\u59A6\u5998\u59A0\u5997\u598E\u59A2\u5990\u598F\u59A7\u59A1\u5B8E\u5B92\u5C28\u5C2A\u5C8D\u5C8F\u5C88\u5C8B\u5C89\u5C92\u5C8A\u5C86\u5C93\u5C95\u5DE0\u5E0A\u5E0E\u5E8B\u5E89\u5E8C\u5E88\u5E8D\u5F05\u5F1D\u5F78\u5F76\u5FD2\u5FD1\u5FD0\u5FED\u5FE8\u5FEE\u5FF3\u5FE1\u5FE4\u5FE3\u5FFA\u5FEF\u5FF7\u5FFB\u6000\u5FF4\u623A\u6283\u628C\u628E\u628F\u6294\u6287\u6271\u627B\u627A\u6270\u6281\u6288\u6277\u627D\u6272\u6274\u6537\u65F0\u65F4\u65F3\u65F2\u65F5\u6745\u6747"],["cb40","\u6759\u6755\u674C\u6748\u675D\u674D\u675A\u674B\u6BD0\u6C19\u6C1A\u6C78\u6C67\u6C6B\u6C84\u6C8B\u6C8F\u6C71\u6C6F\u6C69\u6C9A\u6C6D\u6C87\u6C95\u6C9C\u6C66\u6C73\u6C65\u6C7B\u6C8E\u7074\u707A\u7263\u72BF\u72BD\u72C3\u72C6\u72C1\u72BA\u72C5\u7395\u7397\u7393\u7394\u7392\u753A\u7539\u7594\u7595\u7681\u793D\u8034\u8095\u8099\u8090\u8092\u809C\u8290\u828F\u8285\u828E\u8291\u8293"],["cba1","\u828A\u8283\u8284\u8C78\u8FC9\u8FBF\u909F\u90A1\u90A5\u909E\u90A7\u90A0\u9630\u9628\u962F\u962D\u4E33\u4F98\u4F7C\u4F85\u4F7D\u4F80\u4F87\u4F76\u4F74\u4F89\u4F84\u4F77\u4F4C\u4F97\u4F6A\u4F9A\u4F79\u4F81\u4F78\u4F90\u4F9C\u4F94\u4F9E\u4F92\u4F82\u4F95\u4F6B\u4F6E\u519E\u51BC\u51BE\u5235\u5232\u5233\u5246\u5231\u52BC\u530A\u530B\u533C\u5392\u5394\u5487\u547F\u5481\u5491\u5482\u5488\u546B\u547A\u547E\u5465\u546C\u5474\u5466\u548D\u546F\u5461\u5460\u5498\u5463\u5467\u5464\u56F7\u56F9\u576F\u5772\u576D\u576B\u5771\u5770\u5776\u5780\u5775\u577B\u5773\u5774\u5762"],["cc40","\u5768\u577D\u590C\u5945\u59B5\u59BA\u59CF\u59CE\u59B2\u59CC\u59C1\u59B6\u59BC\u59C3\u59D6\u59B1\u59BD\u59C0\u59C8\u59B4\u59C7\u5B62\u5B65\u5B93\u5B95\u5C44\u5C47\u5CAE\u5CA4\u5CA0\u5CB5\u5CAF\u5CA8\u5CAC\u5C9F\u5CA3\u5CAD\u5CA2\u5CAA\u5CA7\u5C9D\u5CA5\u5CB6\u5CB0\u5CA6\u5E17\u5E14\u5E19\u5F28\u5F22\u5F23\u5F24\u5F54\u5F82\u5F7E\u5F7D\u5FDE\u5FE5\u602D\u6026\u6019\u6032\u600B"],["cca1","\u6034\u600A\u6017\u6033\u601A\u601E\u602C\u6022\u600D\u6010\u602E\u6013\u6011\u600C\u6009\u601C\u6214\u623D\u62AD\u62B4\u62D1\u62BE\u62AA\u62B6\u62CA\u62AE\u62B3\u62AF\u62BB\u62A9\u62B0\u62B8\u653D\u65A8\u65BB\u6609\u65FC\u6604\u6612\u6608\u65FB\u6603\u660B\u660D\u6605\u65FD\u6611\u6610\u66F6\u670A\u6785\u676C\u678E\u6792\u6776\u677B\u6798\u6786\u6784\u6774\u678D\u678C\u677A\u679F\u6791\u6799\u6783\u677D\u6781\u6778\u6779\u6794\u6B25\u6B80\u6B7E\u6BDE\u6C1D\u6C93\u6CEC\u6CEB\u6CEE\u6CD9\u6CB6\u6CD4\u6CAD\u6CE7\u6CB7\u6CD0\u6CC2\u6CBA\u6CC3\u6CC6\u6CED\u6CF2"],["cd40","\u6CD2\u6CDD\u6CB4\u6C8A\u6C9D\u6C80\u6CDE\u6CC0\u6D30\u6CCD\u6CC7\u6CB0\u6CF9\u6CCF\u6CE9\u6CD1\u7094\u7098\u7085\u7093\u7086\u7084\u7091\u7096\u7082\u709A\u7083\u726A\u72D6\u72CB\u72D8\u72C9\u72DC\u72D2\u72D4\u72DA\u72CC\u72D1\u73A4\u73A1\u73AD\u73A6\u73A2\u73A0\u73AC\u739D\u74DD\u74E8\u753F\u7540\u753E\u758C\u7598\u76AF\u76F3\u76F1\u76F0\u76F5\u77F8\u77FC\u77F9\u77FB\u77FA"],["cda1","\u77F7\u7942\u793F\u79C5\u7A78\u7A7B\u7AFB\u7C75\u7CFD\u8035\u808F\u80AE\u80A3\u80B8\u80B5\u80AD\u8220\u82A0\u82C0\u82AB\u829A\u8298\u829B\u82B5\u82A7\u82AE\u82BC\u829E\u82BA\u82B4\u82A8\u82A1\u82A9\u82C2\u82A4\u82C3\u82B6\u82A2\u8670\u866F\u866D\u866E\u8C56\u8FD2\u8FCB\u8FD3\u8FCD\u8FD6\u8FD5\u8FD7\u90B2\u90B4\u90AF\u90B3\u90B0\u9639\u963D\u963C\u963A\u9643\u4FCD\u4FC5\u4FD3\u4FB2\u4FC9\u4FCB\u4FC1\u4FD4\u4FDC\u4FD9\u4FBB\u4FB3\u4FDB\u4FC7\u4FD6\u4FBA\u4FC0\u4FB9\u4FEC\u5244\u5249\u52C0\u52C2\u533D\u537C\u5397\u5396\u5399\u5398\u54BA\u54A1\u54AD\u54A5\u54CF"],["ce40","\u54C3\u830D\u54B7\u54AE\u54D6\u54B6\u54C5\u54C6\u54A0\u5470\u54BC\u54A2\u54BE\u5472\u54DE\u54B0\u57B5\u579E\u579F\u57A4\u578C\u5797\u579D\u579B\u5794\u5798\u578F\u5799\u57A5\u579A\u5795\u58F4\u590D\u5953\u59E1\u59DE\u59EE\u5A00\u59F1\u59DD\u59FA\u59FD\u59FC\u59F6\u59E4\u59F2\u59F7\u59DB\u59E9\u59F3\u59F5\u59E0\u59FE\u59F4\u59ED\u5BA8\u5C4C\u5CD0\u5CD8\u5CCC\u5CD7\u5CCB\u5CDB"],["cea1","\u5CDE\u5CDA\u5CC9\u5CC7\u5CCA\u5CD6\u5CD3\u5CD4\u5CCF\u5CC8\u5CC6\u5CCE\u5CDF\u5CF8\u5DF9\u5E21\u5E22\u5E23\u5E20\u5E24\u5EB0\u5EA4\u5EA2\u5E9B\u5EA3\u5EA5\u5F07\u5F2E\u5F56\u5F86\u6037\u6039\u6054\u6072\u605E\u6045\u6053\u6047\u6049\u605B\u604C\u6040\u6042\u605F\u6024\u6044\u6058\u6066\u606E\u6242\u6243\u62CF\u630D\u630B\u62F5\u630E\u6303\u62EB\u62F9\u630F\u630C\u62F8\u62F6\u6300\u6313\u6314\u62FA\u6315\u62FB\u62F0\u6541\u6543\u65AA\u65BF\u6636\u6621\u6632\u6635\u661C\u6626\u6622\u6633\u662B\u663A\u661D\u6634\u6639\u662E\u670F\u6710\u67C1\u67F2\u67C8\u67BA"],["cf40","\u67DC\u67BB\u67F8\u67D8\u67C0\u67B7\u67C5\u67EB\u67E4\u67DF\u67B5\u67CD\u67B3\u67F7\u67F6\u67EE\u67E3\u67C2\u67B9\u67CE\u67E7\u67F0\u67B2\u67FC\u67C6\u67ED\u67CC\u67AE\u67E6\u67DB\u67FA\u67C9\u67CA\u67C3\u67EA\u67CB\u6B28\u6B82\u6B84\u6BB6\u6BD6\u6BD8\u6BE0\u6C20\u6C21\u6D28\u6D34\u6D2D\u6D1F\u6D3C\u6D3F\u6D12\u6D0A\u6CDA\u6D33\u6D04\u6D19\u6D3A\u6D1A\u6D11\u6D00\u6D1D\u6D42"],["cfa1","\u6D01\u6D18\u6D37\u6D03\u6D0F\u6D40\u6D07\u6D20\u6D2C\u6D08\u6D22\u6D09\u6D10\u70B7\u709F\u70BE\u70B1\u70B0\u70A1\u70B4\u70B5\u70A9\u7241\u7249\u724A\u726C\u7270\u7273\u726E\u72CA\u72E4\u72E8\u72EB\u72DF\u72EA\u72E6\u72E3\u7385\u73CC\u73C2\u73C8\u73C5\u73B9\u73B6\u73B5\u73B4\u73EB\u73BF\u73C7\u73BE\u73C3\u73C6\u73B8\u73CB\u74EC\u74EE\u752E\u7547\u7548\u75A7\u75AA\u7679\u76C4\u7708\u7703\u7704\u7705\u770A\u76F7\u76FB\u76FA\u77E7\u77E8\u7806\u7811\u7812\u7805\u7810\u780F\u780E\u7809\u7803\u7813\u794A\u794C\u794B\u7945\u7944\u79D5\u79CD\u79CF\u79D6\u79CE\u7A80"],["d040","\u7A7E\u7AD1\u7B00\u7B01\u7C7A\u7C78\u7C79\u7C7F\u7C80\u7C81\u7D03\u7D08\u7D01\u7F58\u7F91\u7F8D\u7FBE\u8007\u800E\u800F\u8014\u8037\u80D8\u80C7\u80E0\u80D1\u80C8\u80C2\u80D0\u80C5\u80E3\u80D9\u80DC\u80CA\u80D5\u80C9\u80CF\u80D7\u80E6\u80CD\u81FF\u8221\u8294\u82D9\u82FE\u82F9\u8307\u82E8\u8300\u82D5\u833A\u82EB\u82D6\u82F4\u82EC\u82E1\u82F2\u82F5\u830C\u82FB\u82F6\u82F0\u82EA"],["d0a1","\u82E4\u82E0\u82FA\u82F3\u82ED\u8677\u8674\u867C\u8673\u8841\u884E\u8867\u886A\u8869\u89D3\u8A04\u8A07\u8D72\u8FE3\u8FE1\u8FEE\u8FE0\u90F1\u90BD\u90BF\u90D5\u90C5\u90BE\u90C7\u90CB\u90C8\u91D4\u91D3\u9654\u964F\u9651\u9653\u964A\u964E\u501E\u5005\u5007\u5013\u5022\u5030\u501B\u4FF5\u4FF4\u5033\u5037\u502C\u4FF6\u4FF7\u5017\u501C\u5020\u5027\u5035\u502F\u5031\u500E\u515A\u5194\u5193\u51CA\u51C4\u51C5\u51C8\u51CE\u5261\u525A\u5252\u525E\u525F\u5255\u5262\u52CD\u530E\u539E\u5526\u54E2\u5517\u5512\u54E7\u54F3\u54E4\u551A\u54FF\u5504\u5508\u54EB\u5511\u5505\u54F1"],["d140","\u550A\u54FB\u54F7\u54F8\u54E0\u550E\u5503\u550B\u5701\u5702\u57CC\u5832\u57D5\u57D2\u57BA\u57C6\u57BD\u57BC\u57B8\u57B6\u57BF\u57C7\u57D0\u57B9\u57C1\u590E\u594A\u5A19\u5A16\u5A2D\u5A2E\u5A15\u5A0F\u5A17\u5A0A\u5A1E\u5A33\u5B6C\u5BA7\u5BAD\u5BAC\u5C03\u5C56\u5C54\u5CEC\u5CFF\u5CEE\u5CF1\u5CF7\u5D00\u5CF9\u5E29\u5E28\u5EA8\u5EAE\u5EAA\u5EAC\u5F33\u5F30\u5F67\u605D\u605A\u6067"],["d1a1","\u6041\u60A2\u6088\u6080\u6092\u6081\u609D\u6083\u6095\u609B\u6097\u6087\u609C\u608E\u6219\u6246\u62F2\u6310\u6356\u632C\u6344\u6345\u6336\u6343\u63E4\u6339\u634B\u634A\u633C\u6329\u6341\u6334\u6358\u6354\u6359\u632D\u6347\u6333\u635A\u6351\u6338\u6357\u6340\u6348\u654A\u6546\u65C6\u65C3\u65C4\u65C2\u664A\u665F\u6647\u6651\u6712\u6713\u681F\u681A\u6849\u6832\u6833\u683B\u684B\u684F\u6816\u6831\u681C\u6835\u682B\u682D\u682F\u684E\u6844\u6834\u681D\u6812\u6814\u6826\u6828\u682E\u684D\u683A\u6825\u6820\u6B2C\u6B2F\u6B2D\u6B31\u6B34\u6B6D\u8082\u6B88\u6BE6\u6BE4"],["d240","\u6BE8\u6BE3\u6BE2\u6BE7\u6C25\u6D7A\u6D63\u6D64\u6D76\u6D0D\u6D61\u6D92\u6D58\u6D62\u6D6D\u6D6F\u6D91\u6D8D\u6DEF\u6D7F\u6D86\u6D5E\u6D67\u6D60\u6D97\u6D70\u6D7C\u6D5F\u6D82\u6D98\u6D2F\u6D68\u6D8B\u6D7E\u6D80\u6D84\u6D16\u6D83\u6D7B\u6D7D\u6D75\u6D90\u70DC\u70D3\u70D1\u70DD\u70CB\u7F39\u70E2\u70D7\u70D2\u70DE\u70E0\u70D4\u70CD\u70C5\u70C6\u70C7\u70DA\u70CE\u70E1\u7242\u7278"],["d2a1","\u7277\u7276\u7300\u72FA\u72F4\u72FE\u72F6\u72F3\u72FB\u7301\u73D3\u73D9\u73E5\u73D6\u73BC\u73E7\u73E3\u73E9\u73DC\u73D2\u73DB\u73D4\u73DD\u73DA\u73D7\u73D8\u73E8\u74DE\u74DF\u74F4\u74F5\u7521\u755B\u755F\u75B0\u75C1\u75BB\u75C4\u75C0\u75BF\u75B6\u75BA\u768A\u76C9\u771D\u771B\u7710\u7713\u7712\u7723\u7711\u7715\u7719\u771A\u7722\u7727\u7823\u782C\u7822\u7835\u782F\u7828\u782E\u782B\u7821\u7829\u7833\u782A\u7831\u7954\u795B\u794F\u795C\u7953\u7952\u7951\u79EB\u79EC\u79E0\u79EE\u79ED\u79EA\u79DC\u79DE\u79DD\u7A86\u7A89\u7A85\u7A8B\u7A8C\u7A8A\u7A87\u7AD8\u7B10"],["d340","\u7B04\u7B13\u7B05\u7B0F\u7B08\u7B0A\u7B0E\u7B09\u7B12\u7C84\u7C91\u7C8A\u7C8C\u7C88\u7C8D\u7C85\u7D1E\u7D1D\u7D11\u7D0E\u7D18\u7D16\u7D13\u7D1F\u7D12\u7D0F\u7D0C\u7F5C\u7F61\u7F5E\u7F60\u7F5D\u7F5B\u7F96\u7F92\u7FC3\u7FC2\u7FC0\u8016\u803E\u8039\u80FA\u80F2\u80F9\u80F5\u8101\u80FB\u8100\u8201\u822F\u8225\u8333\u832D\u8344\u8319\u8351\u8325\u8356\u833F\u8341\u8326\u831C\u8322"],["d3a1","\u8342\u834E\u831B\u832A\u8308\u833C\u834D\u8316\u8324\u8320\u8337\u832F\u8329\u8347\u8345\u834C\u8353\u831E\u832C\u834B\u8327\u8348\u8653\u8652\u86A2\u86A8\u8696\u868D\u8691\u869E\u8687\u8697\u8686\u868B\u869A\u8685\u86A5\u8699\u86A1\u86A7\u8695\u8698\u868E\u869D\u8690\u8694\u8843\u8844\u886D\u8875\u8876\u8872\u8880\u8871\u887F\u886F\u8883\u887E\u8874\u887C\u8A12\u8C47\u8C57\u8C7B\u8CA4\u8CA3\u8D76\u8D78\u8DB5\u8DB7\u8DB6\u8ED1\u8ED3\u8FFE\u8FF5\u9002\u8FFF\u8FFB\u9004\u8FFC\u8FF6\u90D6\u90E0\u90D9\u90DA\u90E3\u90DF\u90E5\u90D8\u90DB\u90D7\u90DC\u90E4\u9150"],["d440","\u914E\u914F\u91D5\u91E2\u91DA\u965C\u965F\u96BC\u98E3\u9ADF\u9B2F\u4E7F\u5070\u506A\u5061\u505E\u5060\u5053\u504B\u505D\u5072\u5048\u504D\u5041\u505B\u504A\u5062\u5015\u5045\u505F\u5069\u506B\u5063\u5064\u5046\u5040\u506E\u5073\u5057\u5051\u51D0\u526B\u526D\u526C\u526E\u52D6\u52D3\u532D\u539C\u5575\u5576\u553C\u554D\u5550\u5534\u552A\u5551\u5562\u5536\u5535\u5530\u5552\u5545"],["d4a1","\u550C\u5532\u5565\u554E\u5539\u5548\u552D\u553B\u5540\u554B\u570A\u5707\u57FB\u5814\u57E2\u57F6\u57DC\u57F4\u5800\u57ED\u57FD\u5808\u57F8\u580B\u57F3\u57CF\u5807\u57EE\u57E3\u57F2\u57E5\u57EC\u57E1\u580E\u57FC\u5810\u57E7\u5801\u580C\u57F1\u57E9\u57F0\u580D\u5804\u595C\u5A60\u5A58\u5A55\u5A67\u5A5E\u5A38\u5A35\u5A6D\u5A50\u5A5F\u5A65\u5A6C\u5A53\u5A64\u5A57\u5A43\u5A5D\u5A52\u5A44\u5A5B\u5A48\u5A8E\u5A3E\u5A4D\u5A39\u5A4C\u5A70\u5A69\u5A47\u5A51\u5A56\u5A42\u5A5C\u5B72\u5B6E\u5BC1\u5BC0\u5C59\u5D1E\u5D0B\u5D1D\u5D1A\u5D20\u5D0C\u5D28\u5D0D\u5D26\u5D25\u5D0F"],["d540","\u5D30\u5D12\u5D23\u5D1F\u5D2E\u5E3E\u5E34\u5EB1\u5EB4\u5EB9\u5EB2\u5EB3\u5F36\u5F38\u5F9B\u5F96\u5F9F\u608A\u6090\u6086\u60BE\u60B0\u60BA\u60D3\u60D4\u60CF\u60E4\u60D9\u60DD\u60C8\u60B1\u60DB\u60B7\u60CA\u60BF\u60C3\u60CD\u60C0\u6332\u6365\u638A\u6382\u637D\u63BD\u639E\u63AD\u639D\u6397\u63AB\u638E\u636F\u6387\u6390\u636E\u63AF\u6375\u639C\u636D\u63AE\u637C\u63A4\u633B\u639F"],["d5a1","\u6378\u6385\u6381\u6391\u638D\u6370\u6553\u65CD\u6665\u6661\u665B\u6659\u665C\u6662\u6718\u6879\u6887\u6890\u689C\u686D\u686E\u68AE\u68AB\u6956\u686F\u68A3\u68AC\u68A9\u6875\u6874\u68B2\u688F\u6877\u6892\u687C\u686B\u6872\u68AA\u6880\u6871\u687E\u689B\u6896\u688B\u68A0\u6889\u68A4\u6878\u687B\u6891\u688C\u688A\u687D\u6B36\u6B33\u6B37\u6B38\u6B91\u6B8F\u6B8D\u6B8E\u6B8C\u6C2A\u6DC0\u6DAB\u6DB4\u6DB3\u6E74\u6DAC\u6DE9\u6DE2\u6DB7\u6DF6\u6DD4\u6E00\u6DC8\u6DE0\u6DDF\u6DD6\u6DBE\u6DE5\u6DDC\u6DDD\u6DDB\u6DF4\u6DCA\u6DBD\u6DED\u6DF0\u6DBA\u6DD5\u6DC2\u6DCF\u6DC9"],["d640","\u6DD0\u6DF2\u6DD3\u6DFD\u6DD7\u6DCD\u6DE3\u6DBB\u70FA\u710D\u70F7\u7117\u70F4\u710C\u70F0\u7104\u70F3\u7110\u70FC\u70FF\u7106\u7113\u7100\u70F8\u70F6\u710B\u7102\u710E\u727E\u727B\u727C\u727F\u731D\u7317\u7307\u7311\u7318\u730A\u7308\u72FF\u730F\u731E\u7388\u73F6\u73F8\u73F5\u7404\u7401\u73FD\u7407\u7400\u73FA\u73FC\u73FF\u740C\u740B\u73F4\u7408\u7564\u7563\u75CE\u75D2\u75CF"],["d6a1","\u75CB\u75CC\u75D1\u75D0\u768F\u7689\u76D3\u7739\u772F\u772D\u7731\u7732\u7734\u7733\u773D\u7725\u773B\u7735\u7848\u7852\u7849\u784D\u784A\u784C\u7826\u7845\u7850\u7964\u7967\u7969\u796A\u7963\u796B\u7961\u79BB\u79FA\u79F8\u79F6\u79F7\u7A8F\u7A94\u7A90\u7B35\u7B47\u7B34\u7B25\u7B30\u7B22\u7B24\u7B33\u7B18\u7B2A\u7B1D\u7B31\u7B2B\u7B2D\u7B2F\u7B32\u7B38\u7B1A\u7B23\u7C94\u7C98\u7C96\u7CA3\u7D35\u7D3D\u7D38\u7D36\u7D3A\u7D45\u7D2C\u7D29\u7D41\u7D47\u7D3E\u7D3F\u7D4A\u7D3B\u7D28\u7F63\u7F95\u7F9C\u7F9D\u7F9B\u7FCA\u7FCB\u7FCD\u7FD0\u7FD1\u7FC7\u7FCF\u7FC9\u801F"],["d740","\u801E\u801B\u8047\u8043\u8048\u8118\u8125\u8119\u811B\u812D\u811F\u812C\u811E\u8121\u8115\u8127\u811D\u8122\u8211\u8238\u8233\u823A\u8234\u8232\u8274\u8390\u83A3\u83A8\u838D\u837A\u8373\u83A4\u8374\u838F\u8381\u8395\u8399\u8375\u8394\u83A9\u837D\u8383\u838C\u839D\u839B\u83AA\u838B\u837E\u83A5\u83AF\u8388\u8397\u83B0\u837F\u83A6\u8387\u83AE\u8376\u839A\u8659\u8656\u86BF\u86B7"],["d7a1","\u86C2\u86C1\u86C5\u86BA\u86B0\u86C8\u86B9\u86B3\u86B8\u86CC\u86B4\u86BB\u86BC\u86C3\u86BD\u86BE\u8852\u8889\u8895\u88A8\u88A2\u88AA\u889A\u8891\u88A1\u889F\u8898\u88A7\u8899\u889B\u8897\u88A4\u88AC\u888C\u8893\u888E\u8982\u89D6\u89D9\u89D5\u8A30\u8A27\u8A2C\u8A1E\u8C39\u8C3B\u8C5C\u8C5D\u8C7D\u8CA5\u8D7D\u8D7B\u8D79\u8DBC\u8DC2\u8DB9\u8DBF\u8DC1\u8ED8\u8EDE\u8EDD\u8EDC\u8ED7\u8EE0\u8EE1\u9024\u900B\u9011\u901C\u900C\u9021\u90EF\u90EA\u90F0\u90F4\u90F2\u90F3\u90D4\u90EB\u90EC\u90E9\u9156\u9158\u915A\u9153\u9155\u91EC\u91F4\u91F1\u91F3\u91F8\u91E4\u91F9\u91EA"],["d840","\u91EB\u91F7\u91E8\u91EE\u957A\u9586\u9588\u967C\u966D\u966B\u9671\u966F\u96BF\u976A\u9804\u98E5\u9997\u509B\u5095\u5094\u509E\u508B\u50A3\u5083\u508C\u508E\u509D\u5068\u509C\u5092\u5082\u5087\u515F\u51D4\u5312\u5311\u53A4\u53A7\u5591\u55A8\u55A5\u55AD\u5577\u5645\u55A2\u5593\u5588\u558F\u55B5\u5581\u55A3\u5592\u55A4\u557D\u558C\u55A6\u557F\u5595\u55A1\u558E\u570C\u5829\u5837"],["d8a1","\u5819\u581E\u5827\u5823\u5828\u57F5\u5848\u5825\u581C\u581B\u5833\u583F\u5836\u582E\u5839\u5838\u582D\u582C\u583B\u5961\u5AAF\u5A94\u5A9F\u5A7A\u5AA2\u5A9E\u5A78\u5AA6\u5A7C\u5AA5\u5AAC\u5A95\u5AAE\u5A37\u5A84\u5A8A\u5A97\u5A83\u5A8B\u5AA9\u5A7B\u5A7D\u5A8C\u5A9C\u5A8F\u5A93\u5A9D\u5BEA\u5BCD\u5BCB\u5BD4\u5BD1\u5BCA\u5BCE\u5C0C\u5C30\u5D37\u5D43\u5D6B\u5D41\u5D4B\u5D3F\u5D35\u5D51\u5D4E\u5D55\u5D33\u5D3A\u5D52\u5D3D\u5D31\u5D59\u5D42\u5D39\u5D49\u5D38\u5D3C\u5D32\u5D36\u5D40\u5D45\u5E44\u5E41\u5F58\u5FA6\u5FA5\u5FAB\u60C9\u60B9\u60CC\u60E2\u60CE\u60C4\u6114"],["d940","\u60F2\u610A\u6116\u6105\u60F5\u6113\u60F8\u60FC\u60FE\u60C1\u6103\u6118\u611D\u6110\u60FF\u6104\u610B\u624A\u6394\u63B1\u63B0\u63CE\u63E5\u63E8\u63EF\u63C3\u649D\u63F3\u63CA\u63E0\u63F6\u63D5\u63F2\u63F5\u6461\u63DF\u63BE\u63DD\u63DC\u63C4\u63D8\u63D3\u63C2\u63C7\u63CC\u63CB\u63C8\u63F0\u63D7\u63D9\u6532\u6567\u656A\u6564\u655C\u6568\u6565\u658C\u659D\u659E\u65AE\u65D0\u65D2"],["d9a1","\u667C\u666C\u667B\u6680\u6671\u6679\u666A\u6672\u6701\u690C\u68D3\u6904\u68DC\u692A\u68EC\u68EA\u68F1\u690F\u68D6\u68F7\u68EB\u68E4\u68F6\u6913\u6910\u68F3\u68E1\u6907\u68CC\u6908\u6970\u68B4\u6911\u68EF\u68C6\u6914\u68F8\u68D0\u68FD\u68FC\u68E8\u690B\u690A\u6917\u68CE\u68C8\u68DD\u68DE\u68E6\u68F4\u68D1\u6906\u68D4\u68E9\u6915\u6925\u68C7\u6B39\u6B3B\u6B3F\u6B3C\u6B94\u6B97\u6B99\u6B95\u6BBD\u6BF0\u6BF2\u6BF3\u6C30\u6DFC\u6E46\u6E47\u6E1F\u6E49\u6E88\u6E3C\u6E3D\u6E45\u6E62\u6E2B\u6E3F\u6E41\u6E5D\u6E73\u6E1C\u6E33\u6E4B\u6E40\u6E51\u6E3B\u6E03\u6E2E\u6E5E"],["da40","\u6E68\u6E5C\u6E61\u6E31\u6E28\u6E60\u6E71\u6E6B\u6E39\u6E22\u6E30\u6E53\u6E65\u6E27\u6E78\u6E64\u6E77\u6E55\u6E79\u6E52\u6E66\u6E35\u6E36\u6E5A\u7120\u711E\u712F\u70FB\u712E\u7131\u7123\u7125\u7122\u7132\u711F\u7128\u713A\u711B\u724B\u725A\u7288\u7289\u7286\u7285\u728B\u7312\u730B\u7330\u7322\u7331\u7333\u7327\u7332\u732D\u7326\u7323\u7335\u730C\u742E\u742C\u7430\u742B\u7416"],["daa1","\u741A\u7421\u742D\u7431\u7424\u7423\u741D\u7429\u7420\u7432\u74FB\u752F\u756F\u756C\u75E7\u75DA\u75E1\u75E6\u75DD\u75DF\u75E4\u75D7\u7695\u7692\u76DA\u7746\u7747\u7744\u774D\u7745\u774A\u774E\u774B\u774C\u77DE\u77EC\u7860\u7864\u7865\u785C\u786D\u7871\u786A\u786E\u7870\u7869\u7868\u785E\u7862\u7974\u7973\u7972\u7970\u7A02\u7A0A\u7A03\u7A0C\u7A04\u7A99\u7AE6\u7AE4\u7B4A\u7B3B\u7B44\u7B48\u7B4C\u7B4E\u7B40\u7B58\u7B45\u7CA2\u7C9E\u7CA8\u7CA1\u7D58\u7D6F\u7D63\u7D53\u7D56\u7D67\u7D6A\u7D4F\u7D6D\u7D5C\u7D6B\u7D52\u7D54\u7D69\u7D51\u7D5F\u7D4E\u7F3E\u7F3F\u7F65"],["db40","\u7F66\u7FA2\u7FA0\u7FA1\u7FD7\u8051\u804F\u8050\u80FE\u80D4\u8143\u814A\u8152\u814F\u8147\u813D\u814D\u813A\u81E6\u81EE\u81F7\u81F8\u81F9\u8204\u823C\u823D\u823F\u8275\u833B\u83CF\u83F9\u8423\u83C0\u83E8\u8412\u83E7\u83E4\u83FC\u83F6\u8410\u83C6\u83C8\u83EB\u83E3\u83BF\u8401\u83DD\u83E5\u83D8\u83FF\u83E1\u83CB\u83CE\u83D6\u83F5\u83C9\u8409\u840F\u83DE\u8411\u8406\u83C2\u83F3"],["dba1","\u83D5\u83FA\u83C7\u83D1\u83EA\u8413\u83C3\u83EC\u83EE\u83C4\u83FB\u83D7\u83E2\u841B\u83DB\u83FE\u86D8\u86E2\u86E6\u86D3\u86E3\u86DA\u86EA\u86DD\u86EB\u86DC\u86EC\u86E9\u86D7\u86E8\u86D1\u8848\u8856\u8855\u88BA\u88D7\u88B9\u88B8\u88C0\u88BE\u88B6\u88BC\u88B7\u88BD\u88B2\u8901\u88C9\u8995\u8998\u8997\u89DD\u89DA\u89DB\u8A4E\u8A4D\u8A39\u8A59\u8A40\u8A57\u8A58\u8A44\u8A45\u8A52\u8A48\u8A51\u8A4A\u8A4C\u8A4F\u8C5F\u8C81\u8C80\u8CBA\u8CBE\u8CB0\u8CB9\u8CB5\u8D84\u8D80\u8D89\u8DD8\u8DD3\u8DCD\u8DC7\u8DD6\u8DDC\u8DCF\u8DD5\u8DD9\u8DC8\u8DD7\u8DC5\u8EEF\u8EF7\u8EFA"],["dc40","\u8EF9\u8EE6\u8EEE\u8EE5\u8EF5\u8EE7\u8EE8\u8EF6\u8EEB\u8EF1\u8EEC\u8EF4\u8EE9\u902D\u9034\u902F\u9106\u912C\u9104\u90FF\u90FC\u9108\u90F9\u90FB\u9101\u9100\u9107\u9105\u9103\u9161\u9164\u915F\u9162\u9160\u9201\u920A\u9225\u9203\u921A\u9226\u920F\u920C\u9200\u9212\u91FF\u91FD\u9206\u9204\u9227\u9202\u921C\u9224\u9219\u9217\u9205\u9216\u957B\u958D\u958C\u9590\u9687\u967E\u9688"],["dca1","\u9689\u9683\u9680\u96C2\u96C8\u96C3\u96F1\u96F0\u976C\u9770\u976E\u9807\u98A9\u98EB\u9CE6\u9EF9\u4E83\u4E84\u4EB6\u50BD\u50BF\u50C6\u50AE\u50C4\u50CA\u50B4\u50C8\u50C2\u50B0\u50C1\u50BA\u50B1\u50CB\u50C9\u50B6\u50B8\u51D7\u527A\u5278\u527B\u527C\u55C3\u55DB\u55CC\u55D0\u55CB\u55CA\u55DD\u55C0\u55D4\u55C4\u55E9\u55BF\u55D2\u558D\u55CF\u55D5\u55E2\u55D6\u55C8\u55F2\u55CD\u55D9\u55C2\u5714\u5853\u5868\u5864\u584F\u584D\u5849\u586F\u5855\u584E\u585D\u5859\u5865\u585B\u583D\u5863\u5871\u58FC\u5AC7\u5AC4\u5ACB\u5ABA\u5AB8\u5AB1\u5AB5\u5AB0\u5ABF\u5AC8\u5ABB\u5AC6"],["dd40","\u5AB7\u5AC0\u5ACA\u5AB4\u5AB6\u5ACD\u5AB9\u5A90\u5BD6\u5BD8\u5BD9\u5C1F\u5C33\u5D71\u5D63\u5D4A\u5D65\u5D72\u5D6C\u5D5E\u5D68\u5D67\u5D62\u5DF0\u5E4F\u5E4E\u5E4A\u5E4D\u5E4B\u5EC5\u5ECC\u5EC6\u5ECB\u5EC7\u5F40\u5FAF\u5FAD\u60F7\u6149\u614A\u612B\u6145\u6136\u6132\u612E\u6146\u612F\u614F\u6129\u6140\u6220\u9168\u6223\u6225\u6224\u63C5\u63F1\u63EB\u6410\u6412\u6409\u6420\u6424"],["dda1","\u6433\u6443\u641F\u6415\u6418\u6439\u6437\u6422\u6423\u640C\u6426\u6430\u6428\u6441\u6435\u642F\u640A\u641A\u6440\u6425\u6427\u640B\u63E7\u641B\u642E\u6421\u640E\u656F\u6592\u65D3\u6686\u668C\u6695\u6690\u668B\u668A\u6699\u6694\u6678\u6720\u6966\u695F\u6938\u694E\u6962\u6971\u693F\u6945\u696A\u6939\u6942\u6957\u6959\u697A\u6948\u6949\u6935\u696C\u6933\u693D\u6965\u68F0\u6978\u6934\u6969\u6940\u696F\u6944\u6976\u6958\u6941\u6974\u694C\u693B\u694B\u6937\u695C\u694F\u6951\u6932\u6952\u692F\u697B\u693C\u6B46\u6B45\u6B43\u6B42\u6B48\u6B41\u6B9B\uFA0D\u6BFB\u6BFC"],["de40","\u6BF9\u6BF7\u6BF8\u6E9B\u6ED6\u6EC8\u6E8F\u6EC0\u6E9F\u6E93\u6E94\u6EA0\u6EB1\u6EB9\u6EC6\u6ED2\u6EBD\u6EC1\u6E9E\u6EC9\u6EB7\u6EB0\u6ECD\u6EA6\u6ECF\u6EB2\u6EBE\u6EC3\u6EDC\u6ED8\u6E99\u6E92\u6E8E\u6E8D\u6EA4\u6EA1\u6EBF\u6EB3\u6ED0\u6ECA\u6E97\u6EAE\u6EA3\u7147\u7154\u7152\u7163\u7160\u7141\u715D\u7162\u7172\u7178\u716A\u7161\u7142\u7158\u7143\u714B\u7170\u715F\u7150\u7153"],["dea1","\u7144\u714D\u715A\u724F\u728D\u728C\u7291\u7290\u728E\u733C\u7342\u733B\u733A\u7340\u734A\u7349\u7444\u744A\u744B\u7452\u7451\u7457\u7440\u744F\u7450\u744E\u7442\u7446\u744D\u7454\u74E1\u74FF\u74FE\u74FD\u751D\u7579\u7577\u6983\u75EF\u760F\u7603\u75F7\u75FE\u75FC\u75F9\u75F8\u7610\u75FB\u75F6\u75ED\u75F5\u75FD\u7699\u76B5\u76DD\u7755\u775F\u7760\u7752\u7756\u775A\u7769\u7767\u7754\u7759\u776D\u77E0\u7887\u789A\u7894\u788F\u7884\u7895\u7885\u7886\u78A1\u7883\u7879\u7899\u7880\u7896\u787B\u797C\u7982\u797D\u7979\u7A11\u7A18\u7A19\u7A12\u7A17\u7A15\u7A22\u7A13"],["df40","\u7A1B\u7A10\u7AA3\u7AA2\u7A9E\u7AEB\u7B66\u7B64\u7B6D\u7B74\u7B69\u7B72\u7B65\u7B73\u7B71\u7B70\u7B61\u7B78\u7B76\u7B63\u7CB2\u7CB4\u7CAF\u7D88\u7D86\u7D80\u7D8D\u7D7F\u7D85\u7D7A\u7D8E\u7D7B\u7D83\u7D7C\u7D8C\u7D94\u7D84\u7D7D\u7D92\u7F6D\u7F6B\u7F67\u7F68\u7F6C\u7FA6\u7FA5\u7FA7\u7FDB\u7FDC\u8021\u8164\u8160\u8177\u815C\u8169\u815B\u8162\u8172\u6721\u815E\u8176\u8167\u816F"],["dfa1","\u8144\u8161\u821D\u8249\u8244\u8240\u8242\u8245\u84F1\u843F\u8456\u8476\u8479\u848F\u848D\u8465\u8451\u8440\u8486\u8467\u8430\u844D\u847D\u845A\u8459\u8474\u8473\u845D\u8507\u845E\u8437\u843A\u8434\u847A\u8443\u8478\u8432\u8445\u8429\u83D9\u844B\u842F\u8442\u842D\u845F\u8470\u8439\u844E\u844C\u8452\u846F\u84C5\u848E\u843B\u8447\u8436\u8433\u8468\u847E\u8444\u842B\u8460\u8454\u846E\u8450\u870B\u8704\u86F7\u870C\u86FA\u86D6\u86F5\u874D\u86F8\u870E\u8709\u8701\u86F6\u870D\u8705\u88D6\u88CB\u88CD\u88CE\u88DE\u88DB\u88DA\u88CC\u88D0\u8985\u899B\u89DF\u89E5\u89E4"],["e040","\u89E1\u89E0\u89E2\u89DC\u89E6\u8A76\u8A86\u8A7F\u8A61\u8A3F\u8A77\u8A82\u8A84\u8A75\u8A83\u8A81\u8A74\u8A7A\u8C3C\u8C4B\u8C4A\u8C65\u8C64\u8C66\u8C86\u8C84\u8C85\u8CCC\u8D68\u8D69\u8D91\u8D8C\u8D8E\u8D8F\u8D8D\u8D93\u8D94\u8D90\u8D92\u8DF0\u8DE0\u8DEC\u8DF1\u8DEE\u8DD0\u8DE9\u8DE3\u8DE2\u8DE7\u8DF2\u8DEB\u8DF4\u8F06\u8EFF\u8F01\u8F00\u8F05\u8F07\u8F08\u8F02\u8F0B\u9052\u903F"],["e0a1","\u9044\u9049\u903D\u9110\u910D\u910F\u9111\u9116\u9114\u910B\u910E\u916E\u916F\u9248\u9252\u9230\u923A\u9266\u9233\u9265\u925E\u9283\u922E\u924A\u9246\u926D\u926C\u924F\u9260\u9267\u926F\u9236\u9261\u9270\u9231\u9254\u9263\u9250\u9272\u924E\u9253\u924C\u9256\u9232\u959F\u959C\u959E\u959B\u9692\u9693\u9691\u9697\u96CE\u96FA\u96FD\u96F8\u96F5\u9773\u9777\u9778\u9772\u980F\u980D\u980E\u98AC\u98F6\u98F9\u99AF\u99B2\u99B0\u99B5\u9AAD\u9AAB\u9B5B\u9CEA\u9CED\u9CE7\u9E80\u9EFD\u50E6\u50D4\u50D7\u50E8\u50F3\u50DB\u50EA\u50DD\u50E4\u50D3\u50EC\u50F0\u50EF\u50E3\u50E0"],["e140","\u51D8\u5280\u5281\u52E9\u52EB\u5330\u53AC\u5627\u5615\u560C\u5612\u55FC\u560F\u561C\u5601\u5613\u5602\u55FA\u561D\u5604\u55FF\u55F9\u5889\u587C\u5890\u5898\u5886\u5881\u587F\u5874\u588B\u587A\u5887\u5891\u588E\u5876\u5882\u5888\u587B\u5894\u588F\u58FE\u596B\u5ADC\u5AEE\u5AE5\u5AD5\u5AEA\u5ADA\u5AED\u5AEB\u5AF3\u5AE2\u5AE0\u5ADB\u5AEC\u5ADE\u5ADD\u5AD9\u5AE8\u5ADF\u5B77\u5BE0"],["e1a1","\u5BE3\u5C63\u5D82\u5D80\u5D7D\u5D86\u5D7A\u5D81\u5D77\u5D8A\u5D89\u5D88\u5D7E\u5D7C\u5D8D\u5D79\u5D7F\u5E58\u5E59\u5E53\u5ED8\u5ED1\u5ED7\u5ECE\u5EDC\u5ED5\u5ED9\u5ED2\u5ED4\u5F44\u5F43\u5F6F\u5FB6\u612C\u6128\u6141\u615E\u6171\u6173\u6152\u6153\u6172\u616C\u6180\u6174\u6154\u617A\u615B\u6165\u613B\u616A\u6161\u6156\u6229\u6227\u622B\u642B\u644D\u645B\u645D\u6474\u6476\u6472\u6473\u647D\u6475\u6466\u64A6\u644E\u6482\u645E\u645C\u644B\u6453\u6460\u6450\u647F\u643F\u646C\u646B\u6459\u6465\u6477\u6573\u65A0\u66A1\u66A0\u669F\u6705\u6704\u6722\u69B1\u69B6\u69C9"],["e240","\u69A0\u69CE\u6996\u69B0\u69AC\u69BC\u6991\u6999\u698E\u69A7\u698D\u69A9\u69BE\u69AF\u69BF\u69C4\u69BD\u69A4\u69D4\u69B9\u69CA\u699A\u69CF\u69B3\u6993\u69AA\u69A1\u699E\u69D9\u6997\u6990\u69C2\u69B5\u69A5\u69C6\u6B4A\u6B4D\u6B4B\u6B9E\u6B9F\u6BA0\u6BC3\u6BC4\u6BFE\u6ECE\u6EF5\u6EF1\u6F03\u6F25\u6EF8\u6F37\u6EFB\u6F2E\u6F09\u6F4E\u6F19\u6F1A\u6F27\u6F18\u6F3B\u6F12\u6EED\u6F0A"],["e2a1","\u6F36\u6F73\u6EF9\u6EEE\u6F2D\u6F40\u6F30\u6F3C\u6F35\u6EEB\u6F07\u6F0E\u6F43\u6F05\u6EFD\u6EF6\u6F39\u6F1C\u6EFC\u6F3A\u6F1F\u6F0D\u6F1E\u6F08\u6F21\u7187\u7190\u7189\u7180\u7185\u7182\u718F\u717B\u7186\u7181\u7197\u7244\u7253\u7297\u7295\u7293\u7343\u734D\u7351\u734C\u7462\u7473\u7471\u7475\u7472\u7467\u746E\u7500\u7502\u7503\u757D\u7590\u7616\u7608\u760C\u7615\u7611\u760A\u7614\u76B8\u7781\u777C\u7785\u7782\u776E\u7780\u776F\u777E\u7783\u78B2\u78AA\u78B4\u78AD\u78A8\u787E\u78AB\u789E\u78A5\u78A0\u78AC\u78A2\u78A4\u7998\u798A\u798B\u7996\u7995\u7994\u7993"],["e340","\u7997\u7988\u7992\u7990\u7A2B\u7A4A\u7A30\u7A2F\u7A28\u7A26\u7AA8\u7AAB\u7AAC\u7AEE\u7B88\u7B9C\u7B8A\u7B91\u7B90\u7B96\u7B8D\u7B8C\u7B9B\u7B8E\u7B85\u7B98\u5284\u7B99\u7BA4\u7B82\u7CBB\u7CBF\u7CBC\u7CBA\u7DA7\u7DB7\u7DC2\u7DA3\u7DAA\u7DC1\u7DC0\u7DC5\u7D9D\u7DCE\u7DC4\u7DC6\u7DCB\u7DCC\u7DAF\u7DB9\u7D96\u7DBC\u7D9F\u7DA6\u7DAE\u7DA9\u7DA1\u7DC9\u7F73\u7FE2\u7FE3\u7FE5\u7FDE"],["e3a1","\u8024\u805D\u805C\u8189\u8186\u8183\u8187\u818D\u818C\u818B\u8215\u8497\u84A4\u84A1\u849F\u84BA\u84CE\u84C2\u84AC\u84AE\u84AB\u84B9\u84B4\u84C1\u84CD\u84AA\u849A\u84B1\u84D0\u849D\u84A7\u84BB\u84A2\u8494\u84C7\u84CC\u849B\u84A9\u84AF\u84A8\u84D6\u8498\u84B6\u84CF\u84A0\u84D7\u84D4\u84D2\u84DB\u84B0\u8491\u8661\u8733\u8723\u8728\u876B\u8740\u872E\u871E\u8721\u8719\u871B\u8743\u872C\u8741\u873E\u8746\u8720\u8732\u872A\u872D\u873C\u8712\u873A\u8731\u8735\u8742\u8726\u8727\u8738\u8724\u871A\u8730\u8711\u88F7\u88E7\u88F1\u88F2\u88FA\u88FE\u88EE\u88FC\u88F6\u88FB"],["e440","\u88F0\u88EC\u88EB\u899D\u89A1\u899F\u899E\u89E9\u89EB\u89E8\u8AAB\u8A99\u8A8B\u8A92\u8A8F\u8A96\u8C3D\u8C68\u8C69\u8CD5\u8CCF\u8CD7\u8D96\u8E09\u8E02\u8DFF\u8E0D\u8DFD\u8E0A\u8E03\u8E07\u8E06\u8E05\u8DFE\u8E00\u8E04\u8F10\u8F11\u8F0E\u8F0D\u9123\u911C\u9120\u9122\u911F\u911D\u911A\u9124\u9121\u911B\u917A\u9172\u9179\u9173\u92A5\u92A4\u9276\u929B\u927A\u92A0\u9294\u92AA\u928D"],["e4a1","\u92A6\u929A\u92AB\u9279\u9297\u927F\u92A3\u92EE\u928E\u9282\u9295\u92A2\u927D\u9288\u92A1\u928A\u9286\u928C\u9299\u92A7\u927E\u9287\u92A9\u929D\u928B\u922D\u969E\u96A1\u96FF\u9758\u977D\u977A\u977E\u9783\u9780\u9782\u977B\u9784\u9781\u977F\u97CE\u97CD\u9816\u98AD\u98AE\u9902\u9900\u9907\u999D\u999C\u99C3\u99B9\u99BB\u99BA\u99C2\u99BD\u99C7\u9AB1\u9AE3\u9AE7\u9B3E\u9B3F\u9B60\u9B61\u9B5F\u9CF1\u9CF2\u9CF5\u9EA7\u50FF\u5103\u5130\u50F8\u5106\u5107\u50F6\u50FE\u510B\u510C\u50FD\u510A\u528B\u528C\u52F1\u52EF\u5648\u5642\u564C\u5635\u5641\u564A\u5649\u5646\u5658"],["e540","\u565A\u5640\u5633\u563D\u562C\u563E\u5638\u562A\u563A\u571A\u58AB\u589D\u58B1\u58A0\u58A3\u58AF\u58AC\u58A5\u58A1\u58FF\u5AFF\u5AF4\u5AFD\u5AF7\u5AF6\u5B03\u5AF8\u5B02\u5AF9\u5B01\u5B07\u5B05\u5B0F\u5C67\u5D99\u5D97\u5D9F\u5D92\u5DA2\u5D93\u5D95\u5DA0\u5D9C\u5DA1\u5D9A\u5D9E\u5E69\u5E5D\u5E60\u5E5C\u7DF3\u5EDB\u5EDE\u5EE1\u5F49\u5FB2\u618B\u6183\u6179\u61B1\u61B0\u61A2\u6189"],["e5a1","\u619B\u6193\u61AF\u61AD\u619F\u6192\u61AA\u61A1\u618D\u6166\u61B3\u622D\u646E\u6470\u6496\u64A0\u6485\u6497\u649C\u648F\u648B\u648A\u648C\u64A3\u649F\u6468\u64B1\u6498\u6576\u657A\u6579\u657B\u65B2\u65B3\u66B5\u66B0\u66A9\u66B2\u66B7\u66AA\u66AF\u6A00\u6A06\u6A17\u69E5\u69F8\u6A15\u69F1\u69E4\u6A20\u69FF\u69EC\u69E2\u6A1B\u6A1D\u69FE\u6A27\u69F2\u69EE\u6A14\u69F7\u69E7\u6A40\u6A08\u69E6\u69FB\u6A0D\u69FC\u69EB\u6A09\u6A04\u6A18\u6A25\u6A0F\u69F6\u6A26\u6A07\u69F4\u6A16\u6B51\u6BA5\u6BA3\u6BA2\u6BA6\u6C01\u6C00\u6BFF\u6C02\u6F41\u6F26\u6F7E\u6F87\u6FC6\u6F92"],["e640","\u6F8D\u6F89\u6F8C\u6F62\u6F4F\u6F85\u6F5A\u6F96\u6F76\u6F6C\u6F82\u6F55\u6F72\u6F52\u6F50\u6F57\u6F94\u6F93\u6F5D\u6F00\u6F61\u6F6B\u6F7D\u6F67\u6F90\u6F53\u6F8B\u6F69\u6F7F\u6F95\u6F63\u6F77\u6F6A\u6F7B\u71B2\u71AF\u719B\u71B0\u71A0\u719A\u71A9\u71B5\u719D\u71A5\u719E\u71A4\u71A1\u71AA\u719C\u71A7\u71B3\u7298\u729A\u7358\u7352\u735E\u735F\u7360\u735D\u735B\u7361\u735A\u7359"],["e6a1","\u7362\u7487\u7489\u748A\u7486\u7481\u747D\u7485\u7488\u747C\u7479\u7508\u7507\u757E\u7625\u761E\u7619\u761D\u761C\u7623\u761A\u7628\u761B\u769C\u769D\u769E\u769B\u778D\u778F\u7789\u7788\u78CD\u78BB\u78CF\u78CC\u78D1\u78CE\u78D4\u78C8\u78C3\u78C4\u78C9\u799A\u79A1\u79A0\u799C\u79A2\u799B\u6B76\u7A39\u7AB2\u7AB4\u7AB3\u7BB7\u7BCB\u7BBE\u7BAC\u7BCE\u7BAF\u7BB9\u7BCA\u7BB5\u7CC5\u7CC8\u7CCC\u7CCB\u7DF7\u7DDB\u7DEA\u7DE7\u7DD7\u7DE1\u7E03\u7DFA\u7DE6\u7DF6\u7DF1\u7DF0\u7DEE\u7DDF\u7F76\u7FAC\u7FB0\u7FAD\u7FED\u7FEB\u7FEA\u7FEC\u7FE6\u7FE8\u8064\u8067\u81A3\u819F"],["e740","\u819E\u8195\u81A2\u8199\u8197\u8216\u824F\u8253\u8252\u8250\u824E\u8251\u8524\u853B\u850F\u8500\u8529\u850E\u8509\u850D\u851F\u850A\u8527\u851C\u84FB\u852B\u84FA\u8508\u850C\u84F4\u852A\u84F2\u8515\u84F7\u84EB\u84F3\u84FC\u8512\u84EA\u84E9\u8516\u84FE\u8528\u851D\u852E\u8502\u84FD\u851E\u84F6\u8531\u8526\u84E7\u84E8\u84F0\u84EF\u84F9\u8518\u8520\u8530\u850B\u8519\u852F\u8662"],["e7a1","\u8756\u8763\u8764\u8777\u87E1\u8773\u8758\u8754\u875B\u8752\u8761\u875A\u8751\u875E\u876D\u876A\u8750\u874E\u875F\u875D\u876F\u876C\u877A\u876E\u875C\u8765\u874F\u877B\u8775\u8762\u8767\u8769\u885A\u8905\u890C\u8914\u890B\u8917\u8918\u8919\u8906\u8916\u8911\u890E\u8909\u89A2\u89A4\u89A3\u89ED\u89F0\u89EC\u8ACF\u8AC6\u8AB8\u8AD3\u8AD1\u8AD4\u8AD5\u8ABB\u8AD7\u8ABE\u8AC0\u8AC5\u8AD8\u8AC3\u8ABA\u8ABD\u8AD9\u8C3E\u8C4D\u8C8F\u8CE5\u8CDF\u8CD9\u8CE8\u8CDA\u8CDD\u8CE7\u8DA0\u8D9C\u8DA1\u8D9B\u8E20\u8E23\u8E25\u8E24\u8E2E\u8E15\u8E1B\u8E16\u8E11\u8E19\u8E26\u8E27"],["e840","\u8E14\u8E12\u8E18\u8E13\u8E1C\u8E17\u8E1A\u8F2C\u8F24\u8F18\u8F1A\u8F20\u8F23\u8F16\u8F17\u9073\u9070\u906F\u9067\u906B\u912F\u912B\u9129\u912A\u9132\u9126\u912E\u9185\u9186\u918A\u9181\u9182\u9184\u9180\u92D0\u92C3\u92C4\u92C0\u92D9\u92B6\u92CF\u92F1\u92DF\u92D8\u92E9\u92D7\u92DD\u92CC\u92EF\u92C2\u92E8\u92CA\u92C8\u92CE\u92E6\u92CD\u92D5\u92C9\u92E0\u92DE\u92E7\u92D1\u92D3"],["e8a1","\u92B5\u92E1\u92C6\u92B4\u957C\u95AC\u95AB\u95AE\u95B0\u96A4\u96A2\u96D3\u9705\u9708\u9702\u975A\u978A\u978E\u9788\u97D0\u97CF\u981E\u981D\u9826\u9829\u9828\u9820\u981B\u9827\u98B2\u9908\u98FA\u9911\u9914\u9916\u9917\u9915\u99DC\u99CD\u99CF\u99D3\u99D4\u99CE\u99C9\u99D6\u99D8\u99CB\u99D7\u99CC\u9AB3\u9AEC\u9AEB\u9AF3\u9AF2\u9AF1\u9B46\u9B43\u9B67\u9B74\u9B71\u9B66\u9B76\u9B75\u9B70\u9B68\u9B64\u9B6C\u9CFC\u9CFA\u9CFD\u9CFF\u9CF7\u9D07\u9D00\u9CF9\u9CFB\u9D08\u9D05\u9D04\u9E83\u9ED3\u9F0F\u9F10\u511C\u5113\u5117\u511A\u5111\u51DE\u5334\u53E1\u5670\u5660\u566E"],["e940","\u5673\u5666\u5663\u566D\u5672\u565E\u5677\u571C\u571B\u58C8\u58BD\u58C9\u58BF\u58BA\u58C2\u58BC\u58C6\u5B17\u5B19\u5B1B\u5B21\u5B14\u5B13\u5B10\u5B16\u5B28\u5B1A\u5B20\u5B1E\u5BEF\u5DAC\u5DB1\u5DA9\u5DA7\u5DB5\u5DB0\u5DAE\u5DAA\u5DA8\u5DB2\u5DAD\u5DAF\u5DB4\u5E67\u5E68\u5E66\u5E6F\u5EE9\u5EE7\u5EE6\u5EE8\u5EE5\u5F4B\u5FBC\u619D\u61A8\u6196\u61C5\u61B4\u61C6\u61C1\u61CC\u61BA"],["e9a1","\u61BF\u61B8\u618C\u64D7\u64D6\u64D0\u64CF\u64C9\u64BD\u6489\u64C3\u64DB\u64F3\u64D9\u6533\u657F\u657C\u65A2\u66C8\u66BE\u66C0\u66CA\u66CB\u66CF\u66BD\u66BB\u66BA\u66CC\u6723\u6A34\u6A66\u6A49\u6A67\u6A32\u6A68\u6A3E\u6A5D\u6A6D\u6A76\u6A5B\u6A51\u6A28\u6A5A\u6A3B\u6A3F\u6A41\u6A6A\u6A64\u6A50\u6A4F\u6A54\u6A6F\u6A69\u6A60\u6A3C\u6A5E\u6A56\u6A55\u6A4D\u6A4E\u6A46\u6B55\u6B54\u6B56\u6BA7\u6BAA\u6BAB\u6BC8\u6BC7\u6C04\u6C03\u6C06\u6FAD\u6FCB\u6FA3\u6FC7\u6FBC\u6FCE\u6FC8\u6F5E\u6FC4\u6FBD\u6F9E\u6FCA\u6FA8\u7004\u6FA5\u6FAE\u6FBA\u6FAC\u6FAA\u6FCF\u6FBF\u6FB8"],["ea40","\u6FA2\u6FC9\u6FAB\u6FCD\u6FAF\u6FB2\u6FB0\u71C5\u71C2\u71BF\u71B8\u71D6\u71C0\u71C1\u71CB\u71D4\u71CA\u71C7\u71CF\u71BD\u71D8\u71BC\u71C6\u71DA\u71DB\u729D\u729E\u7369\u7366\u7367\u736C\u7365\u736B\u736A\u747F\u749A\u74A0\u7494\u7492\u7495\u74A1\u750B\u7580\u762F\u762D\u7631\u763D\u7633\u763C\u7635\u7632\u7630\u76BB\u76E6\u779A\u779D\u77A1\u779C\u779B\u77A2\u77A3\u7795\u7799"],["eaa1","\u7797\u78DD\u78E9\u78E5\u78EA\u78DE\u78E3\u78DB\u78E1\u78E2\u78ED\u78DF\u78E0\u79A4\u7A44\u7A48\u7A47\u7AB6\u7AB8\u7AB5\u7AB1\u7AB7\u7BDE\u7BE3\u7BE7\u7BDD\u7BD5\u7BE5\u7BDA\u7BE8\u7BF9\u7BD4\u7BEA\u7BE2\u7BDC\u7BEB\u7BD8\u7BDF\u7CD2\u7CD4\u7CD7\u7CD0\u7CD1\u7E12\u7E21\u7E17\u7E0C\u7E1F\u7E20\u7E13\u7E0E\u7E1C\u7E15\u7E1A\u7E22\u7E0B\u7E0F\u7E16\u7E0D\u7E14\u7E25\u7E24\u7F43\u7F7B\u7F7C\u7F7A\u7FB1\u7FEF\u802A\u8029\u806C\u81B1\u81A6\u81AE\u81B9\u81B5\u81AB\u81B0\u81AC\u81B4\u81B2\u81B7\u81A7\u81F2\u8255\u8256\u8257\u8556\u8545\u856B\u854D\u8553\u8561\u8558"],["eb40","\u8540\u8546\u8564\u8541\u8562\u8544\u8551\u8547\u8563\u853E\u855B\u8571\u854E\u856E\u8575\u8555\u8567\u8560\u858C\u8566\u855D\u8554\u8565\u856C\u8663\u8665\u8664\u879B\u878F\u8797\u8793\u8792\u8788\u8781\u8796\u8798\u8779\u8787\u87A3\u8785\u8790\u8791\u879D\u8784\u8794\u879C\u879A\u8789\u891E\u8926\u8930\u892D\u892E\u8927\u8931\u8922\u8929\u8923\u892F\u892C\u891F\u89F1\u8AE0"],["eba1","\u8AE2\u8AF2\u8AF4\u8AF5\u8ADD\u8B14\u8AE4\u8ADF\u8AF0\u8AC8\u8ADE\u8AE1\u8AE8\u8AFF\u8AEF\u8AFB\u8C91\u8C92\u8C90\u8CF5\u8CEE\u8CF1\u8CF0\u8CF3\u8D6C\u8D6E\u8DA5\u8DA7\u8E33\u8E3E\u8E38\u8E40\u8E45\u8E36\u8E3C\u8E3D\u8E41\u8E30\u8E3F\u8EBD\u8F36\u8F2E\u8F35\u8F32\u8F39\u8F37\u8F34\u9076\u9079\u907B\u9086\u90FA\u9133\u9135\u9136\u9193\u9190\u9191\u918D\u918F\u9327\u931E\u9308\u931F\u9306\u930F\u937A\u9338\u933C\u931B\u9323\u9312\u9301\u9346\u932D\u930E\u930D\u92CB\u931D\u92FA\u9325\u9313\u92F9\u92F7\u9334\u9302\u9324\u92FF\u9329\u9339\u9335\u932A\u9314\u930C"],["ec40","\u930B\u92FE\u9309\u9300\u92FB\u9316\u95BC\u95CD\u95BE\u95B9\u95BA\u95B6\u95BF\u95B5\u95BD\u96A9\u96D4\u970B\u9712\u9710\u9799\u9797\u9794\u97F0\u97F8\u9835\u982F\u9832\u9924\u991F\u9927\u9929\u999E\u99EE\u99EC\u99E5\u99E4\u99F0\u99E3\u99EA\u99E9\u99E7\u9AB9\u9ABF\u9AB4\u9ABB\u9AF6\u9AFA\u9AF9\u9AF7\u9B33\u9B80\u9B85\u9B87\u9B7C\u9B7E\u9B7B\u9B82\u9B93\u9B92\u9B90\u9B7A\u9B95"],["eca1","\u9B7D\u9B88\u9D25\u9D17\u9D20\u9D1E\u9D14\u9D29\u9D1D\u9D18\u9D22\u9D10\u9D19\u9D1F\u9E88\u9E86\u9E87\u9EAE\u9EAD\u9ED5\u9ED6\u9EFA\u9F12\u9F3D\u5126\u5125\u5122\u5124\u5120\u5129\u52F4\u5693\u568C\u568D\u5686\u5684\u5683\u567E\u5682\u567F\u5681\u58D6\u58D4\u58CF\u58D2\u5B2D\u5B25\u5B32\u5B23\u5B2C\u5B27\u5B26\u5B2F\u5B2E\u5B7B\u5BF1\u5BF2\u5DB7\u5E6C\u5E6A\u5FBE\u5FBB\u61C3\u61B5\u61BC\u61E7\u61E0\u61E5\u61E4\u61E8\u61DE\u64EF\u64E9\u64E3\u64EB\u64E4\u64E8\u6581\u6580\u65B6\u65DA\u66D2\u6A8D\u6A96\u6A81\u6AA5\u6A89\u6A9F\u6A9B\u6AA1\u6A9E\u6A87\u6A93\u6A8E"],["ed40","\u6A95\u6A83\u6AA8\u6AA4\u6A91\u6A7F\u6AA6\u6A9A\u6A85\u6A8C\u6A92\u6B5B\u6BAD\u6C09\u6FCC\u6FA9\u6FF4\u6FD4\u6FE3\u6FDC\u6FED\u6FE7\u6FE6\u6FDE\u6FF2\u6FDD\u6FE2\u6FE8\u71E1\u71F1\u71E8\u71F2\u71E4\u71F0\u71E2\u7373\u736E\u736F\u7497\u74B2\u74AB\u7490\u74AA\u74AD\u74B1\u74A5\u74AF\u7510\u7511\u7512\u750F\u7584\u7643\u7648\u7649\u7647\u76A4\u76E9\u77B5\u77AB\u77B2\u77B7\u77B6"],["eda1","\u77B4\u77B1\u77A8\u77F0\u78F3\u78FD\u7902\u78FB\u78FC\u78F2\u7905\u78F9\u78FE\u7904\u79AB\u79A8\u7A5C\u7A5B\u7A56\u7A58\u7A54\u7A5A\u7ABE\u7AC0\u7AC1\u7C05\u7C0F\u7BF2\u7C00\u7BFF\u7BFB\u7C0E\u7BF4\u7C0B\u7BF3\u7C02\u7C09\u7C03\u7C01\u7BF8\u7BFD\u7C06\u7BF0\u7BF1\u7C10\u7C0A\u7CE8\u7E2D\u7E3C\u7E42\u7E33\u9848\u7E38\u7E2A\u7E49\u7E40\u7E47\u7E29\u7E4C\u7E30\u7E3B\u7E36\u7E44\u7E3A\u7F45\u7F7F\u7F7E\u7F7D\u7FF4\u7FF2\u802C\u81BB\u81C4\u81CC\u81CA\u81C5\u81C7\u81BC\u81E9\u825B\u825A\u825C\u8583\u8580\u858F\u85A7\u8595\u85A0\u858B\u85A3\u857B\u85A4\u859A\u859E"],["ee40","\u8577\u857C\u8589\u85A1\u857A\u8578\u8557\u858E\u8596\u8586\u858D\u8599\u859D\u8581\u85A2\u8582\u8588\u8585\u8579\u8576\u8598\u8590\u859F\u8668\u87BE\u87AA\u87AD\u87C5\u87B0\u87AC\u87B9\u87B5\u87BC\u87AE\u87C9\u87C3\u87C2\u87CC\u87B7\u87AF\u87C4\u87CA\u87B4\u87B6\u87BF\u87B8\u87BD\u87DE\u87B2\u8935\u8933\u893C\u893E\u8941\u8952\u8937\u8942\u89AD\u89AF\u89AE\u89F2\u89F3\u8B1E"],["eea1","\u8B18\u8B16\u8B11\u8B05\u8B0B\u8B22\u8B0F\u8B12\u8B15\u8B07\u8B0D\u8B08\u8B06\u8B1C\u8B13\u8B1A\u8C4F\u8C70\u8C72\u8C71\u8C6F\u8C95\u8C94\u8CF9\u8D6F\u8E4E\u8E4D\u8E53\u8E50\u8E4C\u8E47\u8F43\u8F40\u9085\u907E\u9138\u919A\u91A2\u919B\u9199\u919F\u91A1\u919D\u91A0\u93A1\u9383\u93AF\u9364\u9356\u9347\u937C\u9358\u935C\u9376\u9349\u9350\u9351\u9360\u936D\u938F\u934C\u936A\u9379\u9357\u9355\u9352\u934F\u9371\u9377\u937B\u9361\u935E\u9363\u9367\u9380\u934E\u9359\u95C7\u95C0\u95C9\u95C3\u95C5\u95B7\u96AE\u96B0\u96AC\u9720\u971F\u9718\u971D\u9719\u979A\u97A1\u979C"],["ef40","\u979E\u979D\u97D5\u97D4\u97F1\u9841\u9844\u984A\u9849\u9845\u9843\u9925\u992B\u992C\u992A\u9933\u9932\u992F\u992D\u9931\u9930\u9998\u99A3\u99A1\u9A02\u99FA\u99F4\u99F7\u99F9\u99F8\u99F6\u99FB\u99FD\u99FE\u99FC\u9A03\u9ABE\u9AFE\u9AFD\u9B01\u9AFC\u9B48\u9B9A\u9BA8\u9B9E\u9B9B\u9BA6\u9BA1\u9BA5\u9BA4\u9B86\u9BA2\u9BA0\u9BAF\u9D33\u9D41\u9D67\u9D36\u9D2E\u9D2F\u9D31\u9D38\u9D30"],["efa1","\u9D45\u9D42\u9D43\u9D3E\u9D37\u9D40\u9D3D\u7FF5\u9D2D\u9E8A\u9E89\u9E8D\u9EB0\u9EC8\u9EDA\u9EFB\u9EFF\u9F24\u9F23\u9F22\u9F54\u9FA0\u5131\u512D\u512E\u5698\u569C\u5697\u569A\u569D\u5699\u5970\u5B3C\u5C69\u5C6A\u5DC0\u5E6D\u5E6E\u61D8\u61DF\u61ED\u61EE\u61F1\u61EA\u61F0\u61EB\u61D6\u61E9\u64FF\u6504\u64FD\u64F8\u6501\u6503\u64FC\u6594\u65DB\u66DA\u66DB\u66D8\u6AC5\u6AB9\u6ABD\u6AE1\u6AC6\u6ABA\u6AB6\u6AB7\u6AC7\u6AB4\u6AAD\u6B5E\u6BC9\u6C0B\u7007\u700C\u700D\u7001\u7005\u7014\u700E\u6FFF\u7000\u6FFB\u7026\u6FFC\u6FF7\u700A\u7201\u71FF\u71F9\u7203\u71FD\u7376"],["f040","\u74B8\u74C0\u74B5\u74C1\u74BE\u74B6\u74BB\u74C2\u7514\u7513\u765C\u7664\u7659\u7650\u7653\u7657\u765A\u76A6\u76BD\u76EC\u77C2\u77BA\u78FF\u790C\u7913\u7914\u7909\u7910\u7912\u7911\u79AD\u79AC\u7A5F\u7C1C\u7C29\u7C19\u7C20\u7C1F\u7C2D\u7C1D\u7C26\u7C28\u7C22\u7C25\u7C30\u7E5C\u7E50\u7E56\u7E63\u7E58\u7E62\u7E5F\u7E51\u7E60\u7E57\u7E53\u7FB5\u7FB3\u7FF7\u7FF8\u8075\u81D1\u81D2"],["f0a1","\u81D0\u825F\u825E\u85B4\u85C6\u85C0\u85C3\u85C2\u85B3\u85B5\u85BD\u85C7\u85C4\u85BF\u85CB\u85CE\u85C8\u85C5\u85B1\u85B6\u85D2\u8624\u85B8\u85B7\u85BE\u8669\u87E7\u87E6\u87E2\u87DB\u87EB\u87EA\u87E5\u87DF\u87F3\u87E4\u87D4\u87DC\u87D3\u87ED\u87D8\u87E3\u87A4\u87D7\u87D9\u8801\u87F4\u87E8\u87DD\u8953\u894B\u894F\u894C\u8946\u8950\u8951\u8949\u8B2A\u8B27\u8B23\u8B33\u8B30\u8B35\u8B47\u8B2F\u8B3C\u8B3E\u8B31\u8B25\u8B37\u8B26\u8B36\u8B2E\u8B24\u8B3B\u8B3D\u8B3A\u8C42\u8C75\u8C99\u8C98\u8C97\u8CFE\u8D04\u8D02\u8D00\u8E5C\u8E62\u8E60\u8E57\u8E56\u8E5E\u8E65\u8E67"],["f140","\u8E5B\u8E5A\u8E61\u8E5D\u8E69\u8E54\u8F46\u8F47\u8F48\u8F4B\u9128\u913A\u913B\u913E\u91A8\u91A5\u91A7\u91AF\u91AA\u93B5\u938C\u9392\u93B7\u939B\u939D\u9389\u93A7\u938E\u93AA\u939E\u93A6\u9395\u9388\u9399\u939F\u938D\u93B1\u9391\u93B2\u93A4\u93A8\u93B4\u93A3\u93A5\u95D2\u95D3\u95D1\u96B3\u96D7\u96DA\u5DC2\u96DF\u96D8\u96DD\u9723\u9722\u9725\u97AC\u97AE\u97A8\u97AB\u97A4\u97AA"],["f1a1","\u97A2\u97A5\u97D7\u97D9\u97D6\u97D8\u97FA\u9850\u9851\u9852\u98B8\u9941\u993C\u993A\u9A0F\u9A0B\u9A09\u9A0D\u9A04\u9A11\u9A0A\u9A05\u9A07\u9A06\u9AC0\u9ADC\u9B08\u9B04\u9B05\u9B29\u9B35\u9B4A\u9B4C\u9B4B\u9BC7\u9BC6\u9BC3\u9BBF\u9BC1\u9BB5\u9BB8\u9BD3\u9BB6\u9BC4\u9BB9\u9BBD\u9D5C\u9D53\u9D4F\u9D4A\u9D5B\u9D4B\u9D59\u9D56\u9D4C\u9D57\u9D52\u9D54\u9D5F\u9D58\u9D5A\u9E8E\u9E8C\u9EDF\u9F01\u9F00\u9F16\u9F25\u9F2B\u9F2A\u9F29\u9F28\u9F4C\u9F55\u5134\u5135\u5296\u52F7\u53B4\u56AB\u56AD\u56A6\u56A7\u56AA\u56AC\u58DA\u58DD\u58DB\u5912\u5B3D\u5B3E\u5B3F\u5DC3\u5E70"],["f240","\u5FBF\u61FB\u6507\u6510\u650D\u6509\u650C\u650E\u6584\u65DE\u65DD\u66DE\u6AE7\u6AE0\u6ACC\u6AD1\u6AD9\u6ACB\u6ADF\u6ADC\u6AD0\u6AEB\u6ACF\u6ACD\u6ADE\u6B60\u6BB0\u6C0C\u7019\u7027\u7020\u7016\u702B\u7021\u7022\u7023\u7029\u7017\u7024\u701C\u702A\u720C\u720A\u7207\u7202\u7205\u72A5\u72A6\u72A4\u72A3\u72A1\u74CB\u74C5\u74B7\u74C3\u7516\u7660\u77C9\u77CA\u77C4\u77F1\u791D\u791B"],["f2a1","\u7921\u791C\u7917\u791E\u79B0\u7A67\u7A68\u7C33\u7C3C\u7C39\u7C2C\u7C3B\u7CEC\u7CEA\u7E76\u7E75\u7E78\u7E70\u7E77\u7E6F\u7E7A\u7E72\u7E74\u7E68\u7F4B\u7F4A\u7F83\u7F86\u7FB7\u7FFD\u7FFE\u8078\u81D7\u81D5\u8264\u8261\u8263\u85EB\u85F1\u85ED\u85D9\u85E1\u85E8\u85DA\u85D7\u85EC\u85F2\u85F8\u85D8\u85DF\u85E3\u85DC\u85D1\u85F0\u85E6\u85EF\u85DE\u85E2\u8800\u87FA\u8803\u87F6\u87F7\u8809\u880C\u880B\u8806\u87FC\u8808\u87FF\u880A\u8802\u8962\u895A\u895B\u8957\u8961\u895C\u8958\u895D\u8959\u8988\u89B7\u89B6\u89F6\u8B50\u8B48\u8B4A\u8B40\u8B53\u8B56\u8B54\u8B4B\u8B55"],["f340","\u8B51\u8B42\u8B52\u8B57\u8C43\u8C77\u8C76\u8C9A\u8D06\u8D07\u8D09\u8DAC\u8DAA\u8DAD\u8DAB\u8E6D\u8E78\u8E73\u8E6A\u8E6F\u8E7B\u8EC2\u8F52\u8F51\u8F4F\u8F50\u8F53\u8FB4\u9140\u913F\u91B0\u91AD\u93DE\u93C7\u93CF\u93C2\u93DA\u93D0\u93F9\u93EC\u93CC\u93D9\u93A9\u93E6\u93CA\u93D4\u93EE\u93E3\u93D5\u93C4\u93CE\u93C0\u93D2\u93E7\u957D\u95DA\u95DB\u96E1\u9729\u972B\u972C\u9728\u9726"],["f3a1","\u97B3\u97B7\u97B6\u97DD\u97DE\u97DF\u985C\u9859\u985D\u9857\u98BF\u98BD\u98BB\u98BE\u9948\u9947\u9943\u99A6\u99A7\u9A1A\u9A15\u9A25\u9A1D\u9A24\u9A1B\u9A22\u9A20\u9A27\u9A23\u9A1E\u9A1C\u9A14\u9AC2\u9B0B\u9B0A\u9B0E\u9B0C\u9B37\u9BEA\u9BEB\u9BE0\u9BDE\u9BE4\u9BE6\u9BE2\u9BF0\u9BD4\u9BD7\u9BEC\u9BDC\u9BD9\u9BE5\u9BD5\u9BE1\u9BDA\u9D77\u9D81\u9D8A\u9D84\u9D88\u9D71\u9D80\u9D78\u9D86\u9D8B\u9D8C\u9D7D\u9D6B\u9D74\u9D75\u9D70\u9D69\u9D85\u9D73\u9D7B\u9D82\u9D6F\u9D79\u9D7F\u9D87\u9D68\u9E94\u9E91\u9EC0\u9EFC\u9F2D\u9F40\u9F41\u9F4D\u9F56\u9F57\u9F58\u5337\u56B2"],["f440","\u56B5\u56B3\u58E3\u5B45\u5DC6\u5DC7\u5EEE\u5EEF\u5FC0\u5FC1\u61F9\u6517\u6516\u6515\u6513\u65DF\u66E8\u66E3\u66E4\u6AF3\u6AF0\u6AEA\u6AE8\u6AF9\u6AF1\u6AEE\u6AEF\u703C\u7035\u702F\u7037\u7034\u7031\u7042\u7038\u703F\u703A\u7039\u7040\u703B\u7033\u7041\u7213\u7214\u72A8\u737D\u737C\u74BA\u76AB\u76AA\u76BE\u76ED\u77CC\u77CE\u77CF\u77CD\u77F2\u7925\u7923\u7927\u7928\u7924\u7929"],["f4a1","\u79B2\u7A6E\u7A6C\u7A6D\u7AF7\u7C49\u7C48\u7C4A\u7C47\u7C45\u7CEE\u7E7B\u7E7E\u7E81\u7E80\u7FBA\u7FFF\u8079\u81DB\u81D9\u820B\u8268\u8269\u8622\u85FF\u8601\u85FE\u861B\u8600\u85F6\u8604\u8609\u8605\u860C\u85FD\u8819\u8810\u8811\u8817\u8813\u8816\u8963\u8966\u89B9\u89F7\u8B60\u8B6A\u8B5D\u8B68\u8B63\u8B65\u8B67\u8B6D\u8DAE\u8E86\u8E88\u8E84\u8F59\u8F56\u8F57\u8F55\u8F58\u8F5A\u908D\u9143\u9141\u91B7\u91B5\u91B2\u91B3\u940B\u9413\u93FB\u9420\u940F\u9414\u93FE\u9415\u9410\u9428\u9419\u940D\u93F5\u9400\u93F7\u9407\u940E\u9416\u9412\u93FA\u9409\u93F8\u940A\u93FF"],["f540","\u93FC\u940C\u93F6\u9411\u9406\u95DE\u95E0\u95DF\u972E\u972F\u97B9\u97BB\u97FD\u97FE\u9860\u9862\u9863\u985F\u98C1\u98C2\u9950\u994E\u9959\u994C\u994B\u9953\u9A32\u9A34\u9A31\u9A2C\u9A2A\u9A36\u9A29\u9A2E\u9A38\u9A2D\u9AC7\u9ACA\u9AC6\u9B10\u9B12\u9B11\u9C0B\u9C08\u9BF7\u9C05\u9C12\u9BF8\u9C40\u9C07\u9C0E\u9C06\u9C17\u9C14\u9C09\u9D9F\u9D99\u9DA4\u9D9D\u9D92\u9D98\u9D90\u9D9B"],["f5a1","\u9DA0\u9D94\u9D9C\u9DAA\u9D97\u9DA1\u9D9A\u9DA2\u9DA8\u9D9E\u9DA3\u9DBF\u9DA9\u9D96\u9DA6\u9DA7\u9E99\u9E9B\u9E9A\u9EE5\u9EE4\u9EE7\u9EE6\u9F30\u9F2E\u9F5B\u9F60\u9F5E\u9F5D\u9F59\u9F91\u513A\u5139\u5298\u5297\u56C3\u56BD\u56BE\u5B48\u5B47\u5DCB\u5DCF\u5EF1\u61FD\u651B\u6B02\u6AFC\u6B03\u6AF8\u6B00\u7043\u7044\u704A\u7048\u7049\u7045\u7046\u721D\u721A\u7219\u737E\u7517\u766A\u77D0\u792D\u7931\u792F\u7C54\u7C53\u7CF2\u7E8A\u7E87\u7E88\u7E8B\u7E86\u7E8D\u7F4D\u7FBB\u8030\u81DD\u8618\u862A\u8626\u861F\u8623\u861C\u8619\u8627\u862E\u8621\u8620\u8629\u861E\u8625"],["f640","\u8829\u881D\u881B\u8820\u8824\u881C\u882B\u884A\u896D\u8969\u896E\u896B\u89FA\u8B79\u8B78\u8B45\u8B7A\u8B7B\u8D10\u8D14\u8DAF\u8E8E\u8E8C\u8F5E\u8F5B\u8F5D\u9146\u9144\u9145\u91B9\u943F\u943B\u9436\u9429\u943D\u943C\u9430\u9439\u942A\u9437\u942C\u9440\u9431\u95E5\u95E4\u95E3\u9735\u973A\u97BF\u97E1\u9864\u98C9\u98C6\u98C0\u9958\u9956\u9A39\u9A3D\u9A46\u9A44\u9A42\u9A41\u9A3A"],["f6a1","\u9A3F\u9ACD\u9B15\u9B17\u9B18\u9B16\u9B3A\u9B52\u9C2B\u9C1D\u9C1C\u9C2C\u9C23\u9C28\u9C29\u9C24\u9C21\u9DB7\u9DB6\u9DBC\u9DC1\u9DC7\u9DCA\u9DCF\u9DBE\u9DC5\u9DC3\u9DBB\u9DB5\u9DCE\u9DB9\u9DBA\u9DAC\u9DC8\u9DB1\u9DAD\u9DCC\u9DB3\u9DCD\u9DB2\u9E7A\u9E9C\u9EEB\u9EEE\u9EED\u9F1B\u9F18\u9F1A\u9F31\u9F4E\u9F65\u9F64\u9F92\u4EB9\u56C6\u56C5\u56CB\u5971\u5B4B\u5B4C\u5DD5\u5DD1\u5EF2\u6521\u6520\u6526\u6522\u6B0B\u6B08\u6B09\u6C0D\u7055\u7056\u7057\u7052\u721E\u721F\u72A9\u737F\u74D8\u74D5\u74D9\u74D7\u766D\u76AD\u7935\u79B4\u7A70\u7A71\u7C57\u7C5C\u7C59\u7C5B\u7C5A"],["f740","\u7CF4\u7CF1\u7E91\u7F4F\u7F87\u81DE\u826B\u8634\u8635\u8633\u862C\u8632\u8636\u882C\u8828\u8826\u882A\u8825\u8971\u89BF\u89BE\u89FB\u8B7E\u8B84\u8B82\u8B86\u8B85\u8B7F\u8D15\u8E95\u8E94\u8E9A\u8E92\u8E90\u8E96\u8E97\u8F60\u8F62\u9147\u944C\u9450\u944A\u944B\u944F\u9447\u9445\u9448\u9449\u9446\u973F\u97E3\u986A\u9869\u98CB\u9954\u995B\u9A4E\u9A53\u9A54\u9A4C\u9A4F\u9A48\u9A4A"],["f7a1","\u9A49\u9A52\u9A50\u9AD0\u9B19\u9B2B\u9B3B\u9B56\u9B55\u9C46\u9C48\u9C3F\u9C44\u9C39\u9C33\u9C41\u9C3C\u9C37\u9C34\u9C32\u9C3D\u9C36\u9DDB\u9DD2\u9DDE\u9DDA\u9DCB\u9DD0\u9DDC\u9DD1\u9DDF\u9DE9\u9DD9\u9DD8\u9DD6\u9DF5\u9DD5\u9DDD\u9EB6\u9EF0\u9F35\u9F33\u9F32\u9F42\u9F6B\u9F95\u9FA2\u513D\u5299\u58E8\u58E7\u5972\u5B4D\u5DD8\u882F\u5F4F\u6201\u6203\u6204\u6529\u6525\u6596\u66EB\u6B11\u6B12\u6B0F\u6BCA\u705B\u705A\u7222\u7382\u7381\u7383\u7670\u77D4\u7C67\u7C66\u7E95\u826C\u863A\u8640\u8639\u863C\u8631\u863B\u863E\u8830\u8832\u882E\u8833\u8976\u8974\u8973\u89FE"],["f840","\u8B8C\u8B8E\u8B8B\u8B88\u8C45\u8D19\u8E98\u8F64\u8F63\u91BC\u9462\u9455\u945D\u9457\u945E\u97C4\u97C5\u9800\u9A56\u9A59\u9B1E\u9B1F\u9B20\u9C52\u9C58\u9C50\u9C4A\u9C4D\u9C4B\u9C55\u9C59\u9C4C\u9C4E\u9DFB\u9DF7\u9DEF\u9DE3\u9DEB\u9DF8\u9DE4\u9DF6\u9DE1\u9DEE\u9DE6\u9DF2\u9DF0\u9DE2\u9DEC\u9DF4\u9DF3\u9DE8\u9DED\u9EC2\u9ED0\u9EF2\u9EF3\u9F06\u9F1C\u9F38\u9F37\u9F36\u9F43\u9F4F"],["f8a1","\u9F71\u9F70\u9F6E\u9F6F\u56D3\u56CD\u5B4E\u5C6D\u652D\u66ED\u66EE\u6B13\u705F\u7061\u705D\u7060\u7223\u74DB\u74E5\u77D5\u7938\u79B7\u79B6\u7C6A\u7E97\u7F89\u826D\u8643\u8838\u8837\u8835\u884B\u8B94\u8B95\u8E9E\u8E9F\u8EA0\u8E9D\u91BE\u91BD\u91C2\u946B\u9468\u9469\u96E5\u9746\u9743\u9747\u97C7\u97E5\u9A5E\u9AD5\u9B59\u9C63\u9C67\u9C66\u9C62\u9C5E\u9C60\u9E02\u9DFE\u9E07\u9E03\u9E06\u9E05\u9E00\u9E01\u9E09\u9DFF\u9DFD\u9E04\u9EA0\u9F1E\u9F46\u9F74\u9F75\u9F76\u56D4\u652E\u65B8\u6B18\u6B19\u6B17\u6B1A\u7062\u7226\u72AA\u77D8\u77D9\u7939\u7C69\u7C6B\u7CF6\u7E9A"],["f940","\u7E98\u7E9B\u7E99\u81E0\u81E1\u8646\u8647\u8648\u8979\u897A\u897C\u897B\u89FF\u8B98\u8B99\u8EA5\u8EA4\u8EA3\u946E\u946D\u946F\u9471\u9473\u9749\u9872\u995F\u9C68\u9C6E\u9C6D\u9E0B\u9E0D\u9E10\u9E0F\u9E12\u9E11\u9EA1\u9EF5\u9F09\u9F47\u9F78\u9F7B\u9F7A\u9F79\u571E\u7066\u7C6F\u883C\u8DB2\u8EA6\u91C3\u9474\u9478\u9476\u9475\u9A60\u9C74\u9C73\u9C71\u9C75\u9E14\u9E13\u9EF6\u9F0A"],["f9a1","\u9FA4\u7068\u7065\u7CF7\u866A\u883E\u883D\u883F\u8B9E\u8C9C\u8EA9\u8EC9\u974B\u9873\u9874\u98CC\u9961\u99AB\u9A64\u9A66\u9A67\u9B24\u9E15\u9E17\u9F48\u6207\u6B1E\u7227\u864C\u8EA8\u9482\u9480\u9481\u9A69\u9A68\u9B2E\u9E19\u7229\u864B\u8B9F\u9483\u9C79\u9EB7\u7675\u9A6B\u9C7A\u9E1D\u7069\u706A\u9EA4\u9F7E\u9F49\u9F98\u7881\u92B9\u88CF\u58BB\u6052\u7CA7\u5AFA\u2554\u2566\u2557\u2560\u256C\u2563\u255A\u2569\u255D\u2552\u2564\u2555\u255E\u256A\u2561\u2558\u2567\u255B\u2553\u2565\u2556\u255F\u256B\u2562\u2559\u2568\u255C\u2551\u2550\u256D\u256E\u2570\u256F\u2593"]]});var jx=P(($W,QC)=>{QC.exports=[["8740","\u43F0\u4C32\u4603\u45A6\u4578\u{27267}\u4D77\u45B3\u{27CB1}\u4CE2\u{27CC5}\u3B95\u4736\u4744\u4C47\u4C40\u{242BF}\u{23617}\u{27352}\u{26E8B}\u{270D2}\u4C57\u{2A351}\u474F\u45DA\u4C85\u{27C6C}\u4D07\u4AA4\u46A1\u{26B23}\u7225\u{25A54}\u{21A63}\u{23E06}\u{23F61}\u664D\u56FB"],["8767","\u7D95\u591D\u{28BB9}\u3DF4\u9734\u{27BEF}\u5BDB\u{21D5E}\u5AA4\u3625\u{29EB0}\u5AD1\u5BB7\u5CFC\u676E\u8593\u{29945}\u7461\u749D\u3875\u{21D53}\u{2369E}\u{26021}\u3EEC"],["87a1","\u{258DE}\u3AF5\u7AFC\u9F97\u{24161}\u{2890D}\u{231EA}\u{20A8A}\u{2325E}\u430A\u8484\u9F96\u942F\u4930\u8613\u5896\u974A\u9218\u79D0\u7A32\u6660\u6A29\u889D\u744C\u7BC5\u6782\u7A2C\u524F\u9046\u34E6\u73C4\u{25DB9}\u74C6\u9FC7\u57B3\u492F\u544C\u4131\u{2368E}\u5818\u7A72\u{27B65}\u8B8F\u46AE\u{26E88}\u4181\u{25D99}\u7BAE\u{224BC}\u9FC8\u{224C1}\u{224C9}\u{224CC}\u9FC9\u8504\u{235BB}\u40B4\u9FCA\u44E1\u{2ADFF}\u62C1\u706E\u9FCB"],["8840","\u31C0",4,"\u{2010C}\u31C5\u{200D1}\u{200CD}\u31C6\u31C7\u{200CB}\u{21FE8}\u31C8\u{200CA}\u31C9\u31CA\u31CB\u31CC\u{2010E}\u31CD\u31CE\u0100\xC1\u01CD\xC0\u0112\xC9\u011A\xC8\u014C\xD3\u01D1\xD2\u0FFF\xCA\u0304\u1EBE\u0FFF\xCA\u030C\u1EC0\xCA\u0101\xE1\u01CE\xE0\u0251\u0113\xE9\u011B\xE8\u012B\xED\u01D0\xEC\u014D\xF3\u01D2\xF2\u016B\xFA\u01D4\xF9\u01D6\u01D8\u01DA"],["88a1","\u01DC\xFC\u0FFF\xEA\u0304\u1EBF\u0FFF\xEA\u030C\u1EC1\xEA\u0261\u23DA\u23DB"],["8940","\u{2A3A9}\u{21145}"],["8943","\u650A"],["8946","\u4E3D\u6EDD\u9D4E\u91DF"],["894c","\u{27735}\u6491\u4F1A\u4F28\u4FA8\u5156\u5174\u519C\u51E4\u52A1\u52A8\u533B\u534E\u53D1\u53D8\u56E2\u58F0\u5904\u5907\u5932\u5934\u5B66\u5B9E\u5B9F\u5C9A\u5E86\u603B\u6589\u67FE\u6804\u6865\u6D4E\u70BC\u7535\u7EA4\u7EAC\u7EBA\u7EC7\u7ECF\u7EDF\u7F06\u7F37\u827A\u82CF\u836F\u89C6\u8BBE\u8BE2\u8F66\u8F67\u8F6E"],["89a1","\u7411\u7CFC\u7DCD\u6946\u7AC9\u5227"],["89ab","\u918C\u78B8\u915E\u80BC"],["89b0","\u8D0B\u80F6\u{209E7}"],["89b5","\u809F\u9EC7\u4CCD\u9DC9\u9E0C\u4C3E\u{29DF6}\u{2700E}\u9E0A\u{2A133}\u35C1"],["89c1","\u6E9A\u823E\u7519"],["89c5","\u4911\u9A6C\u9A8F\u9F99\u7987\u{2846C}\u{21DCA}\u{205D0}\u{22AE6}\u4E24\u4E81\u4E80\u4E87\u4EBF\u4EEB\u4F37\u344C\u4FBD\u3E48\u5003\u5088\u347D\u3493\u34A5\u5186\u5905\u51DB\u51FC\u5205\u4E89\u5279\u5290\u5327\u35C7\u53A9\u3551\u53B0\u3553\u53C2\u5423\u356D\u3572\u3681\u5493\u54A3\u54B4\u54B9\u54D0\u54EF\u5518\u5523\u5528\u3598\u553F\u35A5\u35BF\u55D7\u35C5"],["8a40","\u{27D84}\u5525"],["8a43","\u{20C42}\u{20D15}\u{2512B}\u5590\u{22CC6}\u39EC\u{20341}\u8E46\u{24DB8}\u{294E5}\u4053\u{280BE}\u777A\u{22C38}\u3A34\u47D5\u{2815D}\u{269F2}\u{24DEA}\u64DD\u{20D7C}\u{20FB4}\u{20CD5}\u{210F4}\u648D\u8E7E\u{20E96}\u{20C0B}\u{20F64}\u{22CA9}\u{28256}\u{244D3}"],["8a64","\u{20D46}\u{29A4D}\u{280E9}\u47F4\u{24EA7}\u{22CC2}\u9AB2\u3A67\u{295F4}\u3FED\u3506\u{252C7}\u{297D4}\u{278C8}\u{22D44}\u9D6E\u9815"],["8a76","\u43D9\u{260A5}\u64B4\u54E3\u{22D4C}\u{22BCA}\u{21077}\u39FB\u{2106F}"],["8aa1","\u{266DA}\u{26716}\u{279A0}\u64EA\u{25052}\u{20C43}\u8E68\u{221A1}\u{28B4C}\u{20731}"],["8aac","\u480B\u{201A9}\u3FFA\u5873\u{22D8D}"],["8ab2","\u{245C8}\u{204FC}\u{26097}\u{20F4C}\u{20D96}\u5579\u40BB\u43BA"],["8abb","\u4AB4\u{22A66}\u{2109D}\u81AA\u98F5\u{20D9C}\u6379\u39FE\u{22775}\u8DC0\u56A1\u647C\u3E43"],["8ac9","\u{2A601}\u{20E09}\u{22ACF}\u{22CC9}"],["8ace","\u{210C8}\u{239C2}\u3992\u3A06\u{2829B}\u3578\u{25E49}\u{220C7}\u5652\u{20F31}\u{22CB2}\u{29720}\u34BC\u6C3D\u{24E3B}"],["8adf","\u{27574}\u{22E8B}\u{22208}\u{2A65B}\u{28CCD}\u{20E7A}\u{20C34}\u{2681C}\u7F93\u{210CF}\u{22803}\u{22939}\u35FB\u{251E3}\u{20E8C}\u{20F8D}\u{20EAA}\u3F93\u{20F30}\u{20D47}\u{2114F}\u{20E4C}"],["8af6","\u{20EAB}\u{20BA9}\u{20D48}\u{210C0}\u{2113D}\u3FF9\u{22696}\u6432\u{20FAD}"],["8b40","\u{233F4}\u{27639}\u{22BCE}\u{20D7E}\u{20D7F}\u{22C51}\u{22C55}\u3A18\u{20E98}\u{210C7}\u{20F2E}\u{2A632}\u{26B50}\u{28CD2}\u{28D99}\u{28CCA}\u95AA\u54CC\u82C4\u55B9"],["8b55","\u{29EC3}\u9C26\u9AB6\u{2775E}\u{22DEE}\u7140\u816D\u80EC\u5C1C\u{26572}\u8134\u3797\u535F\u{280BD}\u91B6\u{20EFA}\u{20E0F}\u{20E77}\u{20EFB}\u35DD\u{24DEB}\u3609\u{20CD6}\u56AF\u{227B5}\u{210C9}\u{20E10}\u{20E78}\u{21078}\u{21148}\u{28207}\u{21455}\u{20E79}\u{24E50}\u{22DA4}\u5A54\u{2101D}\u{2101E}\u{210F5}\u{210F6}\u579C\u{20E11}"],["8ba1","\u{27694}\u{282CD}\u{20FB5}\u{20E7B}\u{2517E}\u3703\u{20FB6}\u{21180}\u{252D8}\u{2A2BD}\u{249DA}\u{2183A}\u{24177}\u{2827C}\u5899\u5268\u361A\u{2573D}\u7BB2\u5B68\u4800\u4B2C\u9F27\u49E7\u9C1F\u9B8D\u{25B74}\u{2313D}\u55FB\u35F2\u5689\u4E28\u5902\u{21BC1}\u{2F878}\u9751\u{20086}\u4E5B\u4EBB\u353E\u5C23\u5F51\u5FC4\u38FA\u624C\u6535\u6B7A\u6C35\u6C3A\u706C\u722B\u4E2C\u72AD\u{248E9}\u7F52\u793B\u7CF9\u7F53\u{2626A}\u34C1"],["8bde","\u{2634B}\u8002\u8080\u{26612}\u{26951}\u535D\u8864\u89C1\u{278B2}\u8BA0\u8D1D\u9485\u9578\u957F\u95E8\u{28E0F}\u97E6\u9875\u98CE\u98DE\u9963\u{29810}\u9C7C\u9E1F\u9EC4\u6B6F\uF907\u4E37\u{20087}\u961D\u6237\u94A2"],["8c40","\u503B\u6DFE\u{29C73}\u9FA6\u3DC9\u888F\u{2414E}\u7077\u5CF5\u4B20\u{251CD}\u3559\u{25D30}\u6122\u{28A32}\u8FA7\u91F6\u7191\u6719\u73BA\u{23281}\u{2A107}\u3C8B\u{21980}\u4B10\u78E4\u7402\u51AE\u{2870F}\u4009\u6A63\u{2A2BA}\u4223\u860F\u{20A6F}\u7A2A\u{29947}\u{28AEA}\u9755\u704D\u5324\u{2207E}\u93F4\u76D9\u{289E3}\u9FA7\u77DD\u4EA3\u4FF0\u50BC\u4E2F\u4F17\u9FA8\u5434\u7D8B\u5892\u58D0\u{21DB6}\u5E92\u5E99\u5FC2\u{22712}\u658B"],["8ca1","\u{233F9}\u6919\u6A43\u{23C63}\u6CFF"],["8ca7","\u7200\u{24505}\u738C\u3EDB\u{24A13}\u5B15\u74B9\u8B83\u{25CA4}\u{25695}\u7A93\u7BEC\u7CC3\u7E6C\u82F8\u8597\u9FA9\u8890\u9FAA\u8EB9\u9FAB\u8FCF\u855F\u99E0\u9221\u9FAC\u{28DB9}\u{2143F}\u4071\u42A2\u5A1A"],["8cc9","\u9868\u676B\u4276\u573D"],["8cce","\u85D6\u{2497B}\u82BF\u{2710D}\u4C81\u{26D74}\u5D7B\u{26B15}\u{26FBE}\u9FAD\u9FAE\u5B96\u9FAF\u66E7\u7E5B\u6E57\u79CA\u3D88\u44C3\u{23256}\u{22796}\u439A\u4536"],["8ce6","\u5CD5\u{23B1A}\u8AF9\u5C78\u3D12\u{23551}\u5D78\u9FB2\u7157\u4558\u{240EC}\u{21E23}\u4C77\u3978\u344A\u{201A4}\u{26C41}\u8ACC\u4FB4\u{20239}\u59BF\u816C\u9856\u{298FA}\u5F3B"],["8d40","\u{20B9F}"],["8d42","\u{221C1}\u{2896D}\u4102\u46BB\u{29079}\u3F07\u9FB3\u{2A1B5}\u40F8\u37D6\u46F7\u{26C46}\u417C\u{286B2}\u{273FF}\u456D\u38D4\u{2549A}\u4561\u451B\u4D89\u4C7B\u4D76\u45EA\u3FC8\u{24B0F}\u3661\u44DE\u44BD\u41ED\u5D3E\u5D48\u5D56\u3DFC\u380F\u5DA4\u5DB9\u3820\u3838\u5E42\u5EBD\u5F25\u5F83\u3908\u3914\u393F\u394D\u60D7\u613D\u5CE5\u3989\u61B7\u61B9\u61CF\u39B8\u622C\u6290\u62E5\u6318\u39F8\u56B1"],["8da1","\u3A03\u63E2\u63FB\u6407\u645A\u3A4B\u64C0\u5D15\u5621\u9F9F\u3A97\u6586\u3ABD\u65FF\u6653\u3AF2\u6692\u3B22\u6716\u3B42\u67A4\u6800\u3B58\u684A\u6884\u3B72\u3B71\u3B7B\u6909\u6943\u725C\u6964\u699F\u6985\u3BBC\u69D6\u3BDD\u6A65\u6A74\u6A71\u6A82\u3BEC\u6A99\u3BF2\u6AAB\u6AB5\u6AD4\u6AF6\u6B81\u6BC1\u6BEA\u6C75\u6CAA\u3CCB\u6D02\u6D06\u6D26\u6D81\u3CEF\u6DA4\u6DB1\u6E15\u6E18\u6E29\u6E86\u{289C0}\u6EBB\u6EE2\u6EDA\u9F7F\u6EE8\u6EE9\u6F24\u6F34\u3D46\u{23F41}\u6F81\u6FBE\u3D6A\u3D75\u71B7\u5C99\u3D8A\u702C\u3D91\u7050\u7054\u706F\u707F\u7089\u{20325}\u43C1\u35F1\u{20ED8}"],["8e40","\u{23ED7}\u57BE\u{26ED3}\u713E\u{257E0}\u364E\u69A2\u{28BE9}\u5B74\u7A49\u{258E1}\u{294D9}\u7A65\u7A7D\u{259AC}\u7ABB\u7AB0\u7AC2\u7AC3\u71D1\u{2648D}\u41CA\u7ADA\u7ADD\u7AEA\u41EF\u54B2\u{25C01}\u7B0B\u7B55\u7B29\u{2530E}\u{25CFE}\u7BA2\u7B6F\u839C\u{25BB4}\u{26C7F}\u7BD0\u8421\u7B92\u7BB8\u{25D20}\u3DAD\u{25C65}\u8492\u7BFA\u7C06\u7C35\u{25CC1}\u7C44\u7C83\u{24882}\u7CA6\u667D\u{24578}\u7CC9\u7CC7\u7CE6\u7C74\u7CF3\u7CF5\u7CCE"],["8ea1","\u7E67\u451D\u{26E44}\u7D5D\u{26ED6}\u748D\u7D89\u7DAB\u7135\u7DB3\u7DD2\u{24057}\u{26029}\u7DE4\u3D13\u7DF5\u{217F9}\u7DE5\u{2836D}\u7E1D\u{26121}\u{2615A}\u7E6E\u7E92\u432B\u946C\u7E27\u7F40\u7F41\u7F47\u7936\u{262D0}\u99E1\u7F97\u{26351}\u7FA3\u{21661}\u{20068}\u455C\u{23766}\u4503\u{2833A}\u7FFA\u{26489}\u8005\u8008\u801D\u8028\u802F\u{2A087}\u{26CC3}\u803B\u803C\u8061\u{22714}\u4989\u{26626}\u{23DE3}\u{266E8}\u6725\u80A7\u{28A48}\u8107\u811A\u58B0\u{226F6}\u6C7F\u{26498}\u{24FB8}\u64E7\u{2148A}\u8218\u{2185E}\u6A53\u{24A65}\u{24A95}\u447A\u8229\u{20B0D}\u{26A52}\u{23D7E}\u4FF9\u{214FD}\u84E2\u8362\u{26B0A}\u{249A7}\u{23530}\u{21773}\u{23DF8}\u82AA\u691B\u{2F994}\u41DB"],["8f40","\u854B\u82D0\u831A\u{20E16}\u{217B4}\u36C1\u{2317D}\u{2355A}\u827B\u82E2\u8318\u{23E8B}\u{26DA3}\u{26B05}\u{26B97}\u{235CE}\u3DBF\u831D\u55EC\u8385\u450B\u{26DA5}\u83AC\u83C1\u83D3\u347E\u{26ED4}\u6A57\u855A\u3496\u{26E42}\u{22EEF}\u8458\u{25BE4}\u8471\u3DD3\u44E4\u6AA7\u844A\u{23CB5}\u7958\u84A8\u{26B96}\u{26E77}\u{26E43}\u84DE\u840F\u8391\u44A0\u8493\u84E4\u{25C91}\u4240\u{25CC0}\u4543\u8534\u5AF2\u{26E99}\u4527\u8573\u4516\u67BF\u8616"],["8fa1","\u{28625}\u{2863B}\u85C1\u{27088}\u8602\u{21582}\u{270CD}\u{2F9B2}\u456A\u8628\u3648\u{218A2}\u53F7\u{2739A}\u867E\u8771\u{2A0F8}\u87EE\u{22C27}\u87B1\u87DA\u880F\u5661\u866C\u6856\u460F\u8845\u8846\u{275E0}\u{23DB9}\u{275E4}\u885E\u889C\u465B\u88B4\u88B5\u63C1\u88C5\u7777\u{2770F}\u8987\u898A\u89A6\u89A9\u89A7\u89BC\u{28A25}\u89E7\u{27924}\u{27ABD}\u8A9C\u7793\u91FE\u8A90\u{27A59}\u7AE9\u{27B3A}\u{23F8F}\u4713\u{27B38}\u717C\u8B0C\u8B1F\u{25430}\u{25565}\u8B3F\u8B4C\u8B4D\u8AA9\u{24A7A}\u8B90\u8B9B\u8AAF\u{216DF}\u4615\u884F\u8C9B\u{27D54}\u{27D8F}\u{2F9D4}\u3725\u{27D53}\u8CD6\u{27D98}\u{27DBD}\u8D12\u8D03\u{21910}\u8CDB\u705C\u8D11\u{24CC9}\u3ED0\u8D77"],["9040","\u8DA9\u{28002}\u{21014}\u{2498A}\u3B7C\u{281BC}\u{2710C}\u7AE7\u8EAD\u8EB6\u8EC3\u92D4\u8F19\u8F2D\u{28365}\u{28412}\u8FA5\u9303\u{2A29F}\u{20A50}\u8FB3\u492A\u{289DE}\u{2853D}\u{23DBB}\u5EF8\u{23262}\u8FF9\u{2A014}\u{286BC}\u{28501}\u{22325}\u3980\u{26ED7}\u9037\u{2853C}\u{27ABE}\u9061\u{2856C}\u{2860B}\u90A8\u{28713}\u90C4\u{286E6}\u90AE\u90FD\u9167\u3AF0\u91A9\u91C4\u7CAC\u{28933}\u{21E89}\u920E\u6C9F\u9241\u9262\u{255B9}\u92B9\u{28AC6}\u{23C9B}\u{28B0C}\u{255DB}"],["90a1","\u{20D31}\u932C\u936B\u{28AE1}\u{28BEB}\u708F\u5AC3\u{28AE2}\u{28AE5}\u4965\u9244\u{28BEC}\u{28C39}\u{28BFF}\u9373\u945B\u8EBC\u9585\u95A6\u9426\u95A0\u6FF6\u42B9\u{2267A}\u{286D8}\u{2127C}\u{23E2E}\u49DF\u6C1C\u967B\u9696\u416C\u96A3\u{26ED5}\u61DA\u96B6\u78F5\u{28AE0}\u96BD\u53CC\u49A1\u{26CB8}\u{20274}\u{26410}\u{290AF}\u{290E5}\u{24AD1}\u{21915}\u{2330A}\u9731\u8642\u9736\u4A0F\u453D\u4585\u{24AE9}\u7075\u5B41\u971B\u975C\u{291D5}\u9757\u5B4A\u{291EB}\u975F\u9425\u50D0\u{230B7}\u{230BC}\u9789\u979F\u97B1\u97BE\u97C0\u97D2\u97E0\u{2546C}\u97EE\u741C\u{29433}\u97FF\u97F5\u{2941D}\u{2797A}\u4AD1\u9834\u9833\u984B\u9866\u3B0E\u{27175}\u3D51\u{20630}\u{2415C}"],["9140","\u{25706}\u98CA\u98B7\u98C8\u98C7\u4AFF\u{26D27}\u{216D3}\u55B0\u98E1\u98E6\u98EC\u9378\u9939\u{24A29}\u4B72\u{29857}\u{29905}\u99F5\u9A0C\u9A3B\u9A10\u9A58\u{25725}\u36C4\u{290B1}\u{29BD5}\u9AE0\u9AE2\u{29B05}\u9AF4\u4C0E\u9B14\u9B2D\u{28600}\u5034\u9B34\u{269A8}\u38C3\u{2307D}\u9B50\u9B40\u{29D3E}\u5A45\u{21863}\u9B8E\u{2424B}\u9C02\u9BFF\u9C0C\u{29E68}\u9DD4\u{29FB7}\u{2A192}\u{2A1AB}\u{2A0E1}\u{2A123}\u{2A1DF}\u9D7E\u9D83\u{2A134}\u9E0E\u6888"],["91a1","\u9DC4\u{2215B}\u{2A193}\u{2A220}\u{2193B}\u{2A233}\u9D39\u{2A0B9}\u{2A2B4}\u9E90\u9E95\u9E9E\u9EA2\u4D34\u9EAA\u9EAF\u{24364}\u9EC1\u3B60\u39E5\u3D1D\u4F32\u37BE\u{28C2B}\u9F02\u9F08\u4B96\u9424\u{26DA2}\u9F17\u9F16\u9F39\u569F\u568A\u9F45\u99B8\u{2908B}\u97F2\u847F\u9F62\u9F69\u7ADC\u9F8E\u7216\u4BBE\u{24975}\u{249BB}\u7177\u{249F8}\u{24348}\u{24A51}\u739E\u{28BDA}\u{218FA}\u799F\u{2897E}\u{28E36}\u9369\u93F3\u{28A44}\u92EC\u9381\u93CB\u{2896C}\u{244B9}\u7217\u3EEB\u7772\u7A43\u70D0\u{24473}\u{243F8}\u717E\u{217EF}\u70A3\u{218BE}\u{23599}\u3EC7\u{21885}\u{2542F}\u{217F8}\u3722\u{216FB}\u{21839}\u36E1\u{21774}\u{218D1}\u{25F4B}\u3723\u{216C0}\u575B\u{24A25}\u{213FE}\u{212A8}"],["9240","\u{213C6}\u{214B6}\u8503\u{236A6}\u8503\u8455\u{24994}\u{27165}\u{23E31}\u{2555C}\u{23EFB}\u{27052}\u44F4\u{236EE}\u{2999D}\u{26F26}\u67F9\u3733\u3C15\u3DE7\u586C\u{21922}\u6810\u4057\u{2373F}\u{240E1}\u{2408B}\u{2410F}\u{26C21}\u54CB\u569E\u{266B1}\u5692\u{20FDF}\u{20BA8}\u{20E0D}\u93C6\u{28B13}\u939C\u4EF8\u512B\u3819\u{24436}\u4EBC\u{20465}\u{2037F}\u4F4B\u4F8A\u{25651}\u5A68\u{201AB}\u{203CB}\u3999\u{2030A}\u{20414}\u3435\u4F29\u{202C0}\u{28EB3}\u{20275}\u8ADA\u{2020C}\u4E98"],["92a1","\u50CD\u510D\u4FA2\u4F03\u{24A0E}\u{23E8A}\u4F42\u502E\u506C\u5081\u4FCC\u4FE5\u5058\u50FC\u5159\u515B\u515D\u515E\u6E76\u{23595}\u{23E39}\u{23EBF}\u6D72\u{21884}\u{23E89}\u51A8\u51C3\u{205E0}\u44DD\u{204A3}\u{20492}\u{20491}\u8D7A\u{28A9C}\u{2070E}\u5259\u52A4\u{20873}\u52E1\u936E\u467A\u718C\u{2438C}\u{20C20}\u{249AC}\u{210E4}\u69D1\u{20E1D}\u7479\u3EDE\u7499\u7414\u7456\u7398\u4B8E\u{24ABC}\u{2408D}\u53D0\u3584\u720F\u{240C9}\u55B4\u{20345}\u54CD\u{20BC6}\u571D\u925D\u96F4\u9366\u57DD\u578D\u577F\u363E\u58CB\u5A99\u{28A46}\u{216FA}\u{2176F}\u{21710}\u5A2C\u59B8\u928F\u5A7E\u5ACF\u5A12\u{25946}\u{219F3}\u{21861}\u{24295}\u36F5\u6D05\u7443\u5A21\u{25E83}"],["9340","\u5A81\u{28BD7}\u{20413}\u93E0\u748C\u{21303}\u7105\u4972\u9408\u{289FB}\u93BD\u37A0\u5C1E\u5C9E\u5E5E\u5E48\u{21996}\u{2197C}\u{23AEE}\u5ECD\u5B4F\u{21903}\u{21904}\u3701\u{218A0}\u36DD\u{216FE}\u36D3\u812A\u{28A47}\u{21DBA}\u{23472}\u{289A8}\u5F0C\u5F0E\u{21927}\u{217AB}\u5A6B\u{2173B}\u5B44\u8614\u{275FD}\u8860\u607E\u{22860}\u{2262B}\u5FDB\u3EB8\u{225AF}\u{225BE}\u{29088}\u{26F73}\u61C0\u{2003E}\u{20046}\u{2261B}\u6199\u6198\u6075\u{22C9B}\u{22D07}\u{246D4}\u{2914D}"],["93a1","\u6471\u{24665}\u{22B6A}\u3A29\u{22B22}\u{23450}\u{298EA}\u{22E78}\u6337\u{2A45B}\u64B6\u6331\u63D1\u{249E3}\u{22D67}\u62A4\u{22CA1}\u643B\u656B\u6972\u3BF4\u{2308E}\u{232AD}\u{24989}\u{232AB}\u550D\u{232E0}\u{218D9}\u{2943F}\u66CE\u{23289}\u{231B3}\u3AE0\u4190\u{25584}\u{28B22}\u{2558F}\u{216FC}\u{2555B}\u{25425}\u78EE\u{23103}\u{2182A}\u{23234}\u3464\u{2320F}\u{23182}\u{242C9}\u668E\u{26D24}\u666B\u4B93\u6630\u{27870}\u{21DEB}\u6663\u{232D2}\u{232E1}\u661E\u{25872}\u38D1\u{2383A}\u{237BC}\u3B99\u{237A2}\u{233FE}\u74D0\u3B96\u678F\u{2462A}\u68B6\u681E\u3BC4\u6ABE\u3863\u{237D5}\u{24487}\u6A33\u6A52\u6AC9\u6B05\u{21912}\u6511\u6898\u6A4C\u3BD7\u6A7A\u6B57\u{23FC0}\u{23C9A}\u93A0\u92F2\u{28BEA}\u{28ACB}"],["9440","\u9289\u{2801E}\u{289DC}\u9467\u6DA5\u6F0B\u{249EC}\u6D67\u{23F7F}\u3D8F\u6E04\u{2403C}\u5A3D\u6E0A\u5847\u6D24\u7842\u713B\u{2431A}\u{24276}\u70F1\u7250\u7287\u7294\u{2478F}\u{24725}\u5179\u{24AA4}\u{205EB}\u747A\u{23EF8}\u{2365F}\u{24A4A}\u{24917}\u{25FE1}\u3F06\u3EB1\u{24ADF}\u{28C23}\u{23F35}\u60A7\u3EF3\u74CC\u743C\u9387\u7437\u449F\u{26DEA}\u4551\u7583\u3F63\u{24CD9}\u{24D06}\u3F58\u7555\u7673\u{2A5C6}\u3B19\u7468\u{28ACC}\u{249AB}\u{2498E}\u3AFB"],["94a1","\u3DCD\u{24A4E}\u3EFF\u{249C5}\u{248F3}\u91FA\u5732\u9342\u{28AE3}\u{21864}\u50DF\u{25221}\u{251E7}\u7778\u{23232}\u770E\u770F\u777B\u{24697}\u{23781}\u3A5E\u{248F0}\u7438\u749B\u3EBF\u{24ABA}\u{24AC7}\u40C8\u{24A96}\u{261AE}\u9307\u{25581}\u781E\u788D\u7888\u78D2\u73D0\u7959\u{27741}\u{256E3}\u410E\u799B\u8496\u79A5\u6A2D\u{23EFA}\u7A3A\u79F4\u416E\u{216E6}\u4132\u9235\u79F1\u{20D4C}\u{2498C}\u{20299}\u{23DBA}\u{2176E}\u3597\u556B\u3570\u36AA\u{201D4}\u{20C0D}\u7AE2\u5A59\u{226F5}\u{25AAF}\u{25A9C}\u5A0D\u{2025B}\u78F0\u5A2A\u{25BC6}\u7AFE\u41F9\u7C5D\u7C6D\u4211\u{25BB3}\u{25EBC}\u{25EA6}\u7CCD\u{249F9}\u{217B0}\u7C8E\u7C7C\u7CAE\u6AB2\u7DDC\u7E07\u7DD3\u7F4E\u{26261}"],["9540","\u{2615C}\u{27B48}\u7D97\u{25E82}\u426A\u{26B75}\u{20916}\u67D6\u{2004E}\u{235CF}\u57C4\u{26412}\u{263F8}\u{24962}\u7FDD\u7B27\u{2082C}\u{25AE9}\u{25D43}\u7B0C\u{25E0E}\u99E6\u8645\u9A63\u6A1C\u{2343F}\u39E2\u{249F7}\u{265AD}\u9A1F\u{265A0}\u8480\u{27127}\u{26CD1}\u44EA\u8137\u4402\u80C6\u8109\u8142\u{267B4}\u98C3\u{26A42}\u8262\u8265\u{26A51}\u8453\u{26DA7}\u8610\u{2721B}\u5A86\u417F\u{21840}\u5B2B\u{218A1}\u5AE4\u{218D8}\u86A0\u{2F9BC}\u{23D8F}\u882D\u{27422}\u5A02"],["95a1","\u886E\u4F45\u8887\u88BF\u88E6\u8965\u894D\u{25683}\u8954\u{27785}\u{27784}\u{28BF5}\u{28BD9}\u{28B9C}\u{289F9}\u3EAD\u84A3\u46F5\u46CF\u37F2\u8A3D\u8A1C\u{29448}\u5F4D\u922B\u{24284}\u65D4\u7129\u70C4\u{21845}\u9D6D\u8C9F\u8CE9\u{27DDC}\u599A\u77C3\u59F0\u436E\u36D4\u8E2A\u8EA7\u{24C09}\u8F30\u8F4A\u42F4\u6C58\u6FBB\u{22321}\u489B\u6F79\u6E8B\u{217DA}\u9BE9\u36B5\u{2492F}\u90BB\u9097\u5571\u4906\u91BB\u9404\u{28A4B}\u4062\u{28AFC}\u9427\u{28C1D}\u{28C3B}\u84E5\u8A2B\u9599\u95A7\u9597\u9596\u{28D34}\u7445\u3EC2\u{248FF}\u{24A42}\u{243EA}\u3EE7\u{23225}\u968F\u{28EE7}\u{28E66}\u{28E65}\u3ECC\u{249ED}\u{24A78}\u{23FEE}\u7412\u746B\u3EFC\u9741\u{290B0}"],["9640","\u6847\u4A1D\u{29093}\u{257DF}\u975D\u9368\u{28989}\u{28C26}\u{28B2F}\u{263BE}\u92BA\u5B11\u8B69\u493C\u73F9\u{2421B}\u979B\u9771\u9938\u{20F26}\u5DC1\u{28BC5}\u{24AB2}\u981F\u{294DA}\u92F6\u{295D7}\u91E5\u44C0\u{28B50}\u{24A67}\u{28B64}\u98DC\u{28A45}\u3F00\u922A\u4925\u8414\u993B\u994D\u{27B06}\u3DFD\u999B\u4B6F\u99AA\u9A5C\u{28B65}\u{258C8}\u6A8F\u9A21\u5AFE\u9A2F\u{298F1}\u4B90\u{29948}\u99BC\u4BBD\u4B97\u937D\u5872\u{21302}\u5822\u{249B8}"],["96a1","\u{214E8}\u7844\u{2271F}\u{23DB8}\u68C5\u3D7D\u9458\u3927\u6150\u{22781}\u{2296B}\u6107\u9C4F\u9C53\u9C7B\u9C35\u9C10\u9B7F\u9BCF\u{29E2D}\u9B9F\u{2A1F5}\u{2A0FE}\u9D21\u4CAE\u{24104}\u9E18\u4CB0\u9D0C\u{2A1B4}\u{2A0ED}\u{2A0F3}\u{2992F}\u9DA5\u84BD\u{26E12}\u{26FDF}\u{26B82}\u85FC\u4533\u{26DA4}\u{26E84}\u{26DF0}\u8420\u85EE\u{26E00}\u{237D7}\u{26064}\u79E2\u{2359C}\u{23640}\u492D\u{249DE}\u3D62\u93DB\u92BE\u9348\u{202BF}\u78B9\u9277\u944D\u4FE4\u3440\u9064\u{2555D}\u783D\u7854\u78B6\u784B\u{21757}\u{231C9}\u{24941}\u369A\u4F72\u6FDA\u6FD9\u701E\u701E\u5414\u{241B5}\u57BB\u58F3\u578A\u9D16\u57D7\u7134\u34AF\u{241AC}\u71EB\u{26C40}\u{24F97}\u5B28\u{217B5}\u{28A49}"],["9740","\u610C\u5ACE\u5A0B\u42BC\u{24488}\u372C\u4B7B\u{289FC}\u93BB\u93B8\u{218D6}\u{20F1D}\u8472\u{26CC0}\u{21413}\u{242FA}\u{22C26}\u{243C1}\u5994\u{23DB7}\u{26741}\u7DA8\u{2615B}\u{260A4}\u{249B9}\u{2498B}\u{289FA}\u92E5\u73E2\u3EE9\u74B4\u{28B63}\u{2189F}\u3EE1\u{24AB3}\u6AD8\u73F3\u73FB\u3ED6\u{24A3E}\u{24A94}\u{217D9}\u{24A66}\u{203A7}\u{21424}\u{249E5}\u7448\u{24916}\u70A5\u{24976}\u9284\u73E6\u935F\u{204FE}\u9331\u{28ACE}\u{28A16}\u9386\u{28BE7}\u{255D5}\u4935\u{28A82}\u716B"],["97a1","\u{24943}\u{20CFF}\u56A4\u{2061A}\u{20BEB}\u{20CB8}\u5502\u79C4\u{217FA}\u7DFE\u{216C2}\u{24A50}\u{21852}\u452E\u9401\u370A\u{28AC0}\u{249AD}\u59B0\u{218BF}\u{21883}\u{27484}\u5AA1\u36E2\u{23D5B}\u36B0\u925F\u5A79\u{28A81}\u{21862}\u9374\u3CCD\u{20AB4}\u4A96\u398A\u50F4\u3D69\u3D4C\u{2139C}\u7175\u42FB\u{28218}\u6E0F\u{290E4}\u44EB\u6D57\u{27E4F}\u7067\u6CAF\u3CD6\u{23FED}\u{23E2D}\u6E02\u6F0C\u3D6F\u{203F5}\u7551\u36BC\u34C8\u4680\u3EDA\u4871\u59C4\u926E\u493E\u8F41\u{28C1C}\u{26BC0}\u5812\u57C8\u36D6\u{21452}\u70FE\u{24362}\u{24A71}\u{22FE3}\u{212B0}\u{223BD}\u68B9\u6967\u{21398}\u{234E5}\u{27BF4}\u{236DF}\u{28A83}\u{237D6}\u{233FA}\u{24C9F}\u6A1A\u{236AD}\u{26CB7}\u843E\u44DF\u44CE"],["9840","\u{26D26}\u{26D51}\u{26C82}\u{26FDE}\u6F17\u{27109}\u833D\u{2173A}\u83ED\u{26C80}\u{27053}\u{217DB}\u5989\u5A82\u{217B3}\u5A61\u5A71\u{21905}\u{241FC}\u372D\u59EF\u{2173C}\u36C7\u718E\u9390\u669A\u{242A5}\u5A6E\u5A2B\u{24293}\u6A2B\u{23EF9}\u{27736}\u{2445B}\u{242CA}\u711D\u{24259}\u{289E1}\u4FB0\u{26D28}\u5CC2\u{244CE}\u{27E4D}\u{243BD}\u6A0C\u{24256}\u{21304}\u70A6\u7133\u{243E9}\u3DA5\u6CDF\u{2F825}\u{24A4F}\u7E65\u59EB\u5D2F\u3DF3\u5F5C\u{24A5D}\u{217DF}\u7DA4\u8426"],["98a1","\u5485\u{23AFA}\u{23300}\u{20214}\u577E\u{208D5}\u{20619}\u3FE5\u{21F9E}\u{2A2B6}\u7003\u{2915B}\u5D70\u738F\u7CD3\u{28A59}\u{29420}\u4FC8\u7FE7\u72CD\u7310\u{27AF4}\u7338\u7339\u{256F6}\u7341\u7348\u3EA9\u{27B18}\u906C\u71F5\u{248F2}\u73E1\u81F6\u3ECA\u770C\u3ED1\u6CA2\u56FD\u7419\u741E\u741F\u3EE2\u3EF0\u3EF4\u3EFA\u74D3\u3F0E\u3F53\u7542\u756D\u7572\u758D\u3F7C\u75C8\u75DC\u3FC0\u764D\u3FD7\u7674\u3FDC\u767A\u{24F5C}\u7188\u5623\u8980\u5869\u401D\u7743\u4039\u6761\u4045\u35DB\u7798\u406A\u406F\u5C5E\u77BE\u77CB\u58F2\u7818\u70B9\u781C\u40A8\u7839\u7847\u7851\u7866\u8448\u{25535}\u7933\u6803\u7932\u4103"],["9940","\u4109\u7991\u7999\u8FBB\u7A06\u8FBC\u4167\u7A91\u41B2\u7ABC\u8279\u41C4\u7ACF\u7ADB\u41CF\u4E21\u7B62\u7B6C\u7B7B\u7C12\u7C1B\u4260\u427A\u7C7B\u7C9C\u428C\u7CB8\u4294\u7CED\u8F93\u70C0\u{20CCF}\u7DCF\u7DD4\u7DD0\u7DFD\u7FAE\u7FB4\u729F\u4397\u8020\u8025\u7B39\u802E\u8031\u8054\u3DCC\u57B4\u70A0\u80B7\u80E9\u43ED\u810C\u732A\u810E\u8112\u7560\u8114\u4401\u3B39\u8156\u8159\u815A"],["99a1","\u4413\u583A\u817C\u8184\u4425\u8193\u442D\u81A5\u57EF\u81C1\u81E4\u8254\u448F\u82A6\u8276\u82CA\u82D8\u82FF\u44B0\u8357\u9669\u698A\u8405\u70F5\u8464\u60E3\u8488\u4504\u84BE\u84E1\u84F8\u8510\u8538\u8552\u453B\u856F\u8570\u85E0\u4577\u8672\u8692\u86B2\u86EF\u9645\u878B\u4606\u4617\u88AE\u88FF\u8924\u8947\u8991\u{27967}\u8A29\u8A38\u8A94\u8AB4\u8C51\u8CD4\u8CF2\u8D1C\u4798\u585F\u8DC3\u47ED\u4EEE\u8E3A\u55D8\u5754\u8E71\u55F5\u8EB0\u4837\u8ECE\u8EE2\u8EE4\u8EED\u8EF2\u8FB7\u8FC1\u8FCA\u8FCC\u9033\u99C4\u48AD\u98E0\u9213\u491E\u9228\u9258\u926B\u92B1\u92AE\u92BF"],["9a40","\u92E3\u92EB\u92F3\u92F4\u92FD\u9343\u9384\u93AD\u4945\u4951\u9EBF\u9417\u5301\u941D\u942D\u943E\u496A\u9454\u9479\u952D\u95A2\u49A7\u95F4\u9633\u49E5\u67A0\u4A24\u9740\u4A35\u97B2\u97C2\u5654\u4AE4\u60E8\u98B9\u4B19\u98F1\u5844\u990E\u9919\u51B4\u991C\u9937\u9942\u995D\u9962\u4B70\u99C5\u4B9D\u9A3C\u9B0F\u7A83\u9B69\u9B81\u9BDD\u9BF1\u9BF4\u4C6D\u9C20\u376F\u{21BC2}\u9D49\u9C3A"],["9aa1","\u9EFE\u5650\u9D93\u9DBD\u9DC0\u9DFC\u94F6\u8FB6\u9E7B\u9EAC\u9EB1\u9EBD\u9EC6\u94DC\u9EE2\u9EF1\u9EF8\u7AC8\u9F44\u{20094}\u{202B7}\u{203A0}\u691A\u94C3\u59AC\u{204D7}\u5840\u94C1\u37B9\u{205D5}\u{20615}\u{20676}\u{216BA}\u5757\u7173\u{20AC2}\u{20ACD}\u{20BBF}\u546A\u{2F83B}\u{20BCB}\u549E\u{20BFB}\u{20C3B}\u{20C53}\u{20C65}\u{20C7C}\u60E7\u{20C8D}\u567A\u{20CB5}\u{20CDD}\u{20CED}\u{20D6F}\u{20DB2}\u{20DC8}\u6955\u9C2F\u87A5\u{20E04}\u{20E0E}\u{20ED7}\u{20F90}\u{20F2D}\u{20E73}\u5C20\u{20FBC}\u5E0B\u{2105C}\u{2104F}\u{21076}\u671E\u{2107B}\u{21088}\u{21096}\u3647\u{210BF}\u{210D3}\u{2112F}\u{2113B}\u5364\u84AD\u{212E3}\u{21375}\u{21336}\u8B81\u{21577}\u{21619}\u{217C3}\u{217C7}\u4E78\u70BB\u{2182D}\u{2196A}"],["9b40","\u{21A2D}\u{21A45}\u{21C2A}\u{21C70}\u{21CAC}\u{21EC8}\u62C3\u{21ED5}\u{21F15}\u7198\u6855\u{22045}\u69E9\u36C8\u{2227C}\u{223D7}\u{223FA}\u{2272A}\u{22871}\u{2294F}\u82FD\u{22967}\u{22993}\u{22AD5}\u89A5\u{22AE8}\u8FA0\u{22B0E}\u97B8\u{22B3F}\u9847\u9ABD\u{22C4C}"],["9b62","\u{22C88}\u{22CB7}\u{25BE8}\u{22D08}\u{22D12}\u{22DB7}\u{22D95}\u{22E42}\u{22F74}\u{22FCC}\u{23033}\u{23066}\u{2331F}\u{233DE}\u5FB1\u6648\u66BF\u{27A79}\u{23567}\u{235F3}\u7201\u{249BA}\u77D7\u{2361A}\u{23716}\u7E87\u{20346}\u58B5\u670E"],["9ba1","\u6918\u{23AA7}\u{27657}\u{25FE2}\u{23E11}\u{23EB9}\u{275FE}\u{2209A}\u48D0\u4AB8\u{24119}\u{28A9A}\u{242EE}\u{2430D}\u{2403B}\u{24334}\u{24396}\u{24A45}\u{205CA}\u51D2\u{20611}\u599F\u{21EA8}\u3BBE\u{23CFF}\u{24404}\u{244D6}\u5788\u{24674}\u399B\u{2472F}\u{285E8}\u{299C9}\u3762\u{221C3}\u8B5E\u{28B4E}\u99D6\u{24812}\u{248FB}\u{24A15}\u7209\u{24AC0}\u{20C78}\u5965\u{24EA5}\u{24F86}\u{20779}\u8EDA\u{2502C}\u528F\u573F\u7171\u{25299}\u{25419}\u{23F4A}\u{24AA7}\u55BC\u{25446}\u{2546E}\u{26B52}\u91D4\u3473\u{2553F}\u{27632}\u{2555E}\u4718\u{25562}\u{25566}\u{257C7}\u{2493F}\u{2585D}\u5066\u34FB\u{233CC}\u60DE\u{25903}\u477C\u{28948}\u{25AAE}\u{25B89}\u{25C06}\u{21D90}\u57A1\u7151\u6FB6\u{26102}\u{27C12}\u9056\u{261B2}\u{24F9A}\u8B62\u{26402}\u{2644A}"],["9c40","\u5D5B\u{26BF7}\u8F36\u{26484}\u{2191C}\u8AEA\u{249F6}\u{26488}\u{23FEF}\u{26512}\u4BC0\u{265BF}\u{266B5}\u{2271B}\u9465\u{257E1}\u6195\u5A27\u{2F8CD}\u4FBB\u56B9\u{24521}\u{266FC}\u4E6A\u{24934}\u9656\u6D8F\u{26CBD}\u3618\u8977\u{26799}\u{2686E}\u{26411}\u{2685E}\u71DF\u{268C7}\u7B42\u{290C0}\u{20A11}\u{26926}\u9104\u{26939}\u7A45\u9DF0\u{269FA}\u9A26\u{26A2D}\u365F\u{26469}\u{20021}\u7983\u{26A34}\u{26B5B}\u5D2C\u{23519}\u83CF\u{26B9D}\u46D0\u{26CA4}\u753B\u8865\u{26DAE}\u58B6"],["9ca1","\u371C\u{2258D}\u{2704B}\u{271CD}\u3C54\u{27280}\u{27285}\u9281\u{2217A}\u{2728B}\u9330\u{272E6}\u{249D0}\u6C39\u949F\u{27450}\u{20EF8}\u8827\u88F5\u{22926}\u{28473}\u{217B1}\u6EB8\u{24A2A}\u{21820}\u39A4\u36B9\u5C10\u79E3\u453F\u66B6\u{29CAD}\u{298A4}\u8943\u{277CC}\u{27858}\u56D6\u40DF\u{2160A}\u39A1\u{2372F}\u{280E8}\u{213C5}\u71AD\u8366\u{279DD}\u{291A8}\u5A67\u4CB7\u{270AF}\u{289AB}\u{279FD}\u{27A0A}\u{27B0B}\u{27D66}\u{2417A}\u7B43\u797E\u{28009}\u6FB5\u{2A2DF}\u6A03\u{28318}\u53A2\u{26E07}\u93BF\u6836\u975D\u{2816F}\u{28023}\u{269B5}\u{213ED}\u{2322F}\u{28048}\u5D85\u{28C30}\u{28083}\u5715\u9823\u{28949}\u5DAB\u{24988}\u65BE\u69D5\u53D2\u{24AA5}\u{23F81}\u3C11\u6736\u{28090}\u{280F4}\u{2812E}\u{21FA1}\u{2814F}"],["9d40","\u{28189}\u{281AF}\u{2821A}\u{28306}\u{2832F}\u{2838A}\u35CA\u{28468}\u{286AA}\u48FA\u63E6\u{28956}\u7808\u9255\u{289B8}\u43F2\u{289E7}\u43DF\u{289E8}\u{28B46}\u{28BD4}\u59F8\u{28C09}\u8F0B\u{28FC5}\u{290EC}\u7B51\u{29110}\u{2913C}\u3DF7\u{2915E}\u{24ACA}\u8FD0\u728F\u568B\u{294E7}\u{295E9}\u{295B0}\u{295B8}\u{29732}\u{298D1}\u{29949}\u{2996A}\u{299C3}\u{29A28}\u{29B0E}\u{29D5A}\u{29D9B}\u7E9F\u{29EF8}\u{29F23}\u4CA4\u9547\u{2A293}\u71A2\u{2A2FF}\u4D91\u9012\u{2A5CB}\u4D9C\u{20C9C}\u8FBE\u55C1"],["9da1","\u8FBA\u{224B0}\u8FB9\u{24A93}\u4509\u7E7F\u6F56\u6AB1\u4EEA\u34E4\u{28B2C}\u{2789D}\u373A\u8E80\u{217F5}\u{28024}\u{28B6C}\u{28B99}\u{27A3E}\u{266AF}\u3DEB\u{27655}\u{23CB7}\u{25635}\u{25956}\u4E9A\u{25E81}\u{26258}\u56BF\u{20E6D}\u8E0E\u5B6D\u{23E88}\u{24C9E}\u63DE\u62D0\u{217F6}\u{2187B}\u6530\u562D\u{25C4A}\u541A\u{25311}\u3DC6\u{29D98}\u4C7D\u5622\u561E\u7F49\u{25ED8}\u5975\u{23D40}\u8770\u4E1C\u{20FEA}\u{20D49}\u{236BA}\u8117\u9D5E\u8D18\u763B\u9C45\u764E\u77B9\u9345\u5432\u8148\u82F7\u5625\u8132\u8418\u80BD\u55EA\u7962\u5643\u5416\u{20E9D}\u35CE\u5605\u55F1\u66F1\u{282E2}\u362D\u7534\u55F0\u55BA\u5497\u5572\u{20C41}\u{20C96}\u5ED0\u{25148}\u{20E76}\u{22C62}"],["9e40","\u{20EA2}\u9EAB\u7D5A\u55DE\u{21075}\u629D\u976D\u5494\u8CCD\u71F6\u9176\u63FC\u63B9\u63FE\u5569\u{22B43}\u9C72\u{22EB3}\u519A\u34DF\u{20DA7}\u51A7\u544D\u551E\u5513\u7666\u8E2D\u{2688A}\u75B1\u80B6\u8804\u8786\u88C7\u81B6\u841C\u{210C1}\u44EC\u7304\u{24706}\u5B90\u830B\u{26893}\u567B\u{226F4}\u{27D2F}\u{241A3}\u{27D73}\u{26ED0}\u{272B6}\u9170\u{211D9}\u9208\u{23CFC}\u{2A6A9}\u{20EAC}\u{20EF9}\u7266\u{21CA2}\u474E\u{24FC2}\u{27FF9}\u{20FEB}\u40FA"],["9ea1","\u9C5D\u651F\u{22DA0}\u48F3\u{247E0}\u{29D7C}\u{20FEC}\u{20E0A}\u6062\u{275A3}\u{20FED}"],["9ead","\u{26048}\u{21187}\u71A3\u7E8E\u9D50\u4E1A\u4E04\u3577\u5B0D\u6CB2\u5367\u36AC\u39DC\u537D\u36A5\u{24618}\u589A\u{24B6E}\u822D\u544B\u57AA\u{25A95}\u{20979}"],["9ec5","\u3A52\u{22465}\u7374\u{29EAC}\u4D09\u9BED\u{23CFE}\u{29F30}\u4C5B\u{24FA9}\u{2959E}\u{29FDE}\u845C\u{23DB6}\u{272B2}\u{267B3}\u{23720}\u632E\u7D25\u{23EF7}\u{23E2C}\u3A2A\u9008\u52CC\u3E74\u367A\u45E9\u{2048E}\u7640\u5AF0\u{20EB6}\u787A\u{27F2E}\u58A7\u40BF\u567C\u9B8B\u5D74\u7654\u{2A434}\u9E85\u4CE1\u75F9\u37FB\u6119\u{230DA}\u{243F2}"],["9ef5","\u565D\u{212A9}\u57A7\u{24963}\u{29E06}\u5234\u{270AE}\u35AD\u6C4A\u9D7C"],["9f40","\u7C56\u9B39\u57DE\u{2176C}\u5C53\u64D3\u{294D0}\u{26335}\u{27164}\u86AD\u{20D28}\u{26D22}\u{24AE2}\u{20D71}"],["9f4f","\u51FE\u{21F0F}\u5D8E\u9703\u{21DD1}\u9E81\u904C\u7B1F\u9B02\u5CD1\u7BA3\u6268\u6335\u9AFF\u7BCF\u9B2A\u7C7E\u9B2E\u7C42\u7C86\u9C15\u7BFC\u9B09\u9F17\u9C1B\u{2493E}\u9F5A\u5573\u5BC3\u4FFD\u9E98\u4FF2\u5260\u3E06\u52D1\u5767\u5056\u59B7\u5E12\u97C8\u9DAB\u8F5C\u5469\u97B4\u9940\u97BA\u532C\u6130"],["9fa1","\u692C\u53DA\u9C0A\u9D02\u4C3B\u9641\u6980\u50A6\u7546\u{2176D}\u99DA\u5273"],["9fae","\u9159\u9681\u915C"],["9fb2","\u9151\u{28E97}\u637F\u{26D23}\u6ACA\u5611\u918E\u757A\u6285\u{203FC}\u734F\u7C70\u{25C21}\u{23CFD}"],["9fc1","\u{24919}\u76D6\u9B9D\u4E2A\u{20CD4}\u83BE\u8842"],["9fc9","\u5C4A\u69C0\u50ED\u577A\u521F\u5DF5\u4ECE\u6C31\u{201F2}\u4F39\u549C\u54DA\u529A\u8D82\u35FE\u5F0C\u35F3"],["9fdb","\u6B52\u917C\u9FA5\u9B97\u982E\u98B4\u9ABA\u9EA8\u9E84\u717A\u7B14"],["9fe7","\u6BFA\u8818\u7F78"],["9feb","\u5620\u{2A64A}\u8E77\u9F53"],["9ff0","\u8DD4\u8E4F\u9E1C\u8E01\u6282\u{2837D}\u8E28\u8E75\u7AD3\u{24A77}\u7A3E\u78D8\u6CEA\u8A67\u7607"],["a040","\u{28A5A}\u9F26\u6CCE\u87D6\u75C3\u{2A2B2}\u7853\u{2F840}\u8D0C\u72E2\u7371\u8B2D\u7302\u74F1\u8CEB\u{24ABB}\u862F\u5FBA\u88A0\u44B7"],["a055","\u{2183B}\u{26E05}"],["a058","\u8A7E\u{2251B}"],["a05b","\u60FD\u7667\u9AD7\u9D44\u936E\u9B8F\u87F5"],["a063","\u880F\u8CF7\u732C\u9721\u9BB0\u35D6\u72B2\u4C07\u7C51\u994A\u{26159}\u6159\u4C04\u9E96\u617D"],["a073","\u575F\u616F\u62A6\u6239\u62CE\u3A5C\u61E2\u53AA\u{233F5}\u6364\u6802\u35D2"],["a0a1","\u5D57\u{28BC2}\u8FDA\u{28E39}"],["a0a6","\u50D9\u{21D46}\u7906\u5332\u9638\u{20F3B}\u4065"],["a0ae","\u77FE"],["a0b0","\u7CC2\u{25F1A}\u7CDA\u7A2D\u8066\u8063\u7D4D\u7505\u74F2\u8994\u821A\u670C\u8062\u{27486}\u805B\u74F0\u8103\u7724\u8989\u{267CC}\u7553\u{26ED1}\u87A9\u87CE\u81C8\u878C\u8A49\u8CAD\u8B43\u772B\u74F8\u84DA\u3635\u69B2\u8DA6"],["a0d4","\u89A9\u7468\u6DB9\u87C1\u{24011}\u74E7\u3DDB\u7176\u60A4\u619C\u3CD1\u7162\u6077"],["a0e2","\u7F71\u{28B2D}\u7250\u60E9\u4B7E\u5220\u3C18\u{23CC7}\u{25ED7}\u{27656}\u{25531}\u{21944}\u{212FE}\u{29903}\u{26DDC}\u{270AD}\u5CC1\u{261AD}\u{28A0F}\u{23677}\u{200EE}\u{26846}\u{24F0E}\u4562\u5B1F\u{2634C}\u9F50\u9EA6\u{2626B}"],["a3c0","\u2400",31,"\u2421"],["c6a1","\u2460",9,"\u2474",9,"\u2170",9,"\u4E36\u4E3F\u4E85\u4EA0\u5182\u5196\u51AB\u52F9\u5338\u5369\u53B6\u590A\u5B80\u5DDB\u2F33\u5E7F\u5EF4\u5F50\u5F61\u6534\u65E0\u7592\u7676\u8FB5\u96B6\xA8\u02C6\u30FD\u30FE\u309D\u309E\u3003\u4EDD\u3005\u3006\u3007\u30FC\uFF3B\uFF3D\u273D\u3041",23],["c740","\u3059",58,"\u30A1\u30A2\u30A3\u30A4"],["c7a1","\u30A5",81,"\u0410",5,"\u0401\u0416",4],["c840","\u041B",26,"\u0451\u0436",25,"\u21E7\u21B8\u21B9\u31CF\u{200CC}\u4E5A\u{2008A}\u5202\u4491"],["c8a1","\u9FB0\u5188\u9FB1\u{27607}"],["c8cd","\uFFE2\uFFE4\uFF07\uFF02\u3231\u2116\u2121\u309B\u309C\u2E80\u2E84\u2E86\u2E87\u2E88\u2E8A\u2E8C\u2E8D\u2E95\u2E9C\u2E9D\u2EA5\u2EA7\u2EAA\u2EAC\u2EAE\u2EB6\u2EBC\u2EBE\u2EC6\u2ECA\u2ECC\u2ECD\u2ECF\u2ED6\u2ED7\u2EDE\u2EE3"],["c8f5","\u0283\u0250\u025B\u0254\u0275\u0153\xF8\u014B\u028A\u026A"],["f9fe","\uFFED"],["fa40","\u{20547}\u92DB\u{205DF}\u{23FC5}\u854C\u42B5\u73EF\u51B5\u3649\u{24942}\u{289E4}\u9344\u{219DB}\u82EE\u{23CC8}\u783C\u6744\u62DF\u{24933}\u{289AA}\u{202A0}\u{26BB3}\u{21305}\u4FAB\u{224ED}\u5008\u{26D29}\u{27A84}\u{23600}\u{24AB1}\u{22513}\u5029\u{2037E}\u5FA4\u{20380}\u{20347}\u6EDB\u{2041F}\u507D\u5101\u347A\u510E\u986C\u3743\u8416\u{249A4}\u{20487}\u5160\u{233B4}\u516A\u{20BFF}\u{220FC}\u{202E5}\u{22530}\u{2058E}\u{23233}\u{21983}\u5B82\u877D\u{205B3}\u{23C99}\u51B2\u51B8"],["faa1","\u9D34\u51C9\u51CF\u51D1\u3CDC\u51D3\u{24AA6}\u51B3\u51E2\u5342\u51ED\u83CD\u693E\u{2372D}\u5F7B\u520B\u5226\u523C\u52B5\u5257\u5294\u52B9\u52C5\u7C15\u8542\u52E0\u860D\u{26B13}\u5305\u{28ADE}\u5549\u6ED9\u{23F80}\u{20954}\u{23FEC}\u5333\u5344\u{20BE2}\u6CCB\u{21726}\u681B\u73D5\u604A\u3EAA\u38CC\u{216E8}\u71DD\u44A2\u536D\u5374\u{286AB}\u537E\u537F\u{21596}\u{21613}\u77E6\u5393\u{28A9B}\u53A0\u53AB\u53AE\u73A7\u{25772}\u3F59\u739C\u53C1\u53C5\u6C49\u4E49\u57FE\u53D9\u3AAB\u{20B8F}\u53E0\u{23FEB}\u{22DA3}\u53F6\u{20C77}\u5413\u7079\u552B\u6657\u6D5B\u546D\u{26B53}\u{20D74}\u555D\u548F\u54A4\u47A6\u{2170D}\u{20EDD}\u3DB4\u{20D4D}"],["fb40","\u{289BC}\u{22698}\u5547\u4CED\u542F\u7417\u5586\u55A9\u5605\u{218D7}\u{2403A}\u4552\u{24435}\u66B3\u{210B4}\u5637\u66CD\u{2328A}\u66A4\u66AD\u564D\u564F\u78F1\u56F1\u9787\u53FE\u5700\u56EF\u56ED\u{28B66}\u3623\u{2124F}\u5746\u{241A5}\u6C6E\u708B\u5742\u36B1\u{26C7E}\u57E6\u{21416}\u5803\u{21454}\u{24363}\u5826\u{24BF5}\u585C\u58AA\u3561\u58E0\u58DC\u{2123C}\u58FB\u5BFF\u5743\u{2A150}\u{24278}\u93D3\u35A1\u591F\u68A6\u36C3\u6E59"],["fba1","\u{2163E}\u5A24\u5553\u{21692}\u8505\u59C9\u{20D4E}\u{26C81}\u{26D2A}\u{217DC}\u59D9\u{217FB}\u{217B2}\u{26DA6}\u6D71\u{21828}\u{216D5}\u59F9\u{26E45}\u5AAB\u5A63\u36E6\u{249A9}\u5A77\u3708\u5A96\u7465\u5AD3\u{26FA1}\u{22554}\u3D85\u{21911}\u3732\u{216B8}\u5E83\u52D0\u5B76\u6588\u5B7C\u{27A0E}\u4004\u485D\u{20204}\u5BD5\u6160\u{21A34}\u{259CC}\u{205A5}\u5BF3\u5B9D\u4D10\u5C05\u{21B44}\u5C13\u73CE\u5C14\u{21CA5}\u{26B28}\u5C49\u48DD\u5C85\u5CE9\u5CEF\u5D8B\u{21DF9}\u{21E37}\u5D10\u5D18\u5D46\u{21EA4}\u5CBA\u5DD7\u82FC\u382D\u{24901}\u{22049}\u{22173}\u8287\u3836\u3BC2\u5E2E\u6A8A\u5E75\u5E7A\u{244BC}\u{20CD3}\u53A6\u4EB7\u5ED0\u53A8\u{21771}\u5E09\u5EF4\u{28482}"],["fc40","\u5EF9\u5EFB\u38A0\u5EFC\u683E\u941B\u5F0D\u{201C1}\u{2F894}\u3ADE\u48AE\u{2133A}\u5F3A\u{26888}\u{223D0}\u5F58\u{22471}\u5F63\u97BD\u{26E6E}\u5F72\u9340\u{28A36}\u5FA7\u5DB6\u3D5F\u{25250}\u{21F6A}\u{270F8}\u{22668}\u91D6\u{2029E}\u{28A29}\u6031\u6685\u{21877}\u3963\u3DC7\u3639\u5790\u{227B4}\u7971\u3E40\u609E\u60A4\u60B3\u{24982}\u{2498F}\u{27A53}\u74A4\u50E1\u5AA0\u6164\u8424\u6142\u{2F8A6}\u{26ED2}\u6181\u51F4\u{20656}\u6187\u5BAA\u{23FB7}"],["fca1","\u{2285F}\u61D3\u{28B9D}\u{2995D}\u61D0\u3932\u{22980}\u{228C1}\u6023\u615C\u651E\u638B\u{20118}\u62C5\u{21770}\u62D5\u{22E0D}\u636C\u{249DF}\u3A17\u6438\u63F8\u{2138E}\u{217FC}\u6490\u6F8A\u{22E36}\u9814\u{2408C}\u{2571D}\u64E1\u64E5\u947B\u3A66\u643A\u3A57\u654D\u6F16\u{24A28}\u{24A23}\u6585\u656D\u655F\u{2307E}\u65B5\u{24940}\u4B37\u65D1\u40D8\u{21829}\u65E0\u65E3\u5FDF\u{23400}\u6618\u{231F7}\u{231F8}\u6644\u{231A4}\u{231A5}\u664B\u{20E75}\u6667\u{251E6}\u6673\u6674\u{21E3D}\u{23231}\u{285F4}\u{231C8}\u{25313}\u77C5\u{228F7}\u99A4\u6702\u{2439C}\u{24A21}\u3B2B\u69FA\u{237C2}\u675E\u6767\u6762\u{241CD}\u{290ED}\u67D7\u44E9\u6822\u6E50\u923C\u6801\u{233E6}\u{26DA0}\u685D"],["fd40","\u{2346F}\u69E1\u6A0B\u{28ADF}\u6973\u68C3\u{235CD}\u6901\u6900\u3D32\u3A01\u{2363C}\u3B80\u67AC\u6961\u{28A4A}\u42FC\u6936\u6998\u3BA1\u{203C9}\u8363\u5090\u69F9\u{23659}\u{2212A}\u6A45\u{23703}\u6A9D\u3BF3\u67B1\u6AC8\u{2919C}\u3C0D\u6B1D\u{20923}\u60DE\u6B35\u6B74\u{227CD}\u6EB5\u{23ADB}\u{203B5}\u{21958}\u3740\u5421\u{23B5A}\u6BE1\u{23EFC}\u6BDC\u6C37\u{2248B}\u{248F1}\u{26B51}\u6C5A\u8226\u6C79\u{23DBC}\u44C5\u{23DBD}\u{241A4}\u{2490C}\u{24900}"],["fda1","\u{23CC9}\u36E5\u3CEB\u{20D32}\u9B83\u{231F9}\u{22491}\u7F8F\u6837\u{26D25}\u{26DA1}\u{26DEB}\u6D96\u6D5C\u6E7C\u6F04\u{2497F}\u{24085}\u{26E72}\u8533\u{26F74}\u51C7\u6C9C\u6E1D\u842E\u{28B21}\u6E2F\u{23E2F}\u7453\u{23F82}\u79CC\u6E4F\u5A91\u{2304B}\u6FF8\u370D\u6F9D\u{23E30}\u6EFA\u{21497}\u{2403D}\u4555\u93F0\u6F44\u6F5C\u3D4E\u6F74\u{29170}\u3D3B\u6F9F\u{24144}\u6FD3\u{24091}\u{24155}\u{24039}\u{23FF0}\u{23FB4}\u{2413F}\u51DF\u{24156}\u{24157}\u{24140}\u{261DD}\u704B\u707E\u70A7\u7081\u70CC\u70D5\u70D6\u70DF\u4104\u3DE8\u71B4\u7196\u{24277}\u712B\u7145\u5A88\u714A\u716E\u5C9C\u{24365}\u714F\u9362\u{242C1}\u712C\u{2445A}\u{24A27}\u{24A22}\u71BA\u{28BE8}\u70BD\u720E"],["fe40","\u9442\u7215\u5911\u9443\u7224\u9341\u{25605}\u722E\u7240\u{24974}\u68BD\u7255\u7257\u3E55\u{23044}\u680D\u6F3D\u7282\u732A\u732B\u{24823}\u{2882B}\u48ED\u{28804}\u7328\u732E\u73CF\u73AA\u{20C3A}\u{26A2E}\u73C9\u7449\u{241E2}\u{216E7}\u{24A24}\u6623\u36C5\u{249B7}\u{2498D}\u{249FB}\u73F7\u7415\u6903\u{24A26}\u7439\u{205C3}\u3ED7\u745C\u{228AD}\u7460\u{28EB2}\u7447\u73E4\u7476\u83B9\u746C\u3730\u7474\u93F1\u6A2C\u7482\u4953\u{24A8C}"],["fea1","\u{2415F}\u{24A79}\u{28B8F}\u5B46\u{28C03}\u{2189E}\u74C8\u{21988}\u750E\u74E9\u751E\u{28ED9}\u{21A4B}\u5BD7\u{28EAC}\u9385\u754D\u754A\u7567\u756E\u{24F82}\u3F04\u{24D13}\u758E\u745D\u759E\u75B4\u7602\u762C\u7651\u764F\u766F\u7676\u{263F5}\u7690\u81EF\u37F8\u{26911}\u{2690E}\u76A1\u76A5\u76B7\u76CC\u{26F9F}\u8462\u{2509D}\u{2517D}\u{21E1C}\u771E\u7726\u7740\u64AF\u{25220}\u7758\u{232AC}\u77AF\u{28964}\u{28968}\u{216C1}\u77F4\u7809\u{21376}\u{24A12}\u68CA\u78AF\u78C7\u78D3\u96A5\u792E\u{255E0}\u78D7\u7934\u78B1\u{2760C}\u8FB8\u8884\u{28B2B}\u{26083}\u{2261C}\u7986\u8900\u6902\u7980\u{25857}\u799D\u{27B39}\u793C\u79A9\u6E2A\u{27126}\u3EA8\u79C6\u{2910D}\u79D4"]]});var Hx=P((eY,Ux)=>{"use strict";Ux.exports={shiftjis:{type:"_dbcs",table:function(){return Nx()},encodeAdd:{"\xA5":92,"\u203E":126},encodeSkipVals:[{from:60736,to:63808}]},csshiftjis:"shiftjis",mskanji:"shiftjis",sjis:"shiftjis",windows31j:"shiftjis",ms31j:"shiftjis",xsjis:"shiftjis",windows932:"shiftjis",ms932:"shiftjis",932:"shiftjis",cp932:"shiftjis",eucjp:{type:"_dbcs",table:function(){return Dx()},encodeAdd:{"\xA5":92,"\u203E":126}},gb2312:"cp936",gb231280:"cp936",gb23121980:"cp936",csgb2312:"cp936",csiso58gb231280:"cp936",euccn:"cp936",windows936:"cp936",ms936:"cp936",936:"cp936",cp936:{type:"_dbcs",table:function(){return hf()}},gbk:{type:"_dbcs",table:function(){return hf().concat(gh())}},xgbk:"gbk",isoir58:"gbk",gb18030:{type:"_dbcs",table:function(){return hf().concat(gh())},gb18030:function(){return Jx()},encodeSkipVals:[128],encodeAdd:{"\u20AC":41699}},chinese:"gb18030",windows949:"cp949",ms949:"cp949",949:"cp949",cp949:{type:"_dbcs",table:function(){return qx()}},cseuckr:"cp949",csksc56011987:"cp949",euckr:"cp949",isoir149:"cp949",korean:"cp949",ksc56011987:"cp949",ksc56011989:"cp949",ksc5601:"cp949",windows950:"cp950",ms950:"cp950",950:"cp950",cp950:{type:"_dbcs",table:function(){return xh()}},big5:"big5hkscs",big5hkscs:{type:"_dbcs",table:function(){return xh().concat(jx())},encodeSkipVals:[41676]},cnbig5:"big5hkscs",csbig5:"big5hkscs",xxbig5:"big5hkscs"}});var Xx=P((Gx,as)=>{"use strict";var zx=[Ex(),_x(),kx(),Ox(),Mx(),Fx(),Ix(),Hx()];for(vf=0;vf{"use strict";var Kx=require("buffer").Buffer,bf=require("stream").Transform;Vx.exports=function(t){t.encodeStream=function(r,n){return new ao(t.getEncoder(r,n),n)},t.decodeStream=function(r,n){return new Yi(t.getDecoder(r,n),n)},t.supportsStreams=!0,t.IconvLiteEncoderStream=ao,t.IconvLiteDecoderStream=Yi,t._collect=Yi.prototype.collect};function ao(t,e){this.conv=t,e=e||{},e.decodeStrings=!1,bf.call(this,e)}ao.prototype=Object.create(bf.prototype,{constructor:{value:ao}});ao.prototype._transform=function(t,e,r){if(typeof t!="string")return r(new Error("Iconv encoding stream needs strings as its input."));try{var n=this.conv.write(t);n&&n.length&&this.push(n),r()}catch(i){r(i)}};ao.prototype._flush=function(t){try{var e=this.conv.end();e&&e.length&&this.push(e),t()}catch(r){t(r)}};ao.prototype.collect=function(t){var e=[];return this.on("error",t),this.on("data",function(r){e.push(r)}),this.on("end",function(){t(null,Kx.concat(e))}),this};function Yi(t,e){this.conv=t,e=e||{},e.encoding=this.encoding="utf8",bf.call(this,e)}Yi.prototype=Object.create(bf.prototype,{constructor:{value:Yi}});Yi.prototype._transform=function(t,e,r){if(!Kx.isBuffer(t))return r(new Error("Iconv decoding stream needs buffers as its input."));try{var n=this.conv.write(t);n&&n.length&&this.push(n,this.encoding),r()}catch(i){r(i)}};Yi.prototype._flush=function(t){try{var e=this.conv.end();e&&e.length&&this.push(e,this.encoding),t()}catch(r){t(r)}};Yi.prototype.collect=function(t){var e="";return this.on("error",t),this.on("data",function(r){e+=r}),this.on("end",function(){t(null,e)}),this}});var Wx=P((tY,Qx)=>{"use strict";var br=require("buffer").Buffer;Qx.exports=function(t){var e=void 0;t.supportsNodeEncodingsExtension=!(br.from||new br(0)instanceof Uint8Array),t.extendNodeEncodings=function(){if(!e){if(e={},!t.supportsNodeEncodingsExtension){console.error("ACTION NEEDED: require('iconv-lite').extendNodeEncodings() is not supported in your version of Node"),console.error("See more info at https://github.com/ashtuchkin/iconv-lite/wiki/Node-v4-compatibility");return}var n={hex:!0,utf8:!0,"utf-8":!0,ascii:!0,binary:!0,base64:!0,ucs2:!0,"ucs-2":!0,utf16le:!0,"utf-16le":!0};br.isNativeEncoding=function(o){return o&&n[o.toLowerCase()]};var i=require("buffer").SlowBuffer;if(e.SlowBufferToString=i.prototype.toString,i.prototype.toString=function(o,c,u){return o=String(o||"utf8").toLowerCase(),br.isNativeEncoding(o)?e.SlowBufferToString.call(this,o,c,u):(typeof c>"u"&&(c=0),typeof u>"u"&&(u=this.length),t.decode(this.slice(c,u),o))},e.SlowBufferWrite=i.prototype.write,i.prototype.write=function(o,c,u,s){if(isFinite(c))isFinite(u)||(s=u,u=void 0);else{var f=s;s=c,c=u,u=f}c=+c||0;var m=this.length-c;if(u?(u=+u,u>m&&(u=m)):u=m,s=String(s||"utf8").toLowerCase(),br.isNativeEncoding(s))return e.SlowBufferWrite.call(this,o,c,u,s);if(o.length>0&&(u<0||c<0))throw new RangeError("attempt to write beyond buffer bounds");var w=t.encode(o,s);return w.length"u"&&(c=0),typeof u>"u"&&(u=this.length),t.decode(this.slice(c,u),o))},e.BufferWrite=br.prototype.write,br.prototype.write=function(o,c,u,s){var f=c,m=u,w=s;if(isFinite(c))isFinite(u)||(s=u,u=void 0);else{var T=s;s=c,c=u,u=T}if(s=String(s||"utf8").toLowerCase(),br.isNativeEncoding(s))return e.BufferWrite.call(this,o,f,m,w);c=+c||0;var A=this.length-c;if(u?(u=+u,u>A&&(u=A)):u=A,o.length>0&&(u<0||c<0))throw new RangeError("attempt to write beyond buffer bounds");var O=t.encode(o,s);return O.length{"use strict";var $x=no().Buffer,ey=yx(),Ze=ry.exports;Ze.encodings=null;Ze.defaultCharUnicode="\uFFFD";Ze.defaultCharSingleByte="?";Ze.encode=function(e,r,n){e=""+(e||"");var i=Ze.getEncoder(r,n),a=i.write(e),o=i.end();return o&&o.length>0?$x.concat([a,o]):a};Ze.decode=function(e,r,n){typeof e=="string"&&(Ze.skipDecodeWarning||(console.error("Iconv-lite warning: decode()-ing strings is deprecated. Refer to https://github.com/ashtuchkin/iconv-lite/wiki/Use-Buffers-when-decoding"),Ze.skipDecodeWarning=!0),e=$x.from(""+(e||""),"binary"));var i=Ze.getDecoder(r,n),a=i.write(e),o=i.end();return o?a+o:a};Ze.encodingExists=function(e){try{return Ze.getCodec(e),!0}catch{return!1}};Ze.toEncoding=Ze.encode;Ze.fromEncoding=Ze.decode;Ze._codecDataCache={};Ze.getCodec=function(e){Ze.encodings||(Ze.encodings=Xx());for(var r=Ze._canonicalizeEncoding(e),n={};;){var i=Ze._codecDataCache[r];if(i)return i;var a=Ze.encodings[r];switch(typeof a){case"string":r=a;break;case"object":for(var o in a)n[o]=a[o];n.encodingName||(n.encodingName=r),r=a.type;break;case"function":return n.encodingName||(n.encodingName=r),i=new a(n,Ze),Ze._codecDataCache[n.encodingName]=i,i;default:throw new Error("Encoding not recognized: '"+e+"' (searched as: '"+r+"')")}}};Ze._canonicalizeEncoding=function(t){return(""+t).toLowerCase().replace(/:\d{4}$|[^0-9a-z]/g,"")};Ze.getEncoder=function(e,r){var n=Ze.getCodec(e),i=new n.encoder(r,n);return n.bomAware&&r&&r.addBOM&&(i=new ey.PrependBOM(i,r)),i};Ze.getDecoder=function(e,r){var n=Ze.getCodec(e),i=new n.decoder(r,n);return n.bomAware&&!(r&&r.stripBOM===!1)&&(i=new ey.StripBOM(i,r)),i};var Yx=typeof process<"u"&&process.versions&&process.versions.node;Yx&&(yh=Yx.split(".").map(Number),(yh[0]>0||yh[1]>=10)&&Zx()(Ze),Wx()(Ze));var yh});var gf=P((iY,ty)=>{"use strict";ty.exports=YC;function WC(t){for(var e=t.listeners("data"),r=0;r{"use strict";var ny=oO(),$C=Wo(),oo=ro(),eO=wh(),rO=gf();ay.exports=iO;var tO=/^Encoding not recognized: /;function nO(t){if(!t)return null;try{return eO.getDecoder(t)}catch(e){throw tO.test(e.message)?oo(415,"specified encoding unsupported",{encoding:t,type:"encoding.unsupported"}):e}}function iO(t,e,r){var n=r,i=e||{};if((e===!0||typeof e=="string")&&(i={encoding:e}),typeof e=="function"&&(n=e,i={}),n!==void 0&&typeof n!="function")throw new TypeError("argument callback must be a function");if(!n&&!global.Promise)throw new TypeError("argument callback is required");var a=i.encoding!==!0?i.encoding:"utf-8",o=$C.parse(i.limit),c=i.length!=null&&!isNaN(i.length)?parseInt(i.length,10):null;return n?iy(t,a,c,o,sO(n)):new Promise(function(s,f){iy(t,a,c,o,function(w,T){if(w)return f(w);s(T)})})}function aO(t){rO(t),typeof t.pause=="function"&&t.pause()}function iy(t,e,r,n,i){var a=!1,o=!0;if(n!==null&&r!==null&&r>n)return m(oo(413,"request entity too large",{expected:r,length:r,limit:n,type:"entity.too.large"}));var c=t._readableState;if(t._decoder||c&&(c.encoding||c.decoder))return m(oo(500,"stream encoding should not be set",{type:"stream.encoding.set"}));if(typeof t.readable<"u"&&!t.readable)return m(oo(500,"stream is not readable",{type:"stream.not.readable"}));var u=0,s;try{s=nO(e)}catch(B){return m(B)}var f=s?"":[];t.on("aborted",w),t.on("close",O),t.on("data",T),t.on("end",A),t.on("error",A),o=!1;function m(){for(var B=new Array(arguments.length),F=0;Fn?m(oo(413,"request entity too large",{limit:n,received:u,type:"entity.too.large"})):s?f+=s.write(B):f.push(B))}function A(B){if(!a){if(B)return m(B);if(r!==null&&u!==r)m(oo(400,"request size did not match content length",{expected:r,length:r,received:u,type:"request.size.invalid"}));else{var F=s?f+(s.end()||""):Buffer.concat(f);m(null,F)}}}function O(){f=null,t.removeListener("aborted",w),t.removeListener("data",T),t.removeListener("end",A),t.removeListener("error",A),t.removeListener("close",O)}}function oO(){try{return require("async_hooks")}catch{return{}}}function sO(t){var e;return ny.AsyncResource&&(e=new ny.AsyncResource(t.name||"bound-anonymous-fn")),!e||!e.runInAsyncScope?t:e.runInAsyncScope.bind(e,t,null)}});var cy=P((oY,sy)=>{"use strict";sy.exports=cO;function cO(t,e){if(!Array.isArray(t))throw new TypeError("arg must be an array of [ee, events...] arrays");for(var r=[],n=0;n{"use strict";Ah.exports=fO;Ah.exports.isFinished=fy;var uy=mO(),ly=cy(),lO=typeof setImmediate=="function"?setImmediate:function(t){process.nextTick(t.bind.apply(t,arguments))};function fO(t,e){return fy(t)!==!1?(lO(e,null,t),t):(pO(t,bO(e)),t)}function fy(t){var e=t.socket;if(typeof t.finished=="boolean")return Boolean(t.finished||e&&!e.writable);if(typeof t.complete=="boolean")return Boolean(t.upgrade||!e||!e.readable||t.complete&&!t.readable)}function dO(t,e){var r,n,i=!1;function a(c){r.cancel(),n.cancel(),i=!0,e(c)}r=n=ly([[t,"end","finish"]],a);function o(c){t.removeListener("socket",o),!i&&r===n&&(n=ly([[c,"error","close"]],a))}if(t.socket){o(t.socket);return}t.on("socket",o),t.socket===void 0&&vO(t,o)}function pO(t,e){var r=t.__onFinished;(!r||!r.queue)&&(r=t.__onFinished=hO(t),dO(t,r)),r.queue.push(e)}function hO(t){function e(r){if(t.__onFinished===e&&(t.__onFinished=null),!!e.queue){var n=e.queue;e.queue=null;for(var i=0;i{"use strict";var $i=ro(),gO=X0(),xO=oy(),dy=wh(),py=au(),yO=gf(),hy=require("zlib");vy.exports=wO;function wO(t,e,r,n,i,a){var o,c=a,u;t._body=!0;var s=c.encoding!==null?c.encoding:null,f=c.verify;try{u=AO(t,i,c.inflate),o=u.length,u.length=void 0}catch(m){return r(m)}if(c.length=o,c.encoding=f?null:s,c.encoding===null&&s!==null&&!dy.encodingExists(s))return r($i(415,'unsupported charset "'+s.toUpperCase()+'"',{charset:s.toLowerCase(),type:"charset.unsupported"}));i("read body"),xO(u,c,function(m,w){if(m){var T;m.type==="encoding.unsupported"?T=$i(415,'unsupported charset "'+s.toUpperCase()+'"',{charset:s.toLowerCase(),type:"charset.unsupported"}):T=$i(400,m),u!==t&&(yO(t),gO(u,!0)),EO(t,function(){r($i(400,T))});return}if(f)try{i("verify body"),f(t,e,w,s)}catch(O){r($i(403,O,{body:w,type:O.type||"entity.verify.failed"}));return}var A=w;try{i("parse body"),A=typeof w!="string"&&s!==null?dy.decode(w,s):w,t.body=n(A)}catch(O){r($i(400,O,{body:A,type:O.type||"entity.parse.failed"}));return}r()})}function AO(t,e,r){var n=(t.headers["content-encoding"]||"identity").toLowerCase(),i=t.headers["content-length"],a;if(e('content-encoding "%s"',n),r===!1&&n!=="identity")throw $i(415,"content encoding unsupported",{encoding:n,type:"encoding.unsupported"});switch(n){case"deflate":a=hy.createInflate(),e("inflate body"),t.pipe(a);break;case"gzip":a=hy.createGunzip(),e("gunzip body"),t.pipe(a);break;case"identity":a=t,a.length=i;break;default:throw $i(415,'unsupported content encoding "'+n+'"',{encoding:n,type:"encoding.unsupported"})}return a}function EO(t,e){py.isFinished(t)?e(null):(py(t,e),t.resume())}});var xy=P(Eh=>{var my=/; *([!#$%&'\*\+\-\.0-9A-Z\^_`a-z\|~]+) *= *("(?:[ !\u0023-\u005b\u005d-\u007e\u0080-\u00ff]|\\[\u0020-\u007e])*"|[!#$%&'\*\+\-\.0-9A-Z\^_`a-z\|~]+) */g,SO=/^[\u0020-\u007e\u0080-\u00ff]+$/,gy=/^[!#$%&'\*\+\-\.0-9A-Z\^_`a-z\|~]+$/,_O=/\\([\u0000-\u007f])/g,TO=/([\\"])/g,kO=/^[A-Za-z0-9][A-Za-z0-9!#$&^_.-]{0,126}$/,by=/^[A-Za-z0-9][A-Za-z0-9!#$&^_-]{0,126}$/,CO=/^ *([A-Za-z0-9][A-Za-z0-9!#$&^_-]{0,126})\/([A-Za-z0-9][A-Za-z0-9!#$&^_.+-]{0,126}) *$/;Eh.format=OO;Eh.parse=PO;function OO(t){if(!t||typeof t!="object")throw new TypeError("argument obj is required");var e=t.parameters,r=t.subtype,n=t.suffix,i=t.type;if(!i||!by.test(i))throw new TypeError("invalid type");if(!r||!kO.test(r))throw new TypeError("invalid subtype");var a=i+"/"+r;if(n){if(!by.test(n))throw new TypeError("invalid suffix");a+="+"+n}if(e&&typeof e=="object")for(var o,c=Object.keys(e).sort(),u=0;u0&&!SO.test(e))throw new TypeError("invalid parameter value");return'"'+e.replace(TO,"\\$1")+'"'}function FO(t){var e=CO.exec(t.toLowerCase());if(!e)throw new TypeError("invalid media type");var r=e[1],n=e[2],i,a=n.lastIndexOf("+");a!==-1&&(i=n.substr(a+1),n=n.substr(0,a));var o={type:r,subtype:n,suffix:i};return o}});var yy=P((lY,LO)=>{LO.exports={"application/1d-interleaved-parityfec":{source:"iana"},"application/3gpdash-qoe-report+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/3gpp-ims+xml":{source:"iana",compressible:!0},"application/3gpphal+json":{source:"iana",compressible:!0},"application/3gpphalforms+json":{source:"iana",compressible:!0},"application/a2l":{source:"iana"},"application/ace+cbor":{source:"iana"},"application/activemessage":{source:"iana"},"application/activity+json":{source:"iana",compressible:!0},"application/alto-costmap+json":{source:"iana",compressible:!0},"application/alto-costmapfilter+json":{source:"iana",compressible:!0},"application/alto-directory+json":{source:"iana",compressible:!0},"application/alto-endpointcost+json":{source:"iana",compressible:!0},"application/alto-endpointcostparams+json":{source:"iana",compressible:!0},"application/alto-endpointprop+json":{source:"iana",compressible:!0},"application/alto-endpointpropparams+json":{source:"iana",compressible:!0},"application/alto-error+json":{source:"iana",compressible:!0},"application/alto-networkmap+json":{source:"iana",compressible:!0},"application/alto-networkmapfilter+json":{source:"iana",compressible:!0},"application/alto-updatestreamcontrol+json":{source:"iana",compressible:!0},"application/alto-updatestreamparams+json":{source:"iana",compressible:!0},"application/aml":{source:"iana"},"application/andrew-inset":{source:"iana",extensions:["ez"]},"application/applefile":{source:"iana"},"application/applixware":{source:"apache",extensions:["aw"]},"application/at+jwt":{source:"iana"},"application/atf":{source:"iana"},"application/atfx":{source:"iana"},"application/atom+xml":{source:"iana",compressible:!0,extensions:["atom"]},"application/atomcat+xml":{source:"iana",compressible:!0,extensions:["atomcat"]},"application/atomdeleted+xml":{source:"iana",compressible:!0,extensions:["atomdeleted"]},"application/atomicmail":{source:"iana"},"application/atomsvc+xml":{source:"iana",compressible:!0,extensions:["atomsvc"]},"application/atsc-dwd+xml":{source:"iana",compressible:!0,extensions:["dwd"]},"application/atsc-dynamic-event-message":{source:"iana"},"application/atsc-held+xml":{source:"iana",compressible:!0,extensions:["held"]},"application/atsc-rdt+json":{source:"iana",compressible:!0},"application/atsc-rsat+xml":{source:"iana",compressible:!0,extensions:["rsat"]},"application/atxml":{source:"iana"},"application/auth-policy+xml":{source:"iana",compressible:!0},"application/bacnet-xdd+zip":{source:"iana",compressible:!1},"application/batch-smtp":{source:"iana"},"application/bdoc":{compressible:!1,extensions:["bdoc"]},"application/beep+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/calendar+json":{source:"iana",compressible:!0},"application/calendar+xml":{source:"iana",compressible:!0,extensions:["xcs"]},"application/call-completion":{source:"iana"},"application/cals-1840":{source:"iana"},"application/captive+json":{source:"iana",compressible:!0},"application/cbor":{source:"iana"},"application/cbor-seq":{source:"iana"},"application/cccex":{source:"iana"},"application/ccmp+xml":{source:"iana",compressible:!0},"application/ccxml+xml":{source:"iana",compressible:!0,extensions:["ccxml"]},"application/cdfx+xml":{source:"iana",compressible:!0,extensions:["cdfx"]},"application/cdmi-capability":{source:"iana",extensions:["cdmia"]},"application/cdmi-container":{source:"iana",extensions:["cdmic"]},"application/cdmi-domain":{source:"iana",extensions:["cdmid"]},"application/cdmi-object":{source:"iana",extensions:["cdmio"]},"application/cdmi-queue":{source:"iana",extensions:["cdmiq"]},"application/cdni":{source:"iana"},"application/cea":{source:"iana"},"application/cea-2018+xml":{source:"iana",compressible:!0},"application/cellml+xml":{source:"iana",compressible:!0},"application/cfw":{source:"iana"},"application/city+json":{source:"iana",compressible:!0},"application/clr":{source:"iana"},"application/clue+xml":{source:"iana",compressible:!0},"application/clue_info+xml":{source:"iana",compressible:!0},"application/cms":{source:"iana"},"application/cnrp+xml":{source:"iana",compressible:!0},"application/coap-group+json":{source:"iana",compressible:!0},"application/coap-payload":{source:"iana"},"application/commonground":{source:"iana"},"application/conference-info+xml":{source:"iana",compressible:!0},"application/cose":{source:"iana"},"application/cose-key":{source:"iana"},"application/cose-key-set":{source:"iana"},"application/cpl+xml":{source:"iana",compressible:!0,extensions:["cpl"]},"application/csrattrs":{source:"iana"},"application/csta+xml":{source:"iana",compressible:!0},"application/cstadata+xml":{source:"iana",compressible:!0},"application/csvm+json":{source:"iana",compressible:!0},"application/cu-seeme":{source:"apache",extensions:["cu"]},"application/cwt":{source:"iana"},"application/cybercash":{source:"iana"},"application/dart":{compressible:!0},"application/dash+xml":{source:"iana",compressible:!0,extensions:["mpd"]},"application/dash-patch+xml":{source:"iana",compressible:!0,extensions:["mpp"]},"application/dashdelta":{source:"iana"},"application/davmount+xml":{source:"iana",compressible:!0,extensions:["davmount"]},"application/dca-rft":{source:"iana"},"application/dcd":{source:"iana"},"application/dec-dx":{source:"iana"},"application/dialog-info+xml":{source:"iana",compressible:!0},"application/dicom":{source:"iana"},"application/dicom+json":{source:"iana",compressible:!0},"application/dicom+xml":{source:"iana",compressible:!0},"application/dii":{source:"iana"},"application/dit":{source:"iana"},"application/dns":{source:"iana"},"application/dns+json":{source:"iana",compressible:!0},"application/dns-message":{source:"iana"},"application/docbook+xml":{source:"apache",compressible:!0,extensions:["dbk"]},"application/dots+cbor":{source:"iana"},"application/dskpp+xml":{source:"iana",compressible:!0},"application/dssc+der":{source:"iana",extensions:["dssc"]},"application/dssc+xml":{source:"iana",compressible:!0,extensions:["xdssc"]},"application/dvcs":{source:"iana"},"application/ecmascript":{source:"iana",compressible:!0,extensions:["es","ecma"]},"application/edi-consent":{source:"iana"},"application/edi-x12":{source:"iana",compressible:!1},"application/edifact":{source:"iana",compressible:!1},"application/efi":{source:"iana"},"application/elm+json":{source:"iana",charset:"UTF-8",compressible:!0},"application/elm+xml":{source:"iana",compressible:!0},"application/emergencycalldata.cap+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/emergencycalldata.comment+xml":{source:"iana",compressible:!0},"application/emergencycalldata.control+xml":{source:"iana",compressible:!0},"application/emergencycalldata.deviceinfo+xml":{source:"iana",compressible:!0},"application/emergencycalldata.ecall.msd":{source:"iana"},"application/emergencycalldata.providerinfo+xml":{source:"iana",compressible:!0},"application/emergencycalldata.serviceinfo+xml":{source:"iana",compressible:!0},"application/emergencycalldata.subscriberinfo+xml":{source:"iana",compressible:!0},"application/emergencycalldata.veds+xml":{source:"iana",compressible:!0},"application/emma+xml":{source:"iana",compressible:!0,extensions:["emma"]},"application/emotionml+xml":{source:"iana",compressible:!0,extensions:["emotionml"]},"application/encaprtp":{source:"iana"},"application/epp+xml":{source:"iana",compressible:!0},"application/epub+zip":{source:"iana",compressible:!1,extensions:["epub"]},"application/eshop":{source:"iana"},"application/exi":{source:"iana",extensions:["exi"]},"application/expect-ct-report+json":{source:"iana",compressible:!0},"application/express":{source:"iana",extensions:["exp"]},"application/fastinfoset":{source:"iana"},"application/fastsoap":{source:"iana"},"application/fdt+xml":{source:"iana",compressible:!0,extensions:["fdt"]},"application/fhir+json":{source:"iana",charset:"UTF-8",compressible:!0},"application/fhir+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/fido.trusted-apps+json":{compressible:!0},"application/fits":{source:"iana"},"application/flexfec":{source:"iana"},"application/font-sfnt":{source:"iana"},"application/font-tdpfr":{source:"iana",extensions:["pfr"]},"application/font-woff":{source:"iana",compressible:!1},"application/framework-attributes+xml":{source:"iana",compressible:!0},"application/geo+json":{source:"iana",compressible:!0,extensions:["geojson"]},"application/geo+json-seq":{source:"iana"},"application/geopackage+sqlite3":{source:"iana"},"application/geoxacml+xml":{source:"iana",compressible:!0},"application/gltf-buffer":{source:"iana"},"application/gml+xml":{source:"iana",compressible:!0,extensions:["gml"]},"application/gpx+xml":{source:"apache",compressible:!0,extensions:["gpx"]},"application/gxf":{source:"apache",extensions:["gxf"]},"application/gzip":{source:"iana",compressible:!1,extensions:["gz"]},"application/h224":{source:"iana"},"application/held+xml":{source:"iana",compressible:!0},"application/hjson":{extensions:["hjson"]},"application/http":{source:"iana"},"application/hyperstudio":{source:"iana",extensions:["stk"]},"application/ibe-key-request+xml":{source:"iana",compressible:!0},"application/ibe-pkg-reply+xml":{source:"iana",compressible:!0},"application/ibe-pp-data":{source:"iana"},"application/iges":{source:"iana"},"application/im-iscomposing+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/index":{source:"iana"},"application/index.cmd":{source:"iana"},"application/index.obj":{source:"iana"},"application/index.response":{source:"iana"},"application/index.vnd":{source:"iana"},"application/inkml+xml":{source:"iana",compressible:!0,extensions:["ink","inkml"]},"application/iotp":{source:"iana"},"application/ipfix":{source:"iana",extensions:["ipfix"]},"application/ipp":{source:"iana"},"application/isup":{source:"iana"},"application/its+xml":{source:"iana",compressible:!0,extensions:["its"]},"application/java-archive":{source:"apache",compressible:!1,extensions:["jar","war","ear"]},"application/java-serialized-object":{source:"apache",compressible:!1,extensions:["ser"]},"application/java-vm":{source:"apache",compressible:!1,extensions:["class"]},"application/javascript":{source:"iana",charset:"UTF-8",compressible:!0,extensions:["js","mjs"]},"application/jf2feed+json":{source:"iana",compressible:!0},"application/jose":{source:"iana"},"application/jose+json":{source:"iana",compressible:!0},"application/jrd+json":{source:"iana",compressible:!0},"application/jscalendar+json":{source:"iana",compressible:!0},"application/json":{source:"iana",charset:"UTF-8",compressible:!0,extensions:["json","map"]},"application/json-patch+json":{source:"iana",compressible:!0},"application/json-seq":{source:"iana"},"application/json5":{extensions:["json5"]},"application/jsonml+json":{source:"apache",compressible:!0,extensions:["jsonml"]},"application/jwk+json":{source:"iana",compressible:!0},"application/jwk-set+json":{source:"iana",compressible:!0},"application/jwt":{source:"iana"},"application/kpml-request+xml":{source:"iana",compressible:!0},"application/kpml-response+xml":{source:"iana",compressible:!0},"application/ld+json":{source:"iana",compressible:!0,extensions:["jsonld"]},"application/lgr+xml":{source:"iana",compressible:!0,extensions:["lgr"]},"application/link-format":{source:"iana"},"application/load-control+xml":{source:"iana",compressible:!0},"application/lost+xml":{source:"iana",compressible:!0,extensions:["lostxml"]},"application/lostsync+xml":{source:"iana",compressible:!0},"application/lpf+zip":{source:"iana",compressible:!1},"application/lxf":{source:"iana"},"application/mac-binhex40":{source:"iana",extensions:["hqx"]},"application/mac-compactpro":{source:"apache",extensions:["cpt"]},"application/macwriteii":{source:"iana"},"application/mads+xml":{source:"iana",compressible:!0,extensions:["mads"]},"application/manifest+json":{source:"iana",charset:"UTF-8",compressible:!0,extensions:["webmanifest"]},"application/marc":{source:"iana",extensions:["mrc"]},"application/marcxml+xml":{source:"iana",compressible:!0,extensions:["mrcx"]},"application/mathematica":{source:"iana",extensions:["ma","nb","mb"]},"application/mathml+xml":{source:"iana",compressible:!0,extensions:["mathml"]},"application/mathml-content+xml":{source:"iana",compressible:!0},"application/mathml-presentation+xml":{source:"iana",compressible:!0},"application/mbms-associated-procedure-description+xml":{source:"iana",compressible:!0},"application/mbms-deregister+xml":{source:"iana",compressible:!0},"application/mbms-envelope+xml":{source:"iana",compressible:!0},"application/mbms-msk+xml":{source:"iana",compressible:!0},"application/mbms-msk-response+xml":{source:"iana",compressible:!0},"application/mbms-protection-description+xml":{source:"iana",compressible:!0},"application/mbms-reception-report+xml":{source:"iana",compressible:!0},"application/mbms-register+xml":{source:"iana",compressible:!0},"application/mbms-register-response+xml":{source:"iana",compressible:!0},"application/mbms-schedule+xml":{source:"iana",compressible:!0},"application/mbms-user-service-description+xml":{source:"iana",compressible:!0},"application/mbox":{source:"iana",extensions:["mbox"]},"application/media-policy-dataset+xml":{source:"iana",compressible:!0,extensions:["mpf"]},"application/media_control+xml":{source:"iana",compressible:!0},"application/mediaservercontrol+xml":{source:"iana",compressible:!0,extensions:["mscml"]},"application/merge-patch+json":{source:"iana",compressible:!0},"application/metalink+xml":{source:"apache",compressible:!0,extensions:["metalink"]},"application/metalink4+xml":{source:"iana",compressible:!0,extensions:["meta4"]},"application/mets+xml":{source:"iana",compressible:!0,extensions:["mets"]},"application/mf4":{source:"iana"},"application/mikey":{source:"iana"},"application/mipc":{source:"iana"},"application/missing-blocks+cbor-seq":{source:"iana"},"application/mmt-aei+xml":{source:"iana",compressible:!0,extensions:["maei"]},"application/mmt-usd+xml":{source:"iana",compressible:!0,extensions:["musd"]},"application/mods+xml":{source:"iana",compressible:!0,extensions:["mods"]},"application/moss-keys":{source:"iana"},"application/moss-signature":{source:"iana"},"application/mosskey-data":{source:"iana"},"application/mosskey-request":{source:"iana"},"application/mp21":{source:"iana",extensions:["m21","mp21"]},"application/mp4":{source:"iana",extensions:["mp4s","m4p"]},"application/mpeg4-generic":{source:"iana"},"application/mpeg4-iod":{source:"iana"},"application/mpeg4-iod-xmt":{source:"iana"},"application/mrb-consumer+xml":{source:"iana",compressible:!0},"application/mrb-publish+xml":{source:"iana",compressible:!0},"application/msc-ivr+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/msc-mixer+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/msword":{source:"iana",compressible:!1,extensions:["doc","dot"]},"application/mud+json":{source:"iana",compressible:!0},"application/multipart-core":{source:"iana"},"application/mxf":{source:"iana",extensions:["mxf"]},"application/n-quads":{source:"iana",extensions:["nq"]},"application/n-triples":{source:"iana",extensions:["nt"]},"application/nasdata":{source:"iana"},"application/news-checkgroups":{source:"iana",charset:"US-ASCII"},"application/news-groupinfo":{source:"iana",charset:"US-ASCII"},"application/news-transmission":{source:"iana"},"application/nlsml+xml":{source:"iana",compressible:!0},"application/node":{source:"iana",extensions:["cjs"]},"application/nss":{source:"iana"},"application/oauth-authz-req+jwt":{source:"iana"},"application/oblivious-dns-message":{source:"iana"},"application/ocsp-request":{source:"iana"},"application/ocsp-response":{source:"iana"},"application/octet-stream":{source:"iana",compressible:!1,extensions:["bin","dms","lrf","mar","so","dist","distz","pkg","bpk","dump","elc","deploy","exe","dll","deb","dmg","iso","img","msi","msp","msm","buffer"]},"application/oda":{source:"iana",extensions:["oda"]},"application/odm+xml":{source:"iana",compressible:!0},"application/odx":{source:"iana"},"application/oebps-package+xml":{source:"iana",compressible:!0,extensions:["opf"]},"application/ogg":{source:"iana",compressible:!1,extensions:["ogx"]},"application/omdoc+xml":{source:"apache",compressible:!0,extensions:["omdoc"]},"application/onenote":{source:"apache",extensions:["onetoc","onetoc2","onetmp","onepkg"]},"application/opc-nodeset+xml":{source:"iana",compressible:!0},"application/oscore":{source:"iana"},"application/oxps":{source:"iana",extensions:["oxps"]},"application/p21":{source:"iana"},"application/p21+zip":{source:"iana",compressible:!1},"application/p2p-overlay+xml":{source:"iana",compressible:!0,extensions:["relo"]},"application/parityfec":{source:"iana"},"application/passport":{source:"iana"},"application/patch-ops-error+xml":{source:"iana",compressible:!0,extensions:["xer"]},"application/pdf":{source:"iana",compressible:!1,extensions:["pdf"]},"application/pdx":{source:"iana"},"application/pem-certificate-chain":{source:"iana"},"application/pgp-encrypted":{source:"iana",compressible:!1,extensions:["pgp"]},"application/pgp-keys":{source:"iana",extensions:["asc"]},"application/pgp-signature":{source:"iana",extensions:["asc","sig"]},"application/pics-rules":{source:"apache",extensions:["prf"]},"application/pidf+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/pidf-diff+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/pkcs10":{source:"iana",extensions:["p10"]},"application/pkcs12":{source:"iana"},"application/pkcs7-mime":{source:"iana",extensions:["p7m","p7c"]},"application/pkcs7-signature":{source:"iana",extensions:["p7s"]},"application/pkcs8":{source:"iana",extensions:["p8"]},"application/pkcs8-encrypted":{source:"iana"},"application/pkix-attr-cert":{source:"iana",extensions:["ac"]},"application/pkix-cert":{source:"iana",extensions:["cer"]},"application/pkix-crl":{source:"iana",extensions:["crl"]},"application/pkix-pkipath":{source:"iana",extensions:["pkipath"]},"application/pkixcmp":{source:"iana",extensions:["pki"]},"application/pls+xml":{source:"iana",compressible:!0,extensions:["pls"]},"application/poc-settings+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/postscript":{source:"iana",compressible:!0,extensions:["ai","eps","ps"]},"application/ppsp-tracker+json":{source:"iana",compressible:!0},"application/problem+json":{source:"iana",compressible:!0},"application/problem+xml":{source:"iana",compressible:!0},"application/provenance+xml":{source:"iana",compressible:!0,extensions:["provx"]},"application/prs.alvestrand.titrax-sheet":{source:"iana"},"application/prs.cww":{source:"iana",extensions:["cww"]},"application/prs.cyn":{source:"iana",charset:"7-BIT"},"application/prs.hpub+zip":{source:"iana",compressible:!1},"application/prs.nprend":{source:"iana"},"application/prs.plucker":{source:"iana"},"application/prs.rdf-xml-crypt":{source:"iana"},"application/prs.xsf+xml":{source:"iana",compressible:!0},"application/pskc+xml":{source:"iana",compressible:!0,extensions:["pskcxml"]},"application/pvd+json":{source:"iana",compressible:!0},"application/qsig":{source:"iana"},"application/raml+yaml":{compressible:!0,extensions:["raml"]},"application/raptorfec":{source:"iana"},"application/rdap+json":{source:"iana",compressible:!0},"application/rdf+xml":{source:"iana",compressible:!0,extensions:["rdf","owl"]},"application/reginfo+xml":{source:"iana",compressible:!0,extensions:["rif"]},"application/relax-ng-compact-syntax":{source:"iana",extensions:["rnc"]},"application/remote-printing":{source:"iana"},"application/reputon+json":{source:"iana",compressible:!0},"application/resource-lists+xml":{source:"iana",compressible:!0,extensions:["rl"]},"application/resource-lists-diff+xml":{source:"iana",compressible:!0,extensions:["rld"]},"application/rfc+xml":{source:"iana",compressible:!0},"application/riscos":{source:"iana"},"application/rlmi+xml":{source:"iana",compressible:!0},"application/rls-services+xml":{source:"iana",compressible:!0,extensions:["rs"]},"application/route-apd+xml":{source:"iana",compressible:!0,extensions:["rapd"]},"application/route-s-tsid+xml":{source:"iana",compressible:!0,extensions:["sls"]},"application/route-usd+xml":{source:"iana",compressible:!0,extensions:["rusd"]},"application/rpki-ghostbusters":{source:"iana",extensions:["gbr"]},"application/rpki-manifest":{source:"iana",extensions:["mft"]},"application/rpki-publication":{source:"iana"},"application/rpki-roa":{source:"iana",extensions:["roa"]},"application/rpki-updown":{source:"iana"},"application/rsd+xml":{source:"apache",compressible:!0,extensions:["rsd"]},"application/rss+xml":{source:"apache",compressible:!0,extensions:["rss"]},"application/rtf":{source:"iana",compressible:!0,extensions:["rtf"]},"application/rtploopback":{source:"iana"},"application/rtx":{source:"iana"},"application/samlassertion+xml":{source:"iana",compressible:!0},"application/samlmetadata+xml":{source:"iana",compressible:!0},"application/sarif+json":{source:"iana",compressible:!0},"application/sarif-external-properties+json":{source:"iana",compressible:!0},"application/sbe":{source:"iana"},"application/sbml+xml":{source:"iana",compressible:!0,extensions:["sbml"]},"application/scaip+xml":{source:"iana",compressible:!0},"application/scim+json":{source:"iana",compressible:!0},"application/scvp-cv-request":{source:"iana",extensions:["scq"]},"application/scvp-cv-response":{source:"iana",extensions:["scs"]},"application/scvp-vp-request":{source:"iana",extensions:["spq"]},"application/scvp-vp-response":{source:"iana",extensions:["spp"]},"application/sdp":{source:"iana",extensions:["sdp"]},"application/secevent+jwt":{source:"iana"},"application/senml+cbor":{source:"iana"},"application/senml+json":{source:"iana",compressible:!0},"application/senml+xml":{source:"iana",compressible:!0,extensions:["senmlx"]},"application/senml-etch+cbor":{source:"iana"},"application/senml-etch+json":{source:"iana",compressible:!0},"application/senml-exi":{source:"iana"},"application/sensml+cbor":{source:"iana"},"application/sensml+json":{source:"iana",compressible:!0},"application/sensml+xml":{source:"iana",compressible:!0,extensions:["sensmlx"]},"application/sensml-exi":{source:"iana"},"application/sep+xml":{source:"iana",compressible:!0},"application/sep-exi":{source:"iana"},"application/session-info":{source:"iana"},"application/set-payment":{source:"iana"},"application/set-payment-initiation":{source:"iana",extensions:["setpay"]},"application/set-registration":{source:"iana"},"application/set-registration-initiation":{source:"iana",extensions:["setreg"]},"application/sgml":{source:"iana"},"application/sgml-open-catalog":{source:"iana"},"application/shf+xml":{source:"iana",compressible:!0,extensions:["shf"]},"application/sieve":{source:"iana",extensions:["siv","sieve"]},"application/simple-filter+xml":{source:"iana",compressible:!0},"application/simple-message-summary":{source:"iana"},"application/simplesymbolcontainer":{source:"iana"},"application/sipc":{source:"iana"},"application/slate":{source:"iana"},"application/smil":{source:"iana"},"application/smil+xml":{source:"iana",compressible:!0,extensions:["smi","smil"]},"application/smpte336m":{source:"iana"},"application/soap+fastinfoset":{source:"iana"},"application/soap+xml":{source:"iana",compressible:!0},"application/sparql-query":{source:"iana",extensions:["rq"]},"application/sparql-results+xml":{source:"iana",compressible:!0,extensions:["srx"]},"application/spdx+json":{source:"iana",compressible:!0},"application/spirits-event+xml":{source:"iana",compressible:!0},"application/sql":{source:"iana"},"application/srgs":{source:"iana",extensions:["gram"]},"application/srgs+xml":{source:"iana",compressible:!0,extensions:["grxml"]},"application/sru+xml":{source:"iana",compressible:!0,extensions:["sru"]},"application/ssdl+xml":{source:"apache",compressible:!0,extensions:["ssdl"]},"application/ssml+xml":{source:"iana",compressible:!0,extensions:["ssml"]},"application/stix+json":{source:"iana",compressible:!0},"application/swid+xml":{source:"iana",compressible:!0,extensions:["swidtag"]},"application/tamp-apex-update":{source:"iana"},"application/tamp-apex-update-confirm":{source:"iana"},"application/tamp-community-update":{source:"iana"},"application/tamp-community-update-confirm":{source:"iana"},"application/tamp-error":{source:"iana"},"application/tamp-sequence-adjust":{source:"iana"},"application/tamp-sequence-adjust-confirm":{source:"iana"},"application/tamp-status-query":{source:"iana"},"application/tamp-status-response":{source:"iana"},"application/tamp-update":{source:"iana"},"application/tamp-update-confirm":{source:"iana"},"application/tar":{compressible:!0},"application/taxii+json":{source:"iana",compressible:!0},"application/td+json":{source:"iana",compressible:!0},"application/tei+xml":{source:"iana",compressible:!0,extensions:["tei","teicorpus"]},"application/tetra_isi":{source:"iana"},"application/thraud+xml":{source:"iana",compressible:!0,extensions:["tfi"]},"application/timestamp-query":{source:"iana"},"application/timestamp-reply":{source:"iana"},"application/timestamped-data":{source:"iana",extensions:["tsd"]},"application/tlsrpt+gzip":{source:"iana"},"application/tlsrpt+json":{source:"iana",compressible:!0},"application/tnauthlist":{source:"iana"},"application/token-introspection+jwt":{source:"iana"},"application/toml":{compressible:!0,extensions:["toml"]},"application/trickle-ice-sdpfrag":{source:"iana"},"application/trig":{source:"iana",extensions:["trig"]},"application/ttml+xml":{source:"iana",compressible:!0,extensions:["ttml"]},"application/tve-trigger":{source:"iana"},"application/tzif":{source:"iana"},"application/tzif-leap":{source:"iana"},"application/ubjson":{compressible:!1,extensions:["ubj"]},"application/ulpfec":{source:"iana"},"application/urc-grpsheet+xml":{source:"iana",compressible:!0},"application/urc-ressheet+xml":{source:"iana",compressible:!0,extensions:["rsheet"]},"application/urc-targetdesc+xml":{source:"iana",compressible:!0,extensions:["td"]},"application/urc-uisocketdesc+xml":{source:"iana",compressible:!0},"application/vcard+json":{source:"iana",compressible:!0},"application/vcard+xml":{source:"iana",compressible:!0},"application/vemmi":{source:"iana"},"application/vividence.scriptfile":{source:"apache"},"application/vnd.1000minds.decision-model+xml":{source:"iana",compressible:!0,extensions:["1km"]},"application/vnd.3gpp-prose+xml":{source:"iana",compressible:!0},"application/vnd.3gpp-prose-pc3ch+xml":{source:"iana",compressible:!0},"application/vnd.3gpp-v2x-local-service-information":{source:"iana"},"application/vnd.3gpp.5gnas":{source:"iana"},"application/vnd.3gpp.access-transfer-events+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.bsf+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.gmop+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.gtpc":{source:"iana"},"application/vnd.3gpp.interworking-data":{source:"iana"},"application/vnd.3gpp.lpp":{source:"iana"},"application/vnd.3gpp.mc-signalling-ear":{source:"iana"},"application/vnd.3gpp.mcdata-affiliation-command+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcdata-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcdata-payload":{source:"iana"},"application/vnd.3gpp.mcdata-service-config+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcdata-signalling":{source:"iana"},"application/vnd.3gpp.mcdata-ue-config+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcdata-user-profile+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-affiliation-command+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-floor-request+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-location-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-mbms-usage-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-service-config+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-signed+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-ue-config+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-ue-init-config+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-user-profile+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcvideo-affiliation-command+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcvideo-affiliation-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcvideo-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcvideo-location-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcvideo-mbms-usage-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcvideo-service-config+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcvideo-transmission-request+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcvideo-ue-config+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcvideo-user-profile+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mid-call+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.ngap":{source:"iana"},"application/vnd.3gpp.pfcp":{source:"iana"},"application/vnd.3gpp.pic-bw-large":{source:"iana",extensions:["plb"]},"application/vnd.3gpp.pic-bw-small":{source:"iana",extensions:["psb"]},"application/vnd.3gpp.pic-bw-var":{source:"iana",extensions:["pvb"]},"application/vnd.3gpp.s1ap":{source:"iana"},"application/vnd.3gpp.sms":{source:"iana"},"application/vnd.3gpp.sms+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.srvcc-ext+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.srvcc-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.state-and-event-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.ussd+xml":{source:"iana",compressible:!0},"application/vnd.3gpp2.bcmcsinfo+xml":{source:"iana",compressible:!0},"application/vnd.3gpp2.sms":{source:"iana"},"application/vnd.3gpp2.tcap":{source:"iana",extensions:["tcap"]},"application/vnd.3lightssoftware.imagescal":{source:"iana"},"application/vnd.3m.post-it-notes":{source:"iana",extensions:["pwn"]},"application/vnd.accpac.simply.aso":{source:"iana",extensions:["aso"]},"application/vnd.accpac.simply.imp":{source:"iana",extensions:["imp"]},"application/vnd.acucobol":{source:"iana",extensions:["acu"]},"application/vnd.acucorp":{source:"iana",extensions:["atc","acutc"]},"application/vnd.adobe.air-application-installer-package+zip":{source:"apache",compressible:!1,extensions:["air"]},"application/vnd.adobe.flash.movie":{source:"iana"},"application/vnd.adobe.formscentral.fcdt":{source:"iana",extensions:["fcdt"]},"application/vnd.adobe.fxp":{source:"iana",extensions:["fxp","fxpl"]},"application/vnd.adobe.partial-upload":{source:"iana"},"application/vnd.adobe.xdp+xml":{source:"iana",compressible:!0,extensions:["xdp"]},"application/vnd.adobe.xfdf":{source:"iana",extensions:["xfdf"]},"application/vnd.aether.imp":{source:"iana"},"application/vnd.afpc.afplinedata":{source:"iana"},"application/vnd.afpc.afplinedata-pagedef":{source:"iana"},"application/vnd.afpc.cmoca-cmresource":{source:"iana"},"application/vnd.afpc.foca-charset":{source:"iana"},"application/vnd.afpc.foca-codedfont":{source:"iana"},"application/vnd.afpc.foca-codepage":{source:"iana"},"application/vnd.afpc.modca":{source:"iana"},"application/vnd.afpc.modca-cmtable":{source:"iana"},"application/vnd.afpc.modca-formdef":{source:"iana"},"application/vnd.afpc.modca-mediummap":{source:"iana"},"application/vnd.afpc.modca-objectcontainer":{source:"iana"},"application/vnd.afpc.modca-overlay":{source:"iana"},"application/vnd.afpc.modca-pagesegment":{source:"iana"},"application/vnd.age":{source:"iana",extensions:["age"]},"application/vnd.ah-barcode":{source:"iana"},"application/vnd.ahead.space":{source:"iana",extensions:["ahead"]},"application/vnd.airzip.filesecure.azf":{source:"iana",extensions:["azf"]},"application/vnd.airzip.filesecure.azs":{source:"iana",extensions:["azs"]},"application/vnd.amadeus+json":{source:"iana",compressible:!0},"application/vnd.amazon.ebook":{source:"apache",extensions:["azw"]},"application/vnd.amazon.mobi8-ebook":{source:"iana"},"application/vnd.americandynamics.acc":{source:"iana",extensions:["acc"]},"application/vnd.amiga.ami":{source:"iana",extensions:["ami"]},"application/vnd.amundsen.maze+xml":{source:"iana",compressible:!0},"application/vnd.android.ota":{source:"iana"},"application/vnd.android.package-archive":{source:"apache",compressible:!1,extensions:["apk"]},"application/vnd.anki":{source:"iana"},"application/vnd.anser-web-certificate-issue-initiation":{source:"iana",extensions:["cii"]},"application/vnd.anser-web-funds-transfer-initiation":{source:"apache",extensions:["fti"]},"application/vnd.antix.game-component":{source:"iana",extensions:["atx"]},"application/vnd.apache.arrow.file":{source:"iana"},"application/vnd.apache.arrow.stream":{source:"iana"},"application/vnd.apache.thrift.binary":{source:"iana"},"application/vnd.apache.thrift.compact":{source:"iana"},"application/vnd.apache.thrift.json":{source:"iana"},"application/vnd.api+json":{source:"iana",compressible:!0},"application/vnd.aplextor.warrp+json":{source:"iana",compressible:!0},"application/vnd.apothekende.reservation+json":{source:"iana",compressible:!0},"application/vnd.apple.installer+xml":{source:"iana",compressible:!0,extensions:["mpkg"]},"application/vnd.apple.keynote":{source:"iana",extensions:["key"]},"application/vnd.apple.mpegurl":{source:"iana",extensions:["m3u8"]},"application/vnd.apple.numbers":{source:"iana",extensions:["numbers"]},"application/vnd.apple.pages":{source:"iana",extensions:["pages"]},"application/vnd.apple.pkpass":{compressible:!1,extensions:["pkpass"]},"application/vnd.arastra.swi":{source:"iana"},"application/vnd.aristanetworks.swi":{source:"iana",extensions:["swi"]},"application/vnd.artisan+json":{source:"iana",compressible:!0},"application/vnd.artsquare":{source:"iana"},"application/vnd.astraea-software.iota":{source:"iana",extensions:["iota"]},"application/vnd.audiograph":{source:"iana",extensions:["aep"]},"application/vnd.autopackage":{source:"iana"},"application/vnd.avalon+json":{source:"iana",compressible:!0},"application/vnd.avistar+xml":{source:"iana",compressible:!0},"application/vnd.balsamiq.bmml+xml":{source:"iana",compressible:!0,extensions:["bmml"]},"application/vnd.balsamiq.bmpr":{source:"iana"},"application/vnd.banana-accounting":{source:"iana"},"application/vnd.bbf.usp.error":{source:"iana"},"application/vnd.bbf.usp.msg":{source:"iana"},"application/vnd.bbf.usp.msg+json":{source:"iana",compressible:!0},"application/vnd.bekitzur-stech+json":{source:"iana",compressible:!0},"application/vnd.bint.med-content":{source:"iana"},"application/vnd.biopax.rdf+xml":{source:"iana",compressible:!0},"application/vnd.blink-idb-value-wrapper":{source:"iana"},"application/vnd.blueice.multipass":{source:"iana",extensions:["mpm"]},"application/vnd.bluetooth.ep.oob":{source:"iana"},"application/vnd.bluetooth.le.oob":{source:"iana"},"application/vnd.bmi":{source:"iana",extensions:["bmi"]},"application/vnd.bpf":{source:"iana"},"application/vnd.bpf3":{source:"iana"},"application/vnd.businessobjects":{source:"iana",extensions:["rep"]},"application/vnd.byu.uapi+json":{source:"iana",compressible:!0},"application/vnd.cab-jscript":{source:"iana"},"application/vnd.canon-cpdl":{source:"iana"},"application/vnd.canon-lips":{source:"iana"},"application/vnd.capasystems-pg+json":{source:"iana",compressible:!0},"application/vnd.cendio.thinlinc.clientconf":{source:"iana"},"application/vnd.century-systems.tcp_stream":{source:"iana"},"application/vnd.chemdraw+xml":{source:"iana",compressible:!0,extensions:["cdxml"]},"application/vnd.chess-pgn":{source:"iana"},"application/vnd.chipnuts.karaoke-mmd":{source:"iana",extensions:["mmd"]},"application/vnd.ciedi":{source:"iana"},"application/vnd.cinderella":{source:"iana",extensions:["cdy"]},"application/vnd.cirpack.isdn-ext":{source:"iana"},"application/vnd.citationstyles.style+xml":{source:"iana",compressible:!0,extensions:["csl"]},"application/vnd.claymore":{source:"iana",extensions:["cla"]},"application/vnd.cloanto.rp9":{source:"iana",extensions:["rp9"]},"application/vnd.clonk.c4group":{source:"iana",extensions:["c4g","c4d","c4f","c4p","c4u"]},"application/vnd.cluetrust.cartomobile-config":{source:"iana",extensions:["c11amc"]},"application/vnd.cluetrust.cartomobile-config-pkg":{source:"iana",extensions:["c11amz"]},"application/vnd.coffeescript":{source:"iana"},"application/vnd.collabio.xodocuments.document":{source:"iana"},"application/vnd.collabio.xodocuments.document-template":{source:"iana"},"application/vnd.collabio.xodocuments.presentation":{source:"iana"},"application/vnd.collabio.xodocuments.presentation-template":{source:"iana"},"application/vnd.collabio.xodocuments.spreadsheet":{source:"iana"},"application/vnd.collabio.xodocuments.spreadsheet-template":{source:"iana"},"application/vnd.collection+json":{source:"iana",compressible:!0},"application/vnd.collection.doc+json":{source:"iana",compressible:!0},"application/vnd.collection.next+json":{source:"iana",compressible:!0},"application/vnd.comicbook+zip":{source:"iana",compressible:!1},"application/vnd.comicbook-rar":{source:"iana"},"application/vnd.commerce-battelle":{source:"iana"},"application/vnd.commonspace":{source:"iana",extensions:["csp"]},"application/vnd.contact.cmsg":{source:"iana",extensions:["cdbcmsg"]},"application/vnd.coreos.ignition+json":{source:"iana",compressible:!0},"application/vnd.cosmocaller":{source:"iana",extensions:["cmc"]},"application/vnd.crick.clicker":{source:"iana",extensions:["clkx"]},"application/vnd.crick.clicker.keyboard":{source:"iana",extensions:["clkk"]},"application/vnd.crick.clicker.palette":{source:"iana",extensions:["clkp"]},"application/vnd.crick.clicker.template":{source:"iana",extensions:["clkt"]},"application/vnd.crick.clicker.wordbank":{source:"iana",extensions:["clkw"]},"application/vnd.criticaltools.wbs+xml":{source:"iana",compressible:!0,extensions:["wbs"]},"application/vnd.cryptii.pipe+json":{source:"iana",compressible:!0},"application/vnd.crypto-shade-file":{source:"iana"},"application/vnd.cryptomator.encrypted":{source:"iana"},"application/vnd.cryptomator.vault":{source:"iana"},"application/vnd.ctc-posml":{source:"iana",extensions:["pml"]},"application/vnd.ctct.ws+xml":{source:"iana",compressible:!0},"application/vnd.cups-pdf":{source:"iana"},"application/vnd.cups-postscript":{source:"iana"},"application/vnd.cups-ppd":{source:"iana",extensions:["ppd"]},"application/vnd.cups-raster":{source:"iana"},"application/vnd.cups-raw":{source:"iana"},"application/vnd.curl":{source:"iana"},"application/vnd.curl.car":{source:"apache",extensions:["car"]},"application/vnd.curl.pcurl":{source:"apache",extensions:["pcurl"]},"application/vnd.cyan.dean.root+xml":{source:"iana",compressible:!0},"application/vnd.cybank":{source:"iana"},"application/vnd.cyclonedx+json":{source:"iana",compressible:!0},"application/vnd.cyclonedx+xml":{source:"iana",compressible:!0},"application/vnd.d2l.coursepackage1p0+zip":{source:"iana",compressible:!1},"application/vnd.d3m-dataset":{source:"iana"},"application/vnd.d3m-problem":{source:"iana"},"application/vnd.dart":{source:"iana",compressible:!0,extensions:["dart"]},"application/vnd.data-vision.rdz":{source:"iana",extensions:["rdz"]},"application/vnd.datapackage+json":{source:"iana",compressible:!0},"application/vnd.dataresource+json":{source:"iana",compressible:!0},"application/vnd.dbf":{source:"iana",extensions:["dbf"]},"application/vnd.debian.binary-package":{source:"iana"},"application/vnd.dece.data":{source:"iana",extensions:["uvf","uvvf","uvd","uvvd"]},"application/vnd.dece.ttml+xml":{source:"iana",compressible:!0,extensions:["uvt","uvvt"]},"application/vnd.dece.unspecified":{source:"iana",extensions:["uvx","uvvx"]},"application/vnd.dece.zip":{source:"iana",extensions:["uvz","uvvz"]},"application/vnd.denovo.fcselayout-link":{source:"iana",extensions:["fe_launch"]},"application/vnd.desmume.movie":{source:"iana"},"application/vnd.dir-bi.plate-dl-nosuffix":{source:"iana"},"application/vnd.dm.delegation+xml":{source:"iana",compressible:!0},"application/vnd.dna":{source:"iana",extensions:["dna"]},"application/vnd.document+json":{source:"iana",compressible:!0},"application/vnd.dolby.mlp":{source:"apache",extensions:["mlp"]},"application/vnd.dolby.mobile.1":{source:"iana"},"application/vnd.dolby.mobile.2":{source:"iana"},"application/vnd.doremir.scorecloud-binary-document":{source:"iana"},"application/vnd.dpgraph":{source:"iana",extensions:["dpg"]},"application/vnd.dreamfactory":{source:"iana",extensions:["dfac"]},"application/vnd.drive+json":{source:"iana",compressible:!0},"application/vnd.ds-keypoint":{source:"apache",extensions:["kpxx"]},"application/vnd.dtg.local":{source:"iana"},"application/vnd.dtg.local.flash":{source:"iana"},"application/vnd.dtg.local.html":{source:"iana"},"application/vnd.dvb.ait":{source:"iana",extensions:["ait"]},"application/vnd.dvb.dvbisl+xml":{source:"iana",compressible:!0},"application/vnd.dvb.dvbj":{source:"iana"},"application/vnd.dvb.esgcontainer":{source:"iana"},"application/vnd.dvb.ipdcdftnotifaccess":{source:"iana"},"application/vnd.dvb.ipdcesgaccess":{source:"iana"},"application/vnd.dvb.ipdcesgaccess2":{source:"iana"},"application/vnd.dvb.ipdcesgpdd":{source:"iana"},"application/vnd.dvb.ipdcroaming":{source:"iana"},"application/vnd.dvb.iptv.alfec-base":{source:"iana"},"application/vnd.dvb.iptv.alfec-enhancement":{source:"iana"},"application/vnd.dvb.notif-aggregate-root+xml":{source:"iana",compressible:!0},"application/vnd.dvb.notif-container+xml":{source:"iana",compressible:!0},"application/vnd.dvb.notif-generic+xml":{source:"iana",compressible:!0},"application/vnd.dvb.notif-ia-msglist+xml":{source:"iana",compressible:!0},"application/vnd.dvb.notif-ia-registration-request+xml":{source:"iana",compressible:!0},"application/vnd.dvb.notif-ia-registration-response+xml":{source:"iana",compressible:!0},"application/vnd.dvb.notif-init+xml":{source:"iana",compressible:!0},"application/vnd.dvb.pfr":{source:"iana"},"application/vnd.dvb.service":{source:"iana",extensions:["svc"]},"application/vnd.dxr":{source:"iana"},"application/vnd.dynageo":{source:"iana",extensions:["geo"]},"application/vnd.dzr":{source:"iana"},"application/vnd.easykaraoke.cdgdownload":{source:"iana"},"application/vnd.ecdis-update":{source:"iana"},"application/vnd.ecip.rlp":{source:"iana"},"application/vnd.eclipse.ditto+json":{source:"iana",compressible:!0},"application/vnd.ecowin.chart":{source:"iana",extensions:["mag"]},"application/vnd.ecowin.filerequest":{source:"iana"},"application/vnd.ecowin.fileupdate":{source:"iana"},"application/vnd.ecowin.series":{source:"iana"},"application/vnd.ecowin.seriesrequest":{source:"iana"},"application/vnd.ecowin.seriesupdate":{source:"iana"},"application/vnd.efi.img":{source:"iana"},"application/vnd.efi.iso":{source:"iana"},"application/vnd.emclient.accessrequest+xml":{source:"iana",compressible:!0},"application/vnd.enliven":{source:"iana",extensions:["nml"]},"application/vnd.enphase.envoy":{source:"iana"},"application/vnd.eprints.data+xml":{source:"iana",compressible:!0},"application/vnd.epson.esf":{source:"iana",extensions:["esf"]},"application/vnd.epson.msf":{source:"iana",extensions:["msf"]},"application/vnd.epson.quickanime":{source:"iana",extensions:["qam"]},"application/vnd.epson.salt":{source:"iana",extensions:["slt"]},"application/vnd.epson.ssf":{source:"iana",extensions:["ssf"]},"application/vnd.ericsson.quickcall":{source:"iana"},"application/vnd.espass-espass+zip":{source:"iana",compressible:!1},"application/vnd.eszigno3+xml":{source:"iana",compressible:!0,extensions:["es3","et3"]},"application/vnd.etsi.aoc+xml":{source:"iana",compressible:!0},"application/vnd.etsi.asic-e+zip":{source:"iana",compressible:!1},"application/vnd.etsi.asic-s+zip":{source:"iana",compressible:!1},"application/vnd.etsi.cug+xml":{source:"iana",compressible:!0},"application/vnd.etsi.iptvcommand+xml":{source:"iana",compressible:!0},"application/vnd.etsi.iptvdiscovery+xml":{source:"iana",compressible:!0},"application/vnd.etsi.iptvprofile+xml":{source:"iana",compressible:!0},"application/vnd.etsi.iptvsad-bc+xml":{source:"iana",compressible:!0},"application/vnd.etsi.iptvsad-cod+xml":{source:"iana",compressible:!0},"application/vnd.etsi.iptvsad-npvr+xml":{source:"iana",compressible:!0},"application/vnd.etsi.iptvservice+xml":{source:"iana",compressible:!0},"application/vnd.etsi.iptvsync+xml":{source:"iana",compressible:!0},"application/vnd.etsi.iptvueprofile+xml":{source:"iana",compressible:!0},"application/vnd.etsi.mcid+xml":{source:"iana",compressible:!0},"application/vnd.etsi.mheg5":{source:"iana"},"application/vnd.etsi.overload-control-policy-dataset+xml":{source:"iana",compressible:!0},"application/vnd.etsi.pstn+xml":{source:"iana",compressible:!0},"application/vnd.etsi.sci+xml":{source:"iana",compressible:!0},"application/vnd.etsi.simservs+xml":{source:"iana",compressible:!0},"application/vnd.etsi.timestamp-token":{source:"iana"},"application/vnd.etsi.tsl+xml":{source:"iana",compressible:!0},"application/vnd.etsi.tsl.der":{source:"iana"},"application/vnd.eu.kasparian.car+json":{source:"iana",compressible:!0},"application/vnd.eudora.data":{source:"iana"},"application/vnd.evolv.ecig.profile":{source:"iana"},"application/vnd.evolv.ecig.settings":{source:"iana"},"application/vnd.evolv.ecig.theme":{source:"iana"},"application/vnd.exstream-empower+zip":{source:"iana",compressible:!1},"application/vnd.exstream-package":{source:"iana"},"application/vnd.ezpix-album":{source:"iana",extensions:["ez2"]},"application/vnd.ezpix-package":{source:"iana",extensions:["ez3"]},"application/vnd.f-secure.mobile":{source:"iana"},"application/vnd.familysearch.gedcom+zip":{source:"iana",compressible:!1},"application/vnd.fastcopy-disk-image":{source:"iana"},"application/vnd.fdf":{source:"iana",extensions:["fdf"]},"application/vnd.fdsn.mseed":{source:"iana",extensions:["mseed"]},"application/vnd.fdsn.seed":{source:"iana",extensions:["seed","dataless"]},"application/vnd.ffsns":{source:"iana"},"application/vnd.ficlab.flb+zip":{source:"iana",compressible:!1},"application/vnd.filmit.zfc":{source:"iana"},"application/vnd.fints":{source:"iana"},"application/vnd.firemonkeys.cloudcell":{source:"iana"},"application/vnd.flographit":{source:"iana",extensions:["gph"]},"application/vnd.fluxtime.clip":{source:"iana",extensions:["ftc"]},"application/vnd.font-fontforge-sfd":{source:"iana"},"application/vnd.framemaker":{source:"iana",extensions:["fm","frame","maker","book"]},"application/vnd.frogans.fnc":{source:"iana",extensions:["fnc"]},"application/vnd.frogans.ltf":{source:"iana",extensions:["ltf"]},"application/vnd.fsc.weblaunch":{source:"iana",extensions:["fsc"]},"application/vnd.fujifilm.fb.docuworks":{source:"iana"},"application/vnd.fujifilm.fb.docuworks.binder":{source:"iana"},"application/vnd.fujifilm.fb.docuworks.container":{source:"iana"},"application/vnd.fujifilm.fb.jfi+xml":{source:"iana",compressible:!0},"application/vnd.fujitsu.oasys":{source:"iana",extensions:["oas"]},"application/vnd.fujitsu.oasys2":{source:"iana",extensions:["oa2"]},"application/vnd.fujitsu.oasys3":{source:"iana",extensions:["oa3"]},"application/vnd.fujitsu.oasysgp":{source:"iana",extensions:["fg5"]},"application/vnd.fujitsu.oasysprs":{source:"iana",extensions:["bh2"]},"application/vnd.fujixerox.art-ex":{source:"iana"},"application/vnd.fujixerox.art4":{source:"iana"},"application/vnd.fujixerox.ddd":{source:"iana",extensions:["ddd"]},"application/vnd.fujixerox.docuworks":{source:"iana",extensions:["xdw"]},"application/vnd.fujixerox.docuworks.binder":{source:"iana",extensions:["xbd"]},"application/vnd.fujixerox.docuworks.container":{source:"iana"},"application/vnd.fujixerox.hbpl":{source:"iana"},"application/vnd.fut-misnet":{source:"iana"},"application/vnd.futoin+cbor":{source:"iana"},"application/vnd.futoin+json":{source:"iana",compressible:!0},"application/vnd.fuzzysheet":{source:"iana",extensions:["fzs"]},"application/vnd.genomatix.tuxedo":{source:"iana",extensions:["txd"]},"application/vnd.gentics.grd+json":{source:"iana",compressible:!0},"application/vnd.geo+json":{source:"iana",compressible:!0},"application/vnd.geocube+xml":{source:"iana",compressible:!0},"application/vnd.geogebra.file":{source:"iana",extensions:["ggb"]},"application/vnd.geogebra.slides":{source:"iana"},"application/vnd.geogebra.tool":{source:"iana",extensions:["ggt"]},"application/vnd.geometry-explorer":{source:"iana",extensions:["gex","gre"]},"application/vnd.geonext":{source:"iana",extensions:["gxt"]},"application/vnd.geoplan":{source:"iana",extensions:["g2w"]},"application/vnd.geospace":{source:"iana",extensions:["g3w"]},"application/vnd.gerber":{source:"iana"},"application/vnd.globalplatform.card-content-mgt":{source:"iana"},"application/vnd.globalplatform.card-content-mgt-response":{source:"iana"},"application/vnd.gmx":{source:"iana",extensions:["gmx"]},"application/vnd.google-apps.document":{compressible:!1,extensions:["gdoc"]},"application/vnd.google-apps.presentation":{compressible:!1,extensions:["gslides"]},"application/vnd.google-apps.spreadsheet":{compressible:!1,extensions:["gsheet"]},"application/vnd.google-earth.kml+xml":{source:"iana",compressible:!0,extensions:["kml"]},"application/vnd.google-earth.kmz":{source:"iana",compressible:!1,extensions:["kmz"]},"application/vnd.gov.sk.e-form+xml":{source:"iana",compressible:!0},"application/vnd.gov.sk.e-form+zip":{source:"iana",compressible:!1},"application/vnd.gov.sk.xmldatacontainer+xml":{source:"iana",compressible:!0},"application/vnd.grafeq":{source:"iana",extensions:["gqf","gqs"]},"application/vnd.gridmp":{source:"iana"},"application/vnd.groove-account":{source:"iana",extensions:["gac"]},"application/vnd.groove-help":{source:"iana",extensions:["ghf"]},"application/vnd.groove-identity-message":{source:"iana",extensions:["gim"]},"application/vnd.groove-injector":{source:"iana",extensions:["grv"]},"application/vnd.groove-tool-message":{source:"iana",extensions:["gtm"]},"application/vnd.groove-tool-template":{source:"iana",extensions:["tpl"]},"application/vnd.groove-vcard":{source:"iana",extensions:["vcg"]},"application/vnd.hal+json":{source:"iana",compressible:!0},"application/vnd.hal+xml":{source:"iana",compressible:!0,extensions:["hal"]},"application/vnd.handheld-entertainment+xml":{source:"iana",compressible:!0,extensions:["zmm"]},"application/vnd.hbci":{source:"iana",extensions:["hbci"]},"application/vnd.hc+json":{source:"iana",compressible:!0},"application/vnd.hcl-bireports":{source:"iana"},"application/vnd.hdt":{source:"iana"},"application/vnd.heroku+json":{source:"iana",compressible:!0},"application/vnd.hhe.lesson-player":{source:"iana",extensions:["les"]},"application/vnd.hl7cda+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/vnd.hl7v2+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/vnd.hp-hpgl":{source:"iana",extensions:["hpgl"]},"application/vnd.hp-hpid":{source:"iana",extensions:["hpid"]},"application/vnd.hp-hps":{source:"iana",extensions:["hps"]},"application/vnd.hp-jlyt":{source:"iana",extensions:["jlt"]},"application/vnd.hp-pcl":{source:"iana",extensions:["pcl"]},"application/vnd.hp-pclxl":{source:"iana",extensions:["pclxl"]},"application/vnd.httphone":{source:"iana"},"application/vnd.hydrostatix.sof-data":{source:"iana",extensions:["sfd-hdstx"]},"application/vnd.hyper+json":{source:"iana",compressible:!0},"application/vnd.hyper-item+json":{source:"iana",compressible:!0},"application/vnd.hyperdrive+json":{source:"iana",compressible:!0},"application/vnd.hzn-3d-crossword":{source:"iana"},"application/vnd.ibm.afplinedata":{source:"iana"},"application/vnd.ibm.electronic-media":{source:"iana"},"application/vnd.ibm.minipay":{source:"iana",extensions:["mpy"]},"application/vnd.ibm.modcap":{source:"iana",extensions:["afp","listafp","list3820"]},"application/vnd.ibm.rights-management":{source:"iana",extensions:["irm"]},"application/vnd.ibm.secure-container":{source:"iana",extensions:["sc"]},"application/vnd.iccprofile":{source:"iana",extensions:["icc","icm"]},"application/vnd.ieee.1905":{source:"iana"},"application/vnd.igloader":{source:"iana",extensions:["igl"]},"application/vnd.imagemeter.folder+zip":{source:"iana",compressible:!1},"application/vnd.imagemeter.image+zip":{source:"iana",compressible:!1},"application/vnd.immervision-ivp":{source:"iana",extensions:["ivp"]},"application/vnd.immervision-ivu":{source:"iana",extensions:["ivu"]},"application/vnd.ims.imsccv1p1":{source:"iana"},"application/vnd.ims.imsccv1p2":{source:"iana"},"application/vnd.ims.imsccv1p3":{source:"iana"},"application/vnd.ims.lis.v2.result+json":{source:"iana",compressible:!0},"application/vnd.ims.lti.v2.toolconsumerprofile+json":{source:"iana",compressible:!0},"application/vnd.ims.lti.v2.toolproxy+json":{source:"iana",compressible:!0},"application/vnd.ims.lti.v2.toolproxy.id+json":{source:"iana",compressible:!0},"application/vnd.ims.lti.v2.toolsettings+json":{source:"iana",compressible:!0},"application/vnd.ims.lti.v2.toolsettings.simple+json":{source:"iana",compressible:!0},"application/vnd.informedcontrol.rms+xml":{source:"iana",compressible:!0},"application/vnd.informix-visionary":{source:"iana"},"application/vnd.infotech.project":{source:"iana"},"application/vnd.infotech.project+xml":{source:"iana",compressible:!0},"application/vnd.innopath.wamp.notification":{source:"iana"},"application/vnd.insors.igm":{source:"iana",extensions:["igm"]},"application/vnd.intercon.formnet":{source:"iana",extensions:["xpw","xpx"]},"application/vnd.intergeo":{source:"iana",extensions:["i2g"]},"application/vnd.intertrust.digibox":{source:"iana"},"application/vnd.intertrust.nncp":{source:"iana"},"application/vnd.intu.qbo":{source:"iana",extensions:["qbo"]},"application/vnd.intu.qfx":{source:"iana",extensions:["qfx"]},"application/vnd.iptc.g2.catalogitem+xml":{source:"iana",compressible:!0},"application/vnd.iptc.g2.conceptitem+xml":{source:"iana",compressible:!0},"application/vnd.iptc.g2.knowledgeitem+xml":{source:"iana",compressible:!0},"application/vnd.iptc.g2.newsitem+xml":{source:"iana",compressible:!0},"application/vnd.iptc.g2.newsmessage+xml":{source:"iana",compressible:!0},"application/vnd.iptc.g2.packageitem+xml":{source:"iana",compressible:!0},"application/vnd.iptc.g2.planningitem+xml":{source:"iana",compressible:!0},"application/vnd.ipunplugged.rcprofile":{source:"iana",extensions:["rcprofile"]},"application/vnd.irepository.package+xml":{source:"iana",compressible:!0,extensions:["irp"]},"application/vnd.is-xpr":{source:"iana",extensions:["xpr"]},"application/vnd.isac.fcs":{source:"iana",extensions:["fcs"]},"application/vnd.iso11783-10+zip":{source:"iana",compressible:!1},"application/vnd.jam":{source:"iana",extensions:["jam"]},"application/vnd.japannet-directory-service":{source:"iana"},"application/vnd.japannet-jpnstore-wakeup":{source:"iana"},"application/vnd.japannet-payment-wakeup":{source:"iana"},"application/vnd.japannet-registration":{source:"iana"},"application/vnd.japannet-registration-wakeup":{source:"iana"},"application/vnd.japannet-setstore-wakeup":{source:"iana"},"application/vnd.japannet-verification":{source:"iana"},"application/vnd.japannet-verification-wakeup":{source:"iana"},"application/vnd.jcp.javame.midlet-rms":{source:"iana",extensions:["rms"]},"application/vnd.jisp":{source:"iana",extensions:["jisp"]},"application/vnd.joost.joda-archive":{source:"iana",extensions:["joda"]},"application/vnd.jsk.isdn-ngn":{source:"iana"},"application/vnd.kahootz":{source:"iana",extensions:["ktz","ktr"]},"application/vnd.kde.karbon":{source:"iana",extensions:["karbon"]},"application/vnd.kde.kchart":{source:"iana",extensions:["chrt"]},"application/vnd.kde.kformula":{source:"iana",extensions:["kfo"]},"application/vnd.kde.kivio":{source:"iana",extensions:["flw"]},"application/vnd.kde.kontour":{source:"iana",extensions:["kon"]},"application/vnd.kde.kpresenter":{source:"iana",extensions:["kpr","kpt"]},"application/vnd.kde.kspread":{source:"iana",extensions:["ksp"]},"application/vnd.kde.kword":{source:"iana",extensions:["kwd","kwt"]},"application/vnd.kenameaapp":{source:"iana",extensions:["htke"]},"application/vnd.kidspiration":{source:"iana",extensions:["kia"]},"application/vnd.kinar":{source:"iana",extensions:["kne","knp"]},"application/vnd.koan":{source:"iana",extensions:["skp","skd","skt","skm"]},"application/vnd.kodak-descriptor":{source:"iana",extensions:["sse"]},"application/vnd.las":{source:"iana"},"application/vnd.las.las+json":{source:"iana",compressible:!0},"application/vnd.las.las+xml":{source:"iana",compressible:!0,extensions:["lasxml"]},"application/vnd.laszip":{source:"iana"},"application/vnd.leap+json":{source:"iana",compressible:!0},"application/vnd.liberty-request+xml":{source:"iana",compressible:!0},"application/vnd.llamagraphics.life-balance.desktop":{source:"iana",extensions:["lbd"]},"application/vnd.llamagraphics.life-balance.exchange+xml":{source:"iana",compressible:!0,extensions:["lbe"]},"application/vnd.logipipe.circuit+zip":{source:"iana",compressible:!1},"application/vnd.loom":{source:"iana"},"application/vnd.lotus-1-2-3":{source:"iana",extensions:["123"]},"application/vnd.lotus-approach":{source:"iana",extensions:["apr"]},"application/vnd.lotus-freelance":{source:"iana",extensions:["pre"]},"application/vnd.lotus-notes":{source:"iana",extensions:["nsf"]},"application/vnd.lotus-organizer":{source:"iana",extensions:["org"]},"application/vnd.lotus-screencam":{source:"iana",extensions:["scm"]},"application/vnd.lotus-wordpro":{source:"iana",extensions:["lwp"]},"application/vnd.macports.portpkg":{source:"iana",extensions:["portpkg"]},"application/vnd.mapbox-vector-tile":{source:"iana",extensions:["mvt"]},"application/vnd.marlin.drm.actiontoken+xml":{source:"iana",compressible:!0},"application/vnd.marlin.drm.conftoken+xml":{source:"iana",compressible:!0},"application/vnd.marlin.drm.license+xml":{source:"iana",compressible:!0},"application/vnd.marlin.drm.mdcf":{source:"iana"},"application/vnd.mason+json":{source:"iana",compressible:!0},"application/vnd.maxar.archive.3tz+zip":{source:"iana",compressible:!1},"application/vnd.maxmind.maxmind-db":{source:"iana"},"application/vnd.mcd":{source:"iana",extensions:["mcd"]},"application/vnd.medcalcdata":{source:"iana",extensions:["mc1"]},"application/vnd.mediastation.cdkey":{source:"iana",extensions:["cdkey"]},"application/vnd.meridian-slingshot":{source:"iana"},"application/vnd.mfer":{source:"iana",extensions:["mwf"]},"application/vnd.mfmp":{source:"iana",extensions:["mfm"]},"application/vnd.micro+json":{source:"iana",compressible:!0},"application/vnd.micrografx.flo":{source:"iana",extensions:["flo"]},"application/vnd.micrografx.igx":{source:"iana",extensions:["igx"]},"application/vnd.microsoft.portable-executable":{source:"iana"},"application/vnd.microsoft.windows.thumbnail-cache":{source:"iana"},"application/vnd.miele+json":{source:"iana",compressible:!0},"application/vnd.mif":{source:"iana",extensions:["mif"]},"application/vnd.minisoft-hp3000-save":{source:"iana"},"application/vnd.mitsubishi.misty-guard.trustweb":{source:"iana"},"application/vnd.mobius.daf":{source:"iana",extensions:["daf"]},"application/vnd.mobius.dis":{source:"iana",extensions:["dis"]},"application/vnd.mobius.mbk":{source:"iana",extensions:["mbk"]},"application/vnd.mobius.mqy":{source:"iana",extensions:["mqy"]},"application/vnd.mobius.msl":{source:"iana",extensions:["msl"]},"application/vnd.mobius.plc":{source:"iana",extensions:["plc"]},"application/vnd.mobius.txf":{source:"iana",extensions:["txf"]},"application/vnd.mophun.application":{source:"iana",extensions:["mpn"]},"application/vnd.mophun.certificate":{source:"iana",extensions:["mpc"]},"application/vnd.motorola.flexsuite":{source:"iana"},"application/vnd.motorola.flexsuite.adsi":{source:"iana"},"application/vnd.motorola.flexsuite.fis":{source:"iana"},"application/vnd.motorola.flexsuite.gotap":{source:"iana"},"application/vnd.motorola.flexsuite.kmr":{source:"iana"},"application/vnd.motorola.flexsuite.ttc":{source:"iana"},"application/vnd.motorola.flexsuite.wem":{source:"iana"},"application/vnd.motorola.iprm":{source:"iana"},"application/vnd.mozilla.xul+xml":{source:"iana",compressible:!0,extensions:["xul"]},"application/vnd.ms-3mfdocument":{source:"iana"},"application/vnd.ms-artgalry":{source:"iana",extensions:["cil"]},"application/vnd.ms-asf":{source:"iana"},"application/vnd.ms-cab-compressed":{source:"iana",extensions:["cab"]},"application/vnd.ms-color.iccprofile":{source:"apache"},"application/vnd.ms-excel":{source:"iana",compressible:!1,extensions:["xls","xlm","xla","xlc","xlt","xlw"]},"application/vnd.ms-excel.addin.macroenabled.12":{source:"iana",extensions:["xlam"]},"application/vnd.ms-excel.sheet.binary.macroenabled.12":{source:"iana",extensions:["xlsb"]},"application/vnd.ms-excel.sheet.macroenabled.12":{source:"iana",extensions:["xlsm"]},"application/vnd.ms-excel.template.macroenabled.12":{source:"iana",extensions:["xltm"]},"application/vnd.ms-fontobject":{source:"iana",compressible:!0,extensions:["eot"]},"application/vnd.ms-htmlhelp":{source:"iana",extensions:["chm"]},"application/vnd.ms-ims":{source:"iana",extensions:["ims"]},"application/vnd.ms-lrm":{source:"iana",extensions:["lrm"]},"application/vnd.ms-office.activex+xml":{source:"iana",compressible:!0},"application/vnd.ms-officetheme":{source:"iana",extensions:["thmx"]},"application/vnd.ms-opentype":{source:"apache",compressible:!0},"application/vnd.ms-outlook":{compressible:!1,extensions:["msg"]},"application/vnd.ms-package.obfuscated-opentype":{source:"apache"},"application/vnd.ms-pki.seccat":{source:"apache",extensions:["cat"]},"application/vnd.ms-pki.stl":{source:"apache",extensions:["stl"]},"application/vnd.ms-playready.initiator+xml":{source:"iana",compressible:!0},"application/vnd.ms-powerpoint":{source:"iana",compressible:!1,extensions:["ppt","pps","pot"]},"application/vnd.ms-powerpoint.addin.macroenabled.12":{source:"iana",extensions:["ppam"]},"application/vnd.ms-powerpoint.presentation.macroenabled.12":{source:"iana",extensions:["pptm"]},"application/vnd.ms-powerpoint.slide.macroenabled.12":{source:"iana",extensions:["sldm"]},"application/vnd.ms-powerpoint.slideshow.macroenabled.12":{source:"iana",extensions:["ppsm"]},"application/vnd.ms-powerpoint.template.macroenabled.12":{source:"iana",extensions:["potm"]},"application/vnd.ms-printdevicecapabilities+xml":{source:"iana",compressible:!0},"application/vnd.ms-printing.printticket+xml":{source:"apache",compressible:!0},"application/vnd.ms-printschematicket+xml":{source:"iana",compressible:!0},"application/vnd.ms-project":{source:"iana",extensions:["mpp","mpt"]},"application/vnd.ms-tnef":{source:"iana"},"application/vnd.ms-windows.devicepairing":{source:"iana"},"application/vnd.ms-windows.nwprinting.oob":{source:"iana"},"application/vnd.ms-windows.printerpairing":{source:"iana"},"application/vnd.ms-windows.wsd.oob":{source:"iana"},"application/vnd.ms-wmdrm.lic-chlg-req":{source:"iana"},"application/vnd.ms-wmdrm.lic-resp":{source:"iana"},"application/vnd.ms-wmdrm.meter-chlg-req":{source:"iana"},"application/vnd.ms-wmdrm.meter-resp":{source:"iana"},"application/vnd.ms-word.document.macroenabled.12":{source:"iana",extensions:["docm"]},"application/vnd.ms-word.template.macroenabled.12":{source:"iana",extensions:["dotm"]},"application/vnd.ms-works":{source:"iana",extensions:["wps","wks","wcm","wdb"]},"application/vnd.ms-wpl":{source:"iana",extensions:["wpl"]},"application/vnd.ms-xpsdocument":{source:"iana",compressible:!1,extensions:["xps"]},"application/vnd.msa-disk-image":{source:"iana"},"application/vnd.mseq":{source:"iana",extensions:["mseq"]},"application/vnd.msign":{source:"iana"},"application/vnd.multiad.creator":{source:"iana"},"application/vnd.multiad.creator.cif":{source:"iana"},"application/vnd.music-niff":{source:"iana"},"application/vnd.musician":{source:"iana",extensions:["mus"]},"application/vnd.muvee.style":{source:"iana",extensions:["msty"]},"application/vnd.mynfc":{source:"iana",extensions:["taglet"]},"application/vnd.nacamar.ybrid+json":{source:"iana",compressible:!0},"application/vnd.ncd.control":{source:"iana"},"application/vnd.ncd.reference":{source:"iana"},"application/vnd.nearst.inv+json":{source:"iana",compressible:!0},"application/vnd.nebumind.line":{source:"iana"},"application/vnd.nervana":{source:"iana"},"application/vnd.netfpx":{source:"iana"},"application/vnd.neurolanguage.nlu":{source:"iana",extensions:["nlu"]},"application/vnd.nimn":{source:"iana"},"application/vnd.nintendo.nitro.rom":{source:"iana"},"application/vnd.nintendo.snes.rom":{source:"iana"},"application/vnd.nitf":{source:"iana",extensions:["ntf","nitf"]},"application/vnd.noblenet-directory":{source:"iana",extensions:["nnd"]},"application/vnd.noblenet-sealer":{source:"iana",extensions:["nns"]},"application/vnd.noblenet-web":{source:"iana",extensions:["nnw"]},"application/vnd.nokia.catalogs":{source:"iana"},"application/vnd.nokia.conml+wbxml":{source:"iana"},"application/vnd.nokia.conml+xml":{source:"iana",compressible:!0},"application/vnd.nokia.iptv.config+xml":{source:"iana",compressible:!0},"application/vnd.nokia.isds-radio-presets":{source:"iana"},"application/vnd.nokia.landmark+wbxml":{source:"iana"},"application/vnd.nokia.landmark+xml":{source:"iana",compressible:!0},"application/vnd.nokia.landmarkcollection+xml":{source:"iana",compressible:!0},"application/vnd.nokia.n-gage.ac+xml":{source:"iana",compressible:!0,extensions:["ac"]},"application/vnd.nokia.n-gage.data":{source:"iana",extensions:["ngdat"]},"application/vnd.nokia.n-gage.symbian.install":{source:"iana",extensions:["n-gage"]},"application/vnd.nokia.ncd":{source:"iana"},"application/vnd.nokia.pcd+wbxml":{source:"iana"},"application/vnd.nokia.pcd+xml":{source:"iana",compressible:!0},"application/vnd.nokia.radio-preset":{source:"iana",extensions:["rpst"]},"application/vnd.nokia.radio-presets":{source:"iana",extensions:["rpss"]},"application/vnd.novadigm.edm":{source:"iana",extensions:["edm"]},"application/vnd.novadigm.edx":{source:"iana",extensions:["edx"]},"application/vnd.novadigm.ext":{source:"iana",extensions:["ext"]},"application/vnd.ntt-local.content-share":{source:"iana"},"application/vnd.ntt-local.file-transfer":{source:"iana"},"application/vnd.ntt-local.ogw_remote-access":{source:"iana"},"application/vnd.ntt-local.sip-ta_remote":{source:"iana"},"application/vnd.ntt-local.sip-ta_tcp_stream":{source:"iana"},"application/vnd.oasis.opendocument.chart":{source:"iana",extensions:["odc"]},"application/vnd.oasis.opendocument.chart-template":{source:"iana",extensions:["otc"]},"application/vnd.oasis.opendocument.database":{source:"iana",extensions:["odb"]},"application/vnd.oasis.opendocument.formula":{source:"iana",extensions:["odf"]},"application/vnd.oasis.opendocument.formula-template":{source:"iana",extensions:["odft"]},"application/vnd.oasis.opendocument.graphics":{source:"iana",compressible:!1,extensions:["odg"]},"application/vnd.oasis.opendocument.graphics-template":{source:"iana",extensions:["otg"]},"application/vnd.oasis.opendocument.image":{source:"iana",extensions:["odi"]},"application/vnd.oasis.opendocument.image-template":{source:"iana",extensions:["oti"]},"application/vnd.oasis.opendocument.presentation":{source:"iana",compressible:!1,extensions:["odp"]},"application/vnd.oasis.opendocument.presentation-template":{source:"iana",extensions:["otp"]},"application/vnd.oasis.opendocument.spreadsheet":{source:"iana",compressible:!1,extensions:["ods"]},"application/vnd.oasis.opendocument.spreadsheet-template":{source:"iana",extensions:["ots"]},"application/vnd.oasis.opendocument.text":{source:"iana",compressible:!1,extensions:["odt"]},"application/vnd.oasis.opendocument.text-master":{source:"iana",extensions:["odm"]},"application/vnd.oasis.opendocument.text-template":{source:"iana",extensions:["ott"]},"application/vnd.oasis.opendocument.text-web":{source:"iana",extensions:["oth"]},"application/vnd.obn":{source:"iana"},"application/vnd.ocf+cbor":{source:"iana"},"application/vnd.oci.image.manifest.v1+json":{source:"iana",compressible:!0},"application/vnd.oftn.l10n+json":{source:"iana",compressible:!0},"application/vnd.oipf.contentaccessdownload+xml":{source:"iana",compressible:!0},"application/vnd.oipf.contentaccessstreaming+xml":{source:"iana",compressible:!0},"application/vnd.oipf.cspg-hexbinary":{source:"iana"},"application/vnd.oipf.dae.svg+xml":{source:"iana",compressible:!0},"application/vnd.oipf.dae.xhtml+xml":{source:"iana",compressible:!0},"application/vnd.oipf.mippvcontrolmessage+xml":{source:"iana",compressible:!0},"application/vnd.oipf.pae.gem":{source:"iana"},"application/vnd.oipf.spdiscovery+xml":{source:"iana",compressible:!0},"application/vnd.oipf.spdlist+xml":{source:"iana",compressible:!0},"application/vnd.oipf.ueprofile+xml":{source:"iana",compressible:!0},"application/vnd.oipf.userprofile+xml":{source:"iana",compressible:!0},"application/vnd.olpc-sugar":{source:"iana",extensions:["xo"]},"application/vnd.oma-scws-config":{source:"iana"},"application/vnd.oma-scws-http-request":{source:"iana"},"application/vnd.oma-scws-http-response":{source:"iana"},"application/vnd.oma.bcast.associated-procedure-parameter+xml":{source:"iana",compressible:!0},"application/vnd.oma.bcast.drm-trigger+xml":{source:"iana",compressible:!0},"application/vnd.oma.bcast.imd+xml":{source:"iana",compressible:!0},"application/vnd.oma.bcast.ltkm":{source:"iana"},"application/vnd.oma.bcast.notification+xml":{source:"iana",compressible:!0},"application/vnd.oma.bcast.provisioningtrigger":{source:"iana"},"application/vnd.oma.bcast.sgboot":{source:"iana"},"application/vnd.oma.bcast.sgdd+xml":{source:"iana",compressible:!0},"application/vnd.oma.bcast.sgdu":{source:"iana"},"application/vnd.oma.bcast.simple-symbol-container":{source:"iana"},"application/vnd.oma.bcast.smartcard-trigger+xml":{source:"iana",compressible:!0},"application/vnd.oma.bcast.sprov+xml":{source:"iana",compressible:!0},"application/vnd.oma.bcast.stkm":{source:"iana"},"application/vnd.oma.cab-address-book+xml":{source:"iana",compressible:!0},"application/vnd.oma.cab-feature-handler+xml":{source:"iana",compressible:!0},"application/vnd.oma.cab-pcc+xml":{source:"iana",compressible:!0},"application/vnd.oma.cab-subs-invite+xml":{source:"iana",compressible:!0},"application/vnd.oma.cab-user-prefs+xml":{source:"iana",compressible:!0},"application/vnd.oma.dcd":{source:"iana"},"application/vnd.oma.dcdc":{source:"iana"},"application/vnd.oma.dd2+xml":{source:"iana",compressible:!0,extensions:["dd2"]},"application/vnd.oma.drm.risd+xml":{source:"iana",compressible:!0},"application/vnd.oma.group-usage-list+xml":{source:"iana",compressible:!0},"application/vnd.oma.lwm2m+cbor":{source:"iana"},"application/vnd.oma.lwm2m+json":{source:"iana",compressible:!0},"application/vnd.oma.lwm2m+tlv":{source:"iana"},"application/vnd.oma.pal+xml":{source:"iana",compressible:!0},"application/vnd.oma.poc.detailed-progress-report+xml":{source:"iana",compressible:!0},"application/vnd.oma.poc.final-report+xml":{source:"iana",compressible:!0},"application/vnd.oma.poc.groups+xml":{source:"iana",compressible:!0},"application/vnd.oma.poc.invocation-descriptor+xml":{source:"iana",compressible:!0},"application/vnd.oma.poc.optimized-progress-report+xml":{source:"iana",compressible:!0},"application/vnd.oma.push":{source:"iana"},"application/vnd.oma.scidm.messages+xml":{source:"iana",compressible:!0},"application/vnd.oma.xcap-directory+xml":{source:"iana",compressible:!0},"application/vnd.omads-email+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/vnd.omads-file+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/vnd.omads-folder+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/vnd.omaloc-supl-init":{source:"iana"},"application/vnd.onepager":{source:"iana"},"application/vnd.onepagertamp":{source:"iana"},"application/vnd.onepagertamx":{source:"iana"},"application/vnd.onepagertat":{source:"iana"},"application/vnd.onepagertatp":{source:"iana"},"application/vnd.onepagertatx":{source:"iana"},"application/vnd.openblox.game+xml":{source:"iana",compressible:!0,extensions:["obgx"]},"application/vnd.openblox.game-binary":{source:"iana"},"application/vnd.openeye.oeb":{source:"iana"},"application/vnd.openofficeorg.extension":{source:"apache",extensions:["oxt"]},"application/vnd.openstreetmap.data+xml":{source:"iana",compressible:!0,extensions:["osm"]},"application/vnd.opentimestamps.ots":{source:"iana"},"application/vnd.openxmlformats-officedocument.custom-properties+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.customxmlproperties+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.drawing+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.drawingml.chart+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.drawingml.chartshapes+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.drawingml.diagramcolors+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.drawingml.diagramdata+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.drawingml.diagramlayout+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.drawingml.diagramstyle+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.extended-properties+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.commentauthors+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.comments+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.handoutmaster+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.notesmaster+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.notesslide+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.presentation":{source:"iana",compressible:!1,extensions:["pptx"]},"application/vnd.openxmlformats-officedocument.presentationml.presentation.main+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.presprops+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.slide":{source:"iana",extensions:["sldx"]},"application/vnd.openxmlformats-officedocument.presentationml.slide+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.slidelayout+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.slidemaster+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.slideshow":{source:"iana",extensions:["ppsx"]},"application/vnd.openxmlformats-officedocument.presentationml.slideshow.main+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.slideupdateinfo+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.tablestyles+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.tags+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.template":{source:"iana",extensions:["potx"]},"application/vnd.openxmlformats-officedocument.presentationml.template.main+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.viewprops+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.calcchain+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.chartsheet+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.connections+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.dialogsheet+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.externallink+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcachedefinition+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcacherecords+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.pivottable+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.querytable+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.revisionheaders+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.revisionlog+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.sharedstrings+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet":{source:"iana",compressible:!1,extensions:["xlsx"]},"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.sheetmetadata+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.table+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.tablesinglecells+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.template":{source:"iana",extensions:["xltx"]},"application/vnd.openxmlformats-officedocument.spreadsheetml.template.main+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.usernames+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.volatiledependencies+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.theme+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.themeoverride+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.vmldrawing":{source:"iana"},"application/vnd.openxmlformats-officedocument.wordprocessingml.comments+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.document":{source:"iana",compressible:!1,extensions:["docx"]},"application/vnd.openxmlformats-officedocument.wordprocessingml.document.glossary+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.endnotes+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.fonttable+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.footer+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.footnotes+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.numbering+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.settings+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.styles+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.template":{source:"iana",extensions:["dotx"]},"application/vnd.openxmlformats-officedocument.wordprocessingml.template.main+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.websettings+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-package.core-properties+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-package.digital-signature-xmlsignature+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-package.relationships+xml":{source:"iana",compressible:!0},"application/vnd.oracle.resource+json":{source:"iana",compressible:!0},"application/vnd.orange.indata":{source:"iana"},"application/vnd.osa.netdeploy":{source:"iana"},"application/vnd.osgeo.mapguide.package":{source:"iana",extensions:["mgp"]},"application/vnd.osgi.bundle":{source:"iana"},"application/vnd.osgi.dp":{source:"iana",extensions:["dp"]},"application/vnd.osgi.subsystem":{source:"iana",extensions:["esa"]},"application/vnd.otps.ct-kip+xml":{source:"iana",compressible:!0},"application/vnd.oxli.countgraph":{source:"iana"},"application/vnd.pagerduty+json":{source:"iana",compressible:!0},"application/vnd.palm":{source:"iana",extensions:["pdb","pqa","oprc"]},"application/vnd.panoply":{source:"iana"},"application/vnd.paos.xml":{source:"iana"},"application/vnd.patentdive":{source:"iana"},"application/vnd.patientecommsdoc":{source:"iana"},"application/vnd.pawaafile":{source:"iana",extensions:["paw"]},"application/vnd.pcos":{source:"iana"},"application/vnd.pg.format":{source:"iana",extensions:["str"]},"application/vnd.pg.osasli":{source:"iana",extensions:["ei6"]},"application/vnd.piaccess.application-licence":{source:"iana"},"application/vnd.picsel":{source:"iana",extensions:["efif"]},"application/vnd.pmi.widget":{source:"iana",extensions:["wg"]},"application/vnd.poc.group-advertisement+xml":{source:"iana",compressible:!0},"application/vnd.pocketlearn":{source:"iana",extensions:["plf"]},"application/vnd.powerbuilder6":{source:"iana",extensions:["pbd"]},"application/vnd.powerbuilder6-s":{source:"iana"},"application/vnd.powerbuilder7":{source:"iana"},"application/vnd.powerbuilder7-s":{source:"iana"},"application/vnd.powerbuilder75":{source:"iana"},"application/vnd.powerbuilder75-s":{source:"iana"},"application/vnd.preminet":{source:"iana"},"application/vnd.previewsystems.box":{source:"iana",extensions:["box"]},"application/vnd.proteus.magazine":{source:"iana",extensions:["mgz"]},"application/vnd.psfs":{source:"iana"},"application/vnd.publishare-delta-tree":{source:"iana",extensions:["qps"]},"application/vnd.pvi.ptid1":{source:"iana",extensions:["ptid"]},"application/vnd.pwg-multiplexed":{source:"iana"},"application/vnd.pwg-xhtml-print+xml":{source:"iana",compressible:!0},"application/vnd.qualcomm.brew-app-res":{source:"iana"},"application/vnd.quarantainenet":{source:"iana"},"application/vnd.quark.quarkxpress":{source:"iana",extensions:["qxd","qxt","qwd","qwt","qxl","qxb"]},"application/vnd.quobject-quoxdocument":{source:"iana"},"application/vnd.radisys.moml+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-audit+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-audit-conf+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-audit-conn+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-audit-dialog+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-audit-stream+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-conf+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-dialog+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-dialog-base+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-dialog-fax-detect+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-dialog-fax-sendrecv+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-dialog-group+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-dialog-speech+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-dialog-transform+xml":{source:"iana",compressible:!0},"application/vnd.rainstor.data":{source:"iana"},"application/vnd.rapid":{source:"iana"},"application/vnd.rar":{source:"iana",extensions:["rar"]},"application/vnd.realvnc.bed":{source:"iana",extensions:["bed"]},"application/vnd.recordare.musicxml":{source:"iana",extensions:["mxl"]},"application/vnd.recordare.musicxml+xml":{source:"iana",compressible:!0,extensions:["musicxml"]},"application/vnd.renlearn.rlprint":{source:"iana"},"application/vnd.resilient.logic":{source:"iana"},"application/vnd.restful+json":{source:"iana",compressible:!0},"application/vnd.rig.cryptonote":{source:"iana",extensions:["cryptonote"]},"application/vnd.rim.cod":{source:"apache",extensions:["cod"]},"application/vnd.rn-realmedia":{source:"apache",extensions:["rm"]},"application/vnd.rn-realmedia-vbr":{source:"apache",extensions:["rmvb"]},"application/vnd.route66.link66+xml":{source:"iana",compressible:!0,extensions:["link66"]},"application/vnd.rs-274x":{source:"iana"},"application/vnd.ruckus.download":{source:"iana"},"application/vnd.s3sms":{source:"iana"},"application/vnd.sailingtracker.track":{source:"iana",extensions:["st"]},"application/vnd.sar":{source:"iana"},"application/vnd.sbm.cid":{source:"iana"},"application/vnd.sbm.mid2":{source:"iana"},"application/vnd.scribus":{source:"iana"},"application/vnd.sealed.3df":{source:"iana"},"application/vnd.sealed.csf":{source:"iana"},"application/vnd.sealed.doc":{source:"iana"},"application/vnd.sealed.eml":{source:"iana"},"application/vnd.sealed.mht":{source:"iana"},"application/vnd.sealed.net":{source:"iana"},"application/vnd.sealed.ppt":{source:"iana"},"application/vnd.sealed.tiff":{source:"iana"},"application/vnd.sealed.xls":{source:"iana"},"application/vnd.sealedmedia.softseal.html":{source:"iana"},"application/vnd.sealedmedia.softseal.pdf":{source:"iana"},"application/vnd.seemail":{source:"iana",extensions:["see"]},"application/vnd.seis+json":{source:"iana",compressible:!0},"application/vnd.sema":{source:"iana",extensions:["sema"]},"application/vnd.semd":{source:"iana",extensions:["semd"]},"application/vnd.semf":{source:"iana",extensions:["semf"]},"application/vnd.shade-save-file":{source:"iana"},"application/vnd.shana.informed.formdata":{source:"iana",extensions:["ifm"]},"application/vnd.shana.informed.formtemplate":{source:"iana",extensions:["itp"]},"application/vnd.shana.informed.interchange":{source:"iana",extensions:["iif"]},"application/vnd.shana.informed.package":{source:"iana",extensions:["ipk"]},"application/vnd.shootproof+json":{source:"iana",compressible:!0},"application/vnd.shopkick+json":{source:"iana",compressible:!0},"application/vnd.shp":{source:"iana"},"application/vnd.shx":{source:"iana"},"application/vnd.sigrok.session":{source:"iana"},"application/vnd.simtech-mindmapper":{source:"iana",extensions:["twd","twds"]},"application/vnd.siren+json":{source:"iana",compressible:!0},"application/vnd.smaf":{source:"iana",extensions:["mmf"]},"application/vnd.smart.notebook":{source:"iana"},"application/vnd.smart.teacher":{source:"iana",extensions:["teacher"]},"application/vnd.snesdev-page-table":{source:"iana"},"application/vnd.software602.filler.form+xml":{source:"iana",compressible:!0,extensions:["fo"]},"application/vnd.software602.filler.form-xml-zip":{source:"iana"},"application/vnd.solent.sdkm+xml":{source:"iana",compressible:!0,extensions:["sdkm","sdkd"]},"application/vnd.spotfire.dxp":{source:"iana",extensions:["dxp"]},"application/vnd.spotfire.sfs":{source:"iana",extensions:["sfs"]},"application/vnd.sqlite3":{source:"iana"},"application/vnd.sss-cod":{source:"iana"},"application/vnd.sss-dtf":{source:"iana"},"application/vnd.sss-ntf":{source:"iana"},"application/vnd.stardivision.calc":{source:"apache",extensions:["sdc"]},"application/vnd.stardivision.draw":{source:"apache",extensions:["sda"]},"application/vnd.stardivision.impress":{source:"apache",extensions:["sdd"]},"application/vnd.stardivision.math":{source:"apache",extensions:["smf"]},"application/vnd.stardivision.writer":{source:"apache",extensions:["sdw","vor"]},"application/vnd.stardivision.writer-global":{source:"apache",extensions:["sgl"]},"application/vnd.stepmania.package":{source:"iana",extensions:["smzip"]},"application/vnd.stepmania.stepchart":{source:"iana",extensions:["sm"]},"application/vnd.street-stream":{source:"iana"},"application/vnd.sun.wadl+xml":{source:"iana",compressible:!0,extensions:["wadl"]},"application/vnd.sun.xml.calc":{source:"apache",extensions:["sxc"]},"application/vnd.sun.xml.calc.template":{source:"apache",extensions:["stc"]},"application/vnd.sun.xml.draw":{source:"apache",extensions:["sxd"]},"application/vnd.sun.xml.draw.template":{source:"apache",extensions:["std"]},"application/vnd.sun.xml.impress":{source:"apache",extensions:["sxi"]},"application/vnd.sun.xml.impress.template":{source:"apache",extensions:["sti"]},"application/vnd.sun.xml.math":{source:"apache",extensions:["sxm"]},"application/vnd.sun.xml.writer":{source:"apache",extensions:["sxw"]},"application/vnd.sun.xml.writer.global":{source:"apache",extensions:["sxg"]},"application/vnd.sun.xml.writer.template":{source:"apache",extensions:["stw"]},"application/vnd.sus-calendar":{source:"iana",extensions:["sus","susp"]},"application/vnd.svd":{source:"iana",extensions:["svd"]},"application/vnd.swiftview-ics":{source:"iana"},"application/vnd.sycle+xml":{source:"iana",compressible:!0},"application/vnd.syft+json":{source:"iana",compressible:!0},"application/vnd.symbian.install":{source:"apache",extensions:["sis","sisx"]},"application/vnd.syncml+xml":{source:"iana",charset:"UTF-8",compressible:!0,extensions:["xsm"]},"application/vnd.syncml.dm+wbxml":{source:"iana",charset:"UTF-8",extensions:["bdm"]},"application/vnd.syncml.dm+xml":{source:"iana",charset:"UTF-8",compressible:!0,extensions:["xdm"]},"application/vnd.syncml.dm.notification":{source:"iana"},"application/vnd.syncml.dmddf+wbxml":{source:"iana"},"application/vnd.syncml.dmddf+xml":{source:"iana",charset:"UTF-8",compressible:!0,extensions:["ddf"]},"application/vnd.syncml.dmtnds+wbxml":{source:"iana"},"application/vnd.syncml.dmtnds+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/vnd.syncml.ds.notification":{source:"iana"},"application/vnd.tableschema+json":{source:"iana",compressible:!0},"application/vnd.tao.intent-module-archive":{source:"iana",extensions:["tao"]},"application/vnd.tcpdump.pcap":{source:"iana",extensions:["pcap","cap","dmp"]},"application/vnd.think-cell.ppttc+json":{source:"iana",compressible:!0},"application/vnd.tmd.mediaflex.api+xml":{source:"iana",compressible:!0},"application/vnd.tml":{source:"iana"},"application/vnd.tmobile-livetv":{source:"iana",extensions:["tmo"]},"application/vnd.tri.onesource":{source:"iana"},"application/vnd.trid.tpt":{source:"iana",extensions:["tpt"]},"application/vnd.triscape.mxs":{source:"iana",extensions:["mxs"]},"application/vnd.trueapp":{source:"iana",extensions:["tra"]},"application/vnd.truedoc":{source:"iana"},"application/vnd.ubisoft.webplayer":{source:"iana"},"application/vnd.ufdl":{source:"iana",extensions:["ufd","ufdl"]},"application/vnd.uiq.theme":{source:"iana",extensions:["utz"]},"application/vnd.umajin":{source:"iana",extensions:["umj"]},"application/vnd.unity":{source:"iana",extensions:["unityweb"]},"application/vnd.uoml+xml":{source:"iana",compressible:!0,extensions:["uoml"]},"application/vnd.uplanet.alert":{source:"iana"},"application/vnd.uplanet.alert-wbxml":{source:"iana"},"application/vnd.uplanet.bearer-choice":{source:"iana"},"application/vnd.uplanet.bearer-choice-wbxml":{source:"iana"},"application/vnd.uplanet.cacheop":{source:"iana"},"application/vnd.uplanet.cacheop-wbxml":{source:"iana"},"application/vnd.uplanet.channel":{source:"iana"},"application/vnd.uplanet.channel-wbxml":{source:"iana"},"application/vnd.uplanet.list":{source:"iana"},"application/vnd.uplanet.list-wbxml":{source:"iana"},"application/vnd.uplanet.listcmd":{source:"iana"},"application/vnd.uplanet.listcmd-wbxml":{source:"iana"},"application/vnd.uplanet.signal":{source:"iana"},"application/vnd.uri-map":{source:"iana"},"application/vnd.valve.source.material":{source:"iana"},"application/vnd.vcx":{source:"iana",extensions:["vcx"]},"application/vnd.vd-study":{source:"iana"},"application/vnd.vectorworks":{source:"iana"},"application/vnd.vel+json":{source:"iana",compressible:!0},"application/vnd.verimatrix.vcas":{source:"iana"},"application/vnd.veritone.aion+json":{source:"iana",compressible:!0},"application/vnd.veryant.thin":{source:"iana"},"application/vnd.ves.encrypted":{source:"iana"},"application/vnd.vidsoft.vidconference":{source:"iana"},"application/vnd.visio":{source:"iana",extensions:["vsd","vst","vss","vsw"]},"application/vnd.visionary":{source:"iana",extensions:["vis"]},"application/vnd.vividence.scriptfile":{source:"iana"},"application/vnd.vsf":{source:"iana",extensions:["vsf"]},"application/vnd.wap.sic":{source:"iana"},"application/vnd.wap.slc":{source:"iana"},"application/vnd.wap.wbxml":{source:"iana",charset:"UTF-8",extensions:["wbxml"]},"application/vnd.wap.wmlc":{source:"iana",extensions:["wmlc"]},"application/vnd.wap.wmlscriptc":{source:"iana",extensions:["wmlsc"]},"application/vnd.webturbo":{source:"iana",extensions:["wtb"]},"application/vnd.wfa.dpp":{source:"iana"},"application/vnd.wfa.p2p":{source:"iana"},"application/vnd.wfa.wsc":{source:"iana"},"application/vnd.windows.devicepairing":{source:"iana"},"application/vnd.wmc":{source:"iana"},"application/vnd.wmf.bootstrap":{source:"iana"},"application/vnd.wolfram.mathematica":{source:"iana"},"application/vnd.wolfram.mathematica.package":{source:"iana"},"application/vnd.wolfram.player":{source:"iana",extensions:["nbp"]},"application/vnd.wordperfect":{source:"iana",extensions:["wpd"]},"application/vnd.wqd":{source:"iana",extensions:["wqd"]},"application/vnd.wrq-hp3000-labelled":{source:"iana"},"application/vnd.wt.stf":{source:"iana",extensions:["stf"]},"application/vnd.wv.csp+wbxml":{source:"iana"},"application/vnd.wv.csp+xml":{source:"iana",compressible:!0},"application/vnd.wv.ssp+xml":{source:"iana",compressible:!0},"application/vnd.xacml+json":{source:"iana",compressible:!0},"application/vnd.xara":{source:"iana",extensions:["xar"]},"application/vnd.xfdl":{source:"iana",extensions:["xfdl"]},"application/vnd.xfdl.webform":{source:"iana"},"application/vnd.xmi+xml":{source:"iana",compressible:!0},"application/vnd.xmpie.cpkg":{source:"iana"},"application/vnd.xmpie.dpkg":{source:"iana"},"application/vnd.xmpie.plan":{source:"iana"},"application/vnd.xmpie.ppkg":{source:"iana"},"application/vnd.xmpie.xlim":{source:"iana"},"application/vnd.yamaha.hv-dic":{source:"iana",extensions:["hvd"]},"application/vnd.yamaha.hv-script":{source:"iana",extensions:["hvs"]},"application/vnd.yamaha.hv-voice":{source:"iana",extensions:["hvp"]},"application/vnd.yamaha.openscoreformat":{source:"iana",extensions:["osf"]},"application/vnd.yamaha.openscoreformat.osfpvg+xml":{source:"iana",compressible:!0,extensions:["osfpvg"]},"application/vnd.yamaha.remote-setup":{source:"iana"},"application/vnd.yamaha.smaf-audio":{source:"iana",extensions:["saf"]},"application/vnd.yamaha.smaf-phrase":{source:"iana",extensions:["spf"]},"application/vnd.yamaha.through-ngn":{source:"iana"},"application/vnd.yamaha.tunnel-udpencap":{source:"iana"},"application/vnd.yaoweme":{source:"iana"},"application/vnd.yellowriver-custom-menu":{source:"iana",extensions:["cmp"]},"application/vnd.youtube.yt":{source:"iana"},"application/vnd.zul":{source:"iana",extensions:["zir","zirz"]},"application/vnd.zzazz.deck+xml":{source:"iana",compressible:!0,extensions:["zaz"]},"application/voicexml+xml":{source:"iana",compressible:!0,extensions:["vxml"]},"application/voucher-cms+json":{source:"iana",compressible:!0},"application/vq-rtcpxr":{source:"iana"},"application/wasm":{source:"iana",compressible:!0,extensions:["wasm"]},"application/watcherinfo+xml":{source:"iana",compressible:!0,extensions:["wif"]},"application/webpush-options+json":{source:"iana",compressible:!0},"application/whoispp-query":{source:"iana"},"application/whoispp-response":{source:"iana"},"application/widget":{source:"iana",extensions:["wgt"]},"application/winhlp":{source:"apache",extensions:["hlp"]},"application/wita":{source:"iana"},"application/wordperfect5.1":{source:"iana"},"application/wsdl+xml":{source:"iana",compressible:!0,extensions:["wsdl"]},"application/wspolicy+xml":{source:"iana",compressible:!0,extensions:["wspolicy"]},"application/x-7z-compressed":{source:"apache",compressible:!1,extensions:["7z"]},"application/x-abiword":{source:"apache",extensions:["abw"]},"application/x-ace-compressed":{source:"apache",extensions:["ace"]},"application/x-amf":{source:"apache"},"application/x-apple-diskimage":{source:"apache",extensions:["dmg"]},"application/x-arj":{compressible:!1,extensions:["arj"]},"application/x-authorware-bin":{source:"apache",extensions:["aab","x32","u32","vox"]},"application/x-authorware-map":{source:"apache",extensions:["aam"]},"application/x-authorware-seg":{source:"apache",extensions:["aas"]},"application/x-bcpio":{source:"apache",extensions:["bcpio"]},"application/x-bdoc":{compressible:!1,extensions:["bdoc"]},"application/x-bittorrent":{source:"apache",extensions:["torrent"]},"application/x-blorb":{source:"apache",extensions:["blb","blorb"]},"application/x-bzip":{source:"apache",compressible:!1,extensions:["bz"]},"application/x-bzip2":{source:"apache",compressible:!1,extensions:["bz2","boz"]},"application/x-cbr":{source:"apache",extensions:["cbr","cba","cbt","cbz","cb7"]},"application/x-cdlink":{source:"apache",extensions:["vcd"]},"application/x-cfs-compressed":{source:"apache",extensions:["cfs"]},"application/x-chat":{source:"apache",extensions:["chat"]},"application/x-chess-pgn":{source:"apache",extensions:["pgn"]},"application/x-chrome-extension":{extensions:["crx"]},"application/x-cocoa":{source:"nginx",extensions:["cco"]},"application/x-compress":{source:"apache"},"application/x-conference":{source:"apache",extensions:["nsc"]},"application/x-cpio":{source:"apache",extensions:["cpio"]},"application/x-csh":{source:"apache",extensions:["csh"]},"application/x-deb":{compressible:!1},"application/x-debian-package":{source:"apache",extensions:["deb","udeb"]},"application/x-dgc-compressed":{source:"apache",extensions:["dgc"]},"application/x-director":{source:"apache",extensions:["dir","dcr","dxr","cst","cct","cxt","w3d","fgd","swa"]},"application/x-doom":{source:"apache",extensions:["wad"]},"application/x-dtbncx+xml":{source:"apache",compressible:!0,extensions:["ncx"]},"application/x-dtbook+xml":{source:"apache",compressible:!0,extensions:["dtb"]},"application/x-dtbresource+xml":{source:"apache",compressible:!0,extensions:["res"]},"application/x-dvi":{source:"apache",compressible:!1,extensions:["dvi"]},"application/x-envoy":{source:"apache",extensions:["evy"]},"application/x-eva":{source:"apache",extensions:["eva"]},"application/x-font-bdf":{source:"apache",extensions:["bdf"]},"application/x-font-dos":{source:"apache"},"application/x-font-framemaker":{source:"apache"},"application/x-font-ghostscript":{source:"apache",extensions:["gsf"]},"application/x-font-libgrx":{source:"apache"},"application/x-font-linux-psf":{source:"apache",extensions:["psf"]},"application/x-font-pcf":{source:"apache",extensions:["pcf"]},"application/x-font-snf":{source:"apache",extensions:["snf"]},"application/x-font-speedo":{source:"apache"},"application/x-font-sunos-news":{source:"apache"},"application/x-font-type1":{source:"apache",extensions:["pfa","pfb","pfm","afm"]},"application/x-font-vfont":{source:"apache"},"application/x-freearc":{source:"apache",extensions:["arc"]},"application/x-futuresplash":{source:"apache",extensions:["spl"]},"application/x-gca-compressed":{source:"apache",extensions:["gca"]},"application/x-glulx":{source:"apache",extensions:["ulx"]},"application/x-gnumeric":{source:"apache",extensions:["gnumeric"]},"application/x-gramps-xml":{source:"apache",extensions:["gramps"]},"application/x-gtar":{source:"apache",extensions:["gtar"]},"application/x-gzip":{source:"apache"},"application/x-hdf":{source:"apache",extensions:["hdf"]},"application/x-httpd-php":{compressible:!0,extensions:["php"]},"application/x-install-instructions":{source:"apache",extensions:["install"]},"application/x-iso9660-image":{source:"apache",extensions:["iso"]},"application/x-iwork-keynote-sffkey":{extensions:["key"]},"application/x-iwork-numbers-sffnumbers":{extensions:["numbers"]},"application/x-iwork-pages-sffpages":{extensions:["pages"]},"application/x-java-archive-diff":{source:"nginx",extensions:["jardiff"]},"application/x-java-jnlp-file":{source:"apache",compressible:!1,extensions:["jnlp"]},"application/x-javascript":{compressible:!0},"application/x-keepass2":{extensions:["kdbx"]},"application/x-latex":{source:"apache",compressible:!1,extensions:["latex"]},"application/x-lua-bytecode":{extensions:["luac"]},"application/x-lzh-compressed":{source:"apache",extensions:["lzh","lha"]},"application/x-makeself":{source:"nginx",extensions:["run"]},"application/x-mie":{source:"apache",extensions:["mie"]},"application/x-mobipocket-ebook":{source:"apache",extensions:["prc","mobi"]},"application/x-mpegurl":{compressible:!1},"application/x-ms-application":{source:"apache",extensions:["application"]},"application/x-ms-shortcut":{source:"apache",extensions:["lnk"]},"application/x-ms-wmd":{source:"apache",extensions:["wmd"]},"application/x-ms-wmz":{source:"apache",extensions:["wmz"]},"application/x-ms-xbap":{source:"apache",extensions:["xbap"]},"application/x-msaccess":{source:"apache",extensions:["mdb"]},"application/x-msbinder":{source:"apache",extensions:["obd"]},"application/x-mscardfile":{source:"apache",extensions:["crd"]},"application/x-msclip":{source:"apache",extensions:["clp"]},"application/x-msdos-program":{extensions:["exe"]},"application/x-msdownload":{source:"apache",extensions:["exe","dll","com","bat","msi"]},"application/x-msmediaview":{source:"apache",extensions:["mvb","m13","m14"]},"application/x-msmetafile":{source:"apache",extensions:["wmf","wmz","emf","emz"]},"application/x-msmoney":{source:"apache",extensions:["mny"]},"application/x-mspublisher":{source:"apache",extensions:["pub"]},"application/x-msschedule":{source:"apache",extensions:["scd"]},"application/x-msterminal":{source:"apache",extensions:["trm"]},"application/x-mswrite":{source:"apache",extensions:["wri"]},"application/x-netcdf":{source:"apache",extensions:["nc","cdf"]},"application/x-ns-proxy-autoconfig":{compressible:!0,extensions:["pac"]},"application/x-nzb":{source:"apache",extensions:["nzb"]},"application/x-perl":{source:"nginx",extensions:["pl","pm"]},"application/x-pilot":{source:"nginx",extensions:["prc","pdb"]},"application/x-pkcs12":{source:"apache",compressible:!1,extensions:["p12","pfx"]},"application/x-pkcs7-certificates":{source:"apache",extensions:["p7b","spc"]},"application/x-pkcs7-certreqresp":{source:"apache",extensions:["p7r"]},"application/x-pki-message":{source:"iana"},"application/x-rar-compressed":{source:"apache",compressible:!1,extensions:["rar"]},"application/x-redhat-package-manager":{source:"nginx",extensions:["rpm"]},"application/x-research-info-systems":{source:"apache",extensions:["ris"]},"application/x-sea":{source:"nginx",extensions:["sea"]},"application/x-sh":{source:"apache",compressible:!0,extensions:["sh"]},"application/x-shar":{source:"apache",extensions:["shar"]},"application/x-shockwave-flash":{source:"apache",compressible:!1,extensions:["swf"]},"application/x-silverlight-app":{source:"apache",extensions:["xap"]},"application/x-sql":{source:"apache",extensions:["sql"]},"application/x-stuffit":{source:"apache",compressible:!1,extensions:["sit"]},"application/x-stuffitx":{source:"apache",extensions:["sitx"]},"application/x-subrip":{source:"apache",extensions:["srt"]},"application/x-sv4cpio":{source:"apache",extensions:["sv4cpio"]},"application/x-sv4crc":{source:"apache",extensions:["sv4crc"]},"application/x-t3vm-image":{source:"apache",extensions:["t3"]},"application/x-tads":{source:"apache",extensions:["gam"]},"application/x-tar":{source:"apache",compressible:!0,extensions:["tar"]},"application/x-tcl":{source:"apache",extensions:["tcl","tk"]},"application/x-tex":{source:"apache",extensions:["tex"]},"application/x-tex-tfm":{source:"apache",extensions:["tfm"]},"application/x-texinfo":{source:"apache",extensions:["texinfo","texi"]},"application/x-tgif":{source:"apache",extensions:["obj"]},"application/x-ustar":{source:"apache",extensions:["ustar"]},"application/x-virtualbox-hdd":{compressible:!0,extensions:["hdd"]},"application/x-virtualbox-ova":{compressible:!0,extensions:["ova"]},"application/x-virtualbox-ovf":{compressible:!0,extensions:["ovf"]},"application/x-virtualbox-vbox":{compressible:!0,extensions:["vbox"]},"application/x-virtualbox-vbox-extpack":{compressible:!1,extensions:["vbox-extpack"]},"application/x-virtualbox-vdi":{compressible:!0,extensions:["vdi"]},"application/x-virtualbox-vhd":{compressible:!0,extensions:["vhd"]},"application/x-virtualbox-vmdk":{compressible:!0,extensions:["vmdk"]},"application/x-wais-source":{source:"apache",extensions:["src"]},"application/x-web-app-manifest+json":{compressible:!0,extensions:["webapp"]},"application/x-www-form-urlencoded":{source:"iana",compressible:!0},"application/x-x509-ca-cert":{source:"iana",extensions:["der","crt","pem"]},"application/x-x509-ca-ra-cert":{source:"iana"},"application/x-x509-next-ca-cert":{source:"iana"},"application/x-xfig":{source:"apache",extensions:["fig"]},"application/x-xliff+xml":{source:"apache",compressible:!0,extensions:["xlf"]},"application/x-xpinstall":{source:"apache",compressible:!1,extensions:["xpi"]},"application/x-xz":{source:"apache",extensions:["xz"]},"application/x-zmachine":{source:"apache",extensions:["z1","z2","z3","z4","z5","z6","z7","z8"]},"application/x400-bp":{source:"iana"},"application/xacml+xml":{source:"iana",compressible:!0},"application/xaml+xml":{source:"apache",compressible:!0,extensions:["xaml"]},"application/xcap-att+xml":{source:"iana",compressible:!0,extensions:["xav"]},"application/xcap-caps+xml":{source:"iana",compressible:!0,extensions:["xca"]},"application/xcap-diff+xml":{source:"iana",compressible:!0,extensions:["xdf"]},"application/xcap-el+xml":{source:"iana",compressible:!0,extensions:["xel"]},"application/xcap-error+xml":{source:"iana",compressible:!0},"application/xcap-ns+xml":{source:"iana",compressible:!0,extensions:["xns"]},"application/xcon-conference-info+xml":{source:"iana",compressible:!0},"application/xcon-conference-info-diff+xml":{source:"iana",compressible:!0},"application/xenc+xml":{source:"iana",compressible:!0,extensions:["xenc"]},"application/xhtml+xml":{source:"iana",compressible:!0,extensions:["xhtml","xht"]},"application/xhtml-voice+xml":{source:"apache",compressible:!0},"application/xliff+xml":{source:"iana",compressible:!0,extensions:["xlf"]},"application/xml":{source:"iana",compressible:!0,extensions:["xml","xsl","xsd","rng"]},"application/xml-dtd":{source:"iana",compressible:!0,extensions:["dtd"]},"application/xml-external-parsed-entity":{source:"iana"},"application/xml-patch+xml":{source:"iana",compressible:!0},"application/xmpp+xml":{source:"iana",compressible:!0},"application/xop+xml":{source:"iana",compressible:!0,extensions:["xop"]},"application/xproc+xml":{source:"apache",compressible:!0,extensions:["xpl"]},"application/xslt+xml":{source:"iana",compressible:!0,extensions:["xsl","xslt"]},"application/xspf+xml":{source:"apache",compressible:!0,extensions:["xspf"]},"application/xv+xml":{source:"iana",compressible:!0,extensions:["mxml","xhvml","xvml","xvm"]},"application/yang":{source:"iana",extensions:["yang"]},"application/yang-data+json":{source:"iana",compressible:!0},"application/yang-data+xml":{source:"iana",compressible:!0},"application/yang-patch+json":{source:"iana",compressible:!0},"application/yang-patch+xml":{source:"iana",compressible:!0},"application/yin+xml":{source:"iana",compressible:!0,extensions:["yin"]},"application/zip":{source:"iana",compressible:!1,extensions:["zip"]},"application/zlib":{source:"iana"},"application/zstd":{source:"iana"},"audio/1d-interleaved-parityfec":{source:"iana"},"audio/32kadpcm":{source:"iana"},"audio/3gpp":{source:"iana",compressible:!1,extensions:["3gpp"]},"audio/3gpp2":{source:"iana"},"audio/aac":{source:"iana"},"audio/ac3":{source:"iana"},"audio/adpcm":{source:"apache",extensions:["adp"]},"audio/amr":{source:"iana",extensions:["amr"]},"audio/amr-wb":{source:"iana"},"audio/amr-wb+":{source:"iana"},"audio/aptx":{source:"iana"},"audio/asc":{source:"iana"},"audio/atrac-advanced-lossless":{source:"iana"},"audio/atrac-x":{source:"iana"},"audio/atrac3":{source:"iana"},"audio/basic":{source:"iana",compressible:!1,extensions:["au","snd"]},"audio/bv16":{source:"iana"},"audio/bv32":{source:"iana"},"audio/clearmode":{source:"iana"},"audio/cn":{source:"iana"},"audio/dat12":{source:"iana"},"audio/dls":{source:"iana"},"audio/dsr-es201108":{source:"iana"},"audio/dsr-es202050":{source:"iana"},"audio/dsr-es202211":{source:"iana"},"audio/dsr-es202212":{source:"iana"},"audio/dv":{source:"iana"},"audio/dvi4":{source:"iana"},"audio/eac3":{source:"iana"},"audio/encaprtp":{source:"iana"},"audio/evrc":{source:"iana"},"audio/evrc-qcp":{source:"iana"},"audio/evrc0":{source:"iana"},"audio/evrc1":{source:"iana"},"audio/evrcb":{source:"iana"},"audio/evrcb0":{source:"iana"},"audio/evrcb1":{source:"iana"},"audio/evrcnw":{source:"iana"},"audio/evrcnw0":{source:"iana"},"audio/evrcnw1":{source:"iana"},"audio/evrcwb":{source:"iana"},"audio/evrcwb0":{source:"iana"},"audio/evrcwb1":{source:"iana"},"audio/evs":{source:"iana"},"audio/flexfec":{source:"iana"},"audio/fwdred":{source:"iana"},"audio/g711-0":{source:"iana"},"audio/g719":{source:"iana"},"audio/g722":{source:"iana"},"audio/g7221":{source:"iana"},"audio/g723":{source:"iana"},"audio/g726-16":{source:"iana"},"audio/g726-24":{source:"iana"},"audio/g726-32":{source:"iana"},"audio/g726-40":{source:"iana"},"audio/g728":{source:"iana"},"audio/g729":{source:"iana"},"audio/g7291":{source:"iana"},"audio/g729d":{source:"iana"},"audio/g729e":{source:"iana"},"audio/gsm":{source:"iana"},"audio/gsm-efr":{source:"iana"},"audio/gsm-hr-08":{source:"iana"},"audio/ilbc":{source:"iana"},"audio/ip-mr_v2.5":{source:"iana"},"audio/isac":{source:"apache"},"audio/l16":{source:"iana"},"audio/l20":{source:"iana"},"audio/l24":{source:"iana",compressible:!1},"audio/l8":{source:"iana"},"audio/lpc":{source:"iana"},"audio/melp":{source:"iana"},"audio/melp1200":{source:"iana"},"audio/melp2400":{source:"iana"},"audio/melp600":{source:"iana"},"audio/mhas":{source:"iana"},"audio/midi":{source:"apache",extensions:["mid","midi","kar","rmi"]},"audio/mobile-xmf":{source:"iana",extensions:["mxmf"]},"audio/mp3":{compressible:!1,extensions:["mp3"]},"audio/mp4":{source:"iana",compressible:!1,extensions:["m4a","mp4a"]},"audio/mp4a-latm":{source:"iana"},"audio/mpa":{source:"iana"},"audio/mpa-robust":{source:"iana"},"audio/mpeg":{source:"iana",compressible:!1,extensions:["mpga","mp2","mp2a","mp3","m2a","m3a"]},"audio/mpeg4-generic":{source:"iana"},"audio/musepack":{source:"apache"},"audio/ogg":{source:"iana",compressible:!1,extensions:["oga","ogg","spx","opus"]},"audio/opus":{source:"iana"},"audio/parityfec":{source:"iana"},"audio/pcma":{source:"iana"},"audio/pcma-wb":{source:"iana"},"audio/pcmu":{source:"iana"},"audio/pcmu-wb":{source:"iana"},"audio/prs.sid":{source:"iana"},"audio/qcelp":{source:"iana"},"audio/raptorfec":{source:"iana"},"audio/red":{source:"iana"},"audio/rtp-enc-aescm128":{source:"iana"},"audio/rtp-midi":{source:"iana"},"audio/rtploopback":{source:"iana"},"audio/rtx":{source:"iana"},"audio/s3m":{source:"apache",extensions:["s3m"]},"audio/scip":{source:"iana"},"audio/silk":{source:"apache",extensions:["sil"]},"audio/smv":{source:"iana"},"audio/smv-qcp":{source:"iana"},"audio/smv0":{source:"iana"},"audio/sofa":{source:"iana"},"audio/sp-midi":{source:"iana"},"audio/speex":{source:"iana"},"audio/t140c":{source:"iana"},"audio/t38":{source:"iana"},"audio/telephone-event":{source:"iana"},"audio/tetra_acelp":{source:"iana"},"audio/tetra_acelp_bb":{source:"iana"},"audio/tone":{source:"iana"},"audio/tsvcis":{source:"iana"},"audio/uemclip":{source:"iana"},"audio/ulpfec":{source:"iana"},"audio/usac":{source:"iana"},"audio/vdvi":{source:"iana"},"audio/vmr-wb":{source:"iana"},"audio/vnd.3gpp.iufp":{source:"iana"},"audio/vnd.4sb":{source:"iana"},"audio/vnd.audiokoz":{source:"iana"},"audio/vnd.celp":{source:"iana"},"audio/vnd.cisco.nse":{source:"iana"},"audio/vnd.cmles.radio-events":{source:"iana"},"audio/vnd.cns.anp1":{source:"iana"},"audio/vnd.cns.inf1":{source:"iana"},"audio/vnd.dece.audio":{source:"iana",extensions:["uva","uvva"]},"audio/vnd.digital-winds":{source:"iana",extensions:["eol"]},"audio/vnd.dlna.adts":{source:"iana"},"audio/vnd.dolby.heaac.1":{source:"iana"},"audio/vnd.dolby.heaac.2":{source:"iana"},"audio/vnd.dolby.mlp":{source:"iana"},"audio/vnd.dolby.mps":{source:"iana"},"audio/vnd.dolby.pl2":{source:"iana"},"audio/vnd.dolby.pl2x":{source:"iana"},"audio/vnd.dolby.pl2z":{source:"iana"},"audio/vnd.dolby.pulse.1":{source:"iana"},"audio/vnd.dra":{source:"iana",extensions:["dra"]},"audio/vnd.dts":{source:"iana",extensions:["dts"]},"audio/vnd.dts.hd":{source:"iana",extensions:["dtshd"]},"audio/vnd.dts.uhd":{source:"iana"},"audio/vnd.dvb.file":{source:"iana"},"audio/vnd.everad.plj":{source:"iana"},"audio/vnd.hns.audio":{source:"iana"},"audio/vnd.lucent.voice":{source:"iana",extensions:["lvp"]},"audio/vnd.ms-playready.media.pya":{source:"iana",extensions:["pya"]},"audio/vnd.nokia.mobile-xmf":{source:"iana"},"audio/vnd.nortel.vbk":{source:"iana"},"audio/vnd.nuera.ecelp4800":{source:"iana",extensions:["ecelp4800"]},"audio/vnd.nuera.ecelp7470":{source:"iana",extensions:["ecelp7470"]},"audio/vnd.nuera.ecelp9600":{source:"iana",extensions:["ecelp9600"]},"audio/vnd.octel.sbc":{source:"iana"},"audio/vnd.presonus.multitrack":{source:"iana"},"audio/vnd.qcelp":{source:"iana"},"audio/vnd.rhetorex.32kadpcm":{source:"iana"},"audio/vnd.rip":{source:"iana",extensions:["rip"]},"audio/vnd.rn-realaudio":{compressible:!1},"audio/vnd.sealedmedia.softseal.mpeg":{source:"iana"},"audio/vnd.vmx.cvsd":{source:"iana"},"audio/vnd.wave":{compressible:!1},"audio/vorbis":{source:"iana",compressible:!1},"audio/vorbis-config":{source:"iana"},"audio/wav":{compressible:!1,extensions:["wav"]},"audio/wave":{compressible:!1,extensions:["wav"]},"audio/webm":{source:"apache",compressible:!1,extensions:["weba"]},"audio/x-aac":{source:"apache",compressible:!1,extensions:["aac"]},"audio/x-aiff":{source:"apache",extensions:["aif","aiff","aifc"]},"audio/x-caf":{source:"apache",compressible:!1,extensions:["caf"]},"audio/x-flac":{source:"apache",extensions:["flac"]},"audio/x-m4a":{source:"nginx",extensions:["m4a"]},"audio/x-matroska":{source:"apache",extensions:["mka"]},"audio/x-mpegurl":{source:"apache",extensions:["m3u"]},"audio/x-ms-wax":{source:"apache",extensions:["wax"]},"audio/x-ms-wma":{source:"apache",extensions:["wma"]},"audio/x-pn-realaudio":{source:"apache",extensions:["ram","ra"]},"audio/x-pn-realaudio-plugin":{source:"apache",extensions:["rmp"]},"audio/x-realaudio":{source:"nginx",extensions:["ra"]},"audio/x-tta":{source:"apache"},"audio/x-wav":{source:"apache",extensions:["wav"]},"audio/xm":{source:"apache",extensions:["xm"]},"chemical/x-cdx":{source:"apache",extensions:["cdx"]},"chemical/x-cif":{source:"apache",extensions:["cif"]},"chemical/x-cmdf":{source:"apache",extensions:["cmdf"]},"chemical/x-cml":{source:"apache",extensions:["cml"]},"chemical/x-csml":{source:"apache",extensions:["csml"]},"chemical/x-pdb":{source:"apache"},"chemical/x-xyz":{source:"apache",extensions:["xyz"]},"font/collection":{source:"iana",extensions:["ttc"]},"font/otf":{source:"iana",compressible:!0,extensions:["otf"]},"font/sfnt":{source:"iana"},"font/ttf":{source:"iana",compressible:!0,extensions:["ttf"]},"font/woff":{source:"iana",extensions:["woff"]},"font/woff2":{source:"iana",extensions:["woff2"]},"image/aces":{source:"iana",extensions:["exr"]},"image/apng":{compressible:!1,extensions:["apng"]},"image/avci":{source:"iana",extensions:["avci"]},"image/avcs":{source:"iana",extensions:["avcs"]},"image/avif":{source:"iana",compressible:!1,extensions:["avif"]},"image/bmp":{source:"iana",compressible:!0,extensions:["bmp"]},"image/cgm":{source:"iana",extensions:["cgm"]},"image/dicom-rle":{source:"iana",extensions:["drle"]},"image/emf":{source:"iana",extensions:["emf"]},"image/fits":{source:"iana",extensions:["fits"]},"image/g3fax":{source:"iana",extensions:["g3"]},"image/gif":{source:"iana",compressible:!1,extensions:["gif"]},"image/heic":{source:"iana",extensions:["heic"]},"image/heic-sequence":{source:"iana",extensions:["heics"]},"image/heif":{source:"iana",extensions:["heif"]},"image/heif-sequence":{source:"iana",extensions:["heifs"]},"image/hej2k":{source:"iana",extensions:["hej2"]},"image/hsj2":{source:"iana",extensions:["hsj2"]},"image/ief":{source:"iana",extensions:["ief"]},"image/jls":{source:"iana",extensions:["jls"]},"image/jp2":{source:"iana",compressible:!1,extensions:["jp2","jpg2"]},"image/jpeg":{source:"iana",compressible:!1,extensions:["jpeg","jpg","jpe"]},"image/jph":{source:"iana",extensions:["jph"]},"image/jphc":{source:"iana",extensions:["jhc"]},"image/jpm":{source:"iana",compressible:!1,extensions:["jpm"]},"image/jpx":{source:"iana",compressible:!1,extensions:["jpx","jpf"]},"image/jxr":{source:"iana",extensions:["jxr"]},"image/jxra":{source:"iana",extensions:["jxra"]},"image/jxrs":{source:"iana",extensions:["jxrs"]},"image/jxs":{source:"iana",extensions:["jxs"]},"image/jxsc":{source:"iana",extensions:["jxsc"]},"image/jxsi":{source:"iana",extensions:["jxsi"]},"image/jxss":{source:"iana",extensions:["jxss"]},"image/ktx":{source:"iana",extensions:["ktx"]},"image/ktx2":{source:"iana",extensions:["ktx2"]},"image/naplps":{source:"iana"},"image/pjpeg":{compressible:!1},"image/png":{source:"iana",compressible:!1,extensions:["png"]},"image/prs.btif":{source:"iana",extensions:["btif"]},"image/prs.pti":{source:"iana",extensions:["pti"]},"image/pwg-raster":{source:"iana"},"image/sgi":{source:"apache",extensions:["sgi"]},"image/svg+xml":{source:"iana",compressible:!0,extensions:["svg","svgz"]},"image/t38":{source:"iana",extensions:["t38"]},"image/tiff":{source:"iana",compressible:!1,extensions:["tif","tiff"]},"image/tiff-fx":{source:"iana",extensions:["tfx"]},"image/vnd.adobe.photoshop":{source:"iana",compressible:!0,extensions:["psd"]},"image/vnd.airzip.accelerator.azv":{source:"iana",extensions:["azv"]},"image/vnd.cns.inf2":{source:"iana"},"image/vnd.dece.graphic":{source:"iana",extensions:["uvi","uvvi","uvg","uvvg"]},"image/vnd.djvu":{source:"iana",extensions:["djvu","djv"]},"image/vnd.dvb.subtitle":{source:"iana",extensions:["sub"]},"image/vnd.dwg":{source:"iana",extensions:["dwg"]},"image/vnd.dxf":{source:"iana",extensions:["dxf"]},"image/vnd.fastbidsheet":{source:"iana",extensions:["fbs"]},"image/vnd.fpx":{source:"iana",extensions:["fpx"]},"image/vnd.fst":{source:"iana",extensions:["fst"]},"image/vnd.fujixerox.edmics-mmr":{source:"iana",extensions:["mmr"]},"image/vnd.fujixerox.edmics-rlc":{source:"iana",extensions:["rlc"]},"image/vnd.globalgraphics.pgb":{source:"iana"},"image/vnd.microsoft.icon":{source:"iana",compressible:!0,extensions:["ico"]},"image/vnd.mix":{source:"iana"},"image/vnd.mozilla.apng":{source:"iana"},"image/vnd.ms-dds":{compressible:!0,extensions:["dds"]},"image/vnd.ms-modi":{source:"iana",extensions:["mdi"]},"image/vnd.ms-photo":{source:"apache",extensions:["wdp"]},"image/vnd.net-fpx":{source:"iana",extensions:["npx"]},"image/vnd.pco.b16":{source:"iana",extensions:["b16"]},"image/vnd.radiance":{source:"iana"},"image/vnd.sealed.png":{source:"iana"},"image/vnd.sealedmedia.softseal.gif":{source:"iana"},"image/vnd.sealedmedia.softseal.jpg":{source:"iana"},"image/vnd.svf":{source:"iana"},"image/vnd.tencent.tap":{source:"iana",extensions:["tap"]},"image/vnd.valve.source.texture":{source:"iana",extensions:["vtf"]},"image/vnd.wap.wbmp":{source:"iana",extensions:["wbmp"]},"image/vnd.xiff":{source:"iana",extensions:["xif"]},"image/vnd.zbrush.pcx":{source:"iana",extensions:["pcx"]},"image/webp":{source:"apache",extensions:["webp"]},"image/wmf":{source:"iana",extensions:["wmf"]},"image/x-3ds":{source:"apache",extensions:["3ds"]},"image/x-cmu-raster":{source:"apache",extensions:["ras"]},"image/x-cmx":{source:"apache",extensions:["cmx"]},"image/x-freehand":{source:"apache",extensions:["fh","fhc","fh4","fh5","fh7"]},"image/x-icon":{source:"apache",compressible:!0,extensions:["ico"]},"image/x-jng":{source:"nginx",extensions:["jng"]},"image/x-mrsid-image":{source:"apache",extensions:["sid"]},"image/x-ms-bmp":{source:"nginx",compressible:!0,extensions:["bmp"]},"image/x-pcx":{source:"apache",extensions:["pcx"]},"image/x-pict":{source:"apache",extensions:["pic","pct"]},"image/x-portable-anymap":{source:"apache",extensions:["pnm"]},"image/x-portable-bitmap":{source:"apache",extensions:["pbm"]},"image/x-portable-graymap":{source:"apache",extensions:["pgm"]},"image/x-portable-pixmap":{source:"apache",extensions:["ppm"]},"image/x-rgb":{source:"apache",extensions:["rgb"]},"image/x-tga":{source:"apache",extensions:["tga"]},"image/x-xbitmap":{source:"apache",extensions:["xbm"]},"image/x-xcf":{compressible:!1},"image/x-xpixmap":{source:"apache",extensions:["xpm"]},"image/x-xwindowdump":{source:"apache",extensions:["xwd"]},"message/cpim":{source:"iana"},"message/delivery-status":{source:"iana"},"message/disposition-notification":{source:"iana",extensions:["disposition-notification"]},"message/external-body":{source:"iana"},"message/feedback-report":{source:"iana"},"message/global":{source:"iana",extensions:["u8msg"]},"message/global-delivery-status":{source:"iana",extensions:["u8dsn"]},"message/global-disposition-notification":{source:"iana",extensions:["u8mdn"]},"message/global-headers":{source:"iana",extensions:["u8hdr"]},"message/http":{source:"iana",compressible:!1},"message/imdn+xml":{source:"iana",compressible:!0},"message/news":{source:"iana"},"message/partial":{source:"iana",compressible:!1},"message/rfc822":{source:"iana",compressible:!0,extensions:["eml","mime"]},"message/s-http":{source:"iana"},"message/sip":{source:"iana"},"message/sipfrag":{source:"iana"},"message/tracking-status":{source:"iana"},"message/vnd.si.simp":{source:"iana"},"message/vnd.wfa.wsc":{source:"iana",extensions:["wsc"]},"model/3mf":{source:"iana",extensions:["3mf"]},"model/e57":{source:"iana"},"model/gltf+json":{source:"iana",compressible:!0,extensions:["gltf"]},"model/gltf-binary":{source:"iana",compressible:!0,extensions:["glb"]},"model/iges":{source:"iana",compressible:!1,extensions:["igs","iges"]},"model/mesh":{source:"iana",compressible:!1,extensions:["msh","mesh","silo"]},"model/mtl":{source:"iana",extensions:["mtl"]},"model/obj":{source:"iana",extensions:["obj"]},"model/step":{source:"iana"},"model/step+xml":{source:"iana",compressible:!0,extensions:["stpx"]},"model/step+zip":{source:"iana",compressible:!1,extensions:["stpz"]},"model/step-xml+zip":{source:"iana",compressible:!1,extensions:["stpxz"]},"model/stl":{source:"iana",extensions:["stl"]},"model/vnd.collada+xml":{source:"iana",compressible:!0,extensions:["dae"]},"model/vnd.dwf":{source:"iana",extensions:["dwf"]},"model/vnd.flatland.3dml":{source:"iana"},"model/vnd.gdl":{source:"iana",extensions:["gdl"]},"model/vnd.gs-gdl":{source:"apache"},"model/vnd.gs.gdl":{source:"iana"},"model/vnd.gtw":{source:"iana",extensions:["gtw"]},"model/vnd.moml+xml":{source:"iana",compressible:!0},"model/vnd.mts":{source:"iana",extensions:["mts"]},"model/vnd.opengex":{source:"iana",extensions:["ogex"]},"model/vnd.parasolid.transmit.binary":{source:"iana",extensions:["x_b"]},"model/vnd.parasolid.transmit.text":{source:"iana",extensions:["x_t"]},"model/vnd.pytha.pyox":{source:"iana"},"model/vnd.rosette.annotated-data-model":{source:"iana"},"model/vnd.sap.vds":{source:"iana",extensions:["vds"]},"model/vnd.usdz+zip":{source:"iana",compressible:!1,extensions:["usdz"]},"model/vnd.valve.source.compiled-map":{source:"iana",extensions:["bsp"]},"model/vnd.vtu":{source:"iana",extensions:["vtu"]},"model/vrml":{source:"iana",compressible:!1,extensions:["wrl","vrml"]},"model/x3d+binary":{source:"apache",compressible:!1,extensions:["x3db","x3dbz"]},"model/x3d+fastinfoset":{source:"iana",extensions:["x3db"]},"model/x3d+vrml":{source:"apache",compressible:!1,extensions:["x3dv","x3dvz"]},"model/x3d+xml":{source:"iana",compressible:!0,extensions:["x3d","x3dz"]},"model/x3d-vrml":{source:"iana",extensions:["x3dv"]},"multipart/alternative":{source:"iana",compressible:!1},"multipart/appledouble":{source:"iana"},"multipart/byteranges":{source:"iana"},"multipart/digest":{source:"iana"},"multipart/encrypted":{source:"iana",compressible:!1},"multipart/form-data":{source:"iana",compressible:!1},"multipart/header-set":{source:"iana"},"multipart/mixed":{source:"iana"},"multipart/multilingual":{source:"iana"},"multipart/parallel":{source:"iana"},"multipart/related":{source:"iana",compressible:!1},"multipart/report":{source:"iana"},"multipart/signed":{source:"iana",compressible:!1},"multipart/vnd.bint.med-plus":{source:"iana"},"multipart/voice-message":{source:"iana"},"multipart/x-mixed-replace":{source:"iana"},"text/1d-interleaved-parityfec":{source:"iana"},"text/cache-manifest":{source:"iana",compressible:!0,extensions:["appcache","manifest"]},"text/calendar":{source:"iana",extensions:["ics","ifb"]},"text/calender":{compressible:!0},"text/cmd":{compressible:!0},"text/coffeescript":{extensions:["coffee","litcoffee"]},"text/cql":{source:"iana"},"text/cql-expression":{source:"iana"},"text/cql-identifier":{source:"iana"},"text/css":{source:"iana",charset:"UTF-8",compressible:!0,extensions:["css"]},"text/csv":{source:"iana",compressible:!0,extensions:["csv"]},"text/csv-schema":{source:"iana"},"text/directory":{source:"iana"},"text/dns":{source:"iana"},"text/ecmascript":{source:"iana"},"text/encaprtp":{source:"iana"},"text/enriched":{source:"iana"},"text/fhirpath":{source:"iana"},"text/flexfec":{source:"iana"},"text/fwdred":{source:"iana"},"text/gff3":{source:"iana"},"text/grammar-ref-list":{source:"iana"},"text/html":{source:"iana",compressible:!0,extensions:["html","htm","shtml"]},"text/jade":{extensions:["jade"]},"text/javascript":{source:"iana",compressible:!0},"text/jcr-cnd":{source:"iana"},"text/jsx":{compressible:!0,extensions:["jsx"]},"text/less":{compressible:!0,extensions:["less"]},"text/markdown":{source:"iana",compressible:!0,extensions:["markdown","md"]},"text/mathml":{source:"nginx",extensions:["mml"]},"text/mdx":{compressible:!0,extensions:["mdx"]},"text/mizar":{source:"iana"},"text/n3":{source:"iana",charset:"UTF-8",compressible:!0,extensions:["n3"]},"text/parameters":{source:"iana",charset:"UTF-8"},"text/parityfec":{source:"iana"},"text/plain":{source:"iana",compressible:!0,extensions:["txt","text","conf","def","list","log","in","ini"]},"text/provenance-notation":{source:"iana",charset:"UTF-8"},"text/prs.fallenstein.rst":{source:"iana"},"text/prs.lines.tag":{source:"iana",extensions:["dsc"]},"text/prs.prop.logic":{source:"iana"},"text/raptorfec":{source:"iana"},"text/red":{source:"iana"},"text/rfc822-headers":{source:"iana"},"text/richtext":{source:"iana",compressible:!0,extensions:["rtx"]},"text/rtf":{source:"iana",compressible:!0,extensions:["rtf"]},"text/rtp-enc-aescm128":{source:"iana"},"text/rtploopback":{source:"iana"},"text/rtx":{source:"iana"},"text/sgml":{source:"iana",extensions:["sgml","sgm"]},"text/shaclc":{source:"iana"},"text/shex":{source:"iana",extensions:["shex"]},"text/slim":{extensions:["slim","slm"]},"text/spdx":{source:"iana",extensions:["spdx"]},"text/strings":{source:"iana"},"text/stylus":{extensions:["stylus","styl"]},"text/t140":{source:"iana"},"text/tab-separated-values":{source:"iana",compressible:!0,extensions:["tsv"]},"text/troff":{source:"iana",extensions:["t","tr","roff","man","me","ms"]},"text/turtle":{source:"iana",charset:"UTF-8",extensions:["ttl"]},"text/ulpfec":{source:"iana"},"text/uri-list":{source:"iana",compressible:!0,extensions:["uri","uris","urls"]},"text/vcard":{source:"iana",compressible:!0,extensions:["vcard"]},"text/vnd.a":{source:"iana"},"text/vnd.abc":{source:"iana"},"text/vnd.ascii-art":{source:"iana"},"text/vnd.curl":{source:"iana",extensions:["curl"]},"text/vnd.curl.dcurl":{source:"apache",extensions:["dcurl"]},"text/vnd.curl.mcurl":{source:"apache",extensions:["mcurl"]},"text/vnd.curl.scurl":{source:"apache",extensions:["scurl"]},"text/vnd.debian.copyright":{source:"iana",charset:"UTF-8"},"text/vnd.dmclientscript":{source:"iana"},"text/vnd.dvb.subtitle":{source:"iana",extensions:["sub"]},"text/vnd.esmertec.theme-descriptor":{source:"iana",charset:"UTF-8"},"text/vnd.familysearch.gedcom":{source:"iana",extensions:["ged"]},"text/vnd.ficlab.flt":{source:"iana"},"text/vnd.fly":{source:"iana",extensions:["fly"]},"text/vnd.fmi.flexstor":{source:"iana",extensions:["flx"]},"text/vnd.gml":{source:"iana"},"text/vnd.graphviz":{source:"iana",extensions:["gv"]},"text/vnd.hans":{source:"iana"},"text/vnd.hgl":{source:"iana"},"text/vnd.in3d.3dml":{source:"iana",extensions:["3dml"]},"text/vnd.in3d.spot":{source:"iana",extensions:["spot"]},"text/vnd.iptc.newsml":{source:"iana"},"text/vnd.iptc.nitf":{source:"iana"},"text/vnd.latex-z":{source:"iana"},"text/vnd.motorola.reflex":{source:"iana"},"text/vnd.ms-mediapackage":{source:"iana"},"text/vnd.net2phone.commcenter.command":{source:"iana"},"text/vnd.radisys.msml-basic-layout":{source:"iana"},"text/vnd.senx.warpscript":{source:"iana"},"text/vnd.si.uricatalogue":{source:"iana"},"text/vnd.sosi":{source:"iana"},"text/vnd.sun.j2me.app-descriptor":{source:"iana",charset:"UTF-8",extensions:["jad"]},"text/vnd.trolltech.linguist":{source:"iana",charset:"UTF-8"},"text/vnd.wap.si":{source:"iana"},"text/vnd.wap.sl":{source:"iana"},"text/vnd.wap.wml":{source:"iana",extensions:["wml"]},"text/vnd.wap.wmlscript":{source:"iana",extensions:["wmls"]},"text/vtt":{source:"iana",charset:"UTF-8",compressible:!0,extensions:["vtt"]},"text/x-asm":{source:"apache",extensions:["s","asm"]},"text/x-c":{source:"apache",extensions:["c","cc","cxx","cpp","h","hh","dic"]},"text/x-component":{source:"nginx",extensions:["htc"]},"text/x-fortran":{source:"apache",extensions:["f","for","f77","f90"]},"text/x-gwt-rpc":{compressible:!0},"text/x-handlebars-template":{extensions:["hbs"]},"text/x-java-source":{source:"apache",extensions:["java"]},"text/x-jquery-tmpl":{compressible:!0},"text/x-lua":{extensions:["lua"]},"text/x-markdown":{compressible:!0,extensions:["mkd"]},"text/x-nfo":{source:"apache",extensions:["nfo"]},"text/x-opml":{source:"apache",extensions:["opml"]},"text/x-org":{compressible:!0,extensions:["org"]},"text/x-pascal":{source:"apache",extensions:["p","pas"]},"text/x-processing":{compressible:!0,extensions:["pde"]},"text/x-sass":{extensions:["sass"]},"text/x-scss":{extensions:["scss"]},"text/x-setext":{source:"apache",extensions:["etx"]},"text/x-sfv":{source:"apache",extensions:["sfv"]},"text/x-suse-ymp":{compressible:!0,extensions:["ymp"]},"text/x-uuencode":{source:"apache",extensions:["uu"]},"text/x-vcalendar":{source:"apache",extensions:["vcs"]},"text/x-vcard":{source:"apache",extensions:["vcf"]},"text/xml":{source:"iana",compressible:!0,extensions:["xml"]},"text/xml-external-parsed-entity":{source:"iana"},"text/yaml":{compressible:!0,extensions:["yaml","yml"]},"video/1d-interleaved-parityfec":{source:"iana"},"video/3gpp":{source:"iana",extensions:["3gp","3gpp"]},"video/3gpp-tt":{source:"iana"},"video/3gpp2":{source:"iana",extensions:["3g2"]},"video/av1":{source:"iana"},"video/bmpeg":{source:"iana"},"video/bt656":{source:"iana"},"video/celb":{source:"iana"},"video/dv":{source:"iana"},"video/encaprtp":{source:"iana"},"video/ffv1":{source:"iana"},"video/flexfec":{source:"iana"},"video/h261":{source:"iana",extensions:["h261"]},"video/h263":{source:"iana",extensions:["h263"]},"video/h263-1998":{source:"iana"},"video/h263-2000":{source:"iana"},"video/h264":{source:"iana",extensions:["h264"]},"video/h264-rcdo":{source:"iana"},"video/h264-svc":{source:"iana"},"video/h265":{source:"iana"},"video/iso.segment":{source:"iana",extensions:["m4s"]},"video/jpeg":{source:"iana",extensions:["jpgv"]},"video/jpeg2000":{source:"iana"},"video/jpm":{source:"apache",extensions:["jpm","jpgm"]},"video/jxsv":{source:"iana"},"video/mj2":{source:"iana",extensions:["mj2","mjp2"]},"video/mp1s":{source:"iana"},"video/mp2p":{source:"iana"},"video/mp2t":{source:"iana",extensions:["ts"]},"video/mp4":{source:"iana",compressible:!1,extensions:["mp4","mp4v","mpg4"]},"video/mp4v-es":{source:"iana"},"video/mpeg":{source:"iana",compressible:!1,extensions:["mpeg","mpg","mpe","m1v","m2v"]},"video/mpeg4-generic":{source:"iana"},"video/mpv":{source:"iana"},"video/nv":{source:"iana"},"video/ogg":{source:"iana",compressible:!1,extensions:["ogv"]},"video/parityfec":{source:"iana"},"video/pointer":{source:"iana"},"video/quicktime":{source:"iana",compressible:!1,extensions:["qt","mov"]},"video/raptorfec":{source:"iana"},"video/raw":{source:"iana"},"video/rtp-enc-aescm128":{source:"iana"},"video/rtploopback":{source:"iana"},"video/rtx":{source:"iana"},"video/scip":{source:"iana"},"video/smpte291":{source:"iana"},"video/smpte292m":{source:"iana"},"video/ulpfec":{source:"iana"},"video/vc1":{source:"iana"},"video/vc2":{source:"iana"},"video/vnd.cctv":{source:"iana"},"video/vnd.dece.hd":{source:"iana",extensions:["uvh","uvvh"]},"video/vnd.dece.mobile":{source:"iana",extensions:["uvm","uvvm"]},"video/vnd.dece.mp4":{source:"iana"},"video/vnd.dece.pd":{source:"iana",extensions:["uvp","uvvp"]},"video/vnd.dece.sd":{source:"iana",extensions:["uvs","uvvs"]},"video/vnd.dece.video":{source:"iana",extensions:["uvv","uvvv"]},"video/vnd.directv.mpeg":{source:"iana"},"video/vnd.directv.mpeg-tts":{source:"iana"},"video/vnd.dlna.mpeg-tts":{source:"iana"},"video/vnd.dvb.file":{source:"iana",extensions:["dvb"]},"video/vnd.fvt":{source:"iana",extensions:["fvt"]},"video/vnd.hns.video":{source:"iana"},"video/vnd.iptvforum.1dparityfec-1010":{source:"iana"},"video/vnd.iptvforum.1dparityfec-2005":{source:"iana"},"video/vnd.iptvforum.2dparityfec-1010":{source:"iana"},"video/vnd.iptvforum.2dparityfec-2005":{source:"iana"},"video/vnd.iptvforum.ttsavc":{source:"iana"},"video/vnd.iptvforum.ttsmpeg2":{source:"iana"},"video/vnd.motorola.video":{source:"iana"},"video/vnd.motorola.videop":{source:"iana"},"video/vnd.mpegurl":{source:"iana",extensions:["mxu","m4u"]},"video/vnd.ms-playready.media.pyv":{source:"iana",extensions:["pyv"]},"video/vnd.nokia.interleaved-multimedia":{source:"iana"},"video/vnd.nokia.mp4vr":{source:"iana"},"video/vnd.nokia.videovoip":{source:"iana"},"video/vnd.objectvideo":{source:"iana"},"video/vnd.radgamettools.bink":{source:"iana"},"video/vnd.radgamettools.smacker":{source:"iana"},"video/vnd.sealed.mpeg1":{source:"iana"},"video/vnd.sealed.mpeg4":{source:"iana"},"video/vnd.sealed.swf":{source:"iana"},"video/vnd.sealedmedia.softseal.mov":{source:"iana"},"video/vnd.uvvu.mp4":{source:"iana",extensions:["uvu","uvvu"]},"video/vnd.vivo":{source:"iana",extensions:["viv"]},"video/vnd.youtube.yt":{source:"iana"},"video/vp8":{source:"iana"},"video/vp9":{source:"iana"},"video/webm":{source:"apache",compressible:!1,extensions:["webm"]},"video/x-f4v":{source:"apache",extensions:["f4v"]},"video/x-fli":{source:"apache",extensions:["fli"]},"video/x-flv":{source:"apache",compressible:!1,extensions:["flv"]},"video/x-m4v":{source:"apache",extensions:["m4v"]},"video/x-matroska":{source:"apache",compressible:!1,extensions:["mkv","mk3d","mks"]},"video/x-mng":{source:"apache",extensions:["mng"]},"video/x-ms-asf":{source:"apache",extensions:["asf","asx"]},"video/x-ms-vob":{source:"apache",extensions:["vob"]},"video/x-ms-wm":{source:"apache",extensions:["wm"]},"video/x-ms-wmv":{source:"apache",compressible:!1,extensions:["wmv"]},"video/x-ms-wmx":{source:"apache",extensions:["wmx"]},"video/x-ms-wvx":{source:"apache",extensions:["wvx"]},"video/x-msvideo":{source:"apache",extensions:["avi"]},"video/x-sgi-movie":{source:"apache",extensions:["movie"]},"video/x-smv":{source:"apache",extensions:["smv"]},"x-conference/x-cooltalk":{source:"apache",extensions:["ice"]},"x-shader/x-fragment":{compressible:!0},"x-shader/x-vertex":{compressible:!0}}});var Ay=P((fY,wy)=>{wy.exports=yy()});var Sh=P(Et=>{"use strict";var xf=Ay(),RO=require("path").extname,Ey=/^\s*([^;\s]*)(?:;|\s|$)/,IO=/^text\//i;Et.charset=Sy;Et.charsets={lookup:Sy};Et.contentType=NO;Et.extension=DO;Et.extensions=Object.create(null);Et.lookup=JO;Et.types=Object.create(null);qO(Et.extensions,Et.types);function Sy(t){if(!t||typeof t!="string")return!1;var e=Ey.exec(t),r=e&&xf[e[1].toLowerCase()];return r&&r.charset?r.charset:e&&IO.test(e[1])?"UTF-8":!1}function NO(t){if(!t||typeof t!="string")return!1;var e=t.indexOf("/")===-1?Et.lookup(t):t;if(!e)return!1;if(e.indexOf("charset")===-1){var r=Et.charset(e);r&&(e+="; charset="+r.toLowerCase())}return e}function DO(t){if(!t||typeof t!="string")return!1;var e=Ey.exec(t),r=e&&Et.extensions[e[1].toLowerCase()];return!r||!r.length?!1:r[0]}function JO(t){if(!t||typeof t!="string")return!1;var e=RO("x."+t).toLowerCase().substr(1);return e&&Et.types[e]||!1}function qO(t,e){var r=["nginx","apache",void 0,"iana"];Object.keys(xf).forEach(function(i){var a=xf[i],o=a.extensions;if(!(!o||!o.length)){t[i]=o;for(var c=0;cf||s===f&&e[u].substr(0,12)==="application/"))continue}e[u]=i}}})}});var ss=P((pY,os)=>{"use strict";var _y=xy(),jO=Sh();os.exports=UO;os.exports.is=Ty;os.exports.hasBody=ky;os.exports.normalize=Cy;os.exports.match=Oy;function Ty(t,e){var r,n=e,i=zO(t);if(!i)return!1;if(n&&!Array.isArray(n))for(n=new Array(arguments.length-1),r=0;r2){r=new Array(arguments.length-1);for(var n=0;n{"use strict";var GO=Wo(),XO=Kc(),KO=ro(),ea=ru()("body-parser:json"),VO=ou(),Py=ss();By.exports=QO;var ZO=/^[\x20\x09\x0a\x0d]*([^\x20\x09\x0a\x0d])/;function QO(t){var e=t||{},r=typeof e.limit!="number"?GO.parse(e.limit||"100kb"):e.limit,n=e.inflate!==!1,i=e.reviver,a=e.strict!==!1,o=e.type||"application/json",c=e.verify||!1;if(c!==!1&&typeof c!="function")throw new TypeError("option verify must be function");var u=typeof o!="function"?eP(o):o;function s(f){if(f.length===0)return{};if(a){var m=YO(f);if(m!=="{"&&m!=="[")throw ea("strict violation"),WO(f,m)}try{return ea("parse json"),JSON.parse(f,i)}catch(w){throw My(w,{message:w.message,stack:w.stack})}}return function(m,w,T){if(m._body){ea("body already parsed"),T();return}if(m.body=m.body||{},!Py.hasBody(m)){ea("skip empty body"),T();return}if(ea("content-type %j",m.headers["content-type"]),!u(m)){ea("skip parsing"),T();return}var A=$O(m)||"utf-8";if(A.slice(0,4)!=="utf-"){ea("invalid charset"),T(KO(415,'unsupported charset "'+A.toUpperCase()+'"',{charset:A,type:"charset.unsupported"}));return}VO(m,w,T,s,ea,{encoding:A,inflate:n,limit:r,verify:c})}}function WO(t,e){var r=t.indexOf(e),n=r!==-1?t.substring(0,r)+"#":"";try{throw JSON.parse(n),new SyntaxError("strict violation")}catch(i){return My(i,{message:i.message.replace("#",e),stack:i.stack})}}function YO(t){var e=ZO.exec(t);return e?e[1]:void 0}function $O(t){try{return(XO.parse(t).parameters.charset||"").toLowerCase()}catch{return}}function My(t,e){for(var r=Object.getOwnPropertyNames(t),n=0;n{"use strict";var rP=Wo(),su=ru()("body-parser:raw"),tP=ou(),Ly=ss();Ry.exports=nP;function nP(t){var e=t||{},r=e.inflate!==!1,n=typeof e.limit!="number"?rP.parse(e.limit||"100kb"):e.limit,i=e.type||"application/octet-stream",a=e.verify||!1;if(a!==!1&&typeof a!="function")throw new TypeError("option verify must be function");var o=typeof i!="function"?iP(i):i;function c(u){return u}return function(s,f,m){if(s._body){su("body already parsed"),m();return}if(s.body=s.body||{},!Ly.hasBody(s)){su("skip empty body"),m();return}if(su("content-type %j",s.headers["content-type"]),!o(s)){su("skip parsing"),m();return}tP(s,f,m,c,su,{encoding:null,inflate:r,limit:n,verify:a})}}function iP(t){return function(r){return Boolean(Ly(r,t))}}});var Jy=P((mY,Dy)=>{"use strict";var aP=Wo(),oP=Kc(),cu=ru()("body-parser:text"),sP=ou(),Ny=ss();Dy.exports=cP;function cP(t){var e=t||{},r=e.defaultCharset||"utf-8",n=e.inflate!==!1,i=typeof e.limit!="number"?aP.parse(e.limit||"100kb"):e.limit,a=e.type||"text/plain",o=e.verify||!1;if(o!==!1&&typeof o!="function")throw new TypeError("option verify must be function");var c=typeof a!="function"?lP(a):a;function u(s){return s}return function(f,m,w){if(f._body){cu("body already parsed"),w();return}if(f.body=f.body||{},!Ny.hasBody(f)){cu("skip empty body"),w();return}if(cu("content-type %j",f.headers["content-type"]),!c(f)){cu("skip parsing"),w();return}var T=uP(f)||r;sP(f,m,w,u,cu,{encoding:T,inflate:n,limit:i,verify:o})}}function uP(t){try{return(oP.parse(t).parameters.charset||"").toLowerCase()}catch{return}}function lP(t){return function(r){return Boolean(Ny(r,t))}}});var jy=P((bY,qy)=>{"use strict";qy.exports=function(){if(typeof Symbol!="function"||typeof Object.getOwnPropertySymbols!="function")return!1;if(typeof Symbol.iterator=="symbol")return!0;var e={},r=Symbol("test"),n=Object(r);if(typeof r=="string"||Object.prototype.toString.call(r)!=="[object Symbol]"||Object.prototype.toString.call(n)!=="[object Symbol]")return!1;var i=42;e[r]=i;for(r in e)return!1;if(typeof Object.keys=="function"&&Object.keys(e).length!==0||typeof Object.getOwnPropertyNames=="function"&&Object.getOwnPropertyNames(e).length!==0)return!1;var a=Object.getOwnPropertySymbols(e);if(a.length!==1||a[0]!==r||!Object.prototype.propertyIsEnumerable.call(e,r))return!1;if(typeof Object.getOwnPropertyDescriptor=="function"){var o=Object.getOwnPropertyDescriptor(e,r);if(o.value!==i||o.enumerable!==!0)return!1}return!0}});var zy=P((gY,Hy)=>{"use strict";var Uy=typeof Symbol<"u"&&Symbol,fP=jy();Hy.exports=function(){return typeof Uy!="function"||typeof Symbol!="function"||typeof Uy("foo")!="symbol"||typeof Symbol("bar")!="symbol"?!1:fP()}});var Xy=P((xY,Gy)=>{"use strict";var dP="Function.prototype.bind called on incompatible ",_h=Array.prototype.slice,pP=Object.prototype.toString,hP="[object Function]";Gy.exports=function(e){var r=this;if(typeof r!="function"||pP.call(r)!==hP)throw new TypeError(dP+r);for(var n=_h.call(arguments,1),i,a=function(){if(this instanceof i){var f=r.apply(this,n.concat(_h.call(arguments)));return Object(f)===f?f:this}else return r.apply(e,n.concat(_h.call(arguments)))},o=Math.max(0,r.length-n.length),c=[],u=0;u{"use strict";var vP=Xy();Ky.exports=Function.prototype.bind||vP});var Zy=P((wY,Vy)=>{"use strict";var mP=yf();Vy.exports=mP.call(Function.call,Object.prototype.hasOwnProperty)});var Ef=P((AY,e2)=>{"use strict";var je,fs=SyntaxError,$y=Function,ls=TypeError,Th=function(t){try{return $y('"use strict"; return ('+t+").constructor;")()}catch{}},so=Object.getOwnPropertyDescriptor;if(so)try{so({},"")}catch{so=null}var kh=function(){throw new ls},bP=so?function(){try{return arguments.callee,kh}catch{try{return so(arguments,"callee").get}catch{return kh}}}():kh,cs=zy()(),Hn=Object.getPrototypeOf||function(t){return t.__proto__},us={},gP=typeof Uint8Array>"u"?je:Hn(Uint8Array),co={"%AggregateError%":typeof AggregateError>"u"?je:AggregateError,"%Array%":Array,"%ArrayBuffer%":typeof ArrayBuffer>"u"?je:ArrayBuffer,"%ArrayIteratorPrototype%":cs?Hn([][Symbol.iterator]()):je,"%AsyncFromSyncIteratorPrototype%":je,"%AsyncFunction%":us,"%AsyncGenerator%":us,"%AsyncGeneratorFunction%":us,"%AsyncIteratorPrototype%":us,"%Atomics%":typeof Atomics>"u"?je:Atomics,"%BigInt%":typeof BigInt>"u"?je:BigInt,"%BigInt64Array%":typeof BigInt64Array>"u"?je:BigInt64Array,"%BigUint64Array%":typeof BigUint64Array>"u"?je:BigUint64Array,"%Boolean%":Boolean,"%DataView%":typeof DataView>"u"?je:DataView,"%Date%":Date,"%decodeURI%":decodeURI,"%decodeURIComponent%":decodeURIComponent,"%encodeURI%":encodeURI,"%encodeURIComponent%":encodeURIComponent,"%Error%":Error,"%eval%":eval,"%EvalError%":EvalError,"%Float32Array%":typeof Float32Array>"u"?je:Float32Array,"%Float64Array%":typeof Float64Array>"u"?je:Float64Array,"%FinalizationRegistry%":typeof FinalizationRegistry>"u"?je:FinalizationRegistry,"%Function%":$y,"%GeneratorFunction%":us,"%Int8Array%":typeof Int8Array>"u"?je:Int8Array,"%Int16Array%":typeof Int16Array>"u"?je:Int16Array,"%Int32Array%":typeof Int32Array>"u"?je:Int32Array,"%isFinite%":isFinite,"%isNaN%":isNaN,"%IteratorPrototype%":cs?Hn(Hn([][Symbol.iterator]())):je,"%JSON%":typeof JSON=="object"?JSON:je,"%Map%":typeof Map>"u"?je:Map,"%MapIteratorPrototype%":typeof Map>"u"||!cs?je:Hn(new Map()[Symbol.iterator]()),"%Math%":Math,"%Number%":Number,"%Object%":Object,"%parseFloat%":parseFloat,"%parseInt%":parseInt,"%Promise%":typeof Promise>"u"?je:Promise,"%Proxy%":typeof Proxy>"u"?je:Proxy,"%RangeError%":RangeError,"%ReferenceError%":ReferenceError,"%Reflect%":typeof Reflect>"u"?je:Reflect,"%RegExp%":RegExp,"%Set%":typeof Set>"u"?je:Set,"%SetIteratorPrototype%":typeof Set>"u"||!cs?je:Hn(new Set()[Symbol.iterator]()),"%SharedArrayBuffer%":typeof SharedArrayBuffer>"u"?je:SharedArrayBuffer,"%String%":String,"%StringIteratorPrototype%":cs?Hn(""[Symbol.iterator]()):je,"%Symbol%":cs?Symbol:je,"%SyntaxError%":fs,"%ThrowTypeError%":bP,"%TypedArray%":gP,"%TypeError%":ls,"%Uint8Array%":typeof Uint8Array>"u"?je:Uint8Array,"%Uint8ClampedArray%":typeof Uint8ClampedArray>"u"?je:Uint8ClampedArray,"%Uint16Array%":typeof Uint16Array>"u"?je:Uint16Array,"%Uint32Array%":typeof Uint32Array>"u"?je:Uint32Array,"%URIError%":URIError,"%WeakMap%":typeof WeakMap>"u"?je:WeakMap,"%WeakRef%":typeof WeakRef>"u"?je:WeakRef,"%WeakSet%":typeof WeakSet>"u"?je:WeakSet};try{null.error}catch(t){Qy=Hn(Hn(t)),co["%Error.prototype%"]=Qy}var Qy,xP=function t(e){var r;if(e==="%AsyncFunction%")r=Th("async function () {}");else if(e==="%GeneratorFunction%")r=Th("function* () {}");else if(e==="%AsyncGeneratorFunction%")r=Th("async function* () {}");else if(e==="%AsyncGenerator%"){var n=t("%AsyncGeneratorFunction%");n&&(r=n.prototype)}else if(e==="%AsyncIteratorPrototype%"){var i=t("%AsyncGenerator%");i&&(r=Hn(i.prototype))}return co[e]=r,r},Wy={"%ArrayBufferPrototype%":["ArrayBuffer","prototype"],"%ArrayPrototype%":["Array","prototype"],"%ArrayProto_entries%":["Array","prototype","entries"],"%ArrayProto_forEach%":["Array","prototype","forEach"],"%ArrayProto_keys%":["Array","prototype","keys"],"%ArrayProto_values%":["Array","prototype","values"],"%AsyncFunctionPrototype%":["AsyncFunction","prototype"],"%AsyncGenerator%":["AsyncGeneratorFunction","prototype"],"%AsyncGeneratorPrototype%":["AsyncGeneratorFunction","prototype","prototype"],"%BooleanPrototype%":["Boolean","prototype"],"%DataViewPrototype%":["DataView","prototype"],"%DatePrototype%":["Date","prototype"],"%ErrorPrototype%":["Error","prototype"],"%EvalErrorPrototype%":["EvalError","prototype"],"%Float32ArrayPrototype%":["Float32Array","prototype"],"%Float64ArrayPrototype%":["Float64Array","prototype"],"%FunctionPrototype%":["Function","prototype"],"%Generator%":["GeneratorFunction","prototype"],"%GeneratorPrototype%":["GeneratorFunction","prototype","prototype"],"%Int8ArrayPrototype%":["Int8Array","prototype"],"%Int16ArrayPrototype%":["Int16Array","prototype"],"%Int32ArrayPrototype%":["Int32Array","prototype"],"%JSONParse%":["JSON","parse"],"%JSONStringify%":["JSON","stringify"],"%MapPrototype%":["Map","prototype"],"%NumberPrototype%":["Number","prototype"],"%ObjectPrototype%":["Object","prototype"],"%ObjProto_toString%":["Object","prototype","toString"],"%ObjProto_valueOf%":["Object","prototype","valueOf"],"%PromisePrototype%":["Promise","prototype"],"%PromiseProto_then%":["Promise","prototype","then"],"%Promise_all%":["Promise","all"],"%Promise_reject%":["Promise","reject"],"%Promise_resolve%":["Promise","resolve"],"%RangeErrorPrototype%":["RangeError","prototype"],"%ReferenceErrorPrototype%":["ReferenceError","prototype"],"%RegExpPrototype%":["RegExp","prototype"],"%SetPrototype%":["Set","prototype"],"%SharedArrayBufferPrototype%":["SharedArrayBuffer","prototype"],"%StringPrototype%":["String","prototype"],"%SymbolPrototype%":["Symbol","prototype"],"%SyntaxErrorPrototype%":["SyntaxError","prototype"],"%TypedArrayPrototype%":["TypedArray","prototype"],"%TypeErrorPrototype%":["TypeError","prototype"],"%Uint8ArrayPrototype%":["Uint8Array","prototype"],"%Uint8ClampedArrayPrototype%":["Uint8ClampedArray","prototype"],"%Uint16ArrayPrototype%":["Uint16Array","prototype"],"%Uint32ArrayPrototype%":["Uint32Array","prototype"],"%URIErrorPrototype%":["URIError","prototype"],"%WeakMapPrototype%":["WeakMap","prototype"],"%WeakSetPrototype%":["WeakSet","prototype"]},uu=yf(),wf=Zy(),yP=uu.call(Function.call,Array.prototype.concat),wP=uu.call(Function.apply,Array.prototype.splice),Yy=uu.call(Function.call,String.prototype.replace),Af=uu.call(Function.call,String.prototype.slice),AP=uu.call(Function.call,RegExp.prototype.exec),EP=/[^%.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|%$))/g,SP=/\\(\\)?/g,_P=function(e){var r=Af(e,0,1),n=Af(e,-1);if(r==="%"&&n!=="%")throw new fs("invalid intrinsic syntax, expected closing `%`");if(n==="%"&&r!=="%")throw new fs("invalid intrinsic syntax, expected opening `%`");var i=[];return Yy(e,EP,function(a,o,c,u){i[i.length]=c?Yy(u,SP,"$1"):o||a}),i},TP=function(e,r){var n=e,i;if(wf(Wy,n)&&(i=Wy[n],n="%"+i[0]+"%"),wf(co,n)){var a=co[n];if(a===us&&(a=xP(n)),typeof a>"u"&&!r)throw new ls("intrinsic "+e+" exists, but is not available. Please file an issue!");return{alias:i,name:n,value:a}}throw new fs("intrinsic "+e+" does not exist!")};e2.exports=function(e,r){if(typeof e!="string"||e.length===0)throw new ls("intrinsic name must be a non-empty string");if(arguments.length>1&&typeof r!="boolean")throw new ls('"allowMissing" argument must be a boolean');if(AP(/^%?[^%]*%?$/,e)===null)throw new fs("`%` may not be present anywhere but at the beginning and end of the intrinsic name");var n=_P(e),i=n.length>0?n[0]:"",a=TP("%"+i+"%",r),o=a.name,c=a.value,u=!1,s=a.alias;s&&(i=s[0],wP(n,yP([0,1],s)));for(var f=1,m=!0;f=n.length){var O=so(c,w);m=!!O,m&&"get"in O&&!("originalValue"in O.get)?c=O.get:c=c[w]}else m=wf(c,w),c=c[w];m&&!u&&(co[o]=c)}}return c}});var o2=P((EY,Sf)=>{"use strict";var Ch=yf(),ds=Ef(),n2=ds("%Function.prototype.apply%"),i2=ds("%Function.prototype.call%"),a2=ds("%Reflect.apply%",!0)||Ch.call(i2,n2),r2=ds("%Object.getOwnPropertyDescriptor%",!0),uo=ds("%Object.defineProperty%",!0),kP=ds("%Math.max%");if(uo)try{uo({},"a",{value:1})}catch{uo=null}Sf.exports=function(e){var r=a2(Ch,i2,arguments);if(r2&&uo){var n=r2(r,"length");n.configurable&&uo(r,"length",{value:1+kP(0,e.length-(arguments.length-1))})}return r};var t2=function(){return a2(Ch,n2,arguments)};uo?uo(Sf.exports,"apply",{value:t2}):Sf.exports.apply=t2});var l2=P((SY,u2)=>{"use strict";var s2=Ef(),c2=o2(),CP=c2(s2("String.prototype.indexOf"));u2.exports=function(e,r){var n=s2(e,!!r);return typeof n=="function"&&CP(e,".prototype.")>-1?c2(n):n}});var d2=P((_Y,f2)=>{f2.exports=require("util").inspect});var B2=P((TY,M2)=>{var Dh=typeof Map=="function"&&Map.prototype,Oh=Object.getOwnPropertyDescriptor&&Dh?Object.getOwnPropertyDescriptor(Map.prototype,"size"):null,Tf=Dh&&Oh&&typeof Oh.get=="function"?Oh.get:null,p2=Dh&&Map.prototype.forEach,Jh=typeof Set=="function"&&Set.prototype,Ph=Object.getOwnPropertyDescriptor&&Jh?Object.getOwnPropertyDescriptor(Set.prototype,"size"):null,kf=Jh&&Ph&&typeof Ph.get=="function"?Ph.get:null,h2=Jh&&Set.prototype.forEach,OP=typeof WeakMap=="function"&&WeakMap.prototype,fu=OP?WeakMap.prototype.has:null,PP=typeof WeakSet=="function"&&WeakSet.prototype,du=PP?WeakSet.prototype.has:null,MP=typeof WeakRef=="function"&&WeakRef.prototype,v2=MP?WeakRef.prototype.deref:null,BP=Boolean.prototype.valueOf,FP=Object.prototype.toString,LP=Function.prototype.toString,RP=String.prototype.match,qh=String.prototype.slice,ta=String.prototype.replace,IP=String.prototype.toUpperCase,m2=String.prototype.toLowerCase,_2=RegExp.prototype.test,b2=Array.prototype.concat,zn=Array.prototype.join,NP=Array.prototype.slice,g2=Math.floor,Fh=typeof BigInt=="function"?BigInt.prototype.valueOf:null,Mh=Object.getOwnPropertySymbols,Lh=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?Symbol.prototype.toString:null,ps=typeof Symbol=="function"&&typeof Symbol.iterator=="object",nt=typeof Symbol=="function"&&Symbol.toStringTag&&(typeof Symbol.toStringTag===ps?"object":"symbol")?Symbol.toStringTag:null,T2=Object.prototype.propertyIsEnumerable,x2=(typeof Reflect=="function"?Reflect.getPrototypeOf:Object.getPrototypeOf)||([].__proto__===Array.prototype?function(t){return t.__proto__}:null);function y2(t,e){if(t===1/0||t===-1/0||t!==t||t&&t>-1e3&&t<1e3||_2.call(/e/,e))return e;var r=/[0-9](?=(?:[0-9]{3})+(?![0-9]))/g;if(typeof t=="number"){var n=t<0?-g2(-t):g2(t);if(n!==t){var i=String(n),a=qh.call(e,i.length+1);return ta.call(i,r,"$&_")+"."+ta.call(ta.call(a,/([0-9]{3})/g,"$&_"),/_$/,"")}}return ta.call(e,r,"$&_")}var Rh=d2(),w2=Rh.custom,A2=C2(w2)?w2:null;M2.exports=function t(e,r,n,i){var a=r||{};if(ra(a,"quoteStyle")&&a.quoteStyle!=="single"&&a.quoteStyle!=="double")throw new TypeError('option "quoteStyle" must be "single" or "double"');if(ra(a,"maxStringLength")&&(typeof a.maxStringLength=="number"?a.maxStringLength<0&&a.maxStringLength!==1/0:a.maxStringLength!==null))throw new TypeError('option "maxStringLength", if provided, must be a positive integer, Infinity, or `null`');var o=ra(a,"customInspect")?a.customInspect:!0;if(typeof o!="boolean"&&o!=="symbol")throw new TypeError("option \"customInspect\", if provided, must be `true`, `false`, or `'symbol'`");if(ra(a,"indent")&&a.indent!==null&&a.indent!==" "&&!(parseInt(a.indent,10)===a.indent&&a.indent>0))throw new TypeError('option "indent" must be "\\t", an integer > 0, or `null`');if(ra(a,"numericSeparator")&&typeof a.numericSeparator!="boolean")throw new TypeError('option "numericSeparator", if provided, must be `true` or `false`');var c=a.numericSeparator;if(typeof e>"u")return"undefined";if(e===null)return"null";if(typeof e=="boolean")return e?"true":"false";if(typeof e=="string")return P2(e,a);if(typeof e=="number"){if(e===0)return 1/0/e>0?"0":"-0";var u=String(e);return c?y2(e,u):u}if(typeof e=="bigint"){var s=String(e)+"n";return c?y2(e,s):s}var f=typeof a.depth>"u"?5:a.depth;if(typeof n>"u"&&(n=0),n>=f&&f>0&&typeof e=="object")return Ih(e)?"[Array]":"[Object]";var m=rM(a,n);if(typeof i>"u")i=[];else if(O2(i,e)>=0)return"[Circular]";function w(b,l,p){if(l&&(i=NP.call(i),i.push(l)),p){var g={depth:a.depth};return ra(a,"quoteStyle")&&(g.quoteStyle=a.quoteStyle),t(b,g,n+1,i)}return t(b,a,n+1,i)}if(typeof e=="function"&&!E2(e)){var T=XP(e),A=_f(e,w);return"[Function"+(T?": "+T:" (anonymous)")+"]"+(A.length>0?" { "+zn.call(A,", ")+" }":"")}if(C2(e)){var O=ps?ta.call(String(e),/^(Symbol\(.*\))_[^)]*$/,"$1"):Lh.call(e);return typeof e=="object"&&!ps?lu(O):O}if(YP(e)){for(var B="<"+m2.call(String(e.nodeName)),F=e.attributes||[],I=0;I",B}if(Ih(e)){if(e.length===0)return"[]";var D=_f(e,w);return m&&!eM(D)?"["+Nh(D,m)+"]":"[ "+zn.call(D,", ")+" ]"}if(qP(e)){var z=_f(e,w);return!("cause"in Error.prototype)&&"cause"in e&&!T2.call(e,"cause")?"{ ["+String(e)+"] "+zn.call(b2.call("[cause]: "+w(e.cause),z),", ")+" }":z.length===0?"["+String(e)+"]":"{ ["+String(e)+"] "+zn.call(z,", ")+" }"}if(typeof e=="object"&&o){if(A2&&typeof e[A2]=="function"&&Rh)return Rh(e,{depth:f-n});if(o!=="symbol"&&typeof e.inspect=="function")return e.inspect()}if(KP(e)){var G=[];return p2&&p2.call(e,function(b,l){G.push(w(l,e,!0)+" => "+w(b,e))}),S2("Map",Tf.call(e),G,m)}if(QP(e)){var j=[];return h2&&h2.call(e,function(b){j.push(w(b,e))}),S2("Set",kf.call(e),j,m)}if(VP(e))return Bh("WeakMap");if(WP(e))return Bh("WeakSet");if(ZP(e))return Bh("WeakRef");if(UP(e))return lu(w(Number(e)));if(zP(e))return lu(w(Fh.call(e)));if(HP(e))return lu(BP.call(e));if(jP(e))return lu(w(String(e)));if(!JP(e)&&!E2(e)){var Z=_f(e,w),X=x2?x2(e)===Object.prototype:e instanceof Object||e.constructor===Object,U=e instanceof Object?"":"null prototype",M=!X&&nt&&Object(e)===e&&nt in e?qh.call(na(e),8,-1):U?"Object":"",v=X||typeof e.constructor!="function"?"":e.constructor.name?e.constructor.name+" ":"",E=v+(M||U?"["+zn.call(b2.call([],M||[],U||[]),": ")+"] ":"");return Z.length===0?E+"{}":m?E+"{"+Nh(Z,m)+"}":E+"{ "+zn.call(Z,", ")+" }"}return String(e)};function k2(t,e,r){var n=(r.quoteStyle||e)==="double"?'"':"'";return n+t+n}function DP(t){return ta.call(String(t),/"/g,""")}function Ih(t){return na(t)==="[object Array]"&&(!nt||!(typeof t=="object"&&nt in t))}function JP(t){return na(t)==="[object Date]"&&(!nt||!(typeof t=="object"&&nt in t))}function E2(t){return na(t)==="[object RegExp]"&&(!nt||!(typeof t=="object"&&nt in t))}function qP(t){return na(t)==="[object Error]"&&(!nt||!(typeof t=="object"&&nt in t))}function jP(t){return na(t)==="[object String]"&&(!nt||!(typeof t=="object"&&nt in t))}function UP(t){return na(t)==="[object Number]"&&(!nt||!(typeof t=="object"&&nt in t))}function HP(t){return na(t)==="[object Boolean]"&&(!nt||!(typeof t=="object"&&nt in t))}function C2(t){if(ps)return t&&typeof t=="object"&&t instanceof Symbol;if(typeof t=="symbol")return!0;if(!t||typeof t!="object"||!Lh)return!1;try{return Lh.call(t),!0}catch{}return!1}function zP(t){if(!t||typeof t!="object"||!Fh)return!1;try{return Fh.call(t),!0}catch{}return!1}var GP=Object.prototype.hasOwnProperty||function(t){return t in this};function ra(t,e){return GP.call(t,e)}function na(t){return FP.call(t)}function XP(t){if(t.name)return t.name;var e=RP.call(LP.call(t),/^function\s*([\w$]+)/);return e?e[1]:null}function O2(t,e){if(t.indexOf)return t.indexOf(e);for(var r=0,n=t.length;re.maxStringLength){var r=t.length-e.maxStringLength,n="... "+r+" more character"+(r>1?"s":"");return P2(qh.call(t,0,e.maxStringLength),e)+n}var i=ta.call(ta.call(t,/(['\\])/g,"\\$1"),/[\x00-\x1f]/g,$P);return k2(i,"single",e)}function $P(t){var e=t.charCodeAt(0),r={8:"b",9:"t",10:"n",12:"f",13:"r"}[e];return r?"\\"+r:"\\x"+(e<16?"0":"")+IP.call(e.toString(16))}function lu(t){return"Object("+t+")"}function Bh(t){return t+" { ? }"}function S2(t,e,r,n){var i=n?Nh(r,n):zn.call(r,", ");return t+" ("+e+") {"+i+"}"}function eM(t){for(var e=0;e=0)return!1;return!0}function rM(t,e){var r;if(t.indent===" ")r=" ";else if(typeof t.indent=="number"&&t.indent>0)r=zn.call(Array(t.indent+1)," ");else return null;return{base:r,prev:zn.call(Array(e+1),r)}}function Nh(t,e){if(t.length===0)return"";var r=` +`+e.prev+e.base;return r+zn.call(t,","+r)+` +`+e.prev}function _f(t,e){var r=Ih(t),n=[];if(r){n.length=t.length;for(var i=0;i{"use strict";var jh=Ef(),hs=l2(),tM=B2(),nM=jh("%TypeError%"),Cf=jh("%WeakMap%",!0),Of=jh("%Map%",!0),iM=hs("WeakMap.prototype.get",!0),aM=hs("WeakMap.prototype.set",!0),oM=hs("WeakMap.prototype.has",!0),sM=hs("Map.prototype.get",!0),cM=hs("Map.prototype.set",!0),uM=hs("Map.prototype.has",!0),Uh=function(t,e){for(var r=t,n;(n=r.next)!==null;r=n)if(n.key===e)return r.next=n.next,n.next=t.next,t.next=n,n},lM=function(t,e){var r=Uh(t,e);return r&&r.value},fM=function(t,e,r){var n=Uh(t,e);n?n.value=r:t.next={key:e,next:t.next,value:r}},dM=function(t,e){return!!Uh(t,e)};F2.exports=function(){var e,r,n,i={assert:function(a){if(!i.has(a))throw new nM("Side channel does not contain "+tM(a))},get:function(a){if(Cf&&a&&(typeof a=="object"||typeof a=="function")){if(e)return iM(e,a)}else if(Of){if(r)return sM(r,a)}else if(n)return lM(n,a)},has:function(a){if(Cf&&a&&(typeof a=="object"||typeof a=="function")){if(e)return oM(e,a)}else if(Of){if(r)return uM(r,a)}else if(n)return dM(n,a);return!1},set:function(a,o){Cf&&a&&(typeof a=="object"||typeof a=="function")?(e||(e=new Cf),aM(e,a,o)):Of?(r||(r=new Of),cM(r,a,o)):(n||(n={key:{},next:null}),fM(n,a,o))}};return i}});var Pf=P((CY,R2)=>{"use strict";var pM=String.prototype.replace,hM=/%20/g,Hh={RFC1738:"RFC1738",RFC3986:"RFC3986"};R2.exports={default:Hh.RFC3986,formatters:{RFC1738:function(t){return pM.call(t,hM,"+")},RFC3986:function(t){return String(t)}},RFC1738:Hh.RFC1738,RFC3986:Hh.RFC3986}});var Gh=P((OY,N2)=>{"use strict";var vM=Pf(),zh=Object.prototype.hasOwnProperty,lo=Array.isArray,Gn=function(){for(var t=[],e=0;e<256;++e)t.push("%"+((e<16?"0":"")+e.toString(16)).toUpperCase());return t}(),mM=function(e){for(;e.length>1;){var r=e.pop(),n=r.obj[r.prop];if(lo(n)){for(var i=[],a=0;a=48&&s<=57||s>=65&&s<=90||s>=97&&s<=122||a===vM.RFC1738&&(s===40||s===41)){c+=o.charAt(u);continue}if(s<128){c=c+Gn[s];continue}if(s<2048){c=c+(Gn[192|s>>6]+Gn[128|s&63]);continue}if(s<55296||s>=57344){c=c+(Gn[224|s>>12]+Gn[128|s>>6&63]+Gn[128|s&63]);continue}u+=1,s=65536+((s&1023)<<10|o.charCodeAt(u)&1023),c+=Gn[240|s>>18]+Gn[128|s>>12&63]+Gn[128|s>>6&63]+Gn[128|s&63]}return c},wM=function(e){for(var r=[{obj:{o:e},prop:"o"}],n=[],i=0;i{"use strict";var q2=L2(),Kh=Gh(),pu=Pf(),TM=Object.prototype.hasOwnProperty,D2={brackets:function(e){return e+"[]"},comma:"comma",indices:function(e,r){return e+"["+r+"]"},repeat:function(e){return e}},Ci=Array.isArray,kM=String.prototype.split,CM=Array.prototype.push,j2=function(t,e){CM.apply(t,Ci(e)?e:[e])},OM=Date.prototype.toISOString,J2=pu.default,Vr={addQueryPrefix:!1,allowDots:!1,charset:"utf-8",charsetSentinel:!1,delimiter:"&",encode:!0,encoder:Kh.encode,encodeValuesOnly:!1,format:J2,formatter:pu.formatters[J2],indices:!1,serializeDate:function(e){return OM.call(e)},skipNulls:!1,strictNullHandling:!1},PM=function(e){return typeof e=="string"||typeof e=="number"||typeof e=="boolean"||typeof e=="symbol"||typeof e=="bigint"},Xh={},MM=function t(e,r,n,i,a,o,c,u,s,f,m,w,T,A,O,B){for(var F=e,I=B,D=0,z=!1;(I=I.get(Xh))!==void 0&&!z;){var G=I.get(e);if(D+=1,typeof G<"u"){if(G===D)throw new RangeError("Cyclic object value");z=!0}typeof I.get(Xh)>"u"&&(D=0)}if(typeof u=="function"?F=u(r,F):F instanceof Date?F=m(F):n==="comma"&&Ci(F)&&(F=Kh.maybeMap(F,function(d){return d instanceof Date?m(d):d})),F===null){if(a)return c&&!A?c(r,Vr.encoder,O,"key",w):r;F=""}if(PM(F)||Kh.isBuffer(F)){if(c){var j=A?r:c(r,Vr.encoder,O,"key",w);if(n==="comma"&&A){for(var Z=kM.call(String(F),","),X="",U=0;U"u")return M;var v;if(n==="comma"&&Ci(F))v=[{value:F.length>0?F.join(",")||null:void 0}];else if(Ci(u))v=u;else{var E=Object.keys(F);v=s?E.sort(s):E}for(var b=i&&Ci(F)&&F.length===1?r+"[]":r,l=0;l"u"?Vr.allowDots:!!e.allowDots,charset:r,charsetSentinel:typeof e.charsetSentinel=="boolean"?e.charsetSentinel:Vr.charsetSentinel,delimiter:typeof e.delimiter>"u"?Vr.delimiter:e.delimiter,encode:typeof e.encode=="boolean"?e.encode:Vr.encode,encoder:typeof e.encoder=="function"?e.encoder:Vr.encoder,encodeValuesOnly:typeof e.encodeValuesOnly=="boolean"?e.encodeValuesOnly:Vr.encodeValuesOnly,filter:a,format:n,formatter:i,serializeDate:typeof e.serializeDate=="function"?e.serializeDate:Vr.serializeDate,skipNulls:typeof e.skipNulls=="boolean"?e.skipNulls:Vr.skipNulls,sort:typeof e.sort=="function"?e.sort:null,strictNullHandling:typeof e.strictNullHandling=="boolean"?e.strictNullHandling:Vr.strictNullHandling}};U2.exports=function(t,e){var r=t,n=BM(e),i,a;typeof n.filter=="function"?(a=n.filter,r=a("",r)):Ci(n.filter)&&(a=n.filter,i=a);var o=[];if(typeof r!="object"||r===null)return"";var c;e&&e.arrayFormat in D2?c=e.arrayFormat:e&&"indices"in e?c=e.indices?"indices":"repeat":c="indices";var u=D2[c];if(e&&"commaRoundTrip"in e&&typeof e.commaRoundTrip!="boolean")throw new TypeError("`commaRoundTrip` must be a boolean, or absent");var s=u==="comma"&&e&&e.commaRoundTrip;i||(i=Object.keys(r)),n.sort&&i.sort(n.sort);for(var f=q2(),m=0;m0?A+T:""}});var X2=P((MY,G2)=>{"use strict";var vs=Gh(),Vh=Object.prototype.hasOwnProperty,FM=Array.isArray,Ir={allowDots:!1,allowPrototypes:!1,allowSparse:!1,arrayLimit:20,charset:"utf-8",charsetSentinel:!1,comma:!1,decoder:vs.decode,delimiter:"&",depth:5,ignoreQueryPrefix:!1,interpretNumericEntities:!1,parameterLimit:1e3,parseArrays:!0,plainObjects:!1,strictNullHandling:!1},LM=function(t){return t.replace(/&#(\d+);/g,function(e,r){return String.fromCharCode(parseInt(r,10))})},z2=function(t,e){return t&&typeof t=="string"&&e.comma&&t.indexOf(",")>-1?t.split(","):t},RM="utf8=%26%2310003%3B",IM="utf8=%E2%9C%93",NM=function(e,r){var n={},i=r.ignoreQueryPrefix?e.replace(/^\?/,""):e,a=r.parameterLimit===1/0?void 0:r.parameterLimit,o=i.split(r.delimiter,a),c=-1,u,s=r.charset;if(r.charsetSentinel)for(u=0;u-1&&(A=FM(A)?[A]:A),Vh.call(n,T)?n[T]=vs.combine(n[T],A):n[T]=A}return n},DM=function(t,e,r,n){for(var i=n?e:z2(e,r),a=t.length-1;a>=0;--a){var o,c=t[a];if(c==="[]"&&r.parseArrays)o=[].concat(i);else{o=r.plainObjects?Object.create(null):{};var u=c.charAt(0)==="["&&c.charAt(c.length-1)==="]"?c.slice(1,-1):c,s=parseInt(u,10);!r.parseArrays&&u===""?o={0:i}:!isNaN(s)&&c!==u&&String(s)===u&&s>=0&&r.parseArrays&&s<=r.arrayLimit?(o=[],o[s]=i):u!=="__proto__"&&(o[u]=i)}i=o}return i},JM=function(e,r,n,i){if(!!e){var a=n.allowDots?e.replace(/\.([^.[]+)/g,"[$1]"):e,o=/(\[[^[\]]*])/,c=/(\[[^[\]]*])/g,u=n.depth>0&&o.exec(a),s=u?a.slice(0,u.index):a,f=[];if(s){if(!n.plainObjects&&Vh.call(Object.prototype,s)&&!n.allowPrototypes)return;f.push(s)}for(var m=0;n.depth>0&&(u=c.exec(a))!==null&&m"u"?Ir.charset:e.charset;return{allowDots:typeof e.allowDots>"u"?Ir.allowDots:!!e.allowDots,allowPrototypes:typeof e.allowPrototypes=="boolean"?e.allowPrototypes:Ir.allowPrototypes,allowSparse:typeof e.allowSparse=="boolean"?e.allowSparse:Ir.allowSparse,arrayLimit:typeof e.arrayLimit=="number"?e.arrayLimit:Ir.arrayLimit,charset:r,charsetSentinel:typeof e.charsetSentinel=="boolean"?e.charsetSentinel:Ir.charsetSentinel,comma:typeof e.comma=="boolean"?e.comma:Ir.comma,decoder:typeof e.decoder=="function"?e.decoder:Ir.decoder,delimiter:typeof e.delimiter=="string"||vs.isRegExp(e.delimiter)?e.delimiter:Ir.delimiter,depth:typeof e.depth=="number"||e.depth===!1?+e.depth:Ir.depth,ignoreQueryPrefix:e.ignoreQueryPrefix===!0,interpretNumericEntities:typeof e.interpretNumericEntities=="boolean"?e.interpretNumericEntities:Ir.interpretNumericEntities,parameterLimit:typeof e.parameterLimit=="number"?e.parameterLimit:Ir.parameterLimit,parseArrays:e.parseArrays!==!1,plainObjects:typeof e.plainObjects=="boolean"?e.plainObjects:Ir.plainObjects,strictNullHandling:typeof e.strictNullHandling=="boolean"?e.strictNullHandling:Ir.strictNullHandling}};G2.exports=function(t,e){var r=qM(e);if(t===""||t===null||typeof t>"u")return r.plainObjects?Object.create(null):{};for(var n=typeof t=="string"?NM(t,r):t,i=r.plainObjects?Object.create(null):{},a=Object.keys(n),o=0;o{"use strict";var jM=H2(),UM=X2(),HM=Pf();K2.exports={formats:HM,parse:UM,stringify:jM}});var $2=P((FY,Y2)=>{"use strict";var zM=Wo(),GM=Kc(),Zh=ro(),dn=ru()("body-parser:urlencoded"),XM=qn()("body-parser"),KM=ou(),Z2=ss();Y2.exports=VM;var V2=Object.create(null);function VM(t){var e=t||{};e.extended===void 0&&XM("undefined extended: provide extended option");var r=e.extended!==!1,n=e.inflate!==!1,i=typeof e.limit!="number"?zM.parse(e.limit||"100kb"):e.limit,a=e.type||"application/x-www-form-urlencoded",o=e.verify||!1;if(o!==!1&&typeof o!="function")throw new TypeError("option verify must be function");var c=r?ZM(e):WM(e),u=typeof a!="function"?YM(a):a;function s(f){return f.length?c(f):{}}return function(m,w,T){if(m._body){dn("body already parsed"),T();return}if(m.body=m.body||{},!Z2.hasBody(m)){dn("skip empty body"),T();return}if(dn("content-type %j",m.headers["content-type"]),!u(m)){dn("skip parsing"),T();return}var A=QM(m)||"utf-8";if(A!=="utf-8"){dn("invalid charset"),T(Zh(415,'unsupported charset "'+A.toUpperCase()+'"',{charset:A,type:"charset.unsupported"}));return}KM(m,w,T,s,dn,{debug:dn,encoding:A,inflate:n,limit:i,verify:o})}}function ZM(t){var e=t.parameterLimit!==void 0?t.parameterLimit:1e3,r=W2("qs");if(isNaN(e)||e<1)throw new TypeError("option parameterLimit must be a positive number");return isFinite(e)&&(e=e|0),function(i){var a=Q2(i,e);if(a===void 0)throw dn("too many parameters"),Zh(413,"too many parameters",{type:"parameters.too.many"});var o=Math.max(100,a);return dn("parse extended urlencoding"),r(i,{allowPrototypes:!0,arrayLimit:o,depth:1/0,parameterLimit:e})}}function QM(t){try{return(GM.parse(t).parameters.charset||"").toLowerCase()}catch{return}}function Q2(t,e){for(var r=0,n=0;(n=t.indexOf("&",n))!==-1;)if(r++,n++,r===e)return;return r}function W2(t){var e=V2[t];if(e!==void 0)return e.parse;switch(t){case"qs":e=Mf();break;case"querystring":e=require("querystring");break}return V2[t]=e,e.parse}function WM(t){var e=t.parameterLimit!==void 0?t.parameterLimit:1e3,r=W2("querystring");if(isNaN(e)||e<1)throw new TypeError("option parameterLimit must be a positive number");return isFinite(e)&&(e=e|0),function(i){var a=Q2(i,e);if(a===void 0)throw dn("too many parameters"),Zh(413,"too many parameters",{type:"parameters.too.many"});return dn("parse urlencoding"),r(i,void 0,void 0,{maxKeys:e})}}function YM(t){return function(r){return Boolean(Z2(r,t))}}});var t8=P((ia,r8)=>{"use strict";var $M=qn()("body-parser"),e8=Object.create(null);ia=r8.exports=$M.function(eB,"bodyParser: use individual json/urlencoded middlewares");Object.defineProperty(ia,"json",{configurable:!0,enumerable:!0,get:Bf("json")});Object.defineProperty(ia,"raw",{configurable:!0,enumerable:!0,get:Bf("raw")});Object.defineProperty(ia,"text",{configurable:!0,enumerable:!0,get:Bf("text")});Object.defineProperty(ia,"urlencoded",{configurable:!0,enumerable:!0,get:Bf("urlencoded")});function eB(t){var e=Object.create(t||null,{type:{configurable:!0,enumerable:!0,value:void 0,writable:!0}}),r=ia.urlencoded(e),n=ia.json(e);return function(a,o,c){n(a,o,function(u){if(u)return c(u);r(a,o,c)})}}function Bf(t){return function(){return rB(t)}}function rB(t){var e=e8[t];if(e!==void 0)return e;switch(t){case"json":e=Fy();break;case"raw":e=Iy();break;case"text":e=Jy();break;case"urlencoded":e=$2();break}return e8[t]=e}});var i8=P((LY,n8)=>{"use strict";n8.exports=nB;var tB=Object.prototype.hasOwnProperty;function nB(t,e,r){if(!t)throw new TypeError("argument dest is required");if(!e)throw new TypeError("argument src is required");return r===void 0&&(r=!0),Object.getOwnPropertyNames(e).forEach(function(i){if(!(!r&&tB.call(t,i))){var a=Object.getOwnPropertyDescriptor(e,i);Object.defineProperty(t,i,a)}}),t}});var o8=P((RY,a8)=>{var hu=1e3,vu=hu*60,mu=vu*60,bu=mu*24,iB=bu*365.25;a8.exports=function(t,e){e=e||{};var r=typeof t;if(r==="string"&&t.length>0)return aB(t);if(r==="number"&&isNaN(t)===!1)return e.long?sB(t):oB(t);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(t))};function aB(t){if(t=String(t),!(t.length>100)){var e=/^((?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|years?|yrs?|y)?$/i.exec(t);if(!!e){var r=parseFloat(e[1]),n=(e[2]||"ms").toLowerCase();switch(n){case"years":case"year":case"yrs":case"yr":case"y":return r*iB;case"days":case"day":case"d":return r*bu;case"hours":case"hour":case"hrs":case"hr":case"h":return r*mu;case"minutes":case"minute":case"mins":case"min":case"m":return r*vu;case"seconds":case"second":case"secs":case"sec":case"s":return r*hu;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return r;default:return}}}}function oB(t){return t>=bu?Math.round(t/bu)+"d":t>=mu?Math.round(t/mu)+"h":t>=vu?Math.round(t/vu)+"m":t>=hu?Math.round(t/hu)+"s":t+"ms"}function sB(t){return Ff(t,bu,"day")||Ff(t,mu,"hour")||Ff(t,vu,"minute")||Ff(t,hu,"second")||t+" ms"}function Ff(t,e,r){if(!(t{We=s8.exports=Wh.debug=Wh.default=Wh;We.coerce=dB;We.disable=lB;We.enable=uB;We.enabled=fB;We.humanize=o8();We.names=[];We.skips=[];We.formatters={};var Qh;function cB(t){var e=0,r;for(r in t)e=(e<<5)-e+t.charCodeAt(r),e|=0;return We.colors[Math.abs(e)%We.colors.length]}function Wh(t){function e(){if(!!e.enabled){var r=e,n=+new Date,i=n-(Qh||n);r.diff=i,r.prev=Qh,r.curr=n,Qh=n;for(var a=new Array(arguments.length),o=0;o{bt=u8.exports=Yh();bt.log=vB;bt.formatArgs=hB;bt.save=mB;bt.load=c8;bt.useColors=pB;bt.storage=typeof chrome<"u"&&typeof chrome.storage<"u"?chrome.storage.local:bB();bt.colors=["lightseagreen","forestgreen","goldenrod","dodgerblue","darkorchid","crimson"];function pB(){return typeof window<"u"&&window.process&&window.process.type==="renderer"?!0:typeof document<"u"&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||typeof window<"u"&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)&&parseInt(RegExp.$1,10)>=31||typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)}bt.formatters.j=function(t){try{return JSON.stringify(t)}catch(e){return"[UnexpectedJSONParseError]: "+e.message}};function hB(t){var e=this.useColors;if(t[0]=(e?"%c":"")+this.namespace+(e?" %c":" ")+t[0]+(e?"%c ":" ")+"+"+bt.humanize(this.diff),!!e){var r="color: "+this.color;t.splice(1,0,r,"color: inherit");var n=0,i=0;t[0].replace(/%[a-zA-Z%]/g,function(a){a!=="%%"&&(n++,a==="%c"&&(i=n))}),t.splice(i,0,r)}}function vB(){return typeof console=="object"&&console.log&&Function.prototype.apply.call(console.log,console,arguments)}function mB(t){try{t==null?bt.storage.removeItem("debug"):bt.storage.debug=t}catch{}}function c8(){var t;try{t=bt.storage.debug}catch{}return!t&&typeof process<"u"&&"env"in process&&(t=process.env.DEBUG),t}bt.enable(c8());function bB(){try{return window.localStorage}catch{}}});var h8=P((Nr,p8)=>{var f8=require("tty"),gu=require("util");Nr=p8.exports=Yh();Nr.init=SB;Nr.log=wB;Nr.formatArgs=yB;Nr.save=AB;Nr.load=d8;Nr.useColors=xB;Nr.colors=[6,2,3,4,5,1];Nr.inspectOpts=Object.keys(process.env).filter(function(t){return/^debug_/i.test(t)}).reduce(function(t,e){var r=e.substring(6).toLowerCase().replace(/_([a-z])/g,function(i,a){return a.toUpperCase()}),n=process.env[e];return/^(yes|on|true|enabled)$/i.test(n)?n=!0:/^(no|off|false|disabled)$/i.test(n)?n=!1:n==="null"?n=null:n=Number(n),t[r]=n,t},{});var ms=parseInt(process.env.DEBUG_FD,10)||2;ms!==1&&ms!==2&&gu.deprecate(function(){},"except for stderr(2) and stdout(1), any other usage of DEBUG_FD is deprecated. Override debug.log if you want to use a different log function (https://git.io/debug_fd)")();var gB=ms===1?process.stdout:ms===2?process.stderr:EB(ms);function xB(){return"colors"in Nr.inspectOpts?Boolean(Nr.inspectOpts.colors):f8.isatty(ms)}Nr.formatters.o=function(t){return this.inspectOpts.colors=this.useColors,gu.inspect(t,this.inspectOpts).split(` +`).map(function(e){return e.trim()}).join(" ")};Nr.formatters.O=function(t){return this.inspectOpts.colors=this.useColors,gu.inspect(t,this.inspectOpts)};function yB(t){var e=this.namespace,r=this.useColors;if(r){var n=this.color,i=" \x1B[3"+n+";1m"+e+" \x1B[0m";t[0]=i+t[0].split(` +`).join(` +`+i),t.push("\x1B[3"+n+"m+"+Nr.humanize(this.diff)+"\x1B[0m")}else t[0]=new Date().toUTCString()+" "+e+" "+t[0]}function wB(){return gB.write(gu.format.apply(gu,arguments)+` +`)}function AB(t){t==null?delete process.env.DEBUG:process.env.DEBUG=t}function d8(){return process.env.DEBUG}function EB(t){var e,r=process.binding("tty_wrap");switch(r.guessHandleType(t)){case"TTY":e=new f8.WriteStream(t),e._type="tty",e._handle&&e._handle.unref&&e._handle.unref();break;case"FILE":var n=require("fs");e=new n.SyncWriteStream(t,{autoClose:!1}),e._type="fs";break;case"PIPE":case"TCP":var i=require("net");e=new i.Socket({fd:t,readable:!1,writable:!0}),e.readable=!1,e.read=null,e._type="pipe",e._handle&&e._handle.unref&&e._handle.unref();break;default:throw new Error("Implement me. Unknown stream file type!")}return e.fd=t,e._isStdio=!0,e}function SB(t){t.inspectOpts={};for(var e=Object.keys(Nr.inspectOpts),r=0;r{typeof process<"u"&&process.type==="renderer"?$h.exports=l8():$h.exports=h8()});var xu=P((NY,m8)=>{"use strict";m8.exports=CB;var _B=/(?:[^\x21\x25\x26-\x3B\x3D\x3F-\x5B\x5D\x5F\x61-\x7A\x7E]|%(?:[^0-9A-Fa-f]|[0-9A-Fa-f][^0-9A-Fa-f]|$))+/g,TB=/(^|[^\uD800-\uDBFF])[\uDC00-\uDFFF]|[\uD800-\uDBFF]([^\uDC00-\uDFFF]|$)/g,kB="$1\uFFFD$2";function CB(t){return String(t).replace(TB,kB).replace(_B,encodeURI)}});var yu=P((DY,b8)=>{"use strict";var OB=/["'&<>]/;b8.exports=PB;function PB(t){var e=""+t,r=OB.exec(e);if(!r)return e;var n,i="",a=0,o=0;for(a=r.index;a{"use strict";var x8=require("url"),g8=x8.parse,Lf=x8.Url;ev.exports=y8;ev.exports.original=MB;function y8(t){var e=t.url;if(e!==void 0){var r=t._parsedUrl;return A8(e,r)?r:(r=w8(e),r._raw=e,t._parsedUrl=r)}}function MB(t){var e=t.originalUrl;if(typeof e!="string")return y8(t);var r=t._parsedOriginalUrl;return A8(e,r)?r:(r=w8(e),r._raw=e,t._parsedOriginalUrl=r)}function w8(t){if(typeof t!="string"||t.charCodeAt(0)!==47)return g8(t);for(var e=t,r=null,n=null,i=1;i{"use strict";var rv=v8()("finalhandler"),BB=xu(),FB=yu(),S8=au(),LB=bs(),_8=Zc(),RB=gf(),IB=/\x20{2}/g,NB=/\n/g,DB=typeof setImmediate=="function"?setImmediate:function(t){process.nextTick(t.bind.apply(t,arguments))},JB=S8.isFinished;function qB(t){var e=FB(t).replace(NB,"
").replace(IB,"  ");return` + + + +Error + + +
`+e+`
+ + +`}T8.exports=jB;function jB(t,e,r){var n=r||{},i=n.env||process.env.NODE_ENV||"development",a=n.onerror;return function(o){var c,u,s;if(!o&&E8(e)){rv("cannot 404 after headers sent");return}if(o?(s=zB(o),s===void 0?s=XB(e):c=UB(o),u=HB(o,s,i)):(s=404,u="Cannot "+t.method+" "+BB(GB(t))),rv("default %s",s),o&&a&&DB(a,o,t,e),E8(e)){rv("cannot %d after headers sent",s),t.socket.destroy();return}KB(t,e,s,c,u)}}function UB(t){if(!(!t.headers||typeof t.headers!="object")){for(var e=Object.create(null),r=Object.keys(t.headers),n=0;n=400&&t.status<600)return t.status;if(typeof t.statusCode=="number"&&t.statusCode>=400&&t.statusCode<600)return t.statusCode}function GB(t){try{return LB.original(t).pathname}catch{return"resource"}}function XB(t){var e=t.statusCode;return(typeof e!="number"||e<400||e>599)&&(e=500),e}function E8(t){return typeof t.headersSent!="boolean"?Boolean(t._header):t.headersSent}function KB(t,e,r,n,i){function a(){var o=qB(i);if(e.statusCode=r,e.statusMessage=_8.message[r],e.removeHeader("Content-Encoding"),e.removeHeader("Content-Language"),e.removeHeader("Content-Range"),VB(e,n),e.setHeader("Content-Security-Policy","default-src 'none'"),e.setHeader("X-Content-Type-Options","nosniff"),e.setHeader("Content-Type","text/html; charset=utf-8"),e.setHeader("Content-Length",Buffer.byteLength(o,"utf8")),t.method==="HEAD"){e.end();return}e.end(o,"utf8")}if(JB(t)){a();return}RB(t),S8(t,a),t.resume()}function VB(t,e){if(!!e)for(var r=Object.keys(e),n=0;n{var wu=1e3,Au=wu*60,Eu=Au*60,Su=Eu*24,ZB=Su*365.25;C8.exports=function(t,e){e=e||{};var r=typeof t;if(r==="string"&&t.length>0)return QB(t);if(r==="number"&&isNaN(t)===!1)return e.long?YB(t):WB(t);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(t))};function QB(t){if(t=String(t),!(t.length>100)){var e=/^((?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|years?|yrs?|y)?$/i.exec(t);if(!!e){var r=parseFloat(e[1]),n=(e[2]||"ms").toLowerCase();switch(n){case"years":case"year":case"yrs":case"yr":case"y":return r*ZB;case"days":case"day":case"d":return r*Su;case"hours":case"hour":case"hrs":case"hr":case"h":return r*Eu;case"minutes":case"minute":case"mins":case"min":case"m":return r*Au;case"seconds":case"second":case"secs":case"sec":case"s":return r*wu;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return r;default:return}}}}function WB(t){return t>=Su?Math.round(t/Su)+"d":t>=Eu?Math.round(t/Eu)+"h":t>=Au?Math.round(t/Au)+"m":t>=wu?Math.round(t/wu)+"s":t+"ms"}function YB(t){return Rf(t,Su,"day")||Rf(t,Eu,"hour")||Rf(t,Au,"minute")||Rf(t,wu,"second")||t+" ms"}function Rf(t,e,r){if(!(t{Ye=P8.exports=nv.debug=nv.default=nv;Ye.coerce=nF;Ye.disable=rF;Ye.enable=eF;Ye.enabled=tF;Ye.humanize=O8();Ye.names=[];Ye.skips=[];Ye.formatters={};var tv;function $B(t){var e=0,r;for(r in t)e=(e<<5)-e+t.charCodeAt(r),e|=0;return Ye.colors[Math.abs(e)%Ye.colors.length]}function nv(t){function e(){if(!!e.enabled){var r=e,n=+new Date,i=n-(tv||n);r.diff=i,r.prev=tv,r.curr=n,tv=n;for(var a=new Array(arguments.length),o=0;o{gt=B8.exports=iv();gt.log=oF;gt.formatArgs=aF;gt.save=sF;gt.load=M8;gt.useColors=iF;gt.storage=typeof chrome<"u"&&typeof chrome.storage<"u"?chrome.storage.local:cF();gt.colors=["lightseagreen","forestgreen","goldenrod","dodgerblue","darkorchid","crimson"];function iF(){return typeof window<"u"&&window.process&&window.process.type==="renderer"?!0:typeof document<"u"&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||typeof window<"u"&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)&&parseInt(RegExp.$1,10)>=31||typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)}gt.formatters.j=function(t){try{return JSON.stringify(t)}catch(e){return"[UnexpectedJSONParseError]: "+e.message}};function aF(t){var e=this.useColors;if(t[0]=(e?"%c":"")+this.namespace+(e?" %c":" ")+t[0]+(e?"%c ":" ")+"+"+gt.humanize(this.diff),!!e){var r="color: "+this.color;t.splice(1,0,r,"color: inherit");var n=0,i=0;t[0].replace(/%[a-zA-Z%]/g,function(a){a!=="%%"&&(n++,a==="%c"&&(i=n))}),t.splice(i,0,r)}}function oF(){return typeof console=="object"&&console.log&&Function.prototype.apply.call(console.log,console,arguments)}function sF(t){try{t==null?gt.storage.removeItem("debug"):gt.storage.debug=t}catch{}}function M8(){var t;try{t=gt.storage.debug}catch{}return!t&&typeof process<"u"&&"env"in process&&(t=process.env.DEBUG),t}gt.enable(M8());function cF(){try{return window.localStorage}catch{}}});var N8=P((Dr,I8)=>{var L8=require("tty"),_u=require("util");Dr=I8.exports=iv();Dr.init=vF;Dr.log=dF;Dr.formatArgs=fF;Dr.save=pF;Dr.load=R8;Dr.useColors=lF;Dr.colors=[6,2,3,4,5,1];Dr.inspectOpts=Object.keys(process.env).filter(function(t){return/^debug_/i.test(t)}).reduce(function(t,e){var r=e.substring(6).toLowerCase().replace(/_([a-z])/g,function(i,a){return a.toUpperCase()}),n=process.env[e];return/^(yes|on|true|enabled)$/i.test(n)?n=!0:/^(no|off|false|disabled)$/i.test(n)?n=!1:n==="null"?n=null:n=Number(n),t[r]=n,t},{});var gs=parseInt(process.env.DEBUG_FD,10)||2;gs!==1&&gs!==2&&_u.deprecate(function(){},"except for stderr(2) and stdout(1), any other usage of DEBUG_FD is deprecated. Override debug.log if you want to use a different log function (https://git.io/debug_fd)")();var uF=gs===1?process.stdout:gs===2?process.stderr:hF(gs);function lF(){return"colors"in Dr.inspectOpts?Boolean(Dr.inspectOpts.colors):L8.isatty(gs)}Dr.formatters.o=function(t){return this.inspectOpts.colors=this.useColors,_u.inspect(t,this.inspectOpts).split(` +`).map(function(e){return e.trim()}).join(" ")};Dr.formatters.O=function(t){return this.inspectOpts.colors=this.useColors,_u.inspect(t,this.inspectOpts)};function fF(t){var e=this.namespace,r=this.useColors;if(r){var n=this.color,i=" \x1B[3"+n+";1m"+e+" \x1B[0m";t[0]=i+t[0].split(` +`).join(` +`+i),t.push("\x1B[3"+n+"m+"+Dr.humanize(this.diff)+"\x1B[0m")}else t[0]=new Date().toUTCString()+" "+e+" "+t[0]}function dF(){return uF.write(_u.format.apply(_u,arguments)+` +`)}function pF(t){t==null?delete process.env.DEBUG:process.env.DEBUG=t}function R8(){return process.env.DEBUG}function hF(t){var e,r=process.binding("tty_wrap");switch(r.guessHandleType(t)){case"TTY":e=new L8.WriteStream(t),e._type="tty",e._handle&&e._handle.unref&&e._handle.unref();break;case"FILE":var n=require("fs");e=new n.SyncWriteStream(t,{autoClose:!1}),e._type="fs";break;case"PIPE":case"TCP":var i=require("net");e=new i.Socket({fd:t,readable:!1,writable:!0}),e.readable=!1,e.read=null,e._type="pipe",e._handle&&e._handle.unref&&e._handle.unref();break;default:throw new Error("Implement me. Unknown stream file type!")}return e.fd=t,e._isStdio=!0,e}function vF(t){t.inspectOpts={};for(var e=Object.keys(Dr.inspectOpts),r=0;r{typeof process<"u"&&process.type==="renderer"?av.exports=F8():av.exports=N8()});var Tu=P((HY,q8)=>{"use strict";q8.exports=mF;function D8(t,e,r){for(var n=0;n0&&Array.isArray(i)?D8(i,e,r-1):e.push(i)}return e}function J8(t,e){for(var r=0;r{H8.exports=U8;var j8=/\((?!\?)/g;function U8(t,e,r){r=r||{},e=e||[];var n=r.strict,i=r.end!==!1,a=r.sensitive?"":"i",o=0,c=e.length,u=0,s=0,f;if(t instanceof RegExp){for(;f=j8.exec(t.source);)e.push({name:s++,optional:!1,offset:f.index});return t}if(Array.isArray(t))return t=t.map(function(T){return U8(T,e,r).source}),new RegExp("(?:"+t.join("|")+")",a);for(t=("^"+t+(n?"":t[t.length-1]==="/"?"?":"/?")).replace(/\/\(/g,"/(?:").replace(/([\/\.])/g,"\\$1").replace(/(\\\/)?(\\\.)?:(\w+)(\(.*?\))?(\*)?(\?)?/g,function(T,A,O,B,F,I,D,z){A=A||"",O=O||"",F=F||"([^\\/"+O+"]+?)",D=D||"",e.push({name:B,optional:!!D,offset:z+o});var G=""+(D?"":A)+"(?:"+O+(D?A:"")+F+(I?"((?:[\\/"+O+"].+?)?)":"")+")"+D;return o+=G.length-T.length,G}).replace(/\*/g,function(T,A){for(var O=e.length;O-- >c&&e[O].offset>A;)e[O].offset+=3;return"(.*)"});f=j8.exec(t);){for(var m=0,w=f.index;t.charAt(--w)==="\\";)m++;m%2!==1&&((c+u===e.length||e[c+u].offset>f.index)&&e.splice(c+u,0,{name:s++,optional:!1,offset:f.index}),u++)}return t+=i?"$":t[t.length-1]==="/"?"":"(?=\\/|$)",new RegExp(t,a)}});var ov=P((GY,X8)=>{"use strict";var bF=z8(),gF=xs()("express:router:layer"),xF=Object.prototype.hasOwnProperty;X8.exports=ys;function ys(t,e,r){if(!(this instanceof ys))return new ys(t,e,r);gF("new %o",t);var n=e||{};this.handle=r,this.name=r.name||"",this.params=void 0,this.path=void 0,this.regexp=bF(t,this.keys=[],n),this.regexp.fast_star=t==="*",this.regexp.fast_slash=t==="/"&&n.end===!1}ys.prototype.handle_error=function(e,r,n,i){var a=this.handle;if(a.length!==4)return i(e);try{a(e,r,n,i)}catch(o){i(o)}};ys.prototype.handle_request=function(e,r,n){var i=this.handle;if(i.length>3)return n();try{i(e,r,n)}catch(a){n(a)}};ys.prototype.match=function(e){var r;if(e!=null){if(this.regexp.fast_slash)return this.params={},this.path="",!0;if(this.regexp.fast_star)return this.params={0:G8(e)},this.path=e,!0;r=this.regexp.exec(e)}if(!r)return this.params=void 0,this.path=void 0,!1;this.params={},this.path=r[0];for(var n=this.keys,i=this.params,a=1;a{"use strict";var K8=require("http");V8.exports=yF()||wF();function yF(){return K8.METHODS&&K8.METHODS.map(function(e){return e.toLowerCase()})}function wF(){return["get","post","put","head","delete","options","trace","copy","lock","mkcol","move","purge","propfind","proppatch","unlock","report","mkactivity","checkout","merge","m-search","notify","subscribe","unsubscribe","patch","search","connect"]}});var sv=P((KY,e3)=>{"use strict";var Z8=xs()("express:router:route"),Q8=Tu(),W8=ov(),AF=If(),Y8=Array.prototype.slice,$8=Object.prototype.toString;e3.exports=ws;function ws(t){this.path=t,this.stack=[],Z8("new %o",t),this.methods={}}ws.prototype._handles_method=function(e){if(this.methods._all)return!0;var r=e.toLowerCase();return r==="head"&&!this.methods.head&&(r="get"),Boolean(this.methods[r])};ws.prototype._options=function(){var e=Object.keys(this.methods);this.methods.get&&!this.methods.head&&e.push("head");for(var r=0;r100)return setImmediate(u,s);var f=a[i++];if(!f)return n(s);f.method&&f.method!==c?u(s):s?f.handle_error(s,e,r,u):f.handle_request(e,r,u),o=0}};ws.prototype.all=function(){for(var e=Q8(Y8.call(arguments)),r=0;r{r3=t3.exports=function(t,e){if(t&&e)for(var r in e)t[r]=e[r];return t}});var uv=P((VY,o3)=>{"use strict";var EF=sv(),i3=ov(),SF=If(),cv=ku(),Nf=xs()("express:router"),n3=qn()("express"),_F=Tu(),TF=bs(),kF=Vc(),CF=/^\[object (\S+)\]$/,a3=Array.prototype.slice,OF=Object.prototype.toString,fo=o3.exports=function(t){var e=t||{};function r(n,i,a){r.handle(n,i,a)}return kF(r,fo),r.params={},r._params=[],r.caseSensitive=e.caseSensitive,r.mergeParams=e.mergeParams,r.strict=e.strict,r.stack=[],r};fo.param=function(e,r){if(typeof e=="function"){n3("router.param(fn): Refactor to use path params"),this._params.push(e);return}var n=this._params,i=n.length,a;e[0]===":"&&(n3("router.param("+JSON.stringify(e)+", fn): Use router.param("+JSON.stringify(e.slice(1))+", fn) instead"),e=e.slice(1));for(var o=0;o=w.length){setImmediate(O,D);return}if(++s>100)return setImmediate(B,I);var z=MF(e);if(z==null)return O(D);for(var G,j,Z;j!==!0&&a=c.length)return a();if(f=0,m=c[u++],s=m.name,w=n.params[s],T=o[s],A=r[s],w===void 0||!T)return O();if(A&&(A.match===w||A.error&&A.error!=="route"))return n.params[s]=A.value,O(A.error);r[s]=A={error:null,match:w,value:w},B()}function B(F){var I=T[f++];if(A.value=n.params[m.name],F){A.error=F,O(F);return}if(!I)return O();try{I(n,i,B,w,m.name)}catch(D){B(D)}}O()};fo.use=function(e){var r=0,n="/";if(typeof e!="function"){for(var i=e;Array.isArray(i)&&i.length!==0;)i=i[0];typeof i!="function"&&(r=1,n=e)}var a=_F(a3.call(arguments,r));if(a.length===0)throw new TypeError("Router.use() requires a middleware function");for(var o=0;o");var c=new i3(n,{sensitive:this.caseSensitive,strict:!1,end:!1},e);c.route=void 0,this.stack.push(c)}return this};fo.route=function(e){var r=new EF(e),n=new i3(e,{sensitive:this.caseSensitive,strict:this.strict,end:!0},r.dispatch.bind(r));return n.route=r,this.stack.push(n),r};SF.concat("all").forEach(function(t){fo[t]=function(e){var r=this.route(e);return r[t].apply(r,a3.call(arguments,1)),this}});function PF(t,e){for(var r=0;r=0;n--)t[n+i]=t[n],n{"use strict";var s3=Vc();c3.init=function(t){return function(r,n,i){t.enabled("x-powered-by")&&n.setHeader("X-Powered-By","Express"),r.res=n,n.req=r,r.next=i,s3(r,t.request),s3(n,t.response),n.locals=n.locals||Object.create(null),i()}}});var lv=P((QY,l3)=>{"use strict";var JF=ku(),qF=bs(),jF=Mf();l3.exports=function(e){var r=JF({},e),n=jF.parse;return typeof e=="function"&&(n=e,r=void 0),r!==void 0&&r.allowPrototypes===void 0&&(r.allowPrototypes=!0),function(a,o,c){if(!a.query){var u=qF(a).query;a.query=n(u,r)}c()}}});var v3=P((WY,h3)=>{"use strict";var Df=xs()("express:view"),Cu=require("path"),UF=require("fs"),HF=Cu.dirname,p3=Cu.basename,zF=Cu.extname,f3=Cu.join,GF=Cu.resolve;h3.exports=Jf;function Jf(t,e){var r=e||{};if(this.defaultEngine=r.defaultEngine,this.ext=zF(t),this.name=t,this.root=r.root,!this.ext&&!this.defaultEngine)throw new Error("No default engine was specified and no extension was provided.");var n=t;if(this.ext||(this.ext=this.defaultEngine[0]!=="."?"."+this.defaultEngine:this.defaultEngine,n+=this.ext),!r.engines[this.ext]){var i=this.ext.slice(1);Df('require "%s"',i);var a=require(i).__express;if(typeof a!="function")throw new Error('Module "'+i+'" does not provide a view engine.');r.engines[this.ext]=a}this.engine=r.engines[this.ext],this.path=this.lookup(n)}Jf.prototype.lookup=function(e){var r,n=[].concat(this.root);Df('lookup "%s"',e);for(var i=0;i{var qf=require("buffer"),Xn=qf.Buffer;function m3(t,e){for(var r in t)e[r]=t[r]}Xn.from&&Xn.alloc&&Xn.allocUnsafe&&Xn.allocUnsafeSlow?b3.exports=qf:(m3(qf,fv),fv.Buffer=po);function po(t,e,r){return Xn(t,e,r)}po.prototype=Object.create(Xn.prototype);m3(Xn,po);po.from=function(t,e,r){if(typeof t=="number")throw new TypeError("Argument must not be a number");return Xn(t,e,r)};po.alloc=function(t,e,r){if(typeof t!="number")throw new TypeError("Argument must be a number");var n=Xn(t);return e!==void 0?typeof r=="string"?n.fill(e,r):n.fill(e):n.fill(0),n};po.allocUnsafe=function(t){if(typeof t!="number")throw new TypeError("Argument must be a number");return Xn(t)};po.allocUnsafeSlow=function(t){if(typeof t!="number")throw new TypeError("Argument must be a number");return qf.SlowBuffer(t)}});var pv=P((YY,dv)=>{"use strict";dv.exports=tL;dv.exports.parse=oL;var g3=require("path").basename,XF=jf().Buffer,KF=/[\x00-\x20"'()*,/:;<=>?@[\\\]{}\x7f]/g,VF=/%[0-9A-Fa-f]{2}/,ZF=/%([0-9A-Fa-f]{2})/g,y3=/[^\x20-\x7e\xa0-\xff]/g,QF=/\\([\u0000-\u007f])/g,WF=/([\\"])/g,x3=/;[\x09\x20]*([!#$%&'*+.0-9A-Z^_`a-z|~-]+)[\x09\x20]*=[\x09\x20]*("(?:[\x20!\x23-\x5b\x5d-\x7e\x80-\xff]|\\[\x20-\x7e])*"|[!#$%&'*+.0-9A-Z^_`a-z|~-]+)[\x09\x20]*/g,YF=/^[\x20-\x7e\x80-\xff]+$/,$F=/^[!#$%&'*+.0-9A-Z^_`a-z|~-]+$/,eL=/^([A-Za-z0-9!#$%&+\-^_`{}~]+)'(?:[A-Za-z]{2,3}(?:-[A-Za-z]{3}){0,3}|[A-Za-z]{4,8}|)'((?:%[0-9A-Fa-f]{2}|[A-Za-z0-9!#$&+.^_`|~-])+)$/,rL=/^([!#$%&'*+.0-9A-Z^_`a-z|~-]+)[\x09\x20]*(?:$|;)/;function tL(t,e){var r=e||{},n=r.type||"attachment",i=nL(t,r.fallback);return iL(new A3(n,i))}function nL(t,e){if(t!==void 0){var r={};if(typeof t!="string")throw new TypeError("filename must be a string");if(e===void 0&&(e=!0),typeof e!="string"&&typeof e!="boolean")throw new TypeError("fallback must be a string or boolean");if(typeof e=="string"&&y3.test(e))throw new TypeError("fallback must be ISO-8859-1 string");var n=g3(t),i=YF.test(n),a=typeof e!="string"?e&&w3(n):g3(e),o=typeof a=="string"&&a!==n;return(o||!i||VF.test(n))&&(r["filename*"]=n),(i||o)&&(r.filename=o?a:n),r}}function iL(t){var e=t.parameters,r=t.type;if(!r||typeof r!="string"||!$F.test(r))throw new TypeError("invalid type");var n=String(r).toLowerCase();if(e&&typeof e=="object")for(var i,a=Object.keys(e).sort(),o=0;o{var Ou=1e3,Pu=Ou*60,Mu=Pu*60,Bu=Mu*24,fL=Bu*365.25;E3.exports=function(t,e){e=e||{};var r=typeof t;if(r==="string"&&t.length>0)return dL(t);if(r==="number"&&isNaN(t)===!1)return e.long?hL(t):pL(t);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(t))};function dL(t){if(t=String(t),!(t.length>100)){var e=/^((?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|years?|yrs?|y)?$/i.exec(t);if(!!e){var r=parseFloat(e[1]),n=(e[2]||"ms").toLowerCase();switch(n){case"years":case"year":case"yrs":case"yr":case"y":return r*fL;case"days":case"day":case"d":return r*Bu;case"hours":case"hour":case"hrs":case"hr":case"h":return r*Mu;case"minutes":case"minute":case"mins":case"min":case"m":return r*Pu;case"seconds":case"second":case"secs":case"sec":case"s":return r*Ou;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return r;default:return}}}}function pL(t){return t>=Bu?Math.round(t/Bu)+"d":t>=Mu?Math.round(t/Mu)+"h":t>=Pu?Math.round(t/Pu)+"m":t>=Ou?Math.round(t/Ou)+"s":t+"ms"}function hL(t){return Uf(t,Bu,"day")||Uf(t,Mu,"hour")||Uf(t,Pu,"minute")||Uf(t,Ou,"second")||t+" ms"}function Uf(t,e,r){if(!(t{$e=_3.exports=vv.debug=vv.default=vv;$e.coerce=xL;$e.disable=bL;$e.enable=mL;$e.enabled=gL;$e.humanize=S3();$e.names=[];$e.skips=[];$e.formatters={};var hv;function vL(t){var e=0,r;for(r in t)e=(e<<5)-e+t.charCodeAt(r),e|=0;return $e.colors[Math.abs(e)%$e.colors.length]}function vv(t){function e(){if(!!e.enabled){var r=e,n=+new Date,i=n-(hv||n);r.diff=i,r.prev=hv,r.curr=n,hv=n;for(var a=new Array(arguments.length),o=0;o{xt=k3.exports=mv();xt.log=AL;xt.formatArgs=wL;xt.save=EL;xt.load=T3;xt.useColors=yL;xt.storage=typeof chrome<"u"&&typeof chrome.storage<"u"?chrome.storage.local:SL();xt.colors=["lightseagreen","forestgreen","goldenrod","dodgerblue","darkorchid","crimson"];function yL(){return typeof window<"u"&&window.process&&window.process.type==="renderer"?!0:typeof document<"u"&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||typeof window<"u"&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)&&parseInt(RegExp.$1,10)>=31||typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)}xt.formatters.j=function(t){try{return JSON.stringify(t)}catch(e){return"[UnexpectedJSONParseError]: "+e.message}};function wL(t){var e=this.useColors;if(t[0]=(e?"%c":"")+this.namespace+(e?" %c":" ")+t[0]+(e?"%c ":" ")+"+"+xt.humanize(this.diff),!!e){var r="color: "+this.color;t.splice(1,0,r,"color: inherit");var n=0,i=0;t[0].replace(/%[a-zA-Z%]/g,function(a){a!=="%%"&&(n++,a==="%c"&&(i=n))}),t.splice(i,0,r)}}function AL(){return typeof console=="object"&&console.log&&Function.prototype.apply.call(console.log,console,arguments)}function EL(t){try{t==null?xt.storage.removeItem("debug"):xt.storage.debug=t}catch{}}function T3(){var t;try{t=xt.storage.debug}catch{}return!t&&typeof process<"u"&&"env"in process&&(t=process.env.DEBUG),t}xt.enable(T3());function SL(){try{return window.localStorage}catch{}}});var B3=P((Jr,M3)=>{var O3=require("tty"),Fu=require("util");Jr=M3.exports=mv();Jr.init=ML;Jr.log=CL;Jr.formatArgs=kL;Jr.save=OL;Jr.load=P3;Jr.useColors=TL;Jr.colors=[6,2,3,4,5,1];Jr.inspectOpts=Object.keys(process.env).filter(function(t){return/^debug_/i.test(t)}).reduce(function(t,e){var r=e.substring(6).toLowerCase().replace(/_([a-z])/g,function(i,a){return a.toUpperCase()}),n=process.env[e];return/^(yes|on|true|enabled)$/i.test(n)?n=!0:/^(no|off|false|disabled)$/i.test(n)?n=!1:n==="null"?n=null:n=Number(n),t[r]=n,t},{});var As=parseInt(process.env.DEBUG_FD,10)||2;As!==1&&As!==2&&Fu.deprecate(function(){},"except for stderr(2) and stdout(1), any other usage of DEBUG_FD is deprecated. Override debug.log if you want to use a different log function (https://git.io/debug_fd)")();var _L=As===1?process.stdout:As===2?process.stderr:PL(As);function TL(){return"colors"in Jr.inspectOpts?Boolean(Jr.inspectOpts.colors):O3.isatty(As)}Jr.formatters.o=function(t){return this.inspectOpts.colors=this.useColors,Fu.inspect(t,this.inspectOpts).split(` +`).map(function(e){return e.trim()}).join(" ")};Jr.formatters.O=function(t){return this.inspectOpts.colors=this.useColors,Fu.inspect(t,this.inspectOpts)};function kL(t){var e=this.namespace,r=this.useColors;if(r){var n=this.color,i=" \x1B[3"+n+";1m"+e+" \x1B[0m";t[0]=i+t[0].split(` +`).join(` +`+i),t.push("\x1B[3"+n+"m+"+Jr.humanize(this.diff)+"\x1B[0m")}else t[0]=new Date().toUTCString()+" "+e+" "+t[0]}function CL(){return _L.write(Fu.format.apply(Fu,arguments)+` +`)}function OL(t){t==null?delete process.env.DEBUG:process.env.DEBUG=t}function P3(){return process.env.DEBUG}function PL(t){var e,r=process.binding("tty_wrap");switch(r.guessHandleType(t)){case"TTY":e=new O3.WriteStream(t),e._type="tty",e._handle&&e._handle.unref&&e._handle.unref();break;case"FILE":var n=require("fs");e=new n.SyncWriteStream(t,{autoClose:!1}),e._type="fs";break;case"PIPE":case"TCP":var i=require("net");e=new i.Socket({fd:t,readable:!1,writable:!0}),e.readable=!1,e.read=null,e._type="pipe",e._handle&&e._handle.unref&&e._handle.unref();break;default:throw new Error("Implement me. Unknown stream file type!")}return e.fd=t,e._isStdio=!0,e}function ML(t){t.inspectOpts={};for(var e=Object.keys(Jr.inspectOpts),r=0;r{typeof process<"u"&&process.type==="renderer"?bv.exports=C3():bv.exports=B3()});var gv=P((r$,I3)=>{"use strict";I3.exports=LL;var BL=require("crypto"),L3=require("fs").Stats,R3=Object.prototype.toString;function FL(t){if(t.length===0)return'"0-2jmj7l5rSw0yVb/vlWAYkK/YBwk"';var e=BL.createHash("sha1").update(t,"utf8").digest("base64").substring(0,27),r=typeof t=="string"?Buffer.byteLength(t,"utf8"):t.length;return'"'+r.toString(16)+"-"+e+'"'}function LL(t,e){if(t==null)throw new TypeError("argument entity is required");var r=RL(t),n=e&&typeof e.weak=="boolean"?e.weak:r;if(!r&&typeof t!="string"&&!Buffer.isBuffer(t))throw new TypeError("argument entity must be string, Buffer, or fs.Stats");var i=r?IL(t):FL(t);return n?"W/"+i:i}function RL(t){return typeof L3=="function"&&t instanceof L3?!0:t&&typeof t=="object"&&"ctime"in t&&R3.call(t.ctime)==="[object Date]"&&"mtime"in t&&R3.call(t.mtime)==="[object Date]"&&"ino"in t&&typeof t.ino=="number"&&"size"in t&&typeof t.size=="number"}function IL(t){var e=t.mtime.getTime().toString(16),r=t.size.toString(16);return'"'+r+"-"+e+'"'}});var xv=P((t$,D3)=>{"use strict";var NL=/(?:^|,)\s*?no-cache\s*?(?:,|$)/;D3.exports=DL;function DL(t,e){var r=t["if-modified-since"],n=t["if-none-match"];if(!r&&!n)return!1;var i=t["cache-control"];if(i&&NL.test(i))return!1;if(n&&n!=="*"){var a=e.etag;if(!a)return!1;for(var o=!0,c=JL(n),u=0;u{qL.exports={"application/andrew-inset":["ez"],"application/applixware":["aw"],"application/atom+xml":["atom"],"application/atomcat+xml":["atomcat"],"application/atomsvc+xml":["atomsvc"],"application/bdoc":["bdoc"],"application/ccxml+xml":["ccxml"],"application/cdmi-capability":["cdmia"],"application/cdmi-container":["cdmic"],"application/cdmi-domain":["cdmid"],"application/cdmi-object":["cdmio"],"application/cdmi-queue":["cdmiq"],"application/cu-seeme":["cu"],"application/dash+xml":["mpd"],"application/davmount+xml":["davmount"],"application/docbook+xml":["dbk"],"application/dssc+der":["dssc"],"application/dssc+xml":["xdssc"],"application/ecmascript":["ecma"],"application/emma+xml":["emma"],"application/epub+zip":["epub"],"application/exi":["exi"],"application/font-tdpfr":["pfr"],"application/font-woff":[],"application/font-woff2":[],"application/geo+json":["geojson"],"application/gml+xml":["gml"],"application/gpx+xml":["gpx"],"application/gxf":["gxf"],"application/gzip":["gz"],"application/hyperstudio":["stk"],"application/inkml+xml":["ink","inkml"],"application/ipfix":["ipfix"],"application/java-archive":["jar","war","ear"],"application/java-serialized-object":["ser"],"application/java-vm":["class"],"application/javascript":["js","mjs"],"application/json":["json","map"],"application/json5":["json5"],"application/jsonml+json":["jsonml"],"application/ld+json":["jsonld"],"application/lost+xml":["lostxml"],"application/mac-binhex40":["hqx"],"application/mac-compactpro":["cpt"],"application/mads+xml":["mads"],"application/manifest+json":["webmanifest"],"application/marc":["mrc"],"application/marcxml+xml":["mrcx"],"application/mathematica":["ma","nb","mb"],"application/mathml+xml":["mathml"],"application/mbox":["mbox"],"application/mediaservercontrol+xml":["mscml"],"application/metalink+xml":["metalink"],"application/metalink4+xml":["meta4"],"application/mets+xml":["mets"],"application/mods+xml":["mods"],"application/mp21":["m21","mp21"],"application/mp4":["mp4s","m4p"],"application/msword":["doc","dot"],"application/mxf":["mxf"],"application/octet-stream":["bin","dms","lrf","mar","so","dist","distz","pkg","bpk","dump","elc","deploy","exe","dll","deb","dmg","iso","img","msi","msp","msm","buffer"],"application/oda":["oda"],"application/oebps-package+xml":["opf"],"application/ogg":["ogx"],"application/omdoc+xml":["omdoc"],"application/onenote":["onetoc","onetoc2","onetmp","onepkg"],"application/oxps":["oxps"],"application/patch-ops-error+xml":["xer"],"application/pdf":["pdf"],"application/pgp-encrypted":["pgp"],"application/pgp-signature":["asc","sig"],"application/pics-rules":["prf"],"application/pkcs10":["p10"],"application/pkcs7-mime":["p7m","p7c"],"application/pkcs7-signature":["p7s"],"application/pkcs8":["p8"],"application/pkix-attr-cert":["ac"],"application/pkix-cert":["cer"],"application/pkix-crl":["crl"],"application/pkix-pkipath":["pkipath"],"application/pkixcmp":["pki"],"application/pls+xml":["pls"],"application/postscript":["ai","eps","ps"],"application/prs.cww":["cww"],"application/pskc+xml":["pskcxml"],"application/raml+yaml":["raml"],"application/rdf+xml":["rdf"],"application/reginfo+xml":["rif"],"application/relax-ng-compact-syntax":["rnc"],"application/resource-lists+xml":["rl"],"application/resource-lists-diff+xml":["rld"],"application/rls-services+xml":["rs"],"application/rpki-ghostbusters":["gbr"],"application/rpki-manifest":["mft"],"application/rpki-roa":["roa"],"application/rsd+xml":["rsd"],"application/rss+xml":["rss"],"application/rtf":["rtf"],"application/sbml+xml":["sbml"],"application/scvp-cv-request":["scq"],"application/scvp-cv-response":["scs"],"application/scvp-vp-request":["spq"],"application/scvp-vp-response":["spp"],"application/sdp":["sdp"],"application/set-payment-initiation":["setpay"],"application/set-registration-initiation":["setreg"],"application/shf+xml":["shf"],"application/smil+xml":["smi","smil"],"application/sparql-query":["rq"],"application/sparql-results+xml":["srx"],"application/srgs":["gram"],"application/srgs+xml":["grxml"],"application/sru+xml":["sru"],"application/ssdl+xml":["ssdl"],"application/ssml+xml":["ssml"],"application/tei+xml":["tei","teicorpus"],"application/thraud+xml":["tfi"],"application/timestamped-data":["tsd"],"application/vnd.3gpp.pic-bw-large":["plb"],"application/vnd.3gpp.pic-bw-small":["psb"],"application/vnd.3gpp.pic-bw-var":["pvb"],"application/vnd.3gpp2.tcap":["tcap"],"application/vnd.3m.post-it-notes":["pwn"],"application/vnd.accpac.simply.aso":["aso"],"application/vnd.accpac.simply.imp":["imp"],"application/vnd.acucobol":["acu"],"application/vnd.acucorp":["atc","acutc"],"application/vnd.adobe.air-application-installer-package+zip":["air"],"application/vnd.adobe.formscentral.fcdt":["fcdt"],"application/vnd.adobe.fxp":["fxp","fxpl"],"application/vnd.adobe.xdp+xml":["xdp"],"application/vnd.adobe.xfdf":["xfdf"],"application/vnd.ahead.space":["ahead"],"application/vnd.airzip.filesecure.azf":["azf"],"application/vnd.airzip.filesecure.azs":["azs"],"application/vnd.amazon.ebook":["azw"],"application/vnd.americandynamics.acc":["acc"],"application/vnd.amiga.ami":["ami"],"application/vnd.android.package-archive":["apk"],"application/vnd.anser-web-certificate-issue-initiation":["cii"],"application/vnd.anser-web-funds-transfer-initiation":["fti"],"application/vnd.antix.game-component":["atx"],"application/vnd.apple.installer+xml":["mpkg"],"application/vnd.apple.mpegurl":["m3u8"],"application/vnd.apple.pkpass":["pkpass"],"application/vnd.aristanetworks.swi":["swi"],"application/vnd.astraea-software.iota":["iota"],"application/vnd.audiograph":["aep"],"application/vnd.blueice.multipass":["mpm"],"application/vnd.bmi":["bmi"],"application/vnd.businessobjects":["rep"],"application/vnd.chemdraw+xml":["cdxml"],"application/vnd.chipnuts.karaoke-mmd":["mmd"],"application/vnd.cinderella":["cdy"],"application/vnd.claymore":["cla"],"application/vnd.cloanto.rp9":["rp9"],"application/vnd.clonk.c4group":["c4g","c4d","c4f","c4p","c4u"],"application/vnd.cluetrust.cartomobile-config":["c11amc"],"application/vnd.cluetrust.cartomobile-config-pkg":["c11amz"],"application/vnd.commonspace":["csp"],"application/vnd.contact.cmsg":["cdbcmsg"],"application/vnd.cosmocaller":["cmc"],"application/vnd.crick.clicker":["clkx"],"application/vnd.crick.clicker.keyboard":["clkk"],"application/vnd.crick.clicker.palette":["clkp"],"application/vnd.crick.clicker.template":["clkt"],"application/vnd.crick.clicker.wordbank":["clkw"],"application/vnd.criticaltools.wbs+xml":["wbs"],"application/vnd.ctc-posml":["pml"],"application/vnd.cups-ppd":["ppd"],"application/vnd.curl.car":["car"],"application/vnd.curl.pcurl":["pcurl"],"application/vnd.dart":["dart"],"application/vnd.data-vision.rdz":["rdz"],"application/vnd.dece.data":["uvf","uvvf","uvd","uvvd"],"application/vnd.dece.ttml+xml":["uvt","uvvt"],"application/vnd.dece.unspecified":["uvx","uvvx"],"application/vnd.dece.zip":["uvz","uvvz"],"application/vnd.denovo.fcselayout-link":["fe_launch"],"application/vnd.dna":["dna"],"application/vnd.dolby.mlp":["mlp"],"application/vnd.dpgraph":["dpg"],"application/vnd.dreamfactory":["dfac"],"application/vnd.ds-keypoint":["kpxx"],"application/vnd.dvb.ait":["ait"],"application/vnd.dvb.service":["svc"],"application/vnd.dynageo":["geo"],"application/vnd.ecowin.chart":["mag"],"application/vnd.enliven":["nml"],"application/vnd.epson.esf":["esf"],"application/vnd.epson.msf":["msf"],"application/vnd.epson.quickanime":["qam"],"application/vnd.epson.salt":["slt"],"application/vnd.epson.ssf":["ssf"],"application/vnd.eszigno3+xml":["es3","et3"],"application/vnd.ezpix-album":["ez2"],"application/vnd.ezpix-package":["ez3"],"application/vnd.fdf":["fdf"],"application/vnd.fdsn.mseed":["mseed"],"application/vnd.fdsn.seed":["seed","dataless"],"application/vnd.flographit":["gph"],"application/vnd.fluxtime.clip":["ftc"],"application/vnd.framemaker":["fm","frame","maker","book"],"application/vnd.frogans.fnc":["fnc"],"application/vnd.frogans.ltf":["ltf"],"application/vnd.fsc.weblaunch":["fsc"],"application/vnd.fujitsu.oasys":["oas"],"application/vnd.fujitsu.oasys2":["oa2"],"application/vnd.fujitsu.oasys3":["oa3"],"application/vnd.fujitsu.oasysgp":["fg5"],"application/vnd.fujitsu.oasysprs":["bh2"],"application/vnd.fujixerox.ddd":["ddd"],"application/vnd.fujixerox.docuworks":["xdw"],"application/vnd.fujixerox.docuworks.binder":["xbd"],"application/vnd.fuzzysheet":["fzs"],"application/vnd.genomatix.tuxedo":["txd"],"application/vnd.geogebra.file":["ggb"],"application/vnd.geogebra.tool":["ggt"],"application/vnd.geometry-explorer":["gex","gre"],"application/vnd.geonext":["gxt"],"application/vnd.geoplan":["g2w"],"application/vnd.geospace":["g3w"],"application/vnd.gmx":["gmx"],"application/vnd.google-apps.document":["gdoc"],"application/vnd.google-apps.presentation":["gslides"],"application/vnd.google-apps.spreadsheet":["gsheet"],"application/vnd.google-earth.kml+xml":["kml"],"application/vnd.google-earth.kmz":["kmz"],"application/vnd.grafeq":["gqf","gqs"],"application/vnd.groove-account":["gac"],"application/vnd.groove-help":["ghf"],"application/vnd.groove-identity-message":["gim"],"application/vnd.groove-injector":["grv"],"application/vnd.groove-tool-message":["gtm"],"application/vnd.groove-tool-template":["tpl"],"application/vnd.groove-vcard":["vcg"],"application/vnd.hal+xml":["hal"],"application/vnd.handheld-entertainment+xml":["zmm"],"application/vnd.hbci":["hbci"],"application/vnd.hhe.lesson-player":["les"],"application/vnd.hp-hpgl":["hpgl"],"application/vnd.hp-hpid":["hpid"],"application/vnd.hp-hps":["hps"],"application/vnd.hp-jlyt":["jlt"],"application/vnd.hp-pcl":["pcl"],"application/vnd.hp-pclxl":["pclxl"],"application/vnd.hydrostatix.sof-data":["sfd-hdstx"],"application/vnd.ibm.minipay":["mpy"],"application/vnd.ibm.modcap":["afp","listafp","list3820"],"application/vnd.ibm.rights-management":["irm"],"application/vnd.ibm.secure-container":["sc"],"application/vnd.iccprofile":["icc","icm"],"application/vnd.igloader":["igl"],"application/vnd.immervision-ivp":["ivp"],"application/vnd.immervision-ivu":["ivu"],"application/vnd.insors.igm":["igm"],"application/vnd.intercon.formnet":["xpw","xpx"],"application/vnd.intergeo":["i2g"],"application/vnd.intu.qbo":["qbo"],"application/vnd.intu.qfx":["qfx"],"application/vnd.ipunplugged.rcprofile":["rcprofile"],"application/vnd.irepository.package+xml":["irp"],"application/vnd.is-xpr":["xpr"],"application/vnd.isac.fcs":["fcs"],"application/vnd.jam":["jam"],"application/vnd.jcp.javame.midlet-rms":["rms"],"application/vnd.jisp":["jisp"],"application/vnd.joost.joda-archive":["joda"],"application/vnd.kahootz":["ktz","ktr"],"application/vnd.kde.karbon":["karbon"],"application/vnd.kde.kchart":["chrt"],"application/vnd.kde.kformula":["kfo"],"application/vnd.kde.kivio":["flw"],"application/vnd.kde.kontour":["kon"],"application/vnd.kde.kpresenter":["kpr","kpt"],"application/vnd.kde.kspread":["ksp"],"application/vnd.kde.kword":["kwd","kwt"],"application/vnd.kenameaapp":["htke"],"application/vnd.kidspiration":["kia"],"application/vnd.kinar":["kne","knp"],"application/vnd.koan":["skp","skd","skt","skm"],"application/vnd.kodak-descriptor":["sse"],"application/vnd.las.las+xml":["lasxml"],"application/vnd.llamagraphics.life-balance.desktop":["lbd"],"application/vnd.llamagraphics.life-balance.exchange+xml":["lbe"],"application/vnd.lotus-1-2-3":["123"],"application/vnd.lotus-approach":["apr"],"application/vnd.lotus-freelance":["pre"],"application/vnd.lotus-notes":["nsf"],"application/vnd.lotus-organizer":["org"],"application/vnd.lotus-screencam":["scm"],"application/vnd.lotus-wordpro":["lwp"],"application/vnd.macports.portpkg":["portpkg"],"application/vnd.mcd":["mcd"],"application/vnd.medcalcdata":["mc1"],"application/vnd.mediastation.cdkey":["cdkey"],"application/vnd.mfer":["mwf"],"application/vnd.mfmp":["mfm"],"application/vnd.micrografx.flo":["flo"],"application/vnd.micrografx.igx":["igx"],"application/vnd.mif":["mif"],"application/vnd.mobius.daf":["daf"],"application/vnd.mobius.dis":["dis"],"application/vnd.mobius.mbk":["mbk"],"application/vnd.mobius.mqy":["mqy"],"application/vnd.mobius.msl":["msl"],"application/vnd.mobius.plc":["plc"],"application/vnd.mobius.txf":["txf"],"application/vnd.mophun.application":["mpn"],"application/vnd.mophun.certificate":["mpc"],"application/vnd.mozilla.xul+xml":["xul"],"application/vnd.ms-artgalry":["cil"],"application/vnd.ms-cab-compressed":["cab"],"application/vnd.ms-excel":["xls","xlm","xla","xlc","xlt","xlw"],"application/vnd.ms-excel.addin.macroenabled.12":["xlam"],"application/vnd.ms-excel.sheet.binary.macroenabled.12":["xlsb"],"application/vnd.ms-excel.sheet.macroenabled.12":["xlsm"],"application/vnd.ms-excel.template.macroenabled.12":["xltm"],"application/vnd.ms-fontobject":["eot"],"application/vnd.ms-htmlhelp":["chm"],"application/vnd.ms-ims":["ims"],"application/vnd.ms-lrm":["lrm"],"application/vnd.ms-officetheme":["thmx"],"application/vnd.ms-outlook":["msg"],"application/vnd.ms-pki.seccat":["cat"],"application/vnd.ms-pki.stl":["stl"],"application/vnd.ms-powerpoint":["ppt","pps","pot"],"application/vnd.ms-powerpoint.addin.macroenabled.12":["ppam"],"application/vnd.ms-powerpoint.presentation.macroenabled.12":["pptm"],"application/vnd.ms-powerpoint.slide.macroenabled.12":["sldm"],"application/vnd.ms-powerpoint.slideshow.macroenabled.12":["ppsm"],"application/vnd.ms-powerpoint.template.macroenabled.12":["potm"],"application/vnd.ms-project":["mpp","mpt"],"application/vnd.ms-word.document.macroenabled.12":["docm"],"application/vnd.ms-word.template.macroenabled.12":["dotm"],"application/vnd.ms-works":["wps","wks","wcm","wdb"],"application/vnd.ms-wpl":["wpl"],"application/vnd.ms-xpsdocument":["xps"],"application/vnd.mseq":["mseq"],"application/vnd.musician":["mus"],"application/vnd.muvee.style":["msty"],"application/vnd.mynfc":["taglet"],"application/vnd.neurolanguage.nlu":["nlu"],"application/vnd.nitf":["ntf","nitf"],"application/vnd.noblenet-directory":["nnd"],"application/vnd.noblenet-sealer":["nns"],"application/vnd.noblenet-web":["nnw"],"application/vnd.nokia.n-gage.data":["ngdat"],"application/vnd.nokia.n-gage.symbian.install":["n-gage"],"application/vnd.nokia.radio-preset":["rpst"],"application/vnd.nokia.radio-presets":["rpss"],"application/vnd.novadigm.edm":["edm"],"application/vnd.novadigm.edx":["edx"],"application/vnd.novadigm.ext":["ext"],"application/vnd.oasis.opendocument.chart":["odc"],"application/vnd.oasis.opendocument.chart-template":["otc"],"application/vnd.oasis.opendocument.database":["odb"],"application/vnd.oasis.opendocument.formula":["odf"],"application/vnd.oasis.opendocument.formula-template":["odft"],"application/vnd.oasis.opendocument.graphics":["odg"],"application/vnd.oasis.opendocument.graphics-template":["otg"],"application/vnd.oasis.opendocument.image":["odi"],"application/vnd.oasis.opendocument.image-template":["oti"],"application/vnd.oasis.opendocument.presentation":["odp"],"application/vnd.oasis.opendocument.presentation-template":["otp"],"application/vnd.oasis.opendocument.spreadsheet":["ods"],"application/vnd.oasis.opendocument.spreadsheet-template":["ots"],"application/vnd.oasis.opendocument.text":["odt"],"application/vnd.oasis.opendocument.text-master":["odm"],"application/vnd.oasis.opendocument.text-template":["ott"],"application/vnd.oasis.opendocument.text-web":["oth"],"application/vnd.olpc-sugar":["xo"],"application/vnd.oma.dd2+xml":["dd2"],"application/vnd.openofficeorg.extension":["oxt"],"application/vnd.openxmlformats-officedocument.presentationml.presentation":["pptx"],"application/vnd.openxmlformats-officedocument.presentationml.slide":["sldx"],"application/vnd.openxmlformats-officedocument.presentationml.slideshow":["ppsx"],"application/vnd.openxmlformats-officedocument.presentationml.template":["potx"],"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet":["xlsx"],"application/vnd.openxmlformats-officedocument.spreadsheetml.template":["xltx"],"application/vnd.openxmlformats-officedocument.wordprocessingml.document":["docx"],"application/vnd.openxmlformats-officedocument.wordprocessingml.template":["dotx"],"application/vnd.osgeo.mapguide.package":["mgp"],"application/vnd.osgi.dp":["dp"],"application/vnd.osgi.subsystem":["esa"],"application/vnd.palm":["pdb","pqa","oprc"],"application/vnd.pawaafile":["paw"],"application/vnd.pg.format":["str"],"application/vnd.pg.osasli":["ei6"],"application/vnd.picsel":["efif"],"application/vnd.pmi.widget":["wg"],"application/vnd.pocketlearn":["plf"],"application/vnd.powerbuilder6":["pbd"],"application/vnd.previewsystems.box":["box"],"application/vnd.proteus.magazine":["mgz"],"application/vnd.publishare-delta-tree":["qps"],"application/vnd.pvi.ptid1":["ptid"],"application/vnd.quark.quarkxpress":["qxd","qxt","qwd","qwt","qxl","qxb"],"application/vnd.realvnc.bed":["bed"],"application/vnd.recordare.musicxml":["mxl"],"application/vnd.recordare.musicxml+xml":["musicxml"],"application/vnd.rig.cryptonote":["cryptonote"],"application/vnd.rim.cod":["cod"],"application/vnd.rn-realmedia":["rm"],"application/vnd.rn-realmedia-vbr":["rmvb"],"application/vnd.route66.link66+xml":["link66"],"application/vnd.sailingtracker.track":["st"],"application/vnd.seemail":["see"],"application/vnd.sema":["sema"],"application/vnd.semd":["semd"],"application/vnd.semf":["semf"],"application/vnd.shana.informed.formdata":["ifm"],"application/vnd.shana.informed.formtemplate":["itp"],"application/vnd.shana.informed.interchange":["iif"],"application/vnd.shana.informed.package":["ipk"],"application/vnd.simtech-mindmapper":["twd","twds"],"application/vnd.smaf":["mmf"],"application/vnd.smart.teacher":["teacher"],"application/vnd.solent.sdkm+xml":["sdkm","sdkd"],"application/vnd.spotfire.dxp":["dxp"],"application/vnd.spotfire.sfs":["sfs"],"application/vnd.stardivision.calc":["sdc"],"application/vnd.stardivision.draw":["sda"],"application/vnd.stardivision.impress":["sdd"],"application/vnd.stardivision.math":["smf"],"application/vnd.stardivision.writer":["sdw","vor"],"application/vnd.stardivision.writer-global":["sgl"],"application/vnd.stepmania.package":["smzip"],"application/vnd.stepmania.stepchart":["sm"],"application/vnd.sun.wadl+xml":["wadl"],"application/vnd.sun.xml.calc":["sxc"],"application/vnd.sun.xml.calc.template":["stc"],"application/vnd.sun.xml.draw":["sxd"],"application/vnd.sun.xml.draw.template":["std"],"application/vnd.sun.xml.impress":["sxi"],"application/vnd.sun.xml.impress.template":["sti"],"application/vnd.sun.xml.math":["sxm"],"application/vnd.sun.xml.writer":["sxw"],"application/vnd.sun.xml.writer.global":["sxg"],"application/vnd.sun.xml.writer.template":["stw"],"application/vnd.sus-calendar":["sus","susp"],"application/vnd.svd":["svd"],"application/vnd.symbian.install":["sis","sisx"],"application/vnd.syncml+xml":["xsm"],"application/vnd.syncml.dm+wbxml":["bdm"],"application/vnd.syncml.dm+xml":["xdm"],"application/vnd.tao.intent-module-archive":["tao"],"application/vnd.tcpdump.pcap":["pcap","cap","dmp"],"application/vnd.tmobile-livetv":["tmo"],"application/vnd.trid.tpt":["tpt"],"application/vnd.triscape.mxs":["mxs"],"application/vnd.trueapp":["tra"],"application/vnd.ufdl":["ufd","ufdl"],"application/vnd.uiq.theme":["utz"],"application/vnd.umajin":["umj"],"application/vnd.unity":["unityweb"],"application/vnd.uoml+xml":["uoml"],"application/vnd.vcx":["vcx"],"application/vnd.visio":["vsd","vst","vss","vsw"],"application/vnd.visionary":["vis"],"application/vnd.vsf":["vsf"],"application/vnd.wap.wbxml":["wbxml"],"application/vnd.wap.wmlc":["wmlc"],"application/vnd.wap.wmlscriptc":["wmlsc"],"application/vnd.webturbo":["wtb"],"application/vnd.wolfram.player":["nbp"],"application/vnd.wordperfect":["wpd"],"application/vnd.wqd":["wqd"],"application/vnd.wt.stf":["stf"],"application/vnd.xara":["xar"],"application/vnd.xfdl":["xfdl"],"application/vnd.yamaha.hv-dic":["hvd"],"application/vnd.yamaha.hv-script":["hvs"],"application/vnd.yamaha.hv-voice":["hvp"],"application/vnd.yamaha.openscoreformat":["osf"],"application/vnd.yamaha.openscoreformat.osfpvg+xml":["osfpvg"],"application/vnd.yamaha.smaf-audio":["saf"],"application/vnd.yamaha.smaf-phrase":["spf"],"application/vnd.yellowriver-custom-menu":["cmp"],"application/vnd.zul":["zir","zirz"],"application/vnd.zzazz.deck+xml":["zaz"],"application/voicexml+xml":["vxml"],"application/wasm":["wasm"],"application/widget":["wgt"],"application/winhlp":["hlp"],"application/wsdl+xml":["wsdl"],"application/wspolicy+xml":["wspolicy"],"application/x-7z-compressed":["7z"],"application/x-abiword":["abw"],"application/x-ace-compressed":["ace"],"application/x-apple-diskimage":[],"application/x-arj":["arj"],"application/x-authorware-bin":["aab","x32","u32","vox"],"application/x-authorware-map":["aam"],"application/x-authorware-seg":["aas"],"application/x-bcpio":["bcpio"],"application/x-bdoc":[],"application/x-bittorrent":["torrent"],"application/x-blorb":["blb","blorb"],"application/x-bzip":["bz"],"application/x-bzip2":["bz2","boz"],"application/x-cbr":["cbr","cba","cbt","cbz","cb7"],"application/x-cdlink":["vcd"],"application/x-cfs-compressed":["cfs"],"application/x-chat":["chat"],"application/x-chess-pgn":["pgn"],"application/x-chrome-extension":["crx"],"application/x-cocoa":["cco"],"application/x-conference":["nsc"],"application/x-cpio":["cpio"],"application/x-csh":["csh"],"application/x-debian-package":["udeb"],"application/x-dgc-compressed":["dgc"],"application/x-director":["dir","dcr","dxr","cst","cct","cxt","w3d","fgd","swa"],"application/x-doom":["wad"],"application/x-dtbncx+xml":["ncx"],"application/x-dtbook+xml":["dtb"],"application/x-dtbresource+xml":["res"],"application/x-dvi":["dvi"],"application/x-envoy":["evy"],"application/x-eva":["eva"],"application/x-font-bdf":["bdf"],"application/x-font-ghostscript":["gsf"],"application/x-font-linux-psf":["psf"],"application/x-font-pcf":["pcf"],"application/x-font-snf":["snf"],"application/x-font-type1":["pfa","pfb","pfm","afm"],"application/x-freearc":["arc"],"application/x-futuresplash":["spl"],"application/x-gca-compressed":["gca"],"application/x-glulx":["ulx"],"application/x-gnumeric":["gnumeric"],"application/x-gramps-xml":["gramps"],"application/x-gtar":["gtar"],"application/x-hdf":["hdf"],"application/x-httpd-php":["php"],"application/x-install-instructions":["install"],"application/x-iso9660-image":[],"application/x-java-archive-diff":["jardiff"],"application/x-java-jnlp-file":["jnlp"],"application/x-latex":["latex"],"application/x-lua-bytecode":["luac"],"application/x-lzh-compressed":["lzh","lha"],"application/x-makeself":["run"],"application/x-mie":["mie"],"application/x-mobipocket-ebook":["prc","mobi"],"application/x-ms-application":["application"],"application/x-ms-shortcut":["lnk"],"application/x-ms-wmd":["wmd"],"application/x-ms-wmz":["wmz"],"application/x-ms-xbap":["xbap"],"application/x-msaccess":["mdb"],"application/x-msbinder":["obd"],"application/x-mscardfile":["crd"],"application/x-msclip":["clp"],"application/x-msdos-program":[],"application/x-msdownload":["com","bat"],"application/x-msmediaview":["mvb","m13","m14"],"application/x-msmetafile":["wmf","emf","emz"],"application/x-msmoney":["mny"],"application/x-mspublisher":["pub"],"application/x-msschedule":["scd"],"application/x-msterminal":["trm"],"application/x-mswrite":["wri"],"application/x-netcdf":["nc","cdf"],"application/x-ns-proxy-autoconfig":["pac"],"application/x-nzb":["nzb"],"application/x-perl":["pl","pm"],"application/x-pilot":[],"application/x-pkcs12":["p12","pfx"],"application/x-pkcs7-certificates":["p7b","spc"],"application/x-pkcs7-certreqresp":["p7r"],"application/x-rar-compressed":["rar"],"application/x-redhat-package-manager":["rpm"],"application/x-research-info-systems":["ris"],"application/x-sea":["sea"],"application/x-sh":["sh"],"application/x-shar":["shar"],"application/x-shockwave-flash":["swf"],"application/x-silverlight-app":["xap"],"application/x-sql":["sql"],"application/x-stuffit":["sit"],"application/x-stuffitx":["sitx"],"application/x-subrip":["srt"],"application/x-sv4cpio":["sv4cpio"],"application/x-sv4crc":["sv4crc"],"application/x-t3vm-image":["t3"],"application/x-tads":["gam"],"application/x-tar":["tar"],"application/x-tcl":["tcl","tk"],"application/x-tex":["tex"],"application/x-tex-tfm":["tfm"],"application/x-texinfo":["texinfo","texi"],"application/x-tgif":["obj"],"application/x-ustar":["ustar"],"application/x-virtualbox-hdd":["hdd"],"application/x-virtualbox-ova":["ova"],"application/x-virtualbox-ovf":["ovf"],"application/x-virtualbox-vbox":["vbox"],"application/x-virtualbox-vbox-extpack":["vbox-extpack"],"application/x-virtualbox-vdi":["vdi"],"application/x-virtualbox-vhd":["vhd"],"application/x-virtualbox-vmdk":["vmdk"],"application/x-wais-source":["src"],"application/x-web-app-manifest+json":["webapp"],"application/x-x509-ca-cert":["der","crt","pem"],"application/x-xfig":["fig"],"application/x-xliff+xml":["xlf"],"application/x-xpinstall":["xpi"],"application/x-xz":["xz"],"application/x-zmachine":["z1","z2","z3","z4","z5","z6","z7","z8"],"application/xaml+xml":["xaml"],"application/xcap-diff+xml":["xdf"],"application/xenc+xml":["xenc"],"application/xhtml+xml":["xhtml","xht"],"application/xml":["xml","xsl","xsd","rng"],"application/xml-dtd":["dtd"],"application/xop+xml":["xop"],"application/xproc+xml":["xpl"],"application/xslt+xml":["xslt"],"application/xspf+xml":["xspf"],"application/xv+xml":["mxml","xhvml","xvml","xvm"],"application/yang":["yang"],"application/yin+xml":["yin"],"application/zip":["zip"],"audio/3gpp":[],"audio/adpcm":["adp"],"audio/basic":["au","snd"],"audio/midi":["mid","midi","kar","rmi"],"audio/mp3":[],"audio/mp4":["m4a","mp4a"],"audio/mpeg":["mpga","mp2","mp2a","mp3","m2a","m3a"],"audio/ogg":["oga","ogg","spx"],"audio/s3m":["s3m"],"audio/silk":["sil"],"audio/vnd.dece.audio":["uva","uvva"],"audio/vnd.digital-winds":["eol"],"audio/vnd.dra":["dra"],"audio/vnd.dts":["dts"],"audio/vnd.dts.hd":["dtshd"],"audio/vnd.lucent.voice":["lvp"],"audio/vnd.ms-playready.media.pya":["pya"],"audio/vnd.nuera.ecelp4800":["ecelp4800"],"audio/vnd.nuera.ecelp7470":["ecelp7470"],"audio/vnd.nuera.ecelp9600":["ecelp9600"],"audio/vnd.rip":["rip"],"audio/wav":["wav"],"audio/wave":[],"audio/webm":["weba"],"audio/x-aac":["aac"],"audio/x-aiff":["aif","aiff","aifc"],"audio/x-caf":["caf"],"audio/x-flac":["flac"],"audio/x-m4a":[],"audio/x-matroska":["mka"],"audio/x-mpegurl":["m3u"],"audio/x-ms-wax":["wax"],"audio/x-ms-wma":["wma"],"audio/x-pn-realaudio":["ram","ra"],"audio/x-pn-realaudio-plugin":["rmp"],"audio/x-realaudio":[],"audio/x-wav":[],"audio/xm":["xm"],"chemical/x-cdx":["cdx"],"chemical/x-cif":["cif"],"chemical/x-cmdf":["cmdf"],"chemical/x-cml":["cml"],"chemical/x-csml":["csml"],"chemical/x-xyz":["xyz"],"font/collection":["ttc"],"font/otf":["otf"],"font/ttf":["ttf"],"font/woff":["woff"],"font/woff2":["woff2"],"image/apng":["apng"],"image/bmp":["bmp"],"image/cgm":["cgm"],"image/g3fax":["g3"],"image/gif":["gif"],"image/ief":["ief"],"image/jp2":["jp2","jpg2"],"image/jpeg":["jpeg","jpg","jpe"],"image/jpm":["jpm"],"image/jpx":["jpx","jpf"],"image/ktx":["ktx"],"image/png":["png"],"image/prs.btif":["btif"],"image/sgi":["sgi"],"image/svg+xml":["svg","svgz"],"image/tiff":["tiff","tif"],"image/vnd.adobe.photoshop":["psd"],"image/vnd.dece.graphic":["uvi","uvvi","uvg","uvvg"],"image/vnd.djvu":["djvu","djv"],"image/vnd.dvb.subtitle":[],"image/vnd.dwg":["dwg"],"image/vnd.dxf":["dxf"],"image/vnd.fastbidsheet":["fbs"],"image/vnd.fpx":["fpx"],"image/vnd.fst":["fst"],"image/vnd.fujixerox.edmics-mmr":["mmr"],"image/vnd.fujixerox.edmics-rlc":["rlc"],"image/vnd.ms-modi":["mdi"],"image/vnd.ms-photo":["wdp"],"image/vnd.net-fpx":["npx"],"image/vnd.wap.wbmp":["wbmp"],"image/vnd.xiff":["xif"],"image/webp":["webp"],"image/x-3ds":["3ds"],"image/x-cmu-raster":["ras"],"image/x-cmx":["cmx"],"image/x-freehand":["fh","fhc","fh4","fh5","fh7"],"image/x-icon":["ico"],"image/x-jng":["jng"],"image/x-mrsid-image":["sid"],"image/x-ms-bmp":[],"image/x-pcx":["pcx"],"image/x-pict":["pic","pct"],"image/x-portable-anymap":["pnm"],"image/x-portable-bitmap":["pbm"],"image/x-portable-graymap":["pgm"],"image/x-portable-pixmap":["ppm"],"image/x-rgb":["rgb"],"image/x-tga":["tga"],"image/x-xbitmap":["xbm"],"image/x-xpixmap":["xpm"],"image/x-xwindowdump":["xwd"],"message/rfc822":["eml","mime"],"model/gltf+json":["gltf"],"model/gltf-binary":["glb"],"model/iges":["igs","iges"],"model/mesh":["msh","mesh","silo"],"model/vnd.collada+xml":["dae"],"model/vnd.dwf":["dwf"],"model/vnd.gdl":["gdl"],"model/vnd.gtw":["gtw"],"model/vnd.mts":["mts"],"model/vnd.vtu":["vtu"],"model/vrml":["wrl","vrml"],"model/x3d+binary":["x3db","x3dbz"],"model/x3d+vrml":["x3dv","x3dvz"],"model/x3d+xml":["x3d","x3dz"],"text/cache-manifest":["appcache","manifest"],"text/calendar":["ics","ifb"],"text/coffeescript":["coffee","litcoffee"],"text/css":["css"],"text/csv":["csv"],"text/hjson":["hjson"],"text/html":["html","htm","shtml"],"text/jade":["jade"],"text/jsx":["jsx"],"text/less":["less"],"text/markdown":["markdown","md"],"text/mathml":["mml"],"text/n3":["n3"],"text/plain":["txt","text","conf","def","list","log","in","ini"],"text/prs.lines.tag":["dsc"],"text/richtext":["rtx"],"text/rtf":[],"text/sgml":["sgml","sgm"],"text/slim":["slim","slm"],"text/stylus":["stylus","styl"],"text/tab-separated-values":["tsv"],"text/troff":["t","tr","roff","man","me","ms"],"text/turtle":["ttl"],"text/uri-list":["uri","uris","urls"],"text/vcard":["vcard"],"text/vnd.curl":["curl"],"text/vnd.curl.dcurl":["dcurl"],"text/vnd.curl.mcurl":["mcurl"],"text/vnd.curl.scurl":["scurl"],"text/vnd.dvb.subtitle":["sub"],"text/vnd.fly":["fly"],"text/vnd.fmi.flexstor":["flx"],"text/vnd.graphviz":["gv"],"text/vnd.in3d.3dml":["3dml"],"text/vnd.in3d.spot":["spot"],"text/vnd.sun.j2me.app-descriptor":["jad"],"text/vnd.wap.wml":["wml"],"text/vnd.wap.wmlscript":["wmls"],"text/vtt":["vtt"],"text/x-asm":["s","asm"],"text/x-c":["c","cc","cxx","cpp","h","hh","dic"],"text/x-component":["htc"],"text/x-fortran":["f","for","f77","f90"],"text/x-handlebars-template":["hbs"],"text/x-java-source":["java"],"text/x-lua":["lua"],"text/x-markdown":["mkd"],"text/x-nfo":["nfo"],"text/x-opml":["opml"],"text/x-org":[],"text/x-pascal":["p","pas"],"text/x-processing":["pde"],"text/x-sass":["sass"],"text/x-scss":["scss"],"text/x-setext":["etx"],"text/x-sfv":["sfv"],"text/x-suse-ymp":["ymp"],"text/x-uuencode":["uu"],"text/x-vcalendar":["vcs"],"text/x-vcard":["vcf"],"text/xml":[],"text/yaml":["yaml","yml"],"video/3gpp":["3gp","3gpp"],"video/3gpp2":["3g2"],"video/h261":["h261"],"video/h263":["h263"],"video/h264":["h264"],"video/jpeg":["jpgv"],"video/jpm":["jpgm"],"video/mj2":["mj2","mjp2"],"video/mp2t":["ts"],"video/mp4":["mp4","mp4v","mpg4"],"video/mpeg":["mpeg","mpg","mpe","m1v","m2v"],"video/ogg":["ogv"],"video/quicktime":["qt","mov"],"video/vnd.dece.hd":["uvh","uvvh"],"video/vnd.dece.mobile":["uvm","uvvm"],"video/vnd.dece.pd":["uvp","uvvp"],"video/vnd.dece.sd":["uvs","uvvs"],"video/vnd.dece.video":["uvv","uvvv"],"video/vnd.dvb.file":["dvb"],"video/vnd.fvt":["fvt"],"video/vnd.mpegurl":["mxu","m4u"],"video/vnd.ms-playready.media.pyv":["pyv"],"video/vnd.uvvu.mp4":["uvu","uvvu"],"video/vnd.vivo":["viv"],"video/webm":["webm"],"video/x-f4v":["f4v"],"video/x-fli":["fli"],"video/x-flv":["flv"],"video/x-m4v":["m4v"],"video/x-matroska":["mkv","mk3d","mks"],"video/x-mng":["mng"],"video/x-ms-asf":["asf","asx"],"video/x-ms-vob":["vob"],"video/x-ms-wm":["wm"],"video/x-ms-wmv":["wmv"],"video/x-ms-wmx":["wmx"],"video/x-ms-wvx":["wvx"],"video/x-msvideo":["avi"],"video/x-sgi-movie":["movie"],"video/x-smv":["smv"],"x-conference/x-cooltalk":["ice"]}});var j3=P((a$,q3)=>{var i$=require("path"),jL=require("fs");function Ss(){this.types=Object.create(null),this.extensions=Object.create(null)}Ss.prototype.define=function(t){for(var e in t){for(var r=t[e],n=0;n{var _s=1e3,Ts=_s*60,ks=Ts*60,ho=ks*24,UL=ho*7,HL=ho*365.25;U3.exports=function(t,e){e=e||{};var r=typeof t;if(r==="string"&&t.length>0)return zL(t);if(r==="number"&&isFinite(t))return e.long?XL(t):GL(t);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(t))};function zL(t){if(t=String(t),!(t.length>100)){var e=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(t);if(!!e){var r=parseFloat(e[1]),n=(e[2]||"ms").toLowerCase();switch(n){case"years":case"year":case"yrs":case"yr":case"y":return r*HL;case"weeks":case"week":case"w":return r*UL;case"days":case"day":case"d":return r*ho;case"hours":case"hour":case"hrs":case"hr":case"h":return r*ks;case"minutes":case"minute":case"mins":case"min":case"m":return r*Ts;case"seconds":case"second":case"secs":case"sec":case"s":return r*_s;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return r;default:return}}}}function GL(t){var e=Math.abs(t);return e>=ho?Math.round(t/ho)+"d":e>=ks?Math.round(t/ks)+"h":e>=Ts?Math.round(t/Ts)+"m":e>=_s?Math.round(t/_s)+"s":t+"ms"}function XL(t){var e=Math.abs(t);return e>=ho?Hf(t,e,ho,"day"):e>=ks?Hf(t,e,ks,"hour"):e>=Ts?Hf(t,e,Ts,"minute"):e>=_s?Hf(t,e,_s,"second"):t+" ms"}function Hf(t,e,r,n){var i=e>=r*1.5;return Math.round(t/r)+" "+n+(i?"s":"")}});var yv=P((s$,z3)=>{"use strict";z3.exports=KL;function KL(t,e,r){if(typeof e!="string")throw new TypeError("argument str must be a string");var n=e.indexOf("=");if(n===-1)return-2;var i=e.slice(n+1).split(","),a=[];a.type=e.slice(0,n);for(var o=0;ot-1&&(s=t-1),!(isNaN(u)||isNaN(s)||u>s||u<0)&&a.push({start:u,end:s})}return a.length<1?-1:r&&r.combine?VL(a):a}function VL(t){for(var e=t.map(ZL).sort(YL),r=0,n=1;na.end+1?e[++r]=i:i.end>a.end&&(a.end=i.end,a.index=Math.min(a.index,i.index))}e.length=r+1;var o=e.sort(WL).map(QL);return o.type=t.type,o}function ZL(t,e){return{start:t.start,end:t.end,index:e}}function QL(t){return{start:t.start,end:t.end}}function WL(t,e){return t.index-e.index}function YL(t,e){return t.start-e.start}});var Kf=P((c$,kv)=>{"use strict";var wv=ro(),hr=F3()("send"),vo=qn()("send"),$L=X0(),eR=xu(),Ev=yu(),rR=gv(),tR=xv(),Gf=require("fs"),Sv=j3(),K3=H3(),nR=au(),iR=yv(),Lu=require("path"),aR=Zc(),V3=require("stream"),oR=require("util"),sR=Lu.extname,Z3=Lu.join,Av=Lu.normalize,Tv=Lu.resolve,zf=Lu.sep,cR=/^ *bytes=/,Q3=60*60*24*365*1e3,G3=/(?:^|[\\/])\.\.(?:[\\/]|$)/;kv.exports=uR;kv.exports.mime=Sv;function uR(t,e,r){return new er(t,e,r)}function er(t,e,r){V3.call(this);var n=r||{};if(this.options=n,this.path=e,this.req=t,this._acceptRanges=n.acceptRanges!==void 0?Boolean(n.acceptRanges):!0,this._cacheControl=n.cacheControl!==void 0?Boolean(n.cacheControl):!0,this._etag=n.etag!==void 0?Boolean(n.etag):!0,this._dotfiles=n.dotfiles!==void 0?n.dotfiles:"ignore",this._dotfiles!=="ignore"&&this._dotfiles!=="allow"&&this._dotfiles!=="deny")throw new TypeError('dotfiles option must be "allow", "deny", or "ignore"');this._hidden=Boolean(n.hidden),n.hidden!==void 0&&vo("hidden: use dotfiles: '"+(this._hidden?"allow":"ignore")+"' instead"),n.dotfiles===void 0&&(this._dotfiles=void 0),this._extensions=n.extensions!==void 0?_v(n.extensions,"extensions option"):[],this._immutable=n.immutable!==void 0?Boolean(n.immutable):!1,this._index=n.index!==void 0?_v(n.index,"index option"):["index.html"],this._lastModified=n.lastModified!==void 0?Boolean(n.lastModified):!0,this._maxage=n.maxAge||n.maxage,this._maxage=typeof this._maxage=="string"?K3(this._maxage):Number(this._maxage),this._maxage=isNaN(this._maxage)?0:Math.min(Math.max(0,this._maxage),Q3),this._root=n.root?Tv(n.root):null,!this._root&&n.from&&this.from(n.from)}oR.inherits(er,V3);er.prototype.etag=vo.function(function(e){return this._etag=Boolean(e),hr("etag %s",this._etag),this},"send.etag: pass etag as option");er.prototype.hidden=vo.function(function(e){return this._hidden=Boolean(e),this._dotfiles=void 0,hr("hidden %s",this._hidden),this},"send.hidden: use dotfiles option");er.prototype.index=vo.function(function(e){var r=e?_v(e,"paths argument"):[];return hr("index %o",e),this._index=r,this},"send.index: pass index as option");er.prototype.root=function(e){return this._root=Tv(String(e)),hr("root %s",this._root),this};er.prototype.from=vo.function(er.prototype.root,"send.from: pass root as option");er.prototype.root=vo.function(er.prototype.root,"send.root: pass root as option");er.prototype.maxage=vo.function(function(e){return this._maxage=typeof e=="string"?K3(e):Number(e),this._maxage=isNaN(this._maxage)?0:Math.min(Math.max(0,this._maxage),Q3),hr("max-age %d",this._maxage),this},"send.maxage: pass maxAge as option");er.prototype.error=function(e,r){if(Y3(this,"error"))return this.emit("error",pR(e,r));var n=this.res,i=aR.message[e]||String(e),a=W3("Error",Ev(i));lR(n),r&&r.headers&&gR(n,r.headers),n.statusCode=e,n.setHeader("Content-Type","text/html; charset=UTF-8"),n.setHeader("Content-Length",Buffer.byteLength(a)),n.setHeader("Content-Security-Policy","default-src 'none'"),n.setHeader("X-Content-Type-Options","nosniff"),n.end(a)};er.prototype.hasTrailingSlash=function(){return this.path[this.path.length-1]==="/"};er.prototype.isConditionalGET=function(){return this.req.headers["if-match"]||this.req.headers["if-unmodified-since"]||this.req.headers["if-none-match"]||this.req.headers["if-modified-since"]};er.prototype.isPreconditionFailure=function(){var e=this.req,r=this.res,n=e.headers["if-match"];if(n){var i=r.getHeader("ETag");return!i||n!=="*"&&bR(n).every(function(c){return c!==i&&c!=="W/"+i&&"W/"+c!==i})}var a=Xf(e.headers["if-unmodified-since"]);if(!isNaN(a)){var o=Xf(r.getHeader("Last-Modified"));return isNaN(o)||o>a}return!1};er.prototype.removeContentHeaderFields=function(){var e=this.res;e.removeHeader("Content-Encoding"),e.removeHeader("Content-Language"),e.removeHeader("Content-Length"),e.removeHeader("Content-Range"),e.removeHeader("Content-Type")};er.prototype.notModified=function(){var e=this.res;hr("not modified"),this.removeContentHeaderFields(),e.statusCode=304,e.end()};er.prototype.headersAlreadySent=function(){var e=new Error("Can't set headers after they are sent.");hr("headers already sent"),this.error(500,e)};er.prototype.isCachable=function(){var e=this.res.statusCode;return e>=200&&e<300||e===304};er.prototype.onStatError=function(e){switch(e.code){case"ENAMETOOLONG":case"ENOENT":case"ENOTDIR":this.error(404,e);break;default:this.error(500,e);break}};er.prototype.isFresh=function(){return tR(this.req.headers,{etag:this.res.getHeader("ETag"),"last-modified":this.res.getHeader("Last-Modified")})};er.prototype.isRangeFresh=function(){var e=this.req.headers["if-range"];if(!e)return!0;if(e.indexOf('"')!==-1){var r=this.res.getHeader("ETag");return Boolean(r&&e.indexOf(r)!==-1)}var n=this.res.getHeader("Last-Modified");return Xf(n)<=Xf(e)};er.prototype.redirect=function(e){var r=this.res;if(Y3(this,"directory")){this.emit("directory",r,e);return}if(this.hasTrailingSlash()){this.error(403);return}var n=eR(fR(this.path+"/")),i=W3("Redirecting",'Redirecting to '+Ev(n)+"");r.statusCode=301,r.setHeader("Content-Type","text/html; charset=UTF-8"),r.setHeader("Content-Length",Buffer.byteLength(i)),r.setHeader("Content-Security-Policy","default-src 'none'"),r.setHeader("X-Content-Type-Options","nosniff"),r.setHeader("Location",n),r.end(i)};er.prototype.pipe=function(e){var r=this._root;this.res=e;var n=hR(this.path);if(n===-1)return this.error(400),e;if(~n.indexOf("\0"))return this.error(400),e;var i;if(r!==null){if(n&&(n=Av("."+zf+n)),G3.test(n))return hr('malicious path "%s"',n),this.error(403),e;i=n.split(zf),n=Av(Z3(r,n))}else{if(G3.test(n))return hr('malicious path "%s"',n),this.error(403),e;i=Av(n).split(zf),n=Tv(n)}if(dR(i)){var a=this._dotfiles;switch(a===void 0&&(a=i[i.length-1][0]==="."?this._hidden?"allow":"ignore":"allow"),hr('%s dotfile "%s"',a,n),a){case"allow":break;case"deny":return this.error(403),e;case"ignore":default:return this.error(404),e}}return this._index.length&&this.hasTrailingSlash()?(this.sendIndex(n),e):(this.sendFile(n),e)};er.prototype.send=function(e,r){var n=r.size,i=this.options,a={},o=this.res,c=this.req,u=c.headers.range,s=i.start||0;if(mR(o)){this.headersAlreadySent();return}if(hr('pipe "%s"',e),this.setHeader(e,r),this.type(e),this.isConditionalGET()){if(this.isPreconditionFailure()){this.error(412);return}if(this.isCachable()&&this.isFresh()){this.notModified();return}}if(n=Math.max(0,n-s),i.end!==void 0){var f=i.end-s+1;n>f&&(n=f)}if(this._acceptRanges&&cR.test(u)){if(u=iR(n,u,{combine:!0}),this.isRangeFresh()||(hr("range stale"),u=-2),u===-1)return hr("range unsatisfiable"),o.setHeader("Content-Range",X3("bytes",n)),this.error(416,{headers:{"Content-Range":o.getHeader("Content-Range")}});u!==-2&&u.length===1&&(hr("range %j",u),o.statusCode=206,o.setHeader("Content-Range",X3("bytes",n,u[0])),s+=u[0].start,n=u[0].end-u[0].start+1)}for(var m in i)a[m]=i[m];if(a.start=s,a.end=Math.max(s,s+n-1),o.setHeader("Content-Length",n),c.method==="HEAD"){o.end();return}this.stream(e,a)};er.prototype.sendFile=function(e){var r=0,n=this;hr('stat "%s"',e),Gf.stat(e,function(o,c){if(o&&o.code==="ENOENT"&&!sR(e)&&e[e.length-1]!==zf)return i(o);if(o)return n.onStatError(o);if(c.isDirectory())return n.redirect(e);n.emit("file",e,c),n.send(e,c)});function i(a){if(n._extensions.length<=r)return a?n.onStatError(a):n.error(404);var o=e+"."+n._extensions[r++];hr('stat "%s"',o),Gf.stat(o,function(c,u){if(c)return i(c);if(u.isDirectory())return i();n.emit("file",o,u),n.send(o,u)})}};er.prototype.sendIndex=function(e){var r=-1,n=this;function i(a){if(++r>=n._index.length)return a?n.onStatError(a):n.error(404);var o=Z3(e,n._index[r]);hr('stat "%s"',o),Gf.stat(o,function(c,u){if(c)return i(c);if(u.isDirectory())return i();n.emit("file",o,u),n.send(o,u)})}i()};er.prototype.stream=function(e,r){var n=this,i=this.res,a=Gf.createReadStream(e,r);this.emit("stream",a),a.pipe(i);function o(){$L(a,!0)}nR(i,o),a.on("error",function(u){o(),n.onStatError(u)}),a.on("end",function(){n.emit("end")})};er.prototype.type=function(e){var r=this.res;if(!r.getHeader("Content-Type")){var n=Sv.lookup(e);if(!n){hr("no content-type");return}var i=Sv.charsets.lookup(n);hr("content-type %s",n),r.setHeader("Content-Type",n+(i?"; charset="+i:""))}};er.prototype.setHeader=function(e,r){var n=this.res;if(this.emit("headers",n,e,r),this._acceptRanges&&!n.getHeader("Accept-Ranges")&&(hr("accept ranges"),n.setHeader("Accept-Ranges","bytes")),this._cacheControl&&!n.getHeader("Cache-Control")){var i="public, max-age="+Math.floor(this._maxage/1e3);this._immutable&&(i+=", immutable"),hr("cache-control %s",i),n.setHeader("Cache-Control",i)}if(this._lastModified&&!n.getHeader("Last-Modified")){var a=r.mtime.toUTCString();hr("modified %s",a),n.setHeader("Last-Modified",a)}if(this._etag&&!n.getHeader("ETag")){var o=rR(r);hr("etag %s",o),n.setHeader("ETag",o)}};function lR(t){for(var e=vR(t),r=0;r1?"/"+t.substr(e):t}function dR(t){for(var e=0;e1&&r[0]===".")return!0}return!1}function X3(t,e,r){return t+" "+(r?r.start+"-"+r.end:"*")+"/"+e}function W3(t,e){return` + + + +`+t+` + + +
`+e+`
+ + +`}function pR(t,e){return e?e instanceof Error?wv(t,e,{expose:!1}):wv(t,e):wv(t)}function hR(t){try{return decodeURIComponent(t)}catch{return-1}}function vR(t){return typeof t.getHeaderNames!="function"?Object.keys(t._headers||{}):t.getHeaderNames()}function Y3(t,e){var r=typeof t.listenerCount!="function"?t.listeners(e).length:t.listenerCount(e);return r>0}function mR(t){return typeof t.headersSent!="boolean"?Boolean(t._header):t.headersSent}function _v(t,e){for(var r=[].concat(t||[]),n=0;n{"use strict";$3.exports=xR;function xR(t){if(!t)throw new TypeError("argument req is required");var e=wR(t.headers["x-forwarded-for"]||""),r=yR(t),n=[r].concat(e);return n}function yR(t){return t.socket?t.socket.remoteAddress:t.connection.remoteAddress}function wR(t){for(var e=t.length,r=[],n=t.length,i=t.length-1;i>=0;i--)switch(t.charCodeAt(i)){case 32:n===e&&(n=e=i);break;case 44:n!==e&&r.push(t.substring(n,e)),n=e=i;break;default:n=i;break}return n!==e&&r.push(t.substring(n,e)),r}});var t4=P((r4,Ru)=>{(function(){var t,e,r,n,i,a,o,c,u;e={},c=this,typeof Ru<"u"&&Ru!==null&&Ru.exports?Ru.exports=e:c.ipaddr=e,o=function(s,f,m,w){var T,A;if(s.length!==f.length)throw new Error("ipaddr: cannot match CIDR for objects with different lengths");for(T=0;w>0;){if(A=m-w,A<0&&(A=0),s[T]>>A!==f[T]>>A)return!1;w-=m,T+=1}return!0},e.subnetMatch=function(s,f,m){var w,T,A,O,B;m==null&&(m="unicast");for(A in f)for(O=f[A],O[0]&&!(O[0]instanceof Array)&&(O=[O]),w=0,T=O.length;w=0;m=w+=-1)if(T=this.octets[m],T in B){if(O=B[T],A&&O!==0)return null;O!==8&&(A=!0),f+=O}else return null;return 32-f},s}(),r="(0?\\d+|0x[a-f0-9]+)",n={fourOctet:new RegExp("^"+r+"\\."+r+"\\."+r+"\\."+r+"$","i"),longValue:new RegExp("^"+r+"$","i")},e.IPv4.parser=function(s){var f,m,w,T,A;if(m=function(O){return O[0]==="0"&&O[1]!=="x"?parseInt(O,8):parseInt(O)},f=s.match(n.fourOctet))return function(){var O,B,F,I;for(F=f.slice(1,6),I=[],O=0,B=F.length;O4294967295||A<0)throw new Error("ipaddr: address outside defined range");return function(){var O,B;for(B=[],T=O=0;O<=24;T=O+=8)B.push(A>>T&255);return B}().reverse()}else return null},e.IPv6=function(){function s(f,m){var w,T,A,O,B,F;if(f.length===16)for(this.parts=[],w=T=0;T<=14;w=T+=2)this.parts.push(f[w]<<8|f[w+1]);else if(f.length===8)this.parts=f;else throw new Error("ipaddr: ipv6 part count should be 8 or 16");for(F=this.parts,A=0,O=F.length;Am&&(f=w.index,m=w[0].length);return m<0?A:A.substring(0,f)+"::"+A.substring(f+m)},s.prototype.toByteArray=function(){var f,m,w,T,A;for(f=[],A=this.parts,m=0,w=A.length;m>8),f.push(T&255);return f},s.prototype.toNormalizedString=function(){var f,m,w;return f=function(){var T,A,O,B;for(O=this.parts,B=[],T=0,A=O.length;T>8,f&255,m>>8,m&255])},s.prototype.prefixLengthFromSubnetMask=function(){var f,m,w,T,A,O,B;for(B={0:16,32768:15,49152:14,57344:13,61440:12,63488:11,64512:10,65024:9,65280:8,65408:7,65472:6,65504:5,65520:4,65528:3,65532:2,65534:1,65535:0},f=0,A=!1,m=w=7;w>=0;m=w+=-1)if(T=this.parts[m],T in B){if(O=B[T],A&&O!==0)return null;O!==16&&(A=!0),f+=O}else return null;return 128-f},s}(),i="(?:[0-9a-f]+::?)+",u="%[0-9a-z]{1,}",a={zoneIndex:new RegExp(u,"i"),native:new RegExp("^(::)?("+i+")?([0-9a-f]+)?(::)?("+u+")?$","i"),transitional:new RegExp("^((?:"+i+")|(?:::)(?:"+i+")?)"+(r+"\\."+r+"\\."+r+"\\."+r)+("("+u+")?$"),"i")},t=function(s,f){var m,w,T,A,O,B;if(s.indexOf("::")!==s.lastIndexOf("::"))return null;for(B=(s.match(a.zoneIndex)||[])[0],B&&(B=B.substring(1),s=s.replace(/%.+$/,"")),m=0,w=-1;(w=s.indexOf(":",w+1))>=0;)m++;if(s.substr(0,2)==="::"&&m--,s.substr(-2,2)==="::"&&m--,m>f)return null;for(O=f-m,A=":";O--;)A+="0:";return s=s.replace("::",A),s[0]===":"&&(s=s.slice(1)),s[s.length-1]===":"&&(s=s.slice(0,-1)),f=function(){var F,I,D,z;for(D=s.split(":"),z=[],F=0,I=D.length;F=0&&f<=32))return w=[this.parse(m[1]),f],Object.defineProperty(w,"toString",{value:function(){return this.join("/")}}),w;throw new Error("ipaddr: string is not formatted like an IPv4 CIDR range")},e.IPv4.subnetMaskFromPrefixLength=function(s){var f,m,w;if(s=parseInt(s),s<0||s>32)throw new Error("ipaddr: invalid IPv4 prefix length");for(w=[0,0,0,0],m=0,f=Math.floor(s/8);m=0&&f<=128))return w=[this.parse(m[1]),f],Object.defineProperty(w,"toString",{value:function(){return this.join("/")}}),w;throw new Error("ipaddr: string is not formatted like an IPv6 CIDR range")},e.isValid=function(s){return e.IPv6.isValid(s)||e.IPv4.isValid(s)},e.parse=function(s){if(e.IPv6.isValid(s))return e.IPv6.parse(s);if(e.IPv4.isValid(s))return e.IPv4.parse(s);throw new Error("ipaddr: the address has neither IPv6 nor IPv4 format")},e.parseCIDR=function(s){var f;try{return e.IPv6.parseCIDR(s)}catch(m){f=m;try{return e.IPv4.parseCIDR(s)}catch(w){throw f=w,new Error("ipaddr: the address has neither IPv6 nor IPv4 CIDR format")}}},e.fromByteArray=function(s){var f;if(f=s.length,f===4)return new e.IPv4(s);if(f===16)return new e.IPv6(s);throw new Error("ipaddr: the binary input is neither an IPv6 nor IPv4 address")},e.process=function(s){var f;return f=this.parse(s),f.kind()==="ipv6"&&f.isIPv4MappedAddress()?f.toIPv4Address():f}}).call(r4)});var Cv=P((l$,Qf)=>{"use strict";Qf.exports=CR;Qf.exports.all=a4;Qf.exports.compile=o4;var AR=e4(),i4=t4(),ER=/^[0-9]+$/,Vf=i4.isValid,Zf=i4.parse,n4={linklocal:["169.254.0.0/16","fe80::/10"],loopback:["127.0.0.1/8","::1/128"],uniquelocal:["10.0.0.0/8","172.16.0.0/12","192.168.0.0/16","fc00::/7"]};function a4(t,e){var r=AR(t);if(!e)return r;typeof e!="function"&&(e=o4(e));for(var n=0;ni)throw new TypeError("invalid range on address: "+t);return[n,a]}function kR(t){var e=Zf(t),r=e.kind();return r==="ipv4"?e.prefixLengthFromSubnetMask():null}function CR(t,e){if(!t)throw new TypeError("req argument is required");if(!e)throw new TypeError("trust argument is required");var r=a4(t,e),n=r[r.length-1];return n}function OR(){return!1}function PR(t){return function(r){if(!Vf(r))return!1;for(var n=Zf(r),i,a=n.kind(),o=0;o{"use strict";var s4=jf().Buffer,BR=pv(),c4=Kc(),u4=qn()("express"),FR=Tu(),LR=Kf().mime,RR=gv(),IR=Cv(),NR=Mf(),DR=require("querystring");yt.etag=l4({weak:!1});yt.wetag=l4({weak:!0});yt.isAbsolute=function(t){if(t[0]==="/"||t[1]===":"&&(t[2]==="\\"||t[2]==="/")||t.substring(0,2)==="\\\\")return!0};yt.flatten=u4.function(FR,"utils.flatten: use array-flatten npm module instead");yt.normalizeType=function(t){return~t.indexOf("/")?JR(t):{value:LR.lookup(t),params:{}}};yt.normalizeTypes=function(t){for(var e=[],r=0;r{"use strict";var UR=k8(),HR=uv(),Pv=If(),zR=u3(),GR=lv(),Wf=xs()("express:application"),XR=v3(),KR=require("http"),VR=aa().compileETag,ZR=aa().compileQueryParser,QR=aa().compileTrust,WR=qn()("express"),YR=Tu(),Ov=ku(),$R=require("path").resolve,Cs=Vc(),eI=Object.prototype.hasOwnProperty,Bv=Array.prototype.slice,_r=f4=d4.exports={},Mv="@@symbol:trust_proxy_default";_r.init=function(){this.cache={},this.engines={},this.settings={},this.defaultConfiguration()};_r.defaultConfiguration=function(){var e=process.env.NODE_ENV||"development";this.enable("x-powered-by"),this.set("etag","weak"),this.set("env",e),this.set("query parser","extended"),this.set("subdomain offset",2),this.set("trust proxy",!1),Object.defineProperty(this.settings,Mv,{configurable:!0,value:!0}),Wf("booting in %s mode",e),this.on("mount",function(n){this.settings[Mv]===!0&&typeof n.settings["trust proxy fn"]=="function"&&(delete this.settings["trust proxy"],delete this.settings["trust proxy fn"]),Cs(this.request,n.request),Cs(this.response,n.response),Cs(this.engines,n.engines),Cs(this.settings,n.settings)}),this.locals=Object.create(null),this.mountpath="/",this.locals.settings=this.settings,this.set("view",XR),this.set("views",$R("views")),this.set("jsonp callback name","callback"),e==="production"&&this.enable("view cache"),Object.defineProperty(this,"router",{get:function(){throw new Error(`'app.router' is deprecated! +Please see the 3.x to 4.x migration guide for details on how to update your app.`)}})};_r.lazyrouter=function(){this._router||(this._router=new HR({caseSensitive:this.enabled("case sensitive routing"),strict:this.enabled("strict routing")}),this._router.use(GR(this.get("query parser fn"))),this._router.use(zR.init(this)))};_r.handle=function(e,r,n){var i=this._router,a=n||UR(e,r,{env:this.get("env"),onerror:rI.bind(this)});if(!i){Wf("no routes defined on app"),a();return}i.handle(e,r,a)};_r.use=function(e){var r=0,n="/";if(typeof e!="function"){for(var i=e;Array.isArray(i)&&i.length!==0;)i=i[0];typeof i!="function"&&(r=1,n=e)}var a=YR(Bv.call(arguments,r));if(a.length===0)throw new TypeError("app.use() requires a middleware function");this.lazyrouter();var o=this._router;return a.forEach(function(c){if(!c||!c.handle||!c.set)return o.use(n,c);Wf(".use app under %s",n),c.mountpath=n,c.parent=this,o.use(n,function(s,f,m){var w=s.app;c.handle(s,f,function(T){Cs(s,w.request),Cs(f,w.response),m(T)})}),c.emit("mount",this)},this),this};_r.route=function(e){return this.lazyrouter(),this._router.route(e)};_r.engine=function(e,r){if(typeof r!="function")throw new Error("callback function required");var n=e[0]!=="."?"."+e:e;return this.engines[n]=r,this};_r.param=function(e,r){if(this.lazyrouter(),Array.isArray(e)){for(var n=0;n1?'directories "'+s.root.slice(0,-1).join('", "')+'" or "'+s.root[s.root.length-1]+'"':'directory "'+s.root+'"',w=new Error('Failed to lookup view "'+e+'" in views '+m);return w.view=s,a(w)}u.cache&&(i[e]=s)}tI(s,u,a)};_r.listen=function(){var e=KR.createServer(this);return e.listen.apply(e,arguments)};function rI(t){this.get("env")!=="test"&&console.error(t.stack||t.toString())}function tI(t,e,r){try{t.render(e,r)}catch(n){r(n)}}});var b4=P((d$,Fv)=>{"use strict";Fv.exports=m4;Fv.exports.preferredCharsets=m4;var nI=/^\s*([^\s;]+)\s*(?:;(.*))?$/;function iI(t){for(var e=t.split(","),r=0,n=0;r0}});var A4=P((p$,Lv)=>{"use strict";Lv.exports=w4;Lv.exports.preferredEncodings=w4;var uI=/^\s*([^\s;]+)\s*(?:;(.*))?$/;function lI(t){for(var e=t.split(","),r=!1,n=1,i=0,a=0;i0}});var k4=P((h$,Rv)=>{"use strict";Rv.exports=T4;Rv.exports.preferredLanguages=T4;var hI=/^\s*([^\s\-;]+)(?:-([^\s;]+))?\s*(?:;(.*))?$/;function vI(t){for(var e=t.split(","),r=0,n=0;r0}});var F4=P((v$,Iv)=>{"use strict";Iv.exports=M4;Iv.exports.preferredMediaTypes=M4;var xI=/^\s*([^\s\/;]+)\/([^;\s]+)\s*(?:;(.*))?$/;function yI(t){for(var e=_I(t),r=0,n=0;r0)if(a.every(function(o){return e.params[o]=="*"||(e.params[o]||"").toLowerCase()==(n.params[o]||"").toLowerCase()}))i|=1;else return null;return{i:r,o:e.i,q:e.q,s:i}}function M4(t,e){var r=yI(t===void 0?"*/*":t||"");if(!e)return r.filter(O4).sort(C4).map(EI);var n=e.map(function(a,o){return wI(a,r,o)});return n.filter(O4).sort(C4).map(function(a){return e[n.indexOf(a)]})}function C4(t,e){return e.q-t.q||e.s-t.s||t.o-e.o||t.i-e.i||0}function EI(t){return t.type+"/"+t.subtype}function O4(t){return t.q>0}function B4(t){for(var e=0,r=0;(r=t.indexOf('"',r))!==-1;)e++,r++;return e}function SI(t){var e=t.indexOf("="),r,n;return e===-1?r=t:(r=t.substr(0,e),n=t.substr(e+1)),[r,n]}function _I(t){for(var e=t.split(","),r=1,n=0;r{"use strict";var kI=b4(),CI=A4(),OI=k4(),PI=F4();Nv.exports=ir;Nv.exports.Negotiator=ir;function ir(t){if(!(this instanceof ir))return new ir(t);this.request=t}ir.prototype.charset=function(e){var r=this.charsets(e);return r&&r[0]};ir.prototype.charsets=function(e){return kI(this.request.headers["accept-charset"],e)};ir.prototype.encoding=function(e){var r=this.encodings(e);return r&&r[0]};ir.prototype.encodings=function(e){return CI(this.request.headers["accept-encoding"],e)};ir.prototype.language=function(e){var r=this.languages(e);return r&&r[0]};ir.prototype.languages=function(e){return OI(this.request.headers["accept-language"],e)};ir.prototype.mediaType=function(e){var r=this.mediaTypes(e);return r&&r[0]};ir.prototype.mediaTypes=function(e){return PI(this.request.headers.accept,e)};ir.prototype.preferredCharset=ir.prototype.charset;ir.prototype.preferredCharsets=ir.prototype.charsets;ir.prototype.preferredEncoding=ir.prototype.encoding;ir.prototype.preferredEncodings=ir.prototype.encodings;ir.prototype.preferredLanguage=ir.prototype.language;ir.prototype.preferredLanguages=ir.prototype.languages;ir.prototype.preferredMediaType=ir.prototype.mediaType;ir.prototype.preferredMediaTypes=ir.prototype.mediaTypes});var I4=P((b$,R4)=>{"use strict";var MI=L4(),BI=Sh();R4.exports=Mt;function Mt(t){if(!(this instanceof Mt))return new Mt(t);this.headers=t.headers,this.negotiator=new MI(t)}Mt.prototype.type=Mt.prototype.types=function(t){var e=t;if(e&&!Array.isArray(e)){e=new Array(arguments.length);for(var r=0;r{"use strict";var Yf=I4(),Iu=qn()("express"),RI=require("net").isIP,II=ss(),NI=require("http"),DI=xv(),JI=yv(),qI=bs(),N4=Cv(),sr=Object.create(NI.IncomingMessage.prototype);D4.exports=sr;sr.get=sr.header=function(e){if(!e)throw new TypeError("name argument is required to req.get");if(typeof e!="string")throw new TypeError("name must be a string to req.get");var r=e.toLowerCase();switch(r){case"referer":case"referrer":return this.headers.referrer||this.headers.referer;default:return this.headers[r]}};sr.accepts=function(){var t=Yf(this);return t.types.apply(t,arguments)};sr.acceptsEncodings=function(){var t=Yf(this);return t.encodings.apply(t,arguments)};sr.acceptsEncoding=Iu.function(sr.acceptsEncodings,"req.acceptsEncoding: Use acceptsEncodings instead");sr.acceptsCharsets=function(){var t=Yf(this);return t.charsets.apply(t,arguments)};sr.acceptsCharset=Iu.function(sr.acceptsCharsets,"req.acceptsCharset: Use acceptsCharsets instead");sr.acceptsLanguages=function(){var t=Yf(this);return t.languages.apply(t,arguments)};sr.acceptsLanguage=Iu.function(sr.acceptsLanguages,"req.acceptsLanguage: Use acceptsLanguages instead");sr.range=function(e,r){var n=this.get("Range");if(!!n)return JI(e,n,r)};sr.param=function(e,r){var n=this.params||{},i=this.body||{},a=this.query||{},o=arguments.length===1?"name":"name, default";return Iu("req.param("+o+"): Use req.params, req.body, or req.query instead"),n[e]!=null&&n.hasOwnProperty(e)?n[e]:i[e]!=null?i[e]:a[e]!=null?a[e]:r};sr.is=function(e){var r=e;if(!Array.isArray(e)){r=new Array(arguments.length);for(var n=0;n=200&&r<300||r===304?DI(this.headers,{etag:e.get("ETag"),"last-modified":e.get("Last-Modified")}):!1});pn(sr,"stale",function(){return!this.fresh});pn(sr,"xhr",function(){var e=this.get("X-Requested-With")||"";return e.toLowerCase()==="xmlhttprequest"});function pn(t,e,r){Object.defineProperty(t,e,{configurable:!0,enumerable:!0,get:r})}});var U4=P($f=>{var j4=require("crypto");$f.sign=function(t,e){if(typeof t!="string")throw new TypeError("Cookie value must be provided as a string.");if(typeof e!="string")throw new TypeError("Secret string must be provided.");return t+"."+j4.createHmac("sha256",e).update(t).digest("base64").replace(/\=+$/,"")};$f.unsign=function(t,e){if(typeof t!="string")throw new TypeError("Signed cookie string must be provided.");if(typeof e!="string")throw new TypeError("Secret string must be provided.");var r=t.slice(0,t.lastIndexOf(".")),n=$f.sign(r,e);return q4(n)==q4(t)?r:!1};function q4(t){return j4.createHash("sha1").update(t).digest("hex")}});var H4=P(Dv=>{"use strict";Dv.parse=UI;Dv.serialize=HI;var jI=Object.prototype.toString,ed=/^[\u0009\u0020-\u007e\u0080-\u00ff]+$/;function UI(t,e){if(typeof t!="string")throw new TypeError("argument str must be a string");for(var r={},n=e||{},i=n.decode||zI,a=0;a{"use strict";Jv.exports=ZI;Jv.exports.append=G4;var VI=/^[!#$%&'*+\-.^_`|~0-9A-Za-z]+$/;function G4(t,e){if(typeof t!="string")throw new TypeError("header argument is required");if(!e)throw new TypeError("field argument is required");for(var r=Array.isArray(e)?e:z4(String(e)),n=0;n{"use strict";var Nu=jf().Buffer,X4=pv(),QI=ro(),hn=qn()("express"),WI=xu(),YI=yu(),$I=require("http"),eN=aa().isAbsolute,rN=au(),K4=require("path"),rd=Zc(),V4=ku(),tN=U4().sign,nN=aa().normalizeType,iN=aa().normalizeTypes,aN=aa().setCharset,oN=H4(),jv=Kf(),sN=K4.extname,Z4=jv.mime,cN=K4.resolve,uN=qv(),lr=Object.create($I.ServerResponse.prototype);Y4.exports=lr;var lN=/;\s*charset\s*=/;lr.status=function(e){return(typeof e=="string"||Math.floor(e)!==e)&&e>99&&e<1e3&&hn("res.status("+JSON.stringify(e)+"): use res.status("+Math.floor(e)+") instead"),this.statusCode=e,this};lr.links=function(t){var e=this.get("Link")||"";return e&&(e+=", "),this.set("Link",e+Object.keys(t).map(function(r){return"<"+t[r]+'>; rel="'+r+'"'}).join(", "))};lr.send=function(e){var r=e,n,i=this.req,a,o=this.app;switch(arguments.length===2&&(typeof arguments[0]!="number"&&typeof arguments[1]=="number"?(hn("res.send(body, status): Use res.status(status).send(body) instead"),this.statusCode=arguments[1]):(hn("res.send(status, body): Use res.status(status).send(body) instead"),this.statusCode=arguments[0],r=arguments[1])),typeof r=="number"&&arguments.length===1&&(this.get("Content-Type")||this.type("txt"),hn("res.send(status): Use res.sendStatus(status) instead"),this.statusCode=r,r=rd.message[r]),typeof r){case"string":this.get("Content-Type")||this.type("html");break;case"boolean":case"number":case"object":if(r===null)r="";else if(Nu.isBuffer(r))this.get("Content-Type")||this.type("bin");else return this.json(r);break}typeof r=="string"&&(n="utf8",a=this.get("Content-Type"),typeof a=="string"&&this.set("Content-Type",aN(a,"utf-8")));var c=o.get("etag fn"),u=!this.get("ETag")&&typeof c=="function",s;r!==void 0&&(Nu.isBuffer(r)?s=r.length:!u&&r.length<1e3?s=Nu.byteLength(r,n):(r=Nu.from(r,n),n=void 0,s=r.length),this.set("Content-Length",s));var f;return u&&s!==void 0&&(f=c(r,n))&&this.set("ETag",f),i.fresh&&(this.statusCode=304),(this.statusCode===204||this.statusCode===304)&&(this.removeHeader("Content-Type"),this.removeHeader("Content-Length"),this.removeHeader("Transfer-Encoding"),r=""),this.statusCode===205&&(this.set("Content-Length","0"),this.removeHeader("Transfer-Encoding"),r=""),i.method==="HEAD"?this.end():this.end(r,n),this};lr.json=function(e){var r=e;arguments.length===2&&(typeof arguments[1]=="number"?(hn("res.json(obj, status): Use res.status(status).json(obj) instead"),this.statusCode=arguments[1]):(hn("res.json(status, obj): Use res.status(status).json(obj) instead"),this.statusCode=arguments[0],r=arguments[1]));var n=this.app,i=n.get("json escape"),a=n.get("json replacer"),o=n.get("json spaces"),c=W4(r,a,o,i);return this.get("Content-Type")||this.set("Content-Type","application/json"),this.send(c)};lr.jsonp=function(e){var r=e;arguments.length===2&&(typeof arguments[1]=="number"?(hn("res.jsonp(obj, status): Use res.status(status).jsonp(obj) instead"),this.statusCode=arguments[1]):(hn("res.jsonp(status, obj): Use res.status(status).jsonp(obj) instead"),this.statusCode=arguments[0],r=arguments[1]));var n=this.app,i=n.get("json escape"),a=n.get("json replacer"),o=n.get("json spaces"),c=W4(r,a,o,i),u=this.req.query[n.get("jsonp callback name")];return this.get("Content-Type")||(this.set("X-Content-Type-Options","nosniff"),this.set("Content-Type","application/json")),Array.isArray(u)&&(u=u[0]),typeof u=="string"&&u.length!==0&&(this.set("X-Content-Type-Options","nosniff"),this.set("Content-Type","text/javascript"),u=u.replace(/[^\[\]\w$.]/g,""),c===void 0?c="":typeof c=="string"&&(c=c.replace(/\u2028/g,"\\u2028").replace(/\u2029/g,"\\u2029")),c="/**/ typeof "+u+" === 'function' && "+u+"("+c+");"),this.send(c)};lr.sendStatus=function(e){var r=rd.message[e]||String(e);return this.statusCode=e,this.type("txt"),this.send(r)};lr.sendFile=function(e,r,n){var i=n,a=this.req,o=this,c=a.next,u=r||{};if(!e)throw new TypeError("path argument is required to res.sendFile");if(typeof e!="string")throw new TypeError("path must be a string to res.sendFile");if(typeof r=="function"&&(i=r,u={}),!u.root&&!eN(e))throw new TypeError("path must be absolute or specify root to res.sendFile");var s=encodeURI(e),f=jv(a,s,u);Q4(o,f,u,function(m){if(i)return i(m);if(m&&m.code==="EISDIR")return c();m&&m.code!=="ECONNABORTED"&&m.syscall!=="write"&&c(m)})};lr.sendfile=function(t,e,r){var n=r,i=this.req,a=this,o=i.next,c=e||{};typeof e=="function"&&(n=e,c={});var u=jv(i,t,c);Q4(a,u,c,function(s){if(n)return n(s);if(s&&s.code==="EISDIR")return o();s&&s.code!=="ECONNABORTED"&&s.syscall!=="write"&&o(s)})};lr.sendfile=hn.function(lr.sendfile,"res.sendfile: Use res.sendFile instead");lr.download=function(e,r,n,i){var a=i,o=r,c=n||null;typeof r=="function"?(a=r,o=null,c=null):typeof n=="function"&&(a=n,c=null),typeof r=="object"&&(typeof n=="function"||n===void 0)&&(o=null,c=r);var u={"Content-Disposition":X4(o||e)};if(c&&c.headers)for(var s=Object.keys(c.headers),f=0;f0?e.accepts(n):!1;return this.vary("Accept"),i?(this.set("Content-Type",nN(i).value),t[i](e,this,r)):t.default?t.default(e,this,r):r(QI(406,{types:iN(n).map(function(a){return a.value})})),this};lr.attachment=function(e){return e&&this.type(sN(e)),this.set("Content-Disposition",X4(e)),this};lr.append=function(e,r){var n=this.get(e),i=r;return n&&(i=Array.isArray(n)?n.concat(r):Array.isArray(r)?[n].concat(r):[n,r]),this.set(e,i)};lr.set=lr.header=function(e,r){if(arguments.length===2){var n=Array.isArray(r)?r.map(String):String(r);if(e.toLowerCase()==="content-type"){if(Array.isArray(n))throw new TypeError("Content-Type cannot be set to an Array");if(!lN.test(n)){var i=Z4.charsets.lookup(n.split(";")[0]);i&&(n+="; charset="+i.toLowerCase())}}this.setHeader(e,n)}else for(var a in e)this.set(a,e[a]);return this};lr.get=function(t){return this.getHeader(t)};lr.clearCookie=function(e,r){var n=V4({expires:new Date(1),path:"/"},r);return this.cookie(e,"",n)};lr.cookie=function(t,e,r){var n=V4({},r),i=this.req.secret,a=n.signed;if(a&&!i)throw new Error('cookieParser("secret") required for signed cookies');var o=typeof e=="object"?"j:"+JSON.stringify(e):String(e);if(a&&(o="s:"+tN(o,i)),n.maxAge!=null){var c=n.maxAge-0;isNaN(c)||(n.expires=new Date(Date.now()+c),n.maxAge=Math.floor(c/1e3))}return n.path==null&&(n.path="/"),this.append("Set-Cookie",oN.serialize(t,String(o),n)),this};lr.location=function(e){var r=e;return e==="back"&&(r=this.req.get("Referrer")||"/"),this.set("Location",WI(r))};lr.redirect=function(e){var r=e,n,i=302;arguments.length===2&&(typeof arguments[0]=="number"?(i=arguments[0],r=arguments[1]):(hn("res.redirect(url, status): Use res.redirect(status, url) instead"),i=arguments[1])),r=this.location(r).get("Location"),this.format({text:function(){n=rd.message[i]+". Redirecting to "+r},html:function(){var a=YI(r);n="

"+rd.message[i]+'. Redirecting to '+a+"

"},default:function(){n=""}}),this.statusCode=i,this.set("Content-Length",Nu.byteLength(n)),this.req.method==="HEAD"?this.end():this.end(n)};lr.vary=function(t){return!t||Array.isArray(t)&&!t.length?(hn("res.vary(): Provide a field name"),this):(uN(this,t),this)};lr.render=function(e,r,n){var i=this.req.app,a=n,o=r||{},c=this.req,u=this;typeof r=="function"&&(a=r,o={}),o._locals=u.locals,a=a||function(s,f){if(s)return c.next(s);u.send(f)},i.render(e,o,a)};function Q4(t,e,r,n){var i=!1,a;function o(){if(!i){i=!0;var T=new Error("Request aborted");T.code="ECONNABORTED",n(T)}}function c(){if(!i){i=!0;var T=new Error("EISDIR, read");T.code="EISDIR",n(T)}}function u(T){i||(i=!0,n(T))}function s(){i||(i=!0,n())}function f(){a=!1}function m(T){if(T&&T.code==="ECONNRESET")return o();if(T)return u(T);i||setImmediate(function(){if(a!==!1&&!i){o();return}i||(i=!0,n())})}function w(){a=!0}e.on("directory",c),e.on("end",s),e.on("error",u),e.on("file",f),e.on("stream",w),rN(t,m),r.headers&&e.on("headers",function(A){for(var O=r.headers,B=Object.keys(O),F=0;F&]/g,function(a){switch(a.charCodeAt(0)){case 60:return"\\u003c";case 62:return"\\u003e";case 38:return"\\u0026";default:return a}})),i}});var t6=P((E$,Hv)=>{"use strict";var fN=xu(),e6=yu(),Uv=bs(),dN=require("path").resolve,r6=Kf(),pN=require("url");Hv.exports=hN;Hv.exports.mime=r6.mime;function hN(t,e){if(!t)throw new TypeError("root path required");if(typeof t!="string")throw new TypeError("root path must be a string");var r=Object.create(e||null),n=r.fallthrough!==!1,i=r.redirect!==!1,a=r.setHeaders;if(a&&typeof a!="function")throw new TypeError("option setHeaders must be function");r.maxage=r.maxage||r.maxAge||0,r.root=dN(t);var o=i?gN():bN();return function(u,s,f){if(u.method!=="GET"&&u.method!=="HEAD"){if(n)return f();s.statusCode=405,s.setHeader("Allow","GET, HEAD"),s.setHeader("Content-Length","0"),s.end();return}var m=!n,w=Uv.original(u),T=Uv(u).pathname;T==="/"&&w.pathname.substr(-1)!=="/"&&(T="");var A=r6(u,T,r);A.on("directory",o),a&&A.on("headers",a),n&&A.on("file",function(){m=!0}),A.on("error",function(B){if(m||!(B.statusCode<500)){f(B);return}f()}),A.pipe(s)}}function vN(t){for(var e=0;e1?"/"+t.substr(e):t}function mN(t,e){return` + + + +`+t+` + + +
`+e+`
+ + +`}function bN(){return function(){this.error(404)}}function gN(){return function(e){if(this.hasTrailingSlash()){this.error(404);return}var r=Uv.original(this.req);r.path=null,r.pathname=vN(r.pathname+"/");var n=fN(pN.format(r)),i=mN("Redirecting",'Redirecting to '+e6(n)+"");e.statusCode=301,e.setHeader("Content-Type","text/html; charset=UTF-8"),e.setHeader("Content-Length",Buffer.byteLength(i)),e.setHeader("Content-Security-Policy","default-src 'none'"),e.setHeader("X-Content-Type-Options","nosniff"),e.setHeader("Location",n),e.end(i)}}});var c6=P((St,s6)=>{"use strict";var td=t8(),xN=require("events").EventEmitter,n6=i8(),i6=p4(),yN=sv(),wN=uv(),a6=J4(),o6=$4();St=s6.exports=AN;function AN(){var t=function(e,r,n){t.handle(e,r,n)};return n6(t,xN.prototype,!1),n6(t,i6,!1),t.request=Object.create(a6,{app:{configurable:!0,enumerable:!0,writable:!0,value:t}}),t.response=Object.create(o6,{app:{configurable:!0,enumerable:!0,writable:!0,value:t}}),t.init(),t}St.application=i6;St.request=a6;St.response=o6;St.Route=yN;St.Router=wN;St.json=td.json;St.query=lv();St.raw=td.raw;St.static=t6();St.text=td.text;St.urlencoded=td.urlencoded;var EN=["bodyParser","compress","cookieSession","session","logger","cookieParser","favicon","responseTime","errorHandler","timeout","methodOverride","vhost","csrf","directory","limit","multipart","staticCache"];EN.forEach(function(t){Object.defineProperty(St,t,{get:function(){throw new Error("Most middleware (like "+t+") is no longer bundled with Express and must be installed separately. Please see https://github.com/senchalabs/connect#middleware.")},configurable:!0})})});var mo=P((S$,u6)=>{"use strict";u6.exports=c6()});var d6=P((_$,f6)=>{"use strict";var l6=Object.getOwnPropertySymbols,SN=Object.prototype.hasOwnProperty,_N=Object.prototype.propertyIsEnumerable;function TN(t){if(t==null)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(t)}function kN(){try{if(!Object.assign)return!1;var t=new String("abc");if(t[5]="de",Object.getOwnPropertyNames(t)[0]==="5")return!1;for(var e={},r=0;r<10;r++)e["_"+String.fromCharCode(r)]=r;var n=Object.getOwnPropertyNames(e).map(function(a){return e[a]});if(n.join("")!=="0123456789")return!1;var i={};return"abcdefghijklmnopqrst".split("").forEach(function(a){i[a]=a}),Object.keys(Object.assign({},i)).join("")==="abcdefghijklmnopqrst"}catch{return!1}}f6.exports=kN()?Object.assign:function(t,e){for(var r,n=TN(t),i,a=1;a{(function(){"use strict";var t=d6(),e=qv(),r={origin:"*",methods:"GET,HEAD,PUT,PATCH,POST,DELETE",preflightContinue:!1,optionsSuccessStatus:204};function n(A){return typeof A=="string"||A instanceof String}function i(A,O){if(Array.isArray(O)){for(var B=0;B{(function(t,e){"use strict";function r(b,l){if(!b)throw new Error(l||"Assertion failed")}function n(b,l){b.super_=l;var p=function(){};p.prototype=l.prototype,b.prototype=new p,b.prototype.constructor=b}function i(b,l,p){if(i.isBN(b))return b;this.negative=0,this.words=null,this.length=0,this.red=null,b!==null&&((l==="le"||l==="be")&&(p=l,l=10),this._init(b||0,l||10,p||"be"))}typeof t=="object"?t.exports=i:e.BN=i,i.BN=i,i.wordSize=26;var a;try{typeof window<"u"&&typeof window.Buffer<"u"?a=window.Buffer:a=require("buffer").Buffer}catch{}i.isBN=function(l){return l instanceof i?!0:l!==null&&typeof l=="object"&&l.constructor.wordSize===i.wordSize&&Array.isArray(l.words)},i.max=function(l,p){return l.cmp(p)>0?l:p},i.min=function(l,p){return l.cmp(p)<0?l:p},i.prototype._init=function(l,p,g){if(typeof l=="number")return this._initNumber(l,p,g);if(typeof l=="object")return this._initArray(l,p,g);p==="hex"&&(p=16),r(p===(p|0)&&p>=2&&p<=36),l=l.toString().replace(/\s+/g,"");var S=0;l[0]==="-"&&(S++,this.negative=1),S=0;S-=3)d=l[S]|l[S-1]<<8|l[S-2]<<16,this.words[x]|=d<>>26-y&67108863,y+=24,y>=26&&(y-=26,x++);else if(g==="le")for(S=0,x=0;S>>26-y&67108863,y+=24,y>=26&&(y-=26,x++);return this._strip()};function o(b,l){var p=b.charCodeAt(l);if(p>=48&&p<=57)return p-48;if(p>=65&&p<=70)return p-55;if(p>=97&&p<=102)return p-87;r(!1,"Invalid character in "+b)}function c(b,l,p){var g=o(b,p);return p-1>=l&&(g|=o(b,p-1)<<4),g}i.prototype._parseHex=function(l,p,g){this.length=Math.ceil((l.length-p)/6),this.words=new Array(this.length);for(var S=0;S=p;S-=2)y=c(l,p,S)<=18?(x-=18,d+=1,this.words[d]|=y>>>26):x+=8;else{var C=l.length-p;for(S=C%2===0?p+1:p;S=18?(x-=18,d+=1,this.words[d]|=y>>>26):x+=8}this._strip()};function u(b,l,p,g){for(var S=0,x=0,d=Math.min(b.length,p),y=l;y=49?x=C-49+10:C>=17?x=C-17+10:x=C,r(C>=0&&x1&&this.words[this.length-1]===0;)this.length--;return this._normSign()},i.prototype._normSign=function(){return this.length===1&&this.words[0]===0&&(this.negative=0),this},typeof Symbol<"u"&&typeof Symbol.for=="function")try{i.prototype[Symbol.for("nodejs.util.inspect.custom")]=f}catch{i.prototype.inspect=f}else i.prototype.inspect=f;function f(){return(this.red?""}var m=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],w=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],T=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];i.prototype.toString=function(l,p){l=l||10,p=p|0||1;var g;if(l===16||l==="hex"){g="";for(var S=0,x=0,d=0;d>>24-S&16777215,S+=2,S>=26&&(S-=26,d--),x!==0||d!==this.length-1?g=m[6-C.length]+C+g:g=C+g}for(x!==0&&(g=x.toString(16)+g);g.length%p!==0;)g="0"+g;return this.negative!==0&&(g="-"+g),g}if(l===(l|0)&&l>=2&&l<=36){var h=w[l],k=T[l];g="";var J=this.clone();for(J.negative=0;!J.isZero();){var _=J.modrn(k).toString(l);J=J.idivn(k),J.isZero()?g=_+g:g=m[h-_.length]+_+g}for(this.isZero()&&(g="0"+g);g.length%p!==0;)g="0"+g;return this.negative!==0&&(g="-"+g),g}r(!1,"Base should be between 2 and 36")},i.prototype.toNumber=function(){var l=this.words[0];return this.length===2?l+=this.words[1]*67108864:this.length===3&&this.words[2]===1?l+=4503599627370496+this.words[1]*67108864:this.length>2&&r(!1,"Number can only safely store up to 53 bits"),this.negative!==0?-l:l},i.prototype.toJSON=function(){return this.toString(16,2)},a&&(i.prototype.toBuffer=function(l,p){return this.toArrayLike(a,l,p)}),i.prototype.toArray=function(l,p){return this.toArrayLike(Array,l,p)};var A=function(l,p){return l.allocUnsafe?l.allocUnsafe(p):new l(p)};i.prototype.toArrayLike=function(l,p,g){this._strip();var S=this.byteLength(),x=g||Math.max(1,S);r(S<=x,"byte array longer than desired length"),r(x>0,"Requested array length <= 0");var d=A(l,x),y=p==="le"?"LE":"BE";return this["_toArrayLike"+y](d,S),d},i.prototype._toArrayLikeLE=function(l,p){for(var g=0,S=0,x=0,d=0;x>8&255),g>16&255),d===6?(g>24&255),S=0,d=0):(S=y>>>24,d+=2)}if(g=0&&(l[g--]=y>>8&255),g>=0&&(l[g--]=y>>16&255),d===6?(g>=0&&(l[g--]=y>>24&255),S=0,d=0):(S=y>>>24,d+=2)}if(g>=0)for(l[g--]=S;g>=0;)l[g--]=0},Math.clz32?i.prototype._countBits=function(l){return 32-Math.clz32(l)}:i.prototype._countBits=function(l){var p=l,g=0;return p>=4096&&(g+=13,p>>>=13),p>=64&&(g+=7,p>>>=7),p>=8&&(g+=4,p>>>=4),p>=2&&(g+=2,p>>>=2),g+p},i.prototype._zeroBits=function(l){if(l===0)return 26;var p=l,g=0;return(p&8191)===0&&(g+=13,p>>>=13),(p&127)===0&&(g+=7,p>>>=7),(p&15)===0&&(g+=4,p>>>=4),(p&3)===0&&(g+=2,p>>>=2),(p&1)===0&&g++,g},i.prototype.bitLength=function(){var l=this.words[this.length-1],p=this._countBits(l);return(this.length-1)*26+p};function O(b){for(var l=new Array(b.bitLength()),p=0;p>>S&1}return l}i.prototype.zeroBits=function(){if(this.isZero())return 0;for(var l=0,p=0;pl.length?this.clone().ior(l):l.clone().ior(this)},i.prototype.uor=function(l){return this.length>l.length?this.clone().iuor(l):l.clone().iuor(this)},i.prototype.iuand=function(l){var p;this.length>l.length?p=l:p=this;for(var g=0;gl.length?this.clone().iand(l):l.clone().iand(this)},i.prototype.uand=function(l){return this.length>l.length?this.clone().iuand(l):l.clone().iuand(this)},i.prototype.iuxor=function(l){var p,g;this.length>l.length?(p=this,g=l):(p=l,g=this);for(var S=0;Sl.length?this.clone().ixor(l):l.clone().ixor(this)},i.prototype.uxor=function(l){return this.length>l.length?this.clone().iuxor(l):l.clone().iuxor(this)},i.prototype.inotn=function(l){r(typeof l=="number"&&l>=0);var p=Math.ceil(l/26)|0,g=l%26;this._expand(p),g>0&&p--;for(var S=0;S0&&(this.words[S]=~this.words[S]&67108863>>26-g),this._strip()},i.prototype.notn=function(l){return this.clone().inotn(l)},i.prototype.setn=function(l,p){r(typeof l=="number"&&l>=0);var g=l/26|0,S=l%26;return this._expand(g+1),p?this.words[g]=this.words[g]|1<l.length?(g=this,S=l):(g=l,S=this);for(var x=0,d=0;d>>26;for(;x!==0&&d>>26;if(this.length=g.length,x!==0)this.words[this.length]=x,this.length++;else if(g!==this)for(;dl.length?this.clone().iadd(l):l.clone().iadd(this)},i.prototype.isub=function(l){if(l.negative!==0){l.negative=0;var p=this.iadd(l);return l.negative=1,p._normSign()}else if(this.negative!==0)return this.negative=0,this.iadd(l),this.negative=1,this._normSign();var g=this.cmp(l);if(g===0)return this.negative=0,this.length=1,this.words[0]=0,this;var S,x;g>0?(S=this,x=l):(S=l,x=this);for(var d=0,y=0;y>26,this.words[y]=p&67108863;for(;d!==0&&y>26,this.words[y]=p&67108863;if(d===0&&y>>26,J=C&67108863,_=Math.min(h,l.length-1),L=Math.max(0,h-b.length+1);L<=_;L++){var N=h-L|0;S=b.words[N]|0,x=l.words[L]|0,d=S*x+J,k+=d/67108864|0,J=d&67108863}p.words[h]=J|0,C=k|0}return C!==0?p.words[h]=C|0:p.length--,p._strip()}var F=function(l,p,g){var S=l.words,x=p.words,d=g.words,y=0,C,h,k,J=S[0]|0,_=J&8191,L=J>>>13,N=S[1]|0,q=N&8191,H=N>>>13,W=S[2]|0,V=W&8191,K=W>>>13,ur=S[3]|0,Q=ur&8191,Y=ur>>>13,_n=S[4]|0,ne=_n&8191,ie=_n>>>13,Tn=S[5]|0,ae=Tn&8191,oe=Tn>>>13,kn=S[6]|0,se=kn&8191,ce=kn>>>13,Cn=S[7]|0,ue=Cn&8191,le=Cn>>>13,On=S[8]|0,fe=On&8191,de=On>>>13,Pn=S[9]|0,pe=Pn&8191,he=Pn>>>13,Mn=x[0]|0,ve=Mn&8191,me=Mn>>>13,Bn=x[1]|0,be=Bn&8191,ge=Bn>>>13,Fn=x[2]|0,xe=Fn&8191,ye=Fn>>>13,Ln=x[3]|0,we=Ln&8191,Ae=Ln>>>13,Rn=x[4]|0,Ee=Rn&8191,Se=Rn>>>13,In=x[5]|0,_e=In&8191,Te=In>>>13,Nn=x[6]|0,ke=Nn&8191,Ce=Nn>>>13,Dn=x[7]|0,Oe=Dn&8191,Pe=Dn>>>13,Jn=x[8]|0,Me=Jn&8191,Be=Jn>>>13,ln=x[9]|0,tr=ln&8191,nr=ln>>>13;g.negative=l.negative^p.negative,g.length=19,C=Math.imul(_,ve),h=Math.imul(_,me),h=h+Math.imul(L,ve)|0,k=Math.imul(L,me);var It=(y+C|0)+((h&8191)<<13)|0;y=(k+(h>>>13)|0)+(It>>>26)|0,It&=67108863,C=Math.imul(q,ve),h=Math.imul(q,me),h=h+Math.imul(H,ve)|0,k=Math.imul(H,me),C=C+Math.imul(_,be)|0,h=h+Math.imul(_,ge)|0,h=h+Math.imul(L,be)|0,k=k+Math.imul(L,ge)|0;var Nt=(y+C|0)+((h&8191)<<13)|0;y=(k+(h>>>13)|0)+(Nt>>>26)|0,Nt&=67108863,C=Math.imul(V,ve),h=Math.imul(V,me),h=h+Math.imul(K,ve)|0,k=Math.imul(K,me),C=C+Math.imul(q,be)|0,h=h+Math.imul(q,ge)|0,h=h+Math.imul(H,be)|0,k=k+Math.imul(H,ge)|0,C=C+Math.imul(_,xe)|0,h=h+Math.imul(_,ye)|0,h=h+Math.imul(L,xe)|0,k=k+Math.imul(L,ye)|0;var Dt=(y+C|0)+((h&8191)<<13)|0;y=(k+(h>>>13)|0)+(Dt>>>26)|0,Dt&=67108863,C=Math.imul(Q,ve),h=Math.imul(Q,me),h=h+Math.imul(Y,ve)|0,k=Math.imul(Y,me),C=C+Math.imul(V,be)|0,h=h+Math.imul(V,ge)|0,h=h+Math.imul(K,be)|0,k=k+Math.imul(K,ge)|0,C=C+Math.imul(q,xe)|0,h=h+Math.imul(q,ye)|0,h=h+Math.imul(H,xe)|0,k=k+Math.imul(H,ye)|0,C=C+Math.imul(_,we)|0,h=h+Math.imul(_,Ae)|0,h=h+Math.imul(L,we)|0,k=k+Math.imul(L,Ae)|0;var Jt=(y+C|0)+((h&8191)<<13)|0;y=(k+(h>>>13)|0)+(Jt>>>26)|0,Jt&=67108863,C=Math.imul(ne,ve),h=Math.imul(ne,me),h=h+Math.imul(ie,ve)|0,k=Math.imul(ie,me),C=C+Math.imul(Q,be)|0,h=h+Math.imul(Q,ge)|0,h=h+Math.imul(Y,be)|0,k=k+Math.imul(Y,ge)|0,C=C+Math.imul(V,xe)|0,h=h+Math.imul(V,ye)|0,h=h+Math.imul(K,xe)|0,k=k+Math.imul(K,ye)|0,C=C+Math.imul(q,we)|0,h=h+Math.imul(q,Ae)|0,h=h+Math.imul(H,we)|0,k=k+Math.imul(H,Ae)|0,C=C+Math.imul(_,Ee)|0,h=h+Math.imul(_,Se)|0,h=h+Math.imul(L,Ee)|0,k=k+Math.imul(L,Se)|0;var qt=(y+C|0)+((h&8191)<<13)|0;y=(k+(h>>>13)|0)+(qt>>>26)|0,qt&=67108863,C=Math.imul(ae,ve),h=Math.imul(ae,me),h=h+Math.imul(oe,ve)|0,k=Math.imul(oe,me),C=C+Math.imul(ne,be)|0,h=h+Math.imul(ne,ge)|0,h=h+Math.imul(ie,be)|0,k=k+Math.imul(ie,ge)|0,C=C+Math.imul(Q,xe)|0,h=h+Math.imul(Q,ye)|0,h=h+Math.imul(Y,xe)|0,k=k+Math.imul(Y,ye)|0,C=C+Math.imul(V,we)|0,h=h+Math.imul(V,Ae)|0,h=h+Math.imul(K,we)|0,k=k+Math.imul(K,Ae)|0,C=C+Math.imul(q,Ee)|0,h=h+Math.imul(q,Se)|0,h=h+Math.imul(H,Ee)|0,k=k+Math.imul(H,Se)|0,C=C+Math.imul(_,_e)|0,h=h+Math.imul(_,Te)|0,h=h+Math.imul(L,_e)|0,k=k+Math.imul(L,Te)|0;var Ha=(y+C|0)+((h&8191)<<13)|0;y=(k+(h>>>13)|0)+(Ha>>>26)|0,Ha&=67108863,C=Math.imul(se,ve),h=Math.imul(se,me),h=h+Math.imul(ce,ve)|0,k=Math.imul(ce,me),C=C+Math.imul(ae,be)|0,h=h+Math.imul(ae,ge)|0,h=h+Math.imul(oe,be)|0,k=k+Math.imul(oe,ge)|0,C=C+Math.imul(ne,xe)|0,h=h+Math.imul(ne,ye)|0,h=h+Math.imul(ie,xe)|0,k=k+Math.imul(ie,ye)|0,C=C+Math.imul(Q,we)|0,h=h+Math.imul(Q,Ae)|0,h=h+Math.imul(Y,we)|0,k=k+Math.imul(Y,Ae)|0,C=C+Math.imul(V,Ee)|0,h=h+Math.imul(V,Se)|0,h=h+Math.imul(K,Ee)|0,k=k+Math.imul(K,Se)|0,C=C+Math.imul(q,_e)|0,h=h+Math.imul(q,Te)|0,h=h+Math.imul(H,_e)|0,k=k+Math.imul(H,Te)|0,C=C+Math.imul(_,ke)|0,h=h+Math.imul(_,Ce)|0,h=h+Math.imul(L,ke)|0,k=k+Math.imul(L,Ce)|0;var za=(y+C|0)+((h&8191)<<13)|0;y=(k+(h>>>13)|0)+(za>>>26)|0,za&=67108863,C=Math.imul(ue,ve),h=Math.imul(ue,me),h=h+Math.imul(le,ve)|0,k=Math.imul(le,me),C=C+Math.imul(se,be)|0,h=h+Math.imul(se,ge)|0,h=h+Math.imul(ce,be)|0,k=k+Math.imul(ce,ge)|0,C=C+Math.imul(ae,xe)|0,h=h+Math.imul(ae,ye)|0,h=h+Math.imul(oe,xe)|0,k=k+Math.imul(oe,ye)|0,C=C+Math.imul(ne,we)|0,h=h+Math.imul(ne,Ae)|0,h=h+Math.imul(ie,we)|0,k=k+Math.imul(ie,Ae)|0,C=C+Math.imul(Q,Ee)|0,h=h+Math.imul(Q,Se)|0,h=h+Math.imul(Y,Ee)|0,k=k+Math.imul(Y,Se)|0,C=C+Math.imul(V,_e)|0,h=h+Math.imul(V,Te)|0,h=h+Math.imul(K,_e)|0,k=k+Math.imul(K,Te)|0,C=C+Math.imul(q,ke)|0,h=h+Math.imul(q,Ce)|0,h=h+Math.imul(H,ke)|0,k=k+Math.imul(H,Ce)|0,C=C+Math.imul(_,Oe)|0,h=h+Math.imul(_,Pe)|0,h=h+Math.imul(L,Oe)|0,k=k+Math.imul(L,Pe)|0;var Ga=(y+C|0)+((h&8191)<<13)|0;y=(k+(h>>>13)|0)+(Ga>>>26)|0,Ga&=67108863,C=Math.imul(fe,ve),h=Math.imul(fe,me),h=h+Math.imul(de,ve)|0,k=Math.imul(de,me),C=C+Math.imul(ue,be)|0,h=h+Math.imul(ue,ge)|0,h=h+Math.imul(le,be)|0,k=k+Math.imul(le,ge)|0,C=C+Math.imul(se,xe)|0,h=h+Math.imul(se,ye)|0,h=h+Math.imul(ce,xe)|0,k=k+Math.imul(ce,ye)|0,C=C+Math.imul(ae,we)|0,h=h+Math.imul(ae,Ae)|0,h=h+Math.imul(oe,we)|0,k=k+Math.imul(oe,Ae)|0,C=C+Math.imul(ne,Ee)|0,h=h+Math.imul(ne,Se)|0,h=h+Math.imul(ie,Ee)|0,k=k+Math.imul(ie,Se)|0,C=C+Math.imul(Q,_e)|0,h=h+Math.imul(Q,Te)|0,h=h+Math.imul(Y,_e)|0,k=k+Math.imul(Y,Te)|0,C=C+Math.imul(V,ke)|0,h=h+Math.imul(V,Ce)|0,h=h+Math.imul(K,ke)|0,k=k+Math.imul(K,Ce)|0,C=C+Math.imul(q,Oe)|0,h=h+Math.imul(q,Pe)|0,h=h+Math.imul(H,Oe)|0,k=k+Math.imul(H,Pe)|0,C=C+Math.imul(_,Me)|0,h=h+Math.imul(_,Be)|0,h=h+Math.imul(L,Me)|0,k=k+Math.imul(L,Be)|0;var Xa=(y+C|0)+((h&8191)<<13)|0;y=(k+(h>>>13)|0)+(Xa>>>26)|0,Xa&=67108863,C=Math.imul(pe,ve),h=Math.imul(pe,me),h=h+Math.imul(he,ve)|0,k=Math.imul(he,me),C=C+Math.imul(fe,be)|0,h=h+Math.imul(fe,ge)|0,h=h+Math.imul(de,be)|0,k=k+Math.imul(de,ge)|0,C=C+Math.imul(ue,xe)|0,h=h+Math.imul(ue,ye)|0,h=h+Math.imul(le,xe)|0,k=k+Math.imul(le,ye)|0,C=C+Math.imul(se,we)|0,h=h+Math.imul(se,Ae)|0,h=h+Math.imul(ce,we)|0,k=k+Math.imul(ce,Ae)|0,C=C+Math.imul(ae,Ee)|0,h=h+Math.imul(ae,Se)|0,h=h+Math.imul(oe,Ee)|0,k=k+Math.imul(oe,Se)|0,C=C+Math.imul(ne,_e)|0,h=h+Math.imul(ne,Te)|0,h=h+Math.imul(ie,_e)|0,k=k+Math.imul(ie,Te)|0,C=C+Math.imul(Q,ke)|0,h=h+Math.imul(Q,Ce)|0,h=h+Math.imul(Y,ke)|0,k=k+Math.imul(Y,Ce)|0,C=C+Math.imul(V,Oe)|0,h=h+Math.imul(V,Pe)|0,h=h+Math.imul(K,Oe)|0,k=k+Math.imul(K,Pe)|0,C=C+Math.imul(q,Me)|0,h=h+Math.imul(q,Be)|0,h=h+Math.imul(H,Me)|0,k=k+Math.imul(H,Be)|0,C=C+Math.imul(_,tr)|0,h=h+Math.imul(_,nr)|0,h=h+Math.imul(L,tr)|0,k=k+Math.imul(L,nr)|0;var Ka=(y+C|0)+((h&8191)<<13)|0;y=(k+(h>>>13)|0)+(Ka>>>26)|0,Ka&=67108863,C=Math.imul(pe,be),h=Math.imul(pe,ge),h=h+Math.imul(he,be)|0,k=Math.imul(he,ge),C=C+Math.imul(fe,xe)|0,h=h+Math.imul(fe,ye)|0,h=h+Math.imul(de,xe)|0,k=k+Math.imul(de,ye)|0,C=C+Math.imul(ue,we)|0,h=h+Math.imul(ue,Ae)|0,h=h+Math.imul(le,we)|0,k=k+Math.imul(le,Ae)|0,C=C+Math.imul(se,Ee)|0,h=h+Math.imul(se,Se)|0,h=h+Math.imul(ce,Ee)|0,k=k+Math.imul(ce,Se)|0,C=C+Math.imul(ae,_e)|0,h=h+Math.imul(ae,Te)|0,h=h+Math.imul(oe,_e)|0,k=k+Math.imul(oe,Te)|0,C=C+Math.imul(ne,ke)|0,h=h+Math.imul(ne,Ce)|0,h=h+Math.imul(ie,ke)|0,k=k+Math.imul(ie,Ce)|0,C=C+Math.imul(Q,Oe)|0,h=h+Math.imul(Q,Pe)|0,h=h+Math.imul(Y,Oe)|0,k=k+Math.imul(Y,Pe)|0,C=C+Math.imul(V,Me)|0,h=h+Math.imul(V,Be)|0,h=h+Math.imul(K,Me)|0,k=k+Math.imul(K,Be)|0,C=C+Math.imul(q,tr)|0,h=h+Math.imul(q,nr)|0,h=h+Math.imul(H,tr)|0,k=k+Math.imul(H,nr)|0;var Va=(y+C|0)+((h&8191)<<13)|0;y=(k+(h>>>13)|0)+(Va>>>26)|0,Va&=67108863,C=Math.imul(pe,xe),h=Math.imul(pe,ye),h=h+Math.imul(he,xe)|0,k=Math.imul(he,ye),C=C+Math.imul(fe,we)|0,h=h+Math.imul(fe,Ae)|0,h=h+Math.imul(de,we)|0,k=k+Math.imul(de,Ae)|0,C=C+Math.imul(ue,Ee)|0,h=h+Math.imul(ue,Se)|0,h=h+Math.imul(le,Ee)|0,k=k+Math.imul(le,Se)|0,C=C+Math.imul(se,_e)|0,h=h+Math.imul(se,Te)|0,h=h+Math.imul(ce,_e)|0,k=k+Math.imul(ce,Te)|0,C=C+Math.imul(ae,ke)|0,h=h+Math.imul(ae,Ce)|0,h=h+Math.imul(oe,ke)|0,k=k+Math.imul(oe,Ce)|0,C=C+Math.imul(ne,Oe)|0,h=h+Math.imul(ne,Pe)|0,h=h+Math.imul(ie,Oe)|0,k=k+Math.imul(ie,Pe)|0,C=C+Math.imul(Q,Me)|0,h=h+Math.imul(Q,Be)|0,h=h+Math.imul(Y,Me)|0,k=k+Math.imul(Y,Be)|0,C=C+Math.imul(V,tr)|0,h=h+Math.imul(V,nr)|0,h=h+Math.imul(K,tr)|0,k=k+Math.imul(K,nr)|0;var Za=(y+C|0)+((h&8191)<<13)|0;y=(k+(h>>>13)|0)+(Za>>>26)|0,Za&=67108863,C=Math.imul(pe,we),h=Math.imul(pe,Ae),h=h+Math.imul(he,we)|0,k=Math.imul(he,Ae),C=C+Math.imul(fe,Ee)|0,h=h+Math.imul(fe,Se)|0,h=h+Math.imul(de,Ee)|0,k=k+Math.imul(de,Se)|0,C=C+Math.imul(ue,_e)|0,h=h+Math.imul(ue,Te)|0,h=h+Math.imul(le,_e)|0,k=k+Math.imul(le,Te)|0,C=C+Math.imul(se,ke)|0,h=h+Math.imul(se,Ce)|0,h=h+Math.imul(ce,ke)|0,k=k+Math.imul(ce,Ce)|0,C=C+Math.imul(ae,Oe)|0,h=h+Math.imul(ae,Pe)|0,h=h+Math.imul(oe,Oe)|0,k=k+Math.imul(oe,Pe)|0,C=C+Math.imul(ne,Me)|0,h=h+Math.imul(ne,Be)|0,h=h+Math.imul(ie,Me)|0,k=k+Math.imul(ie,Be)|0,C=C+Math.imul(Q,tr)|0,h=h+Math.imul(Q,nr)|0,h=h+Math.imul(Y,tr)|0,k=k+Math.imul(Y,nr)|0;var Qa=(y+C|0)+((h&8191)<<13)|0;y=(k+(h>>>13)|0)+(Qa>>>26)|0,Qa&=67108863,C=Math.imul(pe,Ee),h=Math.imul(pe,Se),h=h+Math.imul(he,Ee)|0,k=Math.imul(he,Se),C=C+Math.imul(fe,_e)|0,h=h+Math.imul(fe,Te)|0,h=h+Math.imul(de,_e)|0,k=k+Math.imul(de,Te)|0,C=C+Math.imul(ue,ke)|0,h=h+Math.imul(ue,Ce)|0,h=h+Math.imul(le,ke)|0,k=k+Math.imul(le,Ce)|0,C=C+Math.imul(se,Oe)|0,h=h+Math.imul(se,Pe)|0,h=h+Math.imul(ce,Oe)|0,k=k+Math.imul(ce,Pe)|0,C=C+Math.imul(ae,Me)|0,h=h+Math.imul(ae,Be)|0,h=h+Math.imul(oe,Me)|0,k=k+Math.imul(oe,Be)|0,C=C+Math.imul(ne,tr)|0,h=h+Math.imul(ne,nr)|0,h=h+Math.imul(ie,tr)|0,k=k+Math.imul(ie,nr)|0;var Wa=(y+C|0)+((h&8191)<<13)|0;y=(k+(h>>>13)|0)+(Wa>>>26)|0,Wa&=67108863,C=Math.imul(pe,_e),h=Math.imul(pe,Te),h=h+Math.imul(he,_e)|0,k=Math.imul(he,Te),C=C+Math.imul(fe,ke)|0,h=h+Math.imul(fe,Ce)|0,h=h+Math.imul(de,ke)|0,k=k+Math.imul(de,Ce)|0,C=C+Math.imul(ue,Oe)|0,h=h+Math.imul(ue,Pe)|0,h=h+Math.imul(le,Oe)|0,k=k+Math.imul(le,Pe)|0,C=C+Math.imul(se,Me)|0,h=h+Math.imul(se,Be)|0,h=h+Math.imul(ce,Me)|0,k=k+Math.imul(ce,Be)|0,C=C+Math.imul(ae,tr)|0,h=h+Math.imul(ae,nr)|0,h=h+Math.imul(oe,tr)|0,k=k+Math.imul(oe,nr)|0;var Ya=(y+C|0)+((h&8191)<<13)|0;y=(k+(h>>>13)|0)+(Ya>>>26)|0,Ya&=67108863,C=Math.imul(pe,ke),h=Math.imul(pe,Ce),h=h+Math.imul(he,ke)|0,k=Math.imul(he,Ce),C=C+Math.imul(fe,Oe)|0,h=h+Math.imul(fe,Pe)|0,h=h+Math.imul(de,Oe)|0,k=k+Math.imul(de,Pe)|0,C=C+Math.imul(ue,Me)|0,h=h+Math.imul(ue,Be)|0,h=h+Math.imul(le,Me)|0,k=k+Math.imul(le,Be)|0,C=C+Math.imul(se,tr)|0,h=h+Math.imul(se,nr)|0,h=h+Math.imul(ce,tr)|0,k=k+Math.imul(ce,nr)|0;var $a=(y+C|0)+((h&8191)<<13)|0;y=(k+(h>>>13)|0)+($a>>>26)|0,$a&=67108863,C=Math.imul(pe,Oe),h=Math.imul(pe,Pe),h=h+Math.imul(he,Oe)|0,k=Math.imul(he,Pe),C=C+Math.imul(fe,Me)|0,h=h+Math.imul(fe,Be)|0,h=h+Math.imul(de,Me)|0,k=k+Math.imul(de,Be)|0,C=C+Math.imul(ue,tr)|0,h=h+Math.imul(ue,nr)|0,h=h+Math.imul(le,tr)|0,k=k+Math.imul(le,nr)|0;var O0=(y+C|0)+((h&8191)<<13)|0;y=(k+(h>>>13)|0)+(O0>>>26)|0,O0&=67108863,C=Math.imul(pe,Me),h=Math.imul(pe,Be),h=h+Math.imul(he,Me)|0,k=Math.imul(he,Be),C=C+Math.imul(fe,tr)|0,h=h+Math.imul(fe,nr)|0,h=h+Math.imul(de,tr)|0,k=k+Math.imul(de,nr)|0;var P0=(y+C|0)+((h&8191)<<13)|0;y=(k+(h>>>13)|0)+(P0>>>26)|0,P0&=67108863,C=Math.imul(pe,tr),h=Math.imul(pe,nr),h=h+Math.imul(he,tr)|0,k=Math.imul(he,nr);var M0=(y+C|0)+((h&8191)<<13)|0;return y=(k+(h>>>13)|0)+(M0>>>26)|0,M0&=67108863,d[0]=It,d[1]=Nt,d[2]=Dt,d[3]=Jt,d[4]=qt,d[5]=Ha,d[6]=za,d[7]=Ga,d[8]=Xa,d[9]=Ka,d[10]=Va,d[11]=Za,d[12]=Qa,d[13]=Wa,d[14]=Ya,d[15]=$a,d[16]=O0,d[17]=P0,d[18]=M0,y!==0&&(d[19]=y,g.length++),g};Math.imul||(F=B);function I(b,l,p){p.negative=l.negative^b.negative,p.length=b.length+l.length;for(var g=0,S=0,x=0;x>>26)|0,S+=d>>>26,d&=67108863}p.words[x]=y,g=d,d=S}return g!==0?p.words[x]=g:p.length--,p._strip()}function D(b,l,p){return I(b,l,p)}i.prototype.mulTo=function(l,p){var g,S=this.length+l.length;return this.length===10&&l.length===10?g=F(this,l,p):S<63?g=B(this,l,p):S<1024?g=I(this,l,p):g=D(this,l,p),g};function z(b,l){this.x=b,this.y=l}z.prototype.makeRBT=function(l){for(var p=new Array(l),g=i.prototype._countBits(l)-1,S=0;S>=1;return S},z.prototype.permute=function(l,p,g,S,x,d){for(var y=0;y>>1)x++;return 1<>>13,g[2*d+1]=x&8191,x=x>>>13;for(d=2*p;d>=26,g+=x/67108864|0,g+=d>>>26,this.words[S]=d&67108863}return g!==0&&(this.words[S]=g,this.length++),p?this.ineg():this},i.prototype.muln=function(l){return this.clone().imuln(l)},i.prototype.sqr=function(){return this.mul(this)},i.prototype.isqr=function(){return this.imul(this.clone())},i.prototype.pow=function(l){var p=O(l);if(p.length===0)return new i(1);for(var g=this,S=0;S=0);var p=l%26,g=(l-p)/26,S=67108863>>>26-p<<26-p,x;if(p!==0){var d=0;for(x=0;x>>26-p}d&&(this.words[x]=d,this.length++)}if(g!==0){for(x=this.length-1;x>=0;x--)this.words[x+g]=this.words[x];for(x=0;x=0);var S;p?S=(p-p%26)/26:S=0;var x=l%26,d=Math.min((l-x)/26,this.length),y=67108863^67108863>>>x<d)for(this.length-=d,h=0;h=0&&(k!==0||h>=S);h--){var J=this.words[h]|0;this.words[h]=k<<26-x|J>>>x,k=J&y}return C&&k!==0&&(C.words[C.length++]=k),this.length===0&&(this.words[0]=0,this.length=1),this._strip()},i.prototype.ishrn=function(l,p,g){return r(this.negative===0),this.iushrn(l,p,g)},i.prototype.shln=function(l){return this.clone().ishln(l)},i.prototype.ushln=function(l){return this.clone().iushln(l)},i.prototype.shrn=function(l){return this.clone().ishrn(l)},i.prototype.ushrn=function(l){return this.clone().iushrn(l)},i.prototype.testn=function(l){r(typeof l=="number"&&l>=0);var p=l%26,g=(l-p)/26,S=1<=0);var p=l%26,g=(l-p)/26;if(r(this.negative===0,"imaskn works only with positive numbers"),this.length<=g)return this;if(p!==0&&g++,this.length=Math.min(g,this.length),p!==0){var S=67108863^67108863>>>p<=67108864;p++)this.words[p]-=67108864,p===this.length-1?this.words[p+1]=1:this.words[p+1]++;return this.length=Math.max(this.length,p+1),this},i.prototype.isubn=function(l){if(r(typeof l=="number"),r(l<67108864),l<0)return this.iaddn(-l);if(this.negative!==0)return this.negative=0,this.iaddn(l),this.negative=1,this;if(this.words[0]-=l,this.length===1&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var p=0;p>26)-(C/67108864|0),this.words[x+g]=d&67108863}for(;x>26,this.words[x+g]=d&67108863;if(y===0)return this._strip();for(r(y===-1),y=0,x=0;x>26,this.words[x]=d&67108863;return this.negative=1,this._strip()},i.prototype._wordDiv=function(l,p){var g=this.length-l.length,S=this.clone(),x=l,d=x.words[x.length-1]|0,y=this._countBits(d);g=26-y,g!==0&&(x=x.ushln(g),S.iushln(g),d=x.words[x.length-1]|0);var C=S.length-x.length,h;if(p!=="mod"){h=new i(null),h.length=C+1,h.words=new Array(h.length);for(var k=0;k=0;_--){var L=(S.words[x.length+_]|0)*67108864+(S.words[x.length+_-1]|0);for(L=Math.min(L/d|0,67108863),S._ishlnsubmul(x,L,_);S.negative!==0;)L--,S.negative=0,S._ishlnsubmul(x,1,_),S.isZero()||(S.negative^=1);h&&(h.words[_]=L)}return h&&h._strip(),S._strip(),p!=="div"&&g!==0&&S.iushrn(g),{div:h||null,mod:S}},i.prototype.divmod=function(l,p,g){if(r(!l.isZero()),this.isZero())return{div:new i(0),mod:new i(0)};var S,x,d;return this.negative!==0&&l.negative===0?(d=this.neg().divmod(l,p),p!=="mod"&&(S=d.div.neg()),p!=="div"&&(x=d.mod.neg(),g&&x.negative!==0&&x.iadd(l)),{div:S,mod:x}):this.negative===0&&l.negative!==0?(d=this.divmod(l.neg(),p),p!=="mod"&&(S=d.div.neg()),{div:S,mod:d.mod}):(this.negative&l.negative)!==0?(d=this.neg().divmod(l.neg(),p),p!=="div"&&(x=d.mod.neg(),g&&x.negative!==0&&x.isub(l)),{div:d.div,mod:x}):l.length>this.length||this.cmp(l)<0?{div:new i(0),mod:this}:l.length===1?p==="div"?{div:this.divn(l.words[0]),mod:null}:p==="mod"?{div:null,mod:new i(this.modrn(l.words[0]))}:{div:this.divn(l.words[0]),mod:new i(this.modrn(l.words[0]))}:this._wordDiv(l,p)},i.prototype.div=function(l){return this.divmod(l,"div",!1).div},i.prototype.mod=function(l){return this.divmod(l,"mod",!1).mod},i.prototype.umod=function(l){return this.divmod(l,"mod",!0).mod},i.prototype.divRound=function(l){var p=this.divmod(l);if(p.mod.isZero())return p.div;var g=p.div.negative!==0?p.mod.isub(l):p.mod,S=l.ushrn(1),x=l.andln(1),d=g.cmp(S);return d<0||x===1&&d===0?p.div:p.div.negative!==0?p.div.isubn(1):p.div.iaddn(1)},i.prototype.modrn=function(l){var p=l<0;p&&(l=-l),r(l<=67108863);for(var g=(1<<26)%l,S=0,x=this.length-1;x>=0;x--)S=(g*S+(this.words[x]|0))%l;return p?-S:S},i.prototype.modn=function(l){return this.modrn(l)},i.prototype.idivn=function(l){var p=l<0;p&&(l=-l),r(l<=67108863);for(var g=0,S=this.length-1;S>=0;S--){var x=(this.words[S]|0)+g*67108864;this.words[S]=x/l|0,g=x%l}return this._strip(),p?this.ineg():this},i.prototype.divn=function(l){return this.clone().idivn(l)},i.prototype.egcd=function(l){r(l.negative===0),r(!l.isZero());var p=this,g=l.clone();p.negative!==0?p=p.umod(l):p=p.clone();for(var S=new i(1),x=new i(0),d=new i(0),y=new i(1),C=0;p.isEven()&&g.isEven();)p.iushrn(1),g.iushrn(1),++C;for(var h=g.clone(),k=p.clone();!p.isZero();){for(var J=0,_=1;(p.words[0]&_)===0&&J<26;++J,_<<=1);if(J>0)for(p.iushrn(J);J-- >0;)(S.isOdd()||x.isOdd())&&(S.iadd(h),x.isub(k)),S.iushrn(1),x.iushrn(1);for(var L=0,N=1;(g.words[0]&N)===0&&L<26;++L,N<<=1);if(L>0)for(g.iushrn(L);L-- >0;)(d.isOdd()||y.isOdd())&&(d.iadd(h),y.isub(k)),d.iushrn(1),y.iushrn(1);p.cmp(g)>=0?(p.isub(g),S.isub(d),x.isub(y)):(g.isub(p),d.isub(S),y.isub(x))}return{a:d,b:y,gcd:g.iushln(C)}},i.prototype._invmp=function(l){r(l.negative===0),r(!l.isZero());var p=this,g=l.clone();p.negative!==0?p=p.umod(l):p=p.clone();for(var S=new i(1),x=new i(0),d=g.clone();p.cmpn(1)>0&&g.cmpn(1)>0;){for(var y=0,C=1;(p.words[0]&C)===0&&y<26;++y,C<<=1);if(y>0)for(p.iushrn(y);y-- >0;)S.isOdd()&&S.iadd(d),S.iushrn(1);for(var h=0,k=1;(g.words[0]&k)===0&&h<26;++h,k<<=1);if(h>0)for(g.iushrn(h);h-- >0;)x.isOdd()&&x.iadd(d),x.iushrn(1);p.cmp(g)>=0?(p.isub(g),S.isub(x)):(g.isub(p),x.isub(S))}var J;return p.cmpn(1)===0?J=S:J=x,J.cmpn(0)<0&&J.iadd(l),J},i.prototype.gcd=function(l){if(this.isZero())return l.abs();if(l.isZero())return this.abs();var p=this.clone(),g=l.clone();p.negative=0,g.negative=0;for(var S=0;p.isEven()&&g.isEven();S++)p.iushrn(1),g.iushrn(1);do{for(;p.isEven();)p.iushrn(1);for(;g.isEven();)g.iushrn(1);var x=p.cmp(g);if(x<0){var d=p;p=g,g=d}else if(x===0||g.cmpn(1)===0)break;p.isub(g)}while(!0);return g.iushln(S)},i.prototype.invm=function(l){return this.egcd(l).a.umod(l)},i.prototype.isEven=function(){return(this.words[0]&1)===0},i.prototype.isOdd=function(){return(this.words[0]&1)===1},i.prototype.andln=function(l){return this.words[0]&l},i.prototype.bincn=function(l){r(typeof l=="number");var p=l%26,g=(l-p)/26,S=1<>>26,y&=67108863,this.words[d]=y}return x!==0&&(this.words[d]=x,this.length++),this},i.prototype.isZero=function(){return this.length===1&&this.words[0]===0},i.prototype.cmpn=function(l){var p=l<0;if(this.negative!==0&&!p)return-1;if(this.negative===0&&p)return 1;this._strip();var g;if(this.length>1)g=1;else{p&&(l=-l),r(l<=67108863,"Number is too big");var S=this.words[0]|0;g=S===l?0:Sl.length)return 1;if(this.length=0;g--){var S=this.words[g]|0,x=l.words[g]|0;if(S!==x){Sx&&(p=1);break}}return p},i.prototype.gtn=function(l){return this.cmpn(l)===1},i.prototype.gt=function(l){return this.cmp(l)===1},i.prototype.gten=function(l){return this.cmpn(l)>=0},i.prototype.gte=function(l){return this.cmp(l)>=0},i.prototype.ltn=function(l){return this.cmpn(l)===-1},i.prototype.lt=function(l){return this.cmp(l)===-1},i.prototype.lten=function(l){return this.cmpn(l)<=0},i.prototype.lte=function(l){return this.cmp(l)<=0},i.prototype.eqn=function(l){return this.cmpn(l)===0},i.prototype.eq=function(l){return this.cmp(l)===0},i.red=function(l){return new v(l)},i.prototype.toRed=function(l){return r(!this.red,"Already a number in reduction context"),r(this.negative===0,"red works only with positives"),l.convertTo(this)._forceRed(l)},i.prototype.fromRed=function(){return r(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},i.prototype._forceRed=function(l){return this.red=l,this},i.prototype.forceRed=function(l){return r(!this.red,"Already a number in reduction context"),this._forceRed(l)},i.prototype.redAdd=function(l){return r(this.red,"redAdd works only with red numbers"),this.red.add(this,l)},i.prototype.redIAdd=function(l){return r(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,l)},i.prototype.redSub=function(l){return r(this.red,"redSub works only with red numbers"),this.red.sub(this,l)},i.prototype.redISub=function(l){return r(this.red,"redISub works only with red numbers"),this.red.isub(this,l)},i.prototype.redShl=function(l){return r(this.red,"redShl works only with red numbers"),this.red.shl(this,l)},i.prototype.redMul=function(l){return r(this.red,"redMul works only with red numbers"),this.red._verify2(this,l),this.red.mul(this,l)},i.prototype.redIMul=function(l){return r(this.red,"redMul works only with red numbers"),this.red._verify2(this,l),this.red.imul(this,l)},i.prototype.redSqr=function(){return r(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},i.prototype.redISqr=function(){return r(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},i.prototype.redSqrt=function(){return r(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},i.prototype.redInvm=function(){return r(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},i.prototype.redNeg=function(){return r(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},i.prototype.redPow=function(l){return r(this.red&&!l.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,l)};var G={k256:null,p224:null,p192:null,p25519:null};function j(b,l){this.name=b,this.p=new i(l,16),this.n=this.p.bitLength(),this.k=new i(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}j.prototype._tmp=function(){var l=new i(null);return l.words=new Array(Math.ceil(this.n/13)),l},j.prototype.ireduce=function(l){var p=l,g;do this.split(p,this.tmp),p=this.imulK(p),p=p.iadd(this.tmp),g=p.bitLength();while(g>this.n);var S=g0?p.isub(this.p):p.strip!==void 0?p.strip():p._strip(),p},j.prototype.split=function(l,p){l.iushrn(this.n,0,p)},j.prototype.imulK=function(l){return l.imul(this.k)};function Z(){j.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}n(Z,j),Z.prototype.split=function(l,p){for(var g=4194303,S=Math.min(l.length,9),x=0;x>>22,d=y}d>>>=22,l.words[x-10]=d,d===0&&l.length>10?l.length-=10:l.length-=9},Z.prototype.imulK=function(l){l.words[l.length]=0,l.words[l.length+1]=0,l.length+=2;for(var p=0,g=0;g>>=26,l.words[g]=x,p=S}return p!==0&&(l.words[l.length++]=p),l},i._prime=function(l){if(G[l])return G[l];var p;if(l==="k256")p=new Z;else if(l==="p224")p=new X;else if(l==="p192")p=new U;else if(l==="p25519")p=new M;else throw new Error("Unknown prime "+l);return G[l]=p,p};function v(b){if(typeof b=="string"){var l=i._prime(b);this.m=l.p,this.prime=l}else r(b.gtn(1),"modulus must be greater than 1"),this.m=b,this.prime=null}v.prototype._verify1=function(l){r(l.negative===0,"red works only with positives"),r(l.red,"red works only with red numbers")},v.prototype._verify2=function(l,p){r((l.negative|p.negative)===0,"red works only with positives"),r(l.red&&l.red===p.red,"red works only with red numbers")},v.prototype.imod=function(l){return this.prime?this.prime.ireduce(l)._forceRed(this):(s(l,l.umod(this.m)._forceRed(this)),l)},v.prototype.neg=function(l){return l.isZero()?l.clone():this.m.sub(l)._forceRed(this)},v.prototype.add=function(l,p){this._verify2(l,p);var g=l.add(p);return g.cmp(this.m)>=0&&g.isub(this.m),g._forceRed(this)},v.prototype.iadd=function(l,p){this._verify2(l,p);var g=l.iadd(p);return g.cmp(this.m)>=0&&g.isub(this.m),g},v.prototype.sub=function(l,p){this._verify2(l,p);var g=l.sub(p);return g.cmpn(0)<0&&g.iadd(this.m),g._forceRed(this)},v.prototype.isub=function(l,p){this._verify2(l,p);var g=l.isub(p);return g.cmpn(0)<0&&g.iadd(this.m),g},v.prototype.shl=function(l,p){return this._verify1(l),this.imod(l.ushln(p))},v.prototype.imul=function(l,p){return this._verify2(l,p),this.imod(l.imul(p))},v.prototype.mul=function(l,p){return this._verify2(l,p),this.imod(l.mul(p))},v.prototype.isqr=function(l){return this.imul(l,l.clone())},v.prototype.sqr=function(l){return this.mul(l,l)},v.prototype.sqrt=function(l){if(l.isZero())return l.clone();var p=this.m.andln(3);if(r(p%2===1),p===3){var g=this.m.add(new i(1)).iushrn(2);return this.pow(l,g)}for(var S=this.m.subn(1),x=0;!S.isZero()&&S.andln(1)===0;)x++,S.iushrn(1);r(!S.isZero());var d=new i(1).toRed(this),y=d.redNeg(),C=this.m.subn(1).iushrn(1),h=this.m.bitLength();for(h=new i(2*h*h).toRed(this);this.pow(h,C).cmp(y)!==0;)h.redIAdd(y);for(var k=this.pow(h,S),J=this.pow(l,S.addn(1).iushrn(1)),_=this.pow(l,S),L=x;_.cmp(d)!==0;){for(var N=_,q=0;N.cmp(d)!==0;q++)N=N.redSqr();r(q=0;x--){for(var k=p.words[x],J=h-1;J>=0;J--){var _=k>>J&1;if(d!==S[0]&&(d=this.sqr(d)),_===0&&y===0){C=0;continue}y<<=1,y|=_,C++,!(C!==g&&(x!==0||J!==0))&&(d=this.mul(d,S[y]),C=0,y=0)}h=26}return d},v.prototype.convertTo=function(l){var p=l.umod(this.m);return p===l?p.clone():p},v.prototype.convertFrom=function(l){var p=l.clone();return p.red=null,p},i.mont=function(l){return new E(l)};function E(b){v.call(this,b),this.shift=this.m.bitLength(),this.shift%26!==0&&(this.shift+=26-this.shift%26),this.r=new i(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}n(E,v),E.prototype.convertTo=function(l){return this.imod(l.ushln(this.shift))},E.prototype.convertFrom=function(l){var p=this.imod(l.mul(this.rinv));return p.red=null,p},E.prototype.imul=function(l,p){if(l.isZero()||p.isZero())return l.words[0]=0,l.length=1,l;var g=l.imul(p),S=g.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),x=g.isub(S).iushrn(this.shift),d=x;return x.cmp(this.m)>=0?d=x.isub(this.m):x.cmpn(0)<0&&(d=x.iadd(this.m)),d._forceRed(this)},E.prototype.mul=function(l,p){if(l.isZero()||p.isZero())return new i(0)._forceRed(this);var g=l.mul(p),S=g.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),x=g.isub(S).iushrn(this.shift),d=x;return x.cmp(this.m)>=0?d=x.isub(this.m):x.cmpn(0)<0&&(d=x.iadd(this.m)),d._forceRed(this)},E.prototype.invm=function(l){var p=this.imod(l._invmp(this.m).mul(this.r2));return p._forceRed(this)}})(typeof zv>"u"||zv,v6)});var b6=P(nd=>{"use strict";Object.defineProperty(nd,"__esModule",{value:!0});nd.version=void 0;nd.version="logger/5.7.0"});var re=P(Vn=>{"use strict";Object.defineProperty(Vn,"__esModule",{value:!0});Vn.Logger=Vn.ErrorCode=Vn.LogLevel=void 0;var g6=!1,x6=!1,id={debug:1,default:2,info:2,warning:3,error:4,off:5},y6=id.default,CN=b6(),Gv=null;function ON(){try{var t=[];if(["NFD","NFC","NFKD","NFKC"].forEach(function(e){try{if("test".normalize(e)!=="test")throw new Error("bad normalize")}catch{t.push(e)}}),t.length)throw new Error("missing "+t.join(", "));if(String.fromCharCode(233).normalize("NFD")!==String.fromCharCode(101,769))throw new Error("broken implementation")}catch(e){return e.message}return null}var w6=ON(),E6;(function(t){t.DEBUG="DEBUG",t.INFO="INFO",t.WARNING="WARNING",t.ERROR="ERROR",t.OFF="OFF"})(E6=Vn.LogLevel||(Vn.LogLevel={}));var Kn;(function(t){t.UNKNOWN_ERROR="UNKNOWN_ERROR",t.NOT_IMPLEMENTED="NOT_IMPLEMENTED",t.UNSUPPORTED_OPERATION="UNSUPPORTED_OPERATION",t.NETWORK_ERROR="NETWORK_ERROR",t.SERVER_ERROR="SERVER_ERROR",t.TIMEOUT="TIMEOUT",t.BUFFER_OVERRUN="BUFFER_OVERRUN",t.NUMERIC_FAULT="NUMERIC_FAULT",t.MISSING_NEW="MISSING_NEW",t.INVALID_ARGUMENT="INVALID_ARGUMENT",t.MISSING_ARGUMENT="MISSING_ARGUMENT",t.UNEXPECTED_ARGUMENT="UNEXPECTED_ARGUMENT",t.CALL_EXCEPTION="CALL_EXCEPTION",t.INSUFFICIENT_FUNDS="INSUFFICIENT_FUNDS",t.NONCE_EXPIRED="NONCE_EXPIRED",t.REPLACEMENT_UNDERPRICED="REPLACEMENT_UNDERPRICED",t.UNPREDICTABLE_GAS_LIMIT="UNPREDICTABLE_GAS_LIMIT",t.TRANSACTION_REPLACED="TRANSACTION_REPLACED",t.ACTION_REJECTED="ACTION_REJECTED"})(Kn=Vn.ErrorCode||(Vn.ErrorCode={}));var A6="0123456789abcdef",PN=function(){function t(e){Object.defineProperty(this,"version",{enumerable:!0,value:e,writable:!1})}return t.prototype._log=function(e,r){var n=e.toLowerCase();id[n]==null&&this.throwArgumentError("invalid log level name","logLevel",e),!(y6>id[n])&&console.log.apply(console,r)},t.prototype.debug=function(){for(var e=[],r=0;r>4],m+=A6[f[w]&15];i.push(s+"=Uint8Array(0x"+m+")")}else i.push(s+"="+JSON.stringify(f))}catch{i.push(s+"="+JSON.stringify(n[s].toString()))}}),i.push("code="+r),i.push("version="+this.version);var a=e,o="";switch(r){case Kn.NUMERIC_FAULT:{o="NUMERIC_FAULT";var c=e;switch(c){case"overflow":case"underflow":case"division-by-zero":o+="-"+c;break;case"negative-power":case"negative-width":o+="-unsupported";break;case"unbound-bitwise-result":o+="-unbound-result";break}break}case Kn.CALL_EXCEPTION:case Kn.INSUFFICIENT_FUNDS:case Kn.MISSING_NEW:case Kn.NONCE_EXPIRED:case Kn.REPLACEMENT_UNDERPRICED:case Kn.TRANSACTION_REPLACED:case Kn.UNPREDICTABLE_GAS_LIMIT:o=r;break}o&&(e+=" [ See: https://links.ethers.org/v5-errors-"+o+" ]"),i.length&&(e+=" ("+i.join(", ")+")");var u=new Error(e);return u.reason=a,u.code=r,Object.keys(n).forEach(function(s){u[s]=n[s]}),u},t.prototype.throwError=function(e,r,n){throw this.makeError(e,r,n)},t.prototype.throwArgumentError=function(e,r,n){return this.throwError(e,t.errors.INVALID_ARGUMENT,{argument:r,value:n})},t.prototype.assert=function(e,r,n,i){e||this.throwError(r,n,i)},t.prototype.assertArgument=function(e,r,n,i){e||this.throwArgumentError(r,n,i)},t.prototype.checkNormalize=function(e){e==null&&(e="platform missing String.prototype.normalize"),w6&&this.throwError("platform missing String.prototype.normalize",t.errors.UNSUPPORTED_OPERATION,{operation:"String.prototype.normalize",form:w6})},t.prototype.checkSafeUint53=function(e,r){typeof e=="number"&&(r==null&&(r="value not safe"),(e<0||e>=9007199254740991)&&this.throwError(r,t.errors.NUMERIC_FAULT,{operation:"checkSafeInteger",fault:"out-of-safe-range",value:e}),e%1&&this.throwError(r,t.errors.NUMERIC_FAULT,{operation:"checkSafeInteger",fault:"non-integer",value:e}))},t.prototype.checkArgumentCount=function(e,r,n){n?n=": "+n:n="",er&&this.throwError("too many arguments"+n,t.errors.UNEXPECTED_ARGUMENT,{count:e,expectedCount:r})},t.prototype.checkNew=function(e,r){(e===Object||e==null)&&this.throwError("missing new",t.errors.MISSING_NEW,{name:r.name})},t.prototype.checkAbstract=function(e,r){e===r?this.throwError("cannot instantiate abstract class "+JSON.stringify(r.name)+" directly; use a sub-class",t.errors.UNSUPPORTED_OPERATION,{name:e.name,operation:"new"}):(e===Object||e==null)&&this.throwError("missing new",t.errors.MISSING_NEW,{name:r.name})},t.globalLogger=function(){return Gv||(Gv=new t(CN.version)),Gv},t.setCensorship=function(e,r){if(!e&&r&&this.globalLogger().throwError("cannot permanently disable censorship",t.errors.UNSUPPORTED_OPERATION,{operation:"setCensorship"}),g6){if(!e)return;this.globalLogger().throwError("error censorship permanent",t.errors.UNSUPPORTED_OPERATION,{operation:"setCensorship"})}x6=!!e,g6=!!r},t.setLogLevel=function(e){var r=id[e.toLowerCase()];if(r==null){t.globalLogger().warn("invalid log level - "+e);return}y6=r},t.from=function(e){return new t(e)},t.errors=Kn,t.levels=E6,t}();Vn.Logger=PN});var S6=P(ad=>{"use strict";Object.defineProperty(ad,"__esModule",{value:!0});ad.version=void 0;ad.version="bytes/5.7.0"});var De=P(Ge=>{"use strict";Object.defineProperty(Ge,"__esModule",{value:!0});Ge.joinSignature=Ge.splitSignature=Ge.hexZeroPad=Ge.hexStripZeros=Ge.hexValue=Ge.hexConcat=Ge.hexDataSlice=Ge.hexDataLength=Ge.hexlify=Ge.isHexString=Ge.zeroPad=Ge.stripZeros=Ge.concat=Ge.arrayify=Ge.isBytes=Ge.isBytesLike=void 0;var MN=re(),BN=S6(),gr=new MN.Logger(BN.version);function T6(t){return!!t.toHexString}function Os(t){return t.slice||(t.slice=function(){var e=Array.prototype.slice.call(arguments);return Os(new Uint8Array(Array.prototype.slice.apply(t,e)))}),t}function k6(t){return vn(t)&&!(t.length%2)||sd(t)}Ge.isBytesLike=k6;function _6(t){return typeof t=="number"&&t==t&&t%1===0}function sd(t){if(t==null)return!1;if(t.constructor===Uint8Array)return!0;if(typeof t=="string"||!_6(t.length)||t.length<0)return!1;for(var e=0;e=256)return!1}return!0}Ge.isBytes=sd;function bo(t,e){if(e||(e={}),typeof t=="number"){gr.checkSafeUint53(t,"invalid arrayify value");for(var r=[];t;)r.unshift(t&255),t=parseInt(String(t/256));return r.length===0&&r.push(0),Os(new Uint8Array(r))}if(e.allowMissingPrefix&&typeof t=="string"&&t.substring(0,2)!=="0x"&&(t="0x"+t),T6(t)&&(t=t.toHexString()),vn(t)){var n=t.substring(2);n.length%2&&(e.hexPad==="left"?n="0"+n:e.hexPad==="right"?n+="0":gr.throwArgumentError("hex data is odd-length","value",t));for(var r=[],i=0;ie&&gr.throwArgumentError("value out of range","value",arguments[0]);var r=new Uint8Array(e);return r.set(t,e-t.length),Os(r)}Ge.zeroPad=O6;function vn(t,e){return!(typeof t!="string"||!t.match(/^0x[0-9A-Fa-f]*$/)||e&&t.length!==2+2*e)}Ge.isHexString=vn;var Xv="0123456789abcdef";function it(t,e){if(e||(e={}),typeof t=="number"){gr.checkSafeUint53(t,"invalid hexlify value");for(var r="";t;)r=Xv[t&15]+r,t=Math.floor(t/16);return r.length?(r.length%2&&(r="0"+r),"0x"+r):"0x00"}if(typeof t=="bigint")return t=t.toString(16),t.length%2?"0x0"+t:"0x"+t;if(e.allowMissingPrefix&&typeof t=="string"&&t.substring(0,2)!=="0x"&&(t="0x"+t),T6(t))return t.toHexString();if(vn(t))return t.length%2&&(e.hexPad==="left"?t="0x0"+t.substring(2):e.hexPad==="right"?t+="0":gr.throwArgumentError("hex data is odd-length","value",t)),t.toLowerCase();if(sd(t)){for(var n="0x",i=0;i>4]+Xv[a&15]}return n}return gr.throwArgumentError("invalid hexlify value","value",t)}Ge.hexlify=it;function LN(t){if(typeof t!="string")t=it(t);else if(!vn(t)||t.length%2)return null;return(t.length-2)/2}Ge.hexDataLength=LN;function RN(t,e,r){return typeof t!="string"?t=it(t):(!vn(t)||t.length%2)&&gr.throwArgumentError("invalid hexData","value",t),e=2+2*e,r!=null?"0x"+t.substring(e,2+2*r):"0x"+t.substring(e)}Ge.hexDataSlice=RN;function IN(t){var e="0x";return t.forEach(function(r){e+=it(r).substring(2)}),e}Ge.hexConcat=IN;function NN(t){var e=P6(it(t,{hexPad:"left"}));return e==="0x"?"0x0":e}Ge.hexValue=NN;function P6(t){typeof t!="string"&&(t=it(t)),vn(t)||gr.throwArgumentError("invalid hex string","value",t),t=t.substring(2);for(var e=0;e2*e+2&&gr.throwArgumentError("value out of range","value",arguments[1]);t.length<2*e+2;)t="0x0"+t.substring(2);return t}Ge.hexZeroPad=od;function M6(t){var e={r:"0x",s:"0x",_vs:"0x",recoveryParam:0,v:0,yParityAndS:"0x",compact:"0x"};if(k6(t)){var r=bo(t);r.length===64?(e.v=27+(r[32]>>7),r[32]&=127,e.r=it(r.slice(0,32)),e.s=it(r.slice(32,64))):r.length===65?(e.r=it(r.slice(0,32)),e.s=it(r.slice(32,64)),e.v=r[64]):gr.throwArgumentError("invalid signature string","signature",t),e.v<27&&(e.v===0||e.v===1?e.v+=27:gr.throwArgumentError("signature invalid v byte","signature",t)),e.recoveryParam=1-e.v%2,e.recoveryParam&&(r[32]|=128),e._vs=it(r.slice(32,64))}else{if(e.r=t.r,e.s=t.s,e.v=t.v,e.recoveryParam=t.recoveryParam,e._vs=t._vs,e._vs!=null){var n=O6(bo(e._vs),32);e._vs=it(n);var i=n[0]>=128?1:0;e.recoveryParam==null?e.recoveryParam=i:e.recoveryParam!==i&&gr.throwArgumentError("signature recoveryParam mismatch _vs","signature",t),n[0]&=127;var a=it(n);e.s==null?e.s=a:e.s!==a&&gr.throwArgumentError("signature v mismatch _vs","signature",t)}if(e.recoveryParam==null)e.v==null?gr.throwArgumentError("signature missing v and recoveryParam","signature",t):e.v===0||e.v===1?e.recoveryParam=e.v:e.recoveryParam=1-e.v%2;else if(e.v==null)e.v=27+e.recoveryParam;else{var o=e.v===0||e.v===1?e.v:1-e.v%2;e.recoveryParam!==o&&gr.throwArgumentError("signature recoveryParam mismatch v","signature",t)}e.r==null||!vn(e.r)?gr.throwArgumentError("signature missing or invalid r","signature",t):e.r=od(e.r,32),e.s==null||!vn(e.s)?gr.throwArgumentError("signature missing or invalid s","signature",t):e.s=od(e.s,32);var c=bo(e.s);c[0]>=128&&gr.throwArgumentError("signature s out of range","signature",t),e.recoveryParam&&(c[0]|=128);var u=it(c);e._vs&&(vn(e._vs)||gr.throwArgumentError("signature invalid _vs","signature",t),e._vs=od(e._vs,32)),e._vs==null?e._vs=u:e._vs!==u&&gr.throwArgumentError("signature _vs mismatch v and s","signature",t)}return e.yParityAndS=e._vs,e.compact=e.r+e.yParityAndS.substring(2),e}Ge.splitSignature=M6;function DN(t){return t=M6(t),it(C6([t.r,t.s,t.recoveryParam?"0x1c":"0x1b"]))}Ge.joinSignature=DN});var Kv=P(cd=>{"use strict";Object.defineProperty(cd,"__esModule",{value:!0});cd.version=void 0;cd.version="bignumber/5.7.0"});var ld=P(Gt=>{"use strict";var JN=Gt&&Gt.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(Gt,"__esModule",{value:!0});Gt._base16To36=Gt._base36To16=Gt.BigNumber=Gt.isBigNumberish=void 0;var qN=JN(m6()),Du=qN.default.BN,Ps=De(),Ms=re(),jN=Kv(),Oi=new Ms.Logger(jN.version),Vv={},B6=9007199254740991;function UN(t){return t!=null&&(ud.isBigNumber(t)||typeof t=="number"&&t%1===0||typeof t=="string"&&!!t.match(/^-?[0-9]+$/)||(0,Ps.isHexString)(t)||typeof t=="bigint"||(0,Ps.isBytes)(t))}Gt.isBigNumberish=UN;var F6=!1,ud=function(){function t(e,r){e!==Vv&&Oi.throwError("cannot call constructor directly; use BigNumber.from",Ms.Logger.errors.UNSUPPORTED_OPERATION,{operation:"new (BigNumber)"}),this._hex=r,this._isBigNumber=!0,Object.freeze(this)}return t.prototype.fromTwos=function(e){return _t(Ue(this).fromTwos(e))},t.prototype.toTwos=function(e){return _t(Ue(this).toTwos(e))},t.prototype.abs=function(){return this._hex[0]==="-"?t.from(this._hex.substring(1)):this},t.prototype.add=function(e){return _t(Ue(this).add(Ue(e)))},t.prototype.sub=function(e){return _t(Ue(this).sub(Ue(e)))},t.prototype.div=function(e){var r=t.from(e);return r.isZero()&&zt("division-by-zero","div"),_t(Ue(this).div(Ue(e)))},t.prototype.mul=function(e){return _t(Ue(this).mul(Ue(e)))},t.prototype.mod=function(e){var r=Ue(e);return r.isNeg()&&zt("division-by-zero","mod"),_t(Ue(this).umod(r))},t.prototype.pow=function(e){var r=Ue(e);return r.isNeg()&&zt("negative-power","pow"),_t(Ue(this).pow(r))},t.prototype.and=function(e){var r=Ue(e);return(this.isNegative()||r.isNeg())&&zt("unbound-bitwise-result","and"),_t(Ue(this).and(r))},t.prototype.or=function(e){var r=Ue(e);return(this.isNegative()||r.isNeg())&&zt("unbound-bitwise-result","or"),_t(Ue(this).or(r))},t.prototype.xor=function(e){var r=Ue(e);return(this.isNegative()||r.isNeg())&&zt("unbound-bitwise-result","xor"),_t(Ue(this).xor(r))},t.prototype.mask=function(e){return(this.isNegative()||e<0)&&zt("negative-width","mask"),_t(Ue(this).maskn(e))},t.prototype.shl=function(e){return(this.isNegative()||e<0)&&zt("negative-width","shl"),_t(Ue(this).shln(e))},t.prototype.shr=function(e){return(this.isNegative()||e<0)&&zt("negative-width","shr"),_t(Ue(this).shrn(e))},t.prototype.eq=function(e){return Ue(this).eq(Ue(e))},t.prototype.lt=function(e){return Ue(this).lt(Ue(e))},t.prototype.lte=function(e){return Ue(this).lte(Ue(e))},t.prototype.gt=function(e){return Ue(this).gt(Ue(e))},t.prototype.gte=function(e){return Ue(this).gte(Ue(e))},t.prototype.isNegative=function(){return this._hex[0]==="-"},t.prototype.isZero=function(){return Ue(this).isZero()},t.prototype.toNumber=function(){try{return Ue(this).toNumber()}catch{zt("overflow","toNumber",this.toString())}return null},t.prototype.toBigInt=function(){try{return BigInt(this.toString())}catch{}return Oi.throwError("this platform does not support BigInt",Ms.Logger.errors.UNSUPPORTED_OPERATION,{value:this.toString()})},t.prototype.toString=function(){return arguments.length>0&&(arguments[0]===10?F6||(F6=!0,Oi.warn("BigNumber.toString does not accept any parameters; base-10 is assumed")):arguments[0]===16?Oi.throwError("BigNumber.toString does not accept any parameters; use bigNumber.toHexString()",Ms.Logger.errors.UNEXPECTED_ARGUMENT,{}):Oi.throwError("BigNumber.toString does not accept parameters",Ms.Logger.errors.UNEXPECTED_ARGUMENT,{})),Ue(this).toString(10)},t.prototype.toHexString=function(){return this._hex},t.prototype.toJSON=function(e){return{type:"BigNumber",hex:this.toHexString()}},t.from=function(e){if(e instanceof t)return e;if(typeof e=="string")return e.match(/^-?0x[0-9a-f]+$/i)?new t(Vv,Ju(e)):e.match(/^-?[0-9]+$/)?new t(Vv,Ju(new Du(e))):Oi.throwArgumentError("invalid BigNumber string","value",e);if(typeof e=="number")return e%1&&zt("underflow","BigNumber.from",e),(e>=B6||e<=-B6)&&zt("overflow","BigNumber.from",e),t.from(String(e));var r=e;if(typeof r=="bigint")return t.from(r.toString());if((0,Ps.isBytes)(r))return t.from((0,Ps.hexlify)(r));if(r)if(r.toHexString){var n=r.toHexString();if(typeof n=="string")return t.from(n)}else{var n=r._hex;if(n==null&&r.type==="BigNumber"&&(n=r.hex),typeof n=="string"&&((0,Ps.isHexString)(n)||n[0]==="-"&&(0,Ps.isHexString)(n.substring(1))))return t.from(n)}return Oi.throwArgumentError("invalid BigNumber value","value",e)},t.isBigNumber=function(e){return!!(e&&e._isBigNumber)},t}();Gt.BigNumber=ud;function Ju(t){if(typeof t!="string")return Ju(t.toString(16));if(t[0]==="-")return t=t.substring(1),t[0]==="-"&&Oi.throwArgumentError("invalid hex","value",t),t=Ju(t),t==="0x00"?t:"-"+t;if(t.substring(0,2)!=="0x"&&(t="0x"+t),t==="0x")return"0x00";for(t.length%2&&(t="0x0"+t.substring(2));t.length>4&&t.substring(0,4)==="0x00";)t="0x"+t.substring(4);return t}function _t(t){return ud.from(Ju(t))}function Ue(t){var e=ud.from(t).toHexString();return e[0]==="-"?new Du("-"+e.substring(3),16):new Du(e.substring(2),16)}function zt(t,e,r){var n={fault:t,operation:e};return r!=null&&(n.value=r),Oi.throwError(t,Ms.Logger.errors.NUMERIC_FAULT,n)}function HN(t){return new Du(t,36).toString(16)}Gt._base36To16=HN;function zN(t){return new Du(t,16).toString(36)}Gt._base16To36=zN});var D6=P(Qn=>{"use strict";Object.defineProperty(Qn,"__esModule",{value:!0});Qn.FixedNumber=Qn.FixedFormat=Qn.parseFixed=Qn.formatFixed=void 0;var fd=De(),Uu=re(),GN=Kv(),wt=new Uu.Logger(GN.version),Pi=ld(),qu={},R6=Pi.BigNumber.from(0),I6=Pi.BigNumber.from(-1);function N6(t,e,r,n){var i={fault:e,operation:r};return n!==void 0&&(i.value=n),wt.throwError(t,Uu.Logger.errors.NUMERIC_FAULT,i)}var ju="0";for(;ju.length<256;)ju+=ju;function Zv(t){if(typeof t!="number")try{t=Pi.BigNumber.from(t).toNumber()}catch{}return typeof t=="number"&&t>=0&&t<=256&&!(t%1)?"1"+ju.substring(0,t):wt.throwArgumentError("invalid decimal size","decimals",t)}function dd(t,e){e==null&&(e=0);var r=Zv(e);t=Pi.BigNumber.from(t);var n=t.lt(R6);n&&(t=t.mul(I6));for(var i=t.mod(r).toString();i.length2&&wt.throwArgumentError("too many decimal points","value",t);var a=i[0],o=i[1];for(a||(a="0"),o||(o="0");o[o.length-1]==="0";)o=o.substring(0,o.length-1);for(o.length>r.length-1&&N6("fractional component exceeds decimals","underflow","parseFixed"),o===""&&(o="0");o.length80&&wt.throwArgumentError("invalid fixed format (decimals too large)","format.decimals",i),new t(qu,r,n,i)},t}();Qn.FixedFormat=pd;var Qv=function(){function t(e,r,n,i){e!==qu&&wt.throwError("cannot use FixedNumber constructor; use FixedNumber.from",Uu.Logger.errors.UNSUPPORTED_OPERATION,{operation:"new FixedFormat"}),this.format=i,this._hex=r,this._value=n,this._isFixedNumber=!0,Object.freeze(this)}return t.prototype._checkFormat=function(e){this.format.name!==e.format.name&&wt.throwArgumentError("incompatible format; use fixedNumber.toFormat","other",e)},t.prototype.addUnsafe=function(e){this._checkFormat(e);var r=Zn(this._value,this.format.decimals),n=Zn(e._value,e.format.decimals);return t.fromValue(r.add(n),this.format.decimals,this.format)},t.prototype.subUnsafe=function(e){this._checkFormat(e);var r=Zn(this._value,this.format.decimals),n=Zn(e._value,e.format.decimals);return t.fromValue(r.sub(n),this.format.decimals,this.format)},t.prototype.mulUnsafe=function(e){this._checkFormat(e);var r=Zn(this._value,this.format.decimals),n=Zn(e._value,e.format.decimals);return t.fromValue(r.mul(n).div(this.format._multiplier),this.format.decimals,this.format)},t.prototype.divUnsafe=function(e){this._checkFormat(e);var r=Zn(this._value,this.format.decimals),n=Zn(e._value,e.format.decimals);return t.fromValue(r.mul(this.format._multiplier).div(n),this.format.decimals,this.format)},t.prototype.floor=function(){var e=this.toString().split(".");e.length===1&&e.push("0");var r=t.from(e[0],this.format),n=!e[1].match(/^(0*)$/);return this.isNegative()&&n&&(r=r.subUnsafe(L6.toFormat(r.format))),r},t.prototype.ceiling=function(){var e=this.toString().split(".");e.length===1&&e.push("0");var r=t.from(e[0],this.format),n=!e[1].match(/^(0*)$/);return!this.isNegative()&&n&&(r=r.addUnsafe(L6.toFormat(r.format))),r},t.prototype.round=function(e){e==null&&(e=0);var r=this.toString().split(".");if(r.length===1&&r.push("0"),(e<0||e>80||e%1)&&wt.throwArgumentError("invalid decimal count","decimals",e),r[1].length<=e)return this;var n=t.from("1"+ju.substring(0,e),this.format),i=XN.toFormat(this.format);return this.mulUnsafe(n).addUnsafe(i).floor().divUnsafe(n)},t.prototype.isZero=function(){return this._value==="0.0"||this._value==="0"},t.prototype.isNegative=function(){return this._value[0]==="-"},t.prototype.toString=function(){return this._value},t.prototype.toHexString=function(e){if(e==null)return this._hex;e%8&&wt.throwArgumentError("invalid byte width","width",e);var r=Pi.BigNumber.from(this._hex).fromTwos(this.format.width).toTwos(e).toHexString();return(0,fd.hexZeroPad)(r,e/8)},t.prototype.toUnsafeFloat=function(){return parseFloat(this.toString())},t.prototype.toFormat=function(e){return t.fromString(this._value,e)},t.fromValue=function(e,r,n){return n==null&&r!=null&&!(0,Pi.isBigNumberish)(r)&&(n=r,r=null),r==null&&(r=0),n==null&&(n="fixed"),t.fromString(dd(e,r),pd.from(n))},t.fromString=function(e,r){r==null&&(r="fixed");var n=pd.from(r),i=Zn(e,n.decimals);!n.signed&&i.lt(R6)&&N6("unsigned value cannot be negative","overflow","value",e);var a=null;n.signed?a=i.toTwos(n.width).toHexString():(a=i.toHexString(),a=(0,fd.hexZeroPad)(a,n.width/8));var o=dd(i,n.decimals);return new t(qu,a,o,n)},t.fromBytes=function(e,r){r==null&&(r="fixed");var n=pd.from(r);if((0,fd.arrayify)(e).length>n.width/8)throw new Error("overflow");var i=Pi.BigNumber.from(e);n.signed&&(i=i.fromTwos(n.width));var a=i.toTwos((n.signed?0:1)+n.width).toHexString(),o=dd(i,n.decimals);return new t(qu,a,o,n)},t.from=function(e,r){if(typeof e=="string")return t.fromString(e,r);if((0,fd.isBytes)(e))return t.fromBytes(e,r);try{return t.fromValue(e,0,r)}catch(n){if(n.code!==Uu.Logger.errors.INVALID_ARGUMENT)throw n}return wt.throwArgumentError("invalid FixedNumber value","value",e)},t.isFixedNumber=function(e){return!!(e&&e._isFixedNumber)},t}();Qn.FixedNumber=Qv;var L6=Qv.from(1),XN=Qv.from("0.5")});var Tr=P(at=>{"use strict";Object.defineProperty(at,"__esModule",{value:!0});at._base36To16=at._base16To36=at.parseFixed=at.FixedNumber=at.FixedFormat=at.formatFixed=at.BigNumber=void 0;var KN=ld();Object.defineProperty(at,"BigNumber",{enumerable:!0,get:function(){return KN.BigNumber}});var hd=D6();Object.defineProperty(at,"formatFixed",{enumerable:!0,get:function(){return hd.formatFixed}});Object.defineProperty(at,"FixedFormat",{enumerable:!0,get:function(){return hd.FixedFormat}});Object.defineProperty(at,"FixedNumber",{enumerable:!0,get:function(){return hd.FixedNumber}});Object.defineProperty(at,"parseFixed",{enumerable:!0,get:function(){return hd.parseFixed}});var J6=ld();Object.defineProperty(at,"_base16To36",{enumerable:!0,get:function(){return J6._base16To36}});Object.defineProperty(at,"_base36To16",{enumerable:!0,get:function(){return J6._base36To16}})});var q6=P(vd=>{"use strict";Object.defineProperty(vd,"__esModule",{value:!0});vd.version=void 0;vd.version="properties/5.7.0"});var Ve=P(kr=>{"use strict";var VN=kr&&kr.__awaiter||function(t,e,r,n){function i(a){return a instanceof r?a:new r(function(o){o(a)})}return new(r||(r=Promise))(function(a,o){function c(f){try{s(n.next(f))}catch(m){o(m)}}function u(f){try{s(n.throw(f))}catch(m){o(m)}}function s(f){f.done?a(f.value):i(f.value).then(c,u)}s((n=n.apply(t,e||[])).next())})},ZN=kr&&kr.__generator||function(t,e){var r={label:0,sent:function(){if(a[0]&1)throw a[1];return a[1]},trys:[],ops:[]},n,i,a,o;return o={next:c(0),throw:c(1),return:c(2)},typeof Symbol=="function"&&(o[Symbol.iterator]=function(){return this}),o;function c(s){return function(f){return u([s,f])}}function u(s){if(n)throw new TypeError("Generator is already executing.");for(;r;)try{if(n=1,i&&(a=s[0]&2?i.return:s[0]?i.throw||((a=i.return)&&a.call(i),0):i.next)&&!(a=a.call(i,s[1])).done)return a;switch(i=0,a&&(s=[s[0]&2,a.value]),s[0]){case 0:case 1:a=s;break;case 4:return r.label++,{value:s[1],done:!1};case 5:r.label++,i=s[1],s=[0];continue;case 7:s=r.ops.pop(),r.trys.pop();continue;default:if(a=r.trys,!(a=a.length>0&&a[a.length-1])&&(s[0]===6||s[0]===2)){r=0;continue}if(s[0]===3&&(!a||s[1]>a[0]&&s[1]{"use strict";Object.defineProperty(gd,"__esModule",{value:!0});gd.version=void 0;gd.version="abi/5.7.0"});var _d=P(te=>{"use strict";var Ad=te&&te.__extends||function(){var t=function(e,r){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,i){n.__proto__=i}||function(n,i){for(var a in i)Object.prototype.hasOwnProperty.call(i,a)&&(n[a]=i[a])},t(e,r)};return function(e,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");t(e,r);function n(){this.constructor=e}e.prototype=r===null?Object.create(r):(n.prototype=r.prototype,new n)}}();Object.defineProperty(te,"__esModule",{value:!0});te.ErrorFragment=te.FunctionFragment=te.ConstructorFragment=te.EventFragment=te.Fragment=te.ParamType=te.FormatTypes=void 0;var em=Tr(),aD=Ve(),Ed=re(),oD=Bs(),He=new Ed.Logger(oD.version),go={},H6={calldata:!0,memory:!0,storage:!0},sD={calldata:!0,memory:!0};function xd(t,e){if(t==="bytes"||t==="string"){if(H6[e])return!0}else if(t==="address"){if(e==="payable")return!0}else if((t.indexOf("[")>=0||t==="tuple")&&sD[e])return!0;return(H6[e]||e==="payable")&&He.throwArgumentError("invalid modifier","name",e),!1}function cD(t,e){var r=t;function n(m){He.throwArgumentError("unexpected character at position "+m,"param",t)}t=t.replace(/\s/g," ");function i(m){var w={type:"",name:"",parent:m,state:{allowType:!0}};return e&&(w.indexed=!1),w}for(var a={type:"",name:"",state:{allowType:!0}},o=a,c=0;c2&&He.throwArgumentError("invalid human-readable ABI signature","value",t),r[1].match(/^[0-9]+$/)||He.throwArgumentError("invalid human-readable ABI signature gas","value",t),e.gas=em.BigNumber.from(r[1]),r[0]):t}function X6(t,e){e.constant=!1,e.payable=!1,e.stateMutability="nonpayable",t.split(" ").forEach(function(r){switch(r.trim()){case"constant":e.constant=!0;break;case"payable":e.payable=!0,e.stateMutability="payable";break;case"nonpayable":e.payable=!1,e.stateMutability="nonpayable";break;case"pure":e.constant=!0,e.stateMutability="pure";break;case"view":e.constant=!0,e.stateMutability="view";break;case"external":case"public":case"":break;default:console.log("unknown modifier: "+r)}})}function K6(t){var e={constant:!1,payable:!0,stateMutability:"payable"};return t.stateMutability!=null?(e.stateMutability=t.stateMutability,e.constant=e.stateMutability==="view"||e.stateMutability==="pure",t.constant!=null&&!!t.constant!==e.constant&&He.throwArgumentError("cannot have constant function with mutability "+e.stateMutability,"value",t),e.payable=e.stateMutability==="payable",t.payable!=null&&!!t.payable!==e.payable&&He.throwArgumentError("cannot have payable function with mutability "+e.stateMutability,"value",t)):t.payable!=null?(e.payable=!!t.payable,t.constant==null&&!e.payable&&t.type!=="constructor"&&He.throwArgumentError("unable to determine stateMutability","value",t),e.constant=!!t.constant,e.constant?e.stateMutability="view":e.stateMutability=e.payable?"payable":"nonpayable",e.payable&&e.constant&&He.throwArgumentError("cannot have constant payable function","value",t)):t.constant!=null?(e.constant=!!t.constant,e.payable=!e.constant,e.stateMutability=e.constant?"view":"payable"):t.type!=="constructor"&&He.throwArgumentError("unable to determine stateMutability","value",t),e}var wd=function(t){Ad(e,t);function e(){return t!==null&&t.apply(this,arguments)||this}return e.prototype.format=function(r){if(r||(r=te.FormatTypes.sighash),te.FormatTypes[r]||He.throwArgumentError("invalid format type","format",r),r===te.FormatTypes.json)return JSON.stringify({type:"constructor",stateMutability:this.stateMutability!=="nonpayable"?this.stateMutability:void 0,payable:this.payable,gas:this.gas?this.gas.toNumber():void 0,inputs:this.inputs.map(function(i){return JSON.parse(i.format(r))})});r===te.FormatTypes.sighash&&He.throwError("cannot format a constructor for sighash",Ed.Logger.errors.UNSUPPORTED_OPERATION,{operation:"format(sighash)"});var n="constructor("+this.inputs.map(function(i){return i.format(r)}).join(r===te.FormatTypes.full?", ":",")+") ";return this.stateMutability&&this.stateMutability!=="nonpayable"&&(n+=this.stateMutability+" "),n.trim()},e.from=function(r){return typeof r=="string"?e.fromString(r):e.fromObject(r)},e.fromObject=function(r){if(e.isConstructorFragment(r))return r;r.type!=="constructor"&&He.throwArgumentError("invalid constructor object","value",r);var n=K6(r);n.constant&&He.throwArgumentError("constructor cannot be constant","value",r);var i={name:null,type:r.type,inputs:r.inputs?r.inputs.map(xo.fromObject):[],payable:n.payable,stateMutability:n.stateMutability,gas:r.gas?em.BigNumber.from(r.gas):null};return new e(go,i)},e.fromString=function(r){var n={type:"constructor"};r=G6(r,n);var i=r.match(Gu);return(!i||i[1].trim()!=="constructor")&&He.throwArgumentError("invalid constructor string","value",r),n.inputs=Hu(i[2].trim(),!1),X6(i[3].trim(),n),e.fromObject(n)},e.isConstructorFragment=function(r){return r&&r._isFragment&&r.type==="constructor"},e}(Sd);te.ConstructorFragment=wd;var Yv=function(t){Ad(e,t);function e(){return t!==null&&t.apply(this,arguments)||this}return e.prototype.format=function(r){if(r||(r=te.FormatTypes.sighash),te.FormatTypes[r]||He.throwArgumentError("invalid format type","format",r),r===te.FormatTypes.json)return JSON.stringify({type:"function",name:this.name,constant:this.constant,stateMutability:this.stateMutability!=="nonpayable"?this.stateMutability:void 0,payable:this.payable,gas:this.gas?this.gas.toNumber():void 0,inputs:this.inputs.map(function(i){return JSON.parse(i.format(r))}),outputs:this.outputs.map(function(i){return JSON.parse(i.format(r))})});var n="";return r!==te.FormatTypes.sighash&&(n+="function "),n+=this.name+"("+this.inputs.map(function(i){return i.format(r)}).join(r===te.FormatTypes.full?", ":",")+") ",r!==te.FormatTypes.sighash&&(this.stateMutability?this.stateMutability!=="nonpayable"&&(n+=this.stateMutability+" "):this.constant&&(n+="view "),this.outputs&&this.outputs.length&&(n+="returns ("+this.outputs.map(function(i){return i.format(r)}).join(", ")+") "),this.gas!=null&&(n+="@"+this.gas.toString()+" ")),n.trim()},e.from=function(r){return typeof r=="string"?e.fromString(r):e.fromObject(r)},e.fromObject=function(r){if(e.isFunctionFragment(r))return r;r.type!=="function"&&He.throwArgumentError("invalid function object","value",r);var n=K6(r),i={type:r.type,name:zu(r.name),constant:n.constant,inputs:r.inputs?r.inputs.map(xo.fromObject):[],outputs:r.outputs?r.outputs.map(xo.fromObject):[],payable:n.payable,stateMutability:n.stateMutability,gas:r.gas?em.BigNumber.from(r.gas):null};return new e(go,i)},e.fromString=function(r){var n={type:"function"};r=G6(r,n);var i=r.split(" returns ");i.length>2&&He.throwArgumentError("invalid function string","value",r);var a=i[0].match(Gu);if(a||He.throwArgumentError("invalid function signature","value",r),n.name=a[1].trim(),n.name&&zu(n.name),n.inputs=Hu(a[2],!1),X6(a[3].trim(),n),i.length>1){var o=i[1].match(Gu);(o[1].trim()!=""||o[3].trim()!="")&&He.throwArgumentError("unexpected tokens","value",r),n.outputs=Hu(o[2],!1)}else n.outputs=[];return e.fromObject(n)},e.isFunctionFragment=function(r){return r&&r._isFragment&&r.type==="function"},e}(wd);te.FunctionFragment=Yv;function z6(t){var e=t.format();return(e==="Error(string)"||e==="Panic(uint256)")&&He.throwArgumentError("cannot specify user defined "+e+" error","fragment",t),t}var $v=function(t){Ad(e,t);function e(){return t!==null&&t.apply(this,arguments)||this}return e.prototype.format=function(r){if(r||(r=te.FormatTypes.sighash),te.FormatTypes[r]||He.throwArgumentError("invalid format type","format",r),r===te.FormatTypes.json)return JSON.stringify({type:"error",name:this.name,inputs:this.inputs.map(function(i){return JSON.parse(i.format(r))})});var n="";return r!==te.FormatTypes.sighash&&(n+="error "),n+=this.name+"("+this.inputs.map(function(i){return i.format(r)}).join(r===te.FormatTypes.full?", ":",")+") ",n.trim()},e.from=function(r){return typeof r=="string"?e.fromString(r):e.fromObject(r)},e.fromObject=function(r){if(e.isErrorFragment(r))return r;r.type!=="error"&&He.throwArgumentError("invalid error object","value",r);var n={type:r.type,name:zu(r.name),inputs:r.inputs?r.inputs.map(xo.fromObject):[]};return z6(new e(go,n))},e.fromString=function(r){var n={type:"error"},i=r.match(Gu);return i||He.throwArgumentError("invalid error signature","value",r),n.name=i[1].trim(),n.name&&zu(n.name),n.inputs=Hu(i[2],!1),z6(e.fromObject(n))},e.isErrorFragment=function(r){return r&&r._isFragment&&r.type==="error"},e}(Sd);te.ErrorFragment=$v;function Fs(t){return t.match(/^uint($|[^1-9])/)?t="uint256"+t.substring(4):t.match(/^int($|[^1-9])/)&&(t="int256"+t.substring(3)),t}var lD=new RegExp("^[a-zA-Z$_][a-zA-Z0-9$_]*$");function zu(t){return(!t||!t.match(lD))&&He.throwArgumentError('invalid identifier "'+t+'"',"value",t),t}var Gu=new RegExp("^([^)(]*)\\((.*)\\)([^)(]*)$");function fD(t){t=t.trim();for(var e=[],r="",n=0,i=0;i{"use strict";Object.defineProperty(Wn,"__esModule",{value:!0});Wn.Reader=Wn.Writer=Wn.Coder=Wn.checkResultErrors=void 0;var oa=De(),V6=Tr(),Xu=Ve(),rm=re(),dD=Bs(),tm=new rm.Logger(dD.version);function pD(t){var e=[],r=function(n,i){if(!!Array.isArray(i))for(var a in i){var o=n.slice();o.push(a);try{r(o,i[a])}catch(c){e.push({path:o,error:c})}}};return r([],t),e}Wn.checkResultErrors=pD;var hD=function(){function t(e,r,n,i){this.name=e,this.type=r,this.localName=n,this.dynamic=i}return t.prototype._throwError=function(e,r){tm.throwArgumentError(e,this.localName,r)},t}();Wn.Coder=hD;var vD=function(){function t(e){(0,Xu.defineReadOnly)(this,"wordSize",e||32),this._data=[],this._dataLength=0,this._padding=new Uint8Array(e)}return Object.defineProperty(t.prototype,"data",{get:function(){return(0,oa.hexConcat)(this._data)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"length",{get:function(){return this._dataLength},enumerable:!1,configurable:!0}),t.prototype._writeData=function(e){return this._data.push(e),this._dataLength+=e.length,e.length},t.prototype.appendWriter=function(e){return this._writeData((0,oa.concat)(e._data))},t.prototype.writeBytes=function(e){var r=(0,oa.arrayify)(e),n=r.length%this.wordSize;return n&&(r=(0,oa.concat)([r,this._padding.slice(n)])),this._writeData(r)},t.prototype._getValue=function(e){var r=(0,oa.arrayify)(V6.BigNumber.from(e));return r.length>this.wordSize&&tm.throwError("value out-of-bounds",rm.Logger.errors.BUFFER_OVERRUN,{length:this.wordSize,offset:r.length}),r.length%this.wordSize&&(r=(0,oa.concat)([this._padding.slice(r.length%this.wordSize),r])),r},t.prototype.writeValue=function(e){return this._writeData(this._getValue(e))},t.prototype.writeUpdatableValue=function(){var e=this,r=this._data.length;return this._data.push(this._padding),this._dataLength+=this.wordSize,function(n){e._data[r]=e._getValue(n)}},t}();Wn.Writer=vD;var mD=function(){function t(e,r,n,i){(0,Xu.defineReadOnly)(this,"_data",(0,oa.arrayify)(e)),(0,Xu.defineReadOnly)(this,"wordSize",r||32),(0,Xu.defineReadOnly)(this,"_coerceFunc",n),(0,Xu.defineReadOnly)(this,"allowLoose",i),this._offset=0}return Object.defineProperty(t.prototype,"data",{get:function(){return(0,oa.hexlify)(this._data)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"consumed",{get:function(){return this._offset},enumerable:!1,configurable:!0}),t.coerce=function(e,r){var n=e.match("^u?int([0-9]+)$");return n&&parseInt(n[1])<=48&&(r=r.toNumber()),r},t.prototype.coerce=function(e,r){return this._coerceFunc?this._coerceFunc(e,r):t.coerce(e,r)},t.prototype._peekBytes=function(e,r,n){var i=Math.ceil(r/this.wordSize)*this.wordSize;return this._offset+i>this._data.length&&(this.allowLoose&&n&&this._offset+r<=this._data.length?i=r:tm.throwError("data out-of-bounds",rm.Logger.errors.BUFFER_OVERRUN,{length:this._data.length,offset:this._offset+i})),this._data.slice(this._offset,this._offset+i)},t.prototype.subReader=function(e){return new t(this._data.slice(this._offset+e),this.wordSize,this._coerceFunc,this.allowLoose)},t.prototype.readBytes=function(e,r){var n=this._peekBytes(0,e,!!r);return this._offset+=n.length,n.slice(0,e)},t.prototype.readValue=function(){return V6.BigNumber.from(this.readBytes(this.wordSize))},t}();Wn.Reader=mD});var Z6=P((q$,Td)=>{(function(){"use strict";var t="input is invalid type",e="finalize already called",r=typeof window=="object",n=r?window:{};n.JS_SHA3_NO_WINDOW&&(r=!1);var i=!r&&typeof self=="object",a=!n.JS_SHA3_NO_NODE_JS&&typeof process=="object"&&process.versions&&process.versions.node;a?n=global:i&&(n=self);var o=!n.JS_SHA3_NO_COMMON_JS&&typeof Td=="object"&&Td.exports,c=typeof define=="function"&&define.amd,u=!n.JS_SHA3_NO_ARRAY_BUFFER&&typeof ArrayBuffer<"u",s="0123456789abcdef".split(""),f=[31,7936,2031616,520093696],m=[4,1024,262144,67108864],w=[1,256,65536,16777216],T=[6,1536,393216,100663296],A=[0,8,16,24],O=[1,0,32898,0,32906,2147483648,2147516416,2147483648,32907,0,2147483649,0,2147516545,2147483648,32777,2147483648,138,0,136,0,2147516425,0,2147483658,0,2147516555,0,139,2147483648,32905,2147483648,32771,2147483648,32770,2147483648,128,2147483648,32778,0,2147483658,2147483648,2147516545,2147483648,32896,2147483648,2147483649,0,2147516424,2147483648],B=[224,256,384,512],F=[128,256],I=["hex","buffer","arrayBuffer","array","digest"],D={128:168,256:136};(n.JS_SHA3_NO_NODE_JS||!Array.isArray)&&(Array.isArray=function(_){return Object.prototype.toString.call(_)==="[object Array]"}),u&&(n.JS_SHA3_NO_ARRAY_BUFFER_IS_VIEW||!ArrayBuffer.isView)&&(ArrayBuffer.isView=function(_){return typeof _=="object"&&_.buffer&&_.buffer.constructor===ArrayBuffer});for(var z=function(_,L,N){return function(q){return new h(_,L,_).update(q)[N]()}},G=function(_,L,N){return function(q,H){return new h(_,L,H).update(q)[N]()}},j=function(_,L,N){return function(q,H,W,V){return l["cshake"+_].update(q,H,W,V)[N]()}},Z=function(_,L,N){return function(q,H,W,V){return l["kmac"+_].update(q,H,W,V)[N]()}},X=function(_,L,N,q){for(var H=0;H>5,this.byteCount=this.blockCount<<2,this.outputBlocks=N>>5,this.extraBytes=(N&31)>>3;for(var q=0;q<50;++q)this.s[q]=0}h.prototype.update=function(_){if(this.finalized)throw new Error(e);var L,N=typeof _;if(N!=="string"){if(N==="object"){if(_===null)throw new Error(t);if(u&&_.constructor===ArrayBuffer)_=new Uint8Array(_);else if(!Array.isArray(_)&&(!u||!ArrayBuffer.isView(_)))throw new Error(t)}else throw new Error(t);L=!0}for(var q=this.blocks,H=this.byteCount,W=_.length,V=this.blockCount,K=0,ur=this.s,Q,Y;K>2]|=_[K]<>2]|=Y<>2]|=(192|Y>>6)<>2]|=(128|Y&63)<=57344?(q[Q>>2]|=(224|Y>>12)<>2]|=(128|Y>>6&63)<>2]|=(128|Y&63)<>2]|=(240|Y>>18)<>2]|=(128|Y>>12&63)<>2]|=(128|Y>>6&63)<>2]|=(128|Y&63)<=H){for(this.start=Q-H,this.block=q[V],Q=0;Q>8,N=_&255;N>0;)H.unshift(N),_=_>>8,N=_&255,++q;return L?H.push(q):H.unshift(q),this.update(H),H.length},h.prototype.encodeString=function(_){var L,N=typeof _;if(N!=="string"){if(N==="object"){if(_===null)throw new Error(t);if(u&&_.constructor===ArrayBuffer)_=new Uint8Array(_);else if(!Array.isArray(_)&&(!u||!ArrayBuffer.isView(_)))throw new Error(t)}else throw new Error(t);L=!0}var q=0,H=_.length;if(L)q=H;else for(var W=0;W<_.length;++W){var V=_.charCodeAt(W);V<128?q+=1:V<2048?q+=2:V<55296||V>=57344?q+=3:(V=65536+((V&1023)<<10|_.charCodeAt(++W)&1023),q+=4)}return q+=this.encode(q*8),this.update(_),q},h.prototype.bytepad=function(_,L){for(var N=this.encode(L),q=0;q<_.length;++q)N+=this.encodeString(_[q]);var H=L-N%L,W=[];return W.length=H,this.update(W),this},h.prototype.finalize=function(){if(!this.finalized){this.finalized=!0;var _=this.blocks,L=this.lastByteIndex,N=this.blockCount,q=this.s;if(_[L>>2]|=this.padding[L&3],this.lastByteIndex===this.byteCount)for(_[0]=_[N],L=1;L>4&15]+s[K&15]+s[K>>12&15]+s[K>>8&15]+s[K>>20&15]+s[K>>16&15]+s[K>>28&15]+s[K>>24&15];W%_===0&&(J(L),H=0)}return q&&(K=L[H],V+=s[K>>4&15]+s[K&15],q>1&&(V+=s[K>>12&15]+s[K>>8&15]),q>2&&(V+=s[K>>20&15]+s[K>>16&15])),V},h.prototype.arrayBuffer=function(){this.finalize();var _=this.blockCount,L=this.s,N=this.outputBlocks,q=this.extraBytes,H=0,W=0,V=this.outputBits>>3,K;q?K=new ArrayBuffer(N+1<<2):K=new ArrayBuffer(V);for(var ur=new Uint32Array(K);W>8&255,V[K+2]=ur>>16&255,V[K+3]=ur>>24&255;W%_===0&&J(L)}return q&&(K=W<<2,ur=L[H],V[K]=ur&255,q>1&&(V[K+1]=ur>>8&255),q>2&&(V[K+2]=ur>>16&255)),V};function k(_,L,N){h.call(this,_,L,N)}k.prototype=new h,k.prototype.finalize=function(){return this.encode(this.outputBits,!0),h.prototype.finalize.call(this)};var J=function(_){var L,N,q,H,W,V,K,ur,Q,Y,_n,ne,ie,Tn,ae,oe,kn,se,ce,Cn,ue,le,On,fe,de,Pn,pe,he,Mn,ve,me,Bn,be,ge,Fn,xe,ye,Ln,we,Ae,Rn,Ee,Se,In,_e,Te,Nn,ke,Ce,Dn,Oe,Pe,Jn,Me,Be,ln,tr,nr,It,Nt,Dt,Jt,qt;for(q=0;q<48;q+=2)H=_[0]^_[10]^_[20]^_[30]^_[40],W=_[1]^_[11]^_[21]^_[31]^_[41],V=_[2]^_[12]^_[22]^_[32]^_[42],K=_[3]^_[13]^_[23]^_[33]^_[43],ur=_[4]^_[14]^_[24]^_[34]^_[44],Q=_[5]^_[15]^_[25]^_[35]^_[45],Y=_[6]^_[16]^_[26]^_[36]^_[46],_n=_[7]^_[17]^_[27]^_[37]^_[47],ne=_[8]^_[18]^_[28]^_[38]^_[48],ie=_[9]^_[19]^_[29]^_[39]^_[49],L=ne^(V<<1|K>>>31),N=ie^(K<<1|V>>>31),_[0]^=L,_[1]^=N,_[10]^=L,_[11]^=N,_[20]^=L,_[21]^=N,_[30]^=L,_[31]^=N,_[40]^=L,_[41]^=N,L=H^(ur<<1|Q>>>31),N=W^(Q<<1|ur>>>31),_[2]^=L,_[3]^=N,_[12]^=L,_[13]^=N,_[22]^=L,_[23]^=N,_[32]^=L,_[33]^=N,_[42]^=L,_[43]^=N,L=V^(Y<<1|_n>>>31),N=K^(_n<<1|Y>>>31),_[4]^=L,_[5]^=N,_[14]^=L,_[15]^=N,_[24]^=L,_[25]^=N,_[34]^=L,_[35]^=N,_[44]^=L,_[45]^=N,L=ur^(ne<<1|ie>>>31),N=Q^(ie<<1|ne>>>31),_[6]^=L,_[7]^=N,_[16]^=L,_[17]^=N,_[26]^=L,_[27]^=N,_[36]^=L,_[37]^=N,_[46]^=L,_[47]^=N,L=Y^(H<<1|W>>>31),N=_n^(W<<1|H>>>31),_[8]^=L,_[9]^=N,_[18]^=L,_[19]^=N,_[28]^=L,_[29]^=N,_[38]^=L,_[39]^=N,_[48]^=L,_[49]^=N,Tn=_[0],ae=_[1],Te=_[11]<<4|_[10]>>>28,Nn=_[10]<<4|_[11]>>>28,he=_[20]<<3|_[21]>>>29,Mn=_[21]<<3|_[20]>>>29,Nt=_[31]<<9|_[30]>>>23,Dt=_[30]<<9|_[31]>>>23,Ee=_[40]<<18|_[41]>>>14,Se=_[41]<<18|_[40]>>>14,ge=_[2]<<1|_[3]>>>31,Fn=_[3]<<1|_[2]>>>31,oe=_[13]<<12|_[12]>>>20,kn=_[12]<<12|_[13]>>>20,ke=_[22]<<10|_[23]>>>22,Ce=_[23]<<10|_[22]>>>22,ve=_[33]<<13|_[32]>>>19,me=_[32]<<13|_[33]>>>19,Jt=_[42]<<2|_[43]>>>30,qt=_[43]<<2|_[42]>>>30,Me=_[5]<<30|_[4]>>>2,Be=_[4]<<30|_[5]>>>2,xe=_[14]<<6|_[15]>>>26,ye=_[15]<<6|_[14]>>>26,se=_[25]<<11|_[24]>>>21,ce=_[24]<<11|_[25]>>>21,Dn=_[34]<<15|_[35]>>>17,Oe=_[35]<<15|_[34]>>>17,Bn=_[45]<<29|_[44]>>>3,be=_[44]<<29|_[45]>>>3,fe=_[6]<<28|_[7]>>>4,de=_[7]<<28|_[6]>>>4,ln=_[17]<<23|_[16]>>>9,tr=_[16]<<23|_[17]>>>9,Ln=_[26]<<25|_[27]>>>7,we=_[27]<<25|_[26]>>>7,Cn=_[36]<<21|_[37]>>>11,ue=_[37]<<21|_[36]>>>11,Pe=_[47]<<24|_[46]>>>8,Jn=_[46]<<24|_[47]>>>8,In=_[8]<<27|_[9]>>>5,_e=_[9]<<27|_[8]>>>5,Pn=_[18]<<20|_[19]>>>12,pe=_[19]<<20|_[18]>>>12,nr=_[29]<<7|_[28]>>>25,It=_[28]<<7|_[29]>>>25,Ae=_[38]<<8|_[39]>>>24,Rn=_[39]<<8|_[38]>>>24,le=_[48]<<14|_[49]>>>18,On=_[49]<<14|_[48]>>>18,_[0]=Tn^~oe&se,_[1]=ae^~kn&ce,_[10]=fe^~Pn&he,_[11]=de^~pe&Mn,_[20]=ge^~xe&Ln,_[21]=Fn^~ye&we,_[30]=In^~Te&ke,_[31]=_e^~Nn&Ce,_[40]=Me^~ln&nr,_[41]=Be^~tr&It,_[2]=oe^~se&Cn,_[3]=kn^~ce&ue,_[12]=Pn^~he&ve,_[13]=pe^~Mn&me,_[22]=xe^~Ln&Ae,_[23]=ye^~we&Rn,_[32]=Te^~ke&Dn,_[33]=Nn^~Ce&Oe,_[42]=ln^~nr&Nt,_[43]=tr^~It&Dt,_[4]=se^~Cn&le,_[5]=ce^~ue&On,_[14]=he^~ve&Bn,_[15]=Mn^~me&be,_[24]=Ln^~Ae&Ee,_[25]=we^~Rn&Se,_[34]=ke^~Dn&Pe,_[35]=Ce^~Oe&Jn,_[44]=nr^~Nt&Jt,_[45]=It^~Dt&qt,_[6]=Cn^~le&Tn,_[7]=ue^~On&ae,_[16]=ve^~Bn&fe,_[17]=me^~be&de,_[26]=Ae^~Ee&ge,_[27]=Rn^~Se&Fn,_[36]=Dn^~Pe&In,_[37]=Oe^~Jn&_e,_[46]=Nt^~Jt&Me,_[47]=Dt^~qt&Be,_[8]=le^~Tn&oe,_[9]=On^~ae&kn,_[18]=Bn^~fe&Pn,_[19]=be^~de&pe,_[28]=Ee^~ge&xe,_[29]=Se^~Fn&ye,_[38]=Pe^~In&Te,_[39]=Jn^~_e&Nn,_[48]=Jt^~Me&ln,_[49]=qt^~Be&tr,_[0]^=O[q],_[1]^=O[q+1]};if(o)Td.exports=l;else{for(g=0;g{"use strict";var bD=Ls&&Ls.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(Ls,"__esModule",{value:!0});Ls.keccak256=void 0;var gD=bD(Z6()),xD=De();function yD(t){return"0x"+gD.default.keccak_256((0,xD.arrayify)(t))}Ls.keccak256=yD});var Q6=P(kd=>{"use strict";Object.defineProperty(kd,"__esModule",{value:!0});kd.version=void 0;kd.version="rlp/5.7.0"});var Cd=P(Rs=>{"use strict";Object.defineProperty(Rs,"__esModule",{value:!0});Rs.decode=Rs.encode=void 0;var yo=De(),Mi=re(),wD=Q6(),Yn=new Mi.Logger(wD.version);function W6(t){for(var e=[];t;)e.unshift(t&255),t>>=8;return e}function Y6(t,e,r){for(var n=0,i=0;ie+1+n&&Yn.throwError("child data too short",Mi.Logger.errors.BUFFER_OVERRUN,{})}return{consumed:1+n,result:i}}function r5(t,e){if(t.length===0&&Yn.throwError("data too short",Mi.Logger.errors.BUFFER_OVERRUN,{}),t[e]>=248){var r=t[e]-247;e+1+r>t.length&&Yn.throwError("data short segment too short",Mi.Logger.errors.BUFFER_OVERRUN,{});var n=Y6(t,e+1,r);return e+1+r+n>t.length&&Yn.throwError("data long segment too short",Mi.Logger.errors.BUFFER_OVERRUN,{}),$6(t,e,e+1+r,r+n)}else if(t[e]>=192){var i=t[e]-192;return e+1+i>t.length&&Yn.throwError("data array too short",Mi.Logger.errors.BUFFER_OVERRUN,{}),$6(t,e,e+1,i)}else if(t[e]>=184){var r=t[e]-183;e+1+r>t.length&&Yn.throwError("data array too short",Mi.Logger.errors.BUFFER_OVERRUN,{});var a=Y6(t,e+1,r);e+1+r+a>t.length&&Yn.throwError("data array too short",Mi.Logger.errors.BUFFER_OVERRUN,{});var o=(0,yo.hexlify)(t.slice(e+1+r,e+1+r+a));return{consumed:1+r+a,result:o}}else if(t[e]>=128){var c=t[e]-128;e+1+c>t.length&&Yn.throwError("data too short",Mi.Logger.errors.BUFFER_OVERRUN,{});var o=(0,yo.hexlify)(t.slice(e+1,e+1+c));return{consumed:1+c,result:o}}return{consumed:1,result:(0,yo.hexlify)(t[e])}}function ED(t){var e=(0,yo.arrayify)(t),r=r5(e,0);return r.consumed!==e.length&&Yn.throwArgumentError("invalid rlp data","data",t),r.result}Rs.decode=ED});var t5=P(Od=>{"use strict";Object.defineProperty(Od,"__esModule",{value:!0});Od.version=void 0;Od.version="address/5.7.0"});var Vt=P(Kt=>{"use strict";Object.defineProperty(Kt,"__esModule",{value:!0});Kt.getCreate2Address=Kt.getContractAddress=Kt.getIcapAddress=Kt.isAddress=Kt.getAddress=void 0;var Bi=De(),nm=Tr(),im=Bt(),SD=Cd(),_D=re(),TD=t5(),sa=new _D.Logger(TD.version);function n5(t){(0,Bi.isHexString)(t,20)||sa.throwArgumentError("invalid address","address",t),t=t.toLowerCase();for(var e=t.substring(2).split(""),r=new Uint8Array(40),n=0;n<40;n++)r[n]=e[n].charCodeAt(0);for(var i=(0,Bi.arrayify)((0,im.keccak256)(r)),n=0;n<40;n+=2)i[n>>1]>>4>=8&&(e[n]=e[n].toUpperCase()),(i[n>>1]&15)>=8&&(e[n+1]=e[n+1].toUpperCase());return"0x"+e.join("")}var kD=9007199254740991;function CD(t){return Math.log10?Math.log10(t):Math.log(t)/Math.LN10}var am={};for(mn=0;mn<10;mn++)am[String(mn)]=String(mn);var mn;for(mn=0;mn<26;mn++)am[String.fromCharCode(65+mn)]=String(10+mn);var mn,i5=Math.floor(CD(kD));function a5(t){t=t.toUpperCase(),t=t.substring(4)+t.substring(0,2)+"00";for(var e=t.split("").map(function(i){return am[i]}).join("");e.length>=i5;){var r=e.substring(0,i5);e=parseInt(r,10)%97+e.substring(r.length)}for(var n=String(98-parseInt(e,10)%97);n.length<2;)n="0"+n;return n}function wo(t){var e=null;if(typeof t!="string"&&sa.throwArgumentError("invalid address","address",t),t.match(/^(0x)?[0-9a-fA-F]{40}$/))t.substring(0,2)!=="0x"&&(t="0x"+t),e=n5(t),t.match(/([A-F].*[a-f])|([a-f].*[A-F])/)&&e!==t&&sa.throwArgumentError("bad address checksum","address",t);else if(t.match(/^XE[0-9]{2}[0-9A-Za-z]{30,31}$/)){for(t.substring(2,4)!==a5(t)&&sa.throwArgumentError("bad icap checksum","address",t),e=(0,nm._base36To16)(t.substring(4));e.length<40;)e="0"+e;e=n5("0x"+e)}else sa.throwArgumentError("invalid address","address",t);return e}Kt.getAddress=wo;function OD(t){try{return wo(t),!0}catch{}return!1}Kt.isAddress=OD;function PD(t){for(var e=(0,nm._base16To36)(wo(t).substring(2)).toUpperCase();e.length<30;)e="0"+e;return"XE"+a5("XE00"+e)+e}Kt.getIcapAddress=PD;function MD(t){var e=null;try{e=wo(t.from)}catch{sa.throwArgumentError("missing from address","transaction",t)}var r=(0,Bi.stripZeros)((0,Bi.arrayify)(nm.BigNumber.from(t.nonce).toHexString()));return wo((0,Bi.hexDataSlice)((0,im.keccak256)((0,SD.encode)([e,r])),12))}Kt.getContractAddress=MD;function BD(t,e,r){return(0,Bi.hexDataLength)(e)!==32&&sa.throwArgumentError("salt must be 32 bytes","salt",e),(0,Bi.hexDataLength)(r)!==32&&sa.throwArgumentError("initCodeHash must be 32 bytes","initCodeHash",r),wo((0,Bi.hexDataSlice)((0,im.keccak256)((0,Bi.concat)(["0xff",wo(t),e,r])),12))}Kt.getCreate2Address=BD});var s5=P(Is=>{"use strict";var FD=Is&&Is.__extends||function(){var t=function(e,r){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,i){n.__proto__=i}||function(n,i){for(var a in i)Object.prototype.hasOwnProperty.call(i,a)&&(n[a]=i[a])},t(e,r)};return function(e,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");t(e,r);function n(){this.constructor=e}e.prototype=r===null?Object.create(r):(n.prototype=r.prototype,new n)}}();Object.defineProperty(Is,"__esModule",{value:!0});Is.AddressCoder=void 0;var o5=Vt(),LD=De(),RD=Xt(),ID=function(t){FD(e,t);function e(r){return t.call(this,"address","address",r,!1)||this}return e.prototype.defaultValue=function(){return"0x0000000000000000000000000000000000000000"},e.prototype.encode=function(r,n){try{n=(0,o5.getAddress)(n)}catch(i){this._throwError(i.message,n)}return r.writeValue(n)},e.prototype.decode=function(r){return(0,o5.getAddress)((0,LD.hexZeroPad)(r.readValue().toHexString(),20))},e}(RD.Coder);Is.AddressCoder=ID});var c5=P(Ns=>{"use strict";var ND=Ns&&Ns.__extends||function(){var t=function(e,r){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,i){n.__proto__=i}||function(n,i){for(var a in i)Object.prototype.hasOwnProperty.call(i,a)&&(n[a]=i[a])},t(e,r)};return function(e,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");t(e,r);function n(){this.constructor=e}e.prototype=r===null?Object.create(r):(n.prototype=r.prototype,new n)}}();Object.defineProperty(Ns,"__esModule",{value:!0});Ns.AnonymousCoder=void 0;var DD=Xt(),JD=function(t){ND(e,t);function e(r){var n=t.call(this,r.name,r.type,void 0,r.dynamic)||this;return n.coder=r,n}return e.prototype.defaultValue=function(){return this.coder.defaultValue()},e.prototype.encode=function(r,n){return this.coder.encode(r,n)},e.prototype.decode=function(r){return this.coder.decode(r)},e}(DD.Coder);Ns.AnonymousCoder=JD});var sm=P($n=>{"use strict";var qD=$n&&$n.__extends||function(){var t=function(e,r){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,i){n.__proto__=i}||function(n,i){for(var a in i)Object.prototype.hasOwnProperty.call(i,a)&&(n[a]=i[a])},t(e,r)};return function(e,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");t(e,r);function n(){this.constructor=e}e.prototype=r===null?Object.create(r):(n.prototype=r.prototype,new n)}}();Object.defineProperty($n,"__esModule",{value:!0});$n.ArrayCoder=$n.unpack=$n.pack=void 0;var Js=re(),jD=Bs(),Ds=new Js.Logger(jD.version),om=Xt(),UD=c5();function u5(t,e,r){var n=null;if(Array.isArray(r))n=r;else if(r&&typeof r=="object"){var i={};n=e.map(function(s){var f=s.localName;return f||Ds.throwError("cannot encode object for signature with missing names",Js.Logger.errors.INVALID_ARGUMENT,{argument:"values",coder:s,value:r}),i[f]&&Ds.throwError("cannot encode object for signature with duplicate names",Js.Logger.errors.INVALID_ARGUMENT,{argument:"values",coder:s,value:r}),i[f]=!0,r[f]})}else Ds.throwArgumentError("invalid tuple value","tuple",r);e.length!==n.length&&Ds.throwArgumentError("types/value length mismatch","tuple",r);var a=new om.Writer(t.wordSize),o=new om.Writer(t.wordSize),c=[];e.forEach(function(s,f){var m=n[f];if(s.dynamic){var w=o.length;s.encode(o,m);var T=a.writeUpdatableValue();c.push(function(A){T(A+w)})}else s.encode(a,m)}),c.forEach(function(s){s(a.length)});var u=t.appendWriter(a);return u+=t.appendWriter(o),u}$n.pack=u5;function l5(t,e){var r=[],n=t.subReader(0);e.forEach(function(c){var u=null;if(c.dynamic){var s=t.readValue(),f=n.subReader(s.toNumber());try{u=c.decode(f)}catch(m){if(m.code===Js.Logger.errors.BUFFER_OVERRUN)throw m;u=m,u.baseType=c.name,u.name=c.localName,u.type=c.type}}else try{u=c.decode(t)}catch(m){if(m.code===Js.Logger.errors.BUFFER_OVERRUN)throw m;u=m,u.baseType=c.name,u.name=c.localName,u.type=c.type}u!=null&&r.push(u)});var i=e.reduce(function(c,u){var s=u.localName;return s&&(c[s]||(c[s]=0),c[s]++),c},{});e.forEach(function(c,u){var s=c.localName;if(!(!s||i[s]!==1)&&(s==="length"&&(s="_length"),r[s]==null)){var f=r[u];f instanceof Error?Object.defineProperty(r,s,{enumerable:!0,get:function(){throw f}}):r[s]=f}});for(var a=function(c){var u=r[c];u instanceof Error&&Object.defineProperty(r,c,{enumerable:!0,get:function(){throw u}})},o=0;o=0?n:"")+"]",c=n===-1||r.dynamic;return a=t.call(this,"array",o,i,c)||this,a.coder=r,a.length=n,a}return e.prototype.defaultValue=function(){for(var r=this.coder.defaultValue(),n=[],i=0;ir._data.length&&Ds.throwError("insufficient data length",Js.Logger.errors.BUFFER_OVERRUN,{length:r._data.length,count:n}));for(var i=[],a=0;a{"use strict";var zD=qs&&qs.__extends||function(){var t=function(e,r){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,i){n.__proto__=i}||function(n,i){for(var a in i)Object.prototype.hasOwnProperty.call(i,a)&&(n[a]=i[a])},t(e,r)};return function(e,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");t(e,r);function n(){this.constructor=e}e.prototype=r===null?Object.create(r):(n.prototype=r.prototype,new n)}}();Object.defineProperty(qs,"__esModule",{value:!0});qs.BooleanCoder=void 0;var GD=Xt(),XD=function(t){zD(e,t);function e(r){return t.call(this,"bool","bool",r,!1)||this}return e.prototype.defaultValue=function(){return!1},e.prototype.encode=function(r,n){return r.writeValue(n?1:0)},e.prototype.decode=function(r){return r.coerce(this.type,!r.readValue().isZero())},e}(GD.Coder);qs.BooleanCoder=XD});var cm=P(ca=>{"use strict";var d5=ca&&ca.__extends||function(){var t=function(e,r){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,i){n.__proto__=i}||function(n,i){for(var a in i)Object.prototype.hasOwnProperty.call(i,a)&&(n[a]=i[a])},t(e,r)};return function(e,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");t(e,r);function n(){this.constructor=e}e.prototype=r===null?Object.create(r):(n.prototype=r.prototype,new n)}}();Object.defineProperty(ca,"__esModule",{value:!0});ca.BytesCoder=ca.DynamicBytesCoder=void 0;var p5=De(),KD=Xt(),h5=function(t){d5(e,t);function e(r,n){return t.call(this,r,r,n,!0)||this}return e.prototype.defaultValue=function(){return"0x"},e.prototype.encode=function(r,n){n=(0,p5.arrayify)(n);var i=r.writeValue(n.length);return i+=r.writeBytes(n),i},e.prototype.decode=function(r){return r.readBytes(r.readValue().toNumber(),!0)},e}(KD.Coder);ca.DynamicBytesCoder=h5;var VD=function(t){d5(e,t);function e(r){return t.call(this,"bytes",r)||this}return e.prototype.decode=function(r){return r.coerce(this.name,(0,p5.hexlify)(t.prototype.decode.call(this,r)))},e}(h5);ca.BytesCoder=VD});var m5=P(js=>{"use strict";var ZD=js&&js.__extends||function(){var t=function(e,r){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,i){n.__proto__=i}||function(n,i){for(var a in i)Object.prototype.hasOwnProperty.call(i,a)&&(n[a]=i[a])},t(e,r)};return function(e,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");t(e,r);function n(){this.constructor=e}e.prototype=r===null?Object.create(r):(n.prototype=r.prototype,new n)}}();Object.defineProperty(js,"__esModule",{value:!0});js.FixedBytesCoder=void 0;var v5=De(),QD=Xt(),WD=function(t){ZD(e,t);function e(r,n){var i=this,a="bytes"+String(r);return i=t.call(this,a,a,n,!1)||this,i.size=r,i}return e.prototype.defaultValue=function(){return"0x0000000000000000000000000000000000000000000000000000000000000000".substring(0,2+this.size*2)},e.prototype.encode=function(r,n){var i=(0,v5.arrayify)(n);return i.length!==this.size&&this._throwError("incorrect data length",n),r.writeBytes(i)},e.prototype.decode=function(r){return r.coerce(this.name,(0,v5.hexlify)(r.readBytes(this.size)))},e}(QD.Coder);js.FixedBytesCoder=WD});var b5=P(Us=>{"use strict";var YD=Us&&Us.__extends||function(){var t=function(e,r){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,i){n.__proto__=i}||function(n,i){for(var a in i)Object.prototype.hasOwnProperty.call(i,a)&&(n[a]=i[a])},t(e,r)};return function(e,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");t(e,r);function n(){this.constructor=e}e.prototype=r===null?Object.create(r):(n.prototype=r.prototype,new n)}}();Object.defineProperty(Us,"__esModule",{value:!0});Us.NullCoder=void 0;var $D=Xt(),eJ=function(t){YD(e,t);function e(r){return t.call(this,"null","",r,!1)||this}return e.prototype.defaultValue=function(){return null},e.prototype.encode=function(r,n){return n!=null&&this._throwError("not null",n),r.writeBytes([])},e.prototype.decode=function(r){return r.readBytes(0),r.coerce(this.name,null)},e}($D.Coder);Us.NullCoder=eJ});var g5=P(Pd=>{"use strict";Object.defineProperty(Pd,"__esModule",{value:!0});Pd.AddressZero=void 0;Pd.AddressZero="0x0000000000000000000000000000000000000000"});var x5=P(qr=>{"use strict";Object.defineProperty(qr,"__esModule",{value:!0});qr.MaxInt256=qr.MinInt256=qr.MaxUint256=qr.WeiPerEther=qr.Two=qr.One=qr.Zero=qr.NegativeOne=void 0;var ua=Tr(),rJ=ua.BigNumber.from(-1);qr.NegativeOne=rJ;var tJ=ua.BigNumber.from(0);qr.Zero=tJ;var nJ=ua.BigNumber.from(1);qr.One=nJ;var iJ=ua.BigNumber.from(2);qr.Two=iJ;var aJ=ua.BigNumber.from("1000000000000000000");qr.WeiPerEther=aJ;var oJ=ua.BigNumber.from("0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff");qr.MaxUint256=oJ;var sJ=ua.BigNumber.from("-0x8000000000000000000000000000000000000000000000000000000000000000");qr.MinInt256=sJ;var cJ=ua.BigNumber.from("0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff");qr.MaxInt256=cJ});var y5=P(Md=>{"use strict";Object.defineProperty(Md,"__esModule",{value:!0});Md.HashZero=void 0;Md.HashZero="0x0000000000000000000000000000000000000000000000000000000000000000"});var w5=P(Bd=>{"use strict";Object.defineProperty(Bd,"__esModule",{value:!0});Bd.EtherSymbol=void 0;Bd.EtherSymbol="\u039E"});var Ao=P(dr=>{"use strict";Object.defineProperty(dr,"__esModule",{value:!0});dr.EtherSymbol=dr.HashZero=dr.MaxInt256=dr.MinInt256=dr.MaxUint256=dr.WeiPerEther=dr.Two=dr.One=dr.Zero=dr.NegativeOne=dr.AddressZero=void 0;var uJ=g5();Object.defineProperty(dr,"AddressZero",{enumerable:!0,get:function(){return uJ.AddressZero}});var la=x5();Object.defineProperty(dr,"NegativeOne",{enumerable:!0,get:function(){return la.NegativeOne}});Object.defineProperty(dr,"Zero",{enumerable:!0,get:function(){return la.Zero}});Object.defineProperty(dr,"One",{enumerable:!0,get:function(){return la.One}});Object.defineProperty(dr,"Two",{enumerable:!0,get:function(){return la.Two}});Object.defineProperty(dr,"WeiPerEther",{enumerable:!0,get:function(){return la.WeiPerEther}});Object.defineProperty(dr,"MaxUint256",{enumerable:!0,get:function(){return la.MaxUint256}});Object.defineProperty(dr,"MinInt256",{enumerable:!0,get:function(){return la.MinInt256}});Object.defineProperty(dr,"MaxInt256",{enumerable:!0,get:function(){return la.MaxInt256}});var lJ=y5();Object.defineProperty(dr,"HashZero",{enumerable:!0,get:function(){return lJ.HashZero}});var fJ=w5();Object.defineProperty(dr,"EtherSymbol",{enumerable:!0,get:function(){return fJ.EtherSymbol}})});var A5=P(Hs=>{"use strict";var dJ=Hs&&Hs.__extends||function(){var t=function(e,r){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,i){n.__proto__=i}||function(n,i){for(var a in i)Object.prototype.hasOwnProperty.call(i,a)&&(n[a]=i[a])},t(e,r)};return function(e,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");t(e,r);function n(){this.constructor=e}e.prototype=r===null?Object.create(r):(n.prototype=r.prototype,new n)}}();Object.defineProperty(Hs,"__esModule",{value:!0});Hs.NumberCoder=void 0;var pJ=Tr(),Fd=Ao(),hJ=Xt(),vJ=function(t){dJ(e,t);function e(r,n,i){var a=this,o=(n?"int":"uint")+r*8;return a=t.call(this,o,o,i,!1)||this,a.size=r,a.signed=n,a}return e.prototype.defaultValue=function(){return 0},e.prototype.encode=function(r,n){var i=pJ.BigNumber.from(n),a=Fd.MaxUint256.mask(r.wordSize*8);if(this.signed){var o=a.mask(this.size*8-1);(i.gt(o)||i.lt(o.add(Fd.One).mul(Fd.NegativeOne)))&&this._throwError("value out-of-bounds",n)}else(i.lt(Fd.Zero)||i.gt(a.mask(this.size*8)))&&this._throwError("value out-of-bounds",n);return i=i.toTwos(this.size*8).mask(this.size*8),this.signed&&(i=i.fromTwos(this.size*8).toTwos(8*r.wordSize)),r.writeValue(i)},e.prototype.decode=function(r){var n=r.readValue().mask(this.size*8);return this.signed&&(n=n.fromTwos(this.size*8)),r.coerce(this.name,n)},e}(hJ.Coder);Hs.NumberCoder=vJ});var E5=P(Ld=>{"use strict";Object.defineProperty(Ld,"__esModule",{value:!0});Ld.version=void 0;Ld.version="strings/5.7.0"});var Id=P(wr=>{"use strict";Object.defineProperty(wr,"__esModule",{value:!0});wr.toUtf8CodePoints=wr.toUtf8String=wr._toUtf8String=wr._toEscapedUtf8String=wr.toUtf8Bytes=wr.Utf8ErrorFuncs=wr.Utf8ErrorReason=wr.UnicodeNormalizationForm=void 0;var S5=De(),mJ=re(),bJ=E5(),_5=new mJ.Logger(bJ.version),Rd;(function(t){t.current="",t.NFC="NFC",t.NFD="NFD",t.NFKC="NFKC",t.NFKD="NFKD"})(Rd=wr.UnicodeNormalizationForm||(wr.UnicodeNormalizationForm={}));var Zt;(function(t){t.UNEXPECTED_CONTINUE="unexpected continuation byte",t.BAD_PREFIX="bad codepoint prefix",t.OVERRUN="string overrun",t.MISSING_CONTINUE="missing continuation byte",t.OUT_OF_RANGE="out of UTF-8 range",t.UTF16_SURROGATE="UTF-16 surrogate",t.OVERLONG="overlong representation"})(Zt=wr.Utf8ErrorReason||(wr.Utf8ErrorReason={}));function gJ(t,e,r,n,i){return _5.throwArgumentError("invalid codepoint at offset "+e+"; "+t,"bytes",r)}function T5(t,e,r,n,i){if(t===Zt.BAD_PREFIX||t===Zt.UNEXPECTED_CONTINUE){for(var a=0,o=e+1;o>6===2;o++)a++;return a}return t===Zt.OVERRUN?r.length-e-1:0}function xJ(t,e,r,n,i){return t===Zt.OVERLONG?(n.push(i),0):(n.push(65533),T5(t,e,r,n,i))}wr.Utf8ErrorFuncs=Object.freeze({error:gJ,ignore:T5,replace:xJ});function lm(t,e){e==null&&(e=wr.Utf8ErrorFuncs.error),t=(0,S5.arrayify)(t);for(var r=[],n=0;n>7===0){r.push(i);continue}var a=null,o=null;if((i&224)===192)a=1,o=127;else if((i&240)===224)a=2,o=2047;else if((i&248)===240)a=3,o=65535;else{(i&192)===128?n+=e(Zt.UNEXPECTED_CONTINUE,n-1,t,r):n+=e(Zt.BAD_PREFIX,n-1,t,r);continue}if(n-1+a>=t.length){n+=e(Zt.OVERRUN,n-1,t,r);continue}for(var c=i&(1<<8-a-1)-1,u=0;u1114111){n+=e(Zt.OUT_OF_RANGE,n-1-a,t,r,c);continue}if(c>=55296&&c<=57343){n+=e(Zt.UTF16_SURROGATE,n-1-a,t,r,c);continue}if(c<=o){n+=e(Zt.OVERLONG,n-1-a,t,r,c);continue}r.push(c)}}return r}function k5(t,e){e===void 0&&(e=Rd.current),e!=Rd.current&&(_5.checkNormalize(),t=t.normalize(e));for(var r=[],n=0;n>6|192),r.push(i&63|128);else if((i&64512)==55296){n++;var a=t.charCodeAt(n);if(n>=t.length||(a&64512)!==56320)throw new Error("invalid utf-8 string");var o=65536+((i&1023)<<10)+(a&1023);r.push(o>>18|240),r.push(o>>12&63|128),r.push(o>>6&63|128),r.push(o&63|128)}else r.push(i>>12|224),r.push(i>>6&63|128),r.push(i&63|128)}return(0,S5.arrayify)(r)}wr.toUtf8Bytes=k5;function um(t){var e="0000"+t.toString(16);return"\\u"+e.substring(e.length-4)}function yJ(t,e){return'"'+lm(t,e).map(function(r){if(r<256){switch(r){case 8:return"\\b";case 9:return"\\t";case 10:return"\\n";case 13:return"\\r";case 34:return'\\"';case 92:return"\\\\"}if(r>=32&&r<127)return String.fromCharCode(r)}return r<=65535?um(r):(r-=65536,um((r>>10&1023)+55296)+um((r&1023)+56320))}).join("")+'"'}wr._toEscapedUtf8String=yJ;function C5(t){return t.map(function(e){return e<=65535?String.fromCharCode(e):(e-=65536,String.fromCharCode((e>>10&1023)+55296,(e&1023)+56320))}).join("")}wr._toUtf8String=C5;function wJ(t,e){return C5(lm(t,e))}wr.toUtf8String=wJ;function AJ(t,e){return e===void 0&&(e=Rd.current),lm(k5(t,e))}wr.toUtf8CodePoints=AJ});var P5=P(zs=>{"use strict";Object.defineProperty(zs,"__esModule",{value:!0});zs.parseBytes32String=zs.formatBytes32String=void 0;var EJ=Ao(),fm=De(),O5=Id();function SJ(t){var e=(0,O5.toUtf8Bytes)(t);if(e.length>31)throw new Error("bytes32 string must be less than 32 bytes");return(0,fm.hexlify)((0,fm.concat)([e,EJ.HashZero]).slice(0,32))}zs.formatBytes32String=SJ;function _J(t){var e=(0,fm.arrayify)(t);if(e.length!==32)throw new Error("invalid bytes32 - not 32 bytes long");if(e[31]!==0)throw new Error("invalid bytes32 string - no null terminator");for(var r=31;e[r-1]===0;)r--;return(0,O5.toUtf8String)(e.slice(0,r))}zs.parseBytes32String=_J});var R5=P(ei=>{"use strict";Object.defineProperty(ei,"__esModule",{value:!0});ei.nameprep=ei._nameprepTableC=ei._nameprepTableB2=ei._nameprepTableA1=void 0;var Ku=Id();function TJ(t){if(t.length%4!==0)throw new Error("bad data");for(var e=[],r=0;r=r&&t<=r+i.h&&(t-r)%(i.d||1)===0){if(i.e&&i.e.indexOf(t-r)!==-1)continue;return i}}return null}var kJ=M5("221,13-1b,5f-,40-10,51-f,11-3,3-3,2-2,2-4,8,2,15,2d,28-8,88,48,27-,3-5,11-20,27-,8,28,3-5,12,18,b-a,1c-4,6-16,2-d,2-2,2,1b-4,17-9,8f-,10,f,1f-2,1c-34,33-14e,4,36-,13-,6-2,1a-f,4,9-,3-,17,8,2-2,5-,2,8-,3-,4-8,2-3,3,6-,16-6,2-,7-3,3-,17,8,3,3,3-,2,6-3,3-,4-a,5,2-6,10-b,4,8,2,4,17,8,3,6-,b,4,4-,2-e,2-4,b-10,4,9-,3-,17,8,3-,5-,9-2,3-,4-7,3-3,3,4-3,c-10,3,7-2,4,5-2,3,2,3-2,3-2,4-2,9,4-3,6-2,4,5-8,2-e,d-d,4,9,4,18,b,6-3,8,4,5-6,3-8,3-3,b-11,3,9,4,18,b,6-3,8,4,5-6,3-6,2,3-3,b-11,3,9,4,18,11-3,7-,4,5-8,2-7,3-3,b-11,3,13-2,19,a,2-,8-2,2-3,7,2,9-11,4-b,3b-3,1e-24,3,2-,3,2-,2-5,5,8,4,2,2-,3,e,4-,6,2,7-,b-,3-21,49,23-5,1c-3,9,25,10-,2-2f,23,6,3,8-2,5-5,1b-45,27-9,2a-,2-3,5b-4,45-4,53-5,8,40,2,5-,8,2,5-,28,2,5-,20,2,5-,8,2,5-,8,8,18,20,2,5-,8,28,14-5,1d-22,56-b,277-8,1e-2,52-e,e,8-a,18-8,15-b,e,4,3-b,5e-2,b-15,10,b-5,59-7,2b-555,9d-3,5b-5,17-,7-,27-,7-,9,2,2,2,20-,36,10,f-,7,14-,4,a,54-3,2-6,6-5,9-,1c-10,13-1d,1c-14,3c-,10-6,32-b,240-30,28-18,c-14,a0,115-,3,66-,b-76,5,5-,1d,24,2,5-2,2,8-,35-2,19,f-10,1d-3,311-37f,1b,5a-b,d7-19,d-3,41,57-,68-4,29-3,5f,29-37,2e-2,25-c,2c-2,4e-3,30,78-3,64-,20,19b7-49,51a7-59,48e-2,38-738,2ba5-5b,222f-,3c-94,8-b,6-4,1b,6,2,3,3,6d-20,16e-f,41-,37-7,2e-2,11-f,5-b,18-,b,14,5-3,6,88-,2,bf-2,7-,7-,7-,4-2,8,8-9,8-2ff,20,5-b,1c-b4,27-,27-cbb1,f7-9,28-2,b5-221,56,48,3-,2-,3-,5,d,2,5,3,42,5-,9,8,1d,5,6,2-2,8,153-3,123-3,33-27fd,a6da-5128,21f-5df,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3,2-1d,61-ff7d"),CJ="ad,34f,1806,180b,180c,180d,200b,200c,200d,2060,feff".split(",").map(function(t){return parseInt(t,16)}),OJ=[{h:25,s:32,l:65},{h:30,s:32,e:[23],l:127},{h:54,s:1,e:[48],l:64,d:2},{h:14,s:1,l:57,d:2},{h:44,s:1,l:17,d:2},{h:10,s:1,e:[2,6,8],l:61,d:2},{h:16,s:1,l:68,d:2},{h:84,s:1,e:[18,24,66],l:19,d:2},{h:26,s:32,e:[17],l:435},{h:22,s:1,l:71,d:2},{h:15,s:80,l:40},{h:31,s:32,l:16},{h:32,s:1,l:80,d:2},{h:52,s:1,l:42,d:2},{h:12,s:1,l:55,d:2},{h:40,s:1,e:[38],l:15,d:2},{h:14,s:1,l:48,d:2},{h:37,s:48,l:49},{h:148,s:1,l:6351,d:2},{h:88,s:1,l:160,d:2},{h:15,s:16,l:704},{h:25,s:26,l:854},{h:25,s:32,l:55915},{h:37,s:40,l:1247},{h:25,s:-119711,l:53248},{h:25,s:-119763,l:52},{h:25,s:-119815,l:52},{h:25,s:-119867,e:[1,4,5,7,8,11,12,17],l:52},{h:25,s:-119919,l:52},{h:24,s:-119971,e:[2,7,8,17],l:52},{h:24,s:-120023,e:[2,7,13,15,16,17],l:52},{h:25,s:-120075,l:52},{h:25,s:-120127,l:52},{h:25,s:-120179,l:52},{h:25,s:-120231,l:52},{h:25,s:-120283,l:52},{h:25,s:-120335,l:52},{h:24,s:-119543,e:[17],l:56},{h:24,s:-119601,e:[17],l:58},{h:24,s:-119659,e:[17],l:58},{h:24,s:-119717,e:[17],l:58},{h:24,s:-119775,e:[17],l:58}],PJ=dm("b5:3bc,c3:ff,7:73,2:253,5:254,3:256,1:257,5:259,1:25b,3:260,1:263,2:269,1:268,5:26f,1:272,2:275,7:280,3:283,5:288,3:28a,1:28b,5:292,3f:195,1:1bf,29:19e,125:3b9,8b:3b2,1:3b8,1:3c5,3:3c6,1:3c0,1a:3ba,1:3c1,1:3c3,2:3b8,1:3b5,1bc9:3b9,1c:1f76,1:1f77,f:1f7a,1:1f7b,d:1f78,1:1f79,1:1f7c,1:1f7d,107:63,5:25b,4:68,1:68,1:68,3:69,1:69,1:6c,3:6e,4:70,1:71,1:72,1:72,1:72,7:7a,2:3c9,2:7a,2:6b,1:e5,1:62,1:63,3:65,1:66,2:6d,b:3b3,1:3c0,6:64,1b574:3b8,1a:3c3,20:3b8,1a:3c3,20:3b8,1a:3c3,20:3b8,1a:3c3,20:3b8,1a:3c3"),MJ=dm("179:1,2:1,2:1,5:1,2:1,a:4f,a:1,8:1,2:1,2:1,3:1,5:1,3:1,4:1,2:1,3:1,4:1,8:2,1:1,2:2,1:1,2:2,27:2,195:26,2:25,1:25,1:25,2:40,2:3f,1:3f,33:1,11:-6,1:-9,1ac7:-3a,6d:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,b:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,c:-8,2:-8,2:-8,2:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,49:-8,1:-8,1:-4a,1:-4a,d:-56,1:-56,1:-56,1:-56,d:-8,1:-8,f:-8,1:-8,3:-7"),BJ=dm("df:00730073,51:00690307,19:02BC006E,a7:006A030C,18a:002003B9,16:03B903080301,20:03C503080301,1d7:05650582,190f:00680331,1:00740308,1:0077030A,1:0079030A,1:006102BE,b6:03C50313,2:03C503130300,2:03C503130301,2:03C503130342,2a:1F0003B9,1:1F0103B9,1:1F0203B9,1:1F0303B9,1:1F0403B9,1:1F0503B9,1:1F0603B9,1:1F0703B9,1:1F0003B9,1:1F0103B9,1:1F0203B9,1:1F0303B9,1:1F0403B9,1:1F0503B9,1:1F0603B9,1:1F0703B9,1:1F2003B9,1:1F2103B9,1:1F2203B9,1:1F2303B9,1:1F2403B9,1:1F2503B9,1:1F2603B9,1:1F2703B9,1:1F2003B9,1:1F2103B9,1:1F2203B9,1:1F2303B9,1:1F2403B9,1:1F2503B9,1:1F2603B9,1:1F2703B9,1:1F6003B9,1:1F6103B9,1:1F6203B9,1:1F6303B9,1:1F6403B9,1:1F6503B9,1:1F6603B9,1:1F6703B9,1:1F6003B9,1:1F6103B9,1:1F6203B9,1:1F6303B9,1:1F6403B9,1:1F6503B9,1:1F6603B9,1:1F6703B9,3:1F7003B9,1:03B103B9,1:03AC03B9,2:03B10342,1:03B1034203B9,5:03B103B9,6:1F7403B9,1:03B703B9,1:03AE03B9,2:03B70342,1:03B7034203B9,5:03B703B9,6:03B903080300,1:03B903080301,3:03B90342,1:03B903080342,b:03C503080300,1:03C503080301,1:03C10313,2:03C50342,1:03C503080342,b:1F7C03B9,1:03C903B9,1:03CE03B9,2:03C90342,1:03C9034203B9,5:03C903B9,ac:00720073,5b:00B00063,6:00B00066,d:006E006F,a:0073006D,1:00740065006C,1:0074006D,124f:006800700061,2:00610075,2:006F0076,b:00700061,1:006E0061,1:03BC0061,1:006D0061,1:006B0061,1:006B0062,1:006D0062,1:00670062,3:00700066,1:006E0066,1:03BC0066,4:0068007A,1:006B0068007A,1:006D0068007A,1:00670068007A,1:00740068007A,15:00700061,1:006B00700061,1:006D00700061,1:006700700061,8:00700076,1:006E0076,1:03BC0076,1:006D0076,1:006B0076,1:006D0076,1:00700077,1:006E0077,1:03BC0077,1:006D0077,1:006B0077,1:006D0077,1:006B03C9,1:006D03C9,2:00620071,3:00632215006B0067,1:0063006F002E,1:00640062,1:00670079,2:00680070,2:006B006B,1:006B006D,9:00700068,2:00700070006D,1:00700072,2:00730076,1:00770062,c723:00660066,1:00660069,1:0066006C,1:006600660069,1:00660066006C,1:00730074,1:00730074,d:05740576,1:05740565,1:0574056B,1:057E0576,1:0574056D",TJ),FJ=M5("80-20,2a0-,39c,32,f71,18e,7f2-f,19-7,30-4,7-5,f81-b,5,a800-20ff,4d1-1f,110,fa-6,d174-7,2e84-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,2,1f-5f,ff7f-20001");function LJ(t){return t.reduce(function(e,r){return r.forEach(function(n){e.push(n)}),e},[])}function B5(t){return!!pm(t,kJ)}ei._nameprepTableA1=B5;function F5(t){var e=pm(t,OJ);if(e)return[t+e.s];var r=PJ[t];if(r)return r;var n=MJ[t];if(n)return[t+n[0]];var i=BJ[t];return i||null}ei._nameprepTableB2=F5;function L5(t){return!!pm(t,FJ)}ei._nameprepTableC=L5;function RJ(t){if(t.match(/^[a-z0-9-]*$/i)&&t.length<=59)return t.toLowerCase();var e=(0,Ku.toUtf8CodePoints)(t);e=LJ(e.map(function(n){if(CJ.indexOf(n)>=0)return[];if(n>=65024&&n<=65039)return[];var i=F5(n);return i||[n]})),e=(0,Ku.toUtf8CodePoints)((0,Ku._toUtf8String)(e),Ku.UnicodeNormalizationForm.NFKC),e.forEach(function(n){if(L5(n))throw new Error("STRINGPREP_CONTAINS_PROHIBITED")}),e.forEach(function(n){if(B5(n))throw new Error("STRINGPREP_CONTAINS_UNASSIGNED")});var r=(0,Ku._toUtf8String)(e);if(r.substring(0,1)==="-"||r.substring(2,4)==="--"||r.substring(r.length-1)==="-")throw new Error("invalid hyphen");return r}ei.nameprep=RJ});var Cr=P(xr=>{"use strict";Object.defineProperty(xr,"__esModule",{value:!0});xr.nameprep=xr.parseBytes32String=xr.formatBytes32String=xr.UnicodeNormalizationForm=xr.Utf8ErrorReason=xr.Utf8ErrorFuncs=xr.toUtf8String=xr.toUtf8CodePoints=xr.toUtf8Bytes=xr._toEscapedUtf8String=void 0;var I5=P5();Object.defineProperty(xr,"formatBytes32String",{enumerable:!0,get:function(){return I5.formatBytes32String}});Object.defineProperty(xr,"parseBytes32String",{enumerable:!0,get:function(){return I5.parseBytes32String}});var IJ=R5();Object.defineProperty(xr,"nameprep",{enumerable:!0,get:function(){return IJ.nameprep}});var Eo=Id();Object.defineProperty(xr,"_toEscapedUtf8String",{enumerable:!0,get:function(){return Eo._toEscapedUtf8String}});Object.defineProperty(xr,"toUtf8Bytes",{enumerable:!0,get:function(){return Eo.toUtf8Bytes}});Object.defineProperty(xr,"toUtf8CodePoints",{enumerable:!0,get:function(){return Eo.toUtf8CodePoints}});Object.defineProperty(xr,"toUtf8String",{enumerable:!0,get:function(){return Eo.toUtf8String}});Object.defineProperty(xr,"UnicodeNormalizationForm",{enumerable:!0,get:function(){return Eo.UnicodeNormalizationForm}});Object.defineProperty(xr,"Utf8ErrorFuncs",{enumerable:!0,get:function(){return Eo.Utf8ErrorFuncs}});Object.defineProperty(xr,"Utf8ErrorReason",{enumerable:!0,get:function(){return Eo.Utf8ErrorReason}})});var D5=P(Gs=>{"use strict";var NJ=Gs&&Gs.__extends||function(){var t=function(e,r){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,i){n.__proto__=i}||function(n,i){for(var a in i)Object.prototype.hasOwnProperty.call(i,a)&&(n[a]=i[a])},t(e,r)};return function(e,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");t(e,r);function n(){this.constructor=e}e.prototype=r===null?Object.create(r):(n.prototype=r.prototype,new n)}}();Object.defineProperty(Gs,"__esModule",{value:!0});Gs.StringCoder=void 0;var N5=Cr(),DJ=cm(),JJ=function(t){NJ(e,t);function e(r){return t.call(this,"string",r)||this}return e.prototype.defaultValue=function(){return""},e.prototype.encode=function(r,n){return t.prototype.encode.call(this,r,(0,N5.toUtf8Bytes)(n))},e.prototype.decode=function(r){return(0,N5.toUtf8String)(t.prototype.decode.call(this,r))},e}(DJ.DynamicBytesCoder);Gs.StringCoder=JJ});var q5=P(Xs=>{"use strict";var qJ=Xs&&Xs.__extends||function(){var t=function(e,r){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,i){n.__proto__=i}||function(n,i){for(var a in i)Object.prototype.hasOwnProperty.call(i,a)&&(n[a]=i[a])},t(e,r)};return function(e,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");t(e,r);function n(){this.constructor=e}e.prototype=r===null?Object.create(r):(n.prototype=r.prototype,new n)}}();Object.defineProperty(Xs,"__esModule",{value:!0});Xs.TupleCoder=void 0;var jJ=Xt(),J5=sm(),UJ=function(t){qJ(e,t);function e(r,n){var i=this,a=!1,o=[];r.forEach(function(u){u.dynamic&&(a=!0),o.push(u.type)});var c="tuple("+o.join(",")+")";return i=t.call(this,"tuple",c,n,a)||this,i.coders=r,i}return e.prototype.defaultValue=function(){var r=[];this.coders.forEach(function(i){r.push(i.defaultValue())});var n=this.coders.reduce(function(i,a){var o=a.localName;return o&&(i[o]||(i[o]=0),i[o]++),i},{});return this.coders.forEach(function(i,a){var o=i.localName;!o||n[o]!==1||(o==="length"&&(o="_length"),r[o]==null&&(r[o]=r[a]))}),Object.freeze(r)},e.prototype.encode=function(r,n){return(0,J5.pack)(r,this.coders,n)},e.prototype.decode=function(r){return r.coerce(this.name,(0,J5.unpack)(r,this.coders))},e}(jJ.Coder);Xs.TupleCoder=UJ});var vm=P(Ks=>{"use strict";Object.defineProperty(Ks,"__esModule",{value:!0});Ks.defaultAbiCoder=Ks.AbiCoder=void 0;var HJ=De(),zJ=Ve(),U5=re(),GJ=Bs(),Nd=new U5.Logger(GJ.version),j5=Xt(),XJ=s5(),KJ=sm(),VJ=f5(),ZJ=cm(),QJ=m5(),WJ=b5(),YJ=A5(),$J=D5(),Dd=q5(),hm=_d(),eq=new RegExp(/^bytes([0-9]*)$/),rq=new RegExp(/^(u?int)([0-9]*)$/),H5=function(){function t(e){(0,zJ.defineReadOnly)(this,"coerceFunc",e||null)}return t.prototype._getCoder=function(e){var r=this;switch(e.baseType){case"address":return new XJ.AddressCoder(e.name);case"bool":return new VJ.BooleanCoder(e.name);case"string":return new $J.StringCoder(e.name);case"bytes":return new ZJ.BytesCoder(e.name);case"array":return new KJ.ArrayCoder(this._getCoder(e.arrayChildren),e.arrayLength,e.name);case"tuple":return new Dd.TupleCoder((e.components||[]).map(function(a){return r._getCoder(a)}),e.name);case"":return new WJ.NullCoder(e.name)}var n=e.type.match(rq);if(n){var i=parseInt(n[2]||"256");return(i===0||i>256||i%8!==0)&&Nd.throwArgumentError("invalid "+n[1]+" bit length","param",e),new YJ.NumberCoder(i/8,n[1]==="int",e.name)}if(n=e.type.match(eq),n){var i=parseInt(n[1]);return(i===0||i>32)&&Nd.throwArgumentError("invalid bytes length","param",e),new QJ.FixedBytesCoder(i,e.name)}return Nd.throwArgumentError("invalid type","type",e.type)},t.prototype._getWordSize=function(){return 32},t.prototype._getReader=function(e,r){return new j5.Reader(e,this._getWordSize(),this.coerceFunc,r)},t.prototype._getWriter=function(){return new j5.Writer(this._getWordSize())},t.prototype.getDefaultValue=function(e){var r=this,n=e.map(function(a){return r._getCoder(hm.ParamType.from(a))}),i=new Dd.TupleCoder(n,"_");return i.defaultValue()},t.prototype.encode=function(e,r){var n=this;e.length!==r.length&&Nd.throwError("types/values length mismatch",U5.Logger.errors.INVALID_ARGUMENT,{count:{types:e.length,values:r.length},value:{types:e,values:r}});var i=e.map(function(c){return n._getCoder(hm.ParamType.from(c))}),a=new Dd.TupleCoder(i,"_"),o=this._getWriter();return a.encode(o,r),o.data},t.prototype.decode=function(e,r,n){var i=this,a=e.map(function(c){return i._getCoder(hm.ParamType.from(c))}),o=new Dd.TupleCoder(a,"_");return o.decode(this._getReader((0,HJ.arrayify)(r),n))},t}();Ks.AbiCoder=H5;Ks.defaultAbiCoder=new H5});var mm=P(Jd=>{"use strict";Object.defineProperty(Jd,"__esModule",{value:!0});Jd.id=void 0;var tq=Bt(),nq=Cr();function iq(t){return(0,tq.keccak256)((0,nq.toUtf8Bytes)(t))}Jd.id=iq});var bm=P(qd=>{"use strict";Object.defineProperty(qd,"__esModule",{value:!0});qd.version=void 0;qd.version="hash/5.7.0"});var G5=P(Vs=>{"use strict";Object.defineProperty(Vs,"__esModule",{value:!0});Vs.encode=Vs.decode=void 0;var z5=De();function aq(t){return(0,z5.arrayify)(new Uint8Array(Buffer.from(t,"base64")))}Vs.decode=aq;function oq(t){return Buffer.from((0,z5.arrayify)(t)).toString("base64")}Vs.encode=oq});var Vu=P(Zs=>{"use strict";Object.defineProperty(Zs,"__esModule",{value:!0});Zs.encode=Zs.decode=void 0;var X5=G5();Object.defineProperty(Zs,"decode",{enumerable:!0,get:function(){return X5.decode}});Object.defineProperty(Zs,"encode",{enumerable:!0,get:function(){return X5.encode}})});var xm=P(jr=>{"use strict";Object.defineProperty(jr,"__esModule",{value:!0});jr.read_emoji_trie=jr.read_zero_terminated_array=jr.read_mapped_map=jr.read_member_array=jr.signed=jr.read_compressed_payload=jr.read_payload=jr.decode_arithmetic=void 0;function V5(t,e){e==null&&(e=1);var r=[],n=r.forEach,i=function(a,o){n.call(a,function(c){o>0&&Array.isArray(c)?i(c,o-1):r.push(c)})};return i(t,e),r}function sq(t){for(var e={},r=0;r>--s&1}for(var w=31,T=Math.pow(2,w),A=T>>>1,O=A>>1,B=T-1,F=0,o=0;o1;){var X=j+Z>>>1;G>>1|m(),U=U<<1^A,M=(M^A)<<1|A|1;D=U,z=1+M-U}var v=n-4;return I.map(function(E){switch(E-v){case 3:return v+65792+(t[u++]<<16|t[u++]<<8|t[u++]);case 2:return v+256+(t[u++]<<8|t[u++]);case 1:return v+t[u++];default:return E-1}})}jr.decode_arithmetic=Z5;function Q5(t){var e=0;return function(){return t[e++]}}jr.read_payload=Q5;function cq(t){return Q5(Z5(t))}jr.read_compressed_payload=cq;function W5(t){return t&1?~t>>1:t>>1}jr.signed=W5;function uq(t,e){for(var r=Array(t),n=0;n>=1;var u=a==1,s=a==2;return{branches:n,valid:o,fe0f:c,save:u,check:s}}}jr.read_emoji_trie=hq});var ew=P(jd=>{"use strict";Object.defineProperty(jd,"__esModule",{value:!0});jd.getData=void 0;var vq=Vu(),mq=xm();function bq(){return(0,mq.read_compressed_payload)((0,vq.decode)("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"))}jd.getData=bq});var iw=P(Qs=>{"use strict";Object.defineProperty(Qs,"__esModule",{value:!0});Qs.ens_normalize=Qs.ens_normalize_post_check=void 0;var gq=Cr(),xq=ew(),Ud=(0,xq.getData)(),Hd=xm(),yq=new Set((0,Hd.read_member_array)(Ud)),wq=new Set((0,Hd.read_member_array)(Ud)),Aq=(0,Hd.read_mapped_map)(Ud),Eq=(0,Hd.read_emoji_trie)(Ud),rw=45,tw=95;function nw(t){return(0,gq.toUtf8CodePoints)(t)}function Sq(t){return t.filter(function(e){return e!=65039})}function ym(t){for(var e=0,r=t.split(".");e=0;a--)if(i[a]!==tw)throw new Error("underscore only allowed at start");if(i.length>=4&&i.every(function(o){return o<128})&&i[2]===rw&&i[3]===rw)throw new Error("invalid label extension")}catch(o){throw new Error('Invalid label "'+n+'": '+o.message)}}return t}Qs.ens_normalize_post_check=ym;function _q(t){return ym(Tq(t,Sq))}Qs.ens_normalize=_q;function Tq(t,e){for(var r=nw(t).reverse(),n=[];r.length;){var i=Cq(r);if(i){n.push.apply(n,e(i));continue}var a=r.pop();if(yq.has(a)){n.push(a);continue}if(!wq.has(a)){var o=Aq[a];if(o){n.push.apply(n,o);continue}throw new Error("Disallowed codepoint: 0x"+a.toString(16).toUpperCase())}}return ym(kq(String.fromCodePoint.apply(String,n)))}function kq(t){return t.normalize("NFC")}function Cq(t,e){var r,n=Eq,i,a,o=[],c=t.length;e&&(e.length=0);for(var u=function(){var f=t[--c];if(n=(r=n.branches.find(function(m){return m.set.has(f)}))===null||r===void 0?void 0:r.node,!n)return"break";if(n.save)a=f;else if(n.check&&f===a)return"break";o.push(f),n.fe0f&&(o.push(65039),c>0&&t[c-1]==65039&&c--),n.valid&&(i=o.slice(),n.valid==2&&i.splice(1,1),e&&e.push.apply(e,t.slice(c).reverse()),t.length=c)};c;){var s=u();if(s==="break")break}return i}});var wm=P(ri=>{"use strict";Object.defineProperty(ri,"__esModule",{value:!0});ri.dnsEncode=ri.namehash=ri.isValidName=ri.ensNormalize=void 0;var zd=De(),sw=Cr(),aw=Bt(),Oq=re(),Pq=bm(),Mq=new Oq.Logger(Pq.version),Bq=iw(),cw=new Uint8Array(32);cw.fill(0);function ow(t){if(t.length===0)throw new Error("invalid ENS name; empty component");return t}function Gd(t){var e=(0,sw.toUtf8Bytes)((0,Bq.ens_normalize)(t)),r=[];if(t.length===0)return r;for(var n=0,i=0;i=e.length)throw new Error("invalid ENS name; empty component");return r.push(ow(e.slice(n))),r}function Fq(t){return Gd(t).map(function(e){return(0,sw.toUtf8String)(e)}).join(".")}ri.ensNormalize=Fq;function Lq(t){try{return Gd(t).length!==0}catch{}return!1}ri.isValidName=Lq;function Rq(t){typeof t!="string"&&Mq.throwArgumentError("invalid ENS name; not a string","name",t);for(var e=cw,r=Gd(t);r.length;)e=(0,aw.keccak256)((0,zd.concat)([e,(0,aw.keccak256)(r.pop())]));return(0,zd.hexlify)(e)}ri.namehash=Rq;function Iq(t){return(0,zd.hexlify)((0,zd.concat)(Gd(t).map(function(e){if(e.length>63)throw new Error("invalid DNS encoded entry; length exceeds 63 bytes");var r=new Uint8Array(e.length+1);return r.set(e,1),r[0]=r.length-1,r})))+"00"}ri.dnsEncode=Iq});var uw=P(So=>{"use strict";Object.defineProperty(So,"__esModule",{value:!0});So.hashMessage=So.messagePrefix=void 0;var Nq=De(),Dq=Bt(),Am=Cr();So.messagePrefix=`Ethereum Signed Message: +`;function Jq(t){return typeof t=="string"&&(t=(0,Am.toUtf8Bytes)(t)),(0,Dq.keccak256)((0,Nq.concat)([(0,Am.toUtf8Bytes)(So.messagePrefix),(0,Am.toUtf8Bytes)(String(t.length)),t]))}So.hashMessage=Jq});var gw=P(fa=>{"use strict";var qq=fa&&fa.__awaiter||function(t,e,r,n){function i(a){return a instanceof r?a:new r(function(o){o(a)})}return new(r||(r=Promise))(function(a,o){function c(f){try{s(n.next(f))}catch(m){o(m)}}function u(f){try{s(n.throw(f))}catch(m){o(m)}}function s(f){f.done?a(f.value):i(f.value).then(c,u)}s((n=n.apply(t,e||[])).next())})},jq=fa&&fa.__generator||function(t,e){var r={label:0,sent:function(){if(a[0]&1)throw a[1];return a[1]},trys:[],ops:[]},n,i,a,o;return o={next:c(0),throw:c(1),return:c(2)},typeof Symbol=="function"&&(o[Symbol.iterator]=function(){return this}),o;function c(s){return function(f){return u([s,f])}}function u(s){if(n)throw new TypeError("Generator is already executing.");for(;r;)try{if(n=1,i&&(a=s[0]&2?i.return:s[0]?i.throw||((a=i.return)&&a.call(i),0):i.next)&&!(a=a.call(i,s[1])).done)return a;switch(i=0,a&&(s=[s[0]&2,a.value]),s[0]){case 0:case 1:a=s;break;case 4:return r.label++,{value:s[1],done:!1};case 5:r.label++,i=s[1],s=[0];continue;case 7:s=r.ops.pop(),r.trys.pop();continue;default:if(a=r.trys,!(a=a.length>0&&a[a.length-1])&&(s[0]===6||s[0]===2)){r=0;continue}if(s[0]===3&&(!a||s[1]>a[0]&&s[1]256||e[2]&&e[2]!==String(n))&&vr.throwArgumentError("invalid numeric width","type",t);var i=Gq.mask(r?n-1:n),a=r?i.add(bw).mul(zq):mw;return function(c){var u=To.BigNumber.from(c);return(u.lt(a)||u.gt(i))&&vr.throwArgumentError("value out-of-bounds for "+t,"value",c),(0,Zr.hexZeroPad)(u.toTwos(256).toHexString(),32)}}}{var e=t.match(/^bytes(\d+)$/);if(e){var o=parseInt(e[1]);return(o===0||o>32||e[1]!==String(o))&&vr.throwArgumentError("invalid bytes width","type",t),function(u){var s=(0,Zr.arrayify)(u);return s.length!==o&&vr.throwArgumentError("invalid length for "+t,"value",u),Xq(u)}}}switch(t){case"address":return function(c){return(0,Zr.hexZeroPad)((0,pw.getAddress)(c),32)};case"bool":return function(c){return c?Kq:Vq};case"bytes":return function(c){return(0,Ws.keccak256)(c)};case"string":return function(c){return(0,hw.id)(c)}}return null}function dw(t,e){return t+"("+e.map(function(r){var n=r.name,i=r.type;return i+" "+n}).join(",")+")"}var Qq=function(){function t(e){(0,_o.defineReadOnly)(this,"types",Object.freeze((0,_o.deepCopy)(e))),(0,_o.defineReadOnly)(this,"_encoderCache",{}),(0,_o.defineReadOnly)(this,"_types",{});var r={},n={},i={};Object.keys(e).forEach(function(m){r[m]={},n[m]=[],i[m]={}});var a=function(m){var w={};e[m].forEach(function(T){w[T.name]&&vr.throwArgumentError("duplicate variable name "+JSON.stringify(T.name)+" in "+JSON.stringify(m),"types",e),w[T.name]=!0;var A=T.type.match(/^([^\x5b]*)(\x5b|$)/)[1];A===m&&vr.throwArgumentError("circular type reference to "+JSON.stringify(A),"types",e);var O=Sm(A);O||(n[A]||vr.throwArgumentError("unknown type "+JSON.stringify(A),"types",e),n[A].push(m),r[m][A]=!0)})};for(var o in e)a(o);var c=Object.keys(n).filter(function(m){return n[m].length===0});c.length===0?vr.throwArgumentError("missing primary type","types",e):c.length>1&&vr.throwArgumentError("ambiguous primary types or unused types: "+c.map(function(m){return JSON.stringify(m)}).join(", "),"types",e),(0,_o.defineReadOnly)(this,"primaryType",c[0]);function u(m,w){w[m]&&vr.throwArgumentError("circular type reference to "+JSON.stringify(m),"types",e),w[m]=!0,Object.keys(r[m]).forEach(function(T){!n[T]||(u(T,w),Object.keys(w).forEach(function(A){i[A][T]=!0}))}),delete w[m]}u(this.primaryType,{});for(var s in i){var f=Object.keys(i[s]);f.sort(),this._types[s]=dw(s,e[s])+f.map(function(m){return dw(m,e[m])}).join("")}}return t.prototype.getEncoder=function(e){var r=this._encoderCache[e];return r||(r=this._encoderCache[e]=this._getEncoder(e)),r},t.prototype._getEncoder=function(e){var r=this;{var n=Sm(e);if(n)return n}var i=e.match(/^(.*)(\x5b(\d*)\x5d)$/);if(i){var a=i[1],o=this.getEncoder(a),c=parseInt(i[3]);return function(f){c>=0&&f.length!==c&&vr.throwArgumentError("array length mismatch; expected length ${ arrayLength }","value",f);var m=f.map(o);return r._types[a]&&(m=m.map(Ws.keccak256)),(0,Ws.keccak256)((0,Zr.hexConcat)(m))}}var u=this.types[e];if(u){var s=(0,hw.id)(this._types[e]);return function(f){var m=u.map(function(w){var T=w.name,A=w.type,O=r.getEncoder(A)(f[T]);return r._types[A]?(0,Ws.keccak256)(O):O});return m.unshift(s),(0,Zr.hexConcat)(m)}}return vr.throwArgumentError("unknown type: "+e,"type",e)},t.prototype.encodeType=function(e){var r=this._types[e];return r||vr.throwArgumentError("unknown type: "+JSON.stringify(e),"name",e),r},t.prototype.encodeData=function(e,r){return this.getEncoder(e)(r)},t.prototype.hashStruct=function(e,r){return(0,Ws.keccak256)(this.encodeData(e,r))},t.prototype.encode=function(e){return this.encodeData(this.primaryType,e)},t.prototype.hash=function(e){return this.hashStruct(this.primaryType,e)},t.prototype._visit=function(e,r,n){var i=this;{var a=Sm(e);if(a)return n(e,r)}var o=e.match(/^(.*)(\x5b(\d*)\x5d)$/);if(o){var c=o[1],u=parseInt(o[3]);return u>=0&&r.length!==u&&vr.throwArgumentError("array length mismatch; expected length ${ arrayLength }","value",r),r.map(function(f){return i._visit(c,f,n)})}var s=this.types[e];return s?s.reduce(function(f,m){var w=m.name,T=m.type;return f[w]=i._visit(T,r[w],n),f},{}):vr.throwArgumentError("unknown type: "+e,"type",e)},t.prototype.visit=function(e,r){return this._visit(this.primaryType,e,r)},t.from=function(e){return new t(e)},t.getPrimaryType=function(e){return t.from(e).primaryType},t.hashStruct=function(e,r,n){return t.from(r).hashStruct(e,n)},t.hashDomain=function(e){var r=[];for(var n in e){var i=lw[n];i||vr.throwArgumentError("invalid typed-data domain key: "+JSON.stringify(n),"domain",e),r.push({name:n,type:i})}return r.sort(function(a,o){return Em.indexOf(a.name)-Em.indexOf(o.name)}),t.hashStruct("EIP712Domain",{EIP712Domain:r},e)},t.encode=function(e,r,n){return(0,Zr.hexConcat)(["0x1901",t.hashDomain(e),t.from(r).hash(n)])},t.hash=function(e,r,n){return(0,Ws.keccak256)(t.encode(e,r,n))},t.resolveNames=function(e,r,n,i){return qq(this,void 0,void 0,function(){var a,o,c,u,s,f,m,w;return jq(this,function(T){switch(T.label){case 0:e=(0,_o.shallowCopy)(e),a={},e.verifyingContract&&!(0,Zr.isHexString)(e.verifyingContract,20)&&(a[e.verifyingContract]="0x"),o=t.from(r),o.visit(n,function(A,O){return A==="address"&&!(0,Zr.isHexString)(O,20)&&(a[O]="0x"),O}),c=[];for(u in a)c.push(u);s=0,T.label=1;case 1:return s{"use strict";Object.defineProperty(Ur,"__esModule",{value:!0});Ur._TypedDataEncoder=Ur.hashMessage=Ur.messagePrefix=Ur.ensNormalize=Ur.isValidName=Ur.namehash=Ur.dnsEncode=Ur.id=void 0;var Wq=mm();Object.defineProperty(Ur,"id",{enumerable:!0,get:function(){return Wq.id}});var _m=wm();Object.defineProperty(Ur,"dnsEncode",{enumerable:!0,get:function(){return _m.dnsEncode}});Object.defineProperty(Ur,"isValidName",{enumerable:!0,get:function(){return _m.isValidName}});Object.defineProperty(Ur,"namehash",{enumerable:!0,get:function(){return _m.namehash}});var xw=uw();Object.defineProperty(Ur,"hashMessage",{enumerable:!0,get:function(){return xw.hashMessage}});Object.defineProperty(Ur,"messagePrefix",{enumerable:!0,get:function(){return xw.messagePrefix}});var Yq=wm();Object.defineProperty(Ur,"ensNormalize",{enumerable:!0,get:function(){return Yq.ensNormalize}});var $q=gw();Object.defineProperty(Ur,"_TypedDataEncoder",{enumerable:!0,get:function(){return $q.TypedDataEncoder}})});var Tw=P(ot=>{"use strict";var Vd=ot&&ot.__extends||function(){var t=function(e,r){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,i){n.__proto__=i}||function(n,i){for(var a in i)Object.prototype.hasOwnProperty.call(i,a)&&(n[a]=i[a])},t(e,r)};return function(e,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");t(e,r);function n(){this.constructor=e}e.prototype=r===null?Object.create(r):(n.prototype=r.prototype,new n)}}();Object.defineProperty(ot,"__esModule",{value:!0});ot.Interface=ot.Indexed=ot.ErrorDescription=ot.TransactionDescription=ot.LogDescription=ot.checkResultErrors=void 0;var ej=Vt(),yw=Tr(),pr=De(),Xd=ko(),ww=Bt(),Qr=Ve(),rj=vm(),tj=Xt();Object.defineProperty(ot,"checkResultErrors",{enumerable:!0,get:function(){return tj.checkResultErrors}});var Fi=_d(),Kd=re(),nj=Bs(),mr=new Kd.Logger(nj.version),Ew=function(t){Vd(e,t);function e(){return t!==null&&t.apply(this,arguments)||this}return e}(Qr.Description);ot.LogDescription=Ew;var Sw=function(t){Vd(e,t);function e(){return t!==null&&t.apply(this,arguments)||this}return e}(Qr.Description);ot.TransactionDescription=Sw;var _w=function(t){Vd(e,t);function e(){return t!==null&&t.apply(this,arguments)||this}return e}(Qr.Description);ot.ErrorDescription=_w;var Tm=function(t){Vd(e,t);function e(){return t!==null&&t.apply(this,arguments)||this}return e.isIndexed=function(r){return!!(r&&r._isIndexed)},e}(Qr.Description);ot.Indexed=Tm;var ij={"0x08c379a0":{signature:"Error(string)",name:"Error",inputs:["string"],reason:!0},"0x4e487b71":{signature:"Panic(uint256)",name:"Panic",inputs:["uint256"]}};function Aw(t,e){var r=new Error("deferred error during ABI decoding triggered accessing "+t);return r.error=e,r}var aj=function(){function t(e){var r=this.constructor,n=this,i=[];typeof e=="string"?i=JSON.parse(e):i=e,(0,Qr.defineReadOnly)(this,"fragments",i.map(function(a){return Fi.Fragment.from(a)}).filter(function(a){return a!=null})),(0,Qr.defineReadOnly)(this,"_abiCoder",(0,Qr.getStatic)(r,"getAbiCoder")()),(0,Qr.defineReadOnly)(this,"functions",{}),(0,Qr.defineReadOnly)(this,"errors",{}),(0,Qr.defineReadOnly)(this,"events",{}),(0,Qr.defineReadOnly)(this,"structs",{}),this.fragments.forEach(function(a){var o=null;switch(a.type){case"constructor":if(n.deploy){mr.warn("duplicate definition - constructor");return}(0,Qr.defineReadOnly)(n,"deploy",a);return;case"function":o=n.functions;break;case"event":o=n.events;break;case"error":o=n.errors;break;default:return}var c=a.format();if(o[c]){mr.warn("duplicate definition - "+c);return}o[c]=a}),this.deploy||(0,Qr.defineReadOnly)(this,"deploy",Fi.ConstructorFragment.from({payable:!1,type:"constructor"})),(0,Qr.defineReadOnly)(this,"_isInterface",!0)}return t.prototype.format=function(e){e||(e=Fi.FormatTypes.full),e===Fi.FormatTypes.sighash&&mr.throwArgumentError("interface does not support formatting sighash","format",e);var r=this.fragments.map(function(n){return n.format(e)});return e===Fi.FormatTypes.json?JSON.stringify(r.map(function(n){return JSON.parse(n)})):r},t.getAbiCoder=function(){return rj.defaultAbiCoder},t.getAddress=function(e){return(0,ej.getAddress)(e)},t.getSighash=function(e){return(0,pr.hexDataSlice)((0,Xd.id)(e.format()),0,4)},t.getEventTopic=function(e){return(0,Xd.id)(e.format())},t.prototype.getFunction=function(e){if((0,pr.isHexString)(e)){for(var r in this.functions)if(e===this.getSighash(r))return this.functions[r];mr.throwArgumentError("no matching function","sighash",e)}if(e.indexOf("(")===-1){var n=e.trim(),i=Object.keys(this.functions).filter(function(o){return o.split("(")[0]===n});return i.length===0?mr.throwArgumentError("no matching function","name",n):i.length>1&&mr.throwArgumentError("multiple matching functions","name",n),this.functions[i[0]]}var a=this.functions[Fi.FunctionFragment.fromString(e).format()];return a||mr.throwArgumentError("no matching function","signature",e),a},t.prototype.getEvent=function(e){if((0,pr.isHexString)(e)){var r=e.toLowerCase();for(var n in this.events)if(r===this.getEventTopic(n))return this.events[n];mr.throwArgumentError("no matching event","topichash",r)}if(e.indexOf("(")===-1){var i=e.trim(),a=Object.keys(this.events).filter(function(c){return c.split("(")[0]===i});return a.length===0?mr.throwArgumentError("no matching event","name",i):a.length>1&&mr.throwArgumentError("multiple matching events","name",i),this.events[a[0]]}var o=this.events[Fi.EventFragment.fromString(e).format()];return o||mr.throwArgumentError("no matching event","signature",e),o},t.prototype.getError=function(e){if((0,pr.isHexString)(e)){var r=(0,Qr.getStatic)(this.constructor,"getSighash");for(var n in this.errors){var i=this.errors[n];if(e===r(i))return this.errors[n]}mr.throwArgumentError("no matching error","sighash",e)}if(e.indexOf("(")===-1){var a=e.trim(),o=Object.keys(this.errors).filter(function(u){return u.split("(")[0]===a});return o.length===0?mr.throwArgumentError("no matching error","name",a):o.length>1&&mr.throwArgumentError("multiple matching errors","name",a),this.errors[o[0]]}var c=this.errors[Fi.FunctionFragment.fromString(e).format()];return c||mr.throwArgumentError("no matching error","signature",e),c},t.prototype.getSighash=function(e){if(typeof e=="string")try{e=this.getFunction(e)}catch(r){try{e=this.getError(e)}catch{throw r}}return(0,Qr.getStatic)(this.constructor,"getSighash")(e)},t.prototype.getEventTopic=function(e){return typeof e=="string"&&(e=this.getEvent(e)),(0,Qr.getStatic)(this.constructor,"getEventTopic")(e)},t.prototype._decodeParams=function(e,r){return this._abiCoder.decode(e,r)},t.prototype._encodeParams=function(e,r){return this._abiCoder.encode(e,r)},t.prototype.encodeDeploy=function(e){return this._encodeParams(this.deploy.inputs,e||[])},t.prototype.decodeErrorResult=function(e,r){typeof e=="string"&&(e=this.getError(e));var n=(0,pr.arrayify)(r);return(0,pr.hexlify)(n.slice(0,4))!==this.getSighash(e)&&mr.throwArgumentError("data signature does not match error "+e.name+".","data",(0,pr.hexlify)(n)),this._decodeParams(e.inputs,n.slice(4))},t.prototype.encodeErrorResult=function(e,r){return typeof e=="string"&&(e=this.getError(e)),(0,pr.hexlify)((0,pr.concat)([this.getSighash(e),this._encodeParams(e.inputs,r||[])]))},t.prototype.decodeFunctionData=function(e,r){typeof e=="string"&&(e=this.getFunction(e));var n=(0,pr.arrayify)(r);return(0,pr.hexlify)(n.slice(0,4))!==this.getSighash(e)&&mr.throwArgumentError("data signature does not match function "+e.name+".","data",(0,pr.hexlify)(n)),this._decodeParams(e.inputs,n.slice(4))},t.prototype.encodeFunctionData=function(e,r){return typeof e=="string"&&(e=this.getFunction(e)),(0,pr.hexlify)((0,pr.concat)([this.getSighash(e),this._encodeParams(e.inputs,r||[])]))},t.prototype.decodeFunctionResult=function(e,r){typeof e=="string"&&(e=this.getFunction(e));var n=(0,pr.arrayify)(r),i=null,a="",o=null,c=null,u=null;switch(n.length%this._abiCoder._getWordSize()){case 0:try{return this._abiCoder.decode(e.outputs,n)}catch{}break;case 4:{var s=(0,pr.hexlify)(n.slice(0,4)),f=ij[s];if(f)o=this._abiCoder.decode(f.inputs,n.slice(4)),c=f.name,u=f.signature,f.reason&&(i=o[0]),c==="Error"?a="; VM Exception while processing transaction: reverted with reason string "+JSON.stringify(o[0]):c==="Panic"&&(a="; VM Exception while processing transaction: reverted with panic code "+o[0]);else try{var m=this.getError(s);o=this._abiCoder.decode(m.inputs,n.slice(4)),c=m.name,u=m.format()}catch{}break}}return mr.throwError("call revert exception"+a,Kd.Logger.errors.CALL_EXCEPTION,{method:e.format(),data:(0,pr.hexlify)(r),errorArgs:o,errorName:c,errorSignature:u,reason:i})},t.prototype.encodeFunctionResult=function(e,r){return typeof e=="string"&&(e=this.getFunction(e)),(0,pr.hexlify)(this._abiCoder.encode(e.outputs,r||[]))},t.prototype.encodeFilterTopics=function(e,r){var n=this;typeof e=="string"&&(e=this.getEvent(e)),r.length>e.inputs.length&&mr.throwError("too many arguments for "+e.format(),Kd.Logger.errors.UNEXPECTED_ARGUMENT,{argument:"values",value:r});var i=[];e.anonymous||i.push(this.getEventTopic(e));var a=function(o,c){return o.type==="string"?(0,Xd.id)(c):o.type==="bytes"?(0,ww.keccak256)((0,pr.hexlify)(c)):(o.type==="bool"&&typeof c=="boolean"&&(c=c?"0x01":"0x00"),o.type.match(/^u?int/)&&(c=yw.BigNumber.from(c).toHexString()),o.type==="address"&&n._abiCoder.encode(["address"],[c]),(0,pr.hexZeroPad)((0,pr.hexlify)(c),32))};for(r.forEach(function(o,c){var u=e.inputs[c];if(!u.indexed){o!=null&&mr.throwArgumentError("cannot filter non-indexed parameters; must be null","contract."+u.name,o);return}o==null?i.push(null):u.baseType==="array"||u.baseType==="tuple"?mr.throwArgumentError("filtering with tuples or arrays not supported","contract."+u.name,o):Array.isArray(o)?i.push(o.map(function(s){return a(u,s)})):i.push(a(u,o))});i.length&&i[i.length-1]===null;)i.pop();return i},t.prototype.encodeEventLog=function(e,r){var n=this;typeof e=="string"&&(e=this.getEvent(e));var i=[],a=[],o=[];return e.anonymous||i.push(this.getEventTopic(e)),r.length!==e.inputs.length&&mr.throwArgumentError("event arguments/values mismatch","values",r),e.inputs.forEach(function(c,u){var s=r[u];if(c.indexed)if(c.type==="string")i.push((0,Xd.id)(s));else if(c.type==="bytes")i.push((0,ww.keccak256)(s));else{if(c.baseType==="tuple"||c.baseType==="array")throw new Error("not implemented");i.push(n._abiCoder.encode([c.type],[s]))}else a.push(c),o.push(s)}),{data:this._abiCoder.encode(a,o),topics:i}},t.prototype.decodeEventLog=function(e,r,n){if(typeof e=="string"&&(e=this.getEvent(e)),n!=null&&!e.anonymous){var i=this.getEventTopic(e);(!(0,pr.isHexString)(n[0],32)||n[0].toLowerCase()!==i)&&mr.throwError("fragment/topic mismatch",Kd.Logger.errors.INVALID_ARGUMENT,{argument:"topics[0]",expected:i,value:n[0]}),n=n.slice(1)}var a=[],o=[],c=[];e.inputs.forEach(function(O,B){O.indexed?O.type==="string"||O.type==="bytes"||O.baseType==="tuple"||O.baseType==="array"?(a.push(Fi.ParamType.fromObject({type:"bytes32",name:O.name})),c.push(!0)):(a.push(O),c.push(!1)):(o.push(O),c.push(!1))});var u=n!=null?this._abiCoder.decode(a,(0,pr.concat)(n)):null,s=this._abiCoder.decode(o,r,!0),f=[],m=0,w=0;e.inputs.forEach(function(O,B){if(O.indexed)if(u==null)f[B]=new Tm({_isIndexed:!0,hash:null});else if(c[B])f[B]=new Tm({_isIndexed:!0,hash:u[w++]});else try{f[B]=u[w++]}catch(I){f[B]=I}else try{f[B]=s[m++]}catch(I){f[B]=I}if(O.name&&f[O.name]==null){var F=f[B];F instanceof Error?Object.defineProperty(f,O.name,{enumerable:!0,get:function(){throw Aw("property "+JSON.stringify(O.name),F)}}):f[O.name]=F}});for(var T=function(O){var B=f[O];B instanceof Error&&Object.defineProperty(f,O,{enumerable:!0,get:function(){throw Aw("index "+O,B)}})},A=0;A{"use strict";Object.defineProperty(rr,"__esModule",{value:!0});rr.TransactionDescription=rr.LogDescription=rr.checkResultErrors=rr.Indexed=rr.Interface=rr.defaultAbiCoder=rr.AbiCoder=rr.FormatTypes=rr.ParamType=rr.FunctionFragment=rr.Fragment=rr.EventFragment=rr.ErrorFragment=rr.ConstructorFragment=void 0;var Co=_d();Object.defineProperty(rr,"ConstructorFragment",{enumerable:!0,get:function(){return Co.ConstructorFragment}});Object.defineProperty(rr,"ErrorFragment",{enumerable:!0,get:function(){return Co.ErrorFragment}});Object.defineProperty(rr,"EventFragment",{enumerable:!0,get:function(){return Co.EventFragment}});Object.defineProperty(rr,"FormatTypes",{enumerable:!0,get:function(){return Co.FormatTypes}});Object.defineProperty(rr,"Fragment",{enumerable:!0,get:function(){return Co.Fragment}});Object.defineProperty(rr,"FunctionFragment",{enumerable:!0,get:function(){return Co.FunctionFragment}});Object.defineProperty(rr,"ParamType",{enumerable:!0,get:function(){return Co.ParamType}});var kw=vm();Object.defineProperty(rr,"AbiCoder",{enumerable:!0,get:function(){return kw.AbiCoder}});Object.defineProperty(rr,"defaultAbiCoder",{enumerable:!0,get:function(){return kw.defaultAbiCoder}});var Zu=Tw();Object.defineProperty(rr,"checkResultErrors",{enumerable:!0,get:function(){return Zu.checkResultErrors}});Object.defineProperty(rr,"Indexed",{enumerable:!0,get:function(){return Zu.Indexed}});Object.defineProperty(rr,"Interface",{enumerable:!0,get:function(){return Zu.Interface}});Object.defineProperty(rr,"LogDescription",{enumerable:!0,get:function(){return Zu.LogDescription}});Object.defineProperty(rr,"TransactionDescription",{enumerable:!0,get:function(){return Zu.TransactionDescription}})});var Cw=P(Zd=>{"use strict";Object.defineProperty(Zd,"__esModule",{value:!0});Zd.version=void 0;Zd.version="abstract-provider/5.7.0"});var Ys=P(Hr=>{"use strict";var Wd=Hr&&Hr.__extends||function(){var t=function(e,r){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,i){n.__proto__=i}||function(n,i){for(var a in i)Object.prototype.hasOwnProperty.call(i,a)&&(n[a]=i[a])},t(e,r)};return function(e,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");t(e,r);function n(){this.constructor=e}e.prototype=r===null?Object.create(r):(n.prototype=r.prototype,new n)}}(),oj=Hr&&Hr.__awaiter||function(t,e,r,n){function i(a){return a instanceof r?a:new r(function(o){o(a)})}return new(r||(r=Promise))(function(a,o){function c(f){try{s(n.next(f))}catch(m){o(m)}}function u(f){try{s(n.throw(f))}catch(m){o(m)}}function s(f){f.done?a(f.value):i(f.value).then(c,u)}s((n=n.apply(t,e||[])).next())})},sj=Hr&&Hr.__generator||function(t,e){var r={label:0,sent:function(){if(a[0]&1)throw a[1];return a[1]},trys:[],ops:[]},n,i,a,o;return o={next:c(0),throw:c(1),return:c(2)},typeof Symbol=="function"&&(o[Symbol.iterator]=function(){return this}),o;function c(s){return function(f){return u([s,f])}}function u(s){if(n)throw new TypeError("Generator is already executing.");for(;r;)try{if(n=1,i&&(a=s[0]&2?i.return:s[0]?i.throw||((a=i.return)&&a.call(i),0):i.next)&&!(a=a.call(i,s[1])).done)return a;switch(i=0,a&&(s=[s[0]&2,a.value]),s[0]){case 0:case 1:a=s;break;case 4:return r.label++,{value:s[1],done:!1};case 5:r.label++,i=s[1],s=[0];continue;case 7:s=r.ops.pop(),r.trys.pop();continue;default:if(a=r.trys,!(a=a.length>0&&a[a.length-1])&&(s[0]===6||s[0]===2)){r=0;continue}if(s[0]===3&&(!a||s[1]>a[0]&&s[1]{"use strict";Object.defineProperty($d,"__esModule",{value:!0});$d.version=void 0;$d.version="abstract-signer/5.7.0"});var Wu=P(Wt=>{"use strict";var vj=Wt&&Wt.__extends||function(){var t=function(e,r){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,i){n.__proto__=i}||function(n,i){for(var a in i)Object.prototype.hasOwnProperty.call(i,a)&&(n[a]=i[a])},t(e,r)};return function(e,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");t(e,r);function n(){this.constructor=e}e.prototype=r===null?Object.create(r):(n.prototype=r.prototype,new n)}}(),bn=Wt&&Wt.__awaiter||function(t,e,r,n){function i(a){return a instanceof r?a:new r(function(o){o(a)})}return new(r||(r=Promise))(function(a,o){function c(f){try{s(n.next(f))}catch(m){o(m)}}function u(f){try{s(n.throw(f))}catch(m){o(m)}}function s(f){f.done?a(f.value):i(f.value).then(c,u)}s((n=n.apply(t,e||[])).next())})},gn=Wt&&Wt.__generator||function(t,e){var r={label:0,sent:function(){if(a[0]&1)throw a[1];return a[1]},trys:[],ops:[]},n,i,a,o;return o={next:c(0),throw:c(1),return:c(2)},typeof Symbol=="function"&&(o[Symbol.iterator]=function(){return this}),o;function c(s){return function(f){return u([s,f])}}function u(s){if(n)throw new TypeError("Generator is already executing.");for(;r;)try{if(n=1,i&&(a=s[0]&2?i.return:s[0]?i.throw||((a=i.return)&&a.call(i),0):i.next)&&!(a=a.call(i,s[1])).done)return a;switch(i=0,a&&(s=[s[0]&2,a.value]),s[0]){case 0:case 1:a=s;break;case 4:return r.label++,{value:s[1],done:!1};case 5:r.label++,i=s[1],s=[0];continue;case 7:s=r.ops.pop(),r.trys.pop();continue;default:if(a=r.trys,!(a=a.length>0&&a[a.length-1])&&(s[0]===6||s[0]===2)){r=0;continue}if(s[0]===3&&(!a||s[1]>a[0]&&s[1]=0)throw u;return Qt.throwError("cannot estimate gas; transaction may fail or may require manual gas limit",Li.Logger.errors.UNPREDICTABLE_GAS_LIMIT,{error:u,tx:r})})),r.chainId==null?r.chainId=this.getChainId():r.chainId=Promise.all([Promise.resolve(r.chainId),this.getChainId()]).then(function(u){return u[1]!==0&&u[0]!==u[1]&&Qt.throwArgumentError("chainId address mismatch","transaction",e),u[0]}),[4,(0,da.resolveProperties)(r)];case 6:return[2,c.sent()]}})})},t.prototype._checkProvider=function(e){this.provider||Qt.throwError("missing provider",Li.Logger.errors.UNSUPPORTED_OPERATION,{operation:e||"_checkProvider"})},t.isSigner=function(e){return!!(e&&e._isSigner)},t}();Wt.Signer=Pw;var xj=function(t){vj(e,t);function e(r,n){var i=t.call(this)||this;return(0,da.defineReadOnly)(i,"address",r),(0,da.defineReadOnly)(i,"provider",n||null),i}return e.prototype.getAddress=function(){return Promise.resolve(this.address)},e.prototype._fail=function(r,n){return Promise.resolve().then(function(){Qt.throwError(r,Li.Logger.errors.UNSUPPORTED_OPERATION,{operation:n})})},e.prototype.signMessage=function(r){return this._fail("VoidSigner cannot sign messages","signMessage")},e.prototype.signTransaction=function(r){return this._fail("VoidSigner cannot sign transactions","signTransaction")},e.prototype._signTypedData=function(r,n,i){return this._fail("VoidSigner cannot sign typed data","signTypedData")},e.prototype.connect=function(r){return new e(this.address,r)},e}(Pw);Wt.VoidSigner=xj});var Mw=P((Pee,yj)=>{yj.exports={name:"elliptic",version:"6.5.4",description:"EC cryptography",main:"lib/elliptic.js",files:["lib"],scripts:{lint:"eslint lib test","lint:fix":"npm run lint -- --fix",unit:"istanbul test _mocha --reporter=spec test/index.js",test:"npm run lint && npm run unit",version:"grunt dist && git add dist/"},repository:{type:"git",url:"git@github.com:indutny/elliptic"},keywords:["EC","Elliptic","curve","Cryptography"],author:"Fedor Indutny ",license:"MIT",bugs:{url:"https://github.com/indutny/elliptic/issues"},homepage:"https://github.com/indutny/elliptic",devDependencies:{brfs:"^2.0.2",coveralls:"^3.1.0",eslint:"^7.6.0",grunt:"^1.2.1","grunt-browserify":"^5.3.0","grunt-cli":"^1.3.2","grunt-contrib-connect":"^3.0.0","grunt-contrib-copy":"^1.0.0","grunt-contrib-uglify":"^5.0.0","grunt-mocha-istanbul":"^5.0.2","grunt-saucelabs":"^9.0.1",istanbul:"^0.4.5",mocha:"^8.0.1"},dependencies:{"bn.js":"^4.11.9",brorand:"^1.1.0","hash.js":"^1.0.0","hmac-drbg":"^1.0.1",inherits:"^2.0.4","minimalistic-assert":"^1.0.1","minimalistic-crypto-utils":"^1.0.1"}}});var ti=P((Bw,Om)=>{(function(t,e){"use strict";function r(M,v){if(!M)throw new Error(v||"Assertion failed")}function n(M,v){M.super_=v;var E=function(){};E.prototype=v.prototype,M.prototype=new E,M.prototype.constructor=M}function i(M,v,E){if(i.isBN(M))return M;this.negative=0,this.words=null,this.length=0,this.red=null,M!==null&&((v==="le"||v==="be")&&(E=v,v=10),this._init(M||0,v||10,E||"be"))}typeof t=="object"?t.exports=i:e.BN=i,i.BN=i,i.wordSize=26;var a;try{typeof window<"u"&&typeof window.Buffer<"u"?a=window.Buffer:a=require("buffer").Buffer}catch{}i.isBN=function(v){return v instanceof i?!0:v!==null&&typeof v=="object"&&v.constructor.wordSize===i.wordSize&&Array.isArray(v.words)},i.max=function(v,E){return v.cmp(E)>0?v:E},i.min=function(v,E){return v.cmp(E)<0?v:E},i.prototype._init=function(v,E,b){if(typeof v=="number")return this._initNumber(v,E,b);if(typeof v=="object")return this._initArray(v,E,b);E==="hex"&&(E=16),r(E===(E|0)&&E>=2&&E<=36),v=v.toString().replace(/\s+/g,"");var l=0;v[0]==="-"&&(l++,this.negative=1),l=0;l-=3)g=v[l]|v[l-1]<<8|v[l-2]<<16,this.words[p]|=g<>>26-S&67108863,S+=24,S>=26&&(S-=26,p++);else if(b==="le")for(l=0,p=0;l>>26-S&67108863,S+=24,S>=26&&(S-=26,p++);return this.strip()};function o(M,v){var E=M.charCodeAt(v);return E>=65&&E<=70?E-55:E>=97&&E<=102?E-87:E-48&15}function c(M,v,E){var b=o(M,E);return E-1>=v&&(b|=o(M,E-1)<<4),b}i.prototype._parseHex=function(v,E,b){this.length=Math.ceil((v.length-E)/6),this.words=new Array(this.length);for(var l=0;l=E;l-=2)S=c(v,E,l)<=18?(p-=18,g+=1,this.words[g]|=S>>>26):p+=8;else{var x=v.length-E;for(l=x%2===0?E+1:E;l=18?(p-=18,g+=1,this.words[g]|=S>>>26):p+=8}this.strip()};function u(M,v,E,b){for(var l=0,p=Math.min(M.length,E),g=v;g=49?l+=S-49+10:S>=17?l+=S-17+10:l+=S}return l}i.prototype._parseBase=function(v,E,b){this.words=[0],this.length=1;for(var l=0,p=1;p<=67108863;p*=E)l++;l--,p=p/E|0;for(var g=v.length-b,S=g%l,x=Math.min(g,g-S)+b,d=0,y=b;y1&&this.words[this.length-1]===0;)this.length--;return this._normSign()},i.prototype._normSign=function(){return this.length===1&&this.words[0]===0&&(this.negative=0),this},i.prototype.inspect=function(){return(this.red?""};var s=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],f=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],m=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];i.prototype.toString=function(v,E){v=v||10,E=E|0||1;var b;if(v===16||v==="hex"){b="";for(var l=0,p=0,g=0;g>>24-l&16777215,p!==0||g!==this.length-1?b=s[6-x.length]+x+b:b=x+b,l+=2,l>=26&&(l-=26,g--)}for(p!==0&&(b=p.toString(16)+b);b.length%E!==0;)b="0"+b;return this.negative!==0&&(b="-"+b),b}if(v===(v|0)&&v>=2&&v<=36){var d=f[v],y=m[v];b="";var C=this.clone();for(C.negative=0;!C.isZero();){var h=C.modn(y).toString(v);C=C.idivn(y),C.isZero()?b=h+b:b=s[d-h.length]+h+b}for(this.isZero()&&(b="0"+b);b.length%E!==0;)b="0"+b;return this.negative!==0&&(b="-"+b),b}r(!1,"Base should be between 2 and 36")},i.prototype.toNumber=function(){var v=this.words[0];return this.length===2?v+=this.words[1]*67108864:this.length===3&&this.words[2]===1?v+=4503599627370496+this.words[1]*67108864:this.length>2&&r(!1,"Number can only safely store up to 53 bits"),this.negative!==0?-v:v},i.prototype.toJSON=function(){return this.toString(16)},i.prototype.toBuffer=function(v,E){return r(typeof a<"u"),this.toArrayLike(a,v,E)},i.prototype.toArray=function(v,E){return this.toArrayLike(Array,v,E)},i.prototype.toArrayLike=function(v,E,b){var l=this.byteLength(),p=b||Math.max(1,l);r(l<=p,"byte array longer than desired length"),r(p>0,"Requested array length <= 0"),this.strip();var g=E==="le",S=new v(p),x,d,y=this.clone();if(g){for(d=0;!y.isZero();d++)x=y.andln(255),y.iushrn(8),S[d]=x;for(;d=4096&&(b+=13,E>>>=13),E>=64&&(b+=7,E>>>=7),E>=8&&(b+=4,E>>>=4),E>=2&&(b+=2,E>>>=2),b+E},i.prototype._zeroBits=function(v){if(v===0)return 26;var E=v,b=0;return(E&8191)===0&&(b+=13,E>>>=13),(E&127)===0&&(b+=7,E>>>=7),(E&15)===0&&(b+=4,E>>>=4),(E&3)===0&&(b+=2,E>>>=2),(E&1)===0&&b++,b},i.prototype.bitLength=function(){var v=this.words[this.length-1],E=this._countBits(v);return(this.length-1)*26+E};function w(M){for(var v=new Array(M.bitLength()),E=0;E>>l}return v}i.prototype.zeroBits=function(){if(this.isZero())return 0;for(var v=0,E=0;Ev.length?this.clone().ior(v):v.clone().ior(this)},i.prototype.uor=function(v){return this.length>v.length?this.clone().iuor(v):v.clone().iuor(this)},i.prototype.iuand=function(v){var E;this.length>v.length?E=v:E=this;for(var b=0;bv.length?this.clone().iand(v):v.clone().iand(this)},i.prototype.uand=function(v){return this.length>v.length?this.clone().iuand(v):v.clone().iuand(this)},i.prototype.iuxor=function(v){var E,b;this.length>v.length?(E=this,b=v):(E=v,b=this);for(var l=0;lv.length?this.clone().ixor(v):v.clone().ixor(this)},i.prototype.uxor=function(v){return this.length>v.length?this.clone().iuxor(v):v.clone().iuxor(this)},i.prototype.inotn=function(v){r(typeof v=="number"&&v>=0);var E=Math.ceil(v/26)|0,b=v%26;this._expand(E),b>0&&E--;for(var l=0;l0&&(this.words[l]=~this.words[l]&67108863>>26-b),this.strip()},i.prototype.notn=function(v){return this.clone().inotn(v)},i.prototype.setn=function(v,E){r(typeof v=="number"&&v>=0);var b=v/26|0,l=v%26;return this._expand(b+1),E?this.words[b]=this.words[b]|1<v.length?(b=this,l=v):(b=v,l=this);for(var p=0,g=0;g>>26;for(;p!==0&&g>>26;if(this.length=b.length,p!==0)this.words[this.length]=p,this.length++;else if(b!==this)for(;gv.length?this.clone().iadd(v):v.clone().iadd(this)},i.prototype.isub=function(v){if(v.negative!==0){v.negative=0;var E=this.iadd(v);return v.negative=1,E._normSign()}else if(this.negative!==0)return this.negative=0,this.iadd(v),this.negative=1,this._normSign();var b=this.cmp(v);if(b===0)return this.negative=0,this.length=1,this.words[0]=0,this;var l,p;b>0?(l=this,p=v):(l=v,p=this);for(var g=0,S=0;S>26,this.words[S]=E&67108863;for(;g!==0&&S>26,this.words[S]=E&67108863;if(g===0&&S>>26,C=x&67108863,h=Math.min(d,v.length-1),k=Math.max(0,d-M.length+1);k<=h;k++){var J=d-k|0;l=M.words[J]|0,p=v.words[k]|0,g=l*p+C,y+=g/67108864|0,C=g&67108863}E.words[d]=C|0,x=y|0}return x!==0?E.words[d]=x|0:E.length--,E.strip()}var A=function(v,E,b){var l=v.words,p=E.words,g=b.words,S=0,x,d,y,C=l[0]|0,h=C&8191,k=C>>>13,J=l[1]|0,_=J&8191,L=J>>>13,N=l[2]|0,q=N&8191,H=N>>>13,W=l[3]|0,V=W&8191,K=W>>>13,ur=l[4]|0,Q=ur&8191,Y=ur>>>13,_n=l[5]|0,ne=_n&8191,ie=_n>>>13,Tn=l[6]|0,ae=Tn&8191,oe=Tn>>>13,kn=l[7]|0,se=kn&8191,ce=kn>>>13,Cn=l[8]|0,ue=Cn&8191,le=Cn>>>13,On=l[9]|0,fe=On&8191,de=On>>>13,Pn=p[0]|0,pe=Pn&8191,he=Pn>>>13,Mn=p[1]|0,ve=Mn&8191,me=Mn>>>13,Bn=p[2]|0,be=Bn&8191,ge=Bn>>>13,Fn=p[3]|0,xe=Fn&8191,ye=Fn>>>13,Ln=p[4]|0,we=Ln&8191,Ae=Ln>>>13,Rn=p[5]|0,Ee=Rn&8191,Se=Rn>>>13,In=p[6]|0,_e=In&8191,Te=In>>>13,Nn=p[7]|0,ke=Nn&8191,Ce=Nn>>>13,Dn=p[8]|0,Oe=Dn&8191,Pe=Dn>>>13,Jn=p[9]|0,Me=Jn&8191,Be=Jn>>>13;b.negative=v.negative^E.negative,b.length=19,x=Math.imul(h,pe),d=Math.imul(h,he),d=d+Math.imul(k,pe)|0,y=Math.imul(k,he);var ln=(S+x|0)+((d&8191)<<13)|0;S=(y+(d>>>13)|0)+(ln>>>26)|0,ln&=67108863,x=Math.imul(_,pe),d=Math.imul(_,he),d=d+Math.imul(L,pe)|0,y=Math.imul(L,he),x=x+Math.imul(h,ve)|0,d=d+Math.imul(h,me)|0,d=d+Math.imul(k,ve)|0,y=y+Math.imul(k,me)|0;var tr=(S+x|0)+((d&8191)<<13)|0;S=(y+(d>>>13)|0)+(tr>>>26)|0,tr&=67108863,x=Math.imul(q,pe),d=Math.imul(q,he),d=d+Math.imul(H,pe)|0,y=Math.imul(H,he),x=x+Math.imul(_,ve)|0,d=d+Math.imul(_,me)|0,d=d+Math.imul(L,ve)|0,y=y+Math.imul(L,me)|0,x=x+Math.imul(h,be)|0,d=d+Math.imul(h,ge)|0,d=d+Math.imul(k,be)|0,y=y+Math.imul(k,ge)|0;var nr=(S+x|0)+((d&8191)<<13)|0;S=(y+(d>>>13)|0)+(nr>>>26)|0,nr&=67108863,x=Math.imul(V,pe),d=Math.imul(V,he),d=d+Math.imul(K,pe)|0,y=Math.imul(K,he),x=x+Math.imul(q,ve)|0,d=d+Math.imul(q,me)|0,d=d+Math.imul(H,ve)|0,y=y+Math.imul(H,me)|0,x=x+Math.imul(_,be)|0,d=d+Math.imul(_,ge)|0,d=d+Math.imul(L,be)|0,y=y+Math.imul(L,ge)|0,x=x+Math.imul(h,xe)|0,d=d+Math.imul(h,ye)|0,d=d+Math.imul(k,xe)|0,y=y+Math.imul(k,ye)|0;var It=(S+x|0)+((d&8191)<<13)|0;S=(y+(d>>>13)|0)+(It>>>26)|0,It&=67108863,x=Math.imul(Q,pe),d=Math.imul(Q,he),d=d+Math.imul(Y,pe)|0,y=Math.imul(Y,he),x=x+Math.imul(V,ve)|0,d=d+Math.imul(V,me)|0,d=d+Math.imul(K,ve)|0,y=y+Math.imul(K,me)|0,x=x+Math.imul(q,be)|0,d=d+Math.imul(q,ge)|0,d=d+Math.imul(H,be)|0,y=y+Math.imul(H,ge)|0,x=x+Math.imul(_,xe)|0,d=d+Math.imul(_,ye)|0,d=d+Math.imul(L,xe)|0,y=y+Math.imul(L,ye)|0,x=x+Math.imul(h,we)|0,d=d+Math.imul(h,Ae)|0,d=d+Math.imul(k,we)|0,y=y+Math.imul(k,Ae)|0;var Nt=(S+x|0)+((d&8191)<<13)|0;S=(y+(d>>>13)|0)+(Nt>>>26)|0,Nt&=67108863,x=Math.imul(ne,pe),d=Math.imul(ne,he),d=d+Math.imul(ie,pe)|0,y=Math.imul(ie,he),x=x+Math.imul(Q,ve)|0,d=d+Math.imul(Q,me)|0,d=d+Math.imul(Y,ve)|0,y=y+Math.imul(Y,me)|0,x=x+Math.imul(V,be)|0,d=d+Math.imul(V,ge)|0,d=d+Math.imul(K,be)|0,y=y+Math.imul(K,ge)|0,x=x+Math.imul(q,xe)|0,d=d+Math.imul(q,ye)|0,d=d+Math.imul(H,xe)|0,y=y+Math.imul(H,ye)|0,x=x+Math.imul(_,we)|0,d=d+Math.imul(_,Ae)|0,d=d+Math.imul(L,we)|0,y=y+Math.imul(L,Ae)|0,x=x+Math.imul(h,Ee)|0,d=d+Math.imul(h,Se)|0,d=d+Math.imul(k,Ee)|0,y=y+Math.imul(k,Se)|0;var Dt=(S+x|0)+((d&8191)<<13)|0;S=(y+(d>>>13)|0)+(Dt>>>26)|0,Dt&=67108863,x=Math.imul(ae,pe),d=Math.imul(ae,he),d=d+Math.imul(oe,pe)|0,y=Math.imul(oe,he),x=x+Math.imul(ne,ve)|0,d=d+Math.imul(ne,me)|0,d=d+Math.imul(ie,ve)|0,y=y+Math.imul(ie,me)|0,x=x+Math.imul(Q,be)|0,d=d+Math.imul(Q,ge)|0,d=d+Math.imul(Y,be)|0,y=y+Math.imul(Y,ge)|0,x=x+Math.imul(V,xe)|0,d=d+Math.imul(V,ye)|0,d=d+Math.imul(K,xe)|0,y=y+Math.imul(K,ye)|0,x=x+Math.imul(q,we)|0,d=d+Math.imul(q,Ae)|0,d=d+Math.imul(H,we)|0,y=y+Math.imul(H,Ae)|0,x=x+Math.imul(_,Ee)|0,d=d+Math.imul(_,Se)|0,d=d+Math.imul(L,Ee)|0,y=y+Math.imul(L,Se)|0,x=x+Math.imul(h,_e)|0,d=d+Math.imul(h,Te)|0,d=d+Math.imul(k,_e)|0,y=y+Math.imul(k,Te)|0;var Jt=(S+x|0)+((d&8191)<<13)|0;S=(y+(d>>>13)|0)+(Jt>>>26)|0,Jt&=67108863,x=Math.imul(se,pe),d=Math.imul(se,he),d=d+Math.imul(ce,pe)|0,y=Math.imul(ce,he),x=x+Math.imul(ae,ve)|0,d=d+Math.imul(ae,me)|0,d=d+Math.imul(oe,ve)|0,y=y+Math.imul(oe,me)|0,x=x+Math.imul(ne,be)|0,d=d+Math.imul(ne,ge)|0,d=d+Math.imul(ie,be)|0,y=y+Math.imul(ie,ge)|0,x=x+Math.imul(Q,xe)|0,d=d+Math.imul(Q,ye)|0,d=d+Math.imul(Y,xe)|0,y=y+Math.imul(Y,ye)|0,x=x+Math.imul(V,we)|0,d=d+Math.imul(V,Ae)|0,d=d+Math.imul(K,we)|0,y=y+Math.imul(K,Ae)|0,x=x+Math.imul(q,Ee)|0,d=d+Math.imul(q,Se)|0,d=d+Math.imul(H,Ee)|0,y=y+Math.imul(H,Se)|0,x=x+Math.imul(_,_e)|0,d=d+Math.imul(_,Te)|0,d=d+Math.imul(L,_e)|0,y=y+Math.imul(L,Te)|0,x=x+Math.imul(h,ke)|0,d=d+Math.imul(h,Ce)|0,d=d+Math.imul(k,ke)|0,y=y+Math.imul(k,Ce)|0;var qt=(S+x|0)+((d&8191)<<13)|0;S=(y+(d>>>13)|0)+(qt>>>26)|0,qt&=67108863,x=Math.imul(ue,pe),d=Math.imul(ue,he),d=d+Math.imul(le,pe)|0,y=Math.imul(le,he),x=x+Math.imul(se,ve)|0,d=d+Math.imul(se,me)|0,d=d+Math.imul(ce,ve)|0,y=y+Math.imul(ce,me)|0,x=x+Math.imul(ae,be)|0,d=d+Math.imul(ae,ge)|0,d=d+Math.imul(oe,be)|0,y=y+Math.imul(oe,ge)|0,x=x+Math.imul(ne,xe)|0,d=d+Math.imul(ne,ye)|0,d=d+Math.imul(ie,xe)|0,y=y+Math.imul(ie,ye)|0,x=x+Math.imul(Q,we)|0,d=d+Math.imul(Q,Ae)|0,d=d+Math.imul(Y,we)|0,y=y+Math.imul(Y,Ae)|0,x=x+Math.imul(V,Ee)|0,d=d+Math.imul(V,Se)|0,d=d+Math.imul(K,Ee)|0,y=y+Math.imul(K,Se)|0,x=x+Math.imul(q,_e)|0,d=d+Math.imul(q,Te)|0,d=d+Math.imul(H,_e)|0,y=y+Math.imul(H,Te)|0,x=x+Math.imul(_,ke)|0,d=d+Math.imul(_,Ce)|0,d=d+Math.imul(L,ke)|0,y=y+Math.imul(L,Ce)|0,x=x+Math.imul(h,Oe)|0,d=d+Math.imul(h,Pe)|0,d=d+Math.imul(k,Oe)|0,y=y+Math.imul(k,Pe)|0;var Ha=(S+x|0)+((d&8191)<<13)|0;S=(y+(d>>>13)|0)+(Ha>>>26)|0,Ha&=67108863,x=Math.imul(fe,pe),d=Math.imul(fe,he),d=d+Math.imul(de,pe)|0,y=Math.imul(de,he),x=x+Math.imul(ue,ve)|0,d=d+Math.imul(ue,me)|0,d=d+Math.imul(le,ve)|0,y=y+Math.imul(le,me)|0,x=x+Math.imul(se,be)|0,d=d+Math.imul(se,ge)|0,d=d+Math.imul(ce,be)|0,y=y+Math.imul(ce,ge)|0,x=x+Math.imul(ae,xe)|0,d=d+Math.imul(ae,ye)|0,d=d+Math.imul(oe,xe)|0,y=y+Math.imul(oe,ye)|0,x=x+Math.imul(ne,we)|0,d=d+Math.imul(ne,Ae)|0,d=d+Math.imul(ie,we)|0,y=y+Math.imul(ie,Ae)|0,x=x+Math.imul(Q,Ee)|0,d=d+Math.imul(Q,Se)|0,d=d+Math.imul(Y,Ee)|0,y=y+Math.imul(Y,Se)|0,x=x+Math.imul(V,_e)|0,d=d+Math.imul(V,Te)|0,d=d+Math.imul(K,_e)|0,y=y+Math.imul(K,Te)|0,x=x+Math.imul(q,ke)|0,d=d+Math.imul(q,Ce)|0,d=d+Math.imul(H,ke)|0,y=y+Math.imul(H,Ce)|0,x=x+Math.imul(_,Oe)|0,d=d+Math.imul(_,Pe)|0,d=d+Math.imul(L,Oe)|0,y=y+Math.imul(L,Pe)|0,x=x+Math.imul(h,Me)|0,d=d+Math.imul(h,Be)|0,d=d+Math.imul(k,Me)|0,y=y+Math.imul(k,Be)|0;var za=(S+x|0)+((d&8191)<<13)|0;S=(y+(d>>>13)|0)+(za>>>26)|0,za&=67108863,x=Math.imul(fe,ve),d=Math.imul(fe,me),d=d+Math.imul(de,ve)|0,y=Math.imul(de,me),x=x+Math.imul(ue,be)|0,d=d+Math.imul(ue,ge)|0,d=d+Math.imul(le,be)|0,y=y+Math.imul(le,ge)|0,x=x+Math.imul(se,xe)|0,d=d+Math.imul(se,ye)|0,d=d+Math.imul(ce,xe)|0,y=y+Math.imul(ce,ye)|0,x=x+Math.imul(ae,we)|0,d=d+Math.imul(ae,Ae)|0,d=d+Math.imul(oe,we)|0,y=y+Math.imul(oe,Ae)|0,x=x+Math.imul(ne,Ee)|0,d=d+Math.imul(ne,Se)|0,d=d+Math.imul(ie,Ee)|0,y=y+Math.imul(ie,Se)|0,x=x+Math.imul(Q,_e)|0,d=d+Math.imul(Q,Te)|0,d=d+Math.imul(Y,_e)|0,y=y+Math.imul(Y,Te)|0,x=x+Math.imul(V,ke)|0,d=d+Math.imul(V,Ce)|0,d=d+Math.imul(K,ke)|0,y=y+Math.imul(K,Ce)|0,x=x+Math.imul(q,Oe)|0,d=d+Math.imul(q,Pe)|0,d=d+Math.imul(H,Oe)|0,y=y+Math.imul(H,Pe)|0,x=x+Math.imul(_,Me)|0,d=d+Math.imul(_,Be)|0,d=d+Math.imul(L,Me)|0,y=y+Math.imul(L,Be)|0;var Ga=(S+x|0)+((d&8191)<<13)|0;S=(y+(d>>>13)|0)+(Ga>>>26)|0,Ga&=67108863,x=Math.imul(fe,be),d=Math.imul(fe,ge),d=d+Math.imul(de,be)|0,y=Math.imul(de,ge),x=x+Math.imul(ue,xe)|0,d=d+Math.imul(ue,ye)|0,d=d+Math.imul(le,xe)|0,y=y+Math.imul(le,ye)|0,x=x+Math.imul(se,we)|0,d=d+Math.imul(se,Ae)|0,d=d+Math.imul(ce,we)|0,y=y+Math.imul(ce,Ae)|0,x=x+Math.imul(ae,Ee)|0,d=d+Math.imul(ae,Se)|0,d=d+Math.imul(oe,Ee)|0,y=y+Math.imul(oe,Se)|0,x=x+Math.imul(ne,_e)|0,d=d+Math.imul(ne,Te)|0,d=d+Math.imul(ie,_e)|0,y=y+Math.imul(ie,Te)|0,x=x+Math.imul(Q,ke)|0,d=d+Math.imul(Q,Ce)|0,d=d+Math.imul(Y,ke)|0,y=y+Math.imul(Y,Ce)|0,x=x+Math.imul(V,Oe)|0,d=d+Math.imul(V,Pe)|0,d=d+Math.imul(K,Oe)|0,y=y+Math.imul(K,Pe)|0,x=x+Math.imul(q,Me)|0,d=d+Math.imul(q,Be)|0,d=d+Math.imul(H,Me)|0,y=y+Math.imul(H,Be)|0;var Xa=(S+x|0)+((d&8191)<<13)|0;S=(y+(d>>>13)|0)+(Xa>>>26)|0,Xa&=67108863,x=Math.imul(fe,xe),d=Math.imul(fe,ye),d=d+Math.imul(de,xe)|0,y=Math.imul(de,ye),x=x+Math.imul(ue,we)|0,d=d+Math.imul(ue,Ae)|0,d=d+Math.imul(le,we)|0,y=y+Math.imul(le,Ae)|0,x=x+Math.imul(se,Ee)|0,d=d+Math.imul(se,Se)|0,d=d+Math.imul(ce,Ee)|0,y=y+Math.imul(ce,Se)|0,x=x+Math.imul(ae,_e)|0,d=d+Math.imul(ae,Te)|0,d=d+Math.imul(oe,_e)|0,y=y+Math.imul(oe,Te)|0,x=x+Math.imul(ne,ke)|0,d=d+Math.imul(ne,Ce)|0,d=d+Math.imul(ie,ke)|0,y=y+Math.imul(ie,Ce)|0,x=x+Math.imul(Q,Oe)|0,d=d+Math.imul(Q,Pe)|0,d=d+Math.imul(Y,Oe)|0,y=y+Math.imul(Y,Pe)|0,x=x+Math.imul(V,Me)|0,d=d+Math.imul(V,Be)|0,d=d+Math.imul(K,Me)|0,y=y+Math.imul(K,Be)|0;var Ka=(S+x|0)+((d&8191)<<13)|0;S=(y+(d>>>13)|0)+(Ka>>>26)|0,Ka&=67108863,x=Math.imul(fe,we),d=Math.imul(fe,Ae),d=d+Math.imul(de,we)|0,y=Math.imul(de,Ae),x=x+Math.imul(ue,Ee)|0,d=d+Math.imul(ue,Se)|0,d=d+Math.imul(le,Ee)|0,y=y+Math.imul(le,Se)|0,x=x+Math.imul(se,_e)|0,d=d+Math.imul(se,Te)|0,d=d+Math.imul(ce,_e)|0,y=y+Math.imul(ce,Te)|0,x=x+Math.imul(ae,ke)|0,d=d+Math.imul(ae,Ce)|0,d=d+Math.imul(oe,ke)|0,y=y+Math.imul(oe,Ce)|0,x=x+Math.imul(ne,Oe)|0,d=d+Math.imul(ne,Pe)|0,d=d+Math.imul(ie,Oe)|0,y=y+Math.imul(ie,Pe)|0,x=x+Math.imul(Q,Me)|0,d=d+Math.imul(Q,Be)|0,d=d+Math.imul(Y,Me)|0,y=y+Math.imul(Y,Be)|0;var Va=(S+x|0)+((d&8191)<<13)|0;S=(y+(d>>>13)|0)+(Va>>>26)|0,Va&=67108863,x=Math.imul(fe,Ee),d=Math.imul(fe,Se),d=d+Math.imul(de,Ee)|0,y=Math.imul(de,Se),x=x+Math.imul(ue,_e)|0,d=d+Math.imul(ue,Te)|0,d=d+Math.imul(le,_e)|0,y=y+Math.imul(le,Te)|0,x=x+Math.imul(se,ke)|0,d=d+Math.imul(se,Ce)|0,d=d+Math.imul(ce,ke)|0,y=y+Math.imul(ce,Ce)|0,x=x+Math.imul(ae,Oe)|0,d=d+Math.imul(ae,Pe)|0,d=d+Math.imul(oe,Oe)|0,y=y+Math.imul(oe,Pe)|0,x=x+Math.imul(ne,Me)|0,d=d+Math.imul(ne,Be)|0,d=d+Math.imul(ie,Me)|0,y=y+Math.imul(ie,Be)|0;var Za=(S+x|0)+((d&8191)<<13)|0;S=(y+(d>>>13)|0)+(Za>>>26)|0,Za&=67108863,x=Math.imul(fe,_e),d=Math.imul(fe,Te),d=d+Math.imul(de,_e)|0,y=Math.imul(de,Te),x=x+Math.imul(ue,ke)|0,d=d+Math.imul(ue,Ce)|0,d=d+Math.imul(le,ke)|0,y=y+Math.imul(le,Ce)|0,x=x+Math.imul(se,Oe)|0,d=d+Math.imul(se,Pe)|0,d=d+Math.imul(ce,Oe)|0,y=y+Math.imul(ce,Pe)|0,x=x+Math.imul(ae,Me)|0,d=d+Math.imul(ae,Be)|0,d=d+Math.imul(oe,Me)|0,y=y+Math.imul(oe,Be)|0;var Qa=(S+x|0)+((d&8191)<<13)|0;S=(y+(d>>>13)|0)+(Qa>>>26)|0,Qa&=67108863,x=Math.imul(fe,ke),d=Math.imul(fe,Ce),d=d+Math.imul(de,ke)|0,y=Math.imul(de,Ce),x=x+Math.imul(ue,Oe)|0,d=d+Math.imul(ue,Pe)|0,d=d+Math.imul(le,Oe)|0,y=y+Math.imul(le,Pe)|0,x=x+Math.imul(se,Me)|0,d=d+Math.imul(se,Be)|0,d=d+Math.imul(ce,Me)|0,y=y+Math.imul(ce,Be)|0;var Wa=(S+x|0)+((d&8191)<<13)|0;S=(y+(d>>>13)|0)+(Wa>>>26)|0,Wa&=67108863,x=Math.imul(fe,Oe),d=Math.imul(fe,Pe),d=d+Math.imul(de,Oe)|0,y=Math.imul(de,Pe),x=x+Math.imul(ue,Me)|0,d=d+Math.imul(ue,Be)|0,d=d+Math.imul(le,Me)|0,y=y+Math.imul(le,Be)|0;var Ya=(S+x|0)+((d&8191)<<13)|0;S=(y+(d>>>13)|0)+(Ya>>>26)|0,Ya&=67108863,x=Math.imul(fe,Me),d=Math.imul(fe,Be),d=d+Math.imul(de,Me)|0,y=Math.imul(de,Be);var $a=(S+x|0)+((d&8191)<<13)|0;return S=(y+(d>>>13)|0)+($a>>>26)|0,$a&=67108863,g[0]=ln,g[1]=tr,g[2]=nr,g[3]=It,g[4]=Nt,g[5]=Dt,g[6]=Jt,g[7]=qt,g[8]=Ha,g[9]=za,g[10]=Ga,g[11]=Xa,g[12]=Ka,g[13]=Va,g[14]=Za,g[15]=Qa,g[16]=Wa,g[17]=Ya,g[18]=$a,S!==0&&(g[19]=S,b.length++),b};Math.imul||(A=T);function O(M,v,E){E.negative=v.negative^M.negative,E.length=M.length+v.length;for(var b=0,l=0,p=0;p>>26)|0,l+=g>>>26,g&=67108863}E.words[p]=S,b=g,g=l}return b!==0?E.words[p]=b:E.length--,E.strip()}function B(M,v,E){var b=new F;return b.mulp(M,v,E)}i.prototype.mulTo=function(v,E){var b,l=this.length+v.length;return this.length===10&&v.length===10?b=A(this,v,E):l<63?b=T(this,v,E):l<1024?b=O(this,v,E):b=B(this,v,E),b};function F(M,v){this.x=M,this.y=v}F.prototype.makeRBT=function(v){for(var E=new Array(v),b=i.prototype._countBits(v)-1,l=0;l>=1;return l},F.prototype.permute=function(v,E,b,l,p,g){for(var S=0;S>>1)p++;return 1<>>13,b[2*g+1]=p&8191,p=p>>>13;for(g=2*E;g>=26,E+=l/67108864|0,E+=p>>>26,this.words[b]=p&67108863}return E!==0&&(this.words[b]=E,this.length++),this},i.prototype.muln=function(v){return this.clone().imuln(v)},i.prototype.sqr=function(){return this.mul(this)},i.prototype.isqr=function(){return this.imul(this.clone())},i.prototype.pow=function(v){var E=w(v);if(E.length===0)return new i(1);for(var b=this,l=0;l=0);var E=v%26,b=(v-E)/26,l=67108863>>>26-E<<26-E,p;if(E!==0){var g=0;for(p=0;p>>26-E}g&&(this.words[p]=g,this.length++)}if(b!==0){for(p=this.length-1;p>=0;p--)this.words[p+b]=this.words[p];for(p=0;p=0);var l;E?l=(E-E%26)/26:l=0;var p=v%26,g=Math.min((v-p)/26,this.length),S=67108863^67108863>>>p<g)for(this.length-=g,d=0;d=0&&(y!==0||d>=l);d--){var C=this.words[d]|0;this.words[d]=y<<26-p|C>>>p,y=C&S}return x&&y!==0&&(x.words[x.length++]=y),this.length===0&&(this.words[0]=0,this.length=1),this.strip()},i.prototype.ishrn=function(v,E,b){return r(this.negative===0),this.iushrn(v,E,b)},i.prototype.shln=function(v){return this.clone().ishln(v)},i.prototype.ushln=function(v){return this.clone().iushln(v)},i.prototype.shrn=function(v){return this.clone().ishrn(v)},i.prototype.ushrn=function(v){return this.clone().iushrn(v)},i.prototype.testn=function(v){r(typeof v=="number"&&v>=0);var E=v%26,b=(v-E)/26,l=1<=0);var E=v%26,b=(v-E)/26;if(r(this.negative===0,"imaskn works only with positive numbers"),this.length<=b)return this;if(E!==0&&b++,this.length=Math.min(b,this.length),E!==0){var l=67108863^67108863>>>E<=67108864;E++)this.words[E]-=67108864,E===this.length-1?this.words[E+1]=1:this.words[E+1]++;return this.length=Math.max(this.length,E+1),this},i.prototype.isubn=function(v){if(r(typeof v=="number"),r(v<67108864),v<0)return this.iaddn(-v);if(this.negative!==0)return this.negative=0,this.iaddn(v),this.negative=1,this;if(this.words[0]-=v,this.length===1&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var E=0;E>26)-(x/67108864|0),this.words[p+b]=g&67108863}for(;p>26,this.words[p+b]=g&67108863;if(S===0)return this.strip();for(r(S===-1),S=0,p=0;p>26,this.words[p]=g&67108863;return this.negative=1,this.strip()},i.prototype._wordDiv=function(v,E){var b=this.length-v.length,l=this.clone(),p=v,g=p.words[p.length-1]|0,S=this._countBits(g);b=26-S,b!==0&&(p=p.ushln(b),l.iushln(b),g=p.words[p.length-1]|0);var x=l.length-p.length,d;if(E!=="mod"){d=new i(null),d.length=x+1,d.words=new Array(d.length);for(var y=0;y=0;h--){var k=(l.words[p.length+h]|0)*67108864+(l.words[p.length+h-1]|0);for(k=Math.min(k/g|0,67108863),l._ishlnsubmul(p,k,h);l.negative!==0;)k--,l.negative=0,l._ishlnsubmul(p,1,h),l.isZero()||(l.negative^=1);d&&(d.words[h]=k)}return d&&d.strip(),l.strip(),E!=="div"&&b!==0&&l.iushrn(b),{div:d||null,mod:l}},i.prototype.divmod=function(v,E,b){if(r(!v.isZero()),this.isZero())return{div:new i(0),mod:new i(0)};var l,p,g;return this.negative!==0&&v.negative===0?(g=this.neg().divmod(v,E),E!=="mod"&&(l=g.div.neg()),E!=="div"&&(p=g.mod.neg(),b&&p.negative!==0&&p.iadd(v)),{div:l,mod:p}):this.negative===0&&v.negative!==0?(g=this.divmod(v.neg(),E),E!=="mod"&&(l=g.div.neg()),{div:l,mod:g.mod}):(this.negative&v.negative)!==0?(g=this.neg().divmod(v.neg(),E),E!=="div"&&(p=g.mod.neg(),b&&p.negative!==0&&p.isub(v)),{div:g.div,mod:p}):v.length>this.length||this.cmp(v)<0?{div:new i(0),mod:this}:v.length===1?E==="div"?{div:this.divn(v.words[0]),mod:null}:E==="mod"?{div:null,mod:new i(this.modn(v.words[0]))}:{div:this.divn(v.words[0]),mod:new i(this.modn(v.words[0]))}:this._wordDiv(v,E)},i.prototype.div=function(v){return this.divmod(v,"div",!1).div},i.prototype.mod=function(v){return this.divmod(v,"mod",!1).mod},i.prototype.umod=function(v){return this.divmod(v,"mod",!0).mod},i.prototype.divRound=function(v){var E=this.divmod(v);if(E.mod.isZero())return E.div;var b=E.div.negative!==0?E.mod.isub(v):E.mod,l=v.ushrn(1),p=v.andln(1),g=b.cmp(l);return g<0||p===1&&g===0?E.div:E.div.negative!==0?E.div.isubn(1):E.div.iaddn(1)},i.prototype.modn=function(v){r(v<=67108863);for(var E=(1<<26)%v,b=0,l=this.length-1;l>=0;l--)b=(E*b+(this.words[l]|0))%v;return b},i.prototype.idivn=function(v){r(v<=67108863);for(var E=0,b=this.length-1;b>=0;b--){var l=(this.words[b]|0)+E*67108864;this.words[b]=l/v|0,E=l%v}return this.strip()},i.prototype.divn=function(v){return this.clone().idivn(v)},i.prototype.egcd=function(v){r(v.negative===0),r(!v.isZero());var E=this,b=v.clone();E.negative!==0?E=E.umod(v):E=E.clone();for(var l=new i(1),p=new i(0),g=new i(0),S=new i(1),x=0;E.isEven()&&b.isEven();)E.iushrn(1),b.iushrn(1),++x;for(var d=b.clone(),y=E.clone();!E.isZero();){for(var C=0,h=1;(E.words[0]&h)===0&&C<26;++C,h<<=1);if(C>0)for(E.iushrn(C);C-- >0;)(l.isOdd()||p.isOdd())&&(l.iadd(d),p.isub(y)),l.iushrn(1),p.iushrn(1);for(var k=0,J=1;(b.words[0]&J)===0&&k<26;++k,J<<=1);if(k>0)for(b.iushrn(k);k-- >0;)(g.isOdd()||S.isOdd())&&(g.iadd(d),S.isub(y)),g.iushrn(1),S.iushrn(1);E.cmp(b)>=0?(E.isub(b),l.isub(g),p.isub(S)):(b.isub(E),g.isub(l),S.isub(p))}return{a:g,b:S,gcd:b.iushln(x)}},i.prototype._invmp=function(v){r(v.negative===0),r(!v.isZero());var E=this,b=v.clone();E.negative!==0?E=E.umod(v):E=E.clone();for(var l=new i(1),p=new i(0),g=b.clone();E.cmpn(1)>0&&b.cmpn(1)>0;){for(var S=0,x=1;(E.words[0]&x)===0&&S<26;++S,x<<=1);if(S>0)for(E.iushrn(S);S-- >0;)l.isOdd()&&l.iadd(g),l.iushrn(1);for(var d=0,y=1;(b.words[0]&y)===0&&d<26;++d,y<<=1);if(d>0)for(b.iushrn(d);d-- >0;)p.isOdd()&&p.iadd(g),p.iushrn(1);E.cmp(b)>=0?(E.isub(b),l.isub(p)):(b.isub(E),p.isub(l))}var C;return E.cmpn(1)===0?C=l:C=p,C.cmpn(0)<0&&C.iadd(v),C},i.prototype.gcd=function(v){if(this.isZero())return v.abs();if(v.isZero())return this.abs();var E=this.clone(),b=v.clone();E.negative=0,b.negative=0;for(var l=0;E.isEven()&&b.isEven();l++)E.iushrn(1),b.iushrn(1);do{for(;E.isEven();)E.iushrn(1);for(;b.isEven();)b.iushrn(1);var p=E.cmp(b);if(p<0){var g=E;E=b,b=g}else if(p===0||b.cmpn(1)===0)break;E.isub(b)}while(!0);return b.iushln(l)},i.prototype.invm=function(v){return this.egcd(v).a.umod(v)},i.prototype.isEven=function(){return(this.words[0]&1)===0},i.prototype.isOdd=function(){return(this.words[0]&1)===1},i.prototype.andln=function(v){return this.words[0]&v},i.prototype.bincn=function(v){r(typeof v=="number");var E=v%26,b=(v-E)/26,l=1<>>26,S&=67108863,this.words[g]=S}return p!==0&&(this.words[g]=p,this.length++),this},i.prototype.isZero=function(){return this.length===1&&this.words[0]===0},i.prototype.cmpn=function(v){var E=v<0;if(this.negative!==0&&!E)return-1;if(this.negative===0&&E)return 1;this.strip();var b;if(this.length>1)b=1;else{E&&(v=-v),r(v<=67108863,"Number is too big");var l=this.words[0]|0;b=l===v?0:lv.length)return 1;if(this.length=0;b--){var l=this.words[b]|0,p=v.words[b]|0;if(l!==p){lp&&(E=1);break}}return E},i.prototype.gtn=function(v){return this.cmpn(v)===1},i.prototype.gt=function(v){return this.cmp(v)===1},i.prototype.gten=function(v){return this.cmpn(v)>=0},i.prototype.gte=function(v){return this.cmp(v)>=0},i.prototype.ltn=function(v){return this.cmpn(v)===-1},i.prototype.lt=function(v){return this.cmp(v)===-1},i.prototype.lten=function(v){return this.cmpn(v)<=0},i.prototype.lte=function(v){return this.cmp(v)<=0},i.prototype.eqn=function(v){return this.cmpn(v)===0},i.prototype.eq=function(v){return this.cmp(v)===0},i.red=function(v){return new X(v)},i.prototype.toRed=function(v){return r(!this.red,"Already a number in reduction context"),r(this.negative===0,"red works only with positives"),v.convertTo(this)._forceRed(v)},i.prototype.fromRed=function(){return r(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},i.prototype._forceRed=function(v){return this.red=v,this},i.prototype.forceRed=function(v){return r(!this.red,"Already a number in reduction context"),this._forceRed(v)},i.prototype.redAdd=function(v){return r(this.red,"redAdd works only with red numbers"),this.red.add(this,v)},i.prototype.redIAdd=function(v){return r(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,v)},i.prototype.redSub=function(v){return r(this.red,"redSub works only with red numbers"),this.red.sub(this,v)},i.prototype.redISub=function(v){return r(this.red,"redISub works only with red numbers"),this.red.isub(this,v)},i.prototype.redShl=function(v){return r(this.red,"redShl works only with red numbers"),this.red.shl(this,v)},i.prototype.redMul=function(v){return r(this.red,"redMul works only with red numbers"),this.red._verify2(this,v),this.red.mul(this,v)},i.prototype.redIMul=function(v){return r(this.red,"redMul works only with red numbers"),this.red._verify2(this,v),this.red.imul(this,v)},i.prototype.redSqr=function(){return r(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},i.prototype.redISqr=function(){return r(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},i.prototype.redSqrt=function(){return r(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},i.prototype.redInvm=function(){return r(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},i.prototype.redNeg=function(){return r(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},i.prototype.redPow=function(v){return r(this.red&&!v.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,v)};var I={k256:null,p224:null,p192:null,p25519:null};function D(M,v){this.name=M,this.p=new i(v,16),this.n=this.p.bitLength(),this.k=new i(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}D.prototype._tmp=function(){var v=new i(null);return v.words=new Array(Math.ceil(this.n/13)),v},D.prototype.ireduce=function(v){var E=v,b;do this.split(E,this.tmp),E=this.imulK(E),E=E.iadd(this.tmp),b=E.bitLength();while(b>this.n);var l=b0?E.isub(this.p):E.strip!==void 0?E.strip():E._strip(),E},D.prototype.split=function(v,E){v.iushrn(this.n,0,E)},D.prototype.imulK=function(v){return v.imul(this.k)};function z(){D.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}n(z,D),z.prototype.split=function(v,E){for(var b=4194303,l=Math.min(v.length,9),p=0;p>>22,g=S}g>>>=22,v.words[p-10]=g,g===0&&v.length>10?v.length-=10:v.length-=9},z.prototype.imulK=function(v){v.words[v.length]=0,v.words[v.length+1]=0,v.length+=2;for(var E=0,b=0;b>>=26,v.words[b]=p,E=l}return E!==0&&(v.words[v.length++]=E),v},i._prime=function(v){if(I[v])return I[v];var E;if(v==="k256")E=new z;else if(v==="p224")E=new G;else if(v==="p192")E=new j;else if(v==="p25519")E=new Z;else throw new Error("Unknown prime "+v);return I[v]=E,E};function X(M){if(typeof M=="string"){var v=i._prime(M);this.m=v.p,this.prime=v}else r(M.gtn(1),"modulus must be greater than 1"),this.m=M,this.prime=null}X.prototype._verify1=function(v){r(v.negative===0,"red works only with positives"),r(v.red,"red works only with red numbers")},X.prototype._verify2=function(v,E){r((v.negative|E.negative)===0,"red works only with positives"),r(v.red&&v.red===E.red,"red works only with red numbers")},X.prototype.imod=function(v){return this.prime?this.prime.ireduce(v)._forceRed(this):v.umod(this.m)._forceRed(this)},X.prototype.neg=function(v){return v.isZero()?v.clone():this.m.sub(v)._forceRed(this)},X.prototype.add=function(v,E){this._verify2(v,E);var b=v.add(E);return b.cmp(this.m)>=0&&b.isub(this.m),b._forceRed(this)},X.prototype.iadd=function(v,E){this._verify2(v,E);var b=v.iadd(E);return b.cmp(this.m)>=0&&b.isub(this.m),b},X.prototype.sub=function(v,E){this._verify2(v,E);var b=v.sub(E);return b.cmpn(0)<0&&b.iadd(this.m),b._forceRed(this)},X.prototype.isub=function(v,E){this._verify2(v,E);var b=v.isub(E);return b.cmpn(0)<0&&b.iadd(this.m),b},X.prototype.shl=function(v,E){return this._verify1(v),this.imod(v.ushln(E))},X.prototype.imul=function(v,E){return this._verify2(v,E),this.imod(v.imul(E))},X.prototype.mul=function(v,E){return this._verify2(v,E),this.imod(v.mul(E))},X.prototype.isqr=function(v){return this.imul(v,v.clone())},X.prototype.sqr=function(v){return this.mul(v,v)},X.prototype.sqrt=function(v){if(v.isZero())return v.clone();var E=this.m.andln(3);if(r(E%2===1),E===3){var b=this.m.add(new i(1)).iushrn(2);return this.pow(v,b)}for(var l=this.m.subn(1),p=0;!l.isZero()&&l.andln(1)===0;)p++,l.iushrn(1);r(!l.isZero());var g=new i(1).toRed(this),S=g.redNeg(),x=this.m.subn(1).iushrn(1),d=this.m.bitLength();for(d=new i(2*d*d).toRed(this);this.pow(d,x).cmp(S)!==0;)d.redIAdd(S);for(var y=this.pow(d,l),C=this.pow(v,l.addn(1).iushrn(1)),h=this.pow(v,l),k=p;h.cmp(g)!==0;){for(var J=h,_=0;J.cmp(g)!==0;_++)J=J.redSqr();r(_=0;p--){for(var y=E.words[p],C=d-1;C>=0;C--){var h=y>>C&1;if(g!==l[0]&&(g=this.sqr(g)),h===0&&S===0){x=0;continue}S<<=1,S|=h,x++,!(x!==b&&(p!==0||C!==0))&&(g=this.mul(g,l[S]),x=0,S=0)}d=26}return g},X.prototype.convertTo=function(v){var E=v.umod(this.m);return E===v?E.clone():E},X.prototype.convertFrom=function(v){var E=v.clone();return E.red=null,E},i.mont=function(v){return new U(v)};function U(M){X.call(this,M),this.shift=this.m.bitLength(),this.shift%26!==0&&(this.shift+=26-this.shift%26),this.r=new i(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}n(U,X),U.prototype.convertTo=function(v){return this.imod(v.ushln(this.shift))},U.prototype.convertFrom=function(v){var E=this.imod(v.mul(this.rinv));return E.red=null,E},U.prototype.imul=function(v,E){if(v.isZero()||E.isZero())return v.words[0]=0,v.length=1,v;var b=v.imul(E),l=b.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),p=b.isub(l).iushrn(this.shift),g=p;return p.cmp(this.m)>=0?g=p.isub(this.m):p.cmpn(0)<0&&(g=p.iadd(this.m)),g._forceRed(this)},U.prototype.mul=function(v,E){if(v.isZero()||E.isZero())return new i(0)._forceRed(this);var b=v.mul(E),l=b.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),p=b.isub(l).iushrn(this.shift),g=p;return p.cmp(this.m)>=0?g=p.isub(this.m):p.cmpn(0)<0&&(g=p.iadd(this.m)),g._forceRed(this)},U.prototype.invm=function(v){var E=this.imod(v._invmp(this.m).mul(this.r2));return E._forceRed(this)}})(typeof Om>"u"||Om,Bw)});var pa=P((Mee,Lw)=>{Lw.exports=Fw;function Fw(t,e){if(!t)throw new Error(e||"Assertion failed")}Fw.equal=function(e,r,n){if(e!=r)throw new Error(n||"Assertion failed: "+e+" != "+r)}});var Pm=P(Nw=>{"use strict";var ep=Nw;function wj(t,e){if(Array.isArray(t))return t.slice();if(!t)return[];var r=[];if(typeof t!="string"){for(var n=0;n>8,o=i&255;a?r.push(a,o):r.push(o)}return r}ep.toArray=wj;function Rw(t){return t.length===1?"0"+t:t}ep.zero2=Rw;function Iw(t){for(var e="",r=0;r{"use strict";var xn=Dw,Aj=ti(),Ej=pa(),rp=Pm();xn.assert=Ej;xn.toArray=rp.toArray;xn.zero2=rp.zero2;xn.toHex=rp.toHex;xn.encode=rp.encode;function Sj(t,e,r){var n=new Array(Math.max(t.bitLength(),r)+1);n.fill(0);for(var i=1<(i>>1)-1?c=(i>>1)-u:c=u,a.isubn(c)):c=0,n[o]=c,a.iushrn(1)}return n}xn.getNAF=Sj;function _j(t,e){var r=[[],[]];t=t.clone(),e=e.clone();for(var n=0,i=0,a;t.cmpn(-n)>0||e.cmpn(-i)>0;){var o=t.andln(3)+n&3,c=e.andln(3)+i&3;o===3&&(o=-1),c===3&&(c=-1);var u;(o&1)===0?u=0:(a=t.andln(7)+n&7,(a===3||a===5)&&c===2?u=-o:u=o),r[0].push(u);var s;(c&1)===0?s=0:(a=e.andln(7)+i&7,(a===3||a===5)&&o===2?s=-c:s=c),r[1].push(s),2*n===u+1&&(n=1-n),2*i===s+1&&(i=1-i),t.iushrn(1),e.iushrn(1)}return r}xn.getJSF=_j;function Tj(t,e,r){var n="_"+e;t.prototype[e]=function(){return this[n]!==void 0?this[n]:this[n]=r.call(this)}}xn.cachedProperty=Tj;function kj(t){return typeof t=="string"?xn.toArray(t,"hex"):t}xn.parseBytes=kj;function Cj(t){return new Aj(t,"hex","le")}xn.intFromLE=Cj});var Lm=P((Lee,Fm)=>{var Mm;Fm.exports=function(e){return Mm||(Mm=new ha(null)),Mm.generate(e)};function ha(t){this.rand=t}Fm.exports.Rand=ha;ha.prototype.generate=function(e){return this._rand(e)};ha.prototype._rand=function(e){if(this.rand.getBytes)return this.rand.getBytes(e);for(var r=new Uint8Array(e),n=0;n{"use strict";var Oo=ti(),Yu=Ft(),tp=Yu.getNAF,Oj=Yu.getJSF,np=Yu.assert;function va(t,e){this.type=t,this.p=new Oo(e.p,16),this.red=e.prime?Oo.red(e.prime):Oo.mont(this.p),this.zero=new Oo(0).toRed(this.red),this.one=new Oo(1).toRed(this.red),this.two=new Oo(2).toRed(this.red),this.n=e.n&&new Oo(e.n,16),this.g=e.g&&this.pointFromJSON(e.g,e.gRed),this._wnafT1=new Array(4),this._wnafT2=new Array(4),this._wnafT3=new Array(4),this._wnafT4=new Array(4),this._bitLength=this.n?this.n.bitLength():0;var r=this.n&&this.p.div(this.n);!r||r.cmpn(100)>0?this.redN=null:(this._maxwellTrick=!0,this.redN=this.n.toRed(this.red))}Jw.exports=va;va.prototype.point=function(){throw new Error("Not implemented")};va.prototype.validate=function(){throw new Error("Not implemented")};va.prototype._fixedNafMul=function(e,r){np(e.precomputed);var n=e._getDoubles(),i=tp(r,1,this._bitLength),a=(1<=c;s--)u=(u<<1)+i[s];o.push(u)}for(var f=this.jpoint(null,null,null),m=this.jpoint(null,null,null),w=a;w>0;w--){for(c=0;c=0;u--){for(var s=0;u>=0&&o[u]===0;u--)s++;if(u>=0&&s++,c=c.dblp(s),u<0)break;var f=o[u];np(f!==0),e.type==="affine"?f>0?c=c.mixedAdd(a[f-1>>1]):c=c.mixedAdd(a[-f-1>>1].neg()):f>0?c=c.add(a[f-1>>1]):c=c.add(a[-f-1>>1].neg())}return e.type==="affine"?c.toP():c};va.prototype._wnafMulAdd=function(e,r,n,i,a){var o=this._wnafT1,c=this._wnafT2,u=this._wnafT3,s=0,f,m,w;for(f=0;f=1;f-=2){var A=f-1,O=f;if(o[A]!==1||o[O]!==1){u[A]=tp(n[A],o[A],this._bitLength),u[O]=tp(n[O],o[O],this._bitLength),s=Math.max(u[A].length,s),s=Math.max(u[O].length,s);continue}var B=[r[A],null,null,r[O]];r[A].y.cmp(r[O].y)===0?(B[1]=r[A].add(r[O]),B[2]=r[A].toJ().mixedAdd(r[O].neg())):r[A].y.cmp(r[O].y.redNeg())===0?(B[1]=r[A].toJ().mixedAdd(r[O]),B[2]=r[A].add(r[O].neg())):(B[1]=r[A].toJ().mixedAdd(r[O]),B[2]=r[A].toJ().mixedAdd(r[O].neg()));var F=[-3,-1,-5,-7,0,7,5,1,3],I=Oj(n[A],n[O]);for(s=Math.max(I[0].length,s),u[A]=new Array(s),u[O]=new Array(s),m=0;m=0;f--){for(var Z=0;f>=0;){var X=!0;for(m=0;m=0&&Z++,G=G.dblp(Z),f<0)break;for(m=0;m0?w=c[m][U-1>>1]:U<0&&(w=c[m][-U-1>>1].neg()),w.type==="affine"?G=G.mixedAdd(w):G=G.add(w))}}for(f=0;f=Math.ceil((e.bitLength()+1)/r.step):!1};Yt.prototype._getDoubles=function(e,r){if(this.precomputed&&this.precomputed.doubles)return this.precomputed.doubles;for(var n=[this],i=this,a=0;a{"use strict";var Pj=Ft(),yr=ti(),Rm=Yo(),$s=$u(),Mj=Pj.assert;function $t(t){$s.call(this,"short",t),this.a=new yr(t.a,16).toRed(this.red),this.b=new yr(t.b,16).toRed(this.red),this.tinv=this.two.redInvm(),this.zeroA=this.a.fromRed().cmpn(0)===0,this.threeA=this.a.fromRed().sub(this.p).cmpn(-3)===0,this.endo=this._getEndomorphism(t),this._endoWnafT1=new Array(4),this._endoWnafT2=new Array(4)}Rm($t,$s);qw.exports=$t;$t.prototype._getEndomorphism=function(e){if(!(!this.zeroA||!this.g||!this.n||this.p.modn(3)!==1)){var r,n;if(e.beta)r=new yr(e.beta,16).toRed(this.red);else{var i=this._getEndoRoots(this.p);r=i[0].cmp(i[1])<0?i[0]:i[1],r=r.toRed(this.red)}if(e.lambda)n=new yr(e.lambda,16);else{var a=this._getEndoRoots(this.n);this.g.mul(a[0]).x.cmp(this.g.x.redMul(r))===0?n=a[0]:(n=a[1],Mj(this.g.mul(n).x.cmp(this.g.x.redMul(r))===0))}var o;return e.basis?o=e.basis.map(function(c){return{a:new yr(c.a,16),b:new yr(c.b,16)}}):o=this._getEndoBasis(n),{beta:r,lambda:n,basis:o}}};$t.prototype._getEndoRoots=function(e){var r=e===this.p?this.red:yr.mont(e),n=new yr(2).toRed(r).redInvm(),i=n.redNeg(),a=new yr(3).toRed(r).redNeg().redSqrt().redMul(n),o=i.redAdd(a).fromRed(),c=i.redSub(a).fromRed();return[o,c]};$t.prototype._getEndoBasis=function(e){for(var r=this.n.ushrn(Math.floor(this.n.bitLength()/2)),n=e,i=this.n.clone(),a=new yr(1),o=new yr(0),c=new yr(0),u=new yr(1),s,f,m,w,T,A,O,B=0,F,I;n.cmpn(0)!==0;){var D=i.div(n);F=i.sub(D.mul(n)),I=c.sub(D.mul(a));var z=u.sub(D.mul(o));if(!m&&F.cmp(r)<0)s=O.neg(),f=a,m=F.neg(),w=I;else if(m&&++B===2)break;O=F,i=n,n=F,c=a,a=I,u=o,o=z}T=F.neg(),A=I;var G=m.sqr().add(w.sqr()),j=T.sqr().add(A.sqr());return j.cmp(G)>=0&&(T=s,A=f),m.negative&&(m=m.neg(),w=w.neg()),T.negative&&(T=T.neg(),A=A.neg()),[{a:m,b:w},{a:T,b:A}]};$t.prototype._endoSplit=function(e){var r=this.endo.basis,n=r[0],i=r[1],a=i.b.mul(e).divRound(this.n),o=n.b.neg().mul(e).divRound(this.n),c=a.mul(n.a),u=o.mul(i.a),s=a.mul(n.b),f=o.mul(i.b),m=e.sub(c).sub(u),w=s.add(f).neg();return{k1:m,k2:w}};$t.prototype.pointFromX=function(e,r){e=new yr(e,16),e.red||(e=e.toRed(this.red));var n=e.redSqr().redMul(e).redIAdd(e.redMul(this.a)).redIAdd(this.b),i=n.redSqrt();if(i.redSqr().redSub(n).cmp(this.zero)!==0)throw new Error("invalid point");var a=i.fromRed().isOdd();return(r&&!a||!r&&a)&&(i=i.redNeg()),this.point(e,i)};$t.prototype.validate=function(e){if(e.inf)return!0;var r=e.x,n=e.y,i=this.a.redMul(r),a=r.redSqr().redMul(r).redIAdd(i).redIAdd(this.b);return n.redSqr().redISub(a).cmpn(0)===0};$t.prototype._endoWnafMulAdd=function(e,r,n){for(var i=this._endoWnafT1,a=this._endoWnafT2,o=0;o":""};zr.prototype.isInfinity=function(){return this.inf};zr.prototype.add=function(e){if(this.inf)return e;if(e.inf)return this;if(this.eq(e))return this.dbl();if(this.neg().eq(e))return this.curve.point(null,null);if(this.x.cmp(e.x)===0)return this.curve.point(null,null);var r=this.y.redSub(e.y);r.cmpn(0)!==0&&(r=r.redMul(this.x.redSub(e.x).redInvm()));var n=r.redSqr().redISub(this.x).redISub(e.x),i=r.redMul(this.x.redSub(n)).redISub(this.y);return this.curve.point(n,i)};zr.prototype.dbl=function(){if(this.inf)return this;var e=this.y.redAdd(this.y);if(e.cmpn(0)===0)return this.curve.point(null,null);var r=this.curve.a,n=this.x.redSqr(),i=e.redInvm(),a=n.redAdd(n).redIAdd(n).redIAdd(r).redMul(i),o=a.redSqr().redISub(this.x.redAdd(this.x)),c=a.redMul(this.x.redSub(o)).redISub(this.y);return this.curve.point(o,c)};zr.prototype.getX=function(){return this.x.fromRed()};zr.prototype.getY=function(){return this.y.fromRed()};zr.prototype.mul=function(e){return e=new yr(e,16),this.isInfinity()?this:this._hasDoubles(e)?this.curve._fixedNafMul(this,e):this.curve.endo?this.curve._endoWnafMulAdd([this],[e]):this.curve._wnafMul(this,e)};zr.prototype.mulAdd=function(e,r,n){var i=[this,r],a=[e,n];return this.curve.endo?this.curve._endoWnafMulAdd(i,a):this.curve._wnafMulAdd(1,i,a,2)};zr.prototype.jmulAdd=function(e,r,n){var i=[this,r],a=[e,n];return this.curve.endo?this.curve._endoWnafMulAdd(i,a,!0):this.curve._wnafMulAdd(1,i,a,2,!0)};zr.prototype.eq=function(e){return this===e||this.inf===e.inf&&(this.inf||this.x.cmp(e.x)===0&&this.y.cmp(e.y)===0)};zr.prototype.neg=function(e){if(this.inf)return this;var r=this.curve.point(this.x,this.y.redNeg());if(e&&this.precomputed){var n=this.precomputed,i=function(a){return a.neg()};r.precomputed={naf:n.naf&&{wnd:n.naf.wnd,points:n.naf.points.map(i)},doubles:n.doubles&&{step:n.doubles.step,points:n.doubles.points.map(i)}}}return r};zr.prototype.toJ=function(){if(this.inf)return this.curve.jpoint(null,null,null);var e=this.curve.jpoint(this.x,this.y,this.curve.one);return e};function Wr(t,e,r,n){$s.BasePoint.call(this,t,"jacobian"),e===null&&r===null&&n===null?(this.x=this.curve.one,this.y=this.curve.one,this.z=new yr(0)):(this.x=new yr(e,16),this.y=new yr(r,16),this.z=new yr(n,16)),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.y.red||(this.y=this.y.toRed(this.curve.red)),this.z.red||(this.z=this.z.toRed(this.curve.red)),this.zOne=this.z===this.curve.one}Rm(Wr,$s.BasePoint);$t.prototype.jpoint=function(e,r,n){return new Wr(this,e,r,n)};Wr.prototype.toP=function(){if(this.isInfinity())return this.curve.point(null,null);var e=this.z.redInvm(),r=e.redSqr(),n=this.x.redMul(r),i=this.y.redMul(r).redMul(e);return this.curve.point(n,i)};Wr.prototype.neg=function(){return this.curve.jpoint(this.x,this.y.redNeg(),this.z)};Wr.prototype.add=function(e){if(this.isInfinity())return e;if(e.isInfinity())return this;var r=e.z.redSqr(),n=this.z.redSqr(),i=this.x.redMul(r),a=e.x.redMul(n),o=this.y.redMul(r.redMul(e.z)),c=e.y.redMul(n.redMul(this.z)),u=i.redSub(a),s=o.redSub(c);if(u.cmpn(0)===0)return s.cmpn(0)!==0?this.curve.jpoint(null,null,null):this.dbl();var f=u.redSqr(),m=f.redMul(u),w=i.redMul(f),T=s.redSqr().redIAdd(m).redISub(w).redISub(w),A=s.redMul(w.redISub(T)).redISub(o.redMul(m)),O=this.z.redMul(e.z).redMul(u);return this.curve.jpoint(T,A,O)};Wr.prototype.mixedAdd=function(e){if(this.isInfinity())return e.toJ();if(e.isInfinity())return this;var r=this.z.redSqr(),n=this.x,i=e.x.redMul(r),a=this.y,o=e.y.redMul(r).redMul(this.z),c=n.redSub(i),u=a.redSub(o);if(c.cmpn(0)===0)return u.cmpn(0)!==0?this.curve.jpoint(null,null,null):this.dbl();var s=c.redSqr(),f=s.redMul(c),m=n.redMul(s),w=u.redSqr().redIAdd(f).redISub(m).redISub(m),T=u.redMul(m.redISub(w)).redISub(a.redMul(f)),A=this.z.redMul(c);return this.curve.jpoint(w,T,A)};Wr.prototype.dblp=function(e){if(e===0)return this;if(this.isInfinity())return this;if(!e)return this.dbl();var r;if(this.curve.zeroA||this.curve.threeA){var n=this;for(r=0;r=0)return!1;if(n.redIAdd(a),this.x.cmp(n)===0)return!0}};Wr.prototype.inspect=function(){return this.isInfinity()?"":""};Wr.prototype.isInfinity=function(){return this.z.cmpn(0)===0}});var zw=P((Nee,Hw)=>{"use strict";var ec=ti(),Uw=Yo(),ip=$u(),Bj=Ft();function rc(t){ip.call(this,"mont",t),this.a=new ec(t.a,16).toRed(this.red),this.b=new ec(t.b,16).toRed(this.red),this.i4=new ec(4).toRed(this.red).redInvm(),this.two=new ec(2).toRed(this.red),this.a24=this.i4.redMul(this.a.redAdd(this.two))}Uw(rc,ip);Hw.exports=rc;rc.prototype.validate=function(e){var r=e.normalize().x,n=r.redSqr(),i=n.redMul(r).redAdd(n.redMul(this.a)).redAdd(r),a=i.redSqrt();return a.redSqr().cmp(i)===0};function Gr(t,e,r){ip.BasePoint.call(this,t,"projective"),e===null&&r===null?(this.x=this.curve.one,this.z=this.curve.zero):(this.x=new ec(e,16),this.z=new ec(r,16),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.z.red||(this.z=this.z.toRed(this.curve.red)))}Uw(Gr,ip.BasePoint);rc.prototype.decodePoint=function(e,r){return this.point(Bj.toArray(e,r),1)};rc.prototype.point=function(e,r){return new Gr(this,e,r)};rc.prototype.pointFromJSON=function(e){return Gr.fromJSON(this,e)};Gr.prototype.precompute=function(){};Gr.prototype._encode=function(){return this.getX().toArray("be",this.curve.p.byteLength())};Gr.fromJSON=function(e,r){return new Gr(e,r[0],r[1]||e.one)};Gr.prototype.inspect=function(){return this.isInfinity()?"":""};Gr.prototype.isInfinity=function(){return this.z.cmpn(0)===0};Gr.prototype.dbl=function(){var e=this.x.redAdd(this.z),r=e.redSqr(),n=this.x.redSub(this.z),i=n.redSqr(),a=r.redSub(i),o=r.redMul(i),c=a.redMul(i.redAdd(this.curve.a24.redMul(a)));return this.curve.point(o,c)};Gr.prototype.add=function(){throw new Error("Not supported on Montgomery curve")};Gr.prototype.diffAdd=function(e,r){var n=this.x.redAdd(this.z),i=this.x.redSub(this.z),a=e.x.redAdd(e.z),o=e.x.redSub(e.z),c=o.redMul(n),u=a.redMul(i),s=r.z.redMul(c.redAdd(u).redSqr()),f=r.x.redMul(c.redISub(u).redSqr());return this.curve.point(s,f)};Gr.prototype.mul=function(e){for(var r=e.clone(),n=this,i=this.curve.point(null,null),a=this,o=[];r.cmpn(0)!==0;r.iushrn(1))o.push(r.andln(1));for(var c=o.length-1;c>=0;c--)o[c]===0?(n=n.diffAdd(i,a),i=i.dbl()):(i=n.diffAdd(i,a),n=n.dbl());return i};Gr.prototype.mulAdd=function(){throw new Error("Not supported on Montgomery curve")};Gr.prototype.jumlAdd=function(){throw new Error("Not supported on Montgomery curve")};Gr.prototype.eq=function(e){return this.getX().cmp(e.getX())===0};Gr.prototype.normalize=function(){return this.x=this.x.redMul(this.z.redInvm()),this.z=this.curve.one,this};Gr.prototype.getX=function(){return this.normalize(),this.x.fromRed()}});var Kw=P((Dee,Xw)=>{"use strict";var Fj=Ft(),Ri=ti(),Gw=Yo(),ap=$u(),Lj=Fj.assert;function ni(t){this.twisted=(t.a|0)!==1,this.mOneA=this.twisted&&(t.a|0)===-1,this.extended=this.mOneA,ap.call(this,"edwards",t),this.a=new Ri(t.a,16).umod(this.red.m),this.a=this.a.toRed(this.red),this.c=new Ri(t.c,16).toRed(this.red),this.c2=this.c.redSqr(),this.d=new Ri(t.d,16).toRed(this.red),this.dd=this.d.redAdd(this.d),Lj(!this.twisted||this.c.fromRed().cmpn(1)===0),this.oneC=(t.c|0)===1}Gw(ni,ap);Xw.exports=ni;ni.prototype._mulA=function(e){return this.mOneA?e.redNeg():this.a.redMul(e)};ni.prototype._mulC=function(e){return this.oneC?e:this.c.redMul(e)};ni.prototype.jpoint=function(e,r,n,i){return this.point(e,r,n,i)};ni.prototype.pointFromX=function(e,r){e=new Ri(e,16),e.red||(e=e.toRed(this.red));var n=e.redSqr(),i=this.c2.redSub(this.a.redMul(n)),a=this.one.redSub(this.c2.redMul(this.d).redMul(n)),o=i.redMul(a.redInvm()),c=o.redSqrt();if(c.redSqr().redSub(o).cmp(this.zero)!==0)throw new Error("invalid point");var u=c.fromRed().isOdd();return(r&&!u||!r&&u)&&(c=c.redNeg()),this.point(e,c)};ni.prototype.pointFromY=function(e,r){e=new Ri(e,16),e.red||(e=e.toRed(this.red));var n=e.redSqr(),i=n.redSub(this.c2),a=n.redMul(this.d).redMul(this.c2).redSub(this.a),o=i.redMul(a.redInvm());if(o.cmp(this.zero)===0){if(r)throw new Error("invalid point");return this.point(this.zero,e)}var c=o.redSqrt();if(c.redSqr().redSub(o).cmp(this.zero)!==0)throw new Error("invalid point");return c.fromRed().isOdd()!==r&&(c=c.redNeg()),this.point(c,e)};ni.prototype.validate=function(e){if(e.isInfinity())return!0;e.normalize();var r=e.x.redSqr(),n=e.y.redSqr(),i=r.redMul(this.a).redAdd(n),a=this.c2.redMul(this.one.redAdd(this.d.redMul(r).redMul(n)));return i.cmp(a)===0};function fr(t,e,r,n,i){ap.BasePoint.call(this,t,"projective"),e===null&&r===null&&n===null?(this.x=this.curve.zero,this.y=this.curve.one,this.z=this.curve.one,this.t=this.curve.zero,this.zOne=!0):(this.x=new Ri(e,16),this.y=new Ri(r,16),this.z=n?new Ri(n,16):this.curve.one,this.t=i&&new Ri(i,16),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.y.red||(this.y=this.y.toRed(this.curve.red)),this.z.red||(this.z=this.z.toRed(this.curve.red)),this.t&&!this.t.red&&(this.t=this.t.toRed(this.curve.red)),this.zOne=this.z===this.curve.one,this.curve.extended&&!this.t&&(this.t=this.x.redMul(this.y),this.zOne||(this.t=this.t.redMul(this.z.redInvm()))))}Gw(fr,ap.BasePoint);ni.prototype.pointFromJSON=function(e){return fr.fromJSON(this,e)};ni.prototype.point=function(e,r,n,i){return new fr(this,e,r,n,i)};fr.fromJSON=function(e,r){return new fr(e,r[0],r[1],r[2])};fr.prototype.inspect=function(){return this.isInfinity()?"":""};fr.prototype.isInfinity=function(){return this.x.cmpn(0)===0&&(this.y.cmp(this.z)===0||this.zOne&&this.y.cmp(this.curve.c)===0)};fr.prototype._extDbl=function(){var e=this.x.redSqr(),r=this.y.redSqr(),n=this.z.redSqr();n=n.redIAdd(n);var i=this.curve._mulA(e),a=this.x.redAdd(this.y).redSqr().redISub(e).redISub(r),o=i.redAdd(r),c=o.redSub(n),u=i.redSub(r),s=a.redMul(c),f=o.redMul(u),m=a.redMul(u),w=c.redMul(o);return this.curve.point(s,f,w,m)};fr.prototype._projDbl=function(){var e=this.x.redAdd(this.y).redSqr(),r=this.x.redSqr(),n=this.y.redSqr(),i,a,o,c,u,s;if(this.curve.twisted){c=this.curve._mulA(r);var f=c.redAdd(n);this.zOne?(i=e.redSub(r).redSub(n).redMul(f.redSub(this.curve.two)),a=f.redMul(c.redSub(n)),o=f.redSqr().redSub(f).redSub(f)):(u=this.z.redSqr(),s=f.redSub(u).redISub(u),i=e.redSub(r).redISub(n).redMul(s),a=f.redMul(c.redSub(n)),o=f.redMul(s))}else c=r.redAdd(n),u=this.curve._mulC(this.z).redSqr(),s=c.redSub(u).redSub(u),i=this.curve._mulC(e.redISub(c)).redMul(s),a=this.curve._mulC(c).redMul(r.redISub(n)),o=c.redMul(s);return this.curve.point(i,a,o)};fr.prototype.dbl=function(){return this.isInfinity()?this:this.curve.extended?this._extDbl():this._projDbl()};fr.prototype._extAdd=function(e){var r=this.y.redSub(this.x).redMul(e.y.redSub(e.x)),n=this.y.redAdd(this.x).redMul(e.y.redAdd(e.x)),i=this.t.redMul(this.curve.dd).redMul(e.t),a=this.z.redMul(e.z.redAdd(e.z)),o=n.redSub(r),c=a.redSub(i),u=a.redAdd(i),s=n.redAdd(r),f=o.redMul(c),m=u.redMul(s),w=o.redMul(s),T=c.redMul(u);return this.curve.point(f,m,T,w)};fr.prototype._projAdd=function(e){var r=this.z.redMul(e.z),n=r.redSqr(),i=this.x.redMul(e.x),a=this.y.redMul(e.y),o=this.curve.d.redMul(i).redMul(a),c=n.redSub(o),u=n.redAdd(o),s=this.x.redAdd(this.y).redMul(e.x.redAdd(e.y)).redISub(i).redISub(a),f=r.redMul(c).redMul(s),m,w;return this.curve.twisted?(m=r.redMul(u).redMul(a.redSub(this.curve._mulA(i))),w=c.redMul(u)):(m=r.redMul(u).redMul(a.redSub(i)),w=this.curve._mulC(c).redMul(u)),this.curve.point(f,m,w)};fr.prototype.add=function(e){return this.isInfinity()?e:e.isInfinity()?this:this.curve.extended?this._extAdd(e):this._projAdd(e)};fr.prototype.mul=function(e){return this._hasDoubles(e)?this.curve._fixedNafMul(this,e):this.curve._wnafMul(this,e)};fr.prototype.mulAdd=function(e,r,n){return this.curve._wnafMulAdd(1,[this,r],[e,n],2,!1)};fr.prototype.jmulAdd=function(e,r,n){return this.curve._wnafMulAdd(1,[this,r],[e,n],2,!0)};fr.prototype.normalize=function(){if(this.zOne)return this;var e=this.z.redInvm();return this.x=this.x.redMul(e),this.y=this.y.redMul(e),this.t&&(this.t=this.t.redMul(e)),this.z=this.curve.one,this.zOne=!0,this};fr.prototype.neg=function(){return this.curve.point(this.x.redNeg(),this.y,this.z,this.t&&this.t.redNeg())};fr.prototype.getX=function(){return this.normalize(),this.x.fromRed()};fr.prototype.getY=function(){return this.normalize(),this.y.fromRed()};fr.prototype.eq=function(e){return this===e||this.getX().cmp(e.getX())===0&&this.getY().cmp(e.getY())===0};fr.prototype.eqXToP=function(e){var r=e.toRed(this.curve.red).redMul(this.z);if(this.x.cmp(r)===0)return!0;for(var n=e.clone(),i=this.curve.redN.redMul(this.z);;){if(n.iadd(this.curve.n),n.cmp(this.curve.p)>=0)return!1;if(r.redIAdd(i),this.x.cmp(r)===0)return!0}};fr.prototype.toP=fr.prototype.normalize;fr.prototype.mixedAdd=fr.prototype.add});var Im=P(Vw=>{"use strict";var op=Vw;op.base=$u();op.short=jw();op.mont=zw();op.edwards=Kw()});var yn=P(cr=>{"use strict";var Rj=pa(),Ij=Yo();cr.inherits=Ij;function Nj(t,e){return(t.charCodeAt(e)&64512)!==55296||e<0||e+1>=t.length?!1:(t.charCodeAt(e+1)&64512)===56320}function Dj(t,e){if(Array.isArray(t))return t.slice();if(!t)return[];var r=[];if(typeof t=="string")if(e){if(e==="hex")for(t=t.replace(/[^a-z0-9]+/ig,""),t.length%2!==0&&(t="0"+t),i=0;i>6|192,r[n++]=a&63|128):Nj(t,i)?(a=65536+((a&1023)<<10)+(t.charCodeAt(++i)&1023),r[n++]=a>>18|240,r[n++]=a>>12&63|128,r[n++]=a>>6&63|128,r[n++]=a&63|128):(r[n++]=a>>12|224,r[n++]=a>>6&63|128,r[n++]=a&63|128)}else for(i=0;i>>24|t>>>8&65280|t<<8&16711680|(t&255)<<24;return e>>>0}cr.htonl=Zw;function qj(t,e){for(var r="",n=0;n>>0}return a}cr.join32=jj;function Uj(t,e){for(var r=new Array(t.length*4),n=0,i=0;n>>24,r[i+1]=a>>>16&255,r[i+2]=a>>>8&255,r[i+3]=a&255):(r[i+3]=a>>>24,r[i+2]=a>>>16&255,r[i+1]=a>>>8&255,r[i]=a&255)}return r}cr.split32=Uj;function Hj(t,e){return t>>>e|t<<32-e}cr.rotr32=Hj;function zj(t,e){return t<>>32-e}cr.rotl32=zj;function Gj(t,e){return t+e>>>0}cr.sum32=Gj;function Xj(t,e,r){return t+e+r>>>0}cr.sum32_3=Xj;function Kj(t,e,r,n){return t+e+r+n>>>0}cr.sum32_4=Kj;function Vj(t,e,r,n,i){return t+e+r+n+i>>>0}cr.sum32_5=Vj;function Zj(t,e,r,n){var i=t[e],a=t[e+1],o=n+a>>>0,c=(o>>0,t[e+1]=o}cr.sum64=Zj;function Qj(t,e,r,n){var i=e+n>>>0,a=(i>>0}cr.sum64_hi=Qj;function Wj(t,e,r,n){var i=e+n;return i>>>0}cr.sum64_lo=Wj;function Yj(t,e,r,n,i,a,o,c){var u=0,s=e;s=s+n>>>0,u+=s>>0,u+=s>>0,u+=s>>0}cr.sum64_4_hi=Yj;function $j(t,e,r,n,i,a,o,c){var u=e+n+a+c;return u>>>0}cr.sum64_4_lo=$j;function eU(t,e,r,n,i,a,o,c,u,s){var f=0,m=e;m=m+n>>>0,f+=m>>0,f+=m>>0,f+=m>>0,f+=m>>0}cr.sum64_5_hi=eU;function rU(t,e,r,n,i,a,o,c,u,s){var f=e+n+a+c+s;return f>>>0}cr.sum64_5_lo=rU;function tU(t,e,r){var n=e<<32-r|t>>>r;return n>>>0}cr.rotr64_hi=tU;function nU(t,e,r){var n=t<<32-r|e>>>r;return n>>>0}cr.rotr64_lo=nU;function iU(t,e,r){return t>>>r}cr.shr64_hi=iU;function aU(t,e,r){var n=t<<32-r|e>>>r;return n>>>0}cr.shr64_lo=aU});var tc=P($w=>{"use strict";var Yw=yn(),oU=pa();function sp(){this.pending=null,this.pendingTotal=0,this.blockSize=this.constructor.blockSize,this.outSize=this.constructor.outSize,this.hmacStrength=this.constructor.hmacStrength,this.padLength=this.constructor.padLength/8,this.endian="big",this._delta8=this.blockSize/8,this._delta32=this.blockSize/32}$w.BlockHash=sp;sp.prototype.update=function(e,r){if(e=Yw.toArray(e,r),this.pending?this.pending=this.pending.concat(e):this.pending=e,this.pendingTotal+=e.length,this.pending.length>=this._delta8){e=this.pending;var n=e.length%this._delta8;this.pending=e.slice(e.length-n,e.length),this.pending.length===0&&(this.pending=null),e=Yw.join32(e,0,e.length-n,this.endian);for(var i=0;i>>24&255,i[a++]=e>>>16&255,i[a++]=e>>>8&255,i[a++]=e&255}else for(i[a++]=e&255,i[a++]=e>>>8&255,i[a++]=e>>>16&255,i[a++]=e>>>24&255,i[a++]=0,i[a++]=0,i[a++]=0,i[a++]=0,o=8;o{"use strict";var sU=yn(),ii=sU.rotr32;function cU(t,e,r,n){if(t===0)return e9(e,r,n);if(t===1||t===3)return t9(e,r,n);if(t===2)return r9(e,r,n)}Ii.ft_1=cU;function e9(t,e,r){return t&e^~t&r}Ii.ch32=e9;function r9(t,e,r){return t&e^t&r^e&r}Ii.maj32=r9;function t9(t,e,r){return t^e^r}Ii.p32=t9;function uU(t){return ii(t,2)^ii(t,13)^ii(t,22)}Ii.s0_256=uU;function lU(t){return ii(t,6)^ii(t,11)^ii(t,25)}Ii.s1_256=lU;function fU(t){return ii(t,7)^ii(t,18)^t>>>3}Ii.g0_256=fU;function dU(t){return ii(t,17)^ii(t,19)^t>>>10}Ii.g1_256=dU});var a9=P((Hee,i9)=>{"use strict";var nc=yn(),pU=tc(),hU=Nm(),Dm=nc.rotl32,el=nc.sum32,vU=nc.sum32_5,mU=hU.ft_1,n9=pU.BlockHash,bU=[1518500249,1859775393,2400959708,3395469782];function ai(){if(!(this instanceof ai))return new ai;n9.call(this),this.h=[1732584193,4023233417,2562383102,271733878,3285377520],this.W=new Array(80)}nc.inherits(ai,n9);i9.exports=ai;ai.blockSize=512;ai.outSize=160;ai.hmacStrength=80;ai.padLength=64;ai.prototype._update=function(e,r){for(var n=this.W,i=0;i<16;i++)n[i]=e[r+i];for(;i{"use strict";var ic=yn(),gU=tc(),ac=Nm(),xU=pa(),wn=ic.sum32,yU=ic.sum32_4,wU=ic.sum32_5,AU=ac.ch32,EU=ac.maj32,SU=ac.s0_256,_U=ac.s1_256,TU=ac.g0_256,kU=ac.g1_256,o9=gU.BlockHash,CU=[1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298];function oi(){if(!(this instanceof oi))return new oi;o9.call(this),this.h=[1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225],this.k=CU,this.W=new Array(64)}ic.inherits(oi,o9);s9.exports=oi;oi.blockSize=512;oi.outSize=256;oi.hmacStrength=192;oi.padLength=64;oi.prototype._update=function(e,r){for(var n=this.W,i=0;i<16;i++)n[i]=e[r+i];for(;i{"use strict";var qm=yn(),c9=Jm();function Ni(){if(!(this instanceof Ni))return new Ni;c9.call(this),this.h=[3238371032,914150663,812702999,4144912697,4290775857,1750603025,1694076839,3204075428]}qm.inherits(Ni,c9);u9.exports=Ni;Ni.blockSize=512;Ni.outSize=224;Ni.hmacStrength=192;Ni.padLength=64;Ni.prototype._digest=function(e){return e==="hex"?qm.toHex32(this.h.slice(0,7),"big"):qm.split32(this.h.slice(0,7),"big")}});var Hm=P((Xee,h9)=>{"use strict";var Tt=yn(),OU=tc(),PU=pa(),si=Tt.rotr64_hi,ci=Tt.rotr64_lo,f9=Tt.shr64_hi,d9=Tt.shr64_lo,ma=Tt.sum64,jm=Tt.sum64_hi,Um=Tt.sum64_lo,MU=Tt.sum64_4_hi,BU=Tt.sum64_4_lo,FU=Tt.sum64_5_hi,LU=Tt.sum64_5_lo,p9=OU.BlockHash,RU=[1116352408,3609767458,1899447441,602891725,3049323471,3964484399,3921009573,2173295548,961987163,4081628472,1508970993,3053834265,2453635748,2937671579,2870763221,3664609560,3624381080,2734883394,310598401,1164996542,607225278,1323610764,1426881987,3590304994,1925078388,4068182383,2162078206,991336113,2614888103,633803317,3248222580,3479774868,3835390401,2666613458,4022224774,944711139,264347078,2341262773,604807628,2007800933,770255983,1495990901,1249150122,1856431235,1555081692,3175218132,1996064986,2198950837,2554220882,3999719339,2821834349,766784016,2952996808,2566594879,3210313671,3203337956,3336571891,1034457026,3584528711,2466948901,113926993,3758326383,338241895,168717936,666307205,1188179964,773529912,1546045734,1294757372,1522805485,1396182291,2643833823,1695183700,2343527390,1986661051,1014477480,2177026350,1206759142,2456956037,344077627,2730485921,1290863460,2820302411,3158454273,3259730800,3505952657,3345764771,106217008,3516065817,3606008344,3600352804,1432725776,4094571909,1467031594,275423344,851169720,430227734,3100823752,506948616,1363258195,659060556,3750685593,883997877,3785050280,958139571,3318307427,1322822218,3812723403,1537002063,2003034995,1747873779,3602036899,1955562222,1575990012,2024104815,1125592928,2227730452,2716904306,2361852424,442776044,2428436474,593698344,2756734187,3733110249,3204031479,2999351573,3329325298,3815920427,3391569614,3928383900,3515267271,566280711,3940187606,3454069534,4118630271,4000239992,116418474,1914138554,174292421,2731055270,289380356,3203993006,460393269,320620315,685471733,587496836,852142971,1086792851,1017036298,365543100,1126000580,2618297676,1288033470,3409855158,1501505948,4234509866,1607167915,987167468,1816402316,1246189591];function An(){if(!(this instanceof An))return new An;p9.call(this),this.h=[1779033703,4089235720,3144134277,2227873595,1013904242,4271175723,2773480762,1595750129,1359893119,2917565137,2600822924,725511199,528734635,4215389547,1541459225,327033209],this.k=RU,this.W=new Array(160)}Tt.inherits(An,p9);h9.exports=An;An.blockSize=1024;An.outSize=512;An.hmacStrength=192;An.padLength=128;An.prototype._prepareBlock=function(e,r){for(var n=this.W,i=0;i<32;i++)n[i]=e[r+i];for(;i{"use strict";var zm=yn(),v9=Hm();function Di(){if(!(this instanceof Di))return new Di;v9.call(this),this.h=[3418070365,3238371032,1654270250,914150663,2438529370,812702999,355462360,4144912697,1731405415,4290775857,2394180231,1750603025,3675008525,1694076839,1203062813,3204075428]}zm.inherits(Di,v9);m9.exports=Di;Di.blockSize=1024;Di.outSize=384;Di.hmacStrength=192;Di.padLength=128;Di.prototype._digest=function(e){return e==="hex"?zm.toHex32(this.h.slice(0,12),"big"):zm.split32(this.h.slice(0,12),"big")}});var g9=P(oc=>{"use strict";oc.sha1=a9();oc.sha224=l9();oc.sha256=Jm();oc.sha384=b9();oc.sha512=Hm()});var S9=P(E9=>{"use strict";var Po=yn(),VU=tc(),cp=Po.rotl32,x9=Po.sum32,rl=Po.sum32_3,y9=Po.sum32_4,A9=VU.BlockHash;function ui(){if(!(this instanceof ui))return new ui;A9.call(this),this.h=[1732584193,4023233417,2562383102,271733878,3285377520],this.endian="little"}Po.inherits(ui,A9);E9.ripemd160=ui;ui.blockSize=512;ui.outSize=160;ui.hmacStrength=192;ui.padLength=64;ui.prototype._update=function(e,r){for(var n=this.h[0],i=this.h[1],a=this.h[2],o=this.h[3],c=this.h[4],u=n,s=i,f=a,m=o,w=c,T=0;T<80;T++){var A=x9(cp(y9(n,w9(T,i,a,o),e[WU[T]+r],ZU(T)),$U[T]),c);n=c,c=o,o=cp(a,10),a=i,i=A,A=x9(cp(y9(u,w9(79-T,s,f,m),e[YU[T]+r],QU(T)),eH[T]),w),u=w,w=m,m=cp(f,10),f=s,s=A}A=rl(this.h[1],a,m),this.h[1]=rl(this.h[2],o,w),this.h[2]=rl(this.h[3],c,u),this.h[3]=rl(this.h[4],n,s),this.h[4]=rl(this.h[0],i,f),this.h[0]=A};ui.prototype._digest=function(e){return e==="hex"?Po.toHex32(this.h,"little"):Po.split32(this.h,"little")};function w9(t,e,r,n){return t<=15?e^r^n:t<=31?e&r|~e&n:t<=47?(e|~r)^n:t<=63?e&n|r&~n:e^(r|~n)}function ZU(t){return t<=15?0:t<=31?1518500249:t<=47?1859775393:t<=63?2400959708:2840853838}function QU(t){return t<=15?1352829926:t<=31?1548603684:t<=47?1836072691:t<=63?2053994217:0}var WU=[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,7,4,13,1,10,6,15,3,12,0,9,5,2,14,11,8,3,10,14,4,9,15,8,1,2,7,0,6,13,11,5,12,1,9,11,10,0,8,12,4,13,3,7,15,14,5,6,2,4,0,5,9,7,12,2,10,14,1,3,8,11,6,15,13],YU=[5,14,7,0,9,2,11,4,13,6,15,8,1,10,3,12,6,11,3,7,0,13,5,10,14,15,8,12,4,9,1,2,15,5,1,3,7,14,6,9,11,8,12,2,10,0,4,13,8,6,4,1,3,11,15,0,5,12,2,13,9,7,10,14,12,15,10,4,1,5,8,7,6,2,13,14,0,3,9,11],$U=[11,14,15,12,5,8,7,9,11,13,14,15,6,7,9,8,7,6,8,13,11,9,7,15,7,12,15,9,11,7,13,12,11,13,6,7,14,9,13,15,14,8,13,6,5,12,7,5,11,12,14,15,14,15,9,8,9,14,5,6,8,6,5,12,9,15,5,11,6,8,13,12,5,12,13,14,11,8,5,6],eH=[8,9,9,11,13,15,15,5,7,7,8,11,14,14,12,6,9,13,15,7,12,8,9,11,7,7,12,7,6,15,13,11,9,7,15,11,8,6,6,14,12,13,5,14,13,13,7,5,15,5,8,11,14,14,6,14,6,9,12,9,12,5,15,8,8,5,12,9,12,5,14,6,8,13,6,5,15,13,11,11]});var T9=P((Qee,_9)=>{"use strict";var rH=yn(),tH=pa();function sc(t,e,r){if(!(this instanceof sc))return new sc(t,e,r);this.Hash=t,this.blockSize=t.blockSize/8,this.outSize=t.outSize/8,this.inner=null,this.outer=null,this._init(rH.toArray(e,r))}_9.exports=sc;sc.prototype._init=function(e){e.length>this.blockSize&&(e=new this.Hash().update(e).digest()),tH(e.length<=this.blockSize);for(var r=e.length;r{var Yr=k9;Yr.utils=yn();Yr.common=tc();Yr.sha=g9();Yr.ripemd=S9();Yr.hmac=T9();Yr.sha1=Yr.sha.sha1;Yr.sha256=Yr.sha.sha256;Yr.sha224=Yr.sha.sha224;Yr.sha384=Yr.sha.sha384;Yr.sha512=Yr.sha.sha512;Yr.ripemd160=Yr.ripemd.ripemd160});var O9=P((Yee,C9)=>{C9.exports={doubles:{step:4,points:[["e60fce93b59e9ec53011aabc21c23e97b2a31369b87a5ae9c44ee89e2a6dec0a","f7e3507399e595929db99f34f57937101296891e44d23f0be1f32cce69616821"],["8282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f51508","11f8a8098557dfe45e8256e830b60ace62d613ac2f7b17bed31b6eaff6e26caf"],["175e159f728b865a72f99cc6c6fc846de0b93833fd2222ed73fce5b551e5b739","d3506e0d9e3c79eba4ef97a51ff71f5eacb5955add24345c6efa6ffee9fed695"],["363d90d447b00c9c99ceac05b6262ee053441c7e55552ffe526bad8f83ff4640","4e273adfc732221953b445397f3363145b9a89008199ecb62003c7f3bee9de9"],["8b4b5f165df3c2be8c6244b5b745638843e4a781a15bcd1b69f79a55dffdf80c","4aad0a6f68d308b4b3fbd7813ab0da04f9e336546162ee56b3eff0c65fd4fd36"],["723cbaa6e5db996d6bf771c00bd548c7b700dbffa6c0e77bcb6115925232fcda","96e867b5595cc498a921137488824d6e2660a0653779494801dc069d9eb39f5f"],["eebfa4d493bebf98ba5feec812c2d3b50947961237a919839a533eca0e7dd7fa","5d9a8ca3970ef0f269ee7edaf178089d9ae4cdc3a711f712ddfd4fdae1de8999"],["100f44da696e71672791d0a09b7bde459f1215a29b3c03bfefd7835b39a48db0","cdd9e13192a00b772ec8f3300c090666b7ff4a18ff5195ac0fbd5cd62bc65a09"],["e1031be262c7ed1b1dc9227a4a04c017a77f8d4464f3b3852c8acde6e534fd2d","9d7061928940405e6bb6a4176597535af292dd419e1ced79a44f18f29456a00d"],["feea6cae46d55b530ac2839f143bd7ec5cf8b266a41d6af52d5e688d9094696d","e57c6b6c97dce1bab06e4e12bf3ecd5c981c8957cc41442d3155debf18090088"],["da67a91d91049cdcb367be4be6ffca3cfeed657d808583de33fa978bc1ec6cb1","9bacaa35481642bc41f463f7ec9780e5dec7adc508f740a17e9ea8e27a68be1d"],["53904faa0b334cdda6e000935ef22151ec08d0f7bb11069f57545ccc1a37b7c0","5bc087d0bc80106d88c9eccac20d3c1c13999981e14434699dcb096b022771c8"],["8e7bcd0bd35983a7719cca7764ca906779b53a043a9b8bcaeff959f43ad86047","10b7770b2a3da4b3940310420ca9514579e88e2e47fd68b3ea10047e8460372a"],["385eed34c1cdff21e6d0818689b81bde71a7f4f18397e6690a841e1599c43862","283bebc3e8ea23f56701de19e9ebf4576b304eec2086dc8cc0458fe5542e5453"],["6f9d9b803ecf191637c73a4413dfa180fddf84a5947fbc9c606ed86c3fac3a7","7c80c68e603059ba69b8e2a30e45c4d47ea4dd2f5c281002d86890603a842160"],["3322d401243c4e2582a2147c104d6ecbf774d163db0f5e5313b7e0e742d0e6bd","56e70797e9664ef5bfb019bc4ddaf9b72805f63ea2873af624f3a2e96c28b2a0"],["85672c7d2de0b7da2bd1770d89665868741b3f9af7643397721d74d28134ab83","7c481b9b5b43b2eb6374049bfa62c2e5e77f17fcc5298f44c8e3094f790313a6"],["948bf809b1988a46b06c9f1919413b10f9226c60f668832ffd959af60c82a0a","53a562856dcb6646dc6b74c5d1c3418c6d4dff08c97cd2bed4cb7f88d8c8e589"],["6260ce7f461801c34f067ce0f02873a8f1b0e44dfc69752accecd819f38fd8e8","bc2da82b6fa5b571a7f09049776a1ef7ecd292238051c198c1a84e95b2b4ae17"],["e5037de0afc1d8d43d8348414bbf4103043ec8f575bfdc432953cc8d2037fa2d","4571534baa94d3b5f9f98d09fb990bddbd5f5b03ec481f10e0e5dc841d755bda"],["e06372b0f4a207adf5ea905e8f1771b4e7e8dbd1c6a6c5b725866a0ae4fce725","7a908974bce18cfe12a27bb2ad5a488cd7484a7787104870b27034f94eee31dd"],["213c7a715cd5d45358d0bbf9dc0ce02204b10bdde2a3f58540ad6908d0559754","4b6dad0b5ae462507013ad06245ba190bb4850f5f36a7eeddff2c27534b458f2"],["4e7c272a7af4b34e8dbb9352a5419a87e2838c70adc62cddf0cc3a3b08fbd53c","17749c766c9d0b18e16fd09f6def681b530b9614bff7dd33e0b3941817dcaae6"],["fea74e3dbe778b1b10f238ad61686aa5c76e3db2be43057632427e2840fb27b6","6e0568db9b0b13297cf674deccb6af93126b596b973f7b77701d3db7f23cb96f"],["76e64113f677cf0e10a2570d599968d31544e179b760432952c02a4417bdde39","c90ddf8dee4e95cf577066d70681f0d35e2a33d2b56d2032b4b1752d1901ac01"],["c738c56b03b2abe1e8281baa743f8f9a8f7cc643df26cbee3ab150242bcbb891","893fb578951ad2537f718f2eacbfbbbb82314eef7880cfe917e735d9699a84c3"],["d895626548b65b81e264c7637c972877d1d72e5f3a925014372e9f6588f6c14b","febfaa38f2bc7eae728ec60818c340eb03428d632bb067e179363ed75d7d991f"],["b8da94032a957518eb0f6433571e8761ceffc73693e84edd49150a564f676e03","2804dfa44805a1e4d7c99cc9762808b092cc584d95ff3b511488e4e74efdf6e7"],["e80fea14441fb33a7d8adab9475d7fab2019effb5156a792f1a11778e3c0df5d","eed1de7f638e00771e89768ca3ca94472d155e80af322ea9fcb4291b6ac9ec78"],["a301697bdfcd704313ba48e51d567543f2a182031efd6915ddc07bbcc4e16070","7370f91cfb67e4f5081809fa25d40f9b1735dbf7c0a11a130c0d1a041e177ea1"],["90ad85b389d6b936463f9d0512678de208cc330b11307fffab7ac63e3fb04ed4","e507a3620a38261affdcbd9427222b839aefabe1582894d991d4d48cb6ef150"],["8f68b9d2f63b5f339239c1ad981f162ee88c5678723ea3351b7b444c9ec4c0da","662a9f2dba063986de1d90c2b6be215dbbea2cfe95510bfdf23cbf79501fff82"],["e4f3fb0176af85d65ff99ff9198c36091f48e86503681e3e6686fd5053231e11","1e63633ad0ef4f1c1661a6d0ea02b7286cc7e74ec951d1c9822c38576feb73bc"],["8c00fa9b18ebf331eb961537a45a4266c7034f2f0d4e1d0716fb6eae20eae29e","efa47267fea521a1a9dc343a3736c974c2fadafa81e36c54e7d2a4c66702414b"],["e7a26ce69dd4829f3e10cec0a9e98ed3143d084f308b92c0997fddfc60cb3e41","2a758e300fa7984b471b006a1aafbb18d0a6b2c0420e83e20e8a9421cf2cfd51"],["b6459e0ee3662ec8d23540c223bcbdc571cbcb967d79424f3cf29eb3de6b80ef","67c876d06f3e06de1dadf16e5661db3c4b3ae6d48e35b2ff30bf0b61a71ba45"],["d68a80c8280bb840793234aa118f06231d6f1fc67e73c5a5deda0f5b496943e8","db8ba9fff4b586d00c4b1f9177b0e28b5b0e7b8f7845295a294c84266b133120"],["324aed7df65c804252dc0270907a30b09612aeb973449cea4095980fc28d3d5d","648a365774b61f2ff130c0c35aec1f4f19213b0c7e332843967224af96ab7c84"],["4df9c14919cde61f6d51dfdbe5fee5dceec4143ba8d1ca888e8bd373fd054c96","35ec51092d8728050974c23a1d85d4b5d506cdc288490192ebac06cad10d5d"],["9c3919a84a474870faed8a9c1cc66021523489054d7f0308cbfc99c8ac1f98cd","ddb84f0f4a4ddd57584f044bf260e641905326f76c64c8e6be7e5e03d4fc599d"],["6057170b1dd12fdf8de05f281d8e06bb91e1493a8b91d4cc5a21382120a959e5","9a1af0b26a6a4807add9a2daf71df262465152bc3ee24c65e899be932385a2a8"],["a576df8e23a08411421439a4518da31880cef0fba7d4df12b1a6973eecb94266","40a6bf20e76640b2c92b97afe58cd82c432e10a7f514d9f3ee8be11ae1b28ec8"],["7778a78c28dec3e30a05fe9629de8c38bb30d1f5cf9a3a208f763889be58ad71","34626d9ab5a5b22ff7098e12f2ff580087b38411ff24ac563b513fc1fd9f43ac"],["928955ee637a84463729fd30e7afd2ed5f96274e5ad7e5cb09eda9c06d903ac","c25621003d3f42a827b78a13093a95eeac3d26efa8a8d83fc5180e935bcd091f"],["85d0fef3ec6db109399064f3a0e3b2855645b4a907ad354527aae75163d82751","1f03648413a38c0be29d496e582cf5663e8751e96877331582c237a24eb1f962"],["ff2b0dce97eece97c1c9b6041798b85dfdfb6d8882da20308f5404824526087e","493d13fef524ba188af4c4dc54d07936c7b7ed6fb90e2ceb2c951e01f0c29907"],["827fbbe4b1e880ea9ed2b2e6301b212b57f1ee148cd6dd28780e5e2cf856e241","c60f9c923c727b0b71bef2c67d1d12687ff7a63186903166d605b68baec293ec"],["eaa649f21f51bdbae7be4ae34ce6e5217a58fdce7f47f9aa7f3b58fa2120e2b3","be3279ed5bbbb03ac69a80f89879aa5a01a6b965f13f7e59d47a5305ba5ad93d"],["e4a42d43c5cf169d9391df6decf42ee541b6d8f0c9a137401e23632dda34d24f","4d9f92e716d1c73526fc99ccfb8ad34ce886eedfa8d8e4f13a7f7131deba9414"],["1ec80fef360cbdd954160fadab352b6b92b53576a88fea4947173b9d4300bf19","aeefe93756b5340d2f3a4958a7abbf5e0146e77f6295a07b671cdc1cc107cefd"],["146a778c04670c2f91b00af4680dfa8bce3490717d58ba889ddb5928366642be","b318e0ec3354028add669827f9d4b2870aaa971d2f7e5ed1d0b297483d83efd0"],["fa50c0f61d22e5f07e3acebb1aa07b128d0012209a28b9776d76a8793180eef9","6b84c6922397eba9b72cd2872281a68a5e683293a57a213b38cd8d7d3f4f2811"],["da1d61d0ca721a11b1a5bf6b7d88e8421a288ab5d5bba5220e53d32b5f067ec2","8157f55a7c99306c79c0766161c91e2966a73899d279b48a655fba0f1ad836f1"],["a8e282ff0c9706907215ff98e8fd416615311de0446f1e062a73b0610d064e13","7f97355b8db81c09abfb7f3c5b2515888b679a3e50dd6bd6cef7c73111f4cc0c"],["174a53b9c9a285872d39e56e6913cab15d59b1fa512508c022f382de8319497c","ccc9dc37abfc9c1657b4155f2c47f9e6646b3a1d8cb9854383da13ac079afa73"],["959396981943785c3d3e57edf5018cdbe039e730e4918b3d884fdff09475b7ba","2e7e552888c331dd8ba0386a4b9cd6849c653f64c8709385e9b8abf87524f2fd"],["d2a63a50ae401e56d645a1153b109a8fcca0a43d561fba2dbb51340c9d82b151","e82d86fb6443fcb7565aee58b2948220a70f750af484ca52d4142174dcf89405"],["64587e2335471eb890ee7896d7cfdc866bacbdbd3839317b3436f9b45617e073","d99fcdd5bf6902e2ae96dd6447c299a185b90a39133aeab358299e5e9faf6589"],["8481bde0e4e4d885b3a546d3e549de042f0aa6cea250e7fd358d6c86dd45e458","38ee7b8cba5404dd84a25bf39cecb2ca900a79c42b262e556d64b1b59779057e"],["13464a57a78102aa62b6979ae817f4637ffcfed3c4b1ce30bcd6303f6caf666b","69be159004614580ef7e433453ccb0ca48f300a81d0942e13f495a907f6ecc27"],["bc4a9df5b713fe2e9aef430bcc1dc97a0cd9ccede2f28588cada3a0d2d83f366","d3a81ca6e785c06383937adf4b798caa6e8a9fbfa547b16d758d666581f33c1"],["8c28a97bf8298bc0d23d8c749452a32e694b65e30a9472a3954ab30fe5324caa","40a30463a3305193378fedf31f7cc0eb7ae784f0451cb9459e71dc73cbef9482"],["8ea9666139527a8c1dd94ce4f071fd23c8b350c5a4bb33748c4ba111faccae0","620efabbc8ee2782e24e7c0cfb95c5d735b783be9cf0f8e955af34a30e62b945"],["dd3625faef5ba06074669716bbd3788d89bdde815959968092f76cc4eb9a9787","7a188fa3520e30d461da2501045731ca941461982883395937f68d00c644a573"],["f710d79d9eb962297e4f6232b40e8f7feb2bc63814614d692c12de752408221e","ea98e67232d3b3295d3b535532115ccac8612c721851617526ae47a9c77bfc82"]]},naf:{wnd:7,points:[["f9308a019258c31049344f85f89d5229b531c845836f99b08601f113bce036f9","388f7b0f632de8140fe337e62a37f3566500a99934c2231b6cb9fd7584b8e672"],["2f8bde4d1a07209355b4a7250a5c5128e88b84bddc619ab7cba8d569b240efe4","d8ac222636e5e3d6d4dba9dda6c9c426f788271bab0d6840dca87d3aa6ac62d6"],["5cbdf0646e5db4eaa398f365f2ea7a0e3d419b7e0330e39ce92bddedcac4f9bc","6aebca40ba255960a3178d6d861a54dba813d0b813fde7b5a5082628087264da"],["acd484e2f0c7f65309ad178a9f559abde09796974c57e714c35f110dfc27ccbe","cc338921b0a7d9fd64380971763b61e9add888a4375f8e0f05cc262ac64f9c37"],["774ae7f858a9411e5ef4246b70c65aac5649980be5c17891bbec17895da008cb","d984a032eb6b5e190243dd56d7b7b365372db1e2dff9d6a8301d74c9c953c61b"],["f28773c2d975288bc7d1d205c3748651b075fbc6610e58cddeeddf8f19405aa8","ab0902e8d880a89758212eb65cdaf473a1a06da521fa91f29b5cb52db03ed81"],["d7924d4f7d43ea965a465ae3095ff41131e5946f3c85f79e44adbcf8e27e080e","581e2872a86c72a683842ec228cc6defea40af2bd896d3a5c504dc9ff6a26b58"],["defdea4cdb677750a420fee807eacf21eb9898ae79b9768766e4faa04a2d4a34","4211ab0694635168e997b0ead2a93daeced1f4a04a95c0f6cfb199f69e56eb77"],["2b4ea0a797a443d293ef5cff444f4979f06acfebd7e86d277475656138385b6c","85e89bc037945d93b343083b5a1c86131a01f60c50269763b570c854e5c09b7a"],["352bbf4a4cdd12564f93fa332ce333301d9ad40271f8107181340aef25be59d5","321eb4075348f534d59c18259dda3e1f4a1b3b2e71b1039c67bd3d8bcf81998c"],["2fa2104d6b38d11b0230010559879124e42ab8dfeff5ff29dc9cdadd4ecacc3f","2de1068295dd865b64569335bd5dd80181d70ecfc882648423ba76b532b7d67"],["9248279b09b4d68dab21a9b066edda83263c3d84e09572e269ca0cd7f5453714","73016f7bf234aade5d1aa71bdea2b1ff3fc0de2a887912ffe54a32ce97cb3402"],["daed4f2be3a8bf278e70132fb0beb7522f570e144bf615c07e996d443dee8729","a69dce4a7d6c98e8d4a1aca87ef8d7003f83c230f3afa726ab40e52290be1c55"],["c44d12c7065d812e8acf28d7cbb19f9011ecd9e9fdf281b0e6a3b5e87d22e7db","2119a460ce326cdc76c45926c982fdac0e106e861edf61c5a039063f0e0e6482"],["6a245bf6dc698504c89a20cfded60853152b695336c28063b61c65cbd269e6b4","e022cf42c2bd4a708b3f5126f16a24ad8b33ba48d0423b6efd5e6348100d8a82"],["1697ffa6fd9de627c077e3d2fe541084ce13300b0bec1146f95ae57f0d0bd6a5","b9c398f186806f5d27561506e4557433a2cf15009e498ae7adee9d63d01b2396"],["605bdb019981718b986d0f07e834cb0d9deb8360ffb7f61df982345ef27a7479","2972d2de4f8d20681a78d93ec96fe23c26bfae84fb14db43b01e1e9056b8c49"],["62d14dab4150bf497402fdc45a215e10dcb01c354959b10cfe31c7e9d87ff33d","80fc06bd8cc5b01098088a1950eed0db01aa132967ab472235f5642483b25eaf"],["80c60ad0040f27dade5b4b06c408e56b2c50e9f56b9b8b425e555c2f86308b6f","1c38303f1cc5c30f26e66bad7fe72f70a65eed4cbe7024eb1aa01f56430bd57a"],["7a9375ad6167ad54aa74c6348cc54d344cc5dc9487d847049d5eabb0fa03c8fb","d0e3fa9eca8726909559e0d79269046bdc59ea10c70ce2b02d499ec224dc7f7"],["d528ecd9b696b54c907a9ed045447a79bb408ec39b68df504bb51f459bc3ffc9","eecf41253136e5f99966f21881fd656ebc4345405c520dbc063465b521409933"],["49370a4b5f43412ea25f514e8ecdad05266115e4a7ecb1387231808f8b45963","758f3f41afd6ed428b3081b0512fd62a54c3f3afbb5b6764b653052a12949c9a"],["77f230936ee88cbbd73df930d64702ef881d811e0e1498e2f1c13eb1fc345d74","958ef42a7886b6400a08266e9ba1b37896c95330d97077cbbe8eb3c7671c60d6"],["f2dac991cc4ce4b9ea44887e5c7c0bce58c80074ab9d4dbaeb28531b7739f530","e0dedc9b3b2f8dad4da1f32dec2531df9eb5fbeb0598e4fd1a117dba703a3c37"],["463b3d9f662621fb1b4be8fbbe2520125a216cdfc9dae3debcba4850c690d45b","5ed430d78c296c3543114306dd8622d7c622e27c970a1de31cb377b01af7307e"],["f16f804244e46e2a09232d4aff3b59976b98fac14328a2d1a32496b49998f247","cedabd9b82203f7e13d206fcdf4e33d92a6c53c26e5cce26d6579962c4e31df6"],["caf754272dc84563b0352b7a14311af55d245315ace27c65369e15f7151d41d1","cb474660ef35f5f2a41b643fa5e460575f4fa9b7962232a5c32f908318a04476"],["2600ca4b282cb986f85d0f1709979d8b44a09c07cb86d7c124497bc86f082120","4119b88753c15bd6a693b03fcddbb45d5ac6be74ab5f0ef44b0be9475a7e4b40"],["7635ca72d7e8432c338ec53cd12220bc01c48685e24f7dc8c602a7746998e435","91b649609489d613d1d5e590f78e6d74ecfc061d57048bad9e76f302c5b9c61"],["754e3239f325570cdbbf4a87deee8a66b7f2b33479d468fbc1a50743bf56cc18","673fb86e5bda30fb3cd0ed304ea49a023ee33d0197a695d0c5d98093c536683"],["e3e6bd1071a1e96aff57859c82d570f0330800661d1c952f9fe2694691d9b9e8","59c9e0bba394e76f40c0aa58379a3cb6a5a2283993e90c4167002af4920e37f5"],["186b483d056a033826ae73d88f732985c4ccb1f32ba35f4b4cc47fdcf04aa6eb","3b952d32c67cf77e2e17446e204180ab21fb8090895138b4a4a797f86e80888b"],["df9d70a6b9876ce544c98561f4be4f725442e6d2b737d9c91a8321724ce0963f","55eb2dafd84d6ccd5f862b785dc39d4ab157222720ef9da217b8c45cf2ba2417"],["5edd5cc23c51e87a497ca815d5dce0f8ab52554f849ed8995de64c5f34ce7143","efae9c8dbc14130661e8cec030c89ad0c13c66c0d17a2905cdc706ab7399a868"],["290798c2b6476830da12fe02287e9e777aa3fba1c355b17a722d362f84614fba","e38da76dcd440621988d00bcf79af25d5b29c094db2a23146d003afd41943e7a"],["af3c423a95d9f5b3054754efa150ac39cd29552fe360257362dfdecef4053b45","f98a3fd831eb2b749a93b0e6f35cfb40c8cd5aa667a15581bc2feded498fd9c6"],["766dbb24d134e745cccaa28c99bf274906bb66b26dcf98df8d2fed50d884249a","744b1152eacbe5e38dcc887980da38b897584a65fa06cedd2c924f97cbac5996"],["59dbf46f8c94759ba21277c33784f41645f7b44f6c596a58ce92e666191abe3e","c534ad44175fbc300f4ea6ce648309a042ce739a7919798cd85e216c4a307f6e"],["f13ada95103c4537305e691e74e9a4a8dd647e711a95e73cb62dc6018cfd87b8","e13817b44ee14de663bf4bc808341f326949e21a6a75c2570778419bdaf5733d"],["7754b4fa0e8aced06d4167a2c59cca4cda1869c06ebadfb6488550015a88522c","30e93e864e669d82224b967c3020b8fa8d1e4e350b6cbcc537a48b57841163a2"],["948dcadf5990e048aa3874d46abef9d701858f95de8041d2a6828c99e2262519","e491a42537f6e597d5d28a3224b1bc25df9154efbd2ef1d2cbba2cae5347d57e"],["7962414450c76c1689c7b48f8202ec37fb224cf5ac0bfa1570328a8a3d7c77ab","100b610ec4ffb4760d5c1fc133ef6f6b12507a051f04ac5760afa5b29db83437"],["3514087834964b54b15b160644d915485a16977225b8847bb0dd085137ec47ca","ef0afbb2056205448e1652c48e8127fc6039e77c15c2378b7e7d15a0de293311"],["d3cc30ad6b483e4bc79ce2c9dd8bc54993e947eb8df787b442943d3f7b527eaf","8b378a22d827278d89c5e9be8f9508ae3c2ad46290358630afb34db04eede0a4"],["1624d84780732860ce1c78fcbfefe08b2b29823db913f6493975ba0ff4847610","68651cf9b6da903e0914448c6cd9d4ca896878f5282be4c8cc06e2a404078575"],["733ce80da955a8a26902c95633e62a985192474b5af207da6df7b4fd5fc61cd4","f5435a2bd2badf7d485a4d8b8db9fcce3e1ef8e0201e4578c54673bc1dc5ea1d"],["15d9441254945064cf1a1c33bbd3b49f8966c5092171e699ef258dfab81c045c","d56eb30b69463e7234f5137b73b84177434800bacebfc685fc37bbe9efe4070d"],["a1d0fcf2ec9de675b612136e5ce70d271c21417c9d2b8aaaac138599d0717940","edd77f50bcb5a3cab2e90737309667f2641462a54070f3d519212d39c197a629"],["e22fbe15c0af8ccc5780c0735f84dbe9a790badee8245c06c7ca37331cb36980","a855babad5cd60c88b430a69f53a1a7a38289154964799be43d06d77d31da06"],["311091dd9860e8e20ee13473c1155f5f69635e394704eaa74009452246cfa9b3","66db656f87d1f04fffd1f04788c06830871ec5a64feee685bd80f0b1286d8374"],["34c1fd04d301be89b31c0442d3e6ac24883928b45a9340781867d4232ec2dbdf","9414685e97b1b5954bd46f730174136d57f1ceeb487443dc5321857ba73abee"],["f219ea5d6b54701c1c14de5b557eb42a8d13f3abbcd08affcc2a5e6b049b8d63","4cb95957e83d40b0f73af4544cccf6b1f4b08d3c07b27fb8d8c2962a400766d1"],["d7b8740f74a8fbaab1f683db8f45de26543a5490bca627087236912469a0b448","fa77968128d9c92ee1010f337ad4717eff15db5ed3c049b3411e0315eaa4593b"],["32d31c222f8f6f0ef86f7c98d3a3335ead5bcd32abdd94289fe4d3091aa824bf","5f3032f5892156e39ccd3d7915b9e1da2e6dac9e6f26e961118d14b8462e1661"],["7461f371914ab32671045a155d9831ea8793d77cd59592c4340f86cbc18347b5","8ec0ba238b96bec0cbdddcae0aa442542eee1ff50c986ea6b39847b3cc092ff6"],["ee079adb1df1860074356a25aa38206a6d716b2c3e67453d287698bad7b2b2d6","8dc2412aafe3be5c4c5f37e0ecc5f9f6a446989af04c4e25ebaac479ec1c8c1e"],["16ec93e447ec83f0467b18302ee620f7e65de331874c9dc72bfd8616ba9da6b5","5e4631150e62fb40d0e8c2a7ca5804a39d58186a50e497139626778e25b0674d"],["eaa5f980c245f6f038978290afa70b6bd8855897f98b6aa485b96065d537bd99","f65f5d3e292c2e0819a528391c994624d784869d7e6ea67fb18041024edc07dc"],["78c9407544ac132692ee1910a02439958ae04877151342ea96c4b6b35a49f51","f3e0319169eb9b85d5404795539a5e68fa1fbd583c064d2462b675f194a3ddb4"],["494f4be219a1a77016dcd838431aea0001cdc8ae7a6fc688726578d9702857a5","42242a969283a5f339ba7f075e36ba2af925ce30d767ed6e55f4b031880d562c"],["a598a8030da6d86c6bc7f2f5144ea549d28211ea58faa70ebf4c1e665c1fe9b5","204b5d6f84822c307e4b4a7140737aec23fc63b65b35f86a10026dbd2d864e6b"],["c41916365abb2b5d09192f5f2dbeafec208f020f12570a184dbadc3e58595997","4f14351d0087efa49d245b328984989d5caf9450f34bfc0ed16e96b58fa9913"],["841d6063a586fa475a724604da03bc5b92a2e0d2e0a36acfe4c73a5514742881","73867f59c0659e81904f9a1c7543698e62562d6744c169ce7a36de01a8d6154"],["5e95bb399a6971d376026947f89bde2f282b33810928be4ded112ac4d70e20d5","39f23f366809085beebfc71181313775a99c9aed7d8ba38b161384c746012865"],["36e4641a53948fd476c39f8a99fd974e5ec07564b5315d8bf99471bca0ef2f66","d2424b1b1abe4eb8164227b085c9aa9456ea13493fd563e06fd51cf5694c78fc"],["336581ea7bfbbb290c191a2f507a41cf5643842170e914faeab27c2c579f726","ead12168595fe1be99252129b6e56b3391f7ab1410cd1e0ef3dcdcabd2fda224"],["8ab89816dadfd6b6a1f2634fcf00ec8403781025ed6890c4849742706bd43ede","6fdcef09f2f6d0a044e654aef624136f503d459c3e89845858a47a9129cdd24e"],["1e33f1a746c9c5778133344d9299fcaa20b0938e8acff2544bb40284b8c5fb94","60660257dd11b3aa9c8ed618d24edff2306d320f1d03010e33a7d2057f3b3b6"],["85b7c1dcb3cec1b7ee7f30ded79dd20a0ed1f4cc18cbcfcfa410361fd8f08f31","3d98a9cdd026dd43f39048f25a8847f4fcafad1895d7a633c6fed3c35e999511"],["29df9fbd8d9e46509275f4b125d6d45d7fbe9a3b878a7af872a2800661ac5f51","b4c4fe99c775a606e2d8862179139ffda61dc861c019e55cd2876eb2a27d84b"],["a0b1cae06b0a847a3fea6e671aaf8adfdfe58ca2f768105c8082b2e449fce252","ae434102edde0958ec4b19d917a6a28e6b72da1834aff0e650f049503a296cf2"],["4e8ceafb9b3e9a136dc7ff67e840295b499dfb3b2133e4ba113f2e4c0e121e5","cf2174118c8b6d7a4b48f6d534ce5c79422c086a63460502b827ce62a326683c"],["d24a44e047e19b6f5afb81c7ca2f69080a5076689a010919f42725c2b789a33b","6fb8d5591b466f8fc63db50f1c0f1c69013f996887b8244d2cdec417afea8fa3"],["ea01606a7a6c9cdd249fdfcfacb99584001edd28abbab77b5104e98e8e3b35d4","322af4908c7312b0cfbfe369f7a7b3cdb7d4494bc2823700cfd652188a3ea98d"],["af8addbf2b661c8a6c6328655eb96651252007d8c5ea31be4ad196de8ce2131f","6749e67c029b85f52a034eafd096836b2520818680e26ac8f3dfbcdb71749700"],["e3ae1974566ca06cc516d47e0fb165a674a3dabcfca15e722f0e3450f45889","2aeabe7e4531510116217f07bf4d07300de97e4874f81f533420a72eeb0bd6a4"],["591ee355313d99721cf6993ffed1e3e301993ff3ed258802075ea8ced397e246","b0ea558a113c30bea60fc4775460c7901ff0b053d25ca2bdeee98f1a4be5d196"],["11396d55fda54c49f19aa97318d8da61fa8584e47b084945077cf03255b52984","998c74a8cd45ac01289d5833a7beb4744ff536b01b257be4c5767bea93ea57a4"],["3c5d2a1ba39c5a1790000738c9e0c40b8dcdfd5468754b6405540157e017aa7a","b2284279995a34e2f9d4de7396fc18b80f9b8b9fdd270f6661f79ca4c81bd257"],["cc8704b8a60a0defa3a99a7299f2e9c3fbc395afb04ac078425ef8a1793cc030","bdd46039feed17881d1e0862db347f8cf395b74fc4bcdc4e940b74e3ac1f1b13"],["c533e4f7ea8555aacd9777ac5cad29b97dd4defccc53ee7ea204119b2889b197","6f0a256bc5efdf429a2fb6242f1a43a2d9b925bb4a4b3a26bb8e0f45eb596096"],["c14f8f2ccb27d6f109f6d08d03cc96a69ba8c34eec07bbcf566d48e33da6593","c359d6923bb398f7fd4473e16fe1c28475b740dd098075e6c0e8649113dc3a38"],["a6cbc3046bc6a450bac24789fa17115a4c9739ed75f8f21ce441f72e0b90e6ef","21ae7f4680e889bb130619e2c0f95a360ceb573c70603139862afd617fa9b9f"],["347d6d9a02c48927ebfb86c1359b1caf130a3c0267d11ce6344b39f99d43cc38","60ea7f61a353524d1c987f6ecec92f086d565ab687870cb12689ff1e31c74448"],["da6545d2181db8d983f7dcb375ef5866d47c67b1bf31c8cf855ef7437b72656a","49b96715ab6878a79e78f07ce5680c5d6673051b4935bd897fea824b77dc208a"],["c40747cc9d012cb1a13b8148309c6de7ec25d6945d657146b9d5994b8feb1111","5ca560753be2a12fc6de6caf2cb489565db936156b9514e1bb5e83037e0fa2d4"],["4e42c8ec82c99798ccf3a610be870e78338c7f713348bd34c8203ef4037f3502","7571d74ee5e0fb92a7a8b33a07783341a5492144cc54bcc40a94473693606437"],["3775ab7089bc6af823aba2e1af70b236d251cadb0c86743287522a1b3b0dedea","be52d107bcfa09d8bcb9736a828cfa7fac8db17bf7a76a2c42ad961409018cf7"],["cee31cbf7e34ec379d94fb814d3d775ad954595d1314ba8846959e3e82f74e26","8fd64a14c06b589c26b947ae2bcf6bfa0149ef0be14ed4d80f448a01c43b1c6d"],["b4f9eaea09b6917619f6ea6a4eb5464efddb58fd45b1ebefcdc1a01d08b47986","39e5c9925b5a54b07433a4f18c61726f8bb131c012ca542eb24a8ac07200682a"],["d4263dfc3d2df923a0179a48966d30ce84e2515afc3dccc1b77907792ebcc60e","62dfaf07a0f78feb30e30d6295853ce189e127760ad6cf7fae164e122a208d54"],["48457524820fa65a4f8d35eb6930857c0032acc0a4a2de422233eeda897612c4","25a748ab367979d98733c38a1fa1c2e7dc6cc07db2d60a9ae7a76aaa49bd0f77"],["dfeeef1881101f2cb11644f3a2afdfc2045e19919152923f367a1767c11cceda","ecfb7056cf1de042f9420bab396793c0c390bde74b4bbdff16a83ae09a9a7517"],["6d7ef6b17543f8373c573f44e1f389835d89bcbc6062ced36c82df83b8fae859","cd450ec335438986dfefa10c57fea9bcc521a0959b2d80bbf74b190dca712d10"],["e75605d59102a5a2684500d3b991f2e3f3c88b93225547035af25af66e04541f","f5c54754a8f71ee540b9b48728473e314f729ac5308b06938360990e2bfad125"],["eb98660f4c4dfaa06a2be453d5020bc99a0c2e60abe388457dd43fefb1ed620c","6cb9a8876d9cb8520609af3add26cd20a0a7cd8a9411131ce85f44100099223e"],["13e87b027d8514d35939f2e6892b19922154596941888336dc3563e3b8dba942","fef5a3c68059a6dec5d624114bf1e91aac2b9da568d6abeb2570d55646b8adf1"],["ee163026e9fd6fe017c38f06a5be6fc125424b371ce2708e7bf4491691e5764a","1acb250f255dd61c43d94ccc670d0f58f49ae3fa15b96623e5430da0ad6c62b2"],["b268f5ef9ad51e4d78de3a750c2dc89b1e626d43505867999932e5db33af3d80","5f310d4b3c99b9ebb19f77d41c1dee018cf0d34fd4191614003e945a1216e423"],["ff07f3118a9df035e9fad85eb6c7bfe42b02f01ca99ceea3bf7ffdba93c4750d","438136d603e858a3a5c440c38eccbaddc1d2942114e2eddd4740d098ced1f0d8"],["8d8b9855c7c052a34146fd20ffb658bea4b9f69e0d825ebec16e8c3ce2b526a1","cdb559eedc2d79f926baf44fb84ea4d44bcf50fee51d7ceb30e2e7f463036758"],["52db0b5384dfbf05bfa9d472d7ae26dfe4b851ceca91b1eba54263180da32b63","c3b997d050ee5d423ebaf66a6db9f57b3180c902875679de924b69d84a7b375"],["e62f9490d3d51da6395efd24e80919cc7d0f29c3f3fa48c6fff543becbd43352","6d89ad7ba4876b0b22c2ca280c682862f342c8591f1daf5170e07bfd9ccafa7d"],["7f30ea2476b399b4957509c88f77d0191afa2ff5cb7b14fd6d8e7d65aaab1193","ca5ef7d4b231c94c3b15389a5f6311e9daff7bb67b103e9880ef4bff637acaec"],["5098ff1e1d9f14fb46a210fada6c903fef0fb7b4a1dd1d9ac60a0361800b7a00","9731141d81fc8f8084d37c6e7542006b3ee1b40d60dfe5362a5b132fd17ddc0"],["32b78c7de9ee512a72895be6b9cbefa6e2f3c4ccce445c96b9f2c81e2778ad58","ee1849f513df71e32efc3896ee28260c73bb80547ae2275ba497237794c8753c"],["e2cb74fddc8e9fbcd076eef2a7c72b0ce37d50f08269dfc074b581550547a4f7","d3aa2ed71c9dd2247a62df062736eb0baddea9e36122d2be8641abcb005cc4a4"],["8438447566d4d7bedadc299496ab357426009a35f235cb141be0d99cd10ae3a8","c4e1020916980a4da5d01ac5e6ad330734ef0d7906631c4f2390426b2edd791f"],["4162d488b89402039b584c6fc6c308870587d9c46f660b878ab65c82c711d67e","67163e903236289f776f22c25fb8a3afc1732f2b84b4e95dbda47ae5a0852649"],["3fad3fa84caf0f34f0f89bfd2dcf54fc175d767aec3e50684f3ba4a4bf5f683d","cd1bc7cb6cc407bb2f0ca647c718a730cf71872e7d0d2a53fa20efcdfe61826"],["674f2600a3007a00568c1a7ce05d0816c1fb84bf1370798f1c69532faeb1a86b","299d21f9413f33b3edf43b257004580b70db57da0b182259e09eecc69e0d38a5"],["d32f4da54ade74abb81b815ad1fb3b263d82d6c692714bcff87d29bd5ee9f08f","f9429e738b8e53b968e99016c059707782e14f4535359d582fc416910b3eea87"],["30e4e670435385556e593657135845d36fbb6931f72b08cb1ed954f1e3ce3ff6","462f9bce619898638499350113bbc9b10a878d35da70740dc695a559eb88db7b"],["be2062003c51cc3004682904330e4dee7f3dcd10b01e580bf1971b04d4cad297","62188bc49d61e5428573d48a74e1c655b1c61090905682a0d5558ed72dccb9bc"],["93144423ace3451ed29e0fb9ac2af211cb6e84a601df5993c419859fff5df04a","7c10dfb164c3425f5c71a3f9d7992038f1065224f72bb9d1d902a6d13037b47c"],["b015f8044f5fcbdcf21ca26d6c34fb8197829205c7b7d2a7cb66418c157b112c","ab8c1e086d04e813744a655b2df8d5f83b3cdc6faa3088c1d3aea1454e3a1d5f"],["d5e9e1da649d97d89e4868117a465a3a4f8a18de57a140d36b3f2af341a21b52","4cb04437f391ed73111a13cc1d4dd0db1693465c2240480d8955e8592f27447a"],["d3ae41047dd7ca065dbf8ed77b992439983005cd72e16d6f996a5316d36966bb","bd1aeb21ad22ebb22a10f0303417c6d964f8cdd7df0aca614b10dc14d125ac46"],["463e2763d885f958fc66cdd22800f0a487197d0a82e377b49f80af87c897b065","bfefacdb0e5d0fd7df3a311a94de062b26b80c61fbc97508b79992671ef7ca7f"],["7985fdfd127c0567c6f53ec1bb63ec3158e597c40bfe747c83cddfc910641917","603c12daf3d9862ef2b25fe1de289aed24ed291e0ec6708703a5bd567f32ed03"],["74a1ad6b5f76e39db2dd249410eac7f99e74c59cb83d2d0ed5ff1543da7703e9","cc6157ef18c9c63cd6193d83631bbea0093e0968942e8c33d5737fd790e0db08"],["30682a50703375f602d416664ba19b7fc9bab42c72747463a71d0896b22f6da3","553e04f6b018b4fa6c8f39e7f311d3176290d0e0f19ca73f17714d9977a22ff8"],["9e2158f0d7c0d5f26c3791efefa79597654e7a2b2464f52b1ee6c1347769ef57","712fcdd1b9053f09003a3481fa7762e9ffd7c8ef35a38509e2fbf2629008373"],["176e26989a43c9cfeba4029c202538c28172e566e3c4fce7322857f3be327d66","ed8cc9d04b29eb877d270b4878dc43c19aefd31f4eee09ee7b47834c1fa4b1c3"],["75d46efea3771e6e68abb89a13ad747ecf1892393dfc4f1b7004788c50374da8","9852390a99507679fd0b86fd2b39a868d7efc22151346e1a3ca4726586a6bed8"],["809a20c67d64900ffb698c4c825f6d5f2310fb0451c869345b7319f645605721","9e994980d9917e22b76b061927fa04143d096ccc54963e6a5ebfa5f3f8e286c1"],["1b38903a43f7f114ed4500b4eac7083fdefece1cf29c63528d563446f972c180","4036edc931a60ae889353f77fd53de4a2708b26b6f5da72ad3394119daf408f9"]]}}});var up=P(B9=>{"use strict";var Xm=B9,ba=tl(),Gm=Im(),nH=Ft(),P9=nH.assert;function M9(t){t.type==="short"?this.curve=new Gm.short(t):t.type==="edwards"?this.curve=new Gm.edwards(t):this.curve=new Gm.mont(t),this.g=this.curve.g,this.n=this.curve.n,this.hash=t.hash,P9(this.g.validate(),"Invalid curve"),P9(this.g.mul(this.n).isInfinity(),"Invalid curve, G*N != O")}Xm.PresetCurve=M9;function ga(t,e){Object.defineProperty(Xm,t,{configurable:!0,enumerable:!0,get:function(){var r=new M9(e);return Object.defineProperty(Xm,t,{configurable:!0,enumerable:!0,value:r}),r}})}ga("p192",{type:"short",prime:"p192",p:"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff",a:"ffffffff ffffffff ffffffff fffffffe ffffffff fffffffc",b:"64210519 e59c80e7 0fa7e9ab 72243049 feb8deec c146b9b1",n:"ffffffff ffffffff ffffffff 99def836 146bc9b1 b4d22831",hash:ba.sha256,gRed:!1,g:["188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012","07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811"]});ga("p224",{type:"short",prime:"p224",p:"ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001",a:"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff fffffffe",b:"b4050a85 0c04b3ab f5413256 5044b0b7 d7bfd8ba 270b3943 2355ffb4",n:"ffffffff ffffffff ffffffff ffff16a2 e0b8f03e 13dd2945 5c5c2a3d",hash:ba.sha256,gRed:!1,g:["b70e0cbd 6bb4bf7f 321390b9 4a03c1d3 56c21122 343280d6 115c1d21","bd376388 b5f723fb 4c22dfe6 cd4375a0 5a074764 44d58199 85007e34"]});ga("p256",{type:"short",prime:null,p:"ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff ffffffff",a:"ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff fffffffc",b:"5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6 3bce3c3e 27d2604b",n:"ffffffff 00000000 ffffffff ffffffff bce6faad a7179e84 f3b9cac2 fc632551",hash:ba.sha256,gRed:!1,g:["6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296","4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5"]});ga("p384",{type:"short",prime:null,p:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe ffffffff 00000000 00000000 ffffffff",a:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe ffffffff 00000000 00000000 fffffffc",b:"b3312fa7 e23ee7e4 988e056b e3f82d19 181d9c6e fe814112 0314088f 5013875a c656398d 8a2ed19d 2a85c8ed d3ec2aef",n:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff c7634d81 f4372ddf 581a0db2 48b0a77a ecec196a ccc52973",hash:ba.sha384,gRed:!1,g:["aa87ca22 be8b0537 8eb1c71e f320ad74 6e1d3b62 8ba79b98 59f741e0 82542a38 5502f25d bf55296c 3a545e38 72760ab7","3617de4a 96262c6f 5d9e98bf 9292dc29 f8f41dbd 289a147c e9da3113 b5f0b8c0 0a60b1ce 1d7e819d 7a431d7c 90ea0e5f"]});ga("p521",{type:"short",prime:null,p:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff",a:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffc",b:"00000051 953eb961 8e1c9a1f 929a21a0 b68540ee a2da725b 99b315f3 b8b48991 8ef109e1 56193951 ec7e937b 1652c0bd 3bb1bf07 3573df88 3d2c34f1 ef451fd4 6b503f00",n:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffa 51868783 bf2f966b 7fcc0148 f709a5d0 3bb5c9b8 899c47ae bb6fb71e 91386409",hash:ba.sha512,gRed:!1,g:["000000c6 858e06b7 0404e9cd 9e3ecb66 2395b442 9c648139 053fb521 f828af60 6b4d3dba a14b5e77 efe75928 fe1dc127 a2ffa8de 3348b3c1 856a429b f97e7e31 c2e5bd66","00000118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9 98f54449 579b4468 17afbd17 273e662c 97ee7299 5ef42640 c550b901 3fad0761 353c7086 a272c240 88be9476 9fd16650"]});ga("curve25519",{type:"mont",prime:"p25519",p:"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed",a:"76d06",b:"1",n:"1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed",hash:ba.sha256,gRed:!1,g:["9"]});ga("ed25519",{type:"edwards",prime:"p25519",p:"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed",a:"-1",c:"1",d:"52036cee2b6ffe73 8cc740797779e898 00700a4d4141d8ab 75eb4dca135978a3",n:"1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed",hash:ba.sha256,gRed:!1,g:["216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a","6666666666666666666666666666666666666666666666666666666666666658"]});var Km;try{Km=O9()}catch{Km=void 0}ga("secp256k1",{type:"short",prime:"k256",p:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f",a:"0",b:"7",n:"ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141",h:"1",hash:ba.sha256,beta:"7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee",lambda:"5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72",basis:[{a:"3086d221a7d46bcde86c90e49284eb15",b:"-e4437ed6010e88286f547fa90abfe4c3"},{a:"114ca50f7a8e2f3f657c1108d9d44cfd8",b:"3086d221a7d46bcde86c90e49284eb15"}],gRed:!1,g:["79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798","483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8",Km]})});var R9=P((ere,L9)=>{"use strict";var iH=tl(),Mo=Pm(),F9=pa();function xa(t){if(!(this instanceof xa))return new xa(t);this.hash=t.hash,this.predResist=!!t.predResist,this.outLen=this.hash.outSize,this.minEntropy=t.minEntropy||this.hash.hmacStrength,this._reseed=null,this.reseedInterval=null,this.K=null,this.V=null;var e=Mo.toArray(t.entropy,t.entropyEnc||"hex"),r=Mo.toArray(t.nonce,t.nonceEnc||"hex"),n=Mo.toArray(t.pers,t.persEnc||"hex");F9(e.length>=this.minEntropy/8,"Not enough entropy. Minimum is: "+this.minEntropy+" bits"),this._init(e,r,n)}L9.exports=xa;xa.prototype._init=function(e,r,n){var i=e.concat(r).concat(n);this.K=new Array(this.outLen/8),this.V=new Array(this.outLen/8);for(var a=0;a=this.minEntropy/8,"Not enough entropy. Minimum is: "+this.minEntropy+" bits"),this._update(e.concat(n||[])),this._reseed=1};xa.prototype.generate=function(e,r,n,i){if(this._reseed>this.reseedInterval)throw new Error("Reseed is required");typeof r!="string"&&(i=n,n=r,r=null),n&&(n=Mo.toArray(n,i||"hex"),this._update(n));for(var a=[];a.length{"use strict";var aH=ti(),oH=Ft(),Vm=oH.assert;function st(t,e){this.ec=t,this.priv=null,this.pub=null,e.priv&&this._importPrivate(e.priv,e.privEnc),e.pub&&this._importPublic(e.pub,e.pubEnc)}I9.exports=st;st.fromPublic=function(e,r,n){return r instanceof st?r:new st(e,{pub:r,pubEnc:n})};st.fromPrivate=function(e,r,n){return r instanceof st?r:new st(e,{priv:r,privEnc:n})};st.prototype.validate=function(){var e=this.getPublic();return e.isInfinity()?{result:!1,reason:"Invalid public key"}:e.validate()?e.mul(this.ec.curve.n).isInfinity()?{result:!0,reason:null}:{result:!1,reason:"Public key * N != O"}:{result:!1,reason:"Public key is not a point"}};st.prototype.getPublic=function(e,r){return typeof e=="string"&&(r=e,e=null),this.pub||(this.pub=this.ec.g.mul(this.priv)),r?this.pub.encode(r,e):this.pub};st.prototype.getPrivate=function(e){return e==="hex"?this.priv.toString(16,2):this.priv};st.prototype._importPrivate=function(e,r){this.priv=new aH(e,r||16),this.priv=this.priv.umod(this.ec.curve.n)};st.prototype._importPublic=function(e,r){if(e.x||e.y){this.ec.curve.type==="mont"?Vm(e.x,"Need x coordinate"):(this.ec.curve.type==="short"||this.ec.curve.type==="edwards")&&Vm(e.x&&e.y,"Need both x and y coordinate"),this.pub=this.ec.curve.point(e.x,e.y);return}this.pub=this.ec.curve.decodePoint(e,r)};st.prototype.derive=function(e){return e.validate()||Vm(e.validate(),"public point not validated"),e.mul(this.priv).getX()};st.prototype.sign=function(e,r,n){return this.ec.sign(e,this,r,n)};st.prototype.verify=function(e,r){return this.ec.verify(e,r,this)};st.prototype.inspect=function(){return""}});var q9=P((tre,J9)=>{"use strict";var lp=ti(),Wm=Ft(),sH=Wm.assert;function fp(t,e){if(t instanceof fp)return t;this._importDER(t,e)||(sH(t.r&&t.s,"Signature without r or s"),this.r=new lp(t.r,16),this.s=new lp(t.s,16),t.recoveryParam===void 0?this.recoveryParam=null:this.recoveryParam=t.recoveryParam)}J9.exports=fp;function cH(){this.place=0}function Zm(t,e){var r=t[e.place++];if(!(r&128))return r;var n=r&15;if(n===0||n>4)return!1;for(var i=0,a=0,o=e.place;a>>=0;return i<=127?!1:(e.place=o,i)}function D9(t){for(var e=0,r=t.length-1;!t[e]&&!(t[e+1]&128)&&e>>3);for(t.push(r|128);--r;)t.push(e>>>(r<<3)&255);t.push(e)}fp.prototype.toDER=function(e){var r=this.r.toArray(),n=this.s.toArray();for(r[0]&128&&(r=[0].concat(r)),n[0]&128&&(n=[0].concat(n)),r=D9(r),n=D9(n);!n[0]&&!(n[1]&128);)n=n.slice(1);var i=[2];Qm(i,r.length),i=i.concat(r),i.push(2),Qm(i,n.length);var a=i.concat(n),o=[48];return Qm(o,a.length),o=o.concat(a),Wm.encode(o,e)}});var z9=P((nre,H9)=>{"use strict";var Bo=ti(),j9=R9(),uH=Ft(),Ym=up(),lH=Lm(),U9=uH.assert,$m=N9(),dp=q9();function en(t){if(!(this instanceof en))return new en(t);typeof t=="string"&&(U9(Object.prototype.hasOwnProperty.call(Ym,t),"Unknown curve "+t),t=Ym[t]),t instanceof Ym.PresetCurve&&(t={curve:t}),this.curve=t.curve.curve,this.n=this.curve.n,this.nh=this.n.ushrn(1),this.g=this.curve.g,this.g=t.curve.g,this.g.precompute(t.curve.n.bitLength()+1),this.hash=t.hash||t.curve.hash}H9.exports=en;en.prototype.keyPair=function(e){return new $m(this,e)};en.prototype.keyFromPrivate=function(e,r){return $m.fromPrivate(this,e,r)};en.prototype.keyFromPublic=function(e,r){return $m.fromPublic(this,e,r)};en.prototype.genKeyPair=function(e){e||(e={});for(var r=new j9({hash:this.hash,pers:e.pers,persEnc:e.persEnc||"utf8",entropy:e.entropy||lH(this.hash.hmacStrength),entropyEnc:e.entropy&&e.entropyEnc||"utf8",nonce:this.n.toArray()}),n=this.n.byteLength(),i=this.n.sub(new Bo(2));;){var a=new Bo(r.generate(n));if(!(a.cmp(i)>0))return a.iaddn(1),this.keyFromPrivate(a)}};en.prototype._truncateToN=function(e,r){var n=e.byteLength()*8-this.n.bitLength();return n>0&&(e=e.ushrn(n)),!r&&e.cmp(this.n)>=0?e.sub(this.n):e};en.prototype.sign=function(e,r,n,i){typeof n=="object"&&(i=n,n=null),i||(i={}),r=this.keyFromPrivate(r,n),e=this._truncateToN(new Bo(e,16));for(var a=this.n.byteLength(),o=r.getPrivate().toArray("be",a),c=e.toArray("be",a),u=new j9({hash:this.hash,entropy:o,nonce:c,pers:i.pers,persEnc:i.persEnc||"utf8"}),s=this.n.sub(new Bo(1)),f=0;;f++){var m=i.k?i.k(f):new Bo(u.generate(this.n.byteLength()));if(m=this._truncateToN(m,!0),!(m.cmpn(1)<=0||m.cmp(s)>=0)){var w=this.g.mul(m);if(!w.isInfinity()){var T=w.getX(),A=T.umod(this.n);if(A.cmpn(0)!==0){var O=m.invm(this.n).mul(A.mul(r.getPrivate()).iadd(e));if(O=O.umod(this.n),O.cmpn(0)!==0){var B=(w.getY().isOdd()?1:0)|(T.cmp(A)!==0?2:0);return i.canonical&&O.cmp(this.nh)>0&&(O=this.n.sub(O),B^=1),new dp({r:A,s:O,recoveryParam:B})}}}}}};en.prototype.verify=function(e,r,n,i){e=this._truncateToN(new Bo(e,16)),n=this.keyFromPublic(n,i),r=new dp(r,"hex");var a=r.r,o=r.s;if(a.cmpn(1)<0||a.cmp(this.n)>=0||o.cmpn(1)<0||o.cmp(this.n)>=0)return!1;var c=o.invm(this.n),u=c.mul(e).umod(this.n),s=c.mul(a).umod(this.n),f;return this.curve._maxwellTrick?(f=this.g.jmulAdd(u,n.getPublic(),s),f.isInfinity()?!1:f.eqXToP(a)):(f=this.g.mulAdd(u,n.getPublic(),s),f.isInfinity()?!1:f.getX().umod(this.n).cmp(a)===0)};en.prototype.recoverPubKey=function(t,e,r,n){U9((3&r)===r,"The recovery param is more than two bits"),e=new dp(e,n);var i=this.n,a=new Bo(t),o=e.r,c=e.s,u=r&1,s=r>>1;if(o.cmp(this.curve.p.umod(this.curve.n))>=0&&s)throw new Error("Unable to find sencond key candinate");s?o=this.curve.pointFromX(o.add(this.curve.n),u):o=this.curve.pointFromX(o,u);var f=e.r.invm(i),m=i.sub(a).mul(f).umod(i),w=c.mul(f).umod(i);return this.g.mulAdd(m,o,w)};en.prototype.getKeyRecoveryParam=function(t,e,r,n){if(e=new dp(e,n),e.recoveryParam!==null)return e.recoveryParam;for(var i=0;i<4;i++){var a;try{a=this.recoverPubKey(t,e,i)}catch{continue}if(a.eq(r))return i}throw new Error("Unable to find valid recovery factor")}});var V9=P((ire,K9)=>{"use strict";var nl=Ft(),X9=nl.assert,G9=nl.parseBytes,cc=nl.cachedProperty;function Xr(t,e){this.eddsa=t,this._secret=G9(e.secret),t.isPoint(e.pub)?this._pub=e.pub:this._pubBytes=G9(e.pub)}Xr.fromPublic=function(e,r){return r instanceof Xr?r:new Xr(e,{pub:r})};Xr.fromSecret=function(e,r){return r instanceof Xr?r:new Xr(e,{secret:r})};Xr.prototype.secret=function(){return this._secret};cc(Xr,"pubBytes",function(){return this.eddsa.encodePoint(this.pub())});cc(Xr,"pub",function(){return this._pubBytes?this.eddsa.decodePoint(this._pubBytes):this.eddsa.g.mul(this.priv())});cc(Xr,"privBytes",function(){var e=this.eddsa,r=this.hash(),n=e.encodingLength-1,i=r.slice(0,e.encodingLength);return i[0]&=248,i[n]&=127,i[n]|=64,i});cc(Xr,"priv",function(){return this.eddsa.decodeInt(this.privBytes())});cc(Xr,"hash",function(){return this.eddsa.hash().update(this.secret()).digest()});cc(Xr,"messagePrefix",function(){return this.hash().slice(this.eddsa.encodingLength)});Xr.prototype.sign=function(e){return X9(this._secret,"KeyPair can only verify"),this.eddsa.sign(e,this)};Xr.prototype.verify=function(e,r){return this.eddsa.verify(e,r,this)};Xr.prototype.getSecret=function(e){return X9(this._secret,"KeyPair is public only"),nl.encode(this.secret(),e)};Xr.prototype.getPublic=function(e){return nl.encode(this.pubBytes(),e)};K9.exports=Xr});var Q9=P((are,Z9)=>{"use strict";var fH=ti(),pp=Ft(),dH=pp.assert,hp=pp.cachedProperty,pH=pp.parseBytes;function Fo(t,e){this.eddsa=t,typeof e!="object"&&(e=pH(e)),Array.isArray(e)&&(e={R:e.slice(0,t.encodingLength),S:e.slice(t.encodingLength)}),dH(e.R&&e.S,"Signature without R or S"),t.isPoint(e.R)&&(this._R=e.R),e.S instanceof fH&&(this._S=e.S),this._Rencoded=Array.isArray(e.R)?e.R:e.Rencoded,this._Sencoded=Array.isArray(e.S)?e.S:e.Sencoded}hp(Fo,"S",function(){return this.eddsa.decodeInt(this.Sencoded())});hp(Fo,"R",function(){return this.eddsa.decodePoint(this.Rencoded())});hp(Fo,"Rencoded",function(){return this.eddsa.encodePoint(this.R())});hp(Fo,"Sencoded",function(){return this.eddsa.encodeInt(this.S())});Fo.prototype.toBytes=function(){return this.Rencoded().concat(this.Sencoded())};Fo.prototype.toHex=function(){return pp.encode(this.toBytes(),"hex").toUpperCase()};Z9.exports=Fo});var r7=P((ore,e7)=>{"use strict";var hH=tl(),vH=up(),uc=Ft(),mH=uc.assert,Y9=uc.parseBytes,$9=V9(),W9=Q9();function kt(t){if(mH(t==="ed25519","only tested with ed25519 so far"),!(this instanceof kt))return new kt(t);t=vH[t].curve,this.curve=t,this.g=t.g,this.g.precompute(t.n.bitLength()+1),this.pointClass=t.point().constructor,this.encodingLength=Math.ceil(t.n.bitLength()/8),this.hash=hH.sha512}e7.exports=kt;kt.prototype.sign=function(e,r){e=Y9(e);var n=this.keyFromSecret(r),i=this.hashInt(n.messagePrefix(),e),a=this.g.mul(i),o=this.encodePoint(a),c=this.hashInt(o,n.pubBytes(),e).mul(n.priv()),u=i.add(c).umod(this.curve.n);return this.makeSignature({R:a,S:u,Rencoded:o})};kt.prototype.verify=function(e,r,n){e=Y9(e),r=this.makeSignature(r);var i=this.keyFromPublic(n),a=this.hashInt(r.Rencoded(),i.pubBytes(),e),o=this.g.mul(r.S()),c=r.R().add(i.pub().mul(a));return c.eq(o)};kt.prototype.hashInt=function(){for(var e=this.hash(),r=0;r{"use strict";var Lo=t7;Lo.version=Mw().version;Lo.utils=Ft();Lo.rand=Lm();Lo.curve=Im();Lo.curves=up();Lo.ec=z9();Lo.eddsa=r7()});var i7=P(lc=>{"use strict";var bH=lc&&lc.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(lc,"__esModule",{value:!0});lc.EC=void 0;var gH=bH(n7()),xH=gH.default.ec;lc.EC=xH});var a7=P(vp=>{"use strict";Object.defineProperty(vp,"__esModule",{value:!0});vp.version=void 0;vp.version="signing-key/5.7.0"});var al=P(ya=>{"use strict";Object.defineProperty(ya,"__esModule",{value:!0});ya.computePublicKey=ya.recoverPublicKey=ya.SigningKey=void 0;var yH=i7(),Or=De(),il=Ve(),wH=re(),AH=a7(),rb=new wH.Logger(AH.version),eb=null;function li(){return eb||(eb=new yH.EC("secp256k1")),eb}var o7=function(){function t(e){(0,il.defineReadOnly)(this,"curve","secp256k1"),(0,il.defineReadOnly)(this,"privateKey",(0,Or.hexlify)(e)),(0,Or.hexDataLength)(this.privateKey)!==32&&rb.throwArgumentError("invalid private key","privateKey","[[ REDACTED ]]");var r=li().keyFromPrivate((0,Or.arrayify)(this.privateKey));(0,il.defineReadOnly)(this,"publicKey","0x"+r.getPublic(!1,"hex")),(0,il.defineReadOnly)(this,"compressedPublicKey","0x"+r.getPublic(!0,"hex")),(0,il.defineReadOnly)(this,"_isSigningKey",!0)}return t.prototype._addPoint=function(e){var r=li().keyFromPublic((0,Or.arrayify)(this.publicKey)),n=li().keyFromPublic((0,Or.arrayify)(e));return"0x"+r.pub.add(n.pub).encodeCompressed("hex")},t.prototype.signDigest=function(e){var r=li().keyFromPrivate((0,Or.arrayify)(this.privateKey)),n=(0,Or.arrayify)(e);n.length!==32&&rb.throwArgumentError("bad digest length","digest",e);var i=r.sign(n,{canonical:!0});return(0,Or.splitSignature)({recoveryParam:i.recoveryParam,r:(0,Or.hexZeroPad)("0x"+i.r.toString(16),32),s:(0,Or.hexZeroPad)("0x"+i.s.toString(16),32)})},t.prototype.computeSharedSecret=function(e){var r=li().keyFromPrivate((0,Or.arrayify)(this.privateKey)),n=li().keyFromPublic((0,Or.arrayify)(s7(e)));return(0,Or.hexZeroPad)("0x"+r.derive(n.getPublic()).toString(16),32)},t.isSigningKey=function(e){return!!(e&&e._isSigningKey)},t}();ya.SigningKey=o7;function EH(t,e){var r=(0,Or.splitSignature)(e),n={r:(0,Or.arrayify)(r.r),s:(0,Or.arrayify)(r.s)};return"0x"+li().recoverPubKey((0,Or.arrayify)(t),n,r.recoveryParam).encode("hex",!1)}ya.recoverPublicKey=EH;function s7(t,e){var r=(0,Or.arrayify)(t);if(r.length===32){var n=new o7(r);return e?"0x"+li().keyFromPrivate(r).getPublic(!0,"hex"):n.publicKey}else{if(r.length===33)return e?(0,Or.hexlify)(r):"0x"+li().keyFromPublic(r).getPublic(!1,"hex");if(r.length===65)return e?"0x"+li().keyFromPublic(r).getPublic(!0,"hex"):(0,Or.hexlify)(r)}return rb.throwArgumentError("invalid public or private key","key","[REDACTED]")}ya.computePublicKey=s7});var c7=P(mp=>{"use strict";Object.defineProperty(mp,"__esModule",{value:!0});mp.version=void 0;mp.version="transactions/5.7.0"});var Ji=P(Ar=>{"use strict";var SH=Ar&&Ar.__createBinding||(Object.create?function(t,e,r,n){n===void 0&&(n=r),Object.defineProperty(t,n,{enumerable:!0,get:function(){return e[r]}})}:function(t,e,r,n){n===void 0&&(n=r),t[n]=e[r]}),_H=Ar&&Ar.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),TH=Ar&&Ar.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(t!=null)for(var r in t)r!=="default"&&Object.prototype.hasOwnProperty.call(t,r)&&SH(e,t,r);return _H(e,t),e};Object.defineProperty(Ar,"__esModule",{value:!0});Ar.parse=Ar.serialize=Ar.accessListify=Ar.recoverAddress=Ar.computeAddress=Ar.TransactionTypes=void 0;var ol=Vt(),Ro=Tr(),ze=De(),kH=Ao(),fc=Bt(),CH=Ve(),wa=TH(Cd()),u7=al(),nb=re(),OH=c7(),ut=new nb.Logger(OH.version),PH;(function(t){t[t.legacy=0]="legacy",t[t.eip2930=1]="eip2930",t[t.eip1559=2]="eip1559"})(PH=Ar.TransactionTypes||(Ar.TransactionTypes={}));function ib(t){return t==="0x"?null:(0,ol.getAddress)(t)}function ct(t){return t==="0x"?kH.Zero:Ro.BigNumber.from(t)}var MH=[{name:"nonce",maxLength:32,numeric:!0},{name:"gasPrice",maxLength:32,numeric:!0},{name:"gasLimit",maxLength:32,numeric:!0},{name:"to",length:20},{name:"value",maxLength:32,numeric:!0},{name:"data"}],BH={chainId:!0,data:!0,gasLimit:!0,gasPrice:!0,nonce:!0,to:!0,type:!0,value:!0};function l7(t){var e=(0,u7.computePublicKey)(t);return(0,ol.getAddress)((0,ze.hexDataSlice)((0,fc.keccak256)((0,ze.hexDataSlice)(e,1)),12))}Ar.computeAddress=l7;function ab(t,e){return l7((0,u7.recoverPublicKey)((0,ze.arrayify)(t),e))}Ar.recoverAddress=ab;function Lt(t,e){var r=(0,ze.stripZeros)(Ro.BigNumber.from(t).toHexString());return r.length>32&&ut.throwArgumentError("invalid length for "+e,"transaction:"+e,t),r}function tb(t,e){return{address:(0,ol.getAddress)(t),storageKeys:(e||[]).map(function(r,n){return(0,ze.hexDataLength)(r)!==32&&ut.throwArgumentError("invalid access list storageKey","accessList["+t+":"+n+"]",r),r.toLowerCase()})}}function bp(t){if(Array.isArray(t))return t.map(function(r,n){return Array.isArray(r)?(r.length>2&&ut.throwArgumentError("access list expected to be [ address, storageKeys[] ]","value["+n+"]",r),tb(r[0],r[1])):tb(r.address,r.storageKeys)});var e=Object.keys(t).map(function(r){var n=t[r].reduce(function(i,a){return i[a]=!0,i},{});return tb(r,Object.keys(n).sort())});return e.sort(function(r,n){return r.address.localeCompare(n.address)}),e}Ar.accessListify=bp;function f7(t){return bp(t).map(function(e){return[e.address,e.storageKeys]})}function d7(t,e){if(t.gasPrice!=null){var r=Ro.BigNumber.from(t.gasPrice),n=Ro.BigNumber.from(t.maxFeePerGas||0);r.eq(n)||ut.throwArgumentError("mismatch EIP-1559 gasPrice != maxFeePerGas","tx",{gasPrice:r,maxFeePerGas:n})}var i=[Lt(t.chainId||0,"chainId"),Lt(t.nonce||0,"nonce"),Lt(t.maxPriorityFeePerGas||0,"maxPriorityFeePerGas"),Lt(t.maxFeePerGas||0,"maxFeePerGas"),Lt(t.gasLimit||0,"gasLimit"),t.to!=null?(0,ol.getAddress)(t.to):"0x",Lt(t.value||0,"value"),t.data||"0x",f7(t.accessList||[])];if(e){var a=(0,ze.splitSignature)(e);i.push(Lt(a.recoveryParam,"recoveryParam")),i.push((0,ze.stripZeros)(a.r)),i.push((0,ze.stripZeros)(a.s))}return(0,ze.hexConcat)(["0x02",wa.encode(i)])}function p7(t,e){var r=[Lt(t.chainId||0,"chainId"),Lt(t.nonce||0,"nonce"),Lt(t.gasPrice||0,"gasPrice"),Lt(t.gasLimit||0,"gasLimit"),t.to!=null?(0,ol.getAddress)(t.to):"0x",Lt(t.value||0,"value"),t.data||"0x",f7(t.accessList||[])];if(e){var n=(0,ze.splitSignature)(e);r.push(Lt(n.recoveryParam,"recoveryParam")),r.push((0,ze.stripZeros)(n.r)),r.push((0,ze.stripZeros)(n.s))}return(0,ze.hexConcat)(["0x01",wa.encode(r)])}function FH(t,e){(0,CH.checkProperties)(t,BH);var r=[];MH.forEach(function(o){var c=t[o.name]||[],u={};o.numeric&&(u.hexPad="left"),c=(0,ze.arrayify)((0,ze.hexlify)(c,u)),o.length&&c.length!==o.length&&c.length>0&&ut.throwArgumentError("invalid length for "+o.name,"transaction:"+o.name,c),o.maxLength&&(c=(0,ze.stripZeros)(c),c.length>o.maxLength&&ut.throwArgumentError("invalid length for "+o.name,"transaction:"+o.name,c)),r.push((0,ze.hexlify)(c))});var n=0;if(t.chainId!=null?(n=t.chainId,typeof n!="number"&&ut.throwArgumentError("invalid transaction.chainId","transaction",t)):e&&!(0,ze.isBytesLike)(e)&&e.v>28&&(n=Math.floor((e.v-35)/2)),n!==0&&(r.push((0,ze.hexlify)(n)),r.push("0x"),r.push("0x")),!e)return wa.encode(r);var i=(0,ze.splitSignature)(e),a=27+i.recoveryParam;return n!==0?(r.pop(),r.pop(),r.pop(),a+=n*2+8,i.v>28&&i.v!==a&&ut.throwArgumentError("transaction.chainId/signature.v mismatch","signature",e)):i.v!==a&&ut.throwArgumentError("transaction.chainId/signature.v mismatch","signature",e),r.push((0,ze.hexlify)(a)),r.push((0,ze.stripZeros)((0,ze.arrayify)(i.r))),r.push((0,ze.stripZeros)((0,ze.arrayify)(i.s))),wa.encode(r)}function LH(t,e){if(t.type==null||t.type===0)return t.accessList!=null&&ut.throwArgumentError("untyped transactions do not support accessList; include type: 1","transaction",t),FH(t,e);switch(t.type){case 1:return p7(t,e);case 2:return d7(t,e);default:break}return ut.throwError("unsupported transaction type: "+t.type,nb.Logger.errors.UNSUPPORTED_OPERATION,{operation:"serializeTransaction",transactionType:t.type})}Ar.serialize=LH;function h7(t,e,r){try{var n=ct(e[0]).toNumber();if(n!==0&&n!==1)throw new Error("bad recid");t.v=n}catch{ut.throwArgumentError("invalid v for transaction type: 1","v",e[0])}t.r=(0,ze.hexZeroPad)(e[1],32),t.s=(0,ze.hexZeroPad)(e[2],32);try{var i=(0,fc.keccak256)(r(t));t.from=ab(i,{r:t.r,s:t.s,recoveryParam:t.v})}catch{}}function RH(t){var e=wa.decode(t.slice(1));e.length!==9&&e.length!==12&&ut.throwArgumentError("invalid component count for transaction type: 2","payload",(0,ze.hexlify)(t));var r=ct(e[2]),n=ct(e[3]),i={type:2,chainId:ct(e[0]).toNumber(),nonce:ct(e[1]).toNumber(),maxPriorityFeePerGas:r,maxFeePerGas:n,gasPrice:null,gasLimit:ct(e[4]),to:ib(e[5]),value:ct(e[6]),data:e[7],accessList:bp(e[8])};return e.length===9||(i.hash=(0,fc.keccak256)(t),h7(i,e.slice(9),d7)),i}function IH(t){var e=wa.decode(t.slice(1));e.length!==8&&e.length!==11&&ut.throwArgumentError("invalid component count for transaction type: 1","payload",(0,ze.hexlify)(t));var r={type:1,chainId:ct(e[0]).toNumber(),nonce:ct(e[1]).toNumber(),gasPrice:ct(e[2]),gasLimit:ct(e[3]),to:ib(e[4]),value:ct(e[5]),data:e[6],accessList:bp(e[7])};return e.length===8||(r.hash=(0,fc.keccak256)(t),h7(r,e.slice(8),p7)),r}function NH(t){var e=wa.decode(t);e.length!==9&&e.length!==6&&ut.throwArgumentError("invalid raw transaction","rawTransaction",t);var r={nonce:ct(e[0]).toNumber(),gasPrice:ct(e[1]),gasLimit:ct(e[2]),to:ib(e[3]),value:ct(e[4]),data:e[5],chainId:0};if(e.length===6)return r;try{r.v=Ro.BigNumber.from(e[6]).toNumber()}catch{return r}if(r.r=(0,ze.hexZeroPad)(e[7],32),r.s=(0,ze.hexZeroPad)(e[8],32),Ro.BigNumber.from(r.r).isZero()&&Ro.BigNumber.from(r.s).isZero())r.chainId=r.v,r.v=0;else{r.chainId=Math.floor((r.v-35)/2),r.chainId<0&&(r.chainId=0);var n=r.v-27,i=e.slice(0,6);r.chainId!==0&&(i.push((0,ze.hexlify)(r.chainId)),i.push("0x"),i.push("0x"),n-=r.chainId*2+8);var a=(0,fc.keccak256)(wa.encode(i));try{r.from=ab(a,{r:(0,ze.hexlify)(r.r),s:(0,ze.hexlify)(r.s),recoveryParam:n})}catch{}r.hash=(0,fc.keccak256)(t)}return r.type=null,r}function DH(t){var e=(0,ze.arrayify)(t);if(e[0]>127)return NH(e);switch(e[0]){case 1:return IH(e);case 2:return RH(e);default:break}return ut.throwError("unsupported transaction type: "+e[0],nb.Logger.errors.UNSUPPORTED_OPERATION,{operation:"parseTransaction",transactionType:e[0]})}Ar.parse=DH});var v7=P(gp=>{"use strict";Object.defineProperty(gp,"__esModule",{value:!0});gp.version=void 0;gp.version="contracts/5.7.0"});var E7=P(lt=>{"use strict";var wp=lt&<.__extends||function(){var t=function(e,r){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,i){n.__proto__=i}||function(n,i){for(var a in i)Object.prototype.hasOwnProperty.call(i,a)&&(n[a]=i[a])},t(e,r)};return function(e,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");t(e,r);function n(){this.constructor=e}e.prototype=r===null?Object.create(r):(n.prototype=r.prototype,new n)}}(),Ea=lt&<.__awaiter||function(t,e,r,n){function i(a){return a instanceof r?a:new r(function(o){o(a)})}return new(r||(r=Promise))(function(a,o){function c(f){try{s(n.next(f))}catch(m){o(m)}}function u(f){try{s(n.throw(f))}catch(m){o(m)}}function s(f){f.done?a(f.value):i(f.value).then(c,u)}s((n=n.apply(t,e||[])).next())})},Sa=lt&<.__generator||function(t,e){var r={label:0,sent:function(){if(a[0]&1)throw a[1];return a[1]},trys:[],ops:[]},n,i,a,o;return o={next:c(0),throw:c(1),return:c(2)},typeof Symbol=="function"&&(o[Symbol.iterator]=function(){return this}),o;function c(s){return function(f){return u([s,f])}}function u(s){if(n)throw new TypeError("Generator is already executing.");for(;r;)try{if(n=1,i&&(a=s[0]&2?i.return:s[0]?i.throw||((a=i.return)&&a.call(i),0):i.next)&&!(a=a.call(i,s[1])).done)return a;switch(i=0,a&&(s=[s[0]&2,a.value]),s[0]){case 0:case 1:a=s;break;case 4:return r.label++,{value:s[1],done:!1};case 5:r.label++,i=s[1],s=[0];continue;case 7:s=r.ops.pop(),r.trys.pop();continue;default:if(a=r.trys,!(a=a.length>0&&a[a.length-1])&&(s[0]===6||s[0]===2)){r=0;continue}if(s[0]===3&&(!a||s[1]>a[0]&&s[1]1)){s=s.substring(1);var m=f[0];try{a[s]==null&&(0,$.defineReadOnly)(a,s,a[m])}catch{}a.functions[s]==null&&(0,$.defineReadOnly)(a.functions,s,a.functions[m]),a.callStatic[s]==null&&(0,$.defineReadOnly)(a.callStatic,s,a.callStatic[m]),a.populateTransaction[s]==null&&(0,$.defineReadOnly)(a.populateTransaction,s,a.populateTransaction[m]),a.estimateGas[s]==null&&(0,$.defineReadOnly)(a.estimateGas,s,a.estimateGas[m])}})}return t.getContractAddress=function(e){return(0,cl.getContractAddress)(e)},t.getInterface=function(e){return xp.Interface.isInterface(e)?e:new xp.Interface(e)},t.prototype.deployed=function(){return this._deployed()},t.prototype._deployed=function(e){var r=this;return this._deployedPromise||(this.deployTransaction?this._deployedPromise=this.deployTransaction.wait().then(function(){return r}):this._deployedPromise=this.provider.getCode(this.address,e).then(function(n){return n==="0x"&&ar.throwError("contract not deployed",$r.Logger.errors.UNSUPPORTED_OPERATION,{contractAddress:r.address,operation:"getDeployed"}),r})),this._deployedPromise},t.prototype.fallback=function(e){var r=this;this.signer||ar.throwError("sending a transactions require a signer",$r.Logger.errors.UNSUPPORTED_OPERATION,{operation:"sendTransaction(fallback)"});var n=(0,$.shallowCopy)(e||{});return["from","to"].forEach(function(i){n[i]!=null&&ar.throwError("cannot override "+i,$r.Logger.errors.UNSUPPORTED_OPERATION,{operation:i})}),n.to=this.resolvedAddress,this.deployed().then(function(){return r.signer.sendTransaction(n)})},t.prototype.connect=function(e){typeof e=="string"&&(e=new ob.VoidSigner(e,this.provider));var r=new this.constructor(this.address,this.interface,e);return this.deployTransaction&&(0,$.defineReadOnly)(r,"deployTransaction",this.deployTransaction),r},t.prototype.attach=function(e){return new this.constructor(e,this.interface,this.signer||this.provider)},t.isIndexed=function(e){return xp.Indexed.isIndexed(e)},t.prototype._normalizeRunningEvent=function(e){return this._runningEvents[e.tag]?this._runningEvents[e.tag]:e},t.prototype._getRunningEvent=function(e){if(typeof e=="string"){if(e==="error")return this._normalizeRunningEvent(new KH);if(e==="event")return this._normalizeRunningEvent(new ul("event",null));if(e==="*")return this._normalizeRunningEvent(new g7(this.address,this.interface));var r=this.interface.getEvent(e);return this._normalizeRunningEvent(new b7(this.address,this.interface,r))}if(e.topics&&e.topics.length>0){try{var n=e.topics[0];if(typeof n!="string")throw new Error("invalid topic");var r=this.interface.getEvent(n);return this._normalizeRunningEvent(new b7(this.address,this.interface,r,e.topics))}catch{}var i={address:this.address,topics:e.topics};return this._normalizeRunningEvent(new ul(w7(i),i))}return this._normalizeRunningEvent(new g7(this.address,this.interface))},t.prototype._checkRunningEvents=function(e){if(e.listenerCount()===0){delete this._runningEvents[e.tag];var r=this._wrappedEmits[e.tag];r&&e.filter&&(this.provider.off(e.filter,r),delete this._wrappedEmits[e.tag])}},t.prototype._wrapEvent=function(e,r,n){var i=this,a=(0,$.deepCopy)(r);return a.removeListener=function(){!n||(e.removeListener(n),i._checkRunningEvents(e))},a.getBlock=function(){return i.provider.getBlock(r.blockHash)},a.getTransaction=function(){return i.provider.getTransaction(r.transactionHash)},a.getTransactionReceipt=function(){return i.provider.getTransactionReceipt(r.transactionHash)},e.prepareEvent(a),a},t.prototype._addEventListener=function(e,r,n){var i=this;if(this.provider||ar.throwError("events require a provider or a signer with a provider",$r.Logger.errors.UNSUPPORTED_OPERATION,{operation:"once"}),e.addListener(r,n),this._runningEvents[e.tag]=e,!this._wrappedEmits[e.tag]){var a=function(o){var c=i._wrapEvent(e,o,r);if(c.decodeError==null)try{var u=e.getEmit(c);i.emit.apply(i,JH([e.filter],u,!1))}catch(s){c.decodeError=s.error}e.filter!=null&&i.emit("event",c),c.decodeError!=null&&i.emit("error",c.decodeError,c)};this._wrappedEmits[e.tag]=a,e.filter!=null&&this.provider.on(e.filter,a)}},t.prototype.queryFilter=function(e,r,n){var i=this,a=this._getRunningEvent(e),o=(0,$.shallowCopy)(a.filter);return typeof r=="string"&&(0,Io.isHexString)(r,32)?(n!=null&&ar.throwArgumentError("cannot specify toBlock with blockhash","toBlock",n),o.blockHash=r):(o.fromBlock=r??0,o.toBlock=n??"latest"),this.provider.getLogs(o).then(function(c){return c.map(function(u){return i._wrapEvent(a,u,null)})})},t.prototype.on=function(e,r){return this._addEventListener(this._getRunningEvent(e),r,!1),this},t.prototype.once=function(e,r){return this._addEventListener(this._getRunningEvent(e),r,!0),this},t.prototype.emit=function(e){for(var r=[],n=1;n0;return this._checkRunningEvents(i),a},t.prototype.listenerCount=function(e){var r=this;return this.provider?e==null?Object.keys(this._runningEvents).reduce(function(n,i){return n+r._runningEvents[i].listenerCount()},0):this._getRunningEvent(e).listenerCount():0},t.prototype.listeners=function(e){if(!this.provider)return[];if(e==null){var r=[];for(var n in this._runningEvents)this._runningEvents[n].listeners().forEach(function(i){r.push(i)});return r}return this._getRunningEvent(e).listeners()},t.prototype.removeAllListeners=function(e){if(!this.provider)return this;if(e==null){for(var r in this._runningEvents){var n=this._runningEvents[r];n.removeAllListeners(),this._checkRunningEvents(n)}return this}var i=this._getRunningEvent(e);return i.removeAllListeners(),this._checkRunningEvents(i),this},t.prototype.off=function(e,r){if(!this.provider)return this;var n=this._getRunningEvent(e);return n.removeListener(r),this._checkRunningEvents(n),this},t.prototype.removeListener=function(e,r){return this.off(e,r)},t}();lt.BaseContract=A7;var sb=function(t){wp(e,t);function e(){return t!==null&&t.apply(this,arguments)||this}return e}(A7);lt.Contract=sb;var VH=function(){function t(e,r,n){var i=this.constructor,a=null;typeof r=="string"?a=r:(0,Io.isBytes)(r)?a=(0,Io.hexlify)(r):r&&typeof r.object=="string"?a=r.object:a="!",a.substring(0,2)!=="0x"&&(a="0x"+a),(!(0,Io.isHexString)(a)||a.length%2)&&ar.throwArgumentError("invalid bytecode","bytecode",r),n&&!ob.Signer.isSigner(n)&&ar.throwArgumentError("invalid signer","signer",n),(0,$.defineReadOnly)(this,"bytecode",a),(0,$.defineReadOnly)(this,"interface",(0,$.getStatic)(i,"getInterface")(e)),(0,$.defineReadOnly)(this,"signer",n||null)}return t.prototype.getDeployTransaction=function(){for(var e=[],r=0;r{"use strict";Object.defineProperty(_a,"__esModule",{value:!0});_a.Base58=_a.Base32=_a.BaseX=void 0;var S7=De(),Ep=Ve(),cb=function(){function t(e){(0,Ep.defineReadOnly)(this,"alphabet",e),(0,Ep.defineReadOnly)(this,"base",e.length),(0,Ep.defineReadOnly)(this,"_alphabetMap",{}),(0,Ep.defineReadOnly)(this,"_leader",e.charAt(0));for(var r=0;r0;)n.push(a%this.base),a=a/this.base|0}for(var c="",u=0;r[u]===0&&u=0;--s)c+=this.alphabet[n[s]];return c},t.prototype.decode=function(e){if(typeof e!="string")throw new TypeError("Expected String");var r=[];if(e.length===0)return new Uint8Array(r);r.push(0);for(var n=0;n>=8;for(;a>0;)r.push(a&255),a>>=8}for(var c=0;e[c]===this._leader&&c{"use strict";Object.defineProperty(_p,"__esModule",{value:!0});_p.pbkdf2=void 0;var WH=require("crypto"),T7=De();function _7(t){return Buffer.from((0,T7.arrayify)(t))}function YH(t,e,r,n,i){return(0,T7.hexlify)((0,WH.pbkdf2Sync)(_7(t),_7(e),r,n,i))}_p.pbkdf2=YH});var kp=P(Tp=>{"use strict";Object.defineProperty(Tp,"__esModule",{value:!0});Tp.pbkdf2=void 0;var $H=k7();Object.defineProperty(Tp,"pbkdf2",{enumerable:!0,get:function(){return $H.pbkdf2}})});var ub=P(ll=>{"use strict";Object.defineProperty(ll,"__esModule",{value:!0});ll.SupportedAlgorithm=void 0;var ez;(function(t){t.sha256="sha256",t.sha512="sha512"})(ez=ll.SupportedAlgorithm||(ll.SupportedAlgorithm={}))});var C7=P(Cp=>{"use strict";Object.defineProperty(Cp,"__esModule",{value:!0});Cp.version=void 0;Cp.version="sha2/5.7.0"});var P7=P(rn=>{"use strict";var rz=rn&&rn.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(rn,"__esModule",{value:!0});rn.computeHmac=rn.sha512=rn.sha256=rn.ripemd160=void 0;var lb=require("crypto"),tz=rz(tl()),fl=De(),nz=ub(),O7=re(),iz=C7(),az=new O7.Logger(iz.version);function oz(t){return"0x"+tz.default.ripemd160().update((0,fl.arrayify)(t)).digest("hex")}rn.ripemd160=oz;function sz(t){return"0x"+(0,lb.createHash)("sha256").update(Buffer.from((0,fl.arrayify)(t))).digest("hex")}rn.sha256=sz;function cz(t){return"0x"+(0,lb.createHash)("sha512").update(Buffer.from((0,fl.arrayify)(t))).digest("hex")}rn.sha512=cz;function uz(t,e,r){return nz.SupportedAlgorithm[t]||az.throwError("unsupported algorithm - "+t,O7.Logger.errors.UNSUPPORTED_OPERATION,{operation:"computeHmac",algorithm:t}),"0x"+(0,lb.createHmac)(t,Buffer.from((0,fl.arrayify)(e))).update(Buffer.from((0,fl.arrayify)(r))).digest("hex")}rn.computeHmac=uz});var dc=P(tn=>{"use strict";Object.defineProperty(tn,"__esModule",{value:!0});tn.SupportedAlgorithm=tn.sha512=tn.sha256=tn.ripemd160=tn.computeHmac=void 0;var Op=P7();Object.defineProperty(tn,"computeHmac",{enumerable:!0,get:function(){return Op.computeHmac}});Object.defineProperty(tn,"ripemd160",{enumerable:!0,get:function(){return Op.ripemd160}});Object.defineProperty(tn,"sha256",{enumerable:!0,get:function(){return Op.sha256}});Object.defineProperty(tn,"sha512",{enumerable:!0,get:function(){return Op.sha512}});var lz=ub();Object.defineProperty(tn,"SupportedAlgorithm",{enumerable:!0,get:function(){return lz.SupportedAlgorithm}})});var M7=P(Pp=>{"use strict";Object.defineProperty(Pp,"__esModule",{value:!0});Pp.version=void 0;Pp.version="wordlists/5.7.0"});var fi=P(No=>{"use strict";Object.defineProperty(No,"__esModule",{value:!0});No.Wordlist=No.logger=void 0;var fz=!1,dz=ko(),B7=Ve(),pz=re(),hz=M7();No.logger=new pz.Logger(hz.version);var vz=function(){function t(e){var r=this.constructor;No.logger.checkAbstract(r,t),(0,B7.defineReadOnly)(this,"locale",e)}return t.prototype.split=function(e){return e.toLowerCase().split(/ +/g)},t.prototype.join=function(e){return e.join(" ")},t.check=function(e){for(var r=[],n=0;n<2048;n++){var i=e.getWord(n);if(n!==e.getWordIndex(i))return"0x";r.push(i)}return(0,dz.id)(r.join(` +`)+` +`)},t.register=function(e,r){if(r||(r=e.locale),fz)try{var n=window;n._ethers&&n._ethers.wordlists&&(n._ethers.wordlists[r]||(0,B7.defineReadOnly)(n._ethers.wordlists,r,e))}catch{}},t}();No.Wordlist=vz});var R7=P(pc=>{"use strict";var mz=pc&&pc.__extends||function(){var t=function(e,r){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,i){n.__proto__=i}||function(n,i){for(var a in i)Object.prototype.hasOwnProperty.call(i,a)&&(n[a]=i[a])},t(e,r)};return function(e,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");t(e,r);function n(){this.constructor=e}e.prototype=r===null?Object.create(r):(n.prototype=r.prototype,new n)}}();Object.defineProperty(pc,"__esModule",{value:!0});pc.langCz=void 0;var fb=fi(),bz="AbdikaceAbecedaAdresaAgreseAkceAktovkaAlejAlkoholAmputaceAnanasAndulkaAnekdotaAnketaAntikaAnulovatArchaAroganceAsfaltAsistentAspiraceAstmaAstronomAtlasAtletikaAtolAutobusAzylBabkaBachorBacilBaculkaBadatelBagetaBagrBahnoBakterieBaladaBaletkaBalkonBalonekBalvanBalzaBambusBankomatBarbarBaretBarmanBarokoBarvaBaterkaBatohBavlnaBazalkaBazilikaBazukaBednaBeranBesedaBestieBetonBezinkaBezmocBeztakBicyklBidloBiftekBikinyBilanceBiografBiologBitvaBizonBlahobytBlatouchBlechaBleduleBleskBlikatBliznaBlokovatBlouditBludBobekBobrBodlinaBodnoutBohatostBojkotBojovatBokorysBolestBorecBoroviceBotaBoubelBouchatBoudaBouleBouratBoxerBradavkaBramboraBrankaBratrBreptaBriketaBrkoBrlohBronzBroskevBrunetkaBrusinkaBrzdaBrzyBublinaBubnovatBuchtaBuditelBudkaBudovaBufetBujarostBukviceBuldokBulvaBundaBunkrBurzaButikBuvolBuzolaBydletBylinaBytovkaBzukotCapartCarevnaCedrCeduleCejchCejnCelaCelerCelkemCelniceCeninaCennostCenovkaCentrumCenzorCestopisCetkaChalupaChapadloCharitaChataChechtatChemieChichotChirurgChladChlebaChlubitChmelChmuraChobotChocholChodbaCholeraChomoutChopitChorobaChovChrapotChrlitChrtChrupChtivostChudinaChutnatChvatChvilkaChvostChybaChystatChytitCibuleCigaretaCihelnaCihlaCinkotCirkusCisternaCitaceCitrusCizinecCizostClonaCokolivCouvatCtitelCtnostCudnostCuketaCukrCupotCvaknoutCvalCvikCvrkotCyklistaDalekoDarebaDatelDatumDceraDebataDechovkaDecibelDeficitDeflaceDeklDekretDemokratDepreseDerbyDeskaDetektivDikobrazDiktovatDiodaDiplomDiskDisplejDivadloDivochDlahaDlouhoDluhopisDnesDobroDobytekDocentDochutitDodnesDohledDohodaDohraDojemDojniceDokladDokolaDoktorDokumentDolarDolevaDolinaDomaDominantDomluvitDomovDonutitDopadDopisDoplnitDoposudDoprovodDopustitDorazitDorostDortDosahDoslovDostatekDosudDosytaDotazDotekDotknoutDoufatDoutnatDovozceDozaduDoznatDozorceDrahotaDrakDramatikDravecDrazeDrdolDrobnostDrogerieDrozdDrsnostDrtitDrzostDubenDuchovnoDudekDuhaDuhovkaDusitDusnoDutostDvojiceDvorecDynamitEkologEkonomieElektronElipsaEmailEmiseEmoceEmpatieEpizodaEpochaEpopejEposEsejEsenceEskortaEskymoEtiketaEuforieEvoluceExekuceExkurzeExpediceExplozeExportExtraktFackaFajfkaFakultaFanatikFantazieFarmacieFavoritFazoleFederaceFejetonFenkaFialkaFigurantFilozofFiltrFinanceFintaFixaceFjordFlanelFlirtFlotilaFondFosforFotbalFotkaFotonFrakceFreskaFrontaFukarFunkceFyzikaGalejeGarantGenetikaGeologGilotinaGlazuraGlejtGolemGolfistaGotikaGrafGramofonGranuleGrepGrilGrogGroteskaGumaHadiceHadrHalaHalenkaHanbaHanopisHarfaHarpunaHavranHebkostHejkalHejnoHejtmanHektarHelmaHematomHerecHernaHesloHezkyHistorikHladovkaHlasivkyHlavaHledatHlenHlodavecHlohHloupostHltatHlubinaHluchotaHmatHmotaHmyzHnisHnojivoHnoutHoblinaHobojHochHodinyHodlatHodnotaHodovatHojnostHokejHolinkaHolkaHolubHomoleHonitbaHonoraceHoralHordaHorizontHorkoHorlivecHormonHorninaHoroskopHorstvoHospodaHostinaHotovostHoubaHoufHoupatHouskaHovorHradbaHraniceHravostHrazdaHrbolekHrdinaHrdloHrdostHrnekHrobkaHromadaHrotHroudaHrozenHrstkaHrubostHryzatHubenostHubnoutHudbaHukotHumrHusitaHustotaHvozdHybnostHydrantHygienaHymnaHysterikIdylkaIhnedIkonaIluzeImunitaInfekceInflaceInkasoInovaceInspekceInternetInvalidaInvestorInzerceIronieJablkoJachtaJahodaJakmileJakostJalovecJantarJarmarkJaroJasanJasnoJatkaJavorJazykJedinecJedleJednatelJehlanJekotJelenJelitoJemnostJenomJepiceJeseterJevitJezdecJezeroJinakJindyJinochJiskraJistotaJitrniceJizvaJmenovatJogurtJurtaKabaretKabelKabinetKachnaKadetKadidloKahanKajakKajutaKakaoKaktusKalamitaKalhotyKalibrKalnostKameraKamkolivKamnaKanibalKanoeKantorKapalinaKapelaKapitolaKapkaKapleKapotaKaprKapustaKapybaraKaramelKarotkaKartonKasaKatalogKatedraKauceKauzaKavalecKazajkaKazetaKazivostKdekolivKdesiKedlubenKempKeramikaKinoKlacekKladivoKlamKlapotKlasikaKlaunKlecKlenbaKlepatKlesnoutKlidKlimaKlisnaKloboukKlokanKlopaKloubKlubovnaKlusatKluzkostKmenKmitatKmotrKnihaKnotKoaliceKoberecKobkaKoblihaKobylaKocourKohoutKojenecKokosKoktejlKolapsKoledaKolizeKoloKomandoKometaKomikKomnataKomoraKompasKomunitaKonatKonceptKondiceKonecKonfeseKongresKoninaKonkursKontaktKonzervaKopanecKopieKopnoutKoprovkaKorbelKorektorKormidloKoroptevKorpusKorunaKorytoKorzetKosatecKostkaKotelKotletaKotoulKoukatKoupelnaKousekKouzloKovbojKozaKozorohKrabiceKrachKrajinaKralovatKrasopisKravataKreditKrejcarKresbaKrevetaKriketKritikKrizeKrkavecKrmelecKrmivoKrocanKrokKronikaKropitKroupaKrovkaKrtekKruhadloKrupiceKrutostKrvinkaKrychleKryptaKrystalKrytKudlankaKufrKujnostKuklaKulajdaKulichKulkaKulometKulturaKunaKupodivuKurtKurzorKutilKvalitaKvasinkaKvestorKynologKyselinaKytaraKyticeKytkaKytovecKyvadloLabradorLachtanLadnostLaikLakomecLamelaLampaLanovkaLasiceLasoLasturaLatinkaLavinaLebkaLeckdyLedenLedniceLedovkaLedvinaLegendaLegieLegraceLehceLehkostLehnoutLektvarLenochodLentilkaLepenkaLepidloLetadloLetecLetmoLetokruhLevhartLevitaceLevobokLibraLichotkaLidojedLidskostLihovinaLijavecLilekLimetkaLinieLinkaLinoleumListopadLitinaLitovatLobistaLodivodLogikaLogopedLokalitaLoketLomcovatLopataLopuchLordLososLotrLoudalLouhLoukaLouskatLovecLstivostLucernaLuciferLumpLuskLustraceLviceLyraLyrikaLysinaMadamMadloMagistrMahagonMajetekMajitelMajoritaMakakMakoviceMakrelaMalbaMalinaMalovatMalviceMaminkaMandleMankoMarnostMasakrMaskotMasopustMaticeMatrikaMaturitaMazanecMazivoMazlitMazurkaMdlobaMechanikMeditaceMedovinaMelasaMelounMentolkaMetlaMetodaMetrMezeraMigraceMihnoutMihuleMikinaMikrofonMilenecMilimetrMilostMimikaMincovnaMinibarMinometMinulostMiskaMistrMixovatMladostMlhaMlhovinaMlokMlsatMluvitMnichMnohemMobilMocnostModelkaModlitbaMohylaMokroMolekulaMomentkaMonarchaMonoklMonstrumMontovatMonzunMosazMoskytMostMotivaceMotorkaMotykaMouchaMoudrostMozaikaMozekMozolMramorMravenecMrkevMrtvolaMrzetMrzutostMstitelMudrcMuflonMulatMumieMuniceMusetMutaceMuzeumMuzikantMyslivecMzdaNabouratNachytatNadaceNadbytekNadhozNadobroNadpisNahlasNahnatNahodileNahraditNaivitaNajednouNajistoNajmoutNaklonitNakonecNakrmitNalevoNamazatNamluvitNanometrNaokoNaopakNaostroNapadatNapevnoNaplnitNapnoutNaposledNaprostoNaroditNarubyNarychloNasaditNasekatNaslepoNastatNatolikNavenekNavrchNavzdoryNazvatNebeNechatNeckyNedalekoNedbatNeduhNegaceNehetNehodaNejenNejprveNeklidNelibostNemilostNemocNeochotaNeonkaNepokojNerostNervNesmyslNesouladNetvorNeuronNevinaNezvykleNicotaNijakNikamNikdyNiklNikterakNitroNoclehNohaviceNominaceNoraNorekNositelNosnostNouzeNovinyNovotaNozdraNudaNudleNugetNutitNutnostNutrieNymfaObalObarvitObavaObdivObecObehnatObejmoutObezitaObhajobaObilniceObjasnitObjektObklopitOblastOblekOblibaOblohaObludaObnosObohatitObojekOboutObrazecObrnaObrubaObrysObsahObsluhaObstaratObuvObvazObvinitObvodObvykleObyvatelObzorOcasOcelOcenitOchladitOchotaOchranaOcitnoutOdbojOdbytOdchodOdcizitOdebratOdeslatOdevzdatOdezvaOdhadceOdhoditOdjetOdjinudOdkazOdkoupitOdlivOdlukaOdmlkaOdolnostOdpadOdpisOdploutOdporOdpustitOdpykatOdrazkaOdsouditOdstupOdsunOdtokOdtudOdvahaOdvetaOdvolatOdvracetOdznakOfinaOfsajdOhlasOhniskoOhradaOhrozitOhryzekOkapOkeniceOklikaOknoOkouzlitOkovyOkrasaOkresOkrsekOkruhOkupantOkurkaOkusitOlejninaOlizovatOmakOmeletaOmezitOmladinaOmlouvatOmluvaOmylOnehdyOpakovatOpasekOperaceOpiceOpilostOpisovatOporaOpoziceOpravduOprotiOrbitalOrchestrOrgieOrliceOrlojOrtelOsadaOschnoutOsikaOsivoOslavaOslepitOslnitOslovitOsnovaOsobaOsolitOspalecOstenOstrahaOstudaOstychOsvojitOteplitOtiskOtopOtrhatOtrlostOtrokOtrubyOtvorOvanoutOvarOvesOvlivnitOvoceOxidOzdobaPachatelPacientPadouchPahorekPaktPalandaPalecPalivoPalubaPamfletPamlsekPanenkaPanikaPannaPanovatPanstvoPantoflePaprikaParketaParodiePartaParukaParybaPasekaPasivitaPastelkaPatentPatronaPavoukPaznehtPazourekPeckaPedagogPejsekPekloPelotonPenaltaPendrekPenzePeriskopPeroPestrostPetardaPeticePetrolejPevninaPexesoPianistaPihaPijavicePiklePiknikPilinaPilnostPilulkaPinzetaPipetaPisatelPistolePitevnaPivnicePivovarPlacentaPlakatPlamenPlanetaPlastikaPlatitPlavidloPlazPlechPlemenoPlentaPlesPletivoPlevelPlivatPlnitPlnoPlochaPlodinaPlombaPloutPlukPlynPobavitPobytPochodPocitPoctivecPodatPodcenitPodepsatPodhledPodivitPodkladPodmanitPodnikPodobaPodporaPodrazPodstataPodvodPodzimPoeziePohankaPohnutkaPohovorPohromaPohybPointaPojistkaPojmoutPokazitPoklesPokojPokrokPokutaPokynPolednePolibekPolknoutPolohaPolynomPomaluPominoutPomlkaPomocPomstaPomysletPonechatPonorkaPonurostPopadatPopelPopisekPoplachPoprositPopsatPopudPoradcePorcePorodPoruchaPoryvPosaditPosedPosilaPoskokPoslanecPosouditPospoluPostavaPosudekPosypPotahPotkanPotleskPotomekPotravaPotupaPotvoraPoukazPoutoPouzdroPovahaPovidlaPovlakPovozPovrchPovstatPovykPovzdechPozdravPozemekPoznatekPozorPozvatPracovatPrahoryPraktikaPralesPraotecPraporekPrasePravdaPrincipPrknoProbuditProcentoProdejProfeseProhraProjektProlomitPromilePronikatPropadProrokProsbaProtonProutekProvazPrskavkaPrstenPrudkostPrutPrvekPrvohoryPsanecPsovodPstruhPtactvoPubertaPuchPudlPukavecPuklinaPukrlePultPumpaPuncPupenPusaPusinkaPustinaPutovatPutykaPyramidaPyskPytelRacekRachotRadiaceRadniceRadonRaftRagbyRaketaRakovinaRamenoRampouchRandeRarachRaritaRasovnaRastrRatolestRazanceRazidloReagovatReakceReceptRedaktorReferentReflexRejnokReklamaRekordRekrutRektorReputaceRevizeRevmaRevolverRezervaRiskovatRizikoRobotikaRodokmenRohovkaRokleRokokoRomanetoRopovodRopuchaRorejsRosolRostlinaRotmistrRotopedRotundaRoubenkaRouchoRoupRouraRovinaRovniceRozborRozchodRozdatRozeznatRozhodceRozinkaRozjezdRozkazRozlohaRozmarRozpadRozruchRozsahRoztokRozumRozvodRubrikaRuchadloRukaviceRukopisRybaRybolovRychlostRydloRypadloRytinaRyzostSadistaSahatSakoSamecSamizdatSamotaSanitkaSardinkaSasankaSatelitSazbaSazeniceSborSchovatSebrankaSeceseSedadloSedimentSedloSehnatSejmoutSekeraSektaSekundaSekvojeSemenoSenoServisSesaditSeshoraSeskokSeslatSestraSesuvSesypatSetbaSetinaSetkatSetnoutSetrvatSeverSeznamShodaShrnoutSifonSilniceSirkaSirotekSirupSituaceSkafandrSkaliskoSkanzenSkautSkeptikSkicaSkladbaSkleniceSkloSkluzSkobaSkokanSkoroSkriptaSkrzSkupinaSkvostSkvrnaSlabikaSladidloSlaninaSlastSlavnostSledovatSlepecSlevaSlezinaSlibSlinaSlizniceSlonSloupekSlovoSluchSluhaSlunceSlupkaSlzaSmaragdSmetanaSmilstvoSmlouvaSmogSmradSmrkSmrtkaSmutekSmyslSnadSnahaSnobSobotaSochaSodovkaSokolSopkaSotvaSoubojSoucitSoudceSouhlasSouladSoumrakSoupravaSousedSoutokSouvisetSpalovnaSpasitelSpisSplavSpodekSpojenecSpoluSponzorSpornostSpoustaSprchaSpustitSrandaSrazSrdceSrnaSrnecSrovnatSrpenSrstSrubStaniceStarostaStatikaStavbaStehnoStezkaStodolaStolekStopaStornoStoupatStrachStresStrhnoutStromStrunaStudnaStupniceStvolStykSubjektSubtropySucharSudostSuknoSundatSunoutSurikataSurovinaSvahSvalstvoSvetrSvatbaSvazekSvisleSvitekSvobodaSvodidloSvorkaSvrabSykavkaSykotSynekSynovecSypatSypkostSyrovostSyselSytostTabletkaTabuleTahounTajemnoTajfunTajgaTajitTajnostTaktikaTamhleTamponTancovatTanecTankerTapetaTaveninaTazatelTechnikaTehdyTekutinaTelefonTemnotaTendenceTenistaTenorTeplotaTepnaTeprveTerapieTermoskaTextilTichoTiskopisTitulekTkadlecTkaninaTlapkaTleskatTlukotTlupaTmelToaletaTopinkaTopolTorzoTouhaToulecTradiceTraktorTrampTrasaTraverzaTrefitTrestTrezorTrhavinaTrhlinaTrochuTrojiceTroskaTroubaTrpceTrpitelTrpkostTrubecTruchlitTruhliceTrusTrvatTudyTuhnoutTuhostTundraTuristaTurnajTuzemskoTvarohTvorbaTvrdostTvrzTygrTykevUbohostUbozeUbratUbrousekUbrusUbytovnaUchoUctivostUdivitUhraditUjednatUjistitUjmoutUkazatelUklidnitUklonitUkotvitUkrojitUliceUlitaUlovitUmyvadloUnavitUniformaUniknoutUpadnoutUplatnitUplynoutUpoutatUpravitUranUrazitUsednoutUsilovatUsmrtitUsnadnitUsnoutUsouditUstlatUstrnoutUtahovatUtkatUtlumitUtonoutUtopenecUtrousitUvalitUvolnitUvozovkaUzdravitUzelUzeninaUzlinaUznatVagonValchaValounVanaVandalVanilkaVaranVarhanyVarovatVcelkuVchodVdovaVedroVegetaceVejceVelbloudVeletrhVelitelVelmocVelrybaVenkovVerandaVerzeVeselkaVeskrzeVesniceVespoduVestaVeterinaVeverkaVibraceVichrVideohraVidinaVidleVilaViniceVisetVitalitaVizeVizitkaVjezdVkladVkusVlajkaVlakVlasecVlevoVlhkostVlivVlnovkaVloupatVnucovatVnukVodaVodivostVodoznakVodstvoVojenskyVojnaVojskoVolantVolbaVolitVolnoVoskovkaVozidloVozovnaVpravoVrabecVracetVrahVrataVrbaVrcholekVrhatVrstvaVrtuleVsaditVstoupitVstupVtipVybavitVybratVychovatVydatVydraVyfotitVyhledatVyhnoutVyhoditVyhraditVyhubitVyjasnitVyjetVyjmoutVyklopitVykonatVylekatVymazatVymezitVymizetVymysletVynechatVynikatVynutitVypadatVyplatitVypravitVypustitVyrazitVyrovnatVyrvatVyslovitVysokoVystavitVysunoutVysypatVytasitVytesatVytratitVyvinoutVyvolatVyvrhelVyzdobitVyznatVzaduVzbuditVzchopitVzdorVzduchVzdychatVzestupVzhledemVzkazVzlykatVznikVzorekVzpouraVztahVztekXylofonZabratZabydletZachovatZadarmoZadusitZafoukatZahltitZahoditZahradaZahynoutZajatecZajetZajistitZaklepatZakoupitZalepitZamezitZamotatZamysletZanechatZanikatZaplatitZapojitZapsatZarazitZastavitZasunoutZatajitZatemnitZatknoutZaujmoutZavalitZaveletZavinitZavolatZavrtatZazvonitZbavitZbrusuZbudovatZbytekZdalekaZdarmaZdatnostZdivoZdobitZdrojZdvihZdymadloZeleninaZemanZeminaZeptatZezaduZezdolaZhatitZhltnoutZhlubokaZhotovitZhrubaZimaZimniceZjemnitZklamatZkoumatZkratkaZkumavkaZlatoZlehkaZlobaZlomZlostZlozvykZmapovatZmarZmatekZmijeZmizetZmocnitZmodratZmrzlinaZmutovatZnakZnalostZnamenatZnovuZobrazitZotavitZoubekZoufaleZploditZpomalitZpravaZprostitZprudkaZprvuZradaZranitZrcadloZrnitostZrnoZrovnaZrychlitZrzavostZtichaZtratitZubovinaZubrZvednoutZvenkuZveselaZvonZvratZvukovodZvyk",dl=null;function F7(t){if(dl==null&&(dl=bz.replace(/([A-Z])/g," $1").toLowerCase().substring(1).split(" "),fb.Wordlist.check(t)!=="0x25f44555f4af25b51a711136e1c7d6e50ce9f8917d39d6b1f076b2bb4d2fac1a"))throw dl=null,new Error("BIP39 Wordlist for en (English) FAILED")}var gz=function(t){mz(e,t);function e(){return t.call(this,"cz")||this}return e.prototype.getWord=function(r){return F7(this),dl[r]},e.prototype.getWordIndex=function(r){return F7(this),dl.indexOf(r)},e}(fb.Wordlist),L7=new gz;pc.langCz=L7;fb.Wordlist.register(L7)});var D7=P(hc=>{"use strict";var xz=hc&&hc.__extends||function(){var t=function(e,r){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,i){n.__proto__=i}||function(n,i){for(var a in i)Object.prototype.hasOwnProperty.call(i,a)&&(n[a]=i[a])},t(e,r)};return function(e,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");t(e,r);function n(){this.constructor=e}e.prototype=r===null?Object.create(r):(n.prototype=r.prototype,new n)}}();Object.defineProperty(hc,"__esModule",{value:!0});hc.langEn=void 0;var db=fi(),yz="AbandonAbilityAbleAboutAboveAbsentAbsorbAbstractAbsurdAbuseAccessAccidentAccountAccuseAchieveAcidAcousticAcquireAcrossActActionActorActressActualAdaptAddAddictAddressAdjustAdmitAdultAdvanceAdviceAerobicAffairAffordAfraidAgainAgeAgentAgreeAheadAimAirAirportAisleAlarmAlbumAlcoholAlertAlienAllAlleyAllowAlmostAloneAlphaAlreadyAlsoAlterAlwaysAmateurAmazingAmongAmountAmusedAnalystAnchorAncientAngerAngleAngryAnimalAnkleAnnounceAnnualAnotherAnswerAntennaAntiqueAnxietyAnyApartApologyAppearAppleApproveAprilArchArcticAreaArenaArgueArmArmedArmorArmyAroundArrangeArrestArriveArrowArtArtefactArtistArtworkAskAspectAssaultAssetAssistAssumeAsthmaAthleteAtomAttackAttendAttitudeAttractAuctionAuditAugustAuntAuthorAutoAutumnAverageAvocadoAvoidAwakeAwareAwayAwesomeAwfulAwkwardAxisBabyBachelorBaconBadgeBagBalanceBalconyBallBambooBananaBannerBarBarelyBargainBarrelBaseBasicBasketBattleBeachBeanBeautyBecauseBecomeBeefBeforeBeginBehaveBehindBelieveBelowBeltBenchBenefitBestBetrayBetterBetweenBeyondBicycleBidBikeBindBiologyBirdBirthBitterBlackBladeBlameBlanketBlastBleakBlessBlindBloodBlossomBlouseBlueBlurBlushBoardBoatBodyBoilBombBoneBonusBookBoostBorderBoringBorrowBossBottomBounceBoxBoyBracketBrainBrandBrassBraveBreadBreezeBrickBridgeBriefBrightBringBriskBroccoliBrokenBronzeBroomBrotherBrownBrushBubbleBuddyBudgetBuffaloBuildBulbBulkBulletBundleBunkerBurdenBurgerBurstBusBusinessBusyButterBuyerBuzzCabbageCabinCableCactusCageCakeCallCalmCameraCampCanCanalCancelCandyCannonCanoeCanvasCanyonCapableCapitalCaptainCarCarbonCardCargoCarpetCarryCartCaseCashCasinoCastleCasualCatCatalogCatchCategoryCattleCaughtCauseCautionCaveCeilingCeleryCementCensusCenturyCerealCertainChairChalkChampionChangeChaosChapterChargeChaseChatCheapCheckCheeseChefCherryChestChickenChiefChildChimneyChoiceChooseChronicChuckleChunkChurnCigarCinnamonCircleCitizenCityCivilClaimClapClarifyClawClayCleanClerkCleverClickClientCliffClimbClinicClipClockClogCloseClothCloudClownClubClumpClusterClutchCoachCoastCoconutCodeCoffeeCoilCoinCollectColorColumnCombineComeComfortComicCommonCompanyConcertConductConfirmCongressConnectConsiderControlConvinceCookCoolCopperCopyCoralCoreCornCorrectCostCottonCouchCountryCoupleCourseCousinCoverCoyoteCrackCradleCraftCramCraneCrashCraterCrawlCrazyCreamCreditCreekCrewCricketCrimeCrispCriticCropCrossCrouchCrowdCrucialCruelCruiseCrumbleCrunchCrushCryCrystalCubeCultureCupCupboardCuriousCurrentCurtainCurveCushionCustomCuteCycleDadDamageDampDanceDangerDaringDashDaughterDawnDayDealDebateDebrisDecadeDecemberDecideDeclineDecorateDecreaseDeerDefenseDefineDefyDegreeDelayDeliverDemandDemiseDenialDentistDenyDepartDependDepositDepthDeputyDeriveDescribeDesertDesignDeskDespairDestroyDetailDetectDevelopDeviceDevoteDiagramDialDiamondDiaryDiceDieselDietDifferDigitalDignityDilemmaDinnerDinosaurDirectDirtDisagreeDiscoverDiseaseDishDismissDisorderDisplayDistanceDivertDivideDivorceDizzyDoctorDocumentDogDollDolphinDomainDonateDonkeyDonorDoorDoseDoubleDoveDraftDragonDramaDrasticDrawDreamDressDriftDrillDrinkDripDriveDropDrumDryDuckDumbDuneDuringDustDutchDutyDwarfDynamicEagerEagleEarlyEarnEarthEasilyEastEasyEchoEcologyEconomyEdgeEditEducateEffortEggEightEitherElbowElderElectricElegantElementElephantElevatorEliteElseEmbarkEmbodyEmbraceEmergeEmotionEmployEmpowerEmptyEnableEnactEndEndlessEndorseEnemyEnergyEnforceEngageEngineEnhanceEnjoyEnlistEnoughEnrichEnrollEnsureEnterEntireEntryEnvelopeEpisodeEqualEquipEraEraseErodeErosionErrorEruptEscapeEssayEssenceEstateEternalEthicsEvidenceEvilEvokeEvolveExactExampleExcessExchangeExciteExcludeExcuseExecuteExerciseExhaustExhibitExileExistExitExoticExpandExpectExpireExplainExposeExpressExtendExtraEyeEyebrowFabricFaceFacultyFadeFaintFaithFallFalseFameFamilyFamousFanFancyFantasyFarmFashionFatFatalFatherFatigueFaultFavoriteFeatureFebruaryFederalFeeFeedFeelFemaleFenceFestivalFetchFeverFewFiberFictionFieldFigureFileFilmFilterFinalFindFineFingerFinishFireFirmFirstFiscalFishFitFitnessFixFlagFlameFlashFlatFlavorFleeFlightFlipFloatFlockFloorFlowerFluidFlushFlyFoamFocusFogFoilFoldFollowFoodFootForceForestForgetForkFortuneForumForwardFossilFosterFoundFoxFragileFrameFrequentFreshFriendFringeFrogFrontFrostFrownFrozenFruitFuelFunFunnyFurnaceFuryFutureGadgetGainGalaxyGalleryGameGapGarageGarbageGardenGarlicGarmentGasGaspGateGatherGaugeGazeGeneralGeniusGenreGentleGenuineGestureGhostGiantGiftGiggleGingerGiraffeGirlGiveGladGlanceGlareGlassGlideGlimpseGlobeGloomGloryGloveGlowGlueGoatGoddessGoldGoodGooseGorillaGospelGossipGovernGownGrabGraceGrainGrantGrapeGrassGravityGreatGreenGridGriefGritGroceryGroupGrowGruntGuardGuessGuideGuiltGuitarGunGymHabitHairHalfHammerHamsterHandHappyHarborHardHarshHarvestHatHaveHawkHazardHeadHealthHeartHeavyHedgehogHeightHelloHelmetHelpHenHeroHiddenHighHillHintHipHireHistoryHobbyHockeyHoldHoleHolidayHollowHomeHoneyHoodHopeHornHorrorHorseHospitalHostHotelHourHoverHubHugeHumanHumbleHumorHundredHungryHuntHurdleHurryHurtHusbandHybridIceIconIdeaIdentifyIdleIgnoreIllIllegalIllnessImageImitateImmenseImmuneImpactImposeImproveImpulseInchIncludeIncomeIncreaseIndexIndicateIndoorIndustryInfantInflictInformInhaleInheritInitialInjectInjuryInmateInnerInnocentInputInquiryInsaneInsectInsideInspireInstallIntactInterestIntoInvestInviteInvolveIronIslandIsolateIssueItemIvoryJacketJaguarJarJazzJealousJeansJellyJewelJobJoinJokeJourneyJoyJudgeJuiceJumpJungleJuniorJunkJustKangarooKeenKeepKetchupKeyKickKidKidneyKindKingdomKissKitKitchenKiteKittenKiwiKneeKnifeKnockKnowLabLabelLaborLadderLadyLakeLampLanguageLaptopLargeLaterLatinLaughLaundryLavaLawLawnLawsuitLayerLazyLeaderLeafLearnLeaveLectureLeftLegLegalLegendLeisureLemonLendLengthLensLeopardLessonLetterLevelLiarLibertyLibraryLicenseLifeLiftLightLikeLimbLimitLinkLionLiquidListLittleLiveLizardLoadLoanLobsterLocalLockLogicLonelyLongLoopLotteryLoudLoungeLoveLoyalLuckyLuggageLumberLunarLunchLuxuryLyricsMachineMadMagicMagnetMaidMailMainMajorMakeMammalManManageMandateMangoMansionManualMapleMarbleMarchMarginMarineMarketMarriageMaskMassMasterMatchMaterialMathMatrixMatterMaximumMazeMeadowMeanMeasureMeatMechanicMedalMediaMelodyMeltMemberMemoryMentionMenuMercyMergeMeritMerryMeshMessageMetalMethodMiddleMidnightMilkMillionMimicMindMinimumMinorMinuteMiracleMirrorMiseryMissMistakeMixMixedMixtureMobileModelModifyMomMomentMonitorMonkeyMonsterMonthMoonMoralMoreMorningMosquitoMotherMotionMotorMountainMouseMoveMovieMuchMuffinMuleMultiplyMuscleMuseumMushroomMusicMustMutualMyselfMysteryMythNaiveNameNapkinNarrowNastyNationNatureNearNeckNeedNegativeNeglectNeitherNephewNerveNestNetNetworkNeutralNeverNewsNextNiceNightNobleNoiseNomineeNoodleNormalNorthNoseNotableNoteNothingNoticeNovelNowNuclearNumberNurseNutOakObeyObjectObligeObscureObserveObtainObviousOccurOceanOctoberOdorOffOfferOfficeOftenOilOkayOldOliveOlympicOmitOnceOneOnionOnlineOnlyOpenOperaOpinionOpposeOptionOrangeOrbitOrchardOrderOrdinaryOrganOrientOriginalOrphanOstrichOtherOutdoorOuterOutputOutsideOvalOvenOverOwnOwnerOxygenOysterOzonePactPaddlePagePairPalacePalmPandaPanelPanicPantherPaperParadeParentParkParrotPartyPassPatchPathPatientPatrolPatternPausePavePaymentPeacePeanutPearPeasantPelicanPenPenaltyPencilPeoplePepperPerfectPermitPersonPetPhonePhotoPhrasePhysicalPianoPicnicPicturePiecePigPigeonPillPilotPinkPioneerPipePistolPitchPizzaPlacePlanetPlasticPlatePlayPleasePledgePluckPlugPlungePoemPoetPointPolarPolePolicePondPonyPoolPopularPortionPositionPossiblePostPotatoPotteryPovertyPowderPowerPracticePraisePredictPreferPreparePresentPrettyPreventPricePridePrimaryPrintPriorityPrisonPrivatePrizeProblemProcessProduceProfitProgramProjectPromoteProofPropertyProsperProtectProudProvidePublicPuddingPullPulpPulsePumpkinPunchPupilPuppyPurchasePurityPurposePursePushPutPuzzlePyramidQualityQuantumQuarterQuestionQuickQuitQuizQuoteRabbitRaccoonRaceRackRadarRadioRailRainRaiseRallyRampRanchRandomRangeRapidRareRateRatherRavenRawRazorReadyRealReasonRebelRebuildRecallReceiveRecipeRecordRecycleReduceReflectReformRefuseRegionRegretRegularRejectRelaxReleaseReliefRelyRemainRememberRemindRemoveRenderRenewRentReopenRepairRepeatReplaceReportRequireRescueResembleResistResourceResponseResultRetireRetreatReturnReunionRevealReviewRewardRhythmRibRibbonRiceRichRideRidgeRifleRightRigidRingRiotRippleRiskRitualRivalRiverRoadRoastRobotRobustRocketRomanceRoofRookieRoomRoseRotateRoughRoundRouteRoyalRubberRudeRugRuleRunRunwayRuralSadSaddleSadnessSafeSailSaladSalmonSalonSaltSaluteSameSampleSandSatisfySatoshiSauceSausageSaveSayScaleScanScareScatterSceneSchemeSchoolScienceScissorsScorpionScoutScrapScreenScriptScrubSeaSearchSeasonSeatSecondSecretSectionSecuritySeedSeekSegmentSelectSellSeminarSeniorSenseSentenceSeriesServiceSessionSettleSetupSevenShadowShaftShallowShareShedShellSheriffShieldShiftShineShipShiverShockShoeShootShopShortShoulderShoveShrimpShrugShuffleShySiblingSickSideSiegeSightSignSilentSilkSillySilverSimilarSimpleSinceSingSirenSisterSituateSixSizeSkateSketchSkiSkillSkinSkirtSkullSlabSlamSleepSlenderSliceSlideSlightSlimSloganSlotSlowSlushSmallSmartSmileSmokeSmoothSnackSnakeSnapSniffSnowSoapSoccerSocialSockSodaSoftSolarSoldierSolidSolutionSolveSomeoneSongSoonSorrySortSoulSoundSoupSourceSouthSpaceSpareSpatialSpawnSpeakSpecialSpeedSpellSpendSphereSpiceSpiderSpikeSpinSpiritSplitSpoilSponsorSpoonSportSpotSpraySpreadSpringSpySquareSqueezeSquirrelStableStadiumStaffStageStairsStampStandStartStateStaySteakSteelStemStepStereoStickStillStingStockStomachStoneStoolStoryStoveStrategyStreetStrikeStrongStruggleStudentStuffStumbleStyleSubjectSubmitSubwaySuccessSuchSuddenSufferSugarSuggestSuitSummerSunSunnySunsetSuperSupplySupremeSureSurfaceSurgeSurpriseSurroundSurveySuspectSustainSwallowSwampSwapSwarmSwearSweetSwiftSwimSwingSwitchSwordSymbolSymptomSyrupSystemTableTackleTagTailTalentTalkTankTapeTargetTaskTasteTattooTaxiTeachTeamTellTenTenantTennisTentTermTestTextThankThatThemeThenTheoryThereTheyThingThisThoughtThreeThriveThrowThumbThunderTicketTideTigerTiltTimberTimeTinyTipTiredTissueTitleToastTobaccoTodayToddlerToeTogetherToiletTokenTomatoTomorrowToneTongueTonightToolToothTopTopicToppleTorchTornadoTortoiseTossTotalTouristTowardTowerTownToyTrackTradeTrafficTragicTrainTransferTrapTrashTravelTrayTreatTreeTrendTrialTribeTrickTriggerTrimTripTrophyTroubleTruckTrueTrulyTrumpetTrustTruthTryTubeTuitionTumbleTunaTunnelTurkeyTurnTurtleTwelveTwentyTwiceTwinTwistTwoTypeTypicalUglyUmbrellaUnableUnawareUncleUncoverUnderUndoUnfairUnfoldUnhappyUniformUniqueUnitUniverseUnknownUnlockUntilUnusualUnveilUpdateUpgradeUpholdUponUpperUpsetUrbanUrgeUsageUseUsedUsefulUselessUsualUtilityVacantVacuumVagueValidValleyValveVanVanishVaporVariousVastVaultVehicleVelvetVendorVentureVenueVerbVerifyVersionVeryVesselVeteranViableVibrantViciousVictoryVideoViewVillageVintageViolinVirtualVirusVisaVisitVisualVitalVividVocalVoiceVoidVolcanoVolumeVoteVoyageWageWagonWaitWalkWallWalnutWantWarfareWarmWarriorWashWaspWasteWaterWaveWayWealthWeaponWearWeaselWeatherWebWeddingWeekendWeirdWelcomeWestWetWhaleWhatWheatWheelWhenWhereWhipWhisperWideWidthWifeWildWillWinWindowWineWingWinkWinnerWinterWireWisdomWiseWishWitnessWolfWomanWonderWoodWoolWordWorkWorldWorryWorthWrapWreckWrestleWristWriteWrongYardYearYellowYouYoungYouthZebraZeroZoneZoo",pl=null;function I7(t){if(pl==null&&(pl=yz.replace(/([A-Z])/g," $1").toLowerCase().substring(1).split(" "),db.Wordlist.check(t)!=="0x3c8acc1e7b08d8e76f9fda015ef48dc8c710a73cb7e0f77b2c18a9b5a7adde60"))throw pl=null,new Error("BIP39 Wordlist for en (English) FAILED")}var wz=function(t){xz(e,t);function e(){return t.call(this,"en")||this}return e.prototype.getWord=function(r){return I7(this),pl[r]},e.prototype.getWordIndex=function(r){return I7(this),pl.indexOf(r)},e}(db.Wordlist),N7=new wz;hc.langEn=N7;db.Wordlist.register(N7)});var H7=P(vc=>{"use strict";var Az=vc&&vc.__extends||function(){var t=function(e,r){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,i){n.__proto__=i}||function(n,i){for(var a in i)Object.prototype.hasOwnProperty.call(i,a)&&(n[a]=i[a])},t(e,r)};return function(e,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");t(e,r);function n(){this.constructor=e}e.prototype=r===null?Object.create(r):(n.prototype=r.prototype,new n)}}();Object.defineProperty(vc,"__esModule",{value:!0});vc.langEs=void 0;var Mp=Cr(),Bp=fi(),Ez="A/bacoAbdomenAbejaAbiertoAbogadoAbonoAbortoAbrazoAbrirAbueloAbusoAcabarAcademiaAccesoAccio/nAceiteAcelgaAcentoAceptarA/cidoAclararAcne/AcogerAcosoActivoActoActrizActuarAcudirAcuerdoAcusarAdictoAdmitirAdoptarAdornoAduanaAdultoAe/reoAfectarAficio/nAfinarAfirmarA/gilAgitarAgoni/aAgostoAgotarAgregarAgrioAguaAgudoA/guilaAgujaAhogoAhorroAireAislarAjedrezAjenoAjusteAlacra/nAlambreAlarmaAlbaA/lbumAlcaldeAldeaAlegreAlejarAlertaAletaAlfilerAlgaAlgodo/nAliadoAlientoAlivioAlmaAlmejaAlmi/barAltarAltezaAltivoAltoAlturaAlumnoAlzarAmableAmanteAmapolaAmargoAmasarA/mbarA/mbitoAmenoAmigoAmistadAmorAmparoAmplioAnchoAncianoAnclaAndarAnde/nAnemiaA/nguloAnilloA/nimoAni/sAnotarAntenaAntiguoAntojoAnualAnularAnuncioA~adirA~ejoA~oApagarAparatoApetitoApioAplicarApodoAporteApoyoAprenderAprobarApuestaApuroAradoAra~aArarA/rbitroA/rbolArbustoArchivoArcoArderArdillaArduoA/reaA/ridoAriesArmoni/aArne/sAromaArpaArpo/nArregloArrozArrugaArteArtistaAsaAsadoAsaltoAscensoAsegurarAseoAsesorAsientoAsiloAsistirAsnoAsombroA/speroAstillaAstroAstutoAsumirAsuntoAtajoAtaqueAtarAtentoAteoA/ticoAtletaA/tomoAtraerAtrozAtu/nAudazAudioAugeAulaAumentoAusenteAutorAvalAvanceAvaroAveAvellanaAvenaAvestruzAvio/nAvisoAyerAyudaAyunoAzafra/nAzarAzoteAzu/carAzufreAzulBabaBaborBacheBahi/aBaileBajarBalanzaBalco/nBaldeBambu/BancoBandaBa~oBarbaBarcoBarnizBarroBa/sculaBasto/nBasuraBatallaBateri/aBatirBatutaBau/lBazarBebe/BebidaBelloBesarBesoBestiaBichoBienBingoBlancoBloqueBlusaBoaBobinaBoboBocaBocinaBodaBodegaBoinaBolaBoleroBolsaBombaBondadBonitoBonoBonsa/iBordeBorrarBosqueBoteBoti/nBo/vedaBozalBravoBrazoBrechaBreveBrilloBrincoBrisaBrocaBromaBronceBroteBrujaBruscoBrutoBuceoBucleBuenoBueyBufandaBufo/nBu/hoBuitreBultoBurbujaBurlaBurroBuscarButacaBuzo/nCaballoCabezaCabinaCabraCacaoCada/verCadenaCaerCafe/Cai/daCaima/nCajaCajo/nCalCalamarCalcioCaldoCalidadCalleCalmaCalorCalvoCamaCambioCamelloCaminoCampoCa/ncerCandilCanelaCanguroCanicaCantoCa~aCa~o/nCaobaCaosCapazCapita/nCapoteCaptarCapuchaCaraCarbo/nCa/rcelCaretaCargaCari~oCarneCarpetaCarroCartaCasaCascoCaseroCaspaCastorCatorceCatreCaudalCausaCazoCebollaCederCedroCeldaCe/lebreCelosoCe/lulaCementoCenizaCentroCercaCerdoCerezaCeroCerrarCertezaCe/spedCetroChacalChalecoChampu/ChanclaChapaCharlaChicoChisteChivoChoqueChozaChuletaChuparCiclo/nCiegoCieloCienCiertoCifraCigarroCimaCincoCineCintaCipre/sCircoCiruelaCisneCitaCiudadClamorClanClaroClaseClaveClienteClimaCli/nicaCobreCoccio/nCochinoCocinaCocoCo/digoCodoCofreCogerCoheteCoji/nCojoColaColchaColegioColgarColinaCollarColmoColumnaCombateComerComidaCo/modoCompraCondeConejoCongaConocerConsejoContarCopaCopiaCorazo/nCorbataCorchoCordo/nCoronaCorrerCoserCosmosCostaCra/neoCra/terCrearCrecerCrei/doCremaCri/aCrimenCriptaCrisisCromoCro/nicaCroquetaCrudoCruzCuadroCuartoCuatroCuboCubrirCucharaCuelloCuentoCuerdaCuestaCuevaCuidarCulebraCulpaCultoCumbreCumplirCunaCunetaCuotaCupo/nCu/pulaCurarCuriosoCursoCurvaCutisDamaDanzaDarDardoDa/tilDeberDe/bilDe/cadaDecirDedoDefensaDefinirDejarDelfi/nDelgadoDelitoDemoraDensoDentalDeporteDerechoDerrotaDesayunoDeseoDesfileDesnudoDestinoDesvi/oDetalleDetenerDeudaDi/aDiabloDiademaDiamanteDianaDiarioDibujoDictarDienteDietaDiezDifi/cilDignoDilemaDiluirDineroDirectoDirigirDiscoDise~oDisfrazDivaDivinoDobleDoceDolorDomingoDonDonarDoradoDormirDorsoDosDosisDrago/nDrogaDuchaDudaDueloDue~oDulceDu/oDuqueDurarDurezaDuroE/banoEbrioEcharEcoEcuadorEdadEdicio/nEdificioEditorEducarEfectoEficazEjeEjemploElefanteElegirElementoElevarElipseE/liteElixirElogioEludirEmbudoEmitirEmocio/nEmpateEmpe~oEmpleoEmpresaEnanoEncargoEnchufeEnci/aEnemigoEneroEnfadoEnfermoEnga~oEnigmaEnlaceEnormeEnredoEnsayoEnse~arEnteroEntrarEnvaseEnvi/oE/pocaEquipoErizoEscalaEscenaEscolarEscribirEscudoEsenciaEsferaEsfuerzoEspadaEspejoEspi/aEsposaEspumaEsqui/EstarEsteEstiloEstufaEtapaEternoE/ticaEtniaEvadirEvaluarEventoEvitarExactoExamenExcesoExcusaExentoExigirExilioExistirE/xitoExpertoExplicarExponerExtremoFa/bricaFa/bulaFachadaFa/cilFactorFaenaFajaFaldaFalloFalsoFaltarFamaFamiliaFamosoFarao/nFarmaciaFarolFarsaFaseFatigaFaunaFavorFaxFebreroFechaFelizFeoFeriaFerozFe/rtilFervorFesti/nFiableFianzaFiarFibraFiccio/nFichaFideoFiebreFielFieraFiestaFiguraFijarFijoFilaFileteFilialFiltroFinFincaFingirFinitoFirmaFlacoFlautaFlechaFlorFlotaFluirFlujoFlu/orFobiaFocaFogataFogo/nFolioFolletoFondoFormaForroFortunaForzarFosaFotoFracasoFra/gilFranjaFraseFraudeFrei/rFrenoFresaFri/oFritoFrutaFuegoFuenteFuerzaFugaFumarFuncio/nFundaFurgo/nFuriaFusilFu/tbolFuturoGacelaGafasGaitaGajoGalaGaleri/aGalloGambaGanarGanchoGangaGansoGarajeGarzaGasolinaGastarGatoGavila/nGemeloGemirGenGe/neroGenioGenteGeranioGerenteGermenGestoGiganteGimnasioGirarGiroGlaciarGloboGloriaGolGolfoGolosoGolpeGomaGordoGorilaGorraGotaGoteoGozarGradaGra/ficoGranoGrasaGratisGraveGrietaGrilloGripeGrisGritoGrosorGru/aGruesoGrumoGrupoGuanteGuapoGuardiaGuerraGui/aGui~oGuionGuisoGuitarraGusanoGustarHaberHa/bilHablarHacerHachaHadaHallarHamacaHarinaHazHaza~aHebillaHebraHechoHeladoHelioHembraHerirHermanoHe/roeHervirHieloHierroHi/gadoHigieneHijoHimnoHistoriaHocicoHogarHogueraHojaHombreHongoHonorHonraHoraHormigaHornoHostilHoyoHuecoHuelgaHuertaHuesoHuevoHuidaHuirHumanoHu/medoHumildeHumoHundirHuraca/nHurtoIconoIdealIdiomaI/doloIglesiaIglu/IgualIlegalIlusio/nImagenIma/nImitarImparImperioImponerImpulsoIncapazI/ndiceInerteInfielInformeIngenioInicioInmensoInmuneInnatoInsectoInstanteIntere/sI/ntimoIntuirInu/tilInviernoIraIrisIroni/aIslaIsloteJabali/Jabo/nJamo/nJarabeJardi/nJarraJaulaJazmi/nJefeJeringaJineteJornadaJorobaJovenJoyaJuergaJuevesJuezJugadorJugoJugueteJuicioJuncoJunglaJunioJuntarJu/piterJurarJustoJuvenilJuzgarKiloKoalaLabioLacioLacraLadoLadro/nLagartoLa/grimaLagunaLaicoLamerLa/minaLa/mparaLanaLanchaLangostaLanzaLa/pizLargoLarvaLa/stimaLataLa/texLatirLaurelLavarLazoLealLeccio/nLecheLectorLeerLegio/nLegumbreLejanoLenguaLentoLe~aLeo/nLeopardoLesio/nLetalLetraLeveLeyendaLibertadLibroLicorLi/derLidiarLienzoLigaLigeroLimaLi/miteLimo/nLimpioLinceLindoLi/neaLingoteLinoLinternaLi/quidoLisoListaLiteraLitioLitroLlagaLlamaLlantoLlaveLlegarLlenarLlevarLlorarLloverLluviaLoboLocio/nLocoLocuraLo/gicaLogroLombrizLomoLonjaLoteLuchaLucirLugarLujoLunaLunesLupaLustroLutoLuzMacetaMachoMaderaMadreMaduroMaestroMafiaMagiaMagoMai/zMaldadMaletaMallaMaloMama/MamboMamutMancoMandoManejarMangaManiqui/ManjarManoMansoMantaMa~anaMapaMa/quinaMarMarcoMareaMarfilMargenMaridoMa/rmolMarro/nMartesMarzoMasaMa/scaraMasivoMatarMateriaMatizMatrizMa/ximoMayorMazorcaMechaMedallaMedioMe/dulaMejillaMejorMelenaMelo/nMemoriaMenorMensajeMenteMenu/MercadoMerengueMe/ritoMesMeso/nMetaMeterMe/todoMetroMezclaMiedoMielMiembroMigaMilMilagroMilitarMillo/nMimoMinaMineroMi/nimoMinutoMiopeMirarMisaMiseriaMisilMismoMitadMitoMochilaMocio/nModaModeloMohoMojarMoldeMolerMolinoMomentoMomiaMonarcaMonedaMonjaMontoMo~oMoradaMorderMorenoMorirMorroMorsaMortalMoscaMostrarMotivoMoverMo/vilMozoMuchoMudarMuebleMuelaMuerteMuestraMugreMujerMulaMuletaMultaMundoMu~ecaMuralMuroMu/sculoMuseoMusgoMu/sicaMusloNa/carNacio/nNadarNaipeNaranjaNarizNarrarNasalNatalNativoNaturalNa/useaNavalNaveNavidadNecioNe/ctarNegarNegocioNegroNeo/nNervioNetoNeutroNevarNeveraNichoNidoNieblaNietoNi~ezNi~oNi/tidoNivelNoblezaNocheNo/minaNoriaNormaNorteNotaNoticiaNovatoNovelaNovioNubeNucaNu/cleoNudilloNudoNueraNueveNuezNuloNu/meroNutriaOasisObesoObispoObjetoObraObreroObservarObtenerObvioOcaOcasoOce/anoOchentaOchoOcioOcreOctavoOctubreOcultoOcuparOcurrirOdiarOdioOdiseaOesteOfensaOfertaOficioOfrecerOgroOi/doOi/rOjoOlaOleadaOlfatoOlivoOllaOlmoOlorOlvidoOmbligoOndaOnzaOpacoOpcio/nO/peraOpinarOponerOptarO/pticaOpuestoOracio/nOradorOralO/rbitaOrcaOrdenOrejaO/rganoOrgi/aOrgulloOrienteOrigenOrillaOroOrquestaOrugaOsadi/aOscuroOseznoOsoOstraOto~oOtroOvejaO/vuloO/xidoOxi/genoOyenteOzonoPactoPadrePaellaPa/ginaPagoPai/sPa/jaroPalabraPalcoPaletaPa/lidoPalmaPalomaPalparPanPanalPa/nicoPanteraPa~ueloPapa/PapelPapillaPaquetePararParcelaParedParirParoPa/rpadoParquePa/rrafoPartePasarPaseoPasio/nPasoPastaPataPatioPatriaPausaPautaPavoPayasoPeato/nPecadoPeceraPechoPedalPedirPegarPeinePelarPelda~oPeleaPeligroPellejoPeloPelucaPenaPensarPe~o/nPeo/nPeorPepinoPeque~oPeraPerchaPerderPerezaPerfilPericoPerlaPermisoPerroPersonaPesaPescaPe/simoPesta~aPe/taloPetro/leoPezPezu~aPicarPicho/nPiePiedraPiernaPiezaPijamaPilarPilotoPimientaPinoPintorPinzaPi~aPiojoPipaPirataPisarPiscinaPisoPistaPito/nPizcaPlacaPlanPlataPlayaPlazaPleitoPlenoPlomoPlumaPluralPobrePocoPoderPodioPoemaPoesi/aPoetaPolenPolici/aPolloPolvoPomadaPomeloPomoPompaPonerPorcio/nPortalPosadaPoseerPosiblePostePotenciaPotroPozoPradoPrecozPreguntaPremioPrensaPresoPrevioPrimoPri/ncipePrisio/nPrivarProaProbarProcesoProductoProezaProfesorProgramaProlePromesaProntoPropioPro/ximoPruebaPu/blicoPucheroPudorPuebloPuertaPuestoPulgaPulirPulmo/nPulpoPulsoPumaPuntoPu~alPu~oPupaPupilaPure/QuedarQuejaQuemarQuererQuesoQuietoQui/micaQuinceQuitarRa/banoRabiaRaboRacio/nRadicalRai/zRamaRampaRanchoRangoRapazRa/pidoRaptoRasgoRaspaRatoRayoRazaRazo/nReaccio/nRealidadReba~oReboteRecaerRecetaRechazoRecogerRecreoRectoRecursoRedRedondoReducirReflejoReformaRefra/nRefugioRegaloRegirReglaRegresoRehe/nReinoRei/rRejaRelatoRelevoRelieveRellenoRelojRemarRemedioRemoRencorRendirRentaRepartoRepetirReposoReptilResRescateResinaRespetoRestoResumenRetiroRetornoRetratoReunirReve/sRevistaReyRezarRicoRiegoRiendaRiesgoRifaRi/gidoRigorRinco/nRi~o/nRi/oRiquezaRisaRitmoRitoRizoRobleRoceRociarRodarRodeoRodillaRoerRojizoRojoRomeroRomperRonRoncoRondaRopaRoperoRosaRoscaRostroRotarRubi/RuborRudoRuedaRugirRuidoRuinaRuletaRuloRumboRumorRupturaRutaRutinaSa/badoSaberSabioSableSacarSagazSagradoSalaSaldoSaleroSalirSalmo/nSalo/nSalsaSaltoSaludSalvarSambaSancio/nSandi/aSanearSangreSanidadSanoSantoSapoSaqueSardinaSarte/nSastreSata/nSaunaSaxofo/nSeccio/nSecoSecretoSectaSedSeguirSeisSelloSelvaSemanaSemillaSendaSensorSe~alSe~orSepararSepiaSequi/aSerSerieSermo/nServirSesentaSesio/nSetaSetentaSeveroSexoSextoSidraSiestaSieteSigloSignoSi/labaSilbarSilencioSillaSi/mboloSimioSirenaSistemaSitioSituarSobreSocioSodioSolSolapaSoldadoSoledadSo/lidoSoltarSolucio/nSombraSondeoSonidoSonoroSonrisaSopaSoplarSoporteSordoSorpresaSorteoSoste/nSo/tanoSuaveSubirSucesoSudorSuegraSueloSue~oSuerteSufrirSujetoSulta/nSumarSuperarSuplirSuponerSupremoSurSurcoSure~oSurgirSustoSutilTabacoTabiqueTablaTabu/TacoTactoTajoTalarTalcoTalentoTallaTalo/nTama~oTamborTangoTanqueTapaTapeteTapiaTapo/nTaquillaTardeTareaTarifaTarjetaTarotTarroTartaTatuajeTauroTazaTazo/nTeatroTechoTeclaTe/cnicaTejadoTejerTejidoTelaTele/fonoTemaTemorTemploTenazTenderTenerTenisTensoTeori/aTerapiaTercoTe/rminoTernuraTerrorTesisTesoroTestigoTeteraTextoTezTibioTiburo/nTiempoTiendaTierraTiesoTigreTijeraTildeTimbreTi/midoTimoTintaTi/oTi/picoTipoTiraTiro/nTita/nTi/tereTi/tuloTizaToallaTobilloTocarTocinoTodoTogaToldoTomarTonoTontoToparTopeToqueTo/raxToreroTormentaTorneoToroTorpedoTorreTorsoTortugaTosToscoToserTo/xicoTrabajoTractorTraerTra/ficoTragoTrajeTramoTranceTratoTraumaTrazarTre/bolTreguaTreintaTrenTreparTresTribuTrigoTripaTristeTriunfoTrofeoTrompaTroncoTropaTroteTrozoTrucoTruenoTrufaTuberi/aTuboTuertoTumbaTumorTu/nelTu/nicaTurbinaTurismoTurnoTutorUbicarU/lceraUmbralUnidadUnirUniversoUnoUntarU~aUrbanoUrbeUrgenteUrnaUsarUsuarioU/tilUtopi/aUvaVacaVaci/oVacunaVagarVagoVainaVajillaValeVa/lidoValleValorVa/lvulaVampiroVaraVariarVaro/nVasoVecinoVectorVehi/culoVeinteVejezVelaVeleroVelozVenaVencerVendaVenenoVengarVenirVentaVenusVerVeranoVerboVerdeVeredaVerjaVersoVerterVi/aViajeVibrarVicioVi/ctimaVidaVi/deoVidrioViejoViernesVigorVilVillaVinagreVinoVi~edoVioli/nViralVirgoVirtudVisorVi/speraVistaVitaminaViudoVivazViveroVivirVivoVolca/nVolumenVolverVorazVotarVotoVozVueloVulgarYacerYateYeguaYemaYernoYesoYodoYogaYogurZafiroZanjaZapatoZarzaZonaZorroZumoZurdo",q7={},hl=null;function j7(t){return Bp.logger.checkNormalize(),(0,Mp.toUtf8String)(Array.prototype.filter.call((0,Mp.toUtf8Bytes)(t.normalize("NFD").toLowerCase()),function(e){return e>=65&&e<=90||e>=97&&e<=123}))}function Sz(t){var e=[];return Array.prototype.forEach.call((0,Mp.toUtf8Bytes)(t),function(r){r===47?(e.push(204),e.push(129)):r===126?(e.push(110),e.push(204),e.push(131)):e.push(r)}),(0,Mp.toUtf8String)(e)}function J7(t){if(hl==null&&(hl=Ez.replace(/([A-Z])/g," $1").toLowerCase().substring(1).split(" ").map(function(e){return Sz(e)}),hl.forEach(function(e,r){q7[j7(e)]=r}),Bp.Wordlist.check(t)!=="0xf74fb7092aeacdfbf8959557de22098da512207fb9f109cb526994938cf40300"))throw hl=null,new Error("BIP39 Wordlist for es (Spanish) FAILED")}var _z=function(t){Az(e,t);function e(){return t.call(this,"es")||this}return e.prototype.getWord=function(r){return J7(this),hl[r]},e.prototype.getWordIndex=function(r){return J7(this),q7[j7(r)]},e}(Bp.Wordlist),U7=new _z;vc.langEs=U7;Bp.Wordlist.register(U7)});var V7=P(mc=>{"use strict";var Tz=mc&&mc.__extends||function(){var t=function(e,r){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,i){n.__proto__=i}||function(n,i){for(var a in i)Object.prototype.hasOwnProperty.call(i,a)&&(n[a]=i[a])},t(e,r)};return function(e,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");t(e,r);function n(){this.constructor=e}e.prototype=r===null?Object.create(r):(n.prototype=r.prototype,new n)}}();Object.defineProperty(mc,"__esModule",{value:!0});mc.langFr=void 0;var Fp=Cr(),Lp=fi(),kz="AbaisserAbandonAbdiquerAbeilleAbolirAborderAboutirAboyerAbrasifAbreuverAbriterAbrogerAbruptAbsenceAbsoluAbsurdeAbusifAbyssalAcade/mieAcajouAcarienAccablerAccepterAcclamerAccoladeAccrocheAccuserAcerbeAchatAcheterAcidulerAcierAcompteAcque/rirAcronymeActeurActifActuelAdepteAde/quatAdhe/sifAdjectifAdjugerAdmettreAdmirerAdopterAdorerAdoucirAdresseAdroitAdulteAdverbeAe/rerAe/ronefAffaireAffecterAfficheAffreuxAffublerAgacerAgencerAgileAgiterAgraferAgre/ableAgrumeAiderAiguilleAilierAimableAisanceAjouterAjusterAlarmerAlchimieAlerteAlge-breAlgueAlie/nerAlimentAlle/gerAlliageAllouerAllumerAlourdirAlpagaAltesseAlve/oleAmateurAmbiguAmbreAme/nagerAmertumeAmidonAmiralAmorcerAmourAmovibleAmphibieAmpleurAmusantAnalyseAnaphoreAnarchieAnatomieAncienAne/antirAngleAngoisseAnguleuxAnimalAnnexerAnnonceAnnuelAnodinAnomalieAnonymeAnormalAntenneAntidoteAnxieuxApaiserApe/ritifAplanirApologieAppareilAppelerApporterAppuyerAquariumAqueducArbitreArbusteArdeurArdoiseArgentArlequinArmatureArmementArmoireArmureArpenterArracherArriverArroserArsenicArte/rielArticleAspectAsphalteAspirerAssautAsservirAssietteAssocierAssurerAsticotAstreAstuceAtelierAtomeAtriumAtroceAttaqueAttentifAttirerAttraperAubaineAubergeAudaceAudibleAugurerAuroreAutomneAutrucheAvalerAvancerAvariceAvenirAverseAveugleAviateurAvideAvionAviserAvoineAvouerAvrilAxialAxiomeBadgeBafouerBagageBaguetteBaignadeBalancerBalconBaleineBalisageBambinBancaireBandageBanlieueBannie-reBanquierBarbierBarilBaronBarqueBarrageBassinBastionBatailleBateauBatterieBaudrierBavarderBeletteBe/lierBeloteBe/ne/ficeBerceauBergerBerlineBermudaBesaceBesogneBe/tailBeurreBiberonBicycleBiduleBijouBilanBilingueBillardBinaireBiologieBiopsieBiotypeBiscuitBisonBistouriBitumeBizarreBlafardBlagueBlanchirBlessantBlinderBlondBloquerBlousonBobardBobineBoireBoiserBolideBonbonBondirBonheurBonifierBonusBordureBorneBotteBoucleBoueuxBougieBoulonBouquinBourseBoussoleBoutiqueBoxeurBrancheBrasierBraveBrebisBre-cheBreuvageBricolerBrigadeBrillantBriocheBriqueBrochureBroderBronzerBrousseBroyeurBrumeBrusqueBrutalBruyantBuffleBuissonBulletinBureauBurinBustierButinerButoirBuvableBuvetteCabanonCabineCachetteCadeauCadreCafe/ineCaillouCaissonCalculerCalepinCalibreCalmerCalomnieCalvaireCamaradeCame/raCamionCampagneCanalCanetonCanonCantineCanularCapableCaporalCapriceCapsuleCapterCapucheCarabineCarboneCaresserCaribouCarnageCarotteCarreauCartonCascadeCasierCasqueCassureCauserCautionCavalierCaverneCaviarCe/dilleCeintureCe/lesteCelluleCendrierCensurerCentralCercleCe/re/bralCeriseCernerCerveauCesserChagrinChaiseChaleurChambreChanceChapitreCharbonChasseurChatonChaussonChavirerChemiseChenilleChe/quierChercherChevalChienChiffreChignonChime-reChiotChlorureChocolatChoisirChoseChouetteChromeChuteCigareCigogneCimenterCine/maCintrerCirculerCirerCirqueCiterneCitoyenCitronCivilClaironClameurClaquerClasseClavierClientClignerClimatClivageClocheClonageCloporteCobaltCobraCocasseCocotierCoderCodifierCoffreCognerCohe/sionCoifferCoincerCole-reColibriCollineColmaterColonelCombatCome/dieCommandeCompactConcertConduireConfierCongelerConnoterConsonneContactConvexeCopainCopieCorailCorbeauCordageCornicheCorpusCorrectCorte-geCosmiqueCostumeCotonCoudeCoupureCourageCouteauCouvrirCoyoteCrabeCrainteCravateCrayonCre/atureCre/diterCre/meuxCreuserCrevetteCriblerCrierCristalCrite-reCroireCroquerCrotaleCrucialCruelCrypterCubiqueCueillirCuille-reCuisineCuivreCulminerCultiverCumulerCupideCuratifCurseurCyanureCycleCylindreCyniqueDaignerDamierDangerDanseurDauphinDe/battreDe/biterDe/borderDe/briderDe/butantDe/calerDe/cembreDe/chirerDe/ciderDe/clarerDe/corerDe/crireDe/cuplerDe/daleDe/ductifDe/esseDe/fensifDe/filerDe/frayerDe/gagerDe/givrerDe/glutirDe/graferDe/jeunerDe/liceDe/logerDemanderDemeurerDe/molirDe/nicherDe/nouerDentelleDe/nuderDe/partDe/penserDe/phaserDe/placerDe/poserDe/rangerDe/roberDe/sastreDescenteDe/sertDe/signerDe/sobe/irDessinerDestrierDe/tacherDe/testerDe/tourerDe/tresseDevancerDevenirDevinerDevoirDiableDialogueDiamantDicterDiffe/rerDige/rerDigitalDigneDiluerDimancheDiminuerDioxydeDirectifDirigerDiscuterDisposerDissiperDistanceDivertirDiviserDocileDocteurDogmeDoigtDomaineDomicileDompterDonateurDonjonDonnerDopamineDortoirDorureDosageDoseurDossierDotationDouanierDoubleDouceurDouterDoyenDragonDraperDresserDribblerDroitureDuperieDuplexeDurableDurcirDynastieE/blouirE/carterE/charpeE/chelleE/clairerE/clipseE/cloreE/cluseE/coleE/conomieE/corceE/couterE/craserE/cre/merE/crivainE/crouE/cumeE/cureuilE/difierE/duquerEffacerEffectifEffigieEffortEffrayerEffusionE/galiserE/garerE/jecterE/laborerE/largirE/lectronE/le/gantE/le/phantE/le-veE/ligibleE/litismeE/logeE/luciderE/luderEmballerEmbellirEmbryonE/meraudeE/missionEmmenerE/motionE/mouvoirEmpereurEmployerEmporterEmpriseE/mulsionEncadrerEnche-reEnclaveEncocheEndiguerEndosserEndroitEnduireE/nergieEnfanceEnfermerEnfouirEngagerEnginEngloberE/nigmeEnjamberEnjeuEnleverEnnemiEnnuyeuxEnrichirEnrobageEnseigneEntasserEntendreEntierEntourerEntraverE/nume/rerEnvahirEnviableEnvoyerEnzymeE/olienE/paissirE/pargneE/patantE/pauleE/picerieE/pide/mieE/pierE/pilogueE/pineE/pisodeE/pitapheE/poqueE/preuveE/prouverE/puisantE/querreE/quipeE/rigerE/rosionErreurE/ruptionEscalierEspadonEspe-ceEspie-gleEspoirEspritEsquiverEssayerEssenceEssieuEssorerEstimeEstomacEstradeE/tage-reE/talerE/tancheE/tatiqueE/teindreE/tendoirE/ternelE/thanolE/thiqueEthnieE/tirerE/tofferE/toileE/tonnantE/tourdirE/trangeE/troitE/tudeEuphorieE/valuerE/vasionE/ventailE/videnceE/viterE/volutifE/voquerExactExage/rerExaucerExcellerExcitantExclusifExcuseExe/cuterExempleExercerExhalerExhorterExigenceExilerExisterExotiqueExpe/dierExplorerExposerExprimerExquisExtensifExtraireExulterFableFabuleuxFacetteFacileFactureFaiblirFalaiseFameuxFamilleFarceurFarfeluFarineFaroucheFascinerFatalFatigueFauconFautifFaveurFavoriFe/brileFe/conderFe/de/rerFe/linFemmeFe/murFendoirFe/odalFermerFe/roceFerveurFestivalFeuilleFeutreFe/vrierFiascoFicelerFictifFide-leFigureFilatureFiletageFilie-reFilleulFilmerFilouFiltrerFinancerFinirFioleFirmeFissureFixerFlairerFlammeFlasqueFlatteurFle/auFle-cheFleurFlexionFloconFloreFluctuerFluideFluvialFolieFonderieFongibleFontaineForcerForgeronFormulerFortuneFossileFoudreFouge-reFouillerFoulureFourmiFragileFraiseFranchirFrapperFrayeurFre/gateFreinerFrelonFre/mirFre/ne/sieFre-reFriableFrictionFrissonFrivoleFroidFromageFrontalFrotterFruitFugitifFuiteFureurFurieuxFurtifFusionFuturGagnerGalaxieGalerieGambaderGarantirGardienGarnirGarrigueGazelleGazonGe/antGe/latineGe/luleGendarmeGe/ne/ralGe/nieGenouGentilGe/ologieGe/ome-treGe/raniumGermeGestuelGeyserGibierGiclerGirafeGivreGlaceGlaiveGlisserGlobeGloireGlorieuxGolfeurGommeGonflerGorgeGorilleGoudronGouffreGoulotGoupilleGourmandGoutteGraduelGraffitiGraineGrandGrappinGratuitGravirGrenatGriffureGrillerGrimperGrognerGronderGrotteGroupeGrugerGrutierGruye-reGue/pardGuerrierGuideGuimauveGuitareGustatifGymnasteGyrostatHabitudeHachoirHalteHameauHangarHannetonHaricotHarmonieHarponHasardHe/liumHe/matomeHerbeHe/rissonHermineHe/ronHe/siterHeureuxHibernerHibouHilarantHistoireHiverHomardHommageHomoge-neHonneurHonorerHonteuxHordeHorizonHorlogeHormoneHorribleHouleuxHousseHublotHuileuxHumainHumbleHumideHumourHurlerHydromelHygie-neHymneHypnoseIdylleIgnorerIguaneIlliciteIllusionImageImbiberImiterImmenseImmobileImmuableImpactImpe/rialImplorerImposerImprimerImputerIncarnerIncendieIncidentInclinerIncoloreIndexerIndiceInductifIne/ditIneptieInexactInfiniInfligerInformerInfusionInge/rerInhalerInhiberInjecterInjureInnocentInoculerInonderInscrireInsecteInsigneInsoliteInspirerInstinctInsulterIntactIntenseIntimeIntrigueIntuitifInutileInvasionInventerInviterInvoquerIroniqueIrradierIrre/elIrriterIsolerIvoireIvresseJaguarJaillirJambeJanvierJardinJaugerJauneJavelotJetableJetonJeudiJeunesseJoindreJoncherJonglerJoueurJouissifJournalJovialJoyauJoyeuxJubilerJugementJuniorJuponJuristeJusticeJuteuxJuve/nileKayakKimonoKiosqueLabelLabialLabourerLace/rerLactoseLaguneLaineLaisserLaitierLambeauLamelleLampeLanceurLangageLanterneLapinLargeurLarmeLaurierLavaboLavoirLectureLe/galLe/gerLe/gumeLessiveLettreLevierLexiqueLe/zardLiasseLibe/rerLibreLicenceLicorneLie-geLie-vreLigatureLigoterLigueLimerLimiteLimonadeLimpideLine/aireLingotLionceauLiquideLisie-reListerLithiumLitigeLittoralLivreurLogiqueLointainLoisirLombricLoterieLouerLourdLoutreLouveLoyalLubieLucideLucratifLueurLugubreLuisantLumie-reLunaireLundiLuronLutterLuxueuxMachineMagasinMagentaMagiqueMaigreMaillonMaintienMairieMaisonMajorerMalaxerMale/ficeMalheurMaliceMalletteMammouthMandaterManiableManquantManteauManuelMarathonMarbreMarchandMardiMaritimeMarqueurMarronMartelerMascotteMassifMate/rielMatie-reMatraqueMaudireMaussadeMauveMaximalMe/chantMe/connuMe/dailleMe/decinMe/diterMe/duseMeilleurMe/langeMe/lodieMembreMe/moireMenacerMenerMenhirMensongeMentorMercrediMe/riteMerleMessagerMesureMe/talMe/te/oreMe/thodeMe/tierMeubleMiaulerMicrobeMietteMignonMigrerMilieuMillionMimiqueMinceMine/ralMinimalMinorerMinuteMiracleMiroiterMissileMixteMobileModerneMoelleuxMondialMoniteurMonnaieMonotoneMonstreMontagneMonumentMoqueurMorceauMorsureMortierMoteurMotifMoucheMoufleMoulinMoussonMoutonMouvantMultipleMunitionMurailleMure-neMurmureMuscleMuse/umMusicienMutationMuterMutuelMyriadeMyrtilleMyste-reMythiqueNageurNappeNarquoisNarrerNatationNationNatureNaufrageNautiqueNavireNe/buleuxNectarNe/fasteNe/gationNe/gligerNe/gocierNeigeNerveuxNettoyerNeuroneNeutronNeveuNicheNickelNitrateNiveauNobleNocifNocturneNoirceurNoisetteNomadeNombreuxNommerNormatifNotableNotifierNotoireNourrirNouveauNovateurNovembreNoviceNuageNuancerNuireNuisibleNume/roNuptialNuqueNutritifObe/irObjectifObligerObscurObserverObstacleObtenirObturerOccasionOccuperOce/anOctobreOctroyerOctuplerOculaireOdeurOdorantOffenserOfficierOffrirOgiveOiseauOisillonOlfactifOlivierOmbrageOmettreOnctueuxOndulerOne/reuxOniriqueOpaleOpaqueOpe/rerOpinionOpportunOpprimerOpterOptiqueOrageuxOrangeOrbiteOrdonnerOreilleOrganeOrgueilOrificeOrnementOrqueOrtieOscillerOsmoseOssatureOtarieOuraganOursonOutilOutragerOuvrageOvationOxydeOxyge-neOzonePaisiblePalacePalmare-sPalourdePalperPanachePandaPangolinPaniquerPanneauPanoramaPantalonPapayePapierPapoterPapyrusParadoxeParcelleParesseParfumerParlerParoleParrainParsemerPartagerParureParvenirPassionPaste-quePaternelPatiencePatronPavillonPavoiserPayerPaysagePeignePeintrePelagePe/licanPellePelousePeluchePendulePe/ne/trerPe/niblePensifPe/nuriePe/pitePe/plumPerdrixPerforerPe/riodePermuterPerplexePersilPertePeserPe/talePetitPe/trirPeuplePharaonPhobiePhoquePhotonPhrasePhysiquePianoPicturalPie-cePierrePieuvrePilotePinceauPipettePiquerPiroguePiscinePistonPivoterPixelPizzaPlacardPlafondPlaisirPlanerPlaquePlastronPlateauPleurerPlexusPliagePlombPlongerPluiePlumagePochettePoe/siePoe-tePointePoirierPoissonPoivrePolairePolicierPollenPolygonePommadePompierPonctuelPonde/rerPoneyPortiquePositionPosse/derPosturePotagerPoteauPotionPoucePoulainPoumonPourprePoussinPouvoirPrairiePratiquePre/cieuxPre/direPre/fixePre/ludePre/nomPre/sencePre/textePre/voirPrimitifPrincePrisonPriverProble-meProce/derProdigeProfondProgre-sProieProjeterProloguePromenerPropreProspe-reProte/gerProuesseProverbePrudencePruneauPsychosePublicPuceronPuiserPulpePulsarPunaisePunitifPupitrePurifierPuzzlePyramideQuasarQuerelleQuestionQuie/tudeQuitterQuotientRacineRaconterRadieuxRagondinRaideurRaisinRalentirRallongeRamasserRapideRasageRatisserRavagerRavinRayonnerRe/actifRe/agirRe/aliserRe/animerRecevoirRe/citerRe/clamerRe/colterRecruterReculerRecyclerRe/digerRedouterRefaireRe/flexeRe/formerRefrainRefugeRe/galienRe/gionRe/glageRe/gulierRe/ite/rerRejeterRejouerRelatifReleverReliefRemarqueReme-deRemiseRemonterRemplirRemuerRenardRenfortReniflerRenoncerRentrerRenvoiReplierReporterRepriseReptileRequinRe/serveRe/sineuxRe/soudreRespectResterRe/sultatRe/tablirRetenirRe/ticuleRetomberRetracerRe/unionRe/ussirRevancheRevivreRe/volteRe/vulsifRichesseRideauRieurRigideRigolerRincerRiposterRisibleRisqueRituelRivalRivie-reRocheuxRomanceRompreRonceRondinRoseauRosierRotatifRotorRotuleRougeRouilleRouleauRoutineRoyaumeRubanRubisRucheRuelleRugueuxRuinerRuisseauRuserRustiqueRythmeSablerSaboterSabreSacocheSafariSagesseSaisirSaladeSaliveSalonSaluerSamediSanctionSanglierSarcasmeSardineSaturerSaugrenuSaumonSauterSauvageSavantSavonnerScalpelScandaleSce/le/ratSce/narioSceptreSche/maScienceScinderScoreScrutinSculpterSe/anceSe/cableSe/cherSecouerSe/cre/terSe/datifSe/duireSeigneurSe/jourSe/lectifSemaineSemblerSemenceSe/minalSe/nateurSensibleSentenceSe/parerSe/quenceSereinSergentSe/rieuxSerrureSe/rumServiceSe/sameSe/virSevrageSextupleSide/ralSie-cleSie/gerSifflerSigleSignalSilenceSiliciumSimpleSince-reSinistreSiphonSiropSismiqueSituerSkierSocialSocleSodiumSoigneuxSoldatSoleilSolitudeSolubleSombreSommeilSomnolerSondeSongeurSonnetteSonoreSorcierSortirSosieSottiseSoucieuxSoudureSouffleSouleverSoupapeSourceSoutirerSouvenirSpacieuxSpatialSpe/cialSphe-reSpiralStableStationSternumStimulusStipulerStrictStudieuxStupeurStylisteSublimeSubstratSubtilSubvenirSucce-sSucreSuffixeSugge/rerSuiveurSulfateSuperbeSupplierSurfaceSuricateSurmenerSurpriseSursautSurvieSuspectSyllabeSymboleSyme/trieSynapseSyntaxeSyste-meTabacTablierTactileTaillerTalentTalismanTalonnerTambourTamiserTangibleTapisTaquinerTarderTarifTartineTasseTatamiTatouageTaupeTaureauTaxerTe/moinTemporelTenailleTendreTeneurTenirTensionTerminerTerneTerribleTe/tineTexteThe-meThe/orieThe/rapieThoraxTibiaTie-deTimideTirelireTiroirTissuTitaneTitreTituberTobogganTole/rantTomateToniqueTonneauToponymeTorcheTordreTornadeTorpilleTorrentTorseTortueTotemToucherTournageTousserToxineTractionTraficTragiqueTrahirTrainTrancherTravailTre-fleTremperTre/sorTreuilTriageTribunalTricoterTrilogieTriompheTriplerTriturerTrivialTromboneTroncTropicalTroupeauTuileTulipeTumulteTunnelTurbineTuteurTutoyerTuyauTympanTyphonTypiqueTyranUbuesqueUltimeUltrasonUnanimeUnifierUnionUniqueUnitaireUniversUraniumUrbainUrticantUsageUsineUsuelUsureUtileUtopieVacarmeVaccinVagabondVagueVaillantVaincreVaisseauValableValiseVallonValveVampireVanilleVapeurVarierVaseuxVassalVasteVecteurVedetteVe/ge/talVe/hiculeVeinardVe/loceVendrediVe/ne/rerVengerVenimeuxVentouseVerdureVe/rinVernirVerrouVerserVertuVestonVe/te/ranVe/tusteVexantVexerViaducViandeVictoireVidangeVide/oVignetteVigueurVilainVillageVinaigreViolonVipe-reVirementVirtuoseVirusVisageViseurVisionVisqueuxVisuelVitalVitesseViticoleVitrineVivaceVivipareVocationVoguerVoileVoisinVoitureVolailleVolcanVoltigerVolumeVoraceVortexVoterVouloirVoyageVoyelleWagonXe/nonYachtZe-breZe/nithZesteZoologie",vl=null,G7={};function X7(t){return Lp.logger.checkNormalize(),(0,Fp.toUtf8String)(Array.prototype.filter.call((0,Fp.toUtf8Bytes)(t.normalize("NFD").toLowerCase()),function(e){return e>=65&&e<=90||e>=97&&e<=123}))}function Cz(t){var e=[];return Array.prototype.forEach.call((0,Fp.toUtf8Bytes)(t),function(r){r===47?(e.push(204),e.push(129)):r===45?(e.push(204),e.push(128)):e.push(r)}),(0,Fp.toUtf8String)(e)}function z7(t){if(vl==null&&(vl=kz.replace(/([A-Z])/g," $1").toLowerCase().substring(1).split(" ").map(function(e){return Cz(e)}),vl.forEach(function(e,r){G7[X7(e)]=r}),Lp.Wordlist.check(t)!=="0x51deb7ae009149dc61a6bd18a918eb7ac78d2775726c68e598b92d002519b045"))throw vl=null,new Error("BIP39 Wordlist for fr (French) FAILED")}var Oz=function(t){Tz(e,t);function e(){return t.call(this,"fr")||this}return e.prototype.getWord=function(r){return z7(this),vl[r]},e.prototype.getWordIndex=function(r){return z7(this),G7[X7(r)]},e}(Lp.Wordlist),K7=new Oz;mc.langFr=K7;Lp.Wordlist.register(K7)});var Y7=P(bc=>{"use strict";var Pz=bc&&bc.__extends||function(){var t=function(e,r){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,i){n.__proto__=i}||function(n,i){for(var a in i)Object.prototype.hasOwnProperty.call(i,a)&&(n[a]=i[a])},t(e,r)};return function(e,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");t(e,r);function n(){this.constructor=e}e.prototype=r===null?Object.create(r):(n.prototype=r.prototype,new n)}}();Object.defineProperty(bc,"__esModule",{value:!0});bc.langJa=void 0;var Mz=De(),nn=Cr(),Rp=fi(),Bz=["AQRASRAGBAGUAIRAHBAghAURAdBAdcAnoAMEAFBAFCBKFBQRBSFBCXBCDBCHBGFBEQBpBBpQBIkBHNBeOBgFBVCBhBBhNBmOBmRBiHBiFBUFBZDBvFBsXBkFBlcBjYBwDBMBBTBBTRBWBBWXXaQXaRXQWXSRXCFXYBXpHXOQXHRXhRXuRXmXXbRXlXXwDXTRXrCXWQXWGaBWaKcaYgasFadQalmaMBacAKaRKKBKKXKKjKQRKDRKCYKCRKIDKeVKHcKlXKjHKrYNAHNBWNaRNKcNIBNIONmXNsXNdXNnBNMBNRBNrXNWDNWMNFOQABQAHQBrQXBQXFQaRQKXQKDQKOQKFQNBQNDQQgQCXQCDQGBQGDQGdQYXQpBQpQQpHQLXQHuQgBQhBQhCQuFQmXQiDQUFQZDQsFQdRQkHQbRQlOQlmQPDQjDQwXQMBQMDQcFQTBQTHQrDDXQDNFDGBDGQDGRDpFDhFDmXDZXDbRDMYDRdDTRDrXSAhSBCSBrSGQSEQSHBSVRShYShkSyQSuFSiBSdcSoESocSlmSMBSFBSFKSFNSFdSFcCByCaRCKcCSBCSRCCrCGbCEHCYXCpBCpQCIBCIHCeNCgBCgFCVECVcCmkCmwCZXCZFCdRClOClmClFCjDCjdCnXCwBCwXCcRCFQCFjGXhGNhGDEGDMGCDGCHGIFGgBGVXGVEGVRGmXGsXGdYGoSGbRGnXGwXGwDGWRGFNGFLGFOGFdGFkEABEBDEBFEXOEaBEKSENBENDEYXEIgEIkEgBEgQEgHEhFEudEuFEiBEiHEiFEZDEvBEsXEsFEdXEdREkFEbBEbRElFEPCEfkEFNYAEYAhYBNYQdYDXYSRYCEYYoYgQYgRYuRYmCYZTYdBYbEYlXYjQYRbYWRpKXpQopQnpSFpCXpIBpISphNpdBpdRpbRpcZpFBpFNpFDpFopFrLADLBuLXQLXcLaFLCXLEhLpBLpFLHXLeVLhILdHLdRLoDLbRLrXIABIBQIBCIBsIBoIBMIBRIXaIaRIKYIKRINBINuICDIGBIIDIIkIgRIxFIyQIiHIdRIbYIbRIlHIwRIMYIcRIRVITRIFBIFNIFQOABOAFOBQOaFONBONMOQFOSFOCDOGBOEQOpBOLXOIBOIFOgQOgFOyQOycOmXOsXOdIOkHOMEOMkOWWHBNHXNHXWHNXHDuHDRHSuHSRHHoHhkHmRHdRHkQHlcHlRHwBHWcgAEgAggAkgBNgBQgBEgXOgYcgLXgHjgyQgiBgsFgdagMYgWSgFQgFEVBTVXEVKBVKNVKDVKYVKRVNBVNYVDBVDxVSBVSRVCjVGNVLXVIFVhBVhcVsXVdRVbRVlRhBYhKYhDYhGShxWhmNhdahdkhbRhjohMXhTRxAXxXSxKBxNBxEQxeNxeQxhXxsFxdbxlHxjcxFBxFNxFQxFOxFoyNYyYoybcyMYuBQuBRuBruDMuCouHBudQukkuoBulVuMXuFEmCYmCRmpRmeDmiMmjdmTFmFQiADiBOiaRiKRiNBiNRiSFiGkiGFiERipRiLFiIFihYibHijBijEiMXiWBiFBiFCUBQUXFUaRUNDUNcUNRUNFUDBUSHUCDUGBUGFUEqULNULoUIRUeEUeYUgBUhFUuRUiFUsXUdFUkHUbBUjSUjYUwXUMDUcHURdUTBUrBUrXUrQZAFZXZZaRZKFZNBZQFZCXZGBZYdZpBZLDZIFZHXZHNZeQZVRZVFZmXZiBZvFZdFZkFZbHZbFZwXZcCZcRZRBvBQvBGvBLvBWvCovMYsAFsBDsaRsKFsNFsDrsSHsSFsCXsCRsEBsEHsEfspBsLBsLDsIgsIRseGsbRsFBsFQsFSdNBdSRdCVdGHdYDdHcdVbdySduDdsXdlRdwXdWYdWcdWRkBMkXOkaRkNIkNFkSFkCFkYBkpRkeNkgBkhVkmXksFklVkMBkWDkFNoBNoaQoaFoNBoNXoNaoNEoSRoEroYXoYCoYbopRopFomXojkowXorFbBEbEIbdBbjYlaRlDElMXlFDjKjjSRjGBjYBjYkjpRjLXjIBjOFjeVjbRjwBnXQnSHnpFnLXnINnMBnTRwXBwXNwXYwNFwQFwSBwGFwLXwLDweNwgBwuHwjDwnXMBXMpFMIBMeNMTHcaQcNBcDHcSFcCXcpBcLXcLDcgFcuFcnXcwXccDcTQcrFTQErXNrCHrpFrgFrbFrTHrFcWNYWNbWEHWMXWTR","ABGHABIJAEAVAYJQALZJAIaRAHNXAHdcAHbRAZJMAZJRAZTRAdVJAklmAbcNAjdRAMnRAMWYAWpRAWgRAFgBAFhBAFdcBNJBBNJDBQKBBQhcBQlmBDEJBYJkBYJTBpNBBpJFBIJBBIJDBIcABOKXBOEJBOVJBOiJBOZJBepBBeLXBeIFBegBBgGJBVJXBuocBiJRBUJQBlXVBlITBwNFBMYVBcqXBTlmBWNFBWiJBWnRBFGHBFwXXKGJXNJBXNZJXDTTXSHSXSVRXSlHXCJDXGQJXEhXXYQJXYbRXOfXXeNcXVJFXhQJXhEJXdTRXjdXXMhBXcQTXRGBXTEBXTnQXFCXXFOFXFgFaBaFaBNJaBCJaBpBaBwXaNJKaNJDaQIBaDpRaEPDaHMFamDJalEJaMZJaFaFaFNBaFQJaFLDaFVHKBCYKBEBKBHDKXaFKXGdKXEJKXpHKXIBKXZDKXwXKKwLKNacKNYJKNJoKNWcKDGdKDTRKChXKGaRKGhBKGbRKEBTKEaRKEPTKLMDKLWRKOHDKVJcKdBcKlIBKlOPKFSBKFEPKFpFNBNJNJBQNBGHNBEPNBHXNBgFNBVXNBZDNBsXNBwXNNaRNNJDNNJENNJkNDCJNDVDNGJRNJiDNZJNNsCJNJFNNFSBNFCXNFEPNFLXNFIFQJBFQCaRQJEQQLJDQLJFQIaRQOqXQHaFQHHQQVJXQVJDQhNJQmEIQZJFQsJXQJrFQWbRDJABDBYJDXNFDXCXDXLXDXZDDXsJDQqXDSJFDJCXDEPkDEqXDYmQDpSJDOCkDOGQDHEIDVJDDuDuDWEBDJFgSBNDSBSFSBGHSBIBSBTQSKVYSJQNSJQiSJCXSEqXSJYVSIiJSOMYSHAHSHaQSeCFSepQSegBSHdHSHrFShSJSJuHSJUFSkNRSrSrSWEBSFaHSJFQSFCXSFGDSFYXSFODSFgBSFVXSFhBSFxFSFkFSFbBSFMFCADdCJXBCXaFCXKFCXNFCXCXCXGBCXEJCXYBCXLDCXIBCXOPCXHXCXgBCXhBCXiBCXlDCXcHCJNBCJNFCDCJCDGBCDVXCDhBCDiDCDJdCCmNCpJFCIaRCOqXCHCHCHZJCViJCuCuCmddCJiFCdNBCdHhClEJCnUJCreSCWlgCWTRCFBFCFNBCFYBCFVFCFhFCFdSCFTBCFWDGBNBGBQFGJBCGBEqGBpBGBgQGNBEGNJYGNkOGNJRGDUFGJpQGHaBGJeNGJeEGVBlGVKjGiJDGvJHGsVJGkEBGMIJGWjNGFBFGFCXGFGBGFYXGFpBGFMFEASJEAWpEJNFECJVEIXSEIQJEOqXEOcFEeNcEHEJEHlFEJgFEhlmEmDJEmZJEiMBEUqXEoSREPBFEPXFEPKFEPSFEPEFEPpFEPLXEPIBEJPdEPcFEPTBEJnXEqlHEMpREFCXEFODEFcFYASJYJAFYBaBYBVXYXpFYDhBYCJBYJGFYYbRYeNcYJeVYiIJYZJcYvJgYvJRYJsXYsJFYMYMYreVpBNHpBEJpBwXpQxFpYEJpeNDpJeDpeSFpeCHpHUJpHbBpHcHpmUJpiiJpUJrpsJuplITpFaBpFQqpFGBpFEfpFYBpFpBpFLJpFIDpFgBpFVXpFyQpFuFpFlFpFjDpFnXpFwXpJFMpFTBLXCJLXEFLXhFLXUJLXbFLalmLNJBLSJQLCLCLGJBLLDJLHaFLeNFLeSHLeCXLepFLhaRLZsJLsJDLsJrLocaLlLlLMdbLFNBLFSBLFEHLFkFIBBFIBXFIBaQIBKXIBSFIBpHIBLXIBgBIBhBIBuHIBmXIBiFIBZXIBvFIBbFIBjQIBwXIBWFIKTRIQUJIDGFICjQIYSRIINXIJeCIVaRImEkIZJFIvJRIsJXIdCJIJoRIbBQIjYBIcqXITFVIreVIFKFIFSFIFCJIFGFIFLDIFIBIJFOIFgBIFVXIJFhIFxFIFmXIFdHIFbBIJFrIJFWOBGBOQfXOOKjOUqXOfXBOqXEOcqXORVJOFIBOFlDHBIOHXiFHNTRHCJXHIaRHHJDHHEJHVbRHZJYHbIBHRsJHRkDHWlmgBKFgBSBgBCDgBGHgBpBgBIBgBVJgBuBgBvFgKDTgQVXgDUJgGSJgOqXgmUMgZIJgTUJgWIEgFBFgFNBgFDJgFSFgFGBgFYXgJFOgFgQgFVXgFhBgFbHgJFWVJABVQKcVDgFVOfXVeDFVhaRVmGdViJYVMaRVFNHhBNDhBCXhBEqhBpFhBLXhNJBhSJRheVXhhKEhxlmhZIJhdBQhkIJhbMNhMUJhMZJxNJgxQUJxDEkxDdFxSJRxplmxeSBxeCXxeGFxeYXxepQxegBxWVcxFEQxFLXxFIBxFgBxFxDxFZtxFdcxFbBxFwXyDJXyDlcuASJuDJpuDIBuCpJuGSJuIJFueEFuZIJusJXudWEuoIBuWGJuFBcuFKEuFNFuFQFuFDJuFGJuFVJuFUtuFdHuFTBmBYJmNJYmQhkmLJDmLJomIdXmiJYmvJRmsJRmklmmMBymMuCmclmmcnQiJABiJBNiJBDiBSFiBCJiBEFiBYBiBpFiBLXiBTHiJNciDEfiCZJiECJiJEqiOkHiHKFieNDiHJQieQcieDHieSFieCXieGFieEFieIHiegFihUJixNoioNXiFaBiFKFiFNDiFEPiFYXitFOitFHiFgBiFVEiFmXiFitiFbBiFMFiFrFUCXQUIoQUIJcUHQJUeCEUHwXUUJDUUqXUdWcUcqXUrnQUFNDUFSHUFCFUFEfUFLXUtFOZBXOZXSBZXpFZXVXZEQJZEJkZpDJZOqXZeNHZeCDZUqXZFBQZFEHZFLXvBAFvBKFvBCXvBEPvBpHvBIDvBgFvBuHvQNJvFNFvFGBvFIBvJFcsXCDsXLXsXsXsXlFsXcHsQqXsJQFsEqXseIFsFEHsFjDdBxOdNpRdNJRdEJbdpJRdhZJdnSJdrjNdFNJdFQHdFhNkNJDkYaRkHNRkHSRkVbRkuMRkjSJkcqDoSJFoEiJoYZJoOfXohEBoMGQocqXbBAFbBXFbBaFbBNDbBGBbBLXbBTBbBWDbGJYbIJHbFQqbFpQlDgQlOrFlVJRjGEBjZJRnXvJnXbBnEfHnOPDngJRnxfXnUJWwXEJwNpJwDpBwEfXwrEBMDCJMDGHMDIJMLJDcQGDcQpHcqXccqNFcqCXcFCJRBSBRBGBRBEJRBpQTBNFTBQJTBpBTBVXTFABTFSBTFCFTFGBTFMDrXCJrXLDrDNJrEfHrFQJrFitWNjdWNTR","AKLJMANOPFASNJIAEJWXAYJNRAIIbRAIcdaAeEfDAgidRAdjNYAMYEJAMIbRAFNJBAFpJFBBIJYBDZJFBSiJhBGdEBBEJfXBEJqXBEJWRBpaUJBLXrXBIYJMBOcfXBeEfFBestXBjNJRBcDJOBFEqXXNvJRXDMBhXCJNYXOAWpXONJWXHDEBXeIaRXhYJDXZJSJXMDJOXcASJXFVJXaBQqXaBZJFasXdQaFSJQaFEfXaFpJHaFOqXKBNSRKXvJBKQJhXKEJQJKEJGFKINJBKIJjNKgJNSKVElmKVhEBKiJGFKlBgJKjnUJKwsJYKMFIJKFNJDKFIJFKFOfXNJBSFNJBCXNBpJFNJBvQNJBMBNJLJXNJOqXNJeCXNJeGFNdsJCNbTKFNwXUJQNFEPQDiJcQDMSJQSFpBQGMQJQJeOcQyCJEQUJEBQJFBrQFEJqDXDJFDJXpBDJXIMDGiJhDIJGRDJeYcDHrDJDVXgFDkAWpDkIgRDjDEqDMvJRDJFNFDJFIBSKclmSJQOFSJQVHSJQjDSJGJBSJGJFSECJoSHEJqSJHTBSJVJDSViJYSZJNBSJsJDSFSJFSFEfXSJFLXCBUJVCJXSBCJXpBCXVJXCJXsXCJXdFCJNJHCLIJgCHiJFCVNJMChCJhCUHEJCsJTRCJdYcCoQJCCFEfXCFIJgCFUJxCFstFGJBaQGJBIDGQJqXGYJNRGJHKFGeQqDGHEJFGJeLXGHIiJGHdBlGUJEBGkIJTGFQPDGJFEqEAGegEJIJBEJVJXEhQJTEiJNcEJZJFEJoEqEjDEqEPDsXEPGJBEPOqXEPeQFEfDiDEJfEFEfepQEfMiJEqXNBEqDIDEqeSFEqVJXEMvJRYXNJDYXEJHYKVJcYYJEBYJeEcYJUqXYFpJFYFstXpAZJMpBSJFpNBNFpeQPDpHLJDpHIJFpHgJFpeitFpHZJFpJFADpFSJFpJFCJpFOqXpFitBpJFZJLXIJFLIJgRLVNJWLVHJMLwNpJLFGJBLFLJDLFOqXLJFUJIBDJXIBGJBIJBYQIJBIBIBOqXIBcqDIEGJFILNJTIIJEBIOiJhIJeNBIJeIBIhiJIIWoTRIJFAHIJFpBIJFuHIFUtFIJFTHOSBYJOEcqXOHEJqOvBpFOkVJrObBVJOncqDOcNJkHhNJRHuHJuHdMhBgBUqXgBsJXgONJBgHNJDgHHJQgJeitgHsJXgJyNagyDJBgZJDrgsVJQgkEJNgkjSJgJFAHgFCJDgFZtMVJXNFVXQfXVJXDJVXoQJVQVJQVDEfXVDvJHVEqNFVeQfXVHpJFVHxfXVVJSRVVmaRVlIJOhCXVJhHjYkhxCJVhWVUJhWiJcxBNJIxeEqDxfXBFxcFEPxFSJFxFYJXyBDQJydaUJyFOPDuYCJYuLvJRuHLJXuZJLDuFOPDuFZJHuFcqXmKHJdmCQJcmOsVJiJAGFitLCFieOfXiestXiZJMEikNJQirXzFiFQqXiFIJFiFZJFiFvtFUHpJFUteIcUteOcUVCJkUhdHcUbEJEUJqXQUMNJhURjYkUFitFZDGJHZJIxDZJVJXZJFDJZJFpQvBNJBvBSJFvJxBrseQqDsVFVJdFLJDkEJNBkmNJYkFLJDoQJOPoGsJRoEAHBoEJfFbBQqDbBZJHbFVJXlFIJBjYIrXjeitcjjCEBjWMNBwXQfXwXOaFwDsJXwCJTRwrCZJMDNJQcDDJFcqDOPRYiJFTBsJXTQIJBTFEfXTFLJDrXEJFrEJXMrFZJFWEJdEWYTlm","ABCDEFACNJTRAMBDJdAcNJVXBLNJEBXSIdWRXErNJkXYDJMBXZJCJaXMNJaYKKVJKcKDEJqXKDcNJhKVJrNYKbgJVXKFVJSBNBYBwDNJeQfXNJeEqXNhGJWENJFiJRQlIJbEQJfXxDQqXcfXQFNDEJQFwXUJDYcnUJDJIBgQDIUJTRDJFEqDSJQSJFSJQIJFSOPeZtSJFZJHCJXQfXCTDEqFGJBSJFGJBOfXGJBcqXGJHNJDGJRLiJEJfXEqEJFEJPEFpBEJYJBZJFYBwXUJYiJMEBYJZJyTYTONJXpQMFXFpeGIDdpJFstXpJFcPDLBVSJRLHQJqXLJFZJFIJBNJDIJBUqXIBkFDJIJEJPTIYJGWRIJeQPDIJeEfHIJFsJXOqGDSFHXEJqXgJCsJCgGQJqXgdQYJEgFMFNBgJFcqDVJwXUJVJFZJchIgJCCxOEJqXxOwXUJyDJBVRuscisciJBiJBieUtqXiJFDJkiFsJXQUGEZJcUJFsJXZtXIrXZDZJDrZJFNJDZJFstXvJFQqXvJFCJEsJXQJqkhkNGBbDJdTRbYJMEBlDwXUJMEFiJFcfXNJDRcNJWMTBLJXC","BraFUtHBFSJFdbNBLJXVJQoYJNEBSJBEJfHSJHwXUJCJdAZJMGjaFVJXEJPNJBlEJfFiJFpFbFEJqIJBVJCrIBdHiJhOPFChvJVJZJNJWxGFNIFLueIBQJqUHEJfUFstOZJDrlXEASJRlXVJXSFwVJNJWD","QJEJNNJDQJEJIBSFQJEJxegBQJEJfHEPSJBmXEJFSJCDEJqXLXNJFQqXIcQsFNJFIFEJqXUJgFsJXIJBUJEJfHNFvJxEqXNJnXUJFQqD","IJBEJqXZJ"],Fz="~~AzB~X~a~KN~Q~D~S~C~G~E~Y~p~L~I~O~eH~g~V~hxyumi~~U~~Z~~v~~s~~dkoblPjfnqwMcRTr~W~~~F~~~~~Jt",Rt=null;function Z7(t){return(0,Mz.hexlify)((0,nn.toUtf8Bytes)(t))}var Lz="0xe3818de38284e3818f",Rz="0xe3818de38283e3818f";function Q7(t){if(Rt!==null)return;Rt=[];var e={};e[(0,nn.toUtf8String)([227,130,154])]=!1,e[(0,nn.toUtf8String)([227,130,153])]=!1,e[(0,nn.toUtf8String)([227,130,133])]=(0,nn.toUtf8String)([227,130,134]),e[(0,nn.toUtf8String)([227,129,163])]=(0,nn.toUtf8String)([227,129,164]),e[(0,nn.toUtf8String)([227,130,131])]=(0,nn.toUtf8String)([227,130,132]),e[(0,nn.toUtf8String)([227,130,135])]=(0,nn.toUtf8String)([227,130,136]);function r(m){for(var w="",T=0;Tw?1:0}for(var i=3;i<=9;i++)for(var a=Bz[i-3],o=0;o{"use strict";var Nz=gc&&gc.__extends||function(){var t=function(e,r){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,i){n.__proto__=i}||function(n,i){for(var a in i)Object.prototype.hasOwnProperty.call(i,a)&&(n[a]=i[a])},t(e,r)};return function(e,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");t(e,r);function n(){this.constructor=e}e.prototype=r===null?Object.create(r):(n.prototype=r.prototype,new n)}}();Object.defineProperty(gc,"__esModule",{value:!0});gc.langKo=void 0;var Dz=Cr(),pb=fi(),Jz=["OYAa","ATAZoATBl3ATCTrATCl8ATDloATGg3ATHT8ATJT8ATJl3ATLlvATLn4ATMT8ATMX8ATMboATMgoAToLbAToMTATrHgATvHnAT3AnAT3JbAT3MTAT8DbAT8JTAT8LmAT8MYAT8MbAT#LnAUHT8AUHZvAUJXrAUJX8AULnrAXJnvAXLUoAXLgvAXMn6AXRg3AXrMbAX3JTAX3QbAYLn3AZLgvAZrSUAZvAcAZ8AaAZ8AbAZ8AnAZ8HnAZ8LgAZ8MYAZ8MgAZ8OnAaAboAaDTrAaFTrAaJTrAaJboAaLVoAaMXvAaOl8AaSeoAbAUoAbAg8AbAl4AbGnrAbMT8AbMXrAbMn4AbQb8AbSV8AbvRlAb8AUAb8AnAb8HgAb8JTAb8NTAb8RbAcGboAcLnvAcMT8AcMX8AcSToAcrAaAcrFnAc8AbAc8MgAfGgrAfHboAfJnvAfLV8AfLkoAfMT8AfMnoAfQb8AfScrAfSgrAgAZ8AgFl3AgGX8AgHZvAgHgrAgJXoAgJX8AgJboAgLZoAgLn4AgOX8AgoATAgoAnAgoCUAgoJgAgoLXAgoMYAgoSeAgrDUAgrJTAhrFnAhrLjAhrQgAjAgoAjJnrAkMX8AkOnoAlCTvAlCV8AlClvAlFg4AlFl6AlFn3AloSnAlrAXAlrAfAlrFUAlrFbAlrGgAlrOXAlvKnAlvMTAl3AbAl3MnAnATrAnAcrAnCZ3AnCl8AnDg8AnFboAnFl3AnHX4AnHbrAnHgrAnIl3AnJgvAnLXoAnLX4AnLbrAnLgrAnLhrAnMXoAnMgrAnOn3AnSbrAnSeoAnvLnAn3OnCTGgvCTSlvCTvAUCTvKnCTvNTCT3CZCT3GUCT3MTCT8HnCUCZrCULf8CULnvCU3HnCU3JUCY6NUCbDb8CbFZoCbLnrCboOTCboScCbrFnCbvLnCb8AgCb8HgCb$LnCkLfoClBn3CloDUDTHT8DTLl3DTSU8DTrAaDTrLXDTrLjDTrOYDTrOgDTvFXDTvFnDT3HUDT3LfDUCT9DUDT4DUFVoDUFV8DUFkoDUGgrDUJnrDULl8DUMT8DUMXrDUMX4DUMg8DUOUoDUOgvDUOg8DUSToDUSZ8DbDXoDbDgoDbGT8DbJn3DbLg3DbLn4DbMXrDbMg8DbOToDboJXGTClvGTDT8GTFZrGTLVoGTLlvGTLl3GTMg8GTOTvGTSlrGToCUGTrDgGTrJYGTrScGTtLnGTvAnGTvQgGUCZrGUDTvGUFZoGUHXrGULnvGUMT8GUoMgGXoLnGXrMXGXrMnGXvFnGYLnvGZOnvGZvOnGZ8LaGZ8LmGbAl3GbDYvGbDlrGbHX3GbJl4GbLV8GbLn3GbMn4GboJTGboRfGbvFUGb3GUGb4JnGgDX3GgFl$GgJlrGgLX6GgLZoGgLf8GgOXoGgrAgGgrJXGgrMYGgrScGgvATGgvOYGnAgoGnJgvGnLZoGnLg3GnLnrGnQn8GnSbrGnrMgHTClvHTDToHTFT3HTQT8HToJTHToJgHTrDUHTrMnHTvFYHTvRfHT8MnHT8SUHUAZ8HUBb4HUDTvHUoMYHXFl6HXJX6HXQlrHXrAUHXrMnHXrSbHXvFYHXvKXHX3LjHX3MeHYvQlHZrScHZvDbHbAcrHbFT3HbFl3HbJT8HbLTrHbMT8HbMXrHbMbrHbQb8HbSX3HboDbHboJTHbrFUHbrHgHbrJTHb8JTHb8MnHb8QgHgAlrHgDT3HgGgrHgHgrHgJTrHgJT8HgLX@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!Ln$CTGXMnCToLZ4CTrHT8CT3JTrCT3RZrCT#GTvCU6GgvCU8Db8CU8GZrCU8HT8CboLl3CbrGgrCbrMU8Cb8DT3Cb8GnrCb8LX4Cb8MT8Cb8ObrCgrGgvCgrKX4Cl8FZoDTrAbvDTrDboDTrGT6DTrJgrDTrMX3DTrRZrDTrRg8DTvAVvDTvFZoDT3DT8DT3Ln3DT4HZrDT4MT8DT8AlrDT8MT8DUAkGbDUDbJnDYLnQlDbDUOYDbMTAnDbMXSnDboAT3DboFn4DboLnvDj6JTrGTCgFTGTGgFnGTJTMnGTLnPlGToJT8GTrCT3GTrLVoGTrLnvGTrMX3GTrMboGTvKl3GZClFnGZrDT3GZ8DTrGZ8FZ8GZ8MXvGZ8On8GZ8ST3GbCnQXGbMbFnGboFboGboJg3GboMXoGb3JTvGb3JboGb3Mn6Gb3Qb8GgDXLjGgMnAUGgrDloGgrHX4GgrSToGgvAXrGgvAZvGgvFbrGgvLl3GgvMnvGnDnLXGnrATrGnrMboGnuLl3HTATMnHTAgCnHTCTCTHTrGTvHTrHTvHTrJX8HTrLl8HTrMT8HTrMgoHTrOTrHTuOn3HTvAZrHTvDTvHTvGboHTvJU8HTvLl3HTvMXrHTvQb4HT4GT6HT4JT8HT4Jb#HT8Al3HT8GZrHT8GgrHT8HX4HT8Jb8HT8JnoHT8LTrHT8LgvHT8SToHT8SV8HUoJUoHUoJX8HUoLnrHXrLZoHXvAl3HX3LnrHX4FkvHX4LhrHX4MXoHX4OnoHZrAZ8HZrDb8HZrGZ8HZrJnrHZvGZ8HZvLnvHZ8JnvHZ8LhrHbCXJlHbMTAnHboJl4HbpLl3HbrJX8HbrLnrHbrMnvHbvRYrHgoSTrHgrFV8HgrGZ8HgrJXoHgrRnvHgvBb!HgvGTrHgvHX4HgvHn!HgvLTrHgvSU8HnDnLbHnFbJbHnvDn8Hn6GgvHn!BTvJTCTLnJTQgFnJTrAnvJTrLX4JTrOUoJTvFn3JTvLnrJTvNToJT3AgoJT3Jn4JT3LhvJT3ObrJT8AcrJT8Al3JT8JT8JT8JnoJT8LX4JT8LnrJT8MX3JT8Rg3JT8Sc8JUoBTvJU8AToJU8GZ8JU8GgvJU8JTrJU8JXrJU8JnrJU8LnvJU8ScvJXHnJlJXrGgvJXrJU8JXrLhrJXrMT8JXrMXrJXrQUoJXvCTvJXvGZ8JXvGgrJXvQT8JX8Ab8JX8DT8JX8GZ8JX8HZvJX8LnrJX8MT8JX8MXoJX8MnvJX8ST3JYGnCTJbAkGbJbCTAnJbLTAcJboDT3JboLb6JbrAnvJbrCn3JbrDl8JbrGboJbrIZoJbrJnvJbrMnvJbrQb4Jb8RZrJeAbAnJgJnFbJgScAnJgrATrJgvHZ8JgvMn4JlJlFbJlLiQXJlLjOnJlRbOlJlvNXoJlvRl3Jl4AcrJl8AUoJl8MnrJnFnMlJnHgGbJnoDT8JnoFV8JnoGgvJnoIT8JnoQToJnoRg3JnrCZ3JnrGgrJnrHTvJnrLf8JnrOX8JnvAT3JnvFZoJnvGT8JnvJl4JnvMT8JnvMX8JnvOXrJnvPX6JnvSX3JnvSZrJn3MT8Jn3MX8Jn3RTrLTATKnLTJnLTLTMXKnLTRTQlLToGb8LTrAZ8LTrCZ8LTrDb8LTrHT8LT3PX6LT4FZoLT$CTvLT$GgrLUvHX3LVoATrLVoAgoLVoJboLVoMX3LVoRg3LV8CZ3LV8FZoLV8GTvLXrDXoLXrFbrLXvAgvLXvFlrLXvLl3LXvRn6LX4Mb8LX8GT8LYCXMnLYrMnrLZoSTvLZrAZvLZrAloLZrFToLZrJXvLZrJboLZrJl4LZrLnrLZrMT8LZrOgvLZrRnvLZrST4LZvMX8LZvSlvLZ8AgoLZ8CT3LZ8JT8LZ8LV8LZ8LZoLZ8Lg8LZ8SV8LZ8SbrLZ$HT8LZ$Mn4La6CTvLbFbMnLbRYFTLbSnFZLboJT8LbrAT9LbrGb3LbrQb8LcrJX8LcrMXrLerHTvLerJbrLerNboLgrDb8LgrGZ8LgrHTrLgrMXrLgrSU8LgvJTrLgvLl3Lg6Ll3LhrLnrLhrMT8LhvAl4LiLnQXLkoAgrLkoJT8LkoJn4LlrSU8Ll3FZoLl3HTrLl3JX8Ll3JnoLl3LToLmLeFbLnDUFbLnLVAnLnrATrLnrAZoLnrAb8LnrAlrLnrGgvLnrJU8LnrLZrLnrLhrLnrMb8LnrOXrLnrSZ8LnvAb4LnvDTrLnvDl8LnvHTrLnvHbrLnvJT8LnvJU8LnvJbrLnvLhvLnvMX8LnvMb8LnvNnoLnvSU8Ln3Al3Ln4FZoLn4GT6Ln4JgvLn4LhrLn4MT8Ln4SToMToCZrMToJX8MToLX4MToLf8MToRg3MTrEloMTvGb6MT3BTrMT3Lb6MT8AcrMT8AgrMT8GZrMT8JnoMT8LnrMT8MX3MUOUAnMXAbFnMXoAloMXoJX8MXoLf8MXoLl8MXrAb8MXrDTvMXrGT8MXrGgrMXrHTrMXrLf8MXrMU8MXrOXvMXrQb8MXvGT8MXvHTrMXvLVoMX3AX3MX3Jn3MX3LhrMX3MX3MX4AlrMX4OboMX8GTvMX8GZrMX8GgrMX8JT8MX8JX8MX8LhrMX8MT8MYDUFbMYMgDbMbGnFfMbvLX4MbvLl3Mb8Mb8Mb8ST4MgGXCnMg8ATrMg8AgoMg8CZrMg8DTrMg8DboMg8HTrMg8JgrMg8LT8MloJXoMl8AhrMl8JT8MnLgAUMnoJXrMnoLX4MnoLhrMnoMT8MnrAl4MnrDb8MnrOTvMnrOgvMnrQb8MnrSU8MnvGgrMnvHZ8Mn3MToMn4DTrMn4LTrMn4Mg8NnBXAnOTFTFnOToAToOTrGgvOTrJX8OT3JXoOT6MTrOT8GgrOT8HTpOT8MToOUoHT8OUoJT8OUoLn3OXrAgoOXrDg8OXrMT8OXvSToOX6CTvOX8CZrOX8OgrOb6HgvOb8AToOb8MT8OcvLZ8OgvAlrOgvHTvOgvJTrOgvJnrOgvLZrOgvLn4OgvMT8OgvRTrOg8AZoOg8DbvOnrOXoOnvJn4OnvLhvOnvRTrOn3GgoOn3JnvOn6JbvOn8OTrPTGYFTPbBnFnPbGnDnPgDYQTPlrAnvPlrETvPlrLnvPlrMXvPlvFX4QTMTAnQTrJU8QYCnJlQYJlQlQbGTQbQb8JnrQb8LZoQb8LnvQb8MT8Qb8Ml8Qb8ST4QloAl4QloHZvQloJX8QloMn8QnJZOlRTrAZvRTrDTrRTvJn4RTvLhvRT4Jb8RZrAZrRZ8AkrRZ8JU8RZ8LV8RZ8LnvRbJlQXRg3GboRg3MnvRg8AZ8Rg8JboRg8Jl4RnLTCbRnvFl3RnvQb8SToAl4SToCZrSToFZoSToHXrSToJU8SToJgvSToJl4SToLhrSToMX3STrAlvSTrCT9STrCgrSTrGgrSTrHXrSTrHboSTrJnoSTrNboSTvLnrST4AZoST8Ab8ST8JT8SUoJn3SU6HZ#SU6JTvSU8Db8SU8HboSU8LgrSV8JT8SZrAcrSZrAl3SZrJT8SZrJnvSZrMT8SZvLUoSZ4FZoSZ8JnoSZ8RZrScoLnrScoMT8ScoMX8ScrAT4ScrAZ8ScrLZ8ScrLkvScvDb8ScvLf8ScvNToSgrFZrShvKnrSloHUoSloLnrSlrMXoSl8HgrSmrJUoSn3BX6","ATFlOn3ATLgrDYAT4MTAnAT8LTMnAYJnRTrAbGgJnrAbLV8LnAbvNTAnAeFbLg3AgOYMXoAlQbFboAnDboAfAnJgoJTBToDgAnBUJbAl3BboDUAnCTDlvLnCTFTrSnCYoQTLnDTwAbAnDUDTrSnDUHgHgrDX8LXFnDbJXAcrETvLTLnGTFTQbrGTMnGToGT3DUFbGUJlPX3GbQg8LnGboJbFnGb3GgAYGgAg8ScGgMbAXrGgvAbAnGnJTLnvGnvATFgHTDT6ATHTrDlJnHYLnMn8HZrSbJTHZ8LTFnHbFTJUoHgSeMT8HgrLjAnHgvAbAnHlFUrDlHnDgvAnHnHTFT3HnQTGnrJTAaMXvJTGbCn3JTOgrAnJXvAXMnJbMg8SnJbMnRg3Jb8LTMnJnAl3OnJnGYrQlJnJlQY3LTDlCn3LTJjLg3LTLgvFXLTMg3GTLV8HUOgLXFZLg3LXNXrMnLX8QXFnLX9AlMYLYLXPXrLZAbJU8LZDUJU8LZMXrSnLZ$AgFnLaPXrDULbFYrMnLbMn8LXLboJgJgLeFbLg3LgLZrSnLgOYAgoLhrRnJlLkCTrSnLkOnLhrLnFX%AYLnFZoJXLnHTvJbLnLloAbMTATLf8MTHgJn3MTMXrAXMT3MTFnMUITvFnMXFX%AYMXMXvFbMXrFTDbMYAcMX3MbLf8SnMb8JbFnMgMXrMTMgvAXFnMgvGgCmMnAloSnMnFnJTrOXvMXSnOX8HTMnObJT8ScObLZFl3ObMXCZoPTLgrQXPUFnoQXPU3RXJlPX3RkQXPbrJXQlPlrJbFnQUAhrDbQXGnCXvQYLnHlvQbLfLnvRTOgvJbRXJYrQlRYLnrQlRbLnrQlRlFT8JlRlFnrQXSTClCn3STHTrAnSTLZQlrSTMnGTrSToHgGbSTrGTDnSTvGXCnST3HgFbSU3HXAXSbAnJn3SbFT8LnScLfLnv","AT3JgJX8AT8FZoSnAT8JgFV8AT8LhrDbAZ8JT8DbAb8GgLhrAb8SkLnvAe8MT8SnAlMYJXLVAl3GYDTvAl3LfLnvBUDTvLl3CTOn3HTrCT3DUGgrCU8MT8AbCbFTrJUoCgrDb8MTDTLV8JX8DTLnLXQlDT8LZrSnDUQb8FZ8DUST4JnvDb8ScOUoDj6GbJl4GTLfCYMlGToAXvFnGboAXvLnGgAcrJn3GgvFnSToGnLf8JnvGn#HTDToHTLnFXJlHTvATFToHTvHTDToHTvMTAgoHT3STClvHT4AlFl6HT8HTDToHUoDgJTrHUoScMX3HbRZrMXoHboJg8LTHgDb8JTrHgMToLf8HgvLnLnoHnHn3HT4Hn6MgvAnJTJU8ScvJT3AaQT8JT8HTrAnJXrRg8AnJbAloMXoJbrATFToJbvMnoSnJgDb6GgvJgDb8MXoJgSX3JU8JguATFToJlPYLnQlJlQkDnLbJlQlFYJlJl8Lf8OTJnCTFnLbJnLTHXMnJnLXGXCnJnoFfRg3JnrMYRg3Jn3HgFl3KT8Dg8LnLTRlFnPTLTvPbLbvLVoSbrCZLXMY6HT3LXNU7DlrLXNXDTATLX8DX8LnLZDb8JU8LZMnoLhrLZSToJU8LZrLaLnrLZvJn3SnLZ8LhrSnLaJnoMT8LbFlrHTvLbrFTLnrLbvATLlvLb6OTFn3LcLnJZOlLeAT6Mn4LeJT3ObrLg6LXFlrLhrJg8LnLhvDlPX4LhvLfLnvLj6JTFT3LnFbrMXoLnQluCTvLnrQXCY6LnvLfLnvLnvMgLnvLnvSeLf8MTMbrJn3MT3JgST3MT8AnATrMT8LULnrMUMToCZrMUScvLf8MXoDT8SnMX6ATFToMX8AXMT8MX8FkMT8MX8HTrDUMX8ScoSnMYJT6CTvMgAcrMXoMg8SToAfMlvAXLg3MnFl3AnvOT3AnFl3OUoATHT8OU3RnLXrOXrOXrSnObPbvFn6Og8HgrSnOg8OX8DbPTvAgoJgPU3RYLnrPXrDnJZrPb8CTGgvPlrLTDlvPlvFUJnoQUvFXrQlQeMnoAl3QlrQlrSnRTFTrJUoSTDlLiLXSTFg6HT3STJgoMn4STrFTJTrSTrLZFl3ST4FnMXoSUrDlHUoScvHTvSnSfLkvMXo","AUoAcrMXoAZ8HboAg8AbOg6ATFgAg8AloMXoAl3AT8JTrAl8MX8MXoCT3SToJU8Cl8Db8MXoDT8HgrATrDboOT8MXoGTOTrATMnGT8LhrAZ8GnvFnGnQXHToGgvAcrHTvAXvLl3HbrAZoMXoHgBlFXLg3HgMnFXrSnHgrSb8JUoHn6HT8LgvITvATrJUoJUoLZrRnvJU8HT8Jb8JXvFX8QT8JXvLToJTrJYrQnGnQXJgrJnoATrJnoJU8ScvJnvMnvMXoLTCTLgrJXLTJlRTvQlLbRnJlQYvLbrMb8LnvLbvFn3RnoLdCVSTGZrLeSTvGXCnLg3MnoLn3MToLlrETvMT8SToAl3MbrDU6GTvMb8LX4LhrPlrLXGXCnSToLf8Rg3STrDb8LTrSTvLTHXMnSb3RYLnMnSgOg6ATFg","HUDlGnrQXrJTrHgLnrAcJYMb8DULc8LTvFgGnCk3Mg8JbAnLX4QYvFYHnMXrRUoJnGnvFnRlvFTJlQnoSTrBXHXrLYSUJgLfoMT8Se8DTrHbDb","AbDl8SToJU8An3RbAb8ST8DUSTrGnrAgoLbFU6Db8LTrMg8AaHT8Jb8ObDl8SToJU8Pb3RlvFYoJl"],qz="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!@#$%^&*";function jz(t){return t>=40?t=t+168-40:t>=19&&(t=t+97-19),(0,Dz.toUtf8String)([225,(t>>6)+132,(t&63)+128])}var Do=null;function $7(t){if(Do==null&&(Do=[],Jz.forEach(function(e,r){r+=4;for(var n=0;n{"use strict";var Hz=xc&&xc.__extends||function(){var t=function(e,r){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,i){n.__proto__=i}||function(n,i){for(var a in i)Object.prototype.hasOwnProperty.call(i,a)&&(n[a]=i[a])},t(e,r)};return function(e,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");t(e,r);function n(){this.constructor=e}e.prototype=r===null?Object.create(r):(n.prototype=r.prototype,new n)}}();Object.defineProperty(xc,"__esModule",{value:!0});xc.langIt=void 0;var hb=fi(),zz="AbacoAbbaglioAbbinatoAbeteAbissoAbolireAbrasivoAbrogatoAccadereAccennoAccusatoAcetoneAchilleAcidoAcquaAcreAcrilicoAcrobataAcutoAdagioAddebitoAddomeAdeguatoAderireAdipeAdottareAdulareAffabileAffettoAffissoAffrantoAforismaAfosoAfricanoAgaveAgenteAgevoleAggancioAgireAgitareAgonismoAgricoloAgrumetoAguzzoAlabardaAlatoAlbatroAlberatoAlboAlbumeAlceAlcolicoAlettoneAlfaAlgebraAlianteAlibiAlimentoAllagatoAllegroAllievoAllodolaAllusivoAlmenoAlogenoAlpacaAlpestreAltalenaAlternoAlticcioAltroveAlunnoAlveoloAlzareAmalgamaAmanitaAmarenaAmbitoAmbratoAmebaAmericaAmetistaAmicoAmmassoAmmendaAmmirareAmmonitoAmoreAmpioAmpliareAmuletoAnacardoAnagrafeAnalistaAnarchiaAnatraAncaAncellaAncoraAndareAndreaAnelloAngeloAngolareAngustoAnimaAnnegareAnnidatoAnnoAnnuncioAnonimoAnticipoAnziApaticoAperturaApodeApparireAppetitoAppoggioApprodoAppuntoAprileArabicaArachideAragostaAraldicaArancioAraturaArazzoArbitroArchivioArditoArenileArgentoArgineArgutoAriaArmoniaArneseArredatoArringaArrostoArsenicoArsoArteficeArzilloAsciuttoAscoltoAsepsiAsetticoAsfaltoAsinoAsolaAspiratoAsproAssaggioAsseAssolutoAssurdoAstaAstenutoAsticeAstrattoAtavicoAteismoAtomicoAtonoAttesaAttivareAttornoAttritoAttualeAusilioAustriaAutistaAutonomoAutunnoAvanzatoAvereAvvenireAvvisoAvvolgereAzioneAzotoAzzimoAzzurroBabeleBaccanoBacinoBacoBadessaBadilataBagnatoBaitaBalconeBaldoBalenaBallataBalzanoBambinoBandireBaraondaBarbaroBarcaBaritonoBarlumeBaroccoBasilicoBassoBatostaBattutoBauleBavaBavosaBeccoBeffaBelgioBelvaBendaBenevoleBenignoBenzinaBereBerlinaBetaBibitaBiciBidoneBifidoBigaBilanciaBimboBinocoloBiologoBipedeBipolareBirbanteBirraBiscottoBisestoBisnonnoBisonteBisturiBizzarroBlandoBlattaBollitoBonificoBordoBoscoBotanicoBottinoBozzoloBraccioBradipoBramaBrancaBravuraBretellaBrevettoBrezzaBrigliaBrillanteBrindareBroccoloBrodoBronzinaBrulloBrunoBubboneBucaBudinoBuffoneBuioBulboBuonoBurloneBurrascaBussolaBustaCadettoCaducoCalamaroCalcoloCalesseCalibroCalmoCaloriaCambusaCamerataCamiciaCamminoCamolaCampaleCanapaCandelaCaneCaninoCanottoCantinaCapaceCapelloCapitoloCapogiroCapperoCapraCapsulaCarapaceCarcassaCardoCarismaCarovanaCarrettoCartolinaCasaccioCascataCasermaCasoCassoneCastelloCasualeCatastaCatenaCatrameCautoCavilloCedibileCedrataCefaloCelebreCellulareCenaCenoneCentesimoCeramicaCercareCertoCerumeCervelloCesoiaCespoCetoChelaChiaroChiccaChiedereChimeraChinaChirurgoChitarraCiaoCiclismoCifrareCignoCilindroCiottoloCircaCirrosiCitricoCittadinoCiuffoCivettaCivileClassicoClinicaCloroCoccoCodardoCodiceCoerenteCognomeCollareColmatoColoreColposoColtivatoColzaComaCometaCommandoComodoComputerComuneConcisoCondurreConfermaCongelareConiugeConnessoConoscereConsumoContinuoConvegnoCopertoCopioneCoppiaCopricapoCorazzaCordataCoricatoCorniceCorollaCorpoCorredoCorsiaCorteseCosmicoCostanteCotturaCovatoCratereCravattaCreatoCredereCremosoCrescitaCretaCricetoCrinaleCrisiCriticoCroceCronacaCrostataCrucialeCruscaCucireCuculoCuginoCullatoCupolaCuratoreCursoreCurvoCuscinoCustodeDadoDainoDalmataDamerinoDanielaDannosoDanzareDatatoDavantiDavveroDebuttoDecennioDecisoDeclinoDecolloDecretoDedicatoDefinitoDeformeDegnoDelegareDelfinoDelirioDeltaDemenzaDenotatoDentroDepositoDerapataDerivareDerogaDescrittoDesertoDesiderioDesumereDetersivoDevotoDiametroDicembreDiedroDifesoDiffusoDigerireDigitaleDiluvioDinamicoDinnanziDipintoDiplomaDipoloDiradareDireDirottoDirupoDisagioDiscretoDisfareDisgeloDispostoDistanzaDisumanoDitoDivanoDiveltoDividereDivoratoDobloneDocenteDoganaleDogmaDolceDomatoDomenicaDominareDondoloDonoDormireDoteDottoreDovutoDozzinaDragoDruidoDubbioDubitareDucaleDunaDuomoDupliceDuraturoEbanoEccessoEccoEclissiEconomiaEderaEdicolaEdileEditoriaEducareEgemoniaEgliEgoismoEgregioElaboratoElargireEleganteElencatoElettoElevareElficoElicaElmoElsaElusoEmanatoEmblemaEmessoEmiroEmotivoEmozioneEmpiricoEmuloEndemicoEnduroEnergiaEnfasiEnotecaEntrareEnzimaEpatiteEpilogoEpisodioEpocaleEppureEquatoreErarioErbaErbosoEredeEremitaErigereErmeticoEroeErosivoErranteEsagonoEsameEsanimeEsaudireEscaEsempioEsercitoEsibitoEsigenteEsistereEsitoEsofagoEsortatoEsosoEspansoEspressoEssenzaEssoEstesoEstimareEstoniaEstrosoEsultareEtilicoEtnicoEtruscoEttoEuclideoEuropaEvasoEvidenzaEvitatoEvolutoEvvivaFabbricaFaccendaFachiroFalcoFamigliaFanaleFanfaraFangoFantasmaFareFarfallaFarinosoFarmacoFasciaFastosoFasulloFaticareFatoFavolosoFebbreFecolaFedeFegatoFelpaFeltroFemminaFendereFenomenoFermentoFerroFertileFessuraFestivoFettaFeudoFiabaFiduciaFifaFiguratoFiloFinanzaFinestraFinireFioreFiscaleFisicoFiumeFlaconeFlamencoFleboFlemmaFloridoFluenteFluoroFobicoFocacciaFocosoFoderatoFoglioFolataFolcloreFolgoreFondenteFoneticoFoniaFontanaForbitoForchettaForestaFormicaFornaioForoFortezzaForzareFosfatoFossoFracassoFranaFrassinoFratelloFreccettaFrenataFrescoFrigoFrollinoFrondeFrugaleFruttaFucilataFucsiaFuggenteFulmineFulvoFumanteFumettoFumosoFuneFunzioneFuocoFurboFurgoneFuroreFusoFutileGabbianoGaffeGalateoGallinaGaloppoGamberoGammaGaranziaGarboGarofanoGarzoneGasdottoGasolioGastricoGattoGaudioGazeboGazzellaGecoGelatinaGelsoGemelloGemmatoGeneGenitoreGennaioGenotipoGergoGhepardoGhiaccioGhisaGialloGildaGineproGiocareGioielloGiornoGioveGiratoGironeGittataGiudizioGiuratoGiustoGlobuloGlutineGnomoGobbaGolfGomitoGommoneGonfioGonnaGovernoGracileGradoGraficoGrammoGrandeGrattareGravosoGraziaGrecaGreggeGrifoneGrigioGrinzaGrottaGruppoGuadagnoGuaioGuantoGuardareGufoGuidareIbernatoIconaIdenticoIdillioIdoloIdraIdricoIdrogenoIgieneIgnaroIgnoratoIlareIllesoIllogicoIlludereImballoImbevutoImboccoImbutoImmaneImmersoImmolatoImpaccoImpetoImpiegoImportoImprontaInalareInarcareInattivoIncantoIncendioInchinoIncisivoInclusoIncontroIncrocioIncuboIndagineIndiaIndoleIneditoInfattiInfilareInflittoIngaggioIngegnoIngleseIngordoIngrossoInnescoInodoreInoltrareInondatoInsanoInsettoInsiemeInsonniaInsulinaIntasatoInteroIntonacoIntuitoInumidireInvalidoInveceInvitoIperboleIpnoticoIpotesiIppicaIrideIrlandaIronicoIrrigatoIrrorareIsolatoIsotopoIstericoIstitutoIstriceItaliaIterareLabbroLabirintoLaccaLaceratoLacrimaLacunaLaddoveLagoLampoLancettaLanternaLardosoLargaLaringeLastraLatenzaLatinoLattugaLavagnaLavoroLegaleLeggeroLemboLentezzaLenzaLeoneLepreLesivoLessatoLestoLetteraleLevaLevigatoLiberoLidoLievitoLillaLimaturaLimitareLimpidoLineareLinguaLiquidoLiraLiricaLiscaLiteLitigioLivreaLocandaLodeLogicaLombareLondraLongevoLoquaceLorenzoLotoLotteriaLuceLucidatoLumacaLuminosoLungoLupoLuppoloLusingaLussoLuttoMacabroMacchinaMaceroMacinatoMadamaMagicoMagliaMagneteMagroMaiolicaMalafedeMalgradoMalintesoMalsanoMaltoMalumoreManaManciaMandorlaMangiareManifestoMannaroManovraMansardaMantideManubrioMappaMaratonaMarcireMarettaMarmoMarsupioMascheraMassaiaMastinoMaterassoMatricolaMattoneMaturoMazurcaMeandroMeccanicoMecenateMedesimoMeditareMegaMelassaMelisMelodiaMeningeMenoMensolaMercurioMerendaMerloMeschinoMeseMessereMestoloMetalloMetodoMettereMiagolareMicaMicelioMicheleMicroboMidolloMieleMiglioreMilanoMiliteMimosaMineraleMiniMinoreMirinoMirtilloMiscelaMissivaMistoMisurareMitezzaMitigareMitraMittenteMnemonicoModelloModificaModuloMoganoMogioMoleMolossoMonasteroMoncoMondinaMonetarioMonileMonotonoMonsoneMontatoMonvisoMoraMordereMorsicatoMostroMotivatoMotosegaMottoMovenzaMovimentoMozzoMuccaMucosaMuffaMughettoMugnaioMulattoMulinelloMultiploMummiaMuntoMuovereMuraleMusaMuscoloMusicaMutevoleMutoNababboNaftaNanometroNarcisoNariceNarratoNascereNastrareNaturaleNauticaNaviglioNebulosaNecrosiNegativoNegozioNemmenoNeofitaNerettoNervoNessunoNettunoNeutraleNeveNevroticoNicchiaNinfaNitidoNobileNocivoNodoNomeNominaNordicoNormaleNorvegeseNostranoNotareNotiziaNotturnoNovellaNucleoNullaNumeroNuovoNutrireNuvolaNuzialeOasiObbedireObbligoObeliscoOblioOboloObsoletoOccasioneOcchioOccidenteOccorrereOccultareOcraOculatoOdiernoOdorareOffertaOffrireOffuscatoOggettoOggiOgnunoOlandeseOlfattoOliatoOlivaOlogrammaOltreOmaggioOmbelicoOmbraOmegaOmissioneOndosoOnereOniceOnnivoroOnorevoleOntaOperatoOpinioneOppostoOracoloOrafoOrdineOrecchinoOreficeOrfanoOrganicoOrigineOrizzonteOrmaOrmeggioOrnativoOrologioOrrendoOrribileOrtensiaOrticaOrzataOrzoOsareOscurareOsmosiOspedaleOspiteOssaOssidareOstacoloOsteOtiteOtreOttagonoOttimoOttobreOvaleOvestOvinoOviparoOvocitoOvunqueOvviareOzioPacchettoPacePacificoPadellaPadronePaesePagaPaginaPalazzinaPalesarePallidoPaloPaludePandoroPannelloPaoloPaonazzoPapricaParabolaParcellaParerePargoloPariParlatoParolaPartireParvenzaParzialePassivoPasticcaPataccaPatologiaPattumePavonePeccatoPedalarePedonalePeggioPelosoPenarePendicePenisolaPennutoPenombraPensarePentolaPepePepitaPerbenePercorsoPerdonatoPerforarePergamenaPeriodoPermessoPernoPerplessoPersuasoPertugioPervasoPesatorePesistaPesoPestiferoPetaloPettinePetulantePezzoPiacerePiantaPiattinoPiccinoPicozzaPiegaPietraPifferoPigiamaPigolioPigroPilaPiliferoPillolaPilotaPimpantePinetaPinnaPinoloPioggiaPiomboPiramidePireticoPiritePirolisiPitonePizzicoPlaceboPlanarePlasmaPlatanoPlenarioPochezzaPoderosoPodismoPoesiaPoggiarePolentaPoligonoPollicePolmonitePolpettaPolsoPoltronaPolverePomicePomodoroPontePopolosoPorfidoPorosoPorporaPorrePortataPosaPositivoPossessoPostulatoPotassioPoterePranzoPrassiPraticaPreclusoPredicaPrefissoPregiatoPrelievoPremerePrenotarePreparatoPresenzaPretestoPrevalsoPrimaPrincipePrivatoProblemaProcuraProdurreProfumoProgettoProlungaPromessaPronomePropostaProrogaProtesoProvaPrudentePrugnaPruritoPsichePubblicoPudicaPugilatoPugnoPulcePulitoPulsantePuntarePupazzoPupillaPuroQuadroQualcosaQuasiQuerelaQuotaRaccoltoRaddoppioRadicaleRadunatoRafficaRagazzoRagioneRagnoRamarroRamingoRamoRandagioRantolareRapatoRapinaRappresoRasaturaRaschiatoRasenteRassegnaRastrelloRataRavvedutoRealeRecepireRecintoReclutaReconditoRecuperoRedditoRedimereRegalatoRegistroRegolaRegressoRelazioneRemareRemotoRennaReplicaReprimereReputareResaResidenteResponsoRestauroReteRetinaRetoricaRettificaRevocatoRiassuntoRibadireRibelleRibrezzoRicaricaRiccoRicevereRiciclatoRicordoRicredutoRidicoloRidurreRifasareRiflessoRiformaRifugioRigareRigettatoRighelloRilassatoRilevatoRimanereRimbalzoRimedioRimorchioRinascitaRincaroRinforzoRinnovoRinomatoRinsavitoRintoccoRinunciaRinvenireRiparatoRipetutoRipienoRiportareRipresaRipulireRisataRischioRiservaRisibileRisoRispettoRistoroRisultatoRisvoltoRitardoRitegnoRitmicoRitrovoRiunioneRivaRiversoRivincitaRivoltoRizomaRobaRoboticoRobustoRocciaRocoRodaggioRodereRoditoreRogitoRollioRomanticoRompereRonzioRosolareRospoRotanteRotondoRotulaRovescioRubizzoRubricaRugaRullinoRumineRumorosoRuoloRupeRussareRusticoSabatoSabbiareSabotatoSagomaSalassoSaldaturaSalgemmaSalivareSalmoneSaloneSaltareSalutoSalvoSapereSapidoSaporitoSaracenoSarcasmoSartoSassosoSatelliteSatiraSatolloSaturnoSavanaSavioSaziatoSbadiglioSbalzoSbancatoSbarraSbattereSbavareSbendareSbirciareSbloccatoSbocciatoSbrinareSbruffoneSbuffareScabrosoScadenzaScalaScambiareScandaloScapolaScarsoScatenareScavatoSceltoScenicoScettroSchedaSchienaSciarpaScienzaScindereScippoSciroppoScivoloSclerareScodellaScolpitoScompartoSconfortoScoprireScortaScossoneScozzeseScribaScrollareScrutinioScuderiaScultoreScuolaScuroScusareSdebitareSdoganareSeccaturaSecondoSedanoSeggiolaSegnalatoSegregatoSeguitoSelciatoSelettivoSellaSelvaggioSemaforoSembrareSemeSeminatoSempreSensoSentireSepoltoSequenzaSerataSerbatoSerenoSerioSerpenteSerraglioServireSestinaSetolaSettimanaSfaceloSfaldareSfamatoSfarzosoSfaticatoSferaSfidaSfilatoSfingeSfocatoSfoderareSfogoSfoltireSforzatoSfrattoSfruttatoSfuggitoSfumareSfusoSgabelloSgarbatoSgonfiareSgorbioSgrassatoSguardoSibiloSiccomeSierraSiglaSignoreSilenzioSillabaSimboloSimpaticoSimulatoSinfoniaSingoloSinistroSinoSintesiSinusoideSiparioSismaSistoleSituatoSlittaSlogaturaSlovenoSmarritoSmemoratoSmentitoSmeraldoSmilzoSmontareSmottatoSmussatoSnellireSnervatoSnodoSobbalzoSobrioSoccorsoSocialeSodaleSoffittoSognoSoldatoSolenneSolidoSollazzoSoloSolubileSolventeSomaticoSommaSondaSonettoSonniferoSopireSoppesoSopraSorgereSorpassoSorrisoSorsoSorteggioSorvolatoSospiroSostaSottileSpadaSpallaSpargereSpatolaSpaventoSpazzolaSpecieSpedireSpegnereSpelaturaSperanzaSpessoreSpettraleSpezzatoSpiaSpigolosoSpillatoSpinosoSpiraleSplendidoSportivoSposoSprangaSprecareSpronatoSpruzzoSpuntinoSquilloSradicareSrotolatoStabileStaccoStaffaStagnareStampatoStantioStarnutoStaseraStatutoSteloSteppaSterzoStilettoStimaStirpeStivaleStizzosoStonatoStoricoStrappoStregatoStriduloStrozzareStruttoStuccareStufoStupendoSubentroSuccosoSudoreSuggeritoSugoSultanoSuonareSuperboSupportoSurgelatoSurrogatoSussurroSuturaSvagareSvedeseSveglioSvelareSvenutoSveziaSviluppoSvistaSvizzeraSvoltaSvuotareTabaccoTabulatoTacciareTaciturnoTaleTalismanoTamponeTanninoTaraTardivoTargatoTariffaTarpareTartarugaTastoTatticoTavernaTavolataTazzaTecaTecnicoTelefonoTemerarioTempoTemutoTendoneTeneroTensioneTentacoloTeoremaTermeTerrazzoTerzettoTesiTesseratoTestatoTetroTettoiaTifareTigellaTimbroTintoTipicoTipografoTiraggioTiroTitanioTitoloTitubanteTizioTizzoneToccareTollerareToltoTombolaTomoTonfoTonsillaTopazioTopologiaToppaTorbaTornareTorroneTortoraToscanoTossireTostaturaTotanoTraboccoTracheaTrafilaTragediaTralcioTramontoTransitoTrapanoTrarreTraslocoTrattatoTraveTrecciaTremolioTrespoloTributoTrichecoTrifoglioTrilloTrinceaTrioTristezzaTrituratoTrivellaTrombaTronoTroppoTrottolaTrovareTruccatoTubaturaTuffatoTulipanoTumultoTunisiaTurbareTurchinoTutaTutelaUbicatoUccelloUccisoreUdireUditivoUffaUfficioUgualeUlisseUltimatoUmanoUmileUmorismoUncinettoUngereUnghereseUnicornoUnificatoUnisonoUnitarioUnteUovoUpupaUraganoUrgenzaUrloUsanzaUsatoUscitoUsignoloUsuraioUtensileUtilizzoUtopiaVacanteVaccinatoVagabondoVagliatoValangaValgoValicoVallettaValorosoValutareValvolaVampataVangareVanitosoVanoVantaggioVanveraVaporeVaranoVarcatoVarianteVascaVedettaVedovaVedutoVegetaleVeicoloVelcroVelinaVellutoVeloceVenatoVendemmiaVentoVeraceVerbaleVergognaVerificaVeroVerrucaVerticaleVescicaVessilloVestaleVeteranoVetrinaVetustoViandanteVibranteVicendaVichingoVicinanzaVidimareVigiliaVignetoVigoreVileVillanoViminiVincitoreViolaViperaVirgolaVirologoVirulentoViscosoVisioneVispoVissutoVisuraVitaVitelloVittimaVivandaVividoViziareVoceVogaVolatileVolereVolpeVoragineVulcanoZampognaZannaZappatoZatteraZavorraZefiroZelanteZeloZenzeroZerbinoZibettoZincoZirconeZittoZollaZoticoZuccheroZufoloZuluZuppa",ml=null;function tA(t){if(ml==null&&(ml=zz.replace(/([A-Z])/g," $1").toLowerCase().substring(1).split(" "),hb.Wordlist.check(t)!=="0x5c1362d88fd4cf614a96f3234941d29f7d37c08c5292fde03bf62c2db6ff7620"))throw ml=null,new Error("BIP39 Wordlist for it (Italian) FAILED")}var Gz=function(t){Hz(e,t);function e(){return t.call(this,"it")||this}return e.prototype.getWord=function(r){return tA(this),ml[r]},e.prototype.getWordIndex=function(r){return tA(this),ml.indexOf(r)},e}(hb.Wordlist),nA=new Gz;xc.langIt=nA;hb.Wordlist.register(nA)});var cA=P(Ta=>{"use strict";var Xz=Ta&&Ta.__extends||function(){var t=function(e,r){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,i){n.__proto__=i}||function(n,i){for(var a in i)Object.prototype.hasOwnProperty.call(i,a)&&(n[a]=i[a])},t(e,r)};return function(e,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");t(e,r);function n(){this.constructor=e}e.prototype=r===null?Object.create(r):(n.prototype=r.prototype,new n)}}();Object.defineProperty(Ta,"__esModule",{value:!0});Ta.langZhTw=Ta.langZhCn=void 0;var Kz=Cr(),bl=fi(),vb="}aE#4A=Yv&co#4N#6G=cJ&SM#66|/Z#4t&kn~46#4K~4q%b9=IR#7l,mB#7W_X2*dl}Uo~7s}Uf&Iw#9c&cw~6O&H6&wx&IG%v5=IQ~8a&Pv#47$PR&50%Ko&QM&3l#5f,D9#4L|/H&tQ;v0~6n]nN?";function aA(t){if(yc[t.locale]===null){yc[t.locale]=[];for(var e=0,r=0;r<2048;r++){var n=Qz.indexOf(vb[r*3]),i=[228+(n>>2),128+mb.indexOf(vb[r*3+1]),128+mb.indexOf(vb[r*3+2])];if(t.locale==="zh_tw")for(var a=n%4,o=a;o<3;o++)i[o]=mb.indexOf(Vz[e++])+(o==0?228:128);yc[t.locale].push((0,Kz.toUtf8String)(i))}if(bl.Wordlist.check(t)!==Zz[t.locale])throw yc[t.locale]=null,new Error("BIP39 Wordlist for "+t.locale+" (Chinese) FAILED")}}var oA=function(t){Xz(e,t);function e(r){return t.call(this,"zh_"+r)||this}return e.prototype.getWord=function(r){return aA(this),yc[this.locale][r]},e.prototype.getWordIndex=function(r){return aA(this),yc[this.locale].indexOf(r)},e.prototype.split=function(r){return r=r.replace(/(?:\u3000| )+/g,""),r.split("")},e}(bl.Wordlist),bb=new oA("cn");Ta.langZhCn=bb;bl.Wordlist.register(bb);bl.Wordlist.register(bb,"zh");var sA=new oA("tw");Ta.langZhTw=sA;bl.Wordlist.register(sA)});var uA=P(Ip=>{"use strict";Object.defineProperty(Ip,"__esModule",{value:!0});Ip.wordlists=void 0;var Wz=R7(),Yz=D7(),$z=H7(),eG=V7(),rG=Y7(),tG=rA(),nG=iA(),gb=cA();Ip.wordlists={cz:Wz.langCz,en:Yz.langEn,es:$z.langEs,fr:eG.langFr,it:nG.langIt,ja:rG.langJa,ko:tG.langKo,zh:gb.langZhCn,zh_cn:gb.langZhCn,zh_tw:gb.langZhTw}});var xb=P(ka=>{"use strict";Object.defineProperty(ka,"__esModule",{value:!0});ka.wordlists=ka.Wordlist=ka.logger=void 0;var lA=fi();Object.defineProperty(ka,"logger",{enumerable:!0,get:function(){return lA.logger}});Object.defineProperty(ka,"Wordlist",{enumerable:!0,get:function(){return lA.Wordlist}});var iG=uA();Object.defineProperty(ka,"wordlists",{enumerable:!0,get:function(){return iG.wordlists}})});var fA=P(Np=>{"use strict";Object.defineProperty(Np,"__esModule",{value:!0});Np.version=void 0;Np.version="hdnode/5.7.0"});var Jp=P(dt=>{"use strict";Object.defineProperty(dt,"__esModule",{value:!0});dt.getAccountPath=dt.isValidMnemonic=dt.entropyToMnemonic=dt.mnemonicToEntropy=dt.mnemonicToSeed=dt.HDNode=dt.defaultPath=void 0;var vA=Sp(),or=De(),mA=Tr(),gl=Cr(),aG=kp(),ft=Ve(),dA=al(),di=dc(),oG=Ji(),pA=xb(),sG=re(),cG=fA(),xl=new sG.Logger(cG.version),uG=mA.BigNumber.from("0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141"),lG=(0,gl.toUtf8Bytes)("Bitcoin seed"),Ac=2147483648;function bA(t){return(1<=256)throw new Error("Depth too large!");return hA((0,or.concat)([this.privateKey!=null?"0x0488ADE4":"0x0488B21E",(0,or.hexlify)(this.depth),this.parentFingerprint,(0,or.hexZeroPad)((0,or.hexlify)(this.index),4),this.chainCode,this.privateKey!=null?(0,or.concat)(["0x00",this.privateKey]):this.publicKey]))},enumerable:!1,configurable:!0}),t.prototype.neuter=function(){return new t(wc,null,this.publicKey,this.parentFingerprint,this.chainCode,this.index,this.depth,this.path)},t.prototype._derive=function(e){if(e>4294967295)throw new Error("invalid index - "+String(e));var r=this.path;r&&(r+="/"+(e&~Ac));var n=new Uint8Array(37);if(e&Ac){if(!this.privateKey)throw new Error("cannot derive child of neutered node");n.set((0,or.arrayify)(this.privateKey),1),r&&(r+="'")}else n.set((0,or.arrayify)(this.publicKey));for(var i=24;i>=0;i-=8)n[33+(i>>3)]=e>>24-i&255;var a=(0,or.arrayify)((0,di.computeHmac)(di.SupportedAlgorithm.sha512,this.chainCode,n)),o=a.slice(0,32),c=a.slice(32),u=null,s=null;if(this.privateKey)u=Dp(mA.BigNumber.from(o).add(this.privateKey).mod(uG));else{var f=new dA.SigningKey((0,or.hexlify)(o));s=f._addPoint(this.publicKey)}var m=r,w=this.mnemonic;return w&&(m=Object.freeze({phrase:w.phrase,path:r,locale:w.locale||"en"})),new t(wc,u,s,this.fingerprint,Dp(c),e,this.depth+1,m)},t.prototype.derivePath=function(e){var r=e.split("/");if(r.length===0||r[0]==="m"&&this.depth!==0)throw new Error("invalid path - "+e);r[0]==="m"&&r.shift();for(var n=this,i=0;i=Ac)throw new Error("invalid path index - "+a);n=n._derive(Ac+o)}else if(a.match(/^[0-9]+$/)){var o=parseInt(a);if(o>=Ac)throw new Error("invalid path index - "+a);n=n._derive(o)}else throw new Error("invalid path component - "+a)}return n},t._fromSeed=function(e,r){var n=(0,or.arrayify)(e);if(n.length<16||n.length>64)throw new Error("invalid seed");var i=(0,or.arrayify)((0,di.computeHmac)(di.SupportedAlgorithm.sha512,lG,n));return new t(wc,Dp(i.slice(0,32)),null,"0x00000000",Dp(i.slice(32)),0,0,r)},t.fromMnemonic=function(e,r,n){return n=yb(n),e=xA(wb(e,n),n),t._fromSeed(gA(e,r),{phrase:e,path:"m",locale:n.locale})},t.fromSeed=function(e){return t._fromSeed(e,null)},t.fromExtendedKey=function(e){var r=vA.Base58.decode(e);(r.length!==82||hA(r.slice(0,78))!==e)&&xl.throwArgumentError("invalid extended key","extendedKey","[REDACTED]");var n=r[4],i=(0,or.hexlify)(r.slice(5,9)),a=parseInt((0,or.hexlify)(r.slice(9,13)).substring(2),16),o=(0,or.hexlify)(r.slice(13,45)),c=r.slice(45,78);switch((0,or.hexlify)(r.slice(0,4))){case"0x0488b21e":case"0x043587cf":return new t(wc,null,(0,or.hexlify)(c),i,o,a,n,null);case"0x0488ade4":case"0x04358394 ":if(c[0]!==0)break;return new t(wc,(0,or.hexlify)(c.slice(1)),null,i,o,a,n,null)}return xl.throwArgumentError("invalid extended key","extendedKey","[REDACTED]")},t}();dt.HDNode=dG;function gA(t,e){e||(e="");var r=(0,gl.toUtf8Bytes)("mnemonic"+e,gl.UnicodeNormalizationForm.NFKD);return(0,aG.pbkdf2)((0,gl.toUtf8Bytes)(t,gl.UnicodeNormalizationForm.NFKD),r,2048,64,"sha512")}dt.mnemonicToSeed=gA;function wb(t,e){e=yb(e),xl.checkNormalize();var r=e.split(t);if(r.length%3!==0)throw new Error("invalid mnemonic");for(var n=(0,or.arrayify)(new Uint8Array(Math.ceil(11*r.length/8))),i=0,a=0;a>3]|=1<<7-i%8),i++}var u=32*r.length/3,s=r.length/3,f=bA(s),m=(0,or.arrayify)((0,di.sha256)(n.slice(0,u/8)))[0]&f;if(m!==(n[n.length-1]&f))throw new Error("invalid checksum");return(0,or.hexlify)(n.slice(0,u/8))}dt.mnemonicToEntropy=wb;function xA(t,e){if(e=yb(e),t=(0,or.arrayify)(t),t.length%4!==0||t.length<16||t.length>32)throw new Error("invalid entropy");for(var r=[0],n=11,i=0;i8?(r[r.length-1]<<=8,r[r.length-1]|=t[i],n-=8):(r[r.length-1]<<=n,r[r.length-1]|=t[i]>>8-n,r.push(t[i]&fG(8-n)),n+=3);var a=t.length/4,o=(0,or.arrayify)((0,di.sha256)(t))[0]&bA(a);return r[r.length-1]<<=a,r[r.length-1]|=o>>8-a,e.join(r.map(function(c){return e.getWord(c)}))}dt.entropyToMnemonic=xA;function pG(t,e){try{return wb(t,e),!0}catch{}return!1}dt.isValidMnemonic=pG;function hG(t){return(typeof t!="number"||t<0||t>=Ac||t%1)&&xl.throwArgumentError("invalid account index","index",t),"m/44'/60'/"+t+"'/0/0"}dt.getAccountPath=hG});var yA=P(qp=>{"use strict";Object.defineProperty(qp,"__esModule",{value:!0});qp.randomBytes=void 0;var vG=require("crypto"),mG=De();function bG(t){return(0,mG.arrayify)((0,vG.randomBytes)(t))}qp.randomBytes=bG});var wA=P(jp=>{"use strict";Object.defineProperty(jp,"__esModule",{value:!0});jp.shuffled=void 0;function gG(t){t=t.slice();for(var e=t.length-1;e>0;e--){var r=Math.floor(Math.random()*(e+1)),n=t[e];t[e]=t[r],t[r]=n}return t}jp.shuffled=gG});var yl=P(Ec=>{"use strict";Object.defineProperty(Ec,"__esModule",{value:!0});Ec.shuffled=Ec.randomBytes=void 0;var xG=yA();Object.defineProperty(Ec,"randomBytes",{enumerable:!0,get:function(){return xG.randomBytes}});var yG=wA();Object.defineProperty(Ec,"shuffled",{enumerable:!0,get:function(){return yG.shuffled}})});var Eb=P((Ab,AA)=>{"use strict";(function(t){function e(d){return parseInt(d)===d}function r(d){if(!e(d.length))return!1;for(var y=0;y255)return!1;return!0}function n(d,y){if(d.buffer&&ArrayBuffer.isView(d)&&d.name==="Uint8Array")return y&&(d.slice?d=d.slice():d=Array.prototype.slice.call(d)),d;if(Array.isArray(d)){if(!r(d))throw new Error("Array contains invalid value: "+d);return new Uint8Array(d)}if(e(d.length)&&r(d))return new Uint8Array(d);throw new Error("unsupported array-like object")}function i(d){return new Uint8Array(d)}function a(d,y,C,h,k){(h!=null||k!=null)&&(d.slice?d=d.slice(h,k):d=Array.prototype.slice.call(d,h,k)),y.set(d,C)}var o=function(){function d(C){var h=[],k=0;for(C=encodeURI(C);k191&&J<224?(h.push(String.fromCharCode((J&31)<<6|C[k+1]&63)),k+=2):(h.push(String.fromCharCode((J&15)<<12|(C[k+1]&63)<<6|C[k+2]&63)),k+=3)}return h.join("")}return{toBytes:d,fromBytes:y}}(),c=function(){function d(h){for(var k=[],J=0;J>4]+y[_&15])}return k.join("")}return{toBytes:d,fromBytes:C}}(),u={16:10,24:12,32:14},s=[1,2,4,8,16,32,64,128,27,54,108,216,171,77,154,47,94,188,99,198,151,53,106,212,179,125,250,239,197,145],f=[99,124,119,123,242,107,111,197,48,1,103,43,254,215,171,118,202,130,201,125,250,89,71,240,173,212,162,175,156,164,114,192,183,253,147,38,54,63,247,204,52,165,229,241,113,216,49,21,4,199,35,195,24,150,5,154,7,18,128,226,235,39,178,117,9,131,44,26,27,110,90,160,82,59,214,179,41,227,47,132,83,209,0,237,32,252,177,91,106,203,190,57,74,76,88,207,208,239,170,251,67,77,51,133,69,249,2,127,80,60,159,168,81,163,64,143,146,157,56,245,188,182,218,33,16,255,243,210,205,12,19,236,95,151,68,23,196,167,126,61,100,93,25,115,96,129,79,220,34,42,144,136,70,238,184,20,222,94,11,219,224,50,58,10,73,6,36,92,194,211,172,98,145,149,228,121,231,200,55,109,141,213,78,169,108,86,244,234,101,122,174,8,186,120,37,46,28,166,180,198,232,221,116,31,75,189,139,138,112,62,181,102,72,3,246,14,97,53,87,185,134,193,29,158,225,248,152,17,105,217,142,148,155,30,135,233,206,85,40,223,140,161,137,13,191,230,66,104,65,153,45,15,176,84,187,22],m=[82,9,106,213,48,54,165,56,191,64,163,158,129,243,215,251,124,227,57,130,155,47,255,135,52,142,67,68,196,222,233,203,84,123,148,50,166,194,35,61,238,76,149,11,66,250,195,78,8,46,161,102,40,217,36,178,118,91,162,73,109,139,209,37,114,248,246,100,134,104,152,22,212,164,92,204,93,101,182,146,108,112,72,80,253,237,185,218,94,21,70,87,167,141,157,132,144,216,171,0,140,188,211,10,247,228,88,5,184,179,69,6,208,44,30,143,202,63,15,2,193,175,189,3,1,19,138,107,58,145,17,65,79,103,220,234,151,242,207,206,240,180,230,115,150,172,116,34,231,173,53,133,226,249,55,232,28,117,223,110,71,241,26,113,29,41,197,137,111,183,98,14,170,24,190,27,252,86,62,75,198,210,121,32,154,219,192,254,120,205,90,244,31,221,168,51,136,7,199,49,177,18,16,89,39,128,236,95,96,81,127,169,25,181,74,13,45,229,122,159,147,201,156,239,160,224,59,77,174,42,245,176,200,235,187,60,131,83,153,97,23,43,4,126,186,119,214,38,225,105,20,99,85,33,12,125],w=[3328402341,4168907908,4000806809,4135287693,4294111757,3597364157,3731845041,2445657428,1613770832,33620227,3462883241,1445669757,3892248089,3050821474,1303096294,3967186586,2412431941,528646813,2311702848,4202528135,4026202645,2992200171,2387036105,4226871307,1101901292,3017069671,1604494077,1169141738,597466303,1403299063,3832705686,2613100635,1974974402,3791519004,1033081774,1277568618,1815492186,2118074177,4126668546,2211236943,1748251740,1369810420,3521504564,4193382664,3799085459,2883115123,1647391059,706024767,134480908,2512897874,1176707941,2646852446,806885416,932615841,168101135,798661301,235341577,605164086,461406363,3756188221,3454790438,1311188841,2142417613,3933566367,302582043,495158174,1479289972,874125870,907746093,3698224818,3025820398,1537253627,2756858614,1983593293,3084310113,2108928974,1378429307,3722699582,1580150641,327451799,2790478837,3117535592,0,3253595436,1075847264,3825007647,2041688520,3059440621,3563743934,2378943302,1740553945,1916352843,2487896798,2555137236,2958579944,2244988746,3151024235,3320835882,1336584933,3992714006,2252555205,2588757463,1714631509,293963156,2319795663,3925473552,67240454,4269768577,2689618160,2017213508,631218106,1269344483,2723238387,1571005438,2151694528,93294474,1066570413,563977660,1882732616,4059428100,1673313503,2008463041,2950355573,1109467491,537923632,3858759450,4260623118,3218264685,2177748300,403442708,638784309,3287084079,3193921505,899127202,2286175436,773265209,2479146071,1437050866,4236148354,2050833735,3362022572,3126681063,840505643,3866325909,3227541664,427917720,2655997905,2749160575,1143087718,1412049534,999329963,193497219,2353415882,3354324521,1807268051,672404540,2816401017,3160301282,369822493,2916866934,3688947771,1681011286,1949973070,336202270,2454276571,201721354,1210328172,3093060836,2680341085,3184776046,1135389935,3294782118,965841320,831886756,3554993207,4068047243,3588745010,2345191491,1849112409,3664604599,26054028,2983581028,2622377682,1235855840,3630984372,2891339514,4092916743,3488279077,3395642799,4101667470,1202630377,268961816,1874508501,4034427016,1243948399,1546530418,941366308,1470539505,1941222599,2546386513,3421038627,2715671932,3899946140,1042226977,2521517021,1639824860,227249030,260737669,3765465232,2084453954,1907733956,3429263018,2420656344,100860677,4160157185,470683154,3261161891,1781871967,2924959737,1773779408,394692241,2579611992,974986535,664706745,3655459128,3958962195,731420851,571543859,3530123707,2849626480,126783113,865375399,765172662,1008606754,361203602,3387549984,2278477385,2857719295,1344809080,2782912378,59542671,1503764984,160008576,437062935,1707065306,3622233649,2218934982,3496503480,2185314755,697932208,1512910199,504303377,2075177163,2824099068,1841019862,739644986],T=[2781242211,2230877308,2582542199,2381740923,234877682,3184946027,2984144751,1418839493,1348481072,50462977,2848876391,2102799147,434634494,1656084439,3863849899,2599188086,1167051466,2636087938,1082771913,2281340285,368048890,3954334041,3381544775,201060592,3963727277,1739838676,4250903202,3930435503,3206782108,4149453988,2531553906,1536934080,3262494647,484572669,2923271059,1783375398,1517041206,1098792767,49674231,1334037708,1550332980,4098991525,886171109,150598129,2481090929,1940642008,1398944049,1059722517,201851908,1385547719,1699095331,1587397571,674240536,2704774806,252314885,3039795866,151914247,908333586,2602270848,1038082786,651029483,1766729511,3447698098,2682942837,454166793,2652734339,1951935532,775166490,758520603,3000790638,4004797018,4217086112,4137964114,1299594043,1639438038,3464344499,2068982057,1054729187,1901997871,2534638724,4121318227,1757008337,0,750906861,1614815264,535035132,3363418545,3988151131,3201591914,1183697867,3647454910,1265776953,3734260298,3566750796,3903871064,1250283471,1807470800,717615087,3847203498,384695291,3313910595,3617213773,1432761139,2484176261,3481945413,283769337,100925954,2180939647,4037038160,1148730428,3123027871,3813386408,4087501137,4267549603,3229630528,2315620239,2906624658,3156319645,1215313976,82966005,3747855548,3245848246,1974459098,1665278241,807407632,451280895,251524083,1841287890,1283575245,337120268,891687699,801369324,3787349855,2721421207,3431482436,959321879,1469301956,4065699751,2197585534,1199193405,2898814052,3887750493,724703513,2514908019,2696962144,2551808385,3516813135,2141445340,1715741218,2119445034,2872807568,2198571144,3398190662,700968686,3547052216,1009259540,2041044702,3803995742,487983883,1991105499,1004265696,1449407026,1316239930,504629770,3683797321,168560134,1816667172,3837287516,1570751170,1857934291,4014189740,2797888098,2822345105,2754712981,936633572,2347923833,852879335,1133234376,1500395319,3084545389,2348912013,1689376213,3533459022,3762923945,3034082412,4205598294,133428468,634383082,2949277029,2398386810,3913789102,403703816,3580869306,2297460856,1867130149,1918643758,607656988,4049053350,3346248884,1368901318,600565992,2090982877,2632479860,557719327,3717614411,3697393085,2249034635,2232388234,2430627952,1115438654,3295786421,2865522278,3633334344,84280067,33027830,303828494,2747425121,1600795957,4188952407,3496589753,2434238086,1486471617,658119965,3106381470,953803233,334231800,3005978776,857870609,3151128937,1890179545,2298973838,2805175444,3056442267,574365214,2450884487,550103529,1233637070,4289353045,2018519080,2057691103,2399374476,4166623649,2148108681,387583245,3664101311,836232934,3330556482,3100665960,3280093505,2955516313,2002398509,287182607,3413881008,4238890068,3597515707,975967766],A=[1671808611,2089089148,2006576759,2072901243,4061003762,1807603307,1873927791,3310653893,810573872,16974337,1739181671,729634347,4263110654,3613570519,2883997099,1989864566,3393556426,2191335298,3376449993,2106063485,4195741690,1508618841,1204391495,4027317232,2917941677,3563566036,2734514082,2951366063,2629772188,2767672228,1922491506,3227229120,3082974647,4246528509,2477669779,644500518,911895606,1061256767,4144166391,3427763148,878471220,2784252325,3845444069,4043897329,1905517169,3631459288,827548209,356461077,67897348,3344078279,593839651,3277757891,405286936,2527147926,84871685,2595565466,118033927,305538066,2157648768,3795705826,3945188843,661212711,2999812018,1973414517,152769033,2208177539,745822252,439235610,455947803,1857215598,1525593178,2700827552,1391895634,994932283,3596728278,3016654259,695947817,3812548067,795958831,2224493444,1408607827,3513301457,0,3979133421,543178784,4229948412,2982705585,1542305371,1790891114,3410398667,3201918910,961245753,1256100938,1289001036,1491644504,3477767631,3496721360,4012557807,2867154858,4212583931,1137018435,1305975373,861234739,2241073541,1171229253,4178635257,33948674,2139225727,1357946960,1011120188,2679776671,2833468328,1374921297,2751356323,1086357568,2408187279,2460827538,2646352285,944271416,4110742005,3168756668,3066132406,3665145818,560153121,271589392,4279952895,4077846003,3530407890,3444343245,202643468,322250259,3962553324,1608629855,2543990167,1154254916,389623319,3294073796,2817676711,2122513534,1028094525,1689045092,1575467613,422261273,1939203699,1621147744,2174228865,1339137615,3699352540,577127458,712922154,2427141008,2290289544,1187679302,3995715566,3100863416,339486740,3732514782,1591917662,186455563,3681988059,3762019296,844522546,978220090,169743370,1239126601,101321734,611076132,1558493276,3260915650,3547250131,2901361580,1655096418,2443721105,2510565781,3828863972,2039214713,3878868455,3359869896,928607799,1840765549,2374762893,3580146133,1322425422,2850048425,1823791212,1459268694,4094161908,3928346602,1706019429,2056189050,2934523822,135794696,3134549946,2022240376,628050469,779246638,472135708,2800834470,3032970164,3327236038,3894660072,3715932637,1956440180,522272287,1272813131,3185336765,2340818315,2323976074,1888542832,1044544574,3049550261,1722469478,1222152264,50660867,4127324150,236067854,1638122081,895445557,1475980887,3117443513,2257655686,3243809217,489110045,2662934430,3778599393,4162055160,2561878936,288563729,1773916777,3648039385,2391345038,2493985684,2612407707,505560094,2274497927,3911240169,3460925390,1442818645,678973480,3749357023,2358182796,2717407649,2306869641,219617805,3218761151,3862026214,1120306242,1756942440,1103331905,2578459033,762796589,252780047,2966125488,1425844308,3151392187,372911126],O=[1667474886,2088535288,2004326894,2071694838,4075949567,1802223062,1869591006,3318043793,808472672,16843522,1734846926,724270422,4278065639,3621216949,2880169549,1987484396,3402253711,2189597983,3385409673,2105378810,4210693615,1499065266,1195886990,4042263547,2913856577,3570689971,2728590687,2947541573,2627518243,2762274643,1920112356,3233831835,3082273397,4261223649,2475929149,640051788,909531756,1061110142,4160160501,3435941763,875846760,2779116625,3857003729,4059105529,1903268834,3638064043,825316194,353713962,67374088,3351728789,589522246,3284360861,404236336,2526454071,84217610,2593830191,117901582,303183396,2155911963,3806477791,3958056653,656894286,2998062463,1970642922,151591698,2206440989,741110872,437923380,454765878,1852748508,1515908788,2694904667,1381168804,993742198,3604373943,3014905469,690584402,3823320797,791638366,2223281939,1398011302,3520161977,0,3991743681,538992704,4244381667,2981218425,1532751286,1785380564,3419096717,3200178535,960056178,1246420628,1280103576,1482221744,3486468741,3503319995,4025428677,2863326543,4227536621,1128514950,1296947098,859002214,2240123921,1162203018,4193849577,33687044,2139062782,1347481760,1010582648,2678045221,2829640523,1364325282,2745433693,1077985408,2408548869,2459086143,2644360225,943212656,4126475505,3166494563,3065430391,3671750063,555836226,269496352,4294908645,4092792573,3537006015,3452783745,202118168,320025894,3974901699,1600119230,2543297077,1145359496,387397934,3301201811,2812801621,2122220284,1027426170,1684319432,1566435258,421079858,1936954854,1616945344,2172753945,1330631070,3705438115,572679748,707427924,2425400123,2290647819,1179044492,4008585671,3099120491,336870440,3739122087,1583276732,185277718,3688593069,3772791771,842159716,976899700,168435220,1229577106,101059084,606366792,1549591736,3267517855,3553849021,2897014595,1650632388,2442242105,2509612081,3840161747,2038008818,3890688725,3368567691,926374254,1835907034,2374863873,3587531953,1313788572,2846482505,1819063512,1448540844,4109633523,3941213647,1701162954,2054852340,2930698567,134748176,3132806511,2021165296,623210314,774795868,471606328,2795958615,3031746419,3334885783,3907527627,3722280097,1953799400,522133822,1263263126,3183336545,2341176845,2324333839,1886425312,1044267644,3048588401,1718004428,1212733584,50529542,4143317495,235803164,1633788866,892690282,1465383342,3115962473,2256965911,3250673817,488449850,2661202215,3789633753,4177007595,2560144171,286339874,1768537042,3654906025,2391705863,2492770099,2610673197,505291324,2273808917,3924369609,3469625735,1431699370,673740880,3755965093,2358021891,2711746649,2307489801,218961690,3217021541,3873845719,1111672452,1751693520,1094828930,2576986153,757954394,252645662,2964376443,1414855848,3149649517,370555436],B=[1374988112,2118214995,437757123,975658646,1001089995,530400753,2902087851,1273168787,540080725,2910219766,2295101073,4110568485,1340463100,3307916247,641025152,3043140495,3736164937,632953703,1172967064,1576976609,3274667266,2169303058,2370213795,1809054150,59727847,361929877,3211623147,2505202138,3569255213,1484005843,1239443753,2395588676,1975683434,4102977912,2572697195,666464733,3202437046,4035489047,3374361702,2110667444,1675577880,3843699074,2538681184,1649639237,2976151520,3144396420,4269907996,4178062228,1883793496,2403728665,2497604743,1383856311,2876494627,1917518562,3810496343,1716890410,3001755655,800440835,2261089178,3543599269,807962610,599762354,33778362,3977675356,2328828971,2809771154,4077384432,1315562145,1708848333,101039829,3509871135,3299278474,875451293,2733856160,92987698,2767645557,193195065,1080094634,1584504582,3178106961,1042385657,2531067453,3711829422,1306967366,2438237621,1908694277,67556463,1615861247,429456164,3602770327,2302690252,1742315127,2968011453,126454664,3877198648,2043211483,2709260871,2084704233,4169408201,0,159417987,841739592,504459436,1817866830,4245618683,260388950,1034867998,908933415,168810852,1750902305,2606453969,607530554,202008497,2472011535,3035535058,463180190,2160117071,1641816226,1517767529,470948374,3801332234,3231722213,1008918595,303765277,235474187,4069246893,766945465,337553864,1475418501,2943682380,4003061179,2743034109,4144047775,1551037884,1147550661,1543208500,2336434550,3408119516,3069049960,3102011747,3610369226,1113818384,328671808,2227573024,2236228733,3535486456,2935566865,3341394285,496906059,3702665459,226906860,2009195472,733156972,2842737049,294930682,1206477858,2835123396,2700099354,1451044056,573804783,2269728455,3644379585,2362090238,2564033334,2801107407,2776292904,3669462566,1068351396,742039012,1350078989,1784663195,1417561698,4136440770,2430122216,775550814,2193862645,2673705150,1775276924,1876241833,3475313331,3366754619,270040487,3902563182,3678124923,3441850377,1851332852,3969562369,2203032232,3868552805,2868897406,566021896,4011190502,3135740889,1248802510,3936291284,699432150,832877231,708780849,3332740144,899835584,1951317047,4236429990,3767586992,866637845,4043610186,1106041591,2144161806,395441711,1984812685,1139781709,3433712980,3835036895,2664543715,1282050075,3240894392,1181045119,2640243204,25965917,4203181171,4211818798,3009879386,2463879762,3910161971,1842759443,2597806476,933301370,1509430414,3943906441,3467192302,3076639029,3776767469,2051518780,2631065433,1441952575,404016761,1942435775,1408749034,1610459739,3745345300,2017778566,3400528769,3110650942,941896748,3265478751,371049330,3168937228,675039627,4279080257,967311729,135050206,3635733660,1683407248,2076935265,3576870512,1215061108,3501741890],F=[1347548327,1400783205,3273267108,2520393566,3409685355,4045380933,2880240216,2471224067,1428173050,4138563181,2441661558,636813900,4233094615,3620022987,2149987652,2411029155,1239331162,1730525723,2554718734,3781033664,46346101,310463728,2743944855,3328955385,3875770207,2501218972,3955191162,3667219033,768917123,3545789473,692707433,1150208456,1786102409,2029293177,1805211710,3710368113,3065962831,401639597,1724457132,3028143674,409198410,2196052529,1620529459,1164071807,3769721975,2226875310,486441376,2499348523,1483753576,428819965,2274680428,3075636216,598438867,3799141122,1474502543,711349675,129166120,53458370,2592523643,2782082824,4063242375,2988687269,3120694122,1559041666,730517276,2460449204,4042459122,2706270690,3446004468,3573941694,533804130,2328143614,2637442643,2695033685,839224033,1973745387,957055980,2856345839,106852767,1371368976,4181598602,1033297158,2933734917,1179510461,3046200461,91341917,1862534868,4284502037,605657339,2547432937,3431546947,2003294622,3182487618,2282195339,954669403,3682191598,1201765386,3917234703,3388507166,0,2198438022,1211247597,2887651696,1315723890,4227665663,1443857720,507358933,657861945,1678381017,560487590,3516619604,975451694,2970356327,261314535,3535072918,2652609425,1333838021,2724322336,1767536459,370938394,182621114,3854606378,1128014560,487725847,185469197,2918353863,3106780840,3356761769,2237133081,1286567175,3152976349,4255350624,2683765030,3160175349,3309594171,878443390,1988838185,3704300486,1756818940,1673061617,3403100636,272786309,1075025698,545572369,2105887268,4174560061,296679730,1841768865,1260232239,4091327024,3960309330,3497509347,1814803222,2578018489,4195456072,575138148,3299409036,446754879,3629546796,4011996048,3347532110,3252238545,4270639778,915985419,3483825537,681933534,651868046,2755636671,3828103837,223377554,2607439820,1649704518,3270937875,3901806776,1580087799,4118987695,3198115200,2087309459,2842678573,3016697106,1003007129,2802849917,1860738147,2077965243,164439672,4100872472,32283319,2827177882,1709610350,2125135846,136428751,3874428392,3652904859,3460984630,3572145929,3593056380,2939266226,824852259,818324884,3224740454,930369212,2801566410,2967507152,355706840,1257309336,4148292826,243256656,790073846,2373340630,1296297904,1422699085,3756299780,3818836405,457992840,3099667487,2135319889,77422314,1560382517,1945798516,788204353,1521706781,1385356242,870912086,325965383,2358957921,2050466060,2388260884,2313884476,4006521127,901210569,3990953189,1014646705,1503449823,1062597235,2031621326,3212035895,3931371469,1533017514,350174575,2256028891,2177544179,1052338372,741876788,1606591296,1914052035,213705253,2334669897,1107234197,1899603969,3725069491,2631447780,2422494913,1635502980,1893020342,1950903388,1120974935],I=[2807058932,1699970625,2764249623,1586903591,1808481195,1173430173,1487645946,59984867,4199882800,1844882806,1989249228,1277555970,3623636965,3419915562,1149249077,2744104290,1514790577,459744698,244860394,3235995134,1963115311,4027744588,2544078150,4190530515,1608975247,2627016082,2062270317,1507497298,2200818878,567498868,1764313568,3359936201,2305455554,2037970062,1047239e3,1910319033,1337376481,2904027272,2892417312,984907214,1243112415,830661914,861968209,2135253587,2011214180,2927934315,2686254721,731183368,1750626376,4246310725,1820824798,4172763771,3542330227,48394827,2404901663,2871682645,671593195,3254988725,2073724613,145085239,2280796200,2779915199,1790575107,2187128086,472615631,3029510009,4075877127,3802222185,4107101658,3201631749,1646252340,4270507174,1402811438,1436590835,3778151818,3950355702,3963161475,4020912224,2667994737,273792366,2331590177,104699613,95345982,3175501286,2377486676,1560637892,3564045318,369057872,4213447064,3919042237,1137477952,2658625497,1119727848,2340947849,1530455833,4007360968,172466556,266959938,516552836,0,2256734592,3980931627,1890328081,1917742170,4294704398,945164165,3575528878,958871085,3647212047,2787207260,1423022939,775562294,1739656202,3876557655,2530391278,2443058075,3310321856,547512796,1265195639,437656594,3121275539,719700128,3762502690,387781147,218828297,3350065803,2830708150,2848461854,428169201,122466165,3720081049,1627235199,648017665,4122762354,1002783846,2117360635,695634755,3336358691,4234721005,4049844452,3704280881,2232435299,574624663,287343814,612205898,1039717051,840019705,2708326185,793451934,821288114,1391201670,3822090177,376187827,3113855344,1224348052,1679968233,2361698556,1058709744,752375421,2431590963,1321699145,3519142200,2734591178,188127444,2177869557,3727205754,2384911031,3215212461,2648976442,2450346104,3432737375,1180849278,331544205,3102249176,4150144569,2952102595,2159976285,2474404304,766078933,313773861,2570832044,2108100632,1668212892,3145456443,2013908262,418672217,3070356634,2594734927,1852171925,3867060991,3473416636,3907448597,2614737639,919489135,164948639,2094410160,2997825956,590424639,2486224549,1723872674,3157750862,3399941250,3501252752,3625268135,2555048196,3673637356,1343127501,4130281361,3599595085,2957853679,1297403050,81781910,3051593425,2283490410,532201772,1367295589,3926170974,895287692,1953757831,1093597963,492483431,3528626907,1446242576,1192455638,1636604631,209336225,344873464,1015671571,669961897,3375740769,3857572124,2973530695,3747192018,1933530610,3464042516,935293895,3454686199,2858115069,1863638845,3683022916,4085369519,3292445032,875313188,1080017571,3279033885,621591778,1233856572,2504130317,24197544,3017672716,3835484340,3247465558,2220981195,3060847922,1551124588,1463996600],D=[4104605777,1097159550,396673818,660510266,2875968315,2638606623,4200115116,3808662347,821712160,1986918061,3430322568,38544885,3856137295,718002117,893681702,1654886325,2975484382,3122358053,3926825029,4274053469,796197571,1290801793,1184342925,3556361835,2405426947,2459735317,1836772287,1381620373,3196267988,1948373848,3764988233,3385345166,3263785589,2390325492,1480485785,3111247143,3780097726,2293045232,548169417,3459953789,3746175075,439452389,1362321559,1400849762,1685577905,1806599355,2174754046,137073913,1214797936,1174215055,3731654548,2079897426,1943217067,1258480242,529487843,1437280870,3945269170,3049390895,3313212038,923313619,679998e3,3215307299,57326082,377642221,3474729866,2041877159,133361907,1776460110,3673476453,96392454,878845905,2801699524,777231668,4082475170,2330014213,4142626212,2213296395,1626319424,1906247262,1846563261,562755902,3708173718,1040559837,3871163981,1418573201,3294430577,114585348,1343618912,2566595609,3186202582,1078185097,3651041127,3896688048,2307622919,425408743,3371096953,2081048481,1108339068,2216610296,0,2156299017,736970802,292596766,1517440620,251657213,2235061775,2933202493,758720310,265905162,1554391400,1532285339,908999204,174567692,1474760595,4002861748,2610011675,3234156416,3693126241,2001430874,303699484,2478443234,2687165888,585122620,454499602,151849742,2345119218,3064510765,514443284,4044981591,1963412655,2581445614,2137062819,19308535,1928707164,1715193156,4219352155,1126790795,600235211,3992742070,3841024952,836553431,1669664834,2535604243,3323011204,1243905413,3141400786,4180808110,698445255,2653899549,2989552604,2253581325,3252932727,3004591147,1891211689,2487810577,3915653703,4237083816,4030667424,2100090966,865136418,1229899655,953270745,3399679628,3557504664,4118925222,2061379749,3079546586,2915017791,983426092,2022837584,1607244650,2118541908,2366882550,3635996816,972512814,3283088770,1568718495,3499326569,3576539503,621982671,2895723464,410887952,2623762152,1002142683,645401037,1494807662,2595684844,1335535747,2507040230,4293295786,3167684641,367585007,3885750714,1865862730,2668221674,2960971305,2763173681,1059270954,2777952454,2724642869,1320957812,2194319100,2429595872,2815956275,77089521,3973773121,3444575871,2448830231,1305906550,4021308739,2857194700,2516901860,3518358430,1787304780,740276417,1699839814,1592394909,2352307457,2272556026,188821243,1729977011,3687994002,274084841,3594982253,3613494426,2701949495,4162096729,322734571,2837966542,1640576439,484830689,1202797690,3537852828,4067639125,349075736,3342319475,4157467219,4255800159,1030690015,1155237496,2951971274,1757691577,607398968,2738905026,499347990,3794078908,1011452712,227885567,2818666809,213114376,3034881240,1455525988,3414450555,850817237,1817998408,3092726480],z=[0,235474187,470948374,303765277,941896748,908933415,607530554,708780849,1883793496,2118214995,1817866830,1649639237,1215061108,1181045119,1417561698,1517767529,3767586992,4003061179,4236429990,4069246893,3635733660,3602770327,3299278474,3400528769,2430122216,2664543715,2362090238,2193862645,2835123396,2801107407,3035535058,3135740889,3678124923,3576870512,3341394285,3374361702,3810496343,3977675356,4279080257,4043610186,2876494627,2776292904,3076639029,3110650942,2472011535,2640243204,2403728665,2169303058,1001089995,899835584,666464733,699432150,59727847,226906860,530400753,294930682,1273168787,1172967064,1475418501,1509430414,1942435775,2110667444,1876241833,1641816226,2910219766,2743034109,2976151520,3211623147,2505202138,2606453969,2302690252,2269728455,3711829422,3543599269,3240894392,3475313331,3843699074,3943906441,4178062228,4144047775,1306967366,1139781709,1374988112,1610459739,1975683434,2076935265,1775276924,1742315127,1034867998,866637845,566021896,800440835,92987698,193195065,429456164,395441711,1984812685,2017778566,1784663195,1683407248,1315562145,1080094634,1383856311,1551037884,101039829,135050206,437757123,337553864,1042385657,807962610,573804783,742039012,2531067453,2564033334,2328828971,2227573024,2935566865,2700099354,3001755655,3168937228,3868552805,3902563182,4203181171,4102977912,3736164937,3501741890,3265478751,3433712980,1106041591,1340463100,1576976609,1408749034,2043211483,2009195472,1708848333,1809054150,832877231,1068351396,766945465,599762354,159417987,126454664,361929877,463180190,2709260871,2943682380,3178106961,3009879386,2572697195,2538681184,2236228733,2336434550,3509871135,3745345300,3441850377,3274667266,3910161971,3877198648,4110568485,4211818798,2597806476,2497604743,2261089178,2295101073,2733856160,2902087851,3202437046,2968011453,3936291284,3835036895,4136440770,4169408201,3535486456,3702665459,3467192302,3231722213,2051518780,1951317047,1716890410,1750902305,1113818384,1282050075,1584504582,1350078989,168810852,67556463,371049330,404016761,841739592,1008918595,775550814,540080725,3969562369,3801332234,4035489047,4269907996,3569255213,3669462566,3366754619,3332740144,2631065433,2463879762,2160117071,2395588676,2767645557,2868897406,3102011747,3069049960,202008497,33778362,270040487,504459436,875451293,975658646,675039627,641025152,2084704233,1917518562,1615861247,1851332852,1147550661,1248802510,1484005843,1451044056,933301370,967311729,733156972,632953703,260388950,25965917,328671808,496906059,1206477858,1239443753,1543208500,1441952575,2144161806,1908694277,1675577880,1842759443,3610369226,3644379585,3408119516,3307916247,4011190502,3776767469,4077384432,4245618683,2809771154,2842737049,3144396420,3043140495,2673705150,2438237621,2203032232,2370213795],G=[0,185469197,370938394,487725847,741876788,657861945,975451694,824852259,1483753576,1400783205,1315723890,1164071807,1950903388,2135319889,1649704518,1767536459,2967507152,3152976349,2801566410,2918353863,2631447780,2547432937,2328143614,2177544179,3901806776,3818836405,4270639778,4118987695,3299409036,3483825537,3535072918,3652904859,2077965243,1893020342,1841768865,1724457132,1474502543,1559041666,1107234197,1257309336,598438867,681933534,901210569,1052338372,261314535,77422314,428819965,310463728,3409685355,3224740454,3710368113,3593056380,3875770207,3960309330,4045380933,4195456072,2471224067,2554718734,2237133081,2388260884,3212035895,3028143674,2842678573,2724322336,4138563181,4255350624,3769721975,3955191162,3667219033,3516619604,3431546947,3347532110,2933734917,2782082824,3099667487,3016697106,2196052529,2313884476,2499348523,2683765030,1179510461,1296297904,1347548327,1533017514,1786102409,1635502980,2087309459,2003294622,507358933,355706840,136428751,53458370,839224033,957055980,605657339,790073846,2373340630,2256028891,2607439820,2422494913,2706270690,2856345839,3075636216,3160175349,3573941694,3725069491,3273267108,3356761769,4181598602,4063242375,4011996048,3828103837,1033297158,915985419,730517276,545572369,296679730,446754879,129166120,213705253,1709610350,1860738147,1945798516,2029293177,1239331162,1120974935,1606591296,1422699085,4148292826,4233094615,3781033664,3931371469,3682191598,3497509347,3446004468,3328955385,2939266226,2755636671,3106780840,2988687269,2198438022,2282195339,2501218972,2652609425,1201765386,1286567175,1371368976,1521706781,1805211710,1620529459,2105887268,1988838185,533804130,350174575,164439672,46346101,870912086,954669403,636813900,788204353,2358957921,2274680428,2592523643,2441661558,2695033685,2880240216,3065962831,3182487618,3572145929,3756299780,3270937875,3388507166,4174560061,4091327024,4006521127,3854606378,1014646705,930369212,711349675,560487590,272786309,457992840,106852767,223377554,1678381017,1862534868,1914052035,2031621326,1211247597,1128014560,1580087799,1428173050,32283319,182621114,401639597,486441376,768917123,651868046,1003007129,818324884,1503449823,1385356242,1333838021,1150208456,1973745387,2125135846,1673061617,1756818940,2970356327,3120694122,2802849917,2887651696,2637442643,2520393566,2334669897,2149987652,3917234703,3799141122,4284502037,4100872472,3309594171,3460984630,3545789473,3629546796,2050466060,1899603969,1814803222,1730525723,1443857720,1560382517,1075025698,1260232239,575138148,692707433,878443390,1062597235,243256656,91341917,409198410,325965383,3403100636,3252238545,3704300486,3620022987,3874428392,3990953189,4042459122,4227665663,2460449204,2578018489,2226875310,2411029155,3198115200,3046200461,2827177882,2743944855],j=[0,218828297,437656594,387781147,875313188,958871085,775562294,590424639,1750626376,1699970625,1917742170,2135253587,1551124588,1367295589,1180849278,1265195639,3501252752,3720081049,3399941250,3350065803,3835484340,3919042237,4270507174,4085369519,3102249176,3051593425,2734591178,2952102595,2361698556,2177869557,2530391278,2614737639,3145456443,3060847922,2708326185,2892417312,2404901663,2187128086,2504130317,2555048196,3542330227,3727205754,3375740769,3292445032,3876557655,3926170974,4246310725,4027744588,1808481195,1723872674,1910319033,2094410160,1608975247,1391201670,1173430173,1224348052,59984867,244860394,428169201,344873464,935293895,984907214,766078933,547512796,1844882806,1627235199,2011214180,2062270317,1507497298,1423022939,1137477952,1321699145,95345982,145085239,532201772,313773861,830661914,1015671571,731183368,648017665,3175501286,2957853679,2807058932,2858115069,2305455554,2220981195,2474404304,2658625497,3575528878,3625268135,3473416636,3254988725,3778151818,3963161475,4213447064,4130281361,3599595085,3683022916,3432737375,3247465558,3802222185,4020912224,4172763771,4122762354,3201631749,3017672716,2764249623,2848461854,2331590177,2280796200,2431590963,2648976442,104699613,188127444,472615631,287343814,840019705,1058709744,671593195,621591778,1852171925,1668212892,1953757831,2037970062,1514790577,1463996600,1080017571,1297403050,3673637356,3623636965,3235995134,3454686199,4007360968,3822090177,4107101658,4190530515,2997825956,3215212461,2830708150,2779915199,2256734592,2340947849,2627016082,2443058075,172466556,122466165,273792366,492483431,1047239e3,861968209,612205898,695634755,1646252340,1863638845,2013908262,1963115311,1446242576,1530455833,1277555970,1093597963,1636604631,1820824798,2073724613,1989249228,1436590835,1487645946,1337376481,1119727848,164948639,81781910,331544205,516552836,1039717051,821288114,669961897,719700128,2973530695,3157750862,2871682645,2787207260,2232435299,2283490410,2667994737,2450346104,3647212047,3564045318,3279033885,3464042516,3980931627,3762502690,4150144569,4199882800,3070356634,3121275539,2904027272,2686254721,2200818878,2384911031,2570832044,2486224549,3747192018,3528626907,3310321856,3359936201,3950355702,3867060991,4049844452,4234721005,1739656202,1790575107,2108100632,1890328081,1402811438,1586903591,1233856572,1149249077,266959938,48394827,369057872,418672217,1002783846,919489135,567498868,752375421,209336225,24197544,376187827,459744698,945164165,895287692,574624663,793451934,1679968233,1764313568,2117360635,1933530610,1343127501,1560637892,1243112415,1192455638,3704280881,3519142200,3336358691,3419915562,3907448597,3857572124,4075877127,4294704398,3029510009,3113855344,2927934315,2744104290,2159976285,2377486676,2594734927,2544078150],Z=[0,151849742,303699484,454499602,607398968,758720310,908999204,1059270954,1214797936,1097159550,1517440620,1400849762,1817998408,1699839814,2118541908,2001430874,2429595872,2581445614,2194319100,2345119218,3034881240,3186202582,2801699524,2951971274,3635996816,3518358430,3399679628,3283088770,4237083816,4118925222,4002861748,3885750714,1002142683,850817237,698445255,548169417,529487843,377642221,227885567,77089521,1943217067,2061379749,1640576439,1757691577,1474760595,1592394909,1174215055,1290801793,2875968315,2724642869,3111247143,2960971305,2405426947,2253581325,2638606623,2487810577,3808662347,3926825029,4044981591,4162096729,3342319475,3459953789,3576539503,3693126241,1986918061,2137062819,1685577905,1836772287,1381620373,1532285339,1078185097,1229899655,1040559837,923313619,740276417,621982671,439452389,322734571,137073913,19308535,3871163981,4021308739,4104605777,4255800159,3263785589,3414450555,3499326569,3651041127,2933202493,2815956275,3167684641,3049390895,2330014213,2213296395,2566595609,2448830231,1305906550,1155237496,1607244650,1455525988,1776460110,1626319424,2079897426,1928707164,96392454,213114376,396673818,514443284,562755902,679998e3,865136418,983426092,3708173718,3557504664,3474729866,3323011204,4180808110,4030667424,3945269170,3794078908,2507040230,2623762152,2272556026,2390325492,2975484382,3092726480,2738905026,2857194700,3973773121,3856137295,4274053469,4157467219,3371096953,3252932727,3673476453,3556361835,2763173681,2915017791,3064510765,3215307299,2156299017,2307622919,2459735317,2610011675,2081048481,1963412655,1846563261,1729977011,1480485785,1362321559,1243905413,1126790795,878845905,1030690015,645401037,796197571,274084841,425408743,38544885,188821243,3613494426,3731654548,3313212038,3430322568,4082475170,4200115116,3780097726,3896688048,2668221674,2516901860,2366882550,2216610296,3141400786,2989552604,2837966542,2687165888,1202797690,1320957812,1437280870,1554391400,1669664834,1787304780,1906247262,2022837584,265905162,114585348,499347990,349075736,736970802,585122620,972512814,821712160,2595684844,2478443234,2293045232,2174754046,3196267988,3079546586,2895723464,2777952454,3537852828,3687994002,3234156416,3385345166,4142626212,4293295786,3841024952,3992742070,174567692,57326082,410887952,292596766,777231668,660510266,1011452712,893681702,1108339068,1258480242,1343618912,1494807662,1715193156,1865862730,1948373848,2100090966,2701949495,2818666809,3004591147,3122358053,2235061775,2352307457,2535604243,2653899549,3915653703,3764988233,4219352155,4067639125,3444575871,3294430577,3746175075,3594982253,836553431,953270745,600235211,718002117,367585007,484830689,133361907,251657213,2041877159,1891211689,1806599355,1654886325,1568718495,1418573201,1335535747,1184342925];function X(d){for(var y=[],C=0;C>2,this._Ke[J][y%4]=k[y],this._Kd[d-J][y%4]=k[y];for(var _=0,L=h,N;L>16&255]<<24^f[N>>8&255]<<16^f[N&255]<<8^f[N>>24&255]^s[_]<<24,_+=1,h!=8)for(var y=1;y>8&255]<<8^f[N>>16&255]<<16^f[N>>24&255]<<24;for(var y=h/2+1;y>2,H=L%4,this._Ke[q][H]=k[y],this._Kd[d-q][H]=k[y++],L++}for(var q=1;q>24&255]^G[N>>16&255]^j[N>>8&255]^Z[N&255]},U.prototype.encrypt=function(d){if(d.length!=16)throw new Error("invalid plaintext size (must be 16 bytes)");for(var y=this._Ke.length-1,C=[0,0,0,0],h=X(d),k=0;k<4;k++)h[k]^=this._Ke[0][k];for(var J=1;J>24&255]^T[h[(k+1)%4]>>16&255]^A[h[(k+2)%4]>>8&255]^O[h[(k+3)%4]&255]^this._Ke[J][k];h=C.slice()}for(var _=i(16),L,k=0;k<4;k++)L=this._Ke[y][k],_[4*k]=(f[h[k]>>24&255]^L>>24)&255,_[4*k+1]=(f[h[(k+1)%4]>>16&255]^L>>16)&255,_[4*k+2]=(f[h[(k+2)%4]>>8&255]^L>>8)&255,_[4*k+3]=(f[h[(k+3)%4]&255]^L)&255;return _},U.prototype.decrypt=function(d){if(d.length!=16)throw new Error("invalid ciphertext size (must be 16 bytes)");for(var y=this._Kd.length-1,C=[0,0,0,0],h=X(d),k=0;k<4;k++)h[k]^=this._Kd[0][k];for(var J=1;J>24&255]^F[h[(k+3)%4]>>16&255]^I[h[(k+2)%4]>>8&255]^D[h[(k+1)%4]&255]^this._Kd[J][k];h=C.slice()}for(var _=i(16),L,k=0;k<4;k++)L=this._Kd[y][k],_[4*k]=(m[h[k]>>24&255]^L>>24)&255,_[4*k+1]=(m[h[(k+3)%4]>>16&255]^L>>16)&255,_[4*k+2]=(m[h[(k+2)%4]>>8&255]^L>>8)&255,_[4*k+3]=(m[h[(k+1)%4]&255]^L)&255;return _};var M=function(d){if(!(this instanceof M))throw Error("AES must be instanitated with `new`");this.description="Electronic Code Block",this.name="ecb",this._aes=new U(d)};M.prototype.encrypt=function(d){if(d=n(d),d.length%16!==0)throw new Error("invalid plaintext size (must be multiple of 16 bytes)");for(var y=i(d.length),C=i(16),h=0;h=0;--y)this._counter[y]=d%256,d=d>>8},l.prototype.setBytes=function(d){if(d=n(d,!0),d.length!=16)throw new Error("invalid counter bytes size (must be 16 bytes)");this._counter=d},l.prototype.increment=function(){for(var d=15;d>=0;d--)if(this._counter[d]===255)this._counter[d]=0;else{this._counter[d]++;break}};var p=function(d,y){if(!(this instanceof p))throw Error("AES must be instanitated with `new`");this.description="Counter",this.name="ctr",y instanceof l||(y=new l(y)),this._counter=y,this._remainingCounter=null,this._remainingCounterIndex=16,this._aes=new U(d)};p.prototype.encrypt=function(d){for(var y=n(d,!0),C=0;C16)throw new Error("PKCS#7 padding byte out of range");for(var C=d.length-y,h=0;h{"use strict";Object.defineProperty(Up,"__esModule",{value:!0});Up.version=void 0;Up.version="json-wallets/5.7.0"});var _b=P(an=>{"use strict";Object.defineProperty(an,"__esModule",{value:!0});an.uuidV4=an.searchPath=an.getPassword=an.zpad=an.looseArrayify=void 0;var Hp=De(),EA=Cr();function wG(t){return typeof t=="string"&&t.substring(0,2)!=="0x"&&(t="0x"+t),(0,Hp.arrayify)(t)}an.looseArrayify=wG;function AG(t,e){for(t=String(t);t.length{"use strict";var TG=pi&&pi.__extends||function(){var t=function(e,r){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,i){n.__proto__=i}||function(n,i){for(var a in i)Object.prototype.hasOwnProperty.call(i,a)&&(n[a]=i[a])},t(e,r)};return function(e,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");t(e,r);function n(){this.constructor=e}e.prototype=r===null?Object.create(r):(n.prototype=r.prototype,new n)}}(),kG=pi&&pi.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(pi,"__esModule",{value:!0});pi.decrypt=pi.CrowdsaleAccount=void 0;var SA=kG(Eb()),CG=Vt(),_A=De(),OG=Bt(),PG=kp(),MG=Cr(),BG=Ve(),FG=re(),LG=Sb(),RG=new FG.Logger(LG.version),zp=_b(),TA=function(t){TG(e,t);function e(){return t!==null&&t.apply(this,arguments)||this}return e.prototype.isCrowdsaleAccount=function(r){return!!(r&&r._isCrowdsaleAccount)},e}(BG.Description);pi.CrowdsaleAccount=TA;function IG(t,e){var r=JSON.parse(t);e=(0,zp.getPassword)(e);var n=(0,CG.getAddress)((0,zp.searchPath)(r,"ethaddr")),i=(0,zp.looseArrayify)((0,zp.searchPath)(r,"encseed"));(!i||i.length%16!==0)&&RG.throwArgumentError("invalid encseed","json",t);for(var a=(0,_A.arrayify)((0,PG.pbkdf2)(e,e,2e3,32,"sha256")).slice(0,16),o=i.slice(0,16),c=i.slice(16),u=new SA.default.ModeOfOperation.cbc(a,o),s=SA.default.padding.pkcs7.strip((0,_A.arrayify)(u.decrypt(c))),f="",m=0;m{"use strict";Object.defineProperty(Ca,"__esModule",{value:!0});Ca.getJsonWalletAddress=Ca.isKeystoreWallet=Ca.isCrowdsaleWallet=void 0;var CA=Vt();function OA(t){var e=null;try{e=JSON.parse(t)}catch{return!1}return e.encseed&&e.ethaddr}Ca.isCrowdsaleWallet=OA;function PA(t){var e=null;try{e=JSON.parse(t)}catch{return!1}return!(!e.version||parseInt(e.version)!==e.version||parseInt(e.version)!==3)}Ca.isKeystoreWallet=PA;function NG(t){if(OA(t))try{return(0,CA.getAddress)(JSON.parse(t).ethaddr)}catch{return null}if(PA(t))try{return(0,CA.getAddress)(JSON.parse(t).address)}catch{return null}return null}Ca.getJsonWalletAddress=NG});var FA=P((Tb,BA)=>{"use strict";(function(t){function r(T){let A=new Uint32Array([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]),O=1779033703,B=3144134277,F=1013904242,I=2773480762,D=1359893119,z=2600822924,G=528734635,j=1541459225,Z=new Uint32Array(64);function X(p){let g=0,S=p.length;for(;S>=64;){let x=O,d=B,y=F,C=I,h=D,k=z,J=G,_=j,L,N,q,H,W;for(N=0;N<16;N++)q=g+N*4,Z[N]=(p[q]&255)<<24|(p[q+1]&255)<<16|(p[q+2]&255)<<8|p[q+3]&255;for(N=16;N<64;N++)L=Z[N-2],H=(L>>>17|L<<32-17)^(L>>>19|L<<32-19)^L>>>10,L=Z[N-15],W=(L>>>7|L<<32-7)^(L>>>18|L<<32-18)^L>>>3,Z[N]=(H+Z[N-7]|0)+(W+Z[N-16]|0)|0;for(N=0;N<64;N++)H=(((h>>>6|h<<32-6)^(h>>>11|h<<32-11)^(h>>>25|h<<32-25))+(h&k^~h&J)|0)+(_+(A[N]+Z[N]|0)|0)|0,W=((x>>>2|x<<32-2)^(x>>>13|x<<32-13)^(x>>>22|x<<32-22))+(x&d^x&y^d&y)|0,_=J,J=k,k=h,h=C+H|0,C=y,y=d,d=x,x=H+W|0;O=O+x|0,B=B+d|0,F=F+y|0,I=I+C|0,D=D+h|0,z=z+k|0,G=G+J|0,j=j+_|0,g+=64,S-=64}}X(T);let U,M=T.length%64,v=T.length/536870912|0,E=T.length<<3,b=M<56?56:120,l=T.slice(T.length-M,T.length);for(l.push(128),U=M+1;U>>24&255),l.push(v>>>16&255),l.push(v>>>8&255),l.push(v>>>0&255),l.push(E>>>24&255),l.push(E>>>16&255),l.push(E>>>8&255),l.push(E>>>0&255),X(l),[O>>>24&255,O>>>16&255,O>>>8&255,O>>>0&255,B>>>24&255,B>>>16&255,B>>>8&255,B>>>0&255,F>>>24&255,F>>>16&255,F>>>8&255,F>>>0&255,I>>>24&255,I>>>16&255,I>>>8&255,I>>>0&255,D>>>24&255,D>>>16&255,D>>>8&255,D>>>0&255,z>>>24&255,z>>>16&255,z>>>8&255,z>>>0&255,G>>>24&255,G>>>16&255,G>>>8&255,G>>>0&255,j>>>24&255,j>>>16&255,j>>>8&255,j>>>0&255]}function n(T,A,O){T=T.length<=64?T:r(T);let B=64+A.length+4,F=new Array(B),I=new Array(64),D,z=[];for(D=0;D<64;D++)F[D]=54;for(D=0;D=B-4;j--){if(F[j]++,F[j]<=255)return;F[j]=0}}for(;O>=32;)G(),z=z.concat(r(I.concat(r(F)))),O-=32;return O>0&&(G(),z=z.concat(r(I.concat(r(F))).slice(0,O))),z}function i(T,A,O,B,F){let I;for(u(T,(2*O-1)*16,F,0,16),I=0;I<2*O;I++)c(T,I*16,F,16),o(F,B),u(F,0,T,A+I*16,16);for(I=0;I>>32-A}function o(T,A){u(T,0,A,0,16);for(let O=8;O>0;O-=2)A[4]^=a(A[0]+A[12],7),A[8]^=a(A[4]+A[0],9),A[12]^=a(A[8]+A[4],13),A[0]^=a(A[12]+A[8],18),A[9]^=a(A[5]+A[1],7),A[13]^=a(A[9]+A[5],9),A[1]^=a(A[13]+A[9],13),A[5]^=a(A[1]+A[13],18),A[14]^=a(A[10]+A[6],7),A[2]^=a(A[14]+A[10],9),A[6]^=a(A[2]+A[14],13),A[10]^=a(A[6]+A[2],18),A[3]^=a(A[15]+A[11],7),A[7]^=a(A[3]+A[15],9),A[11]^=a(A[7]+A[3],13),A[15]^=a(A[11]+A[7],18),A[1]^=a(A[0]+A[3],7),A[2]^=a(A[1]+A[0],9),A[3]^=a(A[2]+A[1],13),A[0]^=a(A[3]+A[2],18),A[6]^=a(A[5]+A[4],7),A[7]^=a(A[6]+A[5],9),A[4]^=a(A[7]+A[6],13),A[5]^=a(A[4]+A[7],18),A[11]^=a(A[10]+A[9],7),A[8]^=a(A[11]+A[10],9),A[9]^=a(A[8]+A[11],13),A[10]^=a(A[9]+A[8],18),A[12]^=a(A[15]+A[14],7),A[13]^=a(A[12]+A[15],9),A[14]^=a(A[13]+A[12],13),A[15]^=a(A[14]+A[13],18);for(let O=0;O<16;++O)T[O]+=A[O]}function c(T,A,O,B){for(let F=0;F=256)return!1}return!0}function f(T,A){if(typeof T!="number"||T%1)throw new Error("invalid "+A);return T}function m(T,A,O,B,F,I,D){if(O=f(O,"N"),B=f(B,"r"),F=f(F,"p"),I=f(I,"dkLen"),O===0||(O&O-1)!==0)throw new Error("N must be power of 2");if(O>2147483647/128/B)throw new Error("N too large");if(B>2147483647/128/F)throw new Error("r too large");if(!s(T))throw new Error("password must be an array or buffer");if(T=Array.prototype.slice.call(T),!s(A))throw new Error("salt must be an array or buffer");A=Array.prototype.slice.call(A);let z=n(T,A,F*128*B),G=new Uint32Array(F*32*B);for(let h=0;hd&&(h=d);for(let J=0;Jd&&(h=d);for(let J=0;J>0&255),z.push(G[J]>>8&255),z.push(G[J]>>16&255),z.push(G[J]>>24&255);let k=n(T,z,I);return D&&D(null,1,k),k}D&&y(C)};if(!D)for(;;){let h=C();if(h!=null)return h}C()}let w={scrypt:function(T,A,O,B,F,I,D){return new Promise(function(z,G){let j=0;D&&D(0),m(T,A,O,B,F,I,function(Z,X,U){if(Z)G(Z);else if(U)D&&j!==1&&D(1),z(new Uint8Array(U));else if(D&&X!==j)return j=X,D(X)})})},syncScrypt:function(T,A,O,B,F,I){return new Uint8Array(m(T,A,O,B,F,I))}};typeof Tb<"u"?BA.exports=w:typeof define=="function"&&define.amd?define(w):t&&(t.scrypt&&(t._scrypt=t.scrypt),t.scrypt=w)})(Tb)});var HA=P(Kr=>{"use strict";var DG=Kr&&Kr.__extends||function(){var t=function(e,r){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,i){n.__proto__=i}||function(n,i){for(var a in i)Object.prototype.hasOwnProperty.call(i,a)&&(n[a]=i[a])},t(e,r)};return function(e,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");t(e,r);function n(){this.constructor=e}e.prototype=r===null?Object.create(r):(n.prototype=r.prototype,new n)}}(),JG=Kr&&Kr.__awaiter||function(t,e,r,n){function i(a){return a instanceof r?a:new r(function(o){o(a)})}return new(r||(r=Promise))(function(a,o){function c(f){try{s(n.next(f))}catch(m){o(m)}}function u(f){try{s(n.throw(f))}catch(m){o(m)}}function s(f){f.done?a(f.value):i(f.value).then(c,u)}s((n=n.apply(t,e||[])).next())})},qG=Kr&&Kr.__generator||function(t,e){var r={label:0,sent:function(){if(a[0]&1)throw a[1];return a[1]},trys:[],ops:[]},n,i,a,o;return o={next:c(0),throw:c(1),return:c(2)},typeof Symbol=="function"&&(o[Symbol.iterator]=function(){return this}),o;function c(s){return function(f){return u([s,f])}}function u(s){if(n)throw new TypeError("Generator is already executing.");for(;r;)try{if(n=1,i&&(a=s[0]&2?i.return:s[0]?i.throw||((a=i.return)&&a.call(i),0):i.next)&&!(a=a.call(i,s[1])).done)return a;switch(i=0,a&&(s=[s[0]&2,a.value]),s[0]){case 0:case 1:a=s;break;case 4:return r.label++,{value:s[1],done:!1};case 5:r.label++,i=s[1],s=[0];continue;case 7:s=r.ops.pop(),r.trys.pop();continue;default:if(a=r.trys,!(a=a.length>0&&a[a.length-1])&&(s[0]===6||s[0]===2)){r=0;continue}if(s[0]===3&&(!a||s[1]>a[0]&&s[1]{"use strict";Object.defineProperty(Mr,"__esModule",{value:!0});Mr.decryptJsonWalletSync=Mr.decryptJsonWallet=Mr.getJsonWalletAddress=Mr.isKeystoreWallet=Mr.isCrowdsaleWallet=Mr.encryptKeystore=Mr.decryptKeystoreSync=Mr.decryptKeystore=Mr.decryptCrowdsale=void 0;var Pb=kA();Object.defineProperty(Mr,"decryptCrowdsale",{enumerable:!0,get:function(){return Pb.decrypt}});var qo=MA();Object.defineProperty(Mr,"getJsonWalletAddress",{enumerable:!0,get:function(){return qo.getJsonWalletAddress}});Object.defineProperty(Mr,"isCrowdsaleWallet",{enumerable:!0,get:function(){return qo.isCrowdsaleWallet}});Object.defineProperty(Mr,"isKeystoreWallet",{enumerable:!0,get:function(){return qo.isKeystoreWallet}});var wl=HA();Object.defineProperty(Mr,"decryptKeystore",{enumerable:!0,get:function(){return wl.decrypt}});Object.defineProperty(Mr,"decryptKeystoreSync",{enumerable:!0,get:function(){return wl.decryptSync}});Object.defineProperty(Mr,"encryptKeystore",{enumerable:!0,get:function(){return wl.encrypt}});function ZG(t,e,r){if((0,qo.isCrowdsaleWallet)(t)){r&&r(0);var n=(0,Pb.decrypt)(t,e);return r&&r(1),Promise.resolve(n)}return(0,qo.isKeystoreWallet)(t)?(0,wl.decrypt)(t,e,r):Promise.reject(new Error("invalid JSON wallet"))}Mr.decryptJsonWallet=ZG;function QG(t,e){if((0,qo.isCrowdsaleWallet)(t))return(0,Pb.decrypt)(t,e);if((0,qo.isKeystoreWallet)(t))return(0,wl.decryptSync)(t,e);throw new Error("invalid JSON wallet")}Mr.decryptJsonWalletSync=QG});var zA=P(Xp=>{"use strict";Object.defineProperty(Xp,"__esModule",{value:!0});Xp.version=void 0;Xp.version="wallet/5.7.0"});var Lb=P(Ct=>{"use strict";var WG=Ct&&Ct.__extends||function(){var t=function(e,r){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,i){n.__proto__=i}||function(n,i){for(var a in i)Object.prototype.hasOwnProperty.call(i,a)&&(n[a]=i[a])},t(e,r)};return function(e,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");t(e,r);function n(){this.constructor=e}e.prototype=r===null?Object.create(r):(n.prototype=r.prototype,new n)}}(),GA=Ct&&Ct.__awaiter||function(t,e,r,n){function i(a){return a instanceof r?a:new r(function(o){o(a)})}return new(r||(r=Promise))(function(a,o){function c(f){try{s(n.next(f))}catch(m){o(m)}}function u(f){try{s(n.throw(f))}catch(m){o(m)}}function s(f){f.done?a(f.value):i(f.value).then(c,u)}s((n=n.apply(t,e||[])).next())})},XA=Ct&&Ct.__generator||function(t,e){var r={label:0,sent:function(){if(a[0]&1)throw a[1];return a[1]},trys:[],ops:[]},n,i,a,o;return o={next:c(0),throw:c(1),return:c(2)},typeof Symbol=="function"&&(o[Symbol.iterator]=function(){return this}),o;function c(s){return function(f){return u([s,f])}}function u(s){if(n)throw new TypeError("Generator is already executing.");for(;r;)try{if(n=1,i&&(a=s[0]&2?i.return:s[0]?i.throw||((a=i.return)&&a.call(i),0):i.next)&&!(a=a.call(i,s[1])).done)return a;switch(i=0,a&&(s=[s[0]&2,a.value]),s[0]){case 0:case 1:a=s;break;case 4:return r.label++,{value:s[1],done:!1};case 5:r.label++,i=s[1],s=[0];continue;case 7:s=r.ops.pop(),r.trys.pop();continue;default:if(a=r.trys,!(a=a.length>0&&a[a.length-1])&&(s[0]===6||s[0]===2)){r=0;continue}if(s[0]===3&&(!a||s[1]>a[0]&&s[1]{"use strict";Object.defineProperty(Kp,"__esModule",{value:!0});Kp.version=void 0;Kp.version="networks/5.7.1"});var Rb=P(Qp=>{"use strict";Object.defineProperty(Qp,"__esModule",{value:!0});Qp.getNetwork=void 0;var sX=re(),cX=QA(),WA=new sX.Logger(cX.version);function uX(t){return t&&typeof t.renetwork=="function"}function qi(t){var e=function(r,n){n==null&&(n={});var i=[];if(r.InfuraProvider&&n.infura!=="-")try{i.push(new r.InfuraProvider(t,n.infura))}catch{}if(r.EtherscanProvider&&n.etherscan!=="-")try{i.push(new r.EtherscanProvider(t,n.etherscan))}catch{}if(r.AlchemyProvider&&n.alchemy!=="-")try{i.push(new r.AlchemyProvider(t,n.alchemy))}catch{}if(r.PocketProvider&&n.pocket!=="-"){var a=["goerli","ropsten","rinkeby","sepolia"];try{var o=new r.PocketProvider(t,n.pocket);o.network&&a.indexOf(o.network.name)===-1&&i.push(o)}catch{}}if(r.CloudflareProvider&&n.cloudflare!=="-")try{i.push(new r.CloudflareProvider(t))}catch{}if(r.AnkrProvider&&n.ankr!=="-")try{var a=["ropsten"],o=new r.AnkrProvider(t,n.ankr);o.network&&a.indexOf(o.network.name)===-1&&i.push(o)}catch{}if(i.length===0)return null;if(r.FallbackProvider){var c=1;return n.quorum!=null?c=n.quorum:t==="homestead"&&(c=2),new r.FallbackProvider(i,c)}return i[0]};return e.renetwork=function(r){return qi(r)},e}function Zp(t,e){var r=function(n,i){return n.JsonRpcProvider?new n.JsonRpcProvider(t,e):null};return r.renetwork=function(n){return Zp(t,n)},r}var YA={chainId:1,ensAddress:"0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e",name:"homestead",_defaultProvider:qi("homestead")},$A={chainId:3,ensAddress:"0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e",name:"ropsten",_defaultProvider:qi("ropsten")},eE={chainId:63,name:"classicMordor",_defaultProvider:Zp("https://www.ethercluster.com/mordor","classicMordor")},Vp={unspecified:{chainId:0,name:"unspecified"},homestead:YA,mainnet:YA,morden:{chainId:2,name:"morden"},ropsten:$A,testnet:$A,rinkeby:{chainId:4,ensAddress:"0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e",name:"rinkeby",_defaultProvider:qi("rinkeby")},kovan:{chainId:42,name:"kovan",_defaultProvider:qi("kovan")},goerli:{chainId:5,ensAddress:"0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e",name:"goerli",_defaultProvider:qi("goerli")},kintsugi:{chainId:1337702,name:"kintsugi"},sepolia:{chainId:11155111,name:"sepolia",_defaultProvider:qi("sepolia")},classic:{chainId:61,name:"classic",_defaultProvider:Zp("https://www.ethercluster.com/etc","classic")},classicMorden:{chainId:62,name:"classicMorden"},classicMordor:eE,classicTestnet:eE,classicKotti:{chainId:6,name:"classicKotti",_defaultProvider:Zp("https://www.ethercluster.com/kotti","classicKotti")},xdai:{chainId:100,name:"xdai"},matic:{chainId:137,name:"matic",_defaultProvider:qi("matic")},maticmum:{chainId:80001,name:"maticmum"},optimism:{chainId:10,name:"optimism",_defaultProvider:qi("optimism")},"optimism-kovan":{chainId:69,name:"optimism-kovan"},"optimism-goerli":{chainId:420,name:"optimism-goerli"},arbitrum:{chainId:42161,name:"arbitrum"},"arbitrum-rinkeby":{chainId:421611,name:"arbitrum-rinkeby"},"arbitrum-goerli":{chainId:421613,name:"arbitrum-goerli"},bnb:{chainId:56,name:"bnb"},bnbt:{chainId:97,name:"bnbt"}};function lX(t){if(t==null)return null;if(typeof t=="number"){for(var e in Vp){var r=Vp[e];if(r.chainId===t)return{name:r.name,chainId:r.chainId,ensAddress:r.ensAddress||null,_defaultProvider:r._defaultProvider||null}}return{chainId:t,name:"unknown"}}if(typeof t=="string"){var n=Vp[t];return n==null?null:{name:n.name,chainId:n.chainId,ensAddress:n.ensAddress,_defaultProvider:n._defaultProvider||null}}var i=Vp[t.name];if(!i)return typeof t.chainId!="number"&&WA.throwArgumentError("invalid network chainId","network",t),t;t.chainId!==0&&t.chainId!==i.chainId&&WA.throwArgumentError("network chainId mismatch","network",t);var a=t._defaultProvider||null;return a==null&&i._defaultProvider&&(uX(i._defaultProvider)?a=i._defaultProvider.renetwork(t):a=i._defaultProvider),{name:t.name,chainId:i.chainId,ensAddress:t.ensAddress||i.ensAddress||null,_defaultProvider:a}}Qp.getNetwork=lX});var Ib=P(Wp=>{"use strict";Object.defineProperty(Wp,"__esModule",{value:!0});Wp.version=void 0;Wp.version="web/5.7.1"});var iE=P(vi=>{"use strict";var fX=vi&&vi.__awaiter||function(t,e,r,n){function i(a){return a instanceof r?a:new r(function(o){o(a)})}return new(r||(r=Promise))(function(a,o){function c(f){try{s(n.next(f))}catch(m){o(m)}}function u(f){try{s(n.throw(f))}catch(m){o(m)}}function s(f){f.done?a(f.value):i(f.value).then(c,u)}s((n=n.apply(t,e||[])).next())})},dX=vi&&vi.__generator||function(t,e){var r={label:0,sent:function(){if(a[0]&1)throw a[1];return a[1]},trys:[],ops:[]},n,i,a,o;return o={next:c(0),throw:c(1),return:c(2)},typeof Symbol=="function"&&(o[Symbol.iterator]=function(){return this}),o;function c(s){return function(f){return u([s,f])}}function u(s){if(n)throw new TypeError("Generator is already executing.");for(;r;)try{if(n=1,i&&(a=s[0]&2?i.return:s[0]?i.throw||((a=i.return)&&a.call(i),0):i.next)&&!(a=a.call(i,s[1])).done)return a;switch(i=0,a&&(s=[s[0]&2,a.value]),s[0]){case 0:case 1:a=s;break;case 4:return r.label++,{value:s[1],done:!1};case 5:r.label++,i=s[1],s=[0];continue;case 7:s=r.ops.pop(),r.trys.pop();continue;default:if(a=r.trys,!(a=a.length>0&&a[a.length-1])&&(s[0]===6||s[0]===2)){r=0;continue}if(s[0]===3&&(!a||s[1]>a[0]&&s[1]{"use strict";var AX=on&&on.__awaiter||function(t,e,r,n){function i(a){return a instanceof r?a:new r(function(o){o(a)})}return new(r||(r=Promise))(function(a,o){function c(f){try{s(n.next(f))}catch(m){o(m)}}function u(f){try{s(n.throw(f))}catch(m){o(m)}}function s(f){f.done?a(f.value):i(f.value).then(c,u)}s((n=n.apply(t,e||[])).next())})},EX=on&&on.__generator||function(t,e){var r={label:0,sent:function(){if(a[0]&1)throw a[1];return a[1]},trys:[],ops:[]},n,i,a,o;return o={next:c(0),throw:c(1),return:c(2)},typeof Symbol=="function"&&(o[Symbol.iterator]=function(){return this}),o;function c(s){return function(f){return u([s,f])}}function u(s){if(n)throw new TypeError("Generator is already executing.");for(;r;)try{if(n=1,i&&(a=s[0]&2?i.return:s[0]?i.throw||((a=i.return)&&a.call(i),0):i.next)&&!(a=a.call(i,s[1])).done)return a;switch(i=0,a&&(s=[s[0]&2,a.value]),s[0]){case 0:case 1:a=s;break;case 4:return r.label++,{value:s[1],done:!1};case 5:r.label++,i=s[1],s=[0];continue;case 7:s=r.ops.pop(),r.trys.pop();continue;default:if(a=r.trys,!(a=a.length>0&&a[a.length-1])&&(s[0]===6||s[0]===2)){r=0;continue}if(s[0]===3&&(!a||s[1]>a[0]&&s[1]0&&n%1===0,"invalid connection throttle limit","connection.throttleLimit",n);var i=typeof t=="object"?t.throttleCallback:null,a=typeof t=="object"&&typeof t.throttleSlotInterval=="number"?t.throttleSlotInterval:100;En.assertArgument(a>0&&a%1===0,"invalid connection throttle slot interval","connection.throttleSlotInterval",a);var o=typeof t=="object"?!!t.errorPassThrough:!1,c={},u=null,s={method:"GET"},f=!1,m=2*60*1e3;if(typeof t=="string")u=t;else if(typeof t=="object"){if((t==null||t.url==null)&&En.throwArgumentError("missing URL","connection.url",t),u=t.url,typeof t.timeout=="number"&&t.timeout>0&&(m=t.timeout),t.headers)for(var w in t.headers)c[w.toLowerCase()]={key:w,value:String(t.headers[w])},["if-none-match","if-modified-since"].indexOf(w.toLowerCase())>=0&&(f=!0);if(s.allowGzip=!!t.allowGzip,t.user!=null&&t.password!=null){u.substring(0,6)!=="https:"&&t.allowInsecureAuthentication!==!0&&En.throwError("basic authentication requires a secure https url",ji.Logger.errors.INVALID_ARGUMENT,{argument:"url",url:u,user:t.user,password:"[REDACTED]"});var T=t.user+":"+t.password;c.authorization={key:"Authorization",value:"Basic "+(0,aE.encode)((0,Sl.toUtf8Bytes)(T))}}t.skipFetchSetup!=null&&(s.skipFetchSetup=!!t.skipFetchSetup),t.fetchOptions!=null&&(s.fetchOptions=(0,Yp.shallowCopy)(t.fetchOptions))}var A=new RegExp("^data:([^;:]*)?(;base64)?,(.*)$","i"),O=u?u.match(A):null;if(O)try{var B={statusCode:200,statusMessage:"OK",headers:{"content-type":O[1]||"text/plain"},body:O[2]?(0,aE.decode)(O[3]):TX(O[3])},F=B.body;return r&&(F=r(B.body,B)),Promise.resolve(F)}catch(G){En.throwError("processing response error",ji.Logger.errors.SERVER_ERROR,{body:Pa(O[1],O[2]),error:G,requestBody:null,requestMethod:"GET",url:u})}e&&(s.method="POST",s.body=e,c["content-type"]==null&&(c["content-type"]={key:"Content-Type",value:"application/octet-stream"}),c["content-length"]==null&&(c["content-length"]={key:"Content-Length",value:String(e.length)}));var I={};Object.keys(c).forEach(function(G){var j=c[G];I[j.key]=j.value}),s.headers=I;var D=function(){var G=null,j=new Promise(function(X,U){m&&(G=setTimeout(function(){G!=null&&(G=null,U(En.makeError("timeout",ji.Logger.errors.TIMEOUT,{requestBody:Pa(s.body,I["content-type"]),requestMethod:s.method,timeout:m,url:u})))},m))}),Z=function(){G!=null&&(clearTimeout(G),G=null)};return{promise:j,cancel:Z}}(),z=function(){return AX(this,void 0,void 0,function(){var G,j,Z,l,X,U,M,v,E,b,l,p;return EX(this,function(g){switch(g.label){case 0:G=0,g.label=1;case 1:if(!(G=300)&&(D.cancel(),En.throwError("bad response",ji.Logger.errors.SERVER_ERROR,{status:j.statusCode,headers:j.headers,body:Pa(v,j.headers?j.headers["content-type"]:null),requestBody:Pa(s.body,I["content-type"]),requestMethod:s.method,url:u})),!r)return[3,18];g.label=11;case 11:return g.trys.push([11,13,,18]),[4,r(v,j)];case 12:return E=g.sent(),D.cancel(),[2,E];case 13:return b=g.sent(),b.throttleRetry&&Gc){o()&&n(new Error("retry limit reached"));return}var m=e.interval*parseInt(String(Math.random()*Math.pow(2,u)));me.ceiling&&(m=e.ceiling),setTimeout(s,m)}return null},function(f){o()&&n(f)})}s()})}on.poll=CX});var dE=P((Yre,fE)=>{"use strict";var e0="qpzry9x8gf2tvdw0s3jn54khce6mua7l",Nb={};for(_l=0;_l>25;return(t&33554431)<<5^-(e>>0&1)&996825010^-(e>>1&1)&642813549^-(e>>2&1)&513874426^-(e>>3&1)&1027748829^-(e>>4&1)&705979059}function uE(t){for(var e=1,r=0;r126)return"Invalid prefix ("+t+")";e=kc(e)^n>>5}for(e=kc(e),r=0;rr)throw new TypeError("Exceeds length limit");t=t.toLowerCase();var n=uE(t);if(typeof n=="string")throw new Error(n);for(var i=t+"1",a=0;a>5!==0)throw new Error("Non 5-bit word");n=kc(n)^o,i+=e0.charAt(o)}for(a=0;a<6;++a)n=kc(n);for(n^=1,a=0;a<6;++a){var c=n>>(5-a)*5&31;i+=e0.charAt(c)}return i}function lE(t,e){if(e=e||90,t.length<8)return t+" too short";if(t.length>e)return"Exceeds length limit";var r=t.toLowerCase(),n=t.toUpperCase();if(t!==r&&t!==n)return"Mixed-case string "+t;t=r;var i=t.lastIndexOf("1");if(i===-1)return"No separator character for "+t;if(i===0)return"Missing prefix for "+t;var a=t.slice(0,i),o=t.slice(i+1);if(o.length<6)return"Data too short";var c=uE(a);if(typeof c=="string")return c;for(var u=[],s=0;s=o.length)&&u.push(m)}return c!==1?"Invalid checksum for "+t:{prefix:a,words:u}}function PX(){var t=lE.apply(null,arguments);if(typeof t=="object")return t}function MX(t){var e=lE.apply(null,arguments);if(typeof e=="object")return e;throw new Error(e)}function r0(t,e,r,n){for(var i=0,a=0,o=(1<=r;)a-=r,c.push(i>>a&o);if(n)a>0&&c.push(i<=e)return"Excess padding";if(i<{"use strict";Object.defineProperty(t0,"__esModule",{value:!0});t0.version=void 0;t0.version="providers/5.7.2"});var Ma=P(bi=>{"use strict";Object.defineProperty(bi,"__esModule",{value:!0});bi.showThrottleMessage=bi.isCommunityResource=bi.isCommunityResourcable=bi.Formatter=void 0;var Db=Vt(),Ui=Tr(),mi=De(),IX=Ao(),NX=Ve(),pE=Ji(),DX=re(),JX=et(),Tl=new DX.Logger(JX.version),qX=function(){function t(){this.formats=this.getDefaultFormats()}return t.prototype.getDefaultFormats=function(){var e=this,r={},n=this.address.bind(this),i=this.bigNumber.bind(this),a=this.blockTag.bind(this),o=this.data.bind(this),c=this.hash.bind(this),u=this.hex.bind(this),s=this.number.bind(this),f=this.type.bind(this),m=function(w){return e.data(w,!0)};return r.transaction={hash:c,type:f,accessList:t.allowNull(this.accessList.bind(this),null),blockHash:t.allowNull(c,null),blockNumber:t.allowNull(s,null),transactionIndex:t.allowNull(s,null),confirmations:t.allowNull(s,null),from:n,gasPrice:t.allowNull(i),maxPriorityFeePerGas:t.allowNull(i),maxFeePerGas:t.allowNull(i),gasLimit:i,to:t.allowNull(n,null),value:i,nonce:s,data:o,r:t.allowNull(this.uint256),s:t.allowNull(this.uint256),v:t.allowNull(s),creates:t.allowNull(n,null),raw:t.allowNull(o)},r.transactionRequest={from:t.allowNull(n),nonce:t.allowNull(s),gasLimit:t.allowNull(i),gasPrice:t.allowNull(i),maxPriorityFeePerGas:t.allowNull(i),maxFeePerGas:t.allowNull(i),to:t.allowNull(n),value:t.allowNull(i),data:t.allowNull(m),type:t.allowNull(s),accessList:t.allowNull(this.accessList.bind(this),null)},r.receiptLog={transactionIndex:s,blockNumber:s,transactionHash:c,address:n,topics:t.arrayOf(c),data:o,logIndex:s,blockHash:c},r.receipt={to:t.allowNull(this.address,null),from:t.allowNull(this.address,null),contractAddress:t.allowNull(n,null),transactionIndex:s,root:t.allowNull(u),gasUsed:i,logsBloom:t.allowNull(o),blockHash:c,transactionHash:c,logs:t.arrayOf(this.receiptLog.bind(this)),blockNumber:s,confirmations:t.allowNull(s,null),cumulativeGasUsed:i,effectiveGasPrice:t.allowNull(i),status:t.allowNull(s),type:f},r.block={hash:t.allowNull(c),parentHash:c,number:s,timestamp:s,nonce:t.allowNull(u),difficulty:this.difficulty.bind(this),gasLimit:i,gasUsed:i,miner:t.allowNull(n),extraData:o,transactions:t.allowNull(t.arrayOf(c)),baseFeePerGas:t.allowNull(i)},r.blockWithTransactions=(0,NX.shallowCopy)(r.block),r.blockWithTransactions.transactions=t.allowNull(t.arrayOf(this.transactionResponse.bind(this))),r.filter={fromBlock:t.allowNull(a,void 0),toBlock:t.allowNull(a,void 0),blockHash:t.allowNull(c,void 0),address:t.allowNull(n,void 0),topics:t.allowNull(this.topics.bind(this),void 0)},r.filterLog={blockNumber:t.allowNull(s),blockHash:t.allowNull(c),transactionIndex:s,removed:t.allowNull(this.boolean.bind(this)),address:n,data:t.allowFalsish(o,"0x"),topics:t.arrayOf(c),transactionHash:c,logIndex:s},r},t.prototype.accessList=function(e){return(0,pE.accessListify)(e||[])},t.prototype.number=function(e){return e==="0x"?0:Ui.BigNumber.from(e).toNumber()},t.prototype.type=function(e){return e==="0x"||e==null?0:Ui.BigNumber.from(e).toNumber()},t.prototype.bigNumber=function(e){return Ui.BigNumber.from(e)},t.prototype.boolean=function(e){if(typeof e=="boolean")return e;if(typeof e=="string"){if(e=e.toLowerCase(),e==="true")return!0;if(e==="false")return!1}throw new Error("invalid boolean - "+e)},t.prototype.hex=function(e,r){return typeof e=="string"&&(!r&&e.substring(0,2)!=="0x"&&(e="0x"+e),(0,mi.isHexString)(e))?e.toLowerCase():Tl.throwArgumentError("invalid hash","value",e)},t.prototype.data=function(e,r){var n=this.hex(e,r);if(n.length%2!==0)throw new Error("invalid data; odd-length - "+e);return n},t.prototype.address=function(e){return(0,Db.getAddress)(e)},t.prototype.callAddress=function(e){if(!(0,mi.isHexString)(e,32))return null;var r=(0,Db.getAddress)((0,mi.hexDataSlice)(e,12));return r===IX.AddressZero?null:r},t.prototype.contractAddress=function(e){return(0,Db.getContractAddress)(e)},t.prototype.blockTag=function(e){if(e==null)return"latest";if(e==="earliest")return"0x0";switch(e){case"earliest":return"0x0";case"latest":case"pending":case"safe":case"finalized":return e}if(typeof e=="number"||(0,mi.isHexString)(e))return(0,mi.hexValue)(e);throw new Error("invalid blockTag")},t.prototype.hash=function(e,r){var n=this.hex(e,r);return(0,mi.hexDataLength)(n)!==32?Tl.throwArgumentError("invalid hash","value",e):n},t.prototype.difficulty=function(e){if(e==null)return null;var r=Ui.BigNumber.from(e);try{return r.toNumber()}catch{}return null},t.prototype.uint256=function(e){if(!(0,mi.isHexString)(e))throw new Error("invalid uint256");return(0,mi.hexZeroPad)(e,32)},t.prototype._block=function(e,r){e.author!=null&&e.miner==null&&(e.miner=e.author);var n=e._difficulty!=null?e._difficulty:e.difficulty,i=t.check(r,e);return i._difficulty=n==null?null:Ui.BigNumber.from(n),i},t.prototype.block=function(e){return this._block(e,this.formats.block)},t.prototype.blockWithTransactions=function(e){return this._block(e,this.formats.blockWithTransactions)},t.prototype.transactionRequest=function(e){return t.check(this.formats.transactionRequest,e)},t.prototype.transactionResponse=function(e){e.gas!=null&&e.gasLimit==null&&(e.gasLimit=e.gas),e.to&&Ui.BigNumber.from(e.to).isZero()&&(e.to="0x0000000000000000000000000000000000000000"),e.input!=null&&e.data==null&&(e.data=e.input),e.to==null&&e.creates==null&&(e.creates=this.contractAddress(e)),(e.type===1||e.type===2)&&e.accessList==null&&(e.accessList=[]);var r=t.check(this.formats.transaction,e);if(e.chainId!=null){var n=e.chainId;(0,mi.isHexString)(n)&&(n=Ui.BigNumber.from(n).toNumber()),r.chainId=n}else{var n=e.networkId;n==null&&r.v==null&&(n=e.chainId),(0,mi.isHexString)(n)&&(n=Ui.BigNumber.from(n).toNumber()),typeof n!="number"&&r.v!=null&&(n=(r.v-35)/2,n<0&&(n=0),n=parseInt(n)),typeof n!="number"&&(n=0),r.chainId=n}return r.blockHash&&r.blockHash.replace(/0/g,"")==="x"&&(r.blockHash=null),r},t.prototype.transaction=function(e){return(0,pE.parse)(e)},t.prototype.receiptLog=function(e){return t.check(this.formats.receiptLog,e)},t.prototype.receipt=function(e){var r=t.check(this.formats.receipt,e);if(r.root!=null)if(r.root.length<=4){var n=Ui.BigNumber.from(r.root).toNumber();n===0||n===1?(r.status!=null&&r.status!==n&&Tl.throwArgumentError("alt-root-status/status mismatch","value",{root:r.root,status:r.status}),r.status=n,delete r.root):Tl.throwArgumentError("invalid alt-root-status","value.root",r.root)}else r.root.length!==66&&Tl.throwArgumentError("invalid root hash","value.root",r.root);return r.status!=null&&(r.byzantium=!0),r},t.prototype.topics=function(e){var r=this;return Array.isArray(e)?e.map(function(n){return r.topics(n)}):e!=null?this.hash(e,!0):null},t.prototype.filter=function(e){return t.check(this.formats.filter,e)},t.prototype.filterLog=function(e){return t.check(this.formats.filterLog,e)},t.check=function(e,r){var n={};for(var i in e)try{var a=e[i](r[i]);a!==void 0&&(n[i]=a)}catch(o){throw o.checkKey=i,o.checkValue=r[i],o}return n},t.allowNull=function(e,r){return function(n){return n==null?r:e(n)}},t.allowFalsish=function(e,r){return function(n){return n?e(n):r}},t.arrayOf=function(e){return function(r){if(!Array.isArray(r))throw new Error("not an array");var n=[];return r.forEach(function(i){n.push(e(i))}),n}},t}();bi.Formatter=qX;function vE(t){return t&&typeof t.isCommunityResource=="function"}bi.isCommunityResourcable=vE;function jX(t){return vE(t)&&t.isCommunityResource()}bi.isCommunityResource=jX;var hE=!1;function UX(){hE||(hE=!0,console.log("========= NOTICE ========="),console.log("Request-Rate Exceeded (this message will not be repeated)"),console.log(""),console.log("The default API keys for each service are provided as a highly-throttled,"),console.log("community resource for low-traffic projects and early prototyping."),console.log(""),console.log("While your application will continue to function, we highly recommended"),console.log("signing up for your own API keys to improve performance, increase your"),console.log("request rate/limit and enable other perks, such as metrics and advanced APIs."),console.log(""),console.log("For more details: https://docs.ethers.io/api-keys/"),console.log("=========================="))}bi.showThrottleMessage=UX});var Pl=P(ht=>{"use strict";var HX=ht&&ht.__extends||function(){var t=function(e,r){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,i){n.__proto__=i}||function(n,i){for(var a in i)Object.prototype.hasOwnProperty.call(i,a)&&(n[a]=i[a])},t(e,r)};return function(e,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");t(e,r);function n(){this.constructor=e}e.prototype=r===null?Object.create(r):(n.prototype=r.prototype,new n)}}(),Le=ht&&ht.__awaiter||function(t,e,r,n){function i(a){return a instanceof r?a:new r(function(o){o(a)})}return new(r||(r=Promise))(function(a,o){function c(f){try{s(n.next(f))}catch(m){o(m)}}function u(f){try{s(n.throw(f))}catch(m){o(m)}}function s(f){f.done?a(f.value):i(f.value).then(c,u)}s((n=n.apply(t,e||[])).next())})},Re=ht&&ht.__generator||function(t,e){var r={label:0,sent:function(){if(a[0]&1)throw a[1];return a[1]},trys:[],ops:[]},n,i,a,o;return o={next:c(0),throw:c(1),return:c(2)},typeof Symbol=="function"&&(o[Symbol.iterator]=function(){return this}),o;function c(s){return function(f){return u([s,f])}}function u(s){if(n)throw new TypeError("Generator is already executing.");for(;r;)try{if(n=1,i&&(a=s[0]&2?i.return:s[0]?i.throw||((a=i.return)&&a.call(i),0):i.next)&&!(a=a.call(i,s[1])).done)return a;switch(i=0,a&&(s=[s[0]&2,a.value]),s[0]){case 0:case 1:a=s;break;case 4:return r.label++,{value:s[1],done:!1};case 5:r.label++,i=s[1],s=[0];continue;case 7:s=r.ops.pop(),r.trys.pop();continue;default:if(a=r.trys,!(a=a.length>0&&a[a.length-1])&&(s[0]===6||s[0]===2)){r=0;continue}if(s[0]===3&&(!a||s[1]>a[0]&&s[1]0&&t[t.length-1]==null;)t.pop();return t.map(function(e){if(Array.isArray(e)){var r={};e.forEach(function(i){r[xE(i)]=!0});var n=Object.keys(r);return n.sort(),n.join("|")}else return xE(e)}).join("&")}function QX(t){return t===""?[]:t.split(/&/g).map(function(e){if(e==="")return[];var r=e.split("|").map(function(n){return n==="null"?null:n});return r.length===1?r[0]:r})}function Cc(t){if(typeof t=="string"){if(t=t.toLowerCase(),(0,Fe.hexDataLength)(t)===32)return"tx:"+t;if(t.indexOf(":")===-1)return t}else{if(Array.isArray(t))return"filter:*:"+yE(t);if(_E.ForkEvent.isForkEvent(t))throw Je.warn("not implemented"),new Error("not implemented");if(t&&typeof t=="object")return"filter:"+(t.address||"*")+":"+yE(t.topics||[])}throw new Error("invalid event - "+t)}function kl(){return new Date().getTime()}function wE(t){return new Promise(function(e){setTimeout(e,t)})}var WX=["block","network","pending","poll"],TE=function(){function t(e,r,n){(0,Er.defineReadOnly)(this,"tag",e),(0,Er.defineReadOnly)(this,"listener",r),(0,Er.defineReadOnly)(this,"once",n),this._lastBlockNumber=-2,this._inflight=!1}return Object.defineProperty(t.prototype,"event",{get:function(){switch(this.type){case"tx":return this.hash;case"filter":return this.filter}return this.tag},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"type",{get:function(){return this.tag.split(":")[0]},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"hash",{get:function(){var e=this.tag.split(":");return e[0]!=="tx"?null:e[1]},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"filter",{get:function(){var e=this.tag.split(":");if(e[0]!=="filter")return null;var r=e[1],n=QX(e[2]),i={};return n.length>0&&(i.topics=n),r&&r!=="*"&&(i.address=r),i},enumerable:!1,configurable:!0}),t.prototype.pollable=function(){return this.tag.indexOf(":")>=0||WX.indexOf(this.tag)>=0},t}();ht.Event=TE;var YX={0:{symbol:"btc",p2pkh:0,p2sh:5,prefix:"bc"},2:{symbol:"ltc",p2pkh:48,p2sh:50,prefix:"ltc"},3:{symbol:"doge",p2pkh:30,p2sh:22},60:{symbol:"eth",ilk:"eth"},61:{symbol:"etc",ilk:"eth"},700:{symbol:"xdai",ilk:"eth"}};function Jb(t){return(0,Fe.hexZeroPad)(pt.BigNumber.from(t).toHexString(),32)}function AE(t){return Ub.Base58.encode((0,Fe.concat)([t,(0,Fe.hexDataSlice)((0,mE.sha256)((0,mE.sha256)(t)),0,4)]))}var kE=new RegExp("^(ipfs)://(.*)$","i"),EE=[new RegExp("^(https)://(.*)$","i"),new RegExp("^(data):(.*)$","i"),kE,new RegExp("^eip155:[0-9]+/(erc[0-9]+):(.*)$","i")];function n0(t,e){try{return(0,Hb.toUtf8String)(Ol(t,e))}catch{}return null}function Ol(t,e){if(t==="0x")return null;var r=pt.BigNumber.from((0,Fe.hexDataSlice)(t,e,e+32)).toNumber(),n=pt.BigNumber.from((0,Fe.hexDataSlice)(t,r,r+32)).toNumber();return(0,Fe.hexDataSlice)(t,r+32,r+32+n)}function qb(t){return t.match(/^ipfs:\/\/ipfs\//i)?t=t.substring(12):t.match(/^ipfs:\/\//i)?t=t.substring(7):Je.throwArgumentError("unsupported IPFS format","link",t),"https://gateway.ipfs.io/ipfs/"+t}function SE(t){var e=(0,Fe.arrayify)(t);if(e.length>32)throw new Error("internal; should not happen");var r=new Uint8Array(32);return r.set(e,32-e.length),r}function $X(t){if(t.length%32===0)return t;var e=new Uint8Array(Math.ceil(t.length/32)*32);return e.set(t),e}function CE(t){for(var e=[],r=0,n=0;n=1&&o<=75)return AE((0,Fe.concat)([[n.p2pkh],"0x"+a[2]]))}}if(n.p2sh!=null){var c=r.match(/^0xa9([0-9a-f][0-9a-f])([0-9a-f]*)87$/);if(c){var u=parseInt(c[1],16);if(c[2].length===u*2&&u>=1&&u<=75)return AE((0,Fe.concat)([[n.p2sh],"0x"+c[2]]))}}if(n.prefix!=null){var s=i[1],f=i[0];if(f===0?s!==20&&s!==32&&(f=-1):f=-1,f>=0&&i.length===2+s&&s>=1&&s<=75){var m=bE.default.toWords(i.slice(2));return m.unshift(f),bE.default.encode(n.prefix,m)}}return null},t.prototype.getAddress=function(e){return Le(this,void 0,void 0,function(){var r,n,i,a;return Re(this,function(o){switch(o.label){case 0:if(e==null&&(e=60),e!==60)return[3,4];o.label=1;case 1:return o.trys.push([1,3,,4]),[4,this._fetch("0x3b3b57de")];case 2:return r=o.sent(),r==="0x"||r===XX.HashZero?[2,null]:[2,this.provider.formatter.callAddress(r)];case 3:if(n=o.sent(),n.code===qe.Logger.errors.CALL_EXCEPTION)return[2,null];throw n;case 4:return[4,this._fetchBytes("0xf1cb7e06",Jb(e))];case 5:return i=o.sent(),i==null||i==="0x"?[2,null]:(a=this._getAddress(e,i),a==null&&Je.throwError("invalid or unsupported coin data",qe.Logger.errors.UNSUPPORTED_OPERATION,{operation:"getAddress("+e+")",coinType:e,data:i}),[2,a])}})})},t.prototype.getAvatar=function(){return Le(this,void 0,void 0,function(){var e,r,n,i,a,o,c,u,s,f,m,w,T,A,O,B,F,I,D,z,G,j,Z,X,U;return Re(this,function(M){switch(M.label){case 0:e=[{type:"name",content:this.name}],M.label=1;case 1:return M.trys.push([1,19,,20]),[4,this.getText("avatar")];case 2:if(r=M.sent(),r==null)return[2,null];n=0,M.label=3;case 3:if(!(n=0?null:JSON.stringify({data:o,sender:a}),[4,(0,Oc.fetchJson)({url:f,errorPassThrough:!0},m,function(O,B){return O.status=B.statusCode,O})]):[3,4];case 2:if(w=A.sent(),w.data)return[2,w.data];if(T=w.message||"unknown error",w.status>=400&&w.status<500)return[2,Je.throwError("response not found during CCIP fetch: "+T,qe.Logger.errors.SERVER_ERROR,{url:s,errorMessage:T})];c.push(T),A.label=3;case 3:return u++,[3,1];case 4:return[2,Je.throwError("error encountered during CCIP fetch: "+c.map(function(O){return JSON.stringify(O)}).join(", "),qe.Logger.errors.SERVER_ERROR,{urls:i,errorMessages:c})]}})})},e.prototype._getInternalBlockNumber=function(r){return Le(this,void 0,void 0,function(){var n,i,a,o,c,u=this;return Re(this,function(s){switch(s.label){case 0:return[4,this._ready()];case 1:if(s.sent(),!(r>0))return[3,7];s.label=2;case 2:if(!this._internalBlockNumber)return[3,7];n=this._internalBlockNumber,s.label=3;case 3:return s.trys.push([3,5,,6]),[4,n];case 4:return i=s.sent(),kl()-i.respTime<=r?[2,i.blockNumber]:[3,7];case 5:return a=s.sent(),this._internalBlockNumber===n?[3,7]:[3,6];case 6:return[3,2];case 7:return o=kl(),c=(0,Er.resolveProperties)({blockNumber:this.perform("getBlockNumber",{}),networkError:this.getNetwork().then(function(f){return null},function(f){return f})}).then(function(f){var m=f.blockNumber,w=f.networkError;if(w)throw u._internalBlockNumber===c&&(u._internalBlockNumber=null),w;var T=kl();return m=pt.BigNumber.from(m).toNumber(),m1e3)Je.warn("network block skew detected; skipping block events (emitted="+this._emitted.block+" blockNumber"+i+")"),this.emit("error",Je.makeError("network block skew detected",qe.Logger.errors.NETWORK_ERROR,{blockNumber:i,event:"blockSkew",previousBlockNumber:this._emitted.block})),this.emit("block",i);else for(o=this._emitted.block+1;o<=i;o++)this.emit("block",o);return this._emitted.block!==i&&(this._emitted.block=i,Object.keys(this._emitted).forEach(function(s){if(s!=="block"){var f=c._emitted[s];f!=="pending"&&i-f>12&&delete c._emitted[s]}})),this._lastBlockNumber===-2&&(this._lastBlockNumber=i-1),this._events.forEach(function(s){switch(s.type){case"tx":{var f=s.hash,m=c.getTransactionReceipt(f).then(function(A){return!A||A.blockNumber==null||(c._emitted["t:"+f]=A.blockNumber,c.emit(f,A)),null}).catch(function(A){c.emit("error",A)});n.push(m);break}case"filter":{if(!s._inflight){s._inflight=!0,s._lastBlockNumber===-2&&(s._lastBlockNumber=i-1);var w=s.filter;w.fromBlock=s._lastBlockNumber+1,w.toBlock=i;var T=w.toBlock-c._maxFilterBlockRange;T>w.fromBlock&&(w.fromBlock=T),w.fromBlock<0&&(w.fromBlock=0);var m=c.getLogs(w).then(function(O){s._inflight=!1,O.length!==0&&O.forEach(function(B){B.blockNumber>s._lastBlockNumber&&(s._lastBlockNumber=B.blockNumber),c._emitted["b:"+B.blockHash]=B.blockNumber,c._emitted["t:"+B.transactionHash]=B.blockNumber,c.emit(w,B)})}).catch(function(O){c.emit("error",O),s._inflight=!1});n.push(m)}break}}}),this._lastBlockNumber=i,Promise.all(n).then(function(){c.emit("didPoll",r)}).catch(function(s){c.emit("error",s)}),[2]}})})},e.prototype.resetEventsBlock=function(r){this._lastBlockNumber=r-1,this.polling&&this.poll()},Object.defineProperty(e.prototype,"network",{get:function(){return this._network},enumerable:!1,configurable:!0}),e.prototype.detectNetwork=function(){return Le(this,void 0,void 0,function(){return Re(this,function(r){return[2,Je.throwError("provider does not support network detection",qe.Logger.errors.UNSUPPORTED_OPERATION,{operation:"provider.detectNetwork"})]})})},e.prototype.getNetwork=function(){return Le(this,void 0,void 0,function(){var r,n,i;return Re(this,function(a){switch(a.label){case 0:return[4,this._ready()];case 1:return r=a.sent(),[4,this.detectNetwork()];case 2:return n=a.sent(),r.chainId===n.chainId?[3,5]:this.anyNetwork?(this._network=n,this._lastBlockNumber=-2,this._fastBlockNumber=null,this._fastBlockNumberPromise=null,this._fastQueryDate=0,this._emitted.block=-2,this._maxInternalBlockNumber=-1024,this._internalBlockNumber=null,this.emit("network",n,r),[4,wE(0)]):[3,4];case 3:return a.sent(),[2,this._network];case 4:throw i=Je.makeError("underlying network changed",qe.Logger.errors.NETWORK_ERROR,{event:"changed",network:r,detectedNetwork:n}),this.emit("error",i),i;case 5:return[2,r]}})})},Object.defineProperty(e.prototype,"blockNumber",{get:function(){var r=this;return this._getInternalBlockNumber(100+this.pollingInterval/2).then(function(n){r._setFastBlockNumber(n)},function(n){}),this._fastBlockNumber!=null?this._fastBlockNumber:-1},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"polling",{get:function(){return this._poller!=null},set:function(r){var n=this;r&&!this._poller?(this._poller=setInterval(function(){n.poll()},this.pollingInterval),this._bootstrapPoll||(this._bootstrapPoll=setTimeout(function(){n.poll(),n._bootstrapPoll=setTimeout(function(){n._poller||n.poll(),n._bootstrapPoll=null},n.pollingInterval)},0))):!r&&this._poller&&(clearInterval(this._poller),this._poller=null)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"pollingInterval",{get:function(){return this._pollingInterval},set:function(r){var n=this;if(typeof r!="number"||r<=0||parseInt(String(r))!=r)throw new Error("invalid polling interval");this._pollingInterval=r,this._poller&&(clearInterval(this._poller),this._poller=setInterval(function(){n.poll()},this._pollingInterval))},enumerable:!1,configurable:!0}),e.prototype._getFastBlockNumber=function(){var r=this,n=kl();return n-this._fastQueryDate>2*this._pollingInterval&&(this._fastQueryDate=n,this._fastBlockNumberPromise=this.getBlockNumber().then(function(i){return(r._fastBlockNumber==null||i>r._fastBlockNumber)&&(r._fastBlockNumber=i),r._fastBlockNumber})),this._fastBlockNumberPromise},e.prototype._setFastBlockNumber=function(r){this._fastBlockNumber!=null&&rthis._fastBlockNumber)&&(this._fastBlockNumber=r,this._fastBlockNumberPromise=Promise.resolve(r)))},e.prototype.waitForTransaction=function(r,n,i){return Le(this,void 0,void 0,function(){return Re(this,function(a){return[2,this._waitForTransaction(r,n??1,i||0,null)]})})},e.prototype._waitForTransaction=function(r,n,i,a){return Le(this,void 0,void 0,function(){var o,c=this;return Re(this,function(u){switch(u.label){case 0:return[4,this.getTransactionReceipt(r)];case 1:return o=u.sent(),(o?o.confirmations:0)>=n?[2,o]:[2,new Promise(function(s,f){var m=[],w=!1,T=function(){return w?!0:(w=!0,m.forEach(function(D){D()}),!1)},A=function(D){D.confirmations0){var I=setTimeout(function(){T()||f(Je.makeError("timeout exceeded",qe.Logger.errors.TIMEOUT,{timeout:i}))},i);I.unref&&I.unref(),m.push(function(){clearTimeout(I)})}})]}})})},e.prototype.getBlockNumber=function(){return Le(this,void 0,void 0,function(){return Re(this,function(r){return[2,this._getInternalBlockNumber(0)]})})},e.prototype.getGasPrice=function(){return Le(this,void 0,void 0,function(){var r;return Re(this,function(n){switch(n.label){case 0:return[4,this.getNetwork()];case 1:return n.sent(),[4,this.perform("getGasPrice",{})];case 2:r=n.sent();try{return[2,pt.BigNumber.from(r)]}catch(i){return[2,Je.throwError("bad result from backend",qe.Logger.errors.SERVER_ERROR,{method:"getGasPrice",result:r,error:i})]}return[2]}})})},e.prototype.getBalance=function(r,n){return Le(this,void 0,void 0,function(){var i,a;return Re(this,function(o){switch(o.label){case 0:return[4,this.getNetwork()];case 1:return o.sent(),[4,(0,Er.resolveProperties)({address:this._getAddress(r),blockTag:this._getBlockTag(n)})];case 2:return i=o.sent(),[4,this.perform("getBalance",i)];case 3:a=o.sent();try{return[2,pt.BigNumber.from(a)]}catch(c){return[2,Je.throwError("bad result from backend",qe.Logger.errors.SERVER_ERROR,{method:"getBalance",params:i,result:a,error:c})]}return[2]}})})},e.prototype.getTransactionCount=function(r,n){return Le(this,void 0,void 0,function(){var i,a;return Re(this,function(o){switch(o.label){case 0:return[4,this.getNetwork()];case 1:return o.sent(),[4,(0,Er.resolveProperties)({address:this._getAddress(r),blockTag:this._getBlockTag(n)})];case 2:return i=o.sent(),[4,this.perform("getTransactionCount",i)];case 3:a=o.sent();try{return[2,pt.BigNumber.from(a).toNumber()]}catch(c){return[2,Je.throwError("bad result from backend",qe.Logger.errors.SERVER_ERROR,{method:"getTransactionCount",params:i,result:a,error:c})]}return[2]}})})},e.prototype.getCode=function(r,n){return Le(this,void 0,void 0,function(){var i,a;return Re(this,function(o){switch(o.label){case 0:return[4,this.getNetwork()];case 1:return o.sent(),[4,(0,Er.resolveProperties)({address:this._getAddress(r),blockTag:this._getBlockTag(n)})];case 2:return i=o.sent(),[4,this.perform("getCode",i)];case 3:a=o.sent();try{return[2,(0,Fe.hexlify)(a)]}catch(c){return[2,Je.throwError("bad result from backend",qe.Logger.errors.SERVER_ERROR,{method:"getCode",params:i,result:a,error:c})]}return[2]}})})},e.prototype.getStorageAt=function(r,n,i){return Le(this,void 0,void 0,function(){var a,o;return Re(this,function(c){switch(c.label){case 0:return[4,this.getNetwork()];case 1:return c.sent(),[4,(0,Er.resolveProperties)({address:this._getAddress(r),blockTag:this._getBlockTag(i),position:Promise.resolve(n).then(function(u){return(0,Fe.hexValue)(u)})})];case 2:return a=c.sent(),[4,this.perform("getStorageAt",a)];case 3:o=c.sent();try{return[2,(0,Fe.hexlify)(o)]}catch(u){return[2,Je.throwError("bad result from backend",qe.Logger.errors.SERVER_ERROR,{method:"getStorageAt",params:a,result:o,error:u})]}return[2]}})})},e.prototype._wrapTransaction=function(r,n,i){var a=this;if(n!=null&&(0,Fe.hexDataLength)(n)!==32)throw new Error("invalid response - sendTransaction");var o=r;return n!=null&&r.hash!==n&&Je.throwError("Transaction hash mismatch from Provider.sendTransaction.",qe.Logger.errors.UNKNOWN_ERROR,{expectedHash:r.hash,returnedHash:n}),o.wait=function(c,u){return Le(a,void 0,void 0,function(){var s,f;return Re(this,function(m){switch(m.label){case 0:return c==null&&(c=1),u==null&&(u=0),s=void 0,c!==0&&i!=null&&(s={data:r.data,from:r.from,nonce:r.nonce,to:r.to,value:r.value,startBlock:i}),[4,this._waitForTransaction(r.hash,c,u,s)];case 1:return f=m.sent(),f==null&&c===0?[2,null]:(this._emitted["t:"+r.hash]=f.blockNumber,f.status===0&&Je.throwError("transaction failed",qe.Logger.errors.CALL_EXCEPTION,{transactionHash:r.hash,transaction:r,receipt:f}),[2,f])}})})},o},e.prototype.sendTransaction=function(r){return Le(this,void 0,void 0,function(){var n,i,a,o,c;return Re(this,function(u){switch(u.label){case 0:return[4,this.getNetwork()];case 1:return u.sent(),[4,Promise.resolve(r).then(function(s){return(0,Fe.hexlify)(s)})];case 2:return n=u.sent(),i=this.formatter.transaction(r),i.confirmations==null&&(i.confirmations=0),[4,this._getInternalBlockNumber(100+2*this.pollingInterval)];case 3:a=u.sent(),u.label=4;case 4:return u.trys.push([4,6,,7]),[4,this.perform("sendTransaction",{signedTransaction:n})];case 5:return o=u.sent(),[2,this._wrapTransaction(i,o,a)];case 6:throw c=u.sent(),c.transaction=i,c.transactionHash=i.hash,c;case 7:return[2]}})})},e.prototype._getTransactionRequest=function(r){return Le(this,void 0,void 0,function(){var n,i,a,o,c=this;return Re(this,function(u){switch(u.label){case 0:return[4,r];case 1:return n=u.sent(),i={},["from","to"].forEach(function(s){n[s]!=null&&(i[s]=Promise.resolve(n[s]).then(function(f){return f?c._getAddress(f):null}))}),["gasLimit","gasPrice","maxFeePerGas","maxPriorityFeePerGas","value"].forEach(function(s){n[s]!=null&&(i[s]=Promise.resolve(n[s]).then(function(f){return f?pt.BigNumber.from(f):null}))}),["type"].forEach(function(s){n[s]!=null&&(i[s]=Promise.resolve(n[s]).then(function(f){return f??null}))}),n.accessList&&(i.accessList=this.formatter.accessList(n.accessList)),["data"].forEach(function(s){n[s]!=null&&(i[s]=Promise.resolve(n[s]).then(function(f){return f?(0,Fe.hexlify)(f):null}))}),o=(a=this.formatter).transactionRequest,[4,(0,Er.resolveProperties)(i)];case 2:return[2,o.apply(a,[u.sent()])]}})})},e.prototype._getFilter=function(r){return Le(this,void 0,void 0,function(){var n,i,a,o=this;return Re(this,function(c){switch(c.label){case 0:return[4,r];case 1:return r=c.sent(),n={},r.address!=null&&(n.address=this._getAddress(r.address)),["blockHash","topics"].forEach(function(u){r[u]!=null&&(n[u]=r[u])}),["fromBlock","toBlock"].forEach(function(u){r[u]!=null&&(n[u]=o._getBlockTag(r[u]))}),a=(i=this.formatter).filter,[4,(0,Er.resolveProperties)(n)];case 2:return[2,a.apply(i,[c.sent()])]}})})},e.prototype._call=function(r,n,i){return Le(this,void 0,void 0,function(){var a,o,c,u,s,f,m,w,T,A,O,B,F,I,D,z;return Re(this,function(G){switch(G.label){case 0:return i>=ZX&&Je.throwError("CCIP read exceeded maximum redirections",qe.Logger.errors.SERVER_ERROR,{redirects:i,transaction:r}),a=r.to,[4,this.perform("call",{transaction:r,blockTag:n})];case 1:if(o=G.sent(),!(i>=0&&n==="latest"&&a!=null&&o.substring(0,10)==="0x556f1830"&&(0,Fe.hexDataLength)(o)%32===4))return[3,5];G.label=2;case 2:for(G.trys.push([2,4,,5]),c=(0,Fe.hexDataSlice)(o,4),u=(0,Fe.hexDataSlice)(c,0,32),pt.BigNumber.from(u).eq(a)||Je.throwError("CCIP Read sender did not match",qe.Logger.errors.CALL_EXCEPTION,{name:"OffchainLookup",signature:"OffchainLookup(address,string[],bytes,bytes4,bytes)",transaction:r,data:o}),s=[],f=pt.BigNumber.from((0,Fe.hexDataSlice)(c,32,64)).toNumber(),m=pt.BigNumber.from((0,Fe.hexDataSlice)(c,f,f+32)).toNumber(),w=(0,Fe.hexDataSlice)(c,f+32),T=0;Tthis._emitted.block?[2,null]:[2,void 0];if(!n)return[3,8];m=null,w=0,F.label=2;case 2:return w0},e.prototype._stopEvent=function(r){this.polling=this._events.filter(function(n){return n.pollable()}).length>0},e.prototype._addEventListener=function(r,n,i){var a=new TE(Cc(r),n,i);return this._events.push(a),this._startEvent(a),this},e.prototype.on=function(r,n){return this._addEventListener(r,n,!1)},e.prototype.once=function(r,n){return this._addEventListener(r,n,!0)},e.prototype.emit=function(r){for(var n=this,i=[],a=1;a{"use strict";var Kb=sn&&sn.__extends||function(){var t=function(e,r){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,i){n.__proto__=i}||function(n,i){for(var a in i)Object.prototype.hasOwnProperty.call(i,a)&&(n[a]=i[a])},t(e,r)};return function(e,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");t(e,r);function n(){this.constructor=e}e.prototype=r===null?Object.create(r):(n.prototype=r.prototype,new n)}}(),Hi=sn&&sn.__awaiter||function(t,e,r,n){function i(a){return a instanceof r?a:new r(function(o){o(a)})}return new(r||(r=Promise))(function(a,o){function c(f){try{s(n.next(f))}catch(m){o(m)}}function u(f){try{s(n.throw(f))}catch(m){o(m)}}function s(f){f.done?a(f.value):i(f.value).then(c,u)}s((n=n.apply(t,e||[])).next())})},zi=sn&&sn.__generator||function(t,e){var r={label:0,sent:function(){if(a[0]&1)throw a[1];return a[1]},trys:[],ops:[]},n,i,a,o;return o={next:c(0),throw:c(1),return:c(2)},typeof Symbol=="function"&&(o[Symbol.iterator]=function(){return this}),o;function c(s){return function(f){return u([s,f])}}function u(s){if(n)throw new TypeError("Generator is already executing.");for(;r;)try{if(n=1,i&&(a=s[0]&2?i.return:s[0]?i.throw||((a=i.return)&&a.call(i),0):i.next)&&!(a=a.call(i,s[1])).done)return a;switch(i=0,a&&(s=[s[0]&2,a.value]),s[0]){case 0:case 1:a=s;break;case 4:return r.label++,{value:s[1],done:!1};case 5:r.label++,i=s[1],s=[0];continue;case 7:s=r.ops.pop(),r.trys.pop();continue;default:if(a=r.trys,!(a=a.length>0&&a[a.length-1])&&(s[0]===6||s[0]===2)){r=0;continue}if(s[0]===3&&(!a||s[1]>a[0]&&s[1]=0&&a.match(/gas required exceeds allowance|always failing transaction|execution reverted|revert/)&&Br.throwError("cannot estimate gas; transaction may fail or may require manual gas limit",Fr.Logger.errors.UNPREDICTABLE_GAS_LIMIT,{error:e,method:t,transaction:n}),e}function ME(t){return new Promise(function(e){setTimeout(e,t)})}function sK(t){if(t.error){var e=new Error(t.error.message);throw e.code=t.error.code,e.data=t.error.data,e}return t.result}function Ml(t){return t&&t.toLowerCase()}var Xb={},Vb=function(t){Kb(e,t);function e(r,n,i){var a=t.call(this)||this;if(r!==Xb)throw new Error("do not call the JsonRpcSigner constructor directly; use provider.getSigner");return(0,Sr.defineReadOnly)(a,"provider",n),i==null&&(i=0),typeof i=="string"?((0,Sr.defineReadOnly)(a,"_address",a.provider.formatter.address(i)),(0,Sr.defineReadOnly)(a,"_index",null)):typeof i=="number"?((0,Sr.defineReadOnly)(a,"_index",i),(0,Sr.defineReadOnly)(a,"_address",null)):Br.throwArgumentError("invalid address or index","addressOrIndex",i),a}return e.prototype.connect=function(r){return Br.throwError("cannot alter JSON-RPC Signer connection",Fr.Logger.errors.UNSUPPORTED_OPERATION,{operation:"connect"})},e.prototype.connectUnchecked=function(){return new cK(Xb,this.provider,this._address||this._index)},e.prototype.getAddress=function(){var r=this;return this._address?Promise.resolve(this._address):this.provider.send("eth_accounts",[]).then(function(n){return n.length<=r._index&&Br.throwError("unknown account #"+r._index,Fr.Logger.errors.UNSUPPORTED_OPERATION,{operation:"getAddress"}),r.provider.formatter.address(n[r._index])})},e.prototype.sendUncheckedTransaction=function(r){var n=this;r=(0,Sr.shallowCopy)(r);var i=this.getAddress().then(function(o){return o&&(o=o.toLowerCase()),o});if(r.gasLimit==null){var a=(0,Sr.shallowCopy)(r);a.from=i,r.gasLimit=this.provider.estimateGas(a)}return r.to!=null&&(r.to=Promise.resolve(r.to).then(function(o){return Hi(n,void 0,void 0,function(){var c;return zi(this,function(u){switch(u.label){case 0:return o==null?[2,null]:[4,this.provider.resolveName(o)];case 1:return c=u.sent(),c==null&&Br.throwArgumentError("provided ENS name resolves to null","tx.to",o),[2,c]}})})})),(0,Sr.resolveProperties)({tx:(0,Sr.resolveProperties)(r),sender:i}).then(function(o){var c=o.tx,u=o.sender;c.from!=null?c.from.toLowerCase()!==u&&Br.throwArgumentError("from address mismatch","transaction",r):c.from=u;var s=n.provider.constructor.hexlifyTransaction(c,{from:!0});return n.provider.send("eth_sendTransaction",[s]).then(function(f){return f},function(f){return typeof f.message=="string"&&f.message.match(/user denied/i)&&Br.throwError("user rejected transaction",Fr.Logger.errors.ACTION_REJECTED,{action:"sendTransaction",transaction:c}),FE("sendTransaction",f,s)})})},e.prototype.signTransaction=function(r){return Br.throwError("signing transactions is unsupported",Fr.Logger.errors.UNSUPPORTED_OPERATION,{operation:"signTransaction"})},e.prototype.sendTransaction=function(r){return Hi(this,void 0,void 0,function(){var n,i,a,o=this;return zi(this,function(c){switch(c.label){case 0:return[4,this.provider._getInternalBlockNumber(100+2*this.provider.pollingInterval)];case 1:return n=c.sent(),[4,this.sendUncheckedTransaction(r)];case 2:i=c.sent(),c.label=3;case 3:return c.trys.push([3,5,,6]),[4,(0,BE.poll)(function(){return Hi(o,void 0,void 0,function(){var u;return zi(this,function(s){switch(s.label){case 0:return[4,this.provider.getTransaction(i)];case 1:return u=s.sent(),u===null?[2,void 0]:[2,this.provider._wrapTransaction(u,i,n)]}})})},{oncePoll:this.provider})];case 4:return[2,c.sent()];case 5:throw a=c.sent(),a.transactionHash=i,a;case 6:return[2]}})})},e.prototype.signMessage=function(r){return Hi(this,void 0,void 0,function(){var n,i,a;return zi(this,function(o){switch(o.label){case 0:return n=typeof r=="string"?(0,PE.toUtf8Bytes)(r):r,[4,this.getAddress()];case 1:i=o.sent(),o.label=2;case 2:return o.trys.push([2,4,,5]),[4,this.provider.send("personal_sign",[(0,Pc.hexlify)(n),i.toLowerCase()])];case 3:return[2,o.sent()];case 4:throw a=o.sent(),typeof a.message=="string"&&a.message.match(/user denied/i)&&Br.throwError("user rejected signing",Fr.Logger.errors.ACTION_REJECTED,{action:"signMessage",from:i,messageData:r}),a;case 5:return[2]}})})},e.prototype._legacySignMessage=function(r){return Hi(this,void 0,void 0,function(){var n,i,a;return zi(this,function(o){switch(o.label){case 0:return n=typeof r=="string"?(0,PE.toUtf8Bytes)(r):r,[4,this.getAddress()];case 1:i=o.sent(),o.label=2;case 2:return o.trys.push([2,4,,5]),[4,this.provider.send("eth_sign",[i.toLowerCase(),(0,Pc.hexlify)(n)])];case 3:return[2,o.sent()];case 4:throw a=o.sent(),typeof a.message=="string"&&a.message.match(/user denied/i)&&Br.throwError("user rejected signing",Fr.Logger.errors.ACTION_REJECTED,{action:"_legacySignMessage",from:i,messageData:r}),a;case 5:return[2]}})})},e.prototype._signTypedData=function(r,n,i){return Hi(this,void 0,void 0,function(){var a,o,c,u=this;return zi(this,function(s){switch(s.label){case 0:return[4,OE._TypedDataEncoder.resolveNames(r,n,i,function(f){return u.provider.resolveName(f)})];case 1:return a=s.sent(),[4,this.getAddress()];case 2:o=s.sent(),s.label=3;case 3:return s.trys.push([3,5,,6]),[4,this.provider.send("eth_signTypedData_v4",[o.toLowerCase(),JSON.stringify(OE._TypedDataEncoder.getPayload(a.domain,n,a.value))])];case 4:return[2,s.sent()];case 5:throw c=s.sent(),typeof c.message=="string"&&c.message.match(/user denied/i)&&Br.throwError("user rejected signing",Fr.Logger.errors.ACTION_REJECTED,{action:"_signTypedData",from:o,messageData:{domain:a.domain,types:n,value:a.value}}),c;case 6:return[2]}})})},e.prototype.unlock=function(r){return Hi(this,void 0,void 0,function(){var n,i;return zi(this,function(a){switch(a.label){case 0:return n=this.provider,[4,this.getAddress()];case 1:return i=a.sent(),[2,n.send("personal_unlockAccount",[i.toLowerCase(),r,null])]}})})},e}(tK.Signer);sn.JsonRpcSigner=Vb;var cK=function(t){Kb(e,t);function e(){return t!==null&&t.apply(this,arguments)||this}return e.prototype.sendTransaction=function(r){var n=this;return this.sendUncheckedTransaction(r).then(function(i){return{hash:i,nonce:null,gasLimit:null,gasPrice:null,data:null,value:null,chainId:null,confirmations:0,from:null,wait:function(a){return n.provider.waitForTransaction(i,a)}}})},e}(Vb),uK={chainId:!0,data:!0,gasLimit:!0,gasPrice:!0,nonce:!0,to:!0,value:!0,type:!0,accessList:!0,maxFeePerGas:!0,maxPriorityFeePerGas:!0},lK=function(t){Kb(e,t);function e(r,n){var i=this,a=n;return a==null&&(a=new Promise(function(o,c){setTimeout(function(){i.detectNetwork().then(function(u){o(u)},function(u){c(u)})},0)})),i=t.call(this,a)||this,r||(r=(0,Sr.getStatic)(i.constructor,"defaultUrl")()),typeof r=="string"?(0,Sr.defineReadOnly)(i,"connection",Object.freeze({url:r})):(0,Sr.defineReadOnly)(i,"connection",Object.freeze((0,Sr.shallowCopy)(r))),i._nextId=42,i}return Object.defineProperty(e.prototype,"_cache",{get:function(){return this._eventLoopCache==null&&(this._eventLoopCache={}),this._eventLoopCache},enumerable:!1,configurable:!0}),e.defaultUrl=function(){return"http://localhost:8545"},e.prototype.detectNetwork=function(){var r=this;return this._cache.detectNetwork||(this._cache.detectNetwork=this._uncachedDetectNetwork(),setTimeout(function(){r._cache.detectNetwork=null},0)),this._cache.detectNetwork},e.prototype._uncachedDetectNetwork=function(){return Hi(this,void 0,void 0,function(){var r,n,i,a;return zi(this,function(o){switch(o.label){case 0:return[4,ME(0)];case 1:o.sent(),r=null,o.label=2;case 2:return o.trys.push([2,4,,9]),[4,this.send("eth_chainId",[])];case 3:return r=o.sent(),[3,9];case 4:n=o.sent(),o.label=5;case 5:return o.trys.push([5,7,,8]),[4,this.send("net_version",[])];case 6:return r=o.sent(),[3,8];case 7:return i=o.sent(),[3,8];case 8:return[3,9];case 9:if(r!=null){a=(0,Sr.getStatic)(this.constructor,"getNetwork");try{return[2,a(Gb.BigNumber.from(r).toNumber())]}catch(c){return[2,Br.throwError("could not detect network",Fr.Logger.errors.NETWORK_ERROR,{chainId:r,event:"invalidNetwork",serverError:c})]}}return[2,Br.throwError("could not detect network",Fr.Logger.errors.NETWORK_ERROR,{event:"noNetwork"})]}})})},e.prototype.getSigner=function(r){return new Vb(Xb,this,r)},e.prototype.getUncheckedSigner=function(r){return this.getSigner(r).connectUnchecked()},e.prototype.listAccounts=function(){var r=this;return this.send("eth_accounts",[]).then(function(n){return n.map(function(i){return r.formatter.address(i)})})},e.prototype.send=function(r,n){var i=this,a={method:r,params:n,id:this._nextId++,jsonrpc:"2.0"};this.emit("debug",{action:"request",request:(0,Sr.deepCopy)(a),provider:this});var o=["eth_chainId","eth_blockNumber"].indexOf(r)>=0;if(o&&this._cache[r])return this._cache[r];var c=(0,BE.fetchJson)(this.connection,JSON.stringify(a),sK).then(function(u){return i.emit("debug",{action:"response",request:a,response:u,provider:i}),u},function(u){throw i.emit("debug",{action:"response",error:u,request:a,provider:i}),u});return o&&(this._cache[r]=c,setTimeout(function(){i._cache[r]=null},0)),c},e.prototype.prepareRequest=function(r,n){switch(r){case"getBlockNumber":return["eth_blockNumber",[]];case"getGasPrice":return["eth_gasPrice",[]];case"getBalance":return["eth_getBalance",[Ml(n.address),n.blockTag]];case"getTransactionCount":return["eth_getTransactionCount",[Ml(n.address),n.blockTag]];case"getCode":return["eth_getCode",[Ml(n.address),n.blockTag]];case"getStorageAt":return["eth_getStorageAt",[Ml(n.address),(0,Pc.hexZeroPad)(n.position,32),n.blockTag]];case"sendTransaction":return["eth_sendRawTransaction",[n.signedTransaction]];case"getBlock":return n.blockTag?["eth_getBlockByNumber",[n.blockTag,!!n.includeTransactions]]:n.blockHash?["eth_getBlockByHash",[n.blockHash,!!n.includeTransactions]]:null;case"getTransaction":return["eth_getTransactionByHash",[n.transactionHash]];case"getTransactionReceipt":return["eth_getTransactionReceipt",[n.transactionHash]];case"call":{var i=(0,Sr.getStatic)(this.constructor,"hexlifyTransaction");return["eth_call",[i(n.transaction,{from:!0}),n.blockTag]]}case"estimateGas":{var i=(0,Sr.getStatic)(this.constructor,"hexlifyTransaction");return["eth_estimateGas",[i(n.transaction,{from:!0})]]}case"getLogs":return n.filter&&n.filter.address!=null&&(n.filter.address=Ml(n.filter.address)),["eth_getLogs",[n.filter]];default:break}return null},e.prototype.perform=function(r,n){return Hi(this,void 0,void 0,function(){var i,a,o,c;return zi(this,function(u){switch(u.label){case 0:return r==="call"||r==="estimateGas"?(i=n.transaction,i&&i.type!=null&&Gb.BigNumber.from(i.type).isZero()?i.maxFeePerGas==null&&i.maxPriorityFeePerGas==null?[4,this.getFeeData()]:[3,2]:[3,2]):[3,2];case 1:a=u.sent(),a.maxFeePerGas==null&&a.maxPriorityFeePerGas==null&&(n=(0,Sr.shallowCopy)(n),n.transaction=(0,Sr.shallowCopy)(i),delete n.transaction.type),u.label=2;case 2:o=this.prepareRequest(r,n),o==null&&Br.throwError(r+" not implemented",Fr.Logger.errors.NOT_IMPLEMENTED,{operation:r}),u.label=3;case 3:return u.trys.push([3,5,,6]),[4,this.send(o[0],o[1])];case 4:return[2,u.sent()];case 5:return c=u.sent(),[2,FE(r,c,n)];case 6:return[2]}})})},e.prototype._startEvent=function(r){r.tag==="pending"&&this._startPending(),t.prototype._startEvent.call(this,r)},e.prototype._startPending=function(){if(this._pendingFilter==null){var r=this,n=this.send("eth_newPendingTransactionFilter",[]);this._pendingFilter=n,n.then(function(i){function a(){r.send("eth_getFilterChanges",[i]).then(function(o){if(r._pendingFilter!=n)return null;var c=Promise.resolve();return o.forEach(function(u){r._emitted["t:"+u.toLowerCase()]="pending",c=c.then(function(){return r.getTransaction(u).then(function(s){return r.emit("pending",s),null})})}),c.then(function(){return ME(1e3)})}).then(function(){if(r._pendingFilter!=n){r.send("eth_uninstallFilter",[i]);return}return setTimeout(function(){a()},0),null}).catch(function(o){})}return a(),i}).catch(function(i){})}},e.prototype._stopEvent=function(r){r.tag==="pending"&&this.listenerCount("pending")===0&&(this._pendingFilter=null),t.prototype._stopEvent.call(this,r)},e.hexlifyTransaction=function(r,n){var i=(0,Sr.shallowCopy)(uK);if(n)for(var a in n)n[a]&&(i[a]=!0);(0,Sr.checkProperties)(r,i);var o={};return["chainId","gasLimit","gasPrice","type","maxFeePerGas","maxPriorityFeePerGas","nonce","value"].forEach(function(c){if(r[c]!=null){var u=(0,Pc.hexValue)(Gb.BigNumber.from(r[c]));c==="gasLimit"&&(c="gas"),o[c]=u}}),["from","to","data"].forEach(function(c){r[c]!=null&&(o[c]=(0,Pc.hexlify)(r[c]))}),r.accessList&&(o.accessList=(0,nK.accessListify)(r.accessList)),o},e}(aK.BaseProvider);sn.JsonRpcProvider=lK});var zo=P((nte,LE)=>{"use strict";LE.exports={BINARY_TYPES:["nodebuffer","arraybuffer","fragments"],GUID:"258EAFA5-E914-47DA-95CA-C5AB0DC85B11",kStatusCode:Symbol("status-code"),kWebSocket:Symbol("websocket"),EMPTY_BUFFER:Buffer.alloc(0),NOOP:()=>{}}});var eg=P((ite,ZE)=>{var DE=require("fs"),Gi=require("path"),JE=require("os"),qE=typeof __webpack_require__=="function"?__non_webpack_require__:require,fK=process.config&&process.config.variables||{},dK=!!process.env.PREBUILDS_ONLY,RE=process.versions.modules,Zb=hK()?"electron":"node",Qb=JE.arch(),Wb=JE.platform(),jE=process.env.LIBC||(vK(Wb)?"musl":"glibc"),Yb=process.env.ARM_VERSION||(Qb==="arm64"?"8":fK.arm_version)||"",UE=(process.versions.uv||"").split(".")[0];ZE.exports=Xi;function Xi(t){return qE(Xi.path(t))}Xi.path=function(t){t=Gi.resolve(t||".");try{var e=qE(Gi.join(t,"package.json")).name.toUpperCase().replace(/-/g,"_");process.env[e+"_PREBUILD"]&&(t=process.env[e+"_PREBUILD"])}catch{}if(!dK){var r=IE(Gi.join(t,"build/Release"),NE);if(r)return r;var n=IE(Gi.join(t,"build/Debug"),NE);if(n)return n}var i=c(t);if(i)return i;var a=c(Gi.dirname(process.execPath));if(a)return a;var o=["platform="+Wb,"arch="+Qb,"runtime="+Zb,"abi="+RE,"uv="+UE,Yb?"armv="+Yb:"","libc="+jE,"node="+process.versions.node,process.versions.electron?"electron="+process.versions.electron:"",typeof __webpack_require__=="function"?"webpack=true":""].filter(Boolean).join(" ");throw new Error("No native build was found for "+o+` + loaded from: `+t+` +`);function c(u){var s=$b(Gi.join(u,"prebuilds")).map(HE),f=s.filter(zE(Wb,Qb)).sort(GE)[0];if(!!f){var m=Gi.join(u,"prebuilds",f.name),w=$b(m).map(XE),T=w.filter(KE(Zb,RE)),A=T.sort(VE(Zb))[0];if(A)return Gi.join(m,A.file)}}};function $b(t){try{return DE.readdirSync(t)}catch{return[]}}function IE(t,e){var r=$b(t).filter(e);return r[0]&&Gi.join(t,r[0])}function NE(t){return/\.node$/.test(t)}function HE(t){var e=t.split("-");if(e.length===2){var r=e[0],n=e[1].split("+");if(!!r&&!!n.length&&!!n.every(Boolean))return{name:t,platform:r,architectures:n}}}function zE(t,e){return function(r){return r==null||r.platform!==t?!1:r.architectures.includes(e)}}function GE(t,e){return t.architectures.length-e.architectures.length}function XE(t){var e=t.split("."),r=e.pop(),n={file:t,specificity:0};if(r==="node"){for(var i=0;ir.specificity?-1:1:0}}function hK(){return process.versions&&process.versions.electron||process.env.ELECTRON_RUN_AS_NODE?!0:typeof window<"u"&&window.process&&window.process.type==="renderer"}function vK(t){return t==="linux"&&DE.existsSync("/etc/alpine-release")}Xi.parseTags=XE;Xi.matchTags=KE;Xi.compareTags=VE;Xi.parseTuple=HE;Xi.matchTuple=zE;Xi.compareTuples=GE});var WE=P((ate,QE)=>{"use strict";var mK=(t,e,r,n,i)=>{for(var a=0;a{let r=t.length;for(var n=0;n{"use strict";try{rg.exports=eg()(__dirname)}catch{rg.exports=WE()}});var Fl=P((ste,tg)=>{"use strict";var{EMPTY_BUFFER:gK}=zo();function $E(t,e){if(t.length===0)return gK;if(t.length===1)return t[0];let r=Buffer.allocUnsafe(e),n=0;for(let i=0;i{"use strict";var nS=Symbol("kDone"),ng=Symbol("kRun"),ig=class{constructor(e){this[nS]=()=>{this.pending--,this[ng]()},this.concurrency=e||1/0,this.jobs=[],this.pending=0}add(e){this.jobs.push(e),this[ng]()}[ng](){if(this.pending!==this.concurrency&&this.jobs.length){let e=this.jobs.shift();this.pending++,e(this[nS])}}};iS.exports=ig});var Il=P((ute,uS)=>{"use strict";var Ll=require("zlib"),oS=Fl(),xK=aS(),{kStatusCode:sS,NOOP:yK}=zo(),wK=Buffer.from([0,0,255,255]),o0=Symbol("permessage-deflate"),Ki=Symbol("total-length"),Rl=Symbol("callback"),Ba=Symbol("buffers"),ag=Symbol("error"),a0,og=class{constructor(e,r,n){if(this._maxPayload=n|0,this._options=e||{},this._threshold=this._options.threshold!==void 0?this._options.threshold:1024,this._isServer=!!r,this._deflate=null,this._inflate=null,this.params=null,!a0){let i=this._options.concurrencyLimit!==void 0?this._options.concurrencyLimit:10;a0=new xK(i)}}static get extensionName(){return"permessage-deflate"}offer(){let e={};return this._options.serverNoContextTakeover&&(e.server_no_context_takeover=!0),this._options.clientNoContextTakeover&&(e.client_no_context_takeover=!0),this._options.serverMaxWindowBits&&(e.server_max_window_bits=this._options.serverMaxWindowBits),this._options.clientMaxWindowBits?e.client_max_window_bits=this._options.clientMaxWindowBits:this._options.clientMaxWindowBits==null&&(e.client_max_window_bits=!0),e}accept(e){return e=this.normalizeParams(e),this.params=this._isServer?this.acceptAsServer(e):this.acceptAsClient(e),this.params}cleanup(){if(this._inflate&&(this._inflate.close(),this._inflate=null),this._deflate){let e=this._deflate[Rl];this._deflate.close(),this._deflate=null,e&&e(new Error("The deflate stream was closed while data was being processed"))}}acceptAsServer(e){let r=this._options,n=e.find(i=>!(r.serverNoContextTakeover===!1&&i.server_no_context_takeover||i.server_max_window_bits&&(r.serverMaxWindowBits===!1||typeof r.serverMaxWindowBits=="number"&&r.serverMaxWindowBits>i.server_max_window_bits)||typeof r.clientMaxWindowBits=="number"&&!i.client_max_window_bits));if(!n)throw new Error("None of the extension offers can be accepted");return r.serverNoContextTakeover&&(n.server_no_context_takeover=!0),r.clientNoContextTakeover&&(n.client_no_context_takeover=!0),typeof r.serverMaxWindowBits=="number"&&(n.server_max_window_bits=r.serverMaxWindowBits),typeof r.clientMaxWindowBits=="number"?n.client_max_window_bits=r.clientMaxWindowBits:(n.client_max_window_bits===!0||r.clientMaxWindowBits===!1)&&delete n.client_max_window_bits,n}acceptAsClient(e){let r=e[0];if(this._options.clientNoContextTakeover===!1&&r.client_no_context_takeover)throw new Error('Unexpected parameter "client_no_context_takeover"');if(!r.client_max_window_bits)typeof this._options.clientMaxWindowBits=="number"&&(r.client_max_window_bits=this._options.clientMaxWindowBits);else if(this._options.clientMaxWindowBits===!1||typeof this._options.clientMaxWindowBits=="number"&&r.client_max_window_bits>this._options.clientMaxWindowBits)throw new Error('Unexpected or invalid parameter "client_max_window_bits"');return r}normalizeParams(e){return e.forEach(r=>{Object.keys(r).forEach(n=>{let i=r[n];if(i.length>1)throw new Error(`Parameter "${n}" must have only a single value`);if(i=i[0],n==="client_max_window_bits"){if(i!==!0){let a=+i;if(!Number.isInteger(a)||a<8||a>15)throw new TypeError(`Invalid value for parameter "${n}": ${i}`);i=a}else if(!this._isServer)throw new TypeError(`Invalid value for parameter "${n}": ${i}`)}else if(n==="server_max_window_bits"){let a=+i;if(!Number.isInteger(a)||a<8||a>15)throw new TypeError(`Invalid value for parameter "${n}": ${i}`);i=a}else if(n==="client_no_context_takeover"||n==="server_no_context_takeover"){if(i!==!0)throw new TypeError(`Invalid value for parameter "${n}": ${i}`)}else throw new Error(`Unknown parameter "${n}"`);r[n]=i})}),e}decompress(e,r,n){a0.add(i=>{this._decompress(e,r,(a,o)=>{i(),n(a,o)})})}compress(e,r,n){a0.add(i=>{this._compress(e,r,(a,o)=>{i(),n(a,o)})})}_decompress(e,r,n){let i=this._isServer?"client":"server";if(!this._inflate){let a=`${i}_max_window_bits`,o=typeof this.params[a]!="number"?Ll.Z_DEFAULT_WINDOWBITS:this.params[a];this._inflate=Ll.createInflateRaw({...this._options.zlibInflateOptions,windowBits:o}),this._inflate[o0]=this,this._inflate[Ki]=0,this._inflate[Ba]=[],this._inflate.on("error",EK),this._inflate.on("data",cS)}this._inflate[Rl]=n,this._inflate.write(e),r&&this._inflate.write(wK),this._inflate.flush(()=>{let a=this._inflate[ag];if(a){this._inflate.close(),this._inflate=null,n(a);return}let o=oS.concat(this._inflate[Ba],this._inflate[Ki]);this._inflate._readableState.endEmitted?(this._inflate.close(),this._inflate=null):(this._inflate[Ki]=0,this._inflate[Ba]=[],r&&this.params[`${i}_no_context_takeover`]&&this._inflate.reset()),n(null,o)})}_compress(e,r,n){let i=this._isServer?"server":"client";if(!this._deflate){let a=`${i}_max_window_bits`,o=typeof this.params[a]!="number"?Ll.Z_DEFAULT_WINDOWBITS:this.params[a];this._deflate=Ll.createDeflateRaw({...this._options.zlibDeflateOptions,windowBits:o}),this._deflate[Ki]=0,this._deflate[Ba]=[],this._deflate.on("error",yK),this._deflate.on("data",AK)}this._deflate[Rl]=n,this._deflate.write(e),this._deflate.flush(Ll.Z_SYNC_FLUSH,()=>{if(!this._deflate)return;let a=oS.concat(this._deflate[Ba],this._deflate[Ki]);r&&(a=a.slice(0,a.length-4)),this._deflate[Rl]=null,this._deflate[Ki]=0,this._deflate[Ba]=[],r&&this.params[`${i}_no_context_takeover`]&&this._deflate.reset(),n(null,a)})}};uS.exports=og;function AK(t){this[Ba].push(t),this[Ki]+=t.length}function cS(t){if(this[Ki]+=t.length,this[o0]._maxPayload<1||this[Ki]<=this[o0]._maxPayload){this[Ba].push(t);return}this[ag]=new RangeError("Max payload size exceeded"),this[ag][sS]=1009,this.removeListener("data",cS),this.reset()}function EK(t){this[o0]._inflate=null,t[sS]=1007,this[Rl](t)}});var fS=P((lte,lS)=>{"use strict";function SK(t){let e=t.length,r=0;for(;r=e||(t[r+1]&192)!==128||(t[r+2]&192)!==128||t[r]===224&&(t[r+1]&224)===128||t[r]===237&&(t[r+1]&224)===160)return!1;r+=3}else if((t[r]&248)===240){if(r+3>=e||(t[r+1]&192)!==128||(t[r+2]&192)!==128||(t[r+3]&192)!==128||t[r]===240&&(t[r+1]&240)===128||t[r]===244&&t[r+1]>143||t[r]>244)return!1;r+=4}else return!1;return!0}lS.exports=SK});var dS=P((fte,sg)=>{"use strict";try{sg.exports=eg()(__dirname)}catch{sg.exports=fS()}});var ug=P((dte,cg)=>{"use strict";function pS(t){return t>=1e3&&t<=1014&&t!==1004&&t!==1005&&t!==1006||t>=3e3&&t<=4999}function hS(t){let e=t.length,r=0;for(;r=e||(t[r+1]&192)!==128||(t[r+2]&192)!==128||t[r]===224&&(t[r+1]&224)===128||t[r]===237&&(t[r+1]&224)===160)return!1;r+=3}else if((t[r]&248)===240){if(r+3>=e||(t[r+1]&192)!==128||(t[r+2]&192)!==128||(t[r+3]&192)!==128||t[r]===240&&(t[r+1]&240)===128||t[r]===244&&t[r+1]>143||t[r]>244)return!1;r+=4}else return!1;return!0}try{let t=dS();typeof t=="object"&&(t=t.Validation.isValidUTF8),cg.exports={isValidStatusCode:pS,isValidUTF8(e){return e.length<150?hS(e):t(e)}}}catch{cg.exports={isValidStatusCode:pS,isValidUTF8:hS}}});var pg=P((pte,yS)=>{"use strict";var{Writable:_K}=require("stream"),vS=Il(),{BINARY_TYPES:TK,EMPTY_BUFFER:kK,kStatusCode:CK,kWebSocket:OK}=zo(),{concat:lg,toArrayBuffer:PK,unmask:MK}=Fl(),{isValidStatusCode:BK,isValidUTF8:mS}=ug(),Nl=0,bS=1,gS=2,xS=3,fg=4,FK=5,dg=class extends _K{constructor(e,r,n,i){super(),this._binaryType=e||TK[0],this[OK]=void 0,this._extensions=r||{},this._isServer=!!n,this._maxPayload=i|0,this._bufferedBytes=0,this._buffers=[],this._compressed=!1,this._payloadLength=0,this._mask=void 0,this._fragmented=0,this._masked=!1,this._fin=!1,this._opcode=0,this._totalPayloadLength=0,this._messageLength=0,this._fragments=[],this._state=Nl,this._loop=!1}_write(e,r,n){if(this._opcode===8&&this._state==Nl)return n();this._bufferedBytes+=e.length,this._buffers.push(e),this.startLoop(n)}consume(e){if(this._bufferedBytes-=e,e===this._buffers[0].length)return this._buffers.shift();if(e=n.length?r.set(this._buffers.shift(),i):(r.set(new Uint8Array(n.buffer,n.byteOffset,e),i),this._buffers[0]=n.slice(e)),e-=n.length}while(e>0);return r}startLoop(e){let r;this._loop=!0;do switch(this._state){case Nl:r=this.getInfo();break;case bS:r=this.getPayloadLength16();break;case gS:r=this.getPayloadLength64();break;case xS:this.getMask();break;case fg:r=this.getData(e);break;default:this._loop=!1;return}while(this._loop);e(r)}getInfo(){if(this._bufferedBytes<2){this._loop=!1;return}let e=this.consume(2);if((e[0]&48)!==0)return this._loop=!1,Lr(RangeError,"RSV2 and RSV3 must be clear",!0,1002);let r=(e[0]&64)===64;if(r&&!this._extensions[vS.extensionName])return this._loop=!1,Lr(RangeError,"RSV1 must be clear",!0,1002);if(this._fin=(e[0]&128)===128,this._opcode=e[0]&15,this._payloadLength=e[1]&127,this._opcode===0){if(r)return this._loop=!1,Lr(RangeError,"RSV1 must be clear",!0,1002);if(!this._fragmented)return this._loop=!1,Lr(RangeError,"invalid opcode 0",!0,1002);this._opcode=this._fragmented}else if(this._opcode===1||this._opcode===2){if(this._fragmented)return this._loop=!1,Lr(RangeError,`invalid opcode ${this._opcode}`,!0,1002);this._compressed=r}else if(this._opcode>7&&this._opcode<11){if(!this._fin)return this._loop=!1,Lr(RangeError,"FIN must be set",!0,1002);if(r)return this._loop=!1,Lr(RangeError,"RSV1 must be clear",!0,1002);if(this._payloadLength>125)return this._loop=!1,Lr(RangeError,`invalid payload length ${this._payloadLength}`,!0,1002)}else return this._loop=!1,Lr(RangeError,`invalid opcode ${this._opcode}`,!0,1002);if(!this._fin&&!this._fragmented&&(this._fragmented=this._opcode),this._masked=(e[1]&128)===128,this._isServer){if(!this._masked)return this._loop=!1,Lr(RangeError,"MASK must be set",!0,1002)}else if(this._masked)return this._loop=!1,Lr(RangeError,"MASK must be clear",!0,1002);if(this._payloadLength===126)this._state=bS;else if(this._payloadLength===127)this._state=gS;else return this.haveLength()}getPayloadLength16(){if(this._bufferedBytes<2){this._loop=!1;return}return this._payloadLength=this.consume(2).readUInt16BE(0),this.haveLength()}getPayloadLength64(){if(this._bufferedBytes<8){this._loop=!1;return}let e=this.consume(8),r=e.readUInt32BE(0);return r>Math.pow(2,53-32)-1?(this._loop=!1,Lr(RangeError,"Unsupported WebSocket frame: payload length > 2^53 - 1",!1,1009)):(this._payloadLength=r*Math.pow(2,32)+e.readUInt32BE(4),this.haveLength())}haveLength(){if(this._payloadLength&&this._opcode<8&&(this._totalPayloadLength+=this._payloadLength,this._totalPayloadLength>this._maxPayload&&this._maxPayload>0))return this._loop=!1,Lr(RangeError,"Max payload size exceeded",!1,1009);this._masked?this._state=xS:this._state=fg}getMask(){if(this._bufferedBytes<4){this._loop=!1;return}this._mask=this.consume(4),this._state=fg}getData(e){let r=kK;if(this._payloadLength){if(this._bufferedBytes7)return this.controlMessage(r);if(this._compressed){this._state=FK,this.decompress(r,e);return}return r.length&&(this._messageLength=this._totalPayloadLength,this._fragments.push(r)),this.dataMessage()}decompress(e,r){this._extensions[vS.extensionName].decompress(e,this._fin,(i,a)=>{if(i)return r(i);if(a.length){if(this._messageLength+=a.length,this._messageLength>this._maxPayload&&this._maxPayload>0)return r(Lr(RangeError,"Max payload size exceeded",!1,1009));this._fragments.push(a)}let o=this.dataMessage();if(o)return r(o);this.startLoop(r)})}dataMessage(){if(this._fin){let e=this._messageLength,r=this._fragments;if(this._totalPayloadLength=0,this._messageLength=0,this._fragmented=0,this._fragments=[],this._opcode===2){let n;this._binaryType==="nodebuffer"?n=lg(r,e):this._binaryType==="arraybuffer"?n=PK(lg(r,e)):n=r,this.emit("message",n)}else{let n=lg(r,e);if(!mS(n))return this._loop=!1,Lr(Error,"invalid UTF-8 sequence",!0,1007);this.emit("message",n.toString())}}this._state=Nl}controlMessage(e){if(this._opcode===8)if(this._loop=!1,e.length===0)this.emit("conclude",1005,""),this.end();else{if(e.length===1)return Lr(RangeError,"invalid payload length 1",!0,1002);{let r=e.readUInt16BE(0);if(!BK(r))return Lr(RangeError,`invalid status code ${r}`,!0,1002);let n=e.slice(2);if(!mS(n))return Lr(Error,"invalid UTF-8 sequence",!0,1007);this.emit("conclude",r,n.toString()),this.end()}}else this._opcode===9?this.emit("ping",e):this.emit("pong",e);this._state=Nl}};yS.exports=dg;function Lr(t,e,r,n){let i=new t(r?`Invalid WebSocket frame: ${e}`:e);return Error.captureStackTrace(i,Lr),i[CK]=n,i}});var hg=P((hte,ES)=>{"use strict";var{randomFillSync:LK}=require("crypto"),wS=Il(),{EMPTY_BUFFER:RK}=zo(),{isValidStatusCode:IK}=ug(),{mask:AS,toBuffer:Vi}=Fl(),Go=Buffer.alloc(4),gi=class{constructor(e,r){this._extensions=r||{},this._socket=e,this._firstFragment=!0,this._compress=!1,this._bufferedBytes=0,this._deflating=!1,this._queue=[]}static frame(e,r){let n=r.mask&&r.readOnly,i=r.mask?6:2,a=e.length;e.length>=65536?(i+=8,a=127):e.length>125&&(i+=2,a=126);let o=Buffer.allocUnsafe(n?e.length+i:i);return o[0]=r.fin?r.opcode|128:r.opcode,r.rsv1&&(o[0]|=64),o[1]=a,a===126?o.writeUInt16BE(e.length,2):a===127&&(o.writeUInt32BE(0,2),o.writeUInt32BE(e.length,6)),r.mask?(LK(Go,0,4),o[1]|=128,o[i-4]=Go[0],o[i-3]=Go[1],o[i-2]=Go[2],o[i-1]=Go[3],n?(AS(e,Go,o,i,e.length),[o]):(AS(e,Go,e,0,e.length),[o,e])):[o,e]}close(e,r,n,i){let a;if(e===void 0)a=RK;else{if(typeof e!="number"||!IK(e))throw new TypeError("First argument must be a valid error code number");if(r===void 0||r==="")a=Buffer.allocUnsafe(2),a.writeUInt16BE(e,0);else{let o=Buffer.byteLength(r);if(o>123)throw new RangeError("The message must not be greater than 123 bytes");a=Buffer.allocUnsafe(2+o),a.writeUInt16BE(e,0),a.write(r,2)}}this._deflating?this.enqueue([this.doClose,a,n,i]):this.doClose(a,n,i)}doClose(e,r,n){this.sendFrame(gi.frame(e,{fin:!0,rsv1:!1,opcode:8,mask:r,readOnly:!1}),n)}ping(e,r,n){let i=Vi(e);if(i.length>125)throw new RangeError("The data size must not be greater than 125 bytes");this._deflating?this.enqueue([this.doPing,i,r,Vi.readOnly,n]):this.doPing(i,r,Vi.readOnly,n)}doPing(e,r,n,i){this.sendFrame(gi.frame(e,{fin:!0,rsv1:!1,opcode:9,mask:r,readOnly:n}),i)}pong(e,r,n){let i=Vi(e);if(i.length>125)throw new RangeError("The data size must not be greater than 125 bytes");this._deflating?this.enqueue([this.doPong,i,r,Vi.readOnly,n]):this.doPong(i,r,Vi.readOnly,n)}doPong(e,r,n,i){this.sendFrame(gi.frame(e,{fin:!0,rsv1:!1,opcode:10,mask:r,readOnly:n}),i)}send(e,r,n){let i=Vi(e),a=this._extensions[wS.extensionName],o=r.binary?2:1,c=r.compress;if(this._firstFragment?(this._firstFragment=!1,c&&a&&(c=i.length>=a._threshold),this._compress=c):(c=!1,o=0),r.fin&&(this._firstFragment=!0),a){let u={fin:r.fin,rsv1:c,opcode:o,mask:r.mask,readOnly:Vi.readOnly};this._deflating?this.enqueue([this.dispatch,i,this._compress,u,n]):this.dispatch(i,this._compress,u,n)}else this.sendFrame(gi.frame(i,{fin:r.fin,rsv1:!1,opcode:o,mask:r.mask,readOnly:Vi.readOnly}),n)}dispatch(e,r,n,i){if(!r){this.sendFrame(gi.frame(e,n),i);return}let a=this._extensions[wS.extensionName];this._bufferedBytes+=e.length,this._deflating=!0,a.compress(e,n.fin,(o,c)=>{if(this._socket.destroyed){let u=new Error("The socket was closed while data was being compressed");typeof i=="function"&&i(u);for(let s=0;s{"use strict";var Mc=class{constructor(e,r){this.target=r,this.type=e}},vg=class extends Mc{constructor(e,r){super("message",r),this.data=e}},mg=class extends Mc{constructor(e,r,n){super("close",n),this.wasClean=n._closeFrameReceived&&n._closeFrameSent,this.reason=r,this.code=e}},bg=class extends Mc{constructor(e){super("open",e)}},gg=class extends Mc{constructor(e,r){super("error",r),this.message=e.message,this.error=e}},NK={addEventListener(t,e,r){if(typeof e!="function")return;function n(u){e.call(this,new vg(u,this))}function i(u,s){e.call(this,new mg(u,s,this))}function a(u){e.call(this,new gg(u,this))}function o(){e.call(this,new bg(this))}let c=r&&r.once?"once":"on";t==="message"?(n._listener=e,this[c](t,n)):t==="close"?(i._listener=e,this[c](t,i)):t==="error"?(a._listener=e,this[c](t,a)):t==="open"?(o._listener=e,this[c](t,o)):this[c](t,e)},removeEventListener(t,e){let r=this.listeners(t);for(let n=0;n{"use strict";var Dl=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,1,1,1,1,0,0,1,1,0,1,1,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0,1,0];function xi(t,e,r){t[e]===void 0?t[e]=[r]:t[e].push(r)}function DK(t){let e=Object.create(null);if(t===void 0||t==="")return e;let r=Object.create(null),n=!1,i=!1,a=!1,o,c,u=-1,s=-1,f=0;for(;f{let r=t[e];return Array.isArray(r)||(r=[r]),r.map(n=>[e].concat(Object.keys(n).map(i=>{let a=n[i];return Array.isArray(a)||(a=[a]),a.map(o=>o===!0?i:`${i}=${o}`).join("; ")})).join("; ")).join(", ")}).join(", ")}TS.exports={format:JK,parse:DK}});var Sg=P((bte,IS)=>{"use strict";var qK=require("events"),jK=require("https"),UK=require("http"),OS=require("net"),HK=require("tls"),{randomBytes:zK,createHash:GK}=require("crypto"),{URL:yg}=require("url"),Fa=Il(),XK=pg(),KK=hg(),{BINARY_TYPES:kS,EMPTY_BUFFER:wg,GUID:VK,kStatusCode:ZK,kWebSocket:Ot,NOOP:PS}=zo(),{addEventListener:QK,removeEventListener:WK}=_S(),{format:YK,parse:$K}=xg(),{toBuffer:eV}=Fl(),MS=["CONNECTING","OPEN","CLOSING","CLOSED"],Ag=[8,13],rV=30*1e3,Xe=class extends qK{constructor(e,r,n){super(),this._binaryType=kS[0],this._closeCode=1006,this._closeFrameReceived=!1,this._closeFrameSent=!1,this._closeMessage="",this._closeTimer=null,this._extensions={},this._protocol="",this._readyState=Xe.CONNECTING,this._receiver=null,this._sender=null,this._socket=null,e!==null?(this._bufferedAmount=0,this._isServer=!1,this._redirects=0,Array.isArray(r)?r=r.join(", "):typeof r=="object"&&r!==null&&(n=r,r=void 0),BS(this,e,r,n)):this._isServer=!0}get binaryType(){return this._binaryType}set binaryType(e){!kS.includes(e)||(this._binaryType=e,this._receiver&&(this._receiver._binaryType=e))}get bufferedAmount(){return this._socket?this._socket._writableState.length+this._sender._bufferedBytes:this._bufferedAmount}get extensions(){return Object.keys(this._extensions).join()}get protocol(){return this._protocol}get readyState(){return this._readyState}get url(){return this._url}setSocket(e,r,n){let i=new XK(this.binaryType,this._extensions,this._isServer,n);this._sender=new KK(e,this._extensions),this._receiver=i,this._socket=e,i[Ot]=this,e[Ot]=this,i.on("conclude",iV),i.on("drain",aV),i.on("error",oV),i.on("message",sV),i.on("ping",cV),i.on("pong",uV),e.setTimeout(0),e.setNoDelay(),r.length>0&&e.unshift(r),e.on("close",FS),e.on("data",s0),e.on("end",LS),e.on("error",RS),this._readyState=Xe.OPEN,this.emit("open")}emitClose(){if(!this._socket){this._readyState=Xe.CLOSED,this.emit("close",this._closeCode,this._closeMessage);return}this._extensions[Fa.extensionName]&&this._extensions[Fa.extensionName].cleanup(),this._receiver.removeAllListeners(),this._readyState=Xe.CLOSED,this.emit("close",this._closeCode,this._closeMessage)}close(e,r){if(this.readyState!==Xe.CLOSED){if(this.readyState===Xe.CONNECTING){let n="WebSocket was closed before the connection was established";return Zi(this,this._req,n)}if(this.readyState===Xe.CLOSING){this._closeFrameSent&&this._closeFrameReceived&&this._socket.end();return}this._readyState=Xe.CLOSING,this._sender.close(e,r,!this._isServer,n=>{n||(this._closeFrameSent=!0,this._closeFrameReceived&&this._socket.end())}),this._closeTimer=setTimeout(this._socket.destroy.bind(this._socket),rV)}}ping(e,r,n){if(this.readyState===Xe.CONNECTING)throw new Error("WebSocket is not open: readyState 0 (CONNECTING)");if(typeof e=="function"?(n=e,e=r=void 0):typeof r=="function"&&(n=r,r=void 0),typeof e=="number"&&(e=e.toString()),this.readyState!==Xe.OPEN){Eg(this,e,n);return}r===void 0&&(r=!this._isServer),this._sender.ping(e||wg,r,n)}pong(e,r,n){if(this.readyState===Xe.CONNECTING)throw new Error("WebSocket is not open: readyState 0 (CONNECTING)");if(typeof e=="function"?(n=e,e=r=void 0):typeof r=="function"&&(n=r,r=void 0),typeof e=="number"&&(e=e.toString()),this.readyState!==Xe.OPEN){Eg(this,e,n);return}r===void 0&&(r=!this._isServer),this._sender.pong(e||wg,r,n)}send(e,r,n){if(this.readyState===Xe.CONNECTING)throw new Error("WebSocket is not open: readyState 0 (CONNECTING)");if(typeof r=="function"&&(n=r,r={}),typeof e=="number"&&(e=e.toString()),this.readyState!==Xe.OPEN){Eg(this,e,n);return}let i={binary:typeof e!="string",mask:!this._isServer,compress:!0,fin:!0,...r};this._extensions[Fa.extensionName]||(i.compress=!1),this._sender.send(e||wg,i,n)}terminate(){if(this.readyState!==Xe.CLOSED){if(this.readyState===Xe.CONNECTING){let e="WebSocket was closed before the connection was established";return Zi(this,this._req,e)}this._socket&&(this._readyState=Xe.CLOSING,this._socket.destroy())}}};MS.forEach((t,e)=>{let r={enumerable:!0,value:e};Object.defineProperty(Xe.prototype,t,r),Object.defineProperty(Xe,t,r)});["binaryType","bufferedAmount","extensions","protocol","readyState","url"].forEach(t=>{Object.defineProperty(Xe.prototype,t,{enumerable:!0})});["open","error","close","message"].forEach(t=>{Object.defineProperty(Xe.prototype,`on${t}`,{configurable:!0,enumerable:!0,get(){let e=this.listeners(t);for(let r=0;r{Zi(t,w,"Opening handshake has timed out")}),w.on("error",T=>{w===null||w.aborted||(w=t._req=null,t._readyState=Xe.CLOSING,t.emit("error",T),t.emitClose())}),w.on("response",T=>{let A=T.headers.location,O=T.statusCode;if(A&&i.followRedirects&&O>=300&&O<400){if(++t._redirects>i.maxRedirects){Zi(t,w,"Maximum redirects exceeded");return}w.abort();let B=new yg(A,e);BS(t,B,r,n)}else t.emit("unexpected-response",w,T)||Zi(t,w,`Unexpected server response: ${T.statusCode}`)}),w.on("upgrade",(T,A,O)=>{if(t.emit("upgrade",T),t.readyState!==Xe.CONNECTING)return;w=t._req=null;let B=GK("sha1").update(s+VK).digest("base64");if(T.headers["sec-websocket-accept"]!==B){Zi(t,A,"Invalid Sec-WebSocket-Accept header");return}let F=T.headers["sec-websocket-protocol"],I=(r||"").split(/, */),D;if(!r&&F?D="Server sent a subprotocol but none was requested":r&&!F?D="Server sent no subprotocol":F&&!I.includes(F)&&(D="Server sent an invalid subprotocol"),D){Zi(t,A,D);return}if(F&&(t._protocol=F),m)try{let z=$K(T.headers["sec-websocket-extensions"]);z[Fa.extensionName]&&(m.accept(z[Fa.extensionName]),t._extensions[Fa.extensionName]=m)}catch{Zi(t,A,"Invalid Sec-WebSocket-Extensions header");return}t.setSocket(A,O,i.maxPayload)})}function tV(t){return t.path=t.socketPath,OS.connect(t)}function nV(t){return t.path=void 0,!t.servername&&t.servername!==""&&(t.servername=OS.isIP(t.host)?"":t.host),HK.connect(t)}function Zi(t,e,r){t._readyState=Xe.CLOSING;let n=new Error(r);Error.captureStackTrace(n,Zi),e.setHeader?(e.abort(),e.socket&&!e.socket.destroyed&&e.socket.destroy(),e.once("abort",t.emitClose.bind(t)),t.emit("error",n)):(e.destroy(n),e.once("error",t.emit.bind(t,"error")),e.once("close",t.emitClose.bind(t)))}function Eg(t,e,r){if(e){let n=eV(e).length;t._socket?t._sender._bufferedBytes+=n:t._bufferedAmount+=n}if(r){let n=new Error(`WebSocket is not open: readyState ${t.readyState} (${MS[t.readyState]})`);r(n)}}function iV(t,e){let r=this[Ot];r._socket.removeListener("data",s0),r._socket.resume(),r._closeFrameReceived=!0,r._closeMessage=e,r._closeCode=t,t===1005?r.close():r.close(t,e)}function aV(){this[Ot]._socket.resume()}function oV(t){let e=this[Ot];e._socket.removeListener("data",s0),e._readyState=Xe.CLOSING,e._closeCode=t[ZK],e.emit("error",t),e._socket.destroy()}function CS(){this[Ot].emitClose()}function sV(t){this[Ot].emit("message",t)}function cV(t){let e=this[Ot];e.pong(t,!e._isServer,PS),e.emit("ping",t)}function uV(t){this[Ot].emit("pong",t)}function FS(){let t=this[Ot];this.removeListener("close",FS),this.removeListener("end",LS),t._readyState=Xe.CLOSING,t._socket.read(),t._receiver.end(),this.removeListener("data",s0),this[Ot]=void 0,clearTimeout(t._closeTimer),t._receiver._writableState.finished||t._receiver._writableState.errorEmitted?t.emitClose():(t._receiver.on("error",CS),t._receiver.on("finish",CS))}function s0(t){this[Ot]._receiver.write(t)||this.pause()}function LS(){let t=this[Ot];t._readyState=Xe.CLOSING,t._receiver.end(),this.end()}function RS(){let t=this[Ot];this.removeListener("error",RS),this.on("error",PS),t&&(t._readyState=Xe.CLOSING,this.destroy())}});var qS=P((gte,JS)=>{"use strict";var{Duplex:lV}=require("stream");function NS(t){t.emit("close")}function fV(){!this.destroyed&&this._writableState.finished&&this.destroy()}function DS(t){this.removeListener("error",DS),this.destroy(),this.listenerCount("error")===0&&this.emit("error",t)}function dV(t,e){let r=!0;function n(){r&&t._socket.resume()}t.readyState===t.CONNECTING?t.once("open",function(){t._receiver.removeAllListeners("drain"),t._receiver.on("drain",n)}):(t._receiver.removeAllListeners("drain"),t._receiver.on("drain",n));let i=new lV({...e,autoDestroy:!1,emitClose:!1,objectMode:!1,writableObjectMode:!1});return t.on("message",function(o){i.push(o)||(r=!1,t._socket.pause())}),t.once("error",function(o){i.destroyed||i.destroy(o)}),t.once("close",function(){i.destroyed||i.push(null)}),i._destroy=function(a,o){if(t.readyState===t.CLOSED){o(a),process.nextTick(NS,i);return}let c=!1;t.once("error",function(s){c=!0,o(s)}),t.once("close",function(){c||o(a),process.nextTick(NS,i)}),t.terminate()},i._final=function(a){if(t.readyState===t.CONNECTING){t.once("open",function(){i._final(a)});return}t._socket!==null&&(t._socket._writableState.finished?(a(),i._readableState.endEmitted&&i.destroy()):(t._socket.once("finish",function(){a()}),t.close()))},i._read=function(){t.readyState===t.OPEN&&!r&&(r=!0,t._receiver._writableState.needDrain||t._socket.resume())},i._write=function(a,o,c){if(t.readyState===t.CONNECTING){t.once("open",function(){i._write(a,o,c)});return}t.send(a,c)},i.on("end",fV),i.on("error",DS),i}JS.exports=dV});var US=P((xte,jS)=>{"use strict";var pV=require("events"),{createHash:hV}=require("crypto"),{createServer:vV,STATUS_CODES:_g}=require("http"),Xo=Il(),mV=Sg(),{format:bV,parse:gV}=xg(),{GUID:xV,kWebSocket:yV}=zo(),wV=/^[+/0-9A-Za-z]{22}==$/,Tg=class extends pV{constructor(e,r){if(super(),e={maxPayload:100*1024*1024,perMessageDeflate:!1,handleProtocols:null,clientTracking:!0,verifyClient:null,noServer:!1,backlog:null,server:null,host:null,path:null,port:null,...e},e.port==null&&!e.server&&!e.noServer)throw new TypeError('One of the "port", "server", or "noServer" options must be specified');if(e.port!=null?(this._server=vV((n,i)=>{let a=_g[426];i.writeHead(426,{"Content-Length":a.length,"Content-Type":"text/plain"}),i.end(a)}),this._server.listen(e.port,e.host,e.backlog,r)):e.server&&(this._server=e.server),this._server){let n=this.emit.bind(this,"connection");this._removeListeners=AV(this._server,{listening:this.emit.bind(this,"listening"),error:this.emit.bind(this,"error"),upgrade:(i,a,o)=>{this.handleUpgrade(i,a,o,n)}})}e.perMessageDeflate===!0&&(e.perMessageDeflate={}),e.clientTracking&&(this.clients=new Set),this.options=e}address(){if(this.options.noServer)throw new Error('The server is operating in "noServer" mode');return this._server?this._server.address():null}close(e){if(e&&this.once("close",e),this.clients)for(let n of this.clients)n.terminate();let r=this._server;if(r&&(this._removeListeners(),this._removeListeners=this._server=null,this.options.port!=null)){r.close(()=>this.emit("close"));return}process.nextTick(EV,this)}shouldHandle(e){if(this.options.path){let r=e.url.indexOf("?");if((r!==-1?e.url.slice(0,r):e.url)!==this.options.path)return!1}return!0}handleUpgrade(e,r,n,i){r.on("error",kg);let a=e.headers["sec-websocket-key"]!==void 0?e.headers["sec-websocket-key"].trim():!1,o=+e.headers["sec-websocket-version"],c={};if(e.method!=="GET"||e.headers.upgrade.toLowerCase()!=="websocket"||!a||!wV.test(a)||o!==8&&o!==13||!this.shouldHandle(e))return c0(r,400);if(this.options.perMessageDeflate){let u=new Xo(this.options.perMessageDeflate,!0,this.options.maxPayload);try{let s=gV(e.headers["sec-websocket-extensions"]);s[Xo.extensionName]&&(u.accept(s[Xo.extensionName]),c[Xo.extensionName]=u)}catch{return c0(r,400)}}if(this.options.verifyClient){let u={origin:e.headers[`${o===8?"sec-websocket-origin":"origin"}`],secure:!!(e.socket.authorized||e.socket.encrypted),req:e};if(this.options.verifyClient.length===2){this.options.verifyClient(u,(s,f,m,w)=>{if(!s)return c0(r,f||401,m,w);this.completeUpgrade(a,c,e,r,n,i)});return}if(!this.options.verifyClient(u))return c0(r,401)}this.completeUpgrade(a,c,e,r,n,i)}completeUpgrade(e,r,n,i,a,o){if(!i.readable||!i.writable)return i.destroy();if(i[yV])throw new Error("server.handleUpgrade() was called more than once with the same socket, possibly due to a misconfiguration");let u=["HTTP/1.1 101 Switching Protocols","Upgrade: websocket","Connection: Upgrade",`Sec-WebSocket-Accept: ${hV("sha1").update(e+xV).digest("base64")}`],s=new mV(null),f=n.headers["sec-websocket-protocol"];if(f&&(f=f.split(",").map(SV),this.options.handleProtocols?f=this.options.handleProtocols(f,n):f=f[0],f&&(u.push(`Sec-WebSocket-Protocol: ${f}`),s._protocol=f)),r[Xo.extensionName]){let m=r[Xo.extensionName].params,w=bV({[Xo.extensionName]:[m]});u.push(`Sec-WebSocket-Extensions: ${w}`),s._extensions=r}this.emit("headers",u,n),i.write(u.concat(`\r +`).join(`\r +`)),i.removeListener("error",kg),s.setSocket(i,a,this.options.maxPayload),this.clients&&(this.clients.add(s),s.on("close",()=>this.clients.delete(s))),o(s,n)}};jS.exports=Tg;function AV(t,e){for(let r of Object.keys(e))t.on(r,e[r]);return function(){for(let n of Object.keys(e))t.removeListener(n,e[n])}}function EV(t){t.emit("close")}function kg(){this.destroy()}function c0(t,e,r,n){t.writable&&(r=r||_g[e],n={Connection:"close","Content-Type":"text/html","Content-Length":Buffer.byteLength(r),...n},t.write(`HTTP/1.1 ${e} ${_g[e]}\r +`+Object.keys(n).map(i=>`${i}: ${n[i]}`).join(`\r +`)+`\r +\r +`+r)),t.removeListener("error",kg),t.destroy()}function SV(t){return t.trim()}});var zS=P((yte,HS)=>{"use strict";var Jl=Sg();Jl.createWebSocketStream=qS();Jl.Server=US();Jl.Receiver=pg();Jl.Sender=hg();HS.exports=Jl});var GS=P(Bc=>{"use strict";var _V=Bc&&Bc.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(Bc,"__esModule",{value:!0});Bc.WebSocket=void 0;var TV=_V(zS());Bc.WebSocket=TV.default});var l0=P(yi=>{"use strict";var kV=yi&&yi.__extends||function(){var t=function(e,r){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,i){n.__proto__=i}||function(n,i){for(var a in i)Object.prototype.hasOwnProperty.call(i,a)&&(n[a]=i[a])},t(e,r)};return function(e,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");t(e,r);function n(){this.constructor=e}e.prototype=r===null?Object.create(r):(n.prototype=r.prototype,new n)}}(),Cg=yi&&yi.__awaiter||function(t,e,r,n){function i(a){return a instanceof r?a:new r(function(o){o(a)})}return new(r||(r=Promise))(function(a,o){function c(f){try{s(n.next(f))}catch(m){o(m)}}function u(f){try{s(n.throw(f))}catch(m){o(m)}}function s(f){f.done?a(f.value):i(f.value).then(c,u)}s((n=n.apply(t,e||[])).next())})},Og=yi&&yi.__generator||function(t,e){var r={label:0,sent:function(){if(a[0]&1)throw a[1];return a[1]},trys:[],ops:[]},n,i,a,o;return o={next:c(0),throw:c(1),return:c(2)},typeof Symbol=="function"&&(o[Symbol.iterator]=function(){return this}),o;function c(s){return function(f){return u([s,f])}}function u(s){if(n)throw new TypeError("Generator is already executing.");for(;r;)try{if(n=1,i&&(a=s[0]&2?i.return:s[0]?i.throw||((a=i.return)&&a.call(i),0):i.next)&&!(a=a.call(i,s[1])).done)return a;switch(i=0,a&&(s=[s[0]&2,a.value]),s[0]){case 0:case 1:a=s;break;case 4:return r.label++,{value:s[1],done:!1};case 5:r.label++,i=s[1],s=[0];continue;case 7:s=r.ops.pop(),r.trys.pop();continue;default:if(a=r.trys,!(a=a.length>0&&a[a.length-1])&&(s[0]===6||s[0]===2)){r=0;continue}if(s[0]===3&&(!a||s[1]>a[0]&&s[1]{"use strict";var KS=cn&&cn.__extends||function(){var t=function(e,r){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,i){n.__proto__=i}||function(n,i){for(var a in i)Object.prototype.hasOwnProperty.call(i,a)&&(n[a]=i[a])},t(e,r)};return function(e,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");t(e,r);function n(){this.constructor=e}e.prototype=r===null?Object.create(r):(n.prototype=r.prototype,new n)}}(),FV=cn&&cn.__awaiter||function(t,e,r,n){function i(a){return a instanceof r?a:new r(function(o){o(a)})}return new(r||(r=Promise))(function(a,o){function c(f){try{s(n.next(f))}catch(m){o(m)}}function u(f){try{s(n.throw(f))}catch(m){o(m)}}function s(f){f.done?a(f.value):i(f.value).then(c,u)}s((n=n.apply(t,e||[])).next())})},LV=cn&&cn.__generator||function(t,e){var r={label:0,sent:function(){if(a[0]&1)throw a[1];return a[1]},trys:[],ops:[]},n,i,a,o;return o={next:c(0),throw:c(1),return:c(2)},typeof Symbol=="function"&&(o[Symbol.iterator]=function(){return this}),o;function c(s){return function(f){return u([s,f])}}function u(s){if(n)throw new TypeError("Generator is already executing.");for(;r;)try{if(n=1,i&&(a=s[0]&2?i.return:s[0]?i.throw||((a=i.return)&&a.call(i),0):i.next)&&!(a=a.call(i,s[1])).done)return a;switch(i=0,a&&(s=[s[0]&2,a.value]),s[0]){case 0:case 1:a=s;break;case 4:return r.label++,{value:s[1],done:!1};case 5:r.label++,i=s[1],s=[0];continue;case 7:s=r.ops.pop(),r.trys.pop();continue;default:if(a=r.trys,!(a=a.length>0&&a[a.length-1])&&(s[0]===6||s[0]===2)){r=0;continue}if(s[0]===3&&(!a||s[1]>a[0]&&s[1]{"use strict";var QS=Ia&&Ia.__extends||function(){var t=function(e,r){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,i){n.__proto__=i}||function(n,i){for(var a in i)Object.prototype.hasOwnProperty.call(i,a)&&(n[a]=i[a])},t(e,r)};return function(e,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");t(e,r);function n(){this.constructor=e}e.prototype=r===null?Object.create(r):(n.prototype=r.prototype,new n)}}();Object.defineProperty(Ia,"__esModule",{value:!0});Ia.AlchemyProvider=Ia.AlchemyWebSocketProvider=void 0;var DV=Ve(),JV=Ma(),qV=l0(),jV=re(),UV=et(),ZS=new jV.Logger(UV.version),HV=Ra(),d0="_gg7wSSi0KMBsdKnGVfHDueq6xMB9EkC",WS=function(t){QS(e,t);function e(r,n){var i=this,a=new YS(r,n),o=a.connection.url.replace(/^http/i,"ws").replace(".alchemyapi.",".ws.alchemyapi.");return i=t.call(this,o,a.network)||this,(0,DV.defineReadOnly)(i,"apiKey",a.apiKey),i}return e.prototype.isCommunityResource=function(){return this.apiKey===d0},e}(qV.WebSocketProvider);Ia.AlchemyWebSocketProvider=WS;var YS=function(t){QS(e,t);function e(){return t!==null&&t.apply(this,arguments)||this}return e.getWebSocketProvider=function(r,n){return new WS(r,n)},e.getApiKey=function(r){return r==null?d0:(r&&typeof r!="string"&&ZS.throwArgumentError("invalid apiKey","apiKey",r),r)},e.getUrl=function(r,n){var i=null;switch(r.name){case"homestead":i="eth-mainnet.alchemyapi.io/v2/";break;case"goerli":i="eth-goerli.g.alchemy.com/v2/";break;case"matic":i="polygon-mainnet.g.alchemy.com/v2/";break;case"maticmum":i="polygon-mumbai.g.alchemy.com/v2/";break;case"arbitrum":i="arb-mainnet.g.alchemy.com/v2/";break;case"arbitrum-goerli":i="arb-goerli.g.alchemy.com/v2/";break;case"optimism":i="opt-mainnet.g.alchemy.com/v2/";break;case"optimism-goerli":i="opt-goerli.g.alchemy.com/v2/";break;default:ZS.throwArgumentError("unsupported network","network",arguments[0])}return{allowGzip:!0,url:"https://"+i+n,throttleCallback:function(a,o){return n===d0&&(0,JV.showThrottleMessage)(),Promise.resolve(!0)}}},e.prototype.isCommunityResource=function(){return this.apiKey===d0},e}(HV.UrlJsonRpcProvider);Ia.AlchemyProvider=YS});var e_=P(Lc=>{"use strict";var zV=Lc&&Lc.__extends||function(){var t=function(e,r){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,i){n.__proto__=i}||function(n,i){for(var a in i)Object.prototype.hasOwnProperty.call(i,a)&&(n[a]=i[a])},t(e,r)};return function(e,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");t(e,r);function n(){this.constructor=e}e.prototype=r===null?Object.create(r):(n.prototype=r.prototype,new n)}}();Object.defineProperty(Lc,"__esModule",{value:!0});Lc.AnkrProvider=void 0;var GV=Ma(),XV=Ra(),KV=re(),VV=et(),ZV=new KV.Logger(VV.version),p0="9f7d929b018cdffb338517efa06f58359e86ff1ffd350bc889738523659e7972";function QV(t){switch(t){case"homestead":return"rpc.ankr.com/eth/";case"ropsten":return"rpc.ankr.com/eth_ropsten/";case"rinkeby":return"rpc.ankr.com/eth_rinkeby/";case"goerli":return"rpc.ankr.com/eth_goerli/";case"matic":return"rpc.ankr.com/polygon/";case"arbitrum":return"rpc.ankr.com/arbitrum/"}return ZV.throwArgumentError("unsupported network","name",t)}var WV=function(t){zV(e,t);function e(){return t!==null&&t.apply(this,arguments)||this}return e.prototype.isCommunityResource=function(){return this.apiKey===p0},e.getApiKey=function(r){return r??p0},e.getUrl=function(r,n){n==null&&(n=p0);var i={allowGzip:!0,url:"https://"+QV(r.name)+n,throttleCallback:function(a,o){return n.apiKey===p0&&(0,GV.showThrottleMessage)(),Promise.resolve(!0)}};return n.projectSecret!=null&&(i.user="",i.password=n.projectSecret),i},e}(XV.UrlJsonRpcProvider);Lc.AnkrProvider=WV});var t_=P(wi=>{"use strict";var YV=wi&&wi.__extends||function(){var t=function(e,r){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,i){n.__proto__=i}||function(n,i){for(var a in i)Object.prototype.hasOwnProperty.call(i,a)&&(n[a]=i[a])},t(e,r)};return function(e,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");t(e,r);function n(){this.constructor=e}e.prototype=r===null?Object.create(r):(n.prototype=r.prototype,new n)}}(),$V=wi&&wi.__awaiter||function(t,e,r,n){function i(a){return a instanceof r?a:new r(function(o){o(a)})}return new(r||(r=Promise))(function(a,o){function c(f){try{s(n.next(f))}catch(m){o(m)}}function u(f){try{s(n.throw(f))}catch(m){o(m)}}function s(f){f.done?a(f.value):i(f.value).then(c,u)}s((n=n.apply(t,e||[])).next())})},eZ=wi&&wi.__generator||function(t,e){var r={label:0,sent:function(){if(a[0]&1)throw a[1];return a[1]},trys:[],ops:[]},n,i,a,o;return o={next:c(0),throw:c(1),return:c(2)},typeof Symbol=="function"&&(o[Symbol.iterator]=function(){return this}),o;function c(s){return function(f){return u([s,f])}}function u(s){if(n)throw new TypeError("Generator is already executing.");for(;r;)try{if(n=1,i&&(a=s[0]&2?i.return:s[0]?i.throw||((a=i.return)&&a.call(i),0):i.next)&&!(a=a.call(i,s[1])).done)return a;switch(i=0,a&&(s=[s[0]&2,a.value]),s[0]){case 0:case 1:a=s;break;case 4:return r.label++,{value:s[1],done:!1};case 5:r.label++,i=s[1],s=[0];continue;case 7:s=r.ops.pop(),r.trys.pop();continue;default:if(a=r.trys,!(a=a.length>0&&a[a.length-1])&&(s[0]===6||s[0]===2)){r=0;continue}if(s[0]===3&&(!a||s[1]>a[0]&&s[1]{"use strict";var aZ=Ei&&Ei.__extends||function(){var t=function(e,r){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,i){n.__proto__=i}||function(n,i){for(var a in i)Object.prototype.hasOwnProperty.call(i,a)&&(n[a]=i[a])},t(e,r)};return function(e,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");t(e,r);function n(){this.constructor=e}e.prototype=r===null?Object.create(r):(n.prototype=r.prototype,new n)}}(),h0=Ei&&Ei.__awaiter||function(t,e,r,n){function i(a){return a instanceof r?a:new r(function(o){o(a)})}return new(r||(r=Promise))(function(a,o){function c(f){try{s(n.next(f))}catch(m){o(m)}}function u(f){try{s(n.throw(f))}catch(m){o(m)}}function s(f){f.done?a(f.value):i(f.value).then(c,u)}s((n=n.apply(t,e||[])).next())})},v0=Ei&&Ei.__generator||function(t,e){var r={label:0,sent:function(){if(a[0]&1)throw a[1];return a[1]},trys:[],ops:[]},n,i,a,o;return o={next:c(0),throw:c(1),return:c(2)},typeof Symbol=="function"&&(o[Symbol.iterator]=function(){return this}),o;function c(s){return function(f){return u([s,f])}}function u(s){if(n)throw new TypeError("Generator is already executing.");for(;r;)try{if(n=1,i&&(a=s[0]&2?i.return:s[0]?i.throw||((a=i.return)&&a.call(i),0):i.next)&&!(a=a.call(i,s[1])).done)return a;switch(i=0,a&&(s=[s[0]&2,a.value]),s[0]){case 0:case 1:a=s;break;case 4:return r.label++,{value:s[1],done:!1};case 5:r.label++,i=s[1],s=[0];continue;case 7:s=r.ops.pop(),r.trys.pop();continue;default:if(a=r.trys,!(a=a.length>0&&a[a.length-1])&&(s[0]===6||s[0]===2)){r=0;continue}if(s[0]===3&&(!a||s[1]>a[0]&&s[1]=0&&(e.throttleRetry=!0),e}return t.result}function i_(t){if(t&&t.status==0&&t.message=="NOTOK"&&(t.result||"").toLowerCase().indexOf("rate limit")>=0){var e=new Error("throttled response");throw e.result=JSON.stringify(t),e.throttleRetry=!0,e}if(t.jsonrpc!="2.0"){var e=new Error("invalid response");throw e.result=JSON.stringify(t),e}if(t.error){var e=new Error(t.error.message||"unknown error");throw t.error.code&&(e.code=t.error.code),t.error.data&&(e.data=t.error.data),e}return t.result}function a_(t){if(t==="pending")throw new Error("pending not supported");return t==="latest"?t:parseInt(t.substring(2),16)}function Mg(t,e,r){if(t==="call"&&e.code===Ai.Logger.errors.SERVER_ERROR){var n=e.error;if(n&&(n.message.match(/reverted/i)||n.message.match(/VM execution error/i))){var i=n.data;if(i&&(i="0x"+i.replace(/^.*0x/i,"")),(0,m0.isHexString)(i))return i;Na.throwError("missing revert data in call exception",Ai.Logger.errors.CALL_EXCEPTION,{error:e,data:"0x"})}}var a=e.message;throw e.code===Ai.Logger.errors.SERVER_ERROR&&(e.error&&typeof e.error.message=="string"?a=e.error.message:typeof e.body=="string"?a=e.body:typeof e.responseText=="string"&&(a=e.responseText)),a=(a||"").toLowerCase(),a.match(/insufficient funds/)&&Na.throwError("insufficient funds for intrinsic transaction cost",Ai.Logger.errors.INSUFFICIENT_FUNDS,{error:e,method:t,transaction:r}),a.match(/same hash was already imported|transaction nonce is too low|nonce too low/)&&Na.throwError("nonce has already been used",Ai.Logger.errors.NONCE_EXPIRED,{error:e,method:t,transaction:r}),a.match(/another transaction with same nonce/)&&Na.throwError("replacement fee too low",Ai.Logger.errors.REPLACEMENT_UNDERPRICED,{error:e,method:t,transaction:r}),a.match(/execution failed due to an exception|execution reverted/)&&Na.throwError("cannot estimate gas; transaction may fail or may require manual gas limit",Ai.Logger.errors.UNPREDICTABLE_GAS_LIMIT,{error:e,method:t,transaction:r}),e}var dZ=function(t){aZ(e,t);function e(r,n){var i=t.call(this,r)||this;return(0,Pg.defineReadOnly)(i,"baseUrl",i.getBaseUrl()),(0,Pg.defineReadOnly)(i,"apiKey",n||null),i}return e.prototype.getBaseUrl=function(){switch(this.network?this.network.name:"invalid"){case"homestead":return"https://api.etherscan.io";case"goerli":return"https://api-goerli.etherscan.io";case"sepolia":return"https://api-sepolia.etherscan.io";case"matic":return"https://api.polygonscan.com";case"maticmum":return"https://api-testnet.polygonscan.com";case"arbitrum":return"https://api.arbiscan.io";case"arbitrum-goerli":return"https://api-goerli.arbiscan.io";case"optimism":return"https://api-optimistic.etherscan.io";case"optimism-goerli":return"https://api-goerli-optimistic.etherscan.io";default:}return Na.throwArgumentError("unsupported network","network",this.network.name)},e.prototype.getUrl=function(r,n){var i=Object.keys(n).reduce(function(o,c){var u=n[c];return u!=null&&(o+="&"+c+"="+u),o},""),a=this.apiKey?"&apikey="+this.apiKey:"";return this.baseUrl+"/api?module="+r+i+a},e.prototype.getPostUrl=function(){return this.baseUrl+"/api"},e.prototype.getPostData=function(r,n){return n.module=r,n.apikey=this.apiKey,n},e.prototype.fetch=function(r,n,i){return h0(this,void 0,void 0,function(){var a,o,c,u,s,f,m=this;return v0(this,function(w){switch(w.label){case 0:return a=i?this.getPostUrl():this.getUrl(r,n),o=i?this.getPostData(r,n):null,c=r==="proxy"?i_:fZ,this.emit("debug",{action:"request",request:a,provider:this}),u={url:a,throttleSlotInterval:1e3,throttleCallback:function(T,A){return m.isCommunityResource()&&(0,cZ.showThrottleMessage)(),Promise.resolve(!0)}},s=null,o&&(u.headers={"content-type":"application/x-www-form-urlencoded; charset=UTF-8"},s=Object.keys(o).map(function(T){return T+"="+o[T]}).join("&")),[4,(0,sZ.fetchJson)(u,s,c||i_)];case 1:return f=w.sent(),this.emit("debug",{action:"response",request:a,response:(0,Pg.deepCopy)(f),provider:this}),[2,f]}})})},e.prototype.detectNetwork=function(){return h0(this,void 0,void 0,function(){return v0(this,function(r){return[2,this.network]})})},e.prototype.perform=function(r,n){return h0(this,void 0,void 0,function(){var i,o,a,o,c,u,s,f,m,w,T,A,O;return v0(this,function(B){switch(B.label){case 0:switch(i=r,i){case"getBlockNumber":return[3,1];case"getGasPrice":return[3,2];case"getBalance":return[3,3];case"getTransactionCount":return[3,4];case"getCode":return[3,5];case"getStorageAt":return[3,6];case"sendTransaction":return[3,7];case"getBlock":return[3,8];case"getTransaction":return[3,9];case"getTransactionReceipt":return[3,10];case"call":return[3,11];case"estimateGas":return[3,15];case"getLogs":return[3,19];case"getEtherPrice":return[3,26]}return[3,28];case 1:return[2,this.fetch("proxy",{action:"eth_blockNumber"})];case 2:return[2,this.fetch("proxy",{action:"eth_gasPrice"})];case 3:return[2,this.fetch("account",{action:"balance",address:n.address,tag:n.blockTag})];case 4:return[2,this.fetch("proxy",{action:"eth_getTransactionCount",address:n.address,tag:n.blockTag})];case 5:return[2,this.fetch("proxy",{action:"eth_getCode",address:n.address,tag:n.blockTag})];case 6:return[2,this.fetch("proxy",{action:"eth_getStorageAt",address:n.address,position:n.position,tag:n.blockTag})];case 7:return[2,this.fetch("proxy",{action:"eth_sendRawTransaction",hex:n.signedTransaction},!0).catch(function(F){return Mg("sendTransaction",F,n.signedTransaction)})];case 8:if(n.blockTag)return[2,this.fetch("proxy",{action:"eth_getBlockByNumber",tag:n.blockTag,boolean:n.includeTransactions?"true":"false"})];throw new Error("getBlock by blockHash not implemented");case 9:return[2,this.fetch("proxy",{action:"eth_getTransactionByHash",txhash:n.transactionHash})];case 10:return[2,this.fetch("proxy",{action:"eth_getTransactionReceipt",txhash:n.transactionHash})];case 11:if(n.blockTag!=="latest")throw new Error("EtherscanProvider does not support blockTag for call");o=n_(n.transaction),o.module="proxy",o.action="eth_call",B.label=12;case 12:return B.trys.push([12,14,,15]),[4,this.fetch("proxy",o,!0)];case 13:return[2,B.sent()];case 14:return a=B.sent(),[2,Mg("call",a,n.transaction)];case 15:o=n_(n.transaction),o.module="proxy",o.action="eth_estimateGas",B.label=16;case 16:return B.trys.push([16,18,,19]),[4,this.fetch("proxy",o,!0)];case 17:return[2,B.sent()];case 18:return c=B.sent(),[2,Mg("estimateGas",c,n.transaction)];case 19:return u={action:"getLogs"},n.filter.fromBlock&&(u.fromBlock=a_(n.filter.fromBlock)),n.filter.toBlock&&(u.toBlock=a_(n.filter.toBlock)),n.filter.address&&(u.address=n.filter.address),n.filter.topics&&n.filter.topics.length>0&&(n.filter.topics.length>1&&Na.throwError("unsupported topic count",Ai.Logger.errors.UNSUPPORTED_OPERATION,{topics:n.filter.topics}),n.filter.topics.length===1&&(s=n.filter.topics[0],(typeof s!="string"||s.length!==66)&&Na.throwError("unsupported topic format",Ai.Logger.errors.UNSUPPORTED_OPERATION,{topic0:s}),u.topic0=s)),[4,this.fetch("logs",u)];case 20:f=B.sent(),m={},w=0,B.label=21;case 21:return w{"use strict";var pZ=_i&&_i.__extends||function(){var t=function(e,r){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,i){n.__proto__=i}||function(n,i){for(var a in i)Object.prototype.hasOwnProperty.call(i,a)&&(n[a]=i[a])},t(e,r)};return function(e,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");t(e,r);function n(){this.constructor=e}e.prototype=r===null?Object.create(r):(n.prototype=r.prototype,new n)}}(),x0=_i&&_i.__awaiter||function(t,e,r,n){function i(a){return a instanceof r?a:new r(function(o){o(a)})}return new(r||(r=Promise))(function(a,o){function c(f){try{s(n.next(f))}catch(m){o(m)}}function u(f){try{s(n.throw(f))}catch(m){o(m)}}function s(f){f.done?a(f.value):i(f.value).then(c,u)}s((n=n.apply(t,e||[])).next())})},Hl=_i&&_i.__generator||function(t,e){var r={label:0,sent:function(){if(a[0]&1)throw a[1];return a[1]},trys:[],ops:[]},n,i,a,o;return o={next:c(0),throw:c(1),return:c(2)},typeof Symbol=="function"&&(o[Symbol.iterator]=function(){return this}),o;function c(s){return function(f){return u([s,f])}}function u(s){if(n)throw new TypeError("Generator is already executing.");for(;r;)try{if(n=1,i&&(a=s[0]&2?i.return:s[0]?i.throw||((a=i.return)&&a.call(i),0):i.next)&&!(a=a.call(i,s[1])).done)return a;switch(i=0,a&&(s=[s[0]&2,a.value]),s[0]){case 0:case 1:a=s;break;case 4:return r.label++,{value:s[1],done:!1};case 5:r.label++,i=s[1],s=[0];continue;case 7:s=r.ops.pop(),r.trys.pop();continue;default:if(a=r.trys,!(a=a.length>0&&a[a.length-1])&&(s[0]===6||s[0]===2)){r=0;continue}if(s[0]===3&&(!a||s[1]>a[0]&&s[1]e?null:(n+i)/2}function Ic(t){if(t===null)return"null";if(typeof t=="number"||typeof t=="boolean")return JSON.stringify(t);if(typeof t=="string")return t;if(vZ.BigNumber.isBigNumber(t))return t.toString();if(Array.isArray(t))return JSON.stringify(t.map(function(r){return Ic(r)}));if(typeof t=="object"){var e=Object.keys(t);return e.sort(),"{"+e.map(function(r){var n=t[r];return typeof n=="function"?n="[function]":n=Ic(n),JSON.stringify(r)+":"+n}).join(",")+"}"}throw new Error("unknown value type: "+typeof t)}var yZ=1;function l_(t){var e=null,r=null,n=new Promise(function(o){e=function(){r&&(clearTimeout(r),r=null),o()},r=setTimeout(e,t)}),i=function(o){return n=n.then(o),n};function a(){return n}return{cancel:e,getPromise:a,wait:i}}var wZ=[Da.Logger.errors.CALL_EXCEPTION,Da.Logger.errors.INSUFFICIENT_FUNDS,Da.Logger.errors.NONCE_EXPIRED,Da.Logger.errors.REPLACEMENT_UNDERPRICED,Da.Logger.errors.UNPREDICTABLE_GAS_LIMIT],AZ=["address","args","errorArgs","errorSignature","method","transaction"];function g0(t,e){var r={weight:t.weight};return Object.defineProperty(r,"provider",{get:function(){return t.provider}}),t.start&&(r.start=t.start),e&&(r.duration=e-t.start),t.done&&(t.error?r.error=t.error:r.result=t.result||null),r}function EZ(t,e){return function(r){var n={};r.forEach(function(c){var u=t(c.result);n[u]||(n[u]={count:0,result:c.result}),n[u].count++});for(var i=Object.keys(n),a=0;a=e)return o.result}}}function SZ(t,e,r){var n=Ic;switch(e){case"getBlockNumber":return function(i){var a=i.map(function(c){return c.result}),o=u_(i.map(function(c){return c.result}),2);if(o!=null)return o=Math.ceil(o),a.indexOf(o+1)>=0&&o++,o>=t._highestBlockNumber&&(t._highestBlockNumber=o),t._highestBlockNumber};case"getGasPrice":return function(i){var a=i.map(function(o){return o.result});return a.sort(),a[Math.floor(a.length/2)]};case"getEtherPrice":return function(i){return u_(i.map(function(a){return a.result}))};case"getBalance":case"getTransactionCount":case"getCode":case"getStorageAt":case"call":case"estimateGas":case"getLogs":break;case"getTransaction":case"getTransactionReceipt":n=function(i){return i==null?null:(i=(0,Si.shallowCopy)(i),i.confirmations=-1,Ic(i))};break;case"getBlock":r.includeTransactions?n=function(i){return i==null?null:(i=(0,Si.shallowCopy)(i),i.transactions=i.transactions.map(function(a){return a=(0,Si.shallowCopy)(a),a.confirmations=-1,a}),Ic(i))}:n=function(i){return i==null?null:Ic(i)};break;default:throw new Error("unknown method: "+e)}return EZ(n,t.quorum)}function Ul(t,e){return x0(this,void 0,void 0,function(){var r;return Hl(this,function(n){return r=t.provider,r.blockNumber!=null&&r.blockNumber>=e||e===-1?[2,r]:[2,(0,bZ.poll)(function(){return new Promise(function(i,a){setTimeout(function(){return r.blockNumber>=e?i(r):t.cancelled?i(null):i(void 0)},0)})},{oncePoll:r})]})})}function _Z(t,e,r,n){return x0(this,void 0,void 0,function(){var i,a,o;return Hl(this,function(c){switch(c.label){case 0:switch(i=t.provider,a=r,a){case"getBlockNumber":return[3,1];case"getGasPrice":return[3,1];case"getEtherPrice":return[3,2];case"getBalance":return[3,3];case"getTransactionCount":return[3,3];case"getCode":return[3,3];case"getStorageAt":return[3,6];case"getBlock":return[3,9];case"call":return[3,12];case"estimateGas":return[3,12];case"getTransaction":return[3,15];case"getTransactionReceipt":return[3,15];case"getLogs":return[3,16]}return[3,19];case 1:return[2,i[r]()];case 2:return i.getEtherPrice?[2,i.getEtherPrice()]:[3,19];case 3:return n.blockTag&&(0,Rc.isHexString)(n.blockTag)?[4,Ul(t,e)]:[3,5];case 4:i=c.sent(),c.label=5;case 5:return[2,i[r](n.address,n.blockTag||"latest")];case 6:return n.blockTag&&(0,Rc.isHexString)(n.blockTag)?[4,Ul(t,e)]:[3,8];case 7:i=c.sent(),c.label=8;case 8:return[2,i.getStorageAt(n.address,n.position,n.blockTag||"latest")];case 9:return n.blockTag&&(0,Rc.isHexString)(n.blockTag)?[4,Ul(t,e)]:[3,11];case 10:i=c.sent(),c.label=11;case 11:return[2,i[n.includeTransactions?"getBlockWithTransactions":"getBlock"](n.blockTag||n.blockHash)];case 12:return n.blockTag&&(0,Rc.isHexString)(n.blockTag)?[4,Ul(t,e)]:[3,14];case 13:i=c.sent(),c.label=14;case 14:return r==="call"&&n.blockTag?[2,i[r](n.transaction,n.blockTag)]:[2,i[r](n.transaction)];case 15:return[2,i[r](n.transactionHash)];case 16:return o=n.filter,o.fromBlock&&(0,Rc.isHexString)(o.fromBlock)||o.toBlock&&(0,Rc.isHexString)(o.toBlock)?[4,Ul(t,e)]:[3,18];case 17:i=c.sent(),c.label=18;case 18:return[2,i.getLogs(o)];case 19:return[2,Ko.throwError("unknown method error",Da.Logger.errors.UNKNOWN_ERROR,{method:r,params:n})]}})})}var TZ=function(t){pZ(e,t);function e(r,n){var i=this;r.length===0&&Ko.throwArgumentError("missing providers","providers",r);var a=r.map(function(u,s){if(hZ.Provider.isProvider(u)){var f=(0,s_.isCommunityResource)(u)?2e3:750,m=1;return Object.freeze({provider:u,weight:1,stallTimeout:f,priority:m})}var w=(0,Si.shallowCopy)(u);w.priority==null&&(w.priority=1),w.stallTimeout==null&&(w.stallTimeout=(0,s_.isCommunityResource)(u)?2e3:750),w.weight==null&&(w.weight=1);var T=w.weight;return(T%1||T>512||T<1)&&Ko.throwArgumentError("invalid weight; must be integer in [1, 512]","providers["+s+"].weight",T),Object.freeze(w)}),o=a.reduce(function(u,s){return u+s.weight},0);n==null?n=o/2:n>o&&Ko.throwArgumentError("quorum will always fail; larger than total weight","quorum",n);var c=c_(a.map(function(u){return u.provider.network}));return c==null&&(c=new Promise(function(u,s){setTimeout(function(){i.detectNetwork().then(u,s)},0)})),i=t.call(this,c)||this,(0,Si.defineReadOnly)(i,"providerConfigs",Object.freeze(a)),(0,Si.defineReadOnly)(i,"quorum",n),i._highestBlockNumber=-1,i}return e.prototype.detectNetwork=function(){return x0(this,void 0,void 0,function(){var r;return Hl(this,function(n){switch(n.label){case 0:return[4,Promise.all(this.providerConfigs.map(function(i){return i.provider.getNetwork()}))];case 1:return r=n.sent(),[2,c_(r)]}})})},e.prototype.perform=function(r,n){return x0(this,void 0,void 0,function(){var i,a,o,c,u,s,f,m,w,T,A,O=this;return Hl(this,function(B){switch(B.label){case 0:return r!=="sendTransaction"?[3,2]:[4,Promise.all(this.providerConfigs.map(function(F){return F.provider.sendTransaction(n.signedTransaction).then(function(I){return I.hash},function(I){return I})}))];case 1:for(i=B.sent(),a=0;a=T.quorum?(j=c(G),j!==void 0?(u.forEach(function(U){U.staller&&U.staller.cancel(),U.cancelled=!0}),[2,{value:j}]):m?[3,4]:[4,l_(100).getPromise()]):[3,5];case 3:X.sent(),X.label=4;case 4:m=!1,X.label=5;case 5:return Z=u.reduce(function(U,M){if(!M.done||M.error==null)return U;var v=M.error.code;return wZ.indexOf(v)>=0&&(U[v]||(U[v]={error:M.error,weight:0}),U[v].weight+=M.weight),U},{}),Object.keys(Z).forEach(function(U){var M=Z[U];if(!(M.weight{"use strict";var kZ=Nc&&Nc.__extends||function(){var t=function(e,r){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,i){n.__proto__=i}||function(n,i){for(var a in i)Object.prototype.hasOwnProperty.call(i,a)&&(n[a]=i[a])},t(e,r)};return function(e,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");t(e,r);function n(){this.constructor=e}e.prototype=r===null?Object.create(r):(n.prototype=r.prototype,new n)}}();Object.defineProperty(Nc,"__esModule",{value:!0});Nc.IpcProvider=void 0;var CZ=require("net"),OZ=Ve(),d_=re(),PZ=et(),MZ=new d_.Logger(PZ.version),BZ=Ho(),FZ=function(t){kZ(e,t);function e(r,n){var i=this;return r==null&&MZ.throwError("missing path",d_.Logger.errors.MISSING_ARGUMENT,{arg:"path"}),i=t.call(this,"ipc://"+r,n)||this,(0,OZ.defineReadOnly)(i,"path",r),i}return e.prototype.send=function(r,n){var i=this,a=JSON.stringify({method:r,params:n,id:42,jsonrpc:"2.0"});return new Promise(function(o,c){var u=Buffer.alloc(0),s=(0,CZ.connect)(i.path);s.on("data",function(f){u=Buffer.concat([u,f])}),s.on("end",function(){try{o(JSON.parse(u.toString()).result),s.destroy()}catch(f){c(f),s.destroy()}}),s.on("error",function(f){c(f),s.destroy()}),s.write(a),s.end()})},e}(BZ.JsonRpcProvider);Nc.IpcProvider=FZ});var b_=P(Ja=>{"use strict";var h_=Ja&&Ja.__extends||function(){var t=function(e,r){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,i){n.__proto__=i}||function(n,i){for(var a in i)Object.prototype.hasOwnProperty.call(i,a)&&(n[a]=i[a])},t(e,r)};return function(e,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");t(e,r);function n(){this.constructor=e}e.prototype=r===null?Object.create(r):(n.prototype=r.prototype,new n)}}();Object.defineProperty(Ja,"__esModule",{value:!0});Ja.InfuraProvider=Ja.InfuraWebSocketProvider=void 0;var Bg=Ve(),LZ=l0(),RZ=Ma(),Fg=re(),IZ=et(),y0=new Fg.Logger(IZ.version),NZ=Ra(),zl="84842078b09946638c03157f83405213",v_=function(t){h_(e,t);function e(r,n){var i=this,a=new m_(r,n),o=a.connection;o.password&&y0.throwError("INFURA WebSocket project secrets unsupported",Fg.Logger.errors.UNSUPPORTED_OPERATION,{operation:"InfuraProvider.getWebSocketProvider()"});var c=o.url.replace(/^http/i,"ws").replace("/v3/","/ws/v3/");return i=t.call(this,c,r)||this,(0,Bg.defineReadOnly)(i,"apiKey",a.projectId),(0,Bg.defineReadOnly)(i,"projectId",a.projectId),(0,Bg.defineReadOnly)(i,"projectSecret",a.projectSecret),i}return e.prototype.isCommunityResource=function(){return this.projectId===zl},e}(LZ.WebSocketProvider);Ja.InfuraWebSocketProvider=v_;var m_=function(t){h_(e,t);function e(){return t!==null&&t.apply(this,arguments)||this}return e.getWebSocketProvider=function(r,n){return new v_(r,n)},e.getApiKey=function(r){var n={apiKey:zl,projectId:zl,projectSecret:null};return r==null||(typeof r=="string"?n.projectId=r:r.projectSecret!=null?(y0.assertArgument(typeof r.projectId=="string","projectSecret requires a projectId","projectId",r.projectId),y0.assertArgument(typeof r.projectSecret=="string","invalid projectSecret","projectSecret","[REDACTED]"),n.projectId=r.projectId,n.projectSecret=r.projectSecret):r.projectId&&(n.projectId=r.projectId),n.apiKey=n.projectId),n},e.getUrl=function(r,n){var i=null;switch(r?r.name:"unknown"){case"homestead":i="mainnet.infura.io";break;case"goerli":i="goerli.infura.io";break;case"sepolia":i="sepolia.infura.io";break;case"matic":i="polygon-mainnet.infura.io";break;case"maticmum":i="polygon-mumbai.infura.io";break;case"optimism":i="optimism-mainnet.infura.io";break;case"optimism-goerli":i="optimism-goerli.infura.io";break;case"arbitrum":i="arbitrum-mainnet.infura.io";break;case"arbitrum-goerli":i="arbitrum-goerli.infura.io";break;default:y0.throwError("unsupported network",Fg.Logger.errors.INVALID_ARGUMENT,{argument:"network",value:r})}var a={allowGzip:!0,url:"https://"+i+"/v3/"+n.projectId,throttleCallback:function(o,c){return n.projectId===zl&&(0,RZ.showThrottleMessage)(),Promise.resolve(!0)}};return n.projectSecret!=null&&(a.user="",a.password=n.projectSecret),a},e.prototype.isCommunityResource=function(){return this.projectId===zl},e}(NZ.UrlJsonRpcProvider);Ja.InfuraProvider=m_});var g_=P(Dc=>{"use strict";var DZ=Dc&&Dc.__extends||function(){var t=function(e,r){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,i){n.__proto__=i}||function(n,i){for(var a in i)Object.prototype.hasOwnProperty.call(i,a)&&(n[a]=i[a])},t(e,r)};return function(e,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");t(e,r);function n(){this.constructor=e}e.prototype=r===null?Object.create(r):(n.prototype=r.prototype,new n)}}();Object.defineProperty(Dc,"__esModule",{value:!0});Dc.JsonRpcBatchProvider=void 0;var JZ=Ve(),qZ=Uo(),jZ=Ho(),UZ=function(t){DZ(e,t);function e(){return t!==null&&t.apply(this,arguments)||this}return e.prototype.send=function(r,n){var i=this,a={method:r,params:n,id:this._nextId++,jsonrpc:"2.0"};this._pendingBatch==null&&(this._pendingBatch=[]);var o={request:a,resolve:null,reject:null},c=new Promise(function(u,s){o.resolve=u,o.reject=s});return this._pendingBatch.push(o),this._pendingBatchAggregator||(this._pendingBatchAggregator=setTimeout(function(){var u=i._pendingBatch;i._pendingBatch=null,i._pendingBatchAggregator=null;var s=u.map(function(f){return f.request});return i.emit("debug",{action:"requestBatch",request:(0,JZ.deepCopy)(s),provider:i}),(0,qZ.fetchJson)(i.connection,JSON.stringify(s)).then(function(f){i.emit("debug",{action:"response",request:s,response:f,provider:i}),u.forEach(function(m,w){var T=f[w];if(T.error){var A=new Error(T.error.message);A.code=T.error.code,A.data=T.error.data,m.reject(A)}else m.resolve(T.result)})},function(f){i.emit("debug",{action:"response",error:f,request:s,provider:i}),u.forEach(function(m){m.reject(f)})})},10)),c},e}(jZ.JsonRpcProvider);Dc.JsonRpcBatchProvider=UZ});var x_=P(Jc=>{"use strict";var HZ=Jc&&Jc.__extends||function(){var t=function(e,r){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,i){n.__proto__=i}||function(n,i){for(var a in i)Object.prototype.hasOwnProperty.call(i,a)&&(n[a]=i[a])},t(e,r)};return function(e,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");t(e,r);function n(){this.constructor=e}e.prototype=r===null?Object.create(r):(n.prototype=r.prototype,new n)}}();Object.defineProperty(Jc,"__esModule",{value:!0});Jc.NodesmithProvider=void 0;var zZ=Ra(),GZ=re(),XZ=et(),Lg=new GZ.Logger(XZ.version),KZ="ETHERS_JS_SHARED",VZ=function(t){HZ(e,t);function e(){return t!==null&&t.apply(this,arguments)||this}return e.getApiKey=function(r){return r&&typeof r!="string"&&Lg.throwArgumentError("invalid apiKey","apiKey",r),r||KZ},e.getUrl=function(r,n){Lg.warn("NodeSmith will be discontinued on 2019-12-20; please migrate to another platform.");var i=null;switch(r.name){case"homestead":i="https://ethereum.api.nodesmith.io/v1/mainnet/jsonrpc";break;case"ropsten":i="https://ethereum.api.nodesmith.io/v1/ropsten/jsonrpc";break;case"rinkeby":i="https://ethereum.api.nodesmith.io/v1/rinkeby/jsonrpc";break;case"goerli":i="https://ethereum.api.nodesmith.io/v1/goerli/jsonrpc";break;case"kovan":i="https://ethereum.api.nodesmith.io/v1/kovan/jsonrpc";break;default:Lg.throwArgumentError("unsupported network","network",arguments[0])}return i+"?apiKey="+n},e}(zZ.UrlJsonRpcProvider);Jc.NodesmithProvider=VZ});var E_=P(qc=>{"use strict";var ZZ=qc&&qc.__extends||function(){var t=function(e,r){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,i){n.__proto__=i}||function(n,i){for(var a in i)Object.prototype.hasOwnProperty.call(i,a)&&(n[a]=i[a])},t(e,r)};return function(e,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");t(e,r);function n(){this.constructor=e}e.prototype=r===null?Object.create(r):(n.prototype=r.prototype,new n)}}();Object.defineProperty(qc,"__esModule",{value:!0});qc.PocketProvider=void 0;var A_=re(),QZ=et(),y_=new A_.Logger(QZ.version),WZ=Ra(),w_="62e1ad51b37b8e00394bda3b",YZ=function(t){ZZ(e,t);function e(){return t!==null&&t.apply(this,arguments)||this}return e.getApiKey=function(r){var n={applicationId:null,loadBalancer:!0,applicationSecretKey:null};return r==null?n.applicationId=w_:typeof r=="string"?n.applicationId=r:r.applicationSecretKey!=null?(n.applicationId=r.applicationId,n.applicationSecretKey=r.applicationSecretKey):r.applicationId?n.applicationId=r.applicationId:y_.throwArgumentError("unsupported PocketProvider apiKey","apiKey",r),n},e.getUrl=function(r,n){var i=null;switch(r?r.name:"unknown"){case"goerli":i="eth-goerli.gateway.pokt.network";break;case"homestead":i="eth-mainnet.gateway.pokt.network";break;case"kovan":i="poa-kovan.gateway.pokt.network";break;case"matic":i="poly-mainnet.gateway.pokt.network";break;case"maticmum":i="polygon-mumbai-rpc.gateway.pokt.network";break;case"rinkeby":i="eth-rinkeby.gateway.pokt.network";break;case"ropsten":i="eth-ropsten.gateway.pokt.network";break;default:y_.throwError("unsupported network",A_.Logger.errors.INVALID_ARGUMENT,{argument:"network",value:r})}var a="https://"+i+"/v1/lb/"+n.applicationId,o={headers:{},url:a};return n.applicationSecretKey!=null&&(o.user="",o.password=n.applicationSecretKey),o},e.prototype.isCommunityResource=function(){return this.applicationId===w_},e}(WZ.UrlJsonRpcProvider);qc.PocketProvider=YZ});var T_=P(jc=>{"use strict";var $Z=jc&&jc.__extends||function(){var t=function(e,r){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,i){n.__proto__=i}||function(n,i){for(var a in i)Object.prototype.hasOwnProperty.call(i,a)&&(n[a]=i[a])},t(e,r)};return function(e,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");t(e,r);function n(){this.constructor=e}e.prototype=r===null?Object.create(r):(n.prototype=r.prototype,new n)}}();Object.defineProperty(jc,"__esModule",{value:!0});jc.Web3Provider=void 0;var w0=Ve(),eQ=re(),rQ=et(),S_=new eQ.Logger(rQ.version),tQ=Ho(),nQ=1;function __(t,e){var r="Web3LegacyFetcher";return function(n,i){var a=this,o={method:n,params:i,id:nQ++,jsonrpc:"2.0"};return new Promise(function(c,u){a.emit("debug",{action:"request",fetcher:r,request:(0,w0.deepCopy)(o),provider:a}),e(o,function(s,f){if(s)return a.emit("debug",{action:"response",fetcher:r,error:s,request:o,provider:a}),u(s);if(a.emit("debug",{action:"response",fetcher:r,request:o,response:f,provider:a}),f.error){var m=new Error(f.error.message);return m.code=f.error.code,m.data=f.error.data,u(m)}c(f.result)})})}}function iQ(t){return function(e,r){var n=this;r==null&&(r=[]);var i={method:e,params:r};return this.emit("debug",{action:"request",fetcher:"Eip1193Fetcher",request:(0,w0.deepCopy)(i),provider:this}),t.request(i).then(function(a){return n.emit("debug",{action:"response",fetcher:"Eip1193Fetcher",request:i,response:a,provider:n}),a},function(a){throw n.emit("debug",{action:"response",fetcher:"Eip1193Fetcher",request:i,error:a,provider:n}),a})}}var aQ=function(t){$Z(e,t);function e(r,n){var i=this;r==null&&S_.throwArgumentError("missing provider","provider",r);var a=null,o=null,c=null;return typeof r=="function"?(a="unknown:",o=r):(a=r.host||r.path||"",!a&&r.isMetaMask&&(a="metamask"),c=r,r.request?(a===""&&(a="eip-1193:"),o=iQ(r)):r.sendAsync?o=__(r,r.sendAsync.bind(r)):r.send?o=__(r,r.send.bind(r)):S_.throwArgumentError("unsupported provider","provider",r),a||(a="unknown:")),i=t.call(this,a,n)||this,(0,w0.defineReadOnly)(i,"jsonRpcFetchFunc",o),(0,w0.defineReadOnly)(i,"provider",c),i}return e.prototype.send=function(r,n){return this.jsonRpcFetchFunc(r,n)},e}(tQ.JsonRpcProvider);jc.Web3Provider=aQ});var Ng=P(ee=>{"use strict";Object.defineProperty(ee,"__esModule",{value:!0});ee.Formatter=ee.showThrottleMessage=ee.isCommunityResourcable=ee.isCommunityResource=ee.getNetwork=ee.getDefaultProvider=ee.JsonRpcSigner=ee.IpcProvider=ee.WebSocketProvider=ee.Web3Provider=ee.StaticJsonRpcProvider=ee.PocketProvider=ee.NodesmithProvider=ee.JsonRpcBatchProvider=ee.JsonRpcProvider=ee.InfuraWebSocketProvider=ee.InfuraProvider=ee.EtherscanProvider=ee.CloudflareProvider=ee.AnkrProvider=ee.AlchemyWebSocketProvider=ee.AlchemyProvider=ee.FallbackProvider=ee.UrlJsonRpcProvider=ee.Resolver=ee.BaseProvider=ee.Provider=void 0;var oQ=Ys();Object.defineProperty(ee,"Provider",{enumerable:!0,get:function(){return oQ.Provider}});var C_=Rb();Object.defineProperty(ee,"getNetwork",{enumerable:!0,get:function(){return C_.getNetwork}});var O_=Pl();Object.defineProperty(ee,"BaseProvider",{enumerable:!0,get:function(){return O_.BaseProvider}});Object.defineProperty(ee,"Resolver",{enumerable:!0,get:function(){return O_.Resolver}});var Rg=$S();Object.defineProperty(ee,"AlchemyProvider",{enumerable:!0,get:function(){return Rg.AlchemyProvider}});Object.defineProperty(ee,"AlchemyWebSocketProvider",{enumerable:!0,get:function(){return Rg.AlchemyWebSocketProvider}});var P_=e_();Object.defineProperty(ee,"AnkrProvider",{enumerable:!0,get:function(){return P_.AnkrProvider}});var M_=t_();Object.defineProperty(ee,"CloudflareProvider",{enumerable:!0,get:function(){return M_.CloudflareProvider}});var B_=o_();Object.defineProperty(ee,"EtherscanProvider",{enumerable:!0,get:function(){return B_.EtherscanProvider}});var F_=f_();Object.defineProperty(ee,"FallbackProvider",{enumerable:!0,get:function(){return F_.FallbackProvider}});var L_=p_();Object.defineProperty(ee,"IpcProvider",{enumerable:!0,get:function(){return L_.IpcProvider}});var Ig=b_();Object.defineProperty(ee,"InfuraProvider",{enumerable:!0,get:function(){return Ig.InfuraProvider}});Object.defineProperty(ee,"InfuraWebSocketProvider",{enumerable:!0,get:function(){return Ig.InfuraWebSocketProvider}});var A0=Ho();Object.defineProperty(ee,"JsonRpcProvider",{enumerable:!0,get:function(){return A0.JsonRpcProvider}});Object.defineProperty(ee,"JsonRpcSigner",{enumerable:!0,get:function(){return A0.JsonRpcSigner}});var sQ=g_();Object.defineProperty(ee,"JsonRpcBatchProvider",{enumerable:!0,get:function(){return sQ.JsonRpcBatchProvider}});var R_=x_();Object.defineProperty(ee,"NodesmithProvider",{enumerable:!0,get:function(){return R_.NodesmithProvider}});var I_=E_();Object.defineProperty(ee,"PocketProvider",{enumerable:!0,get:function(){return I_.PocketProvider}});var N_=Ra();Object.defineProperty(ee,"StaticJsonRpcProvider",{enumerable:!0,get:function(){return N_.StaticJsonRpcProvider}});Object.defineProperty(ee,"UrlJsonRpcProvider",{enumerable:!0,get:function(){return N_.UrlJsonRpcProvider}});var D_=T_();Object.defineProperty(ee,"Web3Provider",{enumerable:!0,get:function(){return D_.Web3Provider}});var J_=l0();Object.defineProperty(ee,"WebSocketProvider",{enumerable:!0,get:function(){return J_.WebSocketProvider}});var E0=Ma();Object.defineProperty(ee,"Formatter",{enumerable:!0,get:function(){return E0.Formatter}});Object.defineProperty(ee,"isCommunityResourcable",{enumerable:!0,get:function(){return E0.isCommunityResourcable}});Object.defineProperty(ee,"isCommunityResource",{enumerable:!0,get:function(){return E0.isCommunityResource}});Object.defineProperty(ee,"showThrottleMessage",{enumerable:!0,get:function(){return E0.showThrottleMessage}});var q_=re(),cQ=et(),k_=new q_.Logger(cQ.version);function uQ(t,e){if(t==null&&(t="homestead"),typeof t=="string"){var r=t.match(/^(ws|http)s?:/i);if(r)switch(r[1].toLowerCase()){case"http":case"https":return new A0.JsonRpcProvider(t);case"ws":case"wss":return new J_.WebSocketProvider(t);default:k_.throwArgumentError("unsupported URL scheme","network",t)}}var n=(0,C_.getNetwork)(t);return(!n||!n._defaultProvider)&&k_.throwError("unsupported getDefaultProvider network",q_.Logger.errors.NETWORK_ERROR,{operation:"getDefaultProvider",network:t}),n._defaultProvider({FallbackProvider:F_.FallbackProvider,AlchemyProvider:Rg.AlchemyProvider,AnkrProvider:P_.AnkrProvider,CloudflareProvider:M_.CloudflareProvider,EtherscanProvider:B_.EtherscanProvider,InfuraProvider:Ig.InfuraProvider,JsonRpcProvider:A0.JsonRpcProvider,NodesmithProvider:R_.NodesmithProvider,PocketProvider:I_.PocketProvider,Web3Provider:D_.Web3Provider,IpcProvider:L_.IpcProvider},e)}ee.getDefaultProvider=uQ});var j_=P(S0=>{"use strict";Object.defineProperty(S0,"__esModule",{value:!0});S0.version=void 0;S0.version="solidity/5.7.0"});var H_=P(qa=>{"use strict";Object.defineProperty(qa,"__esModule",{value:!0});qa.sha256=qa.keccak256=qa.pack=void 0;var lQ=Tr(),Sn=De(),fQ=Bt(),dQ=dc(),pQ=Cr(),hQ=new RegExp("^bytes([0-9]+)$"),vQ=new RegExp("^(u?int)([0-9]*)$"),mQ=new RegExp("^(.*)\\[([0-9]*)\\]$"),bQ="0000000000000000000000000000000000000000000000000000000000000000",gQ=re(),xQ=j_(),Uc=new gQ.Logger(xQ.version);function U_(t,e,r){switch(t){case"address":return r?(0,Sn.zeroPad)(e,32):(0,Sn.arrayify)(e);case"string":return(0,pQ.toUtf8Bytes)(e);case"bytes":return(0,Sn.arrayify)(e);case"bool":return e=e?"0x01":"0x00",r?(0,Sn.zeroPad)(e,32):(0,Sn.arrayify)(e)}var n=t.match(vQ);if(n){var i=parseInt(n[2]||"256");return(n[2]&&String(i)!==n[2]||i%8!==0||i===0||i>256)&&Uc.throwArgumentError("invalid number type","type",t),r&&(i=256),e=lQ.BigNumber.from(e).toTwos(i),(0,Sn.zeroPad)(e,i/8)}if(n=t.match(hQ),n){var i=parseInt(n[1]);return(String(i)!==n[1]||i===0||i>32)&&Uc.throwArgumentError("invalid bytes type","type",t),(0,Sn.arrayify)(e).byteLength!==i&&Uc.throwArgumentError("invalid value for "+t,"value",e),r?(0,Sn.arrayify)((e+bQ).substring(0,66)):e}if(n=t.match(mQ),n&&Array.isArray(e)){var a=n[1],o=parseInt(n[2]||String(e.length));o!=e.length&&Uc.throwArgumentError("invalid array length for "+t,"value",e);var c=[];return e.forEach(function(u){c.push(U_(a,u,!0))}),(0,Sn.concat)(c)}return Uc.throwArgumentError("invalid type","type",t)}function Dg(t,e){t.length!=e.length&&Uc.throwArgumentError("wrong number of values; expected ${ types.length }","values",e);var r=[];return t.forEach(function(n,i){r.push(U_(n,e[i]))}),(0,Sn.hexlify)((0,Sn.concat)(r))}qa.pack=Dg;function yQ(t,e){return(0,fQ.keccak256)(Dg(t,e))}qa.keccak256=yQ;function wQ(t,e){return(0,dQ.sha256)(Dg(t,e))}qa.sha256=wQ});var z_=P(_0=>{"use strict";Object.defineProperty(_0,"__esModule",{value:!0});_0.version=void 0;_0.version="units/5.7.0"});var Q_=P(un=>{"use strict";Object.defineProperty(un,"__esModule",{value:!0});un.parseEther=un.formatEther=un.parseUnits=un.formatUnits=un.commify=void 0;var G_=Tr(),AQ=re(),EQ=z_(),X_=new AQ.Logger(EQ.version),K_=["wei","kwei","mwei","gwei","szabo","finney","ether"];function SQ(t){var e=String(t).split(".");(e.length>2||!e[0].match(/^-?[0-9]*$/)||e[1]&&!e[1].match(/^[0-9]*$/)||t==="."||t==="-.")&&X_.throwArgumentError("invalid value","value",t);var r=e[0],n="";for(r.substring(0,1)==="-"&&(n="-",r=r.substring(1));r.substring(0,1)==="0";)r=r.substring(1);r===""&&(r="0");var i="";for(e.length===2&&(i="."+(e[1]||"0"));i.length>2&&i[i.length-1]==="0";)i=i.substring(0,i.length-1);for(var a=[];r.length;)if(r.length<=3){a.unshift(r);break}else{var o=r.length-3;a.unshift(r.substring(o)),r=r.substring(0,o)}return n+a.join(",")+i}un.commify=SQ;function V_(t,e){if(typeof e=="string"){var r=K_.indexOf(e);r!==-1&&(e=3*r)}return(0,G_.formatFixed)(t,e??18)}un.formatUnits=V_;function Z_(t,e){if(typeof t!="string"&&X_.throwArgumentError("value must be a string","value",t),typeof e=="string"){var r=K_.indexOf(e);r!==-1&&(e=3*r)}return(0,G_.parseFixed)(t,e??18)}un.parseUnits=Z_;function _Q(t){return V_(t,18)}un.formatEther=_Q;function TQ(t){return Z_(t,18)}un.parseEther=TQ});var rT=P(R=>{"use strict";var kQ=R&&R.__createBinding||(Object.create?function(t,e,r,n){n===void 0&&(n=r),Object.defineProperty(t,n,{enumerable:!0,get:function(){return e[r]}})}:function(t,e,r,n){n===void 0&&(n=r),t[n]=e[r]}),CQ=R&&R.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),W_=R&&R.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(t!=null)for(var r in t)r!=="default"&&Object.prototype.hasOwnProperty.call(t,r)&&kQ(e,t,r);return CQ(e,t),e};Object.defineProperty(R,"__esModule",{value:!0});R.formatBytes32String=R.Utf8ErrorFuncs=R.toUtf8String=R.toUtf8CodePoints=R.toUtf8Bytes=R._toEscapedUtf8String=R.nameprep=R.hexDataSlice=R.hexDataLength=R.hexZeroPad=R.hexValue=R.hexStripZeros=R.hexConcat=R.isHexString=R.hexlify=R.base64=R.base58=R.TransactionDescription=R.LogDescription=R.Interface=R.SigningKey=R.HDNode=R.defaultPath=R.isBytesLike=R.isBytes=R.zeroPad=R.stripZeros=R.concat=R.arrayify=R.shallowCopy=R.resolveProperties=R.getStatic=R.defineReadOnly=R.deepCopy=R.checkProperties=R.poll=R.fetchJson=R._fetchData=R.RLP=R.Logger=R.checkResultErrors=R.FormatTypes=R.ParamType=R.FunctionFragment=R.EventFragment=R.ErrorFragment=R.ConstructorFragment=R.Fragment=R.defaultAbiCoder=R.AbiCoder=void 0;R.Indexed=R.Utf8ErrorReason=R.UnicodeNormalizationForm=R.SupportedAlgorithm=R.mnemonicToSeed=R.isValidMnemonic=R.entropyToMnemonic=R.mnemonicToEntropy=R.getAccountPath=R.verifyTypedData=R.verifyMessage=R.recoverPublicKey=R.computePublicKey=R.recoverAddress=R.computeAddress=R.getJsonWalletAddress=R.TransactionTypes=R.serializeTransaction=R.parseTransaction=R.accessListify=R.joinSignature=R.splitSignature=R.soliditySha256=R.solidityKeccak256=R.solidityPack=R.shuffled=R.randomBytes=R.sha512=R.sha256=R.ripemd160=R.keccak256=R.computeHmac=R.commify=R.parseUnits=R.formatUnits=R.parseEther=R.formatEther=R.isAddress=R.getCreate2Address=R.getContractAddress=R.getIcapAddress=R.getAddress=R._TypedDataEncoder=R.id=R.isValidName=R.namehash=R.hashMessage=R.dnsEncode=R.parseBytes32String=void 0;var Pt=km();Object.defineProperty(R,"AbiCoder",{enumerable:!0,get:function(){return Pt.AbiCoder}});Object.defineProperty(R,"checkResultErrors",{enumerable:!0,get:function(){return Pt.checkResultErrors}});Object.defineProperty(R,"ConstructorFragment",{enumerable:!0,get:function(){return Pt.ConstructorFragment}});Object.defineProperty(R,"defaultAbiCoder",{enumerable:!0,get:function(){return Pt.defaultAbiCoder}});Object.defineProperty(R,"ErrorFragment",{enumerable:!0,get:function(){return Pt.ErrorFragment}});Object.defineProperty(R,"EventFragment",{enumerable:!0,get:function(){return Pt.EventFragment}});Object.defineProperty(R,"FormatTypes",{enumerable:!0,get:function(){return Pt.FormatTypes}});Object.defineProperty(R,"Fragment",{enumerable:!0,get:function(){return Pt.Fragment}});Object.defineProperty(R,"FunctionFragment",{enumerable:!0,get:function(){return Pt.FunctionFragment}});Object.defineProperty(R,"Indexed",{enumerable:!0,get:function(){return Pt.Indexed}});Object.defineProperty(R,"Interface",{enumerable:!0,get:function(){return Pt.Interface}});Object.defineProperty(R,"LogDescription",{enumerable:!0,get:function(){return Pt.LogDescription}});Object.defineProperty(R,"ParamType",{enumerable:!0,get:function(){return Pt.ParamType}});Object.defineProperty(R,"TransactionDescription",{enumerable:!0,get:function(){return Pt.TransactionDescription}});var Gl=Vt();Object.defineProperty(R,"getAddress",{enumerable:!0,get:function(){return Gl.getAddress}});Object.defineProperty(R,"getCreate2Address",{enumerable:!0,get:function(){return Gl.getCreate2Address}});Object.defineProperty(R,"getContractAddress",{enumerable:!0,get:function(){return Gl.getContractAddress}});Object.defineProperty(R,"getIcapAddress",{enumerable:!0,get:function(){return Gl.getIcapAddress}});Object.defineProperty(R,"isAddress",{enumerable:!0,get:function(){return Gl.isAddress}});var OQ=W_(Vu());R.base64=OQ;var PQ=Sp();Object.defineProperty(R,"base58",{enumerable:!0,get:function(){return PQ.Base58}});var vt=De();Object.defineProperty(R,"arrayify",{enumerable:!0,get:function(){return vt.arrayify}});Object.defineProperty(R,"concat",{enumerable:!0,get:function(){return vt.concat}});Object.defineProperty(R,"hexConcat",{enumerable:!0,get:function(){return vt.hexConcat}});Object.defineProperty(R,"hexDataSlice",{enumerable:!0,get:function(){return vt.hexDataSlice}});Object.defineProperty(R,"hexDataLength",{enumerable:!0,get:function(){return vt.hexDataLength}});Object.defineProperty(R,"hexlify",{enumerable:!0,get:function(){return vt.hexlify}});Object.defineProperty(R,"hexStripZeros",{enumerable:!0,get:function(){return vt.hexStripZeros}});Object.defineProperty(R,"hexValue",{enumerable:!0,get:function(){return vt.hexValue}});Object.defineProperty(R,"hexZeroPad",{enumerable:!0,get:function(){return vt.hexZeroPad}});Object.defineProperty(R,"isBytes",{enumerable:!0,get:function(){return vt.isBytes}});Object.defineProperty(R,"isBytesLike",{enumerable:!0,get:function(){return vt.isBytesLike}});Object.defineProperty(R,"isHexString",{enumerable:!0,get:function(){return vt.isHexString}});Object.defineProperty(R,"joinSignature",{enumerable:!0,get:function(){return vt.joinSignature}});Object.defineProperty(R,"zeroPad",{enumerable:!0,get:function(){return vt.zeroPad}});Object.defineProperty(R,"splitSignature",{enumerable:!0,get:function(){return vt.splitSignature}});Object.defineProperty(R,"stripZeros",{enumerable:!0,get:function(){return vt.stripZeros}});var Hc=ko();Object.defineProperty(R,"_TypedDataEncoder",{enumerable:!0,get:function(){return Hc._TypedDataEncoder}});Object.defineProperty(R,"dnsEncode",{enumerable:!0,get:function(){return Hc.dnsEncode}});Object.defineProperty(R,"hashMessage",{enumerable:!0,get:function(){return Hc.hashMessage}});Object.defineProperty(R,"id",{enumerable:!0,get:function(){return Hc.id}});Object.defineProperty(R,"isValidName",{enumerable:!0,get:function(){return Hc.isValidName}});Object.defineProperty(R,"namehash",{enumerable:!0,get:function(){return Hc.namehash}});var Vo=Jp();Object.defineProperty(R,"defaultPath",{enumerable:!0,get:function(){return Vo.defaultPath}});Object.defineProperty(R,"entropyToMnemonic",{enumerable:!0,get:function(){return Vo.entropyToMnemonic}});Object.defineProperty(R,"getAccountPath",{enumerable:!0,get:function(){return Vo.getAccountPath}});Object.defineProperty(R,"HDNode",{enumerable:!0,get:function(){return Vo.HDNode}});Object.defineProperty(R,"isValidMnemonic",{enumerable:!0,get:function(){return Vo.isValidMnemonic}});Object.defineProperty(R,"mnemonicToEntropy",{enumerable:!0,get:function(){return Vo.mnemonicToEntropy}});Object.defineProperty(R,"mnemonicToSeed",{enumerable:!0,get:function(){return Vo.mnemonicToSeed}});var MQ=Mb();Object.defineProperty(R,"getJsonWalletAddress",{enumerable:!0,get:function(){return MQ.getJsonWalletAddress}});var BQ=Bt();Object.defineProperty(R,"keccak256",{enumerable:!0,get:function(){return BQ.keccak256}});var FQ=re();Object.defineProperty(R,"Logger",{enumerable:!0,get:function(){return FQ.Logger}});var T0=dc();Object.defineProperty(R,"computeHmac",{enumerable:!0,get:function(){return T0.computeHmac}});Object.defineProperty(R,"ripemd160",{enumerable:!0,get:function(){return T0.ripemd160}});Object.defineProperty(R,"sha256",{enumerable:!0,get:function(){return T0.sha256}});Object.defineProperty(R,"sha512",{enumerable:!0,get:function(){return T0.sha512}});var Jg=H_();Object.defineProperty(R,"solidityKeccak256",{enumerable:!0,get:function(){return Jg.keccak256}});Object.defineProperty(R,"solidityPack",{enumerable:!0,get:function(){return Jg.pack}});Object.defineProperty(R,"soliditySha256",{enumerable:!0,get:function(){return Jg.sha256}});var Y_=yl();Object.defineProperty(R,"randomBytes",{enumerable:!0,get:function(){return Y_.randomBytes}});Object.defineProperty(R,"shuffled",{enumerable:!0,get:function(){return Y_.shuffled}});var zc=Ve();Object.defineProperty(R,"checkProperties",{enumerable:!0,get:function(){return zc.checkProperties}});Object.defineProperty(R,"deepCopy",{enumerable:!0,get:function(){return zc.deepCopy}});Object.defineProperty(R,"defineReadOnly",{enumerable:!0,get:function(){return zc.defineReadOnly}});Object.defineProperty(R,"getStatic",{enumerable:!0,get:function(){return zc.getStatic}});Object.defineProperty(R,"resolveProperties",{enumerable:!0,get:function(){return zc.resolveProperties}});Object.defineProperty(R,"shallowCopy",{enumerable:!0,get:function(){return zc.shallowCopy}});var LQ=W_(Cd());R.RLP=LQ;var qg=al();Object.defineProperty(R,"computePublicKey",{enumerable:!0,get:function(){return qg.computePublicKey}});Object.defineProperty(R,"recoverPublicKey",{enumerable:!0,get:function(){return qg.recoverPublicKey}});Object.defineProperty(R,"SigningKey",{enumerable:!0,get:function(){return qg.SigningKey}});var ja=Cr();Object.defineProperty(R,"formatBytes32String",{enumerable:!0,get:function(){return ja.formatBytes32String}});Object.defineProperty(R,"nameprep",{enumerable:!0,get:function(){return ja.nameprep}});Object.defineProperty(R,"parseBytes32String",{enumerable:!0,get:function(){return ja.parseBytes32String}});Object.defineProperty(R,"_toEscapedUtf8String",{enumerable:!0,get:function(){return ja._toEscapedUtf8String}});Object.defineProperty(R,"toUtf8Bytes",{enumerable:!0,get:function(){return ja.toUtf8Bytes}});Object.defineProperty(R,"toUtf8CodePoints",{enumerable:!0,get:function(){return ja.toUtf8CodePoints}});Object.defineProperty(R,"toUtf8String",{enumerable:!0,get:function(){return ja.toUtf8String}});Object.defineProperty(R,"Utf8ErrorFuncs",{enumerable:!0,get:function(){return ja.Utf8ErrorFuncs}});var Gc=Ji();Object.defineProperty(R,"accessListify",{enumerable:!0,get:function(){return Gc.accessListify}});Object.defineProperty(R,"computeAddress",{enumerable:!0,get:function(){return Gc.computeAddress}});Object.defineProperty(R,"parseTransaction",{enumerable:!0,get:function(){return Gc.parse}});Object.defineProperty(R,"recoverAddress",{enumerable:!0,get:function(){return Gc.recoverAddress}});Object.defineProperty(R,"serializeTransaction",{enumerable:!0,get:function(){return Gc.serialize}});Object.defineProperty(R,"TransactionTypes",{enumerable:!0,get:function(){return Gc.TransactionTypes}});var Xl=Q_();Object.defineProperty(R,"commify",{enumerable:!0,get:function(){return Xl.commify}});Object.defineProperty(R,"formatEther",{enumerable:!0,get:function(){return Xl.formatEther}});Object.defineProperty(R,"parseEther",{enumerable:!0,get:function(){return Xl.parseEther}});Object.defineProperty(R,"formatUnits",{enumerable:!0,get:function(){return Xl.formatUnits}});Object.defineProperty(R,"parseUnits",{enumerable:!0,get:function(){return Xl.parseUnits}});var $_=Lb();Object.defineProperty(R,"verifyMessage",{enumerable:!0,get:function(){return $_.verifyMessage}});Object.defineProperty(R,"verifyTypedData",{enumerable:!0,get:function(){return $_.verifyTypedData}});var jg=Uo();Object.defineProperty(R,"_fetchData",{enumerable:!0,get:function(){return jg._fetchData}});Object.defineProperty(R,"fetchJson",{enumerable:!0,get:function(){return jg.fetchJson}});Object.defineProperty(R,"poll",{enumerable:!0,get:function(){return jg.poll}});var RQ=dc();Object.defineProperty(R,"SupportedAlgorithm",{enumerable:!0,get:function(){return RQ.SupportedAlgorithm}});var eT=Cr();Object.defineProperty(R,"UnicodeNormalizationForm",{enumerable:!0,get:function(){return eT.UnicodeNormalizationForm}});Object.defineProperty(R,"Utf8ErrorReason",{enumerable:!0,get:function(){return eT.Utf8ErrorReason}})});var tT=P(k0=>{"use strict";Object.defineProperty(k0,"__esModule",{value:!0});k0.version=void 0;k0.version="ethers/5.7.2"});var zg=P(Ne=>{"use strict";var IQ=Ne&&Ne.__createBinding||(Object.create?function(t,e,r,n){n===void 0&&(n=r),Object.defineProperty(t,n,{enumerable:!0,get:function(){return e[r]}})}:function(t,e,r,n){n===void 0&&(n=r),t[n]=e[r]}),NQ=Ne&&Ne.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),Ug=Ne&&Ne.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(t!=null)for(var r in t)r!=="default"&&Object.prototype.hasOwnProperty.call(t,r)&&IQ(e,t,r);return NQ(e,t),e};Object.defineProperty(Ne,"__esModule",{value:!0});Ne.Wordlist=Ne.version=Ne.wordlists=Ne.utils=Ne.logger=Ne.errors=Ne.constants=Ne.FixedNumber=Ne.BigNumber=Ne.ContractFactory=Ne.Contract=Ne.BaseContract=Ne.providers=Ne.getDefaultProvider=Ne.VoidSigner=Ne.Wallet=Ne.Signer=void 0;var Hg=E7();Object.defineProperty(Ne,"BaseContract",{enumerable:!0,get:function(){return Hg.BaseContract}});Object.defineProperty(Ne,"Contract",{enumerable:!0,get:function(){return Hg.Contract}});Object.defineProperty(Ne,"ContractFactory",{enumerable:!0,get:function(){return Hg.ContractFactory}});var nT=Tr();Object.defineProperty(Ne,"BigNumber",{enumerable:!0,get:function(){return nT.BigNumber}});Object.defineProperty(Ne,"FixedNumber",{enumerable:!0,get:function(){return nT.FixedNumber}});var iT=Wu();Object.defineProperty(Ne,"Signer",{enumerable:!0,get:function(){return iT.Signer}});Object.defineProperty(Ne,"VoidSigner",{enumerable:!0,get:function(){return iT.VoidSigner}});var DQ=Lb();Object.defineProperty(Ne,"Wallet",{enumerable:!0,get:function(){return DQ.Wallet}});var JQ=Ug(Ao());Ne.constants=JQ;var qQ=Ug(Ng());Ne.providers=qQ;var jQ=Ng();Object.defineProperty(Ne,"getDefaultProvider",{enumerable:!0,get:function(){return jQ.getDefaultProvider}});var aT=xb();Object.defineProperty(Ne,"Wordlist",{enumerable:!0,get:function(){return aT.Wordlist}});Object.defineProperty(Ne,"wordlists",{enumerable:!0,get:function(){return aT.wordlists}});var UQ=Ug(rT());Ne.utils=UQ;var oT=re();Object.defineProperty(Ne,"errors",{enumerable:!0,get:function(){return oT.ErrorCode}});var sT=tT();Object.defineProperty(Ne,"version",{enumerable:!0,get:function(){return sT.version}});var HQ=new oT.Logger(sT.version);Ne.logger=HQ});var uT=P(Ie=>{"use strict";var zQ=Ie&&Ie.__createBinding||(Object.create?function(t,e,r,n){n===void 0&&(n=r),Object.defineProperty(t,n,{enumerable:!0,get:function(){return e[r]}})}:function(t,e,r,n){n===void 0&&(n=r),t[n]=e[r]}),GQ=Ie&&Ie.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),XQ=Ie&&Ie.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(t!=null)for(var r in t)r!=="default"&&Object.prototype.hasOwnProperty.call(t,r)&&zQ(e,t,r);return GQ(e,t),e};Object.defineProperty(Ie,"__esModule",{value:!0});Ie.Wordlist=Ie.version=Ie.wordlists=Ie.utils=Ie.logger=Ie.errors=Ie.constants=Ie.FixedNumber=Ie.BigNumber=Ie.ContractFactory=Ie.Contract=Ie.BaseContract=Ie.providers=Ie.getDefaultProvider=Ie.VoidSigner=Ie.Wallet=Ie.Signer=Ie.ethers=void 0;var cT=XQ(zg());Ie.ethers=cT;try{Gg=window,Gg._ethers==null&&(Gg._ethers=cT)}catch{}var Gg,rt=zg();Object.defineProperty(Ie,"Signer",{enumerable:!0,get:function(){return rt.Signer}});Object.defineProperty(Ie,"Wallet",{enumerable:!0,get:function(){return rt.Wallet}});Object.defineProperty(Ie,"VoidSigner",{enumerable:!0,get:function(){return rt.VoidSigner}});Object.defineProperty(Ie,"getDefaultProvider",{enumerable:!0,get:function(){return rt.getDefaultProvider}});Object.defineProperty(Ie,"providers",{enumerable:!0,get:function(){return rt.providers}});Object.defineProperty(Ie,"BaseContract",{enumerable:!0,get:function(){return rt.BaseContract}});Object.defineProperty(Ie,"Contract",{enumerable:!0,get:function(){return rt.Contract}});Object.defineProperty(Ie,"ContractFactory",{enumerable:!0,get:function(){return rt.ContractFactory}});Object.defineProperty(Ie,"BigNumber",{enumerable:!0,get:function(){return rt.BigNumber}});Object.defineProperty(Ie,"FixedNumber",{enumerable:!0,get:function(){return rt.FixedNumber}});Object.defineProperty(Ie,"constants",{enumerable:!0,get:function(){return rt.constants}});Object.defineProperty(Ie,"errors",{enumerable:!0,get:function(){return rt.errors}});Object.defineProperty(Ie,"logger",{enumerable:!0,get:function(){return rt.logger}});Object.defineProperty(Ie,"utils",{enumerable:!0,get:function(){return rt.utils}});Object.defineProperty(Ie,"wordlists",{enumerable:!0,get:function(){return rt.wordlists}});Object.defineProperty(Ie,"version",{enumerable:!0,get:function(){return rt.version}});Object.defineProperty(Ie,"Wordlist",{enumerable:!0,get:function(){return rt.Wordlist}})});var tW={};MT(tW,{handler:()=>rW});module.exports=BT(tW);var ST=Ti(J1()),Kg=Ti(mo()),_T=Ti(h6());var fT=Ti(mo());var lT=Ti(uT());function Kl(){function t(e){let{address:r,message:n,signedMessage:i}=e;try{if(!r.length||!n.length||!i.length)return!1;{let a=lT.ethers.utils.verifyMessage(n,i);return r.toLowerCase()===a.toLowerCase()}}catch(a){return console.log("error :>> ",a),!1}}return{verifyMessage:t}}var KQ={address:"0xd557a5745d4560B24D36A68b52351ffF9c86A212".toLowerCase(),accounts:[{address:"0xd557a5745d4560B24D36A68b52351ffF9c86A212".toLowerCase(),currency:"ETH",balance:"1000000000000000000",balanceSnapshots:[{date:"2023-02-06",balance:"1000000000000000000"},{date:"2023-02-05",balance:"100000000000000000"}],roi:.25,walletProvider:"MetaMask"},{address:"0x1dc336d94890b10e1a47b6e34cdee1009ee7b942".toLowerCase(),currency:"ETH",balance:"1000000000000000000",balanceSnapshots:[{date:"2023-02-06",balance:"1000000000000000000"},{date:"2023-02-05",balance:"100000000000000000"}],roi:.25,walletProvider:"CoinbaseWallet"},{address:"0x8222Ef172A2117D1C4739E35234E097630D94376".toLowerCase(),currency:"ETH",balance:"1000000000000000000",balanceSnapshots:[{date:"2023-02-06",balance:"1000000000000000000"},{date:"2023-02-05",balance:"100000000000000000"}],roi:.25,walletProvider:"Ledger"},{address:"bc1qpttwf0df8jkx54dl04anwgmyt27lj6vj885lyr".toLowerCase(),currency:"BTC",balance:"100000000",balanceSnapshots:[{date:"2023-02-06",balance:"100000000"},{date:"2023-02-05",balance:"100000000"}],roi:.25,walletProvider:"Ledger"},{address:"0x8222Ef172A2117D1C4739E35234E097630D94377".toLowerCase(),currency:"ETH",balance:"1000000000000000000",balanceSnapshots:[{date:"2023-02-06",balance:"1000000000000000000"},{date:"2023-02-05",balance:"100000000000000000"}],roi:.25,walletProvider:"Trezor"},{address:"0x8222Ef172A2117D1C4739E35234E097630D94378".toLowerCase(),currency:"ETH",balance:"1000000000000000000",balanceSnapshots:[{date:"2023-02-06",balance:"1000000000000000000"},{date:"2023-02-05",balance:"100000000000000000"}],roi:.25,walletProvider:"WalletConnect"}],nonce:"1234567890"},tt=[KQ];function Zo(){function t(n){let i=tt.find(a=>a.address===n);return i?i.nonce:""}function e(n,i){let a=tt.find(o=>o.address===i);if(console.log("user in updateMessage in users.ts :>> ",a),n=n.toLowerCase(),a)a.nonce=r();else{console.log("Create new user here?");let o={address:i,nonce:r()};tt.push(o)}}function r(){return(Math.floor(Math.random()*(Number.MAX_SAFE_INTEGER-1))+1).toString()}return{getMessage:t,updateMessage:e,generateNonce:r}}var{verifyMessage:VQ}=Kl(),{updateMessage:ZQ}=Zo(),dT=fT.default.Router();dT.use("/",async(t,e)=>{let{body:r}=t,{provider:n,address:i,currency:a,message:o,signedMessage:c}=r,u=tt.find(s=>s.address===i.toLowerCase());if(u&&!u?.accounts){console.log("got into this block in signupLogin.ts");let s=[{address:i,currency:a,balance:"1000000000000000000",balanceSnapshots:[{date:"2023-02-06",balance:"1000000000000000000"},{date:"2023-02-05",balance:"100000000000000000"}],roi:0,walletProvider:n}];u.accounts=s,console.log("user :>> ",u),e.setHeader("Content-Type","application/json"),e.status(200),e.json({message:u.accounts.length?"Sign Up Successful":"Problem creating new user",error:!1,data:u||null})}else{let s=VQ({address:i,message:o,signedMessage:c,provider:n});ZQ(n,i),e.setHeader("Content-Type","application/json"),e.status(200),e.json({message:s?"Login successful":"Login failed",error:!1,data:u})}});var pT=dT;var hT=Ti(mo());var vT=hT.default.Router();vT.use("/",async(t,e)=>{try{let{body:r}=t,{address:n,provider:i,currency:a}=r,o=tt.find(u=>u.address===n.toLowerCase());console.log("user :>> ",o);let c={address:n.toLowerCase(),accounts:[{address:n,currency:a,balance:"1000000000000000000",balanceSnapshots:[{date:"2023-02-06",balance:"1000000000000000000"},{date:"2023-02-05",balance:"100000000000000000"}],roi:0,walletProvider:i}],nonce:QQ()};o||(console.log("pushing in user"),tt.push(c)),e.setHeader("Content-Type","application/json"),e.status(200),e.json({message:o?"Account already exists at that address":"Sign Up Successful",error:!1,data:o||c})}catch(r){console.log("err :>> ",r),e.status(500),e.json({message:"Error signing up",error:!0})}});function QQ(){return(Math.floor(Math.random()*(Number.MAX_SAFE_INTEGER-1))+1).toString()}var mT=vT;var bT=Ti(mo());var{verifyMessage:WQ}=Kl(),{updateMessage:YQ}=Zo(),gT=bT.default.Router();gT.use("/",async(t,e)=>{let{body:r}=t,{address:n,message:i,signedMessage:a,provider:o}=r,c=WQ({address:n,message:i,signedMessage:a,provider:o});c&&YQ(o,n);let u=tt.find(s=>s.address===n.toLowerCase());e.setHeader("Content-Type","application/json"),e.status(200),e.json({message:c?"Login successful":"Login failed",error:!1,data:u})});var xT=gT;var yT=Ti(mo());var Xg=yT.default.Router(),{getMessage:$Q,updateMessage:eW}=Zo();Xg.get("/:provider/:address",async(t,e)=>{let{provider:r,address:n}=t.params;eW(r,n);let i=$Q(n);i?(e.setHeader("Content-Type","application/json"),e.status(200),e.json({message:i})):(e.status(404),e.send())});Xg.post("/:address",async(t,e)=>{let{address:r}=t.params,{message:n}=t.body,i=tt.find(a=>a.address===r);i?(i.nonce=n,e.setHeader("Content-Type","application/json"),e.status(200),e.json({message:`Message updated to: ${n}`,error:!1})):(e.status(404),e.json({message:"User not found",error:!0}))});var wT=Xg;var AT=Ti(mo());var C0=AT.default.Router();C0.put("/update-primary-account",async(t,e)=>{let{primaryAddress:r,updatedProvider:n,updatedAddress:i}=t.body;r=r.toLowerCase(),n=n.toLowerCase(),i=i.toLowerCase();let a=tt.find(o=>o.address===r);a&&(a.address=i),e.setHeader("Content-Type","application/json"),e.status(200),e.json({message:"Primary account updated",error:!1,data:a})});C0.post("/add-sub-account",async(t,e)=>{try{let{account:r}=t.body,{address:n}=t.body;n=n.toLowerCase();let i=tt.find(a=>a.address===n);i&&i.accounts?.push(r),e.setHeader("Content-Type","application/json"),e.status(200),e.json({message:"Account added",error:!1,data:i})}catch(r){console.log("err :>> ",r),e.status(500),e.json({message:"Error adding account",error:!0})}});C0.post("/remove-sub-account",async(t,e)=>{try{let{provider:r,address:n,currency:i}=t.body,{primaryAddress:a}=t.body;a=a.toLowerCase();let o=tt.find(u=>u.address===a),c=!1;o&&(o.accounts=o.accounts?.filter(u=>{if(!(u.walletProvider!==r||u.address!==n||u.currency!==i))c=!0;else return u})),c?(e.setHeader("Content-Type","application/json"),e.status(200),e.json({message:"Account removed",error:!1,data:o})):(e.setHeader("Content-Type","application/json"),e.status(200),e.json({message:"Account not found",error:!0,data:o}))}catch(r){console.log("err :>> ",r),e.status(500),e.json({message:"Error adding account",error:!0})}});var ET=C0;var Ua=(0,Kg.default)();Ua.use(Kg.default.json());Ua.use((0,_T.default)());Ua.use("/signupLogin",pT);Ua.use("/signup",mT);Ua.use("/login",xT);Ua.use("/auth",wT);Ua.use("/users",ET);var rW=async function(t,e){return await(0,ST.default)(Ua)(t,e)};0&&(module.exports={handler}); +/* +object-assign +(c) Sindre Sorhus +@license MIT +*/ +/*! + * accepts + * Copyright(c) 2014 Jonathan Ong + * Copyright(c) 2015 Douglas Christopher Wilson + * MIT Licensed + */ +/*! + * body-parser + * Copyright(c) 2014 Jonathan Ong + * Copyright(c) 2014-2015 Douglas Christopher Wilson + * MIT Licensed + */ +/*! + * body-parser + * Copyright(c) 2014-2015 Douglas Christopher Wilson + * MIT Licensed + */ +/*! + * bytes + * Copyright(c) 2012-2014 TJ Holowaychuk + * Copyright(c) 2015 Jed Watson + * MIT Licensed + */ +/*! + * content-disposition + * Copyright(c) 2014-2017 Douglas Christopher Wilson + * MIT Licensed + */ +/*! + * content-type + * Copyright(c) 2015 Douglas Christopher Wilson + * MIT Licensed + */ +/*! + * cookie + * Copyright(c) 2012-2014 Roman Shtylman + * Copyright(c) 2015 Douglas Christopher Wilson + * MIT Licensed + */ +/*! + * depd + * Copyright(c) 2014-2018 Douglas Christopher Wilson + * MIT Licensed + */ +/*! + * destroy + * Copyright(c) 2014 Jonathan Ong + * Copyright(c) 2015-2022 Douglas Christopher Wilson + * MIT Licensed + */ +/*! + * ee-first + * Copyright(c) 2014 Jonathan Ong + * MIT Licensed + */ +/*! + * encodeurl + * Copyright(c) 2016 Douglas Christopher Wilson + * MIT Licensed + */ +/*! + * escape-html + * Copyright(c) 2012-2013 TJ Holowaychuk + * Copyright(c) 2015 Andreas Lubbe + * Copyright(c) 2015 Tiancheng "Timothy" Gu + * MIT Licensed + */ +/*! + * etag + * Copyright(c) 2014-2016 Douglas Christopher Wilson + * MIT Licensed + */ +/*! + * express + * Copyright(c) 2009-2013 TJ Holowaychuk + * Copyright(c) 2013 Roman Shtylman + * Copyright(c) 2014-2015 Douglas Christopher Wilson + * MIT Licensed + */ +/*! + * express + * Copyright(c) 2009-2013 TJ Holowaychuk + * Copyright(c) 2014-2015 Douglas Christopher Wilson + * MIT Licensed + */ +/*! + * finalhandler + * Copyright(c) 2014-2022 Douglas Christopher Wilson + * MIT Licensed + */ +/*! + * forwarded + * Copyright(c) 2014-2017 Douglas Christopher Wilson + * MIT Licensed + */ +/*! + * fresh + * Copyright(c) 2012 TJ Holowaychuk + * Copyright(c) 2016-2017 Douglas Christopher Wilson + * MIT Licensed + */ +/*! + * http-errors + * Copyright(c) 2014 Jonathan Ong + * Copyright(c) 2016 Douglas Christopher Wilson + * MIT Licensed + */ +/*! + * media-typer + * Copyright(c) 2014 Douglas Christopher Wilson + * MIT Licensed + */ +/*! + * merge-descriptors + * Copyright(c) 2014 Jonathan Ong + * Copyright(c) 2015 Douglas Christopher Wilson + * MIT Licensed + */ +/*! + * methods + * Copyright(c) 2013-2014 TJ Holowaychuk + * Copyright(c) 2015-2016 Douglas Christopher Wilson + * MIT Licensed + */ +/*! + * mime-db + * Copyright(c) 2014 Jonathan Ong + * Copyright(c) 2015-2022 Douglas Christopher Wilson + * MIT Licensed + */ +/*! + * mime-types + * Copyright(c) 2014 Jonathan Ong + * Copyright(c) 2015 Douglas Christopher Wilson + * MIT Licensed + */ +/*! + * negotiator + * Copyright(c) 2012 Federico Romero + * Copyright(c) 2012-2014 Isaac Z. Schlueter + * Copyright(c) 2015 Douglas Christopher Wilson + * MIT Licensed + */ +/*! + * on-finished + * Copyright(c) 2013 Jonathan Ong + * Copyright(c) 2014 Douglas Christopher Wilson + * MIT Licensed + */ +/*! + * parseurl + * Copyright(c) 2014 Jonathan Ong + * Copyright(c) 2014-2017 Douglas Christopher Wilson + * MIT Licensed + */ +/*! + * proxy-addr + * Copyright(c) 2014-2016 Douglas Christopher Wilson + * MIT Licensed + */ +/*! + * range-parser + * Copyright(c) 2012-2014 TJ Holowaychuk + * Copyright(c) 2015-2016 Douglas Christopher Wilson + * MIT Licensed + */ +/*! + * raw-body + * Copyright(c) 2013-2014 Jonathan Ong + * Copyright(c) 2014-2022 Douglas Christopher Wilson + * MIT Licensed + */ +/*! + * send + * Copyright(c) 2012 TJ Holowaychuk + * Copyright(c) 2014-2022 Douglas Christopher Wilson + * MIT Licensed + */ +/*! + * serve-static + * Copyright(c) 2010 Sencha Inc. + * Copyright(c) 2011 TJ Holowaychuk + * Copyright(c) 2014-2016 Douglas Christopher Wilson + * MIT Licensed + */ +/*! + * statuses + * Copyright(c) 2014 Jonathan Ong + * Copyright(c) 2016 Douglas Christopher Wilson + * MIT Licensed + */ +/*! + * toidentifier + * Copyright(c) 2016 Douglas Christopher Wilson + * MIT Licensed + */ +/*! + * type-is + * Copyright(c) 2014 Jonathan Ong + * Copyright(c) 2014-2015 Douglas Christopher Wilson + * MIT Licensed + */ +/*! + * unpipe + * Copyright(c) 2015 Douglas Christopher Wilson + * MIT Licensed + */ +/*! + * vary + * Copyright(c) 2014-2017 Douglas Christopher Wilson + * MIT Licensed + */ +/*! safe-buffer. MIT License. Feross Aboukhadijeh */ +/** + * [js-sha3]{@link https://github.com/emn178/js-sha3} + * + * @version 0.8.0 + * @author Chen, Yi-Cyuan [emn178@gmail.com] + * @copyright Chen, Yi-Cyuan 2015-2018 + * @license MIT + */ +//# sourceMappingURL=index.js.map diff --git a/services/auth/dist/index.js.map b/services/auth/dist/index.js.map new file mode 100644 index 000000000..45893c0b7 --- /dev/null +++ b/services/auth/dist/index.js.map @@ -0,0 +1,7 @@ +{ + "version": 3, + "sources": ["../../../node_modules/serverless-http/lib/finish.js", "../../../node_modules/serverless-http/lib/response.js", "../../../node_modules/serverless-http/lib/framework/get-framework.js", "../../../node_modules/serverless-http/lib/provider/aws/clean-up-event.js", "../../../node_modules/serverless-http/lib/request.js", "../../../node_modules/serverless-http/lib/provider/aws/create-request.js", "../../../node_modules/serverless-http/lib/provider/aws/is-binary.js", "../../../node_modules/serverless-http/lib/provider/aws/sanitize-headers.js", "../../../node_modules/serverless-http/lib/provider/aws/format-response.js", "../../../node_modules/serverless-http/lib/provider/aws/index.js", "../../../node_modules/serverless-http/lib/provider/azure/clean-up-request.js", "../../../node_modules/serverless-http/lib/provider/azure/create-request.js", "../../../node_modules/serverless-http/lib/provider/azure/is-binary.js", "../../../node_modules/serverless-http/lib/provider/azure/sanitize-headers.js", "../../../node_modules/serverless-http/lib/provider/azure/format-response.js", "../../../node_modules/serverless-http/lib/provider/azure/index.js", "../../../node_modules/serverless-http/lib/provider/get-provider.js", "../../../node_modules/serverless-http/serverless-http.js", "../../../node_modules/depd/index.js", "../../../node_modules/bytes/index.js", "../../../node_modules/content-type/index.js", "../../../node_modules/setprototypeof/index.js", "../../../node_modules/statuses/index.js", "../../../node_modules/inherits/inherits_browser.js", "../../../node_modules/inherits/inherits.js", "../../../node_modules/toidentifier/index.js", "../../../node_modules/http-errors/index.js", "../../../node_modules/body-parser/node_modules/ms/index.js", "../../../node_modules/body-parser/node_modules/debug/src/debug.js", "../../../node_modules/body-parser/node_modules/debug/src/browser.js", "../../../node_modules/body-parser/node_modules/debug/src/node.js", "../../../node_modules/body-parser/node_modules/debug/src/index.js", "../../../node_modules/destroy/index.js", "../../../node_modules/safer-buffer/safer.js", "../../../node_modules/iconv-lite/lib/bom-handling.js", "../../../node_modules/iconv-lite/encodings/internal.js", "../../../node_modules/iconv-lite/encodings/utf16.js", "../../../node_modules/iconv-lite/encodings/utf7.js", "../../../node_modules/iconv-lite/encodings/sbcs-codec.js", "../../../node_modules/iconv-lite/encodings/sbcs-data.js", "../../../node_modules/iconv-lite/encodings/sbcs-data-generated.js", "../../../node_modules/iconv-lite/encodings/dbcs-codec.js", "../../../node_modules/iconv-lite/encodings/dbcs-data.js", "../../../node_modules/iconv-lite/encodings/index.js", "../../../node_modules/iconv-lite/lib/streams.js", "../../../node_modules/iconv-lite/lib/extend-node.js", "../../../node_modules/iconv-lite/lib/index.js", "../../../node_modules/unpipe/index.js", "../../../node_modules/raw-body/index.js", "../../../node_modules/ee-first/index.js", "../../../node_modules/on-finished/index.js", "../../../node_modules/body-parser/lib/read.js", "../../../node_modules/media-typer/index.js", "../../../node_modules/mime-db/index.js", "../../../node_modules/mime-types/index.js", "../../../node_modules/type-is/index.js", "../../../node_modules/body-parser/lib/types/json.js", "../../../node_modules/body-parser/lib/types/raw.js", "../../../node_modules/body-parser/lib/types/text.js", "../../../node_modules/has-symbols/shams.js", "../../../node_modules/has-symbols/index.js", "../../../node_modules/function-bind/implementation.js", "../../../node_modules/function-bind/index.js", "../../../node_modules/has/src/index.js", "../../../node_modules/get-intrinsic/index.js", "../../../node_modules/call-bind/index.js", "../../../node_modules/call-bind/callBound.js", "../../../node_modules/object-inspect/util.inspect.js", "../../../node_modules/object-inspect/index.js", "../../../node_modules/side-channel/index.js", "../../../node_modules/qs/lib/formats.js", "../../../node_modules/qs/lib/utils.js", "../../../node_modules/qs/lib/stringify.js", "../../../node_modules/qs/lib/parse.js", "../../../node_modules/qs/lib/index.js", "../../../node_modules/body-parser/lib/types/urlencoded.js", "../../../node_modules/body-parser/index.js", "../../../node_modules/merge-descriptors/index.js", "../../../node_modules/finalhandler/node_modules/ms/index.js", "../../../node_modules/finalhandler/node_modules/debug/src/debug.js", "../../../node_modules/finalhandler/node_modules/debug/src/browser.js", "../../../node_modules/finalhandler/node_modules/debug/src/node.js", "../../../node_modules/finalhandler/node_modules/debug/src/index.js", "../../../node_modules/encodeurl/index.js", "../../../node_modules/escape-html/index.js", "../../../node_modules/parseurl/index.js", "../../../node_modules/finalhandler/index.js", "../../../node_modules/express/node_modules/ms/index.js", "../../../node_modules/express/node_modules/debug/src/debug.js", "../../../node_modules/express/node_modules/debug/src/browser.js", "../../../node_modules/express/node_modules/debug/src/node.js", "../../../node_modules/express/node_modules/debug/src/index.js", "../../../node_modules/array-flatten/array-flatten.js", "../../../node_modules/path-to-regexp/index.js", "../../../node_modules/express/lib/router/layer.js", "../../../node_modules/methods/index.js", "../../../node_modules/express/lib/router/route.js", "../../../node_modules/utils-merge/index.js", "../../../node_modules/express/lib/router/index.js", "../../../node_modules/express/lib/middleware/init.js", "../../../node_modules/express/lib/middleware/query.js", "../../../node_modules/express/lib/view.js", "../../../node_modules/safe-buffer/index.js", "../../../node_modules/content-disposition/index.js", "../../../node_modules/send/node_modules/debug/node_modules/ms/index.js", "../../../node_modules/send/node_modules/debug/src/debug.js", "../../../node_modules/send/node_modules/debug/src/browser.js", "../../../node_modules/send/node_modules/debug/src/node.js", "../../../node_modules/send/node_modules/debug/src/index.js", "../../../node_modules/etag/index.js", "../../../node_modules/fresh/index.js", "../../../node_modules/mime/mime.js", "../../../node_modules/send/node_modules/ms/index.js", "../../../node_modules/range-parser/index.js", "../../../node_modules/send/index.js", "../../../node_modules/forwarded/index.js", "../../../node_modules/ipaddr.js/lib/ipaddr.js", "../../../node_modules/proxy-addr/index.js", "../../../node_modules/express/lib/utils.js", "../../../node_modules/express/lib/application.js", "../../../node_modules/negotiator/lib/charset.js", "../../../node_modules/negotiator/lib/encoding.js", "../../../node_modules/negotiator/lib/language.js", "../../../node_modules/negotiator/lib/mediaType.js", "../../../node_modules/negotiator/index.js", "../../../node_modules/accepts/index.js", "../../../node_modules/express/lib/request.js", "../../../node_modules/cookie-signature/index.js", "../../../node_modules/cookie/index.js", "../../../node_modules/vary/index.js", "../../../node_modules/express/lib/response.js", "../../../node_modules/serve-static/index.js", "../../../node_modules/express/lib/express.js", "../../../node_modules/express/index.js", "../../../node_modules/object-assign/index.js", "../../../node_modules/cors/lib/index.js", "../../../node_modules/bn.js/lib/bn.js", "../../../node_modules/@ethersproject/logger/src.ts/_version.ts", "../../../node_modules/@ethersproject/logger/src.ts/index.ts", "../../../node_modules/@ethersproject/bytes/src.ts/_version.ts", "../../../node_modules/@ethersproject/bytes/src.ts/index.ts", "../../../node_modules/@ethersproject/bignumber/src.ts/_version.ts", "../../../node_modules/@ethersproject/bignumber/src.ts/bignumber.ts", "../../../node_modules/@ethersproject/bignumber/src.ts/fixednumber.ts", "../../../node_modules/@ethersproject/bignumber/src.ts/index.ts", "../../../node_modules/@ethersproject/properties/src.ts/_version.ts", "../../../node_modules/@ethersproject/properties/src.ts/index.ts", "../../../node_modules/@ethersproject/abi/src.ts/_version.ts", "../../../node_modules/@ethersproject/abi/src.ts/fragments.ts", "../../../node_modules/@ethersproject/abi/src.ts/coders/abstract-coder.ts", "../../../node_modules/js-sha3/src/sha3.js", "../../../node_modules/@ethersproject/keccak256/src.ts/index.ts", "../../../node_modules/@ethersproject/rlp/src.ts/_version.ts", "../../../node_modules/@ethersproject/rlp/src.ts/index.ts", "../../../node_modules/@ethersproject/address/src.ts/_version.ts", "../../../node_modules/@ethersproject/address/src.ts/index.ts", "../../../node_modules/@ethersproject/abi/src.ts/coders/address.ts", "../../../node_modules/@ethersproject/abi/src.ts/coders/anonymous.ts", "../../../node_modules/@ethersproject/abi/src.ts/coders/array.ts", "../../../node_modules/@ethersproject/abi/src.ts/coders/boolean.ts", "../../../node_modules/@ethersproject/abi/src.ts/coders/bytes.ts", "../../../node_modules/@ethersproject/abi/src.ts/coders/fixed-bytes.ts", "../../../node_modules/@ethersproject/abi/src.ts/coders/null.ts", "../../../node_modules/@ethersproject/constants/src.ts/addresses.ts", "../../../node_modules/@ethersproject/constants/src.ts/bignumbers.ts", "../../../node_modules/@ethersproject/constants/src.ts/hashes.ts", "../../../node_modules/@ethersproject/constants/src.ts/strings.ts", "../../../node_modules/@ethersproject/constants/src.ts/index.ts", "../../../node_modules/@ethersproject/abi/src.ts/coders/number.ts", "../../../node_modules/@ethersproject/strings/src.ts/_version.ts", "../../../node_modules/@ethersproject/strings/src.ts/utf8.ts", "../../../node_modules/@ethersproject/strings/src.ts/bytes32.ts", "../../../node_modules/@ethersproject/strings/src.ts/idna.ts", "../../../node_modules/@ethersproject/strings/src.ts/index.ts", "../../../node_modules/@ethersproject/abi/src.ts/coders/string.ts", "../../../node_modules/@ethersproject/abi/src.ts/coders/tuple.ts", "../../../node_modules/@ethersproject/abi/src.ts/abi-coder.ts", "../../../node_modules/@ethersproject/hash/src.ts/id.ts", "../../../node_modules/@ethersproject/hash/src.ts/_version.ts", "../../../node_modules/@ethersproject/base64/src.ts/base64.ts", "../../../node_modules/@ethersproject/base64/src.ts/index.ts", "../../../node_modules/@ethersproject/hash/src.ts/ens-normalize/decoder.ts", "../../../node_modules/@ethersproject/hash/src.ts/ens-normalize/include.ts", "../../../node_modules/@ethersproject/hash/src.ts/ens-normalize/lib.ts", "../../../node_modules/@ethersproject/hash/src.ts/namehash.ts", "../../../node_modules/@ethersproject/hash/src.ts/message.ts", "../../../node_modules/@ethersproject/hash/src.ts/typed-data.ts", "../../../node_modules/@ethersproject/hash/src.ts/index.ts", "../../../node_modules/@ethersproject/abi/src.ts/interface.ts", "../../../node_modules/@ethersproject/abi/src.ts/index.ts", "../../../node_modules/@ethersproject/abstract-provider/src.ts/_version.ts", "../../../node_modules/@ethersproject/abstract-provider/src.ts/index.ts", "../../../node_modules/@ethersproject/abstract-signer/src.ts/_version.ts", "../../../node_modules/@ethersproject/abstract-signer/src.ts/index.ts", "../../../node_modules/elliptic/node_modules/bn.js/lib/bn.js", "../../../node_modules/minimalistic-assert/index.js", "../../../node_modules/minimalistic-crypto-utils/lib/utils.js", "../../../node_modules/elliptic/lib/elliptic/utils.js", "../../../node_modules/brorand/index.js", "../../../node_modules/elliptic/lib/elliptic/curve/base.js", "../../../node_modules/elliptic/lib/elliptic/curve/short.js", "../../../node_modules/elliptic/lib/elliptic/curve/mont.js", "../../../node_modules/elliptic/lib/elliptic/curve/edwards.js", "../../../node_modules/elliptic/lib/elliptic/curve/index.js", "../../../node_modules/hash.js/lib/hash/utils.js", "../../../node_modules/hash.js/lib/hash/common.js", "../../../node_modules/hash.js/lib/hash/sha/common.js", "../../../node_modules/hash.js/lib/hash/sha/1.js", "../../../node_modules/hash.js/lib/hash/sha/256.js", "../../../node_modules/hash.js/lib/hash/sha/224.js", "../../../node_modules/hash.js/lib/hash/sha/512.js", "../../../node_modules/hash.js/lib/hash/sha/384.js", "../../../node_modules/hash.js/lib/hash/sha.js", "../../../node_modules/hash.js/lib/hash/ripemd.js", "../../../node_modules/hash.js/lib/hash/hmac.js", "../../../node_modules/hash.js/lib/hash.js", "../../../node_modules/elliptic/lib/elliptic/precomputed/secp256k1.js", "../../../node_modules/elliptic/lib/elliptic/curves.js", "../../../node_modules/hmac-drbg/lib/hmac-drbg.js", "../../../node_modules/elliptic/lib/elliptic/ec/key.js", "../../../node_modules/elliptic/lib/elliptic/ec/signature.js", "../../../node_modules/elliptic/lib/elliptic/ec/index.js", "../../../node_modules/elliptic/lib/elliptic/eddsa/key.js", "../../../node_modules/elliptic/lib/elliptic/eddsa/signature.js", "../../../node_modules/elliptic/lib/elliptic/eddsa/index.js", "../../../node_modules/elliptic/lib/elliptic.js", "../../../node_modules/@ethersproject/signing-key/src.ts/elliptic.ts", "../../../node_modules/@ethersproject/signing-key/src.ts/_version.ts", "../../../node_modules/@ethersproject/signing-key/src.ts/index.ts", "../../../node_modules/@ethersproject/transactions/src.ts/_version.ts", "../../../node_modules/@ethersproject/transactions/src.ts/index.ts", "../../../node_modules/@ethersproject/contracts/src.ts/_version.ts", "../../../node_modules/@ethersproject/contracts/src.ts/index.ts", "../../../node_modules/@ethersproject/basex/src.ts/index.ts", "../../../node_modules/@ethersproject/pbkdf2/src.ts/pbkdf2.ts", "../../../node_modules/@ethersproject/pbkdf2/src.ts/index.ts", "../../../node_modules/@ethersproject/sha2/src.ts/types.ts", "../../../node_modules/@ethersproject/sha2/src.ts/_version.ts", "../../../node_modules/@ethersproject/sha2/src.ts/sha2.ts", "../../../node_modules/@ethersproject/sha2/src.ts/index.ts", "../../../node_modules/@ethersproject/wordlists/src.ts/_version.ts", "../../../node_modules/@ethersproject/wordlists/src.ts/wordlist.ts", "../../../node_modules/@ethersproject/wordlists/src.ts/lang-cz.ts", "../../../node_modules/@ethersproject/wordlists/src.ts/lang-en.ts", "../../../node_modules/@ethersproject/wordlists/src.ts/lang-es.ts", "../../../node_modules/@ethersproject/wordlists/src.ts/lang-fr.ts", "../../../node_modules/@ethersproject/wordlists/src.ts/lang-ja.ts", "../../../node_modules/@ethersproject/wordlists/src.ts/lang-ko.ts", "../../../node_modules/@ethersproject/wordlists/src.ts/lang-it.ts", "../../../node_modules/@ethersproject/wordlists/src.ts/lang-zh.ts", "../../../node_modules/@ethersproject/wordlists/src.ts/wordlists.ts", "../../../node_modules/@ethersproject/wordlists/src.ts/index.ts", "../../../node_modules/@ethersproject/hdnode/src.ts/_version.ts", "../../../node_modules/@ethersproject/hdnode/src.ts/index.ts", "../../../node_modules/@ethersproject/random/src.ts/random.ts", "../../../node_modules/@ethersproject/random/src.ts/shuffle.ts", "../../../node_modules/@ethersproject/random/src.ts/index.ts", "../../../node_modules/@ethersproject/json-wallets/node_modules/aes-js/index.js", "../../../node_modules/@ethersproject/json-wallets/src.ts/_version.ts", "../../../node_modules/@ethersproject/json-wallets/src.ts/utils.ts", "../../../node_modules/@ethersproject/json-wallets/src.ts/crowdsale.ts", "../../../node_modules/@ethersproject/json-wallets/src.ts/inspect.ts", "../../../node_modules/scrypt-js/scrypt.js", "../../../node_modules/@ethersproject/json-wallets/src.ts/keystore.ts", "../../../node_modules/@ethersproject/json-wallets/src.ts/index.ts", "../../../node_modules/@ethersproject/wallet/src.ts/_version.ts", "../../../node_modules/@ethersproject/wallet/src.ts/index.ts", "../../../node_modules/@ethersproject/networks/src.ts/_version.ts", "../../../node_modules/@ethersproject/networks/src.ts/index.ts", "../../../node_modules/@ethersproject/web/src.ts/_version.ts", "../../../node_modules/@ethersproject/web/src.ts/geturl.ts", "../../../node_modules/@ethersproject/web/src.ts/index.ts", "../../../node_modules/bech32/index.js", "../../../node_modules/@ethersproject/providers/src.ts/_version.ts", "../../../node_modules/@ethersproject/providers/src.ts/formatter.ts", "../../../node_modules/@ethersproject/providers/src.ts/base-provider.ts", "../../../node_modules/@ethersproject/providers/src.ts/json-rpc-provider.ts", "../../../node_modules/ws/lib/constants.js", "../../../node_modules/node-gyp-build/index.js", "../../../node_modules/bufferutil/fallback.js", "../../../node_modules/bufferutil/index.js", "../../../node_modules/ws/lib/buffer-util.js", "../../../node_modules/ws/lib/limiter.js", "../../../node_modules/ws/lib/permessage-deflate.js", "../../../node_modules/utf-8-validate/fallback.js", "../../../node_modules/utf-8-validate/index.js", "../../../node_modules/ws/lib/validation.js", "../../../node_modules/ws/lib/receiver.js", "../../../node_modules/ws/lib/sender.js", "../../../node_modules/ws/lib/event-target.js", "../../../node_modules/ws/lib/extension.js", "../../../node_modules/ws/lib/websocket.js", "../../../node_modules/ws/lib/stream.js", "../../../node_modules/ws/lib/websocket-server.js", "../../../node_modules/ws/index.js", "../../../node_modules/@ethersproject/providers/src.ts/ws.ts", "../../../node_modules/@ethersproject/providers/src.ts/websocket-provider.ts", "../../../node_modules/@ethersproject/providers/src.ts/url-json-rpc-provider.ts", "../../../node_modules/@ethersproject/providers/src.ts/alchemy-provider.ts", "../../../node_modules/@ethersproject/providers/src.ts/ankr-provider.ts", "../../../node_modules/@ethersproject/providers/src.ts/cloudflare-provider.ts", "../../../node_modules/@ethersproject/providers/src.ts/etherscan-provider.ts", "../../../node_modules/@ethersproject/providers/src.ts/fallback-provider.ts", "../../../node_modules/@ethersproject/providers/src.ts/ipc-provider.ts", "../../../node_modules/@ethersproject/providers/src.ts/infura-provider.ts", "../../../node_modules/@ethersproject/providers/src.ts/json-rpc-batch-provider.ts", "../../../node_modules/@ethersproject/providers/src.ts/nodesmith-provider.ts", "../../../node_modules/@ethersproject/providers/src.ts/pocket-provider.ts", "../../../node_modules/@ethersproject/providers/src.ts/web3-provider.ts", "../../../node_modules/@ethersproject/providers/src.ts/index.ts", "../../../node_modules/@ethersproject/solidity/src.ts/_version.ts", "../../../node_modules/@ethersproject/solidity/src.ts/index.ts", "../../../node_modules/@ethersproject/units/src.ts/_version.ts", "../../../node_modules/@ethersproject/units/src.ts/index.ts", "../../../node_modules/ethers/src.ts/utils.ts", "../../../node_modules/ethers/src.ts/_version.ts", "../../../node_modules/ethers/src.ts/ethers.ts", "../../../node_modules/ethers/src.ts/index.ts", "../src/index.ts", "../src/routes/signupLogin.ts", "../src/providers/ethers.ts", "../src/collections/users.ts", "../src/providers/users.ts", "../src/routes/signup.ts", "../src/routes/login.ts", "../src/routes/auth.ts", "../src/routes/users.ts"], + "sourcesContent": ["'use strict';\n\nmodule.exports = async function finish(item, transform, ...details) {\n await new Promise((resolve, reject) => {\n if (item.finished || item.complete) {\n resolve();\n return;\n }\n\n let finished = false;\n\n function done(err) {\n if (finished) {\n return;\n }\n\n finished = true;\n\n item.removeListener('error', done);\n item.removeListener('end', done);\n item.removeListener('finish', done);\n\n if (err) {\n reject(err);\n } else {\n resolve();\n }\n }\n\n item.once('error', done);\n item.once('end', done);\n item.once('finish', done);\n });\n\n if (typeof transform === 'function') {\n await transform(item, ...details);\n } else if (typeof transform === 'object' && transform !== null) {\n Object.assign(item, transform);\n }\n\n return item;\n};\n", "'use strict';\n\nconst http = require('http');\n\nconst headerEnd = '\\r\\n\\r\\n';\n\nconst BODY = Symbol();\nconst HEADERS = Symbol();\n\nfunction getString(data) {\n if (Buffer.isBuffer(data)) {\n return data.toString('utf8');\n } else if (typeof data === 'string') {\n return data;\n } else {\n throw new Error(`response.write() of unexpected type: ${typeof data}`);\n }\n}\n\nfunction addData(stream, data) {\n if (Buffer.isBuffer(data) || typeof data === 'string' || data instanceof Uint8Array) {\n stream[BODY].push(Buffer.from(data));\n } else {\n throw new Error(`response.write() of unexpected type: ${typeof data}`);\n }\n}\n\nmodule.exports = class ServerlessResponse extends http.ServerResponse {\n\n static from(res) {\n const response = new ServerlessResponse(res);\n\n response.statusCode = res.statusCode\n response[HEADERS] = res.headers;\n response[BODY] = [Buffer.from(res.body)];\n response.end();\n\n return response;\n }\n\n static body(res) {\n return Buffer.concat(res[BODY]);\n }\n\n static headers(res) {\n const headers = typeof res.getHeaders === 'function'\n ? res.getHeaders()\n : res._headers;\n\n return Object.assign(headers, res[HEADERS]);\n }\n\n get headers() {\n return this[HEADERS];\n }\n\n setHeader(key, value) {\n if (this._wroteHeader) {\n this[HEADERS][key] = value;\n } else {\n super.setHeader(key, value);\n }\n }\n\n writeHead(statusCode, reason, obj) {\n const headers = typeof reason === 'string'\n ? obj\n : reason\n\n for (const name in headers) {\n this.setHeader(name, headers[name])\n\n if (!this._wroteHeader) {\n // we only need to initiate super.headers once\n // writeHead will add the other headers itself\n break\n }\n }\n\n super.writeHead(statusCode, reason, obj);\n }\n\n constructor({ method }) {\n super({ method });\n\n this[BODY] = [];\n this[HEADERS] = {};\n\n this.useChunkedEncodingByDefault = false;\n this.chunkedEncoding = false;\n this._header = '';\n\n this.assignSocket({\n _writableState: {},\n writable: true,\n on: Function.prototype,\n removeListener: Function.prototype,\n destroy: Function.prototype,\n cork: Function.prototype,\n uncork: Function.prototype,\n write: (data, encoding, cb) => {\n if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n\n if (this._header === '' || this._wroteHeader) {\n addData(this, data);\n } else {\n const string = getString(data);\n const index = string.indexOf(headerEnd);\n\n if (index !== -1) {\n const remainder = string.slice(index + headerEnd.length);\n\n if (remainder) {\n addData(this, remainder);\n }\n\n this._wroteHeader = true;\n }\n }\n\n if (typeof cb === 'function') {\n cb();\n }\n },\n });\n\n this.once('finish', () => {\n this.emit('close')\n });\n }\n\n};\n", "'use strict';\n\nconst http = require('http')\nconst Response = require('../response');\n\nfunction common(cb) {\n return request => {\n const response = new Response(request);\n\n cb(request, response);\n\n return response;\n };\n}\n\nmodule.exports = function getFramework(app) {\n if (app instanceof http.Server) {\n return request => {\n const response = new Response(request);\n app.emit('request', request, response)\n return response\n }\n }\n\n if (typeof app.callback === 'function') {\n return common(app.callback());\n }\n\n if (typeof app.handle === 'function') {\n return common((request, response) => {\n app.handle(request, response);\n });\n }\n\n if (typeof app.handler === 'function') {\n return common((request, response) => {\n app.handler(request, response);\n });\n }\n\n if (typeof app._onRequest === 'function') {\n return common((request, response) => {\n app._onRequest(request, response);\n });\n }\n\n if (typeof app === 'function') {\n return common(app);\n }\n\n if (app.router && typeof app.router.route == 'function') {\n return common((req, res) => {\n const { url, method, headers, body } = req;\n app.router.route({ url, method, headers, body }, res);\n });\n }\n\n if (app._core && typeof app._core._dispatch === 'function') {\n return common(app._core._dispatch({\n app\n }));\n }\n\n if (typeof app.inject === 'function') {\n return async request => {\n const { method, url, headers, body } = request;\n\n const res = await app.inject({ method, url, headers, payload: body })\n\n return Response.from(res);\n };\n }\n\n if (typeof app.main === 'function') {\n return common(app.main);\n }\n\n throw new Error('Unsupported framework');\n};\n", "'use strict';\n\nfunction removeBasePath(path = '/', basePath) {\n if (basePath) {\n const basePathIndex = path.indexOf(basePath);\n\n if (basePathIndex > -1) {\n return path.substr(basePathIndex + basePath.length) || '/';\n }\n }\n\n return path;\n}\n\nfunction isString(value)\n{\n return (typeof value === 'string' || value instanceof String);\n}\n\n// ELBs will pass spaces as + symbols, and decodeURIComponent doesn't decode + symbols. So we need to convert them into something it can convert\nfunction specialDecodeURIComponent(value)\n{\n if(!isString(value))\n {\n return value;\n }\n\n let decoded;\n try {\n decoded = decodeURIComponent(value.replace(/[+]/g, \"%20\"));\n } catch (err) {\n decoded = value.replace(/[+]/g, \"%20\");\n }\n\n return decoded;\n}\n\nfunction recursiveURLDecode(value) {\n\n if (isString(value)) {\n return specialDecodeURIComponent(value);\n } else if (Array.isArray(value)) {\n\n const decodedArray = [];\n\n for (let index in value) {\n decodedArray.push(recursiveURLDecode(value[index]));\n }\n\n return decodedArray;\n\n } else if (value instanceof Object) {\n\n const decodedObject = {};\n\n for (let key of Object.keys(value)) {\n decodedObject[specialDecodeURIComponent(key)] = recursiveURLDecode(value[key]);\n }\n\n return decodedObject;\n }\n\n return value;\n}\n\nmodule.exports = function cleanupEvent(evt, options) {\n const event = evt || {};\n\n event.requestContext = event.requestContext || {};\n event.body = event.body || '';\n event.headers = event.headers || {};\n\n // Events coming from AWS Elastic Load Balancers do not automatically urldecode query parameters (unlike API Gateway). So we need to check for that and automatically decode them\n // to normalize the request between the two.\n if ('elb' in event.requestContext) {\n\n if (event.multiValueQueryStringParameters) {\n event.multiValueQueryStringParameters = recursiveURLDecode(event.multiValueQueryStringParameters);\n }\n\n if (event.queryStringParameters) {\n event.queryStringParameters = recursiveURLDecode(event.queryStringParameters);\n }\n\n }\n\n if (event.version === '2.0') {\n event.requestContext.authorizer = event.requestContext.authorizer || {};\n event.requestContext.http.method = event.requestContext.http.method || 'GET';\n event.rawPath = removeBasePath(event.requestPath || event.rawPath, options.basePath);\n } else {\n event.requestContext.identity = event.requestContext.identity || {};\n event.httpMethod = event.httpMethod || 'GET';\n event.path = removeBasePath(event.requestPath || event.path, options.basePath);\n }\n\n return event;\n};\n", "'use strict';\n\nconst http = require('http');\n\nmodule.exports = class ServerlessRequest extends http.IncomingMessage {\n constructor({ method, url, headers, body, remoteAddress }) {\n super({\n encrypted: true,\n readable: false,\n remoteAddress,\n address: () => ({ port: 443 }),\n end: Function.prototype,\n destroy: Function.prototype\n });\n\n if (typeof headers['content-length'] === 'undefined') {\n headers['content-length'] = Buffer.byteLength(body);\n }\n\n Object.assign(this, {\n ip: remoteAddress,\n complete: true,\n httpVersion: '1.1',\n httpVersionMajor: '1',\n httpVersionMinor: '1',\n method,\n headers,\n body,\n url,\n });\n\n this._read = () => {\n this.push(body);\n this.push(null);\n };\n }\n\n}\n", "\"use strict\";\n\nconst URL = require('url');\n\nconst Request = require('../../request');\n\nfunction requestMethod(event) {\n if (event.version === '2.0') {\n return event.requestContext.http.method;\n }\n return event.httpMethod;\n}\n\nfunction requestRemoteAddress(event) {\n if (event.version === '2.0') {\n return event.requestContext.http.sourceIp;\n }\n return event.requestContext.identity.sourceIp;\n}\n\nfunction requestHeaders(event) {\n const initialHeader = event.version === '2.0' && Array.isArray(event.cookies)\n ? { cookie: event.cookies.join('; ') }\n : {};\n\n if (event.multiValueHeaders) {\n return Object.keys(event.multiValueHeaders).reduce((headers, key) => {\n headers[key.toLowerCase()] = event.multiValueHeaders[key].join(\", \")\n return headers;\n }, initialHeader);\n }\n\n return Object.keys(event.headers).reduce((headers, key) => {\n headers[key.toLowerCase()] = event.headers[key];\n return headers;\n }, initialHeader);\n}\n\nfunction requestBody(event) {\n const type = typeof event.body;\n\n if (Buffer.isBuffer(event.body)) {\n return event.body;\n } else if (type === 'string') {\n return Buffer.from(event.body, event.isBase64Encoded ? 'base64' : 'utf8');\n } else if (type === 'object') {\n return Buffer.from(JSON.stringify(event.body));\n }\n\n throw new Error(`Unexpected event.body type: ${typeof event.body}`);\n}\n\nfunction requestUrl(event) {\n if (event.version === '2.0') {\n return URL.format({\n pathname: event.rawPath,\n search: event.rawQueryString,\n });\n }\n // Normalize all query params into a single query string.\n const query = event.multiValueQueryStringParameters || {};\n if (event.queryStringParameters) {\n Object.keys(event.queryStringParameters).forEach((key) => {\n if (Array.isArray(query[key])) {\n if (!query[key].includes(event.queryStringParameters[key])) {\n query[key].push(event.queryStringParameters[key]);\n }\n } else {\n query[key] = [event.queryStringParameters[key]];\n }\n });\n }\n return URL.format({\n pathname: event.path,\n query: query,\n });\n}\n\nmodule.exports = (event, context, options) => {\n const method = requestMethod(event);\n const remoteAddress = requestRemoteAddress(event);\n const headers = requestHeaders(event);\n const body = requestBody(event);\n const url = requestUrl(event);\n\n if (typeof options.requestId === 'string' && options.requestId.length > 0) {\n const header = options.requestId.toLowerCase();\n const requestId = headers[header] || event.requestContext.requestId;\n if (requestId) {\n headers[header] = requestId;\n }\n }\n\n const req = new Request({\n method,\n headers,\n body,\n remoteAddress,\n url,\n });\n\n req.requestContext = event.requestContext;\n req.apiGateway = {\n event,\n context,\n };\n\n return req;\n};\n", "'use strict';\n\nconst BINARY_ENCODINGS = ['gzip', 'deflate', 'br'];\nconst BINARY_CONTENT_TYPES = (process.env.BINARY_CONTENT_TYPES || '').split(',');\n\nfunction isBinaryEncoding(headers) {\n const contentEncoding = headers['content-encoding'];\n\n if (typeof contentEncoding === 'string') {\n return contentEncoding.split(',').some(value =>\n BINARY_ENCODINGS.some(binaryEncoding => value.indexOf(binaryEncoding) !== -1)\n );\n }\n}\n\nfunction isBinaryContent(headers, options) {\n const contentTypes = [].concat(options.binary\n ? options.binary\n : BINARY_CONTENT_TYPES\n ).map(candidate =>\n new RegExp(`^${candidate.replace(/\\*/g, '.*')}$`)\n );\n\n const contentType = (headers['content-type'] || '').split(';')[0];\n return !!contentType && contentTypes.some(candidate => candidate.test(contentType));\n}\n\nmodule.exports = function isBinary(headers, options) {\n if (options.binary === false) {\n return false;\n }\n\n if (options.binary === true) {\n return true\n }\n\n if (typeof options.binary === 'function') {\n return options.binary(headers);\n }\n\n return isBinaryEncoding(headers) || isBinaryContent(headers, options);\n};\n", "'use strict';\n\nmodule.exports = function sanitizeHeaders(headers) {\n return Object.keys(headers).reduce((memo, key) => {\n const value = headers[key];\n\n if (Array.isArray(value)) {\n memo.multiValueHeaders[key] = value;\n if (key.toLowerCase() !== 'set-cookie') {\n memo.headers[key] = value.join(\", \");\n }\n } else {\n memo.headers[key] = value == null ? '' : value.toString();\n }\n\n return memo;\n }, {\n headers: {},\n multiValueHeaders: {}\n });\n};\n", "'use strict';\n\nconst isBinary = require('./is-binary');\nconst Response = require('../../response');\nconst sanitizeHeaders = require('./sanitize-headers');\n\nmodule.exports = (event, response, options) => {\n const { statusCode } = response;\n const {headers, multiValueHeaders } = sanitizeHeaders(Response.headers(response));\n\n let cookies = [];\n\n if (multiValueHeaders['set-cookie']) {\n cookies = multiValueHeaders['set-cookie'];\n }\n\n const isBase64Encoded = isBinary(headers, options);\n const encoding = isBase64Encoded ? 'base64' : 'utf8';\n let body = Response.body(response).toString(encoding);\n\n if (headers['transfer-encoding'] === 'chunked' || response.chunkedEncoding) {\n const raw = Response.body(response).toString().split('\\r\\n');\n const parsed = [];\n for (let i = 0; i < raw.length; i +=2) {\n const size = parseInt(raw[i], 16);\n const value = raw[i + 1];\n if (value) {\n parsed.push(value.substring(0, size));\n }\n }\n body = parsed.join('')\n }\n\n let formattedResponse = { statusCode, headers, isBase64Encoded, body };\n\n if (event.version === '2.0' && cookies.length) {\n formattedResponse['cookies'] = cookies;\n }\n\n if ((!event.version || event.version === '1.0') && Object.keys(multiValueHeaders).length) {\n formattedResponse['multiValueHeaders'] = multiValueHeaders;\n }\n\n return formattedResponse;\n};\n", "const cleanUpEvent = require('./clean-up-event');\n\nconst createRequest = require('./create-request');\nconst formatResponse = require('./format-response');\n\nmodule.exports = options => {\n return getResponse => async (event_, context = {}) => {\n const event = cleanUpEvent(event_, options);\n\n const request = createRequest(event, context, options);\n const response = await getResponse(request, event, context);\n\n return formatResponse(event, response, options);\n };\n};\n", "'use strict';\n\nfunction getUrl({ requestPath, url }) {\n if (requestPath) {\n return requestPath;\n }\n\n return typeof url === 'string' ? url : '/';\n}\n\nfunction getRequestContext(request) {\n const requestContext = {};\n requestContext.identity = {};\n const forwardedIp = request.headers['x-forwarded-for'];\n const clientIp = request.headers['client-ip'];\n const ip = forwardedIp ? forwardedIp : (clientIp ? clientIp : '');\n if (ip) {\n requestContext.identity.sourceIp = ip.split(':')[0];\n }\n return requestContext;\n}\n\nmodule.exports = function cleanupRequest(req, options) {\n const request = req || {};\n\n request.requestContext = getRequestContext(req);\n request.method = request.method || 'GET';\n request.url = getUrl(request);\n request.body = request.body || '';\n request.headers = request.headers || {};\n\n if (options.basePath) {\n const basePathIndex = request.url.indexOf(options.basePath);\n\n if (basePathIndex > -1) {\n request.url = request.url.substr(basePathIndex + options.basePath.length);\n }\n }\n\n return request;\n}", "'use strict';\n\nconst url = require('url');\n\nconst Request = require('../../request');\n\nfunction requestHeaders(request) {\n return Object.keys(request.headers).reduce((headers, key) => {\n headers[key.toLowerCase()] = request.headers[key];\n return headers;\n }, {});\n}\n\nfunction requestBody(request) {\n const type = typeof request.rawBody;\n\n if (Buffer.isBuffer(request.rawBody)) {\n return request.rawBody;\n } else if (type === 'string') {\n return Buffer.from(request.rawBody, 'utf8');\n } else if (type === 'object') {\n return Buffer.from(JSON.stringify(request.rawBody));\n }\n\n throw new Error(`Unexpected request.body type: ${typeof request.rawBody}`);\n}\n\nmodule.exports = (request) => {\n const method = request.method;\n const query = request.query;\n const headers = requestHeaders(request);\n const body = requestBody(request);\n\n const req = new Request({\n method,\n headers,\n body,\n url: url.format({\n pathname: request.url,\n query\n })\n });\n req.requestContext = request.requestContext;\n return req;\n}\n", "'use strict';\n\nconst BINARY_ENCODINGS = ['gzip', 'deflate', 'br'];\nconst BINARY_CONTENT_TYPES = (process.env.BINARY_CONTENT_TYPES || '').split(',');\n\nfunction isBinaryEncoding(headers) {\n const contentEncoding = headers['content-encoding'];\n\n if (typeof contentEncoding === 'string') {\n return contentEncoding.split(',').some(value =>\n BINARY_ENCODINGS.some(binaryEncoding => value.indexOf(binaryEncoding) !== -1)\n );\n }\n}\n\nfunction isBinaryContent(headers, options) {\n const contentTypes = [].concat(options.binary\n ? options.binary\n : BINARY_CONTENT_TYPES\n ).map(candidate =>\n new RegExp(`^${candidate.replace(/\\*/g, '.*')}$`)\n );\n\n const contentType = (headers['content-type'] || '').split(';')[0];\n return !!contentType && contentTypes.some(candidate => candidate.test(contentType));\n}\n\nmodule.exports = function isBinary(headers, options) {\n if (options.binary === false) {\n return false;\n }\n\n if (options.binary === true) {\n return true\n }\n\n if (typeof options.binary === 'function') {\n return options.binary(headers);\n }\n\n return isBinaryEncoding(headers) || isBinaryContent(headers, options);\n};\n", "'use strict';\n\nconst setCookieVariations = require('./set-cookie.json').variations;\n\nmodule.exports = function sanitizeHeaders(headers) {\n return Object.keys(headers).reduce((memo, key) => {\n const value = headers[key];\n\n if (Array.isArray(value)) {\n if (key.toLowerCase() === 'set-cookie') {\n value.forEach((cookie, i) => {\n memo[setCookieVariations[i]] = cookie;\n });\n } else {\n memo[key] = value.join(', ');\n }\n } else {\n memo[key] = value == null ? '' : value.toString();\n }\n\n return memo;\n }, {});\n};\n", "const isBinary = require('./is-binary');\nconst Response = require('../../response');\nconst sanitizeHeaders = require('./sanitize-headers');\n\nmodule.exports = (response, options) => {\n const { statusCode } = response;\n const headers = sanitizeHeaders(Response.headers(response));\n\n if (headers['transfer-encoding'] === 'chunked' || response.chunkedEncoding) {\n throw new Error('chunked encoding not supported');\n }\n\n const isBase64Encoded = isBinary(headers, options);\n const encoding = isBase64Encoded ? 'base64' : 'utf8';\n const body = Response.body(response).toString(encoding);\n\n return { status: statusCode, headers, isBase64Encoded, body };\n}", "const cleanupRequest = require('./clean-up-request');\nconst createRequest = require('./create-request');\nconst formatResponse = require('./format-response');\n\nmodule.exports = options => {\n return getResponse => async (context, req) => {\n const event = cleanupRequest(req, options);\n const request = createRequest(event, options);\n const response = await getResponse(request, context, event);\n context.log(response);\n return formatResponse(response, options);\n }\n};", "const aws = require('./aws');\nconst azure = require('./azure');\n\nconst providers = {\n aws,\n azure\n};\n\nmodule.exports = function getProvider(options) {\n const { provider = 'aws' } = options;\n\n if (provider in providers) {\n return providers[provider](options);\n }\n\n throw new Error(`Unsupported provider ${provider}`);\n};\n", "'use strict';\n\nconst finish = require('./lib/finish');\nconst getFramework = require('./lib/framework/get-framework');\nconst getProvider = require('./lib/provider/get-provider');\n\nconst defaultOptions = {\n requestId: 'x-request-id'\n};\n\nmodule.exports = function (app, opts) {\n const options = Object.assign({}, defaultOptions, opts);\n\n const framework = getFramework(app);\n const provider = getProvider(options);\n\n return provider(async (request, ...context) => {\n await finish(request, options.request, ...context);\n const response = await framework(request);\n await finish(response, options.response, ...context);\n return response;\n });\n};\n", "/*!\n * depd\n * Copyright(c) 2014-2018 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n/**\n * Module dependencies.\n */\n\nvar relative = require('path').relative\n\n/**\n * Module exports.\n */\n\nmodule.exports = depd\n\n/**\n * Get the path to base files on.\n */\n\nvar basePath = process.cwd()\n\n/**\n * Determine if namespace is contained in the string.\n */\n\nfunction containsNamespace (str, namespace) {\n var vals = str.split(/[ ,]+/)\n var ns = String(namespace).toLowerCase()\n\n for (var i = 0; i < vals.length; i++) {\n var val = vals[i]\n\n // namespace contained\n if (val && (val === '*' || val.toLowerCase() === ns)) {\n return true\n }\n }\n\n return false\n}\n\n/**\n * Convert a data descriptor to accessor descriptor.\n */\n\nfunction convertDataDescriptorToAccessor (obj, prop, message) {\n var descriptor = Object.getOwnPropertyDescriptor(obj, prop)\n var value = descriptor.value\n\n descriptor.get = function getter () { return value }\n\n if (descriptor.writable) {\n descriptor.set = function setter (val) { return (value = val) }\n }\n\n delete descriptor.value\n delete descriptor.writable\n\n Object.defineProperty(obj, prop, descriptor)\n\n return descriptor\n}\n\n/**\n * Create arguments string to keep arity.\n */\n\nfunction createArgumentsString (arity) {\n var str = ''\n\n for (var i = 0; i < arity; i++) {\n str += ', arg' + i\n }\n\n return str.substr(2)\n}\n\n/**\n * Create stack string from stack.\n */\n\nfunction createStackString (stack) {\n var str = this.name + ': ' + this.namespace\n\n if (this.message) {\n str += ' deprecated ' + this.message\n }\n\n for (var i = 0; i < stack.length; i++) {\n str += '\\n at ' + stack[i].toString()\n }\n\n return str\n}\n\n/**\n * Create deprecate for namespace in caller.\n */\n\nfunction depd (namespace) {\n if (!namespace) {\n throw new TypeError('argument namespace is required')\n }\n\n var stack = getStack()\n var site = callSiteLocation(stack[1])\n var file = site[0]\n\n function deprecate (message) {\n // call to self as log\n log.call(deprecate, message)\n }\n\n deprecate._file = file\n deprecate._ignored = isignored(namespace)\n deprecate._namespace = namespace\n deprecate._traced = istraced(namespace)\n deprecate._warned = Object.create(null)\n\n deprecate.function = wrapfunction\n deprecate.property = wrapproperty\n\n return deprecate\n}\n\n/**\n * Determine if event emitter has listeners of a given type.\n *\n * The way to do this check is done three different ways in Node.js >= 0.8\n * so this consolidates them into a minimal set using instance methods.\n *\n * @param {EventEmitter} emitter\n * @param {string} type\n * @returns {boolean}\n * @private\n */\n\nfunction eehaslisteners (emitter, type) {\n var count = typeof emitter.listenerCount !== 'function'\n ? emitter.listeners(type).length\n : emitter.listenerCount(type)\n\n return count > 0\n}\n\n/**\n * Determine if namespace is ignored.\n */\n\nfunction isignored (namespace) {\n if (process.noDeprecation) {\n // --no-deprecation support\n return true\n }\n\n var str = process.env.NO_DEPRECATION || ''\n\n // namespace ignored\n return containsNamespace(str, namespace)\n}\n\n/**\n * Determine if namespace is traced.\n */\n\nfunction istraced (namespace) {\n if (process.traceDeprecation) {\n // --trace-deprecation support\n return true\n }\n\n var str = process.env.TRACE_DEPRECATION || ''\n\n // namespace traced\n return containsNamespace(str, namespace)\n}\n\n/**\n * Display deprecation message.\n */\n\nfunction log (message, site) {\n var haslisteners = eehaslisteners(process, 'deprecation')\n\n // abort early if no destination\n if (!haslisteners && this._ignored) {\n return\n }\n\n var caller\n var callFile\n var callSite\n var depSite\n var i = 0\n var seen = false\n var stack = getStack()\n var file = this._file\n\n if (site) {\n // provided site\n depSite = site\n callSite = callSiteLocation(stack[1])\n callSite.name = depSite.name\n file = callSite[0]\n } else {\n // get call site\n i = 2\n depSite = callSiteLocation(stack[i])\n callSite = depSite\n }\n\n // get caller of deprecated thing in relation to file\n for (; i < stack.length; i++) {\n caller = callSiteLocation(stack[i])\n callFile = caller[0]\n\n if (callFile === file) {\n seen = true\n } else if (callFile === this._file) {\n file = this._file\n } else if (seen) {\n break\n }\n }\n\n var key = caller\n ? depSite.join(':') + '__' + caller.join(':')\n : undefined\n\n if (key !== undefined && key in this._warned) {\n // already warned\n return\n }\n\n this._warned[key] = true\n\n // generate automatic message from call site\n var msg = message\n if (!msg) {\n msg = callSite === depSite || !callSite.name\n ? defaultMessage(depSite)\n : defaultMessage(callSite)\n }\n\n // emit deprecation if listeners exist\n if (haslisteners) {\n var err = DeprecationError(this._namespace, msg, stack.slice(i))\n process.emit('deprecation', err)\n return\n }\n\n // format and write message\n var format = process.stderr.isTTY\n ? formatColor\n : formatPlain\n var output = format.call(this, msg, caller, stack.slice(i))\n process.stderr.write(output + '\\n', 'utf8')\n}\n\n/**\n * Get call site location as array.\n */\n\nfunction callSiteLocation (callSite) {\n var file = callSite.getFileName() || ''\n var line = callSite.getLineNumber()\n var colm = callSite.getColumnNumber()\n\n if (callSite.isEval()) {\n file = callSite.getEvalOrigin() + ', ' + file\n }\n\n var site = [file, line, colm]\n\n site.callSite = callSite\n site.name = callSite.getFunctionName()\n\n return site\n}\n\n/**\n * Generate a default message from the site.\n */\n\nfunction defaultMessage (site) {\n var callSite = site.callSite\n var funcName = site.name\n\n // make useful anonymous name\n if (!funcName) {\n funcName = ''\n }\n\n var context = callSite.getThis()\n var typeName = context && callSite.getTypeName()\n\n // ignore useless type name\n if (typeName === 'Object') {\n typeName = undefined\n }\n\n // make useful type name\n if (typeName === 'Function') {\n typeName = context.name || typeName\n }\n\n return typeName && callSite.getMethodName()\n ? typeName + '.' + funcName\n : funcName\n}\n\n/**\n * Format deprecation message without color.\n */\n\nfunction formatPlain (msg, caller, stack) {\n var timestamp = new Date().toUTCString()\n\n var formatted = timestamp +\n ' ' + this._namespace +\n ' deprecated ' + msg\n\n // add stack trace\n if (this._traced) {\n for (var i = 0; i < stack.length; i++) {\n formatted += '\\n at ' + stack[i].toString()\n }\n\n return formatted\n }\n\n if (caller) {\n formatted += ' at ' + formatLocation(caller)\n }\n\n return formatted\n}\n\n/**\n * Format deprecation message with color.\n */\n\nfunction formatColor (msg, caller, stack) {\n var formatted = '\\x1b[36;1m' + this._namespace + '\\x1b[22;39m' + // bold cyan\n ' \\x1b[33;1mdeprecated\\x1b[22;39m' + // bold yellow\n ' \\x1b[0m' + msg + '\\x1b[39m' // reset\n\n // add stack trace\n if (this._traced) {\n for (var i = 0; i < stack.length; i++) {\n formatted += '\\n \\x1b[36mat ' + stack[i].toString() + '\\x1b[39m' // cyan\n }\n\n return formatted\n }\n\n if (caller) {\n formatted += ' \\x1b[36m' + formatLocation(caller) + '\\x1b[39m' // cyan\n }\n\n return formatted\n}\n\n/**\n * Format call site location.\n */\n\nfunction formatLocation (callSite) {\n return relative(basePath, callSite[0]) +\n ':' + callSite[1] +\n ':' + callSite[2]\n}\n\n/**\n * Get the stack as array of call sites.\n */\n\nfunction getStack () {\n var limit = Error.stackTraceLimit\n var obj = {}\n var prep = Error.prepareStackTrace\n\n Error.prepareStackTrace = prepareObjectStackTrace\n Error.stackTraceLimit = Math.max(10, limit)\n\n // capture the stack\n Error.captureStackTrace(obj)\n\n // slice this function off the top\n var stack = obj.stack.slice(1)\n\n Error.prepareStackTrace = prep\n Error.stackTraceLimit = limit\n\n return stack\n}\n\n/**\n * Capture call site stack from v8.\n */\n\nfunction prepareObjectStackTrace (obj, stack) {\n return stack\n}\n\n/**\n * Return a wrapped function in a deprecation message.\n */\n\nfunction wrapfunction (fn, message) {\n if (typeof fn !== 'function') {\n throw new TypeError('argument fn must be a function')\n }\n\n var args = createArgumentsString(fn.length)\n var stack = getStack()\n var site = callSiteLocation(stack[1])\n\n site.name = fn.name\n\n // eslint-disable-next-line no-new-func\n var deprecatedfn = new Function('fn', 'log', 'deprecate', 'message', 'site',\n '\"use strict\"\\n' +\n 'return function (' + args + ') {' +\n 'log.call(deprecate, message, site)\\n' +\n 'return fn.apply(this, arguments)\\n' +\n '}')(fn, log, this, message, site)\n\n return deprecatedfn\n}\n\n/**\n * Wrap property in a deprecation message.\n */\n\nfunction wrapproperty (obj, prop, message) {\n if (!obj || (typeof obj !== 'object' && typeof obj !== 'function')) {\n throw new TypeError('argument obj must be object')\n }\n\n var descriptor = Object.getOwnPropertyDescriptor(obj, prop)\n\n if (!descriptor) {\n throw new TypeError('must call property on owner object')\n }\n\n if (!descriptor.configurable) {\n throw new TypeError('property must be configurable')\n }\n\n var deprecate = this\n var stack = getStack()\n var site = callSiteLocation(stack[1])\n\n // set site name\n site.name = prop\n\n // convert data descriptor\n if ('value' in descriptor) {\n descriptor = convertDataDescriptorToAccessor(obj, prop, message)\n }\n\n var get = descriptor.get\n var set = descriptor.set\n\n // wrap getter\n if (typeof get === 'function') {\n descriptor.get = function getter () {\n log.call(deprecate, message, site)\n return get.apply(this, arguments)\n }\n }\n\n // wrap setter\n if (typeof set === 'function') {\n descriptor.set = function setter () {\n log.call(deprecate, message, site)\n return set.apply(this, arguments)\n }\n }\n\n Object.defineProperty(obj, prop, descriptor)\n}\n\n/**\n * Create DeprecationError for deprecation\n */\n\nfunction DeprecationError (namespace, message, stack) {\n var error = new Error()\n var stackString\n\n Object.defineProperty(error, 'constructor', {\n value: DeprecationError\n })\n\n Object.defineProperty(error, 'message', {\n configurable: true,\n enumerable: false,\n value: message,\n writable: true\n })\n\n Object.defineProperty(error, 'name', {\n enumerable: false,\n configurable: true,\n value: 'DeprecationError',\n writable: true\n })\n\n Object.defineProperty(error, 'namespace', {\n configurable: true,\n enumerable: false,\n value: namespace,\n writable: true\n })\n\n Object.defineProperty(error, 'stack', {\n configurable: true,\n enumerable: false,\n get: function () {\n if (stackString !== undefined) {\n return stackString\n }\n\n // prepare stack trace\n return (stackString = createStackString.call(this, stack))\n },\n set: function setter (val) {\n stackString = val\n }\n })\n\n return error\n}\n", "/*!\n * bytes\n * Copyright(c) 2012-2014 TJ Holowaychuk\n * Copyright(c) 2015 Jed Watson\n * MIT Licensed\n */\n\n'use strict';\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = bytes;\nmodule.exports.format = format;\nmodule.exports.parse = parse;\n\n/**\n * Module variables.\n * @private\n */\n\nvar formatThousandsRegExp = /\\B(?=(\\d{3})+(?!\\d))/g;\n\nvar formatDecimalsRegExp = /(?:\\.0*|(\\.[^0]+)0+)$/;\n\nvar map = {\n b: 1,\n kb: 1 << 10,\n mb: 1 << 20,\n gb: 1 << 30,\n tb: Math.pow(1024, 4),\n pb: Math.pow(1024, 5),\n};\n\nvar parseRegExp = /^((-|\\+)?(\\d+(?:\\.\\d+)?)) *(kb|mb|gb|tb|pb)$/i;\n\n/**\n * Convert the given value in bytes into a string or parse to string to an integer in bytes.\n *\n * @param {string|number} value\n * @param {{\n * case: [string],\n * decimalPlaces: [number]\n * fixedDecimals: [boolean]\n * thousandsSeparator: [string]\n * unitSeparator: [string]\n * }} [options] bytes options.\n *\n * @returns {string|number|null}\n */\n\nfunction bytes(value, options) {\n if (typeof value === 'string') {\n return parse(value);\n }\n\n if (typeof value === 'number') {\n return format(value, options);\n }\n\n return null;\n}\n\n/**\n * Format the given value in bytes into a string.\n *\n * If the value is negative, it is kept as such. If it is a float,\n * it is rounded.\n *\n * @param {number} value\n * @param {object} [options]\n * @param {number} [options.decimalPlaces=2]\n * @param {number} [options.fixedDecimals=false]\n * @param {string} [options.thousandsSeparator=]\n * @param {string} [options.unit=]\n * @param {string} [options.unitSeparator=]\n *\n * @returns {string|null}\n * @public\n */\n\nfunction format(value, options) {\n if (!Number.isFinite(value)) {\n return null;\n }\n\n var mag = Math.abs(value);\n var thousandsSeparator = (options && options.thousandsSeparator) || '';\n var unitSeparator = (options && options.unitSeparator) || '';\n var decimalPlaces = (options && options.decimalPlaces !== undefined) ? options.decimalPlaces : 2;\n var fixedDecimals = Boolean(options && options.fixedDecimals);\n var unit = (options && options.unit) || '';\n\n if (!unit || !map[unit.toLowerCase()]) {\n if (mag >= map.pb) {\n unit = 'PB';\n } else if (mag >= map.tb) {\n unit = 'TB';\n } else if (mag >= map.gb) {\n unit = 'GB';\n } else if (mag >= map.mb) {\n unit = 'MB';\n } else if (mag >= map.kb) {\n unit = 'KB';\n } else {\n unit = 'B';\n }\n }\n\n var val = value / map[unit.toLowerCase()];\n var str = val.toFixed(decimalPlaces);\n\n if (!fixedDecimals) {\n str = str.replace(formatDecimalsRegExp, '$1');\n }\n\n if (thousandsSeparator) {\n str = str.split('.').map(function (s, i) {\n return i === 0\n ? s.replace(formatThousandsRegExp, thousandsSeparator)\n : s\n }).join('.');\n }\n\n return str + unitSeparator + unit;\n}\n\n/**\n * Parse the string value into an integer in bytes.\n *\n * If no unit is given, it is assumed the value is in bytes.\n *\n * @param {number|string} val\n *\n * @returns {number|null}\n * @public\n */\n\nfunction parse(val) {\n if (typeof val === 'number' && !isNaN(val)) {\n return val;\n }\n\n if (typeof val !== 'string') {\n return null;\n }\n\n // Test if the string passed is valid\n var results = parseRegExp.exec(val);\n var floatValue;\n var unit = 'b';\n\n if (!results) {\n // Nothing could be extracted from the given string\n floatValue = parseInt(val, 10);\n unit = 'b'\n } else {\n // Retrieve the value and the unit\n floatValue = parseFloat(results[1]);\n unit = results[4].toLowerCase();\n }\n\n if (isNaN(floatValue)) {\n return null;\n }\n\n return Math.floor(map[unit] * floatValue);\n}\n", "/*!\n * content-type\n * Copyright(c) 2015 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict'\n\n/**\n * RegExp to match *( \";\" parameter ) in RFC 7231 sec 3.1.1.1\n *\n * parameter = token \"=\" ( token / quoted-string )\n * token = 1*tchar\n * tchar = \"!\" / \"#\" / \"$\" / \"%\" / \"&\" / \"'\" / \"*\"\n * / \"+\" / \"-\" / \".\" / \"^\" / \"_\" / \"`\" / \"|\" / \"~\"\n * / DIGIT / ALPHA\n * ; any VCHAR, except delimiters\n * quoted-string = DQUOTE *( qdtext / quoted-pair ) DQUOTE\n * qdtext = HTAB / SP / %x21 / %x23-5B / %x5D-7E / obs-text\n * obs-text = %x80-FF\n * quoted-pair = \"\\\" ( HTAB / SP / VCHAR / obs-text )\n */\nvar PARAM_REGEXP = /; *([!#$%&'*+.^_`|~0-9A-Za-z-]+) *= *(\"(?:[\\u000b\\u0020\\u0021\\u0023-\\u005b\\u005d-\\u007e\\u0080-\\u00ff]|\\\\[\\u000b\\u0020-\\u00ff])*\"|[!#$%&'*+.^_`|~0-9A-Za-z-]+) */g // eslint-disable-line no-control-regex\nvar TEXT_REGEXP = /^[\\u000b\\u0020-\\u007e\\u0080-\\u00ff]+$/ // eslint-disable-line no-control-regex\nvar TOKEN_REGEXP = /^[!#$%&'*+.^_`|~0-9A-Za-z-]+$/\n\n/**\n * RegExp to match quoted-pair in RFC 7230 sec 3.2.6\n *\n * quoted-pair = \"\\\" ( HTAB / SP / VCHAR / obs-text )\n * obs-text = %x80-FF\n */\nvar QESC_REGEXP = /\\\\([\\u000b\\u0020-\\u00ff])/g // eslint-disable-line no-control-regex\n\n/**\n * RegExp to match chars that must be quoted-pair in RFC 7230 sec 3.2.6\n */\nvar QUOTE_REGEXP = /([\\\\\"])/g\n\n/**\n * RegExp to match type in RFC 7231 sec 3.1.1.1\n *\n * media-type = type \"/\" subtype\n * type = token\n * subtype = token\n */\nvar TYPE_REGEXP = /^[!#$%&'*+.^_`|~0-9A-Za-z-]+\\/[!#$%&'*+.^_`|~0-9A-Za-z-]+$/\n\n/**\n * Module exports.\n * @public\n */\n\nexports.format = format\nexports.parse = parse\n\n/**\n * Format object to media type.\n *\n * @param {object} obj\n * @return {string}\n * @public\n */\n\nfunction format (obj) {\n if (!obj || typeof obj !== 'object') {\n throw new TypeError('argument obj is required')\n }\n\n var parameters = obj.parameters\n var type = obj.type\n\n if (!type || !TYPE_REGEXP.test(type)) {\n throw new TypeError('invalid type')\n }\n\n var string = type\n\n // append parameters\n if (parameters && typeof parameters === 'object') {\n var param\n var params = Object.keys(parameters).sort()\n\n for (var i = 0; i < params.length; i++) {\n param = params[i]\n\n if (!TOKEN_REGEXP.test(param)) {\n throw new TypeError('invalid parameter name')\n }\n\n string += '; ' + param + '=' + qstring(parameters[param])\n }\n }\n\n return string\n}\n\n/**\n * Parse media type to object.\n *\n * @param {string|object} string\n * @return {Object}\n * @public\n */\n\nfunction parse (string) {\n if (!string) {\n throw new TypeError('argument string is required')\n }\n\n // support req/res-like objects as argument\n var header = typeof string === 'object'\n ? getcontenttype(string)\n : string\n\n if (typeof header !== 'string') {\n throw new TypeError('argument string is required to be a string')\n }\n\n var index = header.indexOf(';')\n var type = index !== -1\n ? header.slice(0, index).trim()\n : header.trim()\n\n if (!TYPE_REGEXP.test(type)) {\n throw new TypeError('invalid media type')\n }\n\n var obj = new ContentType(type.toLowerCase())\n\n // parse parameters\n if (index !== -1) {\n var key\n var match\n var value\n\n PARAM_REGEXP.lastIndex = index\n\n while ((match = PARAM_REGEXP.exec(header))) {\n if (match.index !== index) {\n throw new TypeError('invalid parameter format')\n }\n\n index += match[0].length\n key = match[1].toLowerCase()\n value = match[2]\n\n if (value.charCodeAt(0) === 0x22 /* \" */) {\n // remove quotes\n value = value.slice(1, -1)\n\n // remove escapes\n if (value.indexOf('\\\\') !== -1) {\n value = value.replace(QESC_REGEXP, '$1')\n }\n }\n\n obj.parameters[key] = value\n }\n\n if (index !== header.length) {\n throw new TypeError('invalid parameter format')\n }\n }\n\n return obj\n}\n\n/**\n * Get content-type from req/res objects.\n *\n * @param {object}\n * @return {Object}\n * @private\n */\n\nfunction getcontenttype (obj) {\n var header\n\n if (typeof obj.getHeader === 'function') {\n // res-like\n header = obj.getHeader('content-type')\n } else if (typeof obj.headers === 'object') {\n // req-like\n header = obj.headers && obj.headers['content-type']\n }\n\n if (typeof header !== 'string') {\n throw new TypeError('content-type header is missing from object')\n }\n\n return header\n}\n\n/**\n * Quote a string if necessary.\n *\n * @param {string} val\n * @return {string}\n * @private\n */\n\nfunction qstring (val) {\n var str = String(val)\n\n // no need to quote tokens\n if (TOKEN_REGEXP.test(str)) {\n return str\n }\n\n if (str.length > 0 && !TEXT_REGEXP.test(str)) {\n throw new TypeError('invalid parameter value')\n }\n\n return '\"' + str.replace(QUOTE_REGEXP, '\\\\$1') + '\"'\n}\n\n/**\n * Class to represent a content type.\n * @private\n */\nfunction ContentType (type) {\n this.parameters = Object.create(null)\n this.type = type\n}\n", "'use strict'\n/* eslint no-proto: 0 */\nmodule.exports = Object.setPrototypeOf || ({ __proto__: [] } instanceof Array ? setProtoOf : mixinProperties)\n\nfunction setProtoOf (obj, proto) {\n obj.__proto__ = proto\n return obj\n}\n\nfunction mixinProperties (obj, proto) {\n for (var prop in proto) {\n if (!Object.prototype.hasOwnProperty.call(obj, prop)) {\n obj[prop] = proto[prop]\n }\n }\n return obj\n}\n", "/*!\n * statuses\n * Copyright(c) 2014 Jonathan Ong\n * Copyright(c) 2016 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict'\n\n/**\n * Module dependencies.\n * @private\n */\n\nvar codes = require('./codes.json')\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = status\n\n// status code to message map\nstatus.message = codes\n\n// status message (lower-case) to code map\nstatus.code = createMessageToStatusCodeMap(codes)\n\n// array of status codes\nstatus.codes = createStatusCodeList(codes)\n\n// status codes for redirects\nstatus.redirect = {\n 300: true,\n 301: true,\n 302: true,\n 303: true,\n 305: true,\n 307: true,\n 308: true\n}\n\n// status codes for empty bodies\nstatus.empty = {\n 204: true,\n 205: true,\n 304: true\n}\n\n// status codes for when you should retry the request\nstatus.retry = {\n 502: true,\n 503: true,\n 504: true\n}\n\n/**\n * Create a map of message to status code.\n * @private\n */\n\nfunction createMessageToStatusCodeMap (codes) {\n var map = {}\n\n Object.keys(codes).forEach(function forEachCode (code) {\n var message = codes[code]\n var status = Number(code)\n\n // populate map\n map[message.toLowerCase()] = status\n })\n\n return map\n}\n\n/**\n * Create a list of all status codes.\n * @private\n */\n\nfunction createStatusCodeList (codes) {\n return Object.keys(codes).map(function mapCode (code) {\n return Number(code)\n })\n}\n\n/**\n * Get the status code for given message.\n * @private\n */\n\nfunction getStatusCode (message) {\n var msg = message.toLowerCase()\n\n if (!Object.prototype.hasOwnProperty.call(status.code, msg)) {\n throw new Error('invalid status message: \"' + message + '\"')\n }\n\n return status.code[msg]\n}\n\n/**\n * Get the status message for given code.\n * @private\n */\n\nfunction getStatusMessage (code) {\n if (!Object.prototype.hasOwnProperty.call(status.message, code)) {\n throw new Error('invalid status code: ' + code)\n }\n\n return status.message[code]\n}\n\n/**\n * Get the status code.\n *\n * Given a number, this will throw if it is not a known status\n * code, otherwise the code will be returned. Given a string,\n * the string will be parsed for a number and return the code\n * if valid, otherwise will lookup the code assuming this is\n * the status message.\n *\n * @param {string|number} code\n * @returns {number}\n * @public\n */\n\nfunction status (code) {\n if (typeof code === 'number') {\n return getStatusMessage(code)\n }\n\n if (typeof code !== 'string') {\n throw new TypeError('code must be a number or string')\n }\n\n // '403'\n var n = parseInt(code, 10)\n if (!isNaN(n)) {\n return getStatusMessage(n)\n }\n\n return getStatusCode(code)\n}\n", "if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n })\n }\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n }\n}\n", "try {\n var util = require('util');\n /* istanbul ignore next */\n if (typeof util.inherits !== 'function') throw '';\n module.exports = util.inherits;\n} catch (e) {\n /* istanbul ignore next */\n module.exports = require('./inherits_browser.js');\n}\n", "/*!\n * toidentifier\n * Copyright(c) 2016 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict'\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = toIdentifier\n\n/**\n * Trasform the given string into a JavaScript identifier\n *\n * @param {string} str\n * @returns {string}\n * @public\n */\n\nfunction toIdentifier (str) {\n return str\n .split(' ')\n .map(function (token) {\n return token.slice(0, 1).toUpperCase() + token.slice(1)\n })\n .join('')\n .replace(/[^ _0-9a-z]/gi, '')\n}\n", "/*!\n * http-errors\n * Copyright(c) 2014 Jonathan Ong\n * Copyright(c) 2016 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict'\n\n/**\n * Module dependencies.\n * @private\n */\n\nvar deprecate = require('depd')('http-errors')\nvar setPrototypeOf = require('setprototypeof')\nvar statuses = require('statuses')\nvar inherits = require('inherits')\nvar toIdentifier = require('toidentifier')\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = createError\nmodule.exports.HttpError = createHttpErrorConstructor()\nmodule.exports.isHttpError = createIsHttpErrorFunction(module.exports.HttpError)\n\n// Populate exports for all constructors\npopulateConstructorExports(module.exports, statuses.codes, module.exports.HttpError)\n\n/**\n * Get the code class of a status code.\n * @private\n */\n\nfunction codeClass (status) {\n return Number(String(status).charAt(0) + '00')\n}\n\n/**\n * Create a new HTTP Error.\n *\n * @returns {Error}\n * @public\n */\n\nfunction createError () {\n // so much arity going on ~_~\n var err\n var msg\n var status = 500\n var props = {}\n for (var i = 0; i < arguments.length; i++) {\n var arg = arguments[i]\n var type = typeof arg\n if (type === 'object' && arg instanceof Error) {\n err = arg\n status = err.status || err.statusCode || status\n } else if (type === 'number' && i === 0) {\n status = arg\n } else if (type === 'string') {\n msg = arg\n } else if (type === 'object') {\n props = arg\n } else {\n throw new TypeError('argument #' + (i + 1) + ' unsupported type ' + type)\n }\n }\n\n if (typeof status === 'number' && (status < 400 || status >= 600)) {\n deprecate('non-error status code; use only 4xx or 5xx status codes')\n }\n\n if (typeof status !== 'number' ||\n (!statuses.message[status] && (status < 400 || status >= 600))) {\n status = 500\n }\n\n // constructor\n var HttpError = createError[status] || createError[codeClass(status)]\n\n if (!err) {\n // create error\n err = HttpError\n ? new HttpError(msg)\n : new Error(msg || statuses.message[status])\n Error.captureStackTrace(err, createError)\n }\n\n if (!HttpError || !(err instanceof HttpError) || err.status !== status) {\n // add properties to generic error\n err.expose = status < 500\n err.status = err.statusCode = status\n }\n\n for (var key in props) {\n if (key !== 'status' && key !== 'statusCode') {\n err[key] = props[key]\n }\n }\n\n return err\n}\n\n/**\n * Create HTTP error abstract base class.\n * @private\n */\n\nfunction createHttpErrorConstructor () {\n function HttpError () {\n throw new TypeError('cannot construct abstract class')\n }\n\n inherits(HttpError, Error)\n\n return HttpError\n}\n\n/**\n * Create a constructor for a client error.\n * @private\n */\n\nfunction createClientErrorConstructor (HttpError, name, code) {\n var className = toClassName(name)\n\n function ClientError (message) {\n // create the error object\n var msg = message != null ? message : statuses.message[code]\n var err = new Error(msg)\n\n // capture a stack trace to the construction point\n Error.captureStackTrace(err, ClientError)\n\n // adjust the [[Prototype]]\n setPrototypeOf(err, ClientError.prototype)\n\n // redefine the error message\n Object.defineProperty(err, 'message', {\n enumerable: true,\n configurable: true,\n value: msg,\n writable: true\n })\n\n // redefine the error name\n Object.defineProperty(err, 'name', {\n enumerable: false,\n configurable: true,\n value: className,\n writable: true\n })\n\n return err\n }\n\n inherits(ClientError, HttpError)\n nameFunc(ClientError, className)\n\n ClientError.prototype.status = code\n ClientError.prototype.statusCode = code\n ClientError.prototype.expose = true\n\n return ClientError\n}\n\n/**\n * Create function to test is a value is a HttpError.\n * @private\n */\n\nfunction createIsHttpErrorFunction (HttpError) {\n return function isHttpError (val) {\n if (!val || typeof val !== 'object') {\n return false\n }\n\n if (val instanceof HttpError) {\n return true\n }\n\n return val instanceof Error &&\n typeof val.expose === 'boolean' &&\n typeof val.statusCode === 'number' && val.status === val.statusCode\n }\n}\n\n/**\n * Create a constructor for a server error.\n * @private\n */\n\nfunction createServerErrorConstructor (HttpError, name, code) {\n var className = toClassName(name)\n\n function ServerError (message) {\n // create the error object\n var msg = message != null ? message : statuses.message[code]\n var err = new Error(msg)\n\n // capture a stack trace to the construction point\n Error.captureStackTrace(err, ServerError)\n\n // adjust the [[Prototype]]\n setPrototypeOf(err, ServerError.prototype)\n\n // redefine the error message\n Object.defineProperty(err, 'message', {\n enumerable: true,\n configurable: true,\n value: msg,\n writable: true\n })\n\n // redefine the error name\n Object.defineProperty(err, 'name', {\n enumerable: false,\n configurable: true,\n value: className,\n writable: true\n })\n\n return err\n }\n\n inherits(ServerError, HttpError)\n nameFunc(ServerError, className)\n\n ServerError.prototype.status = code\n ServerError.prototype.statusCode = code\n ServerError.prototype.expose = false\n\n return ServerError\n}\n\n/**\n * Set the name of a function, if possible.\n * @private\n */\n\nfunction nameFunc (func, name) {\n var desc = Object.getOwnPropertyDescriptor(func, 'name')\n\n if (desc && desc.configurable) {\n desc.value = name\n Object.defineProperty(func, 'name', desc)\n }\n}\n\n/**\n * Populate the exports object with constructors for every error class.\n * @private\n */\n\nfunction populateConstructorExports (exports, codes, HttpError) {\n codes.forEach(function forEachCode (code) {\n var CodeError\n var name = toIdentifier(statuses.message[code])\n\n switch (codeClass(code)) {\n case 400:\n CodeError = createClientErrorConstructor(HttpError, name, code)\n break\n case 500:\n CodeError = createServerErrorConstructor(HttpError, name, code)\n break\n }\n\n if (CodeError) {\n // export the constructor\n exports[code] = CodeError\n exports[name] = CodeError\n }\n })\n}\n\n/**\n * Get a class name from a name identifier.\n * @private\n */\n\nfunction toClassName (name) {\n return name.substr(-5) !== 'Error'\n ? name + 'Error'\n : name\n}\n", "/**\n * Helpers.\n */\n\nvar s = 1000;\nvar m = s * 60;\nvar h = m * 60;\nvar d = h * 24;\nvar y = d * 365.25;\n\n/**\n * Parse or format the given `val`.\n *\n * Options:\n *\n * - `long` verbose formatting [false]\n *\n * @param {String|Number} val\n * @param {Object} [options]\n * @throws {Error} throw an error if val is not a non-empty string or a number\n * @return {String|Number}\n * @api public\n */\n\nmodule.exports = function(val, options) {\n options = options || {};\n var type = typeof val;\n if (type === 'string' && val.length > 0) {\n return parse(val);\n } else if (type === 'number' && isNaN(val) === false) {\n return options.long ? fmtLong(val) : fmtShort(val);\n }\n throw new Error(\n 'val is not a non-empty string or a valid number. val=' +\n JSON.stringify(val)\n );\n};\n\n/**\n * Parse the given `str` and return milliseconds.\n *\n * @param {String} str\n * @return {Number}\n * @api private\n */\n\nfunction parse(str) {\n str = String(str);\n if (str.length > 100) {\n return;\n }\n var match = /^((?:\\d+)?\\.?\\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|years?|yrs?|y)?$/i.exec(\n str\n );\n if (!match) {\n return;\n }\n var n = parseFloat(match[1]);\n var type = (match[2] || 'ms').toLowerCase();\n switch (type) {\n case 'years':\n case 'year':\n case 'yrs':\n case 'yr':\n case 'y':\n return n * y;\n case 'days':\n case 'day':\n case 'd':\n return n * d;\n case 'hours':\n case 'hour':\n case 'hrs':\n case 'hr':\n case 'h':\n return n * h;\n case 'minutes':\n case 'minute':\n case 'mins':\n case 'min':\n case 'm':\n return n * m;\n case 'seconds':\n case 'second':\n case 'secs':\n case 'sec':\n case 's':\n return n * s;\n case 'milliseconds':\n case 'millisecond':\n case 'msecs':\n case 'msec':\n case 'ms':\n return n;\n default:\n return undefined;\n }\n}\n\n/**\n * Short format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtShort(ms) {\n if (ms >= d) {\n return Math.round(ms / d) + 'd';\n }\n if (ms >= h) {\n return Math.round(ms / h) + 'h';\n }\n if (ms >= m) {\n return Math.round(ms / m) + 'm';\n }\n if (ms >= s) {\n return Math.round(ms / s) + 's';\n }\n return ms + 'ms';\n}\n\n/**\n * Long format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtLong(ms) {\n return plural(ms, d, 'day') ||\n plural(ms, h, 'hour') ||\n plural(ms, m, 'minute') ||\n plural(ms, s, 'second') ||\n ms + ' ms';\n}\n\n/**\n * Pluralization helper.\n */\n\nfunction plural(ms, n, name) {\n if (ms < n) {\n return;\n }\n if (ms < n * 1.5) {\n return Math.floor(ms / n) + ' ' + name;\n }\n return Math.ceil(ms / n) + ' ' + name + 's';\n}\n", "\n/**\n * This is the common logic for both the Node.js and web browser\n * implementations of `debug()`.\n *\n * Expose `debug()` as the module.\n */\n\nexports = module.exports = createDebug.debug = createDebug['default'] = createDebug;\nexports.coerce = coerce;\nexports.disable = disable;\nexports.enable = enable;\nexports.enabled = enabled;\nexports.humanize = require('ms');\n\n/**\n * The currently active debug mode names, and names to skip.\n */\n\nexports.names = [];\nexports.skips = [];\n\n/**\n * Map of special \"%n\" handling functions, for the debug \"format\" argument.\n *\n * Valid key names are a single, lower or upper-case letter, i.e. \"n\" and \"N\".\n */\n\nexports.formatters = {};\n\n/**\n * Previous log timestamp.\n */\n\nvar prevTime;\n\n/**\n * Select a color.\n * @param {String} namespace\n * @return {Number}\n * @api private\n */\n\nfunction selectColor(namespace) {\n var hash = 0, i;\n\n for (i in namespace) {\n hash = ((hash << 5) - hash) + namespace.charCodeAt(i);\n hash |= 0; // Convert to 32bit integer\n }\n\n return exports.colors[Math.abs(hash) % exports.colors.length];\n}\n\n/**\n * Create a debugger with the given `namespace`.\n *\n * @param {String} namespace\n * @return {Function}\n * @api public\n */\n\nfunction createDebug(namespace) {\n\n function debug() {\n // disabled?\n if (!debug.enabled) return;\n\n var self = debug;\n\n // set `diff` timestamp\n var curr = +new Date();\n var ms = curr - (prevTime || curr);\n self.diff = ms;\n self.prev = prevTime;\n self.curr = curr;\n prevTime = curr;\n\n // turn the `arguments` into a proper Array\n var args = new Array(arguments.length);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i];\n }\n\n args[0] = exports.coerce(args[0]);\n\n if ('string' !== typeof args[0]) {\n // anything else let's inspect with %O\n args.unshift('%O');\n }\n\n // apply any `formatters` transformations\n var index = 0;\n args[0] = args[0].replace(/%([a-zA-Z%])/g, function(match, format) {\n // if we encounter an escaped % then don't increase the array index\n if (match === '%%') return match;\n index++;\n var formatter = exports.formatters[format];\n if ('function' === typeof formatter) {\n var val = args[index];\n match = formatter.call(self, val);\n\n // now we need to remove `args[index]` since it's inlined in the `format`\n args.splice(index, 1);\n index--;\n }\n return match;\n });\n\n // apply env-specific formatting (colors, etc.)\n exports.formatArgs.call(self, args);\n\n var logFn = debug.log || exports.log || console.log.bind(console);\n logFn.apply(self, args);\n }\n\n debug.namespace = namespace;\n debug.enabled = exports.enabled(namespace);\n debug.useColors = exports.useColors();\n debug.color = selectColor(namespace);\n\n // env-specific initialization logic for debug instances\n if ('function' === typeof exports.init) {\n exports.init(debug);\n }\n\n return debug;\n}\n\n/**\n * Enables a debug mode by namespaces. This can include modes\n * separated by a colon and wildcards.\n *\n * @param {String} namespaces\n * @api public\n */\n\nfunction enable(namespaces) {\n exports.save(namespaces);\n\n exports.names = [];\n exports.skips = [];\n\n var split = (typeof namespaces === 'string' ? namespaces : '').split(/[\\s,]+/);\n var len = split.length;\n\n for (var i = 0; i < len; i++) {\n if (!split[i]) continue; // ignore empty strings\n namespaces = split[i].replace(/\\*/g, '.*?');\n if (namespaces[0] === '-') {\n exports.skips.push(new RegExp('^' + namespaces.substr(1) + '$'));\n } else {\n exports.names.push(new RegExp('^' + namespaces + '$'));\n }\n }\n}\n\n/**\n * Disable debug output.\n *\n * @api public\n */\n\nfunction disable() {\n exports.enable('');\n}\n\n/**\n * Returns true if the given mode name is enabled, false otherwise.\n *\n * @param {String} name\n * @return {Boolean}\n * @api public\n */\n\nfunction enabled(name) {\n var i, len;\n for (i = 0, len = exports.skips.length; i < len; i++) {\n if (exports.skips[i].test(name)) {\n return false;\n }\n }\n for (i = 0, len = exports.names.length; i < len; i++) {\n if (exports.names[i].test(name)) {\n return true;\n }\n }\n return false;\n}\n\n/**\n * Coerce `val`.\n *\n * @param {Mixed} val\n * @return {Mixed}\n * @api private\n */\n\nfunction coerce(val) {\n if (val instanceof Error) return val.stack || val.message;\n return val;\n}\n", "/**\n * This is the web browser implementation of `debug()`.\n *\n * Expose `debug()` as the module.\n */\n\nexports = module.exports = require('./debug');\nexports.log = log;\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.storage = 'undefined' != typeof chrome\n && 'undefined' != typeof chrome.storage\n ? chrome.storage.local\n : localstorage();\n\n/**\n * Colors.\n */\n\nexports.colors = [\n 'lightseagreen',\n 'forestgreen',\n 'goldenrod',\n 'dodgerblue',\n 'darkorchid',\n 'crimson'\n];\n\n/**\n * Currently only WebKit-based Web Inspectors, Firefox >= v31,\n * and the Firebug extension (any Firefox version) are known\n * to support \"%c\" CSS customizations.\n *\n * TODO: add a `localStorage` variable to explicitly enable/disable colors\n */\n\nfunction useColors() {\n // NB: In an Electron preload script, document will be defined but not fully\n // initialized. Since we know we're in Chrome, we'll just detect this case\n // explicitly\n if (typeof window !== 'undefined' && window.process && window.process.type === 'renderer') {\n return true;\n }\n\n // is webkit? http://stackoverflow.com/a/16459606/376773\n // document is undefined in react-native: https://github.com/facebook/react-native/pull/1632\n return (typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) ||\n // is firebug? http://stackoverflow.com/a/398120/376773\n (typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) ||\n // is firefox >= v31?\n // https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages\n (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\\/(\\d+)/) && parseInt(RegExp.$1, 10) >= 31) ||\n // double check webkit in userAgent just in case we are in a worker\n (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\\/(\\d+)/));\n}\n\n/**\n * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default.\n */\n\nexports.formatters.j = function(v) {\n try {\n return JSON.stringify(v);\n } catch (err) {\n return '[UnexpectedJSONParseError]: ' + err.message;\n }\n};\n\n\n/**\n * Colorize log arguments if enabled.\n *\n * @api public\n */\n\nfunction formatArgs(args) {\n var useColors = this.useColors;\n\n args[0] = (useColors ? '%c' : '')\n + this.namespace\n + (useColors ? ' %c' : ' ')\n + args[0]\n + (useColors ? '%c ' : ' ')\n + '+' + exports.humanize(this.diff);\n\n if (!useColors) return;\n\n var c = 'color: ' + this.color;\n args.splice(1, 0, c, 'color: inherit')\n\n // the final \"%c\" is somewhat tricky, because there could be other\n // arguments passed either before or after the %c, so we need to\n // figure out the correct index to insert the CSS into\n var index = 0;\n var lastC = 0;\n args[0].replace(/%[a-zA-Z%]/g, function(match) {\n if ('%%' === match) return;\n index++;\n if ('%c' === match) {\n // we only are interested in the *last* %c\n // (the user may have provided their own)\n lastC = index;\n }\n });\n\n args.splice(lastC, 0, c);\n}\n\n/**\n * Invokes `console.log()` when available.\n * No-op when `console.log` is not a \"function\".\n *\n * @api public\n */\n\nfunction log() {\n // this hackery is required for IE8/9, where\n // the `console.log` function doesn't have 'apply'\n return 'object' === typeof console\n && console.log\n && Function.prototype.apply.call(console.log, console, arguments);\n}\n\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\n\nfunction save(namespaces) {\n try {\n if (null == namespaces) {\n exports.storage.removeItem('debug');\n } else {\n exports.storage.debug = namespaces;\n }\n } catch(e) {}\n}\n\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\n\nfunction load() {\n var r;\n try {\n r = exports.storage.debug;\n } catch(e) {}\n\n // If debug isn't set in LS, and we're in Electron, try to load $DEBUG\n if (!r && typeof process !== 'undefined' && 'env' in process) {\n r = process.env.DEBUG;\n }\n\n return r;\n}\n\n/**\n * Enable namespaces listed in `localStorage.debug` initially.\n */\n\nexports.enable(load());\n\n/**\n * Localstorage attempts to return the localstorage.\n *\n * This is necessary because safari throws\n * when a user disables cookies/localstorage\n * and you attempt to access it.\n *\n * @return {LocalStorage}\n * @api private\n */\n\nfunction localstorage() {\n try {\n return window.localStorage;\n } catch (e) {}\n}\n", "/**\n * Module dependencies.\n */\n\nvar tty = require('tty');\nvar util = require('util');\n\n/**\n * This is the Node.js implementation of `debug()`.\n *\n * Expose `debug()` as the module.\n */\n\nexports = module.exports = require('./debug');\nexports.init = init;\nexports.log = log;\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\n\n/**\n * Colors.\n */\n\nexports.colors = [6, 2, 3, 4, 5, 1];\n\n/**\n * Build up the default `inspectOpts` object from the environment variables.\n *\n * $ DEBUG_COLORS=no DEBUG_DEPTH=10 DEBUG_SHOW_HIDDEN=enabled node script.js\n */\n\nexports.inspectOpts = Object.keys(process.env).filter(function (key) {\n return /^debug_/i.test(key);\n}).reduce(function (obj, key) {\n // camel-case\n var prop = key\n .substring(6)\n .toLowerCase()\n .replace(/_([a-z])/g, function (_, k) { return k.toUpperCase() });\n\n // coerce string value into JS value\n var val = process.env[key];\n if (/^(yes|on|true|enabled)$/i.test(val)) val = true;\n else if (/^(no|off|false|disabled)$/i.test(val)) val = false;\n else if (val === 'null') val = null;\n else val = Number(val);\n\n obj[prop] = val;\n return obj;\n}, {});\n\n/**\n * The file descriptor to write the `debug()` calls to.\n * Set the `DEBUG_FD` env variable to override with another value. i.e.:\n *\n * $ DEBUG_FD=3 node script.js 3>debug.log\n */\n\nvar fd = parseInt(process.env.DEBUG_FD, 10) || 2;\n\nif (1 !== fd && 2 !== fd) {\n util.deprecate(function(){}, 'except for stderr(2) and stdout(1), any other usage of DEBUG_FD is deprecated. Override debug.log if you want to use a different log function (https://git.io/debug_fd)')()\n}\n\nvar stream = 1 === fd ? process.stdout :\n 2 === fd ? process.stderr :\n createWritableStdioStream(fd);\n\n/**\n * Is stdout a TTY? Colored output is enabled when `true`.\n */\n\nfunction useColors() {\n return 'colors' in exports.inspectOpts\n ? Boolean(exports.inspectOpts.colors)\n : tty.isatty(fd);\n}\n\n/**\n * Map %o to `util.inspect()`, all on a single line.\n */\n\nexports.formatters.o = function(v) {\n this.inspectOpts.colors = this.useColors;\n return util.inspect(v, this.inspectOpts)\n .split('\\n').map(function(str) {\n return str.trim()\n }).join(' ');\n};\n\n/**\n * Map %o to `util.inspect()`, allowing multiple lines if needed.\n */\n\nexports.formatters.O = function(v) {\n this.inspectOpts.colors = this.useColors;\n return util.inspect(v, this.inspectOpts);\n};\n\n/**\n * Adds ANSI color escape codes if enabled.\n *\n * @api public\n */\n\nfunction formatArgs(args) {\n var name = this.namespace;\n var useColors = this.useColors;\n\n if (useColors) {\n var c = this.color;\n var prefix = ' \\u001b[3' + c + ';1m' + name + ' ' + '\\u001b[0m';\n\n args[0] = prefix + args[0].split('\\n').join('\\n' + prefix);\n args.push('\\u001b[3' + c + 'm+' + exports.humanize(this.diff) + '\\u001b[0m');\n } else {\n args[0] = new Date().toUTCString()\n + ' ' + name + ' ' + args[0];\n }\n}\n\n/**\n * Invokes `util.format()` with the specified arguments and writes to `stream`.\n */\n\nfunction log() {\n return stream.write(util.format.apply(util, arguments) + '\\n');\n}\n\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\n\nfunction save(namespaces) {\n if (null == namespaces) {\n // If you set a process.env field to null or undefined, it gets cast to the\n // string 'null' or 'undefined'. Just delete instead.\n delete process.env.DEBUG;\n } else {\n process.env.DEBUG = namespaces;\n }\n}\n\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\n\nfunction load() {\n return process.env.DEBUG;\n}\n\n/**\n * Copied from `node/src/node.js`.\n *\n * XXX: It's lame that node doesn't expose this API out-of-the-box. It also\n * relies on the undocumented `tty_wrap.guessHandleType()` which is also lame.\n */\n\nfunction createWritableStdioStream (fd) {\n var stream;\n var tty_wrap = process.binding('tty_wrap');\n\n // Note stream._type is used for test-module-load-list.js\n\n switch (tty_wrap.guessHandleType(fd)) {\n case 'TTY':\n stream = new tty.WriteStream(fd);\n stream._type = 'tty';\n\n // Hack to have stream not keep the event loop alive.\n // See https://github.com/joyent/node/issues/1726\n if (stream._handle && stream._handle.unref) {\n stream._handle.unref();\n }\n break;\n\n case 'FILE':\n var fs = require('fs');\n stream = new fs.SyncWriteStream(fd, { autoClose: false });\n stream._type = 'fs';\n break;\n\n case 'PIPE':\n case 'TCP':\n var net = require('net');\n stream = new net.Socket({\n fd: fd,\n readable: false,\n writable: true\n });\n\n // FIXME Should probably have an option in net.Socket to create a\n // stream from an existing fd which is writable only. But for now\n // we'll just add this hack and set the `readable` member to false.\n // Test: ./node test/fixtures/echo.js < /etc/passwd\n stream.readable = false;\n stream.read = null;\n stream._type = 'pipe';\n\n // FIXME Hack to have stream not keep the event loop alive.\n // See https://github.com/joyent/node/issues/1726\n if (stream._handle && stream._handle.unref) {\n stream._handle.unref();\n }\n break;\n\n default:\n // Probably an error on in uv_guess_handle()\n throw new Error('Implement me. Unknown stream file type!');\n }\n\n // For supporting legacy API we put the FD here.\n stream.fd = fd;\n\n stream._isStdio = true;\n\n return stream;\n}\n\n/**\n * Init logic for `debug` instances.\n *\n * Create a new `inspectOpts` object in case `useColors` is set\n * differently for a particular `debug` instance.\n */\n\nfunction init (debug) {\n debug.inspectOpts = {};\n\n var keys = Object.keys(exports.inspectOpts);\n for (var i = 0; i < keys.length; i++) {\n debug.inspectOpts[keys[i]] = exports.inspectOpts[keys[i]];\n }\n}\n\n/**\n * Enable namespaces listed in `process.env.DEBUG` initially.\n */\n\nexports.enable(load());\n", "/**\n * Detect Electron renderer process, which is node, but we should\n * treat as a browser.\n */\n\nif (typeof process !== 'undefined' && process.type === 'renderer') {\n module.exports = require('./browser.js');\n} else {\n module.exports = require('./node.js');\n}\n", "/*!\n * destroy\n * Copyright(c) 2014 Jonathan Ong\n * Copyright(c) 2015-2022 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict'\n\n/**\n * Module dependencies.\n * @private\n */\n\nvar EventEmitter = require('events').EventEmitter\nvar ReadStream = require('fs').ReadStream\nvar Stream = require('stream')\nvar Zlib = require('zlib')\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = destroy\n\n/**\n * Destroy the given stream, and optionally suppress any future `error` events.\n *\n * @param {object} stream\n * @param {boolean} suppress\n * @public\n */\n\nfunction destroy (stream, suppress) {\n if (isFsReadStream(stream)) {\n destroyReadStream(stream)\n } else if (isZlibStream(stream)) {\n destroyZlibStream(stream)\n } else if (hasDestroy(stream)) {\n stream.destroy()\n }\n\n if (isEventEmitter(stream) && suppress) {\n stream.removeAllListeners('error')\n stream.addListener('error', noop)\n }\n\n return stream\n}\n\n/**\n * Destroy a ReadStream.\n *\n * @param {object} stream\n * @private\n */\n\nfunction destroyReadStream (stream) {\n stream.destroy()\n\n if (typeof stream.close === 'function') {\n // node.js core bug work-around\n stream.on('open', onOpenClose)\n }\n}\n\n/**\n * Close a Zlib stream.\n *\n * Zlib streams below Node.js 4.5.5 have a buggy implementation\n * of .close() when zlib encountered an error.\n *\n * @param {object} stream\n * @private\n */\n\nfunction closeZlibStream (stream) {\n if (stream._hadError === true) {\n var prop = stream._binding === null\n ? '_binding'\n : '_handle'\n\n stream[prop] = {\n close: function () { this[prop] = null }\n }\n }\n\n stream.close()\n}\n\n/**\n * Destroy a Zlib stream.\n *\n * Zlib streams don't have a destroy function in Node.js 6. On top of that\n * simply calling destroy on a zlib stream in Node.js 8+ will result in a\n * memory leak. So until that is fixed, we need to call both close AND destroy.\n *\n * PR to fix memory leak: https://github.com/nodejs/node/pull/23734\n *\n * In Node.js 6+8, it's important that destroy is called before close as the\n * stream would otherwise emit the error 'zlib binding closed'.\n *\n * @param {object} stream\n * @private\n */\n\nfunction destroyZlibStream (stream) {\n if (typeof stream.destroy === 'function') {\n // node.js core bug work-around\n // istanbul ignore if: node.js 0.8\n if (stream._binding) {\n // node.js < 0.10.0\n stream.destroy()\n if (stream._processing) {\n stream._needDrain = true\n stream.once('drain', onDrainClearBinding)\n } else {\n stream._binding.clear()\n }\n } else if (stream._destroy && stream._destroy !== Stream.Transform.prototype._destroy) {\n // node.js >= 12, ^11.1.0, ^10.15.1\n stream.destroy()\n } else if (stream._destroy && typeof stream.close === 'function') {\n // node.js 7, 8\n stream.destroyed = true\n stream.close()\n } else {\n // fallback\n // istanbul ignore next\n stream.destroy()\n }\n } else if (typeof stream.close === 'function') {\n // node.js < 8 fallback\n closeZlibStream(stream)\n }\n}\n\n/**\n * Determine if stream has destroy.\n * @private\n */\n\nfunction hasDestroy (stream) {\n return stream instanceof Stream &&\n typeof stream.destroy === 'function'\n}\n\n/**\n * Determine if val is EventEmitter.\n * @private\n */\n\nfunction isEventEmitter (val) {\n return val instanceof EventEmitter\n}\n\n/**\n * Determine if stream is fs.ReadStream stream.\n * @private\n */\n\nfunction isFsReadStream (stream) {\n return stream instanceof ReadStream\n}\n\n/**\n * Determine if stream is Zlib stream.\n * @private\n */\n\nfunction isZlibStream (stream) {\n return stream instanceof Zlib.Gzip ||\n stream instanceof Zlib.Gunzip ||\n stream instanceof Zlib.Deflate ||\n stream instanceof Zlib.DeflateRaw ||\n stream instanceof Zlib.Inflate ||\n stream instanceof Zlib.InflateRaw ||\n stream instanceof Zlib.Unzip\n}\n\n/**\n * No-op function.\n * @private\n */\n\nfunction noop () {}\n\n/**\n * On drain handler to clear binding.\n * @private\n */\n\n// istanbul ignore next: node.js 0.8\nfunction onDrainClearBinding () {\n this._binding.clear()\n}\n\n/**\n * On open handler to close stream.\n * @private\n */\n\nfunction onOpenClose () {\n if (typeof this.fd === 'number') {\n // actually close down the fd\n this.close()\n }\n}\n", "/* eslint-disable node/no-deprecated-api */\n\n'use strict'\n\nvar buffer = require('buffer')\nvar Buffer = buffer.Buffer\n\nvar safer = {}\n\nvar key\n\nfor (key in buffer) {\n if (!buffer.hasOwnProperty(key)) continue\n if (key === 'SlowBuffer' || key === 'Buffer') continue\n safer[key] = buffer[key]\n}\n\nvar Safer = safer.Buffer = {}\nfor (key in Buffer) {\n if (!Buffer.hasOwnProperty(key)) continue\n if (key === 'allocUnsafe' || key === 'allocUnsafeSlow') continue\n Safer[key] = Buffer[key]\n}\n\nsafer.Buffer.prototype = Buffer.prototype\n\nif (!Safer.from || Safer.from === Uint8Array.from) {\n Safer.from = function (value, encodingOrOffset, length) {\n if (typeof value === 'number') {\n throw new TypeError('The \"value\" argument must not be of type number. Received type ' + typeof value)\n }\n if (value && typeof value.length === 'undefined') {\n throw new TypeError('The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type ' + typeof value)\n }\n return Buffer(value, encodingOrOffset, length)\n }\n}\n\nif (!Safer.alloc) {\n Safer.alloc = function (size, fill, encoding) {\n if (typeof size !== 'number') {\n throw new TypeError('The \"size\" argument must be of type number. Received type ' + typeof size)\n }\n if (size < 0 || size >= 2 * (1 << 30)) {\n throw new RangeError('The value \"' + size + '\" is invalid for option \"size\"')\n }\n var buf = Buffer(size)\n if (!fill || fill.length === 0) {\n buf.fill(0)\n } else if (typeof encoding === 'string') {\n buf.fill(fill, encoding)\n } else {\n buf.fill(fill)\n }\n return buf\n }\n}\n\nif (!safer.kStringMaxLength) {\n try {\n safer.kStringMaxLength = process.binding('buffer').kStringMaxLength\n } catch (e) {\n // we can't determine kStringMaxLength in environments where process.binding\n // is unsupported, so let's not set it\n }\n}\n\nif (!safer.constants) {\n safer.constants = {\n MAX_LENGTH: safer.kMaxLength\n }\n if (safer.kStringMaxLength) {\n safer.constants.MAX_STRING_LENGTH = safer.kStringMaxLength\n }\n}\n\nmodule.exports = safer\n", "\"use strict\";\n\nvar BOMChar = '\\uFEFF';\n\nexports.PrependBOM = PrependBOMWrapper\nfunction PrependBOMWrapper(encoder, options) {\n this.encoder = encoder;\n this.addBOM = true;\n}\n\nPrependBOMWrapper.prototype.write = function(str) {\n if (this.addBOM) {\n str = BOMChar + str;\n this.addBOM = false;\n }\n\n return this.encoder.write(str);\n}\n\nPrependBOMWrapper.prototype.end = function() {\n return this.encoder.end();\n}\n\n\n//------------------------------------------------------------------------------\n\nexports.StripBOM = StripBOMWrapper;\nfunction StripBOMWrapper(decoder, options) {\n this.decoder = decoder;\n this.pass = false;\n this.options = options || {};\n}\n\nStripBOMWrapper.prototype.write = function(buf) {\n var res = this.decoder.write(buf);\n if (this.pass || !res)\n return res;\n\n if (res[0] === BOMChar) {\n res = res.slice(1);\n if (typeof this.options.stripBOM === 'function')\n this.options.stripBOM();\n }\n\n this.pass = true;\n return res;\n}\n\nStripBOMWrapper.prototype.end = function() {\n return this.decoder.end();\n}\n\n", "\"use strict\";\nvar Buffer = require(\"safer-buffer\").Buffer;\n\n// Export Node.js internal encodings.\n\nmodule.exports = {\n // Encodings\n utf8: { type: \"_internal\", bomAware: true},\n cesu8: { type: \"_internal\", bomAware: true},\n unicode11utf8: \"utf8\",\n\n ucs2: { type: \"_internal\", bomAware: true},\n utf16le: \"ucs2\",\n\n binary: { type: \"_internal\" },\n base64: { type: \"_internal\" },\n hex: { type: \"_internal\" },\n\n // Codec.\n _internal: InternalCodec,\n};\n\n//------------------------------------------------------------------------------\n\nfunction InternalCodec(codecOptions, iconv) {\n this.enc = codecOptions.encodingName;\n this.bomAware = codecOptions.bomAware;\n\n if (this.enc === \"base64\")\n this.encoder = InternalEncoderBase64;\n else if (this.enc === \"cesu8\") {\n this.enc = \"utf8\"; // Use utf8 for decoding.\n this.encoder = InternalEncoderCesu8;\n\n // Add decoder for versions of Node not supporting CESU-8\n if (Buffer.from('eda0bdedb2a9', 'hex').toString() !== '\uD83D\uDCA9') {\n this.decoder = InternalDecoderCesu8;\n this.defaultCharUnicode = iconv.defaultCharUnicode;\n }\n }\n}\n\nInternalCodec.prototype.encoder = InternalEncoder;\nInternalCodec.prototype.decoder = InternalDecoder;\n\n//------------------------------------------------------------------------------\n\n// We use node.js internal decoder. Its signature is the same as ours.\nvar StringDecoder = require('string_decoder').StringDecoder;\n\nif (!StringDecoder.prototype.end) // Node v0.8 doesn't have this method.\n StringDecoder.prototype.end = function() {};\n\n\nfunction InternalDecoder(options, codec) {\n StringDecoder.call(this, codec.enc);\n}\n\nInternalDecoder.prototype = StringDecoder.prototype;\n\n\n//------------------------------------------------------------------------------\n// Encoder is mostly trivial\n\nfunction InternalEncoder(options, codec) {\n this.enc = codec.enc;\n}\n\nInternalEncoder.prototype.write = function(str) {\n return Buffer.from(str, this.enc);\n}\n\nInternalEncoder.prototype.end = function() {\n}\n\n\n//------------------------------------------------------------------------------\n// Except base64 encoder, which must keep its state.\n\nfunction InternalEncoderBase64(options, codec) {\n this.prevStr = '';\n}\n\nInternalEncoderBase64.prototype.write = function(str) {\n str = this.prevStr + str;\n var completeQuads = str.length - (str.length % 4);\n this.prevStr = str.slice(completeQuads);\n str = str.slice(0, completeQuads);\n\n return Buffer.from(str, \"base64\");\n}\n\nInternalEncoderBase64.prototype.end = function() {\n return Buffer.from(this.prevStr, \"base64\");\n}\n\n\n//------------------------------------------------------------------------------\n// CESU-8 encoder is also special.\n\nfunction InternalEncoderCesu8(options, codec) {\n}\n\nInternalEncoderCesu8.prototype.write = function(str) {\n var buf = Buffer.alloc(str.length * 3), bufIdx = 0;\n for (var i = 0; i < str.length; i++) {\n var charCode = str.charCodeAt(i);\n // Naive implementation, but it works because CESU-8 is especially easy\n // to convert from UTF-16 (which all JS strings are encoded in).\n if (charCode < 0x80)\n buf[bufIdx++] = charCode;\n else if (charCode < 0x800) {\n buf[bufIdx++] = 0xC0 + (charCode >>> 6);\n buf[bufIdx++] = 0x80 + (charCode & 0x3f);\n }\n else { // charCode will always be < 0x10000 in javascript.\n buf[bufIdx++] = 0xE0 + (charCode >>> 12);\n buf[bufIdx++] = 0x80 + ((charCode >>> 6) & 0x3f);\n buf[bufIdx++] = 0x80 + (charCode & 0x3f);\n }\n }\n return buf.slice(0, bufIdx);\n}\n\nInternalEncoderCesu8.prototype.end = function() {\n}\n\n//------------------------------------------------------------------------------\n// CESU-8 decoder is not implemented in Node v4.0+\n\nfunction InternalDecoderCesu8(options, codec) {\n this.acc = 0;\n this.contBytes = 0;\n this.accBytes = 0;\n this.defaultCharUnicode = codec.defaultCharUnicode;\n}\n\nInternalDecoderCesu8.prototype.write = function(buf) {\n var acc = this.acc, contBytes = this.contBytes, accBytes = this.accBytes, \n res = '';\n for (var i = 0; i < buf.length; i++) {\n var curByte = buf[i];\n if ((curByte & 0xC0) !== 0x80) { // Leading byte\n if (contBytes > 0) { // Previous code is invalid\n res += this.defaultCharUnicode;\n contBytes = 0;\n }\n\n if (curByte < 0x80) { // Single-byte code\n res += String.fromCharCode(curByte);\n } else if (curByte < 0xE0) { // Two-byte code\n acc = curByte & 0x1F;\n contBytes = 1; accBytes = 1;\n } else if (curByte < 0xF0) { // Three-byte code\n acc = curByte & 0x0F;\n contBytes = 2; accBytes = 1;\n } else { // Four or more are not supported for CESU-8.\n res += this.defaultCharUnicode;\n }\n } else { // Continuation byte\n if (contBytes > 0) { // We're waiting for it.\n acc = (acc << 6) | (curByte & 0x3f);\n contBytes--; accBytes++;\n if (contBytes === 0) {\n // Check for overlong encoding, but support Modified UTF-8 (encoding NULL as C0 80)\n if (accBytes === 2 && acc < 0x80 && acc > 0)\n res += this.defaultCharUnicode;\n else if (accBytes === 3 && acc < 0x800)\n res += this.defaultCharUnicode;\n else\n // Actually add character.\n res += String.fromCharCode(acc);\n }\n } else { // Unexpected continuation byte\n res += this.defaultCharUnicode;\n }\n }\n }\n this.acc = acc; this.contBytes = contBytes; this.accBytes = accBytes;\n return res;\n}\n\nInternalDecoderCesu8.prototype.end = function() {\n var res = 0;\n if (this.contBytes > 0)\n res += this.defaultCharUnicode;\n return res;\n}\n", "\"use strict\";\nvar Buffer = require(\"safer-buffer\").Buffer;\n\n// Note: UTF16-LE (or UCS2) codec is Node.js native. See encodings/internal.js\n\n// == UTF16-BE codec. ==========================================================\n\nexports.utf16be = Utf16BECodec;\nfunction Utf16BECodec() {\n}\n\nUtf16BECodec.prototype.encoder = Utf16BEEncoder;\nUtf16BECodec.prototype.decoder = Utf16BEDecoder;\nUtf16BECodec.prototype.bomAware = true;\n\n\n// -- Encoding\n\nfunction Utf16BEEncoder() {\n}\n\nUtf16BEEncoder.prototype.write = function(str) {\n var buf = Buffer.from(str, 'ucs2');\n for (var i = 0; i < buf.length; i += 2) {\n var tmp = buf[i]; buf[i] = buf[i+1]; buf[i+1] = tmp;\n }\n return buf;\n}\n\nUtf16BEEncoder.prototype.end = function() {\n}\n\n\n// -- Decoding\n\nfunction Utf16BEDecoder() {\n this.overflowByte = -1;\n}\n\nUtf16BEDecoder.prototype.write = function(buf) {\n if (buf.length == 0)\n return '';\n\n var buf2 = Buffer.alloc(buf.length + 1),\n i = 0, j = 0;\n\n if (this.overflowByte !== -1) {\n buf2[0] = buf[0];\n buf2[1] = this.overflowByte;\n i = 1; j = 2;\n }\n\n for (; i < buf.length-1; i += 2, j+= 2) {\n buf2[j] = buf[i+1];\n buf2[j+1] = buf[i];\n }\n\n this.overflowByte = (i == buf.length-1) ? buf[buf.length-1] : -1;\n\n return buf2.slice(0, j).toString('ucs2');\n}\n\nUtf16BEDecoder.prototype.end = function() {\n}\n\n\n// == UTF-16 codec =============================================================\n// Decoder chooses automatically from UTF-16LE and UTF-16BE using BOM and space-based heuristic.\n// Defaults to UTF-16LE, as it's prevalent and default in Node.\n// http://en.wikipedia.org/wiki/UTF-16 and http://encoding.spec.whatwg.org/#utf-16le\n// Decoder default can be changed: iconv.decode(buf, 'utf16', {defaultEncoding: 'utf-16be'});\n\n// Encoder uses UTF-16LE and prepends BOM (which can be overridden with addBOM: false).\n\nexports.utf16 = Utf16Codec;\nfunction Utf16Codec(codecOptions, iconv) {\n this.iconv = iconv;\n}\n\nUtf16Codec.prototype.encoder = Utf16Encoder;\nUtf16Codec.prototype.decoder = Utf16Decoder;\n\n\n// -- Encoding (pass-through)\n\nfunction Utf16Encoder(options, codec) {\n options = options || {};\n if (options.addBOM === undefined)\n options.addBOM = true;\n this.encoder = codec.iconv.getEncoder('utf-16le', options);\n}\n\nUtf16Encoder.prototype.write = function(str) {\n return this.encoder.write(str);\n}\n\nUtf16Encoder.prototype.end = function() {\n return this.encoder.end();\n}\n\n\n// -- Decoding\n\nfunction Utf16Decoder(options, codec) {\n this.decoder = null;\n this.initialBytes = [];\n this.initialBytesLen = 0;\n\n this.options = options || {};\n this.iconv = codec.iconv;\n}\n\nUtf16Decoder.prototype.write = function(buf) {\n if (!this.decoder) {\n // Codec is not chosen yet. Accumulate initial bytes.\n this.initialBytes.push(buf);\n this.initialBytesLen += buf.length;\n \n if (this.initialBytesLen < 16) // We need more bytes to use space heuristic (see below)\n return '';\n\n // We have enough bytes -> detect endianness.\n var buf = Buffer.concat(this.initialBytes),\n encoding = detectEncoding(buf, this.options.defaultEncoding);\n this.decoder = this.iconv.getDecoder(encoding, this.options);\n this.initialBytes.length = this.initialBytesLen = 0;\n }\n\n return this.decoder.write(buf);\n}\n\nUtf16Decoder.prototype.end = function() {\n if (!this.decoder) {\n var buf = Buffer.concat(this.initialBytes),\n encoding = detectEncoding(buf, this.options.defaultEncoding);\n this.decoder = this.iconv.getDecoder(encoding, this.options);\n\n var res = this.decoder.write(buf),\n trail = this.decoder.end();\n\n return trail ? (res + trail) : res;\n }\n return this.decoder.end();\n}\n\nfunction detectEncoding(buf, defaultEncoding) {\n var enc = defaultEncoding || 'utf-16le';\n\n if (buf.length >= 2) {\n // Check BOM.\n if (buf[0] == 0xFE && buf[1] == 0xFF) // UTF-16BE BOM\n enc = 'utf-16be';\n else if (buf[0] == 0xFF && buf[1] == 0xFE) // UTF-16LE BOM\n enc = 'utf-16le';\n else {\n // No BOM found. Try to deduce encoding from initial content.\n // Most of the time, the content has ASCII chars (U+00**), but the opposite (U+**00) is uncommon.\n // So, we count ASCII as if it was LE or BE, and decide from that.\n var asciiCharsLE = 0, asciiCharsBE = 0, // Counts of chars in both positions\n _len = Math.min(buf.length - (buf.length % 2), 64); // Len is always even.\n\n for (var i = 0; i < _len; i += 2) {\n if (buf[i] === 0 && buf[i+1] !== 0) asciiCharsBE++;\n if (buf[i] !== 0 && buf[i+1] === 0) asciiCharsLE++;\n }\n\n if (asciiCharsBE > asciiCharsLE)\n enc = 'utf-16be';\n else if (asciiCharsBE < asciiCharsLE)\n enc = 'utf-16le';\n }\n }\n\n return enc;\n}\n\n\n", "\"use strict\";\nvar Buffer = require(\"safer-buffer\").Buffer;\n\n// UTF-7 codec, according to https://tools.ietf.org/html/rfc2152\n// See also below a UTF-7-IMAP codec, according to http://tools.ietf.org/html/rfc3501#section-5.1.3\n\nexports.utf7 = Utf7Codec;\nexports.unicode11utf7 = 'utf7'; // Alias UNICODE-1-1-UTF-7\nfunction Utf7Codec(codecOptions, iconv) {\n this.iconv = iconv;\n};\n\nUtf7Codec.prototype.encoder = Utf7Encoder;\nUtf7Codec.prototype.decoder = Utf7Decoder;\nUtf7Codec.prototype.bomAware = true;\n\n\n// -- Encoding\n\nvar nonDirectChars = /[^A-Za-z0-9'\\(\\),-\\.\\/:\\? \\n\\r\\t]+/g;\n\nfunction Utf7Encoder(options, codec) {\n this.iconv = codec.iconv;\n}\n\nUtf7Encoder.prototype.write = function(str) {\n // Naive implementation.\n // Non-direct chars are encoded as \"+-\"; single \"+\" char is encoded as \"+-\".\n return Buffer.from(str.replace(nonDirectChars, function(chunk) {\n return \"+\" + (chunk === '+' ? '' : \n this.iconv.encode(chunk, 'utf16-be').toString('base64').replace(/=+$/, '')) \n + \"-\";\n }.bind(this)));\n}\n\nUtf7Encoder.prototype.end = function() {\n}\n\n\n// -- Decoding\n\nfunction Utf7Decoder(options, codec) {\n this.iconv = codec.iconv;\n this.inBase64 = false;\n this.base64Accum = '';\n}\n\nvar base64Regex = /[A-Za-z0-9\\/+]/;\nvar base64Chars = [];\nfor (var i = 0; i < 256; i++)\n base64Chars[i] = base64Regex.test(String.fromCharCode(i));\n\nvar plusChar = '+'.charCodeAt(0), \n minusChar = '-'.charCodeAt(0),\n andChar = '&'.charCodeAt(0);\n\nUtf7Decoder.prototype.write = function(buf) {\n var res = \"\", lastI = 0,\n inBase64 = this.inBase64,\n base64Accum = this.base64Accum;\n\n // The decoder is more involved as we must handle chunks in stream.\n\n for (var i = 0; i < buf.length; i++) {\n if (!inBase64) { // We're in direct mode.\n // Write direct chars until '+'\n if (buf[i] == plusChar) {\n res += this.iconv.decode(buf.slice(lastI, i), \"ascii\"); // Write direct chars.\n lastI = i+1;\n inBase64 = true;\n }\n } else { // We decode base64.\n if (!base64Chars[buf[i]]) { // Base64 ended.\n if (i == lastI && buf[i] == minusChar) {// \"+-\" -> \"+\"\n res += \"+\";\n } else {\n var b64str = base64Accum + buf.slice(lastI, i).toString();\n res += this.iconv.decode(Buffer.from(b64str, 'base64'), \"utf16-be\");\n }\n\n if (buf[i] != minusChar) // Minus is absorbed after base64.\n i--;\n\n lastI = i+1;\n inBase64 = false;\n base64Accum = '';\n }\n }\n }\n\n if (!inBase64) {\n res += this.iconv.decode(buf.slice(lastI), \"ascii\"); // Write direct chars.\n } else {\n var b64str = base64Accum + buf.slice(lastI).toString();\n\n var canBeDecoded = b64str.length - (b64str.length % 8); // Minimal chunk: 2 quads -> 2x3 bytes -> 3 chars.\n base64Accum = b64str.slice(canBeDecoded); // The rest will be decoded in future.\n b64str = b64str.slice(0, canBeDecoded);\n\n res += this.iconv.decode(Buffer.from(b64str, 'base64'), \"utf16-be\");\n }\n\n this.inBase64 = inBase64;\n this.base64Accum = base64Accum;\n\n return res;\n}\n\nUtf7Decoder.prototype.end = function() {\n var res = \"\";\n if (this.inBase64 && this.base64Accum.length > 0)\n res = this.iconv.decode(Buffer.from(this.base64Accum, 'base64'), \"utf16-be\");\n\n this.inBase64 = false;\n this.base64Accum = '';\n return res;\n}\n\n\n// UTF-7-IMAP codec.\n// RFC3501 Sec. 5.1.3 Modified UTF-7 (http://tools.ietf.org/html/rfc3501#section-5.1.3)\n// Differences:\n// * Base64 part is started by \"&\" instead of \"+\"\n// * Direct characters are 0x20-0x7E, except \"&\" (0x26)\n// * In Base64, \",\" is used instead of \"/\"\n// * Base64 must not be used to represent direct characters.\n// * No implicit shift back from Base64 (should always end with '-')\n// * String must end in non-shifted position.\n// * \"-&\" while in base64 is not allowed.\n\n\nexports.utf7imap = Utf7IMAPCodec;\nfunction Utf7IMAPCodec(codecOptions, iconv) {\n this.iconv = iconv;\n};\n\nUtf7IMAPCodec.prototype.encoder = Utf7IMAPEncoder;\nUtf7IMAPCodec.prototype.decoder = Utf7IMAPDecoder;\nUtf7IMAPCodec.prototype.bomAware = true;\n\n\n// -- Encoding\n\nfunction Utf7IMAPEncoder(options, codec) {\n this.iconv = codec.iconv;\n this.inBase64 = false;\n this.base64Accum = Buffer.alloc(6);\n this.base64AccumIdx = 0;\n}\n\nUtf7IMAPEncoder.prototype.write = function(str) {\n var inBase64 = this.inBase64,\n base64Accum = this.base64Accum,\n base64AccumIdx = this.base64AccumIdx,\n buf = Buffer.alloc(str.length*5 + 10), bufIdx = 0;\n\n for (var i = 0; i < str.length; i++) {\n var uChar = str.charCodeAt(i);\n if (0x20 <= uChar && uChar <= 0x7E) { // Direct character or '&'.\n if (inBase64) {\n if (base64AccumIdx > 0) {\n bufIdx += buf.write(base64Accum.slice(0, base64AccumIdx).toString('base64').replace(/\\//g, ',').replace(/=+$/, ''), bufIdx);\n base64AccumIdx = 0;\n }\n\n buf[bufIdx++] = minusChar; // Write '-', then go to direct mode.\n inBase64 = false;\n }\n\n if (!inBase64) {\n buf[bufIdx++] = uChar; // Write direct character\n\n if (uChar === andChar) // Ampersand -> '&-'\n buf[bufIdx++] = minusChar;\n }\n\n } else { // Non-direct character\n if (!inBase64) {\n buf[bufIdx++] = andChar; // Write '&', then go to base64 mode.\n inBase64 = true;\n }\n if (inBase64) {\n base64Accum[base64AccumIdx++] = uChar >> 8;\n base64Accum[base64AccumIdx++] = uChar & 0xFF;\n\n if (base64AccumIdx == base64Accum.length) {\n bufIdx += buf.write(base64Accum.toString('base64').replace(/\\//g, ','), bufIdx);\n base64AccumIdx = 0;\n }\n }\n }\n }\n\n this.inBase64 = inBase64;\n this.base64AccumIdx = base64AccumIdx;\n\n return buf.slice(0, bufIdx);\n}\n\nUtf7IMAPEncoder.prototype.end = function() {\n var buf = Buffer.alloc(10), bufIdx = 0;\n if (this.inBase64) {\n if (this.base64AccumIdx > 0) {\n bufIdx += buf.write(this.base64Accum.slice(0, this.base64AccumIdx).toString('base64').replace(/\\//g, ',').replace(/=+$/, ''), bufIdx);\n this.base64AccumIdx = 0;\n }\n\n buf[bufIdx++] = minusChar; // Write '-', then go to direct mode.\n this.inBase64 = false;\n }\n\n return buf.slice(0, bufIdx);\n}\n\n\n// -- Decoding\n\nfunction Utf7IMAPDecoder(options, codec) {\n this.iconv = codec.iconv;\n this.inBase64 = false;\n this.base64Accum = '';\n}\n\nvar base64IMAPChars = base64Chars.slice();\nbase64IMAPChars[','.charCodeAt(0)] = true;\n\nUtf7IMAPDecoder.prototype.write = function(buf) {\n var res = \"\", lastI = 0,\n inBase64 = this.inBase64,\n base64Accum = this.base64Accum;\n\n // The decoder is more involved as we must handle chunks in stream.\n // It is forgiving, closer to standard UTF-7 (for example, '-' is optional at the end).\n\n for (var i = 0; i < buf.length; i++) {\n if (!inBase64) { // We're in direct mode.\n // Write direct chars until '&'\n if (buf[i] == andChar) {\n res += this.iconv.decode(buf.slice(lastI, i), \"ascii\"); // Write direct chars.\n lastI = i+1;\n inBase64 = true;\n }\n } else { // We decode base64.\n if (!base64IMAPChars[buf[i]]) { // Base64 ended.\n if (i == lastI && buf[i] == minusChar) { // \"&-\" -> \"&\"\n res += \"&\";\n } else {\n var b64str = base64Accum + buf.slice(lastI, i).toString().replace(/,/g, '/');\n res += this.iconv.decode(Buffer.from(b64str, 'base64'), \"utf16-be\");\n }\n\n if (buf[i] != minusChar) // Minus may be absorbed after base64.\n i--;\n\n lastI = i+1;\n inBase64 = false;\n base64Accum = '';\n }\n }\n }\n\n if (!inBase64) {\n res += this.iconv.decode(buf.slice(lastI), \"ascii\"); // Write direct chars.\n } else {\n var b64str = base64Accum + buf.slice(lastI).toString().replace(/,/g, '/');\n\n var canBeDecoded = b64str.length - (b64str.length % 8); // Minimal chunk: 2 quads -> 2x3 bytes -> 3 chars.\n base64Accum = b64str.slice(canBeDecoded); // The rest will be decoded in future.\n b64str = b64str.slice(0, canBeDecoded);\n\n res += this.iconv.decode(Buffer.from(b64str, 'base64'), \"utf16-be\");\n }\n\n this.inBase64 = inBase64;\n this.base64Accum = base64Accum;\n\n return res;\n}\n\nUtf7IMAPDecoder.prototype.end = function() {\n var res = \"\";\n if (this.inBase64 && this.base64Accum.length > 0)\n res = this.iconv.decode(Buffer.from(this.base64Accum, 'base64'), \"utf16-be\");\n\n this.inBase64 = false;\n this.base64Accum = '';\n return res;\n}\n\n\n", "\"use strict\";\nvar Buffer = require(\"safer-buffer\").Buffer;\n\n// Single-byte codec. Needs a 'chars' string parameter that contains 256 or 128 chars that\n// correspond to encoded bytes (if 128 - then lower half is ASCII). \n\nexports._sbcs = SBCSCodec;\nfunction SBCSCodec(codecOptions, iconv) {\n if (!codecOptions)\n throw new Error(\"SBCS codec is called without the data.\")\n \n // Prepare char buffer for decoding.\n if (!codecOptions.chars || (codecOptions.chars.length !== 128 && codecOptions.chars.length !== 256))\n throw new Error(\"Encoding '\"+codecOptions.type+\"' has incorrect 'chars' (must be of len 128 or 256)\");\n \n if (codecOptions.chars.length === 128) {\n var asciiString = \"\";\n for (var i = 0; i < 128; i++)\n asciiString += String.fromCharCode(i);\n codecOptions.chars = asciiString + codecOptions.chars;\n }\n\n this.decodeBuf = Buffer.from(codecOptions.chars, 'ucs2');\n \n // Encoding buffer.\n var encodeBuf = Buffer.alloc(65536, iconv.defaultCharSingleByte.charCodeAt(0));\n\n for (var i = 0; i < codecOptions.chars.length; i++)\n encodeBuf[codecOptions.chars.charCodeAt(i)] = i;\n\n this.encodeBuf = encodeBuf;\n}\n\nSBCSCodec.prototype.encoder = SBCSEncoder;\nSBCSCodec.prototype.decoder = SBCSDecoder;\n\n\nfunction SBCSEncoder(options, codec) {\n this.encodeBuf = codec.encodeBuf;\n}\n\nSBCSEncoder.prototype.write = function(str) {\n var buf = Buffer.alloc(str.length);\n for (var i = 0; i < str.length; i++)\n buf[i] = this.encodeBuf[str.charCodeAt(i)];\n \n return buf;\n}\n\nSBCSEncoder.prototype.end = function() {\n}\n\n\nfunction SBCSDecoder(options, codec) {\n this.decodeBuf = codec.decodeBuf;\n}\n\nSBCSDecoder.prototype.write = function(buf) {\n // Strings are immutable in JS -> we use ucs2 buffer to speed up computations.\n var decodeBuf = this.decodeBuf;\n var newBuf = Buffer.alloc(buf.length*2);\n var idx1 = 0, idx2 = 0;\n for (var i = 0; i < buf.length; i++) {\n idx1 = buf[i]*2; idx2 = i*2;\n newBuf[idx2] = decodeBuf[idx1];\n newBuf[idx2+1] = decodeBuf[idx1+1];\n }\n return newBuf.toString('ucs2');\n}\n\nSBCSDecoder.prototype.end = function() {\n}\n", "\"use strict\";\n\n// Manually added data to be used by sbcs codec in addition to generated one.\n\nmodule.exports = {\n // Not supported by iconv, not sure why.\n \"10029\": \"maccenteuro\",\n \"maccenteuro\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u00C4\u0100\u0101\u00C9\u0104\u00D6\u00DC\u00E1\u0105\u010C\u00E4\u010D\u0106\u0107\u00E9\u0179\u017A\u010E\u00ED\u010F\u0112\u0113\u0116\u00F3\u0117\u00F4\u00F6\u00F5\u00FA\u011A\u011B\u00FC\u2020\u00B0\u0118\u00A3\u00A7\u2022\u00B6\u00DF\u00AE\u00A9\u2122\u0119\u00A8\u2260\u0123\u012E\u012F\u012A\u2264\u2265\u012B\u0136\u2202\u2211\u0142\u013B\u013C\u013D\u013E\u0139\u013A\u0145\u0146\u0143\u00AC\u221A\u0144\u0147\u2206\u00AB\u00BB\u2026\u00A0\u0148\u0150\u00D5\u0151\u014C\u2013\u2014\u201C\u201D\u2018\u2019\u00F7\u25CA\u014D\u0154\u0155\u0158\u2039\u203A\u0159\u0156\u0157\u0160\u201A\u201E\u0161\u015A\u015B\u00C1\u0164\u0165\u00CD\u017D\u017E\u016A\u00D3\u00D4\u016B\u016E\u00DA\u016F\u0170\u0171\u0172\u0173\u00DD\u00FD\u0137\u017B\u0141\u017C\u0122\u02C7\"\n },\n\n \"808\": \"cp808\",\n \"ibm808\": \"cp808\",\n \"cp808\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F\u0401\u0451\u0404\u0454\u0407\u0457\u040E\u045E\u00B0\u2219\u00B7\u221A\u2116\u20AC\u25A0\u00A0\"\n },\n\n \"mik\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F\u2514\u2534\u252C\u251C\u2500\u253C\u2563\u2551\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2510\u2591\u2592\u2593\u2502\u2524\u2116\u00A7\u2557\u255D\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03B1\u00DF\u0393\u03C0\u03A3\u03C3\u00B5\u03C4\u03A6\u0398\u03A9\u03B4\u221E\u03C6\u03B5\u2229\u2261\u00B1\u2265\u2264\u2320\u2321\u00F7\u2248\u00B0\u2219\u00B7\u221A\u207F\u00B2\u25A0\u00A0\"\n },\n\n // Aliases of generated encodings.\n \"ascii8bit\": \"ascii\",\n \"usascii\": \"ascii\",\n \"ansix34\": \"ascii\",\n \"ansix341968\": \"ascii\",\n \"ansix341986\": \"ascii\",\n \"csascii\": \"ascii\",\n \"cp367\": \"ascii\",\n \"ibm367\": \"ascii\",\n \"isoir6\": \"ascii\",\n \"iso646us\": \"ascii\",\n \"iso646irv\": \"ascii\",\n \"us\": \"ascii\",\n\n \"latin1\": \"iso88591\",\n \"latin2\": \"iso88592\",\n \"latin3\": \"iso88593\",\n \"latin4\": \"iso88594\",\n \"latin5\": \"iso88599\",\n \"latin6\": \"iso885910\",\n \"latin7\": \"iso885913\",\n \"latin8\": \"iso885914\",\n \"latin9\": \"iso885915\",\n \"latin10\": \"iso885916\",\n\n \"csisolatin1\": \"iso88591\",\n \"csisolatin2\": \"iso88592\",\n \"csisolatin3\": \"iso88593\",\n \"csisolatin4\": \"iso88594\",\n \"csisolatincyrillic\": \"iso88595\",\n \"csisolatinarabic\": \"iso88596\",\n \"csisolatingreek\" : \"iso88597\",\n \"csisolatinhebrew\": \"iso88598\",\n \"csisolatin5\": \"iso88599\",\n \"csisolatin6\": \"iso885910\",\n\n \"l1\": \"iso88591\",\n \"l2\": \"iso88592\",\n \"l3\": \"iso88593\",\n \"l4\": \"iso88594\",\n \"l5\": \"iso88599\",\n \"l6\": \"iso885910\",\n \"l7\": \"iso885913\",\n \"l8\": \"iso885914\",\n \"l9\": \"iso885915\",\n \"l10\": \"iso885916\",\n\n \"isoir14\": \"iso646jp\",\n \"isoir57\": \"iso646cn\",\n \"isoir100\": \"iso88591\",\n \"isoir101\": \"iso88592\",\n \"isoir109\": \"iso88593\",\n \"isoir110\": \"iso88594\",\n \"isoir144\": \"iso88595\",\n \"isoir127\": \"iso88596\",\n \"isoir126\": \"iso88597\",\n \"isoir138\": \"iso88598\",\n \"isoir148\": \"iso88599\",\n \"isoir157\": \"iso885910\",\n \"isoir166\": \"tis620\",\n \"isoir179\": \"iso885913\",\n \"isoir199\": \"iso885914\",\n \"isoir203\": \"iso885915\",\n \"isoir226\": \"iso885916\",\n\n \"cp819\": \"iso88591\",\n \"ibm819\": \"iso88591\",\n\n \"cyrillic\": \"iso88595\",\n\n \"arabic\": \"iso88596\",\n \"arabic8\": \"iso88596\",\n \"ecma114\": \"iso88596\",\n \"asmo708\": \"iso88596\",\n\n \"greek\" : \"iso88597\",\n \"greek8\" : \"iso88597\",\n \"ecma118\" : \"iso88597\",\n \"elot928\" : \"iso88597\",\n\n \"hebrew\": \"iso88598\",\n \"hebrew8\": \"iso88598\",\n\n \"turkish\": \"iso88599\",\n \"turkish8\": \"iso88599\",\n\n \"thai\": \"iso885911\",\n \"thai8\": \"iso885911\",\n\n \"celtic\": \"iso885914\",\n \"celtic8\": \"iso885914\",\n \"isoceltic\": \"iso885914\",\n\n \"tis6200\": \"tis620\",\n \"tis62025291\": \"tis620\",\n \"tis62025330\": \"tis620\",\n\n \"10000\": \"macroman\",\n \"10006\": \"macgreek\",\n \"10007\": \"maccyrillic\",\n \"10079\": \"maciceland\",\n \"10081\": \"macturkish\",\n\n \"cspc8codepage437\": \"cp437\",\n \"cspc775baltic\": \"cp775\",\n \"cspc850multilingual\": \"cp850\",\n \"cspcp852\": \"cp852\",\n \"cspc862latinhebrew\": \"cp862\",\n \"cpgr\": \"cp869\",\n\n \"msee\": \"cp1250\",\n \"mscyrl\": \"cp1251\",\n \"msansi\": \"cp1252\",\n \"msgreek\": \"cp1253\",\n \"msturk\": \"cp1254\",\n \"mshebr\": \"cp1255\",\n \"msarab\": \"cp1256\",\n \"winbaltrim\": \"cp1257\",\n\n \"cp20866\": \"koi8r\",\n \"20866\": \"koi8r\",\n \"ibm878\": \"koi8r\",\n \"cskoi8r\": \"koi8r\",\n\n \"cp21866\": \"koi8u\",\n \"21866\": \"koi8u\",\n \"ibm1168\": \"koi8u\",\n\n \"strk10482002\": \"rk1048\",\n\n \"tcvn5712\": \"tcvn\",\n \"tcvn57121\": \"tcvn\",\n\n \"gb198880\": \"iso646cn\",\n \"cn\": \"iso646cn\",\n\n \"csiso14jisc6220ro\": \"iso646jp\",\n \"jisc62201969ro\": \"iso646jp\",\n \"jp\": \"iso646jp\",\n\n \"cshproman8\": \"hproman8\",\n \"r8\": \"hproman8\",\n \"roman8\": \"hproman8\",\n \"xroman8\": \"hproman8\",\n \"ibm1051\": \"hproman8\",\n\n \"mac\": \"macintosh\",\n \"csmacintosh\": \"macintosh\",\n};\n\n", "\"use strict\";\n\n// Generated data for sbcs codec. Don't edit manually. Regenerate using generation/gen-sbcs.js script.\nmodule.exports = {\n \"437\": \"cp437\",\n \"737\": \"cp737\",\n \"775\": \"cp775\",\n \"850\": \"cp850\",\n \"852\": \"cp852\",\n \"855\": \"cp855\",\n \"856\": \"cp856\",\n \"857\": \"cp857\",\n \"858\": \"cp858\",\n \"860\": \"cp860\",\n \"861\": \"cp861\",\n \"862\": \"cp862\",\n \"863\": \"cp863\",\n \"864\": \"cp864\",\n \"865\": \"cp865\",\n \"866\": \"cp866\",\n \"869\": \"cp869\",\n \"874\": \"windows874\",\n \"922\": \"cp922\",\n \"1046\": \"cp1046\",\n \"1124\": \"cp1124\",\n \"1125\": \"cp1125\",\n \"1129\": \"cp1129\",\n \"1133\": \"cp1133\",\n \"1161\": \"cp1161\",\n \"1162\": \"cp1162\",\n \"1163\": \"cp1163\",\n \"1250\": \"windows1250\",\n \"1251\": \"windows1251\",\n \"1252\": \"windows1252\",\n \"1253\": \"windows1253\",\n \"1254\": \"windows1254\",\n \"1255\": \"windows1255\",\n \"1256\": \"windows1256\",\n \"1257\": \"windows1257\",\n \"1258\": \"windows1258\",\n \"28591\": \"iso88591\",\n \"28592\": \"iso88592\",\n \"28593\": \"iso88593\",\n \"28594\": \"iso88594\",\n \"28595\": \"iso88595\",\n \"28596\": \"iso88596\",\n \"28597\": \"iso88597\",\n \"28598\": \"iso88598\",\n \"28599\": \"iso88599\",\n \"28600\": \"iso885910\",\n \"28601\": \"iso885911\",\n \"28603\": \"iso885913\",\n \"28604\": \"iso885914\",\n \"28605\": \"iso885915\",\n \"28606\": \"iso885916\",\n \"windows874\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u20AC\uFFFD\uFFFD\uFFFD\uFFFD\u2026\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u00A0\u0E01\u0E02\u0E03\u0E04\u0E05\u0E06\u0E07\u0E08\u0E09\u0E0A\u0E0B\u0E0C\u0E0D\u0E0E\u0E0F\u0E10\u0E11\u0E12\u0E13\u0E14\u0E15\u0E16\u0E17\u0E18\u0E19\u0E1A\u0E1B\u0E1C\u0E1D\u0E1E\u0E1F\u0E20\u0E21\u0E22\u0E23\u0E24\u0E25\u0E26\u0E27\u0E28\u0E29\u0E2A\u0E2B\u0E2C\u0E2D\u0E2E\u0E2F\u0E30\u0E31\u0E32\u0E33\u0E34\u0E35\u0E36\u0E37\u0E38\u0E39\u0E3A\uFFFD\uFFFD\uFFFD\uFFFD\u0E3F\u0E40\u0E41\u0E42\u0E43\u0E44\u0E45\u0E46\u0E47\u0E48\u0E49\u0E4A\u0E4B\u0E4C\u0E4D\u0E4E\u0E4F\u0E50\u0E51\u0E52\u0E53\u0E54\u0E55\u0E56\u0E57\u0E58\u0E59\u0E5A\u0E5B\uFFFD\uFFFD\uFFFD\uFFFD\"\n },\n \"win874\": \"windows874\",\n \"cp874\": \"windows874\",\n \"windows1250\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u20AC\uFFFD\u201A\uFFFD\u201E\u2026\u2020\u2021\uFFFD\u2030\u0160\u2039\u015A\u0164\u017D\u0179\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\uFFFD\u2122\u0161\u203A\u015B\u0165\u017E\u017A\u00A0\u02C7\u02D8\u0141\u00A4\u0104\u00A6\u00A7\u00A8\u00A9\u015E\u00AB\u00AC\u00AD\u00AE\u017B\u00B0\u00B1\u02DB\u0142\u00B4\u00B5\u00B6\u00B7\u00B8\u0105\u015F\u00BB\u013D\u02DD\u013E\u017C\u0154\u00C1\u00C2\u0102\u00C4\u0139\u0106\u00C7\u010C\u00C9\u0118\u00CB\u011A\u00CD\u00CE\u010E\u0110\u0143\u0147\u00D3\u00D4\u0150\u00D6\u00D7\u0158\u016E\u00DA\u0170\u00DC\u00DD\u0162\u00DF\u0155\u00E1\u00E2\u0103\u00E4\u013A\u0107\u00E7\u010D\u00E9\u0119\u00EB\u011B\u00ED\u00EE\u010F\u0111\u0144\u0148\u00F3\u00F4\u0151\u00F6\u00F7\u0159\u016F\u00FA\u0171\u00FC\u00FD\u0163\u02D9\"\n },\n \"win1250\": \"windows1250\",\n \"cp1250\": \"windows1250\",\n \"windows1251\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u0402\u0403\u201A\u0453\u201E\u2026\u2020\u2021\u20AC\u2030\u0409\u2039\u040A\u040C\u040B\u040F\u0452\u2018\u2019\u201C\u201D\u2022\u2013\u2014\uFFFD\u2122\u0459\u203A\u045A\u045C\u045B\u045F\u00A0\u040E\u045E\u0408\u00A4\u0490\u00A6\u00A7\u0401\u00A9\u0404\u00AB\u00AC\u00AD\u00AE\u0407\u00B0\u00B1\u0406\u0456\u0491\u00B5\u00B6\u00B7\u0451\u2116\u0454\u00BB\u0458\u0405\u0455\u0457\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F\"\n },\n \"win1251\": \"windows1251\",\n \"cp1251\": \"windows1251\",\n \"windows1252\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u20AC\uFFFD\u201A\u0192\u201E\u2026\u2020\u2021\u02C6\u2030\u0160\u2039\u0152\uFFFD\u017D\uFFFD\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u02DC\u2122\u0161\u203A\u0153\uFFFD\u017E\u0178\u00A0\u00A1\u00A2\u00A3\u00A4\u00A5\u00A6\u00A7\u00A8\u00A9\u00AA\u00AB\u00AC\u00AD\u00AE\u00AF\u00B0\u00B1\u00B2\u00B3\u00B4\u00B5\u00B6\u00B7\u00B8\u00B9\u00BA\u00BB\u00BC\u00BD\u00BE\u00BF\u00C0\u00C1\u00C2\u00C3\u00C4\u00C5\u00C6\u00C7\u00C8\u00C9\u00CA\u00CB\u00CC\u00CD\u00CE\u00CF\u00D0\u00D1\u00D2\u00D3\u00D4\u00D5\u00D6\u00D7\u00D8\u00D9\u00DA\u00DB\u00DC\u00DD\u00DE\u00DF\u00E0\u00E1\u00E2\u00E3\u00E4\u00E5\u00E6\u00E7\u00E8\u00E9\u00EA\u00EB\u00EC\u00ED\u00EE\u00EF\u00F0\u00F1\u00F2\u00F3\u00F4\u00F5\u00F6\u00F7\u00F8\u00F9\u00FA\u00FB\u00FC\u00FD\u00FE\u00FF\"\n },\n \"win1252\": \"windows1252\",\n \"cp1252\": \"windows1252\",\n \"windows1253\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u20AC\uFFFD\u201A\u0192\u201E\u2026\u2020\u2021\uFFFD\u2030\uFFFD\u2039\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\uFFFD\u2122\uFFFD\u203A\uFFFD\uFFFD\uFFFD\uFFFD\u00A0\u0385\u0386\u00A3\u00A4\u00A5\u00A6\u00A7\u00A8\u00A9\uFFFD\u00AB\u00AC\u00AD\u00AE\u2015\u00B0\u00B1\u00B2\u00B3\u0384\u00B5\u00B6\u00B7\u0388\u0389\u038A\u00BB\u038C\u00BD\u038E\u038F\u0390\u0391\u0392\u0393\u0394\u0395\u0396\u0397\u0398\u0399\u039A\u039B\u039C\u039D\u039E\u039F\u03A0\u03A1\uFFFD\u03A3\u03A4\u03A5\u03A6\u03A7\u03A8\u03A9\u03AA\u03AB\u03AC\u03AD\u03AE\u03AF\u03B0\u03B1\u03B2\u03B3\u03B4\u03B5\u03B6\u03B7\u03B8\u03B9\u03BA\u03BB\u03BC\u03BD\u03BE\u03BF\u03C0\u03C1\u03C2\u03C3\u03C4\u03C5\u03C6\u03C7\u03C8\u03C9\u03CA\u03CB\u03CC\u03CD\u03CE\uFFFD\"\n },\n \"win1253\": \"windows1253\",\n \"cp1253\": \"windows1253\",\n \"windows1254\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u20AC\uFFFD\u201A\u0192\u201E\u2026\u2020\u2021\u02C6\u2030\u0160\u2039\u0152\uFFFD\uFFFD\uFFFD\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u02DC\u2122\u0161\u203A\u0153\uFFFD\uFFFD\u0178\u00A0\u00A1\u00A2\u00A3\u00A4\u00A5\u00A6\u00A7\u00A8\u00A9\u00AA\u00AB\u00AC\u00AD\u00AE\u00AF\u00B0\u00B1\u00B2\u00B3\u00B4\u00B5\u00B6\u00B7\u00B8\u00B9\u00BA\u00BB\u00BC\u00BD\u00BE\u00BF\u00C0\u00C1\u00C2\u00C3\u00C4\u00C5\u00C6\u00C7\u00C8\u00C9\u00CA\u00CB\u00CC\u00CD\u00CE\u00CF\u011E\u00D1\u00D2\u00D3\u00D4\u00D5\u00D6\u00D7\u00D8\u00D9\u00DA\u00DB\u00DC\u0130\u015E\u00DF\u00E0\u00E1\u00E2\u00E3\u00E4\u00E5\u00E6\u00E7\u00E8\u00E9\u00EA\u00EB\u00EC\u00ED\u00EE\u00EF\u011F\u00F1\u00F2\u00F3\u00F4\u00F5\u00F6\u00F7\u00F8\u00F9\u00FA\u00FB\u00FC\u0131\u015F\u00FF\"\n },\n \"win1254\": \"windows1254\",\n \"cp1254\": \"windows1254\",\n \"windows1255\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u20AC\uFFFD\u201A\u0192\u201E\u2026\u2020\u2021\u02C6\u2030\uFFFD\u2039\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u02DC\u2122\uFFFD\u203A\uFFFD\uFFFD\uFFFD\uFFFD\u00A0\u00A1\u00A2\u00A3\u20AA\u00A5\u00A6\u00A7\u00A8\u00A9\u00D7\u00AB\u00AC\u00AD\u00AE\u00AF\u00B0\u00B1\u00B2\u00B3\u00B4\u00B5\u00B6\u00B7\u00B8\u00B9\u00F7\u00BB\u00BC\u00BD\u00BE\u00BF\u05B0\u05B1\u05B2\u05B3\u05B4\u05B5\u05B6\u05B7\u05B8\u05B9\u05BA\u05BB\u05BC\u05BD\u05BE\u05BF\u05C0\u05C1\u05C2\u05C3\u05F0\u05F1\u05F2\u05F3\u05F4\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u05D0\u05D1\u05D2\u05D3\u05D4\u05D5\u05D6\u05D7\u05D8\u05D9\u05DA\u05DB\u05DC\u05DD\u05DE\u05DF\u05E0\u05E1\u05E2\u05E3\u05E4\u05E5\u05E6\u05E7\u05E8\u05E9\u05EA\uFFFD\uFFFD\u200E\u200F\uFFFD\"\n },\n \"win1255\": \"windows1255\",\n \"cp1255\": \"windows1255\",\n \"windows1256\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u20AC\u067E\u201A\u0192\u201E\u2026\u2020\u2021\u02C6\u2030\u0679\u2039\u0152\u0686\u0698\u0688\u06AF\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u06A9\u2122\u0691\u203A\u0153\u200C\u200D\u06BA\u00A0\u060C\u00A2\u00A3\u00A4\u00A5\u00A6\u00A7\u00A8\u00A9\u06BE\u00AB\u00AC\u00AD\u00AE\u00AF\u00B0\u00B1\u00B2\u00B3\u00B4\u00B5\u00B6\u00B7\u00B8\u00B9\u061B\u00BB\u00BC\u00BD\u00BE\u061F\u06C1\u0621\u0622\u0623\u0624\u0625\u0626\u0627\u0628\u0629\u062A\u062B\u062C\u062D\u062E\u062F\u0630\u0631\u0632\u0633\u0634\u0635\u0636\u00D7\u0637\u0638\u0639\u063A\u0640\u0641\u0642\u0643\u00E0\u0644\u00E2\u0645\u0646\u0647\u0648\u00E7\u00E8\u00E9\u00EA\u00EB\u0649\u064A\u00EE\u00EF\u064B\u064C\u064D\u064E\u00F4\u064F\u0650\u00F7\u0651\u00F9\u0652\u00FB\u00FC\u200E\u200F\u06D2\"\n },\n \"win1256\": \"windows1256\",\n \"cp1256\": \"windows1256\",\n \"windows1257\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u20AC\uFFFD\u201A\uFFFD\u201E\u2026\u2020\u2021\uFFFD\u2030\uFFFD\u2039\uFFFD\u00A8\u02C7\u00B8\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\uFFFD\u2122\uFFFD\u203A\uFFFD\u00AF\u02DB\uFFFD\u00A0\uFFFD\u00A2\u00A3\u00A4\uFFFD\u00A6\u00A7\u00D8\u00A9\u0156\u00AB\u00AC\u00AD\u00AE\u00C6\u00B0\u00B1\u00B2\u00B3\u00B4\u00B5\u00B6\u00B7\u00F8\u00B9\u0157\u00BB\u00BC\u00BD\u00BE\u00E6\u0104\u012E\u0100\u0106\u00C4\u00C5\u0118\u0112\u010C\u00C9\u0179\u0116\u0122\u0136\u012A\u013B\u0160\u0143\u0145\u00D3\u014C\u00D5\u00D6\u00D7\u0172\u0141\u015A\u016A\u00DC\u017B\u017D\u00DF\u0105\u012F\u0101\u0107\u00E4\u00E5\u0119\u0113\u010D\u00E9\u017A\u0117\u0123\u0137\u012B\u013C\u0161\u0144\u0146\u00F3\u014D\u00F5\u00F6\u00F7\u0173\u0142\u015B\u016B\u00FC\u017C\u017E\u02D9\"\n },\n \"win1257\": \"windows1257\",\n \"cp1257\": \"windows1257\",\n \"windows1258\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u20AC\uFFFD\u201A\u0192\u201E\u2026\u2020\u2021\u02C6\u2030\uFFFD\u2039\u0152\uFFFD\uFFFD\uFFFD\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u02DC\u2122\uFFFD\u203A\u0153\uFFFD\uFFFD\u0178\u00A0\u00A1\u00A2\u00A3\u00A4\u00A5\u00A6\u00A7\u00A8\u00A9\u00AA\u00AB\u00AC\u00AD\u00AE\u00AF\u00B0\u00B1\u00B2\u00B3\u00B4\u00B5\u00B6\u00B7\u00B8\u00B9\u00BA\u00BB\u00BC\u00BD\u00BE\u00BF\u00C0\u00C1\u00C2\u0102\u00C4\u00C5\u00C6\u00C7\u00C8\u00C9\u00CA\u00CB\u0300\u00CD\u00CE\u00CF\u0110\u00D1\u0309\u00D3\u00D4\u01A0\u00D6\u00D7\u00D8\u00D9\u00DA\u00DB\u00DC\u01AF\u0303\u00DF\u00E0\u00E1\u00E2\u0103\u00E4\u00E5\u00E6\u00E7\u00E8\u00E9\u00EA\u00EB\u0301\u00ED\u00EE\u00EF\u0111\u00F1\u0323\u00F3\u00F4\u01A1\u00F6\u00F7\u00F8\u00F9\u00FA\u00FB\u00FC\u01B0\u20AB\u00FF\"\n },\n \"win1258\": \"windows1258\",\n \"cp1258\": \"windows1258\",\n \"iso88591\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\u00A1\u00A2\u00A3\u00A4\u00A5\u00A6\u00A7\u00A8\u00A9\u00AA\u00AB\u00AC\u00AD\u00AE\u00AF\u00B0\u00B1\u00B2\u00B3\u00B4\u00B5\u00B6\u00B7\u00B8\u00B9\u00BA\u00BB\u00BC\u00BD\u00BE\u00BF\u00C0\u00C1\u00C2\u00C3\u00C4\u00C5\u00C6\u00C7\u00C8\u00C9\u00CA\u00CB\u00CC\u00CD\u00CE\u00CF\u00D0\u00D1\u00D2\u00D3\u00D4\u00D5\u00D6\u00D7\u00D8\u00D9\u00DA\u00DB\u00DC\u00DD\u00DE\u00DF\u00E0\u00E1\u00E2\u00E3\u00E4\u00E5\u00E6\u00E7\u00E8\u00E9\u00EA\u00EB\u00EC\u00ED\u00EE\u00EF\u00F0\u00F1\u00F2\u00F3\u00F4\u00F5\u00F6\u00F7\u00F8\u00F9\u00FA\u00FB\u00FC\u00FD\u00FE\u00FF\"\n },\n \"cp28591\": \"iso88591\",\n \"iso88592\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\u0104\u02D8\u0141\u00A4\u013D\u015A\u00A7\u00A8\u0160\u015E\u0164\u0179\u00AD\u017D\u017B\u00B0\u0105\u02DB\u0142\u00B4\u013E\u015B\u02C7\u00B8\u0161\u015F\u0165\u017A\u02DD\u017E\u017C\u0154\u00C1\u00C2\u0102\u00C4\u0139\u0106\u00C7\u010C\u00C9\u0118\u00CB\u011A\u00CD\u00CE\u010E\u0110\u0143\u0147\u00D3\u00D4\u0150\u00D6\u00D7\u0158\u016E\u00DA\u0170\u00DC\u00DD\u0162\u00DF\u0155\u00E1\u00E2\u0103\u00E4\u013A\u0107\u00E7\u010D\u00E9\u0119\u00EB\u011B\u00ED\u00EE\u010F\u0111\u0144\u0148\u00F3\u00F4\u0151\u00F6\u00F7\u0159\u016F\u00FA\u0171\u00FC\u00FD\u0163\u02D9\"\n },\n \"cp28592\": \"iso88592\",\n \"iso88593\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\u0126\u02D8\u00A3\u00A4\uFFFD\u0124\u00A7\u00A8\u0130\u015E\u011E\u0134\u00AD\uFFFD\u017B\u00B0\u0127\u00B2\u00B3\u00B4\u00B5\u0125\u00B7\u00B8\u0131\u015F\u011F\u0135\u00BD\uFFFD\u017C\u00C0\u00C1\u00C2\uFFFD\u00C4\u010A\u0108\u00C7\u00C8\u00C9\u00CA\u00CB\u00CC\u00CD\u00CE\u00CF\uFFFD\u00D1\u00D2\u00D3\u00D4\u0120\u00D6\u00D7\u011C\u00D9\u00DA\u00DB\u00DC\u016C\u015C\u00DF\u00E0\u00E1\u00E2\uFFFD\u00E4\u010B\u0109\u00E7\u00E8\u00E9\u00EA\u00EB\u00EC\u00ED\u00EE\u00EF\uFFFD\u00F1\u00F2\u00F3\u00F4\u0121\u00F6\u00F7\u011D\u00F9\u00FA\u00FB\u00FC\u016D\u015D\u02D9\"\n },\n \"cp28593\": \"iso88593\",\n \"iso88594\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\u0104\u0138\u0156\u00A4\u0128\u013B\u00A7\u00A8\u0160\u0112\u0122\u0166\u00AD\u017D\u00AF\u00B0\u0105\u02DB\u0157\u00B4\u0129\u013C\u02C7\u00B8\u0161\u0113\u0123\u0167\u014A\u017E\u014B\u0100\u00C1\u00C2\u00C3\u00C4\u00C5\u00C6\u012E\u010C\u00C9\u0118\u00CB\u0116\u00CD\u00CE\u012A\u0110\u0145\u014C\u0136\u00D4\u00D5\u00D6\u00D7\u00D8\u0172\u00DA\u00DB\u00DC\u0168\u016A\u00DF\u0101\u00E1\u00E2\u00E3\u00E4\u00E5\u00E6\u012F\u010D\u00E9\u0119\u00EB\u0117\u00ED\u00EE\u012B\u0111\u0146\u014D\u0137\u00F4\u00F5\u00F6\u00F7\u00F8\u0173\u00FA\u00FB\u00FC\u0169\u016B\u02D9\"\n },\n \"cp28594\": \"iso88594\",\n \"iso88595\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\u0401\u0402\u0403\u0404\u0405\u0406\u0407\u0408\u0409\u040A\u040B\u040C\u00AD\u040E\u040F\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F\u2116\u0451\u0452\u0453\u0454\u0455\u0456\u0457\u0458\u0459\u045A\u045B\u045C\u00A7\u045E\u045F\"\n },\n \"cp28595\": \"iso88595\",\n \"iso88596\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\uFFFD\uFFFD\uFFFD\u00A4\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u060C\u00AD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u061B\uFFFD\uFFFD\uFFFD\u061F\uFFFD\u0621\u0622\u0623\u0624\u0625\u0626\u0627\u0628\u0629\u062A\u062B\u062C\u062D\u062E\u062F\u0630\u0631\u0632\u0633\u0634\u0635\u0636\u0637\u0638\u0639\u063A\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u0640\u0641\u0642\u0643\u0644\u0645\u0646\u0647\u0648\u0649\u064A\u064B\u064C\u064D\u064E\u064F\u0650\u0651\u0652\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\"\n },\n \"cp28596\": \"iso88596\",\n \"iso88597\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\u2018\u2019\u00A3\u20AC\u20AF\u00A6\u00A7\u00A8\u00A9\u037A\u00AB\u00AC\u00AD\uFFFD\u2015\u00B0\u00B1\u00B2\u00B3\u0384\u0385\u0386\u00B7\u0388\u0389\u038A\u00BB\u038C\u00BD\u038E\u038F\u0390\u0391\u0392\u0393\u0394\u0395\u0396\u0397\u0398\u0399\u039A\u039B\u039C\u039D\u039E\u039F\u03A0\u03A1\uFFFD\u03A3\u03A4\u03A5\u03A6\u03A7\u03A8\u03A9\u03AA\u03AB\u03AC\u03AD\u03AE\u03AF\u03B0\u03B1\u03B2\u03B3\u03B4\u03B5\u03B6\u03B7\u03B8\u03B9\u03BA\u03BB\u03BC\u03BD\u03BE\u03BF\u03C0\u03C1\u03C2\u03C3\u03C4\u03C5\u03C6\u03C7\u03C8\u03C9\u03CA\u03CB\u03CC\u03CD\u03CE\uFFFD\"\n },\n \"cp28597\": \"iso88597\",\n \"iso88598\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\uFFFD\u00A2\u00A3\u00A4\u00A5\u00A6\u00A7\u00A8\u00A9\u00D7\u00AB\u00AC\u00AD\u00AE\u00AF\u00B0\u00B1\u00B2\u00B3\u00B4\u00B5\u00B6\u00B7\u00B8\u00B9\u00F7\u00BB\u00BC\u00BD\u00BE\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u2017\u05D0\u05D1\u05D2\u05D3\u05D4\u05D5\u05D6\u05D7\u05D8\u05D9\u05DA\u05DB\u05DC\u05DD\u05DE\u05DF\u05E0\u05E1\u05E2\u05E3\u05E4\u05E5\u05E6\u05E7\u05E8\u05E9\u05EA\uFFFD\uFFFD\u200E\u200F\uFFFD\"\n },\n \"cp28598\": \"iso88598\",\n \"iso88599\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\u00A1\u00A2\u00A3\u00A4\u00A5\u00A6\u00A7\u00A8\u00A9\u00AA\u00AB\u00AC\u00AD\u00AE\u00AF\u00B0\u00B1\u00B2\u00B3\u00B4\u00B5\u00B6\u00B7\u00B8\u00B9\u00BA\u00BB\u00BC\u00BD\u00BE\u00BF\u00C0\u00C1\u00C2\u00C3\u00C4\u00C5\u00C6\u00C7\u00C8\u00C9\u00CA\u00CB\u00CC\u00CD\u00CE\u00CF\u011E\u00D1\u00D2\u00D3\u00D4\u00D5\u00D6\u00D7\u00D8\u00D9\u00DA\u00DB\u00DC\u0130\u015E\u00DF\u00E0\u00E1\u00E2\u00E3\u00E4\u00E5\u00E6\u00E7\u00E8\u00E9\u00EA\u00EB\u00EC\u00ED\u00EE\u00EF\u011F\u00F1\u00F2\u00F3\u00F4\u00F5\u00F6\u00F7\u00F8\u00F9\u00FA\u00FB\u00FC\u0131\u015F\u00FF\"\n },\n \"cp28599\": \"iso88599\",\n \"iso885910\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\u0104\u0112\u0122\u012A\u0128\u0136\u00A7\u013B\u0110\u0160\u0166\u017D\u00AD\u016A\u014A\u00B0\u0105\u0113\u0123\u012B\u0129\u0137\u00B7\u013C\u0111\u0161\u0167\u017E\u2015\u016B\u014B\u0100\u00C1\u00C2\u00C3\u00C4\u00C5\u00C6\u012E\u010C\u00C9\u0118\u00CB\u0116\u00CD\u00CE\u00CF\u00D0\u0145\u014C\u00D3\u00D4\u00D5\u00D6\u0168\u00D8\u0172\u00DA\u00DB\u00DC\u00DD\u00DE\u00DF\u0101\u00E1\u00E2\u00E3\u00E4\u00E5\u00E6\u012F\u010D\u00E9\u0119\u00EB\u0117\u00ED\u00EE\u00EF\u00F0\u0146\u014D\u00F3\u00F4\u00F5\u00F6\u0169\u00F8\u0173\u00FA\u00FB\u00FC\u00FD\u00FE\u0138\"\n },\n \"cp28600\": \"iso885910\",\n \"iso885911\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\u0E01\u0E02\u0E03\u0E04\u0E05\u0E06\u0E07\u0E08\u0E09\u0E0A\u0E0B\u0E0C\u0E0D\u0E0E\u0E0F\u0E10\u0E11\u0E12\u0E13\u0E14\u0E15\u0E16\u0E17\u0E18\u0E19\u0E1A\u0E1B\u0E1C\u0E1D\u0E1E\u0E1F\u0E20\u0E21\u0E22\u0E23\u0E24\u0E25\u0E26\u0E27\u0E28\u0E29\u0E2A\u0E2B\u0E2C\u0E2D\u0E2E\u0E2F\u0E30\u0E31\u0E32\u0E33\u0E34\u0E35\u0E36\u0E37\u0E38\u0E39\u0E3A\uFFFD\uFFFD\uFFFD\uFFFD\u0E3F\u0E40\u0E41\u0E42\u0E43\u0E44\u0E45\u0E46\u0E47\u0E48\u0E49\u0E4A\u0E4B\u0E4C\u0E4D\u0E4E\u0E4F\u0E50\u0E51\u0E52\u0E53\u0E54\u0E55\u0E56\u0E57\u0E58\u0E59\u0E5A\u0E5B\uFFFD\uFFFD\uFFFD\uFFFD\"\n },\n \"cp28601\": \"iso885911\",\n \"iso885913\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\u201D\u00A2\u00A3\u00A4\u201E\u00A6\u00A7\u00D8\u00A9\u0156\u00AB\u00AC\u00AD\u00AE\u00C6\u00B0\u00B1\u00B2\u00B3\u201C\u00B5\u00B6\u00B7\u00F8\u00B9\u0157\u00BB\u00BC\u00BD\u00BE\u00E6\u0104\u012E\u0100\u0106\u00C4\u00C5\u0118\u0112\u010C\u00C9\u0179\u0116\u0122\u0136\u012A\u013B\u0160\u0143\u0145\u00D3\u014C\u00D5\u00D6\u00D7\u0172\u0141\u015A\u016A\u00DC\u017B\u017D\u00DF\u0105\u012F\u0101\u0107\u00E4\u00E5\u0119\u0113\u010D\u00E9\u017A\u0117\u0123\u0137\u012B\u013C\u0161\u0144\u0146\u00F3\u014D\u00F5\u00F6\u00F7\u0173\u0142\u015B\u016B\u00FC\u017C\u017E\u2019\"\n },\n \"cp28603\": \"iso885913\",\n \"iso885914\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\u1E02\u1E03\u00A3\u010A\u010B\u1E0A\u00A7\u1E80\u00A9\u1E82\u1E0B\u1EF2\u00AD\u00AE\u0178\u1E1E\u1E1F\u0120\u0121\u1E40\u1E41\u00B6\u1E56\u1E81\u1E57\u1E83\u1E60\u1EF3\u1E84\u1E85\u1E61\u00C0\u00C1\u00C2\u00C3\u00C4\u00C5\u00C6\u00C7\u00C8\u00C9\u00CA\u00CB\u00CC\u00CD\u00CE\u00CF\u0174\u00D1\u00D2\u00D3\u00D4\u00D5\u00D6\u1E6A\u00D8\u00D9\u00DA\u00DB\u00DC\u00DD\u0176\u00DF\u00E0\u00E1\u00E2\u00E3\u00E4\u00E5\u00E6\u00E7\u00E8\u00E9\u00EA\u00EB\u00EC\u00ED\u00EE\u00EF\u0175\u00F1\u00F2\u00F3\u00F4\u00F5\u00F6\u1E6B\u00F8\u00F9\u00FA\u00FB\u00FC\u00FD\u0177\u00FF\"\n },\n \"cp28604\": \"iso885914\",\n \"iso885915\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\u00A1\u00A2\u00A3\u20AC\u00A5\u0160\u00A7\u0161\u00A9\u00AA\u00AB\u00AC\u00AD\u00AE\u00AF\u00B0\u00B1\u00B2\u00B3\u017D\u00B5\u00B6\u00B7\u017E\u00B9\u00BA\u00BB\u0152\u0153\u0178\u00BF\u00C0\u00C1\u00C2\u00C3\u00C4\u00C5\u00C6\u00C7\u00C8\u00C9\u00CA\u00CB\u00CC\u00CD\u00CE\u00CF\u00D0\u00D1\u00D2\u00D3\u00D4\u00D5\u00D6\u00D7\u00D8\u00D9\u00DA\u00DB\u00DC\u00DD\u00DE\u00DF\u00E0\u00E1\u00E2\u00E3\u00E4\u00E5\u00E6\u00E7\u00E8\u00E9\u00EA\u00EB\u00EC\u00ED\u00EE\u00EF\u00F0\u00F1\u00F2\u00F3\u00F4\u00F5\u00F6\u00F7\u00F8\u00F9\u00FA\u00FB\u00FC\u00FD\u00FE\u00FF\"\n },\n \"cp28605\": \"iso885915\",\n \"iso885916\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\u0104\u0105\u0141\u20AC\u201E\u0160\u00A7\u0161\u00A9\u0218\u00AB\u0179\u00AD\u017A\u017B\u00B0\u00B1\u010C\u0142\u017D\u201D\u00B6\u00B7\u017E\u010D\u0219\u00BB\u0152\u0153\u0178\u017C\u00C0\u00C1\u00C2\u0102\u00C4\u0106\u00C6\u00C7\u00C8\u00C9\u00CA\u00CB\u00CC\u00CD\u00CE\u00CF\u0110\u0143\u00D2\u00D3\u00D4\u0150\u00D6\u015A\u0170\u00D9\u00DA\u00DB\u00DC\u0118\u021A\u00DF\u00E0\u00E1\u00E2\u0103\u00E4\u0107\u00E6\u00E7\u00E8\u00E9\u00EA\u00EB\u00EC\u00ED\u00EE\u00EF\u0111\u0144\u00F2\u00F3\u00F4\u0151\u00F6\u015B\u0171\u00F9\u00FA\u00FB\u00FC\u0119\u021B\u00FF\"\n },\n \"cp28606\": \"iso885916\",\n \"cp437\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u00C7\u00FC\u00E9\u00E2\u00E4\u00E0\u00E5\u00E7\u00EA\u00EB\u00E8\u00EF\u00EE\u00EC\u00C4\u00C5\u00C9\u00E6\u00C6\u00F4\u00F6\u00F2\u00FB\u00F9\u00FF\u00D6\u00DC\u00A2\u00A3\u00A5\u20A7\u0192\u00E1\u00ED\u00F3\u00FA\u00F1\u00D1\u00AA\u00BA\u00BF\u2310\u00AC\u00BD\u00BC\u00A1\u00AB\u00BB\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03B1\u00DF\u0393\u03C0\u03A3\u03C3\u00B5\u03C4\u03A6\u0398\u03A9\u03B4\u221E\u03C6\u03B5\u2229\u2261\u00B1\u2265\u2264\u2320\u2321\u00F7\u2248\u00B0\u2219\u00B7\u221A\u207F\u00B2\u25A0\u00A0\"\n },\n \"ibm437\": \"cp437\",\n \"csibm437\": \"cp437\",\n \"cp737\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u0391\u0392\u0393\u0394\u0395\u0396\u0397\u0398\u0399\u039A\u039B\u039C\u039D\u039E\u039F\u03A0\u03A1\u03A3\u03A4\u03A5\u03A6\u03A7\u03A8\u03A9\u03B1\u03B2\u03B3\u03B4\u03B5\u03B6\u03B7\u03B8\u03B9\u03BA\u03BB\u03BC\u03BD\u03BE\u03BF\u03C0\u03C1\u03C3\u03C2\u03C4\u03C5\u03C6\u03C7\u03C8\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03C9\u03AC\u03AD\u03AE\u03CA\u03AF\u03CC\u03CD\u03CB\u03CE\u0386\u0388\u0389\u038A\u038C\u038E\u038F\u00B1\u2265\u2264\u03AA\u03AB\u00F7\u2248\u00B0\u2219\u00B7\u221A\u207F\u00B2\u25A0\u00A0\"\n },\n \"ibm737\": \"cp737\",\n \"csibm737\": \"cp737\",\n \"cp775\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u0106\u00FC\u00E9\u0101\u00E4\u0123\u00E5\u0107\u0142\u0113\u0156\u0157\u012B\u0179\u00C4\u00C5\u00C9\u00E6\u00C6\u014D\u00F6\u0122\u00A2\u015A\u015B\u00D6\u00DC\u00F8\u00A3\u00D8\u00D7\u00A4\u0100\u012A\u00F3\u017B\u017C\u017A\u201D\u00A6\u00A9\u00AE\u00AC\u00BD\u00BC\u0141\u00AB\u00BB\u2591\u2592\u2593\u2502\u2524\u0104\u010C\u0118\u0116\u2563\u2551\u2557\u255D\u012E\u0160\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u0172\u016A\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u017D\u0105\u010D\u0119\u0117\u012F\u0161\u0173\u016B\u017E\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u00D3\u00DF\u014C\u0143\u00F5\u00D5\u00B5\u0144\u0136\u0137\u013B\u013C\u0146\u0112\u0145\u2019\u00AD\u00B1\u201C\u00BE\u00B6\u00A7\u00F7\u201E\u00B0\u2219\u00B7\u00B9\u00B3\u00B2\u25A0\u00A0\"\n },\n \"ibm775\": \"cp775\",\n \"csibm775\": \"cp775\",\n \"cp850\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u00C7\u00FC\u00E9\u00E2\u00E4\u00E0\u00E5\u00E7\u00EA\u00EB\u00E8\u00EF\u00EE\u00EC\u00C4\u00C5\u00C9\u00E6\u00C6\u00F4\u00F6\u00F2\u00FB\u00F9\u00FF\u00D6\u00DC\u00F8\u00A3\u00D8\u00D7\u0192\u00E1\u00ED\u00F3\u00FA\u00F1\u00D1\u00AA\u00BA\u00BF\u00AE\u00AC\u00BD\u00BC\u00A1\u00AB\u00BB\u2591\u2592\u2593\u2502\u2524\u00C1\u00C2\u00C0\u00A9\u2563\u2551\u2557\u255D\u00A2\u00A5\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u00E3\u00C3\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u00A4\u00F0\u00D0\u00CA\u00CB\u00C8\u0131\u00CD\u00CE\u00CF\u2518\u250C\u2588\u2584\u00A6\u00CC\u2580\u00D3\u00DF\u00D4\u00D2\u00F5\u00D5\u00B5\u00FE\u00DE\u00DA\u00DB\u00D9\u00FD\u00DD\u00AF\u00B4\u00AD\u00B1\u2017\u00BE\u00B6\u00A7\u00F7\u00B8\u00B0\u00A8\u00B7\u00B9\u00B3\u00B2\u25A0\u00A0\"\n },\n \"ibm850\": \"cp850\",\n \"csibm850\": \"cp850\",\n \"cp852\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u00C7\u00FC\u00E9\u00E2\u00E4\u016F\u0107\u00E7\u0142\u00EB\u0150\u0151\u00EE\u0179\u00C4\u0106\u00C9\u0139\u013A\u00F4\u00F6\u013D\u013E\u015A\u015B\u00D6\u00DC\u0164\u0165\u0141\u00D7\u010D\u00E1\u00ED\u00F3\u00FA\u0104\u0105\u017D\u017E\u0118\u0119\u00AC\u017A\u010C\u015F\u00AB\u00BB\u2591\u2592\u2593\u2502\u2524\u00C1\u00C2\u011A\u015E\u2563\u2551\u2557\u255D\u017B\u017C\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u0102\u0103\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u00A4\u0111\u0110\u010E\u00CB\u010F\u0147\u00CD\u00CE\u011B\u2518\u250C\u2588\u2584\u0162\u016E\u2580\u00D3\u00DF\u00D4\u0143\u0144\u0148\u0160\u0161\u0154\u00DA\u0155\u0170\u00FD\u00DD\u0163\u00B4\u00AD\u02DD\u02DB\u02C7\u02D8\u00A7\u00F7\u00B8\u00B0\u00A8\u02D9\u0171\u0158\u0159\u25A0\u00A0\"\n },\n \"ibm852\": \"cp852\",\n \"csibm852\": \"cp852\",\n \"cp855\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u0452\u0402\u0453\u0403\u0451\u0401\u0454\u0404\u0455\u0405\u0456\u0406\u0457\u0407\u0458\u0408\u0459\u0409\u045A\u040A\u045B\u040B\u045C\u040C\u045E\u040E\u045F\u040F\u044E\u042E\u044A\u042A\u0430\u0410\u0431\u0411\u0446\u0426\u0434\u0414\u0435\u0415\u0444\u0424\u0433\u0413\u00AB\u00BB\u2591\u2592\u2593\u2502\u2524\u0445\u0425\u0438\u0418\u2563\u2551\u2557\u255D\u0439\u0419\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u043A\u041A\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u00A4\u043B\u041B\u043C\u041C\u043D\u041D\u043E\u041E\u043F\u2518\u250C\u2588\u2584\u041F\u044F\u2580\u042F\u0440\u0420\u0441\u0421\u0442\u0422\u0443\u0423\u0436\u0416\u0432\u0412\u044C\u042C\u2116\u00AD\u044B\u042B\u0437\u0417\u0448\u0428\u044D\u042D\u0449\u0429\u0447\u0427\u00A7\u25A0\u00A0\"\n },\n \"ibm855\": \"cp855\",\n \"csibm855\": \"cp855\",\n \"cp856\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u05D0\u05D1\u05D2\u05D3\u05D4\u05D5\u05D6\u05D7\u05D8\u05D9\u05DA\u05DB\u05DC\u05DD\u05DE\u05DF\u05E0\u05E1\u05E2\u05E3\u05E4\u05E5\u05E6\u05E7\u05E8\u05E9\u05EA\uFFFD\u00A3\uFFFD\u00D7\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u00AE\u00AC\u00BD\u00BC\uFFFD\u00AB\u00BB\u2591\u2592\u2593\u2502\u2524\uFFFD\uFFFD\uFFFD\u00A9\u2563\u2551\u2557\u255D\u00A2\u00A5\u2510\u2514\u2534\u252C\u251C\u2500\u253C\uFFFD\uFFFD\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u00A4\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u2518\u250C\u2588\u2584\u00A6\uFFFD\u2580\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u00B5\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u00AF\u00B4\u00AD\u00B1\u2017\u00BE\u00B6\u00A7\u00F7\u00B8\u00B0\u00A8\u00B7\u00B9\u00B3\u00B2\u25A0\u00A0\"\n },\n \"ibm856\": \"cp856\",\n \"csibm856\": \"cp856\",\n \"cp857\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u00C7\u00FC\u00E9\u00E2\u00E4\u00E0\u00E5\u00E7\u00EA\u00EB\u00E8\u00EF\u00EE\u0131\u00C4\u00C5\u00C9\u00E6\u00C6\u00F4\u00F6\u00F2\u00FB\u00F9\u0130\u00D6\u00DC\u00F8\u00A3\u00D8\u015E\u015F\u00E1\u00ED\u00F3\u00FA\u00F1\u00D1\u011E\u011F\u00BF\u00AE\u00AC\u00BD\u00BC\u00A1\u00AB\u00BB\u2591\u2592\u2593\u2502\u2524\u00C1\u00C2\u00C0\u00A9\u2563\u2551\u2557\u255D\u00A2\u00A5\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u00E3\u00C3\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u00A4\u00BA\u00AA\u00CA\u00CB\u00C8\uFFFD\u00CD\u00CE\u00CF\u2518\u250C\u2588\u2584\u00A6\u00CC\u2580\u00D3\u00DF\u00D4\u00D2\u00F5\u00D5\u00B5\uFFFD\u00D7\u00DA\u00DB\u00D9\u00EC\u00FF\u00AF\u00B4\u00AD\u00B1\uFFFD\u00BE\u00B6\u00A7\u00F7\u00B8\u00B0\u00A8\u00B7\u00B9\u00B3\u00B2\u25A0\u00A0\"\n },\n \"ibm857\": \"cp857\",\n \"csibm857\": \"cp857\",\n \"cp858\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u00C7\u00FC\u00E9\u00E2\u00E4\u00E0\u00E5\u00E7\u00EA\u00EB\u00E8\u00EF\u00EE\u00EC\u00C4\u00C5\u00C9\u00E6\u00C6\u00F4\u00F6\u00F2\u00FB\u00F9\u00FF\u00D6\u00DC\u00F8\u00A3\u00D8\u00D7\u0192\u00E1\u00ED\u00F3\u00FA\u00F1\u00D1\u00AA\u00BA\u00BF\u00AE\u00AC\u00BD\u00BC\u00A1\u00AB\u00BB\u2591\u2592\u2593\u2502\u2524\u00C1\u00C2\u00C0\u00A9\u2563\u2551\u2557\u255D\u00A2\u00A5\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u00E3\u00C3\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u00A4\u00F0\u00D0\u00CA\u00CB\u00C8\u20AC\u00CD\u00CE\u00CF\u2518\u250C\u2588\u2584\u00A6\u00CC\u2580\u00D3\u00DF\u00D4\u00D2\u00F5\u00D5\u00B5\u00FE\u00DE\u00DA\u00DB\u00D9\u00FD\u00DD\u00AF\u00B4\u00AD\u00B1\u2017\u00BE\u00B6\u00A7\u00F7\u00B8\u00B0\u00A8\u00B7\u00B9\u00B3\u00B2\u25A0\u00A0\"\n },\n \"ibm858\": \"cp858\",\n \"csibm858\": \"cp858\",\n \"cp860\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u00C7\u00FC\u00E9\u00E2\u00E3\u00E0\u00C1\u00E7\u00EA\u00CA\u00E8\u00CD\u00D4\u00EC\u00C3\u00C2\u00C9\u00C0\u00C8\u00F4\u00F5\u00F2\u00DA\u00F9\u00CC\u00D5\u00DC\u00A2\u00A3\u00D9\u20A7\u00D3\u00E1\u00ED\u00F3\u00FA\u00F1\u00D1\u00AA\u00BA\u00BF\u00D2\u00AC\u00BD\u00BC\u00A1\u00AB\u00BB\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03B1\u00DF\u0393\u03C0\u03A3\u03C3\u00B5\u03C4\u03A6\u0398\u03A9\u03B4\u221E\u03C6\u03B5\u2229\u2261\u00B1\u2265\u2264\u2320\u2321\u00F7\u2248\u00B0\u2219\u00B7\u221A\u207F\u00B2\u25A0\u00A0\"\n },\n \"ibm860\": \"cp860\",\n \"csibm860\": \"cp860\",\n \"cp861\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u00C7\u00FC\u00E9\u00E2\u00E4\u00E0\u00E5\u00E7\u00EA\u00EB\u00E8\u00D0\u00F0\u00DE\u00C4\u00C5\u00C9\u00E6\u00C6\u00F4\u00F6\u00FE\u00FB\u00DD\u00FD\u00D6\u00DC\u00F8\u00A3\u00D8\u20A7\u0192\u00E1\u00ED\u00F3\u00FA\u00C1\u00CD\u00D3\u00DA\u00BF\u2310\u00AC\u00BD\u00BC\u00A1\u00AB\u00BB\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03B1\u00DF\u0393\u03C0\u03A3\u03C3\u00B5\u03C4\u03A6\u0398\u03A9\u03B4\u221E\u03C6\u03B5\u2229\u2261\u00B1\u2265\u2264\u2320\u2321\u00F7\u2248\u00B0\u2219\u00B7\u221A\u207F\u00B2\u25A0\u00A0\"\n },\n \"ibm861\": \"cp861\",\n \"csibm861\": \"cp861\",\n \"cp862\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u05D0\u05D1\u05D2\u05D3\u05D4\u05D5\u05D6\u05D7\u05D8\u05D9\u05DA\u05DB\u05DC\u05DD\u05DE\u05DF\u05E0\u05E1\u05E2\u05E3\u05E4\u05E5\u05E6\u05E7\u05E8\u05E9\u05EA\u00A2\u00A3\u00A5\u20A7\u0192\u00E1\u00ED\u00F3\u00FA\u00F1\u00D1\u00AA\u00BA\u00BF\u2310\u00AC\u00BD\u00BC\u00A1\u00AB\u00BB\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03B1\u00DF\u0393\u03C0\u03A3\u03C3\u00B5\u03C4\u03A6\u0398\u03A9\u03B4\u221E\u03C6\u03B5\u2229\u2261\u00B1\u2265\u2264\u2320\u2321\u00F7\u2248\u00B0\u2219\u00B7\u221A\u207F\u00B2\u25A0\u00A0\"\n },\n \"ibm862\": \"cp862\",\n \"csibm862\": \"cp862\",\n \"cp863\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u00C7\u00FC\u00E9\u00E2\u00C2\u00E0\u00B6\u00E7\u00EA\u00EB\u00E8\u00EF\u00EE\u2017\u00C0\u00A7\u00C9\u00C8\u00CA\u00F4\u00CB\u00CF\u00FB\u00F9\u00A4\u00D4\u00DC\u00A2\u00A3\u00D9\u00DB\u0192\u00A6\u00B4\u00F3\u00FA\u00A8\u00B8\u00B3\u00AF\u00CE\u2310\u00AC\u00BD\u00BC\u00BE\u00AB\u00BB\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03B1\u00DF\u0393\u03C0\u03A3\u03C3\u00B5\u03C4\u03A6\u0398\u03A9\u03B4\u221E\u03C6\u03B5\u2229\u2261\u00B1\u2265\u2264\u2320\u2321\u00F7\u2248\u00B0\u2219\u00B7\u221A\u207F\u00B2\u25A0\u00A0\"\n },\n \"ibm863\": \"cp863\",\n \"csibm863\": \"cp863\",\n \"cp864\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$\u066A&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\u007F\u00B0\u00B7\u2219\u221A\u2592\u2500\u2502\u253C\u2524\u252C\u251C\u2534\u2510\u250C\u2514\u2518\u03B2\u221E\u03C6\u00B1\u00BD\u00BC\u2248\u00AB\u00BB\uFEF7\uFEF8\uFFFD\uFFFD\uFEFB\uFEFC\uFFFD\u00A0\u00AD\uFE82\u00A3\u00A4\uFE84\uFFFD\uFFFD\uFE8E\uFE8F\uFE95\uFE99\u060C\uFE9D\uFEA1\uFEA5\u0660\u0661\u0662\u0663\u0664\u0665\u0666\u0667\u0668\u0669\uFED1\u061B\uFEB1\uFEB5\uFEB9\u061F\u00A2\uFE80\uFE81\uFE83\uFE85\uFECA\uFE8B\uFE8D\uFE91\uFE93\uFE97\uFE9B\uFE9F\uFEA3\uFEA7\uFEA9\uFEAB\uFEAD\uFEAF\uFEB3\uFEB7\uFEBB\uFEBF\uFEC1\uFEC5\uFECB\uFECF\u00A6\u00AC\u00F7\u00D7\uFEC9\u0640\uFED3\uFED7\uFEDB\uFEDF\uFEE3\uFEE7\uFEEB\uFEED\uFEEF\uFEF3\uFEBD\uFECC\uFECE\uFECD\uFEE1\uFE7D\u0651\uFEE5\uFEE9\uFEEC\uFEF0\uFEF2\uFED0\uFED5\uFEF5\uFEF6\uFEDD\uFED9\uFEF1\u25A0\uFFFD\"\n },\n \"ibm864\": \"cp864\",\n \"csibm864\": \"cp864\",\n \"cp865\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u00C7\u00FC\u00E9\u00E2\u00E4\u00E0\u00E5\u00E7\u00EA\u00EB\u00E8\u00EF\u00EE\u00EC\u00C4\u00C5\u00C9\u00E6\u00C6\u00F4\u00F6\u00F2\u00FB\u00F9\u00FF\u00D6\u00DC\u00F8\u00A3\u00D8\u20A7\u0192\u00E1\u00ED\u00F3\u00FA\u00F1\u00D1\u00AA\u00BA\u00BF\u2310\u00AC\u00BD\u00BC\u00A1\u00AB\u00A4\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03B1\u00DF\u0393\u03C0\u03A3\u03C3\u00B5\u03C4\u03A6\u0398\u03A9\u03B4\u221E\u03C6\u03B5\u2229\u2261\u00B1\u2265\u2264\u2320\u2321\u00F7\u2248\u00B0\u2219\u00B7\u221A\u207F\u00B2\u25A0\u00A0\"\n },\n \"ibm865\": \"cp865\",\n \"csibm865\": \"cp865\",\n \"cp866\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F\u0401\u0451\u0404\u0454\u0407\u0457\u040E\u045E\u00B0\u2219\u00B7\u221A\u2116\u00A4\u25A0\u00A0\"\n },\n \"ibm866\": \"cp866\",\n \"csibm866\": \"cp866\",\n \"cp869\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u0386\uFFFD\u00B7\u00AC\u00A6\u2018\u2019\u0388\u2015\u0389\u038A\u03AA\u038C\uFFFD\uFFFD\u038E\u03AB\u00A9\u038F\u00B2\u00B3\u03AC\u00A3\u03AD\u03AE\u03AF\u03CA\u0390\u03CC\u03CD\u0391\u0392\u0393\u0394\u0395\u0396\u0397\u00BD\u0398\u0399\u00AB\u00BB\u2591\u2592\u2593\u2502\u2524\u039A\u039B\u039C\u039D\u2563\u2551\u2557\u255D\u039E\u039F\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u03A0\u03A1\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u03A3\u03A4\u03A5\u03A6\u03A7\u03A8\u03A9\u03B1\u03B2\u03B3\u2518\u250C\u2588\u2584\u03B4\u03B5\u2580\u03B6\u03B7\u03B8\u03B9\u03BA\u03BB\u03BC\u03BD\u03BE\u03BF\u03C0\u03C1\u03C3\u03C2\u03C4\u0384\u00AD\u00B1\u03C5\u03C6\u03C7\u00A7\u03C8\u0385\u00B0\u00A8\u03C9\u03CB\u03B0\u03CE\u25A0\u00A0\"\n },\n \"ibm869\": \"cp869\",\n \"csibm869\": \"cp869\",\n \"cp922\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\u00A1\u00A2\u00A3\u00A4\u00A5\u00A6\u00A7\u00A8\u00A9\u00AA\u00AB\u00AC\u00AD\u00AE\u203E\u00B0\u00B1\u00B2\u00B3\u00B4\u00B5\u00B6\u00B7\u00B8\u00B9\u00BA\u00BB\u00BC\u00BD\u00BE\u00BF\u00C0\u00C1\u00C2\u00C3\u00C4\u00C5\u00C6\u00C7\u00C8\u00C9\u00CA\u00CB\u00CC\u00CD\u00CE\u00CF\u0160\u00D1\u00D2\u00D3\u00D4\u00D5\u00D6\u00D7\u00D8\u00D9\u00DA\u00DB\u00DC\u00DD\u017D\u00DF\u00E0\u00E1\u00E2\u00E3\u00E4\u00E5\u00E6\u00E7\u00E8\u00E9\u00EA\u00EB\u00EC\u00ED\u00EE\u00EF\u0161\u00F1\u00F2\u00F3\u00F4\u00F5\u00F6\u00F7\u00F8\u00F9\u00FA\u00FB\u00FC\u00FD\u017E\u00FF\"\n },\n \"ibm922\": \"cp922\",\n \"csibm922\": \"cp922\",\n \"cp1046\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\uFE88\u00D7\u00F7\uF8F6\uF8F5\uF8F4\uF8F7\uFE71\u0088\u25A0\u2502\u2500\u2510\u250C\u2514\u2518\uFE79\uFE7B\uFE7D\uFE7F\uFE77\uFE8A\uFEF0\uFEF3\uFEF2\uFECE\uFECF\uFED0\uFEF6\uFEF8\uFEFA\uFEFC\u00A0\uF8FA\uF8F9\uF8F8\u00A4\uF8FB\uFE8B\uFE91\uFE97\uFE9B\uFE9F\uFEA3\u060C\u00AD\uFEA7\uFEB3\u0660\u0661\u0662\u0663\u0664\u0665\u0666\u0667\u0668\u0669\uFEB7\u061B\uFEBB\uFEBF\uFECA\u061F\uFECB\u0621\u0622\u0623\u0624\u0625\u0626\u0627\u0628\u0629\u062A\u062B\u062C\u062D\u062E\u062F\u0630\u0631\u0632\u0633\u0634\u0635\u0636\u0637\uFEC7\u0639\u063A\uFECC\uFE82\uFE84\uFE8E\uFED3\u0640\u0641\u0642\u0643\u0644\u0645\u0646\u0647\u0648\u0649\u064A\u064B\u064C\u064D\u064E\u064F\u0650\u0651\u0652\uFED7\uFEDB\uFEDF\uF8FC\uFEF5\uFEF7\uFEF9\uFEFB\uFEE3\uFEE7\uFEEC\uFEE9\uFFFD\"\n },\n \"ibm1046\": \"cp1046\",\n \"csibm1046\": \"cp1046\",\n \"cp1124\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\u0401\u0402\u0490\u0404\u0405\u0406\u0407\u0408\u0409\u040A\u040B\u040C\u00AD\u040E\u040F\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F\u2116\u0451\u0452\u0491\u0454\u0455\u0456\u0457\u0458\u0459\u045A\u045B\u045C\u00A7\u045E\u045F\"\n },\n \"ibm1124\": \"cp1124\",\n \"csibm1124\": \"cp1124\",\n \"cp1125\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F\u0401\u0451\u0490\u0491\u0404\u0454\u0406\u0456\u0407\u0457\u00B7\u221A\u2116\u00A4\u25A0\u00A0\"\n },\n \"ibm1125\": \"cp1125\",\n \"csibm1125\": \"cp1125\",\n \"cp1129\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\u00A1\u00A2\u00A3\u00A4\u00A5\u00A6\u00A7\u0153\u00A9\u00AA\u00AB\u00AC\u00AD\u00AE\u00AF\u00B0\u00B1\u00B2\u00B3\u0178\u00B5\u00B6\u00B7\u0152\u00B9\u00BA\u00BB\u00BC\u00BD\u00BE\u00BF\u00C0\u00C1\u00C2\u0102\u00C4\u00C5\u00C6\u00C7\u00C8\u00C9\u00CA\u00CB\u0300\u00CD\u00CE\u00CF\u0110\u00D1\u0309\u00D3\u00D4\u01A0\u00D6\u00D7\u00D8\u00D9\u00DA\u00DB\u00DC\u01AF\u0303\u00DF\u00E0\u00E1\u00E2\u0103\u00E4\u00E5\u00E6\u00E7\u00E8\u00E9\u00EA\u00EB\u0301\u00ED\u00EE\u00EF\u0111\u00F1\u0323\u00F3\u00F4\u01A1\u00F6\u00F7\u00F8\u00F9\u00FA\u00FB\u00FC\u01B0\u20AB\u00FF\"\n },\n \"ibm1129\": \"cp1129\",\n \"csibm1129\": \"cp1129\",\n \"cp1133\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\u0E81\u0E82\u0E84\u0E87\u0E88\u0EAA\u0E8A\u0E8D\u0E94\u0E95\u0E96\u0E97\u0E99\u0E9A\u0E9B\u0E9C\u0E9D\u0E9E\u0E9F\u0EA1\u0EA2\u0EA3\u0EA5\u0EA7\u0EAB\u0EAD\u0EAE\uFFFD\uFFFD\uFFFD\u0EAF\u0EB0\u0EB2\u0EB3\u0EB4\u0EB5\u0EB6\u0EB7\u0EB8\u0EB9\u0EBC\u0EB1\u0EBB\u0EBD\uFFFD\uFFFD\uFFFD\u0EC0\u0EC1\u0EC2\u0EC3\u0EC4\u0EC8\u0EC9\u0ECA\u0ECB\u0ECC\u0ECD\u0EC6\uFFFD\u0EDC\u0EDD\u20AD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u0ED0\u0ED1\u0ED2\u0ED3\u0ED4\u0ED5\u0ED6\u0ED7\u0ED8\u0ED9\uFFFD\uFFFD\u00A2\u00AC\u00A6\uFFFD\"\n },\n \"ibm1133\": \"cp1133\",\n \"csibm1133\": \"cp1133\",\n \"cp1161\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u0E48\u0E01\u0E02\u0E03\u0E04\u0E05\u0E06\u0E07\u0E08\u0E09\u0E0A\u0E0B\u0E0C\u0E0D\u0E0E\u0E0F\u0E10\u0E11\u0E12\u0E13\u0E14\u0E15\u0E16\u0E17\u0E18\u0E19\u0E1A\u0E1B\u0E1C\u0E1D\u0E1E\u0E1F\u0E20\u0E21\u0E22\u0E23\u0E24\u0E25\u0E26\u0E27\u0E28\u0E29\u0E2A\u0E2B\u0E2C\u0E2D\u0E2E\u0E2F\u0E30\u0E31\u0E32\u0E33\u0E34\u0E35\u0E36\u0E37\u0E38\u0E39\u0E3A\u0E49\u0E4A\u0E4B\u20AC\u0E3F\u0E40\u0E41\u0E42\u0E43\u0E44\u0E45\u0E46\u0E47\u0E48\u0E49\u0E4A\u0E4B\u0E4C\u0E4D\u0E4E\u0E4F\u0E50\u0E51\u0E52\u0E53\u0E54\u0E55\u0E56\u0E57\u0E58\u0E59\u0E5A\u0E5B\u00A2\u00AC\u00A6\u00A0\"\n },\n \"ibm1161\": \"cp1161\",\n \"csibm1161\": \"cp1161\",\n \"cp1162\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u20AC\u0081\u0082\u0083\u0084\u2026\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\u0E01\u0E02\u0E03\u0E04\u0E05\u0E06\u0E07\u0E08\u0E09\u0E0A\u0E0B\u0E0C\u0E0D\u0E0E\u0E0F\u0E10\u0E11\u0E12\u0E13\u0E14\u0E15\u0E16\u0E17\u0E18\u0E19\u0E1A\u0E1B\u0E1C\u0E1D\u0E1E\u0E1F\u0E20\u0E21\u0E22\u0E23\u0E24\u0E25\u0E26\u0E27\u0E28\u0E29\u0E2A\u0E2B\u0E2C\u0E2D\u0E2E\u0E2F\u0E30\u0E31\u0E32\u0E33\u0E34\u0E35\u0E36\u0E37\u0E38\u0E39\u0E3A\uFFFD\uFFFD\uFFFD\uFFFD\u0E3F\u0E40\u0E41\u0E42\u0E43\u0E44\u0E45\u0E46\u0E47\u0E48\u0E49\u0E4A\u0E4B\u0E4C\u0E4D\u0E4E\u0E4F\u0E50\u0E51\u0E52\u0E53\u0E54\u0E55\u0E56\u0E57\u0E58\u0E59\u0E5A\u0E5B\uFFFD\uFFFD\uFFFD\uFFFD\"\n },\n \"ibm1162\": \"cp1162\",\n \"csibm1162\": \"cp1162\",\n \"cp1163\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\u00A1\u00A2\u00A3\u20AC\u00A5\u00A6\u00A7\u0153\u00A9\u00AA\u00AB\u00AC\u00AD\u00AE\u00AF\u00B0\u00B1\u00B2\u00B3\u0178\u00B5\u00B6\u00B7\u0152\u00B9\u00BA\u00BB\u00BC\u00BD\u00BE\u00BF\u00C0\u00C1\u00C2\u0102\u00C4\u00C5\u00C6\u00C7\u00C8\u00C9\u00CA\u00CB\u0300\u00CD\u00CE\u00CF\u0110\u00D1\u0309\u00D3\u00D4\u01A0\u00D6\u00D7\u00D8\u00D9\u00DA\u00DB\u00DC\u01AF\u0303\u00DF\u00E0\u00E1\u00E2\u0103\u00E4\u00E5\u00E6\u00E7\u00E8\u00E9\u00EA\u00EB\u0301\u00ED\u00EE\u00EF\u0111\u00F1\u0323\u00F3\u00F4\u01A1\u00F6\u00F7\u00F8\u00F9\u00FA\u00FB\u00FC\u01B0\u20AB\u00FF\"\n },\n \"ibm1163\": \"cp1163\",\n \"csibm1163\": \"cp1163\",\n \"maccroatian\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u00C4\u00C5\u00C7\u00C9\u00D1\u00D6\u00DC\u00E1\u00E0\u00E2\u00E4\u00E3\u00E5\u00E7\u00E9\u00E8\u00EA\u00EB\u00ED\u00EC\u00EE\u00EF\u00F1\u00F3\u00F2\u00F4\u00F6\u00F5\u00FA\u00F9\u00FB\u00FC\u2020\u00B0\u00A2\u00A3\u00A7\u2022\u00B6\u00DF\u00AE\u0160\u2122\u00B4\u00A8\u2260\u017D\u00D8\u221E\u00B1\u2264\u2265\u2206\u00B5\u2202\u2211\u220F\u0161\u222B\u00AA\u00BA\u2126\u017E\u00F8\u00BF\u00A1\u00AC\u221A\u0192\u2248\u0106\u00AB\u010C\u2026\u00A0\u00C0\u00C3\u00D5\u0152\u0153\u0110\u2014\u201C\u201D\u2018\u2019\u00F7\u25CA\uFFFD\u00A9\u2044\u00A4\u2039\u203A\u00C6\u00BB\u2013\u00B7\u201A\u201E\u2030\u00C2\u0107\u00C1\u010D\u00C8\u00CD\u00CE\u00CF\u00CC\u00D3\u00D4\u0111\u00D2\u00DA\u00DB\u00D9\u0131\u02C6\u02DC\u00AF\u03C0\u00CB\u02DA\u00B8\u00CA\u00E6\u02C7\"\n },\n \"maccyrillic\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u2020\u00B0\u00A2\u00A3\u00A7\u2022\u00B6\u0406\u00AE\u00A9\u2122\u0402\u0452\u2260\u0403\u0453\u221E\u00B1\u2264\u2265\u0456\u00B5\u2202\u0408\u0404\u0454\u0407\u0457\u0409\u0459\u040A\u045A\u0458\u0405\u00AC\u221A\u0192\u2248\u2206\u00AB\u00BB\u2026\u00A0\u040B\u045B\u040C\u045C\u0455\u2013\u2014\u201C\u201D\u2018\u2019\u00F7\u201E\u040E\u045E\u040F\u045F\u2116\u0401\u0451\u044F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u00A4\"\n },\n \"macgreek\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u00C4\u00B9\u00B2\u00C9\u00B3\u00D6\u00DC\u0385\u00E0\u00E2\u00E4\u0384\u00A8\u00E7\u00E9\u00E8\u00EA\u00EB\u00A3\u2122\u00EE\u00EF\u2022\u00BD\u2030\u00F4\u00F6\u00A6\u00AD\u00F9\u00FB\u00FC\u2020\u0393\u0394\u0398\u039B\u039E\u03A0\u00DF\u00AE\u00A9\u03A3\u03AA\u00A7\u2260\u00B0\u0387\u0391\u00B1\u2264\u2265\u00A5\u0392\u0395\u0396\u0397\u0399\u039A\u039C\u03A6\u03AB\u03A8\u03A9\u03AC\u039D\u00AC\u039F\u03A1\u2248\u03A4\u00AB\u00BB\u2026\u00A0\u03A5\u03A7\u0386\u0388\u0153\u2013\u2015\u201C\u201D\u2018\u2019\u00F7\u0389\u038A\u038C\u038E\u03AD\u03AE\u03AF\u03CC\u038F\u03CD\u03B1\u03B2\u03C8\u03B4\u03B5\u03C6\u03B3\u03B7\u03B9\u03BE\u03BA\u03BB\u03BC\u03BD\u03BF\u03C0\u03CE\u03C1\u03C3\u03C4\u03B8\u03C9\u03C2\u03C7\u03C5\u03B6\u03CA\u03CB\u0390\u03B0\uFFFD\"\n },\n \"maciceland\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u00C4\u00C5\u00C7\u00C9\u00D1\u00D6\u00DC\u00E1\u00E0\u00E2\u00E4\u00E3\u00E5\u00E7\u00E9\u00E8\u00EA\u00EB\u00ED\u00EC\u00EE\u00EF\u00F1\u00F3\u00F2\u00F4\u00F6\u00F5\u00FA\u00F9\u00FB\u00FC\u00DD\u00B0\u00A2\u00A3\u00A7\u2022\u00B6\u00DF\u00AE\u00A9\u2122\u00B4\u00A8\u2260\u00C6\u00D8\u221E\u00B1\u2264\u2265\u00A5\u00B5\u2202\u2211\u220F\u03C0\u222B\u00AA\u00BA\u2126\u00E6\u00F8\u00BF\u00A1\u00AC\u221A\u0192\u2248\u2206\u00AB\u00BB\u2026\u00A0\u00C0\u00C3\u00D5\u0152\u0153\u2013\u2014\u201C\u201D\u2018\u2019\u00F7\u25CA\u00FF\u0178\u2044\u00A4\u00D0\u00F0\u00DE\u00FE\u00FD\u00B7\u201A\u201E\u2030\u00C2\u00CA\u00C1\u00CB\u00C8\u00CD\u00CE\u00CF\u00CC\u00D3\u00D4\uFFFD\u00D2\u00DA\u00DB\u00D9\u0131\u02C6\u02DC\u00AF\u02D8\u02D9\u02DA\u00B8\u02DD\u02DB\u02C7\"\n },\n \"macroman\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u00C4\u00C5\u00C7\u00C9\u00D1\u00D6\u00DC\u00E1\u00E0\u00E2\u00E4\u00E3\u00E5\u00E7\u00E9\u00E8\u00EA\u00EB\u00ED\u00EC\u00EE\u00EF\u00F1\u00F3\u00F2\u00F4\u00F6\u00F5\u00FA\u00F9\u00FB\u00FC\u2020\u00B0\u00A2\u00A3\u00A7\u2022\u00B6\u00DF\u00AE\u00A9\u2122\u00B4\u00A8\u2260\u00C6\u00D8\u221E\u00B1\u2264\u2265\u00A5\u00B5\u2202\u2211\u220F\u03C0\u222B\u00AA\u00BA\u2126\u00E6\u00F8\u00BF\u00A1\u00AC\u221A\u0192\u2248\u2206\u00AB\u00BB\u2026\u00A0\u00C0\u00C3\u00D5\u0152\u0153\u2013\u2014\u201C\u201D\u2018\u2019\u00F7\u25CA\u00FF\u0178\u2044\u00A4\u2039\u203A\uFB01\uFB02\u2021\u00B7\u201A\u201E\u2030\u00C2\u00CA\u00C1\u00CB\u00C8\u00CD\u00CE\u00CF\u00CC\u00D3\u00D4\uFFFD\u00D2\u00DA\u00DB\u00D9\u0131\u02C6\u02DC\u00AF\u02D8\u02D9\u02DA\u00B8\u02DD\u02DB\u02C7\"\n },\n \"macromania\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u00C4\u00C5\u00C7\u00C9\u00D1\u00D6\u00DC\u00E1\u00E0\u00E2\u00E4\u00E3\u00E5\u00E7\u00E9\u00E8\u00EA\u00EB\u00ED\u00EC\u00EE\u00EF\u00F1\u00F3\u00F2\u00F4\u00F6\u00F5\u00FA\u00F9\u00FB\u00FC\u2020\u00B0\u00A2\u00A3\u00A7\u2022\u00B6\u00DF\u00AE\u00A9\u2122\u00B4\u00A8\u2260\u0102\u015E\u221E\u00B1\u2264\u2265\u00A5\u00B5\u2202\u2211\u220F\u03C0\u222B\u00AA\u00BA\u2126\u0103\u015F\u00BF\u00A1\u00AC\u221A\u0192\u2248\u2206\u00AB\u00BB\u2026\u00A0\u00C0\u00C3\u00D5\u0152\u0153\u2013\u2014\u201C\u201D\u2018\u2019\u00F7\u25CA\u00FF\u0178\u2044\u00A4\u2039\u203A\u0162\u0163\u2021\u00B7\u201A\u201E\u2030\u00C2\u00CA\u00C1\u00CB\u00C8\u00CD\u00CE\u00CF\u00CC\u00D3\u00D4\uFFFD\u00D2\u00DA\u00DB\u00D9\u0131\u02C6\u02DC\u00AF\u02D8\u02D9\u02DA\u00B8\u02DD\u02DB\u02C7\"\n },\n \"macthai\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u00AB\u00BB\u2026\uF88C\uF88F\uF892\uF895\uF898\uF88B\uF88E\uF891\uF894\uF897\u201C\u201D\uF899\uFFFD\u2022\uF884\uF889\uF885\uF886\uF887\uF888\uF88A\uF88D\uF890\uF893\uF896\u2018\u2019\uFFFD\u00A0\u0E01\u0E02\u0E03\u0E04\u0E05\u0E06\u0E07\u0E08\u0E09\u0E0A\u0E0B\u0E0C\u0E0D\u0E0E\u0E0F\u0E10\u0E11\u0E12\u0E13\u0E14\u0E15\u0E16\u0E17\u0E18\u0E19\u0E1A\u0E1B\u0E1C\u0E1D\u0E1E\u0E1F\u0E20\u0E21\u0E22\u0E23\u0E24\u0E25\u0E26\u0E27\u0E28\u0E29\u0E2A\u0E2B\u0E2C\u0E2D\u0E2E\u0E2F\u0E30\u0E31\u0E32\u0E33\u0E34\u0E35\u0E36\u0E37\u0E38\u0E39\u0E3A\uFEFF\u200B\u2013\u2014\u0E3F\u0E40\u0E41\u0E42\u0E43\u0E44\u0E45\u0E46\u0E47\u0E48\u0E49\u0E4A\u0E4B\u0E4C\u0E4D\u2122\u0E4F\u0E50\u0E51\u0E52\u0E53\u0E54\u0E55\u0E56\u0E57\u0E58\u0E59\u00AE\u00A9\uFFFD\uFFFD\uFFFD\uFFFD\"\n },\n \"macturkish\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u00C4\u00C5\u00C7\u00C9\u00D1\u00D6\u00DC\u00E1\u00E0\u00E2\u00E4\u00E3\u00E5\u00E7\u00E9\u00E8\u00EA\u00EB\u00ED\u00EC\u00EE\u00EF\u00F1\u00F3\u00F2\u00F4\u00F6\u00F5\u00FA\u00F9\u00FB\u00FC\u2020\u00B0\u00A2\u00A3\u00A7\u2022\u00B6\u00DF\u00AE\u00A9\u2122\u00B4\u00A8\u2260\u00C6\u00D8\u221E\u00B1\u2264\u2265\u00A5\u00B5\u2202\u2211\u220F\u03C0\u222B\u00AA\u00BA\u2126\u00E6\u00F8\u00BF\u00A1\u00AC\u221A\u0192\u2248\u2206\u00AB\u00BB\u2026\u00A0\u00C0\u00C3\u00D5\u0152\u0153\u2013\u2014\u201C\u201D\u2018\u2019\u00F7\u25CA\u00FF\u0178\u011E\u011F\u0130\u0131\u015E\u015F\u2021\u00B7\u201A\u201E\u2030\u00C2\u00CA\u00C1\u00CB\u00C8\u00CD\u00CE\u00CF\u00CC\u00D3\u00D4\uFFFD\u00D2\u00DA\u00DB\u00D9\uFFFD\u02C6\u02DC\u00AF\u02D8\u02D9\u02DA\u00B8\u02DD\u02DB\u02C7\"\n },\n \"macukraine\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u2020\u00B0\u0490\u00A3\u00A7\u2022\u00B6\u0406\u00AE\u00A9\u2122\u0402\u0452\u2260\u0403\u0453\u221E\u00B1\u2264\u2265\u0456\u00B5\u0491\u0408\u0404\u0454\u0407\u0457\u0409\u0459\u040A\u045A\u0458\u0405\u00AC\u221A\u0192\u2248\u2206\u00AB\u00BB\u2026\u00A0\u040B\u045B\u040C\u045C\u0455\u2013\u2014\u201C\u201D\u2018\u2019\u00F7\u201E\u040E\u045E\u040F\u045F\u2116\u0401\u0451\u044F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u00A4\"\n },\n \"koi8r\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u2500\u2502\u250C\u2510\u2514\u2518\u251C\u2524\u252C\u2534\u253C\u2580\u2584\u2588\u258C\u2590\u2591\u2592\u2593\u2320\u25A0\u2219\u221A\u2248\u2264\u2265\u00A0\u2321\u00B0\u00B2\u00B7\u00F7\u2550\u2551\u2552\u0451\u2553\u2554\u2555\u2556\u2557\u2558\u2559\u255A\u255B\u255C\u255D\u255E\u255F\u2560\u2561\u0401\u2562\u2563\u2564\u2565\u2566\u2567\u2568\u2569\u256A\u256B\u256C\u00A9\u044E\u0430\u0431\u0446\u0434\u0435\u0444\u0433\u0445\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u044F\u0440\u0441\u0442\u0443\u0436\u0432\u044C\u044B\u0437\u0448\u044D\u0449\u0447\u044A\u042E\u0410\u0411\u0426\u0414\u0415\u0424\u0413\u0425\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u042F\u0420\u0421\u0422\u0423\u0416\u0412\u042C\u042B\u0417\u0428\u042D\u0429\u0427\u042A\"\n },\n \"koi8u\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u2500\u2502\u250C\u2510\u2514\u2518\u251C\u2524\u252C\u2534\u253C\u2580\u2584\u2588\u258C\u2590\u2591\u2592\u2593\u2320\u25A0\u2219\u221A\u2248\u2264\u2265\u00A0\u2321\u00B0\u00B2\u00B7\u00F7\u2550\u2551\u2552\u0451\u0454\u2554\u0456\u0457\u2557\u2558\u2559\u255A\u255B\u0491\u255D\u255E\u255F\u2560\u2561\u0401\u0404\u2563\u0406\u0407\u2566\u2567\u2568\u2569\u256A\u0490\u256C\u00A9\u044E\u0430\u0431\u0446\u0434\u0435\u0444\u0433\u0445\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u044F\u0440\u0441\u0442\u0443\u0436\u0432\u044C\u044B\u0437\u0448\u044D\u0449\u0447\u044A\u042E\u0410\u0411\u0426\u0414\u0415\u0424\u0413\u0425\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u042F\u0420\u0421\u0422\u0423\u0416\u0412\u042C\u042B\u0417\u0428\u042D\u0429\u0427\u042A\"\n },\n \"koi8ru\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u2500\u2502\u250C\u2510\u2514\u2518\u251C\u2524\u252C\u2534\u253C\u2580\u2584\u2588\u258C\u2590\u2591\u2592\u2593\u2320\u25A0\u2219\u221A\u2248\u2264\u2265\u00A0\u2321\u00B0\u00B2\u00B7\u00F7\u2550\u2551\u2552\u0451\u0454\u2554\u0456\u0457\u2557\u2558\u2559\u255A\u255B\u0491\u045E\u255E\u255F\u2560\u2561\u0401\u0404\u2563\u0406\u0407\u2566\u2567\u2568\u2569\u256A\u0490\u040E\u00A9\u044E\u0430\u0431\u0446\u0434\u0435\u0444\u0433\u0445\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u044F\u0440\u0441\u0442\u0443\u0436\u0432\u044C\u044B\u0437\u0448\u044D\u0449\u0447\u044A\u042E\u0410\u0411\u0426\u0414\u0415\u0424\u0413\u0425\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u042F\u0420\u0421\u0422\u0423\u0416\u0412\u042C\u042B\u0417\u0428\u042D\u0429\u0427\u042A\"\n },\n \"koi8t\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u049B\u0493\u201A\u0492\u201E\u2026\u2020\u2021\uFFFD\u2030\u04B3\u2039\u04B2\u04B7\u04B6\uFFFD\u049A\u2018\u2019\u201C\u201D\u2022\u2013\u2014\uFFFD\u2122\uFFFD\u203A\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u04EF\u04EE\u0451\u00A4\u04E3\u00A6\u00A7\uFFFD\uFFFD\uFFFD\u00AB\u00AC\u00AD\u00AE\uFFFD\u00B0\u00B1\u00B2\u0401\uFFFD\u04E2\u00B6\u00B7\uFFFD\u2116\uFFFD\u00BB\uFFFD\uFFFD\uFFFD\u00A9\u044E\u0430\u0431\u0446\u0434\u0435\u0444\u0433\u0445\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u044F\u0440\u0441\u0442\u0443\u0436\u0432\u044C\u044B\u0437\u0448\u044D\u0449\u0447\u044A\u042E\u0410\u0411\u0426\u0414\u0415\u0424\u0413\u0425\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u042F\u0420\u0421\u0422\u0423\u0416\u0412\u042C\u042B\u0417\u0428\u042D\u0429\u0427\u042A\"\n },\n \"armscii8\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\uFFFD\u0587\u0589)(\u00BB\u00AB\u2014.\u055D,-\u058A\u2026\u055C\u055B\u055E\u0531\u0561\u0532\u0562\u0533\u0563\u0534\u0564\u0535\u0565\u0536\u0566\u0537\u0567\u0538\u0568\u0539\u0569\u053A\u056A\u053B\u056B\u053C\u056C\u053D\u056D\u053E\u056E\u053F\u056F\u0540\u0570\u0541\u0571\u0542\u0572\u0543\u0573\u0544\u0574\u0545\u0575\u0546\u0576\u0547\u0577\u0548\u0578\u0549\u0579\u054A\u057A\u054B\u057B\u054C\u057C\u054D\u057D\u054E\u057E\u054F\u057F\u0550\u0580\u0551\u0581\u0552\u0582\u0553\u0583\u0554\u0584\u0555\u0585\u0556\u0586\u055A\uFFFD\"\n },\n \"rk1048\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u0402\u0403\u201A\u0453\u201E\u2026\u2020\u2021\u20AC\u2030\u0409\u2039\u040A\u049A\u04BA\u040F\u0452\u2018\u2019\u201C\u201D\u2022\u2013\u2014\uFFFD\u2122\u0459\u203A\u045A\u049B\u04BB\u045F\u00A0\u04B0\u04B1\u04D8\u00A4\u04E8\u00A6\u00A7\u0401\u00A9\u0492\u00AB\u00AC\u00AD\u00AE\u04AE\u00B0\u00B1\u0406\u0456\u04E9\u00B5\u00B6\u00B7\u0451\u2116\u0493\u00BB\u04D9\u04A2\u04A3\u04AF\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F\"\n },\n \"tcvn\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\\u0000\u00DA\u1EE4\\u0003\u1EEA\u1EEC\u1EEE\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\u1EE8\u1EF0\u1EF2\u1EF6\u1EF8\u00DD\u1EF4\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\u007F\u00C0\u1EA2\u00C3\u00C1\u1EA0\u1EB6\u1EAC\u00C8\u1EBA\u1EBC\u00C9\u1EB8\u1EC6\u00CC\u1EC8\u0128\u00CD\u1ECA\u00D2\u1ECE\u00D5\u00D3\u1ECC\u1ED8\u1EDC\u1EDE\u1EE0\u1EDA\u1EE2\u00D9\u1EE6\u0168\u00A0\u0102\u00C2\u00CA\u00D4\u01A0\u01AF\u0110\u0103\u00E2\u00EA\u00F4\u01A1\u01B0\u0111\u1EB0\u0300\u0309\u0303\u0301\u0323\u00E0\u1EA3\u00E3\u00E1\u1EA1\u1EB2\u1EB1\u1EB3\u1EB5\u1EAF\u1EB4\u1EAE\u1EA6\u1EA8\u1EAA\u1EA4\u1EC0\u1EB7\u1EA7\u1EA9\u1EAB\u1EA5\u1EAD\u00E8\u1EC2\u1EBB\u1EBD\u00E9\u1EB9\u1EC1\u1EC3\u1EC5\u1EBF\u1EC7\u00EC\u1EC9\u1EC4\u1EBE\u1ED2\u0129\u00ED\u1ECB\u00F2\u1ED4\u1ECF\u00F5\u00F3\u1ECD\u1ED3\u1ED5\u1ED7\u1ED1\u1ED9\u1EDD\u1EDF\u1EE1\u1EDB\u1EE3\u00F9\u1ED6\u1EE7\u0169\u00FA\u1EE5\u1EEB\u1EED\u1EEF\u1EE9\u1EF1\u1EF3\u1EF7\u1EF9\u00FD\u1EF5\u1ED0\"\n },\n \"georgianacademy\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u0080\u0081\u201A\u0192\u201E\u2026\u2020\u2021\u02C6\u2030\u0160\u2039\u0152\u008D\u008E\u008F\u0090\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u02DC\u2122\u0161\u203A\u0153\u009D\u009E\u0178\u00A0\u00A1\u00A2\u00A3\u00A4\u00A5\u00A6\u00A7\u00A8\u00A9\u00AA\u00AB\u00AC\u00AD\u00AE\u00AF\u00B0\u00B1\u00B2\u00B3\u00B4\u00B5\u00B6\u00B7\u00B8\u00B9\u00BA\u00BB\u00BC\u00BD\u00BE\u00BF\u10D0\u10D1\u10D2\u10D3\u10D4\u10D5\u10D6\u10D7\u10D8\u10D9\u10DA\u10DB\u10DC\u10DD\u10DE\u10DF\u10E0\u10E1\u10E2\u10E3\u10E4\u10E5\u10E6\u10E7\u10E8\u10E9\u10EA\u10EB\u10EC\u10ED\u10EE\u10EF\u10F0\u10F1\u10F2\u10F3\u10F4\u10F5\u10F6\u00E7\u00E8\u00E9\u00EA\u00EB\u00EC\u00ED\u00EE\u00EF\u00F0\u00F1\u00F2\u00F3\u00F4\u00F5\u00F6\u00F7\u00F8\u00F9\u00FA\u00FB\u00FC\u00FD\u00FE\u00FF\"\n },\n \"georgianps\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u0080\u0081\u201A\u0192\u201E\u2026\u2020\u2021\u02C6\u2030\u0160\u2039\u0152\u008D\u008E\u008F\u0090\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u02DC\u2122\u0161\u203A\u0153\u009D\u009E\u0178\u00A0\u00A1\u00A2\u00A3\u00A4\u00A5\u00A6\u00A7\u00A8\u00A9\u00AA\u00AB\u00AC\u00AD\u00AE\u00AF\u00B0\u00B1\u00B2\u00B3\u00B4\u00B5\u00B6\u00B7\u00B8\u00B9\u00BA\u00BB\u00BC\u00BD\u00BE\u00BF\u10D0\u10D1\u10D2\u10D3\u10D4\u10D5\u10D6\u10F1\u10D7\u10D8\u10D9\u10DA\u10DB\u10DC\u10F2\u10DD\u10DE\u10DF\u10E0\u10E1\u10E2\u10F3\u10E3\u10E4\u10E5\u10E6\u10E7\u10E8\u10E9\u10EA\u10EB\u10EC\u10ED\u10EE\u10F4\u10EF\u10F0\u10F5\u00E6\u00E7\u00E8\u00E9\u00EA\u00EB\u00EC\u00ED\u00EE\u00EF\u00F0\u00F1\u00F2\u00F3\u00F4\u00F5\u00F6\u00F7\u00F8\u00F9\u00FA\u00FB\u00FC\u00FD\u00FE\u00FF\"\n },\n \"pt154\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u0496\u0492\u04EE\u0493\u201E\u2026\u04B6\u04AE\u04B2\u04AF\u04A0\u04E2\u04A2\u049A\u04BA\u04B8\u0497\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u04B3\u04B7\u04A1\u04E3\u04A3\u049B\u04BB\u04B9\u00A0\u040E\u045E\u0408\u04E8\u0498\u04B0\u00A7\u0401\u00A9\u04D8\u00AB\u00AC\u04EF\u00AE\u049C\u00B0\u04B1\u0406\u0456\u0499\u04E9\u00B6\u00B7\u0451\u2116\u04D9\u00BB\u0458\u04AA\u04AB\u049D\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F\"\n },\n \"viscii\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\\u0000\\u0001\u1EB2\\u0003\\u0004\u1EB4\u1EAA\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\u1EF6\\u0015\\u0016\\u0017\\u0018\u1EF8\\u001a\\u001b\\u001c\\u001d\u1EF4\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\u007F\u1EA0\u1EAE\u1EB0\u1EB6\u1EA4\u1EA6\u1EA8\u1EAC\u1EBC\u1EB8\u1EBE\u1EC0\u1EC2\u1EC4\u1EC6\u1ED0\u1ED2\u1ED4\u1ED6\u1ED8\u1EE2\u1EDA\u1EDC\u1EDE\u1ECA\u1ECE\u1ECC\u1EC8\u1EE6\u0168\u1EE4\u1EF2\u00D5\u1EAF\u1EB1\u1EB7\u1EA5\u1EA7\u1EA9\u1EAD\u1EBD\u1EB9\u1EBF\u1EC1\u1EC3\u1EC5\u1EC7\u1ED1\u1ED3\u1ED5\u1ED7\u1EE0\u01A0\u1ED9\u1EDD\u1EDF\u1ECB\u1EF0\u1EE8\u1EEA\u1EEC\u01A1\u1EDB\u01AF\u00C0\u00C1\u00C2\u00C3\u1EA2\u0102\u1EB3\u1EB5\u00C8\u00C9\u00CA\u1EBA\u00CC\u00CD\u0128\u1EF3\u0110\u1EE9\u00D2\u00D3\u00D4\u1EA1\u1EF7\u1EEB\u1EED\u00D9\u00DA\u1EF9\u1EF5\u00DD\u1EE1\u01B0\u00E0\u00E1\u00E2\u00E3\u1EA3\u0103\u1EEF\u1EAB\u00E8\u00E9\u00EA\u1EBB\u00EC\u00ED\u0129\u1EC9\u0111\u1EF1\u00F2\u00F3\u00F4\u00F5\u1ECF\u1ECD\u1EE5\u00F9\u00FA\u0169\u1EE7\u00FD\u1EE3\u1EEE\"\n },\n \"iso646cn\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#\u00A5%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}\u203E\u007F\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\"\n },\n \"iso646jp\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\u00A5]^_`abcdefghijklmnopqrstuvwxyz{|}\u203E\u007F\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\"\n },\n \"hproman8\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\u00C0\u00C2\u00C8\u00CA\u00CB\u00CE\u00CF\u00B4\u02CB\u02C6\u00A8\u02DC\u00D9\u00DB\u20A4\u00AF\u00DD\u00FD\u00B0\u00C7\u00E7\u00D1\u00F1\u00A1\u00BF\u00A4\u00A3\u00A5\u00A7\u0192\u00A2\u00E2\u00EA\u00F4\u00FB\u00E1\u00E9\u00F3\u00FA\u00E0\u00E8\u00F2\u00F9\u00E4\u00EB\u00F6\u00FC\u00C5\u00EE\u00D8\u00C6\u00E5\u00ED\u00F8\u00E6\u00C4\u00EC\u00D6\u00DC\u00C9\u00EF\u00DF\u00D4\u00C1\u00C3\u00E3\u00D0\u00F0\u00CD\u00CC\u00D3\u00D2\u00D5\u00F5\u0160\u0161\u00DA\u0178\u00FF\u00DE\u00FE\u00B7\u00B5\u00B6\u00BE\u2014\u00BC\u00BD\u00AA\u00BA\u00AB\u25A0\u00BB\u00B1\uFFFD\"\n },\n \"macintosh\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u00C4\u00C5\u00C7\u00C9\u00D1\u00D6\u00DC\u00E1\u00E0\u00E2\u00E4\u00E3\u00E5\u00E7\u00E9\u00E8\u00EA\u00EB\u00ED\u00EC\u00EE\u00EF\u00F1\u00F3\u00F2\u00F4\u00F6\u00F5\u00FA\u00F9\u00FB\u00FC\u2020\u00B0\u00A2\u00A3\u00A7\u2022\u00B6\u00DF\u00AE\u00A9\u2122\u00B4\u00A8\u2260\u00C6\u00D8\u221E\u00B1\u2264\u2265\u00A5\u00B5\u2202\u2211\u220F\u03C0\u222B\u00AA\u00BA\u2126\u00E6\u00F8\u00BF\u00A1\u00AC\u221A\u0192\u2248\u2206\u00AB\u00BB\u2026\u00A0\u00C0\u00C3\u00D5\u0152\u0153\u2013\u2014\u201C\u201D\u2018\u2019\u00F7\u25CA\u00FF\u0178\u2044\u00A4\u2039\u203A\uFB01\uFB02\u2021\u00B7\u201A\u201E\u2030\u00C2\u00CA\u00C1\u00CB\u00C8\u00CD\u00CE\u00CF\u00CC\u00D3\u00D4\uFFFD\u00D2\u00DA\u00DB\u00D9\u0131\u02C6\u02DC\u00AF\u02D8\u02D9\u02DA\u00B8\u02DD\u02DB\u02C7\"\n },\n \"ascii\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\"\n },\n \"tis620\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u0E01\u0E02\u0E03\u0E04\u0E05\u0E06\u0E07\u0E08\u0E09\u0E0A\u0E0B\u0E0C\u0E0D\u0E0E\u0E0F\u0E10\u0E11\u0E12\u0E13\u0E14\u0E15\u0E16\u0E17\u0E18\u0E19\u0E1A\u0E1B\u0E1C\u0E1D\u0E1E\u0E1F\u0E20\u0E21\u0E22\u0E23\u0E24\u0E25\u0E26\u0E27\u0E28\u0E29\u0E2A\u0E2B\u0E2C\u0E2D\u0E2E\u0E2F\u0E30\u0E31\u0E32\u0E33\u0E34\u0E35\u0E36\u0E37\u0E38\u0E39\u0E3A\uFFFD\uFFFD\uFFFD\uFFFD\u0E3F\u0E40\u0E41\u0E42\u0E43\u0E44\u0E45\u0E46\u0E47\u0E48\u0E49\u0E4A\u0E4B\u0E4C\u0E4D\u0E4E\u0E4F\u0E50\u0E51\u0E52\u0E53\u0E54\u0E55\u0E56\u0E57\u0E58\u0E59\u0E5A\u0E5B\uFFFD\uFFFD\uFFFD\uFFFD\"\n }\n}", "\"use strict\";\nvar Buffer = require(\"safer-buffer\").Buffer;\n\n// Multibyte codec. In this scheme, a character is represented by 1 or more bytes.\n// Our codec supports UTF-16 surrogates, extensions for GB18030 and unicode sequences.\n// To save memory and loading time, we read table files only when requested.\n\nexports._dbcs = DBCSCodec;\n\nvar UNASSIGNED = -1,\n GB18030_CODE = -2,\n SEQ_START = -10,\n NODE_START = -1000,\n UNASSIGNED_NODE = new Array(0x100),\n DEF_CHAR = -1;\n\nfor (var i = 0; i < 0x100; i++)\n UNASSIGNED_NODE[i] = UNASSIGNED;\n\n\n// Class DBCSCodec reads and initializes mapping tables.\nfunction DBCSCodec(codecOptions, iconv) {\n this.encodingName = codecOptions.encodingName;\n if (!codecOptions)\n throw new Error(\"DBCS codec is called without the data.\")\n if (!codecOptions.table)\n throw new Error(\"Encoding '\" + this.encodingName + \"' has no data.\");\n\n // Load tables.\n var mappingTable = codecOptions.table();\n\n\n // Decode tables: MBCS -> Unicode.\n\n // decodeTables is a trie, encoded as an array of arrays of integers. Internal arrays are trie nodes and all have len = 256.\n // Trie root is decodeTables[0].\n // Values: >= 0 -> unicode character code. can be > 0xFFFF\n // == UNASSIGNED -> unknown/unassigned sequence.\n // == GB18030_CODE -> this is the end of a GB18030 4-byte sequence.\n // <= NODE_START -> index of the next node in our trie to process next byte.\n // <= SEQ_START -> index of the start of a character code sequence, in decodeTableSeq.\n this.decodeTables = [];\n this.decodeTables[0] = UNASSIGNED_NODE.slice(0); // Create root node.\n\n // Sometimes a MBCS char corresponds to a sequence of unicode chars. We store them as arrays of integers here. \n this.decodeTableSeq = [];\n\n // Actual mapping tables consist of chunks. Use them to fill up decode tables.\n for (var i = 0; i < mappingTable.length; i++)\n this._addDecodeChunk(mappingTable[i]);\n\n this.defaultCharUnicode = iconv.defaultCharUnicode;\n\n \n // Encode tables: Unicode -> DBCS.\n\n // `encodeTable` is array mapping from unicode char to encoded char. All its values are integers for performance.\n // Because it can be sparse, it is represented as array of buckets by 256 chars each. Bucket can be null.\n // Values: >= 0 -> it is a normal char. Write the value (if <=256 then 1 byte, if <=65536 then 2 bytes, etc.).\n // == UNASSIGNED -> no conversion found. Output a default char.\n // <= SEQ_START -> it's an index in encodeTableSeq, see below. The character starts a sequence.\n this.encodeTable = [];\n \n // `encodeTableSeq` is used when a sequence of unicode characters is encoded as a single code. We use a tree of\n // objects where keys correspond to characters in sequence and leafs are the encoded dbcs values. A special DEF_CHAR key\n // means end of sequence (needed when one sequence is a strict subsequence of another).\n // Objects are kept separately from encodeTable to increase performance.\n this.encodeTableSeq = [];\n\n // Some chars can be decoded, but need not be encoded.\n var skipEncodeChars = {};\n if (codecOptions.encodeSkipVals)\n for (var i = 0; i < codecOptions.encodeSkipVals.length; i++) {\n var val = codecOptions.encodeSkipVals[i];\n if (typeof val === 'number')\n skipEncodeChars[val] = true;\n else\n for (var j = val.from; j <= val.to; j++)\n skipEncodeChars[j] = true;\n }\n \n // Use decode trie to recursively fill out encode tables.\n this._fillEncodeTable(0, 0, skipEncodeChars);\n\n // Add more encoding pairs when needed.\n if (codecOptions.encodeAdd) {\n for (var uChar in codecOptions.encodeAdd)\n if (Object.prototype.hasOwnProperty.call(codecOptions.encodeAdd, uChar))\n this._setEncodeChar(uChar.charCodeAt(0), codecOptions.encodeAdd[uChar]);\n }\n\n this.defCharSB = this.encodeTable[0][iconv.defaultCharSingleByte.charCodeAt(0)];\n if (this.defCharSB === UNASSIGNED) this.defCharSB = this.encodeTable[0]['?'];\n if (this.defCharSB === UNASSIGNED) this.defCharSB = \"?\".charCodeAt(0);\n\n\n // Load & create GB18030 tables when needed.\n if (typeof codecOptions.gb18030 === 'function') {\n this.gb18030 = codecOptions.gb18030(); // Load GB18030 ranges.\n\n // Add GB18030 decode tables.\n var thirdByteNodeIdx = this.decodeTables.length;\n var thirdByteNode = this.decodeTables[thirdByteNodeIdx] = UNASSIGNED_NODE.slice(0);\n\n var fourthByteNodeIdx = this.decodeTables.length;\n var fourthByteNode = this.decodeTables[fourthByteNodeIdx] = UNASSIGNED_NODE.slice(0);\n\n for (var i = 0x81; i <= 0xFE; i++) {\n var secondByteNodeIdx = NODE_START - this.decodeTables[0][i];\n var secondByteNode = this.decodeTables[secondByteNodeIdx];\n for (var j = 0x30; j <= 0x39; j++)\n secondByteNode[j] = NODE_START - thirdByteNodeIdx;\n }\n for (var i = 0x81; i <= 0xFE; i++)\n thirdByteNode[i] = NODE_START - fourthByteNodeIdx;\n for (var i = 0x30; i <= 0x39; i++)\n fourthByteNode[i] = GB18030_CODE\n } \n}\n\nDBCSCodec.prototype.encoder = DBCSEncoder;\nDBCSCodec.prototype.decoder = DBCSDecoder;\n\n// Decoder helpers\nDBCSCodec.prototype._getDecodeTrieNode = function(addr) {\n var bytes = [];\n for (; addr > 0; addr >>= 8)\n bytes.push(addr & 0xFF);\n if (bytes.length == 0)\n bytes.push(0);\n\n var node = this.decodeTables[0];\n for (var i = bytes.length-1; i > 0; i--) { // Traverse nodes deeper into the trie.\n var val = node[bytes[i]];\n\n if (val == UNASSIGNED) { // Create new node.\n node[bytes[i]] = NODE_START - this.decodeTables.length;\n this.decodeTables.push(node = UNASSIGNED_NODE.slice(0));\n }\n else if (val <= NODE_START) { // Existing node.\n node = this.decodeTables[NODE_START - val];\n }\n else\n throw new Error(\"Overwrite byte in \" + this.encodingName + \", addr: \" + addr.toString(16));\n }\n return node;\n}\n\n\nDBCSCodec.prototype._addDecodeChunk = function(chunk) {\n // First element of chunk is the hex mbcs code where we start.\n var curAddr = parseInt(chunk[0], 16);\n\n // Choose the decoding node where we'll write our chars.\n var writeTable = this._getDecodeTrieNode(curAddr);\n curAddr = curAddr & 0xFF;\n\n // Write all other elements of the chunk to the table.\n for (var k = 1; k < chunk.length; k++) {\n var part = chunk[k];\n if (typeof part === \"string\") { // String, write as-is.\n for (var l = 0; l < part.length;) {\n var code = part.charCodeAt(l++);\n if (0xD800 <= code && code < 0xDC00) { // Decode surrogate\n var codeTrail = part.charCodeAt(l++);\n if (0xDC00 <= codeTrail && codeTrail < 0xE000)\n writeTable[curAddr++] = 0x10000 + (code - 0xD800) * 0x400 + (codeTrail - 0xDC00);\n else\n throw new Error(\"Incorrect surrogate pair in \" + this.encodingName + \" at chunk \" + chunk[0]);\n }\n else if (0x0FF0 < code && code <= 0x0FFF) { // Character sequence (our own encoding used)\n var len = 0xFFF - code + 2;\n var seq = [];\n for (var m = 0; m < len; m++)\n seq.push(part.charCodeAt(l++)); // Simple variation: don't support surrogates or subsequences in seq.\n\n writeTable[curAddr++] = SEQ_START - this.decodeTableSeq.length;\n this.decodeTableSeq.push(seq);\n }\n else\n writeTable[curAddr++] = code; // Basic char\n }\n } \n else if (typeof part === \"number\") { // Integer, meaning increasing sequence starting with prev character.\n var charCode = writeTable[curAddr - 1] + 1;\n for (var l = 0; l < part; l++)\n writeTable[curAddr++] = charCode++;\n }\n else\n throw new Error(\"Incorrect type '\" + typeof part + \"' given in \" + this.encodingName + \" at chunk \" + chunk[0]);\n }\n if (curAddr > 0xFF)\n throw new Error(\"Incorrect chunk in \" + this.encodingName + \" at addr \" + chunk[0] + \": too long\" + curAddr);\n}\n\n// Encoder helpers\nDBCSCodec.prototype._getEncodeBucket = function(uCode) {\n var high = uCode >> 8; // This could be > 0xFF because of astral characters.\n if (this.encodeTable[high] === undefined)\n this.encodeTable[high] = UNASSIGNED_NODE.slice(0); // Create bucket on demand.\n return this.encodeTable[high];\n}\n\nDBCSCodec.prototype._setEncodeChar = function(uCode, dbcsCode) {\n var bucket = this._getEncodeBucket(uCode);\n var low = uCode & 0xFF;\n if (bucket[low] <= SEQ_START)\n this.encodeTableSeq[SEQ_START-bucket[low]][DEF_CHAR] = dbcsCode; // There's already a sequence, set a single-char subsequence of it.\n else if (bucket[low] == UNASSIGNED)\n bucket[low] = dbcsCode;\n}\n\nDBCSCodec.prototype._setEncodeSequence = function(seq, dbcsCode) {\n \n // Get the root of character tree according to first character of the sequence.\n var uCode = seq[0];\n var bucket = this._getEncodeBucket(uCode);\n var low = uCode & 0xFF;\n\n var node;\n if (bucket[low] <= SEQ_START) {\n // There's already a sequence with - use it.\n node = this.encodeTableSeq[SEQ_START-bucket[low]];\n }\n else {\n // There was no sequence object - allocate a new one.\n node = {};\n if (bucket[low] !== UNASSIGNED) node[DEF_CHAR] = bucket[low]; // If a char was set before - make it a single-char subsequence.\n bucket[low] = SEQ_START - this.encodeTableSeq.length;\n this.encodeTableSeq.push(node);\n }\n\n // Traverse the character tree, allocating new nodes as needed.\n for (var j = 1; j < seq.length-1; j++) {\n var oldVal = node[uCode];\n if (typeof oldVal === 'object')\n node = oldVal;\n else {\n node = node[uCode] = {}\n if (oldVal !== undefined)\n node[DEF_CHAR] = oldVal\n }\n }\n\n // Set the leaf to given dbcsCode.\n uCode = seq[seq.length-1];\n node[uCode] = dbcsCode;\n}\n\nDBCSCodec.prototype._fillEncodeTable = function(nodeIdx, prefix, skipEncodeChars) {\n var node = this.decodeTables[nodeIdx];\n for (var i = 0; i < 0x100; i++) {\n var uCode = node[i];\n var mbCode = prefix + i;\n if (skipEncodeChars[mbCode])\n continue;\n\n if (uCode >= 0)\n this._setEncodeChar(uCode, mbCode);\n else if (uCode <= NODE_START)\n this._fillEncodeTable(NODE_START - uCode, mbCode << 8, skipEncodeChars);\n else if (uCode <= SEQ_START)\n this._setEncodeSequence(this.decodeTableSeq[SEQ_START - uCode], mbCode);\n }\n}\n\n\n\n// == Encoder ==================================================================\n\nfunction DBCSEncoder(options, codec) {\n // Encoder state\n this.leadSurrogate = -1;\n this.seqObj = undefined;\n \n // Static data\n this.encodeTable = codec.encodeTable;\n this.encodeTableSeq = codec.encodeTableSeq;\n this.defaultCharSingleByte = codec.defCharSB;\n this.gb18030 = codec.gb18030;\n}\n\nDBCSEncoder.prototype.write = function(str) {\n var newBuf = Buffer.alloc(str.length * (this.gb18030 ? 4 : 3)),\n leadSurrogate = this.leadSurrogate,\n seqObj = this.seqObj, nextChar = -1,\n i = 0, j = 0;\n\n while (true) {\n // 0. Get next character.\n if (nextChar === -1) {\n if (i == str.length) break;\n var uCode = str.charCodeAt(i++);\n }\n else {\n var uCode = nextChar;\n nextChar = -1; \n }\n\n // 1. Handle surrogates.\n if (0xD800 <= uCode && uCode < 0xE000) { // Char is one of surrogates.\n if (uCode < 0xDC00) { // We've got lead surrogate.\n if (leadSurrogate === -1) {\n leadSurrogate = uCode;\n continue;\n } else {\n leadSurrogate = uCode;\n // Double lead surrogate found.\n uCode = UNASSIGNED;\n }\n } else { // We've got trail surrogate.\n if (leadSurrogate !== -1) {\n uCode = 0x10000 + (leadSurrogate - 0xD800) * 0x400 + (uCode - 0xDC00);\n leadSurrogate = -1;\n } else {\n // Incomplete surrogate pair - only trail surrogate found.\n uCode = UNASSIGNED;\n }\n \n }\n }\n else if (leadSurrogate !== -1) {\n // Incomplete surrogate pair - only lead surrogate found.\n nextChar = uCode; uCode = UNASSIGNED; // Write an error, then current char.\n leadSurrogate = -1;\n }\n\n // 2. Convert uCode character.\n var dbcsCode = UNASSIGNED;\n if (seqObj !== undefined && uCode != UNASSIGNED) { // We are in the middle of the sequence\n var resCode = seqObj[uCode];\n if (typeof resCode === 'object') { // Sequence continues.\n seqObj = resCode;\n continue;\n\n } else if (typeof resCode == 'number') { // Sequence finished. Write it.\n dbcsCode = resCode;\n\n } else if (resCode == undefined) { // Current character is not part of the sequence.\n\n // Try default character for this sequence\n resCode = seqObj[DEF_CHAR];\n if (resCode !== undefined) {\n dbcsCode = resCode; // Found. Write it.\n nextChar = uCode; // Current character will be written too in the next iteration.\n\n } else {\n // TODO: What if we have no default? (resCode == undefined)\n // Then, we should write first char of the sequence as-is and try the rest recursively.\n // Didn't do it for now because no encoding has this situation yet.\n // Currently, just skip the sequence and write current char.\n }\n }\n seqObj = undefined;\n }\n else if (uCode >= 0) { // Regular character\n var subtable = this.encodeTable[uCode >> 8];\n if (subtable !== undefined)\n dbcsCode = subtable[uCode & 0xFF];\n \n if (dbcsCode <= SEQ_START) { // Sequence start\n seqObj = this.encodeTableSeq[SEQ_START-dbcsCode];\n continue;\n }\n\n if (dbcsCode == UNASSIGNED && this.gb18030) {\n // Use GB18030 algorithm to find character(s) to write.\n var idx = findIdx(this.gb18030.uChars, uCode);\n if (idx != -1) {\n var dbcsCode = this.gb18030.gbChars[idx] + (uCode - this.gb18030.uChars[idx]);\n newBuf[j++] = 0x81 + Math.floor(dbcsCode / 12600); dbcsCode = dbcsCode % 12600;\n newBuf[j++] = 0x30 + Math.floor(dbcsCode / 1260); dbcsCode = dbcsCode % 1260;\n newBuf[j++] = 0x81 + Math.floor(dbcsCode / 10); dbcsCode = dbcsCode % 10;\n newBuf[j++] = 0x30 + dbcsCode;\n continue;\n }\n }\n }\n\n // 3. Write dbcsCode character.\n if (dbcsCode === UNASSIGNED)\n dbcsCode = this.defaultCharSingleByte;\n \n if (dbcsCode < 0x100) {\n newBuf[j++] = dbcsCode;\n }\n else if (dbcsCode < 0x10000) {\n newBuf[j++] = dbcsCode >> 8; // high byte\n newBuf[j++] = dbcsCode & 0xFF; // low byte\n }\n else {\n newBuf[j++] = dbcsCode >> 16;\n newBuf[j++] = (dbcsCode >> 8) & 0xFF;\n newBuf[j++] = dbcsCode & 0xFF;\n }\n }\n\n this.seqObj = seqObj;\n this.leadSurrogate = leadSurrogate;\n return newBuf.slice(0, j);\n}\n\nDBCSEncoder.prototype.end = function() {\n if (this.leadSurrogate === -1 && this.seqObj === undefined)\n return; // All clean. Most often case.\n\n var newBuf = Buffer.alloc(10), j = 0;\n\n if (this.seqObj) { // We're in the sequence.\n var dbcsCode = this.seqObj[DEF_CHAR];\n if (dbcsCode !== undefined) { // Write beginning of the sequence.\n if (dbcsCode < 0x100) {\n newBuf[j++] = dbcsCode;\n }\n else {\n newBuf[j++] = dbcsCode >> 8; // high byte\n newBuf[j++] = dbcsCode & 0xFF; // low byte\n }\n } else {\n // See todo above.\n }\n this.seqObj = undefined;\n }\n\n if (this.leadSurrogate !== -1) {\n // Incomplete surrogate pair - only lead surrogate found.\n newBuf[j++] = this.defaultCharSingleByte;\n this.leadSurrogate = -1;\n }\n \n return newBuf.slice(0, j);\n}\n\n// Export for testing\nDBCSEncoder.prototype.findIdx = findIdx;\n\n\n// == Decoder ==================================================================\n\nfunction DBCSDecoder(options, codec) {\n // Decoder state\n this.nodeIdx = 0;\n this.prevBuf = Buffer.alloc(0);\n\n // Static data\n this.decodeTables = codec.decodeTables;\n this.decodeTableSeq = codec.decodeTableSeq;\n this.defaultCharUnicode = codec.defaultCharUnicode;\n this.gb18030 = codec.gb18030;\n}\n\nDBCSDecoder.prototype.write = function(buf) {\n var newBuf = Buffer.alloc(buf.length*2),\n nodeIdx = this.nodeIdx, \n prevBuf = this.prevBuf, prevBufOffset = this.prevBuf.length,\n seqStart = -this.prevBuf.length, // idx of the start of current parsed sequence.\n uCode;\n\n if (prevBufOffset > 0) // Make prev buf overlap a little to make it easier to slice later.\n prevBuf = Buffer.concat([prevBuf, buf.slice(0, 10)]);\n \n for (var i = 0, j = 0; i < buf.length; i++) {\n var curByte = (i >= 0) ? buf[i] : prevBuf[i + prevBufOffset];\n\n // Lookup in current trie node.\n var uCode = this.decodeTables[nodeIdx][curByte];\n\n if (uCode >= 0) { \n // Normal character, just use it.\n }\n else if (uCode === UNASSIGNED) { // Unknown char.\n // TODO: Callback with seq.\n //var curSeq = (seqStart >= 0) ? buf.slice(seqStart, i+1) : prevBuf.slice(seqStart + prevBufOffset, i+1 + prevBufOffset);\n i = seqStart; // Try to parse again, after skipping first byte of the sequence ('i' will be incremented by 'for' cycle).\n uCode = this.defaultCharUnicode.charCodeAt(0);\n }\n else if (uCode === GB18030_CODE) {\n var curSeq = (seqStart >= 0) ? buf.slice(seqStart, i+1) : prevBuf.slice(seqStart + prevBufOffset, i+1 + prevBufOffset);\n var ptr = (curSeq[0]-0x81)*12600 + (curSeq[1]-0x30)*1260 + (curSeq[2]-0x81)*10 + (curSeq[3]-0x30);\n var idx = findIdx(this.gb18030.gbChars, ptr);\n uCode = this.gb18030.uChars[idx] + ptr - this.gb18030.gbChars[idx];\n }\n else if (uCode <= NODE_START) { // Go to next trie node.\n nodeIdx = NODE_START - uCode;\n continue;\n }\n else if (uCode <= SEQ_START) { // Output a sequence of chars.\n var seq = this.decodeTableSeq[SEQ_START - uCode];\n for (var k = 0; k < seq.length - 1; k++) {\n uCode = seq[k];\n newBuf[j++] = uCode & 0xFF;\n newBuf[j++] = uCode >> 8;\n }\n uCode = seq[seq.length-1];\n }\n else\n throw new Error(\"iconv-lite internal error: invalid decoding table value \" + uCode + \" at \" + nodeIdx + \"/\" + curByte);\n\n // Write the character to buffer, handling higher planes using surrogate pair.\n if (uCode > 0xFFFF) { \n uCode -= 0x10000;\n var uCodeLead = 0xD800 + Math.floor(uCode / 0x400);\n newBuf[j++] = uCodeLead & 0xFF;\n newBuf[j++] = uCodeLead >> 8;\n\n uCode = 0xDC00 + uCode % 0x400;\n }\n newBuf[j++] = uCode & 0xFF;\n newBuf[j++] = uCode >> 8;\n\n // Reset trie node.\n nodeIdx = 0; seqStart = i+1;\n }\n\n this.nodeIdx = nodeIdx;\n this.prevBuf = (seqStart >= 0) ? buf.slice(seqStart) : prevBuf.slice(seqStart + prevBufOffset);\n return newBuf.slice(0, j).toString('ucs2');\n}\n\nDBCSDecoder.prototype.end = function() {\n var ret = '';\n\n // Try to parse all remaining chars.\n while (this.prevBuf.length > 0) {\n // Skip 1 character in the buffer.\n ret += this.defaultCharUnicode;\n var buf = this.prevBuf.slice(1);\n\n // Parse remaining as usual.\n this.prevBuf = Buffer.alloc(0);\n this.nodeIdx = 0;\n if (buf.length > 0)\n ret += this.write(buf);\n }\n\n this.nodeIdx = 0;\n return ret;\n}\n\n// Binary search for GB18030. Returns largest i such that table[i] <= val.\nfunction findIdx(table, val) {\n if (table[0] > val)\n return -1;\n\n var l = 0, r = table.length;\n while (l < r-1) { // always table[l] <= val < table[r]\n var mid = l + Math.floor((r-l+1)/2);\n if (table[mid] <= val)\n l = mid;\n else\n r = mid;\n }\n return l;\n}\n\n", "\"use strict\";\n\n// Description of supported double byte encodings and aliases.\n// Tables are not require()-d until they are needed to speed up library load.\n// require()-s are direct to support Browserify.\n\nmodule.exports = {\n \n // == Japanese/ShiftJIS ====================================================\n // All japanese encodings are based on JIS X set of standards:\n // JIS X 0201 - Single-byte encoding of ASCII + \u00A5 + Kana chars at 0xA1-0xDF.\n // JIS X 0208 - Main set of 6879 characters, placed in 94x94 plane, to be encoded by 2 bytes. \n // Has several variations in 1978, 1983, 1990 and 1997.\n // JIS X 0212 - Supplementary plane of 6067 chars in 94x94 plane. 1990. Effectively dead.\n // JIS X 0213 - Extension and modern replacement of 0208 and 0212. Total chars: 11233.\n // 2 planes, first is superset of 0208, second - revised 0212.\n // Introduced in 2000, revised 2004. Some characters are in Unicode Plane 2 (0x2xxxx)\n\n // Byte encodings are:\n // * Shift_JIS: Compatible with 0201, uses not defined chars in top half as lead bytes for double-byte\n // encoding of 0208. Lead byte ranges: 0x81-0x9F, 0xE0-0xEF; Trail byte ranges: 0x40-0x7E, 0x80-0x9E, 0x9F-0xFC.\n // Windows CP932 is a superset of Shift_JIS. Some companies added more chars, notably KDDI.\n // * EUC-JP: Up to 3 bytes per character. Used mostly on *nixes.\n // 0x00-0x7F - lower part of 0201\n // 0x8E, 0xA1-0xDF - upper part of 0201\n // (0xA1-0xFE)x2 - 0208 plane (94x94).\n // 0x8F, (0xA1-0xFE)x2 - 0212 plane (94x94).\n // * JIS X 208: 7-bit, direct encoding of 0208. Byte ranges: 0x21-0x7E (94 values). Uncommon.\n // Used as-is in ISO2022 family.\n // * ISO2022-JP: Stateful encoding, with escape sequences to switch between ASCII, \n // 0201-1976 Roman, 0208-1978, 0208-1983.\n // * ISO2022-JP-1: Adds esc seq for 0212-1990.\n // * ISO2022-JP-2: Adds esc seq for GB2313-1980, KSX1001-1992, ISO8859-1, ISO8859-7.\n // * ISO2022-JP-3: Adds esc seq for 0201-1976 Kana set, 0213-2000 Planes 1, 2.\n // * ISO2022-JP-2004: Adds 0213-2004 Plane 1.\n //\n // After JIS X 0213 appeared, Shift_JIS-2004, EUC-JISX0213 and ISO2022-JP-2004 followed, with just changing the planes.\n //\n // Overall, it seems that it's a mess :( http://www8.plala.or.jp/tkubota1/unicode-symbols-map2.html\n\n 'shiftjis': {\n type: '_dbcs',\n table: function() { return require('./tables/shiftjis.json') },\n encodeAdd: {'\\u00a5': 0x5C, '\\u203E': 0x7E},\n encodeSkipVals: [{from: 0xED40, to: 0xF940}],\n },\n 'csshiftjis': 'shiftjis',\n 'mskanji': 'shiftjis',\n 'sjis': 'shiftjis',\n 'windows31j': 'shiftjis',\n 'ms31j': 'shiftjis',\n 'xsjis': 'shiftjis',\n 'windows932': 'shiftjis',\n 'ms932': 'shiftjis',\n '932': 'shiftjis',\n 'cp932': 'shiftjis',\n\n 'eucjp': {\n type: '_dbcs',\n table: function() { return require('./tables/eucjp.json') },\n encodeAdd: {'\\u00a5': 0x5C, '\\u203E': 0x7E},\n },\n\n // TODO: KDDI extension to Shift_JIS\n // TODO: IBM CCSID 942 = CP932, but F0-F9 custom chars and other char changes.\n // TODO: IBM CCSID 943 = Shift_JIS = CP932 with original Shift_JIS lower 128 chars.\n\n\n // == Chinese/GBK ==========================================================\n // http://en.wikipedia.org/wiki/GBK\n // We mostly implement W3C recommendation: https://www.w3.org/TR/encoding/#gbk-encoder\n\n // Oldest GB2312 (1981, ~7600 chars) is a subset of CP936\n 'gb2312': 'cp936',\n 'gb231280': 'cp936',\n 'gb23121980': 'cp936',\n 'csgb2312': 'cp936',\n 'csiso58gb231280': 'cp936',\n 'euccn': 'cp936',\n\n // Microsoft's CP936 is a subset and approximation of GBK.\n 'windows936': 'cp936',\n 'ms936': 'cp936',\n '936': 'cp936',\n 'cp936': {\n type: '_dbcs',\n table: function() { return require('./tables/cp936.json') },\n },\n\n // GBK (~22000 chars) is an extension of CP936 that added user-mapped chars and some other.\n 'gbk': {\n type: '_dbcs',\n table: function() { return require('./tables/cp936.json').concat(require('./tables/gbk-added.json')) },\n },\n 'xgbk': 'gbk',\n 'isoir58': 'gbk',\n\n // GB18030 is an algorithmic extension of GBK.\n // Main source: https://www.w3.org/TR/encoding/#gbk-encoder\n // http://icu-project.org/docs/papers/gb18030.html\n // http://source.icu-project.org/repos/icu/data/trunk/charset/data/xml/gb-18030-2000.xml\n // http://www.khngai.com/chinese/charmap/tblgbk.php?page=0\n 'gb18030': {\n type: '_dbcs',\n table: function() { return require('./tables/cp936.json').concat(require('./tables/gbk-added.json')) },\n gb18030: function() { return require('./tables/gb18030-ranges.json') },\n encodeSkipVals: [0x80],\n encodeAdd: {'\u20AC': 0xA2E3},\n },\n\n 'chinese': 'gb18030',\n\n\n // == Korean ===============================================================\n // EUC-KR, KS_C_5601 and KS X 1001 are exactly the same.\n 'windows949': 'cp949',\n 'ms949': 'cp949',\n '949': 'cp949',\n 'cp949': {\n type: '_dbcs',\n table: function() { return require('./tables/cp949.json') },\n },\n\n 'cseuckr': 'cp949',\n 'csksc56011987': 'cp949',\n 'euckr': 'cp949',\n 'isoir149': 'cp949',\n 'korean': 'cp949',\n 'ksc56011987': 'cp949',\n 'ksc56011989': 'cp949',\n 'ksc5601': 'cp949',\n\n\n // == Big5/Taiwan/Hong Kong ================================================\n // There are lots of tables for Big5 and cp950. Please see the following links for history:\n // http://moztw.org/docs/big5/ http://www.haible.de/bruno/charsets/conversion-tables/Big5.html\n // Variations, in roughly number of defined chars:\n // * Windows CP 950: Microsoft variant of Big5. Canonical: http://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP950.TXT\n // * Windows CP 951: Microsoft variant of Big5-HKSCS-2001. Seems to be never public. http://me.abelcheung.org/articles/research/what-is-cp951/\n // * Big5-2003 (Taiwan standard) almost superset of cp950.\n // * Unicode-at-on (UAO) / Mozilla 1.8. Falling out of use on the Web. Not supported by other browsers.\n // * Big5-HKSCS (-2001, -2004, -2008). Hong Kong standard. \n // many unicode code points moved from PUA to Supplementary plane (U+2XXXX) over the years.\n // Plus, it has 4 combining sequences.\n // Seems that Mozilla refused to support it for 10 yrs. https://bugzilla.mozilla.org/show_bug.cgi?id=162431 https://bugzilla.mozilla.org/show_bug.cgi?id=310299\n // because big5-hkscs is the only encoding to include astral characters in non-algorithmic way.\n // Implementations are not consistent within browsers; sometimes labeled as just big5.\n // MS Internet Explorer switches from big5 to big5-hkscs when a patch applied.\n // Great discussion & recap of what's going on https://bugzilla.mozilla.org/show_bug.cgi?id=912470#c31\n // In the encoder, it might make sense to support encoding old PUA mappings to Big5 bytes seq-s.\n // Official spec: http://www.ogcio.gov.hk/en/business/tech_promotion/ccli/terms/doc/2003cmp_2008.txt\n // http://www.ogcio.gov.hk/tc/business/tech_promotion/ccli/terms/doc/hkscs-2008-big5-iso.txt\n // \n // Current understanding of how to deal with Big5(-HKSCS) is in the Encoding Standard, http://encoding.spec.whatwg.org/#big5-encoder\n // Unicode mapping (http://www.unicode.org/Public/MAPPINGS/OBSOLETE/EASTASIA/OTHER/BIG5.TXT) is said to be wrong.\n\n 'windows950': 'cp950',\n 'ms950': 'cp950',\n '950': 'cp950',\n 'cp950': {\n type: '_dbcs',\n table: function() { return require('./tables/cp950.json') },\n },\n\n // Big5 has many variations and is an extension of cp950. We use Encoding Standard's as a consensus.\n 'big5': 'big5hkscs',\n 'big5hkscs': {\n type: '_dbcs',\n table: function() { return require('./tables/cp950.json').concat(require('./tables/big5-added.json')) },\n encodeSkipVals: [0xa2cc],\n },\n\n 'cnbig5': 'big5hkscs',\n 'csbig5': 'big5hkscs',\n 'xxbig5': 'big5hkscs',\n};\n", "\"use strict\";\n\n// Update this array if you add/rename/remove files in this directory.\n// We support Browserify by skipping automatic module discovery and requiring modules directly.\nvar modules = [\n require(\"./internal\"),\n require(\"./utf16\"),\n require(\"./utf7\"),\n require(\"./sbcs-codec\"),\n require(\"./sbcs-data\"),\n require(\"./sbcs-data-generated\"),\n require(\"./dbcs-codec\"),\n require(\"./dbcs-data\"),\n];\n\n// Put all encoding/alias/codec definitions to single object and export it. \nfor (var i = 0; i < modules.length; i++) {\n var module = modules[i];\n for (var enc in module)\n if (Object.prototype.hasOwnProperty.call(module, enc))\n exports[enc] = module[enc];\n}\n", "\"use strict\";\n\nvar Buffer = require(\"buffer\").Buffer,\n Transform = require(\"stream\").Transform;\n\n\n// == Exports ==================================================================\nmodule.exports = function(iconv) {\n \n // Additional Public API.\n iconv.encodeStream = function encodeStream(encoding, options) {\n return new IconvLiteEncoderStream(iconv.getEncoder(encoding, options), options);\n }\n\n iconv.decodeStream = function decodeStream(encoding, options) {\n return new IconvLiteDecoderStream(iconv.getDecoder(encoding, options), options);\n }\n\n iconv.supportsStreams = true;\n\n\n // Not published yet.\n iconv.IconvLiteEncoderStream = IconvLiteEncoderStream;\n iconv.IconvLiteDecoderStream = IconvLiteDecoderStream;\n iconv._collect = IconvLiteDecoderStream.prototype.collect;\n};\n\n\n// == Encoder stream =======================================================\nfunction IconvLiteEncoderStream(conv, options) {\n this.conv = conv;\n options = options || {};\n options.decodeStrings = false; // We accept only strings, so we don't need to decode them.\n Transform.call(this, options);\n}\n\nIconvLiteEncoderStream.prototype = Object.create(Transform.prototype, {\n constructor: { value: IconvLiteEncoderStream }\n});\n\nIconvLiteEncoderStream.prototype._transform = function(chunk, encoding, done) {\n if (typeof chunk != 'string')\n return done(new Error(\"Iconv encoding stream needs strings as its input.\"));\n try {\n var res = this.conv.write(chunk);\n if (res && res.length) this.push(res);\n done();\n }\n catch (e) {\n done(e);\n }\n}\n\nIconvLiteEncoderStream.prototype._flush = function(done) {\n try {\n var res = this.conv.end();\n if (res && res.length) this.push(res);\n done();\n }\n catch (e) {\n done(e);\n }\n}\n\nIconvLiteEncoderStream.prototype.collect = function(cb) {\n var chunks = [];\n this.on('error', cb);\n this.on('data', function(chunk) { chunks.push(chunk); });\n this.on('end', function() {\n cb(null, Buffer.concat(chunks));\n });\n return this;\n}\n\n\n// == Decoder stream =======================================================\nfunction IconvLiteDecoderStream(conv, options) {\n this.conv = conv;\n options = options || {};\n options.encoding = this.encoding = 'utf8'; // We output strings.\n Transform.call(this, options);\n}\n\nIconvLiteDecoderStream.prototype = Object.create(Transform.prototype, {\n constructor: { value: IconvLiteDecoderStream }\n});\n\nIconvLiteDecoderStream.prototype._transform = function(chunk, encoding, done) {\n if (!Buffer.isBuffer(chunk))\n return done(new Error(\"Iconv decoding stream needs buffers as its input.\"));\n try {\n var res = this.conv.write(chunk);\n if (res && res.length) this.push(res, this.encoding);\n done();\n }\n catch (e) {\n done(e);\n }\n}\n\nIconvLiteDecoderStream.prototype._flush = function(done) {\n try {\n var res = this.conv.end();\n if (res && res.length) this.push(res, this.encoding); \n done();\n }\n catch (e) {\n done(e);\n }\n}\n\nIconvLiteDecoderStream.prototype.collect = function(cb) {\n var res = '';\n this.on('error', cb);\n this.on('data', function(chunk) { res += chunk; });\n this.on('end', function() {\n cb(null, res);\n });\n return this;\n}\n\n", "\"use strict\";\nvar Buffer = require(\"buffer\").Buffer;\n// Note: not polyfilled with safer-buffer on a purpose, as overrides Buffer\n\n// == Extend Node primitives to use iconv-lite =================================\n\nmodule.exports = function (iconv) {\n var original = undefined; // Place to keep original methods.\n\n // Node authors rewrote Buffer internals to make it compatible with\n // Uint8Array and we cannot patch key functions since then.\n // Note: this does use older Buffer API on a purpose\n iconv.supportsNodeEncodingsExtension = !(Buffer.from || new Buffer(0) instanceof Uint8Array);\n\n iconv.extendNodeEncodings = function extendNodeEncodings() {\n if (original) return;\n original = {};\n\n if (!iconv.supportsNodeEncodingsExtension) {\n console.error(\"ACTION NEEDED: require('iconv-lite').extendNodeEncodings() is not supported in your version of Node\");\n console.error(\"See more info at https://github.com/ashtuchkin/iconv-lite/wiki/Node-v4-compatibility\");\n return;\n }\n\n var nodeNativeEncodings = {\n 'hex': true, 'utf8': true, 'utf-8': true, 'ascii': true, 'binary': true, \n 'base64': true, 'ucs2': true, 'ucs-2': true, 'utf16le': true, 'utf-16le': true,\n };\n\n Buffer.isNativeEncoding = function(enc) {\n return enc && nodeNativeEncodings[enc.toLowerCase()];\n }\n\n // -- SlowBuffer -----------------------------------------------------------\n var SlowBuffer = require('buffer').SlowBuffer;\n\n original.SlowBufferToString = SlowBuffer.prototype.toString;\n SlowBuffer.prototype.toString = function(encoding, start, end) {\n encoding = String(encoding || 'utf8').toLowerCase();\n\n // Use native conversion when possible\n if (Buffer.isNativeEncoding(encoding))\n return original.SlowBufferToString.call(this, encoding, start, end);\n\n // Otherwise, use our decoding method.\n if (typeof start == 'undefined') start = 0;\n if (typeof end == 'undefined') end = this.length;\n return iconv.decode(this.slice(start, end), encoding);\n }\n\n original.SlowBufferWrite = SlowBuffer.prototype.write;\n SlowBuffer.prototype.write = function(string, offset, length, encoding) {\n // Support both (string, offset, length, encoding)\n // and the legacy (string, encoding, offset, length)\n if (isFinite(offset)) {\n if (!isFinite(length)) {\n encoding = length;\n length = undefined;\n }\n } else { // legacy\n var swap = encoding;\n encoding = offset;\n offset = length;\n length = swap;\n }\n\n offset = +offset || 0;\n var remaining = this.length - offset;\n if (!length) {\n length = remaining;\n } else {\n length = +length;\n if (length > remaining) {\n length = remaining;\n }\n }\n encoding = String(encoding || 'utf8').toLowerCase();\n\n // Use native conversion when possible\n if (Buffer.isNativeEncoding(encoding))\n return original.SlowBufferWrite.call(this, string, offset, length, encoding);\n\n if (string.length > 0 && (length < 0 || offset < 0))\n throw new RangeError('attempt to write beyond buffer bounds');\n\n // Otherwise, use our encoding method.\n var buf = iconv.encode(string, encoding);\n if (buf.length < length) length = buf.length;\n buf.copy(this, offset, 0, length);\n return length;\n }\n\n // -- Buffer ---------------------------------------------------------------\n\n original.BufferIsEncoding = Buffer.isEncoding;\n Buffer.isEncoding = function(encoding) {\n return Buffer.isNativeEncoding(encoding) || iconv.encodingExists(encoding);\n }\n\n original.BufferByteLength = Buffer.byteLength;\n Buffer.byteLength = SlowBuffer.byteLength = function(str, encoding) {\n encoding = String(encoding || 'utf8').toLowerCase();\n\n // Use native conversion when possible\n if (Buffer.isNativeEncoding(encoding))\n return original.BufferByteLength.call(this, str, encoding);\n\n // Slow, I know, but we don't have a better way yet.\n return iconv.encode(str, encoding).length;\n }\n\n original.BufferToString = Buffer.prototype.toString;\n Buffer.prototype.toString = function(encoding, start, end) {\n encoding = String(encoding || 'utf8').toLowerCase();\n\n // Use native conversion when possible\n if (Buffer.isNativeEncoding(encoding))\n return original.BufferToString.call(this, encoding, start, end);\n\n // Otherwise, use our decoding method.\n if (typeof start == 'undefined') start = 0;\n if (typeof end == 'undefined') end = this.length;\n return iconv.decode(this.slice(start, end), encoding);\n }\n\n original.BufferWrite = Buffer.prototype.write;\n Buffer.prototype.write = function(string, offset, length, encoding) {\n var _offset = offset, _length = length, _encoding = encoding;\n // Support both (string, offset, length, encoding)\n // and the legacy (string, encoding, offset, length)\n if (isFinite(offset)) {\n if (!isFinite(length)) {\n encoding = length;\n length = undefined;\n }\n } else { // legacy\n var swap = encoding;\n encoding = offset;\n offset = length;\n length = swap;\n }\n\n encoding = String(encoding || 'utf8').toLowerCase();\n\n // Use native conversion when possible\n if (Buffer.isNativeEncoding(encoding))\n return original.BufferWrite.call(this, string, _offset, _length, _encoding);\n\n offset = +offset || 0;\n var remaining = this.length - offset;\n if (!length) {\n length = remaining;\n } else {\n length = +length;\n if (length > remaining) {\n length = remaining;\n }\n }\n\n if (string.length > 0 && (length < 0 || offset < 0))\n throw new RangeError('attempt to write beyond buffer bounds');\n\n // Otherwise, use our encoding method.\n var buf = iconv.encode(string, encoding);\n if (buf.length < length) length = buf.length;\n buf.copy(this, offset, 0, length);\n return length;\n\n // TODO: Set _charsWritten.\n }\n\n\n // -- Readable -------------------------------------------------------------\n if (iconv.supportsStreams) {\n var Readable = require('stream').Readable;\n\n original.ReadableSetEncoding = Readable.prototype.setEncoding;\n Readable.prototype.setEncoding = function setEncoding(enc, options) {\n // Use our own decoder, it has the same interface.\n // We cannot use original function as it doesn't handle BOM-s.\n this._readableState.decoder = iconv.getDecoder(enc, options);\n this._readableState.encoding = enc;\n }\n\n Readable.prototype.collect = iconv._collect;\n }\n }\n\n // Remove iconv-lite Node primitive extensions.\n iconv.undoExtendNodeEncodings = function undoExtendNodeEncodings() {\n if (!iconv.supportsNodeEncodingsExtension)\n return;\n if (!original)\n throw new Error(\"require('iconv-lite').undoExtendNodeEncodings(): Nothing to undo; extendNodeEncodings() is not called.\")\n\n delete Buffer.isNativeEncoding;\n\n var SlowBuffer = require('buffer').SlowBuffer;\n\n SlowBuffer.prototype.toString = original.SlowBufferToString;\n SlowBuffer.prototype.write = original.SlowBufferWrite;\n\n Buffer.isEncoding = original.BufferIsEncoding;\n Buffer.byteLength = original.BufferByteLength;\n Buffer.prototype.toString = original.BufferToString;\n Buffer.prototype.write = original.BufferWrite;\n\n if (iconv.supportsStreams) {\n var Readable = require('stream').Readable;\n\n Readable.prototype.setEncoding = original.ReadableSetEncoding;\n delete Readable.prototype.collect;\n }\n\n original = undefined;\n }\n}\n", "\"use strict\";\n\n// Some environments don't have global Buffer (e.g. React Native).\n// Solution would be installing npm modules \"buffer\" and \"stream\" explicitly.\nvar Buffer = require(\"safer-buffer\").Buffer;\n\nvar bomHandling = require(\"./bom-handling\"),\n iconv = module.exports;\n\n// All codecs and aliases are kept here, keyed by encoding name/alias.\n// They are lazy loaded in `iconv.getCodec` from `encodings/index.js`.\niconv.encodings = null;\n\n// Characters emitted in case of error.\niconv.defaultCharUnicode = '\uFFFD';\niconv.defaultCharSingleByte = '?';\n\n// Public API.\niconv.encode = function encode(str, encoding, options) {\n str = \"\" + (str || \"\"); // Ensure string.\n\n var encoder = iconv.getEncoder(encoding, options);\n\n var res = encoder.write(str);\n var trail = encoder.end();\n \n return (trail && trail.length > 0) ? Buffer.concat([res, trail]) : res;\n}\n\niconv.decode = function decode(buf, encoding, options) {\n if (typeof buf === 'string') {\n if (!iconv.skipDecodeWarning) {\n console.error('Iconv-lite warning: decode()-ing strings is deprecated. Refer to https://github.com/ashtuchkin/iconv-lite/wiki/Use-Buffers-when-decoding');\n iconv.skipDecodeWarning = true;\n }\n\n buf = Buffer.from(\"\" + (buf || \"\"), \"binary\"); // Ensure buffer.\n }\n\n var decoder = iconv.getDecoder(encoding, options);\n\n var res = decoder.write(buf);\n var trail = decoder.end();\n\n return trail ? (res + trail) : res;\n}\n\niconv.encodingExists = function encodingExists(enc) {\n try {\n iconv.getCodec(enc);\n return true;\n } catch (e) {\n return false;\n }\n}\n\n// Legacy aliases to convert functions\niconv.toEncoding = iconv.encode;\niconv.fromEncoding = iconv.decode;\n\n// Search for a codec in iconv.encodings. Cache codec data in iconv._codecDataCache.\niconv._codecDataCache = {};\niconv.getCodec = function getCodec(encoding) {\n if (!iconv.encodings)\n iconv.encodings = require(\"../encodings\"); // Lazy load all encoding definitions.\n \n // Canonicalize encoding name: strip all non-alphanumeric chars and appended year.\n var enc = iconv._canonicalizeEncoding(encoding);\n\n // Traverse iconv.encodings to find actual codec.\n var codecOptions = {};\n while (true) {\n var codec = iconv._codecDataCache[enc];\n if (codec)\n return codec;\n\n var codecDef = iconv.encodings[enc];\n\n switch (typeof codecDef) {\n case \"string\": // Direct alias to other encoding.\n enc = codecDef;\n break;\n\n case \"object\": // Alias with options. Can be layered.\n for (var key in codecDef)\n codecOptions[key] = codecDef[key];\n\n if (!codecOptions.encodingName)\n codecOptions.encodingName = enc;\n \n enc = codecDef.type;\n break;\n\n case \"function\": // Codec itself.\n if (!codecOptions.encodingName)\n codecOptions.encodingName = enc;\n\n // The codec function must load all tables and return object with .encoder and .decoder methods.\n // It'll be called only once (for each different options object).\n codec = new codecDef(codecOptions, iconv);\n\n iconv._codecDataCache[codecOptions.encodingName] = codec; // Save it to be reused later.\n return codec;\n\n default:\n throw new Error(\"Encoding not recognized: '\" + encoding + \"' (searched as: '\"+enc+\"')\");\n }\n }\n}\n\niconv._canonicalizeEncoding = function(encoding) {\n // Canonicalize encoding name: strip all non-alphanumeric chars and appended year.\n return (''+encoding).toLowerCase().replace(/:\\d{4}$|[^0-9a-z]/g, \"\");\n}\n\niconv.getEncoder = function getEncoder(encoding, options) {\n var codec = iconv.getCodec(encoding),\n encoder = new codec.encoder(options, codec);\n\n if (codec.bomAware && options && options.addBOM)\n encoder = new bomHandling.PrependBOM(encoder, options);\n\n return encoder;\n}\n\niconv.getDecoder = function getDecoder(encoding, options) {\n var codec = iconv.getCodec(encoding),\n decoder = new codec.decoder(options, codec);\n\n if (codec.bomAware && !(options && options.stripBOM === false))\n decoder = new bomHandling.StripBOM(decoder, options);\n\n return decoder;\n}\n\n\n// Load extensions in Node. All of them are omitted in Browserify build via 'browser' field in package.json.\nvar nodeVer = typeof process !== 'undefined' && process.versions && process.versions.node;\nif (nodeVer) {\n\n // Load streaming support in Node v0.10+\n var nodeVerArr = nodeVer.split(\".\").map(Number);\n if (nodeVerArr[0] > 0 || nodeVerArr[1] >= 10) {\n require(\"./streams\")(iconv);\n }\n\n // Load Node primitive extensions.\n require(\"./extend-node\")(iconv);\n}\n\nif (\"\u0100\" != \"\\u0100\") {\n console.error(\"iconv-lite warning: javascript files use encoding different from utf-8. See https://github.com/ashtuchkin/iconv-lite/wiki/Javascript-source-file-encodings for more info.\");\n}\n", "/*!\n * unpipe\n * Copyright(c) 2015 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict'\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = unpipe\n\n/**\n * Determine if there are Node.js pipe-like data listeners.\n * @private\n */\n\nfunction hasPipeDataListeners(stream) {\n var listeners = stream.listeners('data')\n\n for (var i = 0; i < listeners.length; i++) {\n if (listeners[i].name === 'ondata') {\n return true\n }\n }\n\n return false\n}\n\n/**\n * Unpipe a stream from all destinations.\n *\n * @param {object} stream\n * @public\n */\n\nfunction unpipe(stream) {\n if (!stream) {\n throw new TypeError('argument stream is required')\n }\n\n if (typeof stream.unpipe === 'function') {\n // new-style\n stream.unpipe()\n return\n }\n\n // Node.js 0.8 hack\n if (!hasPipeDataListeners(stream)) {\n return\n }\n\n var listener\n var listeners = stream.listeners('close')\n\n for (var i = 0; i < listeners.length; i++) {\n listener = listeners[i]\n\n if (listener.name !== 'cleanup' && listener.name !== 'onclose') {\n continue\n }\n\n // invoke the listener\n listener.call(stream)\n }\n}\n", "/*!\n * raw-body\n * Copyright(c) 2013-2014 Jonathan Ong\n * Copyright(c) 2014-2022 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict'\n\n/**\n * Module dependencies.\n * @private\n */\n\nvar asyncHooks = tryRequireAsyncHooks()\nvar bytes = require('bytes')\nvar createError = require('http-errors')\nvar iconv = require('iconv-lite')\nvar unpipe = require('unpipe')\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = getRawBody\n\n/**\n * Module variables.\n * @private\n */\n\nvar ICONV_ENCODING_MESSAGE_REGEXP = /^Encoding not recognized: /\n\n/**\n * Get the decoder for a given encoding.\n *\n * @param {string} encoding\n * @private\n */\n\nfunction getDecoder (encoding) {\n if (!encoding) return null\n\n try {\n return iconv.getDecoder(encoding)\n } catch (e) {\n // error getting decoder\n if (!ICONV_ENCODING_MESSAGE_REGEXP.test(e.message)) throw e\n\n // the encoding was not found\n throw createError(415, 'specified encoding unsupported', {\n encoding: encoding,\n type: 'encoding.unsupported'\n })\n }\n}\n\n/**\n * Get the raw body of a stream (typically HTTP).\n *\n * @param {object} stream\n * @param {object|string|function} [options]\n * @param {function} [callback]\n * @public\n */\n\nfunction getRawBody (stream, options, callback) {\n var done = callback\n var opts = options || {}\n\n if (options === true || typeof options === 'string') {\n // short cut for encoding\n opts = {\n encoding: options\n }\n }\n\n if (typeof options === 'function') {\n done = options\n opts = {}\n }\n\n // validate callback is a function, if provided\n if (done !== undefined && typeof done !== 'function') {\n throw new TypeError('argument callback must be a function')\n }\n\n // require the callback without promises\n if (!done && !global.Promise) {\n throw new TypeError('argument callback is required')\n }\n\n // get encoding\n var encoding = opts.encoding !== true\n ? opts.encoding\n : 'utf-8'\n\n // convert the limit to an integer\n var limit = bytes.parse(opts.limit)\n\n // convert the expected length to an integer\n var length = opts.length != null && !isNaN(opts.length)\n ? parseInt(opts.length, 10)\n : null\n\n if (done) {\n // classic callback style\n return readStream(stream, encoding, length, limit, wrap(done))\n }\n\n return new Promise(function executor (resolve, reject) {\n readStream(stream, encoding, length, limit, function onRead (err, buf) {\n if (err) return reject(err)\n resolve(buf)\n })\n })\n}\n\n/**\n * Halt a stream.\n *\n * @param {Object} stream\n * @private\n */\n\nfunction halt (stream) {\n // unpipe everything from the stream\n unpipe(stream)\n\n // pause stream\n if (typeof stream.pause === 'function') {\n stream.pause()\n }\n}\n\n/**\n * Read the data from the stream.\n *\n * @param {object} stream\n * @param {string} encoding\n * @param {number} length\n * @param {number} limit\n * @param {function} callback\n * @public\n */\n\nfunction readStream (stream, encoding, length, limit, callback) {\n var complete = false\n var sync = true\n\n // check the length and limit options.\n // note: we intentionally leave the stream paused,\n // so users should handle the stream themselves.\n if (limit !== null && length !== null && length > limit) {\n return done(createError(413, 'request entity too large', {\n expected: length,\n length: length,\n limit: limit,\n type: 'entity.too.large'\n }))\n }\n\n // streams1: assert request encoding is buffer.\n // streams2+: assert the stream encoding is buffer.\n // stream._decoder: streams1\n // state.encoding: streams2\n // state.decoder: streams2, specifically < 0.10.6\n var state = stream._readableState\n if (stream._decoder || (state && (state.encoding || state.decoder))) {\n // developer error\n return done(createError(500, 'stream encoding should not be set', {\n type: 'stream.encoding.set'\n }))\n }\n\n if (typeof stream.readable !== 'undefined' && !stream.readable) {\n return done(createError(500, 'stream is not readable', {\n type: 'stream.not.readable'\n }))\n }\n\n var received = 0\n var decoder\n\n try {\n decoder = getDecoder(encoding)\n } catch (err) {\n return done(err)\n }\n\n var buffer = decoder\n ? ''\n : []\n\n // attach listeners\n stream.on('aborted', onAborted)\n stream.on('close', cleanup)\n stream.on('data', onData)\n stream.on('end', onEnd)\n stream.on('error', onEnd)\n\n // mark sync section complete\n sync = false\n\n function done () {\n var args = new Array(arguments.length)\n\n // copy arguments\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i]\n }\n\n // mark complete\n complete = true\n\n if (sync) {\n process.nextTick(invokeCallback)\n } else {\n invokeCallback()\n }\n\n function invokeCallback () {\n cleanup()\n\n if (args[0]) {\n // halt the stream on error\n halt(stream)\n }\n\n callback.apply(null, args)\n }\n }\n\n function onAborted () {\n if (complete) return\n\n done(createError(400, 'request aborted', {\n code: 'ECONNABORTED',\n expected: length,\n length: length,\n received: received,\n type: 'request.aborted'\n }))\n }\n\n function onData (chunk) {\n if (complete) return\n\n received += chunk.length\n\n if (limit !== null && received > limit) {\n done(createError(413, 'request entity too large', {\n limit: limit,\n received: received,\n type: 'entity.too.large'\n }))\n } else if (decoder) {\n buffer += decoder.write(chunk)\n } else {\n buffer.push(chunk)\n }\n }\n\n function onEnd (err) {\n if (complete) return\n if (err) return done(err)\n\n if (length !== null && received !== length) {\n done(createError(400, 'request size did not match content length', {\n expected: length,\n length: length,\n received: received,\n type: 'request.size.invalid'\n }))\n } else {\n var string = decoder\n ? buffer + (decoder.end() || '')\n : Buffer.concat(buffer)\n done(null, string)\n }\n }\n\n function cleanup () {\n buffer = null\n\n stream.removeListener('aborted', onAborted)\n stream.removeListener('data', onData)\n stream.removeListener('end', onEnd)\n stream.removeListener('error', onEnd)\n stream.removeListener('close', cleanup)\n }\n}\n\n/**\n * Try to require async_hooks\n * @private\n */\n\nfunction tryRequireAsyncHooks () {\n try {\n return require('async_hooks')\n } catch (e) {\n return {}\n }\n}\n\n/**\n * Wrap function with async resource, if possible.\n * AsyncResource.bind static method backported.\n * @private\n */\n\nfunction wrap (fn) {\n var res\n\n // create anonymous resource\n if (asyncHooks.AsyncResource) {\n res = new asyncHooks.AsyncResource(fn.name || 'bound-anonymous-fn')\n }\n\n // incompatible node.js\n if (!res || !res.runInAsyncScope) {\n return fn\n }\n\n // return bound function\n return res.runInAsyncScope.bind(res, fn, null)\n}\n", "/*!\n * ee-first\n * Copyright(c) 2014 Jonathan Ong\n * MIT Licensed\n */\n\n'use strict'\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = first\n\n/**\n * Get the first event in a set of event emitters and event pairs.\n *\n * @param {array} stuff\n * @param {function} done\n * @public\n */\n\nfunction first(stuff, done) {\n if (!Array.isArray(stuff))\n throw new TypeError('arg must be an array of [ee, events...] arrays')\n\n var cleanups = []\n\n for (var i = 0; i < stuff.length; i++) {\n var arr = stuff[i]\n\n if (!Array.isArray(arr) || arr.length < 2)\n throw new TypeError('each array member must be [ee, events...]')\n\n var ee = arr[0]\n\n for (var j = 1; j < arr.length; j++) {\n var event = arr[j]\n var fn = listener(event, callback)\n\n // listen to the event\n ee.on(event, fn)\n // push this listener to the list of cleanups\n cleanups.push({\n ee: ee,\n event: event,\n fn: fn,\n })\n }\n }\n\n function callback() {\n cleanup()\n done.apply(null, arguments)\n }\n\n function cleanup() {\n var x\n for (var i = 0; i < cleanups.length; i++) {\n x = cleanups[i]\n x.ee.removeListener(x.event, x.fn)\n }\n }\n\n function thunk(fn) {\n done = fn\n }\n\n thunk.cancel = cleanup\n\n return thunk\n}\n\n/**\n * Create the event listener.\n * @private\n */\n\nfunction listener(event, done) {\n return function onevent(arg1) {\n var args = new Array(arguments.length)\n var ee = this\n var err = event === 'error'\n ? arg1\n : null\n\n // copy args to prevent arguments escaping scope\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i]\n }\n\n done(err, ee, event, args)\n }\n}\n", "/*!\n * on-finished\n * Copyright(c) 2013 Jonathan Ong\n * Copyright(c) 2014 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict'\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = onFinished\nmodule.exports.isFinished = isFinished\n\n/**\n * Module dependencies.\n * @private\n */\n\nvar asyncHooks = tryRequireAsyncHooks()\nvar first = require('ee-first')\n\n/**\n * Variables.\n * @private\n */\n\n/* istanbul ignore next */\nvar defer = typeof setImmediate === 'function'\n ? setImmediate\n : function (fn) { process.nextTick(fn.bind.apply(fn, arguments)) }\n\n/**\n * Invoke callback when the response has finished, useful for\n * cleaning up resources afterwards.\n *\n * @param {object} msg\n * @param {function} listener\n * @return {object}\n * @public\n */\n\nfunction onFinished (msg, listener) {\n if (isFinished(msg) !== false) {\n defer(listener, null, msg)\n return msg\n }\n\n // attach the listener to the message\n attachListener(msg, wrap(listener))\n\n return msg\n}\n\n/**\n * Determine if message is already finished.\n *\n * @param {object} msg\n * @return {boolean}\n * @public\n */\n\nfunction isFinished (msg) {\n var socket = msg.socket\n\n if (typeof msg.finished === 'boolean') {\n // OutgoingMessage\n return Boolean(msg.finished || (socket && !socket.writable))\n }\n\n if (typeof msg.complete === 'boolean') {\n // IncomingMessage\n return Boolean(msg.upgrade || !socket || !socket.readable || (msg.complete && !msg.readable))\n }\n\n // don't know\n return undefined\n}\n\n/**\n * Attach a finished listener to the message.\n *\n * @param {object} msg\n * @param {function} callback\n * @private\n */\n\nfunction attachFinishedListener (msg, callback) {\n var eeMsg\n var eeSocket\n var finished = false\n\n function onFinish (error) {\n eeMsg.cancel()\n eeSocket.cancel()\n\n finished = true\n callback(error)\n }\n\n // finished on first message event\n eeMsg = eeSocket = first([[msg, 'end', 'finish']], onFinish)\n\n function onSocket (socket) {\n // remove listener\n msg.removeListener('socket', onSocket)\n\n if (finished) return\n if (eeMsg !== eeSocket) return\n\n // finished on first socket event\n eeSocket = first([[socket, 'error', 'close']], onFinish)\n }\n\n if (msg.socket) {\n // socket already assigned\n onSocket(msg.socket)\n return\n }\n\n // wait for socket to be assigned\n msg.on('socket', onSocket)\n\n if (msg.socket === undefined) {\n // istanbul ignore next: node.js 0.8 patch\n patchAssignSocket(msg, onSocket)\n }\n}\n\n/**\n * Attach the listener to the message.\n *\n * @param {object} msg\n * @return {function}\n * @private\n */\n\nfunction attachListener (msg, listener) {\n var attached = msg.__onFinished\n\n // create a private single listener with queue\n if (!attached || !attached.queue) {\n attached = msg.__onFinished = createListener(msg)\n attachFinishedListener(msg, attached)\n }\n\n attached.queue.push(listener)\n}\n\n/**\n * Create listener on message.\n *\n * @param {object} msg\n * @return {function}\n * @private\n */\n\nfunction createListener (msg) {\n function listener (err) {\n if (msg.__onFinished === listener) msg.__onFinished = null\n if (!listener.queue) return\n\n var queue = listener.queue\n listener.queue = null\n\n for (var i = 0; i < queue.length; i++) {\n queue[i](err, msg)\n }\n }\n\n listener.queue = []\n\n return listener\n}\n\n/**\n * Patch ServerResponse.prototype.assignSocket for node.js 0.8.\n *\n * @param {ServerResponse} res\n * @param {function} callback\n * @private\n */\n\n// istanbul ignore next: node.js 0.8 patch\nfunction patchAssignSocket (res, callback) {\n var assignSocket = res.assignSocket\n\n if (typeof assignSocket !== 'function') return\n\n // res.on('socket', callback) is broken in 0.8\n res.assignSocket = function _assignSocket (socket) {\n assignSocket.call(this, socket)\n callback(socket)\n }\n}\n\n/**\n * Try to require async_hooks\n * @private\n */\n\nfunction tryRequireAsyncHooks () {\n try {\n return require('async_hooks')\n } catch (e) {\n return {}\n }\n}\n\n/**\n * Wrap function with async resource, if possible.\n * AsyncResource.bind static method backported.\n * @private\n */\n\nfunction wrap (fn) {\n var res\n\n // create anonymous resource\n if (asyncHooks.AsyncResource) {\n res = new asyncHooks.AsyncResource(fn.name || 'bound-anonymous-fn')\n }\n\n // incompatible node.js\n if (!res || !res.runInAsyncScope) {\n return fn\n }\n\n // return bound function\n return res.runInAsyncScope.bind(res, fn, null)\n}\n", "/*!\n * body-parser\n * Copyright(c) 2014-2015 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict'\n\n/**\n * Module dependencies.\n * @private\n */\n\nvar createError = require('http-errors')\nvar destroy = require('destroy')\nvar getBody = require('raw-body')\nvar iconv = require('iconv-lite')\nvar onFinished = require('on-finished')\nvar unpipe = require('unpipe')\nvar zlib = require('zlib')\n\n/**\n * Module exports.\n */\n\nmodule.exports = read\n\n/**\n * Read a request into a buffer and parse.\n *\n * @param {object} req\n * @param {object} res\n * @param {function} next\n * @param {function} parse\n * @param {function} debug\n * @param {object} options\n * @private\n */\n\nfunction read (req, res, next, parse, debug, options) {\n var length\n var opts = options\n var stream\n\n // flag as parsed\n req._body = true\n\n // read options\n var encoding = opts.encoding !== null\n ? opts.encoding\n : null\n var verify = opts.verify\n\n try {\n // get the content stream\n stream = contentstream(req, debug, opts.inflate)\n length = stream.length\n stream.length = undefined\n } catch (err) {\n return next(err)\n }\n\n // set raw-body options\n opts.length = length\n opts.encoding = verify\n ? null\n : encoding\n\n // assert charset is supported\n if (opts.encoding === null && encoding !== null && !iconv.encodingExists(encoding)) {\n return next(createError(415, 'unsupported charset \"' + encoding.toUpperCase() + '\"', {\n charset: encoding.toLowerCase(),\n type: 'charset.unsupported'\n }))\n }\n\n // read body\n debug('read body')\n getBody(stream, opts, function (error, body) {\n if (error) {\n var _error\n\n if (error.type === 'encoding.unsupported') {\n // echo back charset\n _error = createError(415, 'unsupported charset \"' + encoding.toUpperCase() + '\"', {\n charset: encoding.toLowerCase(),\n type: 'charset.unsupported'\n })\n } else {\n // set status code on error\n _error = createError(400, error)\n }\n\n // unpipe from stream and destroy\n if (stream !== req) {\n unpipe(req)\n destroy(stream, true)\n }\n\n // read off entire request\n dump(req, function onfinished () {\n next(createError(400, _error))\n })\n return\n }\n\n // verify\n if (verify) {\n try {\n debug('verify body')\n verify(req, res, body, encoding)\n } catch (err) {\n next(createError(403, err, {\n body: body,\n type: err.type || 'entity.verify.failed'\n }))\n return\n }\n }\n\n // parse\n var str = body\n try {\n debug('parse body')\n str = typeof body !== 'string' && encoding !== null\n ? iconv.decode(body, encoding)\n : body\n req.body = parse(str)\n } catch (err) {\n next(createError(400, err, {\n body: str,\n type: err.type || 'entity.parse.failed'\n }))\n return\n }\n\n next()\n })\n}\n\n/**\n * Get the content stream of the request.\n *\n * @param {object} req\n * @param {function} debug\n * @param {boolean} [inflate=true]\n * @return {object}\n * @api private\n */\n\nfunction contentstream (req, debug, inflate) {\n var encoding = (req.headers['content-encoding'] || 'identity').toLowerCase()\n var length = req.headers['content-length']\n var stream\n\n debug('content-encoding \"%s\"', encoding)\n\n if (inflate === false && encoding !== 'identity') {\n throw createError(415, 'content encoding unsupported', {\n encoding: encoding,\n type: 'encoding.unsupported'\n })\n }\n\n switch (encoding) {\n case 'deflate':\n stream = zlib.createInflate()\n debug('inflate body')\n req.pipe(stream)\n break\n case 'gzip':\n stream = zlib.createGunzip()\n debug('gunzip body')\n req.pipe(stream)\n break\n case 'identity':\n stream = req\n stream.length = length\n break\n default:\n throw createError(415, 'unsupported content encoding \"' + encoding + '\"', {\n encoding: encoding,\n type: 'encoding.unsupported'\n })\n }\n\n return stream\n}\n\n/**\n * Dump the contents of a request.\n *\n * @param {object} req\n * @param {function} callback\n * @api private\n */\n\nfunction dump (req, callback) {\n if (onFinished.isFinished(req)) {\n callback(null)\n } else {\n onFinished(req, callback)\n req.resume()\n }\n}\n", "/*!\n * media-typer\n * Copyright(c) 2014 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n/**\n * RegExp to match *( \";\" parameter ) in RFC 2616 sec 3.7\n *\n * parameter = token \"=\" ( token | quoted-string )\n * token = 1*\n * separators = \"(\" | \")\" | \"<\" | \">\" | \"@\"\n * | \",\" | \";\" | \":\" | \"\\\" | <\">\n * | \"/\" | \"[\" | \"]\" | \"?\" | \"=\"\n * | \"{\" | \"}\" | SP | HT\n * quoted-string = ( <\"> *(qdtext | quoted-pair ) <\"> )\n * qdtext = >\n * quoted-pair = \"\\\" CHAR\n * CHAR = \n * TEXT = \n * LWS = [CRLF] 1*( SP | HT )\n * CRLF = CR LF\n * CR = \n * LF = \n * SP = \n * SHT = \n * CTL = \n * OCTET = \n */\nvar paramRegExp = /; *([!#$%&'\\*\\+\\-\\.0-9A-Z\\^_`a-z\\|~]+) *= *(\"(?:[ !\\u0023-\\u005b\\u005d-\\u007e\\u0080-\\u00ff]|\\\\[\\u0020-\\u007e])*\"|[!#$%&'\\*\\+\\-\\.0-9A-Z\\^_`a-z\\|~]+) */g;\nvar textRegExp = /^[\\u0020-\\u007e\\u0080-\\u00ff]+$/\nvar tokenRegExp = /^[!#$%&'\\*\\+\\-\\.0-9A-Z\\^_`a-z\\|~]+$/\n\n/**\n * RegExp to match quoted-pair in RFC 2616\n *\n * quoted-pair = \"\\\" CHAR\n * CHAR = \n */\nvar qescRegExp = /\\\\([\\u0000-\\u007f])/g;\n\n/**\n * RegExp to match chars that must be quoted-pair in RFC 2616\n */\nvar quoteRegExp = /([\\\\\"])/g;\n\n/**\n * RegExp to match type in RFC 6838\n *\n * type-name = restricted-name\n * subtype-name = restricted-name\n * restricted-name = restricted-name-first *126restricted-name-chars\n * restricted-name-first = ALPHA / DIGIT\n * restricted-name-chars = ALPHA / DIGIT / \"!\" / \"#\" /\n * \"$\" / \"&\" / \"-\" / \"^\" / \"_\"\n * restricted-name-chars =/ \".\" ; Characters before first dot always\n * ; specify a facet name\n * restricted-name-chars =/ \"+\" ; Characters after last plus always\n * ; specify a structured syntax suffix\n * ALPHA = %x41-5A / %x61-7A ; A-Z / a-z\n * DIGIT = %x30-39 ; 0-9\n */\nvar subtypeNameRegExp = /^[A-Za-z0-9][A-Za-z0-9!#$&^_.-]{0,126}$/\nvar typeNameRegExp = /^[A-Za-z0-9][A-Za-z0-9!#$&^_-]{0,126}$/\nvar typeRegExp = /^ *([A-Za-z0-9][A-Za-z0-9!#$&^_-]{0,126})\\/([A-Za-z0-9][A-Za-z0-9!#$&^_.+-]{0,126}) *$/;\n\n/**\n * Module exports.\n */\n\nexports.format = format\nexports.parse = parse\n\n/**\n * Format object to media type.\n *\n * @param {object} obj\n * @return {string}\n * @api public\n */\n\nfunction format(obj) {\n if (!obj || typeof obj !== 'object') {\n throw new TypeError('argument obj is required')\n }\n\n var parameters = obj.parameters\n var subtype = obj.subtype\n var suffix = obj.suffix\n var type = obj.type\n\n if (!type || !typeNameRegExp.test(type)) {\n throw new TypeError('invalid type')\n }\n\n if (!subtype || !subtypeNameRegExp.test(subtype)) {\n throw new TypeError('invalid subtype')\n }\n\n // format as type/subtype\n var string = type + '/' + subtype\n\n // append +suffix\n if (suffix) {\n if (!typeNameRegExp.test(suffix)) {\n throw new TypeError('invalid suffix')\n }\n\n string += '+' + suffix\n }\n\n // append parameters\n if (parameters && typeof parameters === 'object') {\n var param\n var params = Object.keys(parameters).sort()\n\n for (var i = 0; i < params.length; i++) {\n param = params[i]\n\n if (!tokenRegExp.test(param)) {\n throw new TypeError('invalid parameter name')\n }\n\n string += '; ' + param + '=' + qstring(parameters[param])\n }\n }\n\n return string\n}\n\n/**\n * Parse media type to object.\n *\n * @param {string|object} string\n * @return {Object}\n * @api public\n */\n\nfunction parse(string) {\n if (!string) {\n throw new TypeError('argument string is required')\n }\n\n // support req/res-like objects as argument\n if (typeof string === 'object') {\n string = getcontenttype(string)\n }\n\n if (typeof string !== 'string') {\n throw new TypeError('argument string is required to be a string')\n }\n\n var index = string.indexOf(';')\n var type = index !== -1\n ? string.substr(0, index)\n : string\n\n var key\n var match\n var obj = splitType(type)\n var params = {}\n var value\n\n paramRegExp.lastIndex = index\n\n while (match = paramRegExp.exec(string)) {\n if (match.index !== index) {\n throw new TypeError('invalid parameter format')\n }\n\n index += match[0].length\n key = match[1].toLowerCase()\n value = match[2]\n\n if (value[0] === '\"') {\n // remove quotes and escapes\n value = value\n .substr(1, value.length - 2)\n .replace(qescRegExp, '$1')\n }\n\n params[key] = value\n }\n\n if (index !== -1 && index !== string.length) {\n throw new TypeError('invalid parameter format')\n }\n\n obj.parameters = params\n\n return obj\n}\n\n/**\n * Get content-type from req/res objects.\n *\n * @param {object}\n * @return {Object}\n * @api private\n */\n\nfunction getcontenttype(obj) {\n if (typeof obj.getHeader === 'function') {\n // res-like\n return obj.getHeader('content-type')\n }\n\n if (typeof obj.headers === 'object') {\n // req-like\n return obj.headers && obj.headers['content-type']\n }\n}\n\n/**\n * Quote a string if necessary.\n *\n * @param {string} val\n * @return {string}\n * @api private\n */\n\nfunction qstring(val) {\n var str = String(val)\n\n // no need to quote tokens\n if (tokenRegExp.test(str)) {\n return str\n }\n\n if (str.length > 0 && !textRegExp.test(str)) {\n throw new TypeError('invalid parameter value')\n }\n\n return '\"' + str.replace(quoteRegExp, '\\\\$1') + '\"'\n}\n\n/**\n * Simply \"type/subtype+siffx\" into parts.\n *\n * @param {string} string\n * @return {Object}\n * @api private\n */\n\nfunction splitType(string) {\n var match = typeRegExp.exec(string.toLowerCase())\n\n if (!match) {\n throw new TypeError('invalid media type')\n }\n\n var type = match[1]\n var subtype = match[2]\n var suffix\n\n // suffix after last +\n var index = subtype.lastIndexOf('+')\n if (index !== -1) {\n suffix = subtype.substr(index + 1)\n subtype = subtype.substr(0, index)\n }\n\n var obj = {\n type: type,\n subtype: subtype,\n suffix: suffix\n }\n\n return obj\n}\n", "/*!\n * mime-db\n * Copyright(c) 2014 Jonathan Ong\n * Copyright(c) 2015-2022 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n/**\n * Module exports.\n */\n\nmodule.exports = require('./db.json')\n", "/*!\n * mime-types\n * Copyright(c) 2014 Jonathan Ong\n * Copyright(c) 2015 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict'\n\n/**\n * Module dependencies.\n * @private\n */\n\nvar db = require('mime-db')\nvar extname = require('path').extname\n\n/**\n * Module variables.\n * @private\n */\n\nvar EXTRACT_TYPE_REGEXP = /^\\s*([^;\\s]*)(?:;|\\s|$)/\nvar TEXT_TYPE_REGEXP = /^text\\//i\n\n/**\n * Module exports.\n * @public\n */\n\nexports.charset = charset\nexports.charsets = { lookup: charset }\nexports.contentType = contentType\nexports.extension = extension\nexports.extensions = Object.create(null)\nexports.lookup = lookup\nexports.types = Object.create(null)\n\n// Populate the extensions/types maps\npopulateMaps(exports.extensions, exports.types)\n\n/**\n * Get the default charset for a MIME type.\n *\n * @param {string} type\n * @return {boolean|string}\n */\n\nfunction charset (type) {\n if (!type || typeof type !== 'string') {\n return false\n }\n\n // TODO: use media-typer\n var match = EXTRACT_TYPE_REGEXP.exec(type)\n var mime = match && db[match[1].toLowerCase()]\n\n if (mime && mime.charset) {\n return mime.charset\n }\n\n // default text/* to utf-8\n if (match && TEXT_TYPE_REGEXP.test(match[1])) {\n return 'UTF-8'\n }\n\n return false\n}\n\n/**\n * Create a full Content-Type header given a MIME type or extension.\n *\n * @param {string} str\n * @return {boolean|string}\n */\n\nfunction contentType (str) {\n // TODO: should this even be in this module?\n if (!str || typeof str !== 'string') {\n return false\n }\n\n var mime = str.indexOf('/') === -1\n ? exports.lookup(str)\n : str\n\n if (!mime) {\n return false\n }\n\n // TODO: use content-type or other module\n if (mime.indexOf('charset') === -1) {\n var charset = exports.charset(mime)\n if (charset) mime += '; charset=' + charset.toLowerCase()\n }\n\n return mime\n}\n\n/**\n * Get the default extension for a MIME type.\n *\n * @param {string} type\n * @return {boolean|string}\n */\n\nfunction extension (type) {\n if (!type || typeof type !== 'string') {\n return false\n }\n\n // TODO: use media-typer\n var match = EXTRACT_TYPE_REGEXP.exec(type)\n\n // get extensions\n var exts = match && exports.extensions[match[1].toLowerCase()]\n\n if (!exts || !exts.length) {\n return false\n }\n\n return exts[0]\n}\n\n/**\n * Lookup the MIME type for a file path/extension.\n *\n * @param {string} path\n * @return {boolean|string}\n */\n\nfunction lookup (path) {\n if (!path || typeof path !== 'string') {\n return false\n }\n\n // get the extension (\"ext\" or \".ext\" or full path)\n var extension = extname('x.' + path)\n .toLowerCase()\n .substr(1)\n\n if (!extension) {\n return false\n }\n\n return exports.types[extension] || false\n}\n\n/**\n * Populate the extensions and types maps.\n * @private\n */\n\nfunction populateMaps (extensions, types) {\n // source preference (least -> most)\n var preference = ['nginx', 'apache', undefined, 'iana']\n\n Object.keys(db).forEach(function forEachMimeType (type) {\n var mime = db[type]\n var exts = mime.extensions\n\n if (!exts || !exts.length) {\n return\n }\n\n // mime -> extensions\n extensions[type] = exts\n\n // extension -> mime\n for (var i = 0; i < exts.length; i++) {\n var extension = exts[i]\n\n if (types[extension]) {\n var from = preference.indexOf(db[types[extension]].source)\n var to = preference.indexOf(mime.source)\n\n if (types[extension] !== 'application/octet-stream' &&\n (from > to || (from === to && types[extension].substr(0, 12) === 'application/'))) {\n // skip the remapping\n continue\n }\n }\n\n // set the extension -> mime\n types[extension] = type\n }\n })\n}\n", "/*!\n * type-is\n * Copyright(c) 2014 Jonathan Ong\n * Copyright(c) 2014-2015 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict'\n\n/**\n * Module dependencies.\n * @private\n */\n\nvar typer = require('media-typer')\nvar mime = require('mime-types')\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = typeofrequest\nmodule.exports.is = typeis\nmodule.exports.hasBody = hasbody\nmodule.exports.normalize = normalize\nmodule.exports.match = mimeMatch\n\n/**\n * Compare a `value` content-type with `types`.\n * Each `type` can be an extension like `html`,\n * a special shortcut like `multipart` or `urlencoded`,\n * or a mime type.\n *\n * If no types match, `false` is returned.\n * Otherwise, the first `type` that matches is returned.\n *\n * @param {String} value\n * @param {Array} types\n * @public\n */\n\nfunction typeis (value, types_) {\n var i\n var types = types_\n\n // remove parameters and normalize\n var val = tryNormalizeType(value)\n\n // no type or invalid\n if (!val) {\n return false\n }\n\n // support flattened arguments\n if (types && !Array.isArray(types)) {\n types = new Array(arguments.length - 1)\n for (i = 0; i < types.length; i++) {\n types[i] = arguments[i + 1]\n }\n }\n\n // no types, return the content type\n if (!types || !types.length) {\n return val\n }\n\n var type\n for (i = 0; i < types.length; i++) {\n if (mimeMatch(normalize(type = types[i]), val)) {\n return type[0] === '+' || type.indexOf('*') !== -1\n ? val\n : type\n }\n }\n\n // no matches\n return false\n}\n\n/**\n * Check if a request has a request body.\n * A request with a body __must__ either have `transfer-encoding`\n * or `content-length` headers set.\n * http://www.w3.org/Protocols/rfc2616/rfc2616-sec4.html#sec4.3\n *\n * @param {Object} request\n * @return {Boolean}\n * @public\n */\n\nfunction hasbody (req) {\n return req.headers['transfer-encoding'] !== undefined ||\n !isNaN(req.headers['content-length'])\n}\n\n/**\n * Check if the incoming request contains the \"Content-Type\"\n * header field, and it contains any of the give mime `type`s.\n * If there is no request body, `null` is returned.\n * If there is no content type, `false` is returned.\n * Otherwise, it returns the first `type` that matches.\n *\n * Examples:\n *\n * // With Content-Type: text/html; charset=utf-8\n * this.is('html'); // => 'html'\n * this.is('text/html'); // => 'text/html'\n * this.is('text/*', 'application/json'); // => 'text/html'\n *\n * // When Content-Type is application/json\n * this.is('json', 'urlencoded'); // => 'json'\n * this.is('application/json'); // => 'application/json'\n * this.is('html', 'application/*'); // => 'application/json'\n *\n * this.is('html'); // => false\n *\n * @param {String|Array} types...\n * @return {String|false|null}\n * @public\n */\n\nfunction typeofrequest (req, types_) {\n var types = types_\n\n // no body\n if (!hasbody(req)) {\n return null\n }\n\n // support flattened arguments\n if (arguments.length > 2) {\n types = new Array(arguments.length - 1)\n for (var i = 0; i < types.length; i++) {\n types[i] = arguments[i + 1]\n }\n }\n\n // request content type\n var value = req.headers['content-type']\n\n return typeis(value, types)\n}\n\n/**\n * Normalize a mime type.\n * If it's a shorthand, expand it to a valid mime type.\n *\n * In general, you probably want:\n *\n * var type = is(req, ['urlencoded', 'json', 'multipart']);\n *\n * Then use the appropriate body parsers.\n * These three are the most common request body types\n * and are thus ensured to work.\n *\n * @param {String} type\n * @private\n */\n\nfunction normalize (type) {\n if (typeof type !== 'string') {\n // invalid type\n return false\n }\n\n switch (type) {\n case 'urlencoded':\n return 'application/x-www-form-urlencoded'\n case 'multipart':\n return 'multipart/*'\n }\n\n if (type[0] === '+') {\n // \"+json\" -> \"*/*+json\" expando\n return '*/*' + type\n }\n\n return type.indexOf('/') === -1\n ? mime.lookup(type)\n : type\n}\n\n/**\n * Check if `expected` mime type\n * matches `actual` mime type with\n * wildcard and +suffix support.\n *\n * @param {String} expected\n * @param {String} actual\n * @return {Boolean}\n * @private\n */\n\nfunction mimeMatch (expected, actual) {\n // invalid type\n if (expected === false) {\n return false\n }\n\n // split types\n var actualParts = actual.split('/')\n var expectedParts = expected.split('/')\n\n // invalid format\n if (actualParts.length !== 2 || expectedParts.length !== 2) {\n return false\n }\n\n // validate type\n if (expectedParts[0] !== '*' && expectedParts[0] !== actualParts[0]) {\n return false\n }\n\n // validate suffix wildcard\n if (expectedParts[1].substr(0, 2) === '*+') {\n return expectedParts[1].length <= actualParts[1].length + 1 &&\n expectedParts[1].substr(1) === actualParts[1].substr(1 - expectedParts[1].length)\n }\n\n // validate subtype\n if (expectedParts[1] !== '*' && expectedParts[1] !== actualParts[1]) {\n return false\n }\n\n return true\n}\n\n/**\n * Normalize a type and remove parameters.\n *\n * @param {string} value\n * @return {string}\n * @private\n */\n\nfunction normalizeType (value) {\n // parse the type\n var type = typer.parse(value)\n\n // remove the parameters\n type.parameters = undefined\n\n // reformat it\n return typer.format(type)\n}\n\n/**\n * Try to normalize a type and remove parameters.\n *\n * @param {string} value\n * @return {string}\n * @private\n */\n\nfunction tryNormalizeType (value) {\n if (!value) {\n return null\n }\n\n try {\n return normalizeType(value)\n } catch (err) {\n return null\n }\n}\n", "/*!\n * body-parser\n * Copyright(c) 2014 Jonathan Ong\n * Copyright(c) 2014-2015 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict'\n\n/**\n * Module dependencies.\n * @private\n */\n\nvar bytes = require('bytes')\nvar contentType = require('content-type')\nvar createError = require('http-errors')\nvar debug = require('debug')('body-parser:json')\nvar read = require('../read')\nvar typeis = require('type-is')\n\n/**\n * Module exports.\n */\n\nmodule.exports = json\n\n/**\n * RegExp to match the first non-space in a string.\n *\n * Allowed whitespace is defined in RFC 7159:\n *\n * ws = *(\n * %x20 / ; Space\n * %x09 / ; Horizontal tab\n * %x0A / ; Line feed or New line\n * %x0D ) ; Carriage return\n */\n\nvar FIRST_CHAR_REGEXP = /^[\\x20\\x09\\x0a\\x0d]*([^\\x20\\x09\\x0a\\x0d])/ // eslint-disable-line no-control-regex\n\n/**\n * Create a middleware to parse JSON bodies.\n *\n * @param {object} [options]\n * @return {function}\n * @public\n */\n\nfunction json (options) {\n var opts = options || {}\n\n var limit = typeof opts.limit !== 'number'\n ? bytes.parse(opts.limit || '100kb')\n : opts.limit\n var inflate = opts.inflate !== false\n var reviver = opts.reviver\n var strict = opts.strict !== false\n var type = opts.type || 'application/json'\n var verify = opts.verify || false\n\n if (verify !== false && typeof verify !== 'function') {\n throw new TypeError('option verify must be function')\n }\n\n // create the appropriate type checking function\n var shouldParse = typeof type !== 'function'\n ? typeChecker(type)\n : type\n\n function parse (body) {\n if (body.length === 0) {\n // special-case empty json body, as it's a common client-side mistake\n // TODO: maybe make this configurable or part of \"strict\" option\n return {}\n }\n\n if (strict) {\n var first = firstchar(body)\n\n if (first !== '{' && first !== '[') {\n debug('strict violation')\n throw createStrictSyntaxError(body, first)\n }\n }\n\n try {\n debug('parse json')\n return JSON.parse(body, reviver)\n } catch (e) {\n throw normalizeJsonSyntaxError(e, {\n message: e.message,\n stack: e.stack\n })\n }\n }\n\n return function jsonParser (req, res, next) {\n if (req._body) {\n debug('body already parsed')\n next()\n return\n }\n\n req.body = req.body || {}\n\n // skip requests without bodies\n if (!typeis.hasBody(req)) {\n debug('skip empty body')\n next()\n return\n }\n\n debug('content-type %j', req.headers['content-type'])\n\n // determine if request should be parsed\n if (!shouldParse(req)) {\n debug('skip parsing')\n next()\n return\n }\n\n // assert charset per RFC 7159 sec 8.1\n var charset = getCharset(req) || 'utf-8'\n if (charset.slice(0, 4) !== 'utf-') {\n debug('invalid charset')\n next(createError(415, 'unsupported charset \"' + charset.toUpperCase() + '\"', {\n charset: charset,\n type: 'charset.unsupported'\n }))\n return\n }\n\n // read\n read(req, res, next, parse, debug, {\n encoding: charset,\n inflate: inflate,\n limit: limit,\n verify: verify\n })\n }\n}\n\n/**\n * Create strict violation syntax error matching native error.\n *\n * @param {string} str\n * @param {string} char\n * @return {Error}\n * @private\n */\n\nfunction createStrictSyntaxError (str, char) {\n var index = str.indexOf(char)\n var partial = index !== -1\n ? str.substring(0, index) + '#'\n : ''\n\n try {\n JSON.parse(partial); /* istanbul ignore next */ throw new SyntaxError('strict violation')\n } catch (e) {\n return normalizeJsonSyntaxError(e, {\n message: e.message.replace('#', char),\n stack: e.stack\n })\n }\n}\n\n/**\n * Get the first non-whitespace character in a string.\n *\n * @param {string} str\n * @return {function}\n * @private\n */\n\nfunction firstchar (str) {\n var match = FIRST_CHAR_REGEXP.exec(str)\n\n return match\n ? match[1]\n : undefined\n}\n\n/**\n * Get the charset of a request.\n *\n * @param {object} req\n * @api private\n */\n\nfunction getCharset (req) {\n try {\n return (contentType.parse(req).parameters.charset || '').toLowerCase()\n } catch (e) {\n return undefined\n }\n}\n\n/**\n * Normalize a SyntaxError for JSON.parse.\n *\n * @param {SyntaxError} error\n * @param {object} obj\n * @return {SyntaxError}\n */\n\nfunction normalizeJsonSyntaxError (error, obj) {\n var keys = Object.getOwnPropertyNames(error)\n\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i]\n if (key !== 'stack' && key !== 'message') {\n delete error[key]\n }\n }\n\n // replace stack before message for Node.js 0.10 and below\n error.stack = obj.stack.replace(error.message, obj.message)\n error.message = obj.message\n\n return error\n}\n\n/**\n * Get the simple type checker.\n *\n * @param {string} type\n * @return {function}\n */\n\nfunction typeChecker (type) {\n return function checkType (req) {\n return Boolean(typeis(req, type))\n }\n}\n", "/*!\n * body-parser\n * Copyright(c) 2014-2015 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict'\n\n/**\n * Module dependencies.\n */\n\nvar bytes = require('bytes')\nvar debug = require('debug')('body-parser:raw')\nvar read = require('../read')\nvar typeis = require('type-is')\n\n/**\n * Module exports.\n */\n\nmodule.exports = raw\n\n/**\n * Create a middleware to parse raw bodies.\n *\n * @param {object} [options]\n * @return {function}\n * @api public\n */\n\nfunction raw (options) {\n var opts = options || {}\n\n var inflate = opts.inflate !== false\n var limit = typeof opts.limit !== 'number'\n ? bytes.parse(opts.limit || '100kb')\n : opts.limit\n var type = opts.type || 'application/octet-stream'\n var verify = opts.verify || false\n\n if (verify !== false && typeof verify !== 'function') {\n throw new TypeError('option verify must be function')\n }\n\n // create the appropriate type checking function\n var shouldParse = typeof type !== 'function'\n ? typeChecker(type)\n : type\n\n function parse (buf) {\n return buf\n }\n\n return function rawParser (req, res, next) {\n if (req._body) {\n debug('body already parsed')\n next()\n return\n }\n\n req.body = req.body || {}\n\n // skip requests without bodies\n if (!typeis.hasBody(req)) {\n debug('skip empty body')\n next()\n return\n }\n\n debug('content-type %j', req.headers['content-type'])\n\n // determine if request should be parsed\n if (!shouldParse(req)) {\n debug('skip parsing')\n next()\n return\n }\n\n // read\n read(req, res, next, parse, debug, {\n encoding: null,\n inflate: inflate,\n limit: limit,\n verify: verify\n })\n }\n}\n\n/**\n * Get the simple type checker.\n *\n * @param {string} type\n * @return {function}\n */\n\nfunction typeChecker (type) {\n return function checkType (req) {\n return Boolean(typeis(req, type))\n }\n}\n", "/*!\n * body-parser\n * Copyright(c) 2014-2015 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict'\n\n/**\n * Module dependencies.\n */\n\nvar bytes = require('bytes')\nvar contentType = require('content-type')\nvar debug = require('debug')('body-parser:text')\nvar read = require('../read')\nvar typeis = require('type-is')\n\n/**\n * Module exports.\n */\n\nmodule.exports = text\n\n/**\n * Create a middleware to parse text bodies.\n *\n * @param {object} [options]\n * @return {function}\n * @api public\n */\n\nfunction text (options) {\n var opts = options || {}\n\n var defaultCharset = opts.defaultCharset || 'utf-8'\n var inflate = opts.inflate !== false\n var limit = typeof opts.limit !== 'number'\n ? bytes.parse(opts.limit || '100kb')\n : opts.limit\n var type = opts.type || 'text/plain'\n var verify = opts.verify || false\n\n if (verify !== false && typeof verify !== 'function') {\n throw new TypeError('option verify must be function')\n }\n\n // create the appropriate type checking function\n var shouldParse = typeof type !== 'function'\n ? typeChecker(type)\n : type\n\n function parse (buf) {\n return buf\n }\n\n return function textParser (req, res, next) {\n if (req._body) {\n debug('body already parsed')\n next()\n return\n }\n\n req.body = req.body || {}\n\n // skip requests without bodies\n if (!typeis.hasBody(req)) {\n debug('skip empty body')\n next()\n return\n }\n\n debug('content-type %j', req.headers['content-type'])\n\n // determine if request should be parsed\n if (!shouldParse(req)) {\n debug('skip parsing')\n next()\n return\n }\n\n // get charset\n var charset = getCharset(req) || defaultCharset\n\n // read\n read(req, res, next, parse, debug, {\n encoding: charset,\n inflate: inflate,\n limit: limit,\n verify: verify\n })\n }\n}\n\n/**\n * Get the charset of a request.\n *\n * @param {object} req\n * @api private\n */\n\nfunction getCharset (req) {\n try {\n return (contentType.parse(req).parameters.charset || '').toLowerCase()\n } catch (e) {\n return undefined\n }\n}\n\n/**\n * Get the simple type checker.\n *\n * @param {string} type\n * @return {function}\n */\n\nfunction typeChecker (type) {\n return function checkType (req) {\n return Boolean(typeis(req, type))\n }\n}\n", "'use strict';\n\n/* eslint complexity: [2, 18], max-statements: [2, 33] */\nmodule.exports = function hasSymbols() {\n\tif (typeof Symbol !== 'function' || typeof Object.getOwnPropertySymbols !== 'function') { return false; }\n\tif (typeof Symbol.iterator === 'symbol') { return true; }\n\n\tvar obj = {};\n\tvar sym = Symbol('test');\n\tvar symObj = Object(sym);\n\tif (typeof sym === 'string') { return false; }\n\n\tif (Object.prototype.toString.call(sym) !== '[object Symbol]') { return false; }\n\tif (Object.prototype.toString.call(symObj) !== '[object Symbol]') { return false; }\n\n\t// temp disabled per https://github.com/ljharb/object.assign/issues/17\n\t// if (sym instanceof Symbol) { return false; }\n\t// temp disabled per https://github.com/WebReflection/get-own-property-symbols/issues/4\n\t// if (!(symObj instanceof Symbol)) { return false; }\n\n\t// if (typeof Symbol.prototype.toString !== 'function') { return false; }\n\t// if (String(sym) !== Symbol.prototype.toString.call(sym)) { return false; }\n\n\tvar symVal = 42;\n\tobj[sym] = symVal;\n\tfor (sym in obj) { return false; } // eslint-disable-line no-restricted-syntax, no-unreachable-loop\n\tif (typeof Object.keys === 'function' && Object.keys(obj).length !== 0) { return false; }\n\n\tif (typeof Object.getOwnPropertyNames === 'function' && Object.getOwnPropertyNames(obj).length !== 0) { return false; }\n\n\tvar syms = Object.getOwnPropertySymbols(obj);\n\tif (syms.length !== 1 || syms[0] !== sym) { return false; }\n\n\tif (!Object.prototype.propertyIsEnumerable.call(obj, sym)) { return false; }\n\n\tif (typeof Object.getOwnPropertyDescriptor === 'function') {\n\t\tvar descriptor = Object.getOwnPropertyDescriptor(obj, sym);\n\t\tif (descriptor.value !== symVal || descriptor.enumerable !== true) { return false; }\n\t}\n\n\treturn true;\n};\n", "'use strict';\n\nvar origSymbol = typeof Symbol !== 'undefined' && Symbol;\nvar hasSymbolSham = require('./shams');\n\nmodule.exports = function hasNativeSymbols() {\n\tif (typeof origSymbol !== 'function') { return false; }\n\tif (typeof Symbol !== 'function') { return false; }\n\tif (typeof origSymbol('foo') !== 'symbol') { return false; }\n\tif (typeof Symbol('bar') !== 'symbol') { return false; }\n\n\treturn hasSymbolSham();\n};\n", "'use strict';\n\n/* eslint no-invalid-this: 1 */\n\nvar ERROR_MESSAGE = 'Function.prototype.bind called on incompatible ';\nvar slice = Array.prototype.slice;\nvar toStr = Object.prototype.toString;\nvar funcType = '[object Function]';\n\nmodule.exports = function bind(that) {\n var target = this;\n if (typeof target !== 'function' || toStr.call(target) !== funcType) {\n throw new TypeError(ERROR_MESSAGE + target);\n }\n var args = slice.call(arguments, 1);\n\n var bound;\n var binder = function () {\n if (this instanceof bound) {\n var result = target.apply(\n this,\n args.concat(slice.call(arguments))\n );\n if (Object(result) === result) {\n return result;\n }\n return this;\n } else {\n return target.apply(\n that,\n args.concat(slice.call(arguments))\n );\n }\n };\n\n var boundLength = Math.max(0, target.length - args.length);\n var boundArgs = [];\n for (var i = 0; i < boundLength; i++) {\n boundArgs.push('$' + i);\n }\n\n bound = Function('binder', 'return function (' + boundArgs.join(',') + '){ return binder.apply(this,arguments); }')(binder);\n\n if (target.prototype) {\n var Empty = function Empty() {};\n Empty.prototype = target.prototype;\n bound.prototype = new Empty();\n Empty.prototype = null;\n }\n\n return bound;\n};\n", "'use strict';\n\nvar implementation = require('./implementation');\n\nmodule.exports = Function.prototype.bind || implementation;\n", "'use strict';\n\nvar bind = require('function-bind');\n\nmodule.exports = bind.call(Function.call, Object.prototype.hasOwnProperty);\n", "'use strict';\n\nvar undefined;\n\nvar $SyntaxError = SyntaxError;\nvar $Function = Function;\nvar $TypeError = TypeError;\n\n// eslint-disable-next-line consistent-return\nvar getEvalledConstructor = function (expressionSyntax) {\n\ttry {\n\t\treturn $Function('\"use strict\"; return (' + expressionSyntax + ').constructor;')();\n\t} catch (e) {}\n};\n\nvar $gOPD = Object.getOwnPropertyDescriptor;\nif ($gOPD) {\n\ttry {\n\t\t$gOPD({}, '');\n\t} catch (e) {\n\t\t$gOPD = null; // this is IE 8, which has a broken gOPD\n\t}\n}\n\nvar throwTypeError = function () {\n\tthrow new $TypeError();\n};\nvar ThrowTypeError = $gOPD\n\t? (function () {\n\t\ttry {\n\t\t\t// eslint-disable-next-line no-unused-expressions, no-caller, no-restricted-properties\n\t\t\targuments.callee; // IE 8 does not throw here\n\t\t\treturn throwTypeError;\n\t\t} catch (calleeThrows) {\n\t\t\ttry {\n\t\t\t\t// IE 8 throws on Object.getOwnPropertyDescriptor(arguments, '')\n\t\t\t\treturn $gOPD(arguments, 'callee').get;\n\t\t\t} catch (gOPDthrows) {\n\t\t\t\treturn throwTypeError;\n\t\t\t}\n\t\t}\n\t}())\n\t: throwTypeError;\n\nvar hasSymbols = require('has-symbols')();\n\nvar getProto = Object.getPrototypeOf || function (x) { return x.__proto__; }; // eslint-disable-line no-proto\n\nvar needsEval = {};\n\nvar TypedArray = typeof Uint8Array === 'undefined' ? undefined : getProto(Uint8Array);\n\nvar INTRINSICS = {\n\t'%AggregateError%': typeof AggregateError === 'undefined' ? undefined : AggregateError,\n\t'%Array%': Array,\n\t'%ArrayBuffer%': typeof ArrayBuffer === 'undefined' ? undefined : ArrayBuffer,\n\t'%ArrayIteratorPrototype%': hasSymbols ? getProto([][Symbol.iterator]()) : undefined,\n\t'%AsyncFromSyncIteratorPrototype%': undefined,\n\t'%AsyncFunction%': needsEval,\n\t'%AsyncGenerator%': needsEval,\n\t'%AsyncGeneratorFunction%': needsEval,\n\t'%AsyncIteratorPrototype%': needsEval,\n\t'%Atomics%': typeof Atomics === 'undefined' ? undefined : Atomics,\n\t'%BigInt%': typeof BigInt === 'undefined' ? undefined : BigInt,\n\t'%BigInt64Array%': typeof BigInt64Array === 'undefined' ? undefined : BigInt64Array,\n\t'%BigUint64Array%': typeof BigUint64Array === 'undefined' ? undefined : BigUint64Array,\n\t'%Boolean%': Boolean,\n\t'%DataView%': typeof DataView === 'undefined' ? undefined : DataView,\n\t'%Date%': Date,\n\t'%decodeURI%': decodeURI,\n\t'%decodeURIComponent%': decodeURIComponent,\n\t'%encodeURI%': encodeURI,\n\t'%encodeURIComponent%': encodeURIComponent,\n\t'%Error%': Error,\n\t'%eval%': eval, // eslint-disable-line no-eval\n\t'%EvalError%': EvalError,\n\t'%Float32Array%': typeof Float32Array === 'undefined' ? undefined : Float32Array,\n\t'%Float64Array%': typeof Float64Array === 'undefined' ? undefined : Float64Array,\n\t'%FinalizationRegistry%': typeof FinalizationRegistry === 'undefined' ? undefined : FinalizationRegistry,\n\t'%Function%': $Function,\n\t'%GeneratorFunction%': needsEval,\n\t'%Int8Array%': typeof Int8Array === 'undefined' ? undefined : Int8Array,\n\t'%Int16Array%': typeof Int16Array === 'undefined' ? undefined : Int16Array,\n\t'%Int32Array%': typeof Int32Array === 'undefined' ? undefined : Int32Array,\n\t'%isFinite%': isFinite,\n\t'%isNaN%': isNaN,\n\t'%IteratorPrototype%': hasSymbols ? getProto(getProto([][Symbol.iterator]())) : undefined,\n\t'%JSON%': typeof JSON === 'object' ? JSON : undefined,\n\t'%Map%': typeof Map === 'undefined' ? undefined : Map,\n\t'%MapIteratorPrototype%': typeof Map === 'undefined' || !hasSymbols ? undefined : getProto(new Map()[Symbol.iterator]()),\n\t'%Math%': Math,\n\t'%Number%': Number,\n\t'%Object%': Object,\n\t'%parseFloat%': parseFloat,\n\t'%parseInt%': parseInt,\n\t'%Promise%': typeof Promise === 'undefined' ? undefined : Promise,\n\t'%Proxy%': typeof Proxy === 'undefined' ? undefined : Proxy,\n\t'%RangeError%': RangeError,\n\t'%ReferenceError%': ReferenceError,\n\t'%Reflect%': typeof Reflect === 'undefined' ? undefined : Reflect,\n\t'%RegExp%': RegExp,\n\t'%Set%': typeof Set === 'undefined' ? undefined : Set,\n\t'%SetIteratorPrototype%': typeof Set === 'undefined' || !hasSymbols ? undefined : getProto(new Set()[Symbol.iterator]()),\n\t'%SharedArrayBuffer%': typeof SharedArrayBuffer === 'undefined' ? undefined : SharedArrayBuffer,\n\t'%String%': String,\n\t'%StringIteratorPrototype%': hasSymbols ? getProto(''[Symbol.iterator]()) : undefined,\n\t'%Symbol%': hasSymbols ? Symbol : undefined,\n\t'%SyntaxError%': $SyntaxError,\n\t'%ThrowTypeError%': ThrowTypeError,\n\t'%TypedArray%': TypedArray,\n\t'%TypeError%': $TypeError,\n\t'%Uint8Array%': typeof Uint8Array === 'undefined' ? undefined : Uint8Array,\n\t'%Uint8ClampedArray%': typeof Uint8ClampedArray === 'undefined' ? undefined : Uint8ClampedArray,\n\t'%Uint16Array%': typeof Uint16Array === 'undefined' ? undefined : Uint16Array,\n\t'%Uint32Array%': typeof Uint32Array === 'undefined' ? undefined : Uint32Array,\n\t'%URIError%': URIError,\n\t'%WeakMap%': typeof WeakMap === 'undefined' ? undefined : WeakMap,\n\t'%WeakRef%': typeof WeakRef === 'undefined' ? undefined : WeakRef,\n\t'%WeakSet%': typeof WeakSet === 'undefined' ? undefined : WeakSet\n};\n\ntry {\n\tnull.error; // eslint-disable-line no-unused-expressions\n} catch (e) {\n\t// https://github.com/tc39/proposal-shadowrealm/pull/384#issuecomment-1364264229\n\tvar errorProto = getProto(getProto(e));\n\tINTRINSICS['%Error.prototype%'] = errorProto;\n}\n\nvar doEval = function doEval(name) {\n\tvar value;\n\tif (name === '%AsyncFunction%') {\n\t\tvalue = getEvalledConstructor('async function () {}');\n\t} else if (name === '%GeneratorFunction%') {\n\t\tvalue = getEvalledConstructor('function* () {}');\n\t} else if (name === '%AsyncGeneratorFunction%') {\n\t\tvalue = getEvalledConstructor('async function* () {}');\n\t} else if (name === '%AsyncGenerator%') {\n\t\tvar fn = doEval('%AsyncGeneratorFunction%');\n\t\tif (fn) {\n\t\t\tvalue = fn.prototype;\n\t\t}\n\t} else if (name === '%AsyncIteratorPrototype%') {\n\t\tvar gen = doEval('%AsyncGenerator%');\n\t\tif (gen) {\n\t\t\tvalue = getProto(gen.prototype);\n\t\t}\n\t}\n\n\tINTRINSICS[name] = value;\n\n\treturn value;\n};\n\nvar LEGACY_ALIASES = {\n\t'%ArrayBufferPrototype%': ['ArrayBuffer', 'prototype'],\n\t'%ArrayPrototype%': ['Array', 'prototype'],\n\t'%ArrayProto_entries%': ['Array', 'prototype', 'entries'],\n\t'%ArrayProto_forEach%': ['Array', 'prototype', 'forEach'],\n\t'%ArrayProto_keys%': ['Array', 'prototype', 'keys'],\n\t'%ArrayProto_values%': ['Array', 'prototype', 'values'],\n\t'%AsyncFunctionPrototype%': ['AsyncFunction', 'prototype'],\n\t'%AsyncGenerator%': ['AsyncGeneratorFunction', 'prototype'],\n\t'%AsyncGeneratorPrototype%': ['AsyncGeneratorFunction', 'prototype', 'prototype'],\n\t'%BooleanPrototype%': ['Boolean', 'prototype'],\n\t'%DataViewPrototype%': ['DataView', 'prototype'],\n\t'%DatePrototype%': ['Date', 'prototype'],\n\t'%ErrorPrototype%': ['Error', 'prototype'],\n\t'%EvalErrorPrototype%': ['EvalError', 'prototype'],\n\t'%Float32ArrayPrototype%': ['Float32Array', 'prototype'],\n\t'%Float64ArrayPrototype%': ['Float64Array', 'prototype'],\n\t'%FunctionPrototype%': ['Function', 'prototype'],\n\t'%Generator%': ['GeneratorFunction', 'prototype'],\n\t'%GeneratorPrototype%': ['GeneratorFunction', 'prototype', 'prototype'],\n\t'%Int8ArrayPrototype%': ['Int8Array', 'prototype'],\n\t'%Int16ArrayPrototype%': ['Int16Array', 'prototype'],\n\t'%Int32ArrayPrototype%': ['Int32Array', 'prototype'],\n\t'%JSONParse%': ['JSON', 'parse'],\n\t'%JSONStringify%': ['JSON', 'stringify'],\n\t'%MapPrototype%': ['Map', 'prototype'],\n\t'%NumberPrototype%': ['Number', 'prototype'],\n\t'%ObjectPrototype%': ['Object', 'prototype'],\n\t'%ObjProto_toString%': ['Object', 'prototype', 'toString'],\n\t'%ObjProto_valueOf%': ['Object', 'prototype', 'valueOf'],\n\t'%PromisePrototype%': ['Promise', 'prototype'],\n\t'%PromiseProto_then%': ['Promise', 'prototype', 'then'],\n\t'%Promise_all%': ['Promise', 'all'],\n\t'%Promise_reject%': ['Promise', 'reject'],\n\t'%Promise_resolve%': ['Promise', 'resolve'],\n\t'%RangeErrorPrototype%': ['RangeError', 'prototype'],\n\t'%ReferenceErrorPrototype%': ['ReferenceError', 'prototype'],\n\t'%RegExpPrototype%': ['RegExp', 'prototype'],\n\t'%SetPrototype%': ['Set', 'prototype'],\n\t'%SharedArrayBufferPrototype%': ['SharedArrayBuffer', 'prototype'],\n\t'%StringPrototype%': ['String', 'prototype'],\n\t'%SymbolPrototype%': ['Symbol', 'prototype'],\n\t'%SyntaxErrorPrototype%': ['SyntaxError', 'prototype'],\n\t'%TypedArrayPrototype%': ['TypedArray', 'prototype'],\n\t'%TypeErrorPrototype%': ['TypeError', 'prototype'],\n\t'%Uint8ArrayPrototype%': ['Uint8Array', 'prototype'],\n\t'%Uint8ClampedArrayPrototype%': ['Uint8ClampedArray', 'prototype'],\n\t'%Uint16ArrayPrototype%': ['Uint16Array', 'prototype'],\n\t'%Uint32ArrayPrototype%': ['Uint32Array', 'prototype'],\n\t'%URIErrorPrototype%': ['URIError', 'prototype'],\n\t'%WeakMapPrototype%': ['WeakMap', 'prototype'],\n\t'%WeakSetPrototype%': ['WeakSet', 'prototype']\n};\n\nvar bind = require('function-bind');\nvar hasOwn = require('has');\nvar $concat = bind.call(Function.call, Array.prototype.concat);\nvar $spliceApply = bind.call(Function.apply, Array.prototype.splice);\nvar $replace = bind.call(Function.call, String.prototype.replace);\nvar $strSlice = bind.call(Function.call, String.prototype.slice);\nvar $exec = bind.call(Function.call, RegExp.prototype.exec);\n\n/* adapted from https://github.com/lodash/lodash/blob/4.17.15/dist/lodash.js#L6735-L6744 */\nvar rePropName = /[^%.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|%$))/g;\nvar reEscapeChar = /\\\\(\\\\)?/g; /** Used to match backslashes in property paths. */\nvar stringToPath = function stringToPath(string) {\n\tvar first = $strSlice(string, 0, 1);\n\tvar last = $strSlice(string, -1);\n\tif (first === '%' && last !== '%') {\n\t\tthrow new $SyntaxError('invalid intrinsic syntax, expected closing `%`');\n\t} else if (last === '%' && first !== '%') {\n\t\tthrow new $SyntaxError('invalid intrinsic syntax, expected opening `%`');\n\t}\n\tvar result = [];\n\t$replace(string, rePropName, function (match, number, quote, subString) {\n\t\tresult[result.length] = quote ? $replace(subString, reEscapeChar, '$1') : number || match;\n\t});\n\treturn result;\n};\n/* end adaptation */\n\nvar getBaseIntrinsic = function getBaseIntrinsic(name, allowMissing) {\n\tvar intrinsicName = name;\n\tvar alias;\n\tif (hasOwn(LEGACY_ALIASES, intrinsicName)) {\n\t\talias = LEGACY_ALIASES[intrinsicName];\n\t\tintrinsicName = '%' + alias[0] + '%';\n\t}\n\n\tif (hasOwn(INTRINSICS, intrinsicName)) {\n\t\tvar value = INTRINSICS[intrinsicName];\n\t\tif (value === needsEval) {\n\t\t\tvalue = doEval(intrinsicName);\n\t\t}\n\t\tif (typeof value === 'undefined' && !allowMissing) {\n\t\t\tthrow new $TypeError('intrinsic ' + name + ' exists, but is not available. Please file an issue!');\n\t\t}\n\n\t\treturn {\n\t\t\talias: alias,\n\t\t\tname: intrinsicName,\n\t\t\tvalue: value\n\t\t};\n\t}\n\n\tthrow new $SyntaxError('intrinsic ' + name + ' does not exist!');\n};\n\nmodule.exports = function GetIntrinsic(name, allowMissing) {\n\tif (typeof name !== 'string' || name.length === 0) {\n\t\tthrow new $TypeError('intrinsic name must be a non-empty string');\n\t}\n\tif (arguments.length > 1 && typeof allowMissing !== 'boolean') {\n\t\tthrow new $TypeError('\"allowMissing\" argument must be a boolean');\n\t}\n\n\tif ($exec(/^%?[^%]*%?$/, name) === null) {\n\t\tthrow new $SyntaxError('`%` may not be present anywhere but at the beginning and end of the intrinsic name');\n\t}\n\tvar parts = stringToPath(name);\n\tvar intrinsicBaseName = parts.length > 0 ? parts[0] : '';\n\n\tvar intrinsic = getBaseIntrinsic('%' + intrinsicBaseName + '%', allowMissing);\n\tvar intrinsicRealName = intrinsic.name;\n\tvar value = intrinsic.value;\n\tvar skipFurtherCaching = false;\n\n\tvar alias = intrinsic.alias;\n\tif (alias) {\n\t\tintrinsicBaseName = alias[0];\n\t\t$spliceApply(parts, $concat([0, 1], alias));\n\t}\n\n\tfor (var i = 1, isOwn = true; i < parts.length; i += 1) {\n\t\tvar part = parts[i];\n\t\tvar first = $strSlice(part, 0, 1);\n\t\tvar last = $strSlice(part, -1);\n\t\tif (\n\t\t\t(\n\t\t\t\t(first === '\"' || first === \"'\" || first === '`')\n\t\t\t\t|| (last === '\"' || last === \"'\" || last === '`')\n\t\t\t)\n\t\t\t&& first !== last\n\t\t) {\n\t\t\tthrow new $SyntaxError('property names with quotes must have matching quotes');\n\t\t}\n\t\tif (part === 'constructor' || !isOwn) {\n\t\t\tskipFurtherCaching = true;\n\t\t}\n\n\t\tintrinsicBaseName += '.' + part;\n\t\tintrinsicRealName = '%' + intrinsicBaseName + '%';\n\n\t\tif (hasOwn(INTRINSICS, intrinsicRealName)) {\n\t\t\tvalue = INTRINSICS[intrinsicRealName];\n\t\t} else if (value != null) {\n\t\t\tif (!(part in value)) {\n\t\t\t\tif (!allowMissing) {\n\t\t\t\t\tthrow new $TypeError('base intrinsic for ' + name + ' exists, but the property is not available.');\n\t\t\t\t}\n\t\t\t\treturn void undefined;\n\t\t\t}\n\t\t\tif ($gOPD && (i + 1) >= parts.length) {\n\t\t\t\tvar desc = $gOPD(value, part);\n\t\t\t\tisOwn = !!desc;\n\n\t\t\t\t// By convention, when a data property is converted to an accessor\n\t\t\t\t// property to emulate a data property that does not suffer from\n\t\t\t\t// the override mistake, that accessor's getter is marked with\n\t\t\t\t// an `originalValue` property. Here, when we detect this, we\n\t\t\t\t// uphold the illusion by pretending to see that original data\n\t\t\t\t// property, i.e., returning the value rather than the getter\n\t\t\t\t// itself.\n\t\t\t\tif (isOwn && 'get' in desc && !('originalValue' in desc.get)) {\n\t\t\t\t\tvalue = desc.get;\n\t\t\t\t} else {\n\t\t\t\t\tvalue = value[part];\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tisOwn = hasOwn(value, part);\n\t\t\t\tvalue = value[part];\n\t\t\t}\n\n\t\t\tif (isOwn && !skipFurtherCaching) {\n\t\t\t\tINTRINSICS[intrinsicRealName] = value;\n\t\t\t}\n\t\t}\n\t}\n\treturn value;\n};\n", "'use strict';\n\nvar bind = require('function-bind');\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $apply = GetIntrinsic('%Function.prototype.apply%');\nvar $call = GetIntrinsic('%Function.prototype.call%');\nvar $reflectApply = GetIntrinsic('%Reflect.apply%', true) || bind.call($call, $apply);\n\nvar $gOPD = GetIntrinsic('%Object.getOwnPropertyDescriptor%', true);\nvar $defineProperty = GetIntrinsic('%Object.defineProperty%', true);\nvar $max = GetIntrinsic('%Math.max%');\n\nif ($defineProperty) {\n\ttry {\n\t\t$defineProperty({}, 'a', { value: 1 });\n\t} catch (e) {\n\t\t// IE 8 has a broken defineProperty\n\t\t$defineProperty = null;\n\t}\n}\n\nmodule.exports = function callBind(originalFunction) {\n\tvar func = $reflectApply(bind, $call, arguments);\n\tif ($gOPD && $defineProperty) {\n\t\tvar desc = $gOPD(func, 'length');\n\t\tif (desc.configurable) {\n\t\t\t// original length, plus the receiver, minus any additional arguments (after the receiver)\n\t\t\t$defineProperty(\n\t\t\t\tfunc,\n\t\t\t\t'length',\n\t\t\t\t{ value: 1 + $max(0, originalFunction.length - (arguments.length - 1)) }\n\t\t\t);\n\t\t}\n\t}\n\treturn func;\n};\n\nvar applyBind = function applyBind() {\n\treturn $reflectApply(bind, $apply, arguments);\n};\n\nif ($defineProperty) {\n\t$defineProperty(module.exports, 'apply', { value: applyBind });\n} else {\n\tmodule.exports.apply = applyBind;\n}\n", "'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar callBind = require('./');\n\nvar $indexOf = callBind(GetIntrinsic('String.prototype.indexOf'));\n\nmodule.exports = function callBoundIntrinsic(name, allowMissing) {\n\tvar intrinsic = GetIntrinsic(name, !!allowMissing);\n\tif (typeof intrinsic === 'function' && $indexOf(name, '.prototype.') > -1) {\n\t\treturn callBind(intrinsic);\n\t}\n\treturn intrinsic;\n};\n", "module.exports = require('util').inspect;\n", "var hasMap = typeof Map === 'function' && Map.prototype;\nvar mapSizeDescriptor = Object.getOwnPropertyDescriptor && hasMap ? Object.getOwnPropertyDescriptor(Map.prototype, 'size') : null;\nvar mapSize = hasMap && mapSizeDescriptor && typeof mapSizeDescriptor.get === 'function' ? mapSizeDescriptor.get : null;\nvar mapForEach = hasMap && Map.prototype.forEach;\nvar hasSet = typeof Set === 'function' && Set.prototype;\nvar setSizeDescriptor = Object.getOwnPropertyDescriptor && hasSet ? Object.getOwnPropertyDescriptor(Set.prototype, 'size') : null;\nvar setSize = hasSet && setSizeDescriptor && typeof setSizeDescriptor.get === 'function' ? setSizeDescriptor.get : null;\nvar setForEach = hasSet && Set.prototype.forEach;\nvar hasWeakMap = typeof WeakMap === 'function' && WeakMap.prototype;\nvar weakMapHas = hasWeakMap ? WeakMap.prototype.has : null;\nvar hasWeakSet = typeof WeakSet === 'function' && WeakSet.prototype;\nvar weakSetHas = hasWeakSet ? WeakSet.prototype.has : null;\nvar hasWeakRef = typeof WeakRef === 'function' && WeakRef.prototype;\nvar weakRefDeref = hasWeakRef ? WeakRef.prototype.deref : null;\nvar booleanValueOf = Boolean.prototype.valueOf;\nvar objectToString = Object.prototype.toString;\nvar functionToString = Function.prototype.toString;\nvar $match = String.prototype.match;\nvar $slice = String.prototype.slice;\nvar $replace = String.prototype.replace;\nvar $toUpperCase = String.prototype.toUpperCase;\nvar $toLowerCase = String.prototype.toLowerCase;\nvar $test = RegExp.prototype.test;\nvar $concat = Array.prototype.concat;\nvar $join = Array.prototype.join;\nvar $arrSlice = Array.prototype.slice;\nvar $floor = Math.floor;\nvar bigIntValueOf = typeof BigInt === 'function' ? BigInt.prototype.valueOf : null;\nvar gOPS = Object.getOwnPropertySymbols;\nvar symToString = typeof Symbol === 'function' && typeof Symbol.iterator === 'symbol' ? Symbol.prototype.toString : null;\nvar hasShammedSymbols = typeof Symbol === 'function' && typeof Symbol.iterator === 'object';\n// ie, `has-tostringtag/shams\nvar toStringTag = typeof Symbol === 'function' && Symbol.toStringTag && (typeof Symbol.toStringTag === hasShammedSymbols ? 'object' : 'symbol')\n ? Symbol.toStringTag\n : null;\nvar isEnumerable = Object.prototype.propertyIsEnumerable;\n\nvar gPO = (typeof Reflect === 'function' ? Reflect.getPrototypeOf : Object.getPrototypeOf) || (\n [].__proto__ === Array.prototype // eslint-disable-line no-proto\n ? function (O) {\n return O.__proto__; // eslint-disable-line no-proto\n }\n : null\n);\n\nfunction addNumericSeparator(num, str) {\n if (\n num === Infinity\n || num === -Infinity\n || num !== num\n || (num && num > -1000 && num < 1000)\n || $test.call(/e/, str)\n ) {\n return str;\n }\n var sepRegex = /[0-9](?=(?:[0-9]{3})+(?![0-9]))/g;\n if (typeof num === 'number') {\n var int = num < 0 ? -$floor(-num) : $floor(num); // trunc(num)\n if (int !== num) {\n var intStr = String(int);\n var dec = $slice.call(str, intStr.length + 1);\n return $replace.call(intStr, sepRegex, '$&_') + '.' + $replace.call($replace.call(dec, /([0-9]{3})/g, '$&_'), /_$/, '');\n }\n }\n return $replace.call(str, sepRegex, '$&_');\n}\n\nvar utilInspect = require('./util.inspect');\nvar inspectCustom = utilInspect.custom;\nvar inspectSymbol = isSymbol(inspectCustom) ? inspectCustom : null;\n\nmodule.exports = function inspect_(obj, options, depth, seen) {\n var opts = options || {};\n\n if (has(opts, 'quoteStyle') && (opts.quoteStyle !== 'single' && opts.quoteStyle !== 'double')) {\n throw new TypeError('option \"quoteStyle\" must be \"single\" or \"double\"');\n }\n if (\n has(opts, 'maxStringLength') && (typeof opts.maxStringLength === 'number'\n ? opts.maxStringLength < 0 && opts.maxStringLength !== Infinity\n : opts.maxStringLength !== null\n )\n ) {\n throw new TypeError('option \"maxStringLength\", if provided, must be a positive integer, Infinity, or `null`');\n }\n var customInspect = has(opts, 'customInspect') ? opts.customInspect : true;\n if (typeof customInspect !== 'boolean' && customInspect !== 'symbol') {\n throw new TypeError('option \"customInspect\", if provided, must be `true`, `false`, or `\\'symbol\\'`');\n }\n\n if (\n has(opts, 'indent')\n && opts.indent !== null\n && opts.indent !== '\\t'\n && !(parseInt(opts.indent, 10) === opts.indent && opts.indent > 0)\n ) {\n throw new TypeError('option \"indent\" must be \"\\\\t\", an integer > 0, or `null`');\n }\n if (has(opts, 'numericSeparator') && typeof opts.numericSeparator !== 'boolean') {\n throw new TypeError('option \"numericSeparator\", if provided, must be `true` or `false`');\n }\n var numericSeparator = opts.numericSeparator;\n\n if (typeof obj === 'undefined') {\n return 'undefined';\n }\n if (obj === null) {\n return 'null';\n }\n if (typeof obj === 'boolean') {\n return obj ? 'true' : 'false';\n }\n\n if (typeof obj === 'string') {\n return inspectString(obj, opts);\n }\n if (typeof obj === 'number') {\n if (obj === 0) {\n return Infinity / obj > 0 ? '0' : '-0';\n }\n var str = String(obj);\n return numericSeparator ? addNumericSeparator(obj, str) : str;\n }\n if (typeof obj === 'bigint') {\n var bigIntStr = String(obj) + 'n';\n return numericSeparator ? addNumericSeparator(obj, bigIntStr) : bigIntStr;\n }\n\n var maxDepth = typeof opts.depth === 'undefined' ? 5 : opts.depth;\n if (typeof depth === 'undefined') { depth = 0; }\n if (depth >= maxDepth && maxDepth > 0 && typeof obj === 'object') {\n return isArray(obj) ? '[Array]' : '[Object]';\n }\n\n var indent = getIndent(opts, depth);\n\n if (typeof seen === 'undefined') {\n seen = [];\n } else if (indexOf(seen, obj) >= 0) {\n return '[Circular]';\n }\n\n function inspect(value, from, noIndent) {\n if (from) {\n seen = $arrSlice.call(seen);\n seen.push(from);\n }\n if (noIndent) {\n var newOpts = {\n depth: opts.depth\n };\n if (has(opts, 'quoteStyle')) {\n newOpts.quoteStyle = opts.quoteStyle;\n }\n return inspect_(value, newOpts, depth + 1, seen);\n }\n return inspect_(value, opts, depth + 1, seen);\n }\n\n if (typeof obj === 'function' && !isRegExp(obj)) { // in older engines, regexes are callable\n var name = nameOf(obj);\n var keys = arrObjKeys(obj, inspect);\n return '[Function' + (name ? ': ' + name : ' (anonymous)') + ']' + (keys.length > 0 ? ' { ' + $join.call(keys, ', ') + ' }' : '');\n }\n if (isSymbol(obj)) {\n var symString = hasShammedSymbols ? $replace.call(String(obj), /^(Symbol\\(.*\\))_[^)]*$/, '$1') : symToString.call(obj);\n return typeof obj === 'object' && !hasShammedSymbols ? markBoxed(symString) : symString;\n }\n if (isElement(obj)) {\n var s = '<' + $toLowerCase.call(String(obj.nodeName));\n var attrs = obj.attributes || [];\n for (var i = 0; i < attrs.length; i++) {\n s += ' ' + attrs[i].name + '=' + wrapQuotes(quote(attrs[i].value), 'double', opts);\n }\n s += '>';\n if (obj.childNodes && obj.childNodes.length) { s += '...'; }\n s += '';\n return s;\n }\n if (isArray(obj)) {\n if (obj.length === 0) { return '[]'; }\n var xs = arrObjKeys(obj, inspect);\n if (indent && !singleLineValues(xs)) {\n return '[' + indentedJoin(xs, indent) + ']';\n }\n return '[ ' + $join.call(xs, ', ') + ' ]';\n }\n if (isError(obj)) {\n var parts = arrObjKeys(obj, inspect);\n if (!('cause' in Error.prototype) && 'cause' in obj && !isEnumerable.call(obj, 'cause')) {\n return '{ [' + String(obj) + '] ' + $join.call($concat.call('[cause]: ' + inspect(obj.cause), parts), ', ') + ' }';\n }\n if (parts.length === 0) { return '[' + String(obj) + ']'; }\n return '{ [' + String(obj) + '] ' + $join.call(parts, ', ') + ' }';\n }\n if (typeof obj === 'object' && customInspect) {\n if (inspectSymbol && typeof obj[inspectSymbol] === 'function' && utilInspect) {\n return utilInspect(obj, { depth: maxDepth - depth });\n } else if (customInspect !== 'symbol' && typeof obj.inspect === 'function') {\n return obj.inspect();\n }\n }\n if (isMap(obj)) {\n var mapParts = [];\n if (mapForEach) {\n mapForEach.call(obj, function (value, key) {\n mapParts.push(inspect(key, obj, true) + ' => ' + inspect(value, obj));\n });\n }\n return collectionOf('Map', mapSize.call(obj), mapParts, indent);\n }\n if (isSet(obj)) {\n var setParts = [];\n if (setForEach) {\n setForEach.call(obj, function (value) {\n setParts.push(inspect(value, obj));\n });\n }\n return collectionOf('Set', setSize.call(obj), setParts, indent);\n }\n if (isWeakMap(obj)) {\n return weakCollectionOf('WeakMap');\n }\n if (isWeakSet(obj)) {\n return weakCollectionOf('WeakSet');\n }\n if (isWeakRef(obj)) {\n return weakCollectionOf('WeakRef');\n }\n if (isNumber(obj)) {\n return markBoxed(inspect(Number(obj)));\n }\n if (isBigInt(obj)) {\n return markBoxed(inspect(bigIntValueOf.call(obj)));\n }\n if (isBoolean(obj)) {\n return markBoxed(booleanValueOf.call(obj));\n }\n if (isString(obj)) {\n return markBoxed(inspect(String(obj)));\n }\n if (!isDate(obj) && !isRegExp(obj)) {\n var ys = arrObjKeys(obj, inspect);\n var isPlainObject = gPO ? gPO(obj) === Object.prototype : obj instanceof Object || obj.constructor === Object;\n var protoTag = obj instanceof Object ? '' : 'null prototype';\n var stringTag = !isPlainObject && toStringTag && Object(obj) === obj && toStringTag in obj ? $slice.call(toStr(obj), 8, -1) : protoTag ? 'Object' : '';\n var constructorTag = isPlainObject || typeof obj.constructor !== 'function' ? '' : obj.constructor.name ? obj.constructor.name + ' ' : '';\n var tag = constructorTag + (stringTag || protoTag ? '[' + $join.call($concat.call([], stringTag || [], protoTag || []), ': ') + '] ' : '');\n if (ys.length === 0) { return tag + '{}'; }\n if (indent) {\n return tag + '{' + indentedJoin(ys, indent) + '}';\n }\n return tag + '{ ' + $join.call(ys, ', ') + ' }';\n }\n return String(obj);\n};\n\nfunction wrapQuotes(s, defaultStyle, opts) {\n var quoteChar = (opts.quoteStyle || defaultStyle) === 'double' ? '\"' : \"'\";\n return quoteChar + s + quoteChar;\n}\n\nfunction quote(s) {\n return $replace.call(String(s), /\"/g, '"');\n}\n\nfunction isArray(obj) { return toStr(obj) === '[object Array]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isDate(obj) { return toStr(obj) === '[object Date]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isRegExp(obj) { return toStr(obj) === '[object RegExp]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isError(obj) { return toStr(obj) === '[object Error]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isString(obj) { return toStr(obj) === '[object String]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isNumber(obj) { return toStr(obj) === '[object Number]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isBoolean(obj) { return toStr(obj) === '[object Boolean]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\n\n// Symbol and BigInt do have Symbol.toStringTag by spec, so that can't be used to eliminate false positives\nfunction isSymbol(obj) {\n if (hasShammedSymbols) {\n return obj && typeof obj === 'object' && obj instanceof Symbol;\n }\n if (typeof obj === 'symbol') {\n return true;\n }\n if (!obj || typeof obj !== 'object' || !symToString) {\n return false;\n }\n try {\n symToString.call(obj);\n return true;\n } catch (e) {}\n return false;\n}\n\nfunction isBigInt(obj) {\n if (!obj || typeof obj !== 'object' || !bigIntValueOf) {\n return false;\n }\n try {\n bigIntValueOf.call(obj);\n return true;\n } catch (e) {}\n return false;\n}\n\nvar hasOwn = Object.prototype.hasOwnProperty || function (key) { return key in this; };\nfunction has(obj, key) {\n return hasOwn.call(obj, key);\n}\n\nfunction toStr(obj) {\n return objectToString.call(obj);\n}\n\nfunction nameOf(f) {\n if (f.name) { return f.name; }\n var m = $match.call(functionToString.call(f), /^function\\s*([\\w$]+)/);\n if (m) { return m[1]; }\n return null;\n}\n\nfunction indexOf(xs, x) {\n if (xs.indexOf) { return xs.indexOf(x); }\n for (var i = 0, l = xs.length; i < l; i++) {\n if (xs[i] === x) { return i; }\n }\n return -1;\n}\n\nfunction isMap(x) {\n if (!mapSize || !x || typeof x !== 'object') {\n return false;\n }\n try {\n mapSize.call(x);\n try {\n setSize.call(x);\n } catch (s) {\n return true;\n }\n return x instanceof Map; // core-js workaround, pre-v2.5.0\n } catch (e) {}\n return false;\n}\n\nfunction isWeakMap(x) {\n if (!weakMapHas || !x || typeof x !== 'object') {\n return false;\n }\n try {\n weakMapHas.call(x, weakMapHas);\n try {\n weakSetHas.call(x, weakSetHas);\n } catch (s) {\n return true;\n }\n return x instanceof WeakMap; // core-js workaround, pre-v2.5.0\n } catch (e) {}\n return false;\n}\n\nfunction isWeakRef(x) {\n if (!weakRefDeref || !x || typeof x !== 'object') {\n return false;\n }\n try {\n weakRefDeref.call(x);\n return true;\n } catch (e) {}\n return false;\n}\n\nfunction isSet(x) {\n if (!setSize || !x || typeof x !== 'object') {\n return false;\n }\n try {\n setSize.call(x);\n try {\n mapSize.call(x);\n } catch (m) {\n return true;\n }\n return x instanceof Set; // core-js workaround, pre-v2.5.0\n } catch (e) {}\n return false;\n}\n\nfunction isWeakSet(x) {\n if (!weakSetHas || !x || typeof x !== 'object') {\n return false;\n }\n try {\n weakSetHas.call(x, weakSetHas);\n try {\n weakMapHas.call(x, weakMapHas);\n } catch (s) {\n return true;\n }\n return x instanceof WeakSet; // core-js workaround, pre-v2.5.0\n } catch (e) {}\n return false;\n}\n\nfunction isElement(x) {\n if (!x || typeof x !== 'object') { return false; }\n if (typeof HTMLElement !== 'undefined' && x instanceof HTMLElement) {\n return true;\n }\n return typeof x.nodeName === 'string' && typeof x.getAttribute === 'function';\n}\n\nfunction inspectString(str, opts) {\n if (str.length > opts.maxStringLength) {\n var remaining = str.length - opts.maxStringLength;\n var trailer = '... ' + remaining + ' more character' + (remaining > 1 ? 's' : '');\n return inspectString($slice.call(str, 0, opts.maxStringLength), opts) + trailer;\n }\n // eslint-disable-next-line no-control-regex\n var s = $replace.call($replace.call(str, /(['\\\\])/g, '\\\\$1'), /[\\x00-\\x1f]/g, lowbyte);\n return wrapQuotes(s, 'single', opts);\n}\n\nfunction lowbyte(c) {\n var n = c.charCodeAt(0);\n var x = {\n 8: 'b',\n 9: 't',\n 10: 'n',\n 12: 'f',\n 13: 'r'\n }[n];\n if (x) { return '\\\\' + x; }\n return '\\\\x' + (n < 0x10 ? '0' : '') + $toUpperCase.call(n.toString(16));\n}\n\nfunction markBoxed(str) {\n return 'Object(' + str + ')';\n}\n\nfunction weakCollectionOf(type) {\n return type + ' { ? }';\n}\n\nfunction collectionOf(type, size, entries, indent) {\n var joinedEntries = indent ? indentedJoin(entries, indent) : $join.call(entries, ', ');\n return type + ' (' + size + ') {' + joinedEntries + '}';\n}\n\nfunction singleLineValues(xs) {\n for (var i = 0; i < xs.length; i++) {\n if (indexOf(xs[i], '\\n') >= 0) {\n return false;\n }\n }\n return true;\n}\n\nfunction getIndent(opts, depth) {\n var baseIndent;\n if (opts.indent === '\\t') {\n baseIndent = '\\t';\n } else if (typeof opts.indent === 'number' && opts.indent > 0) {\n baseIndent = $join.call(Array(opts.indent + 1), ' ');\n } else {\n return null;\n }\n return {\n base: baseIndent,\n prev: $join.call(Array(depth + 1), baseIndent)\n };\n}\n\nfunction indentedJoin(xs, indent) {\n if (xs.length === 0) { return ''; }\n var lineJoiner = '\\n' + indent.prev + indent.base;\n return lineJoiner + $join.call(xs, ',' + lineJoiner) + '\\n' + indent.prev;\n}\n\nfunction arrObjKeys(obj, inspect) {\n var isArr = isArray(obj);\n var xs = [];\n if (isArr) {\n xs.length = obj.length;\n for (var i = 0; i < obj.length; i++) {\n xs[i] = has(obj, i) ? inspect(obj[i], obj) : '';\n }\n }\n var syms = typeof gOPS === 'function' ? gOPS(obj) : [];\n var symMap;\n if (hasShammedSymbols) {\n symMap = {};\n for (var k = 0; k < syms.length; k++) {\n symMap['$' + syms[k]] = syms[k];\n }\n }\n\n for (var key in obj) { // eslint-disable-line no-restricted-syntax\n if (!has(obj, key)) { continue; } // eslint-disable-line no-restricted-syntax, no-continue\n if (isArr && String(Number(key)) === key && key < obj.length) { continue; } // eslint-disable-line no-restricted-syntax, no-continue\n if (hasShammedSymbols && symMap['$' + key] instanceof Symbol) {\n // this is to prevent shammed Symbols, which are stored as strings, from being included in the string key section\n continue; // eslint-disable-line no-restricted-syntax, no-continue\n } else if ($test.call(/[^\\w$]/, key)) {\n xs.push(inspect(key, obj) + ': ' + inspect(obj[key], obj));\n } else {\n xs.push(key + ': ' + inspect(obj[key], obj));\n }\n }\n if (typeof gOPS === 'function') {\n for (var j = 0; j < syms.length; j++) {\n if (isEnumerable.call(obj, syms[j])) {\n xs.push('[' + inspect(syms[j]) + ']: ' + inspect(obj[syms[j]], obj));\n }\n }\n }\n return xs;\n}\n", "'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\nvar callBound = require('call-bind/callBound');\nvar inspect = require('object-inspect');\n\nvar $TypeError = GetIntrinsic('%TypeError%');\nvar $WeakMap = GetIntrinsic('%WeakMap%', true);\nvar $Map = GetIntrinsic('%Map%', true);\n\nvar $weakMapGet = callBound('WeakMap.prototype.get', true);\nvar $weakMapSet = callBound('WeakMap.prototype.set', true);\nvar $weakMapHas = callBound('WeakMap.prototype.has', true);\nvar $mapGet = callBound('Map.prototype.get', true);\nvar $mapSet = callBound('Map.prototype.set', true);\nvar $mapHas = callBound('Map.prototype.has', true);\n\n/*\n * This function traverses the list returning the node corresponding to the\n * given key.\n *\n * That node is also moved to the head of the list, so that if it's accessed\n * again we don't need to traverse the whole list. By doing so, all the recently\n * used nodes can be accessed relatively quickly.\n */\nvar listGetNode = function (list, key) { // eslint-disable-line consistent-return\n\tfor (var prev = list, curr; (curr = prev.next) !== null; prev = curr) {\n\t\tif (curr.key === key) {\n\t\t\tprev.next = curr.next;\n\t\t\tcurr.next = list.next;\n\t\t\tlist.next = curr; // eslint-disable-line no-param-reassign\n\t\t\treturn curr;\n\t\t}\n\t}\n};\n\nvar listGet = function (objects, key) {\n\tvar node = listGetNode(objects, key);\n\treturn node && node.value;\n};\nvar listSet = function (objects, key, value) {\n\tvar node = listGetNode(objects, key);\n\tif (node) {\n\t\tnode.value = value;\n\t} else {\n\t\t// Prepend the new node to the beginning of the list\n\t\tobjects.next = { // eslint-disable-line no-param-reassign\n\t\t\tkey: key,\n\t\t\tnext: objects.next,\n\t\t\tvalue: value\n\t\t};\n\t}\n};\nvar listHas = function (objects, key) {\n\treturn !!listGetNode(objects, key);\n};\n\nmodule.exports = function getSideChannel() {\n\tvar $wm;\n\tvar $m;\n\tvar $o;\n\tvar channel = {\n\t\tassert: function (key) {\n\t\t\tif (!channel.has(key)) {\n\t\t\t\tthrow new $TypeError('Side channel does not contain ' + inspect(key));\n\t\t\t}\n\t\t},\n\t\tget: function (key) { // eslint-disable-line consistent-return\n\t\t\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\n\t\t\t\tif ($wm) {\n\t\t\t\t\treturn $weakMapGet($wm, key);\n\t\t\t\t}\n\t\t\t} else if ($Map) {\n\t\t\t\tif ($m) {\n\t\t\t\t\treturn $mapGet($m, key);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif ($o) { // eslint-disable-line no-lonely-if\n\t\t\t\t\treturn listGet($o, key);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\thas: function (key) {\n\t\t\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\n\t\t\t\tif ($wm) {\n\t\t\t\t\treturn $weakMapHas($wm, key);\n\t\t\t\t}\n\t\t\t} else if ($Map) {\n\t\t\t\tif ($m) {\n\t\t\t\t\treturn $mapHas($m, key);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif ($o) { // eslint-disable-line no-lonely-if\n\t\t\t\t\treturn listHas($o, key);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t},\n\t\tset: function (key, value) {\n\t\t\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\n\t\t\t\tif (!$wm) {\n\t\t\t\t\t$wm = new $WeakMap();\n\t\t\t\t}\n\t\t\t\t$weakMapSet($wm, key, value);\n\t\t\t} else if ($Map) {\n\t\t\t\tif (!$m) {\n\t\t\t\t\t$m = new $Map();\n\t\t\t\t}\n\t\t\t\t$mapSet($m, key, value);\n\t\t\t} else {\n\t\t\t\tif (!$o) {\n\t\t\t\t\t/*\n\t\t\t\t\t * Initialize the linked list as an empty node, so that we don't have\n\t\t\t\t\t * to special-case handling of the first node: we can always refer to\n\t\t\t\t\t * it as (previous node).next, instead of something like (list).head\n\t\t\t\t\t */\n\t\t\t\t\t$o = { key: {}, next: null };\n\t\t\t\t}\n\t\t\t\tlistSet($o, key, value);\n\t\t\t}\n\t\t}\n\t};\n\treturn channel;\n};\n", "'use strict';\n\nvar replace = String.prototype.replace;\nvar percentTwenties = /%20/g;\n\nvar Format = {\n RFC1738: 'RFC1738',\n RFC3986: 'RFC3986'\n};\n\nmodule.exports = {\n 'default': Format.RFC3986,\n formatters: {\n RFC1738: function (value) {\n return replace.call(value, percentTwenties, '+');\n },\n RFC3986: function (value) {\n return String(value);\n }\n },\n RFC1738: Format.RFC1738,\n RFC3986: Format.RFC3986\n};\n", "'use strict';\n\nvar formats = require('./formats');\n\nvar has = Object.prototype.hasOwnProperty;\nvar isArray = Array.isArray;\n\nvar hexTable = (function () {\n var array = [];\n for (var i = 0; i < 256; ++i) {\n array.push('%' + ((i < 16 ? '0' : '') + i.toString(16)).toUpperCase());\n }\n\n return array;\n}());\n\nvar compactQueue = function compactQueue(queue) {\n while (queue.length > 1) {\n var item = queue.pop();\n var obj = item.obj[item.prop];\n\n if (isArray(obj)) {\n var compacted = [];\n\n for (var j = 0; j < obj.length; ++j) {\n if (typeof obj[j] !== 'undefined') {\n compacted.push(obj[j]);\n }\n }\n\n item.obj[item.prop] = compacted;\n }\n }\n};\n\nvar arrayToObject = function arrayToObject(source, options) {\n var obj = options && options.plainObjects ? Object.create(null) : {};\n for (var i = 0; i < source.length; ++i) {\n if (typeof source[i] !== 'undefined') {\n obj[i] = source[i];\n }\n }\n\n return obj;\n};\n\nvar merge = function merge(target, source, options) {\n /* eslint no-param-reassign: 0 */\n if (!source) {\n return target;\n }\n\n if (typeof source !== 'object') {\n if (isArray(target)) {\n target.push(source);\n } else if (target && typeof target === 'object') {\n if ((options && (options.plainObjects || options.allowPrototypes)) || !has.call(Object.prototype, source)) {\n target[source] = true;\n }\n } else {\n return [target, source];\n }\n\n return target;\n }\n\n if (!target || typeof target !== 'object') {\n return [target].concat(source);\n }\n\n var mergeTarget = target;\n if (isArray(target) && !isArray(source)) {\n mergeTarget = arrayToObject(target, options);\n }\n\n if (isArray(target) && isArray(source)) {\n source.forEach(function (item, i) {\n if (has.call(target, i)) {\n var targetItem = target[i];\n if (targetItem && typeof targetItem === 'object' && item && typeof item === 'object') {\n target[i] = merge(targetItem, item, options);\n } else {\n target.push(item);\n }\n } else {\n target[i] = item;\n }\n });\n return target;\n }\n\n return Object.keys(source).reduce(function (acc, key) {\n var value = source[key];\n\n if (has.call(acc, key)) {\n acc[key] = merge(acc[key], value, options);\n } else {\n acc[key] = value;\n }\n return acc;\n }, mergeTarget);\n};\n\nvar assign = function assignSingleSource(target, source) {\n return Object.keys(source).reduce(function (acc, key) {\n acc[key] = source[key];\n return acc;\n }, target);\n};\n\nvar decode = function (str, decoder, charset) {\n var strWithoutPlus = str.replace(/\\+/g, ' ');\n if (charset === 'iso-8859-1') {\n // unescape never throws, no try...catch needed:\n return strWithoutPlus.replace(/%[0-9a-f]{2}/gi, unescape);\n }\n // utf-8\n try {\n return decodeURIComponent(strWithoutPlus);\n } catch (e) {\n return strWithoutPlus;\n }\n};\n\nvar encode = function encode(str, defaultEncoder, charset, kind, format) {\n // This code was originally written by Brian White (mscdex) for the io.js core querystring library.\n // It has been adapted here for stricter adherence to RFC 3986\n if (str.length === 0) {\n return str;\n }\n\n var string = str;\n if (typeof str === 'symbol') {\n string = Symbol.prototype.toString.call(str);\n } else if (typeof str !== 'string') {\n string = String(str);\n }\n\n if (charset === 'iso-8859-1') {\n return escape(string).replace(/%u[0-9a-f]{4}/gi, function ($0) {\n return '%26%23' + parseInt($0.slice(2), 16) + '%3B';\n });\n }\n\n var out = '';\n for (var i = 0; i < string.length; ++i) {\n var c = string.charCodeAt(i);\n\n if (\n c === 0x2D // -\n || c === 0x2E // .\n || c === 0x5F // _\n || c === 0x7E // ~\n || (c >= 0x30 && c <= 0x39) // 0-9\n || (c >= 0x41 && c <= 0x5A) // a-z\n || (c >= 0x61 && c <= 0x7A) // A-Z\n || (format === formats.RFC1738 && (c === 0x28 || c === 0x29)) // ( )\n ) {\n out += string.charAt(i);\n continue;\n }\n\n if (c < 0x80) {\n out = out + hexTable[c];\n continue;\n }\n\n if (c < 0x800) {\n out = out + (hexTable[0xC0 | (c >> 6)] + hexTable[0x80 | (c & 0x3F)]);\n continue;\n }\n\n if (c < 0xD800 || c >= 0xE000) {\n out = out + (hexTable[0xE0 | (c >> 12)] + hexTable[0x80 | ((c >> 6) & 0x3F)] + hexTable[0x80 | (c & 0x3F)]);\n continue;\n }\n\n i += 1;\n c = 0x10000 + (((c & 0x3FF) << 10) | (string.charCodeAt(i) & 0x3FF));\n /* eslint operator-linebreak: [2, \"before\"] */\n out += hexTable[0xF0 | (c >> 18)]\n + hexTable[0x80 | ((c >> 12) & 0x3F)]\n + hexTable[0x80 | ((c >> 6) & 0x3F)]\n + hexTable[0x80 | (c & 0x3F)];\n }\n\n return out;\n};\n\nvar compact = function compact(value) {\n var queue = [{ obj: { o: value }, prop: 'o' }];\n var refs = [];\n\n for (var i = 0; i < queue.length; ++i) {\n var item = queue[i];\n var obj = item.obj[item.prop];\n\n var keys = Object.keys(obj);\n for (var j = 0; j < keys.length; ++j) {\n var key = keys[j];\n var val = obj[key];\n if (typeof val === 'object' && val !== null && refs.indexOf(val) === -1) {\n queue.push({ obj: obj, prop: key });\n refs.push(val);\n }\n }\n }\n\n compactQueue(queue);\n\n return value;\n};\n\nvar isRegExp = function isRegExp(obj) {\n return Object.prototype.toString.call(obj) === '[object RegExp]';\n};\n\nvar isBuffer = function isBuffer(obj) {\n if (!obj || typeof obj !== 'object') {\n return false;\n }\n\n return !!(obj.constructor && obj.constructor.isBuffer && obj.constructor.isBuffer(obj));\n};\n\nvar combine = function combine(a, b) {\n return [].concat(a, b);\n};\n\nvar maybeMap = function maybeMap(val, fn) {\n if (isArray(val)) {\n var mapped = [];\n for (var i = 0; i < val.length; i += 1) {\n mapped.push(fn(val[i]));\n }\n return mapped;\n }\n return fn(val);\n};\n\nmodule.exports = {\n arrayToObject: arrayToObject,\n assign: assign,\n combine: combine,\n compact: compact,\n decode: decode,\n encode: encode,\n isBuffer: isBuffer,\n isRegExp: isRegExp,\n maybeMap: maybeMap,\n merge: merge\n};\n", "'use strict';\n\nvar getSideChannel = require('side-channel');\nvar utils = require('./utils');\nvar formats = require('./formats');\nvar has = Object.prototype.hasOwnProperty;\n\nvar arrayPrefixGenerators = {\n brackets: function brackets(prefix) {\n return prefix + '[]';\n },\n comma: 'comma',\n indices: function indices(prefix, key) {\n return prefix + '[' + key + ']';\n },\n repeat: function repeat(prefix) {\n return prefix;\n }\n};\n\nvar isArray = Array.isArray;\nvar split = String.prototype.split;\nvar push = Array.prototype.push;\nvar pushToArray = function (arr, valueOrArray) {\n push.apply(arr, isArray(valueOrArray) ? valueOrArray : [valueOrArray]);\n};\n\nvar toISO = Date.prototype.toISOString;\n\nvar defaultFormat = formats['default'];\nvar defaults = {\n addQueryPrefix: false,\n allowDots: false,\n charset: 'utf-8',\n charsetSentinel: false,\n delimiter: '&',\n encode: true,\n encoder: utils.encode,\n encodeValuesOnly: false,\n format: defaultFormat,\n formatter: formats.formatters[defaultFormat],\n // deprecated\n indices: false,\n serializeDate: function serializeDate(date) {\n return toISO.call(date);\n },\n skipNulls: false,\n strictNullHandling: false\n};\n\nvar isNonNullishPrimitive = function isNonNullishPrimitive(v) {\n return typeof v === 'string'\n || typeof v === 'number'\n || typeof v === 'boolean'\n || typeof v === 'symbol'\n || typeof v === 'bigint';\n};\n\nvar sentinel = {};\n\nvar stringify = function stringify(\n object,\n prefix,\n generateArrayPrefix,\n commaRoundTrip,\n strictNullHandling,\n skipNulls,\n encoder,\n filter,\n sort,\n allowDots,\n serializeDate,\n format,\n formatter,\n encodeValuesOnly,\n charset,\n sideChannel\n) {\n var obj = object;\n\n var tmpSc = sideChannel;\n var step = 0;\n var findFlag = false;\n while ((tmpSc = tmpSc.get(sentinel)) !== void undefined && !findFlag) {\n // Where object last appeared in the ref tree\n var pos = tmpSc.get(object);\n step += 1;\n if (typeof pos !== 'undefined') {\n if (pos === step) {\n throw new RangeError('Cyclic object value');\n } else {\n findFlag = true; // Break while\n }\n }\n if (typeof tmpSc.get(sentinel) === 'undefined') {\n step = 0;\n }\n }\n\n if (typeof filter === 'function') {\n obj = filter(prefix, obj);\n } else if (obj instanceof Date) {\n obj = serializeDate(obj);\n } else if (generateArrayPrefix === 'comma' && isArray(obj)) {\n obj = utils.maybeMap(obj, function (value) {\n if (value instanceof Date) {\n return serializeDate(value);\n }\n return value;\n });\n }\n\n if (obj === null) {\n if (strictNullHandling) {\n return encoder && !encodeValuesOnly ? encoder(prefix, defaults.encoder, charset, 'key', format) : prefix;\n }\n\n obj = '';\n }\n\n if (isNonNullishPrimitive(obj) || utils.isBuffer(obj)) {\n if (encoder) {\n var keyValue = encodeValuesOnly ? prefix : encoder(prefix, defaults.encoder, charset, 'key', format);\n if (generateArrayPrefix === 'comma' && encodeValuesOnly) {\n var valuesArray = split.call(String(obj), ',');\n var valuesJoined = '';\n for (var i = 0; i < valuesArray.length; ++i) {\n valuesJoined += (i === 0 ? '' : ',') + formatter(encoder(valuesArray[i], defaults.encoder, charset, 'value', format));\n }\n return [formatter(keyValue) + (commaRoundTrip && isArray(obj) && valuesArray.length === 1 ? '[]' : '') + '=' + valuesJoined];\n }\n return [formatter(keyValue) + '=' + formatter(encoder(obj, defaults.encoder, charset, 'value', format))];\n }\n return [formatter(prefix) + '=' + formatter(String(obj))];\n }\n\n var values = [];\n\n if (typeof obj === 'undefined') {\n return values;\n }\n\n var objKeys;\n if (generateArrayPrefix === 'comma' && isArray(obj)) {\n // we need to join elements in\n objKeys = [{ value: obj.length > 0 ? obj.join(',') || null : void undefined }];\n } else if (isArray(filter)) {\n objKeys = filter;\n } else {\n var keys = Object.keys(obj);\n objKeys = sort ? keys.sort(sort) : keys;\n }\n\n var adjustedPrefix = commaRoundTrip && isArray(obj) && obj.length === 1 ? prefix + '[]' : prefix;\n\n for (var j = 0; j < objKeys.length; ++j) {\n var key = objKeys[j];\n var value = typeof key === 'object' && typeof key.value !== 'undefined' ? key.value : obj[key];\n\n if (skipNulls && value === null) {\n continue;\n }\n\n var keyPrefix = isArray(obj)\n ? typeof generateArrayPrefix === 'function' ? generateArrayPrefix(adjustedPrefix, key) : adjustedPrefix\n : adjustedPrefix + (allowDots ? '.' + key : '[' + key + ']');\n\n sideChannel.set(object, step);\n var valueSideChannel = getSideChannel();\n valueSideChannel.set(sentinel, sideChannel);\n pushToArray(values, stringify(\n value,\n keyPrefix,\n generateArrayPrefix,\n commaRoundTrip,\n strictNullHandling,\n skipNulls,\n encoder,\n filter,\n sort,\n allowDots,\n serializeDate,\n format,\n formatter,\n encodeValuesOnly,\n charset,\n valueSideChannel\n ));\n }\n\n return values;\n};\n\nvar normalizeStringifyOptions = function normalizeStringifyOptions(opts) {\n if (!opts) {\n return defaults;\n }\n\n if (opts.encoder !== null && typeof opts.encoder !== 'undefined' && typeof opts.encoder !== 'function') {\n throw new TypeError('Encoder has to be a function.');\n }\n\n var charset = opts.charset || defaults.charset;\n if (typeof opts.charset !== 'undefined' && opts.charset !== 'utf-8' && opts.charset !== 'iso-8859-1') {\n throw new TypeError('The charset option must be either utf-8, iso-8859-1, or undefined');\n }\n\n var format = formats['default'];\n if (typeof opts.format !== 'undefined') {\n if (!has.call(formats.formatters, opts.format)) {\n throw new TypeError('Unknown format option provided.');\n }\n format = opts.format;\n }\n var formatter = formats.formatters[format];\n\n var filter = defaults.filter;\n if (typeof opts.filter === 'function' || isArray(opts.filter)) {\n filter = opts.filter;\n }\n\n return {\n addQueryPrefix: typeof opts.addQueryPrefix === 'boolean' ? opts.addQueryPrefix : defaults.addQueryPrefix,\n allowDots: typeof opts.allowDots === 'undefined' ? defaults.allowDots : !!opts.allowDots,\n charset: charset,\n charsetSentinel: typeof opts.charsetSentinel === 'boolean' ? opts.charsetSentinel : defaults.charsetSentinel,\n delimiter: typeof opts.delimiter === 'undefined' ? defaults.delimiter : opts.delimiter,\n encode: typeof opts.encode === 'boolean' ? opts.encode : defaults.encode,\n encoder: typeof opts.encoder === 'function' ? opts.encoder : defaults.encoder,\n encodeValuesOnly: typeof opts.encodeValuesOnly === 'boolean' ? opts.encodeValuesOnly : defaults.encodeValuesOnly,\n filter: filter,\n format: format,\n formatter: formatter,\n serializeDate: typeof opts.serializeDate === 'function' ? opts.serializeDate : defaults.serializeDate,\n skipNulls: typeof opts.skipNulls === 'boolean' ? opts.skipNulls : defaults.skipNulls,\n sort: typeof opts.sort === 'function' ? opts.sort : null,\n strictNullHandling: typeof opts.strictNullHandling === 'boolean' ? opts.strictNullHandling : defaults.strictNullHandling\n };\n};\n\nmodule.exports = function (object, opts) {\n var obj = object;\n var options = normalizeStringifyOptions(opts);\n\n var objKeys;\n var filter;\n\n if (typeof options.filter === 'function') {\n filter = options.filter;\n obj = filter('', obj);\n } else if (isArray(options.filter)) {\n filter = options.filter;\n objKeys = filter;\n }\n\n var keys = [];\n\n if (typeof obj !== 'object' || obj === null) {\n return '';\n }\n\n var arrayFormat;\n if (opts && opts.arrayFormat in arrayPrefixGenerators) {\n arrayFormat = opts.arrayFormat;\n } else if (opts && 'indices' in opts) {\n arrayFormat = opts.indices ? 'indices' : 'repeat';\n } else {\n arrayFormat = 'indices';\n }\n\n var generateArrayPrefix = arrayPrefixGenerators[arrayFormat];\n if (opts && 'commaRoundTrip' in opts && typeof opts.commaRoundTrip !== 'boolean') {\n throw new TypeError('`commaRoundTrip` must be a boolean, or absent');\n }\n var commaRoundTrip = generateArrayPrefix === 'comma' && opts && opts.commaRoundTrip;\n\n if (!objKeys) {\n objKeys = Object.keys(obj);\n }\n\n if (options.sort) {\n objKeys.sort(options.sort);\n }\n\n var sideChannel = getSideChannel();\n for (var i = 0; i < objKeys.length; ++i) {\n var key = objKeys[i];\n\n if (options.skipNulls && obj[key] === null) {\n continue;\n }\n pushToArray(keys, stringify(\n obj[key],\n key,\n generateArrayPrefix,\n commaRoundTrip,\n options.strictNullHandling,\n options.skipNulls,\n options.encode ? options.encoder : null,\n options.filter,\n options.sort,\n options.allowDots,\n options.serializeDate,\n options.format,\n options.formatter,\n options.encodeValuesOnly,\n options.charset,\n sideChannel\n ));\n }\n\n var joined = keys.join(options.delimiter);\n var prefix = options.addQueryPrefix === true ? '?' : '';\n\n if (options.charsetSentinel) {\n if (options.charset === 'iso-8859-1') {\n // encodeURIComponent('✓'), the \"numeric entity\" representation of a checkmark\n prefix += 'utf8=%26%2310003%3B&';\n } else {\n // encodeURIComponent('\u2713')\n prefix += 'utf8=%E2%9C%93&';\n }\n }\n\n return joined.length > 0 ? prefix + joined : '';\n};\n", "'use strict';\n\nvar utils = require('./utils');\n\nvar has = Object.prototype.hasOwnProperty;\nvar isArray = Array.isArray;\n\nvar defaults = {\n allowDots: false,\n allowPrototypes: false,\n allowSparse: false,\n arrayLimit: 20,\n charset: 'utf-8',\n charsetSentinel: false,\n comma: false,\n decoder: utils.decode,\n delimiter: '&',\n depth: 5,\n ignoreQueryPrefix: false,\n interpretNumericEntities: false,\n parameterLimit: 1000,\n parseArrays: true,\n plainObjects: false,\n strictNullHandling: false\n};\n\nvar interpretNumericEntities = function (str) {\n return str.replace(/&#(\\d+);/g, function ($0, numberStr) {\n return String.fromCharCode(parseInt(numberStr, 10));\n });\n};\n\nvar parseArrayValue = function (val, options) {\n if (val && typeof val === 'string' && options.comma && val.indexOf(',') > -1) {\n return val.split(',');\n }\n\n return val;\n};\n\n// This is what browsers will submit when the \u2713 character occurs in an\n// application/x-www-form-urlencoded body and the encoding of the page containing\n// the form is iso-8859-1, or when the submitted form has an accept-charset\n// attribute of iso-8859-1. Presumably also with other charsets that do not contain\n// the \u2713 character, such as us-ascii.\nvar isoSentinel = 'utf8=%26%2310003%3B'; // encodeURIComponent('✓')\n\n// These are the percent-encoded utf-8 octets representing a checkmark, indicating that the request actually is utf-8 encoded.\nvar charsetSentinel = 'utf8=%E2%9C%93'; // encodeURIComponent('\u2713')\n\nvar parseValues = function parseQueryStringValues(str, options) {\n var obj = {};\n var cleanStr = options.ignoreQueryPrefix ? str.replace(/^\\?/, '') : str;\n var limit = options.parameterLimit === Infinity ? undefined : options.parameterLimit;\n var parts = cleanStr.split(options.delimiter, limit);\n var skipIndex = -1; // Keep track of where the utf8 sentinel was found\n var i;\n\n var charset = options.charset;\n if (options.charsetSentinel) {\n for (i = 0; i < parts.length; ++i) {\n if (parts[i].indexOf('utf8=') === 0) {\n if (parts[i] === charsetSentinel) {\n charset = 'utf-8';\n } else if (parts[i] === isoSentinel) {\n charset = 'iso-8859-1';\n }\n skipIndex = i;\n i = parts.length; // The eslint settings do not allow break;\n }\n }\n }\n\n for (i = 0; i < parts.length; ++i) {\n if (i === skipIndex) {\n continue;\n }\n var part = parts[i];\n\n var bracketEqualsPos = part.indexOf(']=');\n var pos = bracketEqualsPos === -1 ? part.indexOf('=') : bracketEqualsPos + 1;\n\n var key, val;\n if (pos === -1) {\n key = options.decoder(part, defaults.decoder, charset, 'key');\n val = options.strictNullHandling ? null : '';\n } else {\n key = options.decoder(part.slice(0, pos), defaults.decoder, charset, 'key');\n val = utils.maybeMap(\n parseArrayValue(part.slice(pos + 1), options),\n function (encodedVal) {\n return options.decoder(encodedVal, defaults.decoder, charset, 'value');\n }\n );\n }\n\n if (val && options.interpretNumericEntities && charset === 'iso-8859-1') {\n val = interpretNumericEntities(val);\n }\n\n if (part.indexOf('[]=') > -1) {\n val = isArray(val) ? [val] : val;\n }\n\n if (has.call(obj, key)) {\n obj[key] = utils.combine(obj[key], val);\n } else {\n obj[key] = val;\n }\n }\n\n return obj;\n};\n\nvar parseObject = function (chain, val, options, valuesParsed) {\n var leaf = valuesParsed ? val : parseArrayValue(val, options);\n\n for (var i = chain.length - 1; i >= 0; --i) {\n var obj;\n var root = chain[i];\n\n if (root === '[]' && options.parseArrays) {\n obj = [].concat(leaf);\n } else {\n obj = options.plainObjects ? Object.create(null) : {};\n var cleanRoot = root.charAt(0) === '[' && root.charAt(root.length - 1) === ']' ? root.slice(1, -1) : root;\n var index = parseInt(cleanRoot, 10);\n if (!options.parseArrays && cleanRoot === '') {\n obj = { 0: leaf };\n } else if (\n !isNaN(index)\n && root !== cleanRoot\n && String(index) === cleanRoot\n && index >= 0\n && (options.parseArrays && index <= options.arrayLimit)\n ) {\n obj = [];\n obj[index] = leaf;\n } else if (cleanRoot !== '__proto__') {\n obj[cleanRoot] = leaf;\n }\n }\n\n leaf = obj;\n }\n\n return leaf;\n};\n\nvar parseKeys = function parseQueryStringKeys(givenKey, val, options, valuesParsed) {\n if (!givenKey) {\n return;\n }\n\n // Transform dot notation to bracket notation\n var key = options.allowDots ? givenKey.replace(/\\.([^.[]+)/g, '[$1]') : givenKey;\n\n // The regex chunks\n\n var brackets = /(\\[[^[\\]]*])/;\n var child = /(\\[[^[\\]]*])/g;\n\n // Get the parent\n\n var segment = options.depth > 0 && brackets.exec(key);\n var parent = segment ? key.slice(0, segment.index) : key;\n\n // Stash the parent if it exists\n\n var keys = [];\n if (parent) {\n // If we aren't using plain objects, optionally prefix keys that would overwrite object prototype properties\n if (!options.plainObjects && has.call(Object.prototype, parent)) {\n if (!options.allowPrototypes) {\n return;\n }\n }\n\n keys.push(parent);\n }\n\n // Loop through children appending to the array until we hit depth\n\n var i = 0;\n while (options.depth > 0 && (segment = child.exec(key)) !== null && i < options.depth) {\n i += 1;\n if (!options.plainObjects && has.call(Object.prototype, segment[1].slice(1, -1))) {\n if (!options.allowPrototypes) {\n return;\n }\n }\n keys.push(segment[1]);\n }\n\n // If there's a remainder, just add whatever is left\n\n if (segment) {\n keys.push('[' + key.slice(segment.index) + ']');\n }\n\n return parseObject(keys, val, options, valuesParsed);\n};\n\nvar normalizeParseOptions = function normalizeParseOptions(opts) {\n if (!opts) {\n return defaults;\n }\n\n if (opts.decoder !== null && opts.decoder !== undefined && typeof opts.decoder !== 'function') {\n throw new TypeError('Decoder has to be a function.');\n }\n\n if (typeof opts.charset !== 'undefined' && opts.charset !== 'utf-8' && opts.charset !== 'iso-8859-1') {\n throw new TypeError('The charset option must be either utf-8, iso-8859-1, or undefined');\n }\n var charset = typeof opts.charset === 'undefined' ? defaults.charset : opts.charset;\n\n return {\n allowDots: typeof opts.allowDots === 'undefined' ? defaults.allowDots : !!opts.allowDots,\n allowPrototypes: typeof opts.allowPrototypes === 'boolean' ? opts.allowPrototypes : defaults.allowPrototypes,\n allowSparse: typeof opts.allowSparse === 'boolean' ? opts.allowSparse : defaults.allowSparse,\n arrayLimit: typeof opts.arrayLimit === 'number' ? opts.arrayLimit : defaults.arrayLimit,\n charset: charset,\n charsetSentinel: typeof opts.charsetSentinel === 'boolean' ? opts.charsetSentinel : defaults.charsetSentinel,\n comma: typeof opts.comma === 'boolean' ? opts.comma : defaults.comma,\n decoder: typeof opts.decoder === 'function' ? opts.decoder : defaults.decoder,\n delimiter: typeof opts.delimiter === 'string' || utils.isRegExp(opts.delimiter) ? opts.delimiter : defaults.delimiter,\n // eslint-disable-next-line no-implicit-coercion, no-extra-parens\n depth: (typeof opts.depth === 'number' || opts.depth === false) ? +opts.depth : defaults.depth,\n ignoreQueryPrefix: opts.ignoreQueryPrefix === true,\n interpretNumericEntities: typeof opts.interpretNumericEntities === 'boolean' ? opts.interpretNumericEntities : defaults.interpretNumericEntities,\n parameterLimit: typeof opts.parameterLimit === 'number' ? opts.parameterLimit : defaults.parameterLimit,\n parseArrays: opts.parseArrays !== false,\n plainObjects: typeof opts.plainObjects === 'boolean' ? opts.plainObjects : defaults.plainObjects,\n strictNullHandling: typeof opts.strictNullHandling === 'boolean' ? opts.strictNullHandling : defaults.strictNullHandling\n };\n};\n\nmodule.exports = function (str, opts) {\n var options = normalizeParseOptions(opts);\n\n if (str === '' || str === null || typeof str === 'undefined') {\n return options.plainObjects ? Object.create(null) : {};\n }\n\n var tempObj = typeof str === 'string' ? parseValues(str, options) : str;\n var obj = options.plainObjects ? Object.create(null) : {};\n\n // Iterate over the keys and setup the new object\n\n var keys = Object.keys(tempObj);\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n var newObj = parseKeys(key, tempObj[key], options, typeof str === 'string');\n obj = utils.merge(obj, newObj, options);\n }\n\n if (options.allowSparse === true) {\n return obj;\n }\n\n return utils.compact(obj);\n};\n", "'use strict';\n\nvar stringify = require('./stringify');\nvar parse = require('./parse');\nvar formats = require('./formats');\n\nmodule.exports = {\n formats: formats,\n parse: parse,\n stringify: stringify\n};\n", "/*!\n * body-parser\n * Copyright(c) 2014 Jonathan Ong\n * Copyright(c) 2014-2015 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict'\n\n/**\n * Module dependencies.\n * @private\n */\n\nvar bytes = require('bytes')\nvar contentType = require('content-type')\nvar createError = require('http-errors')\nvar debug = require('debug')('body-parser:urlencoded')\nvar deprecate = require('depd')('body-parser')\nvar read = require('../read')\nvar typeis = require('type-is')\n\n/**\n * Module exports.\n */\n\nmodule.exports = urlencoded\n\n/**\n * Cache of parser modules.\n */\n\nvar parsers = Object.create(null)\n\n/**\n * Create a middleware to parse urlencoded bodies.\n *\n * @param {object} [options]\n * @return {function}\n * @public\n */\n\nfunction urlencoded (options) {\n var opts = options || {}\n\n // notice because option default will flip in next major\n if (opts.extended === undefined) {\n deprecate('undefined extended: provide extended option')\n }\n\n var extended = opts.extended !== false\n var inflate = opts.inflate !== false\n var limit = typeof opts.limit !== 'number'\n ? bytes.parse(opts.limit || '100kb')\n : opts.limit\n var type = opts.type || 'application/x-www-form-urlencoded'\n var verify = opts.verify || false\n\n if (verify !== false && typeof verify !== 'function') {\n throw new TypeError('option verify must be function')\n }\n\n // create the appropriate query parser\n var queryparse = extended\n ? extendedparser(opts)\n : simpleparser(opts)\n\n // create the appropriate type checking function\n var shouldParse = typeof type !== 'function'\n ? typeChecker(type)\n : type\n\n function parse (body) {\n return body.length\n ? queryparse(body)\n : {}\n }\n\n return function urlencodedParser (req, res, next) {\n if (req._body) {\n debug('body already parsed')\n next()\n return\n }\n\n req.body = req.body || {}\n\n // skip requests without bodies\n if (!typeis.hasBody(req)) {\n debug('skip empty body')\n next()\n return\n }\n\n debug('content-type %j', req.headers['content-type'])\n\n // determine if request should be parsed\n if (!shouldParse(req)) {\n debug('skip parsing')\n next()\n return\n }\n\n // assert charset\n var charset = getCharset(req) || 'utf-8'\n if (charset !== 'utf-8') {\n debug('invalid charset')\n next(createError(415, 'unsupported charset \"' + charset.toUpperCase() + '\"', {\n charset: charset,\n type: 'charset.unsupported'\n }))\n return\n }\n\n // read\n read(req, res, next, parse, debug, {\n debug: debug,\n encoding: charset,\n inflate: inflate,\n limit: limit,\n verify: verify\n })\n }\n}\n\n/**\n * Get the extended query parser.\n *\n * @param {object} options\n */\n\nfunction extendedparser (options) {\n var parameterLimit = options.parameterLimit !== undefined\n ? options.parameterLimit\n : 1000\n var parse = parser('qs')\n\n if (isNaN(parameterLimit) || parameterLimit < 1) {\n throw new TypeError('option parameterLimit must be a positive number')\n }\n\n if (isFinite(parameterLimit)) {\n parameterLimit = parameterLimit | 0\n }\n\n return function queryparse (body) {\n var paramCount = parameterCount(body, parameterLimit)\n\n if (paramCount === undefined) {\n debug('too many parameters')\n throw createError(413, 'too many parameters', {\n type: 'parameters.too.many'\n })\n }\n\n var arrayLimit = Math.max(100, paramCount)\n\n debug('parse extended urlencoding')\n return parse(body, {\n allowPrototypes: true,\n arrayLimit: arrayLimit,\n depth: Infinity,\n parameterLimit: parameterLimit\n })\n }\n}\n\n/**\n * Get the charset of a request.\n *\n * @param {object} req\n * @api private\n */\n\nfunction getCharset (req) {\n try {\n return (contentType.parse(req).parameters.charset || '').toLowerCase()\n } catch (e) {\n return undefined\n }\n}\n\n/**\n * Count the number of parameters, stopping once limit reached\n *\n * @param {string} body\n * @param {number} limit\n * @api private\n */\n\nfunction parameterCount (body, limit) {\n var count = 0\n var index = 0\n\n while ((index = body.indexOf('&', index)) !== -1) {\n count++\n index++\n\n if (count === limit) {\n return undefined\n }\n }\n\n return count\n}\n\n/**\n * Get parser for module name dynamically.\n *\n * @param {string} name\n * @return {function}\n * @api private\n */\n\nfunction parser (name) {\n var mod = parsers[name]\n\n if (mod !== undefined) {\n return mod.parse\n }\n\n // this uses a switch for static require analysis\n switch (name) {\n case 'qs':\n mod = require('qs')\n break\n case 'querystring':\n mod = require('querystring')\n break\n }\n\n // store to prevent invoking require()\n parsers[name] = mod\n\n return mod.parse\n}\n\n/**\n * Get the simple query parser.\n *\n * @param {object} options\n */\n\nfunction simpleparser (options) {\n var parameterLimit = options.parameterLimit !== undefined\n ? options.parameterLimit\n : 1000\n var parse = parser('querystring')\n\n if (isNaN(parameterLimit) || parameterLimit < 1) {\n throw new TypeError('option parameterLimit must be a positive number')\n }\n\n if (isFinite(parameterLimit)) {\n parameterLimit = parameterLimit | 0\n }\n\n return function queryparse (body) {\n var paramCount = parameterCount(body, parameterLimit)\n\n if (paramCount === undefined) {\n debug('too many parameters')\n throw createError(413, 'too many parameters', {\n type: 'parameters.too.many'\n })\n }\n\n debug('parse urlencoding')\n return parse(body, undefined, undefined, { maxKeys: parameterLimit })\n }\n}\n\n/**\n * Get the simple type checker.\n *\n * @param {string} type\n * @return {function}\n */\n\nfunction typeChecker (type) {\n return function checkType (req) {\n return Boolean(typeis(req, type))\n }\n}\n", "/*!\n * body-parser\n * Copyright(c) 2014-2015 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict'\n\n/**\n * Module dependencies.\n * @private\n */\n\nvar deprecate = require('depd')('body-parser')\n\n/**\n * Cache of loaded parsers.\n * @private\n */\n\nvar parsers = Object.create(null)\n\n/**\n * @typedef Parsers\n * @type {function}\n * @property {function} json\n * @property {function} raw\n * @property {function} text\n * @property {function} urlencoded\n */\n\n/**\n * Module exports.\n * @type {Parsers}\n */\n\nexports = module.exports = deprecate.function(bodyParser,\n 'bodyParser: use individual json/urlencoded middlewares')\n\n/**\n * JSON parser.\n * @public\n */\n\nObject.defineProperty(exports, 'json', {\n configurable: true,\n enumerable: true,\n get: createParserGetter('json')\n})\n\n/**\n * Raw parser.\n * @public\n */\n\nObject.defineProperty(exports, 'raw', {\n configurable: true,\n enumerable: true,\n get: createParserGetter('raw')\n})\n\n/**\n * Text parser.\n * @public\n */\n\nObject.defineProperty(exports, 'text', {\n configurable: true,\n enumerable: true,\n get: createParserGetter('text')\n})\n\n/**\n * URL-encoded parser.\n * @public\n */\n\nObject.defineProperty(exports, 'urlencoded', {\n configurable: true,\n enumerable: true,\n get: createParserGetter('urlencoded')\n})\n\n/**\n * Create a middleware to parse json and urlencoded bodies.\n *\n * @param {object} [options]\n * @return {function}\n * @deprecated\n * @public\n */\n\nfunction bodyParser (options) {\n // use default type for parsers\n var opts = Object.create(options || null, {\n type: {\n configurable: true,\n enumerable: true,\n value: undefined,\n writable: true\n }\n })\n\n var _urlencoded = exports.urlencoded(opts)\n var _json = exports.json(opts)\n\n return function bodyParser (req, res, next) {\n _json(req, res, function (err) {\n if (err) return next(err)\n _urlencoded(req, res, next)\n })\n }\n}\n\n/**\n * Create a getter for loading a parser.\n * @private\n */\n\nfunction createParserGetter (name) {\n return function get () {\n return loadParser(name)\n }\n}\n\n/**\n * Load a parser module.\n * @private\n */\n\nfunction loadParser (parserName) {\n var parser = parsers[parserName]\n\n if (parser !== undefined) {\n return parser\n }\n\n // this uses a switch for static require analysis\n switch (parserName) {\n case 'json':\n parser = require('./lib/types/json')\n break\n case 'raw':\n parser = require('./lib/types/raw')\n break\n case 'text':\n parser = require('./lib/types/text')\n break\n case 'urlencoded':\n parser = require('./lib/types/urlencoded')\n break\n }\n\n // store to prevent invoking require()\n return (parsers[parserName] = parser)\n}\n", "/*!\n * merge-descriptors\n * Copyright(c) 2014 Jonathan Ong\n * Copyright(c) 2015 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict'\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = merge\n\n/**\n * Module variables.\n * @private\n */\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty\n\n/**\n * Merge the property descriptors of `src` into `dest`\n *\n * @param {object} dest Object to add descriptors to\n * @param {object} src Object to clone descriptors from\n * @param {boolean} [redefine=true] Redefine `dest` properties with `src` properties\n * @returns {object} Reference to dest\n * @public\n */\n\nfunction merge(dest, src, redefine) {\n if (!dest) {\n throw new TypeError('argument dest is required')\n }\n\n if (!src) {\n throw new TypeError('argument src is required')\n }\n\n if (redefine === undefined) {\n // Default to true\n redefine = true\n }\n\n Object.getOwnPropertyNames(src).forEach(function forEachOwnPropertyName(name) {\n if (!redefine && hasOwnProperty.call(dest, name)) {\n // Skip desriptor\n return\n }\n\n // Copy descriptor\n var descriptor = Object.getOwnPropertyDescriptor(src, name)\n Object.defineProperty(dest, name, descriptor)\n })\n\n return dest\n}\n", "/**\n * Helpers.\n */\n\nvar s = 1000;\nvar m = s * 60;\nvar h = m * 60;\nvar d = h * 24;\nvar y = d * 365.25;\n\n/**\n * Parse or format the given `val`.\n *\n * Options:\n *\n * - `long` verbose formatting [false]\n *\n * @param {String|Number} val\n * @param {Object} [options]\n * @throws {Error} throw an error if val is not a non-empty string or a number\n * @return {String|Number}\n * @api public\n */\n\nmodule.exports = function(val, options) {\n options = options || {};\n var type = typeof val;\n if (type === 'string' && val.length > 0) {\n return parse(val);\n } else if (type === 'number' && isNaN(val) === false) {\n return options.long ? fmtLong(val) : fmtShort(val);\n }\n throw new Error(\n 'val is not a non-empty string or a valid number. val=' +\n JSON.stringify(val)\n );\n};\n\n/**\n * Parse the given `str` and return milliseconds.\n *\n * @param {String} str\n * @return {Number}\n * @api private\n */\n\nfunction parse(str) {\n str = String(str);\n if (str.length > 100) {\n return;\n }\n var match = /^((?:\\d+)?\\.?\\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|years?|yrs?|y)?$/i.exec(\n str\n );\n if (!match) {\n return;\n }\n var n = parseFloat(match[1]);\n var type = (match[2] || 'ms').toLowerCase();\n switch (type) {\n case 'years':\n case 'year':\n case 'yrs':\n case 'yr':\n case 'y':\n return n * y;\n case 'days':\n case 'day':\n case 'd':\n return n * d;\n case 'hours':\n case 'hour':\n case 'hrs':\n case 'hr':\n case 'h':\n return n * h;\n case 'minutes':\n case 'minute':\n case 'mins':\n case 'min':\n case 'm':\n return n * m;\n case 'seconds':\n case 'second':\n case 'secs':\n case 'sec':\n case 's':\n return n * s;\n case 'milliseconds':\n case 'millisecond':\n case 'msecs':\n case 'msec':\n case 'ms':\n return n;\n default:\n return undefined;\n }\n}\n\n/**\n * Short format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtShort(ms) {\n if (ms >= d) {\n return Math.round(ms / d) + 'd';\n }\n if (ms >= h) {\n return Math.round(ms / h) + 'h';\n }\n if (ms >= m) {\n return Math.round(ms / m) + 'm';\n }\n if (ms >= s) {\n return Math.round(ms / s) + 's';\n }\n return ms + 'ms';\n}\n\n/**\n * Long format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtLong(ms) {\n return plural(ms, d, 'day') ||\n plural(ms, h, 'hour') ||\n plural(ms, m, 'minute') ||\n plural(ms, s, 'second') ||\n ms + ' ms';\n}\n\n/**\n * Pluralization helper.\n */\n\nfunction plural(ms, n, name) {\n if (ms < n) {\n return;\n }\n if (ms < n * 1.5) {\n return Math.floor(ms / n) + ' ' + name;\n }\n return Math.ceil(ms / n) + ' ' + name + 's';\n}\n", "\n/**\n * This is the common logic for both the Node.js and web browser\n * implementations of `debug()`.\n *\n * Expose `debug()` as the module.\n */\n\nexports = module.exports = createDebug.debug = createDebug['default'] = createDebug;\nexports.coerce = coerce;\nexports.disable = disable;\nexports.enable = enable;\nexports.enabled = enabled;\nexports.humanize = require('ms');\n\n/**\n * The currently active debug mode names, and names to skip.\n */\n\nexports.names = [];\nexports.skips = [];\n\n/**\n * Map of special \"%n\" handling functions, for the debug \"format\" argument.\n *\n * Valid key names are a single, lower or upper-case letter, i.e. \"n\" and \"N\".\n */\n\nexports.formatters = {};\n\n/**\n * Previous log timestamp.\n */\n\nvar prevTime;\n\n/**\n * Select a color.\n * @param {String} namespace\n * @return {Number}\n * @api private\n */\n\nfunction selectColor(namespace) {\n var hash = 0, i;\n\n for (i in namespace) {\n hash = ((hash << 5) - hash) + namespace.charCodeAt(i);\n hash |= 0; // Convert to 32bit integer\n }\n\n return exports.colors[Math.abs(hash) % exports.colors.length];\n}\n\n/**\n * Create a debugger with the given `namespace`.\n *\n * @param {String} namespace\n * @return {Function}\n * @api public\n */\n\nfunction createDebug(namespace) {\n\n function debug() {\n // disabled?\n if (!debug.enabled) return;\n\n var self = debug;\n\n // set `diff` timestamp\n var curr = +new Date();\n var ms = curr - (prevTime || curr);\n self.diff = ms;\n self.prev = prevTime;\n self.curr = curr;\n prevTime = curr;\n\n // turn the `arguments` into a proper Array\n var args = new Array(arguments.length);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i];\n }\n\n args[0] = exports.coerce(args[0]);\n\n if ('string' !== typeof args[0]) {\n // anything else let's inspect with %O\n args.unshift('%O');\n }\n\n // apply any `formatters` transformations\n var index = 0;\n args[0] = args[0].replace(/%([a-zA-Z%])/g, function(match, format) {\n // if we encounter an escaped % then don't increase the array index\n if (match === '%%') return match;\n index++;\n var formatter = exports.formatters[format];\n if ('function' === typeof formatter) {\n var val = args[index];\n match = formatter.call(self, val);\n\n // now we need to remove `args[index]` since it's inlined in the `format`\n args.splice(index, 1);\n index--;\n }\n return match;\n });\n\n // apply env-specific formatting (colors, etc.)\n exports.formatArgs.call(self, args);\n\n var logFn = debug.log || exports.log || console.log.bind(console);\n logFn.apply(self, args);\n }\n\n debug.namespace = namespace;\n debug.enabled = exports.enabled(namespace);\n debug.useColors = exports.useColors();\n debug.color = selectColor(namespace);\n\n // env-specific initialization logic for debug instances\n if ('function' === typeof exports.init) {\n exports.init(debug);\n }\n\n return debug;\n}\n\n/**\n * Enables a debug mode by namespaces. This can include modes\n * separated by a colon and wildcards.\n *\n * @param {String} namespaces\n * @api public\n */\n\nfunction enable(namespaces) {\n exports.save(namespaces);\n\n exports.names = [];\n exports.skips = [];\n\n var split = (typeof namespaces === 'string' ? namespaces : '').split(/[\\s,]+/);\n var len = split.length;\n\n for (var i = 0; i < len; i++) {\n if (!split[i]) continue; // ignore empty strings\n namespaces = split[i].replace(/\\*/g, '.*?');\n if (namespaces[0] === '-') {\n exports.skips.push(new RegExp('^' + namespaces.substr(1) + '$'));\n } else {\n exports.names.push(new RegExp('^' + namespaces + '$'));\n }\n }\n}\n\n/**\n * Disable debug output.\n *\n * @api public\n */\n\nfunction disable() {\n exports.enable('');\n}\n\n/**\n * Returns true if the given mode name is enabled, false otherwise.\n *\n * @param {String} name\n * @return {Boolean}\n * @api public\n */\n\nfunction enabled(name) {\n var i, len;\n for (i = 0, len = exports.skips.length; i < len; i++) {\n if (exports.skips[i].test(name)) {\n return false;\n }\n }\n for (i = 0, len = exports.names.length; i < len; i++) {\n if (exports.names[i].test(name)) {\n return true;\n }\n }\n return false;\n}\n\n/**\n * Coerce `val`.\n *\n * @param {Mixed} val\n * @return {Mixed}\n * @api private\n */\n\nfunction coerce(val) {\n if (val instanceof Error) return val.stack || val.message;\n return val;\n}\n", "/**\n * This is the web browser implementation of `debug()`.\n *\n * Expose `debug()` as the module.\n */\n\nexports = module.exports = require('./debug');\nexports.log = log;\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.storage = 'undefined' != typeof chrome\n && 'undefined' != typeof chrome.storage\n ? chrome.storage.local\n : localstorage();\n\n/**\n * Colors.\n */\n\nexports.colors = [\n 'lightseagreen',\n 'forestgreen',\n 'goldenrod',\n 'dodgerblue',\n 'darkorchid',\n 'crimson'\n];\n\n/**\n * Currently only WebKit-based Web Inspectors, Firefox >= v31,\n * and the Firebug extension (any Firefox version) are known\n * to support \"%c\" CSS customizations.\n *\n * TODO: add a `localStorage` variable to explicitly enable/disable colors\n */\n\nfunction useColors() {\n // NB: In an Electron preload script, document will be defined but not fully\n // initialized. Since we know we're in Chrome, we'll just detect this case\n // explicitly\n if (typeof window !== 'undefined' && window.process && window.process.type === 'renderer') {\n return true;\n }\n\n // is webkit? http://stackoverflow.com/a/16459606/376773\n // document is undefined in react-native: https://github.com/facebook/react-native/pull/1632\n return (typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) ||\n // is firebug? http://stackoverflow.com/a/398120/376773\n (typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) ||\n // is firefox >= v31?\n // https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages\n (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\\/(\\d+)/) && parseInt(RegExp.$1, 10) >= 31) ||\n // double check webkit in userAgent just in case we are in a worker\n (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\\/(\\d+)/));\n}\n\n/**\n * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default.\n */\n\nexports.formatters.j = function(v) {\n try {\n return JSON.stringify(v);\n } catch (err) {\n return '[UnexpectedJSONParseError]: ' + err.message;\n }\n};\n\n\n/**\n * Colorize log arguments if enabled.\n *\n * @api public\n */\n\nfunction formatArgs(args) {\n var useColors = this.useColors;\n\n args[0] = (useColors ? '%c' : '')\n + this.namespace\n + (useColors ? ' %c' : ' ')\n + args[0]\n + (useColors ? '%c ' : ' ')\n + '+' + exports.humanize(this.diff);\n\n if (!useColors) return;\n\n var c = 'color: ' + this.color;\n args.splice(1, 0, c, 'color: inherit')\n\n // the final \"%c\" is somewhat tricky, because there could be other\n // arguments passed either before or after the %c, so we need to\n // figure out the correct index to insert the CSS into\n var index = 0;\n var lastC = 0;\n args[0].replace(/%[a-zA-Z%]/g, function(match) {\n if ('%%' === match) return;\n index++;\n if ('%c' === match) {\n // we only are interested in the *last* %c\n // (the user may have provided their own)\n lastC = index;\n }\n });\n\n args.splice(lastC, 0, c);\n}\n\n/**\n * Invokes `console.log()` when available.\n * No-op when `console.log` is not a \"function\".\n *\n * @api public\n */\n\nfunction log() {\n // this hackery is required for IE8/9, where\n // the `console.log` function doesn't have 'apply'\n return 'object' === typeof console\n && console.log\n && Function.prototype.apply.call(console.log, console, arguments);\n}\n\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\n\nfunction save(namespaces) {\n try {\n if (null == namespaces) {\n exports.storage.removeItem('debug');\n } else {\n exports.storage.debug = namespaces;\n }\n } catch(e) {}\n}\n\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\n\nfunction load() {\n var r;\n try {\n r = exports.storage.debug;\n } catch(e) {}\n\n // If debug isn't set in LS, and we're in Electron, try to load $DEBUG\n if (!r && typeof process !== 'undefined' && 'env' in process) {\n r = process.env.DEBUG;\n }\n\n return r;\n}\n\n/**\n * Enable namespaces listed in `localStorage.debug` initially.\n */\n\nexports.enable(load());\n\n/**\n * Localstorage attempts to return the localstorage.\n *\n * This is necessary because safari throws\n * when a user disables cookies/localstorage\n * and you attempt to access it.\n *\n * @return {LocalStorage}\n * @api private\n */\n\nfunction localstorage() {\n try {\n return window.localStorage;\n } catch (e) {}\n}\n", "/**\n * Module dependencies.\n */\n\nvar tty = require('tty');\nvar util = require('util');\n\n/**\n * This is the Node.js implementation of `debug()`.\n *\n * Expose `debug()` as the module.\n */\n\nexports = module.exports = require('./debug');\nexports.init = init;\nexports.log = log;\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\n\n/**\n * Colors.\n */\n\nexports.colors = [6, 2, 3, 4, 5, 1];\n\n/**\n * Build up the default `inspectOpts` object from the environment variables.\n *\n * $ DEBUG_COLORS=no DEBUG_DEPTH=10 DEBUG_SHOW_HIDDEN=enabled node script.js\n */\n\nexports.inspectOpts = Object.keys(process.env).filter(function (key) {\n return /^debug_/i.test(key);\n}).reduce(function (obj, key) {\n // camel-case\n var prop = key\n .substring(6)\n .toLowerCase()\n .replace(/_([a-z])/g, function (_, k) { return k.toUpperCase() });\n\n // coerce string value into JS value\n var val = process.env[key];\n if (/^(yes|on|true|enabled)$/i.test(val)) val = true;\n else if (/^(no|off|false|disabled)$/i.test(val)) val = false;\n else if (val === 'null') val = null;\n else val = Number(val);\n\n obj[prop] = val;\n return obj;\n}, {});\n\n/**\n * The file descriptor to write the `debug()` calls to.\n * Set the `DEBUG_FD` env variable to override with another value. i.e.:\n *\n * $ DEBUG_FD=3 node script.js 3>debug.log\n */\n\nvar fd = parseInt(process.env.DEBUG_FD, 10) || 2;\n\nif (1 !== fd && 2 !== fd) {\n util.deprecate(function(){}, 'except for stderr(2) and stdout(1), any other usage of DEBUG_FD is deprecated. Override debug.log if you want to use a different log function (https://git.io/debug_fd)')()\n}\n\nvar stream = 1 === fd ? process.stdout :\n 2 === fd ? process.stderr :\n createWritableStdioStream(fd);\n\n/**\n * Is stdout a TTY? Colored output is enabled when `true`.\n */\n\nfunction useColors() {\n return 'colors' in exports.inspectOpts\n ? Boolean(exports.inspectOpts.colors)\n : tty.isatty(fd);\n}\n\n/**\n * Map %o to `util.inspect()`, all on a single line.\n */\n\nexports.formatters.o = function(v) {\n this.inspectOpts.colors = this.useColors;\n return util.inspect(v, this.inspectOpts)\n .split('\\n').map(function(str) {\n return str.trim()\n }).join(' ');\n};\n\n/**\n * Map %o to `util.inspect()`, allowing multiple lines if needed.\n */\n\nexports.formatters.O = function(v) {\n this.inspectOpts.colors = this.useColors;\n return util.inspect(v, this.inspectOpts);\n};\n\n/**\n * Adds ANSI color escape codes if enabled.\n *\n * @api public\n */\n\nfunction formatArgs(args) {\n var name = this.namespace;\n var useColors = this.useColors;\n\n if (useColors) {\n var c = this.color;\n var prefix = ' \\u001b[3' + c + ';1m' + name + ' ' + '\\u001b[0m';\n\n args[0] = prefix + args[0].split('\\n').join('\\n' + prefix);\n args.push('\\u001b[3' + c + 'm+' + exports.humanize(this.diff) + '\\u001b[0m');\n } else {\n args[0] = new Date().toUTCString()\n + ' ' + name + ' ' + args[0];\n }\n}\n\n/**\n * Invokes `util.format()` with the specified arguments and writes to `stream`.\n */\n\nfunction log() {\n return stream.write(util.format.apply(util, arguments) + '\\n');\n}\n\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\n\nfunction save(namespaces) {\n if (null == namespaces) {\n // If you set a process.env field to null or undefined, it gets cast to the\n // string 'null' or 'undefined'. Just delete instead.\n delete process.env.DEBUG;\n } else {\n process.env.DEBUG = namespaces;\n }\n}\n\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\n\nfunction load() {\n return process.env.DEBUG;\n}\n\n/**\n * Copied from `node/src/node.js`.\n *\n * XXX: It's lame that node doesn't expose this API out-of-the-box. It also\n * relies on the undocumented `tty_wrap.guessHandleType()` which is also lame.\n */\n\nfunction createWritableStdioStream (fd) {\n var stream;\n var tty_wrap = process.binding('tty_wrap');\n\n // Note stream._type is used for test-module-load-list.js\n\n switch (tty_wrap.guessHandleType(fd)) {\n case 'TTY':\n stream = new tty.WriteStream(fd);\n stream._type = 'tty';\n\n // Hack to have stream not keep the event loop alive.\n // See https://github.com/joyent/node/issues/1726\n if (stream._handle && stream._handle.unref) {\n stream._handle.unref();\n }\n break;\n\n case 'FILE':\n var fs = require('fs');\n stream = new fs.SyncWriteStream(fd, { autoClose: false });\n stream._type = 'fs';\n break;\n\n case 'PIPE':\n case 'TCP':\n var net = require('net');\n stream = new net.Socket({\n fd: fd,\n readable: false,\n writable: true\n });\n\n // FIXME Should probably have an option in net.Socket to create a\n // stream from an existing fd which is writable only. But for now\n // we'll just add this hack and set the `readable` member to false.\n // Test: ./node test/fixtures/echo.js < /etc/passwd\n stream.readable = false;\n stream.read = null;\n stream._type = 'pipe';\n\n // FIXME Hack to have stream not keep the event loop alive.\n // See https://github.com/joyent/node/issues/1726\n if (stream._handle && stream._handle.unref) {\n stream._handle.unref();\n }\n break;\n\n default:\n // Probably an error on in uv_guess_handle()\n throw new Error('Implement me. Unknown stream file type!');\n }\n\n // For supporting legacy API we put the FD here.\n stream.fd = fd;\n\n stream._isStdio = true;\n\n return stream;\n}\n\n/**\n * Init logic for `debug` instances.\n *\n * Create a new `inspectOpts` object in case `useColors` is set\n * differently for a particular `debug` instance.\n */\n\nfunction init (debug) {\n debug.inspectOpts = {};\n\n var keys = Object.keys(exports.inspectOpts);\n for (var i = 0; i < keys.length; i++) {\n debug.inspectOpts[keys[i]] = exports.inspectOpts[keys[i]];\n }\n}\n\n/**\n * Enable namespaces listed in `process.env.DEBUG` initially.\n */\n\nexports.enable(load());\n", "/**\n * Detect Electron renderer process, which is node, but we should\n * treat as a browser.\n */\n\nif (typeof process !== 'undefined' && process.type === 'renderer') {\n module.exports = require('./browser.js');\n} else {\n module.exports = require('./node.js');\n}\n", "/*!\n * encodeurl\n * Copyright(c) 2016 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict'\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = encodeUrl\n\n/**\n * RegExp to match non-URL code points, *after* encoding (i.e. not including \"%\")\n * and including invalid escape sequences.\n * @private\n */\n\nvar ENCODE_CHARS_REGEXP = /(?:[^\\x21\\x25\\x26-\\x3B\\x3D\\x3F-\\x5B\\x5D\\x5F\\x61-\\x7A\\x7E]|%(?:[^0-9A-Fa-f]|[0-9A-Fa-f][^0-9A-Fa-f]|$))+/g\n\n/**\n * RegExp to match unmatched surrogate pair.\n * @private\n */\n\nvar UNMATCHED_SURROGATE_PAIR_REGEXP = /(^|[^\\uD800-\\uDBFF])[\\uDC00-\\uDFFF]|[\\uD800-\\uDBFF]([^\\uDC00-\\uDFFF]|$)/g\n\n/**\n * String to replace unmatched surrogate pair with.\n * @private\n */\n\nvar UNMATCHED_SURROGATE_PAIR_REPLACE = '$1\\uFFFD$2'\n\n/**\n * Encode a URL to a percent-encoded form, excluding already-encoded sequences.\n *\n * This function will take an already-encoded URL and encode all the non-URL\n * code points. This function will not encode the \"%\" character unless it is\n * not part of a valid sequence (`%20` will be left as-is, but `%foo` will\n * be encoded as `%25foo`).\n *\n * This encode is meant to be \"safe\" and does not throw errors. It will try as\n * hard as it can to properly encode the given URL, including replacing any raw,\n * unpaired surrogate pairs with the Unicode replacement character prior to\n * encoding.\n *\n * @param {string} url\n * @return {string}\n * @public\n */\n\nfunction encodeUrl (url) {\n return String(url)\n .replace(UNMATCHED_SURROGATE_PAIR_REGEXP, UNMATCHED_SURROGATE_PAIR_REPLACE)\n .replace(ENCODE_CHARS_REGEXP, encodeURI)\n}\n", "/*!\n * escape-html\n * Copyright(c) 2012-2013 TJ Holowaychuk\n * Copyright(c) 2015 Andreas Lubbe\n * Copyright(c) 2015 Tiancheng \"Timothy\" Gu\n * MIT Licensed\n */\n\n'use strict';\n\n/**\n * Module variables.\n * @private\n */\n\nvar matchHtmlRegExp = /[\"'&<>]/;\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = escapeHtml;\n\n/**\n * Escape special characters in the given string of html.\n *\n * @param {string} string The string to escape for inserting into HTML\n * @return {string}\n * @public\n */\n\nfunction escapeHtml(string) {\n var str = '' + string;\n var match = matchHtmlRegExp.exec(str);\n\n if (!match) {\n return str;\n }\n\n var escape;\n var html = '';\n var index = 0;\n var lastIndex = 0;\n\n for (index = match.index; index < str.length; index++) {\n switch (str.charCodeAt(index)) {\n case 34: // \"\n escape = '"';\n break;\n case 38: // &\n escape = '&';\n break;\n case 39: // '\n escape = ''';\n break;\n case 60: // <\n escape = '<';\n break;\n case 62: // >\n escape = '>';\n break;\n default:\n continue;\n }\n\n if (lastIndex !== index) {\n html += str.substring(lastIndex, index);\n }\n\n lastIndex = index + 1;\n html += escape;\n }\n\n return lastIndex !== index\n ? html + str.substring(lastIndex, index)\n : html;\n}\n", "/*!\n * parseurl\n * Copyright(c) 2014 Jonathan Ong\n * Copyright(c) 2014-2017 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict'\n\n/**\n * Module dependencies.\n * @private\n */\n\nvar url = require('url')\nvar parse = url.parse\nvar Url = url.Url\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = parseurl\nmodule.exports.original = originalurl\n\n/**\n * Parse the `req` url with memoization.\n *\n * @param {ServerRequest} req\n * @return {Object}\n * @public\n */\n\nfunction parseurl (req) {\n var url = req.url\n\n if (url === undefined) {\n // URL is undefined\n return undefined\n }\n\n var parsed = req._parsedUrl\n\n if (fresh(url, parsed)) {\n // Return cached URL parse\n return parsed\n }\n\n // Parse the URL\n parsed = fastparse(url)\n parsed._raw = url\n\n return (req._parsedUrl = parsed)\n};\n\n/**\n * Parse the `req` original url with fallback and memoization.\n *\n * @param {ServerRequest} req\n * @return {Object}\n * @public\n */\n\nfunction originalurl (req) {\n var url = req.originalUrl\n\n if (typeof url !== 'string') {\n // Fallback\n return parseurl(req)\n }\n\n var parsed = req._parsedOriginalUrl\n\n if (fresh(url, parsed)) {\n // Return cached URL parse\n return parsed\n }\n\n // Parse the URL\n parsed = fastparse(url)\n parsed._raw = url\n\n return (req._parsedOriginalUrl = parsed)\n};\n\n/**\n * Parse the `str` url with fast-path short-cut.\n *\n * @param {string} str\n * @return {Object}\n * @private\n */\n\nfunction fastparse (str) {\n if (typeof str !== 'string' || str.charCodeAt(0) !== 0x2f /* / */) {\n return parse(str)\n }\n\n var pathname = str\n var query = null\n var search = null\n\n // This takes the regexp from https://github.com/joyent/node/pull/7878\n // Which is /^(\\/[^?#\\s]*)(\\?[^#\\s]*)?$/\n // And unrolls it into a for loop\n for (var i = 1; i < str.length; i++) {\n switch (str.charCodeAt(i)) {\n case 0x3f: /* ? */\n if (search === null) {\n pathname = str.substring(0, i)\n query = str.substring(i + 1)\n search = str.substring(i)\n }\n break\n case 0x09: /* \\t */\n case 0x0a: /* \\n */\n case 0x0c: /* \\f */\n case 0x0d: /* \\r */\n case 0x20: /* */\n case 0x23: /* # */\n case 0xa0:\n case 0xfeff:\n return parse(str)\n }\n }\n\n var url = Url !== undefined\n ? new Url()\n : {}\n\n url.path = str\n url.href = str\n url.pathname = pathname\n\n if (search !== null) {\n url.query = query\n url.search = search\n }\n\n return url\n}\n\n/**\n * Determine if parsed is still fresh for url.\n *\n * @param {string} url\n * @param {object} parsedUrl\n * @return {boolean}\n * @private\n */\n\nfunction fresh (url, parsedUrl) {\n return typeof parsedUrl === 'object' &&\n parsedUrl !== null &&\n (Url === undefined || parsedUrl instanceof Url) &&\n parsedUrl._raw === url\n}\n", "/*!\n * finalhandler\n * Copyright(c) 2014-2022 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict'\n\n/**\n * Module dependencies.\n * @private\n */\n\nvar debug = require('debug')('finalhandler')\nvar encodeUrl = require('encodeurl')\nvar escapeHtml = require('escape-html')\nvar onFinished = require('on-finished')\nvar parseUrl = require('parseurl')\nvar statuses = require('statuses')\nvar unpipe = require('unpipe')\n\n/**\n * Module variables.\n * @private\n */\n\nvar DOUBLE_SPACE_REGEXP = /\\x20{2}/g\nvar NEWLINE_REGEXP = /\\n/g\n\n/* istanbul ignore next */\nvar defer = typeof setImmediate === 'function'\n ? setImmediate\n : function (fn) { process.nextTick(fn.bind.apply(fn, arguments)) }\nvar isFinished = onFinished.isFinished\n\n/**\n * Create a minimal HTML document.\n *\n * @param {string} message\n * @private\n */\n\nfunction createHtmlDocument (message) {\n var body = escapeHtml(message)\n .replace(NEWLINE_REGEXP, '
')\n .replace(DOUBLE_SPACE_REGEXP, '  ')\n\n return '\\n' +\n '\\n' +\n '\\n' +\n '\\n' +\n 'Error\\n' +\n '\\n' +\n '\\n' +\n '
' + body + '
\\n' +\n '\\n' +\n '\\n'\n}\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = finalhandler\n\n/**\n * Create a function to handle the final response.\n *\n * @param {Request} req\n * @param {Response} res\n * @param {Object} [options]\n * @return {Function}\n * @public\n */\n\nfunction finalhandler (req, res, options) {\n var opts = options || {}\n\n // get environment\n var env = opts.env || process.env.NODE_ENV || 'development'\n\n // get error callback\n var onerror = opts.onerror\n\n return function (err) {\n var headers\n var msg\n var status\n\n // ignore 404 on in-flight response\n if (!err && headersSent(res)) {\n debug('cannot 404 after headers sent')\n return\n }\n\n // unhandled error\n if (err) {\n // respect status code from error\n status = getErrorStatusCode(err)\n\n if (status === undefined) {\n // fallback to status code on response\n status = getResponseStatusCode(res)\n } else {\n // respect headers from error\n headers = getErrorHeaders(err)\n }\n\n // get error message\n msg = getErrorMessage(err, status, env)\n } else {\n // not found\n status = 404\n msg = 'Cannot ' + req.method + ' ' + encodeUrl(getResourceName(req))\n }\n\n debug('default %s', status)\n\n // schedule onerror callback\n if (err && onerror) {\n defer(onerror, err, req, res)\n }\n\n // cannot actually respond\n if (headersSent(res)) {\n debug('cannot %d after headers sent', status)\n req.socket.destroy()\n return\n }\n\n // send response\n send(req, res, status, headers, msg)\n }\n}\n\n/**\n * Get headers from Error object.\n *\n * @param {Error} err\n * @return {object}\n * @private\n */\n\nfunction getErrorHeaders (err) {\n if (!err.headers || typeof err.headers !== 'object') {\n return undefined\n }\n\n var headers = Object.create(null)\n var keys = Object.keys(err.headers)\n\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i]\n headers[key] = err.headers[key]\n }\n\n return headers\n}\n\n/**\n * Get message from Error object, fallback to status message.\n *\n * @param {Error} err\n * @param {number} status\n * @param {string} env\n * @return {string}\n * @private\n */\n\nfunction getErrorMessage (err, status, env) {\n var msg\n\n if (env !== 'production') {\n // use err.stack, which typically includes err.message\n msg = err.stack\n\n // fallback to err.toString() when possible\n if (!msg && typeof err.toString === 'function') {\n msg = err.toString()\n }\n }\n\n return msg || statuses.message[status]\n}\n\n/**\n * Get status code from Error object.\n *\n * @param {Error} err\n * @return {number}\n * @private\n */\n\nfunction getErrorStatusCode (err) {\n // check err.status\n if (typeof err.status === 'number' && err.status >= 400 && err.status < 600) {\n return err.status\n }\n\n // check err.statusCode\n if (typeof err.statusCode === 'number' && err.statusCode >= 400 && err.statusCode < 600) {\n return err.statusCode\n }\n\n return undefined\n}\n\n/**\n * Get resource name for the request.\n *\n * This is typically just the original pathname of the request\n * but will fallback to \"resource\" is that cannot be determined.\n *\n * @param {IncomingMessage} req\n * @return {string}\n * @private\n */\n\nfunction getResourceName (req) {\n try {\n return parseUrl.original(req).pathname\n } catch (e) {\n return 'resource'\n }\n}\n\n/**\n * Get status code from response.\n *\n * @param {OutgoingMessage} res\n * @return {number}\n * @private\n */\n\nfunction getResponseStatusCode (res) {\n var status = res.statusCode\n\n // default status code to 500 if outside valid range\n if (typeof status !== 'number' || status < 400 || status > 599) {\n status = 500\n }\n\n return status\n}\n\n/**\n * Determine if the response headers have been sent.\n *\n * @param {object} res\n * @returns {boolean}\n * @private\n */\n\nfunction headersSent (res) {\n return typeof res.headersSent !== 'boolean'\n ? Boolean(res._header)\n : res.headersSent\n}\n\n/**\n * Send response.\n *\n * @param {IncomingMessage} req\n * @param {OutgoingMessage} res\n * @param {number} status\n * @param {object} headers\n * @param {string} message\n * @private\n */\n\nfunction send (req, res, status, headers, message) {\n function write () {\n // response body\n var body = createHtmlDocument(message)\n\n // response status\n res.statusCode = status\n res.statusMessage = statuses.message[status]\n\n // remove any content headers\n res.removeHeader('Content-Encoding')\n res.removeHeader('Content-Language')\n res.removeHeader('Content-Range')\n\n // response headers\n setHeaders(res, headers)\n\n // security headers\n res.setHeader('Content-Security-Policy', \"default-src 'none'\")\n res.setHeader('X-Content-Type-Options', 'nosniff')\n\n // standard headers\n res.setHeader('Content-Type', 'text/html; charset=utf-8')\n res.setHeader('Content-Length', Buffer.byteLength(body, 'utf8'))\n\n if (req.method === 'HEAD') {\n res.end()\n return\n }\n\n res.end(body, 'utf8')\n }\n\n if (isFinished(req)) {\n write()\n return\n }\n\n // unpipe everything from the request\n unpipe(req)\n\n // flush the request\n onFinished(req, write)\n req.resume()\n}\n\n/**\n * Set response headers from an object.\n *\n * @param {OutgoingMessage} res\n * @param {object} headers\n * @private\n */\n\nfunction setHeaders (res, headers) {\n if (!headers) {\n return\n }\n\n var keys = Object.keys(headers)\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i]\n res.setHeader(key, headers[key])\n }\n}\n", "/**\n * Helpers.\n */\n\nvar s = 1000;\nvar m = s * 60;\nvar h = m * 60;\nvar d = h * 24;\nvar y = d * 365.25;\n\n/**\n * Parse or format the given `val`.\n *\n * Options:\n *\n * - `long` verbose formatting [false]\n *\n * @param {String|Number} val\n * @param {Object} [options]\n * @throws {Error} throw an error if val is not a non-empty string or a number\n * @return {String|Number}\n * @api public\n */\n\nmodule.exports = function(val, options) {\n options = options || {};\n var type = typeof val;\n if (type === 'string' && val.length > 0) {\n return parse(val);\n } else if (type === 'number' && isNaN(val) === false) {\n return options.long ? fmtLong(val) : fmtShort(val);\n }\n throw new Error(\n 'val is not a non-empty string or a valid number. val=' +\n JSON.stringify(val)\n );\n};\n\n/**\n * Parse the given `str` and return milliseconds.\n *\n * @param {String} str\n * @return {Number}\n * @api private\n */\n\nfunction parse(str) {\n str = String(str);\n if (str.length > 100) {\n return;\n }\n var match = /^((?:\\d+)?\\.?\\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|years?|yrs?|y)?$/i.exec(\n str\n );\n if (!match) {\n return;\n }\n var n = parseFloat(match[1]);\n var type = (match[2] || 'ms').toLowerCase();\n switch (type) {\n case 'years':\n case 'year':\n case 'yrs':\n case 'yr':\n case 'y':\n return n * y;\n case 'days':\n case 'day':\n case 'd':\n return n * d;\n case 'hours':\n case 'hour':\n case 'hrs':\n case 'hr':\n case 'h':\n return n * h;\n case 'minutes':\n case 'minute':\n case 'mins':\n case 'min':\n case 'm':\n return n * m;\n case 'seconds':\n case 'second':\n case 'secs':\n case 'sec':\n case 's':\n return n * s;\n case 'milliseconds':\n case 'millisecond':\n case 'msecs':\n case 'msec':\n case 'ms':\n return n;\n default:\n return undefined;\n }\n}\n\n/**\n * Short format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtShort(ms) {\n if (ms >= d) {\n return Math.round(ms / d) + 'd';\n }\n if (ms >= h) {\n return Math.round(ms / h) + 'h';\n }\n if (ms >= m) {\n return Math.round(ms / m) + 'm';\n }\n if (ms >= s) {\n return Math.round(ms / s) + 's';\n }\n return ms + 'ms';\n}\n\n/**\n * Long format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtLong(ms) {\n return plural(ms, d, 'day') ||\n plural(ms, h, 'hour') ||\n plural(ms, m, 'minute') ||\n plural(ms, s, 'second') ||\n ms + ' ms';\n}\n\n/**\n * Pluralization helper.\n */\n\nfunction plural(ms, n, name) {\n if (ms < n) {\n return;\n }\n if (ms < n * 1.5) {\n return Math.floor(ms / n) + ' ' + name;\n }\n return Math.ceil(ms / n) + ' ' + name + 's';\n}\n", "\n/**\n * This is the common logic for both the Node.js and web browser\n * implementations of `debug()`.\n *\n * Expose `debug()` as the module.\n */\n\nexports = module.exports = createDebug.debug = createDebug['default'] = createDebug;\nexports.coerce = coerce;\nexports.disable = disable;\nexports.enable = enable;\nexports.enabled = enabled;\nexports.humanize = require('ms');\n\n/**\n * The currently active debug mode names, and names to skip.\n */\n\nexports.names = [];\nexports.skips = [];\n\n/**\n * Map of special \"%n\" handling functions, for the debug \"format\" argument.\n *\n * Valid key names are a single, lower or upper-case letter, i.e. \"n\" and \"N\".\n */\n\nexports.formatters = {};\n\n/**\n * Previous log timestamp.\n */\n\nvar prevTime;\n\n/**\n * Select a color.\n * @param {String} namespace\n * @return {Number}\n * @api private\n */\n\nfunction selectColor(namespace) {\n var hash = 0, i;\n\n for (i in namespace) {\n hash = ((hash << 5) - hash) + namespace.charCodeAt(i);\n hash |= 0; // Convert to 32bit integer\n }\n\n return exports.colors[Math.abs(hash) % exports.colors.length];\n}\n\n/**\n * Create a debugger with the given `namespace`.\n *\n * @param {String} namespace\n * @return {Function}\n * @api public\n */\n\nfunction createDebug(namespace) {\n\n function debug() {\n // disabled?\n if (!debug.enabled) return;\n\n var self = debug;\n\n // set `diff` timestamp\n var curr = +new Date();\n var ms = curr - (prevTime || curr);\n self.diff = ms;\n self.prev = prevTime;\n self.curr = curr;\n prevTime = curr;\n\n // turn the `arguments` into a proper Array\n var args = new Array(arguments.length);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i];\n }\n\n args[0] = exports.coerce(args[0]);\n\n if ('string' !== typeof args[0]) {\n // anything else let's inspect with %O\n args.unshift('%O');\n }\n\n // apply any `formatters` transformations\n var index = 0;\n args[0] = args[0].replace(/%([a-zA-Z%])/g, function(match, format) {\n // if we encounter an escaped % then don't increase the array index\n if (match === '%%') return match;\n index++;\n var formatter = exports.formatters[format];\n if ('function' === typeof formatter) {\n var val = args[index];\n match = formatter.call(self, val);\n\n // now we need to remove `args[index]` since it's inlined in the `format`\n args.splice(index, 1);\n index--;\n }\n return match;\n });\n\n // apply env-specific formatting (colors, etc.)\n exports.formatArgs.call(self, args);\n\n var logFn = debug.log || exports.log || console.log.bind(console);\n logFn.apply(self, args);\n }\n\n debug.namespace = namespace;\n debug.enabled = exports.enabled(namespace);\n debug.useColors = exports.useColors();\n debug.color = selectColor(namespace);\n\n // env-specific initialization logic for debug instances\n if ('function' === typeof exports.init) {\n exports.init(debug);\n }\n\n return debug;\n}\n\n/**\n * Enables a debug mode by namespaces. This can include modes\n * separated by a colon and wildcards.\n *\n * @param {String} namespaces\n * @api public\n */\n\nfunction enable(namespaces) {\n exports.save(namespaces);\n\n exports.names = [];\n exports.skips = [];\n\n var split = (typeof namespaces === 'string' ? namespaces : '').split(/[\\s,]+/);\n var len = split.length;\n\n for (var i = 0; i < len; i++) {\n if (!split[i]) continue; // ignore empty strings\n namespaces = split[i].replace(/\\*/g, '.*?');\n if (namespaces[0] === '-') {\n exports.skips.push(new RegExp('^' + namespaces.substr(1) + '$'));\n } else {\n exports.names.push(new RegExp('^' + namespaces + '$'));\n }\n }\n}\n\n/**\n * Disable debug output.\n *\n * @api public\n */\n\nfunction disable() {\n exports.enable('');\n}\n\n/**\n * Returns true if the given mode name is enabled, false otherwise.\n *\n * @param {String} name\n * @return {Boolean}\n * @api public\n */\n\nfunction enabled(name) {\n var i, len;\n for (i = 0, len = exports.skips.length; i < len; i++) {\n if (exports.skips[i].test(name)) {\n return false;\n }\n }\n for (i = 0, len = exports.names.length; i < len; i++) {\n if (exports.names[i].test(name)) {\n return true;\n }\n }\n return false;\n}\n\n/**\n * Coerce `val`.\n *\n * @param {Mixed} val\n * @return {Mixed}\n * @api private\n */\n\nfunction coerce(val) {\n if (val instanceof Error) return val.stack || val.message;\n return val;\n}\n", "/**\n * This is the web browser implementation of `debug()`.\n *\n * Expose `debug()` as the module.\n */\n\nexports = module.exports = require('./debug');\nexports.log = log;\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.storage = 'undefined' != typeof chrome\n && 'undefined' != typeof chrome.storage\n ? chrome.storage.local\n : localstorage();\n\n/**\n * Colors.\n */\n\nexports.colors = [\n 'lightseagreen',\n 'forestgreen',\n 'goldenrod',\n 'dodgerblue',\n 'darkorchid',\n 'crimson'\n];\n\n/**\n * Currently only WebKit-based Web Inspectors, Firefox >= v31,\n * and the Firebug extension (any Firefox version) are known\n * to support \"%c\" CSS customizations.\n *\n * TODO: add a `localStorage` variable to explicitly enable/disable colors\n */\n\nfunction useColors() {\n // NB: In an Electron preload script, document will be defined but not fully\n // initialized. Since we know we're in Chrome, we'll just detect this case\n // explicitly\n if (typeof window !== 'undefined' && window.process && window.process.type === 'renderer') {\n return true;\n }\n\n // is webkit? http://stackoverflow.com/a/16459606/376773\n // document is undefined in react-native: https://github.com/facebook/react-native/pull/1632\n return (typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) ||\n // is firebug? http://stackoverflow.com/a/398120/376773\n (typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) ||\n // is firefox >= v31?\n // https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages\n (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\\/(\\d+)/) && parseInt(RegExp.$1, 10) >= 31) ||\n // double check webkit in userAgent just in case we are in a worker\n (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\\/(\\d+)/));\n}\n\n/**\n * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default.\n */\n\nexports.formatters.j = function(v) {\n try {\n return JSON.stringify(v);\n } catch (err) {\n return '[UnexpectedJSONParseError]: ' + err.message;\n }\n};\n\n\n/**\n * Colorize log arguments if enabled.\n *\n * @api public\n */\n\nfunction formatArgs(args) {\n var useColors = this.useColors;\n\n args[0] = (useColors ? '%c' : '')\n + this.namespace\n + (useColors ? ' %c' : ' ')\n + args[0]\n + (useColors ? '%c ' : ' ')\n + '+' + exports.humanize(this.diff);\n\n if (!useColors) return;\n\n var c = 'color: ' + this.color;\n args.splice(1, 0, c, 'color: inherit')\n\n // the final \"%c\" is somewhat tricky, because there could be other\n // arguments passed either before or after the %c, so we need to\n // figure out the correct index to insert the CSS into\n var index = 0;\n var lastC = 0;\n args[0].replace(/%[a-zA-Z%]/g, function(match) {\n if ('%%' === match) return;\n index++;\n if ('%c' === match) {\n // we only are interested in the *last* %c\n // (the user may have provided their own)\n lastC = index;\n }\n });\n\n args.splice(lastC, 0, c);\n}\n\n/**\n * Invokes `console.log()` when available.\n * No-op when `console.log` is not a \"function\".\n *\n * @api public\n */\n\nfunction log() {\n // this hackery is required for IE8/9, where\n // the `console.log` function doesn't have 'apply'\n return 'object' === typeof console\n && console.log\n && Function.prototype.apply.call(console.log, console, arguments);\n}\n\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\n\nfunction save(namespaces) {\n try {\n if (null == namespaces) {\n exports.storage.removeItem('debug');\n } else {\n exports.storage.debug = namespaces;\n }\n } catch(e) {}\n}\n\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\n\nfunction load() {\n var r;\n try {\n r = exports.storage.debug;\n } catch(e) {}\n\n // If debug isn't set in LS, and we're in Electron, try to load $DEBUG\n if (!r && typeof process !== 'undefined' && 'env' in process) {\n r = process.env.DEBUG;\n }\n\n return r;\n}\n\n/**\n * Enable namespaces listed in `localStorage.debug` initially.\n */\n\nexports.enable(load());\n\n/**\n * Localstorage attempts to return the localstorage.\n *\n * This is necessary because safari throws\n * when a user disables cookies/localstorage\n * and you attempt to access it.\n *\n * @return {LocalStorage}\n * @api private\n */\n\nfunction localstorage() {\n try {\n return window.localStorage;\n } catch (e) {}\n}\n", "/**\n * Module dependencies.\n */\n\nvar tty = require('tty');\nvar util = require('util');\n\n/**\n * This is the Node.js implementation of `debug()`.\n *\n * Expose `debug()` as the module.\n */\n\nexports = module.exports = require('./debug');\nexports.init = init;\nexports.log = log;\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\n\n/**\n * Colors.\n */\n\nexports.colors = [6, 2, 3, 4, 5, 1];\n\n/**\n * Build up the default `inspectOpts` object from the environment variables.\n *\n * $ DEBUG_COLORS=no DEBUG_DEPTH=10 DEBUG_SHOW_HIDDEN=enabled node script.js\n */\n\nexports.inspectOpts = Object.keys(process.env).filter(function (key) {\n return /^debug_/i.test(key);\n}).reduce(function (obj, key) {\n // camel-case\n var prop = key\n .substring(6)\n .toLowerCase()\n .replace(/_([a-z])/g, function (_, k) { return k.toUpperCase() });\n\n // coerce string value into JS value\n var val = process.env[key];\n if (/^(yes|on|true|enabled)$/i.test(val)) val = true;\n else if (/^(no|off|false|disabled)$/i.test(val)) val = false;\n else if (val === 'null') val = null;\n else val = Number(val);\n\n obj[prop] = val;\n return obj;\n}, {});\n\n/**\n * The file descriptor to write the `debug()` calls to.\n * Set the `DEBUG_FD` env variable to override with another value. i.e.:\n *\n * $ DEBUG_FD=3 node script.js 3>debug.log\n */\n\nvar fd = parseInt(process.env.DEBUG_FD, 10) || 2;\n\nif (1 !== fd && 2 !== fd) {\n util.deprecate(function(){}, 'except for stderr(2) and stdout(1), any other usage of DEBUG_FD is deprecated. Override debug.log if you want to use a different log function (https://git.io/debug_fd)')()\n}\n\nvar stream = 1 === fd ? process.stdout :\n 2 === fd ? process.stderr :\n createWritableStdioStream(fd);\n\n/**\n * Is stdout a TTY? Colored output is enabled when `true`.\n */\n\nfunction useColors() {\n return 'colors' in exports.inspectOpts\n ? Boolean(exports.inspectOpts.colors)\n : tty.isatty(fd);\n}\n\n/**\n * Map %o to `util.inspect()`, all on a single line.\n */\n\nexports.formatters.o = function(v) {\n this.inspectOpts.colors = this.useColors;\n return util.inspect(v, this.inspectOpts)\n .split('\\n').map(function(str) {\n return str.trim()\n }).join(' ');\n};\n\n/**\n * Map %o to `util.inspect()`, allowing multiple lines if needed.\n */\n\nexports.formatters.O = function(v) {\n this.inspectOpts.colors = this.useColors;\n return util.inspect(v, this.inspectOpts);\n};\n\n/**\n * Adds ANSI color escape codes if enabled.\n *\n * @api public\n */\n\nfunction formatArgs(args) {\n var name = this.namespace;\n var useColors = this.useColors;\n\n if (useColors) {\n var c = this.color;\n var prefix = ' \\u001b[3' + c + ';1m' + name + ' ' + '\\u001b[0m';\n\n args[0] = prefix + args[0].split('\\n').join('\\n' + prefix);\n args.push('\\u001b[3' + c + 'm+' + exports.humanize(this.diff) + '\\u001b[0m');\n } else {\n args[0] = new Date().toUTCString()\n + ' ' + name + ' ' + args[0];\n }\n}\n\n/**\n * Invokes `util.format()` with the specified arguments and writes to `stream`.\n */\n\nfunction log() {\n return stream.write(util.format.apply(util, arguments) + '\\n');\n}\n\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\n\nfunction save(namespaces) {\n if (null == namespaces) {\n // If you set a process.env field to null or undefined, it gets cast to the\n // string 'null' or 'undefined'. Just delete instead.\n delete process.env.DEBUG;\n } else {\n process.env.DEBUG = namespaces;\n }\n}\n\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\n\nfunction load() {\n return process.env.DEBUG;\n}\n\n/**\n * Copied from `node/src/node.js`.\n *\n * XXX: It's lame that node doesn't expose this API out-of-the-box. It also\n * relies on the undocumented `tty_wrap.guessHandleType()` which is also lame.\n */\n\nfunction createWritableStdioStream (fd) {\n var stream;\n var tty_wrap = process.binding('tty_wrap');\n\n // Note stream._type is used for test-module-load-list.js\n\n switch (tty_wrap.guessHandleType(fd)) {\n case 'TTY':\n stream = new tty.WriteStream(fd);\n stream._type = 'tty';\n\n // Hack to have stream not keep the event loop alive.\n // See https://github.com/joyent/node/issues/1726\n if (stream._handle && stream._handle.unref) {\n stream._handle.unref();\n }\n break;\n\n case 'FILE':\n var fs = require('fs');\n stream = new fs.SyncWriteStream(fd, { autoClose: false });\n stream._type = 'fs';\n break;\n\n case 'PIPE':\n case 'TCP':\n var net = require('net');\n stream = new net.Socket({\n fd: fd,\n readable: false,\n writable: true\n });\n\n // FIXME Should probably have an option in net.Socket to create a\n // stream from an existing fd which is writable only. But for now\n // we'll just add this hack and set the `readable` member to false.\n // Test: ./node test/fixtures/echo.js < /etc/passwd\n stream.readable = false;\n stream.read = null;\n stream._type = 'pipe';\n\n // FIXME Hack to have stream not keep the event loop alive.\n // See https://github.com/joyent/node/issues/1726\n if (stream._handle && stream._handle.unref) {\n stream._handle.unref();\n }\n break;\n\n default:\n // Probably an error on in uv_guess_handle()\n throw new Error('Implement me. Unknown stream file type!');\n }\n\n // For supporting legacy API we put the FD here.\n stream.fd = fd;\n\n stream._isStdio = true;\n\n return stream;\n}\n\n/**\n * Init logic for `debug` instances.\n *\n * Create a new `inspectOpts` object in case `useColors` is set\n * differently for a particular `debug` instance.\n */\n\nfunction init (debug) {\n debug.inspectOpts = {};\n\n var keys = Object.keys(exports.inspectOpts);\n for (var i = 0; i < keys.length; i++) {\n debug.inspectOpts[keys[i]] = exports.inspectOpts[keys[i]];\n }\n}\n\n/**\n * Enable namespaces listed in `process.env.DEBUG` initially.\n */\n\nexports.enable(load());\n", "/**\n * Detect Electron renderer process, which is node, but we should\n * treat as a browser.\n */\n\nif (typeof process !== 'undefined' && process.type === 'renderer') {\n module.exports = require('./browser.js');\n} else {\n module.exports = require('./node.js');\n}\n", "'use strict'\n\n/**\n * Expose `arrayFlatten`.\n */\nmodule.exports = arrayFlatten\n\n/**\n * Recursive flatten function with depth.\n *\n * @param {Array} array\n * @param {Array} result\n * @param {Number} depth\n * @return {Array}\n */\nfunction flattenWithDepth (array, result, depth) {\n for (var i = 0; i < array.length; i++) {\n var value = array[i]\n\n if (depth > 0 && Array.isArray(value)) {\n flattenWithDepth(value, result, depth - 1)\n } else {\n result.push(value)\n }\n }\n\n return result\n}\n\n/**\n * Recursive flatten function. Omitting depth is slightly faster.\n *\n * @param {Array} array\n * @param {Array} result\n * @return {Array}\n */\nfunction flattenForever (array, result) {\n for (var i = 0; i < array.length; i++) {\n var value = array[i]\n\n if (Array.isArray(value)) {\n flattenForever(value, result)\n } else {\n result.push(value)\n }\n }\n\n return result\n}\n\n/**\n * Flatten an array, with the ability to define a depth.\n *\n * @param {Array} array\n * @param {Number} depth\n * @return {Array}\n */\nfunction arrayFlatten (array, depth) {\n if (depth == null) {\n return flattenForever(array, [])\n }\n\n return flattenWithDepth(array, [], depth)\n}\n", "/**\n * Expose `pathtoRegexp`.\n */\n\nmodule.exports = pathtoRegexp;\n\n/**\n * Match matching groups in a regular expression.\n */\nvar MATCHING_GROUP_REGEXP = /\\((?!\\?)/g;\n\n/**\n * Normalize the given path string,\n * returning a regular expression.\n *\n * An empty array should be passed,\n * which will contain the placeholder\n * key names. For example \"/user/:id\" will\n * then contain [\"id\"].\n *\n * @param {String|RegExp|Array} path\n * @param {Array} keys\n * @param {Object} options\n * @return {RegExp}\n * @api private\n */\n\nfunction pathtoRegexp(path, keys, options) {\n options = options || {};\n keys = keys || [];\n var strict = options.strict;\n var end = options.end !== false;\n var flags = options.sensitive ? '' : 'i';\n var extraOffset = 0;\n var keysOffset = keys.length;\n var i = 0;\n var name = 0;\n var m;\n\n if (path instanceof RegExp) {\n while (m = MATCHING_GROUP_REGEXP.exec(path.source)) {\n keys.push({\n name: name++,\n optional: false,\n offset: m.index\n });\n }\n\n return path;\n }\n\n if (Array.isArray(path)) {\n // Map array parts into regexps and return their source. We also pass\n // the same keys and options instance into every generation to get\n // consistent matching groups before we join the sources together.\n path = path.map(function (value) {\n return pathtoRegexp(value, keys, options).source;\n });\n\n return new RegExp('(?:' + path.join('|') + ')', flags);\n }\n\n path = ('^' + path + (strict ? '' : path[path.length - 1] === '/' ? '?' : '/?'))\n .replace(/\\/\\(/g, '/(?:')\n .replace(/([\\/\\.])/g, '\\\\$1')\n .replace(/(\\\\\\/)?(\\\\\\.)?:(\\w+)(\\(.*?\\))?(\\*)?(\\?)?/g, function (match, slash, format, key, capture, star, optional, offset) {\n slash = slash || '';\n format = format || '';\n capture = capture || '([^\\\\/' + format + ']+?)';\n optional = optional || '';\n\n keys.push({\n name: key,\n optional: !!optional,\n offset: offset + extraOffset\n });\n\n var result = ''\n + (optional ? '' : slash)\n + '(?:'\n + format + (optional ? slash : '') + capture\n + (star ? '((?:[\\\\/' + format + '].+?)?)' : '')\n + ')'\n + optional;\n\n extraOffset += result.length - match.length;\n\n return result;\n })\n .replace(/\\*/g, function (star, index) {\n var len = keys.length\n\n while (len-- > keysOffset && keys[len].offset > index) {\n keys[len].offset += 3; // Replacement length minus asterisk length.\n }\n\n return '(.*)';\n });\n\n // This is a workaround for handling unnamed matching groups.\n while (m = MATCHING_GROUP_REGEXP.exec(path)) {\n var escapeCount = 0;\n var index = m.index;\n\n while (path.charAt(--index) === '\\\\') {\n escapeCount++;\n }\n\n // It's possible to escape the bracket.\n if (escapeCount % 2 === 1) {\n continue;\n }\n\n if (keysOffset + i === keys.length || keys[keysOffset + i].offset > m.index) {\n keys.splice(keysOffset + i, 0, {\n name: name++, // Unnamed matching groups must be consistently linear.\n optional: false,\n offset: m.index\n });\n }\n\n i++;\n }\n\n // If the path is non-ending, match until the end or a slash.\n path += (end ? '$' : (path[path.length - 1] === '/' ? '' : '(?=\\\\/|$)'));\n\n return new RegExp(path, flags);\n};\n", "/*!\n * express\n * Copyright(c) 2009-2013 TJ Holowaychuk\n * Copyright(c) 2013 Roman Shtylman\n * Copyright(c) 2014-2015 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict';\n\n/**\n * Module dependencies.\n * @private\n */\n\nvar pathRegexp = require('path-to-regexp');\nvar debug = require('debug')('express:router:layer');\n\n/**\n * Module variables.\n * @private\n */\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = Layer;\n\nfunction Layer(path, options, fn) {\n if (!(this instanceof Layer)) {\n return new Layer(path, options, fn);\n }\n\n debug('new %o', path)\n var opts = options || {};\n\n this.handle = fn;\n this.name = fn.name || '';\n this.params = undefined;\n this.path = undefined;\n this.regexp = pathRegexp(path, this.keys = [], opts);\n\n // set fast path flags\n this.regexp.fast_star = path === '*'\n this.regexp.fast_slash = path === '/' && opts.end === false\n}\n\n/**\n * Handle the error for the layer.\n *\n * @param {Error} error\n * @param {Request} req\n * @param {Response} res\n * @param {function} next\n * @api private\n */\n\nLayer.prototype.handle_error = function handle_error(error, req, res, next) {\n var fn = this.handle;\n\n if (fn.length !== 4) {\n // not a standard error handler\n return next(error);\n }\n\n try {\n fn(error, req, res, next);\n } catch (err) {\n next(err);\n }\n};\n\n/**\n * Handle the request for the layer.\n *\n * @param {Request} req\n * @param {Response} res\n * @param {function} next\n * @api private\n */\n\nLayer.prototype.handle_request = function handle(req, res, next) {\n var fn = this.handle;\n\n if (fn.length > 3) {\n // not a standard request handler\n return next();\n }\n\n try {\n fn(req, res, next);\n } catch (err) {\n next(err);\n }\n};\n\n/**\n * Check if this route matches `path`, if so\n * populate `.params`.\n *\n * @param {String} path\n * @return {Boolean}\n * @api private\n */\n\nLayer.prototype.match = function match(path) {\n var match\n\n if (path != null) {\n // fast path non-ending match for / (any path matches)\n if (this.regexp.fast_slash) {\n this.params = {}\n this.path = ''\n return true\n }\n\n // fast path for * (everything matched in a param)\n if (this.regexp.fast_star) {\n this.params = {'0': decode_param(path)}\n this.path = path\n return true\n }\n\n // match the path\n match = this.regexp.exec(path)\n }\n\n if (!match) {\n this.params = undefined;\n this.path = undefined;\n return false;\n }\n\n // store values\n this.params = {};\n this.path = match[0]\n\n var keys = this.keys;\n var params = this.params;\n\n for (var i = 1; i < match.length; i++) {\n var key = keys[i - 1];\n var prop = key.name;\n var val = decode_param(match[i])\n\n if (val !== undefined || !(hasOwnProperty.call(params, prop))) {\n params[prop] = val;\n }\n }\n\n return true;\n};\n\n/**\n * Decode param value.\n *\n * @param {string} val\n * @return {string}\n * @private\n */\n\nfunction decode_param(val) {\n if (typeof val !== 'string' || val.length === 0) {\n return val;\n }\n\n try {\n return decodeURIComponent(val);\n } catch (err) {\n if (err instanceof URIError) {\n err.message = 'Failed to decode param \\'' + val + '\\'';\n err.status = err.statusCode = 400;\n }\n\n throw err;\n }\n}\n", "/*!\n * methods\n * Copyright(c) 2013-2014 TJ Holowaychuk\n * Copyright(c) 2015-2016 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict';\n\n/**\n * Module dependencies.\n * @private\n */\n\nvar http = require('http');\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = getCurrentNodeMethods() || getBasicNodeMethods();\n\n/**\n * Get the current Node.js methods.\n * @private\n */\n\nfunction getCurrentNodeMethods() {\n return http.METHODS && http.METHODS.map(function lowerCaseMethod(method) {\n return method.toLowerCase();\n });\n}\n\n/**\n * Get the \"basic\" Node.js methods, a snapshot from Node.js 0.10.\n * @private\n */\n\nfunction getBasicNodeMethods() {\n return [\n 'get',\n 'post',\n 'put',\n 'head',\n 'delete',\n 'options',\n 'trace',\n 'copy',\n 'lock',\n 'mkcol',\n 'move',\n 'purge',\n 'propfind',\n 'proppatch',\n 'unlock',\n 'report',\n 'mkactivity',\n 'checkout',\n 'merge',\n 'm-search',\n 'notify',\n 'subscribe',\n 'unsubscribe',\n 'patch',\n 'search',\n 'connect'\n ];\n}\n", "/*!\n * express\n * Copyright(c) 2009-2013 TJ Holowaychuk\n * Copyright(c) 2013 Roman Shtylman\n * Copyright(c) 2014-2015 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict';\n\n/**\n * Module dependencies.\n * @private\n */\n\nvar debug = require('debug')('express:router:route');\nvar flatten = require('array-flatten');\nvar Layer = require('./layer');\nvar methods = require('methods');\n\n/**\n * Module variables.\n * @private\n */\n\nvar slice = Array.prototype.slice;\nvar toString = Object.prototype.toString;\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = Route;\n\n/**\n * Initialize `Route` with the given `path`,\n *\n * @param {String} path\n * @public\n */\n\nfunction Route(path) {\n this.path = path;\n this.stack = [];\n\n debug('new %o', path)\n\n // route handlers for various http methods\n this.methods = {};\n}\n\n/**\n * Determine if the route handles a given method.\n * @private\n */\n\nRoute.prototype._handles_method = function _handles_method(method) {\n if (this.methods._all) {\n return true;\n }\n\n var name = method.toLowerCase();\n\n if (name === 'head' && !this.methods['head']) {\n name = 'get';\n }\n\n return Boolean(this.methods[name]);\n};\n\n/**\n * @return {Array} supported HTTP methods\n * @private\n */\n\nRoute.prototype._options = function _options() {\n var methods = Object.keys(this.methods);\n\n // append automatic head\n if (this.methods.get && !this.methods.head) {\n methods.push('head');\n }\n\n for (var i = 0; i < methods.length; i++) {\n // make upper case\n methods[i] = methods[i].toUpperCase();\n }\n\n return methods;\n};\n\n/**\n * dispatch req, res into this route\n * @private\n */\n\nRoute.prototype.dispatch = function dispatch(req, res, done) {\n var idx = 0;\n var stack = this.stack;\n var sync = 0\n\n if (stack.length === 0) {\n return done();\n }\n\n var method = req.method.toLowerCase();\n if (method === 'head' && !this.methods['head']) {\n method = 'get';\n }\n\n req.route = this;\n\n next();\n\n function next(err) {\n // signal to exit route\n if (err && err === 'route') {\n return done();\n }\n\n // signal to exit router\n if (err && err === 'router') {\n return done(err)\n }\n\n // max sync stack\n if (++sync > 100) {\n return setImmediate(next, err)\n }\n\n var layer = stack[idx++]\n\n // end of layers\n if (!layer) {\n return done(err)\n }\n\n if (layer.method && layer.method !== method) {\n next(err)\n } else if (err) {\n layer.handle_error(err, req, res, next);\n } else {\n layer.handle_request(req, res, next);\n }\n\n sync = 0\n }\n};\n\n/**\n * Add a handler for all HTTP verbs to this route.\n *\n * Behaves just like middleware and can respond or call `next`\n * to continue processing.\n *\n * You can use multiple `.all` call to add multiple handlers.\n *\n * function check_something(req, res, next){\n * next();\n * };\n *\n * function validate_user(req, res, next){\n * next();\n * };\n *\n * route\n * .all(validate_user)\n * .all(check_something)\n * .get(function(req, res, next){\n * res.send('hello world');\n * });\n *\n * @param {function} handler\n * @return {Route} for chaining\n * @api public\n */\n\nRoute.prototype.all = function all() {\n var handles = flatten(slice.call(arguments));\n\n for (var i = 0; i < handles.length; i++) {\n var handle = handles[i];\n\n if (typeof handle !== 'function') {\n var type = toString.call(handle);\n var msg = 'Route.all() requires a callback function but got a ' + type\n throw new TypeError(msg);\n }\n\n var layer = Layer('/', {}, handle);\n layer.method = undefined;\n\n this.methods._all = true;\n this.stack.push(layer);\n }\n\n return this;\n};\n\nmethods.forEach(function(method){\n Route.prototype[method] = function(){\n var handles = flatten(slice.call(arguments));\n\n for (var i = 0; i < handles.length; i++) {\n var handle = handles[i];\n\n if (typeof handle !== 'function') {\n var type = toString.call(handle);\n var msg = 'Route.' + method + '() requires a callback function but got a ' + type\n throw new Error(msg);\n }\n\n debug('%s %o', method, this.path)\n\n var layer = Layer('/', {}, handle);\n layer.method = method;\n\n this.methods[method] = true;\n this.stack.push(layer);\n }\n\n return this;\n };\n});\n", "/**\n * Merge object b with object a.\n *\n * var a = { foo: 'bar' }\n * , b = { bar: 'baz' };\n *\n * merge(a, b);\n * // => { foo: 'bar', bar: 'baz' }\n *\n * @param {Object} a\n * @param {Object} b\n * @return {Object}\n * @api public\n */\n\nexports = module.exports = function(a, b){\n if (a && b) {\n for (var key in b) {\n a[key] = b[key];\n }\n }\n return a;\n};\n", "/*!\n * express\n * Copyright(c) 2009-2013 TJ Holowaychuk\n * Copyright(c) 2013 Roman Shtylman\n * Copyright(c) 2014-2015 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict';\n\n/**\n * Module dependencies.\n * @private\n */\n\nvar Route = require('./route');\nvar Layer = require('./layer');\nvar methods = require('methods');\nvar mixin = require('utils-merge');\nvar debug = require('debug')('express:router');\nvar deprecate = require('depd')('express');\nvar flatten = require('array-flatten');\nvar parseUrl = require('parseurl');\nvar setPrototypeOf = require('setprototypeof')\n\n/**\n * Module variables.\n * @private\n */\n\nvar objectRegExp = /^\\[object (\\S+)\\]$/;\nvar slice = Array.prototype.slice;\nvar toString = Object.prototype.toString;\n\n/**\n * Initialize a new `Router` with the given `options`.\n *\n * @param {Object} [options]\n * @return {Router} which is an callable function\n * @public\n */\n\nvar proto = module.exports = function(options) {\n var opts = options || {};\n\n function router(req, res, next) {\n router.handle(req, res, next);\n }\n\n // mixin Router class functions\n setPrototypeOf(router, proto)\n\n router.params = {};\n router._params = [];\n router.caseSensitive = opts.caseSensitive;\n router.mergeParams = opts.mergeParams;\n router.strict = opts.strict;\n router.stack = [];\n\n return router;\n};\n\n/**\n * Map the given param placeholder `name`(s) to the given callback.\n *\n * Parameter mapping is used to provide pre-conditions to routes\n * which use normalized placeholders. For example a _:user_id_ parameter\n * could automatically load a user's information from the database without\n * any additional code,\n *\n * The callback uses the same signature as middleware, the only difference\n * being that the value of the placeholder is passed, in this case the _id_\n * of the user. Once the `next()` function is invoked, just like middleware\n * it will continue on to execute the route, or subsequent parameter functions.\n *\n * Just like in middleware, you must either respond to the request or call next\n * to avoid stalling the request.\n *\n * app.param('user_id', function(req, res, next, id){\n * User.find(id, function(err, user){\n * if (err) {\n * return next(err);\n * } else if (!user) {\n * return next(new Error('failed to load user'));\n * }\n * req.user = user;\n * next();\n * });\n * });\n *\n * @param {String} name\n * @param {Function} fn\n * @return {app} for chaining\n * @public\n */\n\nproto.param = function param(name, fn) {\n // param logic\n if (typeof name === 'function') {\n deprecate('router.param(fn): Refactor to use path params');\n this._params.push(name);\n return;\n }\n\n // apply param functions\n var params = this._params;\n var len = params.length;\n var ret;\n\n if (name[0] === ':') {\n deprecate('router.param(' + JSON.stringify(name) + ', fn): Use router.param(' + JSON.stringify(name.slice(1)) + ', fn) instead')\n name = name.slice(1)\n }\n\n for (var i = 0; i < len; ++i) {\n if (ret = params[i](name, fn)) {\n fn = ret;\n }\n }\n\n // ensure we end up with a\n // middleware function\n if ('function' !== typeof fn) {\n throw new Error('invalid param() call for ' + name + ', got ' + fn);\n }\n\n (this.params[name] = this.params[name] || []).push(fn);\n return this;\n};\n\n/**\n * Dispatch a req, res into the router.\n * @private\n */\n\nproto.handle = function handle(req, res, out) {\n var self = this;\n\n debug('dispatching %s %s', req.method, req.url);\n\n var idx = 0;\n var protohost = getProtohost(req.url) || ''\n var removed = '';\n var slashAdded = false;\n var sync = 0\n var paramcalled = {};\n\n // store options for OPTIONS request\n // only used if OPTIONS request\n var options = [];\n\n // middleware and routes\n var stack = self.stack;\n\n // manage inter-router variables\n var parentParams = req.params;\n var parentUrl = req.baseUrl || '';\n var done = restore(out, req, 'baseUrl', 'next', 'params');\n\n // setup next layer\n req.next = next;\n\n // for options requests, respond with a default if nothing else responds\n if (req.method === 'OPTIONS') {\n done = wrap(done, function(old, err) {\n if (err || options.length === 0) return old(err);\n sendOptionsResponse(res, options, old);\n });\n }\n\n // setup basic req values\n req.baseUrl = parentUrl;\n req.originalUrl = req.originalUrl || req.url;\n\n next();\n\n function next(err) {\n var layerError = err === 'route'\n ? null\n : err;\n\n // remove added slash\n if (slashAdded) {\n req.url = req.url.slice(1)\n slashAdded = false;\n }\n\n // restore altered req.url\n if (removed.length !== 0) {\n req.baseUrl = parentUrl;\n req.url = protohost + removed + req.url.slice(protohost.length)\n removed = '';\n }\n\n // signal to exit router\n if (layerError === 'router') {\n setImmediate(done, null)\n return\n }\n\n // no more matching layers\n if (idx >= stack.length) {\n setImmediate(done, layerError);\n return;\n }\n\n // max sync stack\n if (++sync > 100) {\n return setImmediate(next, err)\n }\n\n // get pathname of request\n var path = getPathname(req);\n\n if (path == null) {\n return done(layerError);\n }\n\n // find next matching layer\n var layer;\n var match;\n var route;\n\n while (match !== true && idx < stack.length) {\n layer = stack[idx++];\n match = matchLayer(layer, path);\n route = layer.route;\n\n if (typeof match !== 'boolean') {\n // hold on to layerError\n layerError = layerError || match;\n }\n\n if (match !== true) {\n continue;\n }\n\n if (!route) {\n // process non-route handlers normally\n continue;\n }\n\n if (layerError) {\n // routes do not match with a pending error\n match = false;\n continue;\n }\n\n var method = req.method;\n var has_method = route._handles_method(method);\n\n // build up automatic options response\n if (!has_method && method === 'OPTIONS') {\n appendMethods(options, route._options());\n }\n\n // don't even bother matching route\n if (!has_method && method !== 'HEAD') {\n match = false;\n }\n }\n\n // no match\n if (match !== true) {\n return done(layerError);\n }\n\n // store route for dispatch on change\n if (route) {\n req.route = route;\n }\n\n // Capture one-time layer values\n req.params = self.mergeParams\n ? mergeParams(layer.params, parentParams)\n : layer.params;\n var layerPath = layer.path;\n\n // this should be done for the layer\n self.process_params(layer, paramcalled, req, res, function (err) {\n if (err) {\n next(layerError || err)\n } else if (route) {\n layer.handle_request(req, res, next)\n } else {\n trim_prefix(layer, layerError, layerPath, path)\n }\n\n sync = 0\n });\n }\n\n function trim_prefix(layer, layerError, layerPath, path) {\n if (layerPath.length !== 0) {\n // Validate path is a prefix match\n if (layerPath !== path.slice(0, layerPath.length)) {\n next(layerError)\n return\n }\n\n // Validate path breaks on a path separator\n var c = path[layerPath.length]\n if (c && c !== '/' && c !== '.') return next(layerError)\n\n // Trim off the part of the url that matches the route\n // middleware (.use stuff) needs to have the path stripped\n debug('trim prefix (%s) from url %s', layerPath, req.url);\n removed = layerPath;\n req.url = protohost + req.url.slice(protohost.length + removed.length)\n\n // Ensure leading slash\n if (!protohost && req.url[0] !== '/') {\n req.url = '/' + req.url;\n slashAdded = true;\n }\n\n // Setup base URL (no trailing slash)\n req.baseUrl = parentUrl + (removed[removed.length - 1] === '/'\n ? removed.substring(0, removed.length - 1)\n : removed);\n }\n\n debug('%s %s : %s', layer.name, layerPath, req.originalUrl);\n\n if (layerError) {\n layer.handle_error(layerError, req, res, next);\n } else {\n layer.handle_request(req, res, next);\n }\n }\n};\n\n/**\n * Process any parameters for the layer.\n * @private\n */\n\nproto.process_params = function process_params(layer, called, req, res, done) {\n var params = this.params;\n\n // captured parameters from the layer, keys and values\n var keys = layer.keys;\n\n // fast track\n if (!keys || keys.length === 0) {\n return done();\n }\n\n var i = 0;\n var name;\n var paramIndex = 0;\n var key;\n var paramVal;\n var paramCallbacks;\n var paramCalled;\n\n // process params in order\n // param callbacks can be async\n function param(err) {\n if (err) {\n return done(err);\n }\n\n if (i >= keys.length ) {\n return done();\n }\n\n paramIndex = 0;\n key = keys[i++];\n name = key.name;\n paramVal = req.params[name];\n paramCallbacks = params[name];\n paramCalled = called[name];\n\n if (paramVal === undefined || !paramCallbacks) {\n return param();\n }\n\n // param previously called with same value or error occurred\n if (paramCalled && (paramCalled.match === paramVal\n || (paramCalled.error && paramCalled.error !== 'route'))) {\n // restore value\n req.params[name] = paramCalled.value;\n\n // next param\n return param(paramCalled.error);\n }\n\n called[name] = paramCalled = {\n error: null,\n match: paramVal,\n value: paramVal\n };\n\n paramCallback();\n }\n\n // single param callbacks\n function paramCallback(err) {\n var fn = paramCallbacks[paramIndex++];\n\n // store updated value\n paramCalled.value = req.params[key.name];\n\n if (err) {\n // store error\n paramCalled.error = err;\n param(err);\n return;\n }\n\n if (!fn) return param();\n\n try {\n fn(req, res, paramCallback, paramVal, key.name);\n } catch (e) {\n paramCallback(e);\n }\n }\n\n param();\n};\n\n/**\n * Use the given middleware function, with optional path, defaulting to \"/\".\n *\n * Use (like `.all`) will run for any http METHOD, but it will not add\n * handlers for those methods so OPTIONS requests will not consider `.use`\n * functions even if they could respond.\n *\n * The other difference is that _route_ path is stripped and not visible\n * to the handler function. The main effect of this feature is that mounted\n * handlers can operate without any code changes regardless of the \"prefix\"\n * pathname.\n *\n * @public\n */\n\nproto.use = function use(fn) {\n var offset = 0;\n var path = '/';\n\n // default path to '/'\n // disambiguate router.use([fn])\n if (typeof fn !== 'function') {\n var arg = fn;\n\n while (Array.isArray(arg) && arg.length !== 0) {\n arg = arg[0];\n }\n\n // first arg is the path\n if (typeof arg !== 'function') {\n offset = 1;\n path = fn;\n }\n }\n\n var callbacks = flatten(slice.call(arguments, offset));\n\n if (callbacks.length === 0) {\n throw new TypeError('Router.use() requires a middleware function')\n }\n\n for (var i = 0; i < callbacks.length; i++) {\n var fn = callbacks[i];\n\n if (typeof fn !== 'function') {\n throw new TypeError('Router.use() requires a middleware function but got a ' + gettype(fn))\n }\n\n // add the middleware\n debug('use %o %s', path, fn.name || '')\n\n var layer = new Layer(path, {\n sensitive: this.caseSensitive,\n strict: false,\n end: false\n }, fn);\n\n layer.route = undefined;\n\n this.stack.push(layer);\n }\n\n return this;\n};\n\n/**\n * Create a new Route for the given path.\n *\n * Each route contains a separate middleware stack and VERB handlers.\n *\n * See the Route api documentation for details on adding handlers\n * and middleware to routes.\n *\n * @param {String} path\n * @return {Route}\n * @public\n */\n\nproto.route = function route(path) {\n var route = new Route(path);\n\n var layer = new Layer(path, {\n sensitive: this.caseSensitive,\n strict: this.strict,\n end: true\n }, route.dispatch.bind(route));\n\n layer.route = route;\n\n this.stack.push(layer);\n return route;\n};\n\n// create Router#VERB functions\nmethods.concat('all').forEach(function(method){\n proto[method] = function(path){\n var route = this.route(path)\n route[method].apply(route, slice.call(arguments, 1));\n return this;\n };\n});\n\n// append methods to a list of methods\nfunction appendMethods(list, addition) {\n for (var i = 0; i < addition.length; i++) {\n var method = addition[i];\n if (list.indexOf(method) === -1) {\n list.push(method);\n }\n }\n}\n\n// get pathname of request\nfunction getPathname(req) {\n try {\n return parseUrl(req).pathname;\n } catch (err) {\n return undefined;\n }\n}\n\n// Get get protocol + host for a URL\nfunction getProtohost(url) {\n if (typeof url !== 'string' || url.length === 0 || url[0] === '/') {\n return undefined\n }\n\n var searchIndex = url.indexOf('?')\n var pathLength = searchIndex !== -1\n ? searchIndex\n : url.length\n var fqdnIndex = url.slice(0, pathLength).indexOf('://')\n\n return fqdnIndex !== -1\n ? url.substring(0, url.indexOf('/', 3 + fqdnIndex))\n : undefined\n}\n\n// get type for error message\nfunction gettype(obj) {\n var type = typeof obj;\n\n if (type !== 'object') {\n return type;\n }\n\n // inspect [[Class]] for objects\n return toString.call(obj)\n .replace(objectRegExp, '$1');\n}\n\n/**\n * Match path to a layer.\n *\n * @param {Layer} layer\n * @param {string} path\n * @private\n */\n\nfunction matchLayer(layer, path) {\n try {\n return layer.match(path);\n } catch (err) {\n return err;\n }\n}\n\n// merge params with parent params\nfunction mergeParams(params, parent) {\n if (typeof parent !== 'object' || !parent) {\n return params;\n }\n\n // make copy of parent for base\n var obj = mixin({}, parent);\n\n // simple non-numeric merging\n if (!(0 in params) || !(0 in parent)) {\n return mixin(obj, params);\n }\n\n var i = 0;\n var o = 0;\n\n // determine numeric gaps\n while (i in params) {\n i++;\n }\n\n while (o in parent) {\n o++;\n }\n\n // offset numeric indices in params before merge\n for (i--; i >= 0; i--) {\n params[i + o] = params[i];\n\n // create holes for the merge when necessary\n if (i < o) {\n delete params[i];\n }\n }\n\n return mixin(obj, params);\n}\n\n// restore obj props after function\nfunction restore(fn, obj) {\n var props = new Array(arguments.length - 2);\n var vals = new Array(arguments.length - 2);\n\n for (var i = 0; i < props.length; i++) {\n props[i] = arguments[i + 2];\n vals[i] = obj[props[i]];\n }\n\n return function () {\n // restore vals\n for (var i = 0; i < props.length; i++) {\n obj[props[i]] = vals[i];\n }\n\n return fn.apply(this, arguments);\n };\n}\n\n// send an OPTIONS response\nfunction sendOptionsResponse(res, options, next) {\n try {\n var body = options.join(',');\n res.set('Allow', body);\n res.send(body);\n } catch (err) {\n next(err);\n }\n}\n\n// wrap a function\nfunction wrap(old, fn) {\n return function proxy() {\n var args = new Array(arguments.length + 1);\n\n args[0] = old;\n for (var i = 0, len = arguments.length; i < len; i++) {\n args[i + 1] = arguments[i];\n }\n\n fn.apply(this, args);\n };\n}\n", "/*!\n * express\n * Copyright(c) 2009-2013 TJ Holowaychuk\n * Copyright(c) 2013 Roman Shtylman\n * Copyright(c) 2014-2015 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict';\n\n/**\n * Module dependencies.\n * @private\n */\n\nvar setPrototypeOf = require('setprototypeof')\n\n/**\n * Initialization middleware, exposing the\n * request and response to each other, as well\n * as defaulting the X-Powered-By header field.\n *\n * @param {Function} app\n * @return {Function}\n * @api private\n */\n\nexports.init = function(app){\n return function expressInit(req, res, next){\n if (app.enabled('x-powered-by')) res.setHeader('X-Powered-By', 'Express');\n req.res = res;\n res.req = req;\n req.next = next;\n\n setPrototypeOf(req, app.request)\n setPrototypeOf(res, app.response)\n\n res.locals = res.locals || Object.create(null);\n\n next();\n };\n};\n\n", "/*!\n * express\n * Copyright(c) 2009-2013 TJ Holowaychuk\n * Copyright(c) 2013 Roman Shtylman\n * Copyright(c) 2014-2015 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict';\n\n/**\n * Module dependencies.\n */\n\nvar merge = require('utils-merge')\nvar parseUrl = require('parseurl');\nvar qs = require('qs');\n\n/**\n * @param {Object} options\n * @return {Function}\n * @api public\n */\n\nmodule.exports = function query(options) {\n var opts = merge({}, options)\n var queryparse = qs.parse;\n\n if (typeof options === 'function') {\n queryparse = options;\n opts = undefined;\n }\n\n if (opts !== undefined && opts.allowPrototypes === undefined) {\n // back-compat for qs module\n opts.allowPrototypes = true;\n }\n\n return function query(req, res, next){\n if (!req.query) {\n var val = parseUrl(req).query;\n req.query = queryparse(val, opts);\n }\n\n next();\n };\n};\n", "/*!\n * express\n * Copyright(c) 2009-2013 TJ Holowaychuk\n * Copyright(c) 2013 Roman Shtylman\n * Copyright(c) 2014-2015 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict';\n\n/**\n * Module dependencies.\n * @private\n */\n\nvar debug = require('debug')('express:view');\nvar path = require('path');\nvar fs = require('fs');\n\n/**\n * Module variables.\n * @private\n */\n\nvar dirname = path.dirname;\nvar basename = path.basename;\nvar extname = path.extname;\nvar join = path.join;\nvar resolve = path.resolve;\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = View;\n\n/**\n * Initialize a new `View` with the given `name`.\n *\n * Options:\n *\n * - `defaultEngine` the default template engine name\n * - `engines` template engine require() cache\n * - `root` root path for view lookup\n *\n * @param {string} name\n * @param {object} options\n * @public\n */\n\nfunction View(name, options) {\n var opts = options || {};\n\n this.defaultEngine = opts.defaultEngine;\n this.ext = extname(name);\n this.name = name;\n this.root = opts.root;\n\n if (!this.ext && !this.defaultEngine) {\n throw new Error('No default engine was specified and no extension was provided.');\n }\n\n var fileName = name;\n\n if (!this.ext) {\n // get extension from default engine name\n this.ext = this.defaultEngine[0] !== '.'\n ? '.' + this.defaultEngine\n : this.defaultEngine;\n\n fileName += this.ext;\n }\n\n if (!opts.engines[this.ext]) {\n // load engine\n var mod = this.ext.slice(1)\n debug('require \"%s\"', mod)\n\n // default engine export\n var fn = require(mod).__express\n\n if (typeof fn !== 'function') {\n throw new Error('Module \"' + mod + '\" does not provide a view engine.')\n }\n\n opts.engines[this.ext] = fn\n }\n\n // store loaded engine\n this.engine = opts.engines[this.ext];\n\n // lookup path\n this.path = this.lookup(fileName);\n}\n\n/**\n * Lookup view by the given `name`\n *\n * @param {string} name\n * @private\n */\n\nView.prototype.lookup = function lookup(name) {\n var path;\n var roots = [].concat(this.root);\n\n debug('lookup \"%s\"', name);\n\n for (var i = 0; i < roots.length && !path; i++) {\n var root = roots[i];\n\n // resolve the path\n var loc = resolve(root, name);\n var dir = dirname(loc);\n var file = basename(loc);\n\n // resolve the file\n path = this.resolve(dir, file);\n }\n\n return path;\n};\n\n/**\n * Render with the given options.\n *\n * @param {object} options\n * @param {function} callback\n * @private\n */\n\nView.prototype.render = function render(options, callback) {\n debug('render \"%s\"', this.path);\n this.engine(this.path, options, callback);\n};\n\n/**\n * Resolve the file within the given directory.\n *\n * @param {string} dir\n * @param {string} file\n * @private\n */\n\nView.prototype.resolve = function resolve(dir, file) {\n var ext = this.ext;\n\n // .\n var path = join(dir, file);\n var stat = tryStat(path);\n\n if (stat && stat.isFile()) {\n return path;\n }\n\n // /index.\n path = join(dir, basename(file, ext), 'index' + ext);\n stat = tryStat(path);\n\n if (stat && stat.isFile()) {\n return path;\n }\n};\n\n/**\n * Return a stat, maybe.\n *\n * @param {string} path\n * @return {fs.Stats}\n * @private\n */\n\nfunction tryStat(path) {\n debug('stat \"%s\"', path);\n\n try {\n return fs.statSync(path);\n } catch (e) {\n return undefined;\n }\n}\n", "/*! safe-buffer. MIT License. Feross Aboukhadijeh */\n/* eslint-disable node/no-deprecated-api */\nvar buffer = require('buffer')\nvar Buffer = buffer.Buffer\n\n// alternative to using Object.keys for old browsers\nfunction copyProps (src, dst) {\n for (var key in src) {\n dst[key] = src[key]\n }\n}\nif (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {\n module.exports = buffer\n} else {\n // Copy properties from require('buffer')\n copyProps(buffer, exports)\n exports.Buffer = SafeBuffer\n}\n\nfunction SafeBuffer (arg, encodingOrOffset, length) {\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.prototype = Object.create(Buffer.prototype)\n\n// Copy static methods from Buffer\ncopyProps(Buffer, SafeBuffer)\n\nSafeBuffer.from = function (arg, encodingOrOffset, length) {\n if (typeof arg === 'number') {\n throw new TypeError('Argument must not be a number')\n }\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.alloc = function (size, fill, encoding) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n var buf = Buffer(size)\n if (fill !== undefined) {\n if (typeof encoding === 'string') {\n buf.fill(fill, encoding)\n } else {\n buf.fill(fill)\n }\n } else {\n buf.fill(0)\n }\n return buf\n}\n\nSafeBuffer.allocUnsafe = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return Buffer(size)\n}\n\nSafeBuffer.allocUnsafeSlow = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return buffer.SlowBuffer(size)\n}\n", "/*!\n * content-disposition\n * Copyright(c) 2014-2017 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict'\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = contentDisposition\nmodule.exports.parse = parse\n\n/**\n * Module dependencies.\n * @private\n */\n\nvar basename = require('path').basename\nvar Buffer = require('safe-buffer').Buffer\n\n/**\n * RegExp to match non attr-char, *after* encodeURIComponent (i.e. not including \"%\")\n * @private\n */\n\nvar ENCODE_URL_ATTR_CHAR_REGEXP = /[\\x00-\\x20\"'()*,/:;<=>?@[\\\\\\]{}\\x7f]/g // eslint-disable-line no-control-regex\n\n/**\n * RegExp to match percent encoding escape.\n * @private\n */\n\nvar HEX_ESCAPE_REGEXP = /%[0-9A-Fa-f]{2}/\nvar HEX_ESCAPE_REPLACE_REGEXP = /%([0-9A-Fa-f]{2})/g\n\n/**\n * RegExp to match non-latin1 characters.\n * @private\n */\n\nvar NON_LATIN1_REGEXP = /[^\\x20-\\x7e\\xa0-\\xff]/g\n\n/**\n * RegExp to match quoted-pair in RFC 2616\n *\n * quoted-pair = \"\\\" CHAR\n * CHAR = \n * @private\n */\n\nvar QESC_REGEXP = /\\\\([\\u0000-\\u007f])/g // eslint-disable-line no-control-regex\n\n/**\n * RegExp to match chars that must be quoted-pair in RFC 2616\n * @private\n */\n\nvar QUOTE_REGEXP = /([\\\\\"])/g\n\n/**\n * RegExp for various RFC 2616 grammar\n *\n * parameter = token \"=\" ( token | quoted-string )\n * token = 1*\n * separators = \"(\" | \")\" | \"<\" | \">\" | \"@\"\n * | \",\" | \";\" | \":\" | \"\\\" | <\">\n * | \"/\" | \"[\" | \"]\" | \"?\" | \"=\"\n * | \"{\" | \"}\" | SP | HT\n * quoted-string = ( <\"> *(qdtext | quoted-pair ) <\"> )\n * qdtext = >\n * quoted-pair = \"\\\" CHAR\n * CHAR = \n * TEXT = \n * LWS = [CRLF] 1*( SP | HT )\n * CRLF = CR LF\n * CR = \n * LF = \n * SP = \n * HT = \n * CTL = \n * OCTET = \n * @private\n */\n\nvar PARAM_REGEXP = /;[\\x09\\x20]*([!#$%&'*+.0-9A-Z^_`a-z|~-]+)[\\x09\\x20]*=[\\x09\\x20]*(\"(?:[\\x20!\\x23-\\x5b\\x5d-\\x7e\\x80-\\xff]|\\\\[\\x20-\\x7e])*\"|[!#$%&'*+.0-9A-Z^_`a-z|~-]+)[\\x09\\x20]*/g // eslint-disable-line no-control-regex\nvar TEXT_REGEXP = /^[\\x20-\\x7e\\x80-\\xff]+$/\nvar TOKEN_REGEXP = /^[!#$%&'*+.0-9A-Z^_`a-z|~-]+$/\n\n/**\n * RegExp for various RFC 5987 grammar\n *\n * ext-value = charset \"'\" [ language ] \"'\" value-chars\n * charset = \"UTF-8\" / \"ISO-8859-1\" / mime-charset\n * mime-charset = 1*mime-charsetc\n * mime-charsetc = ALPHA / DIGIT\n * / \"!\" / \"#\" / \"$\" / \"%\" / \"&\"\n * / \"+\" / \"-\" / \"^\" / \"_\" / \"`\"\n * / \"{\" / \"}\" / \"~\"\n * language = ( 2*3ALPHA [ extlang ] )\n * / 4ALPHA\n * / 5*8ALPHA\n * extlang = *3( \"-\" 3ALPHA )\n * value-chars = *( pct-encoded / attr-char )\n * pct-encoded = \"%\" HEXDIG HEXDIG\n * attr-char = ALPHA / DIGIT\n * / \"!\" / \"#\" / \"$\" / \"&\" / \"+\" / \"-\" / \".\"\n * / \"^\" / \"_\" / \"`\" / \"|\" / \"~\"\n * @private\n */\n\nvar EXT_VALUE_REGEXP = /^([A-Za-z0-9!#$%&+\\-^_`{}~]+)'(?:[A-Za-z]{2,3}(?:-[A-Za-z]{3}){0,3}|[A-Za-z]{4,8}|)'((?:%[0-9A-Fa-f]{2}|[A-Za-z0-9!#$&+.^_`|~-])+)$/\n\n/**\n * RegExp for various RFC 6266 grammar\n *\n * disposition-type = \"inline\" | \"attachment\" | disp-ext-type\n * disp-ext-type = token\n * disposition-parm = filename-parm | disp-ext-parm\n * filename-parm = \"filename\" \"=\" value\n * | \"filename*\" \"=\" ext-value\n * disp-ext-parm = token \"=\" value\n * | ext-token \"=\" ext-value\n * ext-token = \n * @private\n */\n\nvar DISPOSITION_TYPE_REGEXP = /^([!#$%&'*+.0-9A-Z^_`a-z|~-]+)[\\x09\\x20]*(?:$|;)/ // eslint-disable-line no-control-regex\n\n/**\n * Create an attachment Content-Disposition header.\n *\n * @param {string} [filename]\n * @param {object} [options]\n * @param {string} [options.type=attachment]\n * @param {string|boolean} [options.fallback=true]\n * @return {string}\n * @public\n */\n\nfunction contentDisposition (filename, options) {\n var opts = options || {}\n\n // get type\n var type = opts.type || 'attachment'\n\n // get parameters\n var params = createparams(filename, opts.fallback)\n\n // format into string\n return format(new ContentDisposition(type, params))\n}\n\n/**\n * Create parameters object from filename and fallback.\n *\n * @param {string} [filename]\n * @param {string|boolean} [fallback=true]\n * @return {object}\n * @private\n */\n\nfunction createparams (filename, fallback) {\n if (filename === undefined) {\n return\n }\n\n var params = {}\n\n if (typeof filename !== 'string') {\n throw new TypeError('filename must be a string')\n }\n\n // fallback defaults to true\n if (fallback === undefined) {\n fallback = true\n }\n\n if (typeof fallback !== 'string' && typeof fallback !== 'boolean') {\n throw new TypeError('fallback must be a string or boolean')\n }\n\n if (typeof fallback === 'string' && NON_LATIN1_REGEXP.test(fallback)) {\n throw new TypeError('fallback must be ISO-8859-1 string')\n }\n\n // restrict to file base name\n var name = basename(filename)\n\n // determine if name is suitable for quoted string\n var isQuotedString = TEXT_REGEXP.test(name)\n\n // generate fallback name\n var fallbackName = typeof fallback !== 'string'\n ? fallback && getlatin1(name)\n : basename(fallback)\n var hasFallback = typeof fallbackName === 'string' && fallbackName !== name\n\n // set extended filename parameter\n if (hasFallback || !isQuotedString || HEX_ESCAPE_REGEXP.test(name)) {\n params['filename*'] = name\n }\n\n // set filename parameter\n if (isQuotedString || hasFallback) {\n params.filename = hasFallback\n ? fallbackName\n : name\n }\n\n return params\n}\n\n/**\n * Format object to Content-Disposition header.\n *\n * @param {object} obj\n * @param {string} obj.type\n * @param {object} [obj.parameters]\n * @return {string}\n * @private\n */\n\nfunction format (obj) {\n var parameters = obj.parameters\n var type = obj.type\n\n if (!type || typeof type !== 'string' || !TOKEN_REGEXP.test(type)) {\n throw new TypeError('invalid type')\n }\n\n // start with normalized type\n var string = String(type).toLowerCase()\n\n // append parameters\n if (parameters && typeof parameters === 'object') {\n var param\n var params = Object.keys(parameters).sort()\n\n for (var i = 0; i < params.length; i++) {\n param = params[i]\n\n var val = param.substr(-1) === '*'\n ? ustring(parameters[param])\n : qstring(parameters[param])\n\n string += '; ' + param + '=' + val\n }\n }\n\n return string\n}\n\n/**\n * Decode a RFC 5987 field value (gracefully).\n *\n * @param {string} str\n * @return {string}\n * @private\n */\n\nfunction decodefield (str) {\n var match = EXT_VALUE_REGEXP.exec(str)\n\n if (!match) {\n throw new TypeError('invalid extended field value')\n }\n\n var charset = match[1].toLowerCase()\n var encoded = match[2]\n var value\n\n // to binary string\n var binary = encoded.replace(HEX_ESCAPE_REPLACE_REGEXP, pdecode)\n\n switch (charset) {\n case 'iso-8859-1':\n value = getlatin1(binary)\n break\n case 'utf-8':\n value = Buffer.from(binary, 'binary').toString('utf8')\n break\n default:\n throw new TypeError('unsupported charset in extended field')\n }\n\n return value\n}\n\n/**\n * Get ISO-8859-1 version of string.\n *\n * @param {string} val\n * @return {string}\n * @private\n */\n\nfunction getlatin1 (val) {\n // simple Unicode -> ISO-8859-1 transformation\n return String(val).replace(NON_LATIN1_REGEXP, '?')\n}\n\n/**\n * Parse Content-Disposition header string.\n *\n * @param {string} string\n * @return {object}\n * @public\n */\n\nfunction parse (string) {\n if (!string || typeof string !== 'string') {\n throw new TypeError('argument string is required')\n }\n\n var match = DISPOSITION_TYPE_REGEXP.exec(string)\n\n if (!match) {\n throw new TypeError('invalid type format')\n }\n\n // normalize type\n var index = match[0].length\n var type = match[1].toLowerCase()\n\n var key\n var names = []\n var params = {}\n var value\n\n // calculate index to start at\n index = PARAM_REGEXP.lastIndex = match[0].substr(-1) === ';'\n ? index - 1\n : index\n\n // match parameters\n while ((match = PARAM_REGEXP.exec(string))) {\n if (match.index !== index) {\n throw new TypeError('invalid parameter format')\n }\n\n index += match[0].length\n key = match[1].toLowerCase()\n value = match[2]\n\n if (names.indexOf(key) !== -1) {\n throw new TypeError('invalid duplicate parameter')\n }\n\n names.push(key)\n\n if (key.indexOf('*') + 1 === key.length) {\n // decode extended value\n key = key.slice(0, -1)\n value = decodefield(value)\n\n // overwrite existing value\n params[key] = value\n continue\n }\n\n if (typeof params[key] === 'string') {\n continue\n }\n\n if (value[0] === '\"') {\n // remove quotes and escapes\n value = value\n .substr(1, value.length - 2)\n .replace(QESC_REGEXP, '$1')\n }\n\n params[key] = value\n }\n\n if (index !== -1 && index !== string.length) {\n throw new TypeError('invalid parameter format')\n }\n\n return new ContentDisposition(type, params)\n}\n\n/**\n * Percent decode a single character.\n *\n * @param {string} str\n * @param {string} hex\n * @return {string}\n * @private\n */\n\nfunction pdecode (str, hex) {\n return String.fromCharCode(parseInt(hex, 16))\n}\n\n/**\n * Percent encode a single character.\n *\n * @param {string} char\n * @return {string}\n * @private\n */\n\nfunction pencode (char) {\n return '%' + String(char)\n .charCodeAt(0)\n .toString(16)\n .toUpperCase()\n}\n\n/**\n * Quote a string for HTTP.\n *\n * @param {string} val\n * @return {string}\n * @private\n */\n\nfunction qstring (val) {\n var str = String(val)\n\n return '\"' + str.replace(QUOTE_REGEXP, '\\\\$1') + '\"'\n}\n\n/**\n * Encode a Unicode string for HTTP (RFC 5987).\n *\n * @param {string} val\n * @return {string}\n * @private\n */\n\nfunction ustring (val) {\n var str = String(val)\n\n // percent encode as UTF-8\n var encoded = encodeURIComponent(str)\n .replace(ENCODE_URL_ATTR_CHAR_REGEXP, pencode)\n\n return 'UTF-8\\'\\'' + encoded\n}\n\n/**\n * Class for parsed Content-Disposition header for v8 optimization\n *\n * @public\n * @param {string} type\n * @param {object} parameters\n * @constructor\n */\n\nfunction ContentDisposition (type, parameters) {\n this.type = type\n this.parameters = parameters\n}\n", "/**\n * Helpers.\n */\n\nvar s = 1000;\nvar m = s * 60;\nvar h = m * 60;\nvar d = h * 24;\nvar y = d * 365.25;\n\n/**\n * Parse or format the given `val`.\n *\n * Options:\n *\n * - `long` verbose formatting [false]\n *\n * @param {String|Number} val\n * @param {Object} [options]\n * @throws {Error} throw an error if val is not a non-empty string or a number\n * @return {String|Number}\n * @api public\n */\n\nmodule.exports = function(val, options) {\n options = options || {};\n var type = typeof val;\n if (type === 'string' && val.length > 0) {\n return parse(val);\n } else if (type === 'number' && isNaN(val) === false) {\n return options.long ? fmtLong(val) : fmtShort(val);\n }\n throw new Error(\n 'val is not a non-empty string or a valid number. val=' +\n JSON.stringify(val)\n );\n};\n\n/**\n * Parse the given `str` and return milliseconds.\n *\n * @param {String} str\n * @return {Number}\n * @api private\n */\n\nfunction parse(str) {\n str = String(str);\n if (str.length > 100) {\n return;\n }\n var match = /^((?:\\d+)?\\.?\\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|years?|yrs?|y)?$/i.exec(\n str\n );\n if (!match) {\n return;\n }\n var n = parseFloat(match[1]);\n var type = (match[2] || 'ms').toLowerCase();\n switch (type) {\n case 'years':\n case 'year':\n case 'yrs':\n case 'yr':\n case 'y':\n return n * y;\n case 'days':\n case 'day':\n case 'd':\n return n * d;\n case 'hours':\n case 'hour':\n case 'hrs':\n case 'hr':\n case 'h':\n return n * h;\n case 'minutes':\n case 'minute':\n case 'mins':\n case 'min':\n case 'm':\n return n * m;\n case 'seconds':\n case 'second':\n case 'secs':\n case 'sec':\n case 's':\n return n * s;\n case 'milliseconds':\n case 'millisecond':\n case 'msecs':\n case 'msec':\n case 'ms':\n return n;\n default:\n return undefined;\n }\n}\n\n/**\n * Short format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtShort(ms) {\n if (ms >= d) {\n return Math.round(ms / d) + 'd';\n }\n if (ms >= h) {\n return Math.round(ms / h) + 'h';\n }\n if (ms >= m) {\n return Math.round(ms / m) + 'm';\n }\n if (ms >= s) {\n return Math.round(ms / s) + 's';\n }\n return ms + 'ms';\n}\n\n/**\n * Long format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtLong(ms) {\n return plural(ms, d, 'day') ||\n plural(ms, h, 'hour') ||\n plural(ms, m, 'minute') ||\n plural(ms, s, 'second') ||\n ms + ' ms';\n}\n\n/**\n * Pluralization helper.\n */\n\nfunction plural(ms, n, name) {\n if (ms < n) {\n return;\n }\n if (ms < n * 1.5) {\n return Math.floor(ms / n) + ' ' + name;\n }\n return Math.ceil(ms / n) + ' ' + name + 's';\n}\n", "\n/**\n * This is the common logic for both the Node.js and web browser\n * implementations of `debug()`.\n *\n * Expose `debug()` as the module.\n */\n\nexports = module.exports = createDebug.debug = createDebug['default'] = createDebug;\nexports.coerce = coerce;\nexports.disable = disable;\nexports.enable = enable;\nexports.enabled = enabled;\nexports.humanize = require('ms');\n\n/**\n * The currently active debug mode names, and names to skip.\n */\n\nexports.names = [];\nexports.skips = [];\n\n/**\n * Map of special \"%n\" handling functions, for the debug \"format\" argument.\n *\n * Valid key names are a single, lower or upper-case letter, i.e. \"n\" and \"N\".\n */\n\nexports.formatters = {};\n\n/**\n * Previous log timestamp.\n */\n\nvar prevTime;\n\n/**\n * Select a color.\n * @param {String} namespace\n * @return {Number}\n * @api private\n */\n\nfunction selectColor(namespace) {\n var hash = 0, i;\n\n for (i in namespace) {\n hash = ((hash << 5) - hash) + namespace.charCodeAt(i);\n hash |= 0; // Convert to 32bit integer\n }\n\n return exports.colors[Math.abs(hash) % exports.colors.length];\n}\n\n/**\n * Create a debugger with the given `namespace`.\n *\n * @param {String} namespace\n * @return {Function}\n * @api public\n */\n\nfunction createDebug(namespace) {\n\n function debug() {\n // disabled?\n if (!debug.enabled) return;\n\n var self = debug;\n\n // set `diff` timestamp\n var curr = +new Date();\n var ms = curr - (prevTime || curr);\n self.diff = ms;\n self.prev = prevTime;\n self.curr = curr;\n prevTime = curr;\n\n // turn the `arguments` into a proper Array\n var args = new Array(arguments.length);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i];\n }\n\n args[0] = exports.coerce(args[0]);\n\n if ('string' !== typeof args[0]) {\n // anything else let's inspect with %O\n args.unshift('%O');\n }\n\n // apply any `formatters` transformations\n var index = 0;\n args[0] = args[0].replace(/%([a-zA-Z%])/g, function(match, format) {\n // if we encounter an escaped % then don't increase the array index\n if (match === '%%') return match;\n index++;\n var formatter = exports.formatters[format];\n if ('function' === typeof formatter) {\n var val = args[index];\n match = formatter.call(self, val);\n\n // now we need to remove `args[index]` since it's inlined in the `format`\n args.splice(index, 1);\n index--;\n }\n return match;\n });\n\n // apply env-specific formatting (colors, etc.)\n exports.formatArgs.call(self, args);\n\n var logFn = debug.log || exports.log || console.log.bind(console);\n logFn.apply(self, args);\n }\n\n debug.namespace = namespace;\n debug.enabled = exports.enabled(namespace);\n debug.useColors = exports.useColors();\n debug.color = selectColor(namespace);\n\n // env-specific initialization logic for debug instances\n if ('function' === typeof exports.init) {\n exports.init(debug);\n }\n\n return debug;\n}\n\n/**\n * Enables a debug mode by namespaces. This can include modes\n * separated by a colon and wildcards.\n *\n * @param {String} namespaces\n * @api public\n */\n\nfunction enable(namespaces) {\n exports.save(namespaces);\n\n exports.names = [];\n exports.skips = [];\n\n var split = (typeof namespaces === 'string' ? namespaces : '').split(/[\\s,]+/);\n var len = split.length;\n\n for (var i = 0; i < len; i++) {\n if (!split[i]) continue; // ignore empty strings\n namespaces = split[i].replace(/\\*/g, '.*?');\n if (namespaces[0] === '-') {\n exports.skips.push(new RegExp('^' + namespaces.substr(1) + '$'));\n } else {\n exports.names.push(new RegExp('^' + namespaces + '$'));\n }\n }\n}\n\n/**\n * Disable debug output.\n *\n * @api public\n */\n\nfunction disable() {\n exports.enable('');\n}\n\n/**\n * Returns true if the given mode name is enabled, false otherwise.\n *\n * @param {String} name\n * @return {Boolean}\n * @api public\n */\n\nfunction enabled(name) {\n var i, len;\n for (i = 0, len = exports.skips.length; i < len; i++) {\n if (exports.skips[i].test(name)) {\n return false;\n }\n }\n for (i = 0, len = exports.names.length; i < len; i++) {\n if (exports.names[i].test(name)) {\n return true;\n }\n }\n return false;\n}\n\n/**\n * Coerce `val`.\n *\n * @param {Mixed} val\n * @return {Mixed}\n * @api private\n */\n\nfunction coerce(val) {\n if (val instanceof Error) return val.stack || val.message;\n return val;\n}\n", "/**\n * This is the web browser implementation of `debug()`.\n *\n * Expose `debug()` as the module.\n */\n\nexports = module.exports = require('./debug');\nexports.log = log;\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.storage = 'undefined' != typeof chrome\n && 'undefined' != typeof chrome.storage\n ? chrome.storage.local\n : localstorage();\n\n/**\n * Colors.\n */\n\nexports.colors = [\n 'lightseagreen',\n 'forestgreen',\n 'goldenrod',\n 'dodgerblue',\n 'darkorchid',\n 'crimson'\n];\n\n/**\n * Currently only WebKit-based Web Inspectors, Firefox >= v31,\n * and the Firebug extension (any Firefox version) are known\n * to support \"%c\" CSS customizations.\n *\n * TODO: add a `localStorage` variable to explicitly enable/disable colors\n */\n\nfunction useColors() {\n // NB: In an Electron preload script, document will be defined but not fully\n // initialized. Since we know we're in Chrome, we'll just detect this case\n // explicitly\n if (typeof window !== 'undefined' && window.process && window.process.type === 'renderer') {\n return true;\n }\n\n // is webkit? http://stackoverflow.com/a/16459606/376773\n // document is undefined in react-native: https://github.com/facebook/react-native/pull/1632\n return (typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) ||\n // is firebug? http://stackoverflow.com/a/398120/376773\n (typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) ||\n // is firefox >= v31?\n // https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages\n (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\\/(\\d+)/) && parseInt(RegExp.$1, 10) >= 31) ||\n // double check webkit in userAgent just in case we are in a worker\n (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\\/(\\d+)/));\n}\n\n/**\n * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default.\n */\n\nexports.formatters.j = function(v) {\n try {\n return JSON.stringify(v);\n } catch (err) {\n return '[UnexpectedJSONParseError]: ' + err.message;\n }\n};\n\n\n/**\n * Colorize log arguments if enabled.\n *\n * @api public\n */\n\nfunction formatArgs(args) {\n var useColors = this.useColors;\n\n args[0] = (useColors ? '%c' : '')\n + this.namespace\n + (useColors ? ' %c' : ' ')\n + args[0]\n + (useColors ? '%c ' : ' ')\n + '+' + exports.humanize(this.diff);\n\n if (!useColors) return;\n\n var c = 'color: ' + this.color;\n args.splice(1, 0, c, 'color: inherit')\n\n // the final \"%c\" is somewhat tricky, because there could be other\n // arguments passed either before or after the %c, so we need to\n // figure out the correct index to insert the CSS into\n var index = 0;\n var lastC = 0;\n args[0].replace(/%[a-zA-Z%]/g, function(match) {\n if ('%%' === match) return;\n index++;\n if ('%c' === match) {\n // we only are interested in the *last* %c\n // (the user may have provided their own)\n lastC = index;\n }\n });\n\n args.splice(lastC, 0, c);\n}\n\n/**\n * Invokes `console.log()` when available.\n * No-op when `console.log` is not a \"function\".\n *\n * @api public\n */\n\nfunction log() {\n // this hackery is required for IE8/9, where\n // the `console.log` function doesn't have 'apply'\n return 'object' === typeof console\n && console.log\n && Function.prototype.apply.call(console.log, console, arguments);\n}\n\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\n\nfunction save(namespaces) {\n try {\n if (null == namespaces) {\n exports.storage.removeItem('debug');\n } else {\n exports.storage.debug = namespaces;\n }\n } catch(e) {}\n}\n\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\n\nfunction load() {\n var r;\n try {\n r = exports.storage.debug;\n } catch(e) {}\n\n // If debug isn't set in LS, and we're in Electron, try to load $DEBUG\n if (!r && typeof process !== 'undefined' && 'env' in process) {\n r = process.env.DEBUG;\n }\n\n return r;\n}\n\n/**\n * Enable namespaces listed in `localStorage.debug` initially.\n */\n\nexports.enable(load());\n\n/**\n * Localstorage attempts to return the localstorage.\n *\n * This is necessary because safari throws\n * when a user disables cookies/localstorage\n * and you attempt to access it.\n *\n * @return {LocalStorage}\n * @api private\n */\n\nfunction localstorage() {\n try {\n return window.localStorage;\n } catch (e) {}\n}\n", "/**\n * Module dependencies.\n */\n\nvar tty = require('tty');\nvar util = require('util');\n\n/**\n * This is the Node.js implementation of `debug()`.\n *\n * Expose `debug()` as the module.\n */\n\nexports = module.exports = require('./debug');\nexports.init = init;\nexports.log = log;\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\n\n/**\n * Colors.\n */\n\nexports.colors = [6, 2, 3, 4, 5, 1];\n\n/**\n * Build up the default `inspectOpts` object from the environment variables.\n *\n * $ DEBUG_COLORS=no DEBUG_DEPTH=10 DEBUG_SHOW_HIDDEN=enabled node script.js\n */\n\nexports.inspectOpts = Object.keys(process.env).filter(function (key) {\n return /^debug_/i.test(key);\n}).reduce(function (obj, key) {\n // camel-case\n var prop = key\n .substring(6)\n .toLowerCase()\n .replace(/_([a-z])/g, function (_, k) { return k.toUpperCase() });\n\n // coerce string value into JS value\n var val = process.env[key];\n if (/^(yes|on|true|enabled)$/i.test(val)) val = true;\n else if (/^(no|off|false|disabled)$/i.test(val)) val = false;\n else if (val === 'null') val = null;\n else val = Number(val);\n\n obj[prop] = val;\n return obj;\n}, {});\n\n/**\n * The file descriptor to write the `debug()` calls to.\n * Set the `DEBUG_FD` env variable to override with another value. i.e.:\n *\n * $ DEBUG_FD=3 node script.js 3>debug.log\n */\n\nvar fd = parseInt(process.env.DEBUG_FD, 10) || 2;\n\nif (1 !== fd && 2 !== fd) {\n util.deprecate(function(){}, 'except for stderr(2) and stdout(1), any other usage of DEBUG_FD is deprecated. Override debug.log if you want to use a different log function (https://git.io/debug_fd)')()\n}\n\nvar stream = 1 === fd ? process.stdout :\n 2 === fd ? process.stderr :\n createWritableStdioStream(fd);\n\n/**\n * Is stdout a TTY? Colored output is enabled when `true`.\n */\n\nfunction useColors() {\n return 'colors' in exports.inspectOpts\n ? Boolean(exports.inspectOpts.colors)\n : tty.isatty(fd);\n}\n\n/**\n * Map %o to `util.inspect()`, all on a single line.\n */\n\nexports.formatters.o = function(v) {\n this.inspectOpts.colors = this.useColors;\n return util.inspect(v, this.inspectOpts)\n .split('\\n').map(function(str) {\n return str.trim()\n }).join(' ');\n};\n\n/**\n * Map %o to `util.inspect()`, allowing multiple lines if needed.\n */\n\nexports.formatters.O = function(v) {\n this.inspectOpts.colors = this.useColors;\n return util.inspect(v, this.inspectOpts);\n};\n\n/**\n * Adds ANSI color escape codes if enabled.\n *\n * @api public\n */\n\nfunction formatArgs(args) {\n var name = this.namespace;\n var useColors = this.useColors;\n\n if (useColors) {\n var c = this.color;\n var prefix = ' \\u001b[3' + c + ';1m' + name + ' ' + '\\u001b[0m';\n\n args[0] = prefix + args[0].split('\\n').join('\\n' + prefix);\n args.push('\\u001b[3' + c + 'm+' + exports.humanize(this.diff) + '\\u001b[0m');\n } else {\n args[0] = new Date().toUTCString()\n + ' ' + name + ' ' + args[0];\n }\n}\n\n/**\n * Invokes `util.format()` with the specified arguments and writes to `stream`.\n */\n\nfunction log() {\n return stream.write(util.format.apply(util, arguments) + '\\n');\n}\n\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\n\nfunction save(namespaces) {\n if (null == namespaces) {\n // If you set a process.env field to null or undefined, it gets cast to the\n // string 'null' or 'undefined'. Just delete instead.\n delete process.env.DEBUG;\n } else {\n process.env.DEBUG = namespaces;\n }\n}\n\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\n\nfunction load() {\n return process.env.DEBUG;\n}\n\n/**\n * Copied from `node/src/node.js`.\n *\n * XXX: It's lame that node doesn't expose this API out-of-the-box. It also\n * relies on the undocumented `tty_wrap.guessHandleType()` which is also lame.\n */\n\nfunction createWritableStdioStream (fd) {\n var stream;\n var tty_wrap = process.binding('tty_wrap');\n\n // Note stream._type is used for test-module-load-list.js\n\n switch (tty_wrap.guessHandleType(fd)) {\n case 'TTY':\n stream = new tty.WriteStream(fd);\n stream._type = 'tty';\n\n // Hack to have stream not keep the event loop alive.\n // See https://github.com/joyent/node/issues/1726\n if (stream._handle && stream._handle.unref) {\n stream._handle.unref();\n }\n break;\n\n case 'FILE':\n var fs = require('fs');\n stream = new fs.SyncWriteStream(fd, { autoClose: false });\n stream._type = 'fs';\n break;\n\n case 'PIPE':\n case 'TCP':\n var net = require('net');\n stream = new net.Socket({\n fd: fd,\n readable: false,\n writable: true\n });\n\n // FIXME Should probably have an option in net.Socket to create a\n // stream from an existing fd which is writable only. But for now\n // we'll just add this hack and set the `readable` member to false.\n // Test: ./node test/fixtures/echo.js < /etc/passwd\n stream.readable = false;\n stream.read = null;\n stream._type = 'pipe';\n\n // FIXME Hack to have stream not keep the event loop alive.\n // See https://github.com/joyent/node/issues/1726\n if (stream._handle && stream._handle.unref) {\n stream._handle.unref();\n }\n break;\n\n default:\n // Probably an error on in uv_guess_handle()\n throw new Error('Implement me. Unknown stream file type!');\n }\n\n // For supporting legacy API we put the FD here.\n stream.fd = fd;\n\n stream._isStdio = true;\n\n return stream;\n}\n\n/**\n * Init logic for `debug` instances.\n *\n * Create a new `inspectOpts` object in case `useColors` is set\n * differently for a particular `debug` instance.\n */\n\nfunction init (debug) {\n debug.inspectOpts = {};\n\n var keys = Object.keys(exports.inspectOpts);\n for (var i = 0; i < keys.length; i++) {\n debug.inspectOpts[keys[i]] = exports.inspectOpts[keys[i]];\n }\n}\n\n/**\n * Enable namespaces listed in `process.env.DEBUG` initially.\n */\n\nexports.enable(load());\n", "/**\n * Detect Electron renderer process, which is node, but we should\n * treat as a browser.\n */\n\nif (typeof process !== 'undefined' && process.type === 'renderer') {\n module.exports = require('./browser.js');\n} else {\n module.exports = require('./node.js');\n}\n", "/*!\n * etag\n * Copyright(c) 2014-2016 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict'\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = etag\n\n/**\n * Module dependencies.\n * @private\n */\n\nvar crypto = require('crypto')\nvar Stats = require('fs').Stats\n\n/**\n * Module variables.\n * @private\n */\n\nvar toString = Object.prototype.toString\n\n/**\n * Generate an entity tag.\n *\n * @param {Buffer|string} entity\n * @return {string}\n * @private\n */\n\nfunction entitytag (entity) {\n if (entity.length === 0) {\n // fast-path empty\n return '\"0-2jmj7l5rSw0yVb/vlWAYkK/YBwk\"'\n }\n\n // compute hash of entity\n var hash = crypto\n .createHash('sha1')\n .update(entity, 'utf8')\n .digest('base64')\n .substring(0, 27)\n\n // compute length of entity\n var len = typeof entity === 'string'\n ? Buffer.byteLength(entity, 'utf8')\n : entity.length\n\n return '\"' + len.toString(16) + '-' + hash + '\"'\n}\n\n/**\n * Create a simple ETag.\n *\n * @param {string|Buffer|Stats} entity\n * @param {object} [options]\n * @param {boolean} [options.weak]\n * @return {String}\n * @public\n */\n\nfunction etag (entity, options) {\n if (entity == null) {\n throw new TypeError('argument entity is required')\n }\n\n // support fs.Stats object\n var isStats = isstats(entity)\n var weak = options && typeof options.weak === 'boolean'\n ? options.weak\n : isStats\n\n // validate argument\n if (!isStats && typeof entity !== 'string' && !Buffer.isBuffer(entity)) {\n throw new TypeError('argument entity must be string, Buffer, or fs.Stats')\n }\n\n // generate entity tag\n var tag = isStats\n ? stattag(entity)\n : entitytag(entity)\n\n return weak\n ? 'W/' + tag\n : tag\n}\n\n/**\n * Determine if object is a Stats object.\n *\n * @param {object} obj\n * @return {boolean}\n * @api private\n */\n\nfunction isstats (obj) {\n // genuine fs.Stats\n if (typeof Stats === 'function' && obj instanceof Stats) {\n return true\n }\n\n // quack quack\n return obj && typeof obj === 'object' &&\n 'ctime' in obj && toString.call(obj.ctime) === '[object Date]' &&\n 'mtime' in obj && toString.call(obj.mtime) === '[object Date]' &&\n 'ino' in obj && typeof obj.ino === 'number' &&\n 'size' in obj && typeof obj.size === 'number'\n}\n\n/**\n * Generate a tag for a stat.\n *\n * @param {object} stat\n * @return {string}\n * @private\n */\n\nfunction stattag (stat) {\n var mtime = stat.mtime.getTime().toString(16)\n var size = stat.size.toString(16)\n\n return '\"' + size + '-' + mtime + '\"'\n}\n", "/*!\n * fresh\n * Copyright(c) 2012 TJ Holowaychuk\n * Copyright(c) 2016-2017 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict'\n\n/**\n * RegExp to check for no-cache token in Cache-Control.\n * @private\n */\n\nvar CACHE_CONTROL_NO_CACHE_REGEXP = /(?:^|,)\\s*?no-cache\\s*?(?:,|$)/\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = fresh\n\n/**\n * Check freshness of the response using request and response headers.\n *\n * @param {Object} reqHeaders\n * @param {Object} resHeaders\n * @return {Boolean}\n * @public\n */\n\nfunction fresh (reqHeaders, resHeaders) {\n // fields\n var modifiedSince = reqHeaders['if-modified-since']\n var noneMatch = reqHeaders['if-none-match']\n\n // unconditional request\n if (!modifiedSince && !noneMatch) {\n return false\n }\n\n // Always return stale when Cache-Control: no-cache\n // to support end-to-end reload requests\n // https://tools.ietf.org/html/rfc2616#section-14.9.4\n var cacheControl = reqHeaders['cache-control']\n if (cacheControl && CACHE_CONTROL_NO_CACHE_REGEXP.test(cacheControl)) {\n return false\n }\n\n // if-none-match\n if (noneMatch && noneMatch !== '*') {\n var etag = resHeaders['etag']\n\n if (!etag) {\n return false\n }\n\n var etagStale = true\n var matches = parseTokenList(noneMatch)\n for (var i = 0; i < matches.length; i++) {\n var match = matches[i]\n if (match === etag || match === 'W/' + etag || 'W/' + match === etag) {\n etagStale = false\n break\n }\n }\n\n if (etagStale) {\n return false\n }\n }\n\n // if-modified-since\n if (modifiedSince) {\n var lastModified = resHeaders['last-modified']\n var modifiedStale = !lastModified || !(parseHttpDate(lastModified) <= parseHttpDate(modifiedSince))\n\n if (modifiedStale) {\n return false\n }\n }\n\n return true\n}\n\n/**\n * Parse an HTTP Date into a number.\n *\n * @param {string} date\n * @private\n */\n\nfunction parseHttpDate (date) {\n var timestamp = date && Date.parse(date)\n\n // istanbul ignore next: guard against date.js Date.parse patching\n return typeof timestamp === 'number'\n ? timestamp\n : NaN\n}\n\n/**\n * Parse a HTTP token list.\n *\n * @param {string} str\n * @private\n */\n\nfunction parseTokenList (str) {\n var end = 0\n var list = []\n var start = 0\n\n // gather tokens\n for (var i = 0, len = str.length; i < len; i++) {\n switch (str.charCodeAt(i)) {\n case 0x20: /* */\n if (start === end) {\n start = end = i + 1\n }\n break\n case 0x2c: /* , */\n list.push(str.substring(start, end))\n start = end = i + 1\n break\n default:\n end = i + 1\n break\n }\n }\n\n // final token\n list.push(str.substring(start, end))\n\n return list\n}\n", "var path = require('path');\nvar fs = require('fs');\n\nfunction Mime() {\n // Map of extension -> mime type\n this.types = Object.create(null);\n\n // Map of mime type -> extension\n this.extensions = Object.create(null);\n}\n\n/**\n * Define mimetype -> extension mappings. Each key is a mime-type that maps\n * to an array of extensions associated with the type. The first extension is\n * used as the default extension for the type.\n *\n * e.g. mime.define({'audio/ogg', ['oga', 'ogg', 'spx']});\n *\n * @param map (Object) type definitions\n */\nMime.prototype.define = function (map) {\n for (var type in map) {\n var exts = map[type];\n for (var i = 0; i < exts.length; i++) {\n if (process.env.DEBUG_MIME && this.types[exts[i]]) {\n console.warn((this._loading || \"define()\").replace(/.*\\//, ''), 'changes \"' + exts[i] + '\" extension type from ' +\n this.types[exts[i]] + ' to ' + type);\n }\n\n this.types[exts[i]] = type;\n }\n\n // Default extension is the first one we encounter\n if (!this.extensions[type]) {\n this.extensions[type] = exts[0];\n }\n }\n};\n\n/**\n * Load an Apache2-style \".types\" file\n *\n * This may be called multiple times (it's expected). Where files declare\n * overlapping types/extensions, the last file wins.\n *\n * @param file (String) path of file to load.\n */\nMime.prototype.load = function(file) {\n this._loading = file;\n // Read file and split into lines\n var map = {},\n content = fs.readFileSync(file, 'ascii'),\n lines = content.split(/[\\r\\n]+/);\n\n lines.forEach(function(line) {\n // Clean up whitespace/comments, and split into fields\n var fields = line.replace(/\\s*#.*|^\\s*|\\s*$/g, '').split(/\\s+/);\n map[fields.shift()] = fields;\n });\n\n this.define(map);\n\n this._loading = null;\n};\n\n/**\n * Lookup a mime type based on extension\n */\nMime.prototype.lookup = function(path, fallback) {\n var ext = path.replace(/^.*[\\.\\/\\\\]/, '').toLowerCase();\n\n return this.types[ext] || fallback || this.default_type;\n};\n\n/**\n * Return file extension associated with a mime type\n */\nMime.prototype.extension = function(mimeType) {\n var type = mimeType.match(/^\\s*([^;\\s]*)(?:;|\\s|$)/)[1].toLowerCase();\n return this.extensions[type];\n};\n\n// Default instance\nvar mime = new Mime();\n\n// Define built-in types\nmime.define(require('./types.json'));\n\n// Default type\nmime.default_type = mime.lookup('bin');\n\n//\n// Additional API specific to the default instance\n//\n\nmime.Mime = Mime;\n\n/**\n * Lookup a charset based on mime type.\n */\nmime.charsets = {\n lookup: function(mimeType, fallback) {\n // Assume text types are utf8\n return (/^text\\/|^application\\/(javascript|json)/).test(mimeType) ? 'UTF-8' : fallback;\n }\n};\n\nmodule.exports = mime;\n", "/**\n * Helpers.\n */\n\nvar s = 1000;\nvar m = s * 60;\nvar h = m * 60;\nvar d = h * 24;\nvar w = d * 7;\nvar y = d * 365.25;\n\n/**\n * Parse or format the given `val`.\n *\n * Options:\n *\n * - `long` verbose formatting [false]\n *\n * @param {String|Number} val\n * @param {Object} [options]\n * @throws {Error} throw an error if val is not a non-empty string or a number\n * @return {String|Number}\n * @api public\n */\n\nmodule.exports = function (val, options) {\n options = options || {};\n var type = typeof val;\n if (type === 'string' && val.length > 0) {\n return parse(val);\n } else if (type === 'number' && isFinite(val)) {\n return options.long ? fmtLong(val) : fmtShort(val);\n }\n throw new Error(\n 'val is not a non-empty string or a valid number. val=' +\n JSON.stringify(val)\n );\n};\n\n/**\n * Parse the given `str` and return milliseconds.\n *\n * @param {String} str\n * @return {Number}\n * @api private\n */\n\nfunction parse(str) {\n str = String(str);\n if (str.length > 100) {\n return;\n }\n var match = /^(-?(?:\\d+)?\\.?\\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(\n str\n );\n if (!match) {\n return;\n }\n var n = parseFloat(match[1]);\n var type = (match[2] || 'ms').toLowerCase();\n switch (type) {\n case 'years':\n case 'year':\n case 'yrs':\n case 'yr':\n case 'y':\n return n * y;\n case 'weeks':\n case 'week':\n case 'w':\n return n * w;\n case 'days':\n case 'day':\n case 'd':\n return n * d;\n case 'hours':\n case 'hour':\n case 'hrs':\n case 'hr':\n case 'h':\n return n * h;\n case 'minutes':\n case 'minute':\n case 'mins':\n case 'min':\n case 'm':\n return n * m;\n case 'seconds':\n case 'second':\n case 'secs':\n case 'sec':\n case 's':\n return n * s;\n case 'milliseconds':\n case 'millisecond':\n case 'msecs':\n case 'msec':\n case 'ms':\n return n;\n default:\n return undefined;\n }\n}\n\n/**\n * Short format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtShort(ms) {\n var msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return Math.round(ms / d) + 'd';\n }\n if (msAbs >= h) {\n return Math.round(ms / h) + 'h';\n }\n if (msAbs >= m) {\n return Math.round(ms / m) + 'm';\n }\n if (msAbs >= s) {\n return Math.round(ms / s) + 's';\n }\n return ms + 'ms';\n}\n\n/**\n * Long format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtLong(ms) {\n var msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return plural(ms, msAbs, d, 'day');\n }\n if (msAbs >= h) {\n return plural(ms, msAbs, h, 'hour');\n }\n if (msAbs >= m) {\n return plural(ms, msAbs, m, 'minute');\n }\n if (msAbs >= s) {\n return plural(ms, msAbs, s, 'second');\n }\n return ms + ' ms';\n}\n\n/**\n * Pluralization helper.\n */\n\nfunction plural(ms, msAbs, n, name) {\n var isPlural = msAbs >= n * 1.5;\n return Math.round(ms / n) + ' ' + name + (isPlural ? 's' : '');\n}\n", "/*!\n * range-parser\n * Copyright(c) 2012-2014 TJ Holowaychuk\n * Copyright(c) 2015-2016 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict'\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = rangeParser\n\n/**\n * Parse \"Range\" header `str` relative to the given file `size`.\n *\n * @param {Number} size\n * @param {String} str\n * @param {Object} [options]\n * @return {Array}\n * @public\n */\n\nfunction rangeParser (size, str, options) {\n if (typeof str !== 'string') {\n throw new TypeError('argument str must be a string')\n }\n\n var index = str.indexOf('=')\n\n if (index === -1) {\n return -2\n }\n\n // split the range string\n var arr = str.slice(index + 1).split(',')\n var ranges = []\n\n // add ranges type\n ranges.type = str.slice(0, index)\n\n // parse all ranges\n for (var i = 0; i < arr.length; i++) {\n var range = arr[i].split('-')\n var start = parseInt(range[0], 10)\n var end = parseInt(range[1], 10)\n\n // -nnn\n if (isNaN(start)) {\n start = size - end\n end = size - 1\n // nnn-\n } else if (isNaN(end)) {\n end = size - 1\n }\n\n // limit last-byte-pos to current length\n if (end > size - 1) {\n end = size - 1\n }\n\n // invalid or unsatisifiable\n if (isNaN(start) || isNaN(end) || start > end || start < 0) {\n continue\n }\n\n // add range\n ranges.push({\n start: start,\n end: end\n })\n }\n\n if (ranges.length < 1) {\n // unsatisifiable\n return -1\n }\n\n return options && options.combine\n ? combineRanges(ranges)\n : ranges\n}\n\n/**\n * Combine overlapping & adjacent ranges.\n * @private\n */\n\nfunction combineRanges (ranges) {\n var ordered = ranges.map(mapWithIndex).sort(sortByRangeStart)\n\n for (var j = 0, i = 1; i < ordered.length; i++) {\n var range = ordered[i]\n var current = ordered[j]\n\n if (range.start > current.end + 1) {\n // next range\n ordered[++j] = range\n } else if (range.end > current.end) {\n // extend range\n current.end = range.end\n current.index = Math.min(current.index, range.index)\n }\n }\n\n // trim ordered array\n ordered.length = j + 1\n\n // generate combined range\n var combined = ordered.sort(sortByRangeIndex).map(mapWithoutIndex)\n\n // copy ranges type\n combined.type = ranges.type\n\n return combined\n}\n\n/**\n * Map function to add index value to ranges.\n * @private\n */\n\nfunction mapWithIndex (range, index) {\n return {\n start: range.start,\n end: range.end,\n index: index\n }\n}\n\n/**\n * Map function to remove index value from ranges.\n * @private\n */\n\nfunction mapWithoutIndex (range) {\n return {\n start: range.start,\n end: range.end\n }\n}\n\n/**\n * Sort function to sort ranges by index.\n * @private\n */\n\nfunction sortByRangeIndex (a, b) {\n return a.index - b.index\n}\n\n/**\n * Sort function to sort ranges by start position.\n * @private\n */\n\nfunction sortByRangeStart (a, b) {\n return a.start - b.start\n}\n", "/*!\n * send\n * Copyright(c) 2012 TJ Holowaychuk\n * Copyright(c) 2014-2022 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict'\n\n/**\n * Module dependencies.\n * @private\n */\n\nvar createError = require('http-errors')\nvar debug = require('debug')('send')\nvar deprecate = require('depd')('send')\nvar destroy = require('destroy')\nvar encodeUrl = require('encodeurl')\nvar escapeHtml = require('escape-html')\nvar etag = require('etag')\nvar fresh = require('fresh')\nvar fs = require('fs')\nvar mime = require('mime')\nvar ms = require('ms')\nvar onFinished = require('on-finished')\nvar parseRange = require('range-parser')\nvar path = require('path')\nvar statuses = require('statuses')\nvar Stream = require('stream')\nvar util = require('util')\n\n/**\n * Path function references.\n * @private\n */\n\nvar extname = path.extname\nvar join = path.join\nvar normalize = path.normalize\nvar resolve = path.resolve\nvar sep = path.sep\n\n/**\n * Regular expression for identifying a bytes Range header.\n * @private\n */\n\nvar BYTES_RANGE_REGEXP = /^ *bytes=/\n\n/**\n * Maximum value allowed for the max age.\n * @private\n */\n\nvar MAX_MAXAGE = 60 * 60 * 24 * 365 * 1000 // 1 year\n\n/**\n * Regular expression to match a path with a directory up component.\n * @private\n */\n\nvar UP_PATH_REGEXP = /(?:^|[\\\\/])\\.\\.(?:[\\\\/]|$)/\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = send\nmodule.exports.mime = mime\n\n/**\n * Return a `SendStream` for `req` and `path`.\n *\n * @param {object} req\n * @param {string} path\n * @param {object} [options]\n * @return {SendStream}\n * @public\n */\n\nfunction send (req, path, options) {\n return new SendStream(req, path, options)\n}\n\n/**\n * Initialize a `SendStream` with the given `path`.\n *\n * @param {Request} req\n * @param {String} path\n * @param {object} [options]\n * @private\n */\n\nfunction SendStream (req, path, options) {\n Stream.call(this)\n\n var opts = options || {}\n\n this.options = opts\n this.path = path\n this.req = req\n\n this._acceptRanges = opts.acceptRanges !== undefined\n ? Boolean(opts.acceptRanges)\n : true\n\n this._cacheControl = opts.cacheControl !== undefined\n ? Boolean(opts.cacheControl)\n : true\n\n this._etag = opts.etag !== undefined\n ? Boolean(opts.etag)\n : true\n\n this._dotfiles = opts.dotfiles !== undefined\n ? opts.dotfiles\n : 'ignore'\n\n if (this._dotfiles !== 'ignore' && this._dotfiles !== 'allow' && this._dotfiles !== 'deny') {\n throw new TypeError('dotfiles option must be \"allow\", \"deny\", or \"ignore\"')\n }\n\n this._hidden = Boolean(opts.hidden)\n\n if (opts.hidden !== undefined) {\n deprecate('hidden: use dotfiles: \\'' + (this._hidden ? 'allow' : 'ignore') + '\\' instead')\n }\n\n // legacy support\n if (opts.dotfiles === undefined) {\n this._dotfiles = undefined\n }\n\n this._extensions = opts.extensions !== undefined\n ? normalizeList(opts.extensions, 'extensions option')\n : []\n\n this._immutable = opts.immutable !== undefined\n ? Boolean(opts.immutable)\n : false\n\n this._index = opts.index !== undefined\n ? normalizeList(opts.index, 'index option')\n : ['index.html']\n\n this._lastModified = opts.lastModified !== undefined\n ? Boolean(opts.lastModified)\n : true\n\n this._maxage = opts.maxAge || opts.maxage\n this._maxage = typeof this._maxage === 'string'\n ? ms(this._maxage)\n : Number(this._maxage)\n this._maxage = !isNaN(this._maxage)\n ? Math.min(Math.max(0, this._maxage), MAX_MAXAGE)\n : 0\n\n this._root = opts.root\n ? resolve(opts.root)\n : null\n\n if (!this._root && opts.from) {\n this.from(opts.from)\n }\n}\n\n/**\n * Inherits from `Stream`.\n */\n\nutil.inherits(SendStream, Stream)\n\n/**\n * Enable or disable etag generation.\n *\n * @param {Boolean} val\n * @return {SendStream}\n * @api public\n */\n\nSendStream.prototype.etag = deprecate.function(function etag (val) {\n this._etag = Boolean(val)\n debug('etag %s', this._etag)\n return this\n}, 'send.etag: pass etag as option')\n\n/**\n * Enable or disable \"hidden\" (dot) files.\n *\n * @param {Boolean} path\n * @return {SendStream}\n * @api public\n */\n\nSendStream.prototype.hidden = deprecate.function(function hidden (val) {\n this._hidden = Boolean(val)\n this._dotfiles = undefined\n debug('hidden %s', this._hidden)\n return this\n}, 'send.hidden: use dotfiles option')\n\n/**\n * Set index `paths`, set to a falsy\n * value to disable index support.\n *\n * @param {String|Boolean|Array} paths\n * @return {SendStream}\n * @api public\n */\n\nSendStream.prototype.index = deprecate.function(function index (paths) {\n var index = !paths ? [] : normalizeList(paths, 'paths argument')\n debug('index %o', paths)\n this._index = index\n return this\n}, 'send.index: pass index as option')\n\n/**\n * Set root `path`.\n *\n * @param {String} path\n * @return {SendStream}\n * @api public\n */\n\nSendStream.prototype.root = function root (path) {\n this._root = resolve(String(path))\n debug('root %s', this._root)\n return this\n}\n\nSendStream.prototype.from = deprecate.function(SendStream.prototype.root,\n 'send.from: pass root as option')\n\nSendStream.prototype.root = deprecate.function(SendStream.prototype.root,\n 'send.root: pass root as option')\n\n/**\n * Set max-age to `maxAge`.\n *\n * @param {Number} maxAge\n * @return {SendStream}\n * @api public\n */\n\nSendStream.prototype.maxage = deprecate.function(function maxage (maxAge) {\n this._maxage = typeof maxAge === 'string'\n ? ms(maxAge)\n : Number(maxAge)\n this._maxage = !isNaN(this._maxage)\n ? Math.min(Math.max(0, this._maxage), MAX_MAXAGE)\n : 0\n debug('max-age %d', this._maxage)\n return this\n}, 'send.maxage: pass maxAge as option')\n\n/**\n * Emit error with `status`.\n *\n * @param {number} status\n * @param {Error} [err]\n * @private\n */\n\nSendStream.prototype.error = function error (status, err) {\n // emit if listeners instead of responding\n if (hasListeners(this, 'error')) {\n return this.emit('error', createHttpError(status, err))\n }\n\n var res = this.res\n var msg = statuses.message[status] || String(status)\n var doc = createHtmlDocument('Error', escapeHtml(msg))\n\n // clear existing headers\n clearHeaders(res)\n\n // add error headers\n if (err && err.headers) {\n setHeaders(res, err.headers)\n }\n\n // send basic response\n res.statusCode = status\n res.setHeader('Content-Type', 'text/html; charset=UTF-8')\n res.setHeader('Content-Length', Buffer.byteLength(doc))\n res.setHeader('Content-Security-Policy', \"default-src 'none'\")\n res.setHeader('X-Content-Type-Options', 'nosniff')\n res.end(doc)\n}\n\n/**\n * Check if the pathname ends with \"/\".\n *\n * @return {boolean}\n * @private\n */\n\nSendStream.prototype.hasTrailingSlash = function hasTrailingSlash () {\n return this.path[this.path.length - 1] === '/'\n}\n\n/**\n * Check if this is a conditional GET request.\n *\n * @return {Boolean}\n * @api private\n */\n\nSendStream.prototype.isConditionalGET = function isConditionalGET () {\n return this.req.headers['if-match'] ||\n this.req.headers['if-unmodified-since'] ||\n this.req.headers['if-none-match'] ||\n this.req.headers['if-modified-since']\n}\n\n/**\n * Check if the request preconditions failed.\n *\n * @return {boolean}\n * @private\n */\n\nSendStream.prototype.isPreconditionFailure = function isPreconditionFailure () {\n var req = this.req\n var res = this.res\n\n // if-match\n var match = req.headers['if-match']\n if (match) {\n var etag = res.getHeader('ETag')\n return !etag || (match !== '*' && parseTokenList(match).every(function (match) {\n return match !== etag && match !== 'W/' + etag && 'W/' + match !== etag\n }))\n }\n\n // if-unmodified-since\n var unmodifiedSince = parseHttpDate(req.headers['if-unmodified-since'])\n if (!isNaN(unmodifiedSince)) {\n var lastModified = parseHttpDate(res.getHeader('Last-Modified'))\n return isNaN(lastModified) || lastModified > unmodifiedSince\n }\n\n return false\n}\n\n/**\n * Strip various content header fields for a change in entity.\n *\n * @private\n */\n\nSendStream.prototype.removeContentHeaderFields = function removeContentHeaderFields () {\n var res = this.res\n\n res.removeHeader('Content-Encoding')\n res.removeHeader('Content-Language')\n res.removeHeader('Content-Length')\n res.removeHeader('Content-Range')\n res.removeHeader('Content-Type')\n}\n\n/**\n * Respond with 304 not modified.\n *\n * @api private\n */\n\nSendStream.prototype.notModified = function notModified () {\n var res = this.res\n debug('not modified')\n this.removeContentHeaderFields()\n res.statusCode = 304\n res.end()\n}\n\n/**\n * Raise error that headers already sent.\n *\n * @api private\n */\n\nSendStream.prototype.headersAlreadySent = function headersAlreadySent () {\n var err = new Error('Can\\'t set headers after they are sent.')\n debug('headers already sent')\n this.error(500, err)\n}\n\n/**\n * Check if the request is cacheable, aka\n * responded with 2xx or 304 (see RFC 2616 section 14.2{5,6}).\n *\n * @return {Boolean}\n * @api private\n */\n\nSendStream.prototype.isCachable = function isCachable () {\n var statusCode = this.res.statusCode\n return (statusCode >= 200 && statusCode < 300) ||\n statusCode === 304\n}\n\n/**\n * Handle stat() error.\n *\n * @param {Error} error\n * @private\n */\n\nSendStream.prototype.onStatError = function onStatError (error) {\n switch (error.code) {\n case 'ENAMETOOLONG':\n case 'ENOENT':\n case 'ENOTDIR':\n this.error(404, error)\n break\n default:\n this.error(500, error)\n break\n }\n}\n\n/**\n * Check if the cache is fresh.\n *\n * @return {Boolean}\n * @api private\n */\n\nSendStream.prototype.isFresh = function isFresh () {\n return fresh(this.req.headers, {\n etag: this.res.getHeader('ETag'),\n 'last-modified': this.res.getHeader('Last-Modified')\n })\n}\n\n/**\n * Check if the range is fresh.\n *\n * @return {Boolean}\n * @api private\n */\n\nSendStream.prototype.isRangeFresh = function isRangeFresh () {\n var ifRange = this.req.headers['if-range']\n\n if (!ifRange) {\n return true\n }\n\n // if-range as etag\n if (ifRange.indexOf('\"') !== -1) {\n var etag = this.res.getHeader('ETag')\n return Boolean(etag && ifRange.indexOf(etag) !== -1)\n }\n\n // if-range as modified date\n var lastModified = this.res.getHeader('Last-Modified')\n return parseHttpDate(lastModified) <= parseHttpDate(ifRange)\n}\n\n/**\n * Redirect to path.\n *\n * @param {string} path\n * @private\n */\n\nSendStream.prototype.redirect = function redirect (path) {\n var res = this.res\n\n if (hasListeners(this, 'directory')) {\n this.emit('directory', res, path)\n return\n }\n\n if (this.hasTrailingSlash()) {\n this.error(403)\n return\n }\n\n var loc = encodeUrl(collapseLeadingSlashes(this.path + '/'))\n var doc = createHtmlDocument('Redirecting', 'Redirecting to ' +\n escapeHtml(loc) + '')\n\n // redirect\n res.statusCode = 301\n res.setHeader('Content-Type', 'text/html; charset=UTF-8')\n res.setHeader('Content-Length', Buffer.byteLength(doc))\n res.setHeader('Content-Security-Policy', \"default-src 'none'\")\n res.setHeader('X-Content-Type-Options', 'nosniff')\n res.setHeader('Location', loc)\n res.end(doc)\n}\n\n/**\n * Pipe to `res.\n *\n * @param {Stream} res\n * @return {Stream} res\n * @api public\n */\n\nSendStream.prototype.pipe = function pipe (res) {\n // root path\n var root = this._root\n\n // references\n this.res = res\n\n // decode the path\n var path = decode(this.path)\n if (path === -1) {\n this.error(400)\n return res\n }\n\n // null byte(s)\n if (~path.indexOf('\\0')) {\n this.error(400)\n return res\n }\n\n var parts\n if (root !== null) {\n // normalize\n if (path) {\n path = normalize('.' + sep + path)\n }\n\n // malicious path\n if (UP_PATH_REGEXP.test(path)) {\n debug('malicious path \"%s\"', path)\n this.error(403)\n return res\n }\n\n // explode path parts\n parts = path.split(sep)\n\n // join / normalize from optional root dir\n path = normalize(join(root, path))\n } else {\n // \"..\" is malicious without \"root\"\n if (UP_PATH_REGEXP.test(path)) {\n debug('malicious path \"%s\"', path)\n this.error(403)\n return res\n }\n\n // explode path parts\n parts = normalize(path).split(sep)\n\n // resolve the path\n path = resolve(path)\n }\n\n // dotfile handling\n if (containsDotFile(parts)) {\n var access = this._dotfiles\n\n // legacy support\n if (access === undefined) {\n access = parts[parts.length - 1][0] === '.'\n ? (this._hidden ? 'allow' : 'ignore')\n : 'allow'\n }\n\n debug('%s dotfile \"%s\"', access, path)\n switch (access) {\n case 'allow':\n break\n case 'deny':\n this.error(403)\n return res\n case 'ignore':\n default:\n this.error(404)\n return res\n }\n }\n\n // index file support\n if (this._index.length && this.hasTrailingSlash()) {\n this.sendIndex(path)\n return res\n }\n\n this.sendFile(path)\n return res\n}\n\n/**\n * Transfer `path`.\n *\n * @param {String} path\n * @api public\n */\n\nSendStream.prototype.send = function send (path, stat) {\n var len = stat.size\n var options = this.options\n var opts = {}\n var res = this.res\n var req = this.req\n var ranges = req.headers.range\n var offset = options.start || 0\n\n if (headersSent(res)) {\n // impossible to send now\n this.headersAlreadySent()\n return\n }\n\n debug('pipe \"%s\"', path)\n\n // set header fields\n this.setHeader(path, stat)\n\n // set content-type\n this.type(path)\n\n // conditional GET support\n if (this.isConditionalGET()) {\n if (this.isPreconditionFailure()) {\n this.error(412)\n return\n }\n\n if (this.isCachable() && this.isFresh()) {\n this.notModified()\n return\n }\n }\n\n // adjust len to start/end options\n len = Math.max(0, len - offset)\n if (options.end !== undefined) {\n var bytes = options.end - offset + 1\n if (len > bytes) len = bytes\n }\n\n // Range support\n if (this._acceptRanges && BYTES_RANGE_REGEXP.test(ranges)) {\n // parse\n ranges = parseRange(len, ranges, {\n combine: true\n })\n\n // If-Range support\n if (!this.isRangeFresh()) {\n debug('range stale')\n ranges = -2\n }\n\n // unsatisfiable\n if (ranges === -1) {\n debug('range unsatisfiable')\n\n // Content-Range\n res.setHeader('Content-Range', contentRange('bytes', len))\n\n // 416 Requested Range Not Satisfiable\n return this.error(416, {\n headers: { 'Content-Range': res.getHeader('Content-Range') }\n })\n }\n\n // valid (syntactically invalid/multiple ranges are treated as a regular response)\n if (ranges !== -2 && ranges.length === 1) {\n debug('range %j', ranges)\n\n // Content-Range\n res.statusCode = 206\n res.setHeader('Content-Range', contentRange('bytes', len, ranges[0]))\n\n // adjust for requested range\n offset += ranges[0].start\n len = ranges[0].end - ranges[0].start + 1\n }\n }\n\n // clone options\n for (var prop in options) {\n opts[prop] = options[prop]\n }\n\n // set read options\n opts.start = offset\n opts.end = Math.max(offset, offset + len - 1)\n\n // content-length\n res.setHeader('Content-Length', len)\n\n // HEAD support\n if (req.method === 'HEAD') {\n res.end()\n return\n }\n\n this.stream(path, opts)\n}\n\n/**\n * Transfer file for `path`.\n *\n * @param {String} path\n * @api private\n */\nSendStream.prototype.sendFile = function sendFile (path) {\n var i = 0\n var self = this\n\n debug('stat \"%s\"', path)\n fs.stat(path, function onstat (err, stat) {\n if (err && err.code === 'ENOENT' && !extname(path) && path[path.length - 1] !== sep) {\n // not found, check extensions\n return next(err)\n }\n if (err) return self.onStatError(err)\n if (stat.isDirectory()) return self.redirect(path)\n self.emit('file', path, stat)\n self.send(path, stat)\n })\n\n function next (err) {\n if (self._extensions.length <= i) {\n return err\n ? self.onStatError(err)\n : self.error(404)\n }\n\n var p = path + '.' + self._extensions[i++]\n\n debug('stat \"%s\"', p)\n fs.stat(p, function (err, stat) {\n if (err) return next(err)\n if (stat.isDirectory()) return next()\n self.emit('file', p, stat)\n self.send(p, stat)\n })\n }\n}\n\n/**\n * Transfer index for `path`.\n *\n * @param {String} path\n * @api private\n */\nSendStream.prototype.sendIndex = function sendIndex (path) {\n var i = -1\n var self = this\n\n function next (err) {\n if (++i >= self._index.length) {\n if (err) return self.onStatError(err)\n return self.error(404)\n }\n\n var p = join(path, self._index[i])\n\n debug('stat \"%s\"', p)\n fs.stat(p, function (err, stat) {\n if (err) return next(err)\n if (stat.isDirectory()) return next()\n self.emit('file', p, stat)\n self.send(p, stat)\n })\n }\n\n next()\n}\n\n/**\n * Stream `path` to the response.\n *\n * @param {String} path\n * @param {Object} options\n * @api private\n */\n\nSendStream.prototype.stream = function stream (path, options) {\n var self = this\n var res = this.res\n\n // pipe\n var stream = fs.createReadStream(path, options)\n this.emit('stream', stream)\n stream.pipe(res)\n\n // cleanup\n function cleanup () {\n destroy(stream, true)\n }\n\n // response finished, cleanup\n onFinished(res, cleanup)\n\n // error handling\n stream.on('error', function onerror (err) {\n // clean up stream early\n cleanup()\n\n // error\n self.onStatError(err)\n })\n\n // end\n stream.on('end', function onend () {\n self.emit('end')\n })\n}\n\n/**\n * Set content-type based on `path`\n * if it hasn't been explicitly set.\n *\n * @param {String} path\n * @api private\n */\n\nSendStream.prototype.type = function type (path) {\n var res = this.res\n\n if (res.getHeader('Content-Type')) return\n\n var type = mime.lookup(path)\n\n if (!type) {\n debug('no content-type')\n return\n }\n\n var charset = mime.charsets.lookup(type)\n\n debug('content-type %s', type)\n res.setHeader('Content-Type', type + (charset ? '; charset=' + charset : ''))\n}\n\n/**\n * Set response header fields, most\n * fields may be pre-defined.\n *\n * @param {String} path\n * @param {Object} stat\n * @api private\n */\n\nSendStream.prototype.setHeader = function setHeader (path, stat) {\n var res = this.res\n\n this.emit('headers', res, path, stat)\n\n if (this._acceptRanges && !res.getHeader('Accept-Ranges')) {\n debug('accept ranges')\n res.setHeader('Accept-Ranges', 'bytes')\n }\n\n if (this._cacheControl && !res.getHeader('Cache-Control')) {\n var cacheControl = 'public, max-age=' + Math.floor(this._maxage / 1000)\n\n if (this._immutable) {\n cacheControl += ', immutable'\n }\n\n debug('cache-control %s', cacheControl)\n res.setHeader('Cache-Control', cacheControl)\n }\n\n if (this._lastModified && !res.getHeader('Last-Modified')) {\n var modified = stat.mtime.toUTCString()\n debug('modified %s', modified)\n res.setHeader('Last-Modified', modified)\n }\n\n if (this._etag && !res.getHeader('ETag')) {\n var val = etag(stat)\n debug('etag %s', val)\n res.setHeader('ETag', val)\n }\n}\n\n/**\n * Clear all headers from a response.\n *\n * @param {object} res\n * @private\n */\n\nfunction clearHeaders (res) {\n var headers = getHeaderNames(res)\n\n for (var i = 0; i < headers.length; i++) {\n res.removeHeader(headers[i])\n }\n}\n\n/**\n * Collapse all leading slashes into a single slash\n *\n * @param {string} str\n * @private\n */\nfunction collapseLeadingSlashes (str) {\n for (var i = 0; i < str.length; i++) {\n if (str[i] !== '/') {\n break\n }\n }\n\n return i > 1\n ? '/' + str.substr(i)\n : str\n}\n\n/**\n * Determine if path parts contain a dotfile.\n *\n * @api private\n */\n\nfunction containsDotFile (parts) {\n for (var i = 0; i < parts.length; i++) {\n var part = parts[i]\n if (part.length > 1 && part[0] === '.') {\n return true\n }\n }\n\n return false\n}\n\n/**\n * Create a Content-Range header.\n *\n * @param {string} type\n * @param {number} size\n * @param {array} [range]\n */\n\nfunction contentRange (type, size, range) {\n return type + ' ' + (range ? range.start + '-' + range.end : '*') + '/' + size\n}\n\n/**\n * Create a minimal HTML document.\n *\n * @param {string} title\n * @param {string} body\n * @private\n */\n\nfunction createHtmlDocument (title, body) {\n return '\\n' +\n '\\n' +\n '\\n' +\n '\\n' +\n '' + title + '\\n' +\n '\\n' +\n '\\n' +\n '
' + body + '
\\n' +\n '\\n' +\n '\\n'\n}\n\n/**\n * Create a HttpError object from simple arguments.\n *\n * @param {number} status\n * @param {Error|object} err\n * @private\n */\n\nfunction createHttpError (status, err) {\n if (!err) {\n return createError(status)\n }\n\n return err instanceof Error\n ? createError(status, err, { expose: false })\n : createError(status, err)\n}\n\n/**\n * decodeURIComponent.\n *\n * Allows V8 to only deoptimize this fn instead of all\n * of send().\n *\n * @param {String} path\n * @api private\n */\n\nfunction decode (path) {\n try {\n return decodeURIComponent(path)\n } catch (err) {\n return -1\n }\n}\n\n/**\n * Get the header names on a respnse.\n *\n * @param {object} res\n * @returns {array[string]}\n * @private\n */\n\nfunction getHeaderNames (res) {\n return typeof res.getHeaderNames !== 'function'\n ? Object.keys(res._headers || {})\n : res.getHeaderNames()\n}\n\n/**\n * Determine if emitter has listeners of a given type.\n *\n * The way to do this check is done three different ways in Node.js >= 0.8\n * so this consolidates them into a minimal set using instance methods.\n *\n * @param {EventEmitter} emitter\n * @param {string} type\n * @returns {boolean}\n * @private\n */\n\nfunction hasListeners (emitter, type) {\n var count = typeof emitter.listenerCount !== 'function'\n ? emitter.listeners(type).length\n : emitter.listenerCount(type)\n\n return count > 0\n}\n\n/**\n * Determine if the response headers have been sent.\n *\n * @param {object} res\n * @returns {boolean}\n * @private\n */\n\nfunction headersSent (res) {\n return typeof res.headersSent !== 'boolean'\n ? Boolean(res._header)\n : res.headersSent\n}\n\n/**\n * Normalize the index option into an array.\n *\n * @param {boolean|string|array} val\n * @param {string} name\n * @private\n */\n\nfunction normalizeList (val, name) {\n var list = [].concat(val || [])\n\n for (var i = 0; i < list.length; i++) {\n if (typeof list[i] !== 'string') {\n throw new TypeError(name + ' must be array of strings or false')\n }\n }\n\n return list\n}\n\n/**\n * Parse an HTTP Date into a number.\n *\n * @param {string} date\n * @private\n */\n\nfunction parseHttpDate (date) {\n var timestamp = date && Date.parse(date)\n\n return typeof timestamp === 'number'\n ? timestamp\n : NaN\n}\n\n/**\n * Parse a HTTP token list.\n *\n * @param {string} str\n * @private\n */\n\nfunction parseTokenList (str) {\n var end = 0\n var list = []\n var start = 0\n\n // gather tokens\n for (var i = 0, len = str.length; i < len; i++) {\n switch (str.charCodeAt(i)) {\n case 0x20: /* */\n if (start === end) {\n start = end = i + 1\n }\n break\n case 0x2c: /* , */\n if (start !== end) {\n list.push(str.substring(start, end))\n }\n start = end = i + 1\n break\n default:\n end = i + 1\n break\n }\n }\n\n // final token\n if (start !== end) {\n list.push(str.substring(start, end))\n }\n\n return list\n}\n\n/**\n * Set an object of headers on a response.\n *\n * @param {object} res\n * @param {object} headers\n * @private\n */\n\nfunction setHeaders (res, headers) {\n var keys = Object.keys(headers)\n\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i]\n res.setHeader(key, headers[key])\n }\n}\n", "/*!\n * forwarded\n * Copyright(c) 2014-2017 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict'\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = forwarded\n\n/**\n * Get all addresses in the request, using the `X-Forwarded-For` header.\n *\n * @param {object} req\n * @return {array}\n * @public\n */\n\nfunction forwarded (req) {\n if (!req) {\n throw new TypeError('argument req is required')\n }\n\n // simple header parsing\n var proxyAddrs = parse(req.headers['x-forwarded-for'] || '')\n var socketAddr = getSocketAddr(req)\n var addrs = [socketAddr].concat(proxyAddrs)\n\n // return all addresses\n return addrs\n}\n\n/**\n * Get the socket address for a request.\n *\n * @param {object} req\n * @return {string}\n * @private\n */\n\nfunction getSocketAddr (req) {\n return req.socket\n ? req.socket.remoteAddress\n : req.connection.remoteAddress\n}\n\n/**\n * Parse the X-Forwarded-For header.\n *\n * @param {string} header\n * @private\n */\n\nfunction parse (header) {\n var end = header.length\n var list = []\n var start = header.length\n\n // gather addresses, backwards\n for (var i = header.length - 1; i >= 0; i--) {\n switch (header.charCodeAt(i)) {\n case 0x20: /* */\n if (start === end) {\n start = end = i\n }\n break\n case 0x2c: /* , */\n if (start !== end) {\n list.push(header.substring(start, end))\n }\n start = end = i\n break\n default:\n start = i\n break\n }\n }\n\n // final address\n if (start !== end) {\n list.push(header.substring(start, end))\n }\n\n return list\n}\n", "(function() {\n var expandIPv6, ipaddr, ipv4Part, ipv4Regexes, ipv6Part, ipv6Regexes, matchCIDR, root, zoneIndex;\n\n ipaddr = {};\n\n root = this;\n\n if ((typeof module !== \"undefined\" && module !== null) && module.exports) {\n module.exports = ipaddr;\n } else {\n root['ipaddr'] = ipaddr;\n }\n\n matchCIDR = function(first, second, partSize, cidrBits) {\n var part, shift;\n if (first.length !== second.length) {\n throw new Error(\"ipaddr: cannot match CIDR for objects with different lengths\");\n }\n part = 0;\n while (cidrBits > 0) {\n shift = partSize - cidrBits;\n if (shift < 0) {\n shift = 0;\n }\n if (first[part] >> shift !== second[part] >> shift) {\n return false;\n }\n cidrBits -= partSize;\n part += 1;\n }\n return true;\n };\n\n ipaddr.subnetMatch = function(address, rangeList, defaultName) {\n var k, len, rangeName, rangeSubnets, subnet;\n if (defaultName == null) {\n defaultName = 'unicast';\n }\n for (rangeName in rangeList) {\n rangeSubnets = rangeList[rangeName];\n if (rangeSubnets[0] && !(rangeSubnets[0] instanceof Array)) {\n rangeSubnets = [rangeSubnets];\n }\n for (k = 0, len = rangeSubnets.length; k < len; k++) {\n subnet = rangeSubnets[k];\n if (address.kind() === subnet[0].kind()) {\n if (address.match.apply(address, subnet)) {\n return rangeName;\n }\n }\n }\n }\n return defaultName;\n };\n\n ipaddr.IPv4 = (function() {\n function IPv4(octets) {\n var k, len, octet;\n if (octets.length !== 4) {\n throw new Error(\"ipaddr: ipv4 octet count should be 4\");\n }\n for (k = 0, len = octets.length; k < len; k++) {\n octet = octets[k];\n if (!((0 <= octet && octet <= 255))) {\n throw new Error(\"ipaddr: ipv4 octet should fit in 8 bits\");\n }\n }\n this.octets = octets;\n }\n\n IPv4.prototype.kind = function() {\n return 'ipv4';\n };\n\n IPv4.prototype.toString = function() {\n return this.octets.join(\".\");\n };\n\n IPv4.prototype.toNormalizedString = function() {\n return this.toString();\n };\n\n IPv4.prototype.toByteArray = function() {\n return this.octets.slice(0);\n };\n\n IPv4.prototype.match = function(other, cidrRange) {\n var ref;\n if (cidrRange === void 0) {\n ref = other, other = ref[0], cidrRange = ref[1];\n }\n if (other.kind() !== 'ipv4') {\n throw new Error(\"ipaddr: cannot match ipv4 address with non-ipv4 one\");\n }\n return matchCIDR(this.octets, other.octets, 8, cidrRange);\n };\n\n IPv4.prototype.SpecialRanges = {\n unspecified: [[new IPv4([0, 0, 0, 0]), 8]],\n broadcast: [[new IPv4([255, 255, 255, 255]), 32]],\n multicast: [[new IPv4([224, 0, 0, 0]), 4]],\n linkLocal: [[new IPv4([169, 254, 0, 0]), 16]],\n loopback: [[new IPv4([127, 0, 0, 0]), 8]],\n carrierGradeNat: [[new IPv4([100, 64, 0, 0]), 10]],\n \"private\": [[new IPv4([10, 0, 0, 0]), 8], [new IPv4([172, 16, 0, 0]), 12], [new IPv4([192, 168, 0, 0]), 16]],\n reserved: [[new IPv4([192, 0, 0, 0]), 24], [new IPv4([192, 0, 2, 0]), 24], [new IPv4([192, 88, 99, 0]), 24], [new IPv4([198, 51, 100, 0]), 24], [new IPv4([203, 0, 113, 0]), 24], [new IPv4([240, 0, 0, 0]), 4]]\n };\n\n IPv4.prototype.range = function() {\n return ipaddr.subnetMatch(this, this.SpecialRanges);\n };\n\n IPv4.prototype.toIPv4MappedAddress = function() {\n return ipaddr.IPv6.parse(\"::ffff:\" + (this.toString()));\n };\n\n IPv4.prototype.prefixLengthFromSubnetMask = function() {\n var cidr, i, k, octet, stop, zeros, zerotable;\n zerotable = {\n 0: 8,\n 128: 7,\n 192: 6,\n 224: 5,\n 240: 4,\n 248: 3,\n 252: 2,\n 254: 1,\n 255: 0\n };\n cidr = 0;\n stop = false;\n for (i = k = 3; k >= 0; i = k += -1) {\n octet = this.octets[i];\n if (octet in zerotable) {\n zeros = zerotable[octet];\n if (stop && zeros !== 0) {\n return null;\n }\n if (zeros !== 8) {\n stop = true;\n }\n cidr += zeros;\n } else {\n return null;\n }\n }\n return 32 - cidr;\n };\n\n return IPv4;\n\n })();\n\n ipv4Part = \"(0?\\\\d+|0x[a-f0-9]+)\";\n\n ipv4Regexes = {\n fourOctet: new RegExp(\"^\" + ipv4Part + \"\\\\.\" + ipv4Part + \"\\\\.\" + ipv4Part + \"\\\\.\" + ipv4Part + \"$\", 'i'),\n longValue: new RegExp(\"^\" + ipv4Part + \"$\", 'i')\n };\n\n ipaddr.IPv4.parser = function(string) {\n var match, parseIntAuto, part, shift, value;\n parseIntAuto = function(string) {\n if (string[0] === \"0\" && string[1] !== \"x\") {\n return parseInt(string, 8);\n } else {\n return parseInt(string);\n }\n };\n if (match = string.match(ipv4Regexes.fourOctet)) {\n return (function() {\n var k, len, ref, results;\n ref = match.slice(1, 6);\n results = [];\n for (k = 0, len = ref.length; k < len; k++) {\n part = ref[k];\n results.push(parseIntAuto(part));\n }\n return results;\n })();\n } else if (match = string.match(ipv4Regexes.longValue)) {\n value = parseIntAuto(match[1]);\n if (value > 0xffffffff || value < 0) {\n throw new Error(\"ipaddr: address outside defined range\");\n }\n return ((function() {\n var k, results;\n results = [];\n for (shift = k = 0; k <= 24; shift = k += 8) {\n results.push((value >> shift) & 0xff);\n }\n return results;\n })()).reverse();\n } else {\n return null;\n }\n };\n\n ipaddr.IPv6 = (function() {\n function IPv6(parts, zoneId) {\n var i, k, l, len, part, ref;\n if (parts.length === 16) {\n this.parts = [];\n for (i = k = 0; k <= 14; i = k += 2) {\n this.parts.push((parts[i] << 8) | parts[i + 1]);\n }\n } else if (parts.length === 8) {\n this.parts = parts;\n } else {\n throw new Error(\"ipaddr: ipv6 part count should be 8 or 16\");\n }\n ref = this.parts;\n for (l = 0, len = ref.length; l < len; l++) {\n part = ref[l];\n if (!((0 <= part && part <= 0xffff))) {\n throw new Error(\"ipaddr: ipv6 part should fit in 16 bits\");\n }\n }\n if (zoneId) {\n this.zoneId = zoneId;\n }\n }\n\n IPv6.prototype.kind = function() {\n return 'ipv6';\n };\n\n IPv6.prototype.toString = function() {\n return this.toNormalizedString().replace(/((^|:)(0(:|$))+)/, '::');\n };\n\n IPv6.prototype.toRFC5952String = function() {\n var bestMatchIndex, bestMatchLength, match, regex, string;\n regex = /((^|:)(0(:|$)){2,})/g;\n string = this.toNormalizedString();\n bestMatchIndex = 0;\n bestMatchLength = -1;\n while ((match = regex.exec(string))) {\n if (match[0].length > bestMatchLength) {\n bestMatchIndex = match.index;\n bestMatchLength = match[0].length;\n }\n }\n if (bestMatchLength < 0) {\n return string;\n }\n return string.substring(0, bestMatchIndex) + '::' + string.substring(bestMatchIndex + bestMatchLength);\n };\n\n IPv6.prototype.toByteArray = function() {\n var bytes, k, len, part, ref;\n bytes = [];\n ref = this.parts;\n for (k = 0, len = ref.length; k < len; k++) {\n part = ref[k];\n bytes.push(part >> 8);\n bytes.push(part & 0xff);\n }\n return bytes;\n };\n\n IPv6.prototype.toNormalizedString = function() {\n var addr, part, suffix;\n addr = ((function() {\n var k, len, ref, results;\n ref = this.parts;\n results = [];\n for (k = 0, len = ref.length; k < len; k++) {\n part = ref[k];\n results.push(part.toString(16));\n }\n return results;\n }).call(this)).join(\":\");\n suffix = '';\n if (this.zoneId) {\n suffix = '%' + this.zoneId;\n }\n return addr + suffix;\n };\n\n IPv6.prototype.toFixedLengthString = function() {\n var addr, part, suffix;\n addr = ((function() {\n var k, len, ref, results;\n ref = this.parts;\n results = [];\n for (k = 0, len = ref.length; k < len; k++) {\n part = ref[k];\n results.push(part.toString(16).padStart(4, '0'));\n }\n return results;\n }).call(this)).join(\":\");\n suffix = '';\n if (this.zoneId) {\n suffix = '%' + this.zoneId;\n }\n return addr + suffix;\n };\n\n IPv6.prototype.match = function(other, cidrRange) {\n var ref;\n if (cidrRange === void 0) {\n ref = other, other = ref[0], cidrRange = ref[1];\n }\n if (other.kind() !== 'ipv6') {\n throw new Error(\"ipaddr: cannot match ipv6 address with non-ipv6 one\");\n }\n return matchCIDR(this.parts, other.parts, 16, cidrRange);\n };\n\n IPv6.prototype.SpecialRanges = {\n unspecified: [new IPv6([0, 0, 0, 0, 0, 0, 0, 0]), 128],\n linkLocal: [new IPv6([0xfe80, 0, 0, 0, 0, 0, 0, 0]), 10],\n multicast: [new IPv6([0xff00, 0, 0, 0, 0, 0, 0, 0]), 8],\n loopback: [new IPv6([0, 0, 0, 0, 0, 0, 0, 1]), 128],\n uniqueLocal: [new IPv6([0xfc00, 0, 0, 0, 0, 0, 0, 0]), 7],\n ipv4Mapped: [new IPv6([0, 0, 0, 0, 0, 0xffff, 0, 0]), 96],\n rfc6145: [new IPv6([0, 0, 0, 0, 0xffff, 0, 0, 0]), 96],\n rfc6052: [new IPv6([0x64, 0xff9b, 0, 0, 0, 0, 0, 0]), 96],\n '6to4': [new IPv6([0x2002, 0, 0, 0, 0, 0, 0, 0]), 16],\n teredo: [new IPv6([0x2001, 0, 0, 0, 0, 0, 0, 0]), 32],\n reserved: [[new IPv6([0x2001, 0xdb8, 0, 0, 0, 0, 0, 0]), 32]]\n };\n\n IPv6.prototype.range = function() {\n return ipaddr.subnetMatch(this, this.SpecialRanges);\n };\n\n IPv6.prototype.isIPv4MappedAddress = function() {\n return this.range() === 'ipv4Mapped';\n };\n\n IPv6.prototype.toIPv4Address = function() {\n var high, low, ref;\n if (!this.isIPv4MappedAddress()) {\n throw new Error(\"ipaddr: trying to convert a generic ipv6 address to ipv4\");\n }\n ref = this.parts.slice(-2), high = ref[0], low = ref[1];\n return new ipaddr.IPv4([high >> 8, high & 0xff, low >> 8, low & 0xff]);\n };\n\n IPv6.prototype.prefixLengthFromSubnetMask = function() {\n var cidr, i, k, part, stop, zeros, zerotable;\n zerotable = {\n 0: 16,\n 32768: 15,\n 49152: 14,\n 57344: 13,\n 61440: 12,\n 63488: 11,\n 64512: 10,\n 65024: 9,\n 65280: 8,\n 65408: 7,\n 65472: 6,\n 65504: 5,\n 65520: 4,\n 65528: 3,\n 65532: 2,\n 65534: 1,\n 65535: 0\n };\n cidr = 0;\n stop = false;\n for (i = k = 7; k >= 0; i = k += -1) {\n part = this.parts[i];\n if (part in zerotable) {\n zeros = zerotable[part];\n if (stop && zeros !== 0) {\n return null;\n }\n if (zeros !== 16) {\n stop = true;\n }\n cidr += zeros;\n } else {\n return null;\n }\n }\n return 128 - cidr;\n };\n\n return IPv6;\n\n })();\n\n ipv6Part = \"(?:[0-9a-f]+::?)+\";\n\n zoneIndex = \"%[0-9a-z]{1,}\";\n\n ipv6Regexes = {\n zoneIndex: new RegExp(zoneIndex, 'i'),\n \"native\": new RegExp(\"^(::)?(\" + ipv6Part + \")?([0-9a-f]+)?(::)?(\" + zoneIndex + \")?$\", 'i'),\n transitional: new RegExp((\"^((?:\" + ipv6Part + \")|(?:::)(?:\" + ipv6Part + \")?)\") + (ipv4Part + \"\\\\.\" + ipv4Part + \"\\\\.\" + ipv4Part + \"\\\\.\" + ipv4Part) + (\"(\" + zoneIndex + \")?$\"), 'i')\n };\n\n expandIPv6 = function(string, parts) {\n var colonCount, lastColon, part, replacement, replacementCount, zoneId;\n if (string.indexOf('::') !== string.lastIndexOf('::')) {\n return null;\n }\n zoneId = (string.match(ipv6Regexes['zoneIndex']) || [])[0];\n if (zoneId) {\n zoneId = zoneId.substring(1);\n string = string.replace(/%.+$/, '');\n }\n colonCount = 0;\n lastColon = -1;\n while ((lastColon = string.indexOf(':', lastColon + 1)) >= 0) {\n colonCount++;\n }\n if (string.substr(0, 2) === '::') {\n colonCount--;\n }\n if (string.substr(-2, 2) === '::') {\n colonCount--;\n }\n if (colonCount > parts) {\n return null;\n }\n replacementCount = parts - colonCount;\n replacement = ':';\n while (replacementCount--) {\n replacement += '0:';\n }\n string = string.replace('::', replacement);\n if (string[0] === ':') {\n string = string.slice(1);\n }\n if (string[string.length - 1] === ':') {\n string = string.slice(0, -1);\n }\n parts = (function() {\n var k, len, ref, results;\n ref = string.split(\":\");\n results = [];\n for (k = 0, len = ref.length; k < len; k++) {\n part = ref[k];\n results.push(parseInt(part, 16));\n }\n return results;\n })();\n return {\n parts: parts,\n zoneId: zoneId\n };\n };\n\n ipaddr.IPv6.parser = function(string) {\n var addr, k, len, match, octet, octets, zoneId;\n if (ipv6Regexes['native'].test(string)) {\n return expandIPv6(string, 8);\n } else if (match = string.match(ipv6Regexes['transitional'])) {\n zoneId = match[6] || '';\n addr = expandIPv6(match[1].slice(0, -1) + zoneId, 6);\n if (addr.parts) {\n octets = [parseInt(match[2]), parseInt(match[3]), parseInt(match[4]), parseInt(match[5])];\n for (k = 0, len = octets.length; k < len; k++) {\n octet = octets[k];\n if (!((0 <= octet && octet <= 255))) {\n return null;\n }\n }\n addr.parts.push(octets[0] << 8 | octets[1]);\n addr.parts.push(octets[2] << 8 | octets[3]);\n return {\n parts: addr.parts,\n zoneId: addr.zoneId\n };\n }\n }\n return null;\n };\n\n ipaddr.IPv4.isIPv4 = ipaddr.IPv6.isIPv6 = function(string) {\n return this.parser(string) !== null;\n };\n\n ipaddr.IPv4.isValid = function(string) {\n var e;\n try {\n new this(this.parser(string));\n return true;\n } catch (error1) {\n e = error1;\n return false;\n }\n };\n\n ipaddr.IPv4.isValidFourPartDecimal = function(string) {\n if (ipaddr.IPv4.isValid(string) && string.match(/^(0|[1-9]\\d*)(\\.(0|[1-9]\\d*)){3}$/)) {\n return true;\n } else {\n return false;\n }\n };\n\n ipaddr.IPv6.isValid = function(string) {\n var addr, e;\n if (typeof string === \"string\" && string.indexOf(\":\") === -1) {\n return false;\n }\n try {\n addr = this.parser(string);\n new this(addr.parts, addr.zoneId);\n return true;\n } catch (error1) {\n e = error1;\n return false;\n }\n };\n\n ipaddr.IPv4.parse = function(string) {\n var parts;\n parts = this.parser(string);\n if (parts === null) {\n throw new Error(\"ipaddr: string is not formatted like ip address\");\n }\n return new this(parts);\n };\n\n ipaddr.IPv6.parse = function(string) {\n var addr;\n addr = this.parser(string);\n if (addr.parts === null) {\n throw new Error(\"ipaddr: string is not formatted like ip address\");\n }\n return new this(addr.parts, addr.zoneId);\n };\n\n ipaddr.IPv4.parseCIDR = function(string) {\n var maskLength, match, parsed;\n if (match = string.match(/^(.+)\\/(\\d+)$/)) {\n maskLength = parseInt(match[2]);\n if (maskLength >= 0 && maskLength <= 32) {\n parsed = [this.parse(match[1]), maskLength];\n Object.defineProperty(parsed, 'toString', {\n value: function() {\n return this.join('/');\n }\n });\n return parsed;\n }\n }\n throw new Error(\"ipaddr: string is not formatted like an IPv4 CIDR range\");\n };\n\n ipaddr.IPv4.subnetMaskFromPrefixLength = function(prefix) {\n var filledOctetCount, j, octets;\n prefix = parseInt(prefix);\n if (prefix < 0 || prefix > 32) {\n throw new Error('ipaddr: invalid IPv4 prefix length');\n }\n octets = [0, 0, 0, 0];\n j = 0;\n filledOctetCount = Math.floor(prefix / 8);\n while (j < filledOctetCount) {\n octets[j] = 255;\n j++;\n }\n if (filledOctetCount < 4) {\n octets[filledOctetCount] = Math.pow(2, prefix % 8) - 1 << 8 - (prefix % 8);\n }\n return new this(octets);\n };\n\n ipaddr.IPv4.broadcastAddressFromCIDR = function(string) {\n var cidr, error, i, ipInterfaceOctets, octets, subnetMaskOctets;\n try {\n cidr = this.parseCIDR(string);\n ipInterfaceOctets = cidr[0].toByteArray();\n subnetMaskOctets = this.subnetMaskFromPrefixLength(cidr[1]).toByteArray();\n octets = [];\n i = 0;\n while (i < 4) {\n octets.push(parseInt(ipInterfaceOctets[i], 10) | parseInt(subnetMaskOctets[i], 10) ^ 255);\n i++;\n }\n return new this(octets);\n } catch (error1) {\n error = error1;\n throw new Error('ipaddr: the address does not have IPv4 CIDR format');\n }\n };\n\n ipaddr.IPv4.networkAddressFromCIDR = function(string) {\n var cidr, error, i, ipInterfaceOctets, octets, subnetMaskOctets;\n try {\n cidr = this.parseCIDR(string);\n ipInterfaceOctets = cidr[0].toByteArray();\n subnetMaskOctets = this.subnetMaskFromPrefixLength(cidr[1]).toByteArray();\n octets = [];\n i = 0;\n while (i < 4) {\n octets.push(parseInt(ipInterfaceOctets[i], 10) & parseInt(subnetMaskOctets[i], 10));\n i++;\n }\n return new this(octets);\n } catch (error1) {\n error = error1;\n throw new Error('ipaddr: the address does not have IPv4 CIDR format');\n }\n };\n\n ipaddr.IPv6.parseCIDR = function(string) {\n var maskLength, match, parsed;\n if (match = string.match(/^(.+)\\/(\\d+)$/)) {\n maskLength = parseInt(match[2]);\n if (maskLength >= 0 && maskLength <= 128) {\n parsed = [this.parse(match[1]), maskLength];\n Object.defineProperty(parsed, 'toString', {\n value: function() {\n return this.join('/');\n }\n });\n return parsed;\n }\n }\n throw new Error(\"ipaddr: string is not formatted like an IPv6 CIDR range\");\n };\n\n ipaddr.isValid = function(string) {\n return ipaddr.IPv6.isValid(string) || ipaddr.IPv4.isValid(string);\n };\n\n ipaddr.parse = function(string) {\n if (ipaddr.IPv6.isValid(string)) {\n return ipaddr.IPv6.parse(string);\n } else if (ipaddr.IPv4.isValid(string)) {\n return ipaddr.IPv4.parse(string);\n } else {\n throw new Error(\"ipaddr: the address has neither IPv6 nor IPv4 format\");\n }\n };\n\n ipaddr.parseCIDR = function(string) {\n var e;\n try {\n return ipaddr.IPv6.parseCIDR(string);\n } catch (error1) {\n e = error1;\n try {\n return ipaddr.IPv4.parseCIDR(string);\n } catch (error1) {\n e = error1;\n throw new Error(\"ipaddr: the address has neither IPv6 nor IPv4 CIDR format\");\n }\n }\n };\n\n ipaddr.fromByteArray = function(bytes) {\n var length;\n length = bytes.length;\n if (length === 4) {\n return new ipaddr.IPv4(bytes);\n } else if (length === 16) {\n return new ipaddr.IPv6(bytes);\n } else {\n throw new Error(\"ipaddr: the binary input is neither an IPv6 nor IPv4 address\");\n }\n };\n\n ipaddr.process = function(string) {\n var addr;\n addr = this.parse(string);\n if (addr.kind() === 'ipv6' && addr.isIPv4MappedAddress()) {\n return addr.toIPv4Address();\n } else {\n return addr;\n }\n };\n\n}).call(this);\n", "/*!\n * proxy-addr\n * Copyright(c) 2014-2016 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict'\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = proxyaddr\nmodule.exports.all = alladdrs\nmodule.exports.compile = compile\n\n/**\n * Module dependencies.\n * @private\n */\n\nvar forwarded = require('forwarded')\nvar ipaddr = require('ipaddr.js')\n\n/**\n * Variables.\n * @private\n */\n\nvar DIGIT_REGEXP = /^[0-9]+$/\nvar isip = ipaddr.isValid\nvar parseip = ipaddr.parse\n\n/**\n * Pre-defined IP ranges.\n * @private\n */\n\nvar IP_RANGES = {\n linklocal: ['169.254.0.0/16', 'fe80::/10'],\n loopback: ['127.0.0.1/8', '::1/128'],\n uniquelocal: ['10.0.0.0/8', '172.16.0.0/12', '192.168.0.0/16', 'fc00::/7']\n}\n\n/**\n * Get all addresses in the request, optionally stopping\n * at the first untrusted.\n *\n * @param {Object} request\n * @param {Function|Array|String} [trust]\n * @public\n */\n\nfunction alladdrs (req, trust) {\n // get addresses\n var addrs = forwarded(req)\n\n if (!trust) {\n // Return all addresses\n return addrs\n }\n\n if (typeof trust !== 'function') {\n trust = compile(trust)\n }\n\n for (var i = 0; i < addrs.length - 1; i++) {\n if (trust(addrs[i], i)) continue\n\n addrs.length = i + 1\n }\n\n return addrs\n}\n\n/**\n * Compile argument into trust function.\n *\n * @param {Array|String} val\n * @private\n */\n\nfunction compile (val) {\n if (!val) {\n throw new TypeError('argument is required')\n }\n\n var trust\n\n if (typeof val === 'string') {\n trust = [val]\n } else if (Array.isArray(val)) {\n trust = val.slice()\n } else {\n throw new TypeError('unsupported trust argument')\n }\n\n for (var i = 0; i < trust.length; i++) {\n val = trust[i]\n\n if (!Object.prototype.hasOwnProperty.call(IP_RANGES, val)) {\n continue\n }\n\n // Splice in pre-defined range\n val = IP_RANGES[val]\n trust.splice.apply(trust, [i, 1].concat(val))\n i += val.length - 1\n }\n\n return compileTrust(compileRangeSubnets(trust))\n}\n\n/**\n * Compile `arr` elements into range subnets.\n *\n * @param {Array} arr\n * @private\n */\n\nfunction compileRangeSubnets (arr) {\n var rangeSubnets = new Array(arr.length)\n\n for (var i = 0; i < arr.length; i++) {\n rangeSubnets[i] = parseipNotation(arr[i])\n }\n\n return rangeSubnets\n}\n\n/**\n * Compile range subnet array into trust function.\n *\n * @param {Array} rangeSubnets\n * @private\n */\n\nfunction compileTrust (rangeSubnets) {\n // Return optimized function based on length\n var len = rangeSubnets.length\n return len === 0\n ? trustNone\n : len === 1\n ? trustSingle(rangeSubnets[0])\n : trustMulti(rangeSubnets)\n}\n\n/**\n * Parse IP notation string into range subnet.\n *\n * @param {String} note\n * @private\n */\n\nfunction parseipNotation (note) {\n var pos = note.lastIndexOf('/')\n var str = pos !== -1\n ? note.substring(0, pos)\n : note\n\n if (!isip(str)) {\n throw new TypeError('invalid IP address: ' + str)\n }\n\n var ip = parseip(str)\n\n if (pos === -1 && ip.kind() === 'ipv6' && ip.isIPv4MappedAddress()) {\n // Store as IPv4\n ip = ip.toIPv4Address()\n }\n\n var max = ip.kind() === 'ipv6'\n ? 128\n : 32\n\n var range = pos !== -1\n ? note.substring(pos + 1, note.length)\n : null\n\n if (range === null) {\n range = max\n } else if (DIGIT_REGEXP.test(range)) {\n range = parseInt(range, 10)\n } else if (ip.kind() === 'ipv4' && isip(range)) {\n range = parseNetmask(range)\n } else {\n range = null\n }\n\n if (range <= 0 || range > max) {\n throw new TypeError('invalid range on address: ' + note)\n }\n\n return [ip, range]\n}\n\n/**\n * Parse netmask string into CIDR range.\n *\n * @param {String} netmask\n * @private\n */\n\nfunction parseNetmask (netmask) {\n var ip = parseip(netmask)\n var kind = ip.kind()\n\n return kind === 'ipv4'\n ? ip.prefixLengthFromSubnetMask()\n : null\n}\n\n/**\n * Determine address of proxied request.\n *\n * @param {Object} request\n * @param {Function|Array|String} trust\n * @public\n */\n\nfunction proxyaddr (req, trust) {\n if (!req) {\n throw new TypeError('req argument is required')\n }\n\n if (!trust) {\n throw new TypeError('trust argument is required')\n }\n\n var addrs = alladdrs(req, trust)\n var addr = addrs[addrs.length - 1]\n\n return addr\n}\n\n/**\n * Static trust function to trust nothing.\n *\n * @private\n */\n\nfunction trustNone () {\n return false\n}\n\n/**\n * Compile trust function for multiple subnets.\n *\n * @param {Array} subnets\n * @private\n */\n\nfunction trustMulti (subnets) {\n return function trust (addr) {\n if (!isip(addr)) return false\n\n var ip = parseip(addr)\n var ipconv\n var kind = ip.kind()\n\n for (var i = 0; i < subnets.length; i++) {\n var subnet = subnets[i]\n var subnetip = subnet[0]\n var subnetkind = subnetip.kind()\n var subnetrange = subnet[1]\n var trusted = ip\n\n if (kind !== subnetkind) {\n if (subnetkind === 'ipv4' && !ip.isIPv4MappedAddress()) {\n // Incompatible IP addresses\n continue\n }\n\n if (!ipconv) {\n // Convert IP to match subnet IP kind\n ipconv = subnetkind === 'ipv4'\n ? ip.toIPv4Address()\n : ip.toIPv4MappedAddress()\n }\n\n trusted = ipconv\n }\n\n if (trusted.match(subnetip, subnetrange)) {\n return true\n }\n }\n\n return false\n }\n}\n\n/**\n * Compile trust function for single subnet.\n *\n * @param {Object} subnet\n * @private\n */\n\nfunction trustSingle (subnet) {\n var subnetip = subnet[0]\n var subnetkind = subnetip.kind()\n var subnetisipv4 = subnetkind === 'ipv4'\n var subnetrange = subnet[1]\n\n return function trust (addr) {\n if (!isip(addr)) return false\n\n var ip = parseip(addr)\n var kind = ip.kind()\n\n if (kind !== subnetkind) {\n if (subnetisipv4 && !ip.isIPv4MappedAddress()) {\n // Incompatible IP addresses\n return false\n }\n\n // Convert IP to match subnet IP kind\n ip = subnetisipv4\n ? ip.toIPv4Address()\n : ip.toIPv4MappedAddress()\n }\n\n return ip.match(subnetip, subnetrange)\n }\n}\n", "/*!\n * express\n * Copyright(c) 2009-2013 TJ Holowaychuk\n * Copyright(c) 2014-2015 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict';\n\n/**\n * Module dependencies.\n * @api private\n */\n\nvar Buffer = require('safe-buffer').Buffer\nvar contentDisposition = require('content-disposition');\nvar contentType = require('content-type');\nvar deprecate = require('depd')('express');\nvar flatten = require('array-flatten');\nvar mime = require('send').mime;\nvar etag = require('etag');\nvar proxyaddr = require('proxy-addr');\nvar qs = require('qs');\nvar querystring = require('querystring');\n\n/**\n * Return strong ETag for `body`.\n *\n * @param {String|Buffer} body\n * @param {String} [encoding]\n * @return {String}\n * @api private\n */\n\nexports.etag = createETagGenerator({ weak: false })\n\n/**\n * Return weak ETag for `body`.\n *\n * @param {String|Buffer} body\n * @param {String} [encoding]\n * @return {String}\n * @api private\n */\n\nexports.wetag = createETagGenerator({ weak: true })\n\n/**\n * Check if `path` looks absolute.\n *\n * @param {String} path\n * @return {Boolean}\n * @api private\n */\n\nexports.isAbsolute = function(path){\n if ('/' === path[0]) return true;\n if (':' === path[1] && ('\\\\' === path[2] || '/' === path[2])) return true; // Windows device path\n if ('\\\\\\\\' === path.substring(0, 2)) return true; // Microsoft Azure absolute path\n};\n\n/**\n * Flatten the given `arr`.\n *\n * @param {Array} arr\n * @return {Array}\n * @api private\n */\n\nexports.flatten = deprecate.function(flatten,\n 'utils.flatten: use array-flatten npm module instead');\n\n/**\n * Normalize the given `type`, for example \"html\" becomes \"text/html\".\n *\n * @param {String} type\n * @return {Object}\n * @api private\n */\n\nexports.normalizeType = function(type){\n return ~type.indexOf('/')\n ? acceptParams(type)\n : { value: mime.lookup(type), params: {} };\n};\n\n/**\n * Normalize `types`, for example \"html\" becomes \"text/html\".\n *\n * @param {Array} types\n * @return {Array}\n * @api private\n */\n\nexports.normalizeTypes = function(types){\n var ret = [];\n\n for (var i = 0; i < types.length; ++i) {\n ret.push(exports.normalizeType(types[i]));\n }\n\n return ret;\n};\n\n/**\n * Generate Content-Disposition header appropriate for the filename.\n * non-ascii filenames are urlencoded and a filename* parameter is added\n *\n * @param {String} filename\n * @return {String}\n * @api private\n */\n\nexports.contentDisposition = deprecate.function(contentDisposition,\n 'utils.contentDisposition: use content-disposition npm module instead');\n\n/**\n * Parse accept params `str` returning an\n * object with `.value`, `.quality` and `.params`.\n * also includes `.originalIndex` for stable sorting\n *\n * @param {String} str\n * @param {Number} index\n * @return {Object}\n * @api private\n */\n\nfunction acceptParams(str, index) {\n var parts = str.split(/ *; */);\n var ret = { value: parts[0], quality: 1, params: {}, originalIndex: index };\n\n for (var i = 1; i < parts.length; ++i) {\n var pms = parts[i].split(/ *= */);\n if ('q' === pms[0]) {\n ret.quality = parseFloat(pms[1]);\n } else {\n ret.params[pms[0]] = pms[1];\n }\n }\n\n return ret;\n}\n\n/**\n * Compile \"etag\" value to function.\n *\n * @param {Boolean|String|Function} val\n * @return {Function}\n * @api private\n */\n\nexports.compileETag = function(val) {\n var fn;\n\n if (typeof val === 'function') {\n return val;\n }\n\n switch (val) {\n case true:\n case 'weak':\n fn = exports.wetag;\n break;\n case false:\n break;\n case 'strong':\n fn = exports.etag;\n break;\n default:\n throw new TypeError('unknown value for etag function: ' + val);\n }\n\n return fn;\n}\n\n/**\n * Compile \"query parser\" value to function.\n *\n * @param {String|Function} val\n * @return {Function}\n * @api private\n */\n\nexports.compileQueryParser = function compileQueryParser(val) {\n var fn;\n\n if (typeof val === 'function') {\n return val;\n }\n\n switch (val) {\n case true:\n case 'simple':\n fn = querystring.parse;\n break;\n case false:\n fn = newObject;\n break;\n case 'extended':\n fn = parseExtendedQueryString;\n break;\n default:\n throw new TypeError('unknown value for query parser function: ' + val);\n }\n\n return fn;\n}\n\n/**\n * Compile \"proxy trust\" value to function.\n *\n * @param {Boolean|String|Number|Array|Function} val\n * @return {Function}\n * @api private\n */\n\nexports.compileTrust = function(val) {\n if (typeof val === 'function') return val;\n\n if (val === true) {\n // Support plain true/false\n return function(){ return true };\n }\n\n if (typeof val === 'number') {\n // Support trusting hop count\n return function(a, i){ return i < val };\n }\n\n if (typeof val === 'string') {\n // Support comma-separated values\n val = val.split(',')\n .map(function (v) { return v.trim() })\n }\n\n return proxyaddr.compile(val || []);\n}\n\n/**\n * Set the charset in a given Content-Type string.\n *\n * @param {String} type\n * @param {String} charset\n * @return {String}\n * @api private\n */\n\nexports.setCharset = function setCharset(type, charset) {\n if (!type || !charset) {\n return type;\n }\n\n // parse type\n var parsed = contentType.parse(type);\n\n // set charset\n parsed.parameters.charset = charset;\n\n // format type\n return contentType.format(parsed);\n};\n\n/**\n * Create an ETag generator function, generating ETags with\n * the given options.\n *\n * @param {object} options\n * @return {function}\n * @private\n */\n\nfunction createETagGenerator (options) {\n return function generateETag (body, encoding) {\n var buf = !Buffer.isBuffer(body)\n ? Buffer.from(body, encoding)\n : body\n\n return etag(buf, options)\n }\n}\n\n/**\n * Parse an extended query string with qs.\n *\n * @return {Object}\n * @private\n */\n\nfunction parseExtendedQueryString(str) {\n return qs.parse(str, {\n allowPrototypes: true\n });\n}\n\n/**\n * Return new empty object.\n *\n * @return {Object}\n * @api private\n */\n\nfunction newObject() {\n return {};\n}\n", "/*!\n * express\n * Copyright(c) 2009-2013 TJ Holowaychuk\n * Copyright(c) 2013 Roman Shtylman\n * Copyright(c) 2014-2015 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict';\n\n/**\n * Module dependencies.\n * @private\n */\n\nvar finalhandler = require('finalhandler');\nvar Router = require('./router');\nvar methods = require('methods');\nvar middleware = require('./middleware/init');\nvar query = require('./middleware/query');\nvar debug = require('debug')('express:application');\nvar View = require('./view');\nvar http = require('http');\nvar compileETag = require('./utils').compileETag;\nvar compileQueryParser = require('./utils').compileQueryParser;\nvar compileTrust = require('./utils').compileTrust;\nvar deprecate = require('depd')('express');\nvar flatten = require('array-flatten');\nvar merge = require('utils-merge');\nvar resolve = require('path').resolve;\nvar setPrototypeOf = require('setprototypeof')\n\n/**\n * Module variables.\n * @private\n */\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty\nvar slice = Array.prototype.slice;\n\n/**\n * Application prototype.\n */\n\nvar app = exports = module.exports = {};\n\n/**\n * Variable for trust proxy inheritance back-compat\n * @private\n */\n\nvar trustProxyDefaultSymbol = '@@symbol:trust_proxy_default';\n\n/**\n * Initialize the server.\n *\n * - setup default configuration\n * - setup default middleware\n * - setup route reflection methods\n *\n * @private\n */\n\napp.init = function init() {\n this.cache = {};\n this.engines = {};\n this.settings = {};\n\n this.defaultConfiguration();\n};\n\n/**\n * Initialize application configuration.\n * @private\n */\n\napp.defaultConfiguration = function defaultConfiguration() {\n var env = process.env.NODE_ENV || 'development';\n\n // default settings\n this.enable('x-powered-by');\n this.set('etag', 'weak');\n this.set('env', env);\n this.set('query parser', 'extended');\n this.set('subdomain offset', 2);\n this.set('trust proxy', false);\n\n // trust proxy inherit back-compat\n Object.defineProperty(this.settings, trustProxyDefaultSymbol, {\n configurable: true,\n value: true\n });\n\n debug('booting in %s mode', env);\n\n this.on('mount', function onmount(parent) {\n // inherit trust proxy\n if (this.settings[trustProxyDefaultSymbol] === true\n && typeof parent.settings['trust proxy fn'] === 'function') {\n delete this.settings['trust proxy'];\n delete this.settings['trust proxy fn'];\n }\n\n // inherit protos\n setPrototypeOf(this.request, parent.request)\n setPrototypeOf(this.response, parent.response)\n setPrototypeOf(this.engines, parent.engines)\n setPrototypeOf(this.settings, parent.settings)\n });\n\n // setup locals\n this.locals = Object.create(null);\n\n // top-most app is mounted at /\n this.mountpath = '/';\n\n // default locals\n this.locals.settings = this.settings;\n\n // default configuration\n this.set('view', View);\n this.set('views', resolve('views'));\n this.set('jsonp callback name', 'callback');\n\n if (env === 'production') {\n this.enable('view cache');\n }\n\n Object.defineProperty(this, 'router', {\n get: function() {\n throw new Error('\\'app.router\\' is deprecated!\\nPlease see the 3.x to 4.x migration guide for details on how to update your app.');\n }\n });\n};\n\n/**\n * lazily adds the base router if it has not yet been added.\n *\n * We cannot add the base router in the defaultConfiguration because\n * it reads app settings which might be set after that has run.\n *\n * @private\n */\napp.lazyrouter = function lazyrouter() {\n if (!this._router) {\n this._router = new Router({\n caseSensitive: this.enabled('case sensitive routing'),\n strict: this.enabled('strict routing')\n });\n\n this._router.use(query(this.get('query parser fn')));\n this._router.use(middleware.init(this));\n }\n};\n\n/**\n * Dispatch a req, res pair into the application. Starts pipeline processing.\n *\n * If no callback is provided, then default error handlers will respond\n * in the event of an error bubbling through the stack.\n *\n * @private\n */\n\napp.handle = function handle(req, res, callback) {\n var router = this._router;\n\n // final handler\n var done = callback || finalhandler(req, res, {\n env: this.get('env'),\n onerror: logerror.bind(this)\n });\n\n // no routes\n if (!router) {\n debug('no routes defined on app');\n done();\n return;\n }\n\n router.handle(req, res, done);\n};\n\n/**\n * Proxy `Router#use()` to add middleware to the app router.\n * See Router#use() documentation for details.\n *\n * If the _fn_ parameter is an express app, then it will be\n * mounted at the _route_ specified.\n *\n * @public\n */\n\napp.use = function use(fn) {\n var offset = 0;\n var path = '/';\n\n // default path to '/'\n // disambiguate app.use([fn])\n if (typeof fn !== 'function') {\n var arg = fn;\n\n while (Array.isArray(arg) && arg.length !== 0) {\n arg = arg[0];\n }\n\n // first arg is the path\n if (typeof arg !== 'function') {\n offset = 1;\n path = fn;\n }\n }\n\n var fns = flatten(slice.call(arguments, offset));\n\n if (fns.length === 0) {\n throw new TypeError('app.use() requires a middleware function')\n }\n\n // setup router\n this.lazyrouter();\n var router = this._router;\n\n fns.forEach(function (fn) {\n // non-express app\n if (!fn || !fn.handle || !fn.set) {\n return router.use(path, fn);\n }\n\n debug('.use app under %s', path);\n fn.mountpath = path;\n fn.parent = this;\n\n // restore .app property on req and res\n router.use(path, function mounted_app(req, res, next) {\n var orig = req.app;\n fn.handle(req, res, function (err) {\n setPrototypeOf(req, orig.request)\n setPrototypeOf(res, orig.response)\n next(err);\n });\n });\n\n // mounted an app\n fn.emit('mount', this);\n }, this);\n\n return this;\n};\n\n/**\n * Proxy to the app `Router#route()`\n * Returns a new `Route` instance for the _path_.\n *\n * Routes are isolated middleware stacks for specific paths.\n * See the Route api docs for details.\n *\n * @public\n */\n\napp.route = function route(path) {\n this.lazyrouter();\n return this._router.route(path);\n};\n\n/**\n * Register the given template engine callback `fn`\n * as `ext`.\n *\n * By default will `require()` the engine based on the\n * file extension. For example if you try to render\n * a \"foo.ejs\" file Express will invoke the following internally:\n *\n * app.engine('ejs', require('ejs').__express);\n *\n * For engines that do not provide `.__express` out of the box,\n * or if you wish to \"map\" a different extension to the template engine\n * you may use this method. For example mapping the EJS template engine to\n * \".html\" files:\n *\n * app.engine('html', require('ejs').renderFile);\n *\n * In this case EJS provides a `.renderFile()` method with\n * the same signature that Express expects: `(path, options, callback)`,\n * though note that it aliases this method as `ejs.__express` internally\n * so if you're using \".ejs\" extensions you don't need to do anything.\n *\n * Some template engines do not follow this convention, the\n * [Consolidate.js](https://github.com/tj/consolidate.js)\n * library was created to map all of node's popular template\n * engines to follow this convention, thus allowing them to\n * work seamlessly within Express.\n *\n * @param {String} ext\n * @param {Function} fn\n * @return {app} for chaining\n * @public\n */\n\napp.engine = function engine(ext, fn) {\n if (typeof fn !== 'function') {\n throw new Error('callback function required');\n }\n\n // get file extension\n var extension = ext[0] !== '.'\n ? '.' + ext\n : ext;\n\n // store engine\n this.engines[extension] = fn;\n\n return this;\n};\n\n/**\n * Proxy to `Router#param()` with one added api feature. The _name_ parameter\n * can be an array of names.\n *\n * See the Router#param() docs for more details.\n *\n * @param {String|Array} name\n * @param {Function} fn\n * @return {app} for chaining\n * @public\n */\n\napp.param = function param(name, fn) {\n this.lazyrouter();\n\n if (Array.isArray(name)) {\n for (var i = 0; i < name.length; i++) {\n this.param(name[i], fn);\n }\n\n return this;\n }\n\n this._router.param(name, fn);\n\n return this;\n};\n\n/**\n * Assign `setting` to `val`, or return `setting`'s value.\n *\n * app.set('foo', 'bar');\n * app.set('foo');\n * // => \"bar\"\n *\n * Mounted servers inherit their parent server's settings.\n *\n * @param {String} setting\n * @param {*} [val]\n * @return {Server} for chaining\n * @public\n */\n\napp.set = function set(setting, val) {\n if (arguments.length === 1) {\n // app.get(setting)\n var settings = this.settings\n\n while (settings && settings !== Object.prototype) {\n if (hasOwnProperty.call(settings, setting)) {\n return settings[setting]\n }\n\n settings = Object.getPrototypeOf(settings)\n }\n\n return undefined\n }\n\n debug('set \"%s\" to %o', setting, val);\n\n // set value\n this.settings[setting] = val;\n\n // trigger matched settings\n switch (setting) {\n case 'etag':\n this.set('etag fn', compileETag(val));\n break;\n case 'query parser':\n this.set('query parser fn', compileQueryParser(val));\n break;\n case 'trust proxy':\n this.set('trust proxy fn', compileTrust(val));\n\n // trust proxy inherit back-compat\n Object.defineProperty(this.settings, trustProxyDefaultSymbol, {\n configurable: true,\n value: false\n });\n\n break;\n }\n\n return this;\n};\n\n/**\n * Return the app's absolute pathname\n * based on the parent(s) that have\n * mounted it.\n *\n * For example if the application was\n * mounted as \"/admin\", which itself\n * was mounted as \"/blog\" then the\n * return value would be \"/blog/admin\".\n *\n * @return {String}\n * @private\n */\n\napp.path = function path() {\n return this.parent\n ? this.parent.path() + this.mountpath\n : '';\n};\n\n/**\n * Check if `setting` is enabled (truthy).\n *\n * app.enabled('foo')\n * // => false\n *\n * app.enable('foo')\n * app.enabled('foo')\n * // => true\n *\n * @param {String} setting\n * @return {Boolean}\n * @public\n */\n\napp.enabled = function enabled(setting) {\n return Boolean(this.set(setting));\n};\n\n/**\n * Check if `setting` is disabled.\n *\n * app.disabled('foo')\n * // => true\n *\n * app.enable('foo')\n * app.disabled('foo')\n * // => false\n *\n * @param {String} setting\n * @return {Boolean}\n * @public\n */\n\napp.disabled = function disabled(setting) {\n return !this.set(setting);\n};\n\n/**\n * Enable `setting`.\n *\n * @param {String} setting\n * @return {app} for chaining\n * @public\n */\n\napp.enable = function enable(setting) {\n return this.set(setting, true);\n};\n\n/**\n * Disable `setting`.\n *\n * @param {String} setting\n * @return {app} for chaining\n * @public\n */\n\napp.disable = function disable(setting) {\n return this.set(setting, false);\n};\n\n/**\n * Delegate `.VERB(...)` calls to `router.VERB(...)`.\n */\n\nmethods.forEach(function(method){\n app[method] = function(path){\n if (method === 'get' && arguments.length === 1) {\n // app.get(setting)\n return this.set(path);\n }\n\n this.lazyrouter();\n\n var route = this._router.route(path);\n route[method].apply(route, slice.call(arguments, 1));\n return this;\n };\n});\n\n/**\n * Special-cased \"all\" method, applying the given route `path`,\n * middleware, and callback to _every_ HTTP method.\n *\n * @param {String} path\n * @param {Function} ...\n * @return {app} for chaining\n * @public\n */\n\napp.all = function all(path) {\n this.lazyrouter();\n\n var route = this._router.route(path);\n var args = slice.call(arguments, 1);\n\n for (var i = 0; i < methods.length; i++) {\n route[methods[i]].apply(route, args);\n }\n\n return this;\n};\n\n// del -> delete alias\n\napp.del = deprecate.function(app.delete, 'app.del: Use app.delete instead');\n\n/**\n * Render the given view `name` name with `options`\n * and a callback accepting an error and the\n * rendered template string.\n *\n * Example:\n *\n * app.render('email', { name: 'Tobi' }, function(err, html){\n * // ...\n * })\n *\n * @param {String} name\n * @param {Object|Function} options or fn\n * @param {Function} callback\n * @public\n */\n\napp.render = function render(name, options, callback) {\n var cache = this.cache;\n var done = callback;\n var engines = this.engines;\n var opts = options;\n var renderOptions = {};\n var view;\n\n // support callback function as second arg\n if (typeof options === 'function') {\n done = options;\n opts = {};\n }\n\n // merge app.locals\n merge(renderOptions, this.locals);\n\n // merge options._locals\n if (opts._locals) {\n merge(renderOptions, opts._locals);\n }\n\n // merge options\n merge(renderOptions, opts);\n\n // set .cache unless explicitly provided\n if (renderOptions.cache == null) {\n renderOptions.cache = this.enabled('view cache');\n }\n\n // primed cache\n if (renderOptions.cache) {\n view = cache[name];\n }\n\n // view\n if (!view) {\n var View = this.get('view');\n\n view = new View(name, {\n defaultEngine: this.get('view engine'),\n root: this.get('views'),\n engines: engines\n });\n\n if (!view.path) {\n var dirs = Array.isArray(view.root) && view.root.length > 1\n ? 'directories \"' + view.root.slice(0, -1).join('\", \"') + '\" or \"' + view.root[view.root.length - 1] + '\"'\n : 'directory \"' + view.root + '\"'\n var err = new Error('Failed to lookup view \"' + name + '\" in views ' + dirs);\n err.view = view;\n return done(err);\n }\n\n // prime the cache\n if (renderOptions.cache) {\n cache[name] = view;\n }\n }\n\n // render\n tryRender(view, renderOptions, done);\n};\n\n/**\n * Listen for connections.\n *\n * A node `http.Server` is returned, with this\n * application (which is a `Function`) as its\n * callback. If you wish to create both an HTTP\n * and HTTPS server you may do so with the \"http\"\n * and \"https\" modules as shown here:\n *\n * var http = require('http')\n * , https = require('https')\n * , express = require('express')\n * , app = express();\n *\n * http.createServer(app).listen(80);\n * https.createServer({ ... }, app).listen(443);\n *\n * @return {http.Server}\n * @public\n */\n\napp.listen = function listen() {\n var server = http.createServer(this);\n return server.listen.apply(server, arguments);\n};\n\n/**\n * Log error using console.error.\n *\n * @param {Error} err\n * @private\n */\n\nfunction logerror(err) {\n /* istanbul ignore next */\n if (this.get('env') !== 'test') console.error(err.stack || err.toString());\n}\n\n/**\n * Try rendering a view.\n * @private\n */\n\nfunction tryRender(view, options, callback) {\n try {\n view.render(options, callback);\n } catch (err) {\n callback(err);\n }\n}\n", "/**\n * negotiator\n * Copyright(c) 2012 Isaac Z. Schlueter\n * Copyright(c) 2014 Federico Romero\n * Copyright(c) 2014-2015 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict';\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = preferredCharsets;\nmodule.exports.preferredCharsets = preferredCharsets;\n\n/**\n * Module variables.\n * @private\n */\n\nvar simpleCharsetRegExp = /^\\s*([^\\s;]+)\\s*(?:;(.*))?$/;\n\n/**\n * Parse the Accept-Charset header.\n * @private\n */\n\nfunction parseAcceptCharset(accept) {\n var accepts = accept.split(',');\n\n for (var i = 0, j = 0; i < accepts.length; i++) {\n var charset = parseCharset(accepts[i].trim(), i);\n\n if (charset) {\n accepts[j++] = charset;\n }\n }\n\n // trim accepts\n accepts.length = j;\n\n return accepts;\n}\n\n/**\n * Parse a charset from the Accept-Charset header.\n * @private\n */\n\nfunction parseCharset(str, i) {\n var match = simpleCharsetRegExp.exec(str);\n if (!match) return null;\n\n var charset = match[1];\n var q = 1;\n if (match[2]) {\n var params = match[2].split(';')\n for (var j = 0; j < params.length; j++) {\n var p = params[j].trim().split('=');\n if (p[0] === 'q') {\n q = parseFloat(p[1]);\n break;\n }\n }\n }\n\n return {\n charset: charset,\n q: q,\n i: i\n };\n}\n\n/**\n * Get the priority of a charset.\n * @private\n */\n\nfunction getCharsetPriority(charset, accepted, index) {\n var priority = {o: -1, q: 0, s: 0};\n\n for (var i = 0; i < accepted.length; i++) {\n var spec = specify(charset, accepted[i], index);\n\n if (spec && (priority.s - spec.s || priority.q - spec.q || priority.o - spec.o) < 0) {\n priority = spec;\n }\n }\n\n return priority;\n}\n\n/**\n * Get the specificity of the charset.\n * @private\n */\n\nfunction specify(charset, spec, index) {\n var s = 0;\n if(spec.charset.toLowerCase() === charset.toLowerCase()){\n s |= 1;\n } else if (spec.charset !== '*' ) {\n return null\n }\n\n return {\n i: index,\n o: spec.i,\n q: spec.q,\n s: s\n }\n}\n\n/**\n * Get the preferred charsets from an Accept-Charset header.\n * @public\n */\n\nfunction preferredCharsets(accept, provided) {\n // RFC 2616 sec 14.2: no header = *\n var accepts = parseAcceptCharset(accept === undefined ? '*' : accept || '');\n\n if (!provided) {\n // sorted list of all charsets\n return accepts\n .filter(isQuality)\n .sort(compareSpecs)\n .map(getFullCharset);\n }\n\n var priorities = provided.map(function getPriority(type, index) {\n return getCharsetPriority(type, accepts, index);\n });\n\n // sorted list of accepted charsets\n return priorities.filter(isQuality).sort(compareSpecs).map(function getCharset(priority) {\n return provided[priorities.indexOf(priority)];\n });\n}\n\n/**\n * Compare two specs.\n * @private\n */\n\nfunction compareSpecs(a, b) {\n return (b.q - a.q) || (b.s - a.s) || (a.o - b.o) || (a.i - b.i) || 0;\n}\n\n/**\n * Get full charset string.\n * @private\n */\n\nfunction getFullCharset(spec) {\n return spec.charset;\n}\n\n/**\n * Check if a spec has any quality.\n * @private\n */\n\nfunction isQuality(spec) {\n return spec.q > 0;\n}\n", "/**\n * negotiator\n * Copyright(c) 2012 Isaac Z. Schlueter\n * Copyright(c) 2014 Federico Romero\n * Copyright(c) 2014-2015 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict';\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = preferredEncodings;\nmodule.exports.preferredEncodings = preferredEncodings;\n\n/**\n * Module variables.\n * @private\n */\n\nvar simpleEncodingRegExp = /^\\s*([^\\s;]+)\\s*(?:;(.*))?$/;\n\n/**\n * Parse the Accept-Encoding header.\n * @private\n */\n\nfunction parseAcceptEncoding(accept) {\n var accepts = accept.split(',');\n var hasIdentity = false;\n var minQuality = 1;\n\n for (var i = 0, j = 0; i < accepts.length; i++) {\n var encoding = parseEncoding(accepts[i].trim(), i);\n\n if (encoding) {\n accepts[j++] = encoding;\n hasIdentity = hasIdentity || specify('identity', encoding);\n minQuality = Math.min(minQuality, encoding.q || 1);\n }\n }\n\n if (!hasIdentity) {\n /*\n * If identity doesn't explicitly appear in the accept-encoding header,\n * it's added to the list of acceptable encoding with the lowest q\n */\n accepts[j++] = {\n encoding: 'identity',\n q: minQuality,\n i: i\n };\n }\n\n // trim accepts\n accepts.length = j;\n\n return accepts;\n}\n\n/**\n * Parse an encoding from the Accept-Encoding header.\n * @private\n */\n\nfunction parseEncoding(str, i) {\n var match = simpleEncodingRegExp.exec(str);\n if (!match) return null;\n\n var encoding = match[1];\n var q = 1;\n if (match[2]) {\n var params = match[2].split(';');\n for (var j = 0; j < params.length; j++) {\n var p = params[j].trim().split('=');\n if (p[0] === 'q') {\n q = parseFloat(p[1]);\n break;\n }\n }\n }\n\n return {\n encoding: encoding,\n q: q,\n i: i\n };\n}\n\n/**\n * Get the priority of an encoding.\n * @private\n */\n\nfunction getEncodingPriority(encoding, accepted, index) {\n var priority = {o: -1, q: 0, s: 0};\n\n for (var i = 0; i < accepted.length; i++) {\n var spec = specify(encoding, accepted[i], index);\n\n if (spec && (priority.s - spec.s || priority.q - spec.q || priority.o - spec.o) < 0) {\n priority = spec;\n }\n }\n\n return priority;\n}\n\n/**\n * Get the specificity of the encoding.\n * @private\n */\n\nfunction specify(encoding, spec, index) {\n var s = 0;\n if(spec.encoding.toLowerCase() === encoding.toLowerCase()){\n s |= 1;\n } else if (spec.encoding !== '*' ) {\n return null\n }\n\n return {\n i: index,\n o: spec.i,\n q: spec.q,\n s: s\n }\n};\n\n/**\n * Get the preferred encodings from an Accept-Encoding header.\n * @public\n */\n\nfunction preferredEncodings(accept, provided) {\n var accepts = parseAcceptEncoding(accept || '');\n\n if (!provided) {\n // sorted list of all encodings\n return accepts\n .filter(isQuality)\n .sort(compareSpecs)\n .map(getFullEncoding);\n }\n\n var priorities = provided.map(function getPriority(type, index) {\n return getEncodingPriority(type, accepts, index);\n });\n\n // sorted list of accepted encodings\n return priorities.filter(isQuality).sort(compareSpecs).map(function getEncoding(priority) {\n return provided[priorities.indexOf(priority)];\n });\n}\n\n/**\n * Compare two specs.\n * @private\n */\n\nfunction compareSpecs(a, b) {\n return (b.q - a.q) || (b.s - a.s) || (a.o - b.o) || (a.i - b.i) || 0;\n}\n\n/**\n * Get full encoding string.\n * @private\n */\n\nfunction getFullEncoding(spec) {\n return spec.encoding;\n}\n\n/**\n * Check if a spec has any quality.\n * @private\n */\n\nfunction isQuality(spec) {\n return spec.q > 0;\n}\n", "/**\n * negotiator\n * Copyright(c) 2012 Isaac Z. Schlueter\n * Copyright(c) 2014 Federico Romero\n * Copyright(c) 2014-2015 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict';\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = preferredLanguages;\nmodule.exports.preferredLanguages = preferredLanguages;\n\n/**\n * Module variables.\n * @private\n */\n\nvar simpleLanguageRegExp = /^\\s*([^\\s\\-;]+)(?:-([^\\s;]+))?\\s*(?:;(.*))?$/;\n\n/**\n * Parse the Accept-Language header.\n * @private\n */\n\nfunction parseAcceptLanguage(accept) {\n var accepts = accept.split(',');\n\n for (var i = 0, j = 0; i < accepts.length; i++) {\n var language = parseLanguage(accepts[i].trim(), i);\n\n if (language) {\n accepts[j++] = language;\n }\n }\n\n // trim accepts\n accepts.length = j;\n\n return accepts;\n}\n\n/**\n * Parse a language from the Accept-Language header.\n * @private\n */\n\nfunction parseLanguage(str, i) {\n var match = simpleLanguageRegExp.exec(str);\n if (!match) return null;\n\n var prefix = match[1]\n var suffix = match[2]\n var full = prefix\n\n if (suffix) full += \"-\" + suffix;\n\n var q = 1;\n if (match[3]) {\n var params = match[3].split(';')\n for (var j = 0; j < params.length; j++) {\n var p = params[j].split('=');\n if (p[0] === 'q') q = parseFloat(p[1]);\n }\n }\n\n return {\n prefix: prefix,\n suffix: suffix,\n q: q,\n i: i,\n full: full\n };\n}\n\n/**\n * Get the priority of a language.\n * @private\n */\n\nfunction getLanguagePriority(language, accepted, index) {\n var priority = {o: -1, q: 0, s: 0};\n\n for (var i = 0; i < accepted.length; i++) {\n var spec = specify(language, accepted[i], index);\n\n if (spec && (priority.s - spec.s || priority.q - spec.q || priority.o - spec.o) < 0) {\n priority = spec;\n }\n }\n\n return priority;\n}\n\n/**\n * Get the specificity of the language.\n * @private\n */\n\nfunction specify(language, spec, index) {\n var p = parseLanguage(language)\n if (!p) return null;\n var s = 0;\n if(spec.full.toLowerCase() === p.full.toLowerCase()){\n s |= 4;\n } else if (spec.prefix.toLowerCase() === p.full.toLowerCase()) {\n s |= 2;\n } else if (spec.full.toLowerCase() === p.prefix.toLowerCase()) {\n s |= 1;\n } else if (spec.full !== '*' ) {\n return null\n }\n\n return {\n i: index,\n o: spec.i,\n q: spec.q,\n s: s\n }\n};\n\n/**\n * Get the preferred languages from an Accept-Language header.\n * @public\n */\n\nfunction preferredLanguages(accept, provided) {\n // RFC 2616 sec 14.4: no header = *\n var accepts = parseAcceptLanguage(accept === undefined ? '*' : accept || '');\n\n if (!provided) {\n // sorted list of all languages\n return accepts\n .filter(isQuality)\n .sort(compareSpecs)\n .map(getFullLanguage);\n }\n\n var priorities = provided.map(function getPriority(type, index) {\n return getLanguagePriority(type, accepts, index);\n });\n\n // sorted list of accepted languages\n return priorities.filter(isQuality).sort(compareSpecs).map(function getLanguage(priority) {\n return provided[priorities.indexOf(priority)];\n });\n}\n\n/**\n * Compare two specs.\n * @private\n */\n\nfunction compareSpecs(a, b) {\n return (b.q - a.q) || (b.s - a.s) || (a.o - b.o) || (a.i - b.i) || 0;\n}\n\n/**\n * Get full language string.\n * @private\n */\n\nfunction getFullLanguage(spec) {\n return spec.full;\n}\n\n/**\n * Check if a spec has any quality.\n * @private\n */\n\nfunction isQuality(spec) {\n return spec.q > 0;\n}\n", "/**\n * negotiator\n * Copyright(c) 2012 Isaac Z. Schlueter\n * Copyright(c) 2014 Federico Romero\n * Copyright(c) 2014-2015 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict';\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = preferredMediaTypes;\nmodule.exports.preferredMediaTypes = preferredMediaTypes;\n\n/**\n * Module variables.\n * @private\n */\n\nvar simpleMediaTypeRegExp = /^\\s*([^\\s\\/;]+)\\/([^;\\s]+)\\s*(?:;(.*))?$/;\n\n/**\n * Parse the Accept header.\n * @private\n */\n\nfunction parseAccept(accept) {\n var accepts = splitMediaTypes(accept);\n\n for (var i = 0, j = 0; i < accepts.length; i++) {\n var mediaType = parseMediaType(accepts[i].trim(), i);\n\n if (mediaType) {\n accepts[j++] = mediaType;\n }\n }\n\n // trim accepts\n accepts.length = j;\n\n return accepts;\n}\n\n/**\n * Parse a media type from the Accept header.\n * @private\n */\n\nfunction parseMediaType(str, i) {\n var match = simpleMediaTypeRegExp.exec(str);\n if (!match) return null;\n\n var params = Object.create(null);\n var q = 1;\n var subtype = match[2];\n var type = match[1];\n\n if (match[3]) {\n var kvps = splitParameters(match[3]).map(splitKeyValuePair);\n\n for (var j = 0; j < kvps.length; j++) {\n var pair = kvps[j];\n var key = pair[0].toLowerCase();\n var val = pair[1];\n\n // get the value, unwrapping quotes\n var value = val && val[0] === '\"' && val[val.length - 1] === '\"'\n ? val.substr(1, val.length - 2)\n : val;\n\n if (key === 'q') {\n q = parseFloat(value);\n break;\n }\n\n // store parameter\n params[key] = value;\n }\n }\n\n return {\n type: type,\n subtype: subtype,\n params: params,\n q: q,\n i: i\n };\n}\n\n/**\n * Get the priority of a media type.\n * @private\n */\n\nfunction getMediaTypePriority(type, accepted, index) {\n var priority = {o: -1, q: 0, s: 0};\n\n for (var i = 0; i < accepted.length; i++) {\n var spec = specify(type, accepted[i], index);\n\n if (spec && (priority.s - spec.s || priority.q - spec.q || priority.o - spec.o) < 0) {\n priority = spec;\n }\n }\n\n return priority;\n}\n\n/**\n * Get the specificity of the media type.\n * @private\n */\n\nfunction specify(type, spec, index) {\n var p = parseMediaType(type);\n var s = 0;\n\n if (!p) {\n return null;\n }\n\n if(spec.type.toLowerCase() == p.type.toLowerCase()) {\n s |= 4\n } else if(spec.type != '*') {\n return null;\n }\n\n if(spec.subtype.toLowerCase() == p.subtype.toLowerCase()) {\n s |= 2\n } else if(spec.subtype != '*') {\n return null;\n }\n\n var keys = Object.keys(spec.params);\n if (keys.length > 0) {\n if (keys.every(function (k) {\n return spec.params[k] == '*' || (spec.params[k] || '').toLowerCase() == (p.params[k] || '').toLowerCase();\n })) {\n s |= 1\n } else {\n return null\n }\n }\n\n return {\n i: index,\n o: spec.i,\n q: spec.q,\n s: s,\n }\n}\n\n/**\n * Get the preferred media types from an Accept header.\n * @public\n */\n\nfunction preferredMediaTypes(accept, provided) {\n // RFC 2616 sec 14.2: no header = */*\n var accepts = parseAccept(accept === undefined ? '*/*' : accept || '');\n\n if (!provided) {\n // sorted list of all types\n return accepts\n .filter(isQuality)\n .sort(compareSpecs)\n .map(getFullType);\n }\n\n var priorities = provided.map(function getPriority(type, index) {\n return getMediaTypePriority(type, accepts, index);\n });\n\n // sorted list of accepted types\n return priorities.filter(isQuality).sort(compareSpecs).map(function getType(priority) {\n return provided[priorities.indexOf(priority)];\n });\n}\n\n/**\n * Compare two specs.\n * @private\n */\n\nfunction compareSpecs(a, b) {\n return (b.q - a.q) || (b.s - a.s) || (a.o - b.o) || (a.i - b.i) || 0;\n}\n\n/**\n * Get full type string.\n * @private\n */\n\nfunction getFullType(spec) {\n return spec.type + '/' + spec.subtype;\n}\n\n/**\n * Check if a spec has any quality.\n * @private\n */\n\nfunction isQuality(spec) {\n return spec.q > 0;\n}\n\n/**\n * Count the number of quotes in a string.\n * @private\n */\n\nfunction quoteCount(string) {\n var count = 0;\n var index = 0;\n\n while ((index = string.indexOf('\"', index)) !== -1) {\n count++;\n index++;\n }\n\n return count;\n}\n\n/**\n * Split a key value pair.\n * @private\n */\n\nfunction splitKeyValuePair(str) {\n var index = str.indexOf('=');\n var key;\n var val;\n\n if (index === -1) {\n key = str;\n } else {\n key = str.substr(0, index);\n val = str.substr(index + 1);\n }\n\n return [key, val];\n}\n\n/**\n * Split an Accept header into media types.\n * @private\n */\n\nfunction splitMediaTypes(accept) {\n var accepts = accept.split(',');\n\n for (var i = 1, j = 0; i < accepts.length; i++) {\n if (quoteCount(accepts[j]) % 2 == 0) {\n accepts[++j] = accepts[i];\n } else {\n accepts[j] += ',' + accepts[i];\n }\n }\n\n // trim accepts\n accepts.length = j + 1;\n\n return accepts;\n}\n\n/**\n * Split a string of parameters.\n * @private\n */\n\nfunction splitParameters(str) {\n var parameters = str.split(';');\n\n for (var i = 1, j = 0; i < parameters.length; i++) {\n if (quoteCount(parameters[j]) % 2 == 0) {\n parameters[++j] = parameters[i];\n } else {\n parameters[j] += ';' + parameters[i];\n }\n }\n\n // trim parameters\n parameters.length = j + 1;\n\n for (var i = 0; i < parameters.length; i++) {\n parameters[i] = parameters[i].trim();\n }\n\n return parameters;\n}\n", "/*!\n * negotiator\n * Copyright(c) 2012 Federico Romero\n * Copyright(c) 2012-2014 Isaac Z. Schlueter\n * Copyright(c) 2015 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict';\n\nvar preferredCharsets = require('./lib/charset')\nvar preferredEncodings = require('./lib/encoding')\nvar preferredLanguages = require('./lib/language')\nvar preferredMediaTypes = require('./lib/mediaType')\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = Negotiator;\nmodule.exports.Negotiator = Negotiator;\n\n/**\n * Create a Negotiator instance from a request.\n * @param {object} request\n * @public\n */\n\nfunction Negotiator(request) {\n if (!(this instanceof Negotiator)) {\n return new Negotiator(request);\n }\n\n this.request = request;\n}\n\nNegotiator.prototype.charset = function charset(available) {\n var set = this.charsets(available);\n return set && set[0];\n};\n\nNegotiator.prototype.charsets = function charsets(available) {\n return preferredCharsets(this.request.headers['accept-charset'], available);\n};\n\nNegotiator.prototype.encoding = function encoding(available) {\n var set = this.encodings(available);\n return set && set[0];\n};\n\nNegotiator.prototype.encodings = function encodings(available) {\n return preferredEncodings(this.request.headers['accept-encoding'], available);\n};\n\nNegotiator.prototype.language = function language(available) {\n var set = this.languages(available);\n return set && set[0];\n};\n\nNegotiator.prototype.languages = function languages(available) {\n return preferredLanguages(this.request.headers['accept-language'], available);\n};\n\nNegotiator.prototype.mediaType = function mediaType(available) {\n var set = this.mediaTypes(available);\n return set && set[0];\n};\n\nNegotiator.prototype.mediaTypes = function mediaTypes(available) {\n return preferredMediaTypes(this.request.headers.accept, available);\n};\n\n// Backwards compatibility\nNegotiator.prototype.preferredCharset = Negotiator.prototype.charset;\nNegotiator.prototype.preferredCharsets = Negotiator.prototype.charsets;\nNegotiator.prototype.preferredEncoding = Negotiator.prototype.encoding;\nNegotiator.prototype.preferredEncodings = Negotiator.prototype.encodings;\nNegotiator.prototype.preferredLanguage = Negotiator.prototype.language;\nNegotiator.prototype.preferredLanguages = Negotiator.prototype.languages;\nNegotiator.prototype.preferredMediaType = Negotiator.prototype.mediaType;\nNegotiator.prototype.preferredMediaTypes = Negotiator.prototype.mediaTypes;\n", "/*!\n * accepts\n * Copyright(c) 2014 Jonathan Ong\n * Copyright(c) 2015 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict'\n\n/**\n * Module dependencies.\n * @private\n */\n\nvar Negotiator = require('negotiator')\nvar mime = require('mime-types')\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = Accepts\n\n/**\n * Create a new Accepts object for the given req.\n *\n * @param {object} req\n * @public\n */\n\nfunction Accepts (req) {\n if (!(this instanceof Accepts)) {\n return new Accepts(req)\n }\n\n this.headers = req.headers\n this.negotiator = new Negotiator(req)\n}\n\n/**\n * Check if the given `type(s)` is acceptable, returning\n * the best match when true, otherwise `undefined`, in which\n * case you should respond with 406 \"Not Acceptable\".\n *\n * The `type` value may be a single mime type string\n * such as \"application/json\", the extension name\n * such as \"json\" or an array `[\"json\", \"html\", \"text/plain\"]`. When a list\n * or array is given the _best_ match, if any is returned.\n *\n * Examples:\n *\n * // Accept: text/html\n * this.types('html');\n * // => \"html\"\n *\n * // Accept: text/*, application/json\n * this.types('html');\n * // => \"html\"\n * this.types('text/html');\n * // => \"text/html\"\n * this.types('json', 'text');\n * // => \"json\"\n * this.types('application/json');\n * // => \"application/json\"\n *\n * // Accept: text/*, application/json\n * this.types('image/png');\n * this.types('png');\n * // => undefined\n *\n * // Accept: text/*;q=.5, application/json\n * this.types(['html', 'json']);\n * this.types('html', 'json');\n * // => \"json\"\n *\n * @param {String|Array} types...\n * @return {String|Array|Boolean}\n * @public\n */\n\nAccepts.prototype.type =\nAccepts.prototype.types = function (types_) {\n var types = types_\n\n // support flattened arguments\n if (types && !Array.isArray(types)) {\n types = new Array(arguments.length)\n for (var i = 0; i < types.length; i++) {\n types[i] = arguments[i]\n }\n }\n\n // no types, return all requested types\n if (!types || types.length === 0) {\n return this.negotiator.mediaTypes()\n }\n\n // no accept header, return first given type\n if (!this.headers.accept) {\n return types[0]\n }\n\n var mimes = types.map(extToMime)\n var accepts = this.negotiator.mediaTypes(mimes.filter(validMime))\n var first = accepts[0]\n\n return first\n ? types[mimes.indexOf(first)]\n : false\n}\n\n/**\n * Return accepted encodings or best fit based on `encodings`.\n *\n * Given `Accept-Encoding: gzip, deflate`\n * an array sorted by quality is returned:\n *\n * ['gzip', 'deflate']\n *\n * @param {String|Array} encodings...\n * @return {String|Array}\n * @public\n */\n\nAccepts.prototype.encoding =\nAccepts.prototype.encodings = function (encodings_) {\n var encodings = encodings_\n\n // support flattened arguments\n if (encodings && !Array.isArray(encodings)) {\n encodings = new Array(arguments.length)\n for (var i = 0; i < encodings.length; i++) {\n encodings[i] = arguments[i]\n }\n }\n\n // no encodings, return all requested encodings\n if (!encodings || encodings.length === 0) {\n return this.negotiator.encodings()\n }\n\n return this.negotiator.encodings(encodings)[0] || false\n}\n\n/**\n * Return accepted charsets or best fit based on `charsets`.\n *\n * Given `Accept-Charset: utf-8, iso-8859-1;q=0.2, utf-7;q=0.5`\n * an array sorted by quality is returned:\n *\n * ['utf-8', 'utf-7', 'iso-8859-1']\n *\n * @param {String|Array} charsets...\n * @return {String|Array}\n * @public\n */\n\nAccepts.prototype.charset =\nAccepts.prototype.charsets = function (charsets_) {\n var charsets = charsets_\n\n // support flattened arguments\n if (charsets && !Array.isArray(charsets)) {\n charsets = new Array(arguments.length)\n for (var i = 0; i < charsets.length; i++) {\n charsets[i] = arguments[i]\n }\n }\n\n // no charsets, return all requested charsets\n if (!charsets || charsets.length === 0) {\n return this.negotiator.charsets()\n }\n\n return this.negotiator.charsets(charsets)[0] || false\n}\n\n/**\n * Return accepted languages or best fit based on `langs`.\n *\n * Given `Accept-Language: en;q=0.8, es, pt`\n * an array sorted by quality is returned:\n *\n * ['es', 'pt', 'en']\n *\n * @param {String|Array} langs...\n * @return {Array|String}\n * @public\n */\n\nAccepts.prototype.lang =\nAccepts.prototype.langs =\nAccepts.prototype.language =\nAccepts.prototype.languages = function (languages_) {\n var languages = languages_\n\n // support flattened arguments\n if (languages && !Array.isArray(languages)) {\n languages = new Array(arguments.length)\n for (var i = 0; i < languages.length; i++) {\n languages[i] = arguments[i]\n }\n }\n\n // no languages, return all requested languages\n if (!languages || languages.length === 0) {\n return this.negotiator.languages()\n }\n\n return this.negotiator.languages(languages)[0] || false\n}\n\n/**\n * Convert extnames to mime.\n *\n * @param {String} type\n * @return {String}\n * @private\n */\n\nfunction extToMime (type) {\n return type.indexOf('/') === -1\n ? mime.lookup(type)\n : type\n}\n\n/**\n * Check if mime is valid.\n *\n * @param {String} type\n * @return {String}\n * @private\n */\n\nfunction validMime (type) {\n return typeof type === 'string'\n}\n", "/*!\n * express\n * Copyright(c) 2009-2013 TJ Holowaychuk\n * Copyright(c) 2013 Roman Shtylman\n * Copyright(c) 2014-2015 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict';\n\n/**\n * Module dependencies.\n * @private\n */\n\nvar accepts = require('accepts');\nvar deprecate = require('depd')('express');\nvar isIP = require('net').isIP;\nvar typeis = require('type-is');\nvar http = require('http');\nvar fresh = require('fresh');\nvar parseRange = require('range-parser');\nvar parse = require('parseurl');\nvar proxyaddr = require('proxy-addr');\n\n/**\n * Request prototype.\n * @public\n */\n\nvar req = Object.create(http.IncomingMessage.prototype)\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = req\n\n/**\n * Return request header.\n *\n * The `Referrer` header field is special-cased,\n * both `Referrer` and `Referer` are interchangeable.\n *\n * Examples:\n *\n * req.get('Content-Type');\n * // => \"text/plain\"\n *\n * req.get('content-type');\n * // => \"text/plain\"\n *\n * req.get('Something');\n * // => undefined\n *\n * Aliased as `req.header()`.\n *\n * @param {String} name\n * @return {String}\n * @public\n */\n\nreq.get =\nreq.header = function header(name) {\n if (!name) {\n throw new TypeError('name argument is required to req.get');\n }\n\n if (typeof name !== 'string') {\n throw new TypeError('name must be a string to req.get');\n }\n\n var lc = name.toLowerCase();\n\n switch (lc) {\n case 'referer':\n case 'referrer':\n return this.headers.referrer\n || this.headers.referer;\n default:\n return this.headers[lc];\n }\n};\n\n/**\n * To do: update docs.\n *\n * Check if the given `type(s)` is acceptable, returning\n * the best match when true, otherwise `undefined`, in which\n * case you should respond with 406 \"Not Acceptable\".\n *\n * The `type` value may be a single MIME type string\n * such as \"application/json\", an extension name\n * such as \"json\", a comma-delimited list such as \"json, html, text/plain\",\n * an argument list such as `\"json\", \"html\", \"text/plain\"`,\n * or an array `[\"json\", \"html\", \"text/plain\"]`. When a list\n * or array is given, the _best_ match, if any is returned.\n *\n * Examples:\n *\n * // Accept: text/html\n * req.accepts('html');\n * // => \"html\"\n *\n * // Accept: text/*, application/json\n * req.accepts('html');\n * // => \"html\"\n * req.accepts('text/html');\n * // => \"text/html\"\n * req.accepts('json, text');\n * // => \"json\"\n * req.accepts('application/json');\n * // => \"application/json\"\n *\n * // Accept: text/*, application/json\n * req.accepts('image/png');\n * req.accepts('png');\n * // => undefined\n *\n * // Accept: text/*;q=.5, application/json\n * req.accepts(['html', 'json']);\n * req.accepts('html', 'json');\n * req.accepts('html, json');\n * // => \"json\"\n *\n * @param {String|Array} type(s)\n * @return {String|Array|Boolean}\n * @public\n */\n\nreq.accepts = function(){\n var accept = accepts(this);\n return accept.types.apply(accept, arguments);\n};\n\n/**\n * Check if the given `encoding`s are accepted.\n *\n * @param {String} ...encoding\n * @return {String|Array}\n * @public\n */\n\nreq.acceptsEncodings = function(){\n var accept = accepts(this);\n return accept.encodings.apply(accept, arguments);\n};\n\nreq.acceptsEncoding = deprecate.function(req.acceptsEncodings,\n 'req.acceptsEncoding: Use acceptsEncodings instead');\n\n/**\n * Check if the given `charset`s are acceptable,\n * otherwise you should respond with 406 \"Not Acceptable\".\n *\n * @param {String} ...charset\n * @return {String|Array}\n * @public\n */\n\nreq.acceptsCharsets = function(){\n var accept = accepts(this);\n return accept.charsets.apply(accept, arguments);\n};\n\nreq.acceptsCharset = deprecate.function(req.acceptsCharsets,\n 'req.acceptsCharset: Use acceptsCharsets instead');\n\n/**\n * Check if the given `lang`s are acceptable,\n * otherwise you should respond with 406 \"Not Acceptable\".\n *\n * @param {String} ...lang\n * @return {String|Array}\n * @public\n */\n\nreq.acceptsLanguages = function(){\n var accept = accepts(this);\n return accept.languages.apply(accept, arguments);\n};\n\nreq.acceptsLanguage = deprecate.function(req.acceptsLanguages,\n 'req.acceptsLanguage: Use acceptsLanguages instead');\n\n/**\n * Parse Range header field, capping to the given `size`.\n *\n * Unspecified ranges such as \"0-\" require knowledge of your resource length. In\n * the case of a byte range this is of course the total number of bytes. If the\n * Range header field is not given `undefined` is returned, `-1` when unsatisfiable,\n * and `-2` when syntactically invalid.\n *\n * When ranges are returned, the array has a \"type\" property which is the type of\n * range that is required (most commonly, \"bytes\"). Each array element is an object\n * with a \"start\" and \"end\" property for the portion of the range.\n *\n * The \"combine\" option can be set to `true` and overlapping & adjacent ranges\n * will be combined into a single range.\n *\n * NOTE: remember that ranges are inclusive, so for example \"Range: users=0-3\"\n * should respond with 4 users when available, not 3.\n *\n * @param {number} size\n * @param {object} [options]\n * @param {boolean} [options.combine=false]\n * @return {number|array}\n * @public\n */\n\nreq.range = function range(size, options) {\n var range = this.get('Range');\n if (!range) return;\n return parseRange(size, range, options);\n};\n\n/**\n * Return the value of param `name` when present or `defaultValue`.\n *\n * - Checks route placeholders, ex: _/user/:id_\n * - Checks body params, ex: id=12, {\"id\":12}\n * - Checks query string params, ex: ?id=12\n *\n * To utilize request bodies, `req.body`\n * should be an object. This can be done by using\n * the `bodyParser()` middleware.\n *\n * @param {String} name\n * @param {Mixed} [defaultValue]\n * @return {String}\n * @public\n */\n\nreq.param = function param(name, defaultValue) {\n var params = this.params || {};\n var body = this.body || {};\n var query = this.query || {};\n\n var args = arguments.length === 1\n ? 'name'\n : 'name, default';\n deprecate('req.param(' + args + '): Use req.params, req.body, or req.query instead');\n\n if (null != params[name] && params.hasOwnProperty(name)) return params[name];\n if (null != body[name]) return body[name];\n if (null != query[name]) return query[name];\n\n return defaultValue;\n};\n\n/**\n * Check if the incoming request contains the \"Content-Type\"\n * header field, and it contains the given mime `type`.\n *\n * Examples:\n *\n * // With Content-Type: text/html; charset=utf-8\n * req.is('html');\n * req.is('text/html');\n * req.is('text/*');\n * // => true\n *\n * // When Content-Type is application/json\n * req.is('json');\n * req.is('application/json');\n * req.is('application/*');\n * // => true\n *\n * req.is('html');\n * // => false\n *\n * @param {String|Array} types...\n * @return {String|false|null}\n * @public\n */\n\nreq.is = function is(types) {\n var arr = types;\n\n // support flattened arguments\n if (!Array.isArray(types)) {\n arr = new Array(arguments.length);\n for (var i = 0; i < arr.length; i++) {\n arr[i] = arguments[i];\n }\n }\n\n return typeis(this, arr);\n};\n\n/**\n * Return the protocol string \"http\" or \"https\"\n * when requested with TLS. When the \"trust proxy\"\n * setting trusts the socket address, the\n * \"X-Forwarded-Proto\" header field will be trusted\n * and used if present.\n *\n * If you're running behind a reverse proxy that\n * supplies https for you this may be enabled.\n *\n * @return {String}\n * @public\n */\n\ndefineGetter(req, 'protocol', function protocol(){\n var proto = this.connection.encrypted\n ? 'https'\n : 'http';\n var trust = this.app.get('trust proxy fn');\n\n if (!trust(this.connection.remoteAddress, 0)) {\n return proto;\n }\n\n // Note: X-Forwarded-Proto is normally only ever a\n // single value, but this is to be safe.\n var header = this.get('X-Forwarded-Proto') || proto\n var index = header.indexOf(',')\n\n return index !== -1\n ? header.substring(0, index).trim()\n : header.trim()\n});\n\n/**\n * Short-hand for:\n *\n * req.protocol === 'https'\n *\n * @return {Boolean}\n * @public\n */\n\ndefineGetter(req, 'secure', function secure(){\n return this.protocol === 'https';\n});\n\n/**\n * Return the remote address from the trusted proxy.\n *\n * The is the remote address on the socket unless\n * \"trust proxy\" is set.\n *\n * @return {String}\n * @public\n */\n\ndefineGetter(req, 'ip', function ip(){\n var trust = this.app.get('trust proxy fn');\n return proxyaddr(this, trust);\n});\n\n/**\n * When \"trust proxy\" is set, trusted proxy addresses + client.\n *\n * For example if the value were \"client, proxy1, proxy2\"\n * you would receive the array `[\"client\", \"proxy1\", \"proxy2\"]`\n * where \"proxy2\" is the furthest down-stream and \"proxy1\" and\n * \"proxy2\" were trusted.\n *\n * @return {Array}\n * @public\n */\n\ndefineGetter(req, 'ips', function ips() {\n var trust = this.app.get('trust proxy fn');\n var addrs = proxyaddr.all(this, trust);\n\n // reverse the order (to farthest -> closest)\n // and remove socket address\n addrs.reverse().pop()\n\n return addrs\n});\n\n/**\n * Return subdomains as an array.\n *\n * Subdomains are the dot-separated parts of the host before the main domain of\n * the app. By default, the domain of the app is assumed to be the last two\n * parts of the host. This can be changed by setting \"subdomain offset\".\n *\n * For example, if the domain is \"tobi.ferrets.example.com\":\n * If \"subdomain offset\" is not set, req.subdomains is `[\"ferrets\", \"tobi\"]`.\n * If \"subdomain offset\" is 3, req.subdomains is `[\"tobi\"]`.\n *\n * @return {Array}\n * @public\n */\n\ndefineGetter(req, 'subdomains', function subdomains() {\n var hostname = this.hostname;\n\n if (!hostname) return [];\n\n var offset = this.app.get('subdomain offset');\n var subdomains = !isIP(hostname)\n ? hostname.split('.').reverse()\n : [hostname];\n\n return subdomains.slice(offset);\n});\n\n/**\n * Short-hand for `url.parse(req.url).pathname`.\n *\n * @return {String}\n * @public\n */\n\ndefineGetter(req, 'path', function path() {\n return parse(this).pathname;\n});\n\n/**\n * Parse the \"Host\" header field to a hostname.\n *\n * When the \"trust proxy\" setting trusts the socket\n * address, the \"X-Forwarded-Host\" header field will\n * be trusted.\n *\n * @return {String}\n * @public\n */\n\ndefineGetter(req, 'hostname', function hostname(){\n var trust = this.app.get('trust proxy fn');\n var host = this.get('X-Forwarded-Host');\n\n if (!host || !trust(this.connection.remoteAddress, 0)) {\n host = this.get('Host');\n } else if (host.indexOf(',') !== -1) {\n // Note: X-Forwarded-Host is normally only ever a\n // single value, but this is to be safe.\n host = host.substring(0, host.indexOf(',')).trimRight()\n }\n\n if (!host) return;\n\n // IPv6 literal support\n var offset = host[0] === '['\n ? host.indexOf(']') + 1\n : 0;\n var index = host.indexOf(':', offset);\n\n return index !== -1\n ? host.substring(0, index)\n : host;\n});\n\n// TODO: change req.host to return host in next major\n\ndefineGetter(req, 'host', deprecate.function(function host(){\n return this.hostname;\n}, 'req.host: Use req.hostname instead'));\n\n/**\n * Check if the request is fresh, aka\n * Last-Modified and/or the ETag\n * still match.\n *\n * @return {Boolean}\n * @public\n */\n\ndefineGetter(req, 'fresh', function(){\n var method = this.method;\n var res = this.res\n var status = res.statusCode\n\n // GET or HEAD for weak freshness validation only\n if ('GET' !== method && 'HEAD' !== method) return false;\n\n // 2xx or 304 as per rfc2616 14.26\n if ((status >= 200 && status < 300) || 304 === status) {\n return fresh(this.headers, {\n 'etag': res.get('ETag'),\n 'last-modified': res.get('Last-Modified')\n })\n }\n\n return false;\n});\n\n/**\n * Check if the request is stale, aka\n * \"Last-Modified\" and / or the \"ETag\" for the\n * resource has changed.\n *\n * @return {Boolean}\n * @public\n */\n\ndefineGetter(req, 'stale', function stale(){\n return !this.fresh;\n});\n\n/**\n * Check if the request was an _XMLHttpRequest_.\n *\n * @return {Boolean}\n * @public\n */\n\ndefineGetter(req, 'xhr', function xhr(){\n var val = this.get('X-Requested-With') || '';\n return val.toLowerCase() === 'xmlhttprequest';\n});\n\n/**\n * Helper function for creating a getter on an object.\n *\n * @param {Object} obj\n * @param {String} name\n * @param {Function} getter\n * @private\n */\nfunction defineGetter(obj, name, getter) {\n Object.defineProperty(obj, name, {\n configurable: true,\n enumerable: true,\n get: getter\n });\n}\n", "/**\n * Module dependencies.\n */\n\nvar crypto = require('crypto');\n\n/**\n * Sign the given `val` with `secret`.\n *\n * @param {String} val\n * @param {String} secret\n * @return {String}\n * @api private\n */\n\nexports.sign = function(val, secret){\n if ('string' != typeof val) throw new TypeError(\"Cookie value must be provided as a string.\");\n if ('string' != typeof secret) throw new TypeError(\"Secret string must be provided.\");\n return val + '.' + crypto\n .createHmac('sha256', secret)\n .update(val)\n .digest('base64')\n .replace(/\\=+$/, '');\n};\n\n/**\n * Unsign and decode the given `val` with `secret`,\n * returning `false` if the signature is invalid.\n *\n * @param {String} val\n * @param {String} secret\n * @return {String|Boolean}\n * @api private\n */\n\nexports.unsign = function(val, secret){\n if ('string' != typeof val) throw new TypeError(\"Signed cookie string must be provided.\");\n if ('string' != typeof secret) throw new TypeError(\"Secret string must be provided.\");\n var str = val.slice(0, val.lastIndexOf('.'))\n , mac = exports.sign(str, secret);\n \n return sha1(mac) == sha1(val) ? str : false;\n};\n\n/**\n * Private\n */\n\nfunction sha1(str){\n return crypto.createHash('sha1').update(str).digest('hex');\n}\n", "/*!\n * cookie\n * Copyright(c) 2012-2014 Roman Shtylman\n * Copyright(c) 2015 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict';\n\n/**\n * Module exports.\n * @public\n */\n\nexports.parse = parse;\nexports.serialize = serialize;\n\n/**\n * Module variables.\n * @private\n */\n\nvar __toString = Object.prototype.toString\n\n/**\n * RegExp to match field-content in RFC 7230 sec 3.2\n *\n * field-content = field-vchar [ 1*( SP / HTAB ) field-vchar ]\n * field-vchar = VCHAR / obs-text\n * obs-text = %x80-FF\n */\n\nvar fieldContentRegExp = /^[\\u0009\\u0020-\\u007e\\u0080-\\u00ff]+$/;\n\n/**\n * Parse a cookie header.\n *\n * Parse the given cookie header string into an object\n * The object has the various cookies as keys(names) => values\n *\n * @param {string} str\n * @param {object} [options]\n * @return {object}\n * @public\n */\n\nfunction parse(str, options) {\n if (typeof str !== 'string') {\n throw new TypeError('argument str must be a string');\n }\n\n var obj = {}\n var opt = options || {};\n var dec = opt.decode || decode;\n\n var index = 0\n while (index < str.length) {\n var eqIdx = str.indexOf('=', index)\n\n // no more cookie pairs\n if (eqIdx === -1) {\n break\n }\n\n var endIdx = str.indexOf(';', index)\n\n if (endIdx === -1) {\n endIdx = str.length\n } else if (endIdx < eqIdx) {\n // backtrack on prior semicolon\n index = str.lastIndexOf(';', eqIdx - 1) + 1\n continue\n }\n\n var key = str.slice(index, eqIdx).trim()\n\n // only assign once\n if (undefined === obj[key]) {\n var val = str.slice(eqIdx + 1, endIdx).trim()\n\n // quoted values\n if (val.charCodeAt(0) === 0x22) {\n val = val.slice(1, -1)\n }\n\n obj[key] = tryDecode(val, dec);\n }\n\n index = endIdx + 1\n }\n\n return obj;\n}\n\n/**\n * Serialize data into a cookie header.\n *\n * Serialize the a name value pair into a cookie string suitable for\n * http headers. An optional options object specified cookie parameters.\n *\n * serialize('foo', 'bar', { httpOnly: true })\n * => \"foo=bar; httpOnly\"\n *\n * @param {string} name\n * @param {string} val\n * @param {object} [options]\n * @return {string}\n * @public\n */\n\nfunction serialize(name, val, options) {\n var opt = options || {};\n var enc = opt.encode || encode;\n\n if (typeof enc !== 'function') {\n throw new TypeError('option encode is invalid');\n }\n\n if (!fieldContentRegExp.test(name)) {\n throw new TypeError('argument name is invalid');\n }\n\n var value = enc(val);\n\n if (value && !fieldContentRegExp.test(value)) {\n throw new TypeError('argument val is invalid');\n }\n\n var str = name + '=' + value;\n\n if (null != opt.maxAge) {\n var maxAge = opt.maxAge - 0;\n\n if (isNaN(maxAge) || !isFinite(maxAge)) {\n throw new TypeError('option maxAge is invalid')\n }\n\n str += '; Max-Age=' + Math.floor(maxAge);\n }\n\n if (opt.domain) {\n if (!fieldContentRegExp.test(opt.domain)) {\n throw new TypeError('option domain is invalid');\n }\n\n str += '; Domain=' + opt.domain;\n }\n\n if (opt.path) {\n if (!fieldContentRegExp.test(opt.path)) {\n throw new TypeError('option path is invalid');\n }\n\n str += '; Path=' + opt.path;\n }\n\n if (opt.expires) {\n var expires = opt.expires\n\n if (!isDate(expires) || isNaN(expires.valueOf())) {\n throw new TypeError('option expires is invalid');\n }\n\n str += '; Expires=' + expires.toUTCString()\n }\n\n if (opt.httpOnly) {\n str += '; HttpOnly';\n }\n\n if (opt.secure) {\n str += '; Secure';\n }\n\n if (opt.priority) {\n var priority = typeof opt.priority === 'string'\n ? opt.priority.toLowerCase()\n : opt.priority\n\n switch (priority) {\n case 'low':\n str += '; Priority=Low'\n break\n case 'medium':\n str += '; Priority=Medium'\n break\n case 'high':\n str += '; Priority=High'\n break\n default:\n throw new TypeError('option priority is invalid')\n }\n }\n\n if (opt.sameSite) {\n var sameSite = typeof opt.sameSite === 'string'\n ? opt.sameSite.toLowerCase() : opt.sameSite;\n\n switch (sameSite) {\n case true:\n str += '; SameSite=Strict';\n break;\n case 'lax':\n str += '; SameSite=Lax';\n break;\n case 'strict':\n str += '; SameSite=Strict';\n break;\n case 'none':\n str += '; SameSite=None';\n break;\n default:\n throw new TypeError('option sameSite is invalid');\n }\n }\n\n return str;\n}\n\n/**\n * URL-decode string value. Optimized to skip native call when no %.\n *\n * @param {string} str\n * @returns {string}\n */\n\nfunction decode (str) {\n return str.indexOf('%') !== -1\n ? decodeURIComponent(str)\n : str\n}\n\n/**\n * URL-encode value.\n *\n * @param {string} str\n * @returns {string}\n */\n\nfunction encode (val) {\n return encodeURIComponent(val)\n}\n\n/**\n * Determine if value is a Date.\n *\n * @param {*} val\n * @private\n */\n\nfunction isDate (val) {\n return __toString.call(val) === '[object Date]' ||\n val instanceof Date\n}\n\n/**\n * Try decoding a string using a decoding function.\n *\n * @param {string} str\n * @param {function} decode\n * @private\n */\n\nfunction tryDecode(str, decode) {\n try {\n return decode(str);\n } catch (e) {\n return str;\n }\n}\n", "/*!\n * vary\n * Copyright(c) 2014-2017 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict'\n\n/**\n * Module exports.\n */\n\nmodule.exports = vary\nmodule.exports.append = append\n\n/**\n * RegExp to match field-name in RFC 7230 sec 3.2\n *\n * field-name = token\n * token = 1*tchar\n * tchar = \"!\" / \"#\" / \"$\" / \"%\" / \"&\" / \"'\" / \"*\"\n * / \"+\" / \"-\" / \".\" / \"^\" / \"_\" / \"`\" / \"|\" / \"~\"\n * / DIGIT / ALPHA\n * ; any VCHAR, except delimiters\n */\n\nvar FIELD_NAME_REGEXP = /^[!#$%&'*+\\-.^_`|~0-9A-Za-z]+$/\n\n/**\n * Append a field to a vary header.\n *\n * @param {String} header\n * @param {String|Array} field\n * @return {String}\n * @public\n */\n\nfunction append (header, field) {\n if (typeof header !== 'string') {\n throw new TypeError('header argument is required')\n }\n\n if (!field) {\n throw new TypeError('field argument is required')\n }\n\n // get fields array\n var fields = !Array.isArray(field)\n ? parse(String(field))\n : field\n\n // assert on invalid field names\n for (var j = 0; j < fields.length; j++) {\n if (!FIELD_NAME_REGEXP.test(fields[j])) {\n throw new TypeError('field argument contains an invalid header name')\n }\n }\n\n // existing, unspecified vary\n if (header === '*') {\n return header\n }\n\n // enumerate current values\n var val = header\n var vals = parse(header.toLowerCase())\n\n // unspecified vary\n if (fields.indexOf('*') !== -1 || vals.indexOf('*') !== -1) {\n return '*'\n }\n\n for (var i = 0; i < fields.length; i++) {\n var fld = fields[i].toLowerCase()\n\n // append value (case-preserving)\n if (vals.indexOf(fld) === -1) {\n vals.push(fld)\n val = val\n ? val + ', ' + fields[i]\n : fields[i]\n }\n }\n\n return val\n}\n\n/**\n * Parse a vary header into an array.\n *\n * @param {String} header\n * @return {Array}\n * @private\n */\n\nfunction parse (header) {\n var end = 0\n var list = []\n var start = 0\n\n // gather tokens\n for (var i = 0, len = header.length; i < len; i++) {\n switch (header.charCodeAt(i)) {\n case 0x20: /* */\n if (start === end) {\n start = end = i + 1\n }\n break\n case 0x2c: /* , */\n list.push(header.substring(start, end))\n start = end = i + 1\n break\n default:\n end = i + 1\n break\n }\n }\n\n // final token\n list.push(header.substring(start, end))\n\n return list\n}\n\n/**\n * Mark that a request is varied on a header field.\n *\n * @param {Object} res\n * @param {String|Array} field\n * @public\n */\n\nfunction vary (res, field) {\n if (!res || !res.getHeader || !res.setHeader) {\n // quack quack\n throw new TypeError('res argument is required')\n }\n\n // get existing header\n var val = res.getHeader('Vary') || ''\n var header = Array.isArray(val)\n ? val.join(', ')\n : String(val)\n\n // set new header\n if ((val = append(header, field))) {\n res.setHeader('Vary', val)\n }\n}\n", "/*!\n * express\n * Copyright(c) 2009-2013 TJ Holowaychuk\n * Copyright(c) 2014-2015 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict';\n\n/**\n * Module dependencies.\n * @private\n */\n\nvar Buffer = require('safe-buffer').Buffer\nvar contentDisposition = require('content-disposition');\nvar createError = require('http-errors')\nvar deprecate = require('depd')('express');\nvar encodeUrl = require('encodeurl');\nvar escapeHtml = require('escape-html');\nvar http = require('http');\nvar isAbsolute = require('./utils').isAbsolute;\nvar onFinished = require('on-finished');\nvar path = require('path');\nvar statuses = require('statuses')\nvar merge = require('utils-merge');\nvar sign = require('cookie-signature').sign;\nvar normalizeType = require('./utils').normalizeType;\nvar normalizeTypes = require('./utils').normalizeTypes;\nvar setCharset = require('./utils').setCharset;\nvar cookie = require('cookie');\nvar send = require('send');\nvar extname = path.extname;\nvar mime = send.mime;\nvar resolve = path.resolve;\nvar vary = require('vary');\n\n/**\n * Response prototype.\n * @public\n */\n\nvar res = Object.create(http.ServerResponse.prototype)\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = res\n\n/**\n * Module variables.\n * @private\n */\n\nvar charsetRegExp = /;\\s*charset\\s*=/;\n\n/**\n * Set status `code`.\n *\n * @param {Number} code\n * @return {ServerResponse}\n * @public\n */\n\nres.status = function status(code) {\n if ((typeof code === 'string' || Math.floor(code) !== code) && code > 99 && code < 1000) {\n deprecate('res.status(' + JSON.stringify(code) + '): use res.status(' + Math.floor(code) + ') instead')\n }\n this.statusCode = code;\n return this;\n};\n\n/**\n * Set Link header field with the given `links`.\n *\n * Examples:\n *\n * res.links({\n * next: 'http://api.example.com/users?page=2',\n * last: 'http://api.example.com/users?page=5'\n * });\n *\n * @param {Object} links\n * @return {ServerResponse}\n * @public\n */\n\nres.links = function(links){\n var link = this.get('Link') || '';\n if (link) link += ', ';\n return this.set('Link', link + Object.keys(links).map(function(rel){\n return '<' + links[rel] + '>; rel=\"' + rel + '\"';\n }).join(', '));\n};\n\n/**\n * Send a response.\n *\n * Examples:\n *\n * res.send(Buffer.from('wahoo'));\n * res.send({ some: 'json' });\n * res.send('

some html

');\n *\n * @param {string|number|boolean|object|Buffer} body\n * @public\n */\n\nres.send = function send(body) {\n var chunk = body;\n var encoding;\n var req = this.req;\n var type;\n\n // settings\n var app = this.app;\n\n // allow status / body\n if (arguments.length === 2) {\n // res.send(body, status) backwards compat\n if (typeof arguments[0] !== 'number' && typeof arguments[1] === 'number') {\n deprecate('res.send(body, status): Use res.status(status).send(body) instead');\n this.statusCode = arguments[1];\n } else {\n deprecate('res.send(status, body): Use res.status(status).send(body) instead');\n this.statusCode = arguments[0];\n chunk = arguments[1];\n }\n }\n\n // disambiguate res.send(status) and res.send(status, num)\n if (typeof chunk === 'number' && arguments.length === 1) {\n // res.send(status) will set status message as text string\n if (!this.get('Content-Type')) {\n this.type('txt');\n }\n\n deprecate('res.send(status): Use res.sendStatus(status) instead');\n this.statusCode = chunk;\n chunk = statuses.message[chunk]\n }\n\n switch (typeof chunk) {\n // string defaulting to html\n case 'string':\n if (!this.get('Content-Type')) {\n this.type('html');\n }\n break;\n case 'boolean':\n case 'number':\n case 'object':\n if (chunk === null) {\n chunk = '';\n } else if (Buffer.isBuffer(chunk)) {\n if (!this.get('Content-Type')) {\n this.type('bin');\n }\n } else {\n return this.json(chunk);\n }\n break;\n }\n\n // write strings in utf-8\n if (typeof chunk === 'string') {\n encoding = 'utf8';\n type = this.get('Content-Type');\n\n // reflect this in content-type\n if (typeof type === 'string') {\n this.set('Content-Type', setCharset(type, 'utf-8'));\n }\n }\n\n // determine if ETag should be generated\n var etagFn = app.get('etag fn')\n var generateETag = !this.get('ETag') && typeof etagFn === 'function'\n\n // populate Content-Length\n var len\n if (chunk !== undefined) {\n if (Buffer.isBuffer(chunk)) {\n // get length of Buffer\n len = chunk.length\n } else if (!generateETag && chunk.length < 1000) {\n // just calculate length when no ETag + small chunk\n len = Buffer.byteLength(chunk, encoding)\n } else {\n // convert chunk to Buffer and calculate\n chunk = Buffer.from(chunk, encoding)\n encoding = undefined;\n len = chunk.length\n }\n\n this.set('Content-Length', len);\n }\n\n // populate ETag\n var etag;\n if (generateETag && len !== undefined) {\n if ((etag = etagFn(chunk, encoding))) {\n this.set('ETag', etag);\n }\n }\n\n // freshness\n if (req.fresh) this.statusCode = 304;\n\n // strip irrelevant headers\n if (204 === this.statusCode || 304 === this.statusCode) {\n this.removeHeader('Content-Type');\n this.removeHeader('Content-Length');\n this.removeHeader('Transfer-Encoding');\n chunk = '';\n }\n\n // alter headers for 205\n if (this.statusCode === 205) {\n this.set('Content-Length', '0')\n this.removeHeader('Transfer-Encoding')\n chunk = ''\n }\n\n if (req.method === 'HEAD') {\n // skip body for HEAD\n this.end();\n } else {\n // respond\n this.end(chunk, encoding);\n }\n\n return this;\n};\n\n/**\n * Send JSON response.\n *\n * Examples:\n *\n * res.json(null);\n * res.json({ user: 'tj' });\n *\n * @param {string|number|boolean|object} obj\n * @public\n */\n\nres.json = function json(obj) {\n var val = obj;\n\n // allow status / body\n if (arguments.length === 2) {\n // res.json(body, status) backwards compat\n if (typeof arguments[1] === 'number') {\n deprecate('res.json(obj, status): Use res.status(status).json(obj) instead');\n this.statusCode = arguments[1];\n } else {\n deprecate('res.json(status, obj): Use res.status(status).json(obj) instead');\n this.statusCode = arguments[0];\n val = arguments[1];\n }\n }\n\n // settings\n var app = this.app;\n var escape = app.get('json escape')\n var replacer = app.get('json replacer');\n var spaces = app.get('json spaces');\n var body = stringify(val, replacer, spaces, escape)\n\n // content-type\n if (!this.get('Content-Type')) {\n this.set('Content-Type', 'application/json');\n }\n\n return this.send(body);\n};\n\n/**\n * Send JSON response with JSONP callback support.\n *\n * Examples:\n *\n * res.jsonp(null);\n * res.jsonp({ user: 'tj' });\n *\n * @param {string|number|boolean|object} obj\n * @public\n */\n\nres.jsonp = function jsonp(obj) {\n var val = obj;\n\n // allow status / body\n if (arguments.length === 2) {\n // res.jsonp(body, status) backwards compat\n if (typeof arguments[1] === 'number') {\n deprecate('res.jsonp(obj, status): Use res.status(status).jsonp(obj) instead');\n this.statusCode = arguments[1];\n } else {\n deprecate('res.jsonp(status, obj): Use res.status(status).jsonp(obj) instead');\n this.statusCode = arguments[0];\n val = arguments[1];\n }\n }\n\n // settings\n var app = this.app;\n var escape = app.get('json escape')\n var replacer = app.get('json replacer');\n var spaces = app.get('json spaces');\n var body = stringify(val, replacer, spaces, escape)\n var callback = this.req.query[app.get('jsonp callback name')];\n\n // content-type\n if (!this.get('Content-Type')) {\n this.set('X-Content-Type-Options', 'nosniff');\n this.set('Content-Type', 'application/json');\n }\n\n // fixup callback\n if (Array.isArray(callback)) {\n callback = callback[0];\n }\n\n // jsonp\n if (typeof callback === 'string' && callback.length !== 0) {\n this.set('X-Content-Type-Options', 'nosniff');\n this.set('Content-Type', 'text/javascript');\n\n // restrict callback charset\n callback = callback.replace(/[^\\[\\]\\w$.]/g, '');\n\n if (body === undefined) {\n // empty argument\n body = ''\n } else if (typeof body === 'string') {\n // replace chars not allowed in JavaScript that are in JSON\n body = body\n .replace(/\\u2028/g, '\\\\u2028')\n .replace(/\\u2029/g, '\\\\u2029')\n }\n\n // the /**/ is a specific security mitigation for \"Rosetta Flash JSONP abuse\"\n // the typeof check is just to reduce client error noise\n body = '/**/ typeof ' + callback + ' === \\'function\\' && ' + callback + '(' + body + ');';\n }\n\n return this.send(body);\n};\n\n/**\n * Send given HTTP status code.\n *\n * Sets the response status to `statusCode` and the body of the\n * response to the standard description from node's http.STATUS_CODES\n * or the statusCode number if no description.\n *\n * Examples:\n *\n * res.sendStatus(200);\n *\n * @param {number} statusCode\n * @public\n */\n\nres.sendStatus = function sendStatus(statusCode) {\n var body = statuses.message[statusCode] || String(statusCode)\n\n this.statusCode = statusCode;\n this.type('txt');\n\n return this.send(body);\n};\n\n/**\n * Transfer the file at the given `path`.\n *\n * Automatically sets the _Content-Type_ response header field.\n * The callback `callback(err)` is invoked when the transfer is complete\n * or when an error occurs. Be sure to check `res.headersSent`\n * if you wish to attempt responding, as the header and some data\n * may have already been transferred.\n *\n * Options:\n *\n * - `maxAge` defaulting to 0 (can be string converted by `ms`)\n * - `root` root directory for relative filenames\n * - `headers` object of headers to serve with file\n * - `dotfiles` serve dotfiles, defaulting to false; can be `\"allow\"` to send them\n *\n * Other options are passed along to `send`.\n *\n * Examples:\n *\n * The following example illustrates how `res.sendFile()` may\n * be used as an alternative for the `static()` middleware for\n * dynamic situations. The code backing `res.sendFile()` is actually\n * the same code, so HTTP cache support etc is identical.\n *\n * app.get('/user/:uid/photos/:file', function(req, res){\n * var uid = req.params.uid\n * , file = req.params.file;\n *\n * req.user.mayViewFilesFrom(uid, function(yes){\n * if (yes) {\n * res.sendFile('/uploads/' + uid + '/' + file);\n * } else {\n * res.send(403, 'Sorry! you cant see that.');\n * }\n * });\n * });\n *\n * @public\n */\n\nres.sendFile = function sendFile(path, options, callback) {\n var done = callback;\n var req = this.req;\n var res = this;\n var next = req.next;\n var opts = options || {};\n\n if (!path) {\n throw new TypeError('path argument is required to res.sendFile');\n }\n\n if (typeof path !== 'string') {\n throw new TypeError('path must be a string to res.sendFile')\n }\n\n // support function as second arg\n if (typeof options === 'function') {\n done = options;\n opts = {};\n }\n\n if (!opts.root && !isAbsolute(path)) {\n throw new TypeError('path must be absolute or specify root to res.sendFile');\n }\n\n // create file stream\n var pathname = encodeURI(path);\n var file = send(req, pathname, opts);\n\n // transfer\n sendfile(res, file, opts, function (err) {\n if (done) return done(err);\n if (err && err.code === 'EISDIR') return next();\n\n // next() all but write errors\n if (err && err.code !== 'ECONNABORTED' && err.syscall !== 'write') {\n next(err);\n }\n });\n};\n\n/**\n * Transfer the file at the given `path`.\n *\n * Automatically sets the _Content-Type_ response header field.\n * The callback `callback(err)` is invoked when the transfer is complete\n * or when an error occurs. Be sure to check `res.headersSent`\n * if you wish to attempt responding, as the header and some data\n * may have already been transferred.\n *\n * Options:\n *\n * - `maxAge` defaulting to 0 (can be string converted by `ms`)\n * - `root` root directory for relative filenames\n * - `headers` object of headers to serve with file\n * - `dotfiles` serve dotfiles, defaulting to false; can be `\"allow\"` to send them\n *\n * Other options are passed along to `send`.\n *\n * Examples:\n *\n * The following example illustrates how `res.sendfile()` may\n * be used as an alternative for the `static()` middleware for\n * dynamic situations. The code backing `res.sendfile()` is actually\n * the same code, so HTTP cache support etc is identical.\n *\n * app.get('/user/:uid/photos/:file', function(req, res){\n * var uid = req.params.uid\n * , file = req.params.file;\n *\n * req.user.mayViewFilesFrom(uid, function(yes){\n * if (yes) {\n * res.sendfile('/uploads/' + uid + '/' + file);\n * } else {\n * res.send(403, 'Sorry! you cant see that.');\n * }\n * });\n * });\n *\n * @public\n */\n\nres.sendfile = function (path, options, callback) {\n var done = callback;\n var req = this.req;\n var res = this;\n var next = req.next;\n var opts = options || {};\n\n // support function as second arg\n if (typeof options === 'function') {\n done = options;\n opts = {};\n }\n\n // create file stream\n var file = send(req, path, opts);\n\n // transfer\n sendfile(res, file, opts, function (err) {\n if (done) return done(err);\n if (err && err.code === 'EISDIR') return next();\n\n // next() all but write errors\n if (err && err.code !== 'ECONNABORTED' && err.syscall !== 'write') {\n next(err);\n }\n });\n};\n\nres.sendfile = deprecate.function(res.sendfile,\n 'res.sendfile: Use res.sendFile instead');\n\n/**\n * Transfer the file at the given `path` as an attachment.\n *\n * Optionally providing an alternate attachment `filename`,\n * and optional callback `callback(err)`. The callback is invoked\n * when the data transfer is complete, or when an error has\n * occurred. Be sure to check `res.headersSent` if you plan to respond.\n *\n * Optionally providing an `options` object to use with `res.sendFile()`.\n * This function will set the `Content-Disposition` header, overriding\n * any `Content-Disposition` header passed as header options in order\n * to set the attachment and filename.\n *\n * This method uses `res.sendFile()`.\n *\n * @public\n */\n\nres.download = function download (path, filename, options, callback) {\n var done = callback;\n var name = filename;\n var opts = options || null\n\n // support function as second or third arg\n if (typeof filename === 'function') {\n done = filename;\n name = null;\n opts = null\n } else if (typeof options === 'function') {\n done = options\n opts = null\n }\n\n // support optional filename, where options may be in it's place\n if (typeof filename === 'object' &&\n (typeof options === 'function' || options === undefined)) {\n name = null\n opts = filename\n }\n\n // set Content-Disposition when file is sent\n var headers = {\n 'Content-Disposition': contentDisposition(name || path)\n };\n\n // merge user-provided headers\n if (opts && opts.headers) {\n var keys = Object.keys(opts.headers)\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i]\n if (key.toLowerCase() !== 'content-disposition') {\n headers[key] = opts.headers[key]\n }\n }\n }\n\n // merge user-provided options\n opts = Object.create(opts)\n opts.headers = headers\n\n // Resolve the full path for sendFile\n var fullPath = !opts.root\n ? resolve(path)\n : path\n\n // send file\n return this.sendFile(fullPath, opts, done)\n};\n\n/**\n * Set _Content-Type_ response header with `type` through `mime.lookup()`\n * when it does not contain \"/\", or set the Content-Type to `type` otherwise.\n *\n * Examples:\n *\n * res.type('.html');\n * res.type('html');\n * res.type('json');\n * res.type('application/json');\n * res.type('png');\n *\n * @param {String} type\n * @return {ServerResponse} for chaining\n * @public\n */\n\nres.contentType =\nres.type = function contentType(type) {\n var ct = type.indexOf('/') === -1\n ? mime.lookup(type)\n : type;\n\n return this.set('Content-Type', ct);\n};\n\n/**\n * Respond to the Acceptable formats using an `obj`\n * of mime-type callbacks.\n *\n * This method uses `req.accepted`, an array of\n * acceptable types ordered by their quality values.\n * When \"Accept\" is not present the _first_ callback\n * is invoked, otherwise the first match is used. When\n * no match is performed the server responds with\n * 406 \"Not Acceptable\".\n *\n * Content-Type is set for you, however if you choose\n * you may alter this within the callback using `res.type()`\n * or `res.set('Content-Type', ...)`.\n *\n * res.format({\n * 'text/plain': function(){\n * res.send('hey');\n * },\n *\n * 'text/html': function(){\n * res.send('

hey

');\n * },\n *\n * 'application/json': function () {\n * res.send({ message: 'hey' });\n * }\n * });\n *\n * In addition to canonicalized MIME types you may\n * also use extnames mapped to these types:\n *\n * res.format({\n * text: function(){\n * res.send('hey');\n * },\n *\n * html: function(){\n * res.send('

hey

');\n * },\n *\n * json: function(){\n * res.send({ message: 'hey' });\n * }\n * });\n *\n * By default Express passes an `Error`\n * with a `.status` of 406 to `next(err)`\n * if a match is not made. If you provide\n * a `.default` callback it will be invoked\n * instead.\n *\n * @param {Object} obj\n * @return {ServerResponse} for chaining\n * @public\n */\n\nres.format = function(obj){\n var req = this.req;\n var next = req.next;\n\n var keys = Object.keys(obj)\n .filter(function (v) { return v !== 'default' })\n\n var key = keys.length > 0\n ? req.accepts(keys)\n : false;\n\n this.vary(\"Accept\");\n\n if (key) {\n this.set('Content-Type', normalizeType(key).value);\n obj[key](req, this, next);\n } else if (obj.default) {\n obj.default(req, this, next)\n } else {\n next(createError(406, {\n types: normalizeTypes(keys).map(function (o) { return o.value })\n }))\n }\n\n return this;\n};\n\n/**\n * Set _Content-Disposition_ header to _attachment_ with optional `filename`.\n *\n * @param {String} filename\n * @return {ServerResponse}\n * @public\n */\n\nres.attachment = function attachment(filename) {\n if (filename) {\n this.type(extname(filename));\n }\n\n this.set('Content-Disposition', contentDisposition(filename));\n\n return this;\n};\n\n/**\n * Append additional header `field` with value `val`.\n *\n * Example:\n *\n * res.append('Link', ['', '']);\n * res.append('Set-Cookie', 'foo=bar; Path=/; HttpOnly');\n * res.append('Warning', '199 Miscellaneous warning');\n *\n * @param {String} field\n * @param {String|Array} val\n * @return {ServerResponse} for chaining\n * @public\n */\n\nres.append = function append(field, val) {\n var prev = this.get(field);\n var value = val;\n\n if (prev) {\n // concat the new and prev vals\n value = Array.isArray(prev) ? prev.concat(val)\n : Array.isArray(val) ? [prev].concat(val)\n : [prev, val]\n }\n\n return this.set(field, value);\n};\n\n/**\n * Set header `field` to `val`, or pass\n * an object of header fields.\n *\n * Examples:\n *\n * res.set('Foo', ['bar', 'baz']);\n * res.set('Accept', 'application/json');\n * res.set({ Accept: 'text/plain', 'X-API-Key': 'tobi' });\n *\n * Aliased as `res.header()`.\n *\n * @param {String|Object} field\n * @param {String|Array} val\n * @return {ServerResponse} for chaining\n * @public\n */\n\nres.set =\nres.header = function header(field, val) {\n if (arguments.length === 2) {\n var value = Array.isArray(val)\n ? val.map(String)\n : String(val);\n\n // add charset to content-type\n if (field.toLowerCase() === 'content-type') {\n if (Array.isArray(value)) {\n throw new TypeError('Content-Type cannot be set to an Array');\n }\n if (!charsetRegExp.test(value)) {\n var charset = mime.charsets.lookup(value.split(';')[0]);\n if (charset) value += '; charset=' + charset.toLowerCase();\n }\n }\n\n this.setHeader(field, value);\n } else {\n for (var key in field) {\n this.set(key, field[key]);\n }\n }\n return this;\n};\n\n/**\n * Get value for header `field`.\n *\n * @param {String} field\n * @return {String}\n * @public\n */\n\nres.get = function(field){\n return this.getHeader(field);\n};\n\n/**\n * Clear cookie `name`.\n *\n * @param {String} name\n * @param {Object} [options]\n * @return {ServerResponse} for chaining\n * @public\n */\n\nres.clearCookie = function clearCookie(name, options) {\n var opts = merge({ expires: new Date(1), path: '/' }, options);\n\n return this.cookie(name, '', opts);\n};\n\n/**\n * Set cookie `name` to `value`, with the given `options`.\n *\n * Options:\n *\n * - `maxAge` max-age in milliseconds, converted to `expires`\n * - `signed` sign the cookie\n * - `path` defaults to \"/\"\n *\n * Examples:\n *\n * // \"Remember Me\" for 15 minutes\n * res.cookie('rememberme', '1', { expires: new Date(Date.now() + 900000), httpOnly: true });\n *\n * // same as above\n * res.cookie('rememberme', '1', { maxAge: 900000, httpOnly: true })\n *\n * @param {String} name\n * @param {String|Object} value\n * @param {Object} [options]\n * @return {ServerResponse} for chaining\n * @public\n */\n\nres.cookie = function (name, value, options) {\n var opts = merge({}, options);\n var secret = this.req.secret;\n var signed = opts.signed;\n\n if (signed && !secret) {\n throw new Error('cookieParser(\"secret\") required for signed cookies');\n }\n\n var val = typeof value === 'object'\n ? 'j:' + JSON.stringify(value)\n : String(value);\n\n if (signed) {\n val = 's:' + sign(val, secret);\n }\n\n if (opts.maxAge != null) {\n var maxAge = opts.maxAge - 0\n\n if (!isNaN(maxAge)) {\n opts.expires = new Date(Date.now() + maxAge)\n opts.maxAge = Math.floor(maxAge / 1000)\n }\n }\n\n if (opts.path == null) {\n opts.path = '/';\n }\n\n this.append('Set-Cookie', cookie.serialize(name, String(val), opts));\n\n return this;\n};\n\n/**\n * Set the location header to `url`.\n *\n * The given `url` can also be \"back\", which redirects\n * to the _Referrer_ or _Referer_ headers or \"/\".\n *\n * Examples:\n *\n * res.location('/foo/bar').;\n * res.location('http://example.com');\n * res.location('../login');\n *\n * @param {String} url\n * @return {ServerResponse} for chaining\n * @public\n */\n\nres.location = function location(url) {\n var loc = url;\n\n // \"back\" is an alias for the referrer\n if (url === 'back') {\n loc = this.req.get('Referrer') || '/';\n }\n\n // set location\n return this.set('Location', encodeUrl(loc));\n};\n\n/**\n * Redirect to the given `url` with optional response `status`\n * defaulting to 302.\n *\n * The resulting `url` is determined by `res.location()`, so\n * it will play nicely with mounted apps, relative paths,\n * `\"back\"` etc.\n *\n * Examples:\n *\n * res.redirect('/foo/bar');\n * res.redirect('http://example.com');\n * res.redirect(301, 'http://example.com');\n * res.redirect('../login'); // /blog/post/1 -> /blog/login\n *\n * @public\n */\n\nres.redirect = function redirect(url) {\n var address = url;\n var body;\n var status = 302;\n\n // allow status / url\n if (arguments.length === 2) {\n if (typeof arguments[0] === 'number') {\n status = arguments[0];\n address = arguments[1];\n } else {\n deprecate('res.redirect(url, status): Use res.redirect(status, url) instead');\n status = arguments[1];\n }\n }\n\n // Set location header\n address = this.location(address).get('Location');\n\n // Support text/{plain,html} by default\n this.format({\n text: function(){\n body = statuses.message[status] + '. Redirecting to ' + address\n },\n\n html: function(){\n var u = escapeHtml(address);\n body = '

' + statuses.message[status] + '. Redirecting to ' + u + '

'\n },\n\n default: function(){\n body = '';\n }\n });\n\n // Respond\n this.statusCode = status;\n this.set('Content-Length', Buffer.byteLength(body));\n\n if (this.req.method === 'HEAD') {\n this.end();\n } else {\n this.end(body);\n }\n};\n\n/**\n * Add `field` to Vary. If already present in the Vary set, then\n * this call is simply ignored.\n *\n * @param {Array|String} field\n * @return {ServerResponse} for chaining\n * @public\n */\n\nres.vary = function(field){\n // checks for back-compat\n if (!field || (Array.isArray(field) && !field.length)) {\n deprecate('res.vary(): Provide a field name');\n return this;\n }\n\n vary(this, field);\n\n return this;\n};\n\n/**\n * Render `view` with the given `options` and optional callback `fn`.\n * When a callback function is given a response will _not_ be made\n * automatically, otherwise a response of _200_ and _text/html_ is given.\n *\n * Options:\n *\n * - `cache` boolean hinting to the engine it should cache\n * - `filename` filename of the view being rendered\n *\n * @public\n */\n\nres.render = function render(view, options, callback) {\n var app = this.req.app;\n var done = callback;\n var opts = options || {};\n var req = this.req;\n var self = this;\n\n // support callback function as second arg\n if (typeof options === 'function') {\n done = options;\n opts = {};\n }\n\n // merge res.locals\n opts._locals = self.locals;\n\n // default callback to respond\n done = done || function (err, str) {\n if (err) return req.next(err);\n self.send(str);\n };\n\n // render\n app.render(view, opts, done);\n};\n\n// pipe the send file stream\nfunction sendfile(res, file, options, callback) {\n var done = false;\n var streaming;\n\n // request aborted\n function onaborted() {\n if (done) return;\n done = true;\n\n var err = new Error('Request aborted');\n err.code = 'ECONNABORTED';\n callback(err);\n }\n\n // directory\n function ondirectory() {\n if (done) return;\n done = true;\n\n var err = new Error('EISDIR, read');\n err.code = 'EISDIR';\n callback(err);\n }\n\n // errors\n function onerror(err) {\n if (done) return;\n done = true;\n callback(err);\n }\n\n // ended\n function onend() {\n if (done) return;\n done = true;\n callback();\n }\n\n // file\n function onfile() {\n streaming = false;\n }\n\n // finished\n function onfinish(err) {\n if (err && err.code === 'ECONNRESET') return onaborted();\n if (err) return onerror(err);\n if (done) return;\n\n setImmediate(function () {\n if (streaming !== false && !done) {\n onaborted();\n return;\n }\n\n if (done) return;\n done = true;\n callback();\n });\n }\n\n // streaming\n function onstream() {\n streaming = true;\n }\n\n file.on('directory', ondirectory);\n file.on('end', onend);\n file.on('error', onerror);\n file.on('file', onfile);\n file.on('stream', onstream);\n onFinished(res, onfinish);\n\n if (options.headers) {\n // set headers on successful transfer\n file.on('headers', function headers(res) {\n var obj = options.headers;\n var keys = Object.keys(obj);\n\n for (var i = 0; i < keys.length; i++) {\n var k = keys[i];\n res.setHeader(k, obj[k]);\n }\n });\n }\n\n // pipe\n file.pipe(res);\n}\n\n/**\n * Stringify JSON, like JSON.stringify, but v8 optimized, with the\n * ability to escape characters that can trigger HTML sniffing.\n *\n * @param {*} value\n * @param {function} replacer\n * @param {number} spaces\n * @param {boolean} escape\n * @returns {string}\n * @private\n */\n\nfunction stringify (value, replacer, spaces, escape) {\n // v8 checks arguments.length for optimizing simple call\n // https://bugs.chromium.org/p/v8/issues/detail?id=4730\n var json = replacer || spaces\n ? JSON.stringify(value, replacer, spaces)\n : JSON.stringify(value);\n\n if (escape && typeof json === 'string') {\n json = json.replace(/[<>&]/g, function (c) {\n switch (c.charCodeAt(0)) {\n case 0x3c:\n return '\\\\u003c'\n case 0x3e:\n return '\\\\u003e'\n case 0x26:\n return '\\\\u0026'\n /* istanbul ignore next: unreachable default */\n default:\n return c\n }\n })\n }\n\n return json\n}\n", "/*!\n * serve-static\n * Copyright(c) 2010 Sencha Inc.\n * Copyright(c) 2011 TJ Holowaychuk\n * Copyright(c) 2014-2016 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict'\n\n/**\n * Module dependencies.\n * @private\n */\n\nvar encodeUrl = require('encodeurl')\nvar escapeHtml = require('escape-html')\nvar parseUrl = require('parseurl')\nvar resolve = require('path').resolve\nvar send = require('send')\nvar url = require('url')\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = serveStatic\nmodule.exports.mime = send.mime\n\n/**\n * @param {string} root\n * @param {object} [options]\n * @return {function}\n * @public\n */\n\nfunction serveStatic (root, options) {\n if (!root) {\n throw new TypeError('root path required')\n }\n\n if (typeof root !== 'string') {\n throw new TypeError('root path must be a string')\n }\n\n // copy options object\n var opts = Object.create(options || null)\n\n // fall-though\n var fallthrough = opts.fallthrough !== false\n\n // default redirect\n var redirect = opts.redirect !== false\n\n // headers listener\n var setHeaders = opts.setHeaders\n\n if (setHeaders && typeof setHeaders !== 'function') {\n throw new TypeError('option setHeaders must be function')\n }\n\n // setup options for send\n opts.maxage = opts.maxage || opts.maxAge || 0\n opts.root = resolve(root)\n\n // construct directory listener\n var onDirectory = redirect\n ? createRedirectDirectoryListener()\n : createNotFoundDirectoryListener()\n\n return function serveStatic (req, res, next) {\n if (req.method !== 'GET' && req.method !== 'HEAD') {\n if (fallthrough) {\n return next()\n }\n\n // method not allowed\n res.statusCode = 405\n res.setHeader('Allow', 'GET, HEAD')\n res.setHeader('Content-Length', '0')\n res.end()\n return\n }\n\n var forwardError = !fallthrough\n var originalUrl = parseUrl.original(req)\n var path = parseUrl(req).pathname\n\n // make sure redirect occurs at mount\n if (path === '/' && originalUrl.pathname.substr(-1) !== '/') {\n path = ''\n }\n\n // create send stream\n var stream = send(req, path, opts)\n\n // add directory handler\n stream.on('directory', onDirectory)\n\n // add headers listener\n if (setHeaders) {\n stream.on('headers', setHeaders)\n }\n\n // add file listener for fallthrough\n if (fallthrough) {\n stream.on('file', function onFile () {\n // once file is determined, always forward error\n forwardError = true\n })\n }\n\n // forward errors\n stream.on('error', function error (err) {\n if (forwardError || !(err.statusCode < 500)) {\n next(err)\n return\n }\n\n next()\n })\n\n // pipe\n stream.pipe(res)\n }\n}\n\n/**\n * Collapse all leading slashes into a single slash\n * @private\n */\nfunction collapseLeadingSlashes (str) {\n for (var i = 0; i < str.length; i++) {\n if (str.charCodeAt(i) !== 0x2f /* / */) {\n break\n }\n }\n\n return i > 1\n ? '/' + str.substr(i)\n : str\n}\n\n/**\n * Create a minimal HTML document.\n *\n * @param {string} title\n * @param {string} body\n * @private\n */\n\nfunction createHtmlDocument (title, body) {\n return '\\n' +\n '\\n' +\n '\\n' +\n '\\n' +\n '' + title + '\\n' +\n '\\n' +\n '\\n' +\n '
' + body + '
\\n' +\n '\\n' +\n '\\n'\n}\n\n/**\n * Create a directory listener that just 404s.\n * @private\n */\n\nfunction createNotFoundDirectoryListener () {\n return function notFound () {\n this.error(404)\n }\n}\n\n/**\n * Create a directory listener that performs a redirect.\n * @private\n */\n\nfunction createRedirectDirectoryListener () {\n return function redirect (res) {\n if (this.hasTrailingSlash()) {\n this.error(404)\n return\n }\n\n // get original URL\n var originalUrl = parseUrl.original(this.req)\n\n // append trailing slash\n originalUrl.path = null\n originalUrl.pathname = collapseLeadingSlashes(originalUrl.pathname + '/')\n\n // reformat the URL\n var loc = encodeUrl(url.format(originalUrl))\n var doc = createHtmlDocument('Redirecting', 'Redirecting to ' +\n escapeHtml(loc) + '')\n\n // send redirect response\n res.statusCode = 301\n res.setHeader('Content-Type', 'text/html; charset=UTF-8')\n res.setHeader('Content-Length', Buffer.byteLength(doc))\n res.setHeader('Content-Security-Policy', \"default-src 'none'\")\n res.setHeader('X-Content-Type-Options', 'nosniff')\n res.setHeader('Location', loc)\n res.end(doc)\n }\n}\n", "/*!\n * express\n * Copyright(c) 2009-2013 TJ Holowaychuk\n * Copyright(c) 2013 Roman Shtylman\n * Copyright(c) 2014-2015 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict';\n\n/**\n * Module dependencies.\n */\n\nvar bodyParser = require('body-parser')\nvar EventEmitter = require('events').EventEmitter;\nvar mixin = require('merge-descriptors');\nvar proto = require('./application');\nvar Route = require('./router/route');\nvar Router = require('./router');\nvar req = require('./request');\nvar res = require('./response');\n\n/**\n * Expose `createApplication()`.\n */\n\nexports = module.exports = createApplication;\n\n/**\n * Create an express application.\n *\n * @return {Function}\n * @api public\n */\n\nfunction createApplication() {\n var app = function(req, res, next) {\n app.handle(req, res, next);\n };\n\n mixin(app, EventEmitter.prototype, false);\n mixin(app, proto, false);\n\n // expose the prototype that will get set on requests\n app.request = Object.create(req, {\n app: { configurable: true, enumerable: true, writable: true, value: app }\n })\n\n // expose the prototype that will get set on responses\n app.response = Object.create(res, {\n app: { configurable: true, enumerable: true, writable: true, value: app }\n })\n\n app.init();\n return app;\n}\n\n/**\n * Expose the prototypes.\n */\n\nexports.application = proto;\nexports.request = req;\nexports.response = res;\n\n/**\n * Expose constructors.\n */\n\nexports.Route = Route;\nexports.Router = Router;\n\n/**\n * Expose middleware\n */\n\nexports.json = bodyParser.json\nexports.query = require('./middleware/query');\nexports.raw = bodyParser.raw\nexports.static = require('serve-static');\nexports.text = bodyParser.text\nexports.urlencoded = bodyParser.urlencoded\n\n/**\n * Replace removed middleware with an appropriate error message.\n */\n\nvar removedMiddlewares = [\n 'bodyParser',\n 'compress',\n 'cookieSession',\n 'session',\n 'logger',\n 'cookieParser',\n 'favicon',\n 'responseTime',\n 'errorHandler',\n 'timeout',\n 'methodOverride',\n 'vhost',\n 'csrf',\n 'directory',\n 'limit',\n 'multipart',\n 'staticCache'\n]\n\nremovedMiddlewares.forEach(function (name) {\n Object.defineProperty(exports, name, {\n get: function () {\n throw new Error('Most middleware (like ' + name + ') is no longer bundled with Express and must be installed separately. Please see https://github.com/senchalabs/connect#middleware.');\n },\n configurable: true\n });\n});\n", "/*!\n * express\n * Copyright(c) 2009-2013 TJ Holowaychuk\n * Copyright(c) 2013 Roman Shtylman\n * Copyright(c) 2014-2015 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict';\n\nmodule.exports = require('./lib/express');\n", "/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n'use strict';\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n", "(function () {\n\n 'use strict';\n\n var assign = require('object-assign');\n var vary = require('vary');\n\n var defaults = {\n origin: '*',\n methods: 'GET,HEAD,PUT,PATCH,POST,DELETE',\n preflightContinue: false,\n optionsSuccessStatus: 204\n };\n\n function isString(s) {\n return typeof s === 'string' || s instanceof String;\n }\n\n function isOriginAllowed(origin, allowedOrigin) {\n if (Array.isArray(allowedOrigin)) {\n for (var i = 0; i < allowedOrigin.length; ++i) {\n if (isOriginAllowed(origin, allowedOrigin[i])) {\n return true;\n }\n }\n return false;\n } else if (isString(allowedOrigin)) {\n return origin === allowedOrigin;\n } else if (allowedOrigin instanceof RegExp) {\n return allowedOrigin.test(origin);\n } else {\n return !!allowedOrigin;\n }\n }\n\n function configureOrigin(options, req) {\n var requestOrigin = req.headers.origin,\n headers = [],\n isAllowed;\n\n if (!options.origin || options.origin === '*') {\n // allow any origin\n headers.push([{\n key: 'Access-Control-Allow-Origin',\n value: '*'\n }]);\n } else if (isString(options.origin)) {\n // fixed origin\n headers.push([{\n key: 'Access-Control-Allow-Origin',\n value: options.origin\n }]);\n headers.push([{\n key: 'Vary',\n value: 'Origin'\n }]);\n } else {\n isAllowed = isOriginAllowed(requestOrigin, options.origin);\n // reflect origin\n headers.push([{\n key: 'Access-Control-Allow-Origin',\n value: isAllowed ? requestOrigin : false\n }]);\n headers.push([{\n key: 'Vary',\n value: 'Origin'\n }]);\n }\n\n return headers;\n }\n\n function configureMethods(options) {\n var methods = options.methods;\n if (methods.join) {\n methods = options.methods.join(','); // .methods is an array, so turn it into a string\n }\n return {\n key: 'Access-Control-Allow-Methods',\n value: methods\n };\n }\n\n function configureCredentials(options) {\n if (options.credentials === true) {\n return {\n key: 'Access-Control-Allow-Credentials',\n value: 'true'\n };\n }\n return null;\n }\n\n function configureAllowedHeaders(options, req) {\n var allowedHeaders = options.allowedHeaders || options.headers;\n var headers = [];\n\n if (!allowedHeaders) {\n allowedHeaders = req.headers['access-control-request-headers']; // .headers wasn't specified, so reflect the request headers\n headers.push([{\n key: 'Vary',\n value: 'Access-Control-Request-Headers'\n }]);\n } else if (allowedHeaders.join) {\n allowedHeaders = allowedHeaders.join(','); // .headers is an array, so turn it into a string\n }\n if (allowedHeaders && allowedHeaders.length) {\n headers.push([{\n key: 'Access-Control-Allow-Headers',\n value: allowedHeaders\n }]);\n }\n\n return headers;\n }\n\n function configureExposedHeaders(options) {\n var headers = options.exposedHeaders;\n if (!headers) {\n return null;\n } else if (headers.join) {\n headers = headers.join(','); // .headers is an array, so turn it into a string\n }\n if (headers && headers.length) {\n return {\n key: 'Access-Control-Expose-Headers',\n value: headers\n };\n }\n return null;\n }\n\n function configureMaxAge(options) {\n var maxAge = (typeof options.maxAge === 'number' || options.maxAge) && options.maxAge.toString()\n if (maxAge && maxAge.length) {\n return {\n key: 'Access-Control-Max-Age',\n value: maxAge\n };\n }\n return null;\n }\n\n function applyHeaders(headers, res) {\n for (var i = 0, n = headers.length; i < n; i++) {\n var header = headers[i];\n if (header) {\n if (Array.isArray(header)) {\n applyHeaders(header, res);\n } else if (header.key === 'Vary' && header.value) {\n vary(res, header.value);\n } else if (header.value) {\n res.setHeader(header.key, header.value);\n }\n }\n }\n }\n\n function cors(options, req, res, next) {\n var headers = [],\n method = req.method && req.method.toUpperCase && req.method.toUpperCase();\n\n if (method === 'OPTIONS') {\n // preflight\n headers.push(configureOrigin(options, req));\n headers.push(configureCredentials(options, req));\n headers.push(configureMethods(options, req));\n headers.push(configureAllowedHeaders(options, req));\n headers.push(configureMaxAge(options, req));\n headers.push(configureExposedHeaders(options, req));\n applyHeaders(headers, res);\n\n if (options.preflightContinue) {\n next();\n } else {\n // Safari (and potentially other browsers) need content-length 0,\n // for 204 or they just hang waiting for a body\n res.statusCode = options.optionsSuccessStatus;\n res.setHeader('Content-Length', '0');\n res.end();\n }\n } else {\n // actual response\n headers.push(configureOrigin(options, req));\n headers.push(configureCredentials(options, req));\n headers.push(configureExposedHeaders(options, req));\n applyHeaders(headers, res);\n next();\n }\n }\n\n function middlewareWrapper(o) {\n // if options are static (either via defaults or custom options passed in), wrap in a function\n var optionsCallback = null;\n if (typeof o === 'function') {\n optionsCallback = o;\n } else {\n optionsCallback = function (req, cb) {\n cb(null, o);\n };\n }\n\n return function corsMiddleware(req, res, next) {\n optionsCallback(req, function (err, options) {\n if (err) {\n next(err);\n } else {\n var corsOptions = assign({}, defaults, options);\n var originCallback = null;\n if (corsOptions.origin && typeof corsOptions.origin === 'function') {\n originCallback = corsOptions.origin;\n } else if (corsOptions.origin) {\n originCallback = function (origin, cb) {\n cb(null, corsOptions.origin);\n };\n }\n\n if (originCallback) {\n originCallback(req.headers.origin, function (err2, origin) {\n if (err2 || !origin) {\n next(err2);\n } else {\n corsOptions.origin = origin;\n cors(corsOptions, req, res, next);\n }\n });\n } else {\n next();\n }\n }\n });\n };\n }\n\n // can pass either an options hash, an options delegate, or nothing\n module.exports = middlewareWrapper;\n\n}());\n", "(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits (ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n\n // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n Buffer = window.Buffer;\n } else {\n Buffer = require('buffer').Buffer;\n }\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n this.negative = 1;\n }\n\n if (start < number.length) {\n if (base === 16) {\n this._parseHex(number, start, endian);\n } else {\n this._parseBase(number, base, start);\n if (endian === 'le') {\n this._initArray(this.toArray(), base, endian);\n }\n }\n }\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [number & 0x3ffffff];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [0];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this._strip();\n };\n\n function parseHex4Bits (string, index) {\n var c = string.charCodeAt(index);\n // '0' - '9'\n if (c >= 48 && c <= 57) {\n return c - 48;\n // 'A' - 'F'\n } else if (c >= 65 && c <= 70) {\n return c - 55;\n // 'a' - 'f'\n } else if (c >= 97 && c <= 102) {\n return c - 87;\n } else {\n assert(false, 'Invalid character in ' + string);\n }\n }\n\n function parseHexByte (string, lowerBound, index) {\n var r = parseHex4Bits(string, index);\n if (index - 1 >= lowerBound) {\n r |= parseHex4Bits(string, index - 1) << 4;\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start, endian) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n // 24-bits chunks\n var off = 0;\n var j = 0;\n\n var w;\n if (endian === 'be') {\n for (i = number.length - 1; i >= start; i -= 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n } else {\n var parseLength = number.length - start;\n for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n }\n\n this._strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var b = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n b = c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n b = c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n b = c;\n }\n assert(c >= 0 && b < mul, 'Invalid character');\n r += b;\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [0];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n this._strip();\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n function move (dest, src) {\n dest.words = src.words;\n dest.length = src.length;\n dest.negative = src.negative;\n dest.red = src.red;\n }\n\n BN.prototype._move = function _move (dest) {\n move(dest, this);\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype._strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n // Check Symbol.for because not everywhere where Symbol defined\n // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol#Browser_compatibility\n if (typeof Symbol !== 'undefined' && typeof Symbol.for === 'function') {\n try {\n BN.prototype[Symbol.for('nodejs.util.inspect.custom')] = inspect;\n } catch (e) {\n BN.prototype.inspect = inspect;\n }\n } else {\n BN.prototype.inspect = inspect;\n }\n\n function inspect () {\n return (this.red ? '';\n }\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modrn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16, 2);\n };\n\n if (Buffer) {\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n return this.toArrayLike(Buffer, endian, length);\n };\n }\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n var allocate = function allocate (ArrayType, size) {\n if (ArrayType.allocUnsafe) {\n return ArrayType.allocUnsafe(size);\n }\n return new ArrayType(size);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n this._strip();\n\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n var res = allocate(ArrayType, reqLength);\n var postfix = endian === 'le' ? 'LE' : 'BE';\n this['_toArrayLike' + postfix](res, byteLength);\n return res;\n };\n\n BN.prototype._toArrayLikeLE = function _toArrayLikeLE (res, byteLength) {\n var position = 0;\n var carry = 0;\n\n for (var i = 0, shift = 0; i < this.length; i++) {\n var word = (this.words[i] << shift) | carry;\n\n res[position++] = word & 0xff;\n if (position < res.length) {\n res[position++] = (word >> 8) & 0xff;\n }\n if (position < res.length) {\n res[position++] = (word >> 16) & 0xff;\n }\n\n if (shift === 6) {\n if (position < res.length) {\n res[position++] = (word >> 24) & 0xff;\n }\n carry = 0;\n shift = 0;\n } else {\n carry = word >>> 24;\n shift += 2;\n }\n }\n\n if (position < res.length) {\n res[position++] = carry;\n\n while (position < res.length) {\n res[position++] = 0;\n }\n }\n };\n\n BN.prototype._toArrayLikeBE = function _toArrayLikeBE (res, byteLength) {\n var position = res.length - 1;\n var carry = 0;\n\n for (var i = 0, shift = 0; i < this.length; i++) {\n var word = (this.words[i] << shift) | carry;\n\n res[position--] = word & 0xff;\n if (position >= 0) {\n res[position--] = (word >> 8) & 0xff;\n }\n if (position >= 0) {\n res[position--] = (word >> 16) & 0xff;\n }\n\n if (shift === 6) {\n if (position >= 0) {\n res[position--] = (word >> 24) & 0xff;\n }\n carry = 0;\n shift = 0;\n } else {\n carry = word >>> 24;\n shift += 2;\n }\n }\n\n if (position >= 0) {\n res[position--] = carry;\n\n while (position >= 0) {\n res[position--] = 0;\n }\n }\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] >>> wbit) & 0x01;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this._strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this._strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this._strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this._strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this._strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this._strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out._strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out._strip();\n }\n\n function jumboMulTo (self, num, out) {\n // Temporary disable, see https://github.com/indutny/bn.js/issues/211\n // var fftm = new FFTM();\n // return fftm.mulp(self, num, out);\n return bigMulTo(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out._strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return isNegNum ? this.ineg() : this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this._strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this._strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this._strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) <= num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this._strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this._strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this._strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q._strip();\n }\n a._strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modrn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modrn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || (r2 === 1 && cmp === 0)) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modrn = function modrn (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return isNegNum ? -acc : acc;\n };\n\n // WARNING: DEPRECATED\n BN.prototype.modn = function modn (num) {\n return this.modrn(num);\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n this._strip();\n return isNegNum ? this.ineg() : this;\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this._strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is a BN v4 instance\n r.strip();\n } else {\n // r is a BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n\n move(a, a.umod(this.m)._forceRed(this));\n return a;\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);\n", "export const version = \"logger/5.7.0\";\n", "\"use strict\";\n\nlet _permanentCensorErrors = false;\nlet _censorErrors = false;\n\nconst LogLevels: { [ name: string ]: number } = { debug: 1, \"default\": 2, info: 2, warning: 3, error: 4, off: 5 };\nlet _logLevel = LogLevels[\"default\"];\n\nimport { version } from \"./_version\";\n\nlet _globalLogger: Logger = null;\n\nfunction _checkNormalize(): string {\n try {\n const missing: Array = [ ];\n\n // Make sure all forms of normalization are supported\n [\"NFD\", \"NFC\", \"NFKD\", \"NFKC\"].forEach((form) => {\n try {\n if (\"test\".normalize(form) !== \"test\") {\n throw new Error(\"bad normalize\");\n };\n } catch(error) {\n missing.push(form);\n }\n });\n\n if (missing.length) {\n throw new Error(\"missing \" + missing.join(\", \"));\n }\n\n if (String.fromCharCode(0xe9).normalize(\"NFD\") !== String.fromCharCode(0x65, 0x0301)) {\n throw new Error(\"broken implementation\")\n }\n } catch (error) {\n return error.message;\n }\n\n return null;\n}\n\nconst _normalizeError = _checkNormalize();\n\nexport enum LogLevel {\n DEBUG = \"DEBUG\",\n INFO = \"INFO\",\n WARNING = \"WARNING\",\n ERROR = \"ERROR\",\n OFF = \"OFF\"\n}\n\n\nexport enum ErrorCode {\n\n ///////////////////\n // Generic Errors\n\n // Unknown Error\n UNKNOWN_ERROR = \"UNKNOWN_ERROR\",\n\n // Not Implemented\n NOT_IMPLEMENTED = \"NOT_IMPLEMENTED\",\n\n // Unsupported Operation\n // - operation\n UNSUPPORTED_OPERATION = \"UNSUPPORTED_OPERATION\",\n\n // Network Error (i.e. Ethereum Network, such as an invalid chain ID)\n // - event (\"noNetwork\" is not re-thrown in provider.ready; otherwise thrown)\n NETWORK_ERROR = \"NETWORK_ERROR\",\n\n // Some sort of bad response from the server\n SERVER_ERROR = \"SERVER_ERROR\",\n\n // Timeout\n TIMEOUT = \"TIMEOUT\",\n\n ///////////////////\n // Operational Errors\n\n // Buffer Overrun\n BUFFER_OVERRUN = \"BUFFER_OVERRUN\",\n\n // Numeric Fault\n // - operation: the operation being executed\n // - fault: the reason this faulted\n NUMERIC_FAULT = \"NUMERIC_FAULT\",\n\n\n ///////////////////\n // Argument Errors\n\n // Missing new operator to an object\n // - name: The name of the class\n MISSING_NEW = \"MISSING_NEW\",\n\n // Invalid argument (e.g. value is incompatible with type) to a function:\n // - argument: The argument name that was invalid\n // - value: The value of the argument\n INVALID_ARGUMENT = \"INVALID_ARGUMENT\",\n\n // Missing argument to a function:\n // - count: The number of arguments received\n // - expectedCount: The number of arguments expected\n MISSING_ARGUMENT = \"MISSING_ARGUMENT\",\n\n // Too many arguments\n // - count: The number of arguments received\n // - expectedCount: The number of arguments expected\n UNEXPECTED_ARGUMENT = \"UNEXPECTED_ARGUMENT\",\n\n\n ///////////////////\n // Blockchain Errors\n\n // Call exception\n // - transaction: the transaction\n // - address?: the contract address\n // - args?: The arguments passed into the function\n // - method?: The Solidity method signature\n // - errorSignature?: The EIP848 error signature\n // - errorArgs?: The EIP848 error parameters\n // - reason: The reason (only for EIP848 \"Error(string)\")\n CALL_EXCEPTION = \"CALL_EXCEPTION\",\n\n // Insufficient funds (< value + gasLimit * gasPrice)\n // - transaction: the transaction attempted\n INSUFFICIENT_FUNDS = \"INSUFFICIENT_FUNDS\",\n\n // Nonce has already been used\n // - transaction: the transaction attempted\n NONCE_EXPIRED = \"NONCE_EXPIRED\",\n\n // The replacement fee for the transaction is too low\n // - transaction: the transaction attempted\n REPLACEMENT_UNDERPRICED = \"REPLACEMENT_UNDERPRICED\",\n\n // The gas limit could not be estimated\n // - transaction: the transaction passed to estimateGas\n UNPREDICTABLE_GAS_LIMIT = \"UNPREDICTABLE_GAS_LIMIT\",\n\n // The transaction was replaced by one with a higher gas price\n // - reason: \"cancelled\", \"replaced\" or \"repriced\"\n // - cancelled: true if reason == \"cancelled\" or reason == \"replaced\")\n // - hash: original transaction hash\n // - replacement: the full TransactionsResponse for the replacement\n // - receipt: the receipt of the replacement\n TRANSACTION_REPLACED = \"TRANSACTION_REPLACED\",\n\n\n ///////////////////\n // Interaction Errors\n\n // The user rejected the action, such as signing a message or sending\n // a transaction\n ACTION_REJECTED = \"ACTION_REJECTED\",\n};\n\nconst HEX = \"0123456789abcdef\";\n\nexport class Logger {\n readonly version: string;\n\n static errors = ErrorCode;\n\n static levels = LogLevel;\n\n constructor(version: string) {\n Object.defineProperty(this, \"version\", {\n enumerable: true,\n value: version,\n writable: false\n });\n }\n\n _log(logLevel: LogLevel, args: Array): void {\n const level = logLevel.toLowerCase();\n if (LogLevels[level] == null) {\n this.throwArgumentError(\"invalid log level name\", \"logLevel\", logLevel);\n }\n if (_logLevel > LogLevels[level]) { return; }\n console.log.apply(console, args);\n }\n\n debug(...args: Array): void {\n this._log(Logger.levels.DEBUG, args);\n }\n\n info(...args: Array): void {\n this._log(Logger.levels.INFO, args);\n }\n\n warn(...args: Array): void {\n this._log(Logger.levels.WARNING, args);\n }\n\n makeError(message: string, code?: ErrorCode, params?: any): Error {\n // Errors are being censored\n if (_censorErrors) {\n return this.makeError(\"censored error\", code, { });\n }\n\n if (!code) { code = Logger.errors.UNKNOWN_ERROR; }\n if (!params) { params = {}; }\n\n const messageDetails: Array = [];\n Object.keys(params).forEach((key) => {\n const value = params[key];\n try {\n if (value instanceof Uint8Array) {\n let hex = \"\";\n for (let i = 0; i < value.length; i++) {\n hex += HEX[value[i] >> 4];\n hex += HEX[value[i] & 0x0f];\n }\n messageDetails.push(key + \"=Uint8Array(0x\" + hex + \")\");\n } else {\n messageDetails.push(key + \"=\" + JSON.stringify(value));\n }\n } catch (error) {\n messageDetails.push(key + \"=\" + JSON.stringify(params[key].toString()));\n }\n });\n messageDetails.push(`code=${ code }`);\n messageDetails.push(`version=${ this.version }`);\n\n const reason = message;\n\n let url = \"\";\n\n switch (code) {\n case ErrorCode.NUMERIC_FAULT: {\n url = \"NUMERIC_FAULT\";\n const fault = message;\n\n switch (fault) {\n case \"overflow\": case \"underflow\": case \"division-by-zero\":\n url += \"-\" + fault;\n break;\n case \"negative-power\": case \"negative-width\":\n url += \"-unsupported\";\n break;\n case \"unbound-bitwise-result\":\n url += \"-unbound-result\";\n break;\n }\n break;\n }\n case ErrorCode.CALL_EXCEPTION:\n case ErrorCode.INSUFFICIENT_FUNDS:\n case ErrorCode.MISSING_NEW:\n case ErrorCode.NONCE_EXPIRED:\n case ErrorCode.REPLACEMENT_UNDERPRICED:\n case ErrorCode.TRANSACTION_REPLACED:\n case ErrorCode.UNPREDICTABLE_GAS_LIMIT:\n url = code;\n break;\n }\n\n if (url) {\n message += \" [ See: https:/\\/links.ethers.org/v5-errors-\" + url + \" ]\";\n }\n\n if (messageDetails.length) {\n message += \" (\" + messageDetails.join(\", \") + \")\";\n }\n\n // @TODO: Any??\n const error: any = new Error(message);\n error.reason = reason;\n error.code = code\n\n Object.keys(params).forEach(function(key) {\n error[key] = params[key];\n });\n\n return error;\n }\n\n throwError(message: string, code?: ErrorCode, params?: any): never {\n throw this.makeError(message, code, params);\n }\n\n throwArgumentError(message: string, name: string, value: any): never {\n return this.throwError(message, Logger.errors.INVALID_ARGUMENT, {\n argument: name,\n value: value\n });\n }\n\n assert(condition: any, message: string, code?: ErrorCode, params?: any): void {\n if (!!condition) { return; }\n this.throwError(message, code, params);\n }\n\n assertArgument(condition: any, message: string, name: string, value: any): void {\n if (!!condition) { return; }\n this.throwArgumentError(message, name, value);\n }\n\n checkNormalize(message?: string): void {\n if (message == null) { message = \"platform missing String.prototype.normalize\"; }\n if (_normalizeError) {\n this.throwError(\"platform missing String.prototype.normalize\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"String.prototype.normalize\", form: _normalizeError\n });\n }\n }\n\n checkSafeUint53(value: number, message?: string): void {\n if (typeof(value) !== \"number\") { return; }\n\n if (message == null) { message = \"value not safe\"; }\n\n if (value < 0 || value >= 0x1fffffffffffff) {\n this.throwError(message, Logger.errors.NUMERIC_FAULT, {\n operation: \"checkSafeInteger\",\n fault: \"out-of-safe-range\",\n value: value\n });\n }\n\n if (value % 1) {\n this.throwError(message, Logger.errors.NUMERIC_FAULT, {\n operation: \"checkSafeInteger\",\n fault: \"non-integer\",\n value: value\n });\n }\n }\n\n checkArgumentCount(count: number, expectedCount: number, message?: string): void {\n if (message) {\n message = \": \" + message;\n } else {\n message = \"\";\n }\n\n if (count < expectedCount) {\n this.throwError(\"missing argument\" + message, Logger.errors.MISSING_ARGUMENT, {\n count: count,\n expectedCount: expectedCount\n });\n }\n\n if (count > expectedCount) {\n this.throwError(\"too many arguments\" + message, Logger.errors.UNEXPECTED_ARGUMENT, {\n count: count,\n expectedCount: expectedCount\n });\n }\n }\n\n checkNew(target: any, kind: any): void {\n if (target === Object || target == null) {\n this.throwError(\"missing new\", Logger.errors.MISSING_NEW, { name: kind.name });\n }\n }\n\n checkAbstract(target: any, kind: any): void {\n if (target === kind) {\n this.throwError(\n \"cannot instantiate abstract class \" + JSON.stringify(kind.name) + \" directly; use a sub-class\",\n Logger.errors.UNSUPPORTED_OPERATION,\n { name: target.name, operation: \"new\" }\n );\n } else if (target === Object || target == null) {\n this.throwError(\"missing new\", Logger.errors.MISSING_NEW, { name: kind.name });\n }\n }\n\n static globalLogger(): Logger {\n if (!_globalLogger) { _globalLogger = new Logger(version); }\n return _globalLogger;\n }\n\n static setCensorship(censorship: boolean, permanent?: boolean): void {\n if (!censorship && permanent) {\n this.globalLogger().throwError(\"cannot permanently disable censorship\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"setCensorship\"\n });\n }\n\n if (_permanentCensorErrors) {\n if (!censorship) { return; }\n this.globalLogger().throwError(\"error censorship permanent\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"setCensorship\"\n });\n }\n\n _censorErrors = !!censorship;\n _permanentCensorErrors = !!permanent;\n }\n\n static setLogLevel(logLevel: LogLevel): void {\n const level = LogLevels[logLevel.toLowerCase()];\n if (level == null) {\n Logger.globalLogger().warn(\"invalid log level - \" + logLevel);\n return;\n }\n _logLevel = level;\n }\n\n static from(version: string): Logger {\n return new Logger(version);\n }\n}\n", "export const version = \"bytes/5.7.0\";\n", "\"use strict\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\n///////////////////////////////\n// Exported Types\n\nexport type Bytes = ArrayLike;\n\nexport type BytesLike = Bytes | string;\n\nexport type DataOptions = {\n allowMissingPrefix?: boolean;\n hexPad?: \"left\" | \"right\" | null;\n};\n\nexport interface Hexable {\n toHexString(): string;\n}\n\n\n/*\nexport interface HexString {\n length: number;\n substring: (start: number, end?: number) => string;\n\n [index: number]: string;\n}\n*/\n\nexport type SignatureLike = {\n r: string;\n s?: string;\n _vs?: string,\n recoveryParam?: number;\n v?: number;\n} | BytesLike;\n\nexport interface Signature {\n r: string;\n\n s: string;\n _vs: string,\n\n recoveryParam: number;\n v: number;\n\n yParityAndS: string\n compact: string;\n}\n\n///////////////////////////////\n\n\nfunction isHexable(value: any): value is Hexable {\n return !!(value.toHexString);\n}\n\nfunction addSlice(array: Uint8Array): Uint8Array {\n if (array.slice) { return array; }\n\n array.slice = function() {\n const args = Array.prototype.slice.call(arguments);\n return addSlice(new Uint8Array(Array.prototype.slice.apply(array, args)));\n }\n\n return array;\n}\n\nexport function isBytesLike(value: any): value is BytesLike {\n return ((isHexString(value) && !(value.length % 2)) || isBytes(value));\n}\n\nfunction isInteger(value: number) {\n return (typeof(value) === \"number\" && value == value && (value % 1) === 0);\n}\n\nexport function isBytes(value: any): value is Bytes {\n if (value == null) { return false; }\n\n if (value.constructor === Uint8Array) { return true; }\n if (typeof(value) === \"string\") { return false; }\n if (!isInteger(value.length) || value.length < 0) { return false; }\n\n for (let i = 0; i < value.length; i++) {\n const v = value[i];\n if (!isInteger(v) || v < 0 || v >= 256) { return false; }\n }\n return true;\n}\n\n\nexport function arrayify(value: BytesLike | Hexable | number, options?: DataOptions): Uint8Array {\n if (!options) { options = { }; }\n\n if (typeof(value) === \"number\") {\n logger.checkSafeUint53(value, \"invalid arrayify value\");\n\n const result = [];\n while (value) {\n result.unshift(value & 0xff);\n value = parseInt(String(value / 256));\n }\n if (result.length === 0) { result.push(0); }\n\n return addSlice(new Uint8Array(result));\n }\n\n if (options.allowMissingPrefix && typeof(value) === \"string\" && value.substring(0, 2) !== \"0x\") {\n value = \"0x\" + value;\n }\n\n if (isHexable(value)) { value = value.toHexString(); }\n\n if (isHexString(value)) {\n let hex = (value).substring(2);\n if (hex.length % 2) {\n if (options.hexPad === \"left\") {\n hex = \"0\" + hex;\n } else if (options.hexPad === \"right\") {\n hex += \"0\";\n } else {\n logger.throwArgumentError(\"hex data is odd-length\", \"value\", value);\n }\n }\n\n const result = [];\n for (let i = 0; i < hex.length; i += 2) {\n result.push(parseInt(hex.substring(i, i + 2), 16));\n }\n\n return addSlice(new Uint8Array(result));\n }\n\n if (isBytes(value)) {\n return addSlice(new Uint8Array(value));\n }\n\n return logger.throwArgumentError(\"invalid arrayify value\", \"value\", value);\n}\n\nexport function concat(items: ReadonlyArray): Uint8Array {\n const objects = items.map(item => arrayify(item));\n const length = objects.reduce((accum, item) => (accum + item.length), 0);\n\n const result = new Uint8Array(length);\n\n objects.reduce((offset, object) => {\n result.set(object, offset);\n return offset + object.length;\n }, 0);\n\n return addSlice(result);\n}\n\nexport function stripZeros(value: BytesLike): Uint8Array {\n let result: Uint8Array = arrayify(value);\n\n if (result.length === 0) { return result; }\n\n // Find the first non-zero entry\n let start = 0;\n while (start < result.length && result[start] === 0) { start++ }\n\n // If we started with zeros, strip them\n if (start) {\n result = result.slice(start);\n }\n\n return result;\n}\n\nexport function zeroPad(value: BytesLike, length: number): Uint8Array {\n value = arrayify(value);\n\n if (value.length > length) {\n logger.throwArgumentError(\"value out of range\", \"value\", arguments[0]);\n }\n\n const result = new Uint8Array(length);\n result.set(value, length - value.length);\n return addSlice(result);\n}\n\n\nexport function isHexString(value: any, length?: number): boolean {\n if (typeof(value) !== \"string\" || !value.match(/^0x[0-9A-Fa-f]*$/)) {\n return false\n }\n if (length && value.length !== 2 + 2 * length) { return false; }\n return true;\n}\n\nconst HexCharacters: string = \"0123456789abcdef\";\n\nexport function hexlify(value: BytesLike | Hexable | number | bigint, options?: DataOptions): string {\n if (!options) { options = { }; }\n\n if (typeof(value) === \"number\") {\n logger.checkSafeUint53(value, \"invalid hexlify value\");\n\n let hex = \"\";\n while (value) {\n hex = HexCharacters[value & 0xf] + hex;\n value = Math.floor(value / 16);\n }\n\n if (hex.length) {\n if (hex.length % 2) { hex = \"0\" + hex; }\n return \"0x\" + hex;\n }\n\n return \"0x00\";\n }\n\n if (typeof(value) === \"bigint\") {\n value = value.toString(16);\n if (value.length % 2) { return (\"0x0\" + value); }\n return \"0x\" + value;\n }\n\n if (options.allowMissingPrefix && typeof(value) === \"string\" && value.substring(0, 2) !== \"0x\") {\n value = \"0x\" + value;\n }\n\n if (isHexable(value)) { return value.toHexString(); }\n\n if (isHexString(value)) {\n if ((value).length % 2) {\n if (options.hexPad === \"left\") {\n value = \"0x0\" + (value).substring(2);\n } else if (options.hexPad === \"right\") {\n value += \"0\";\n } else {\n logger.throwArgumentError(\"hex data is odd-length\", \"value\", value);\n }\n }\n return (value).toLowerCase();\n }\n\n if (isBytes(value)) {\n let result = \"0x\";\n for (let i = 0; i < value.length; i++) {\n let v = value[i];\n result += HexCharacters[(v & 0xf0) >> 4] + HexCharacters[v & 0x0f];\n }\n return result;\n }\n\n return logger.throwArgumentError(\"invalid hexlify value\", \"value\", value);\n}\n\n/*\nfunction unoddify(value: BytesLike | Hexable | number): BytesLike | Hexable | number {\n if (typeof(value) === \"string\" && value.length % 2 && value.substring(0, 2) === \"0x\") {\n return \"0x0\" + value.substring(2);\n }\n return value;\n}\n*/\nexport function hexDataLength(data: BytesLike) {\n if (typeof(data) !== \"string\") {\n data = hexlify(data);\n } else if (!isHexString(data) || (data.length % 2)) {\n return null;\n }\n\n return (data.length - 2) / 2;\n}\n\nexport function hexDataSlice(data: BytesLike, offset: number, endOffset?: number): string {\n if (typeof(data) !== \"string\") {\n data = hexlify(data);\n } else if (!isHexString(data) || (data.length % 2)) {\n logger.throwArgumentError(\"invalid hexData\", \"value\", data );\n }\n\n offset = 2 + 2 * offset;\n\n if (endOffset != null) {\n return \"0x\" + data.substring(offset, 2 + 2 * endOffset);\n }\n\n return \"0x\" + data.substring(offset);\n}\n\nexport function hexConcat(items: ReadonlyArray): string {\n let result = \"0x\";\n items.forEach((item) => {\n result += hexlify(item).substring(2);\n });\n return result;\n}\n\nexport function hexValue(value: BytesLike | Hexable | number | bigint): string {\n const trimmed = hexStripZeros(hexlify(value, { hexPad: \"left\" }));\n if (trimmed === \"0x\") { return \"0x0\"; }\n return trimmed;\n}\n\nexport function hexStripZeros(value: BytesLike): string {\n if (typeof(value) !== \"string\") { value = hexlify(value); }\n\n if (!isHexString(value)) {\n logger.throwArgumentError(\"invalid hex string\", \"value\", value);\n }\n value = value.substring(2);\n let offset = 0;\n while (offset < value.length && value[offset] === \"0\") { offset++; }\n return \"0x\" + value.substring(offset);\n}\n\nexport function hexZeroPad(value: BytesLike, length: number): string {\n if (typeof(value) !== \"string\") {\n value = hexlify(value);\n } else if (!isHexString(value)) {\n logger.throwArgumentError(\"invalid hex string\", \"value\", value);\n }\n\n if (value.length > 2 * length + 2) {\n logger.throwArgumentError(\"value out of range\", \"value\", arguments[1]);\n }\n\n while (value.length < 2 * length + 2) {\n value = \"0x0\" + value.substring(2);\n }\n\n return value;\n}\n\nexport function splitSignature(signature: SignatureLike): Signature {\n\n const result = {\n r: \"0x\",\n s: \"0x\",\n _vs: \"0x\",\n recoveryParam: 0,\n v: 0,\n yParityAndS: \"0x\",\n compact: \"0x\"\n };\n\n if (isBytesLike(signature)) {\n let bytes: Uint8Array = arrayify(signature);\n\n // Get the r, s and v\n if (bytes.length === 64) {\n // EIP-2098; pull the v from the top bit of s and clear it\n result.v = 27 + (bytes[32] >> 7);\n bytes[32] &= 0x7f;\n\n result.r = hexlify(bytes.slice(0, 32));\n result.s = hexlify(bytes.slice(32, 64));\n\n } else if (bytes.length === 65) {\n result.r = hexlify(bytes.slice(0, 32));\n result.s = hexlify(bytes.slice(32, 64));\n result.v = bytes[64];\n } else {\n\n logger.throwArgumentError(\"invalid signature string\", \"signature\", signature);\n }\n\n\n // Allow a recid to be used as the v\n if (result.v < 27) {\n if (result.v === 0 || result.v === 1) {\n result.v += 27;\n } else {\n logger.throwArgumentError(\"signature invalid v byte\", \"signature\", signature);\n }\n }\n\n // Compute recoveryParam from v\n result.recoveryParam = 1 - (result.v % 2);\n\n // Compute _vs from recoveryParam and s\n if (result.recoveryParam) { bytes[32] |= 0x80; }\n result._vs = hexlify(bytes.slice(32, 64))\n\n } else {\n result.r = signature.r;\n result.s = signature.s;\n result.v = signature.v;\n result.recoveryParam = signature.recoveryParam;\n result._vs = signature._vs;\n\n // If the _vs is available, use it to populate missing s, v and recoveryParam\n // and verify non-missing s, v and recoveryParam\n if (result._vs != null) {\n const vs = zeroPad(arrayify(result._vs), 32);\n result._vs = hexlify(vs);\n\n // Set or check the recid\n const recoveryParam = ((vs[0] >= 128) ? 1: 0);\n if (result.recoveryParam == null) {\n result.recoveryParam = recoveryParam;\n } else if (result.recoveryParam !== recoveryParam) {\n logger.throwArgumentError(\"signature recoveryParam mismatch _vs\", \"signature\", signature);\n }\n\n // Set or check the s\n vs[0] &= 0x7f;\n const s = hexlify(vs);\n if (result.s == null) {\n result.s = s;\n } else if (result.s !== s) {\n logger.throwArgumentError(\"signature v mismatch _vs\", \"signature\", signature);\n }\n }\n\n // Use recid and v to populate each other\n if (result.recoveryParam == null) {\n if (result.v == null) {\n logger.throwArgumentError(\"signature missing v and recoveryParam\", \"signature\", signature);\n } else if (result.v === 0 || result.v === 1) {\n result.recoveryParam = result.v;\n } else {\n result.recoveryParam = 1 - (result.v % 2);\n }\n } else {\n if (result.v == null) {\n result.v = 27 + result.recoveryParam;\n } else {\n const recId = (result.v === 0 || result.v === 1) ? result.v :(1 - (result.v % 2));\n if (result.recoveryParam !== recId) {\n logger.throwArgumentError(\"signature recoveryParam mismatch v\", \"signature\", signature);\n }\n }\n }\n\n if (result.r == null || !isHexString(result.r)) {\n logger.throwArgumentError(\"signature missing or invalid r\", \"signature\", signature);\n } else {\n result.r = hexZeroPad(result.r, 32);\n }\n\n if (result.s == null || !isHexString(result.s)) {\n logger.throwArgumentError(\"signature missing or invalid s\", \"signature\", signature);\n } else {\n result.s = hexZeroPad(result.s, 32);\n }\n\n const vs = arrayify(result.s);\n if (vs[0] >= 128) {\n logger.throwArgumentError(\"signature s out of range\", \"signature\", signature);\n }\n if (result.recoveryParam) { vs[0] |= 0x80; }\n const _vs = hexlify(vs);\n\n if (result._vs) {\n if (!isHexString(result._vs)) {\n logger.throwArgumentError(\"signature invalid _vs\", \"signature\", signature);\n }\n result._vs = hexZeroPad(result._vs, 32);\n }\n\n // Set or check the _vs\n if (result._vs == null) {\n result._vs = _vs;\n } else if (result._vs !== _vs) {\n logger.throwArgumentError(\"signature _vs mismatch v and s\", \"signature\", signature);\n }\n }\n\n result.yParityAndS = result._vs;\n result.compact = result.r + result.yParityAndS.substring(2);\n\n return result;\n}\n\nexport function joinSignature(signature: SignatureLike): string {\n signature = splitSignature(signature);\n\n return hexlify(concat([\n signature.r,\n signature.s,\n (signature.recoveryParam ? \"0x1c\": \"0x1b\")\n ]));\n}\n\n", "export const version = \"bignumber/5.7.0\";\n", "\"use strict\";\n\n/**\n * BigNumber\n *\n * A wrapper around the BN.js object. We use the BN.js library\n * because it is used by elliptic, so it is required regardless.\n *\n */\n\nimport _BN from \"bn.js\";\nimport BN = _BN.BN;\n\nimport { Bytes, Hexable, hexlify, isBytes, isHexString } from \"@ethersproject/bytes\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nconst _constructorGuard = { };\n\nconst MAX_SAFE = 0x1fffffffffffff;\n\n\nexport type BigNumberish = BigNumber | Bytes | bigint | string | number;\n\nexport function isBigNumberish(value: any): value is BigNumberish {\n return (value != null) && (\n BigNumber.isBigNumber(value) ||\n (typeof(value) === \"number\" && (value % 1) === 0) ||\n (typeof(value) === \"string\" && !!value.match(/^-?[0-9]+$/)) ||\n isHexString(value) ||\n (typeof(value) === \"bigint\") ||\n isBytes(value)\n );\n}\n\n// Only warn about passing 10 into radix once\nlet _warnedToStringRadix = false;\n\nexport class BigNumber implements Hexable {\n readonly _hex: string;\n readonly _isBigNumber: boolean;\n\n constructor(constructorGuard: any, hex: string) {\n if (constructorGuard !== _constructorGuard) {\n logger.throwError(\"cannot call constructor directly; use BigNumber.from\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"new (BigNumber)\"\n });\n }\n\n this._hex = hex;\n this._isBigNumber = true;\n\n Object.freeze(this);\n }\n\n fromTwos(value: number): BigNumber {\n return toBigNumber(toBN(this).fromTwos(value));\n }\n\n toTwos(value: number): BigNumber {\n return toBigNumber(toBN(this).toTwos(value));\n }\n\n abs(): BigNumber {\n if (this._hex[0] === \"-\") {\n return BigNumber.from(this._hex.substring(1));\n }\n return this;\n }\n\n add(other: BigNumberish): BigNumber {\n return toBigNumber(toBN(this).add(toBN(other)));\n }\n\n sub(other: BigNumberish): BigNumber {\n return toBigNumber(toBN(this).sub(toBN(other)));\n }\n\n div(other: BigNumberish): BigNumber {\n const o = BigNumber.from(other);\n if (o.isZero()) {\n throwFault(\"division-by-zero\", \"div\");\n }\n return toBigNumber(toBN(this).div(toBN(other)));\n }\n\n mul(other: BigNumberish): BigNumber {\n return toBigNumber(toBN(this).mul(toBN(other)));\n }\n\n mod(other: BigNumberish): BigNumber {\n const value = toBN(other);\n if (value.isNeg()) {\n throwFault(\"division-by-zero\", \"mod\");\n }\n return toBigNumber(toBN(this).umod(value));\n }\n\n pow(other: BigNumberish): BigNumber {\n const value = toBN(other);\n if (value.isNeg()) {\n throwFault(\"negative-power\", \"pow\");\n }\n return toBigNumber(toBN(this).pow(value));\n }\n\n and(other: BigNumberish): BigNumber {\n const value = toBN(other);\n if (this.isNegative() || value.isNeg()) {\n throwFault(\"unbound-bitwise-result\", \"and\");\n }\n return toBigNumber(toBN(this).and(value));\n }\n\n or(other: BigNumberish): BigNumber {\n const value = toBN(other);\n if (this.isNegative() || value.isNeg()) {\n throwFault(\"unbound-bitwise-result\", \"or\");\n }\n return toBigNumber(toBN(this).or(value));\n }\n\n xor(other: BigNumberish): BigNumber {\n const value = toBN(other);\n if (this.isNegative() || value.isNeg()) {\n throwFault(\"unbound-bitwise-result\", \"xor\");\n }\n return toBigNumber(toBN(this).xor(value));\n }\n\n mask(value: number): BigNumber {\n if (this.isNegative() || value < 0) {\n throwFault(\"negative-width\", \"mask\");\n }\n return toBigNumber(toBN(this).maskn(value));\n }\n\n shl(value: number): BigNumber {\n if (this.isNegative() || value < 0) {\n throwFault(\"negative-width\", \"shl\");\n }\n return toBigNumber(toBN(this).shln(value));\n }\n\n shr(value: number): BigNumber {\n if (this.isNegative() || value < 0) {\n throwFault(\"negative-width\", \"shr\");\n }\n return toBigNumber(toBN(this).shrn(value));\n }\n\n eq(other: BigNumberish): boolean {\n return toBN(this).eq(toBN(other));\n }\n\n lt(other: BigNumberish): boolean {\n return toBN(this).lt(toBN(other));\n }\n\n lte(other: BigNumberish): boolean {\n return toBN(this).lte(toBN(other));\n }\n\n gt(other: BigNumberish): boolean {\n return toBN(this).gt(toBN(other));\n }\n\n gte(other: BigNumberish): boolean {\n return toBN(this).gte(toBN(other));\n }\n\n isNegative(): boolean {\n return (this._hex[0] === \"-\");\n }\n\n isZero(): boolean {\n return toBN(this).isZero();\n }\n\n toNumber(): number {\n try {\n return toBN(this).toNumber();\n } catch (error) {\n throwFault(\"overflow\", \"toNumber\", this.toString());\n }\n return null;\n }\n\n toBigInt(): bigint {\n try {\n return BigInt(this.toString());\n } catch (e) { }\n\n return logger.throwError(\"this platform does not support BigInt\", Logger.errors.UNSUPPORTED_OPERATION, {\n value: this.toString()\n });\n }\n\n toString(): string {\n // Lots of people expect this, which we do not support, so check (See: #889)\n if (arguments.length > 0) {\n if (arguments[0] === 10) {\n if (!_warnedToStringRadix) {\n _warnedToStringRadix = true;\n logger.warn(\"BigNumber.toString does not accept any parameters; base-10 is assumed\");\n }\n } else if (arguments[0] === 16) {\n logger.throwError(\"BigNumber.toString does not accept any parameters; use bigNumber.toHexString()\", Logger.errors.UNEXPECTED_ARGUMENT, { });\n } else {\n logger.throwError(\"BigNumber.toString does not accept parameters\", Logger.errors.UNEXPECTED_ARGUMENT, { });\n }\n }\n return toBN(this).toString(10);\n }\n\n toHexString(): string {\n return this._hex;\n }\n\n toJSON(key?: string): any {\n return { type: \"BigNumber\", hex: this.toHexString() };\n }\n\n static from(value: any): BigNumber {\n if (value instanceof BigNumber) { return value; }\n\n if (typeof(value) === \"string\") {\n if (value.match(/^-?0x[0-9a-f]+$/i)) {\n return new BigNumber(_constructorGuard, toHex(value));\n }\n\n if (value.match(/^-?[0-9]+$/)) {\n return new BigNumber(_constructorGuard, toHex(new BN(value)));\n }\n\n return logger.throwArgumentError(\"invalid BigNumber string\", \"value\", value);\n }\n\n if (typeof(value) === \"number\") {\n if (value % 1) {\n throwFault(\"underflow\", \"BigNumber.from\", value);\n }\n\n if (value >= MAX_SAFE || value <= -MAX_SAFE) {\n throwFault(\"overflow\", \"BigNumber.from\", value);\n }\n\n return BigNumber.from(String(value));\n }\n\n const anyValue = value;\n\n if (typeof(anyValue) === \"bigint\") {\n return BigNumber.from(anyValue.toString());\n }\n\n if (isBytes(anyValue)) {\n return BigNumber.from(hexlify(anyValue));\n }\n\n if (anyValue) {\n\n // Hexable interface (takes priority)\n if (anyValue.toHexString) {\n const hex = anyValue.toHexString();\n if (typeof(hex) === \"string\") {\n return BigNumber.from(hex);\n }\n\n } else {\n // For now, handle legacy JSON-ified values (goes away in v6)\n let hex = anyValue._hex;\n\n // New-form JSON\n if (hex == null && anyValue.type === \"BigNumber\") {\n hex = anyValue.hex;\n }\n\n if (typeof(hex) === \"string\") {\n if (isHexString(hex) || (hex[0] === \"-\" && isHexString(hex.substring(1)))) {\n return BigNumber.from(hex);\n }\n }\n }\n }\n\n return logger.throwArgumentError(\"invalid BigNumber value\", \"value\", value);\n }\n\n static isBigNumber(value: any): value is BigNumber {\n return !!(value && value._isBigNumber);\n }\n}\n\n// Normalize the hex string\nfunction toHex(value: string | BN): string {\n\n // For BN, call on the hex string\n if (typeof(value) !== \"string\") {\n return toHex(value.toString(16));\n }\n\n // If negative, prepend the negative sign to the normalized positive value\n if (value[0] === \"-\") {\n // Strip off the negative sign\n value = value.substring(1);\n\n // Cannot have multiple negative signs (e.g. \"--0x04\")\n if (value[0] === \"-\") { logger.throwArgumentError(\"invalid hex\", \"value\", value); }\n\n // Call toHex on the positive component\n value = toHex(value);\n\n // Do not allow \"-0x00\"\n if (value === \"0x00\") { return value; }\n\n // Negate the value\n return \"-\" + value;\n }\n\n // Add a \"0x\" prefix if missing\n if (value.substring(0, 2) !== \"0x\") { value = \"0x\" + value; }\n\n // Normalize zero\n if (value === \"0x\") { return \"0x00\"; }\n\n // Make the string even length\n if (value.length % 2) { value = \"0x0\" + value.substring(2); }\n\n // Trim to smallest even-length string\n while (value.length > 4 && value.substring(0, 4) === \"0x00\") {\n value = \"0x\" + value.substring(4);\n }\n\n return value;\n}\n\nfunction toBigNumber(value: BN): BigNumber {\n return BigNumber.from(toHex(value));\n}\n\nfunction toBN(value: BigNumberish): BN {\n const hex = BigNumber.from(value).toHexString();\n if (hex[0] === \"-\") {\n return (new BN(\"-\" + hex.substring(3), 16));\n }\n return new BN(hex.substring(2), 16);\n}\n\nfunction throwFault(fault: string, operation: string, value?: any): never {\n const params: any = { fault: fault, operation: operation };\n if (value != null) { params.value = value; }\n\n return logger.throwError(fault, Logger.errors.NUMERIC_FAULT, params);\n}\n\n// value should have no prefix\nexport function _base36To16(value: string): string {\n return (new BN(value, 36)).toString(16);\n}\n\n// value should have no prefix\nexport function _base16To36(value: string): string {\n return (new BN(value, 16)).toString(36);\n}\n", "\"use strict\";\n\nimport { arrayify, BytesLike, hexZeroPad, isBytes } from \"@ethersproject/bytes\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nimport { BigNumber, BigNumberish, isBigNumberish } from \"./bignumber\";\n\nconst _constructorGuard = { };\n\nconst Zero = BigNumber.from(0);\nconst NegativeOne = BigNumber.from(-1);\n\nfunction throwFault(message: string, fault: string, operation: string, value?: any): never {\n const params: any = { fault: fault, operation: operation };\n if (value !== undefined) { params.value = value; }\n return logger.throwError(message, Logger.errors.NUMERIC_FAULT, params);\n}\n\n// Constant to pull zeros from for multipliers\nlet zeros = \"0\";\nwhile (zeros.length < 256) { zeros += zeros; }\n\n// Returns a string \"1\" followed by decimal \"0\"s\nfunction getMultiplier(decimals: BigNumberish): string {\n\n if (typeof(decimals) !== \"number\") {\n try {\n decimals = BigNumber.from(decimals).toNumber();\n } catch (e) { }\n }\n\n if (typeof(decimals) === \"number\" && decimals >= 0 && decimals <= 256 && !(decimals % 1)) {\n return (\"1\" + zeros.substring(0, decimals));\n }\n\n return logger.throwArgumentError(\"invalid decimal size\", \"decimals\", decimals);\n}\n\nexport function formatFixed(value: BigNumberish, decimals?: string | BigNumberish): string {\n if (decimals == null) { decimals = 0; }\n const multiplier = getMultiplier(decimals);\n\n // Make sure wei is a big number (convert as necessary)\n value = BigNumber.from(value);\n\n const negative = value.lt(Zero);\n if (negative) { value = value.mul(NegativeOne); }\n\n let fraction = value.mod(multiplier).toString();\n while (fraction.length < multiplier.length - 1) { fraction = \"0\" + fraction; }\n\n // Strip training 0\n fraction = fraction.match(/^([0-9]*[1-9]|0)(0*)/)[1];\n\n const whole = value.div(multiplier).toString();\n if (multiplier.length === 1) {\n value = whole;\n } else {\n value = whole + \".\" + fraction;\n }\n\n if (negative) { value = \"-\" + value; }\n\n return value;\n}\n\nexport function parseFixed(value: string, decimals?: BigNumberish): BigNumber {\n\n if (decimals == null) { decimals = 0; }\n const multiplier = getMultiplier(decimals);\n\n if (typeof(value) !== \"string\" || !value.match(/^-?[0-9.]+$/)) {\n logger.throwArgumentError(\"invalid decimal value\", \"value\", value);\n }\n\n // Is it negative?\n const negative = (value.substring(0, 1) === \"-\");\n if (negative) { value = value.substring(1); }\n\n if (value === \".\") {\n logger.throwArgumentError(\"missing value\", \"value\", value);\n }\n\n // Split it into a whole and fractional part\n const comps = value.split(\".\");\n if (comps.length > 2) {\n logger.throwArgumentError(\"too many decimal points\", \"value\", value);\n }\n\n let whole = comps[0], fraction = comps[1];\n if (!whole) { whole = \"0\"; }\n if (!fraction) { fraction = \"0\"; }\n\n // Trim trailing zeros\n while (fraction[fraction.length - 1] === \"0\") {\n fraction = fraction.substring(0, fraction.length - 1);\n }\n\n // Check the fraction doesn't exceed our decimals size\n if (fraction.length > multiplier.length - 1) {\n throwFault(\"fractional component exceeds decimals\", \"underflow\", \"parseFixed\");\n }\n\n // If decimals is 0, we have an empty string for fraction\n if (fraction === \"\") { fraction = \"0\"; }\n\n // Fully pad the string with zeros to get to wei\n while (fraction.length < multiplier.length - 1) { fraction += \"0\"; }\n\n const wholeValue = BigNumber.from(whole);\n const fractionValue = BigNumber.from(fraction);\n\n let wei = (wholeValue.mul(multiplier)).add(fractionValue);\n\n if (negative) { wei = wei.mul(NegativeOne); }\n\n return wei;\n}\n\n\nexport class FixedFormat {\n readonly signed: boolean;\n readonly width: number;\n readonly decimals: number;\n readonly name: string;\n readonly _multiplier: string;\n\n constructor(constructorGuard: any, signed: boolean, width: number, decimals: number) {\n if (constructorGuard !== _constructorGuard) {\n logger.throwError(\"cannot use FixedFormat constructor; use FixedFormat.from\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"new FixedFormat\"\n });\n }\n\n this.signed = signed;\n this.width = width;\n this.decimals = decimals;\n\n this.name = (signed ? \"\": \"u\") + \"fixed\" + String(width) + \"x\" + String(decimals);\n\n this._multiplier = getMultiplier(decimals);\n\n Object.freeze(this);\n }\n\n static from(value: any): FixedFormat {\n if (value instanceof FixedFormat) { return value; }\n\n if (typeof(value) === \"number\") {\n value = `fixed128x${value}`\n }\n\n let signed = true;\n let width = 128;\n let decimals = 18;\n\n if (typeof(value) === \"string\") {\n if (value === \"fixed\") {\n // defaults...\n } else if (value === \"ufixed\") {\n signed = false;\n } else {\n const match = value.match(/^(u?)fixed([0-9]+)x([0-9]+)$/);\n if (!match) { logger.throwArgumentError(\"invalid fixed format\", \"format\", value); }\n signed = (match[1] !== \"u\");\n width = parseInt(match[2]);\n decimals = parseInt(match[3]);\n }\n } else if (value) {\n const check = (key: string, type: string, defaultValue: any): any => {\n if (value[key] == null) { return defaultValue; }\n if (typeof(value[key]) !== type) {\n logger.throwArgumentError(\"invalid fixed format (\" + key + \" not \" + type +\")\", \"format.\" + key, value[key]);\n }\n return value[key];\n }\n signed = check(\"signed\", \"boolean\", signed);\n width = check(\"width\", \"number\", width);\n decimals = check(\"decimals\", \"number\", decimals);\n }\n\n if (width % 8) {\n logger.throwArgumentError(\"invalid fixed format width (not byte aligned)\", \"format.width\", width);\n }\n\n if (decimals > 80) {\n logger.throwArgumentError(\"invalid fixed format (decimals too large)\", \"format.decimals\", decimals);\n }\n\n return new FixedFormat(_constructorGuard, signed, width, decimals);\n }\n}\n\nexport class FixedNumber {\n readonly format: FixedFormat;\n readonly _hex: string;\n readonly _value: string;\n\n readonly _isFixedNumber: boolean;\n\n constructor(constructorGuard: any, hex: string, value: string, format?: FixedFormat) {\n if (constructorGuard !== _constructorGuard) {\n logger.throwError(\"cannot use FixedNumber constructor; use FixedNumber.from\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"new FixedFormat\"\n });\n }\n\n this.format = format;\n this._hex = hex;\n this._value = value;\n\n this._isFixedNumber = true;\n\n Object.freeze(this);\n }\n\n _checkFormat(other: FixedNumber): void {\n if (this.format.name !== other.format.name) {\n logger.throwArgumentError(\"incompatible format; use fixedNumber.toFormat\", \"other\", other);\n }\n }\n\n addUnsafe(other: FixedNumber): FixedNumber {\n this._checkFormat(other);\n const a = parseFixed(this._value, this.format.decimals);\n const b = parseFixed(other._value, other.format.decimals);\n return FixedNumber.fromValue(a.add(b), this.format.decimals, this.format);\n }\n\n subUnsafe(other: FixedNumber): FixedNumber {\n this._checkFormat(other);\n const a = parseFixed(this._value, this.format.decimals);\n const b = parseFixed(other._value, other.format.decimals);\n return FixedNumber.fromValue(a.sub(b), this.format.decimals, this.format);\n }\n\n mulUnsafe(other: FixedNumber): FixedNumber {\n this._checkFormat(other);\n const a = parseFixed(this._value, this.format.decimals);\n const b = parseFixed(other._value, other.format.decimals);\n return FixedNumber.fromValue(a.mul(b).div(this.format._multiplier), this.format.decimals, this.format);\n }\n\n divUnsafe(other: FixedNumber): FixedNumber {\n this._checkFormat(other);\n const a = parseFixed(this._value, this.format.decimals);\n const b = parseFixed(other._value, other.format.decimals);\n return FixedNumber.fromValue(a.mul(this.format._multiplier).div(b), this.format.decimals, this.format);\n }\n\n floor(): FixedNumber {\n const comps = this.toString().split(\".\");\n if (comps.length === 1) { comps.push(\"0\"); }\n\n let result = FixedNumber.from(comps[0], this.format);\n\n const hasFraction = !comps[1].match(/^(0*)$/);\n if (this.isNegative() && hasFraction) {\n result = result.subUnsafe(ONE.toFormat(result.format));\n }\n\n return result;\n }\n\n ceiling(): FixedNumber {\n const comps = this.toString().split(\".\");\n if (comps.length === 1) { comps.push(\"0\"); }\n\n let result = FixedNumber.from(comps[0], this.format);\n\n const hasFraction = !comps[1].match(/^(0*)$/);\n if (!this.isNegative() && hasFraction) {\n result = result.addUnsafe(ONE.toFormat(result.format));\n }\n\n return result;\n }\n\n // @TODO: Support other rounding algorithms\n round(decimals?: number): FixedNumber {\n if (decimals == null) { decimals = 0; }\n\n // If we are already in range, we're done\n const comps = this.toString().split(\".\");\n if (comps.length === 1) { comps.push(\"0\"); }\n\n if (decimals < 0 || decimals > 80 || (decimals % 1)) {\n logger.throwArgumentError(\"invalid decimal count\", \"decimals\", decimals);\n }\n\n if (comps[1].length <= decimals) { return this; }\n\n const factor = FixedNumber.from(\"1\" + zeros.substring(0, decimals), this.format);\n const bump = BUMP.toFormat(this.format);\n\n return this.mulUnsafe(factor).addUnsafe(bump).floor().divUnsafe(factor);\n }\n\n isZero(): boolean {\n return (this._value === \"0.0\" || this._value === \"0\");\n }\n\n isNegative(): boolean {\n return (this._value[0] === \"-\");\n }\n\n toString(): string { return this._value; }\n\n toHexString(width?: number): string {\n if (width == null) { return this._hex; }\n if (width % 8) { logger.throwArgumentError(\"invalid byte width\", \"width\", width); }\n const hex = BigNumber.from(this._hex).fromTwos(this.format.width).toTwos(width).toHexString();\n return hexZeroPad(hex, width / 8);\n }\n\n toUnsafeFloat(): number { return parseFloat(this.toString()); }\n\n toFormat(format: FixedFormat | string): FixedNumber {\n return FixedNumber.fromString(this._value, format);\n }\n\n\n static fromValue(value: BigNumber, decimals?: BigNumberish, format?: FixedFormat | string | number): FixedNumber {\n // If decimals looks more like a format, and there is no format, shift the parameters\n if (format == null && decimals != null && !isBigNumberish(decimals)) {\n format = decimals;\n decimals = null;\n }\n\n if (decimals == null) { decimals = 0; }\n if (format == null) { format = \"fixed\"; }\n\n return FixedNumber.fromString(formatFixed(value, decimals), FixedFormat.from(format));\n }\n\n\n static fromString(value: string, format?: FixedFormat | string | number): FixedNumber {\n if (format == null) { format = \"fixed\"; }\n\n const fixedFormat = FixedFormat.from(format);\n\n const numeric = parseFixed(value, fixedFormat.decimals);\n\n if (!fixedFormat.signed && numeric.lt(Zero)) {\n throwFault(\"unsigned value cannot be negative\", \"overflow\", \"value\", value);\n }\n\n let hex: string = null;\n if (fixedFormat.signed) {\n hex = numeric.toTwos(fixedFormat.width).toHexString();\n } else {\n hex = numeric.toHexString();\n hex = hexZeroPad(hex, fixedFormat.width / 8);\n }\n\n const decimal = formatFixed(numeric, fixedFormat.decimals);\n\n return new FixedNumber(_constructorGuard, hex, decimal, fixedFormat);\n }\n\n static fromBytes(value: BytesLike, format?: FixedFormat | string | number): FixedNumber {\n if (format == null) { format = \"fixed\"; }\n\n const fixedFormat = FixedFormat.from(format);\n\n if (arrayify(value).length > fixedFormat.width / 8) {\n throw new Error(\"overflow\");\n }\n\n let numeric = BigNumber.from(value);\n if (fixedFormat.signed) { numeric = numeric.fromTwos(fixedFormat.width); }\n\n const hex = numeric.toTwos((fixedFormat.signed ? 0: 1) + fixedFormat.width).toHexString();\n const decimal = formatFixed(numeric, fixedFormat.decimals);\n\n return new FixedNumber(_constructorGuard, hex, decimal, fixedFormat);\n }\n\n static from(value: any, format?: FixedFormat | string | number) {\n if (typeof(value) === \"string\") {\n return FixedNumber.fromString(value, format);\n }\n\n if (isBytes(value)) {\n return FixedNumber.fromBytes(value, format);\n }\n\n try {\n return FixedNumber.fromValue(value, 0, format);\n } catch (error) {\n // Allow NUMERIC_FAULT to bubble up\n if (error.code !== Logger.errors.INVALID_ARGUMENT) {\n throw error;\n }\n }\n\n return logger.throwArgumentError(\"invalid FixedNumber value\", \"value\", value);\n }\n\n static isFixedNumber(value: any): value is FixedNumber {\n return !!(value && value._isFixedNumber);\n }\n}\n\nconst ONE = FixedNumber.from(1);\nconst BUMP = FixedNumber.from(\"0.5\");\n", "export { BigNumber, BigNumberish } from \"./bignumber\";\nexport { formatFixed, FixedFormat, FixedNumber, parseFixed } from \"./fixednumber\";\n\n// Internal methods used by address\nexport { _base16To36, _base36To16 } from \"./bignumber\";\n", "export const version = \"properties/5.7.0\";\n", "\"use strict\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nexport function defineReadOnly(object: T, name: K, value: T[K]): void {\n Object.defineProperty(object, name, {\n enumerable: true,\n value: value,\n writable: false,\n });\n}\n\n// Crawl up the constructor chain to find a static method\nexport function getStatic(ctor: any, key: string): T {\n for (let i = 0; i < 32; i++) {\n if (ctor[key]) { return ctor[key]; }\n if (!ctor.prototype || typeof(ctor.prototype) !== \"object\") { break; }\n ctor = Object.getPrototypeOf(ctor.prototype).constructor;\n }\n return null;\n}\n\nexport type Deferrable = {\n [ K in keyof T ]: T[K] | Promise;\n}\n\n\ntype Result = { key: string, value: any};\n\nexport async function resolveProperties(object: Readonly>): Promise {\n const promises: Array> = Object.keys(object).map((key) => {\n const value = object[>key];\n return Promise.resolve(value).then((v) => ({ key: key, value: v }));\n });\n\n const results = await Promise.all(promises);\n\n return results.reduce((accum, result) => {\n accum[(result.key)] = result.value;\n return accum;\n }, { });\n}\n\nexport function checkProperties(object: any, properties: { [ name: string ]: boolean }): void {\n if (!object || typeof(object) !== \"object\") {\n logger.throwArgumentError(\"invalid object\", \"object\", object);\n }\n\n Object.keys(object).forEach((key) => {\n if (!properties[key]) {\n logger.throwArgumentError(\"invalid object key - \" + key, \"transaction:\" + key, object);\n }\n });\n}\n\nexport function shallowCopy(object: T): T {\n const result: any = {};\n for (const key in object) { result[key] = object[key]; }\n return result;\n}\n\nconst opaque: { [key: string]: boolean } = { bigint: true, boolean: true, \"function\": true, number: true, string: true };\n\nfunction _isFrozen(object: any): boolean {\n\n // Opaque objects are not mutable, so safe to copy by assignment\n if (object === undefined || object === null || opaque[typeof(object)]) { return true; }\n\n if (Array.isArray(object) || typeof(object) === \"object\") {\n if (!Object.isFrozen(object)) { return false; }\n\n const keys = Object.keys(object);\n for (let i = 0; i < keys.length; i++) {\n let value: any = null;\n try {\n value = object[keys[i]];\n } catch (error) {\n // If accessing a value triggers an error, it is a getter\n // designed to do so (e.g. Result) and is therefore \"frozen\"\n continue;\n }\n\n if (!_isFrozen(value)) { return false; }\n }\n\n return true;\n }\n\n return logger.throwArgumentError(`Cannot deepCopy ${ typeof(object) }`, \"object\", object);\n}\n\n// Returns a new copy of object, such that no properties may be replaced.\n// New properties may be added only to objects.\nfunction _deepCopy(object: any): any {\n\n if (_isFrozen(object)) { return object; }\n\n // Arrays are mutable, so we need to create a copy\n if (Array.isArray(object)) {\n return Object.freeze(object.map((item) => deepCopy(item)));\n }\n\n if (typeof(object) === \"object\") {\n const result: { [ key: string ]: any } = {};\n for (const key in object) {\n const value = object[key];\n if (value === undefined) { continue; }\n defineReadOnly(result, key, deepCopy(value));\n }\n\n return result;\n }\n\n return logger.throwArgumentError(`Cannot deepCopy ${ typeof(object) }`, \"object\", object);\n}\n\nexport function deepCopy(object: T): T {\n return _deepCopy(object);\n}\n\nexport class Description {\n constructor(info: { [ K in keyof T ]: T[K] }) {\n for (const key in info) {\n (this)[key] = deepCopy(info[key]);\n }\n }\n}\n", "export const version = \"abi/5.7.0\";\n", "\"use strict\";\n\nimport { BigNumber } from \"@ethersproject/bignumber\";\nimport { defineReadOnly } from \"@ethersproject/properties\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nexport interface JsonFragmentType {\n readonly name?: string;\n readonly indexed?: boolean;\n readonly type?: string;\n readonly internalType?: any; // @TODO: in v6 reduce type\n readonly components?: ReadonlyArray;\n}\n\nexport interface JsonFragment {\n readonly name?: string;\n readonly type?: string;\n\n readonly anonymous?: boolean;\n\n readonly payable?: boolean;\n readonly constant?: boolean;\n readonly stateMutability?: string;\n\n readonly inputs?: ReadonlyArray;\n readonly outputs?: ReadonlyArray;\n\n readonly gas?: string;\n};\n\nconst _constructorGuard = { };\n\n// AST Node parser state\ntype ParseState = {\n allowArray?: boolean,\n allowName?: boolean,\n allowParams?: boolean,\n allowType?: boolean,\n readArray?: boolean,\n};\n\n// AST Node\ntype ParseNode = {\n parent?: any,\n type?: string,\n name?: string,\n state?: ParseState,\n indexed?: boolean,\n components?: Array\n};\n\nlet ModifiersBytes: { [ name: string ]: boolean } = { calldata: true, memory: true, storage: true };\nlet ModifiersNest: { [ name: string ]: boolean } = { calldata: true, memory: true };\nfunction checkModifier(type: string, name: string): boolean {\n if (type === \"bytes\" || type === \"string\") {\n if (ModifiersBytes[name]) { return true; }\n } else if (type === \"address\") {\n if (name === \"payable\") { return true; }\n } else if (type.indexOf(\"[\") >= 0 || type === \"tuple\") {\n if (ModifiersNest[name]) { return true; }\n }\n if (ModifiersBytes[name] || name === \"payable\") {\n logger.throwArgumentError(\"invalid modifier\", \"name\", name);\n }\n return false;\n}\n\n// @TODO: Make sure that children of an indexed tuple are marked with a null indexed\nfunction parseParamType(param: string, allowIndexed: boolean): ParseNode {\n\n let originalParam = param;\n function throwError(i: number) {\n logger.throwArgumentError(`unexpected character at position ${ i }`, \"param\", param);\n }\n param = param.replace(/\\s/g, \" \");\n\n function newNode(parent: ParseNode): ParseNode {\n let node: ParseNode = { type: \"\", name: \"\", parent: parent, state: { allowType: true } };\n if (allowIndexed) { node.indexed = false; }\n return node\n }\n\n let parent: ParseNode = { type: \"\", name: \"\", state: { allowType: true } };\n let node = parent;\n\n for (let i = 0; i < param.length; i++) {\n let c = param[i];\n switch (c) {\n case \"(\":\n if (node.state.allowType && node.type === \"\") {\n node.type = \"tuple\";\n } else if (!node.state.allowParams) {\n throwError(i);\n }\n node.state.allowType = false;\n node.type = verifyType(node.type);\n node.components = [ newNode(node) ];\n node = node.components[0];\n break;\n\n case \")\":\n delete node.state;\n\n if (node.name === \"indexed\") {\n if (!allowIndexed) { throwError(i); }\n node.indexed = true;\n node.name = \"\";\n }\n\n if (checkModifier(node.type, node.name)) { node.name = \"\"; }\n\n node.type = verifyType(node.type);\n\n let child = node;\n node = node.parent;\n if (!node) { throwError(i); }\n delete child.parent;\n node.state.allowParams = false;\n node.state.allowName = true;\n node.state.allowArray = true;\n break;\n\n case \",\":\n delete node.state;\n\n if (node.name === \"indexed\") {\n if (!allowIndexed) { throwError(i); }\n node.indexed = true;\n node.name = \"\";\n }\n\n if (checkModifier(node.type, node.name)) { node.name = \"\"; }\n\n node.type = verifyType(node.type);\n\n let sibling: ParseNode = newNode(node.parent);\n //{ type: \"\", name: \"\", parent: node.parent, state: { allowType: true } };\n node.parent.components.push(sibling);\n delete node.parent;\n node = sibling;\n break;\n\n // Hit a space...\n case \" \":\n\n // If reading type, the type is done and may read a param or name\n if (node.state.allowType) {\n if (node.type !== \"\") {\n node.type = verifyType(node.type);\n delete node.state.allowType;\n node.state.allowName = true;\n node.state.allowParams = true;\n }\n }\n\n // If reading name, the name is done\n if (node.state.allowName) {\n if (node.name !== \"\") {\n if (node.name === \"indexed\") {\n if (!allowIndexed) { throwError(i); }\n if (node.indexed) { throwError(i); }\n node.indexed = true;\n node.name = \"\";\n } else if (checkModifier(node.type, node.name)) {\n node.name = \"\";\n } else {\n node.state.allowName = false;\n }\n }\n }\n\n break;\n\n case \"[\":\n if (!node.state.allowArray) { throwError(i); }\n\n node.type += c;\n\n node.state.allowArray = false;\n node.state.allowName = false;\n node.state.readArray = true;\n break;\n\n case \"]\":\n if (!node.state.readArray) { throwError(i); }\n\n node.type += c;\n\n node.state.readArray = false;\n node.state.allowArray = true;\n node.state.allowName = true;\n break;\n\n default:\n if (node.state.allowType) {\n node.type += c;\n node.state.allowParams = true;\n node.state.allowArray = true;\n } else if (node.state.allowName) {\n node.name += c;\n delete node.state.allowArray;\n } else if (node.state.readArray) {\n node.type += c;\n } else {\n throwError(i);\n }\n }\n }\n\n if (node.parent) { logger.throwArgumentError(\"unexpected eof\", \"param\", param); }\n\n delete parent.state;\n\n if (node.name === \"indexed\") {\n if (!allowIndexed) { throwError(originalParam.length - 7); }\n if (node.indexed) { throwError(originalParam.length - 7); }\n node.indexed = true;\n node.name = \"\";\n } else if (checkModifier(node.type, node.name)) {\n node.name = \"\";\n }\n\n parent.type = verifyType(parent.type);\n\n return parent;\n}\n\nfunction populate(object: any, params: any) {\n for (let key in params) { defineReadOnly(object, key, params[key]); }\n}\n\nexport const FormatTypes: { [ name: string ]: string } = Object.freeze({\n // Bare formatting, as is needed for computing a sighash of an event or function\n sighash: \"sighash\",\n\n // Human-Readable with Minimal spacing and without names (compact human-readable)\n minimal: \"minimal\",\n\n // Human-Readable with nice spacing, including all names\n full: \"full\",\n\n // JSON-format a la Solidity\n json: \"json\"\n});\n\nconst paramTypeArray = new RegExp(/^(.*)\\[([0-9]*)\\]$/);\n\nexport class ParamType {\n\n // The local name of the parameter (of null if unbound)\n readonly name: string;\n\n // The fully qualified type (e.g. \"address\", \"tuple(address)\", \"uint256[3][]\"\n readonly type: string;\n\n // The base type (e.g. \"address\", \"tuple\", \"array\")\n readonly baseType: string;\n\n // Indexable Paramters ONLY (otherwise null)\n readonly indexed: boolean;\n\n // Tuples ONLY: (otherwise null)\n // - sub-components\n readonly components: Array;\n\n // Arrays ONLY: (otherwise null)\n // - length of the array (-1 for dynamic length)\n // - child type\n readonly arrayLength: number;\n readonly arrayChildren: ParamType;\n\n readonly _isParamType: boolean;\n\n constructor(constructorGuard: any, params: any) {\n if (constructorGuard !== _constructorGuard) { logger.throwError(\"use fromString\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"new ParamType()\"\n }); }\n populate(this, params);\n\n let match = this.type.match(paramTypeArray);\n if (match) {\n populate(this, {\n arrayLength: parseInt(match[2] || \"-1\"),\n arrayChildren: ParamType.fromObject({\n type: match[1],\n components: this.components\n }),\n baseType: \"array\"\n });\n } else {\n populate(this, {\n arrayLength: null,\n arrayChildren: null,\n baseType: ((this.components != null) ? \"tuple\": this.type)\n });\n }\n\n this._isParamType = true;\n\n Object.freeze(this);\n }\n\n // Format the parameter fragment\n // - sighash: \"(uint256,address)\"\n // - minimal: \"tuple(uint256,address) indexed\"\n // - full: \"tuple(uint256 foo, address bar) indexed baz\"\n format(format?: string): string {\n if (!format) { format = FormatTypes.sighash; }\n if (!FormatTypes[format]) {\n logger.throwArgumentError(\"invalid format type\", \"format\", format);\n }\n\n if (format === FormatTypes.json) {\n let result: any = {\n type: ((this.baseType === \"tuple\") ? \"tuple\": this.type),\n name: (this.name || undefined)\n };\n if (typeof(this.indexed) === \"boolean\") { result.indexed = this.indexed; }\n if (this.components) {\n result.components = this.components.map((comp) => JSON.parse(comp.format(format)));\n }\n return JSON.stringify(result);\n }\n\n let result = \"\";\n\n // Array\n if (this.baseType === \"array\") {\n result += this.arrayChildren.format(format);\n result += \"[\" + (this.arrayLength < 0 ? \"\": String(this.arrayLength)) + \"]\";\n } else {\n if (this.baseType === \"tuple\") {\n if (format !== FormatTypes.sighash) {\n result += this.type;\n }\n result += \"(\" + this.components.map(\n (comp) => comp.format(format)\n ).join((format === FormatTypes.full) ? \", \": \",\") + \")\";\n } else {\n result += this.type;\n }\n }\n\n if (format !== FormatTypes.sighash) {\n if (this.indexed === true) { result += \" indexed\"; }\n if (format === FormatTypes.full && this.name) {\n result += \" \" + this.name;\n }\n }\n\n return result;\n }\n\n static from(value: string | JsonFragmentType | ParamType, allowIndexed?: boolean): ParamType {\n if (typeof(value) === \"string\") {\n return ParamType.fromString(value, allowIndexed);\n }\n return ParamType.fromObject(value);\n }\n\n static fromObject(value: JsonFragmentType | ParamType): ParamType {\n if (ParamType.isParamType(value)) { return value; }\n\n return new ParamType(_constructorGuard, {\n name: (value.name || null),\n type: verifyType(value.type),\n indexed: ((value.indexed == null) ? null: !!value.indexed),\n components: (value.components ? value.components.map(ParamType.fromObject): null)\n });\n }\n\n static fromString(value: string, allowIndexed?: boolean): ParamType {\n function ParamTypify(node: ParseNode): ParamType {\n return ParamType.fromObject({\n name: node.name,\n type: node.type,\n indexed: node.indexed,\n components: node.components\n });\n }\n\n return ParamTypify(parseParamType(value, !!allowIndexed));\n }\n\n static isParamType(value: any): value is ParamType {\n return !!(value != null && value._isParamType);\n }\n};\n\nfunction parseParams(value: string, allowIndex: boolean): Array {\n return splitNesting(value).map((param) => ParamType.fromString(param, allowIndex));\n}\n\ntype TypeCheck = { -readonly [ K in keyof T ]: T[K] };\n\ninterface _Fragment {\n readonly type: string;\n readonly name: string;\n readonly inputs: ReadonlyArray;\n}\n\nexport abstract class Fragment {\n\n readonly type: string;\n readonly name: string;\n readonly inputs: Array;\n\n readonly _isFragment: boolean;\n\n constructor(constructorGuard: any, params: any) {\n if (constructorGuard !== _constructorGuard) {\n logger.throwError(\"use a static from method\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"new Fragment()\"\n });\n }\n populate(this, params);\n\n this._isFragment = true;\n\n Object.freeze(this);\n }\n\n abstract format(format?: string): string;\n\n static from(value: Fragment | JsonFragment | string): Fragment {\n if (Fragment.isFragment(value)) { return value; }\n\n if (typeof(value) === \"string\") {\n return Fragment.fromString(value);\n }\n\n return Fragment.fromObject(value);\n }\n\n static fromObject(value: Fragment | JsonFragment): Fragment {\n if (Fragment.isFragment(value)) { return value; }\n\n switch (value.type) {\n case \"function\":\n return FunctionFragment.fromObject(value);\n case \"event\":\n return EventFragment.fromObject(value);\n case \"constructor\":\n return ConstructorFragment.fromObject(value);\n case \"error\":\n return ErrorFragment.fromObject(value);\n case \"fallback\":\n case \"receive\":\n // @TODO: Something? Maybe return a FunctionFragment? A custom DefaultFunctionFragment?\n return null;\n }\n\n return logger.throwArgumentError(\"invalid fragment object\", \"value\", value);\n }\n\n static fromString(value: string): Fragment {\n // Make sure the \"returns\" is surrounded by a space and all whitespace is exactly one space\n value = value.replace(/\\s/g, \" \");\n value = value.replace(/\\(/g, \" (\").replace(/\\)/g, \") \").replace(/\\s+/g, \" \");\n value = value.trim();\n\n if (value.split(\" \")[0] === \"event\") {\n return EventFragment.fromString(value.substring(5).trim());\n } else if (value.split(\" \")[0] === \"function\") {\n return FunctionFragment.fromString(value.substring(8).trim());\n } else if (value.split(\"(\")[0].trim() === \"constructor\") {\n return ConstructorFragment.fromString(value.trim());\n } else if (value.split(\" \")[0] === \"error\") {\n return ErrorFragment.fromString(value.substring(5).trim());\n }\n\n return logger.throwArgumentError(\"unsupported fragment\", \"value\", value);\n }\n\n static isFragment(value: any): value is Fragment {\n return !!(value && value._isFragment);\n }\n}\n\ninterface _EventFragment extends _Fragment {\n readonly anonymous: boolean;\n}\n\nexport class EventFragment extends Fragment {\n readonly anonymous: boolean;\n\n format(format?: string): string {\n if (!format) { format = FormatTypes.sighash; }\n if (!FormatTypes[format]) {\n logger.throwArgumentError(\"invalid format type\", \"format\", format);\n }\n\n if (format === FormatTypes.json) {\n return JSON.stringify({\n type: \"event\",\n anonymous: this.anonymous,\n name: this.name,\n inputs: this.inputs.map((input) => JSON.parse(input.format(format)))\n });\n }\n\n let result = \"\";\n\n if (format !== FormatTypes.sighash) {\n result += \"event \";\n }\n\n result += this.name + \"(\" + this.inputs.map(\n (input) => input.format(format)\n ).join((format === FormatTypes.full) ? \", \": \",\") + \") \";\n\n if (format !== FormatTypes.sighash) {\n if (this.anonymous) {\n result += \"anonymous \";\n }\n }\n\n return result.trim();\n }\n\n static from(value: EventFragment | JsonFragment | string): EventFragment {\n if (typeof(value) === \"string\") {\n return EventFragment.fromString(value);\n }\n return EventFragment.fromObject(value);\n }\n\n static fromObject(value: JsonFragment | EventFragment): EventFragment {\n if (EventFragment.isEventFragment(value)) { return value; }\n\n if (value.type !== \"event\") {\n logger.throwArgumentError(\"invalid event object\", \"value\", value);\n }\n\n const params: TypeCheck<_EventFragment> = {\n name: verifyIdentifier(value.name),\n anonymous: value.anonymous,\n inputs: (value.inputs ? value.inputs.map(ParamType.fromObject) : []),\n type: \"event\"\n };\n\n return new EventFragment(_constructorGuard, params);\n }\n\n static fromString(value: string): EventFragment {\n\n let match = value.match(regexParen);\n if (!match) {\n logger.throwArgumentError(\"invalid event string\", \"value\", value);\n }\n\n let anonymous = false;\n match[3].split(\" \").forEach((modifier) => {\n switch(modifier.trim()) {\n case \"anonymous\":\n anonymous = true;\n break;\n case \"\":\n break;\n default:\n logger.warn(\"unknown modifier: \" + modifier);\n }\n });\n\n return EventFragment.fromObject({\n name: match[1].trim(),\n anonymous: anonymous,\n inputs: parseParams(match[2], true),\n type: \"event\"\n });\n }\n\n static isEventFragment(value: any): value is EventFragment {\n return (value && value._isFragment && value.type === \"event\");\n }\n}\n\nfunction parseGas(value: string, params: any): string {\n params.gas = null;\n\n let comps = value.split(\"@\");\n if (comps.length !== 1) {\n if (comps.length > 2) {\n logger.throwArgumentError(\"invalid human-readable ABI signature\", \"value\", value);\n }\n if (!comps[1].match(/^[0-9]+$/)) {\n logger.throwArgumentError(\"invalid human-readable ABI signature gas\", \"value\", value);\n }\n params.gas = BigNumber.from(comps[1]);\n return comps[0];\n }\n\n return value;\n}\n\nfunction parseModifiers(value: string, params: any): void {\n params.constant = false;\n params.payable = false;\n params.stateMutability = \"nonpayable\";\n\n value.split(\" \").forEach((modifier) => {\n switch (modifier.trim()) {\n case \"constant\":\n params.constant = true;\n break;\n case \"payable\":\n params.payable = true;\n params.stateMutability = \"payable\";\n break;\n case \"nonpayable\":\n params.payable = false;\n params.stateMutability = \"nonpayable\";\n break;\n case \"pure\":\n params.constant = true;\n params.stateMutability = \"pure\";\n break;\n case \"view\":\n params.constant = true;\n params.stateMutability = \"view\";\n break;\n case \"external\":\n case \"public\":\n case \"\":\n break;\n default:\n console.log(\"unknown modifier: \" + modifier);\n }\n });\n}\n\ntype StateInputValue = {\n constant?: boolean;\n payable?: boolean;\n stateMutability?: string;\n type?: string;\n};\n\ntype StateOutputValue = {\n constant: boolean;\n payable: boolean;\n stateMutability: string;\n};\n\nfunction verifyState(value: StateInputValue): StateOutputValue {\n let result: any = {\n constant: false,\n payable: true,\n stateMutability: \"payable\"\n };\n\n if (value.stateMutability != null) {\n result.stateMutability = value.stateMutability;\n\n // Set (and check things are consistent) the constant property\n result.constant = (result.stateMutability === \"view\" || result.stateMutability === \"pure\");\n if (value.constant != null) {\n if ((!!value.constant) !== result.constant) {\n logger.throwArgumentError(\"cannot have constant function with mutability \" + result.stateMutability, \"value\", value);\n }\n }\n\n // Set (and check things are consistent) the payable property\n result.payable = (result.stateMutability === \"payable\");\n if (value.payable != null) {\n if ((!!value.payable) !== result.payable) {\n logger.throwArgumentError(\"cannot have payable function with mutability \" + result.stateMutability, \"value\", value);\n }\n }\n\n } else if (value.payable != null) {\n result.payable = !!value.payable;\n\n // If payable we can assume non-constant; otherwise we can't assume\n if (value.constant == null && !result.payable && value.type !== \"constructor\") {\n logger.throwArgumentError(\"unable to determine stateMutability\", \"value\", value);\n }\n\n result.constant = !!value.constant;\n\n if (result.constant) {\n result.stateMutability = \"view\";\n } else {\n result.stateMutability = (result.payable ? \"payable\": \"nonpayable\");\n }\n\n if (result.payable && result.constant) {\n logger.throwArgumentError(\"cannot have constant payable function\", \"value\", value);\n }\n\n } else if (value.constant != null) {\n result.constant = !!value.constant;\n result.payable = !result.constant;\n result.stateMutability = (result.constant ? \"view\": \"payable\");\n\n } else if (value.type !== \"constructor\") {\n logger.throwArgumentError(\"unable to determine stateMutability\", \"value\", value);\n }\n\n return result;\n}\n\ninterface _ConstructorFragment extends _Fragment {\n stateMutability: string;\n payable: boolean;\n gas?: BigNumber;\n}\n\nexport class ConstructorFragment extends Fragment {\n stateMutability: string;\n payable: boolean;\n gas?: BigNumber;\n\n format(format?: string): string {\n if (!format) { format = FormatTypes.sighash; }\n if (!FormatTypes[format]) {\n logger.throwArgumentError(\"invalid format type\", \"format\", format);\n }\n\n if (format === FormatTypes.json) {\n return JSON.stringify({\n type: \"constructor\",\n stateMutability: ((this.stateMutability !== \"nonpayable\") ? this.stateMutability: undefined),\n payable: this.payable,\n gas: (this.gas ? this.gas.toNumber(): undefined),\n inputs: this.inputs.map((input) => JSON.parse(input.format(format)))\n });\n }\n\n if (format === FormatTypes.sighash) {\n logger.throwError(\"cannot format a constructor for sighash\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"format(sighash)\"\n });\n }\n\n let result = \"constructor(\" + this.inputs.map(\n (input) => input.format(format)\n ).join((format === FormatTypes.full) ? \", \": \",\") + \") \";\n\n if (this.stateMutability && this.stateMutability !== \"nonpayable\") {\n result += this.stateMutability + \" \";\n }\n\n return result.trim();\n }\n\n static from(value: ConstructorFragment | JsonFragment | string): ConstructorFragment {\n if (typeof(value) === \"string\") {\n return ConstructorFragment.fromString(value);\n }\n return ConstructorFragment.fromObject(value);\n }\n\n static fromObject(value: ConstructorFragment | JsonFragment): ConstructorFragment {\n if (ConstructorFragment.isConstructorFragment(value)) { return value; }\n\n if (value.type !== \"constructor\") {\n logger.throwArgumentError(\"invalid constructor object\", \"value\", value);\n }\n\n let state = verifyState(value);\n if (state.constant) {\n logger.throwArgumentError(\"constructor cannot be constant\", \"value\", value);\n }\n\n const params: TypeCheck<_ConstructorFragment> = {\n name: null,\n type: value.type,\n inputs: (value.inputs ? value.inputs.map(ParamType.fromObject): []),\n payable: state.payable,\n stateMutability: state.stateMutability,\n gas: (value.gas ? BigNumber.from(value.gas): null)\n };\n\n return new ConstructorFragment(_constructorGuard, params);\n }\n\n static fromString(value: string): ConstructorFragment {\n let params: any = { type: \"constructor\" };\n\n value = parseGas(value, params);\n\n let parens = value.match(regexParen);\n if (!parens || parens[1].trim() !== \"constructor\") {\n logger.throwArgumentError(\"invalid constructor string\", \"value\", value);\n }\n\n params.inputs = parseParams(parens[2].trim(), false);\n\n parseModifiers(parens[3].trim(), params);\n\n return ConstructorFragment.fromObject(params);\n }\n\n static isConstructorFragment(value: any): value is ConstructorFragment {\n return (value && value._isFragment && value.type === \"constructor\");\n }\n}\n\ninterface _FunctionFragment extends _ConstructorFragment {\n constant: boolean;\n outputs?: Array;\n}\n\nexport class FunctionFragment extends ConstructorFragment {\n constant: boolean;\n outputs?: Array;\n\n format(format?: string): string {\n if (!format) { format = FormatTypes.sighash; }\n if (!FormatTypes[format]) {\n logger.throwArgumentError(\"invalid format type\", \"format\", format);\n }\n\n if (format === FormatTypes.json) {\n return JSON.stringify({\n type: \"function\",\n name: this.name,\n constant: this.constant,\n stateMutability: ((this.stateMutability !== \"nonpayable\") ? this.stateMutability: undefined),\n payable: this.payable,\n gas: (this.gas ? this.gas.toNumber(): undefined),\n inputs: this.inputs.map((input) => JSON.parse(input.format(format))),\n outputs: this.outputs.map((output) => JSON.parse(output.format(format))),\n });\n }\n\n let result = \"\";\n\n if (format !== FormatTypes.sighash) {\n result += \"function \";\n }\n\n result += this.name + \"(\" + this.inputs.map(\n (input) => input.format(format)\n ).join((format === FormatTypes.full) ? \", \": \",\") + \") \";\n\n if (format !== FormatTypes.sighash) {\n if (this.stateMutability) {\n if (this.stateMutability !== \"nonpayable\") {\n result += (this.stateMutability + \" \");\n }\n } else if (this.constant) {\n result += \"view \";\n }\n\n if (this.outputs && this.outputs.length) {\n result += \"returns (\" + this.outputs.map(\n (output) => output.format(format)\n ).join(\", \") + \") \";\n }\n\n if (this.gas != null) {\n result += \"@\" + this.gas.toString() + \" \";\n }\n }\n\n return result.trim();\n }\n\n static from(value: FunctionFragment | JsonFragment | string): FunctionFragment {\n if (typeof(value) === \"string\") {\n return FunctionFragment.fromString(value);\n }\n return FunctionFragment.fromObject(value);\n }\n\n static fromObject(value: FunctionFragment | JsonFragment): FunctionFragment {\n if (FunctionFragment.isFunctionFragment(value)) { return value; }\n\n if (value.type !== \"function\") {\n logger.throwArgumentError(\"invalid function object\", \"value\", value);\n }\n\n let state = verifyState(value);\n\n const params: TypeCheck<_FunctionFragment> = {\n type: value.type,\n name: verifyIdentifier(value.name),\n constant: state.constant,\n inputs: (value.inputs ? value.inputs.map(ParamType.fromObject): []),\n outputs: (value.outputs ? value.outputs.map(ParamType.fromObject): [ ]),\n payable: state.payable,\n stateMutability: state.stateMutability,\n gas: (value.gas ? BigNumber.from(value.gas): null)\n };\n\n return new FunctionFragment(_constructorGuard, params);\n }\n\n static fromString(value: string): FunctionFragment {\n let params: any = { type: \"function\" };\n value = parseGas(value, params);\n\n let comps = value.split(\" returns \");\n if (comps.length > 2) {\n logger.throwArgumentError(\"invalid function string\", \"value\", value);\n }\n\n let parens = comps[0].match(regexParen);\n if (!parens) {\n logger.throwArgumentError(\"invalid function signature\", \"value\", value);\n }\n\n params.name = parens[1].trim();\n if (params.name) { verifyIdentifier(params.name); }\n\n params.inputs = parseParams(parens[2], false);\n\n parseModifiers(parens[3].trim(), params);\n\n // We have outputs\n if (comps.length > 1) {\n let returns = comps[1].match(regexParen);\n if (returns[1].trim() != \"\" || returns[3].trim() != \"\") {\n logger.throwArgumentError(\"unexpected tokens\", \"value\", value);\n }\n params.outputs = parseParams(returns[2], false);\n } else {\n params.outputs = [ ];\n }\n\n return FunctionFragment.fromObject(params);\n }\n\n static isFunctionFragment(value: any): value is FunctionFragment {\n return (value && value._isFragment && value.type === \"function\");\n }\n}\n\n//export class StructFragment extends Fragment {\n//}\n\nfunction checkForbidden(fragment: ErrorFragment): ErrorFragment {\n const sig = fragment.format();\n if (sig === \"Error(string)\" || sig === \"Panic(uint256)\") {\n logger.throwArgumentError(`cannot specify user defined ${ sig } error`, \"fragment\", fragment);\n }\n return fragment;\n}\n\nexport class ErrorFragment extends Fragment {\n\n format(format?: string): string {\n if (!format) { format = FormatTypes.sighash; }\n if (!FormatTypes[format]) {\n logger.throwArgumentError(\"invalid format type\", \"format\", format);\n }\n\n if (format === FormatTypes.json) {\n return JSON.stringify({\n type: \"error\",\n name: this.name,\n inputs: this.inputs.map((input) => JSON.parse(input.format(format))),\n });\n }\n\n let result = \"\";\n\n if (format !== FormatTypes.sighash) {\n result += \"error \";\n }\n\n result += this.name + \"(\" + this.inputs.map(\n (input) => input.format(format)\n ).join((format === FormatTypes.full) ? \", \": \",\") + \") \";\n\n return result.trim();\n }\n\n static from(value: ErrorFragment | JsonFragment | string): ErrorFragment {\n if (typeof(value) === \"string\") {\n return ErrorFragment.fromString(value);\n }\n return ErrorFragment.fromObject(value);\n }\n\n static fromObject(value: ErrorFragment | JsonFragment): ErrorFragment {\n if (ErrorFragment.isErrorFragment(value)) { return value; }\n\n if (value.type !== \"error\") {\n logger.throwArgumentError(\"invalid error object\", \"value\", value);\n }\n\n const params: TypeCheck<_Fragment> = {\n type: value.type,\n name: verifyIdentifier(value.name),\n inputs: (value.inputs ? value.inputs.map(ParamType.fromObject): [])\n };\n\n return checkForbidden(new ErrorFragment(_constructorGuard, params));\n }\n\n static fromString(value: string): ErrorFragment {\n let params: any = { type: \"error\" };\n\n let parens = value.match(regexParen);\n if (!parens) {\n logger.throwArgumentError(\"invalid error signature\", \"value\", value);\n }\n\n params.name = parens[1].trim();\n if (params.name) { verifyIdentifier(params.name); }\n\n params.inputs = parseParams(parens[2], false);\n\n return checkForbidden(ErrorFragment.fromObject(params));\n }\n\n static isErrorFragment(value: any): value is ErrorFragment {\n return (value && value._isFragment && value.type === \"error\");\n }\n}\n\nfunction verifyType(type: string): string {\n\n // These need to be transformed to their full description\n if (type.match(/^uint($|[^1-9])/)) {\n type = \"uint256\" + type.substring(4);\n } else if (type.match(/^int($|[^1-9])/)) {\n type = \"int256\" + type.substring(3);\n }\n\n // @TODO: more verification\n\n return type;\n}\n\n// See: https://github.com/ethereum/solidity/blob/1f8f1a3db93a548d0555e3e14cfc55a10e25b60e/docs/grammar/SolidityLexer.g4#L234\nconst regexIdentifier = new RegExp(\"^[a-zA-Z$_][a-zA-Z0-9$_]*$\");\nfunction verifyIdentifier(value: string): string {\n if (!value || !value.match(regexIdentifier)) {\n logger.throwArgumentError(`invalid identifier \"${ value }\"`, \"value\", value);\n }\n return value;\n}\n\nconst regexParen = new RegExp(\"^([^)(]*)\\\\((.*)\\\\)([^)(]*)$\");\n\nfunction splitNesting(value: string): Array {\n value = value.trim();\n\n let result = [];\n let accum = \"\";\n let depth = 0;\n for (let offset = 0; offset < value.length; offset++) {\n let c = value[offset];\n if (c === \",\" && depth === 0) {\n result.push(accum);\n accum = \"\";\n } else {\n accum += c;\n if (c === \"(\") {\n depth++;\n } else if (c === \")\") {\n depth--;\n if (depth === -1) {\n logger.throwArgumentError(\"unbalanced parenthesis\", \"value\", value);\n }\n }\n }\n }\n if (accum) { result.push(accum); }\n\n return result;\n}\n\n", "\"use strict\";\n\nimport { arrayify, BytesLike, concat, hexConcat, hexlify } from \"@ethersproject/bytes\";\nimport { BigNumber, BigNumberish } from \"@ethersproject/bignumber\";\nimport { defineReadOnly } from \"@ethersproject/properties\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"../_version\";\nconst logger = new Logger(version);\n\nexport interface Result extends ReadonlyArray {\n readonly [key: string]: any;\n}\n\nexport function checkResultErrors(result: Result): Array<{ path: Array, error: Error }> {\n // Find the first error (if any)\n const errors: Array<{ path: Array, error: Error }> = [ ];\n\n const checkErrors = function(path: Array, object: any): void {\n if (!Array.isArray(object)) { return; }\n for (let key in object) {\n const childPath = path.slice();\n childPath.push(key);\n\n try {\n checkErrors(childPath, object[key]);\n } catch (error) {\n errors.push({ path: childPath, error: error });\n }\n }\n }\n checkErrors([ ], result);\n\n return errors;\n\n}\n\nexport type CoerceFunc = (type: string, value: any) => any;\n\nexport abstract class Coder {\n\n // The coder name:\n // - address, uint256, tuple, array, etc.\n readonly name: string;\n\n // The fully expanded type, including composite types:\n // - address, uint256, tuple(address,bytes), uint256[3][4][], etc.\n readonly type: string;\n\n // The localName bound in the signature, in this example it is \"baz\":\n // - tuple(address foo, uint bar) baz\n readonly localName: string;\n\n // Whether this type is dynamic:\n // - Dynamic: bytes, string, address[], tuple(boolean[]), etc.\n // - Not Dynamic: address, uint256, boolean[3], tuple(address, uint8)\n readonly dynamic: boolean;\n\n constructor(name: string, type: string, localName: string, dynamic: boolean) {\n // @TODO: defineReadOnly these\n this.name = name;\n this.type = type;\n this.localName = localName;\n this.dynamic = dynamic;\n }\n\n _throwError(message: string, value: any): void {\n logger.throwArgumentError(message, this.localName, value);\n }\n\n abstract encode(writer: Writer, value: any): number;\n abstract decode(reader: Reader): any;\n\n abstract defaultValue(): any;\n}\n\nexport class Writer {\n readonly wordSize: number;\n\n _data: Array;\n _dataLength: number;\n _padding: Uint8Array;\n\n constructor(wordSize?: number) {\n defineReadOnly(this, \"wordSize\", wordSize || 32);\n this._data = [ ];\n this._dataLength = 0;\n this._padding = new Uint8Array(wordSize);\n }\n\n get data(): string {\n return hexConcat(this._data);\n }\n get length(): number { return this._dataLength; }\n\n _writeData(data: Uint8Array): number {\n this._data.push(data);\n this._dataLength += data.length;\n return data.length;\n }\n\n appendWriter(writer: Writer): number {\n return this._writeData(concat(writer._data));\n }\n\n // Arrayish items; padded on the right to wordSize\n writeBytes(value: BytesLike): number {\n let bytes = arrayify(value);\n const paddingOffset = bytes.length % this.wordSize;\n if (paddingOffset) {\n bytes = concat([ bytes, this._padding.slice(paddingOffset) ])\n }\n return this._writeData(bytes);\n }\n\n _getValue(value: BigNumberish): Uint8Array {\n let bytes = arrayify(BigNumber.from(value));\n if (bytes.length > this.wordSize) {\n logger.throwError(\"value out-of-bounds\", Logger.errors.BUFFER_OVERRUN, {\n length: this.wordSize,\n offset: bytes.length\n });\n }\n if (bytes.length % this.wordSize) {\n bytes = concat([ this._padding.slice(bytes.length % this.wordSize), bytes ]);\n }\n return bytes;\n }\n\n // BigNumberish items; padded on the left to wordSize\n writeValue(value: BigNumberish): number {\n return this._writeData(this._getValue(value));\n }\n\n writeUpdatableValue(): (value: BigNumberish) => void {\n const offset = this._data.length;\n this._data.push(this._padding);\n this._dataLength += this.wordSize;\n return (value: BigNumberish) => {\n this._data[offset] = this._getValue(value);\n };\n }\n}\n\nexport class Reader {\n readonly wordSize: number;\n readonly allowLoose: boolean;\n\n readonly _data: Uint8Array;\n readonly _coerceFunc: CoerceFunc;\n\n _offset: number;\n\n constructor(data: BytesLike, wordSize?: number, coerceFunc?: CoerceFunc, allowLoose?: boolean) {\n defineReadOnly(this, \"_data\", arrayify(data));\n defineReadOnly(this, \"wordSize\", wordSize || 32);\n defineReadOnly(this, \"_coerceFunc\", coerceFunc);\n defineReadOnly(this, \"allowLoose\", allowLoose);\n\n this._offset = 0;\n }\n\n get data(): string { return hexlify(this._data); }\n get consumed(): number { return this._offset; }\n\n // The default Coerce function\n static coerce(name: string, value: any): any {\n let match = name.match(\"^u?int([0-9]+)$\");\n if (match && parseInt(match[1]) <= 48) { value = value.toNumber(); }\n return value;\n }\n\n coerce(name: string, value: any): any {\n if (this._coerceFunc) { return this._coerceFunc(name, value); }\n return Reader.coerce(name, value);\n }\n\n _peekBytes(offset: number, length: number, loose?: boolean): Uint8Array {\n let alignedLength = Math.ceil(length / this.wordSize) * this.wordSize;\n if (this._offset + alignedLength > this._data.length) {\n if (this.allowLoose && loose && this._offset + length <= this._data.length) {\n alignedLength = length;\n } else {\n logger.throwError(\"data out-of-bounds\", Logger.errors.BUFFER_OVERRUN, {\n length: this._data.length,\n offset: this._offset + alignedLength\n });\n }\n }\n return this._data.slice(this._offset, this._offset + alignedLength)\n }\n\n subReader(offset: number): Reader {\n return new Reader(this._data.slice(this._offset + offset), this.wordSize, this._coerceFunc, this.allowLoose);\n }\n\n readBytes(length: number, loose?: boolean): Uint8Array {\n let bytes = this._peekBytes(0, length, !!loose);\n this._offset += bytes.length;\n // @TODO: Make sure the length..end bytes are all 0?\n return bytes.slice(0, length);\n }\n\n readValue(): BigNumber {\n return BigNumber.from(this.readBytes(this.wordSize));\n }\n}\n", "/**\n * [js-sha3]{@link https://github.com/emn178/js-sha3}\n *\n * @version 0.8.0\n * @author Chen, Yi-Cyuan [emn178@gmail.com]\n * @copyright Chen, Yi-Cyuan 2015-2018\n * @license MIT\n */\n/*jslint bitwise: true */\n(function () {\n 'use strict';\n\n var INPUT_ERROR = 'input is invalid type';\n var FINALIZE_ERROR = 'finalize already called';\n var WINDOW = typeof window === 'object';\n var root = WINDOW ? window : {};\n if (root.JS_SHA3_NO_WINDOW) {\n WINDOW = false;\n }\n var WEB_WORKER = !WINDOW && typeof self === 'object';\n var NODE_JS = !root.JS_SHA3_NO_NODE_JS && typeof process === 'object' && process.versions && process.versions.node;\n if (NODE_JS) {\n root = global;\n } else if (WEB_WORKER) {\n root = self;\n }\n var COMMON_JS = !root.JS_SHA3_NO_COMMON_JS && typeof module === 'object' && module.exports;\n var AMD = typeof define === 'function' && define.amd;\n var ARRAY_BUFFER = !root.JS_SHA3_NO_ARRAY_BUFFER && typeof ArrayBuffer !== 'undefined';\n var HEX_CHARS = '0123456789abcdef'.split('');\n var SHAKE_PADDING = [31, 7936, 2031616, 520093696];\n var CSHAKE_PADDING = [4, 1024, 262144, 67108864];\n var KECCAK_PADDING = [1, 256, 65536, 16777216];\n var PADDING = [6, 1536, 393216, 100663296];\n var SHIFT = [0, 8, 16, 24];\n var RC = [1, 0, 32898, 0, 32906, 2147483648, 2147516416, 2147483648, 32907, 0, 2147483649,\n 0, 2147516545, 2147483648, 32777, 2147483648, 138, 0, 136, 0, 2147516425, 0,\n 2147483658, 0, 2147516555, 0, 139, 2147483648, 32905, 2147483648, 32771,\n 2147483648, 32770, 2147483648, 128, 2147483648, 32778, 0, 2147483658, 2147483648,\n 2147516545, 2147483648, 32896, 2147483648, 2147483649, 0, 2147516424, 2147483648];\n var BITS = [224, 256, 384, 512];\n var SHAKE_BITS = [128, 256];\n var OUTPUT_TYPES = ['hex', 'buffer', 'arrayBuffer', 'array', 'digest'];\n var CSHAKE_BYTEPAD = {\n '128': 168,\n '256': 136\n };\n\n if (root.JS_SHA3_NO_NODE_JS || !Array.isArray) {\n Array.isArray = function (obj) {\n return Object.prototype.toString.call(obj) === '[object Array]';\n };\n }\n\n if (ARRAY_BUFFER && (root.JS_SHA3_NO_ARRAY_BUFFER_IS_VIEW || !ArrayBuffer.isView)) {\n ArrayBuffer.isView = function (obj) {\n return typeof obj === 'object' && obj.buffer && obj.buffer.constructor === ArrayBuffer;\n };\n }\n\n var createOutputMethod = function (bits, padding, outputType) {\n return function (message) {\n return new Keccak(bits, padding, bits).update(message)[outputType]();\n };\n };\n\n var createShakeOutputMethod = function (bits, padding, outputType) {\n return function (message, outputBits) {\n return new Keccak(bits, padding, outputBits).update(message)[outputType]();\n };\n };\n\n var createCshakeOutputMethod = function (bits, padding, outputType) {\n return function (message, outputBits, n, s) {\n return methods['cshake' + bits].update(message, outputBits, n, s)[outputType]();\n };\n };\n\n var createKmacOutputMethod = function (bits, padding, outputType) {\n return function (key, message, outputBits, s) {\n return methods['kmac' + bits].update(key, message, outputBits, s)[outputType]();\n };\n };\n\n var createOutputMethods = function (method, createMethod, bits, padding) {\n for (var i = 0; i < OUTPUT_TYPES.length; ++i) {\n var type = OUTPUT_TYPES[i];\n method[type] = createMethod(bits, padding, type);\n }\n return method;\n };\n\n var createMethod = function (bits, padding) {\n var method = createOutputMethod(bits, padding, 'hex');\n method.create = function () {\n return new Keccak(bits, padding, bits);\n };\n method.update = function (message) {\n return method.create().update(message);\n };\n return createOutputMethods(method, createOutputMethod, bits, padding);\n };\n\n var createShakeMethod = function (bits, padding) {\n var method = createShakeOutputMethod(bits, padding, 'hex');\n method.create = function (outputBits) {\n return new Keccak(bits, padding, outputBits);\n };\n method.update = function (message, outputBits) {\n return method.create(outputBits).update(message);\n };\n return createOutputMethods(method, createShakeOutputMethod, bits, padding);\n };\n\n var createCshakeMethod = function (bits, padding) {\n var w = CSHAKE_BYTEPAD[bits];\n var method = createCshakeOutputMethod(bits, padding, 'hex');\n method.create = function (outputBits, n, s) {\n if (!n && !s) {\n return methods['shake' + bits].create(outputBits);\n } else {\n return new Keccak(bits, padding, outputBits).bytepad([n, s], w);\n }\n };\n method.update = function (message, outputBits, n, s) {\n return method.create(outputBits, n, s).update(message);\n };\n return createOutputMethods(method, createCshakeOutputMethod, bits, padding);\n };\n\n var createKmacMethod = function (bits, padding) {\n var w = CSHAKE_BYTEPAD[bits];\n var method = createKmacOutputMethod(bits, padding, 'hex');\n method.create = function (key, outputBits, s) {\n return new Kmac(bits, padding, outputBits).bytepad(['KMAC', s], w).bytepad([key], w);\n };\n method.update = function (key, message, outputBits, s) {\n return method.create(key, outputBits, s).update(message);\n };\n return createOutputMethods(method, createKmacOutputMethod, bits, padding);\n };\n\n var algorithms = [\n { name: 'keccak', padding: KECCAK_PADDING, bits: BITS, createMethod: createMethod },\n { name: 'sha3', padding: PADDING, bits: BITS, createMethod: createMethod },\n { name: 'shake', padding: SHAKE_PADDING, bits: SHAKE_BITS, createMethod: createShakeMethod },\n { name: 'cshake', padding: CSHAKE_PADDING, bits: SHAKE_BITS, createMethod: createCshakeMethod },\n { name: 'kmac', padding: CSHAKE_PADDING, bits: SHAKE_BITS, createMethod: createKmacMethod }\n ];\n\n var methods = {}, methodNames = [];\n\n for (var i = 0; i < algorithms.length; ++i) {\n var algorithm = algorithms[i];\n var bits = algorithm.bits;\n for (var j = 0; j < bits.length; ++j) {\n var methodName = algorithm.name + '_' + bits[j];\n methodNames.push(methodName);\n methods[methodName] = algorithm.createMethod(bits[j], algorithm.padding);\n if (algorithm.name !== 'sha3') {\n var newMethodName = algorithm.name + bits[j];\n methodNames.push(newMethodName);\n methods[newMethodName] = methods[methodName];\n }\n }\n }\n\n function Keccak(bits, padding, outputBits) {\n this.blocks = [];\n this.s = [];\n this.padding = padding;\n this.outputBits = outputBits;\n this.reset = true;\n this.finalized = false;\n this.block = 0;\n this.start = 0;\n this.blockCount = (1600 - (bits << 1)) >> 5;\n this.byteCount = this.blockCount << 2;\n this.outputBlocks = outputBits >> 5;\n this.extraBytes = (outputBits & 31) >> 3;\n\n for (var i = 0; i < 50; ++i) {\n this.s[i] = 0;\n }\n }\n\n Keccak.prototype.update = function (message) {\n if (this.finalized) {\n throw new Error(FINALIZE_ERROR);\n }\n var notString, type = typeof message;\n if (type !== 'string') {\n if (type === 'object') {\n if (message === null) {\n throw new Error(INPUT_ERROR);\n } else if (ARRAY_BUFFER && message.constructor === ArrayBuffer) {\n message = new Uint8Array(message);\n } else if (!Array.isArray(message)) {\n if (!ARRAY_BUFFER || !ArrayBuffer.isView(message)) {\n throw new Error(INPUT_ERROR);\n }\n }\n } else {\n throw new Error(INPUT_ERROR);\n }\n notString = true;\n }\n var blocks = this.blocks, byteCount = this.byteCount, length = message.length,\n blockCount = this.blockCount, index = 0, s = this.s, i, code;\n\n while (index < length) {\n if (this.reset) {\n this.reset = false;\n blocks[0] = this.block;\n for (i = 1; i < blockCount + 1; ++i) {\n blocks[i] = 0;\n }\n }\n if (notString) {\n for (i = this.start; index < length && i < byteCount; ++index) {\n blocks[i >> 2] |= message[index] << SHIFT[i++ & 3];\n }\n } else {\n for (i = this.start; index < length && i < byteCount; ++index) {\n code = message.charCodeAt(index);\n if (code < 0x80) {\n blocks[i >> 2] |= code << SHIFT[i++ & 3];\n } else if (code < 0x800) {\n blocks[i >> 2] |= (0xc0 | (code >> 6)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n } else if (code < 0xd800 || code >= 0xe000) {\n blocks[i >> 2] |= (0xe0 | (code >> 12)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n } else {\n code = 0x10000 + (((code & 0x3ff) << 10) | (message.charCodeAt(++index) & 0x3ff));\n blocks[i >> 2] |= (0xf0 | (code >> 18)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | ((code >> 12) & 0x3f)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n }\n }\n }\n this.lastByteIndex = i;\n if (i >= byteCount) {\n this.start = i - byteCount;\n this.block = blocks[blockCount];\n for (i = 0; i < blockCount; ++i) {\n s[i] ^= blocks[i];\n }\n f(s);\n this.reset = true;\n } else {\n this.start = i;\n }\n }\n return this;\n };\n\n Keccak.prototype.encode = function (x, right) {\n var o = x & 255, n = 1;\n var bytes = [o];\n x = x >> 8;\n o = x & 255;\n while (o > 0) {\n bytes.unshift(o);\n x = x >> 8;\n o = x & 255;\n ++n;\n }\n if (right) {\n bytes.push(n);\n } else {\n bytes.unshift(n);\n }\n this.update(bytes);\n return bytes.length;\n };\n\n Keccak.prototype.encodeString = function (str) {\n var notString, type = typeof str;\n if (type !== 'string') {\n if (type === 'object') {\n if (str === null) {\n throw new Error(INPUT_ERROR);\n } else if (ARRAY_BUFFER && str.constructor === ArrayBuffer) {\n str = new Uint8Array(str);\n } else if (!Array.isArray(str)) {\n if (!ARRAY_BUFFER || !ArrayBuffer.isView(str)) {\n throw new Error(INPUT_ERROR);\n }\n }\n } else {\n throw new Error(INPUT_ERROR);\n }\n notString = true;\n }\n var bytes = 0, length = str.length;\n if (notString) {\n bytes = length;\n } else {\n for (var i = 0; i < str.length; ++i) {\n var code = str.charCodeAt(i);\n if (code < 0x80) {\n bytes += 1;\n } else if (code < 0x800) {\n bytes += 2;\n } else if (code < 0xd800 || code >= 0xe000) {\n bytes += 3;\n } else {\n code = 0x10000 + (((code & 0x3ff) << 10) | (str.charCodeAt(++i) & 0x3ff));\n bytes += 4;\n }\n }\n }\n bytes += this.encode(bytes * 8);\n this.update(str);\n return bytes;\n };\n\n Keccak.prototype.bytepad = function (strs, w) {\n var bytes = this.encode(w);\n for (var i = 0; i < strs.length; ++i) {\n bytes += this.encodeString(strs[i]);\n }\n var paddingBytes = w - bytes % w;\n var zeros = [];\n zeros.length = paddingBytes;\n this.update(zeros);\n return this;\n };\n\n Keccak.prototype.finalize = function () {\n if (this.finalized) {\n return;\n }\n this.finalized = true;\n var blocks = this.blocks, i = this.lastByteIndex, blockCount = this.blockCount, s = this.s;\n blocks[i >> 2] |= this.padding[i & 3];\n if (this.lastByteIndex === this.byteCount) {\n blocks[0] = blocks[blockCount];\n for (i = 1; i < blockCount + 1; ++i) {\n blocks[i] = 0;\n }\n }\n blocks[blockCount - 1] |= 0x80000000;\n for (i = 0; i < blockCount; ++i) {\n s[i] ^= blocks[i];\n }\n f(s);\n };\n\n Keccak.prototype.toString = Keccak.prototype.hex = function () {\n this.finalize();\n\n var blockCount = this.blockCount, s = this.s, outputBlocks = this.outputBlocks,\n extraBytes = this.extraBytes, i = 0, j = 0;\n var hex = '', block;\n while (j < outputBlocks) {\n for (i = 0; i < blockCount && j < outputBlocks; ++i, ++j) {\n block = s[i];\n hex += HEX_CHARS[(block >> 4) & 0x0F] + HEX_CHARS[block & 0x0F] +\n HEX_CHARS[(block >> 12) & 0x0F] + HEX_CHARS[(block >> 8) & 0x0F] +\n HEX_CHARS[(block >> 20) & 0x0F] + HEX_CHARS[(block >> 16) & 0x0F] +\n HEX_CHARS[(block >> 28) & 0x0F] + HEX_CHARS[(block >> 24) & 0x0F];\n }\n if (j % blockCount === 0) {\n f(s);\n i = 0;\n }\n }\n if (extraBytes) {\n block = s[i];\n hex += HEX_CHARS[(block >> 4) & 0x0F] + HEX_CHARS[block & 0x0F];\n if (extraBytes > 1) {\n hex += HEX_CHARS[(block >> 12) & 0x0F] + HEX_CHARS[(block >> 8) & 0x0F];\n }\n if (extraBytes > 2) {\n hex += HEX_CHARS[(block >> 20) & 0x0F] + HEX_CHARS[(block >> 16) & 0x0F];\n }\n }\n return hex;\n };\n\n Keccak.prototype.arrayBuffer = function () {\n this.finalize();\n\n var blockCount = this.blockCount, s = this.s, outputBlocks = this.outputBlocks,\n extraBytes = this.extraBytes, i = 0, j = 0;\n var bytes = this.outputBits >> 3;\n var buffer;\n if (extraBytes) {\n buffer = new ArrayBuffer((outputBlocks + 1) << 2);\n } else {\n buffer = new ArrayBuffer(bytes);\n }\n var array = new Uint32Array(buffer);\n while (j < outputBlocks) {\n for (i = 0; i < blockCount && j < outputBlocks; ++i, ++j) {\n array[j] = s[i];\n }\n if (j % blockCount === 0) {\n f(s);\n }\n }\n if (extraBytes) {\n array[i] = s[i];\n buffer = buffer.slice(0, bytes);\n }\n return buffer;\n };\n\n Keccak.prototype.buffer = Keccak.prototype.arrayBuffer;\n\n Keccak.prototype.digest = Keccak.prototype.array = function () {\n this.finalize();\n\n var blockCount = this.blockCount, s = this.s, outputBlocks = this.outputBlocks,\n extraBytes = this.extraBytes, i = 0, j = 0;\n var array = [], offset, block;\n while (j < outputBlocks) {\n for (i = 0; i < blockCount && j < outputBlocks; ++i, ++j) {\n offset = j << 2;\n block = s[i];\n array[offset] = block & 0xFF;\n array[offset + 1] = (block >> 8) & 0xFF;\n array[offset + 2] = (block >> 16) & 0xFF;\n array[offset + 3] = (block >> 24) & 0xFF;\n }\n if (j % blockCount === 0) {\n f(s);\n }\n }\n if (extraBytes) {\n offset = j << 2;\n block = s[i];\n array[offset] = block & 0xFF;\n if (extraBytes > 1) {\n array[offset + 1] = (block >> 8) & 0xFF;\n }\n if (extraBytes > 2) {\n array[offset + 2] = (block >> 16) & 0xFF;\n }\n }\n return array;\n };\n\n function Kmac(bits, padding, outputBits) {\n Keccak.call(this, bits, padding, outputBits);\n }\n\n Kmac.prototype = new Keccak();\n\n Kmac.prototype.finalize = function () {\n this.encode(this.outputBits, true);\n return Keccak.prototype.finalize.call(this);\n };\n\n var f = function (s) {\n var h, l, n, c0, c1, c2, c3, c4, c5, c6, c7, c8, c9,\n b0, b1, b2, b3, b4, b5, b6, b7, b8, b9, b10, b11, b12, b13, b14, b15, b16, b17,\n b18, b19, b20, b21, b22, b23, b24, b25, b26, b27, b28, b29, b30, b31, b32, b33,\n b34, b35, b36, b37, b38, b39, b40, b41, b42, b43, b44, b45, b46, b47, b48, b49;\n for (n = 0; n < 48; n += 2) {\n c0 = s[0] ^ s[10] ^ s[20] ^ s[30] ^ s[40];\n c1 = s[1] ^ s[11] ^ s[21] ^ s[31] ^ s[41];\n c2 = s[2] ^ s[12] ^ s[22] ^ s[32] ^ s[42];\n c3 = s[3] ^ s[13] ^ s[23] ^ s[33] ^ s[43];\n c4 = s[4] ^ s[14] ^ s[24] ^ s[34] ^ s[44];\n c5 = s[5] ^ s[15] ^ s[25] ^ s[35] ^ s[45];\n c6 = s[6] ^ s[16] ^ s[26] ^ s[36] ^ s[46];\n c7 = s[7] ^ s[17] ^ s[27] ^ s[37] ^ s[47];\n c8 = s[8] ^ s[18] ^ s[28] ^ s[38] ^ s[48];\n c9 = s[9] ^ s[19] ^ s[29] ^ s[39] ^ s[49];\n\n h = c8 ^ ((c2 << 1) | (c3 >>> 31));\n l = c9 ^ ((c3 << 1) | (c2 >>> 31));\n s[0] ^= h;\n s[1] ^= l;\n s[10] ^= h;\n s[11] ^= l;\n s[20] ^= h;\n s[21] ^= l;\n s[30] ^= h;\n s[31] ^= l;\n s[40] ^= h;\n s[41] ^= l;\n h = c0 ^ ((c4 << 1) | (c5 >>> 31));\n l = c1 ^ ((c5 << 1) | (c4 >>> 31));\n s[2] ^= h;\n s[3] ^= l;\n s[12] ^= h;\n s[13] ^= l;\n s[22] ^= h;\n s[23] ^= l;\n s[32] ^= h;\n s[33] ^= l;\n s[42] ^= h;\n s[43] ^= l;\n h = c2 ^ ((c6 << 1) | (c7 >>> 31));\n l = c3 ^ ((c7 << 1) | (c6 >>> 31));\n s[4] ^= h;\n s[5] ^= l;\n s[14] ^= h;\n s[15] ^= l;\n s[24] ^= h;\n s[25] ^= l;\n s[34] ^= h;\n s[35] ^= l;\n s[44] ^= h;\n s[45] ^= l;\n h = c4 ^ ((c8 << 1) | (c9 >>> 31));\n l = c5 ^ ((c9 << 1) | (c8 >>> 31));\n s[6] ^= h;\n s[7] ^= l;\n s[16] ^= h;\n s[17] ^= l;\n s[26] ^= h;\n s[27] ^= l;\n s[36] ^= h;\n s[37] ^= l;\n s[46] ^= h;\n s[47] ^= l;\n h = c6 ^ ((c0 << 1) | (c1 >>> 31));\n l = c7 ^ ((c1 << 1) | (c0 >>> 31));\n s[8] ^= h;\n s[9] ^= l;\n s[18] ^= h;\n s[19] ^= l;\n s[28] ^= h;\n s[29] ^= l;\n s[38] ^= h;\n s[39] ^= l;\n s[48] ^= h;\n s[49] ^= l;\n\n b0 = s[0];\n b1 = s[1];\n b32 = (s[11] << 4) | (s[10] >>> 28);\n b33 = (s[10] << 4) | (s[11] >>> 28);\n b14 = (s[20] << 3) | (s[21] >>> 29);\n b15 = (s[21] << 3) | (s[20] >>> 29);\n b46 = (s[31] << 9) | (s[30] >>> 23);\n b47 = (s[30] << 9) | (s[31] >>> 23);\n b28 = (s[40] << 18) | (s[41] >>> 14);\n b29 = (s[41] << 18) | (s[40] >>> 14);\n b20 = (s[2] << 1) | (s[3] >>> 31);\n b21 = (s[3] << 1) | (s[2] >>> 31);\n b2 = (s[13] << 12) | (s[12] >>> 20);\n b3 = (s[12] << 12) | (s[13] >>> 20);\n b34 = (s[22] << 10) | (s[23] >>> 22);\n b35 = (s[23] << 10) | (s[22] >>> 22);\n b16 = (s[33] << 13) | (s[32] >>> 19);\n b17 = (s[32] << 13) | (s[33] >>> 19);\n b48 = (s[42] << 2) | (s[43] >>> 30);\n b49 = (s[43] << 2) | (s[42] >>> 30);\n b40 = (s[5] << 30) | (s[4] >>> 2);\n b41 = (s[4] << 30) | (s[5] >>> 2);\n b22 = (s[14] << 6) | (s[15] >>> 26);\n b23 = (s[15] << 6) | (s[14] >>> 26);\n b4 = (s[25] << 11) | (s[24] >>> 21);\n b5 = (s[24] << 11) | (s[25] >>> 21);\n b36 = (s[34] << 15) | (s[35] >>> 17);\n b37 = (s[35] << 15) | (s[34] >>> 17);\n b18 = (s[45] << 29) | (s[44] >>> 3);\n b19 = (s[44] << 29) | (s[45] >>> 3);\n b10 = (s[6] << 28) | (s[7] >>> 4);\n b11 = (s[7] << 28) | (s[6] >>> 4);\n b42 = (s[17] << 23) | (s[16] >>> 9);\n b43 = (s[16] << 23) | (s[17] >>> 9);\n b24 = (s[26] << 25) | (s[27] >>> 7);\n b25 = (s[27] << 25) | (s[26] >>> 7);\n b6 = (s[36] << 21) | (s[37] >>> 11);\n b7 = (s[37] << 21) | (s[36] >>> 11);\n b38 = (s[47] << 24) | (s[46] >>> 8);\n b39 = (s[46] << 24) | (s[47] >>> 8);\n b30 = (s[8] << 27) | (s[9] >>> 5);\n b31 = (s[9] << 27) | (s[8] >>> 5);\n b12 = (s[18] << 20) | (s[19] >>> 12);\n b13 = (s[19] << 20) | (s[18] >>> 12);\n b44 = (s[29] << 7) | (s[28] >>> 25);\n b45 = (s[28] << 7) | (s[29] >>> 25);\n b26 = (s[38] << 8) | (s[39] >>> 24);\n b27 = (s[39] << 8) | (s[38] >>> 24);\n b8 = (s[48] << 14) | (s[49] >>> 18);\n b9 = (s[49] << 14) | (s[48] >>> 18);\n\n s[0] = b0 ^ (~b2 & b4);\n s[1] = b1 ^ (~b3 & b5);\n s[10] = b10 ^ (~b12 & b14);\n s[11] = b11 ^ (~b13 & b15);\n s[20] = b20 ^ (~b22 & b24);\n s[21] = b21 ^ (~b23 & b25);\n s[30] = b30 ^ (~b32 & b34);\n s[31] = b31 ^ (~b33 & b35);\n s[40] = b40 ^ (~b42 & b44);\n s[41] = b41 ^ (~b43 & b45);\n s[2] = b2 ^ (~b4 & b6);\n s[3] = b3 ^ (~b5 & b7);\n s[12] = b12 ^ (~b14 & b16);\n s[13] = b13 ^ (~b15 & b17);\n s[22] = b22 ^ (~b24 & b26);\n s[23] = b23 ^ (~b25 & b27);\n s[32] = b32 ^ (~b34 & b36);\n s[33] = b33 ^ (~b35 & b37);\n s[42] = b42 ^ (~b44 & b46);\n s[43] = b43 ^ (~b45 & b47);\n s[4] = b4 ^ (~b6 & b8);\n s[5] = b5 ^ (~b7 & b9);\n s[14] = b14 ^ (~b16 & b18);\n s[15] = b15 ^ (~b17 & b19);\n s[24] = b24 ^ (~b26 & b28);\n s[25] = b25 ^ (~b27 & b29);\n s[34] = b34 ^ (~b36 & b38);\n s[35] = b35 ^ (~b37 & b39);\n s[44] = b44 ^ (~b46 & b48);\n s[45] = b45 ^ (~b47 & b49);\n s[6] = b6 ^ (~b8 & b0);\n s[7] = b7 ^ (~b9 & b1);\n s[16] = b16 ^ (~b18 & b10);\n s[17] = b17 ^ (~b19 & b11);\n s[26] = b26 ^ (~b28 & b20);\n s[27] = b27 ^ (~b29 & b21);\n s[36] = b36 ^ (~b38 & b30);\n s[37] = b37 ^ (~b39 & b31);\n s[46] = b46 ^ (~b48 & b40);\n s[47] = b47 ^ (~b49 & b41);\n s[8] = b8 ^ (~b0 & b2);\n s[9] = b9 ^ (~b1 & b3);\n s[18] = b18 ^ (~b10 & b12);\n s[19] = b19 ^ (~b11 & b13);\n s[28] = b28 ^ (~b20 & b22);\n s[29] = b29 ^ (~b21 & b23);\n s[38] = b38 ^ (~b30 & b32);\n s[39] = b39 ^ (~b31 & b33);\n s[48] = b48 ^ (~b40 & b42);\n s[49] = b49 ^ (~b41 & b43);\n\n s[0] ^= RC[n];\n s[1] ^= RC[n + 1];\n }\n };\n\n if (COMMON_JS) {\n module.exports = methods;\n } else {\n for (i = 0; i < methodNames.length; ++i) {\n root[methodNames[i]] = methods[methodNames[i]];\n }\n if (AMD) {\n define(function () {\n return methods;\n });\n }\n }\n})();\n", "\"use strict\";\n\nimport sha3 from \"js-sha3\";\n\nimport { arrayify, BytesLike } from \"@ethersproject/bytes\";\n\nexport function keccak256(data: BytesLike): string {\n return '0x' + sha3.keccak_256(arrayify(data));\n}\n", "export const version = \"rlp/5.7.0\";\n", "\"use strict\";\n\n//See: https://github.com/ethereum/wiki/wiki/RLP\n\nimport { arrayify, BytesLike, hexlify, isBytesLike } from \"@ethersproject/bytes\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nfunction arrayifyInteger(value: number): Array {\n const result = [];\n while (value) {\n result.unshift(value & 0xff);\n value >>= 8;\n }\n return result;\n}\n\nfunction unarrayifyInteger(data: Uint8Array, offset: number, length: number): number {\n let result = 0;\n for (let i = 0; i < length; i++) {\n result = (result * 256) + data[offset + i];\n }\n return result;\n}\n\nfunction _encode(object: Array | string): Array {\n if (Array.isArray(object)) {\n let payload: Array = [];\n object.forEach(function(child) {\n payload = payload.concat(_encode(child));\n });\n\n if (payload.length <= 55) {\n payload.unshift(0xc0 + payload.length)\n return payload;\n }\n\n const length = arrayifyInteger(payload.length);\n length.unshift(0xf7 + length.length);\n\n return length.concat(payload);\n\n }\n\n if (!isBytesLike(object)) {\n logger.throwArgumentError(\"RLP object must be BytesLike\", \"object\", object);\n }\n\n const data: Array = Array.prototype.slice.call(arrayify(object));\n\n if (data.length === 1 && data[0] <= 0x7f) {\n return data;\n\n } else if (data.length <= 55) {\n data.unshift(0x80 + data.length);\n return data;\n }\n\n const length = arrayifyInteger(data.length);\n length.unshift(0xb7 + length.length);\n\n return length.concat(data);\n}\n\nexport function encode(object: any): string {\n return hexlify(_encode(object));\n}\n\ntype Decoded = {\n result: any;\n consumed: number;\n};\n\nfunction _decodeChildren(data: Uint8Array, offset: number, childOffset: number, length: number): Decoded {\n const result = [];\n\n while (childOffset < offset + 1 + length) {\n const decoded = _decode(data, childOffset);\n\n result.push(decoded.result);\n\n childOffset += decoded.consumed;\n if (childOffset > offset + 1 + length) {\n logger.throwError(\"child data too short\", Logger.errors.BUFFER_OVERRUN, { });\n }\n }\n\n return {consumed: (1 + length), result: result};\n}\n\n// returns { consumed: number, result: Object }\nfunction _decode(data: Uint8Array, offset: number): { consumed: number, result: any } {\n if (data.length === 0) {\n logger.throwError(\"data too short\", Logger.errors.BUFFER_OVERRUN, { });\n }\n\n // Array with extra length prefix\n if (data[offset] >= 0xf8) {\n const lengthLength = data[offset] - 0xf7;\n if (offset + 1 + lengthLength > data.length) {\n logger.throwError(\"data short segment too short\", Logger.errors.BUFFER_OVERRUN, { });\n }\n\n const length = unarrayifyInteger(data, offset + 1, lengthLength);\n if (offset + 1 + lengthLength + length > data.length) {\n logger.throwError(\"data long segment too short\", Logger.errors.BUFFER_OVERRUN, { });\n }\n\n return _decodeChildren(data, offset, offset + 1 + lengthLength, lengthLength + length);\n\n } else if (data[offset] >= 0xc0) {\n const length = data[offset] - 0xc0;\n if (offset + 1 + length > data.length) {\n logger.throwError(\"data array too short\", Logger.errors.BUFFER_OVERRUN, { });\n }\n\n return _decodeChildren(data, offset, offset + 1, length);\n\n } else if (data[offset] >= 0xb8) {\n const lengthLength = data[offset] - 0xb7;\n if (offset + 1 + lengthLength > data.length) {\n logger.throwError(\"data array too short\", Logger.errors.BUFFER_OVERRUN, { });\n }\n\n const length = unarrayifyInteger(data, offset + 1, lengthLength);\n if (offset + 1 + lengthLength + length > data.length) {\n logger.throwError(\"data array too short\", Logger.errors.BUFFER_OVERRUN, { });\n }\n\n const result = hexlify(data.slice(offset + 1 + lengthLength, offset + 1 + lengthLength + length));\n return { consumed: (1 + lengthLength + length), result: result }\n\n } else if (data[offset] >= 0x80) {\n const length = data[offset] - 0x80;\n if (offset + 1 + length > data.length) {\n logger.throwError(\"data too short\", Logger.errors.BUFFER_OVERRUN, { });\n }\n\n const result = hexlify(data.slice(offset + 1, offset + 1 + length));\n return { consumed: (1 + length), result: result }\n }\n return { consumed: 1, result: hexlify(data[offset]) };\n}\n\nexport function decode(data: BytesLike): any {\n const bytes = arrayify(data);\n const decoded = _decode(bytes, 0);\n if (decoded.consumed !== bytes.length) {\n logger.throwArgumentError(\"invalid rlp data\", \"data\", data);\n }\n return decoded.result;\n}\n\n", "export const version = \"address/5.7.0\";\n", "\"use strict\";\n\nimport { arrayify, BytesLike, concat, hexDataLength, hexDataSlice, isHexString, stripZeros } from \"@ethersproject/bytes\";\nimport { BigNumber, BigNumberish, _base16To36, _base36To16 } from \"@ethersproject/bignumber\";\nimport { keccak256 } from \"@ethersproject/keccak256\";\nimport { encode } from \"@ethersproject/rlp\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nfunction getChecksumAddress(address: string): string {\n if (!isHexString(address, 20)) {\n logger.throwArgumentError(\"invalid address\", \"address\", address);\n }\n\n address = address.toLowerCase();\n\n const chars = address.substring(2).split(\"\");\n\n const expanded = new Uint8Array(40);\n for (let i = 0; i < 40; i++) {\n expanded[i] = chars[i].charCodeAt(0);\n }\n\n const hashed = arrayify(keccak256(expanded));\n\n for (let i = 0; i < 40; i += 2) {\n if ((hashed[i >> 1] >> 4) >= 8) {\n chars[i] = chars[i].toUpperCase();\n }\n if ((hashed[i >> 1] & 0x0f) >= 8) {\n chars[i + 1] = chars[i + 1].toUpperCase();\n }\n }\n\n return \"0x\" + chars.join(\"\");\n}\n\n// Shims for environments that are missing some required constants and functions\nconst MAX_SAFE_INTEGER: number = 0x1fffffffffffff;\n\nfunction log10(x: number): number {\n if (Math.log10) { return Math.log10(x); }\n return Math.log(x) / Math.LN10;\n}\n\n\n// See: https://en.wikipedia.org/wiki/International_Bank_Account_Number\n\n// Create lookup table\nconst ibanLookup: { [character: string]: string } = { };\nfor (let i = 0; i < 10; i++) { ibanLookup[String(i)] = String(i); }\nfor (let i = 0; i < 26; i++) { ibanLookup[String.fromCharCode(65 + i)] = String(10 + i); }\n\n// How many decimal digits can we process? (for 64-bit float, this is 15)\nconst safeDigits = Math.floor(log10(MAX_SAFE_INTEGER));\n\nfunction ibanChecksum(address: string): string {\n address = address.toUpperCase();\n address = address.substring(4) + address.substring(0, 2) + \"00\";\n\n let expanded = address.split(\"\").map((c) => { return ibanLookup[c]; }).join(\"\");\n\n // Javascript can handle integers safely up to 15 (decimal) digits\n while (expanded.length >= safeDigits){\n let block = expanded.substring(0, safeDigits);\n expanded = parseInt(block, 10) % 97 + expanded.substring(block.length);\n }\n\n let checksum = String(98 - (parseInt(expanded, 10) % 97));\n while (checksum.length < 2) { checksum = \"0\" + checksum; }\n\n return checksum;\n};\n\nexport function getAddress(address: string): string {\n let result = null;\n\n if (typeof(address) !== \"string\") {\n logger.throwArgumentError(\"invalid address\", \"address\", address);\n }\n\n if (address.match(/^(0x)?[0-9a-fA-F]{40}$/)) {\n\n // Missing the 0x prefix\n if (address.substring(0, 2) !== \"0x\") { address = \"0x\" + address; }\n\n result = getChecksumAddress(address);\n\n // It is a checksummed address with a bad checksum\n if (address.match(/([A-F].*[a-f])|([a-f].*[A-F])/) && result !== address) {\n logger.throwArgumentError(\"bad address checksum\", \"address\", address);\n }\n\n // Maybe ICAP? (we only support direct mode)\n } else if (address.match(/^XE[0-9]{2}[0-9A-Za-z]{30,31}$/)) {\n\n // It is an ICAP address with a bad checksum\n if (address.substring(2, 4) !== ibanChecksum(address)) {\n logger.throwArgumentError(\"bad icap checksum\", \"address\", address);\n }\n\n result = _base36To16(address.substring(4));\n while (result.length < 40) { result = \"0\" + result; }\n result = getChecksumAddress(\"0x\" + result);\n\n } else {\n logger.throwArgumentError(\"invalid address\", \"address\", address);\n }\n\n return result;\n}\n\nexport function isAddress(address: string): boolean {\n try {\n getAddress(address);\n return true;\n } catch (error) { }\n return false;\n}\n\nexport function getIcapAddress(address: string): string {\n let base36 = _base16To36(getAddress(address).substring(2)).toUpperCase();\n while (base36.length < 30) { base36 = \"0\" + base36; }\n return \"XE\" + ibanChecksum(\"XE00\" + base36) + base36;\n}\n\n// http://ethereum.stackexchange.com/questions/760/how-is-the-address-of-an-ethereum-contract-computed\nexport function getContractAddress(transaction: { from: string, nonce: BigNumberish }) {\n let from: string = null;\n try {\n from = getAddress(transaction.from);\n } catch (error) {\n logger.throwArgumentError(\"missing from address\", \"transaction\", transaction);\n }\n\n const nonce = stripZeros(arrayify(BigNumber.from(transaction.nonce).toHexString()));\n\n return getAddress(hexDataSlice(keccak256(encode([ from, nonce ])), 12));\n}\n\nexport function getCreate2Address(from: string, salt: BytesLike, initCodeHash: BytesLike): string {\n if (hexDataLength(salt) !== 32) {\n logger.throwArgumentError(\"salt must be 32 bytes\", \"salt\", salt);\n }\n if (hexDataLength(initCodeHash) !== 32) {\n logger.throwArgumentError(\"initCodeHash must be 32 bytes\", \"initCodeHash\", initCodeHash);\n }\n return getAddress(hexDataSlice(keccak256(concat([ \"0xff\", getAddress(from), salt, initCodeHash ])), 12))\n}\n", "\"use strict\";\n\nimport { getAddress } from \"@ethersproject/address\";\nimport { hexZeroPad } from \"@ethersproject/bytes\";\n\nimport { Coder, Reader, Writer } from \"./abstract-coder\";\n\nexport class AddressCoder extends Coder {\n\n constructor(localName: string) {\n super(\"address\", \"address\", localName, false);\n }\n\n defaultValue(): string {\n return \"0x0000000000000000000000000000000000000000\";\n }\n\n encode(writer: Writer, value: string): number {\n try {\n value = getAddress(value)\n } catch (error) {\n this._throwError(error.message, value);\n }\n return writer.writeValue(value);\n }\n\n decode(reader: Reader): any {\n return getAddress(hexZeroPad(reader.readValue().toHexString(), 20));\n }\n}\n\n", "\"use strict\";\n\nimport { Coder, Reader, Writer } from \"./abstract-coder\";\n\n// Clones the functionality of an existing Coder, but without a localName\nexport class AnonymousCoder extends Coder {\n private coder: Coder;\n\n constructor(coder: Coder) {\n super(coder.name, coder.type, undefined, coder.dynamic);\n this.coder = coder;\n }\n\n defaultValue(): any {\n return this.coder.defaultValue();\n }\n\n encode(writer: Writer, value: any): number {\n return this.coder.encode(writer, value);\n }\n\n decode(reader: Reader): any {\n return this.coder.decode(reader);\n }\n}\n", "\"use strict\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"../_version\";\nconst logger = new Logger(version);\n\nimport { Coder, Reader, Result, Writer } from \"./abstract-coder\";\nimport { AnonymousCoder } from \"./anonymous\";\n\nexport function pack(writer: Writer, coders: ReadonlyArray, values: Array | { [ name: string ]: any }): number {\n let arrayValues: Array = null;\n\n if (Array.isArray(values)) {\n arrayValues = values;\n\n } else if (values && typeof(values) === \"object\") {\n let unique: { [ name: string ]: boolean } = { };\n\n arrayValues = coders.map((coder) => {\n const name = coder.localName;\n if (!name) {\n logger.throwError(\"cannot encode object for signature with missing names\", Logger.errors.INVALID_ARGUMENT, {\n argument: \"values\",\n coder: coder,\n value: values\n });\n }\n\n if (unique[name]) {\n logger.throwError(\"cannot encode object for signature with duplicate names\", Logger.errors.INVALID_ARGUMENT, {\n argument: \"values\",\n coder: coder,\n value: values\n });\n }\n\n unique[name] = true;\n\n return values[name];\n });\n\n } else {\n logger.throwArgumentError(\"invalid tuple value\", \"tuple\", values);\n }\n\n if (coders.length !== arrayValues.length) {\n logger.throwArgumentError(\"types/value length mismatch\", \"tuple\", values);\n }\n\n let staticWriter = new Writer(writer.wordSize);\n let dynamicWriter = new Writer(writer.wordSize);\n\n let updateFuncs: Array<(baseOffset: number) => void> = [];\n coders.forEach((coder, index) => {\n let value = arrayValues[index];\n\n if (coder.dynamic) {\n // Get current dynamic offset (for the future pointer)\n let dynamicOffset = dynamicWriter.length;\n\n // Encode the dynamic value into the dynamicWriter\n coder.encode(dynamicWriter, value);\n\n // Prepare to populate the correct offset once we are done\n let updateFunc = staticWriter.writeUpdatableValue();\n updateFuncs.push((baseOffset: number) => {\n updateFunc(baseOffset + dynamicOffset);\n });\n\n } else {\n coder.encode(staticWriter, value);\n }\n });\n\n // Backfill all the dynamic offsets, now that we know the static length\n updateFuncs.forEach((func) => { func(staticWriter.length); });\n\n let length = writer.appendWriter(staticWriter);\n length += writer.appendWriter(dynamicWriter);\n return length;\n}\n\nexport function unpack(reader: Reader, coders: Array): Result {\n let values: any = [];\n\n // A reader anchored to this base\n let baseReader = reader.subReader(0);\n\n coders.forEach((coder) => {\n let value: any = null;\n\n if (coder.dynamic) {\n let offset = reader.readValue();\n let offsetReader = baseReader.subReader(offset.toNumber());\n try {\n value = coder.decode(offsetReader);\n } catch (error) {\n // Cannot recover from this\n if (error.code === Logger.errors.BUFFER_OVERRUN) { throw error; }\n value = error;\n value.baseType = coder.name;\n value.name = coder.localName;\n value.type = coder.type;\n }\n\n } else {\n try {\n value = coder.decode(reader);\n } catch (error) {\n // Cannot recover from this\n if (error.code === Logger.errors.BUFFER_OVERRUN) { throw error; }\n value = error;\n value.baseType = coder.name;\n value.name = coder.localName;\n value.type = coder.type;\n }\n }\n\n if (value != undefined) {\n values.push(value);\n }\n });\n\n // We only output named properties for uniquely named coders\n const uniqueNames = coders.reduce((accum, coder) => {\n const name = coder.localName;\n if (name) {\n if (!accum[name]) { accum[name] = 0; }\n accum[name]++;\n }\n return accum;\n }, <{ [ name: string ]: number }>{ });\n\n // Add any named parameters (i.e. tuples)\n coders.forEach((coder: Coder, index: number) => {\n let name = coder.localName;\n if (!name || uniqueNames[name] !== 1) { return; }\n\n if (name === \"length\") { name = \"_length\"; }\n\n if (values[name] != null) { return; }\n\n const value = values[index];\n\n if (value instanceof Error) {\n Object.defineProperty(values, name, {\n enumerable: true,\n get: () => { throw value; }\n });\n } else {\n values[name] = value;\n }\n });\n\n for (let i = 0; i < values.length; i++) {\n const value = values[i];\n if (value instanceof Error) {\n Object.defineProperty(values, i, {\n enumerable: true,\n get: () => { throw value; }\n });\n }\n }\n\n return Object.freeze(values);\n}\n\n\nexport class ArrayCoder extends Coder {\n readonly coder: Coder;\n readonly length: number;\n\n constructor(coder: Coder, length: number, localName: string) {\n const type = (coder.type + \"[\" + (length >= 0 ? length: \"\") + \"]\");\n const dynamic = (length === -1 || coder.dynamic);\n super(\"array\", type, localName, dynamic);\n\n this.coder = coder;\n this.length = length;\n }\n\n defaultValue(): Array {\n // Verifies the child coder is valid (even if the array is dynamic or 0-length)\n const defaultChild = this.coder.defaultValue();\n\n const result: Array = [];\n for (let i = 0; i < this.length; i++) {\n result.push(defaultChild);\n }\n return result;\n }\n\n encode(writer: Writer, value: Array): number {\n if (!Array.isArray(value)) {\n this._throwError(\"expected array value\", value);\n }\n\n let count = this.length;\n\n if (count === -1) {\n count = value.length;\n writer.writeValue(value.length);\n }\n\n logger.checkArgumentCount(value.length, count, \"coder array\" + (this.localName? (\" \"+ this.localName): \"\"));\n\n let coders = [];\n for (let i = 0; i < value.length; i++) { coders.push(this.coder); }\n\n return pack(writer, coders, value);\n }\n\n decode(reader: Reader): any {\n let count = this.length;\n if (count === -1) {\n count = reader.readValue().toNumber();\n\n // Check that there is *roughly* enough data to ensure\n // stray random data is not being read as a length. Each\n // slot requires at least 32 bytes for their value (or 32\n // bytes as a link to the data). This could use a much\n // tighter bound, but we are erroring on the side of safety.\n if (count * 32 > reader._data.length) {\n logger.throwError(\"insufficient data length\", Logger.errors.BUFFER_OVERRUN, {\n length: reader._data.length,\n count: count\n });\n }\n }\n let coders = [];\n for (let i = 0; i < count; i++) { coders.push(new AnonymousCoder(this.coder)); }\n\n return reader.coerce(this.name, unpack(reader, coders));\n }\n}\n\n", "\"use strict\";\n\nimport { Coder, Reader, Writer } from \"./abstract-coder\";\n\nexport class BooleanCoder extends Coder {\n\n constructor(localName: string) {\n super(\"bool\", \"bool\", localName, false);\n }\n\n defaultValue(): boolean {\n return false;\n }\n\n encode(writer: Writer, value: boolean): number {\n return writer.writeValue(value ? 1: 0);\n }\n\n decode(reader: Reader): any {\n return reader.coerce(this.type, !reader.readValue().isZero());\n }\n}\n\n", "\"use strict\";\n\nimport { arrayify, hexlify } from \"@ethersproject/bytes\";\n\nimport { Coder, Reader, Writer } from \"./abstract-coder\";\n\nexport class DynamicBytesCoder extends Coder {\n constructor(type: string, localName: string) {\n super(type, type, localName, true);\n }\n\n defaultValue(): string {\n return \"0x\";\n }\n\n encode(writer: Writer, value: any): number {\n value = arrayify(value);\n let length = writer.writeValue(value.length);\n length += writer.writeBytes(value);\n return length;\n }\n\n decode(reader: Reader): any {\n return reader.readBytes(reader.readValue().toNumber(), true);\n }\n}\n\nexport class BytesCoder extends DynamicBytesCoder {\n constructor(localName: string) {\n super(\"bytes\", localName);\n }\n\n decode(reader: Reader): any {\n return reader.coerce(this.name, hexlify(super.decode(reader)));\n }\n}\n\n\n", "\"use strict\";\n\nimport { arrayify, BytesLike, hexlify } from \"@ethersproject/bytes\";\n\nimport { Coder, Reader, Writer } from \"./abstract-coder\";\n\n// @TODO: Merge this with bytes\nexport class FixedBytesCoder extends Coder {\n readonly size: number;\n\n constructor(size: number, localName: string) {\n let name = \"bytes\" + String(size);\n super(name, name, localName, false);\n this.size = size;\n }\n\n defaultValue(): string {\n return (\"0x0000000000000000000000000000000000000000000000000000000000000000\").substring(0, 2 + this.size * 2);\n }\n\n encode(writer: Writer, value: BytesLike): number {\n let data = arrayify(value);\n if (data.length !== this.size) { this._throwError(\"incorrect data length\", value); }\n return writer.writeBytes(data);\n }\n\n decode(reader: Reader): any {\n return reader.coerce(this.name, hexlify(reader.readBytes(this.size)));\n }\n}\n", "\"use strict\";\n\nimport { Coder, Reader, Writer } from \"./abstract-coder\";\n\nexport class NullCoder extends Coder {\n\n constructor(localName: string) {\n super(\"null\", \"\", localName, false);\n }\n\n defaultValue(): null {\n return null;\n }\n\n encode(writer: Writer, value: any): number {\n if (value != null) { this._throwError(\"not null\", value); }\n return writer.writeBytes([ ]);\n }\n\n decode(reader: Reader): any {\n reader.readBytes(0);\n return reader.coerce(this.name, null);\n }\n}\n", "export const AddressZero = \"0x0000000000000000000000000000000000000000\";\n\n", "import { BigNumber } from \"@ethersproject/bignumber\";\n\nconst NegativeOne: BigNumber = (/*#__PURE__*/BigNumber.from(-1));\nconst Zero: BigNumber = (/*#__PURE__*/BigNumber.from(0));\nconst One: BigNumber = (/*#__PURE__*/BigNumber.from(1));\nconst Two: BigNumber = (/*#__PURE__*/BigNumber.from(2));\nconst WeiPerEther: BigNumber = (/*#__PURE__*/BigNumber.from(\"1000000000000000000\"));\nconst MaxUint256: BigNumber = (/*#__PURE__*/BigNumber.from(\"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\"));\n\nconst MinInt256: BigNumber = (/*#__PURE__*/BigNumber.from(\"-0x8000000000000000000000000000000000000000000000000000000000000000\"));\nconst MaxInt256: BigNumber = (/*#__PURE__*/BigNumber.from(\"0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\"));\n\nexport {\n NegativeOne,\n Zero,\n One,\n Two,\n WeiPerEther,\n MaxUint256,\n MinInt256,\n MaxInt256,\n};\n", "export const HashZero = \"0x0000000000000000000000000000000000000000000000000000000000000000\";\n\n", "// NFKC (composed) // (decomposed)\nexport const EtherSymbol = \"\\u039e\"; // \"\\uD835\\uDF63\";\n", "\"use strict\";\n\nexport { AddressZero } from \"./addresses\";\nexport {\n NegativeOne,\n Zero,\n One,\n Two,\n WeiPerEther,\n MaxUint256,\n MinInt256,\n MaxInt256\n} from \"./bignumbers\";\nexport { HashZero } from \"./hashes\";\nexport { EtherSymbol } from \"./strings\";\n\n", "\"use strict\";\n\nimport { BigNumber, BigNumberish } from \"@ethersproject/bignumber\";\nimport { MaxUint256, NegativeOne, One, Zero } from \"@ethersproject/constants\";\n\nimport { Coder, Reader, Writer } from \"./abstract-coder\";\n\nexport class NumberCoder extends Coder {\n readonly size: number;\n readonly signed: boolean;\n\n constructor(size: number, signed: boolean, localName: string) {\n const name = ((signed ? \"int\": \"uint\") + (size * 8));\n super(name, name, localName, false);\n\n this.size = size;\n this.signed = signed;\n }\n\n defaultValue(): number {\n return 0;\n }\n\n encode(writer: Writer, value: BigNumberish): number {\n let v = BigNumber.from(value);\n\n // Check bounds are safe for encoding\n let maxUintValue = MaxUint256.mask(writer.wordSize * 8);\n if (this.signed) {\n let bounds = maxUintValue.mask(this.size * 8 - 1);\n if (v.gt(bounds) || v.lt(bounds.add(One).mul(NegativeOne))) {\n this._throwError(\"value out-of-bounds\", value);\n }\n } else if (v.lt(Zero) || v.gt(maxUintValue.mask(this.size * 8))) {\n this._throwError(\"value out-of-bounds\", value);\n }\n\n v = v.toTwos(this.size * 8).mask(this.size * 8);\n\n if (this.signed) {\n v = v.fromTwos(this.size * 8).toTwos(8 * writer.wordSize);\n }\n\n return writer.writeValue(v);\n }\n\n decode(reader: Reader): any {\n let value = reader.readValue().mask(this.size * 8);\n\n if (this.signed) {\n value = value.fromTwos(this.size * 8);\n }\n\n return reader.coerce(this.name, value);\n }\n}\n\n", "export const version = \"strings/5.7.0\";\n", "\"use strict\";\n\nimport { arrayify, BytesLike } from \"@ethersproject/bytes\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\n///////////////////////////////\n\nexport enum UnicodeNormalizationForm {\n current = \"\",\n NFC = \"NFC\",\n NFD = \"NFD\",\n NFKC = \"NFKC\",\n NFKD = \"NFKD\"\n};\n\nexport enum Utf8ErrorReason {\n // A continuation byte was present where there was nothing to continue\n // - offset = the index the codepoint began in\n UNEXPECTED_CONTINUE = \"unexpected continuation byte\",\n\n // An invalid (non-continuation) byte to start a UTF-8 codepoint was found\n // - offset = the index the codepoint began in\n BAD_PREFIX = \"bad codepoint prefix\",\n\n // The string is too short to process the expected codepoint\n // - offset = the index the codepoint began in\n OVERRUN = \"string overrun\",\n\n // A missing continuation byte was expected but not found\n // - offset = the index the continuation byte was expected at\n MISSING_CONTINUE = \"missing continuation byte\",\n\n // The computed code point is outside the range for UTF-8\n // - offset = start of this codepoint\n // - badCodepoint = the computed codepoint; outside the UTF-8 range\n OUT_OF_RANGE = \"out of UTF-8 range\",\n\n // UTF-8 strings may not contain UTF-16 surrogate pairs\n // - offset = start of this codepoint\n // - badCodepoint = the computed codepoint; inside the UTF-16 surrogate range\n UTF16_SURROGATE = \"UTF-16 surrogate\",\n\n // The string is an overlong representation\n // - offset = start of this codepoint\n // - badCodepoint = the computed codepoint; already bounds checked\n OVERLONG = \"overlong representation\",\n};\n\n\nexport type Utf8ErrorFunc = (reason: Utf8ErrorReason, offset: number, bytes: ArrayLike, output: Array, badCodepoint?: number) => number;\n\nfunction errorFunc(reason: Utf8ErrorReason, offset: number, bytes: ArrayLike, output: Array, badCodepoint?: number): number {\n return logger.throwArgumentError(`invalid codepoint at offset ${ offset }; ${ reason }`, \"bytes\", bytes);\n}\n\nfunction ignoreFunc(reason: Utf8ErrorReason, offset: number, bytes: ArrayLike, output: Array, badCodepoint?: number): number {\n\n // If there is an invalid prefix (including stray continuation), skip any additional continuation bytes\n if (reason === Utf8ErrorReason.BAD_PREFIX || reason === Utf8ErrorReason.UNEXPECTED_CONTINUE) {\n let i = 0;\n for (let o = offset + 1; o < bytes.length; o++) {\n if (bytes[o] >> 6 !== 0x02) { break; }\n i++;\n }\n return i;\n }\n\n // This byte runs us past the end of the string, so just jump to the end\n // (but the first byte was read already read and therefore skipped)\n if (reason === Utf8ErrorReason.OVERRUN) {\n return bytes.length - offset - 1;\n }\n\n // Nothing to skip\n return 0;\n}\n\nfunction replaceFunc(reason: Utf8ErrorReason, offset: number, bytes: ArrayLike, output: Array, badCodepoint?: number): number {\n\n // Overlong representations are otherwise \"valid\" code points; just non-deistingtished\n if (reason === Utf8ErrorReason.OVERLONG) {\n output.push(badCodepoint);\n return 0;\n }\n\n // Put the replacement character into the output\n output.push(0xfffd);\n\n // Otherwise, process as if ignoring errors\n return ignoreFunc(reason, offset, bytes, output, badCodepoint);\n}\n\n// Common error handing strategies\nexport const Utf8ErrorFuncs: { [ name: string ]: Utf8ErrorFunc } = Object.freeze({\n error: errorFunc,\n ignore: ignoreFunc,\n replace: replaceFunc\n});\n\n// http://stackoverflow.com/questions/13356493/decode-utf-8-with-javascript#13691499\nfunction getUtf8CodePoints(bytes: BytesLike, onError?: Utf8ErrorFunc): Array {\n if (onError == null) { onError = Utf8ErrorFuncs.error; }\n\n bytes = arrayify(bytes);\n\n const result: Array = [];\n let i = 0;\n\n // Invalid bytes are ignored\n while(i < bytes.length) {\n\n const c = bytes[i++];\n\n // 0xxx xxxx\n if (c >> 7 === 0) {\n result.push(c);\n continue;\n }\n\n // Multibyte; how many bytes left for this character?\n let extraLength = null;\n let overlongMask = null;\n\n // 110x xxxx 10xx xxxx\n if ((c & 0xe0) === 0xc0) {\n extraLength = 1;\n overlongMask = 0x7f;\n\n // 1110 xxxx 10xx xxxx 10xx xxxx\n } else if ((c & 0xf0) === 0xe0) {\n extraLength = 2;\n overlongMask = 0x7ff;\n\n // 1111 0xxx 10xx xxxx 10xx xxxx 10xx xxxx\n } else if ((c & 0xf8) === 0xf0) {\n extraLength = 3;\n overlongMask = 0xffff;\n\n } else {\n if ((c & 0xc0) === 0x80) {\n i += onError(Utf8ErrorReason.UNEXPECTED_CONTINUE, i - 1, bytes, result);\n } else {\n i += onError(Utf8ErrorReason.BAD_PREFIX, i - 1, bytes, result);\n }\n continue;\n }\n\n // Do we have enough bytes in our data?\n if (i - 1 + extraLength >= bytes.length) {\n i += onError(Utf8ErrorReason.OVERRUN, i - 1, bytes, result);\n continue;\n }\n\n // Remove the length prefix from the char\n let res = c & ((1 << (8 - extraLength - 1)) - 1);\n\n for (let j = 0; j < extraLength; j++) {\n let nextChar = bytes[i];\n\n // Invalid continuation byte\n if ((nextChar & 0xc0) != 0x80) {\n i += onError(Utf8ErrorReason.MISSING_CONTINUE, i, bytes, result);\n res = null;\n break;\n };\n\n res = (res << 6) | (nextChar & 0x3f);\n i++;\n }\n\n // See above loop for invalid continuation byte\n if (res === null) { continue; }\n\n // Maximum code point\n if (res > 0x10ffff) {\n i += onError(Utf8ErrorReason.OUT_OF_RANGE, i - 1 - extraLength, bytes, result, res);\n continue;\n }\n\n // Reserved for UTF-16 surrogate halves\n if (res >= 0xd800 && res <= 0xdfff) {\n i += onError(Utf8ErrorReason.UTF16_SURROGATE, i - 1 - extraLength, bytes, result, res);\n continue;\n }\n\n // Check for overlong sequences (more bytes than needed)\n if (res <= overlongMask) {\n i += onError(Utf8ErrorReason.OVERLONG, i - 1 - extraLength, bytes, result, res);\n continue;\n }\n\n result.push(res);\n }\n\n return result;\n}\n\n// http://stackoverflow.com/questions/18729405/how-to-convert-utf8-string-to-byte-array\nexport function toUtf8Bytes(str: string, form: UnicodeNormalizationForm = UnicodeNormalizationForm.current): Uint8Array {\n\n if (form != UnicodeNormalizationForm.current) {\n logger.checkNormalize();\n str = str.normalize(form);\n }\n\n let result = [];\n for (let i = 0; i < str.length; i++) {\n const c = str.charCodeAt(i);\n\n if (c < 0x80) {\n result.push(c);\n\n } else if (c < 0x800) {\n result.push((c >> 6) | 0xc0);\n result.push((c & 0x3f) | 0x80);\n\n } else if ((c & 0xfc00) == 0xd800) {\n i++;\n const c2 = str.charCodeAt(i);\n\n if (i >= str.length || (c2 & 0xfc00) !== 0xdc00) {\n throw new Error(\"invalid utf-8 string\");\n }\n\n // Surrogate Pair\n const pair = 0x10000 + ((c & 0x03ff) << 10) + (c2 & 0x03ff);\n result.push((pair >> 18) | 0xf0);\n result.push(((pair >> 12) & 0x3f) | 0x80);\n result.push(((pair >> 6) & 0x3f) | 0x80);\n result.push((pair & 0x3f) | 0x80);\n\n } else {\n result.push((c >> 12) | 0xe0);\n result.push(((c >> 6) & 0x3f) | 0x80);\n result.push((c & 0x3f) | 0x80);\n }\n }\n\n return arrayify(result);\n};\n\nfunction escapeChar(value: number) {\n const hex = (\"0000\" + value.toString(16));\n return \"\\\\u\" + hex.substring(hex.length - 4);\n}\n\nexport function _toEscapedUtf8String(bytes: BytesLike, onError?: Utf8ErrorFunc): string {\n return '\"' + getUtf8CodePoints(bytes, onError).map((codePoint) => {\n if (codePoint < 256) {\n switch (codePoint) {\n case 8: return \"\\\\b\";\n case 9: return \"\\\\t\";\n case 10: return \"\\\\n\"\n case 13: return \"\\\\r\";\n case 34: return \"\\\\\\\"\";\n case 92: return \"\\\\\\\\\";\n }\n\n if (codePoint >= 32 && codePoint < 127) {\n return String.fromCharCode(codePoint);\n }\n }\n\n if (codePoint <= 0xffff) {\n return escapeChar(codePoint);\n }\n\n codePoint -= 0x10000;\n return escapeChar(((codePoint >> 10) & 0x3ff) + 0xd800) + escapeChar((codePoint & 0x3ff) + 0xdc00);\n }).join(\"\") + '\"';\n}\n\nexport function _toUtf8String(codePoints: Array): string {\n return codePoints.map((codePoint) => {\n if (codePoint <= 0xffff) {\n return String.fromCharCode(codePoint);\n }\n codePoint -= 0x10000;\n return String.fromCharCode(\n (((codePoint >> 10) & 0x3ff) + 0xd800),\n ((codePoint & 0x3ff) + 0xdc00)\n );\n }).join(\"\");\n}\n\nexport function toUtf8String(bytes: BytesLike, onError?: Utf8ErrorFunc): string {\n return _toUtf8String(getUtf8CodePoints(bytes, onError));\n}\n\nexport function toUtf8CodePoints(str: string, form: UnicodeNormalizationForm = UnicodeNormalizationForm.current): Array {\n return getUtf8CodePoints(toUtf8Bytes(str, form));\n}\n", "\"use strict\";\n\nimport { HashZero } from \"@ethersproject/constants\";\nimport { arrayify, BytesLike, concat, hexlify } from \"@ethersproject/bytes\";\n\nimport { toUtf8Bytes, toUtf8String } from \"./utf8\";\n\n\nexport function formatBytes32String(text: string): string {\n\n // Get the bytes\n const bytes = toUtf8Bytes(text);\n\n // Check we have room for null-termination\n if (bytes.length > 31) { throw new Error(\"bytes32 string must be less than 32 bytes\"); }\n\n // Zero-pad (implicitly null-terminates)\n return hexlify(concat([ bytes, HashZero ]).slice(0, 32));\n}\n\nexport function parseBytes32String(bytes: BytesLike): string {\n const data = arrayify(bytes);\n\n // Must be 32 bytes with a null-termination\n if (data.length !== 32) { throw new Error(\"invalid bytes32 - not 32 bytes long\"); }\n if (data[31] !== 0) { throw new Error(\"invalid bytes32 string - no null terminator\"); }\n\n // Find the null termination\n let length = 31;\n while (data[length - 1] === 0) { length--; }\n\n // Determine the string value\n return toUtf8String(data.slice(0, length));\n}\n\n", "\"use strict\";\n\nimport { toUtf8CodePoints, _toUtf8String, UnicodeNormalizationForm } from \"./utf8\";\n\ntype Ranged = {\n l: number, // Lo value\n h: number, // High value (less the lo)\n d?: number, // Delta/stride (default: 1)\n s?: number, // Shift (default: 1)\n e?: Array // Exceptions to skip\n};\n\ntype Table = { [ src: number ]: Array };\n\nfunction bytes2(data: string): Array {\n if ((data.length % 4) !== 0) { throw new Error(\"bad data\"); }\n let result = [];\n for (let i = 0; i < data.length; i += 4) {\n result.push(parseInt(data.substring(i, i + 4), 16));\n }\n return result;\n}\n\nfunction createTable(data: string, func?: (value: string) => Array): Table {\n if (!func) {\n func = function(value: string) { return [ parseInt(value, 16) ]; }\n }\n\n let lo = 0;\n\n let result: Table = { };\n data.split(\",\").forEach((pair) => {\n let comps = pair.split(\":\");\n lo += parseInt(comps[0], 16);\n result[lo] = func(comps[1]);\n });\n\n return result;\n}\n\nfunction createRangeTable(data: string): Array {\n let hi = 0;\n return data.split(\",\").map((v) => {\n let comps = v.split(\"-\");\n if (comps.length === 1) {\n comps[1] = \"0\";\n } else if (comps[1] === \"\") {\n comps[1] = \"1\";\n }\n\n let lo = hi + parseInt(comps[0], 16);\n hi = parseInt(comps[1], 16);\n return { l: lo, h: hi };\n });\n}\n\nfunction matchMap(value: number, ranges: Array): Ranged {\n let lo = 0;\n for (let i = 0; i < ranges.length; i++) {\n let range = ranges[i];\n lo += range.l;\n if (value >= lo && value <= lo + range.h && ((value - lo) % (range.d || 1)) === 0) {\n if (range.e && range.e.indexOf(value - lo) !== -1) { continue; }\n return range;\n }\n }\n return null;\n}\n\nconst Table_A_1_ranges = createRangeTable(\"221,13-1b,5f-,40-10,51-f,11-3,3-3,2-2,2-4,8,2,15,2d,28-8,88,48,27-,3-5,11-20,27-,8,28,3-5,12,18,b-a,1c-4,6-16,2-d,2-2,2,1b-4,17-9,8f-,10,f,1f-2,1c-34,33-14e,4,36-,13-,6-2,1a-f,4,9-,3-,17,8,2-2,5-,2,8-,3-,4-8,2-3,3,6-,16-6,2-,7-3,3-,17,8,3,3,3-,2,6-3,3-,4-a,5,2-6,10-b,4,8,2,4,17,8,3,6-,b,4,4-,2-e,2-4,b-10,4,9-,3-,17,8,3-,5-,9-2,3-,4-7,3-3,3,4-3,c-10,3,7-2,4,5-2,3,2,3-2,3-2,4-2,9,4-3,6-2,4,5-8,2-e,d-d,4,9,4,18,b,6-3,8,4,5-6,3-8,3-3,b-11,3,9,4,18,b,6-3,8,4,5-6,3-6,2,3-3,b-11,3,9,4,18,11-3,7-,4,5-8,2-7,3-3,b-11,3,13-2,19,a,2-,8-2,2-3,7,2,9-11,4-b,3b-3,1e-24,3,2-,3,2-,2-5,5,8,4,2,2-,3,e,4-,6,2,7-,b-,3-21,49,23-5,1c-3,9,25,10-,2-2f,23,6,3,8-2,5-5,1b-45,27-9,2a-,2-3,5b-4,45-4,53-5,8,40,2,5-,8,2,5-,28,2,5-,20,2,5-,8,2,5-,8,8,18,20,2,5-,8,28,14-5,1d-22,56-b,277-8,1e-2,52-e,e,8-a,18-8,15-b,e,4,3-b,5e-2,b-15,10,b-5,59-7,2b-555,9d-3,5b-5,17-,7-,27-,7-,9,2,2,2,20-,36,10,f-,7,14-,4,a,54-3,2-6,6-5,9-,1c-10,13-1d,1c-14,3c-,10-6,32-b,240-30,28-18,c-14,a0,115-,3,66-,b-76,5,5-,1d,24,2,5-2,2,8-,35-2,19,f-10,1d-3,311-37f,1b,5a-b,d7-19,d-3,41,57-,68-4,29-3,5f,29-37,2e-2,25-c,2c-2,4e-3,30,78-3,64-,20,19b7-49,51a7-59,48e-2,38-738,2ba5-5b,222f-,3c-94,8-b,6-4,1b,6,2,3,3,6d-20,16e-f,41-,37-7,2e-2,11-f,5-b,18-,b,14,5-3,6,88-,2,bf-2,7-,7-,7-,4-2,8,8-9,8-2ff,20,5-b,1c-b4,27-,27-cbb1,f7-9,28-2,b5-221,56,48,3-,2-,3-,5,d,2,5,3,42,5-,9,8,1d,5,6,2-2,8,153-3,123-3,33-27fd,a6da-5128,21f-5df,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3,2-1d,61-ff7d\");\n\n// @TODO: Make this relative...\nconst Table_B_1_flags = \"ad,34f,1806,180b,180c,180d,200b,200c,200d,2060,feff\".split(\",\").map((v) => parseInt(v, 16));\n\nconst Table_B_2_ranges: Array = [\n { h: 25, s: 32, l: 65 },\n { h: 30, s: 32, e: [ 23 ], l: 127 },\n { h: 54, s: 1, e: [ 48 ], l: 64, d: 2 },\n { h: 14, s: 1, l: 57, d: 2 },\n { h: 44, s: 1, l: 17, d: 2 },\n { h: 10, s: 1, e: [ 2, 6, 8 ], l: 61, d: 2 },\n { h: 16, s: 1, l: 68, d: 2 },\n { h: 84, s: 1, e: [ 18, 24, 66 ], l: 19, d: 2 },\n { h: 26, s: 32, e: [ 17 ], l: 435 },\n { h: 22, s: 1, l: 71, d: 2 },\n { h: 15, s: 80, l: 40 },\n { h: 31, s: 32, l: 16 },\n { h: 32, s: 1, l: 80, d: 2 },\n { h: 52, s: 1, l: 42, d: 2 },\n { h: 12, s: 1, l: 55, d: 2 },\n { h: 40, s: 1, e: [ 38 ], l: 15, d: 2 },\n { h: 14, s: 1, l: 48, d: 2 },\n { h: 37, s: 48, l: 49 },\n { h: 148, s: 1, l: 6351, d: 2 },\n { h: 88, s: 1, l: 160, d: 2 },\n { h: 15, s: 16, l: 704 },\n { h: 25, s: 26, l: 854 },\n { h: 25, s: 32, l: 55915 },\n { h: 37, s: 40, l: 1247 },\n { h: 25, s: -119711, l: 53248 },\n { h: 25, s: -119763, l: 52 },\n { h: 25, s: -119815, l: 52 },\n { h: 25, s: -119867, e: [ 1, 4, 5, 7, 8, 11, 12, 17 ], l: 52 },\n { h: 25, s: -119919, l: 52 },\n { h: 24, s: -119971, e: [ 2, 7, 8, 17 ], l: 52 },\n { h: 24, s: -120023, e: [ 2, 7, 13, 15, 16, 17 ], l: 52 },\n { h: 25, s: -120075, l: 52 },\n { h: 25, s: -120127, l: 52 },\n { h: 25, s: -120179, l: 52 },\n { h: 25, s: -120231, l: 52 },\n { h: 25, s: -120283, l: 52 },\n { h: 25, s: -120335, l: 52 },\n { h: 24, s: -119543, e: [ 17 ], l: 56 },\n { h: 24, s: -119601, e: [ 17 ], l: 58 },\n { h: 24, s: -119659, e: [ 17 ], l: 58 },\n { h: 24, s: -119717, e: [ 17 ], l: 58 },\n { h: 24, s: -119775, e: [ 17 ], l: 58 }\n];\nconst Table_B_2_lut_abs = createTable(\"b5:3bc,c3:ff,7:73,2:253,5:254,3:256,1:257,5:259,1:25b,3:260,1:263,2:269,1:268,5:26f,1:272,2:275,7:280,3:283,5:288,3:28a,1:28b,5:292,3f:195,1:1bf,29:19e,125:3b9,8b:3b2,1:3b8,1:3c5,3:3c6,1:3c0,1a:3ba,1:3c1,1:3c3,2:3b8,1:3b5,1bc9:3b9,1c:1f76,1:1f77,f:1f7a,1:1f7b,d:1f78,1:1f79,1:1f7c,1:1f7d,107:63,5:25b,4:68,1:68,1:68,3:69,1:69,1:6c,3:6e,4:70,1:71,1:72,1:72,1:72,7:7a,2:3c9,2:7a,2:6b,1:e5,1:62,1:63,3:65,1:66,2:6d,b:3b3,1:3c0,6:64,1b574:3b8,1a:3c3,20:3b8,1a:3c3,20:3b8,1a:3c3,20:3b8,1a:3c3,20:3b8,1a:3c3\");\nconst Table_B_2_lut_rel = createTable(\"179:1,2:1,2:1,5:1,2:1,a:4f,a:1,8:1,2:1,2:1,3:1,5:1,3:1,4:1,2:1,3:1,4:1,8:2,1:1,2:2,1:1,2:2,27:2,195:26,2:25,1:25,1:25,2:40,2:3f,1:3f,33:1,11:-6,1:-9,1ac7:-3a,6d:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,b:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,c:-8,2:-8,2:-8,2:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,49:-8,1:-8,1:-4a,1:-4a,d:-56,1:-56,1:-56,1:-56,d:-8,1:-8,f:-8,1:-8,3:-7\");\nconst Table_B_2_complex = createTable(\"df:00730073,51:00690307,19:02BC006E,a7:006A030C,18a:002003B9,16:03B903080301,20:03C503080301,1d7:05650582,190f:00680331,1:00740308,1:0077030A,1:0079030A,1:006102BE,b6:03C50313,2:03C503130300,2:03C503130301,2:03C503130342,2a:1F0003B9,1:1F0103B9,1:1F0203B9,1:1F0303B9,1:1F0403B9,1:1F0503B9,1:1F0603B9,1:1F0703B9,1:1F0003B9,1:1F0103B9,1:1F0203B9,1:1F0303B9,1:1F0403B9,1:1F0503B9,1:1F0603B9,1:1F0703B9,1:1F2003B9,1:1F2103B9,1:1F2203B9,1:1F2303B9,1:1F2403B9,1:1F2503B9,1:1F2603B9,1:1F2703B9,1:1F2003B9,1:1F2103B9,1:1F2203B9,1:1F2303B9,1:1F2403B9,1:1F2503B9,1:1F2603B9,1:1F2703B9,1:1F6003B9,1:1F6103B9,1:1F6203B9,1:1F6303B9,1:1F6403B9,1:1F6503B9,1:1F6603B9,1:1F6703B9,1:1F6003B9,1:1F6103B9,1:1F6203B9,1:1F6303B9,1:1F6403B9,1:1F6503B9,1:1F6603B9,1:1F6703B9,3:1F7003B9,1:03B103B9,1:03AC03B9,2:03B10342,1:03B1034203B9,5:03B103B9,6:1F7403B9,1:03B703B9,1:03AE03B9,2:03B70342,1:03B7034203B9,5:03B703B9,6:03B903080300,1:03B903080301,3:03B90342,1:03B903080342,b:03C503080300,1:03C503080301,1:03C10313,2:03C50342,1:03C503080342,b:1F7C03B9,1:03C903B9,1:03CE03B9,2:03C90342,1:03C9034203B9,5:03C903B9,ac:00720073,5b:00B00063,6:00B00066,d:006E006F,a:0073006D,1:00740065006C,1:0074006D,124f:006800700061,2:00610075,2:006F0076,b:00700061,1:006E0061,1:03BC0061,1:006D0061,1:006B0061,1:006B0062,1:006D0062,1:00670062,3:00700066,1:006E0066,1:03BC0066,4:0068007A,1:006B0068007A,1:006D0068007A,1:00670068007A,1:00740068007A,15:00700061,1:006B00700061,1:006D00700061,1:006700700061,8:00700076,1:006E0076,1:03BC0076,1:006D0076,1:006B0076,1:006D0076,1:00700077,1:006E0077,1:03BC0077,1:006D0077,1:006B0077,1:006D0077,1:006B03C9,1:006D03C9,2:00620071,3:00632215006B0067,1:0063006F002E,1:00640062,1:00670079,2:00680070,2:006B006B,1:006B006D,9:00700068,2:00700070006D,1:00700072,2:00730076,1:00770062,c723:00660066,1:00660069,1:0066006C,1:006600660069,1:00660066006C,1:00730074,1:00730074,d:05740576,1:05740565,1:0574056B,1:057E0576,1:0574056D\", bytes2);\n\nconst Table_C_ranges = createRangeTable(\"80-20,2a0-,39c,32,f71,18e,7f2-f,19-7,30-4,7-5,f81-b,5,a800-20ff,4d1-1f,110,fa-6,d174-7,2e84-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,2,1f-5f,ff7f-20001\");\n\n\nfunction flatten(values: Array>): Array {\n return values.reduce((accum, value) => {\n value.forEach((value) => { accum.push(value); });\n return accum;\n }, [ ]);\n}\n\nexport function _nameprepTableA1(codepoint: number): boolean {\n return !!matchMap(codepoint, Table_A_1_ranges);\n}\n\nexport function _nameprepTableB2(codepoint: number): Array {\n let range = matchMap(codepoint, Table_B_2_ranges);\n if (range) { return [ codepoint + range.s ]; }\n\n let codes = Table_B_2_lut_abs[codepoint];\n if (codes) { return codes; }\n\n let shift = Table_B_2_lut_rel[codepoint];\n if (shift) { return [ codepoint + shift[0] ]; }\n\n let complex = Table_B_2_complex[codepoint];\n if (complex) { return complex; }\n\n return null;\n}\n\nexport function _nameprepTableC(codepoint: number): boolean {\n return !!matchMap(codepoint, Table_C_ranges);\n}\n\nexport function nameprep(value: string): string {\n\n // This allows platforms with incomplete normalize to bypass\n // it for very basic names which the built-in toLowerCase\n // will certainly handle correctly\n if (value.match(/^[a-z0-9-]*$/i) && value.length <= 59) { return value.toLowerCase(); }\n\n // Get the code points (keeping the current normalization)\n let codes = toUtf8CodePoints(value);\n\n codes = flatten(codes.map((code) => {\n // Substitute Table B.1 (Maps to Nothing)\n if (Table_B_1_flags.indexOf(code) >= 0) { return [ ]; }\n if (code >= 0xfe00 && code <= 0xfe0f) { return [ ]; }\n\n // Substitute Table B.2 (Case Folding)\n let codesTableB2 = _nameprepTableB2(code);\n if (codesTableB2) { return codesTableB2; }\n\n // No Substitution\n return [ code ];\n }));\n\n // Normalize using form KC\n codes = toUtf8CodePoints(_toUtf8String(codes), UnicodeNormalizationForm.NFKC);\n\n // Prohibit Tables C.1.2, C.2.2, C.3, C.4, C.5, C.6, C.7, C.8, C.9\n codes.forEach((code) => {\n if (_nameprepTableC(code)) {\n throw new Error(\"STRINGPREP_CONTAINS_PROHIBITED\");\n }\n });\n\n // Prohibit Unassigned Code Points (Table A.1)\n codes.forEach((code) => {\n if (_nameprepTableA1(code)) {\n throw new Error(\"STRINGPREP_CONTAINS_UNASSIGNED\");\n }\n });\n\n // IDNA extras\n let name = _toUtf8String(codes);\n\n // IDNA: 4.2.3.1\n if (name.substring(0, 1) === \"-\" || name.substring(2, 4) === \"--\" || name.substring(name.length - 1) === \"-\") {\n throw new Error(\"invalid hyphen\");\n }\n\n return name;\n}\n\n", "\"use strict\";\n\nimport { formatBytes32String, parseBytes32String } from \"./bytes32\";\nimport { nameprep } from \"./idna\";\nimport { _toEscapedUtf8String, toUtf8Bytes, toUtf8CodePoints, toUtf8String, UnicodeNormalizationForm, Utf8ErrorFunc, Utf8ErrorFuncs, Utf8ErrorReason } from \"./utf8\";\n\nexport {\n _toEscapedUtf8String,\n toUtf8Bytes,\n toUtf8CodePoints,\n toUtf8String,\n\n Utf8ErrorFunc,\n Utf8ErrorFuncs,\n Utf8ErrorReason,\n\n UnicodeNormalizationForm,\n\n formatBytes32String,\n parseBytes32String,\n\n nameprep\n}\n", "\"use strict\";\n\nimport { toUtf8Bytes, toUtf8String } from \"@ethersproject/strings\";\n\nimport { Reader, Writer } from \"./abstract-coder\";\nimport { DynamicBytesCoder } from \"./bytes\";\n\nexport class StringCoder extends DynamicBytesCoder {\n\n constructor(localName: string) {\n super(\"string\", localName);\n }\n\n defaultValue(): string {\n return \"\";\n }\n\n encode(writer: Writer, value: any): number {\n return super.encode(writer, toUtf8Bytes(value));\n }\n\n decode(reader: Reader): any {\n return toUtf8String(super.decode(reader));\n }\n}\n", "\"use strict\";\n\nimport { Coder, Reader, Writer } from \"./abstract-coder\";\nimport { pack, unpack } from \"./array\";\n\nexport class TupleCoder extends Coder {\n readonly coders: Array;\n\n constructor(coders: Array, localName: string) {\n let dynamic = false;\n const types: Array = [];\n coders.forEach((coder) => {\n if (coder.dynamic) { dynamic = true; }\n types.push(coder.type);\n });\n const type = (\"tuple(\" + types.join(\",\") + \")\");\n\n super(\"tuple\", type, localName, dynamic);\n this.coders = coders;\n }\n\n defaultValue(): any {\n const values: any = [ ];\n this.coders.forEach((coder) => {\n values.push(coder.defaultValue());\n });\n\n // We only output named properties for uniquely named coders\n const uniqueNames = this.coders.reduce((accum, coder) => {\n const name = coder.localName;\n if (name) {\n if (!accum[name]) { accum[name] = 0; }\n accum[name]++;\n }\n return accum;\n }, <{ [ name: string ]: number }>{ });\n\n // Add named values\n this.coders.forEach((coder: Coder, index: number) => {\n let name = coder.localName;\n if (!name || uniqueNames[name] !== 1) { return; }\n\n if (name === \"length\") { name = \"_length\"; }\n\n if (values[name] != null) { return; }\n\n values[name] = values[index];\n });\n\n return Object.freeze(values);\n }\n\n encode(writer: Writer, value: Array | { [ name: string ]: any }): number {\n return pack(writer, this.coders, value);\n }\n\n decode(reader: Reader): any {\n return reader.coerce(this.name, unpack(reader, this.coders));\n }\n}\n\n", "\"use strict\";\n\n// See: https://github.com/ethereum/wiki/wiki/Ethereum-Contract-ABI\n\nimport { arrayify, BytesLike } from \"@ethersproject/bytes\";\nimport { defineReadOnly } from \"@ethersproject/properties\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nimport { Coder, Reader, Result, Writer } from \"./coders/abstract-coder\";\nimport { AddressCoder } from \"./coders/address\";\nimport { ArrayCoder } from \"./coders/array\";\nimport { BooleanCoder } from \"./coders/boolean\";\nimport { BytesCoder } from \"./coders/bytes\";\nimport { FixedBytesCoder } from \"./coders/fixed-bytes\";\nimport { NullCoder } from \"./coders/null\";\nimport { NumberCoder } from \"./coders/number\";\nimport { StringCoder } from \"./coders/string\";\nimport { TupleCoder } from \"./coders/tuple\";\n\nimport { ParamType } from \"./fragments\";\n\n\nconst paramTypeBytes = new RegExp(/^bytes([0-9]*)$/);\nconst paramTypeNumber = new RegExp(/^(u?int)([0-9]*)$/);\n\n\nexport type CoerceFunc = (type: string, value: any) => any;\n\nexport class AbiCoder {\n readonly coerceFunc: CoerceFunc;\n\n constructor(coerceFunc?: CoerceFunc) {\n defineReadOnly(this, \"coerceFunc\", coerceFunc || null);\n }\n\n _getCoder(param: ParamType): Coder {\n\n switch (param.baseType) {\n case \"address\":\n return new AddressCoder(param.name);\n case \"bool\":\n return new BooleanCoder(param.name);\n case \"string\":\n return new StringCoder(param.name);\n case \"bytes\":\n return new BytesCoder(param.name);\n case \"array\":\n return new ArrayCoder(this._getCoder(param.arrayChildren), param.arrayLength, param.name);\n case \"tuple\":\n return new TupleCoder((param.components || []).map((component) => {\n return this._getCoder(component);\n }), param.name);\n case \"\":\n return new NullCoder(param.name);\n }\n\n // u?int[0-9]*\n let match = param.type.match(paramTypeNumber);\n if (match) {\n let size = parseInt(match[2] || \"256\");\n if (size === 0 || size > 256 || (size % 8) !== 0) {\n logger.throwArgumentError(\"invalid \" + match[1] + \" bit length\", \"param\", param);\n }\n return new NumberCoder(size / 8, (match[1] === \"int\"), param.name);\n }\n\n // bytes[0-9]+\n match = param.type.match(paramTypeBytes);\n if (match) {\n let size = parseInt(match[1]);\n if (size === 0 || size > 32) {\n logger.throwArgumentError(\"invalid bytes length\", \"param\", param);\n }\n return new FixedBytesCoder(size, param.name);\n }\n\n return logger.throwArgumentError(\"invalid type\", \"type\", param.type);\n }\n\n _getWordSize(): number { return 32; }\n\n _getReader(data: Uint8Array, allowLoose?: boolean): Reader {\n return new Reader(data, this._getWordSize(), this.coerceFunc, allowLoose);\n }\n\n _getWriter(): Writer {\n return new Writer(this._getWordSize());\n }\n\n getDefaultValue(types: ReadonlyArray): Result {\n const coders: Array = types.map((type) => this._getCoder(ParamType.from(type)));\n const coder = new TupleCoder(coders, \"_\");\n return coder.defaultValue();\n }\n\n encode(types: ReadonlyArray, values: ReadonlyArray): string {\n if (types.length !== values.length) {\n logger.throwError(\"types/values length mismatch\", Logger.errors.INVALID_ARGUMENT, {\n count: { types: types.length, values: values.length },\n value: { types: types, values: values }\n });\n }\n\n const coders = types.map((type) => this._getCoder(ParamType.from(type)));\n const coder = (new TupleCoder(coders, \"_\"));\n\n const writer = this._getWriter();\n coder.encode(writer, values);\n return writer.data;\n }\n\n decode(types: ReadonlyArray, data: BytesLike, loose?: boolean): Result {\n const coders: Array = types.map((type) => this._getCoder(ParamType.from(type)));\n const coder = new TupleCoder(coders, \"_\");\n return coder.decode(this._getReader(arrayify(data), loose));\n }\n}\n\nexport const defaultAbiCoder: AbiCoder = new AbiCoder();\n\n", "import { keccak256 } from \"@ethersproject/keccak256\";\nimport { toUtf8Bytes } from \"@ethersproject/strings\";\n\nexport function id(text: string): string {\n return keccak256(toUtf8Bytes(text));\n}\n", "export const version = \"hash/5.7.0\";\n", "\"use strict\";\n\nimport { arrayify, BytesLike } from \"@ethersproject/bytes\";\n\n\nexport function decode(textData: string): Uint8Array {\n return arrayify(new Uint8Array(Buffer.from(textData, \"base64\")));\n};\n\nexport function encode(data: BytesLike): string {\n return Buffer.from(arrayify(data)).toString(\"base64\");\n}\n", "\"use strict\";\n\nexport { decode, encode } from \"./base64\";\n", "/**\n * MIT License\n *\n * Copyright (c) 2021 Andrew Raffensperger\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n *\n * This is a near carbon-copy of the original source (link below) with the\n * TypeScript typings added and a few tweaks to make it ES3-compatible.\n *\n * See: https://github.com/adraffy/ens-normalize.js\n */\n\nexport type Numbers = Uint8Array | Array;\nexport type NextFunc = (...args: Array) => number;\n\n// https://github.com/behnammodi/polyfill/blob/master/array.polyfill.js\nfunction flat(array: Array, depth?: number): Array {\n if (depth == null) { depth = 1; }\n const result: Array = [];\n\n const forEach = result.forEach;\n\n const flatDeep = function (arr: Array, depth: number) {\n forEach.call(arr, function (val: any) {\n if (depth > 0 && Array.isArray(val)) {\n flatDeep(val, depth - 1);\n } else {\n result.push(val);\n }\n });\n };\n\n flatDeep(array, depth);\n return result;\n}\n\nfunction fromEntries(array: Array<[T, U]>): Record {\n const result: Record = >{ };\n for (let i = 0; i < array.length; i++) {\n const value = array[i];\n result[value[0]] = value[1];\n }\n return result;\n}\n\nexport function decode_arithmetic(bytes: Numbers): Array {\n\tlet pos = 0;\n\tfunction u16() { return (bytes[pos++] << 8) | bytes[pos++]; }\n\t\n\t// decode the frequency table\n\tlet symbol_count = u16();\n\tlet total = 1;\n\tlet acc = [0, 1]; // first symbol has frequency 1\n\tfor (let i = 1; i < symbol_count; i++) {\n\t\tacc.push(total += u16());\n\t}\n\n\t// skip the sized-payload that the last 3 symbols index into\n\tlet skip = u16();\n\tlet pos_payload = pos;\n\tpos += skip;\n\n\tlet read_width = 0;\n\tlet read_buffer = 0; \n\tfunction read_bit() {\n\t\tif (read_width == 0) {\n\t\t\t// this will read beyond end of buffer\n\t\t\t// but (undefined|0) => zero pad\n\t\t\tread_buffer = (read_buffer << 8) | bytes[pos++];\n\t\t\tread_width = 8;\n\t\t}\n\t\treturn (read_buffer >> --read_width) & 1;\n\t}\n\n\tconst N = 31;\n\tconst FULL = 2**N;\n\tconst HALF = FULL >>> 1;\n\tconst QRTR = HALF >> 1;\n\tconst MASK = FULL - 1;\n\n\t// fill register\n\tlet register = 0;\n\tfor (let i = 0; i < N; i++) register = (register << 1) | read_bit();\n\n\tlet symbols = [];\n\tlet low = 0;\n\tlet range = FULL; // treat like a float\n\twhile (true) {\n\t\tlet value = Math.floor((((register - low + 1) * total) - 1) / range);\n\t\tlet start = 0;\n\t\tlet end = symbol_count;\n\t\twhile (end - start > 1) { // binary search\n\t\t\tlet mid = (start + end) >>> 1;\n\t\t\tif (value < acc[mid]) {\n\t\t\t\tend = mid;\n\t\t\t} else {\n\t\t\t\tstart = mid;\n\t\t\t}\n\t\t}\n\t\tif (start == 0) break; // first symbol is end mark\n\t\tsymbols.push(start);\n\t\tlet a = low + Math.floor(range * acc[start] / total);\n\t\tlet b = low + Math.floor(range * acc[start+1] / total) - 1\n\t\twhile (((a ^ b) & HALF) == 0) {\n\t\t\tregister = (register << 1) & MASK | read_bit();\n\t\t\ta = (a << 1) & MASK;\n\t\t\tb = (b << 1) & MASK | 1;\n\t\t}\n\t\twhile (a & ~b & QRTR) {\n\t\t\tregister = (register & HALF) | ((register << 1) & (MASK >>> 1)) | read_bit();\n\t\t\ta = (a << 1) ^ HALF;\n\t\t\tb = ((b ^ HALF) << 1) | HALF | 1;\n\t\t}\n\t\tlow = a;\n\t\trange = 1 + b - a;\n\t}\n\tlet offset = symbol_count - 4;\n\treturn symbols.map(x => { // index into payload\n\t\tswitch (x - offset) {\n\t\t\tcase 3: return offset + 0x10100 + ((bytes[pos_payload++] << 16) | (bytes[pos_payload++] << 8) | bytes[pos_payload++]);\n\t\t\tcase 2: return offset + 0x100 + ((bytes[pos_payload++] << 8) | bytes[pos_payload++]);\n\t\t\tcase 1: return offset + bytes[pos_payload++];\n\t\t\tdefault: return x - 1;\n\t\t}\n\t});\n}\t\n\n\n// returns an iterator which returns the next symbol\nexport function read_payload(v: Numbers): NextFunc {\n\tlet pos = 0;\n\treturn () => v[pos++];\n}\nexport function read_compressed_payload(bytes: Numbers): NextFunc {\n\treturn read_payload(decode_arithmetic(bytes));\n}\n\n// eg. [0,1,2,3...] => [0,-1,1,-2,...]\nexport function signed(i: number): number { \n\treturn (i & 1) ? (~i >> 1) : (i >> 1);\n}\n\nfunction read_counts(n: number, next: NextFunc): Array {\n\tlet v = Array(n);\n\tfor (let i = 0; i < n; i++) v[i] = 1 + next();\n\treturn v;\n}\n\nfunction read_ascending(n: number, next: NextFunc): Array {\n\tlet v = Array(n);\n\tfor (let i = 0, x = -1; i < n; i++) v[i] = x += 1 + next();\n\treturn v;\n}\n\nfunction read_deltas(n: number, next: NextFunc): Array {\n\tlet v = Array(n);\n\tfor (let i = 0, x = 0; i < n; i++) v[i] = x += signed(next());\n\treturn v;\n}\n\nexport function read_member_array(next: NextFunc, lookup?: Record) {\n let v = read_ascending(next(), next);\n let n = next();\n let vX = read_ascending(n, next);\n let vN = read_counts(n, next);\n for (let i = 0; i < n; i++) {\n for (let j = 0; j < vN[i]; j++) {\n v.push(vX[i] + j);\n }\n }\n return lookup ? v.map(x => lookup[x]) : v;\n}\n\n// returns array of \n// [x, ys] => single replacement rule\n// [x, ys, n, dx, dx] => linear map\nexport function read_mapped_map(next: NextFunc): Record> {\n\tlet ret = [];\n\twhile (true) {\n\t\tlet w = next();\n\t\tif (w == 0) break;\n\t\tret.push(read_linear_table(w, next));\n\t}\n\twhile (true) {\n\t\tlet w = next() - 1;\n\t\tif (w < 0) break;\n\t\tret.push(read_replacement_table(w, next));\n\t}\n\treturn fromEntries>(flat(ret));\n}\n\nexport function read_zero_terminated_array(next: NextFunc): Array {\n\tlet v = [];\n\twhile (true) {\n\t\tlet i = next();\n\t\tif (i == 0) break;\n\t\tv.push(i);\n\t}\n\treturn v;\n}\n\nfunction read_transposed(n: number, w: number, next: NextFunc): Array> {\n let m = Array(n).fill(undefined).map(() => []);\n for (let i = 0; i < w; i++) {\n read_deltas(n, next).forEach((x, j) => m[j].push(x));\n }\n return m;\n}\n\n\nfunction read_linear_table(w: number, next: NextFunc): Array>> {\n\tlet dx = 1 + next();\n\tlet dy = next();\n\tlet vN = read_zero_terminated_array(next);\n\tlet m = read_transposed(vN.length, 1+w, next);\n\treturn flat(m.map((v, i) => {\n\t const x = v[0], ys = v.slice(1);\n\t\t//let [x, ...ys] = v;\n\t\t//return Array(vN[i]).fill().map((_, j) => {\n\t\treturn Array(vN[i]).fill(undefined).map((_, j) => {\n\t\t\tlet j_dy = j * dy;\n\t\t\treturn [x + j * dx, ys.map(y => y + j_dy)];\n\t\t});\n\t}));\n}\n\nfunction read_replacement_table(w: number, next: NextFunc): Array<[ number, Array ]> {\n\tlet n = 1 + next();\n\tlet m = read_transposed(n, 1+w, next);\n\treturn m.map(v => [v[0], v.slice(1)]);\n}\n\nexport type Branch = {\n set: Set;\n node: Node;\n};\n\nexport type Node = {\n branches: Array;\n valid: number;\n fe0f: boolean;\n save: boolean;\n check: boolean;\n};\n\nexport function read_emoji_trie(next: NextFunc): Node {\n\tlet sorted = read_member_array(next).sort((a, b) => a - b);\n\treturn read();\n\tfunction read(): Node {\n\t\tlet branches = [];\n\t\twhile (true) {\n\t\t\tlet keys = read_member_array(next, sorted);\n\t\t\tif (keys.length == 0) break;\n\t\t\tbranches.push({set: new Set(keys), node: read()});\n\t\t}\n branches.sort((a, b) => b.set.size - a.set.size); // sort by likelihood\n \t\tlet temp = next();\n \t\tlet valid = temp % 3;\n \t\ttemp = (temp / 3)|0;\n \t\tlet fe0f = !!(temp & 1);\n \t\ttemp >>= 1;\n \t\tlet save = temp == 1;\n \t\tlet check = temp == 2;\n \t\treturn {branches, valid, fe0f, save, check};\n\t}\n}\n", "/**\n * MIT License\n *\n * Copyright (c) 2021 Andrew Raffensperger\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n *\n * This is a near carbon-copy of the original source (link below) with the\n * TypeScript typings added and a few tweaks to make it ES3-compatible.\n *\n * See: https://github.com/adraffy/ens-normalize.js\n */\n\nimport { decode } from \"@ethersproject/base64\";\n\nimport {read_compressed_payload} from './decoder.js';\n\nexport function getData(): () => number {\n return read_compressed_payload(decode('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'));\n}\n\n", "/**\n * MIT License\n *\n * Copyright (c) 2021 Andrew Raffensperger\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n *\n * This is a near carbon-copy of the original source (link below) with the\n * TypeScript typings added and a few tweaks to make it ES3-compatible.\n *\n * See: https://github.com/adraffy/ens-normalize.js\n */\n\nimport { toUtf8CodePoints } from \"@ethersproject/strings\";\n\nimport { getData } from './include.js';\nconst r = getData();\n\nimport {read_member_array, read_mapped_map, read_emoji_trie} from './decoder.js';\n\n// @TODO: This should be lazily loaded\n\nconst VALID = new Set(read_member_array(r));\nconst IGNORED = new Set(read_member_array(r));\nconst MAPPED = read_mapped_map(r);\nconst EMOJI_ROOT = read_emoji_trie(r);\n//const NFC_CHECK = new Set(read_member_array(r, Array.from(VALID.values()).sort((a, b) => a - b)));\n\n//const STOP = 0x2E;\nconst HYPHEN = 0x2D;\nconst UNDERSCORE = 0x5F;\n\nfunction explode_cp(name: string): Array {\n return toUtf8CodePoints(name);\n}\n\nfunction filter_fe0f(cps: Array): Array {\n return cps.filter(cp => cp != 0xFE0F);\n}\n\nexport function ens_normalize_post_check(name: string): string {\n\tfor (let label of name.split('.')) {\n\t\tlet cps = explode_cp(label);\n\t\ttry {\n\t\t\tfor (let i = cps.lastIndexOf(UNDERSCORE) - 1; i >= 0; i--) {\n\t\t\t\tif (cps[i] !== UNDERSCORE) {\n\t\t\t\t\tthrow new Error(`underscore only allowed at start`);\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (cps.length >= 4 && cps.every(cp => cp < 0x80) && cps[2] === HYPHEN && cps[3] === HYPHEN) {\n\t\t\t\tthrow new Error(`invalid label extension`);\n\t\t\t}\n\t\t} catch (err) {\n\t\t\tthrow new Error(`Invalid label \"${label}\": ${err.message}`);\n\t\t}\n\t}\n\treturn name;\n}\n\nexport function ens_normalize(name: string): string {\n\treturn ens_normalize_post_check(normalize(name, filter_fe0f));\n}\n\nfunction normalize(name: string, emoji_filter: (a: Array) => Array): string {\n\tlet input = explode_cp(name).reverse(); // flip for pop\n\tlet output = [];\n\twhile (input.length) {\t\t\n\t\tlet emoji = consume_emoji_reversed(input);\n\t\tif (emoji) {\n\t\t\toutput.push(...emoji_filter(emoji));\n\t\t\tcontinue;\n\t\t}\n\t\tlet cp = input.pop();\n\t\tif (VALID.has(cp)) {\n\t\t\toutput.push(cp);\n\t\t\tcontinue;\n\t\t} \n\t\tif (IGNORED.has(cp)) {\n\t\t\tcontinue;\n\t\t}\n\t\tlet cps = MAPPED[cp];\n\t\tif (cps) {\n\t\t\toutput.push(...cps);\n\t\t\tcontinue;\n\t\t}\n\t\tthrow new Error(`Disallowed codepoint: 0x${cp.toString(16).toUpperCase()}`);\n\t}\n\treturn ens_normalize_post_check(nfc(String.fromCodePoint(...output)));\n}\n\nfunction nfc(s: string): string {\n return s.normalize('NFC');\n}\n\nfunction consume_emoji_reversed(cps: Array, eaten?: Array) {\n\tlet node = EMOJI_ROOT;\n\tlet emoji;\n\tlet saved;\n\tlet stack = [];\n\tlet pos = cps.length;\n\tif (eaten) eaten.length = 0; // clear input buffer (if needed)\n\twhile (pos) {\n\t\tlet cp = cps[--pos];\n\t\tnode = node.branches.find(x => x.set.has(cp))?.node;\n\t\tif (!node) break;\n\t\tif (node.save) { // remember\n\t\t\tsaved = cp;\n\t\t} else if (node.check) { // check exclusion\n\t\t\tif (cp === saved) break;\n\t\t}\n\t\tstack.push(cp);\n\t\tif (node.fe0f) {\n\t\t\tstack.push(0xFE0F);\n\t\t\tif (pos > 0 && cps[pos - 1] == 0xFE0F) pos--; // consume optional FE0F\n\t\t}\n\t\tif (node.valid) { // this is a valid emoji (so far)\n\t\t\temoji = stack.slice(); // copy stack\n\t\t\tif (node.valid == 2) emoji.splice(1, 1); // delete FE0F at position 1 (RGI ZWJ don't follow spec!)\n\t\t\tif (eaten) eaten.push(...cps.slice(pos).reverse()); // copy input (if needed)\n\t\t\tcps.length = pos; // truncate\n\t\t}\n\t}\n\treturn emoji;\n}\n", "import { concat, hexlify } from \"@ethersproject/bytes\";\nimport { toUtf8Bytes, toUtf8String } from \"@ethersproject/strings\";\nimport { keccak256 } from \"@ethersproject/keccak256\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nimport { ens_normalize } from \"./ens-normalize/lib\";\n\nconst Zeros = new Uint8Array(32);\nZeros.fill(0);\n\nfunction checkComponent(comp: Uint8Array): Uint8Array {\n if (comp.length === 0) { throw new Error(\"invalid ENS name; empty component\"); }\n return comp;\n}\n\nfunction ensNameSplit(name: string): Array {\n const bytes = toUtf8Bytes(ens_normalize(name));\n const comps: Array = [ ];\n\n if (name.length === 0) { return comps; }\n\n let last = 0;\n for (let i = 0; i < bytes.length; i++) {\n const d = bytes[i];\n\n // A separator (i.e. \".\"); copy this component\n if (d === 0x2e) {\n comps.push(checkComponent(bytes.slice(last, i)));\n last = i + 1;\n }\n }\n\n // There was a stray separator at the end of the name\n if (last >= bytes.length) { throw new Error(\"invalid ENS name; empty component\"); }\n\n comps.push(checkComponent(bytes.slice(last)));\n return comps;\n}\n\nexport function ensNormalize(name: string): string {\n return ensNameSplit(name).map((comp) => toUtf8String(comp)).join(\".\");\n}\n\nexport function isValidName(name: string): boolean {\n try {\n return (ensNameSplit(name).length !== 0);\n } catch (error) { }\n return false;\n}\n\nexport function namehash(name: string): string {\n /* istanbul ignore if */\n if (typeof(name) !== \"string\") {\n logger.throwArgumentError(\"invalid ENS name; not a string\", \"name\", name);\n }\n\n let result: string | Uint8Array = Zeros;\n\n const comps = ensNameSplit(name);\n while (comps.length) {\n result = keccak256(concat([result, keccak256(comps.pop())]));\n }\n\n return hexlify(result);\n}\n\nexport function dnsEncode(name: string): string {\n return hexlify(concat(ensNameSplit(name).map((comp) => {\n // DNS does not allow components over 63 bytes in length\n if (comp.length > 63) {\n throw new Error(\"invalid DNS encoded entry; length exceeds 63 bytes\");\n }\n\n const bytes = new Uint8Array(comp.length + 1);\n bytes.set(comp, 1);\n bytes[0] = bytes.length - 1;\n return bytes;\n\n }))) + \"00\";\n}\n", "import { Bytes, concat } from \"@ethersproject/bytes\";\nimport { keccak256 } from \"@ethersproject/keccak256\";\nimport { toUtf8Bytes } from \"@ethersproject/strings\";\n\nexport const messagePrefix = \"\\x19Ethereum Signed Message:\\n\";\n\nexport function hashMessage(message: Bytes | string): string {\n if (typeof(message) === \"string\") { message = toUtf8Bytes(message); }\n return keccak256(concat([\n toUtf8Bytes(messagePrefix),\n toUtf8Bytes(String(message.length)),\n message\n ]));\n}\n\n", "import { TypedDataDomain, TypedDataField } from \"@ethersproject/abstract-signer\";\nimport { getAddress } from \"@ethersproject/address\";\nimport { BigNumber, BigNumberish } from \"@ethersproject/bignumber\";\nimport { arrayify, BytesLike, hexConcat, hexlify, hexZeroPad, isHexString } from \"@ethersproject/bytes\";\nimport { keccak256 } from \"@ethersproject/keccak256\";\nimport { deepCopy, defineReadOnly, shallowCopy } from \"@ethersproject/properties\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nimport { id } from \"./id\";\n\nconst padding = new Uint8Array(32);\npadding.fill(0);\n\nconst NegativeOne: BigNumber = BigNumber.from(-1);\nconst Zero: BigNumber = BigNumber.from(0);\nconst One: BigNumber = BigNumber.from(1);\nconst MaxUint256: BigNumber = BigNumber.from(\"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\");\n\nfunction hexPadRight(value: BytesLike) {\n const bytes = arrayify(value);\n const padOffset = bytes.length % 32\n if (padOffset) {\n return hexConcat([ bytes, padding.slice(padOffset) ]);\n }\n return hexlify(bytes);\n}\n\nconst hexTrue = hexZeroPad(One.toHexString(), 32);\nconst hexFalse = hexZeroPad(Zero.toHexString(), 32);\n\nconst domainFieldTypes: Record = {\n name: \"string\",\n version: \"string\",\n chainId: \"uint256\",\n verifyingContract: \"address\",\n salt: \"bytes32\"\n};\n\nconst domainFieldNames: Array = [\n \"name\", \"version\", \"chainId\", \"verifyingContract\", \"salt\"\n];\n\nfunction checkString(key: string): (value: any) => string {\n return function (value: any){\n if (typeof(value) !== \"string\") {\n logger.throwArgumentError(`invalid domain value for ${ JSON.stringify(key) }`, `domain.${ key }`, value);\n }\n return value;\n }\n}\n\nconst domainChecks: Record any> = {\n name: checkString(\"name\"),\n version: checkString(\"version\"),\n chainId: function(value: any) {\n try {\n return BigNumber.from(value).toString()\n } catch (error) { }\n return logger.throwArgumentError(`invalid domain value for \"chainId\"`, \"domain.chainId\", value);\n },\n verifyingContract: function(value: any) {\n try {\n return getAddress(value).toLowerCase();\n } catch (error) { }\n return logger.throwArgumentError(`invalid domain value \"verifyingContract\"`, \"domain.verifyingContract\", value);\n },\n salt: function(value: any) {\n try {\n const bytes = arrayify(value);\n if (bytes.length !== 32) { throw new Error(\"bad length\"); }\n return hexlify(bytes);\n } catch (error) { }\n return logger.throwArgumentError(`invalid domain value \"salt\"`, \"domain.salt\", value);\n }\n}\n\nfunction getBaseEncoder(type: string): (value: any) => string {\n // intXX and uintXX\n {\n const match = type.match(/^(u?)int(\\d*)$/);\n if (match) {\n const signed = (match[1] === \"\");\n\n const width = parseInt(match[2] || \"256\");\n if (width % 8 !== 0 || width > 256 || (match[2] && match[2] !== String(width))) {\n logger.throwArgumentError(\"invalid numeric width\", \"type\", type);\n }\n\n const boundsUpper = MaxUint256.mask(signed ? (width - 1): width);\n const boundsLower = signed ? boundsUpper.add(One).mul(NegativeOne): Zero;\n\n return function(value: BigNumberish) {\n const v = BigNumber.from(value);\n\n if (v.lt(boundsLower) || v.gt(boundsUpper)) {\n logger.throwArgumentError(`value out-of-bounds for ${ type }`, \"value\", value);\n }\n\n return hexZeroPad(v.toTwos(256).toHexString(), 32);\n };\n }\n }\n\n // bytesXX\n {\n const match = type.match(/^bytes(\\d+)$/);\n if (match) {\n const width = parseInt(match[1]);\n if (width === 0 || width > 32 || match[1] !== String(width)) {\n logger.throwArgumentError(\"invalid bytes width\", \"type\", type);\n }\n\n return function(value: BytesLike) {\n const bytes = arrayify(value);\n if (bytes.length !== width) {\n logger.throwArgumentError(`invalid length for ${ type }`, \"value\", value);\n }\n return hexPadRight(value);\n };\n }\n }\n\n switch (type) {\n case \"address\": return function(value: string) {\n return hexZeroPad(getAddress(value), 32);\n };\n case \"bool\": return function(value: boolean) {\n return ((!value) ? hexFalse: hexTrue);\n };\n case \"bytes\": return function(value: BytesLike) {\n return keccak256(value);\n };\n case \"string\": return function(value: string) {\n return id(value);\n };\n }\n\n return null;\n}\n\nfunction encodeType(name: string, fields: Array): string {\n return `${ name }(${ fields.map(({ name, type }) => (type + \" \" + name)).join(\",\") })`;\n}\n\nexport class TypedDataEncoder {\n readonly primaryType: string;\n readonly types: Record>;\n\n readonly _encoderCache: Record string>;\n readonly _types: Record;\n\n constructor(types: Record>) {\n defineReadOnly(this, \"types\", Object.freeze(deepCopy(types)));\n\n defineReadOnly(this, \"_encoderCache\", { });\n defineReadOnly(this, \"_types\", { });\n\n // Link struct types to their direct child structs\n const links: Record> = { };\n\n // Link structs to structs which contain them as a child\n const parents: Record> = { };\n\n // Link all subtypes within a given struct\n const subtypes: Record> = { };\n\n Object.keys(types).forEach((type) => {\n links[type] = { };\n parents[type] = [ ];\n subtypes[type] = { }\n });\n\n for (const name in types) {\n\n const uniqueNames: Record = { };\n\n types[name].forEach((field) => {\n\n // Check each field has a unique name\n if (uniqueNames[field.name]) {\n logger.throwArgumentError(`duplicate variable name ${ JSON.stringify(field.name) } in ${ JSON.stringify(name) }`, \"types\", types);\n }\n uniqueNames[field.name] = true;\n\n // Get the base type (drop any array specifiers)\n const baseType = field.type.match(/^([^\\x5b]*)(\\x5b|$)/)[1];\n if (baseType === name) {\n logger.throwArgumentError(`circular type reference to ${ JSON.stringify(baseType) }`, \"types\", types);\n }\n\n // Is this a base encoding type?\n const encoder = getBaseEncoder(baseType);\n if (encoder) { return ;}\n\n if (!parents[baseType]) {\n logger.throwArgumentError(`unknown type ${ JSON.stringify(baseType) }`, \"types\", types);\n }\n\n // Add linkage\n parents[baseType].push(name);\n links[name][baseType] = true;\n });\n }\n\n // Deduce the primary type\n const primaryTypes = Object.keys(parents).filter((n) => (parents[n].length === 0));\n\n if (primaryTypes.length === 0) {\n logger.throwArgumentError(\"missing primary type\", \"types\", types);\n } else if (primaryTypes.length > 1) {\n logger.throwArgumentError(`ambiguous primary types or unused types: ${ primaryTypes.map((t) => (JSON.stringify(t))).join(\", \") }`, \"types\", types);\n }\n\n defineReadOnly(this, \"primaryType\", primaryTypes[0]);\n\n // Check for circular type references\n function checkCircular(type: string, found: Record) {\n if (found[type]) {\n logger.throwArgumentError(`circular type reference to ${ JSON.stringify(type) }`, \"types\", types);\n }\n\n found[type] = true;\n\n Object.keys(links[type]).forEach((child) => {\n if (!parents[child]) { return; }\n\n // Recursively check children\n checkCircular(child, found);\n\n // Mark all ancestors as having this decendant\n Object.keys(found).forEach((subtype) => {\n subtypes[subtype][child] = true;\n });\n });\n\n delete found[type];\n }\n checkCircular(this.primaryType, { });\n\n // Compute each fully describe type\n for (const name in subtypes) {\n const st = Object.keys(subtypes[name]);\n st.sort();\n this._types[name] = encodeType(name, types[name]) + st.map((t) => encodeType(t, types[t])).join(\"\");\n }\n }\n\n getEncoder(type: string): (value: any) => string {\n let encoder = this._encoderCache[type];\n if (!encoder) {\n encoder = this._encoderCache[type] = this._getEncoder(type);\n }\n return encoder;\n }\n\n _getEncoder(type: string): (value: any) => string {\n\n // Basic encoder type (address, bool, uint256, etc)\n {\n const encoder = getBaseEncoder(type);\n if (encoder) { return encoder; }\n }\n\n // Array\n const match = type.match(/^(.*)(\\x5b(\\d*)\\x5d)$/);\n if (match) {\n const subtype = match[1];\n const subEncoder = this.getEncoder(subtype);\n const length = parseInt(match[3]);\n return (value: Array) => {\n if (length >= 0 && value.length !== length) {\n logger.throwArgumentError(\"array length mismatch; expected length ${ arrayLength }\", \"value\", value);\n }\n\n let result = value.map(subEncoder);\n if (this._types[subtype]) {\n result = result.map(keccak256);\n }\n\n return keccak256(hexConcat(result));\n };\n }\n\n // Struct\n const fields = this.types[type];\n if (fields) {\n const encodedType = id(this._types[type]);\n return (value: Record) => {\n const values = fields.map(({ name, type }) => {\n const result = this.getEncoder(type)(value[name]);\n if (this._types[type]) { return keccak256(result); }\n return result;\n });\n values.unshift(encodedType);\n return hexConcat(values);\n }\n }\n\n return logger.throwArgumentError(`unknown type: ${ type }`, \"type\", type);\n }\n\n encodeType(name: string): string {\n const result = this._types[name];\n if (!result) {\n logger.throwArgumentError(`unknown type: ${ JSON.stringify(name) }`, \"name\", name);\n }\n return result;\n }\n\n encodeData(type: string, value: any): string {\n return this.getEncoder(type)(value);\n }\n\n hashStruct(name: string, value: Record): string {\n return keccak256(this.encodeData(name, value));\n }\n\n encode(value: Record): string {\n return this.encodeData(this.primaryType, value);\n }\n\n hash(value: Record): string {\n return this.hashStruct(this.primaryType, value);\n }\n\n _visit(type: string, value: any, callback: (type: string, data: any) => any): any {\n // Basic encoder type (address, bool, uint256, etc)\n {\n const encoder = getBaseEncoder(type);\n if (encoder) { return callback(type, value); }\n }\n\n // Array\n const match = type.match(/^(.*)(\\x5b(\\d*)\\x5d)$/);\n if (match) {\n const subtype = match[1];\n const length = parseInt(match[3]);\n if (length >= 0 && value.length !== length) {\n logger.throwArgumentError(\"array length mismatch; expected length ${ arrayLength }\", \"value\", value);\n }\n return value.map((v: any) => this._visit(subtype, v, callback));\n }\n\n // Struct\n const fields = this.types[type];\n if (fields) {\n return fields.reduce((accum, { name, type }) => {\n accum[name] = this._visit(type, value[name], callback);\n return accum;\n }, >{});\n }\n\n return logger.throwArgumentError(`unknown type: ${ type }`, \"type\", type);\n }\n\n visit(value: Record, callback: (type: string, data: any) => any): any {\n return this._visit(this.primaryType, value, callback);\n }\n\n static from(types: Record>): TypedDataEncoder {\n return new TypedDataEncoder(types);\n }\n\n static getPrimaryType(types: Record>): string {\n return TypedDataEncoder.from(types).primaryType;\n }\n\n static hashStruct(name: string, types: Record>, value: Record): string {\n return TypedDataEncoder.from(types).hashStruct(name, value);\n }\n\n static hashDomain(domain: TypedDataDomain): string {\n const domainFields: Array = [ ];\n for (const name in domain) {\n const type = domainFieldTypes[name];\n if (!type) {\n logger.throwArgumentError(`invalid typed-data domain key: ${ JSON.stringify(name) }`, \"domain\", domain);\n }\n domainFields.push({ name, type });\n }\n\n domainFields.sort((a, b) => {\n return domainFieldNames.indexOf(a.name) - domainFieldNames.indexOf(b.name);\n });\n\n return TypedDataEncoder.hashStruct(\"EIP712Domain\", { EIP712Domain: domainFields }, domain);\n }\n\n static encode(domain: TypedDataDomain, types: Record>, value: Record): string {\n return hexConcat([\n \"0x1901\",\n TypedDataEncoder.hashDomain(domain),\n TypedDataEncoder.from(types).hash(value)\n ]);\n }\n\n static hash(domain: TypedDataDomain, types: Record>, value: Record): string {\n return keccak256(TypedDataEncoder.encode(domain, types, value));\n }\n\n // Replaces all address types with ENS names with their looked up address\n static async resolveNames(domain: TypedDataDomain, types: Record>, value: Record, resolveName: (name: string) => Promise): Promise<{ domain: TypedDataDomain, value: any }> {\n // Make a copy to isolate it from the object passed in\n domain = shallowCopy(domain);\n\n // Look up all ENS names\n const ensCache: Record = { };\n\n // Do we need to look up the domain's verifyingContract?\n if (domain.verifyingContract && !isHexString(domain.verifyingContract, 20)) {\n ensCache[domain.verifyingContract] = \"0x\";\n }\n\n // We are going to use the encoder to visit all the base values\n const encoder = TypedDataEncoder.from(types);\n\n // Get a list of all the addresses\n encoder.visit(value, (type: string, value: any) => {\n if (type === \"address\" && !isHexString(value, 20)) {\n ensCache[value] = \"0x\";\n }\n return value;\n });\n\n // Lookup each name\n for (const name in ensCache) {\n ensCache[name] = await resolveName(name);\n }\n\n // Replace the domain verifyingContract if needed\n if (domain.verifyingContract && ensCache[domain.verifyingContract]) {\n domain.verifyingContract = ensCache[domain.verifyingContract];\n }\n\n // Replace all ENS names with their address\n value = encoder.visit(value, (type: string, value: any) => {\n if (type === \"address\" && ensCache[value]) { return ensCache[value]; }\n return value;\n });\n\n return { domain, value };\n }\n\n static getPayload(domain: TypedDataDomain, types: Record>, value: Record): any {\n // Validate the domain fields\n TypedDataEncoder.hashDomain(domain);\n\n // Derive the EIP712Domain Struct reference type\n const domainValues: Record = { };\n const domainTypes: Array<{ name: string, type:string }> = [ ];\n\n domainFieldNames.forEach((name) => {\n const value = (domain)[name];\n if (value == null) { return; }\n domainValues[name] = domainChecks[name](value);\n domainTypes.push({ name, type: domainFieldTypes[name] });\n });\n\n const encoder = TypedDataEncoder.from(types);\n\n const typesWithDomain = shallowCopy(types);\n if (typesWithDomain.EIP712Domain) {\n logger.throwArgumentError(\"types must not contain EIP712Domain type\", \"types.EIP712Domain\", types);\n } else {\n typesWithDomain.EIP712Domain = domainTypes;\n }\n\n // Validate the data structures and types\n encoder.encode(value);\n\n return {\n types: typesWithDomain,\n domain: domainValues,\n primaryType: encoder.primaryType,\n message: encoder.visit(value, (type: string, value: any) => {\n\n // bytes\n if (type.match(/^bytes(\\d*)/)) {\n return hexlify(arrayify(value));\n }\n\n // uint or int\n if (type.match(/^u?int/)) {\n return BigNumber.from(value).toString();\n }\n\n switch (type) {\n case \"address\":\n return value.toLowerCase();\n case \"bool\":\n return !!value;\n case \"string\":\n if (typeof(value) !== \"string\") {\n logger.throwArgumentError(`invalid string`, \"value\", value);\n }\n return value;\n }\n\n return logger.throwArgumentError(\"unsupported type\", \"type\", type);\n })\n };\n }\n}\n\n", "\"use strict\";\n\nimport { id } from \"./id\";\nimport { dnsEncode, isValidName, namehash } from \"./namehash\";\nimport { hashMessage, messagePrefix } from \"./message\";\n\nimport { ensNormalize } from \"./namehash\";\n\nimport { TypedDataEncoder as _TypedDataEncoder } from \"./typed-data\";\n\nexport {\n id,\n\n dnsEncode,\n namehash,\n isValidName,\n\n ensNormalize,\n\n messagePrefix,\n hashMessage,\n\n _TypedDataEncoder,\n}\n", "\"use strict\";\n\nimport { getAddress } from \"@ethersproject/address\";\nimport { BigNumber, BigNumberish } from \"@ethersproject/bignumber\";\nimport { arrayify, BytesLike, concat, hexDataSlice, hexlify, hexZeroPad, isHexString } from \"@ethersproject/bytes\";\nimport { id } from \"@ethersproject/hash\";\nimport { keccak256 } from \"@ethersproject/keccak256\"\nimport { defineReadOnly, Description, getStatic } from \"@ethersproject/properties\";\n\nimport { AbiCoder, defaultAbiCoder } from \"./abi-coder\";\nimport { checkResultErrors, Result } from \"./coders/abstract-coder\";\nimport { ConstructorFragment, ErrorFragment, EventFragment, FormatTypes, Fragment, FunctionFragment, JsonFragment, ParamType } from \"./fragments\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nexport { checkResultErrors, Result };\n\nexport class LogDescription extends Description {\n readonly eventFragment: EventFragment;\n readonly name: string;\n readonly signature: string;\n readonly topic: string;\n readonly args: Result\n}\n\nexport class TransactionDescription extends Description {\n readonly functionFragment: FunctionFragment;\n readonly name: string;\n readonly args: Result;\n readonly signature: string;\n readonly sighash: string;\n readonly value: BigNumber;\n}\n\nexport class ErrorDescription extends Description {\n readonly errorFragment: ErrorFragment;\n readonly name: string;\n readonly args: Result;\n readonly signature: string;\n readonly sighash: string;\n}\n\nexport class Indexed extends Description {\n readonly hash: string;\n readonly _isIndexed: boolean;\n\n static isIndexed(value: any): value is Indexed {\n return !!(value && value._isIndexed);\n }\n}\n\nconst BuiltinErrors: Record, name: string, reason?: boolean }> = {\n \"0x08c379a0\": { signature: \"Error(string)\", name: \"Error\", inputs: [ \"string\" ], reason: true },\n \"0x4e487b71\": { signature: \"Panic(uint256)\", name: \"Panic\", inputs: [ \"uint256\" ] }\n}\n\nfunction wrapAccessError(property: string, error: Error): Error {\n const wrap = new Error(`deferred error during ABI decoding triggered accessing ${ property }`);\n (wrap).error = error;\n return wrap;\n}\n\n/*\nfunction checkNames(fragment: Fragment, type: \"input\" | \"output\", params: Array): void {\n params.reduce((accum, param) => {\n if (param.name) {\n if (accum[param.name]) {\n logger.throwArgumentError(`duplicate ${ type } parameter ${ JSON.stringify(param.name) } in ${ fragment.format(\"full\") }`, \"fragment\", fragment);\n }\n accum[param.name] = true;\n }\n return accum;\n }, <{ [ name: string ]: boolean }>{ });\n}\n*/\nexport class Interface {\n readonly fragments: ReadonlyArray;\n\n readonly errors: { [ name: string ]: ErrorFragment };\n readonly events: { [ name: string ]: EventFragment };\n readonly functions: { [ name: string ]: FunctionFragment };\n readonly structs: { [ name: string ]: any };\n\n readonly deploy: ConstructorFragment;\n\n readonly _abiCoder: AbiCoder;\n\n readonly _isInterface: boolean;\n\n constructor(fragments: string | ReadonlyArray) {\n let abi: ReadonlyArray = [ ];\n if (typeof(fragments) === \"string\") {\n abi = JSON.parse(fragments);\n } else {\n abi = fragments;\n }\n\n defineReadOnly(this, \"fragments\", abi.map((fragment) => {\n return Fragment.from(fragment);\n }).filter((fragment) => (fragment != null)));\n\n defineReadOnly(this, \"_abiCoder\", getStatic<() => AbiCoder>(new.target, \"getAbiCoder\")());\n\n defineReadOnly(this, \"functions\", { });\n defineReadOnly(this, \"errors\", { });\n defineReadOnly(this, \"events\", { });\n defineReadOnly(this, \"structs\", { });\n\n // Add all fragments by their signature\n this.fragments.forEach((fragment) => {\n let bucket: { [ name: string ]: Fragment } = null;\n switch (fragment.type) {\n case \"constructor\":\n if (this.deploy) {\n logger.warn(\"duplicate definition - constructor\");\n return;\n }\n //checkNames(fragment, \"input\", fragment.inputs);\n defineReadOnly(this, \"deploy\", fragment);\n return;\n case \"function\":\n //checkNames(fragment, \"input\", fragment.inputs);\n //checkNames(fragment, \"output\", (fragment).outputs);\n bucket = this.functions;\n break;\n case \"event\":\n //checkNames(fragment, \"input\", fragment.inputs);\n bucket = this.events;\n break;\n case \"error\":\n bucket = this.errors;\n break;\n default:\n return;\n }\n\n let signature = fragment.format();\n if (bucket[signature]) {\n logger.warn(\"duplicate definition - \" + signature);\n return;\n }\n\n bucket[signature] = fragment;\n });\n\n // If we do not have a constructor add a default\n if (!this.deploy) {\n defineReadOnly(this, \"deploy\", ConstructorFragment.from({\n payable: false,\n type: \"constructor\"\n }));\n }\n\n defineReadOnly(this, \"_isInterface\", true);\n }\n\n format(format?: string): string | Array {\n if (!format) { format = FormatTypes.full; }\n if (format === FormatTypes.sighash) {\n logger.throwArgumentError(\"interface does not support formatting sighash\", \"format\", format);\n }\n\n const abi = this.fragments.map((fragment) => fragment.format(format));\n\n // We need to re-bundle the JSON fragments a bit\n if (format === FormatTypes.json) {\n return JSON.stringify(abi.map((j) => JSON.parse(j)));\n }\n\n return abi;\n }\n\n // Sub-classes can override these to handle other blockchains\n static getAbiCoder(): AbiCoder {\n return defaultAbiCoder;\n }\n\n static getAddress(address: string): string {\n return getAddress(address);\n }\n\n static getSighash(fragment: ErrorFragment | FunctionFragment): string {\n return hexDataSlice(id(fragment.format()), 0, 4);\n }\n\n static getEventTopic(eventFragment: EventFragment): string {\n return id(eventFragment.format());\n }\n\n // Find a function definition by any means necessary (unless it is ambiguous)\n getFunction(nameOrSignatureOrSighash: string): FunctionFragment {\n if (isHexString(nameOrSignatureOrSighash)) {\n for (const name in this.functions) {\n if (nameOrSignatureOrSighash === this.getSighash(name)) {\n return this.functions[name];\n }\n }\n logger.throwArgumentError(\"no matching function\", \"sighash\", nameOrSignatureOrSighash);\n }\n\n // It is a bare name, look up the function (will return null if ambiguous)\n if (nameOrSignatureOrSighash.indexOf(\"(\") === -1) {\n const name = nameOrSignatureOrSighash.trim();\n const matching = Object.keys(this.functions).filter((f) => (f.split(\"(\"/* fix:) */)[0] === name));\n if (matching.length === 0) {\n logger.throwArgumentError(\"no matching function\", \"name\", name);\n } else if (matching.length > 1) {\n logger.throwArgumentError(\"multiple matching functions\", \"name\", name);\n }\n\n return this.functions[matching[0]];\n }\n\n // Normalize the signature and lookup the function\n const result = this.functions[FunctionFragment.fromString(nameOrSignatureOrSighash).format()];\n if (!result) {\n logger.throwArgumentError(\"no matching function\", \"signature\", nameOrSignatureOrSighash);\n }\n return result;\n }\n\n // Find an event definition by any means necessary (unless it is ambiguous)\n getEvent(nameOrSignatureOrTopic: string): EventFragment {\n if (isHexString(nameOrSignatureOrTopic)) {\n const topichash = nameOrSignatureOrTopic.toLowerCase();\n for (const name in this.events) {\n if (topichash === this.getEventTopic(name)) {\n return this.events[name];\n }\n }\n logger.throwArgumentError(\"no matching event\", \"topichash\", topichash);\n }\n\n // It is a bare name, look up the function (will return null if ambiguous)\n if (nameOrSignatureOrTopic.indexOf(\"(\") === -1) {\n const name = nameOrSignatureOrTopic.trim();\n const matching = Object.keys(this.events).filter((f) => (f.split(\"(\"/* fix:) */)[0] === name));\n if (matching.length === 0) {\n logger.throwArgumentError(\"no matching event\", \"name\", name);\n } else if (matching.length > 1) {\n logger.throwArgumentError(\"multiple matching events\", \"name\", name);\n }\n\n return this.events[matching[0]];\n }\n\n // Normalize the signature and lookup the function\n const result = this.events[EventFragment.fromString(nameOrSignatureOrTopic).format()];\n if (!result) {\n logger.throwArgumentError(\"no matching event\", \"signature\", nameOrSignatureOrTopic);\n }\n return result;\n }\n\n // Find a function definition by any means necessary (unless it is ambiguous)\n getError(nameOrSignatureOrSighash: string): ErrorFragment {\n if (isHexString(nameOrSignatureOrSighash)) {\n const getSighash = getStatic<(f: ErrorFragment | FunctionFragment) => string>(this.constructor, \"getSighash\");\n for (const name in this.errors) {\n const error = this.errors[name];\n if (nameOrSignatureOrSighash === getSighash(error)) {\n return this.errors[name];\n }\n }\n logger.throwArgumentError(\"no matching error\", \"sighash\", nameOrSignatureOrSighash);\n }\n\n // It is a bare name, look up the function (will return null if ambiguous)\n if (nameOrSignatureOrSighash.indexOf(\"(\") === -1) {\n const name = nameOrSignatureOrSighash.trim();\n const matching = Object.keys(this.errors).filter((f) => (f.split(\"(\"/* fix:) */)[0] === name));\n if (matching.length === 0) {\n logger.throwArgumentError(\"no matching error\", \"name\", name);\n } else if (matching.length > 1) {\n logger.throwArgumentError(\"multiple matching errors\", \"name\", name);\n }\n\n return this.errors[matching[0]];\n }\n\n // Normalize the signature and lookup the function\n const result = this.errors[FunctionFragment.fromString(nameOrSignatureOrSighash).format()];\n if (!result) {\n logger.throwArgumentError(\"no matching error\", \"signature\", nameOrSignatureOrSighash);\n }\n return result;\n }\n\n // Get the sighash (the bytes4 selector) used by Solidity to identify a function\n getSighash(fragment: ErrorFragment | FunctionFragment | string): string {\n if (typeof(fragment) === \"string\") {\n try {\n fragment = this.getFunction(fragment);\n } catch (error) {\n try {\n fragment = this.getError(fragment);\n } catch (_) {\n throw error;\n }\n }\n }\n\n return getStatic<(f: ErrorFragment | FunctionFragment) => string>(this.constructor, \"getSighash\")(fragment);\n }\n\n // Get the topic (the bytes32 hash) used by Solidity to identify an event\n getEventTopic(eventFragment: EventFragment | string): string {\n if (typeof(eventFragment) === \"string\") {\n eventFragment = this.getEvent(eventFragment);\n }\n\n return getStatic<(e: EventFragment) => string>(this.constructor, \"getEventTopic\")(eventFragment);\n }\n\n\n _decodeParams(params: ReadonlyArray, data: BytesLike): Result {\n return this._abiCoder.decode(params, data)\n }\n\n _encodeParams(params: ReadonlyArray, values: ReadonlyArray): string {\n return this._abiCoder.encode(params, values)\n }\n\n encodeDeploy(values?: ReadonlyArray): string {\n return this._encodeParams(this.deploy.inputs, values || [ ]);\n }\n\n decodeErrorResult(fragment: ErrorFragment | string, data: BytesLike): Result {\n if (typeof(fragment) === \"string\") {\n fragment = this.getError(fragment);\n }\n\n const bytes = arrayify(data);\n\n if (hexlify(bytes.slice(0, 4)) !== this.getSighash(fragment)) {\n logger.throwArgumentError(`data signature does not match error ${ fragment.name }.`, \"data\", hexlify(bytes));\n }\n\n return this._decodeParams(fragment.inputs, bytes.slice(4));\n }\n\n encodeErrorResult(fragment: ErrorFragment | string, values?: ReadonlyArray): string {\n if (typeof(fragment) === \"string\") {\n fragment = this.getError(fragment);\n }\n\n return hexlify(concat([\n this.getSighash(fragment),\n this._encodeParams(fragment.inputs, values || [ ])\n ]));\n }\n\n // Decode the data for a function call (e.g. tx.data)\n decodeFunctionData(functionFragment: FunctionFragment | string, data: BytesLike): Result {\n if (typeof(functionFragment) === \"string\") {\n functionFragment = this.getFunction(functionFragment);\n }\n\n const bytes = arrayify(data);\n\n if (hexlify(bytes.slice(0, 4)) !== this.getSighash(functionFragment)) {\n logger.throwArgumentError(`data signature does not match function ${ functionFragment.name }.`, \"data\", hexlify(bytes));\n }\n\n return this._decodeParams(functionFragment.inputs, bytes.slice(4));\n }\n\n // Encode the data for a function call (e.g. tx.data)\n encodeFunctionData(functionFragment: FunctionFragment | string, values?: ReadonlyArray): string {\n if (typeof(functionFragment) === \"string\") {\n functionFragment = this.getFunction(functionFragment);\n }\n\n return hexlify(concat([\n this.getSighash(functionFragment),\n this._encodeParams(functionFragment.inputs, values || [ ])\n ]));\n }\n\n // Decode the result from a function call (e.g. from eth_call)\n decodeFunctionResult(functionFragment: FunctionFragment | string, data: BytesLike): Result {\n if (typeof(functionFragment) === \"string\") {\n functionFragment = this.getFunction(functionFragment);\n }\n\n let bytes = arrayify(data);\n\n let reason: string = null;\n let message = \"\";\n let errorArgs: Result = null;\n let errorName: string = null;\n let errorSignature: string = null;\n switch (bytes.length % this._abiCoder._getWordSize()) {\n case 0:\n try {\n return this._abiCoder.decode(functionFragment.outputs, bytes);\n } catch (error) { }\n break;\n\n case 4: {\n const selector = hexlify(bytes.slice(0, 4));\n const builtin = BuiltinErrors[selector];\n if (builtin) {\n errorArgs = this._abiCoder.decode(builtin.inputs, bytes.slice(4));\n errorName = builtin.name;\n errorSignature = builtin.signature;\n if (builtin.reason) { reason = errorArgs[0]; }\n if (errorName === \"Error\") {\n message = `; VM Exception while processing transaction: reverted with reason string ${ JSON.stringify(errorArgs[0]) }`;\n } else if (errorName === \"Panic\") {\n message = `; VM Exception while processing transaction: reverted with panic code ${ errorArgs[0] }`;\n }\n } else {\n try {\n const error = this.getError(selector);\n errorArgs = this._abiCoder.decode(error.inputs, bytes.slice(4));\n errorName = error.name;\n errorSignature = error.format();\n } catch (error) { }\n }\n break;\n }\n }\n\n return logger.throwError(\"call revert exception\" + message, Logger.errors.CALL_EXCEPTION, {\n method: functionFragment.format(),\n data: hexlify(data), errorArgs, errorName, errorSignature, reason\n });\n }\n\n // Encode the result for a function call (e.g. for eth_call)\n encodeFunctionResult(functionFragment: FunctionFragment | string, values?: ReadonlyArray): string {\n if (typeof(functionFragment) === \"string\") {\n functionFragment = this.getFunction(functionFragment);\n }\n\n return hexlify(this._abiCoder.encode(functionFragment.outputs, values || [ ]));\n }\n\n // Create the filter for the event with search criteria (e.g. for eth_filterLog)\n encodeFilterTopics(eventFragment: EventFragment | string, values: ReadonlyArray): Array> {\n if (typeof(eventFragment) === \"string\") {\n eventFragment = this.getEvent(eventFragment);\n }\n\n if (values.length > eventFragment.inputs.length) {\n logger.throwError(\"too many arguments for \" + eventFragment.format(), Logger.errors.UNEXPECTED_ARGUMENT, {\n argument: \"values\",\n value: values\n })\n }\n\n let topics: Array> = [];\n if (!eventFragment.anonymous) { topics.push(this.getEventTopic(eventFragment)); }\n\n const encodeTopic = (param: ParamType, value: any): string => {\n if (param.type === \"string\") {\n return id(value);\n } else if (param.type === \"bytes\") {\n return keccak256(hexlify(value));\n }\n\n if (param.type === \"bool\" && typeof(value) === \"boolean\") {\n value = (value ? \"0x01\": \"0x00\");\n }\n\n if (param.type.match(/^u?int/)) {\n value = BigNumber.from(value).toHexString();\n }\n\n // Check addresses are valid\n if (param.type === \"address\") { this._abiCoder.encode( [ \"address\" ], [ value ]); }\n return hexZeroPad(hexlify(value), 32);\n };\n\n values.forEach((value, index) => {\n\n let param = (eventFragment).inputs[index];\n\n if (!param.indexed) {\n if (value != null) {\n logger.throwArgumentError(\"cannot filter non-indexed parameters; must be null\", (\"contract.\" + param.name), value);\n }\n return;\n }\n\n if (value == null) {\n topics.push(null);\n } else if (param.baseType === \"array\" || param.baseType === \"tuple\") {\n logger.throwArgumentError(\"filtering with tuples or arrays not supported\", (\"contract.\" + param.name), value);\n } else if (Array.isArray(value)) {\n topics.push(value.map((value) => encodeTopic(param, value)));\n } else {\n topics.push(encodeTopic(param, value));\n }\n });\n\n // Trim off trailing nulls\n while (topics.length && topics[topics.length - 1] === null) {\n topics.pop();\n }\n\n return topics;\n }\n\n encodeEventLog(eventFragment: EventFragment | string, values: ReadonlyArray): { data: string, topics: Array } {\n if (typeof(eventFragment) === \"string\") {\n eventFragment = this.getEvent(eventFragment);\n }\n\n const topics: Array = [ ];\n\n const dataTypes: Array = [ ];\n const dataValues: Array = [ ];\n\n if (!eventFragment.anonymous) {\n topics.push(this.getEventTopic(eventFragment));\n }\n\n if (values.length !== eventFragment.inputs.length) {\n logger.throwArgumentError(\"event arguments/values mismatch\", \"values\", values);\n }\n\n eventFragment.inputs.forEach((param, index) => {\n const value = values[index];\n if (param.indexed) {\n if (param.type === \"string\") {\n topics.push(id(value))\n } else if (param.type === \"bytes\") {\n topics.push(keccak256(value))\n } else if (param.baseType === \"tuple\" || param.baseType === \"array\") {\n // @TODO\n throw new Error(\"not implemented\");\n } else {\n topics.push(this._abiCoder.encode([ param.type] , [ value ]));\n }\n } else {\n dataTypes.push(param);\n dataValues.push(value);\n }\n });\n\n return {\n data: this._abiCoder.encode(dataTypes , dataValues),\n topics: topics\n };\n }\n\n // Decode a filter for the event and the search criteria\n decodeEventLog(eventFragment: EventFragment | string, data: BytesLike, topics?: ReadonlyArray): Result {\n if (typeof(eventFragment) === \"string\") {\n eventFragment = this.getEvent(eventFragment);\n }\n\n if (topics != null && !eventFragment.anonymous) {\n let topicHash = this.getEventTopic(eventFragment);\n if (!isHexString(topics[0], 32) || topics[0].toLowerCase() !== topicHash) {\n logger.throwError(\"fragment/topic mismatch\", Logger.errors.INVALID_ARGUMENT, { argument: \"topics[0]\", expected: topicHash, value: topics[0] });\n }\n topics = topics.slice(1);\n }\n\n let indexed: Array = [];\n let nonIndexed: Array = [];\n let dynamic: Array = [];\n\n eventFragment.inputs.forEach((param, index) => {\n if (param.indexed) {\n if (param.type === \"string\" || param.type === \"bytes\" || param.baseType === \"tuple\" || param.baseType === \"array\") {\n indexed.push(ParamType.fromObject({ type: \"bytes32\", name: param.name }));\n dynamic.push(true);\n } else {\n indexed.push(param);\n dynamic.push(false);\n }\n } else {\n nonIndexed.push(param);\n dynamic.push(false);\n }\n });\n\n let resultIndexed = (topics != null) ? this._abiCoder.decode(indexed, concat(topics)): null;\n let resultNonIndexed = this._abiCoder.decode(nonIndexed, data, true);\n\n let result: (Array & { [ key: string ]: any }) = [ ];\n let nonIndexedIndex = 0, indexedIndex = 0;\n eventFragment.inputs.forEach((param, index) => {\n if (param.indexed) {\n if (resultIndexed == null) {\n result[index] = new Indexed({ _isIndexed: true, hash: null });\n\n } else if (dynamic[index]) {\n result[index] = new Indexed({ _isIndexed: true, hash: resultIndexed[indexedIndex++] });\n\n } else {\n try {\n result[index] = resultIndexed[indexedIndex++];\n } catch (error) {\n result[index] = error;\n }\n }\n } else {\n try {\n result[index] = resultNonIndexed[nonIndexedIndex++];\n } catch (error) {\n result[index] = error;\n }\n }\n\n // Add the keyword argument if named and safe\n if (param.name && result[param.name] == null) {\n const value = result[index];\n\n // Make error named values throw on access\n if (value instanceof Error) {\n Object.defineProperty(result, param.name, {\n enumerable: true,\n get: () => { throw wrapAccessError(`property ${ JSON.stringify(param.name) }`, value); }\n });\n } else {\n result[param.name] = value;\n }\n }\n });\n\n // Make all error indexed values throw on access\n for (let i = 0; i < result.length; i++) {\n const value = result[i];\n if (value instanceof Error) {\n Object.defineProperty(result, i, {\n enumerable: true,\n get: () => { throw wrapAccessError(`index ${ i }`, value); }\n });\n }\n }\n\n return Object.freeze(result);\n }\n\n // Given a transaction, find the matching function fragment (if any) and\n // determine all its properties and call parameters\n parseTransaction(tx: { data: string, value?: BigNumberish }): TransactionDescription {\n let fragment = this.getFunction(tx.data.substring(0, 10).toLowerCase())\n\n if (!fragment) { return null; }\n\n return new TransactionDescription({\n args: this._abiCoder.decode(fragment.inputs, \"0x\" + tx.data.substring(10)),\n functionFragment: fragment,\n name: fragment.name,\n signature: fragment.format(),\n sighash: this.getSighash(fragment),\n value: BigNumber.from(tx.value || \"0\"),\n });\n }\n\n // @TODO\n //parseCallResult(data: BytesLike): ??\n\n // Given an event log, find the matching event fragment (if any) and\n // determine all its properties and values\n parseLog(log: { topics: Array, data: string}): LogDescription {\n let fragment = this.getEvent(log.topics[0]);\n\n if (!fragment || fragment.anonymous) { return null; }\n\n // @TODO: If anonymous, and the only method, and the input count matches, should we parse?\n // Probably not, because just because it is the only event in the ABI does\n // not mean we have the full ABI; maybe just a fragment?\n\n\n return new LogDescription({\n eventFragment: fragment,\n name: fragment.name,\n signature: fragment.format(),\n topic: this.getEventTopic(fragment),\n args: this.decodeEventLog(fragment, log.data, log.topics)\n });\n }\n\n parseError(data: BytesLike): ErrorDescription {\n const hexData = hexlify(data);\n let fragment = this.getError(hexData.substring(0, 10).toLowerCase())\n\n if (!fragment) { return null; }\n\n return new ErrorDescription({\n args: this._abiCoder.decode(fragment.inputs, \"0x\" + hexData.substring(10)),\n errorFragment: fragment,\n name: fragment.name,\n signature: fragment.format(),\n sighash: this.getSighash(fragment),\n });\n }\n\n\n /*\n static from(value: Array | string | Interface) {\n if (Interface.isInterface(value)) {\n return value;\n }\n if (typeof(value) === \"string\") {\n return new Interface(JSON.parse(value));\n }\n return new Interface(value);\n }\n */\n\n static isInterface(value: any): value is Interface {\n return !!(value && value._isInterface);\n }\n}\n\n", "\"use strict\";\n\nimport { ConstructorFragment, ErrorFragment, EventFragment, FormatTypes, Fragment, FunctionFragment, JsonFragment, JsonFragmentType, ParamType } from \"./fragments\";\nimport { AbiCoder, CoerceFunc, defaultAbiCoder } from \"./abi-coder\";\nimport { checkResultErrors, Indexed, Interface, LogDescription, Result, TransactionDescription } from \"./interface\";\n\nexport {\n ConstructorFragment,\n ErrorFragment,\n EventFragment,\n Fragment,\n FunctionFragment,\n ParamType,\n FormatTypes,\n\n AbiCoder,\n defaultAbiCoder,\n\n Interface,\n Indexed,\n\n /////////////////////////\n // Types\n\n CoerceFunc,\n JsonFragment,\n JsonFragmentType,\n\n Result,\n checkResultErrors,\n\n LogDescription,\n TransactionDescription\n};\n", "export const version = \"abstract-provider/5.7.0\";\n", "\"use strict\";\n\nimport { BigNumber, BigNumberish } from \"@ethersproject/bignumber\";\nimport { BytesLike, isHexString } from \"@ethersproject/bytes\";\nimport { Network } from \"@ethersproject/networks\";\nimport { Deferrable, Description, defineReadOnly, resolveProperties } from \"@ethersproject/properties\";\nimport { AccessListish, Transaction } from \"@ethersproject/transactions\";\nimport { OnceBlockable } from \"@ethersproject/web\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\n///////////////////////////////\n// Exported Types\n\n\nexport type TransactionRequest = {\n to?: string,\n from?: string,\n nonce?: BigNumberish,\n\n gasLimit?: BigNumberish,\n gasPrice?: BigNumberish,\n\n data?: BytesLike,\n value?: BigNumberish,\n chainId?: number\n\n type?: number;\n accessList?: AccessListish;\n\n maxPriorityFeePerGas?: BigNumberish;\n maxFeePerGas?: BigNumberish;\n\n customData?: Record;\n ccipReadEnabled?: boolean;\n}\n\nexport interface TransactionResponse extends Transaction {\n hash: string;\n\n // Only if a transaction has been mined\n blockNumber?: number,\n blockHash?: string,\n timestamp?: number,\n\n confirmations: number,\n\n // Not optional (as it is in Transaction)\n from: string;\n\n // The raw transaction\n raw?: string,\n\n // This function waits until the transaction has been mined\n wait: (confirmations?: number) => Promise\n};\n\nexport type BlockTag = string | number;\n\nexport interface _Block {\n hash: string;\n parentHash: string;\n number: number;\n\n timestamp: number;\n nonce: string;\n difficulty: number;\n _difficulty: BigNumber;\n\n gasLimit: BigNumber;\n gasUsed: BigNumber;\n\n miner: string;\n extraData: string;\n\n baseFeePerGas?: null | BigNumber;\n}\n\nexport interface Block extends _Block {\n transactions: Array;\n}\n\nexport interface BlockWithTransactions extends _Block {\n transactions: Array;\n}\n\n\nexport interface Log {\n blockNumber: number;\n blockHash: string;\n transactionIndex: number;\n\n removed: boolean;\n\n address: string;\n data: string;\n\n topics: Array;\n\n transactionHash: string;\n logIndex: number;\n}\n\nexport interface TransactionReceipt {\n to: string;\n from: string;\n contractAddress: string,\n transactionIndex: number,\n root?: string,\n gasUsed: BigNumber,\n logsBloom: string,\n blockHash: string,\n transactionHash: string,\n logs: Array,\n blockNumber: number,\n confirmations: number,\n cumulativeGasUsed: BigNumber,\n effectiveGasPrice: BigNumber,\n byzantium: boolean,\n type: number;\n status?: number\n};\n\nexport interface FeeData {\n lastBaseFeePerGas: null | BigNumber;\n maxFeePerGas: null | BigNumber;\n maxPriorityFeePerGas: null | BigNumber;\n gasPrice: null | BigNumber;\n}\n\nexport interface EventFilter {\n address?: string;\n topics?: Array | null>;\n}\n\nexport interface Filter extends EventFilter {\n fromBlock?: BlockTag,\n toBlock?: BlockTag,\n}\n\nexport interface FilterByBlockHash extends EventFilter {\n blockHash?: string;\n}\n\n//export type CallTransactionable = {\n// call(transaction: TransactionRequest): Promise;\n//};\n\nexport abstract class ForkEvent extends Description {\n readonly expiry: number;\n\n readonly _isForkEvent?: boolean;\n\n static isForkEvent(value: any): value is ForkEvent {\n return !!(value && value._isForkEvent);\n }\n}\n\nexport class BlockForkEvent extends ForkEvent {\n readonly blockHash: string;\n\n readonly _isBlockForkEvent?: boolean;\n\n constructor(blockHash: string, expiry?: number) {\n if (!isHexString(blockHash, 32)) {\n logger.throwArgumentError(\"invalid blockHash\", \"blockHash\", blockHash);\n }\n\n super({\n _isForkEvent: true,\n _isBlockForkEvent: true,\n expiry: (expiry || 0),\n blockHash: blockHash\n });\n }\n}\n\nexport class TransactionForkEvent extends ForkEvent {\n readonly hash: string;\n\n readonly _isTransactionOrderForkEvent?: boolean;\n\n constructor(hash: string, expiry?: number) {\n if (!isHexString(hash, 32)) {\n logger.throwArgumentError(\"invalid transaction hash\", \"hash\", hash);\n }\n\n super({\n _isForkEvent: true,\n _isTransactionForkEvent: true,\n expiry: (expiry || 0),\n hash: hash\n });\n }\n}\n\nexport class TransactionOrderForkEvent extends ForkEvent {\n readonly beforeHash: string;\n readonly afterHash: string;\n\n constructor(beforeHash: string, afterHash: string, expiry?: number) {\n if (!isHexString(beforeHash, 32)) {\n logger.throwArgumentError(\"invalid transaction hash\", \"beforeHash\", beforeHash);\n }\n if (!isHexString(afterHash, 32)) {\n logger.throwArgumentError(\"invalid transaction hash\", \"afterHash\", afterHash);\n }\n\n super({\n _isForkEvent: true,\n _isTransactionOrderForkEvent: true,\n expiry: (expiry || 0),\n beforeHash: beforeHash,\n afterHash: afterHash\n });\n }\n}\n\nexport type EventType = string | Array> | EventFilter | ForkEvent;\n\nexport type Listener = (...args: Array) => void;\n\n///////////////////////////////\n// Exported Abstracts\nexport abstract class Provider implements OnceBlockable {\n\n // Network\n abstract getNetwork(): Promise;\n\n // Latest State\n abstract getBlockNumber(): Promise;\n abstract getGasPrice(): Promise;\n async getFeeData(): Promise {\n const { block, gasPrice } = await resolveProperties({\n block: this.getBlock(\"latest\"),\n gasPrice: this.getGasPrice().catch((error) => {\n // @TODO: Why is this now failing on Calaveras?\n //console.log(error);\n return null;\n })\n });\n\n let lastBaseFeePerGas = null, maxFeePerGas = null, maxPriorityFeePerGas = null;\n\n if (block && block.baseFeePerGas) {\n // We may want to compute this more accurately in the future,\n // using the formula \"check if the base fee is correct\".\n // See: https://eips.ethereum.org/EIPS/eip-1559\n lastBaseFeePerGas = block.baseFeePerGas;\n maxPriorityFeePerGas = BigNumber.from(\"1500000000\");\n maxFeePerGas = block.baseFeePerGas.mul(2).add(maxPriorityFeePerGas);\n }\n\n return { lastBaseFeePerGas, maxFeePerGas, maxPriorityFeePerGas, gasPrice };\n }\n\n // Account\n abstract getBalance(addressOrName: string | Promise, blockTag?: BlockTag | Promise): Promise;\n abstract getTransactionCount(addressOrName: string | Promise, blockTag?: BlockTag | Promise): Promise;\n abstract getCode(addressOrName: string | Promise, blockTag?: BlockTag | Promise): Promise ;\n abstract getStorageAt(addressOrName: string | Promise, position: BigNumberish | Promise, blockTag?: BlockTag | Promise): Promise;\n\n // Execution\n abstract sendTransaction(signedTransaction: string | Promise): Promise;\n abstract call(transaction: Deferrable, blockTag?: BlockTag | Promise): Promise;\n abstract estimateGas(transaction: Deferrable): Promise;\n\n // Queries\n abstract getBlock(blockHashOrBlockTag: BlockTag | string | Promise): Promise;\n abstract getBlockWithTransactions(blockHashOrBlockTag: BlockTag | string | Promise): Promise;\n abstract getTransaction(transactionHash: string): Promise;\n abstract getTransactionReceipt(transactionHash: string): Promise;\n\n // Bloom-filter Queries\n abstract getLogs(filter: Filter): Promise>;\n\n // ENS\n abstract resolveName(name: string | Promise): Promise;\n abstract lookupAddress(address: string | Promise): Promise;\n\n // Event Emitter (ish)\n abstract on(eventName: EventType, listener: Listener): Provider;\n abstract once(eventName: EventType, listener: Listener): Provider;\n abstract emit(eventName: EventType, ...args: Array): boolean\n abstract listenerCount(eventName?: EventType): number;\n abstract listeners(eventName?: EventType): Array;\n abstract off(eventName: EventType, listener?: Listener): Provider;\n abstract removeAllListeners(eventName?: EventType): Provider;\n\n // Alias for \"on\"\n addListener(eventName: EventType, listener: Listener): Provider {\n return this.on(eventName, listener);\n }\n\n // Alias for \"off\"\n removeListener(eventName: EventType, listener: Listener): Provider {\n return this.off(eventName, listener);\n }\n\n // @TODO: This *could* be implemented here, but would pull in events...\n abstract waitForTransaction(transactionHash: string, confirmations?: number, timeout?: number): Promise;\n\n readonly _isProvider: boolean;\n\n constructor() {\n logger.checkAbstract(new.target, Provider);\n defineReadOnly(this, \"_isProvider\", true);\n }\n\n static isProvider(value: any): value is Provider {\n return !!(value && value._isProvider);\n }\n\n/*\n static getResolver(network: Network, callable: CallTransactionable, namehash: string): string {\n // No ENS...\n if (!network.ensAddress) {\n errors.throwError(\n \"network does support ENS\",\n errors.UNSUPPORTED_OPERATION,\n { operation: \"ENS\", network: network.name }\n );\n }\n\n // Not a namehash\n if (!isHexString(namehash, 32)) {\n errors.throwArgumentError(\"invalid name hash\", \"namehash\", namehash);\n }\n\n // keccak256(\"resolver(bytes32)\")\n let data = \"0x0178b8bf\" + namehash.substring(2);\n let transaction = { to: network.ensAddress, data: data };\n\n return provider.call(transaction).then((data) => {\n return provider.formatter.callAddress(data);\n });\n }\n\n static resolveNamehash(network: Network, callable: CallTransactionable, namehash: string): string {\n return this.getResolver(network, callable, namehash).then((resolverAddress) => {\n if (!resolverAddress) { return null; }\n\n // keccak256(\"addr(bytes32)\")\n let data = \"0x3b3b57de\" + namehash(name).substring(2);\n let transaction = { to: resolverAddress, data: data };\n return callable.call(transaction).then((data) => {\n return this.formatter.callAddress(data);\n });\n\n })\n }\n*/\n}\n", "export const version = \"abstract-signer/5.7.0\";\n", "\"use strict\";\n\nimport { BlockTag, FeeData, Provider, TransactionRequest, TransactionResponse } from \"@ethersproject/abstract-provider\";\nimport { BigNumber, BigNumberish } from \"@ethersproject/bignumber\";\nimport { Bytes, BytesLike } from \"@ethersproject/bytes\";\nimport { Deferrable, defineReadOnly, resolveProperties, shallowCopy } from \"@ethersproject/properties\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nconst allowedTransactionKeys: Array = [\n \"accessList\", \"ccipReadEnabled\", \"chainId\", \"customData\", \"data\", \"from\", \"gasLimit\", \"gasPrice\", \"maxFeePerGas\", \"maxPriorityFeePerGas\", \"nonce\", \"to\", \"type\", \"value\"\n];\n\nconst forwardErrors = [\n Logger.errors.INSUFFICIENT_FUNDS,\n Logger.errors.NONCE_EXPIRED,\n Logger.errors.REPLACEMENT_UNDERPRICED,\n];\n\n// EIP-712 Typed Data\n// See: https://eips.ethereum.org/EIPS/eip-712\n\nexport interface TypedDataDomain {\n name?: string;\n version?: string;\n chainId?: BigNumberish;\n verifyingContract?: string;\n salt?: BytesLike;\n};\n\nexport interface TypedDataField {\n name: string;\n type: string;\n};\n\n// Sub-classes of Signer may optionally extend this interface to indicate\n// they have a private key available synchronously\nexport interface ExternallyOwnedAccount {\n readonly address: string;\n readonly privateKey: string;\n}\n\n// Sub-Class Notes:\n// - A Signer MUST always make sure, that if present, the \"from\" field\n// matches the Signer, before sending or signing a transaction\n// - A Signer SHOULD always wrap private information (such as a private\n// key or mnemonic) in a function, so that console.log does not leak\n// the data\n\n// @TODO: This is a temporary measure to preserve backwards compatibility\n// In v6, the method on TypedDataSigner will be added to Signer\nexport interface TypedDataSigner {\n _signTypedData(domain: TypedDataDomain, types: Record>, value: Record): Promise;\n}\n\nexport abstract class Signer {\n readonly provider?: Provider;\n\n ///////////////////\n // Sub-classes MUST implement these\n\n // Returns the checksum address\n abstract getAddress(): Promise\n\n // Returns the signed prefixed-message. This MUST treat:\n // - Bytes as a binary message\n // - string as a UTF8-message\n // i.e. \"0x1234\" is a SIX (6) byte string, NOT 2 bytes of data\n abstract signMessage(message: Bytes | string): Promise;\n\n // Signs a transaction and returns the fully serialized, signed transaction.\n // The EXACT transaction MUST be signed, and NO additional properties to be added.\n // - This MAY throw if signing transactions is not supports, but if\n // it does, sentTransaction MUST be overridden.\n abstract signTransaction(transaction: Deferrable): Promise;\n\n // Returns a new instance of the Signer, connected to provider.\n // This MAY throw if changing providers is not supported.\n abstract connect(provider: Provider): Signer;\n\n readonly _isSigner: boolean;\n\n\n ///////////////////\n // Sub-classes MUST call super\n constructor() {\n logger.checkAbstract(new.target, Signer);\n defineReadOnly(this, \"_isSigner\", true);\n }\n\n\n ///////////////////\n // Sub-classes MAY override these\n\n async getBalance(blockTag?: BlockTag): Promise {\n this._checkProvider(\"getBalance\");\n return await this.provider.getBalance(this.getAddress(), blockTag);\n }\n\n async getTransactionCount(blockTag?: BlockTag): Promise {\n this._checkProvider(\"getTransactionCount\");\n return await this.provider.getTransactionCount(this.getAddress(), blockTag);\n }\n\n // Populates \"from\" if unspecified, and estimates the gas for the transaction\n async estimateGas(transaction: Deferrable): Promise {\n this._checkProvider(\"estimateGas\");\n const tx = await resolveProperties(this.checkTransaction(transaction));\n return await this.provider.estimateGas(tx);\n }\n\n // Populates \"from\" if unspecified, and calls with the transaction\n async call(transaction: Deferrable, blockTag?: BlockTag): Promise {\n this._checkProvider(\"call\");\n const tx = await resolveProperties(this.checkTransaction(transaction));\n return await this.provider.call(tx, blockTag);\n }\n\n // Populates all fields in a transaction, signs it and sends it to the network\n async sendTransaction(transaction: Deferrable): Promise {\n this._checkProvider(\"sendTransaction\");\n const tx = await this.populateTransaction(transaction);\n const signedTx = await this.signTransaction(tx);\n return await this.provider.sendTransaction(signedTx);\n }\n\n async getChainId(): Promise {\n this._checkProvider(\"getChainId\");\n const network = await this.provider.getNetwork();\n return network.chainId;\n }\n\n async getGasPrice(): Promise {\n this._checkProvider(\"getGasPrice\");\n return await this.provider.getGasPrice();\n }\n\n async getFeeData(): Promise {\n this._checkProvider(\"getFeeData\");\n return await this.provider.getFeeData();\n }\n\n\n async resolveName(name: string): Promise {\n this._checkProvider(\"resolveName\");\n return await this.provider.resolveName(name);\n }\n\n\n\n // Checks a transaction does not contain invalid keys and if\n // no \"from\" is provided, populates it.\n // - does NOT require a provider\n // - adds \"from\" is not present\n // - returns a COPY (safe to mutate the result)\n // By default called from: (overriding these prevents it)\n // - call\n // - estimateGas\n // - populateTransaction (and therefor sendTransaction)\n checkTransaction(transaction: Deferrable): Deferrable {\n for (const key in transaction) {\n if (allowedTransactionKeys.indexOf(key) === -1) {\n logger.throwArgumentError(\"invalid transaction key: \" + key, \"transaction\", transaction);\n }\n }\n\n const tx = shallowCopy(transaction);\n\n if (tx.from == null) {\n tx.from = this.getAddress();\n\n } else {\n // Make sure any provided address matches this signer\n tx.from = Promise.all([\n Promise.resolve(tx.from),\n this.getAddress()\n ]).then((result) => {\n if (result[0].toLowerCase() !== result[1].toLowerCase()) {\n logger.throwArgumentError(\"from address mismatch\", \"transaction\", transaction);\n }\n return result[0];\n });\n }\n\n return tx;\n }\n\n // Populates ALL keys for a transaction and checks that \"from\" matches\n // this Signer. Should be used by sendTransaction but NOT by signTransaction.\n // By default called from: (overriding these prevents it)\n // - sendTransaction\n //\n // Notes:\n // - We allow gasPrice for EIP-1559 as long as it matches maxFeePerGas\n async populateTransaction(transaction: Deferrable): Promise {\n\n const tx: Deferrable = await resolveProperties(this.checkTransaction(transaction))\n\n if (tx.to != null) {\n tx.to = Promise.resolve(tx.to).then(async (to) => {\n if (to == null) { return null; }\n const address = await this.resolveName(to);\n if (address == null) {\n logger.throwArgumentError(\"provided ENS name resolves to null\", \"tx.to\", to);\n }\n return address;\n });\n\n // Prevent this error from causing an UnhandledPromiseException\n tx.to.catch((error) => { });\n }\n\n // Do not allow mixing pre-eip-1559 and eip-1559 properties\n const hasEip1559 = (tx.maxFeePerGas != null || tx.maxPriorityFeePerGas != null);\n if (tx.gasPrice != null && (tx.type === 2 || hasEip1559)) {\n logger.throwArgumentError(\"eip-1559 transaction do not support gasPrice\", \"transaction\", transaction);\n } else if ((tx.type === 0 || tx.type === 1) && hasEip1559) {\n logger.throwArgumentError(\"pre-eip-1559 transaction do not support maxFeePerGas/maxPriorityFeePerGas\", \"transaction\", transaction);\n }\n\n if ((tx.type === 2 || tx.type == null) && (tx.maxFeePerGas != null && tx.maxPriorityFeePerGas != null)) {\n // Fully-formed EIP-1559 transaction (skip getFeeData)\n tx.type = 2;\n\n } else if (tx.type === 0 || tx.type === 1) {\n // Explicit Legacy or EIP-2930 transaction\n\n // Populate missing gasPrice\n if (tx.gasPrice == null) { tx.gasPrice = this.getGasPrice(); }\n\n } else {\n\n // We need to get fee data to determine things\n const feeData = await this.getFeeData();\n\n if (tx.type == null) {\n // We need to auto-detect the intended type of this transaction...\n\n if (feeData.maxFeePerGas != null && feeData.maxPriorityFeePerGas != null) {\n // The network supports EIP-1559!\n\n // Upgrade transaction from null to eip-1559\n tx.type = 2;\n\n if (tx.gasPrice != null) {\n // Using legacy gasPrice property on an eip-1559 network,\n // so use gasPrice as both fee properties\n const gasPrice = tx.gasPrice;\n delete tx.gasPrice;\n tx.maxFeePerGas = gasPrice;\n tx.maxPriorityFeePerGas = gasPrice;\n\n } else {\n // Populate missing fee data\n if (tx.maxFeePerGas == null) { tx.maxFeePerGas = feeData.maxFeePerGas; }\n if (tx.maxPriorityFeePerGas == null) { tx.maxPriorityFeePerGas = feeData.maxPriorityFeePerGas; }\n }\n\n } else if (feeData.gasPrice != null) {\n // Network doesn't support EIP-1559...\n\n // ...but they are trying to use EIP-1559 properties\n if (hasEip1559) {\n logger.throwError(\"network does not support EIP-1559\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"populateTransaction\"\n });\n }\n\n // Populate missing fee data\n if (tx.gasPrice == null) { tx.gasPrice = feeData.gasPrice; }\n\n // Explicitly set untyped transaction to legacy\n tx.type = 0;\n\n } else {\n // getFeeData has failed us.\n logger.throwError(\"failed to get consistent fee data\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"signer.getFeeData\"\n });\n }\n\n } else if (tx.type === 2) {\n // Explicitly using EIP-1559\n\n // Populate missing fee data\n if (tx.maxFeePerGas == null) { tx.maxFeePerGas = feeData.maxFeePerGas; }\n if (tx.maxPriorityFeePerGas == null) { tx.maxPriorityFeePerGas = feeData.maxPriorityFeePerGas; }\n }\n }\n\n if (tx.nonce == null) { tx.nonce = this.getTransactionCount(\"pending\"); }\n\n if (tx.gasLimit == null) {\n tx.gasLimit = this.estimateGas(tx).catch((error) => {\n if (forwardErrors.indexOf(error.code) >= 0) {\n throw error;\n }\n\n return logger.throwError(\"cannot estimate gas; transaction may fail or may require manual gas limit\", Logger.errors.UNPREDICTABLE_GAS_LIMIT, {\n error: error,\n tx: tx\n });\n });\n }\n\n if (tx.chainId == null) {\n tx.chainId = this.getChainId();\n } else {\n tx.chainId = Promise.all([\n Promise.resolve(tx.chainId),\n this.getChainId()\n ]).then((results) => {\n if (results[1] !== 0 && results[0] !== results[1]) {\n logger.throwArgumentError(\"chainId address mismatch\", \"transaction\", transaction);\n }\n return results[0];\n });\n }\n\n return await resolveProperties(tx);\n }\n\n\n ///////////////////\n // Sub-classes SHOULD leave these alone\n\n _checkProvider(operation?: string): void {\n if (!this.provider) { logger.throwError(\"missing provider\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: (operation || \"_checkProvider\") });\n }\n }\n\n static isSigner(value: any): value is Signer {\n return !!(value && value._isSigner);\n }\n}\n\nexport class VoidSigner extends Signer implements TypedDataSigner {\n readonly address: string;\n\n constructor(address: string, provider?: Provider) {\n super();\n defineReadOnly(this, \"address\", address);\n defineReadOnly(this, \"provider\", provider || null);\n }\n\n getAddress(): Promise {\n return Promise.resolve(this.address);\n }\n\n _fail(message: string, operation: string): Promise {\n return Promise.resolve().then(() => {\n logger.throwError(message, Logger.errors.UNSUPPORTED_OPERATION, { operation: operation });\n });\n }\n\n signMessage(message: Bytes | string): Promise {\n return this._fail(\"VoidSigner cannot sign messages\", \"signMessage\");\n }\n\n signTransaction(transaction: Deferrable): Promise {\n return this._fail(\"VoidSigner cannot sign transactions\", \"signTransaction\");\n }\n\n _signTypedData(domain: TypedDataDomain, types: Record>, value: Record): Promise {\n return this._fail(\"VoidSigner cannot sign typed data\", \"signTypedData\");\n }\n\n connect(provider: Provider): VoidSigner {\n return new VoidSigner(this.address, provider);\n }\n}\n\n", "(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits (ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n\n // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n Buffer = window.Buffer;\n } else {\n Buffer = require('buffer').Buffer;\n }\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n this.negative = 1;\n }\n\n if (start < number.length) {\n if (base === 16) {\n this._parseHex(number, start, endian);\n } else {\n this._parseBase(number, base, start);\n if (endian === 'le') {\n this._initArray(this.toArray(), base, endian);\n }\n }\n }\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [ number & 0x3ffffff ];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [ 0 ];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this.strip();\n };\n\n function parseHex4Bits (string, index) {\n var c = string.charCodeAt(index);\n // 'A' - 'F'\n if (c >= 65 && c <= 70) {\n return c - 55;\n // 'a' - 'f'\n } else if (c >= 97 && c <= 102) {\n return c - 87;\n // '0' - '9'\n } else {\n return (c - 48) & 0xf;\n }\n }\n\n function parseHexByte (string, lowerBound, index) {\n var r = parseHex4Bits(string, index);\n if (index - 1 >= lowerBound) {\n r |= parseHex4Bits(string, index - 1) << 4;\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start, endian) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n // 24-bits chunks\n var off = 0;\n var j = 0;\n\n var w;\n if (endian === 'be') {\n for (i = number.length - 1; i >= start; i -= 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n } else {\n var parseLength = number.length - start;\n for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n }\n\n this.strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n r += c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n r += c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n r += c;\n }\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [ 0 ];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n this.strip();\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype.strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n BN.prototype.inspect = function inspect () {\n return (this.red ? '';\n };\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16);\n };\n\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n assert(typeof Buffer !== 'undefined');\n return this.toArrayLike(Buffer, endian, length);\n };\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n this.strip();\n var littleEndian = endian === 'le';\n var res = new ArrayType(reqLength);\n\n var b, i;\n var q = this.clone();\n if (!littleEndian) {\n // Assume big-endian\n for (i = 0; i < reqLength - byteLength; i++) {\n res[i] = 0;\n }\n\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[reqLength - i - 1] = b;\n }\n } else {\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[i] = b;\n }\n\n for (; i < reqLength; i++) {\n res[i] = 0;\n }\n }\n\n return res;\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] & (1 << wbit)) >>> wbit;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this.strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this.strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this.strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this.strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this.strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this.strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n function jumboMulTo (self, num, out) {\n var fftm = new FFTM();\n return fftm.mulp(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out.strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this.strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) < num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this.strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this.strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this.strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q.strip();\n }\n a.strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || r2 === 1 && cmp === 0) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modn = function modn (num) {\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return acc;\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n return this.strip();\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this.strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is BN v4 instance\n r.strip();\n } else {\n // r is BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n return a.umod(this.m)._forceRed(this);\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);\n", "module.exports = assert;\n\nfunction assert(val, msg) {\n if (!val)\n throw new Error(msg || 'Assertion failed');\n}\n\nassert.equal = function assertEqual(l, r, msg) {\n if (l != r)\n throw new Error(msg || ('Assertion failed: ' + l + ' != ' + r));\n};\n", "'use strict';\n\nvar utils = exports;\n\nfunction toArray(msg, enc) {\n if (Array.isArray(msg))\n return msg.slice();\n if (!msg)\n return [];\n var res = [];\n if (typeof msg !== 'string') {\n for (var i = 0; i < msg.length; i++)\n res[i] = msg[i] | 0;\n return res;\n }\n if (enc === 'hex') {\n msg = msg.replace(/[^a-z0-9]+/ig, '');\n if (msg.length % 2 !== 0)\n msg = '0' + msg;\n for (var i = 0; i < msg.length; i += 2)\n res.push(parseInt(msg[i] + msg[i + 1], 16));\n } else {\n for (var i = 0; i < msg.length; i++) {\n var c = msg.charCodeAt(i);\n var hi = c >> 8;\n var lo = c & 0xff;\n if (hi)\n res.push(hi, lo);\n else\n res.push(lo);\n }\n }\n return res;\n}\nutils.toArray = toArray;\n\nfunction zero2(word) {\n if (word.length === 1)\n return '0' + word;\n else\n return word;\n}\nutils.zero2 = zero2;\n\nfunction toHex(msg) {\n var res = '';\n for (var i = 0; i < msg.length; i++)\n res += zero2(msg[i].toString(16));\n return res;\n}\nutils.toHex = toHex;\n\nutils.encode = function encode(arr, enc) {\n if (enc === 'hex')\n return toHex(arr);\n else\n return arr;\n};\n", "'use strict';\n\nvar utils = exports;\nvar BN = require('bn.js');\nvar minAssert = require('minimalistic-assert');\nvar minUtils = require('minimalistic-crypto-utils');\n\nutils.assert = minAssert;\nutils.toArray = minUtils.toArray;\nutils.zero2 = minUtils.zero2;\nutils.toHex = minUtils.toHex;\nutils.encode = minUtils.encode;\n\n// Represent num in a w-NAF form\nfunction getNAF(num, w, bits) {\n var naf = new Array(Math.max(num.bitLength(), bits) + 1);\n naf.fill(0);\n\n var ws = 1 << (w + 1);\n var k = num.clone();\n\n for (var i = 0; i < naf.length; i++) {\n var z;\n var mod = k.andln(ws - 1);\n if (k.isOdd()) {\n if (mod > (ws >> 1) - 1)\n z = (ws >> 1) - mod;\n else\n z = mod;\n k.isubn(z);\n } else {\n z = 0;\n }\n\n naf[i] = z;\n k.iushrn(1);\n }\n\n return naf;\n}\nutils.getNAF = getNAF;\n\n// Represent k1, k2 in a Joint Sparse Form\nfunction getJSF(k1, k2) {\n var jsf = [\n [],\n [],\n ];\n\n k1 = k1.clone();\n k2 = k2.clone();\n var d1 = 0;\n var d2 = 0;\n var m8;\n while (k1.cmpn(-d1) > 0 || k2.cmpn(-d2) > 0) {\n // First phase\n var m14 = (k1.andln(3) + d1) & 3;\n var m24 = (k2.andln(3) + d2) & 3;\n if (m14 === 3)\n m14 = -1;\n if (m24 === 3)\n m24 = -1;\n var u1;\n if ((m14 & 1) === 0) {\n u1 = 0;\n } else {\n m8 = (k1.andln(7) + d1) & 7;\n if ((m8 === 3 || m8 === 5) && m24 === 2)\n u1 = -m14;\n else\n u1 = m14;\n }\n jsf[0].push(u1);\n\n var u2;\n if ((m24 & 1) === 0) {\n u2 = 0;\n } else {\n m8 = (k2.andln(7) + d2) & 7;\n if ((m8 === 3 || m8 === 5) && m14 === 2)\n u2 = -m24;\n else\n u2 = m24;\n }\n jsf[1].push(u2);\n\n // Second phase\n if (2 * d1 === u1 + 1)\n d1 = 1 - d1;\n if (2 * d2 === u2 + 1)\n d2 = 1 - d2;\n k1.iushrn(1);\n k2.iushrn(1);\n }\n\n return jsf;\n}\nutils.getJSF = getJSF;\n\nfunction cachedProperty(obj, name, computer) {\n var key = '_' + name;\n obj.prototype[name] = function cachedProperty() {\n return this[key] !== undefined ? this[key] :\n this[key] = computer.call(this);\n };\n}\nutils.cachedProperty = cachedProperty;\n\nfunction parseBytes(bytes) {\n return typeof bytes === 'string' ? utils.toArray(bytes, 'hex') :\n bytes;\n}\nutils.parseBytes = parseBytes;\n\nfunction intFromLE(bytes) {\n return new BN(bytes, 'hex', 'le');\n}\nutils.intFromLE = intFromLE;\n\n", "var r;\n\nmodule.exports = function rand(len) {\n if (!r)\n r = new Rand(null);\n\n return r.generate(len);\n};\n\nfunction Rand(rand) {\n this.rand = rand;\n}\nmodule.exports.Rand = Rand;\n\nRand.prototype.generate = function generate(len) {\n return this._rand(len);\n};\n\n// Emulate crypto API using randy\nRand.prototype._rand = function _rand(n) {\n if (this.rand.getBytes)\n return this.rand.getBytes(n);\n\n var res = new Uint8Array(n);\n for (var i = 0; i < res.length; i++)\n res[i] = this.rand.getByte();\n return res;\n};\n\nif (typeof self === 'object') {\n if (self.crypto && self.crypto.getRandomValues) {\n // Modern browsers\n Rand.prototype._rand = function _rand(n) {\n var arr = new Uint8Array(n);\n self.crypto.getRandomValues(arr);\n return arr;\n };\n } else if (self.msCrypto && self.msCrypto.getRandomValues) {\n // IE\n Rand.prototype._rand = function _rand(n) {\n var arr = new Uint8Array(n);\n self.msCrypto.getRandomValues(arr);\n return arr;\n };\n\n // Safari's WebWorkers do not have `crypto`\n } else if (typeof window === 'object') {\n // Old junk\n Rand.prototype._rand = function() {\n throw new Error('Not implemented yet');\n };\n }\n} else {\n // Node.js or Web worker with no crypto support\n try {\n var crypto = require('crypto');\n if (typeof crypto.randomBytes !== 'function')\n throw new Error('Not supported');\n\n Rand.prototype._rand = function _rand(n) {\n return crypto.randomBytes(n);\n };\n } catch (e) {\n }\n}\n", "'use strict';\n\nvar BN = require('bn.js');\nvar utils = require('../utils');\nvar getNAF = utils.getNAF;\nvar getJSF = utils.getJSF;\nvar assert = utils.assert;\n\nfunction BaseCurve(type, conf) {\n this.type = type;\n this.p = new BN(conf.p, 16);\n\n // Use Montgomery, when there is no fast reduction for the prime\n this.red = conf.prime ? BN.red(conf.prime) : BN.mont(this.p);\n\n // Useful for many curves\n this.zero = new BN(0).toRed(this.red);\n this.one = new BN(1).toRed(this.red);\n this.two = new BN(2).toRed(this.red);\n\n // Curve configuration, optional\n this.n = conf.n && new BN(conf.n, 16);\n this.g = conf.g && this.pointFromJSON(conf.g, conf.gRed);\n\n // Temporary arrays\n this._wnafT1 = new Array(4);\n this._wnafT2 = new Array(4);\n this._wnafT3 = new Array(4);\n this._wnafT4 = new Array(4);\n\n this._bitLength = this.n ? this.n.bitLength() : 0;\n\n // Generalized Greg Maxwell's trick\n var adjustCount = this.n && this.p.div(this.n);\n if (!adjustCount || adjustCount.cmpn(100) > 0) {\n this.redN = null;\n } else {\n this._maxwellTrick = true;\n this.redN = this.n.toRed(this.red);\n }\n}\nmodule.exports = BaseCurve;\n\nBaseCurve.prototype.point = function point() {\n throw new Error('Not implemented');\n};\n\nBaseCurve.prototype.validate = function validate() {\n throw new Error('Not implemented');\n};\n\nBaseCurve.prototype._fixedNafMul = function _fixedNafMul(p, k) {\n assert(p.precomputed);\n var doubles = p._getDoubles();\n\n var naf = getNAF(k, 1, this._bitLength);\n var I = (1 << (doubles.step + 1)) - (doubles.step % 2 === 0 ? 2 : 1);\n I /= 3;\n\n // Translate into more windowed form\n var repr = [];\n var j;\n var nafW;\n for (j = 0; j < naf.length; j += doubles.step) {\n nafW = 0;\n for (var l = j + doubles.step - 1; l >= j; l--)\n nafW = (nafW << 1) + naf[l];\n repr.push(nafW);\n }\n\n var a = this.jpoint(null, null, null);\n var b = this.jpoint(null, null, null);\n for (var i = I; i > 0; i--) {\n for (j = 0; j < repr.length; j++) {\n nafW = repr[j];\n if (nafW === i)\n b = b.mixedAdd(doubles.points[j]);\n else if (nafW === -i)\n b = b.mixedAdd(doubles.points[j].neg());\n }\n a = a.add(b);\n }\n return a.toP();\n};\n\nBaseCurve.prototype._wnafMul = function _wnafMul(p, k) {\n var w = 4;\n\n // Precompute window\n var nafPoints = p._getNAFPoints(w);\n w = nafPoints.wnd;\n var wnd = nafPoints.points;\n\n // Get NAF form\n var naf = getNAF(k, w, this._bitLength);\n\n // Add `this`*(N+1) for every w-NAF index\n var acc = this.jpoint(null, null, null);\n for (var i = naf.length - 1; i >= 0; i--) {\n // Count zeroes\n for (var l = 0; i >= 0 && naf[i] === 0; i--)\n l++;\n if (i >= 0)\n l++;\n acc = acc.dblp(l);\n\n if (i < 0)\n break;\n var z = naf[i];\n assert(z !== 0);\n if (p.type === 'affine') {\n // J +- P\n if (z > 0)\n acc = acc.mixedAdd(wnd[(z - 1) >> 1]);\n else\n acc = acc.mixedAdd(wnd[(-z - 1) >> 1].neg());\n } else {\n // J +- J\n if (z > 0)\n acc = acc.add(wnd[(z - 1) >> 1]);\n else\n acc = acc.add(wnd[(-z - 1) >> 1].neg());\n }\n }\n return p.type === 'affine' ? acc.toP() : acc;\n};\n\nBaseCurve.prototype._wnafMulAdd = function _wnafMulAdd(defW,\n points,\n coeffs,\n len,\n jacobianResult) {\n var wndWidth = this._wnafT1;\n var wnd = this._wnafT2;\n var naf = this._wnafT3;\n\n // Fill all arrays\n var max = 0;\n var i;\n var j;\n var p;\n for (i = 0; i < len; i++) {\n p = points[i];\n var nafPoints = p._getNAFPoints(defW);\n wndWidth[i] = nafPoints.wnd;\n wnd[i] = nafPoints.points;\n }\n\n // Comb small window NAFs\n for (i = len - 1; i >= 1; i -= 2) {\n var a = i - 1;\n var b = i;\n if (wndWidth[a] !== 1 || wndWidth[b] !== 1) {\n naf[a] = getNAF(coeffs[a], wndWidth[a], this._bitLength);\n naf[b] = getNAF(coeffs[b], wndWidth[b], this._bitLength);\n max = Math.max(naf[a].length, max);\n max = Math.max(naf[b].length, max);\n continue;\n }\n\n var comb = [\n points[a], /* 1 */\n null, /* 3 */\n null, /* 5 */\n points[b], /* 7 */\n ];\n\n // Try to avoid Projective points, if possible\n if (points[a].y.cmp(points[b].y) === 0) {\n comb[1] = points[a].add(points[b]);\n comb[2] = points[a].toJ().mixedAdd(points[b].neg());\n } else if (points[a].y.cmp(points[b].y.redNeg()) === 0) {\n comb[1] = points[a].toJ().mixedAdd(points[b]);\n comb[2] = points[a].add(points[b].neg());\n } else {\n comb[1] = points[a].toJ().mixedAdd(points[b]);\n comb[2] = points[a].toJ().mixedAdd(points[b].neg());\n }\n\n var index = [\n -3, /* -1 -1 */\n -1, /* -1 0 */\n -5, /* -1 1 */\n -7, /* 0 -1 */\n 0, /* 0 0 */\n 7, /* 0 1 */\n 5, /* 1 -1 */\n 1, /* 1 0 */\n 3, /* 1 1 */\n ];\n\n var jsf = getJSF(coeffs[a], coeffs[b]);\n max = Math.max(jsf[0].length, max);\n naf[a] = new Array(max);\n naf[b] = new Array(max);\n for (j = 0; j < max; j++) {\n var ja = jsf[0][j] | 0;\n var jb = jsf[1][j] | 0;\n\n naf[a][j] = index[(ja + 1) * 3 + (jb + 1)];\n naf[b][j] = 0;\n wnd[a] = comb;\n }\n }\n\n var acc = this.jpoint(null, null, null);\n var tmp = this._wnafT4;\n for (i = max; i >= 0; i--) {\n var k = 0;\n\n while (i >= 0) {\n var zero = true;\n for (j = 0; j < len; j++) {\n tmp[j] = naf[j][i] | 0;\n if (tmp[j] !== 0)\n zero = false;\n }\n if (!zero)\n break;\n k++;\n i--;\n }\n if (i >= 0)\n k++;\n acc = acc.dblp(k);\n if (i < 0)\n break;\n\n for (j = 0; j < len; j++) {\n var z = tmp[j];\n p;\n if (z === 0)\n continue;\n else if (z > 0)\n p = wnd[j][(z - 1) >> 1];\n else if (z < 0)\n p = wnd[j][(-z - 1) >> 1].neg();\n\n if (p.type === 'affine')\n acc = acc.mixedAdd(p);\n else\n acc = acc.add(p);\n }\n }\n // Zeroify references\n for (i = 0; i < len; i++)\n wnd[i] = null;\n\n if (jacobianResult)\n return acc;\n else\n return acc.toP();\n};\n\nfunction BasePoint(curve, type) {\n this.curve = curve;\n this.type = type;\n this.precomputed = null;\n}\nBaseCurve.BasePoint = BasePoint;\n\nBasePoint.prototype.eq = function eq(/*other*/) {\n throw new Error('Not implemented');\n};\n\nBasePoint.prototype.validate = function validate() {\n return this.curve.validate(this);\n};\n\nBaseCurve.prototype.decodePoint = function decodePoint(bytes, enc) {\n bytes = utils.toArray(bytes, enc);\n\n var len = this.p.byteLength();\n\n // uncompressed, hybrid-odd, hybrid-even\n if ((bytes[0] === 0x04 || bytes[0] === 0x06 || bytes[0] === 0x07) &&\n bytes.length - 1 === 2 * len) {\n if (bytes[0] === 0x06)\n assert(bytes[bytes.length - 1] % 2 === 0);\n else if (bytes[0] === 0x07)\n assert(bytes[bytes.length - 1] % 2 === 1);\n\n var res = this.point(bytes.slice(1, 1 + len),\n bytes.slice(1 + len, 1 + 2 * len));\n\n return res;\n } else if ((bytes[0] === 0x02 || bytes[0] === 0x03) &&\n bytes.length - 1 === len) {\n return this.pointFromX(bytes.slice(1, 1 + len), bytes[0] === 0x03);\n }\n throw new Error('Unknown point format');\n};\n\nBasePoint.prototype.encodeCompressed = function encodeCompressed(enc) {\n return this.encode(enc, true);\n};\n\nBasePoint.prototype._encode = function _encode(compact) {\n var len = this.curve.p.byteLength();\n var x = this.getX().toArray('be', len);\n\n if (compact)\n return [ this.getY().isEven() ? 0x02 : 0x03 ].concat(x);\n\n return [ 0x04 ].concat(x, this.getY().toArray('be', len));\n};\n\nBasePoint.prototype.encode = function encode(enc, compact) {\n return utils.encode(this._encode(compact), enc);\n};\n\nBasePoint.prototype.precompute = function precompute(power) {\n if (this.precomputed)\n return this;\n\n var precomputed = {\n doubles: null,\n naf: null,\n beta: null,\n };\n precomputed.naf = this._getNAFPoints(8);\n precomputed.doubles = this._getDoubles(4, power);\n precomputed.beta = this._getBeta();\n this.precomputed = precomputed;\n\n return this;\n};\n\nBasePoint.prototype._hasDoubles = function _hasDoubles(k) {\n if (!this.precomputed)\n return false;\n\n var doubles = this.precomputed.doubles;\n if (!doubles)\n return false;\n\n return doubles.points.length >= Math.ceil((k.bitLength() + 1) / doubles.step);\n};\n\nBasePoint.prototype._getDoubles = function _getDoubles(step, power) {\n if (this.precomputed && this.precomputed.doubles)\n return this.precomputed.doubles;\n\n var doubles = [ this ];\n var acc = this;\n for (var i = 0; i < power; i += step) {\n for (var j = 0; j < step; j++)\n acc = acc.dbl();\n doubles.push(acc);\n }\n return {\n step: step,\n points: doubles,\n };\n};\n\nBasePoint.prototype._getNAFPoints = function _getNAFPoints(wnd) {\n if (this.precomputed && this.precomputed.naf)\n return this.precomputed.naf;\n\n var res = [ this ];\n var max = (1 << wnd) - 1;\n var dbl = max === 1 ? null : this.dbl();\n for (var i = 1; i < max; i++)\n res[i] = res[i - 1].add(dbl);\n return {\n wnd: wnd,\n points: res,\n };\n};\n\nBasePoint.prototype._getBeta = function _getBeta() {\n return null;\n};\n\nBasePoint.prototype.dblp = function dblp(k) {\n var r = this;\n for (var i = 0; i < k; i++)\n r = r.dbl();\n return r;\n};\n", "'use strict';\n\nvar utils = require('../utils');\nvar BN = require('bn.js');\nvar inherits = require('inherits');\nvar Base = require('./base');\n\nvar assert = utils.assert;\n\nfunction ShortCurve(conf) {\n Base.call(this, 'short', conf);\n\n this.a = new BN(conf.a, 16).toRed(this.red);\n this.b = new BN(conf.b, 16).toRed(this.red);\n this.tinv = this.two.redInvm();\n\n this.zeroA = this.a.fromRed().cmpn(0) === 0;\n this.threeA = this.a.fromRed().sub(this.p).cmpn(-3) === 0;\n\n // If the curve is endomorphic, precalculate beta and lambda\n this.endo = this._getEndomorphism(conf);\n this._endoWnafT1 = new Array(4);\n this._endoWnafT2 = new Array(4);\n}\ninherits(ShortCurve, Base);\nmodule.exports = ShortCurve;\n\nShortCurve.prototype._getEndomorphism = function _getEndomorphism(conf) {\n // No efficient endomorphism\n if (!this.zeroA || !this.g || !this.n || this.p.modn(3) !== 1)\n return;\n\n // Compute beta and lambda, that lambda * P = (beta * Px; Py)\n var beta;\n var lambda;\n if (conf.beta) {\n beta = new BN(conf.beta, 16).toRed(this.red);\n } else {\n var betas = this._getEndoRoots(this.p);\n // Choose the smallest beta\n beta = betas[0].cmp(betas[1]) < 0 ? betas[0] : betas[1];\n beta = beta.toRed(this.red);\n }\n if (conf.lambda) {\n lambda = new BN(conf.lambda, 16);\n } else {\n // Choose the lambda that is matching selected beta\n var lambdas = this._getEndoRoots(this.n);\n if (this.g.mul(lambdas[0]).x.cmp(this.g.x.redMul(beta)) === 0) {\n lambda = lambdas[0];\n } else {\n lambda = lambdas[1];\n assert(this.g.mul(lambda).x.cmp(this.g.x.redMul(beta)) === 0);\n }\n }\n\n // Get basis vectors, used for balanced length-two representation\n var basis;\n if (conf.basis) {\n basis = conf.basis.map(function(vec) {\n return {\n a: new BN(vec.a, 16),\n b: new BN(vec.b, 16),\n };\n });\n } else {\n basis = this._getEndoBasis(lambda);\n }\n\n return {\n beta: beta,\n lambda: lambda,\n basis: basis,\n };\n};\n\nShortCurve.prototype._getEndoRoots = function _getEndoRoots(num) {\n // Find roots of for x^2 + x + 1 in F\n // Root = (-1 +- Sqrt(-3)) / 2\n //\n var red = num === this.p ? this.red : BN.mont(num);\n var tinv = new BN(2).toRed(red).redInvm();\n var ntinv = tinv.redNeg();\n\n var s = new BN(3).toRed(red).redNeg().redSqrt().redMul(tinv);\n\n var l1 = ntinv.redAdd(s).fromRed();\n var l2 = ntinv.redSub(s).fromRed();\n return [ l1, l2 ];\n};\n\nShortCurve.prototype._getEndoBasis = function _getEndoBasis(lambda) {\n // aprxSqrt >= sqrt(this.n)\n var aprxSqrt = this.n.ushrn(Math.floor(this.n.bitLength() / 2));\n\n // 3.74\n // Run EGCD, until r(L + 1) < aprxSqrt\n var u = lambda;\n var v = this.n.clone();\n var x1 = new BN(1);\n var y1 = new BN(0);\n var x2 = new BN(0);\n var y2 = new BN(1);\n\n // NOTE: all vectors are roots of: a + b * lambda = 0 (mod n)\n var a0;\n var b0;\n // First vector\n var a1;\n var b1;\n // Second vector\n var a2;\n var b2;\n\n var prevR;\n var i = 0;\n var r;\n var x;\n while (u.cmpn(0) !== 0) {\n var q = v.div(u);\n r = v.sub(q.mul(u));\n x = x2.sub(q.mul(x1));\n var y = y2.sub(q.mul(y1));\n\n if (!a1 && r.cmp(aprxSqrt) < 0) {\n a0 = prevR.neg();\n b0 = x1;\n a1 = r.neg();\n b1 = x;\n } else if (a1 && ++i === 2) {\n break;\n }\n prevR = r;\n\n v = u;\n u = r;\n x2 = x1;\n x1 = x;\n y2 = y1;\n y1 = y;\n }\n a2 = r.neg();\n b2 = x;\n\n var len1 = a1.sqr().add(b1.sqr());\n var len2 = a2.sqr().add(b2.sqr());\n if (len2.cmp(len1) >= 0) {\n a2 = a0;\n b2 = b0;\n }\n\n // Normalize signs\n if (a1.negative) {\n a1 = a1.neg();\n b1 = b1.neg();\n }\n if (a2.negative) {\n a2 = a2.neg();\n b2 = b2.neg();\n }\n\n return [\n { a: a1, b: b1 },\n { a: a2, b: b2 },\n ];\n};\n\nShortCurve.prototype._endoSplit = function _endoSplit(k) {\n var basis = this.endo.basis;\n var v1 = basis[0];\n var v2 = basis[1];\n\n var c1 = v2.b.mul(k).divRound(this.n);\n var c2 = v1.b.neg().mul(k).divRound(this.n);\n\n var p1 = c1.mul(v1.a);\n var p2 = c2.mul(v2.a);\n var q1 = c1.mul(v1.b);\n var q2 = c2.mul(v2.b);\n\n // Calculate answer\n var k1 = k.sub(p1).sub(p2);\n var k2 = q1.add(q2).neg();\n return { k1: k1, k2: k2 };\n};\n\nShortCurve.prototype.pointFromX = function pointFromX(x, odd) {\n x = new BN(x, 16);\n if (!x.red)\n x = x.toRed(this.red);\n\n var y2 = x.redSqr().redMul(x).redIAdd(x.redMul(this.a)).redIAdd(this.b);\n var y = y2.redSqrt();\n if (y.redSqr().redSub(y2).cmp(this.zero) !== 0)\n throw new Error('invalid point');\n\n // XXX Is there any way to tell if the number is odd without converting it\n // to non-red form?\n var isOdd = y.fromRed().isOdd();\n if (odd && !isOdd || !odd && isOdd)\n y = y.redNeg();\n\n return this.point(x, y);\n};\n\nShortCurve.prototype.validate = function validate(point) {\n if (point.inf)\n return true;\n\n var x = point.x;\n var y = point.y;\n\n var ax = this.a.redMul(x);\n var rhs = x.redSqr().redMul(x).redIAdd(ax).redIAdd(this.b);\n return y.redSqr().redISub(rhs).cmpn(0) === 0;\n};\n\nShortCurve.prototype._endoWnafMulAdd =\n function _endoWnafMulAdd(points, coeffs, jacobianResult) {\n var npoints = this._endoWnafT1;\n var ncoeffs = this._endoWnafT2;\n for (var i = 0; i < points.length; i++) {\n var split = this._endoSplit(coeffs[i]);\n var p = points[i];\n var beta = p._getBeta();\n\n if (split.k1.negative) {\n split.k1.ineg();\n p = p.neg(true);\n }\n if (split.k2.negative) {\n split.k2.ineg();\n beta = beta.neg(true);\n }\n\n npoints[i * 2] = p;\n npoints[i * 2 + 1] = beta;\n ncoeffs[i * 2] = split.k1;\n ncoeffs[i * 2 + 1] = split.k2;\n }\n var res = this._wnafMulAdd(1, npoints, ncoeffs, i * 2, jacobianResult);\n\n // Clean-up references to points and coefficients\n for (var j = 0; j < i * 2; j++) {\n npoints[j] = null;\n ncoeffs[j] = null;\n }\n return res;\n };\n\nfunction Point(curve, x, y, isRed) {\n Base.BasePoint.call(this, curve, 'affine');\n if (x === null && y === null) {\n this.x = null;\n this.y = null;\n this.inf = true;\n } else {\n this.x = new BN(x, 16);\n this.y = new BN(y, 16);\n // Force redgomery representation when loading from JSON\n if (isRed) {\n this.x.forceRed(this.curve.red);\n this.y.forceRed(this.curve.red);\n }\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.y.red)\n this.y = this.y.toRed(this.curve.red);\n this.inf = false;\n }\n}\ninherits(Point, Base.BasePoint);\n\nShortCurve.prototype.point = function point(x, y, isRed) {\n return new Point(this, x, y, isRed);\n};\n\nShortCurve.prototype.pointFromJSON = function pointFromJSON(obj, red) {\n return Point.fromJSON(this, obj, red);\n};\n\nPoint.prototype._getBeta = function _getBeta() {\n if (!this.curve.endo)\n return;\n\n var pre = this.precomputed;\n if (pre && pre.beta)\n return pre.beta;\n\n var beta = this.curve.point(this.x.redMul(this.curve.endo.beta), this.y);\n if (pre) {\n var curve = this.curve;\n var endoMul = function(p) {\n return curve.point(p.x.redMul(curve.endo.beta), p.y);\n };\n pre.beta = beta;\n beta.precomputed = {\n beta: null,\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: pre.naf.points.map(endoMul),\n },\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: pre.doubles.points.map(endoMul),\n },\n };\n }\n return beta;\n};\n\nPoint.prototype.toJSON = function toJSON() {\n if (!this.precomputed)\n return [ this.x, this.y ];\n\n return [ this.x, this.y, this.precomputed && {\n doubles: this.precomputed.doubles && {\n step: this.precomputed.doubles.step,\n points: this.precomputed.doubles.points.slice(1),\n },\n naf: this.precomputed.naf && {\n wnd: this.precomputed.naf.wnd,\n points: this.precomputed.naf.points.slice(1),\n },\n } ];\n};\n\nPoint.fromJSON = function fromJSON(curve, obj, red) {\n if (typeof obj === 'string')\n obj = JSON.parse(obj);\n var res = curve.point(obj[0], obj[1], red);\n if (!obj[2])\n return res;\n\n function obj2point(obj) {\n return curve.point(obj[0], obj[1], red);\n }\n\n var pre = obj[2];\n res.precomputed = {\n beta: null,\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: [ res ].concat(pre.doubles.points.map(obj2point)),\n },\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: [ res ].concat(pre.naf.points.map(obj2point)),\n },\n };\n return res;\n};\n\nPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '';\n return '';\n};\n\nPoint.prototype.isInfinity = function isInfinity() {\n return this.inf;\n};\n\nPoint.prototype.add = function add(p) {\n // O + P = P\n if (this.inf)\n return p;\n\n // P + O = P\n if (p.inf)\n return this;\n\n // P + P = 2P\n if (this.eq(p))\n return this.dbl();\n\n // P + (-P) = O\n if (this.neg().eq(p))\n return this.curve.point(null, null);\n\n // P + Q = O\n if (this.x.cmp(p.x) === 0)\n return this.curve.point(null, null);\n\n var c = this.y.redSub(p.y);\n if (c.cmpn(0) !== 0)\n c = c.redMul(this.x.redSub(p.x).redInvm());\n var nx = c.redSqr().redISub(this.x).redISub(p.x);\n var ny = c.redMul(this.x.redSub(nx)).redISub(this.y);\n return this.curve.point(nx, ny);\n};\n\nPoint.prototype.dbl = function dbl() {\n if (this.inf)\n return this;\n\n // 2P = O\n var ys1 = this.y.redAdd(this.y);\n if (ys1.cmpn(0) === 0)\n return this.curve.point(null, null);\n\n var a = this.curve.a;\n\n var x2 = this.x.redSqr();\n var dyinv = ys1.redInvm();\n var c = x2.redAdd(x2).redIAdd(x2).redIAdd(a).redMul(dyinv);\n\n var nx = c.redSqr().redISub(this.x.redAdd(this.x));\n var ny = c.redMul(this.x.redSub(nx)).redISub(this.y);\n return this.curve.point(nx, ny);\n};\n\nPoint.prototype.getX = function getX() {\n return this.x.fromRed();\n};\n\nPoint.prototype.getY = function getY() {\n return this.y.fromRed();\n};\n\nPoint.prototype.mul = function mul(k) {\n k = new BN(k, 16);\n if (this.isInfinity())\n return this;\n else if (this._hasDoubles(k))\n return this.curve._fixedNafMul(this, k);\n else if (this.curve.endo)\n return this.curve._endoWnafMulAdd([ this ], [ k ]);\n else\n return this.curve._wnafMul(this, k);\n};\n\nPoint.prototype.mulAdd = function mulAdd(k1, p2, k2) {\n var points = [ this, p2 ];\n var coeffs = [ k1, k2 ];\n if (this.curve.endo)\n return this.curve._endoWnafMulAdd(points, coeffs);\n else\n return this.curve._wnafMulAdd(1, points, coeffs, 2);\n};\n\nPoint.prototype.jmulAdd = function jmulAdd(k1, p2, k2) {\n var points = [ this, p2 ];\n var coeffs = [ k1, k2 ];\n if (this.curve.endo)\n return this.curve._endoWnafMulAdd(points, coeffs, true);\n else\n return this.curve._wnafMulAdd(1, points, coeffs, 2, true);\n};\n\nPoint.prototype.eq = function eq(p) {\n return this === p ||\n this.inf === p.inf &&\n (this.inf || this.x.cmp(p.x) === 0 && this.y.cmp(p.y) === 0);\n};\n\nPoint.prototype.neg = function neg(_precompute) {\n if (this.inf)\n return this;\n\n var res = this.curve.point(this.x, this.y.redNeg());\n if (_precompute && this.precomputed) {\n var pre = this.precomputed;\n var negate = function(p) {\n return p.neg();\n };\n res.precomputed = {\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: pre.naf.points.map(negate),\n },\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: pre.doubles.points.map(negate),\n },\n };\n }\n return res;\n};\n\nPoint.prototype.toJ = function toJ() {\n if (this.inf)\n return this.curve.jpoint(null, null, null);\n\n var res = this.curve.jpoint(this.x, this.y, this.curve.one);\n return res;\n};\n\nfunction JPoint(curve, x, y, z) {\n Base.BasePoint.call(this, curve, 'jacobian');\n if (x === null && y === null && z === null) {\n this.x = this.curve.one;\n this.y = this.curve.one;\n this.z = new BN(0);\n } else {\n this.x = new BN(x, 16);\n this.y = new BN(y, 16);\n this.z = new BN(z, 16);\n }\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.y.red)\n this.y = this.y.toRed(this.curve.red);\n if (!this.z.red)\n this.z = this.z.toRed(this.curve.red);\n\n this.zOne = this.z === this.curve.one;\n}\ninherits(JPoint, Base.BasePoint);\n\nShortCurve.prototype.jpoint = function jpoint(x, y, z) {\n return new JPoint(this, x, y, z);\n};\n\nJPoint.prototype.toP = function toP() {\n if (this.isInfinity())\n return this.curve.point(null, null);\n\n var zinv = this.z.redInvm();\n var zinv2 = zinv.redSqr();\n var ax = this.x.redMul(zinv2);\n var ay = this.y.redMul(zinv2).redMul(zinv);\n\n return this.curve.point(ax, ay);\n};\n\nJPoint.prototype.neg = function neg() {\n return this.curve.jpoint(this.x, this.y.redNeg(), this.z);\n};\n\nJPoint.prototype.add = function add(p) {\n // O + P = P\n if (this.isInfinity())\n return p;\n\n // P + O = P\n if (p.isInfinity())\n return this;\n\n // 12M + 4S + 7A\n var pz2 = p.z.redSqr();\n var z2 = this.z.redSqr();\n var u1 = this.x.redMul(pz2);\n var u2 = p.x.redMul(z2);\n var s1 = this.y.redMul(pz2.redMul(p.z));\n var s2 = p.y.redMul(z2.redMul(this.z));\n\n var h = u1.redSub(u2);\n var r = s1.redSub(s2);\n if (h.cmpn(0) === 0) {\n if (r.cmpn(0) !== 0)\n return this.curve.jpoint(null, null, null);\n else\n return this.dbl();\n }\n\n var h2 = h.redSqr();\n var h3 = h2.redMul(h);\n var v = u1.redMul(h2);\n\n var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v);\n var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3));\n var nz = this.z.redMul(p.z).redMul(h);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.mixedAdd = function mixedAdd(p) {\n // O + P = P\n if (this.isInfinity())\n return p.toJ();\n\n // P + O = P\n if (p.isInfinity())\n return this;\n\n // 8M + 3S + 7A\n var z2 = this.z.redSqr();\n var u1 = this.x;\n var u2 = p.x.redMul(z2);\n var s1 = this.y;\n var s2 = p.y.redMul(z2).redMul(this.z);\n\n var h = u1.redSub(u2);\n var r = s1.redSub(s2);\n if (h.cmpn(0) === 0) {\n if (r.cmpn(0) !== 0)\n return this.curve.jpoint(null, null, null);\n else\n return this.dbl();\n }\n\n var h2 = h.redSqr();\n var h3 = h2.redMul(h);\n var v = u1.redMul(h2);\n\n var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v);\n var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3));\n var nz = this.z.redMul(h);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.dblp = function dblp(pow) {\n if (pow === 0)\n return this;\n if (this.isInfinity())\n return this;\n if (!pow)\n return this.dbl();\n\n var i;\n if (this.curve.zeroA || this.curve.threeA) {\n var r = this;\n for (i = 0; i < pow; i++)\n r = r.dbl();\n return r;\n }\n\n // 1M + 2S + 1A + N * (4S + 5M + 8A)\n // N = 1 => 6M + 6S + 9A\n var a = this.curve.a;\n var tinv = this.curve.tinv;\n\n var jx = this.x;\n var jy = this.y;\n var jz = this.z;\n var jz4 = jz.redSqr().redSqr();\n\n // Reuse results\n var jyd = jy.redAdd(jy);\n for (i = 0; i < pow; i++) {\n var jx2 = jx.redSqr();\n var jyd2 = jyd.redSqr();\n var jyd4 = jyd2.redSqr();\n var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4));\n\n var t1 = jx.redMul(jyd2);\n var nx = c.redSqr().redISub(t1.redAdd(t1));\n var t2 = t1.redISub(nx);\n var dny = c.redMul(t2);\n dny = dny.redIAdd(dny).redISub(jyd4);\n var nz = jyd.redMul(jz);\n if (i + 1 < pow)\n jz4 = jz4.redMul(jyd4);\n\n jx = nx;\n jz = nz;\n jyd = dny;\n }\n\n return this.curve.jpoint(jx, jyd.redMul(tinv), jz);\n};\n\nJPoint.prototype.dbl = function dbl() {\n if (this.isInfinity())\n return this;\n\n if (this.curve.zeroA)\n return this._zeroDbl();\n else if (this.curve.threeA)\n return this._threeDbl();\n else\n return this._dbl();\n};\n\nJPoint.prototype._zeroDbl = function _zeroDbl() {\n var nx;\n var ny;\n var nz;\n // Z = 1\n if (this.zOne) {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html\n // #doubling-mdbl-2007-bl\n // 1M + 5S + 14A\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // S = 2 * ((X1 + YY)^2 - XX - YYYY)\n var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n s = s.redIAdd(s);\n // M = 3 * XX + a; a = 0\n var m = xx.redAdd(xx).redIAdd(xx);\n // T = M ^ 2 - 2*S\n var t = m.redSqr().redISub(s).redISub(s);\n\n // 8 * YYYY\n var yyyy8 = yyyy.redIAdd(yyyy);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n\n // X3 = T\n nx = t;\n // Y3 = M * (S - T) - 8 * YYYY\n ny = m.redMul(s.redISub(t)).redISub(yyyy8);\n // Z3 = 2*Y1\n nz = this.y.redAdd(this.y);\n } else {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html\n // #doubling-dbl-2009-l\n // 2M + 5S + 13A\n\n // A = X1^2\n var a = this.x.redSqr();\n // B = Y1^2\n var b = this.y.redSqr();\n // C = B^2\n var c = b.redSqr();\n // D = 2 * ((X1 + B)^2 - A - C)\n var d = this.x.redAdd(b).redSqr().redISub(a).redISub(c);\n d = d.redIAdd(d);\n // E = 3 * A\n var e = a.redAdd(a).redIAdd(a);\n // F = E^2\n var f = e.redSqr();\n\n // 8 * C\n var c8 = c.redIAdd(c);\n c8 = c8.redIAdd(c8);\n c8 = c8.redIAdd(c8);\n\n // X3 = F - 2 * D\n nx = f.redISub(d).redISub(d);\n // Y3 = E * (D - X3) - 8 * C\n ny = e.redMul(d.redISub(nx)).redISub(c8);\n // Z3 = 2 * Y1 * Z1\n nz = this.y.redMul(this.z);\n nz = nz.redIAdd(nz);\n }\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype._threeDbl = function _threeDbl() {\n var nx;\n var ny;\n var nz;\n // Z = 1\n if (this.zOne) {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html\n // #doubling-mdbl-2007-bl\n // 1M + 5S + 15A\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // S = 2 * ((X1 + YY)^2 - XX - YYYY)\n var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n s = s.redIAdd(s);\n // M = 3 * XX + a\n var m = xx.redAdd(xx).redIAdd(xx).redIAdd(this.curve.a);\n // T = M^2 - 2 * S\n var t = m.redSqr().redISub(s).redISub(s);\n // X3 = T\n nx = t;\n // Y3 = M * (S - T) - 8 * YYYY\n var yyyy8 = yyyy.redIAdd(yyyy);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n ny = m.redMul(s.redISub(t)).redISub(yyyy8);\n // Z3 = 2 * Y1\n nz = this.y.redAdd(this.y);\n } else {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html#doubling-dbl-2001-b\n // 3M + 5S\n\n // delta = Z1^2\n var delta = this.z.redSqr();\n // gamma = Y1^2\n var gamma = this.y.redSqr();\n // beta = X1 * gamma\n var beta = this.x.redMul(gamma);\n // alpha = 3 * (X1 - delta) * (X1 + delta)\n var alpha = this.x.redSub(delta).redMul(this.x.redAdd(delta));\n alpha = alpha.redAdd(alpha).redIAdd(alpha);\n // X3 = alpha^2 - 8 * beta\n var beta4 = beta.redIAdd(beta);\n beta4 = beta4.redIAdd(beta4);\n var beta8 = beta4.redAdd(beta4);\n nx = alpha.redSqr().redISub(beta8);\n // Z3 = (Y1 + Z1)^2 - gamma - delta\n nz = this.y.redAdd(this.z).redSqr().redISub(gamma).redISub(delta);\n // Y3 = alpha * (4 * beta - X3) - 8 * gamma^2\n var ggamma8 = gamma.redSqr();\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ny = alpha.redMul(beta4.redISub(nx)).redISub(ggamma8);\n }\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype._dbl = function _dbl() {\n var a = this.curve.a;\n\n // 4M + 6S + 10A\n var jx = this.x;\n var jy = this.y;\n var jz = this.z;\n var jz4 = jz.redSqr().redSqr();\n\n var jx2 = jx.redSqr();\n var jy2 = jy.redSqr();\n\n var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4));\n\n var jxd4 = jx.redAdd(jx);\n jxd4 = jxd4.redIAdd(jxd4);\n var t1 = jxd4.redMul(jy2);\n var nx = c.redSqr().redISub(t1.redAdd(t1));\n var t2 = t1.redISub(nx);\n\n var jyd8 = jy2.redSqr();\n jyd8 = jyd8.redIAdd(jyd8);\n jyd8 = jyd8.redIAdd(jyd8);\n jyd8 = jyd8.redIAdd(jyd8);\n var ny = c.redMul(t2).redISub(jyd8);\n var nz = jy.redAdd(jy).redMul(jz);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.trpl = function trpl() {\n if (!this.curve.zeroA)\n return this.dbl().add(this);\n\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html#tripling-tpl-2007-bl\n // 5M + 10S + ...\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // ZZ = Z1^2\n var zz = this.z.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // M = 3 * XX + a * ZZ2; a = 0\n var m = xx.redAdd(xx).redIAdd(xx);\n // MM = M^2\n var mm = m.redSqr();\n // E = 6 * ((X1 + YY)^2 - XX - YYYY) - MM\n var e = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n e = e.redIAdd(e);\n e = e.redAdd(e).redIAdd(e);\n e = e.redISub(mm);\n // EE = E^2\n var ee = e.redSqr();\n // T = 16*YYYY\n var t = yyyy.redIAdd(yyyy);\n t = t.redIAdd(t);\n t = t.redIAdd(t);\n t = t.redIAdd(t);\n // U = (M + E)^2 - MM - EE - T\n var u = m.redIAdd(e).redSqr().redISub(mm).redISub(ee).redISub(t);\n // X3 = 4 * (X1 * EE - 4 * YY * U)\n var yyu4 = yy.redMul(u);\n yyu4 = yyu4.redIAdd(yyu4);\n yyu4 = yyu4.redIAdd(yyu4);\n var nx = this.x.redMul(ee).redISub(yyu4);\n nx = nx.redIAdd(nx);\n nx = nx.redIAdd(nx);\n // Y3 = 8 * Y1 * (U * (T - U) - E * EE)\n var ny = this.y.redMul(u.redMul(t.redISub(u)).redISub(e.redMul(ee)));\n ny = ny.redIAdd(ny);\n ny = ny.redIAdd(ny);\n ny = ny.redIAdd(ny);\n // Z3 = (Z1 + E)^2 - ZZ - EE\n var nz = this.z.redAdd(e).redSqr().redISub(zz).redISub(ee);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.mul = function mul(k, kbase) {\n k = new BN(k, kbase);\n\n return this.curve._wnafMul(this, k);\n};\n\nJPoint.prototype.eq = function eq(p) {\n if (p.type === 'affine')\n return this.eq(p.toJ());\n\n if (this === p)\n return true;\n\n // x1 * z2^2 == x2 * z1^2\n var z2 = this.z.redSqr();\n var pz2 = p.z.redSqr();\n if (this.x.redMul(pz2).redISub(p.x.redMul(z2)).cmpn(0) !== 0)\n return false;\n\n // y1 * z2^3 == y2 * z1^3\n var z3 = z2.redMul(this.z);\n var pz3 = pz2.redMul(p.z);\n return this.y.redMul(pz3).redISub(p.y.redMul(z3)).cmpn(0) === 0;\n};\n\nJPoint.prototype.eqXToP = function eqXToP(x) {\n var zs = this.z.redSqr();\n var rx = x.toRed(this.curve.red).redMul(zs);\n if (this.x.cmp(rx) === 0)\n return true;\n\n var xc = x.clone();\n var t = this.curve.redN.redMul(zs);\n for (;;) {\n xc.iadd(this.curve.n);\n if (xc.cmp(this.curve.p) >= 0)\n return false;\n\n rx.redIAdd(t);\n if (this.x.cmp(rx) === 0)\n return true;\n }\n};\n\nJPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '';\n return '';\n};\n\nJPoint.prototype.isInfinity = function isInfinity() {\n // XXX This code assumes that zero is always zero in red\n return this.z.cmpn(0) === 0;\n};\n", "'use strict';\n\nvar BN = require('bn.js');\nvar inherits = require('inherits');\nvar Base = require('./base');\n\nvar utils = require('../utils');\n\nfunction MontCurve(conf) {\n Base.call(this, 'mont', conf);\n\n this.a = new BN(conf.a, 16).toRed(this.red);\n this.b = new BN(conf.b, 16).toRed(this.red);\n this.i4 = new BN(4).toRed(this.red).redInvm();\n this.two = new BN(2).toRed(this.red);\n this.a24 = this.i4.redMul(this.a.redAdd(this.two));\n}\ninherits(MontCurve, Base);\nmodule.exports = MontCurve;\n\nMontCurve.prototype.validate = function validate(point) {\n var x = point.normalize().x;\n var x2 = x.redSqr();\n var rhs = x2.redMul(x).redAdd(x2.redMul(this.a)).redAdd(x);\n var y = rhs.redSqrt();\n\n return y.redSqr().cmp(rhs) === 0;\n};\n\nfunction Point(curve, x, z) {\n Base.BasePoint.call(this, curve, 'projective');\n if (x === null && z === null) {\n this.x = this.curve.one;\n this.z = this.curve.zero;\n } else {\n this.x = new BN(x, 16);\n this.z = new BN(z, 16);\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.z.red)\n this.z = this.z.toRed(this.curve.red);\n }\n}\ninherits(Point, Base.BasePoint);\n\nMontCurve.prototype.decodePoint = function decodePoint(bytes, enc) {\n return this.point(utils.toArray(bytes, enc), 1);\n};\n\nMontCurve.prototype.point = function point(x, z) {\n return new Point(this, x, z);\n};\n\nMontCurve.prototype.pointFromJSON = function pointFromJSON(obj) {\n return Point.fromJSON(this, obj);\n};\n\nPoint.prototype.precompute = function precompute() {\n // No-op\n};\n\nPoint.prototype._encode = function _encode() {\n return this.getX().toArray('be', this.curve.p.byteLength());\n};\n\nPoint.fromJSON = function fromJSON(curve, obj) {\n return new Point(curve, obj[0], obj[1] || curve.one);\n};\n\nPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '';\n return '';\n};\n\nPoint.prototype.isInfinity = function isInfinity() {\n // XXX This code assumes that zero is always zero in red\n return this.z.cmpn(0) === 0;\n};\n\nPoint.prototype.dbl = function dbl() {\n // http://hyperelliptic.org/EFD/g1p/auto-montgom-xz.html#doubling-dbl-1987-m-3\n // 2M + 2S + 4A\n\n // A = X1 + Z1\n var a = this.x.redAdd(this.z);\n // AA = A^2\n var aa = a.redSqr();\n // B = X1 - Z1\n var b = this.x.redSub(this.z);\n // BB = B^2\n var bb = b.redSqr();\n // C = AA - BB\n var c = aa.redSub(bb);\n // X3 = AA * BB\n var nx = aa.redMul(bb);\n // Z3 = C * (BB + A24 * C)\n var nz = c.redMul(bb.redAdd(this.curve.a24.redMul(c)));\n return this.curve.point(nx, nz);\n};\n\nPoint.prototype.add = function add() {\n throw new Error('Not supported on Montgomery curve');\n};\n\nPoint.prototype.diffAdd = function diffAdd(p, diff) {\n // http://hyperelliptic.org/EFD/g1p/auto-montgom-xz.html#diffadd-dadd-1987-m-3\n // 4M + 2S + 6A\n\n // A = X2 + Z2\n var a = this.x.redAdd(this.z);\n // B = X2 - Z2\n var b = this.x.redSub(this.z);\n // C = X3 + Z3\n var c = p.x.redAdd(p.z);\n // D = X3 - Z3\n var d = p.x.redSub(p.z);\n // DA = D * A\n var da = d.redMul(a);\n // CB = C * B\n var cb = c.redMul(b);\n // X5 = Z1 * (DA + CB)^2\n var nx = diff.z.redMul(da.redAdd(cb).redSqr());\n // Z5 = X1 * (DA - CB)^2\n var nz = diff.x.redMul(da.redISub(cb).redSqr());\n return this.curve.point(nx, nz);\n};\n\nPoint.prototype.mul = function mul(k) {\n var t = k.clone();\n var a = this; // (N / 2) * Q + Q\n var b = this.curve.point(null, null); // (N / 2) * Q\n var c = this; // Q\n\n for (var bits = []; t.cmpn(0) !== 0; t.iushrn(1))\n bits.push(t.andln(1));\n\n for (var i = bits.length - 1; i >= 0; i--) {\n if (bits[i] === 0) {\n // N * Q + Q = ((N / 2) * Q + Q)) + (N / 2) * Q\n a = a.diffAdd(b, c);\n // N * Q = 2 * ((N / 2) * Q + Q))\n b = b.dbl();\n } else {\n // N * Q = ((N / 2) * Q + Q) + ((N / 2) * Q)\n b = a.diffAdd(b, c);\n // N * Q + Q = 2 * ((N / 2) * Q + Q)\n a = a.dbl();\n }\n }\n return b;\n};\n\nPoint.prototype.mulAdd = function mulAdd() {\n throw new Error('Not supported on Montgomery curve');\n};\n\nPoint.prototype.jumlAdd = function jumlAdd() {\n throw new Error('Not supported on Montgomery curve');\n};\n\nPoint.prototype.eq = function eq(other) {\n return this.getX().cmp(other.getX()) === 0;\n};\n\nPoint.prototype.normalize = function normalize() {\n this.x = this.x.redMul(this.z.redInvm());\n this.z = this.curve.one;\n return this;\n};\n\nPoint.prototype.getX = function getX() {\n // Normalize coordinates\n this.normalize();\n\n return this.x.fromRed();\n};\n", "'use strict';\n\nvar utils = require('../utils');\nvar BN = require('bn.js');\nvar inherits = require('inherits');\nvar Base = require('./base');\n\nvar assert = utils.assert;\n\nfunction EdwardsCurve(conf) {\n // NOTE: Important as we are creating point in Base.call()\n this.twisted = (conf.a | 0) !== 1;\n this.mOneA = this.twisted && (conf.a | 0) === -1;\n this.extended = this.mOneA;\n\n Base.call(this, 'edwards', conf);\n\n this.a = new BN(conf.a, 16).umod(this.red.m);\n this.a = this.a.toRed(this.red);\n this.c = new BN(conf.c, 16).toRed(this.red);\n this.c2 = this.c.redSqr();\n this.d = new BN(conf.d, 16).toRed(this.red);\n this.dd = this.d.redAdd(this.d);\n\n assert(!this.twisted || this.c.fromRed().cmpn(1) === 0);\n this.oneC = (conf.c | 0) === 1;\n}\ninherits(EdwardsCurve, Base);\nmodule.exports = EdwardsCurve;\n\nEdwardsCurve.prototype._mulA = function _mulA(num) {\n if (this.mOneA)\n return num.redNeg();\n else\n return this.a.redMul(num);\n};\n\nEdwardsCurve.prototype._mulC = function _mulC(num) {\n if (this.oneC)\n return num;\n else\n return this.c.redMul(num);\n};\n\n// Just for compatibility with Short curve\nEdwardsCurve.prototype.jpoint = function jpoint(x, y, z, t) {\n return this.point(x, y, z, t);\n};\n\nEdwardsCurve.prototype.pointFromX = function pointFromX(x, odd) {\n x = new BN(x, 16);\n if (!x.red)\n x = x.toRed(this.red);\n\n var x2 = x.redSqr();\n var rhs = this.c2.redSub(this.a.redMul(x2));\n var lhs = this.one.redSub(this.c2.redMul(this.d).redMul(x2));\n\n var y2 = rhs.redMul(lhs.redInvm());\n var y = y2.redSqrt();\n if (y.redSqr().redSub(y2).cmp(this.zero) !== 0)\n throw new Error('invalid point');\n\n var isOdd = y.fromRed().isOdd();\n if (odd && !isOdd || !odd && isOdd)\n y = y.redNeg();\n\n return this.point(x, y);\n};\n\nEdwardsCurve.prototype.pointFromY = function pointFromY(y, odd) {\n y = new BN(y, 16);\n if (!y.red)\n y = y.toRed(this.red);\n\n // x^2 = (y^2 - c^2) / (c^2 d y^2 - a)\n var y2 = y.redSqr();\n var lhs = y2.redSub(this.c2);\n var rhs = y2.redMul(this.d).redMul(this.c2).redSub(this.a);\n var x2 = lhs.redMul(rhs.redInvm());\n\n if (x2.cmp(this.zero) === 0) {\n if (odd)\n throw new Error('invalid point');\n else\n return this.point(this.zero, y);\n }\n\n var x = x2.redSqrt();\n if (x.redSqr().redSub(x2).cmp(this.zero) !== 0)\n throw new Error('invalid point');\n\n if (x.fromRed().isOdd() !== odd)\n x = x.redNeg();\n\n return this.point(x, y);\n};\n\nEdwardsCurve.prototype.validate = function validate(point) {\n if (point.isInfinity())\n return true;\n\n // Curve: A * X^2 + Y^2 = C^2 * (1 + D * X^2 * Y^2)\n point.normalize();\n\n var x2 = point.x.redSqr();\n var y2 = point.y.redSqr();\n var lhs = x2.redMul(this.a).redAdd(y2);\n var rhs = this.c2.redMul(this.one.redAdd(this.d.redMul(x2).redMul(y2)));\n\n return lhs.cmp(rhs) === 0;\n};\n\nfunction Point(curve, x, y, z, t) {\n Base.BasePoint.call(this, curve, 'projective');\n if (x === null && y === null && z === null) {\n this.x = this.curve.zero;\n this.y = this.curve.one;\n this.z = this.curve.one;\n this.t = this.curve.zero;\n this.zOne = true;\n } else {\n this.x = new BN(x, 16);\n this.y = new BN(y, 16);\n this.z = z ? new BN(z, 16) : this.curve.one;\n this.t = t && new BN(t, 16);\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.y.red)\n this.y = this.y.toRed(this.curve.red);\n if (!this.z.red)\n this.z = this.z.toRed(this.curve.red);\n if (this.t && !this.t.red)\n this.t = this.t.toRed(this.curve.red);\n this.zOne = this.z === this.curve.one;\n\n // Use extended coordinates\n if (this.curve.extended && !this.t) {\n this.t = this.x.redMul(this.y);\n if (!this.zOne)\n this.t = this.t.redMul(this.z.redInvm());\n }\n }\n}\ninherits(Point, Base.BasePoint);\n\nEdwardsCurve.prototype.pointFromJSON = function pointFromJSON(obj) {\n return Point.fromJSON(this, obj);\n};\n\nEdwardsCurve.prototype.point = function point(x, y, z, t) {\n return new Point(this, x, y, z, t);\n};\n\nPoint.fromJSON = function fromJSON(curve, obj) {\n return new Point(curve, obj[0], obj[1], obj[2]);\n};\n\nPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '';\n return '';\n};\n\nPoint.prototype.isInfinity = function isInfinity() {\n // XXX This code assumes that zero is always zero in red\n return this.x.cmpn(0) === 0 &&\n (this.y.cmp(this.z) === 0 ||\n (this.zOne && this.y.cmp(this.curve.c) === 0));\n};\n\nPoint.prototype._extDbl = function _extDbl() {\n // hyperelliptic.org/EFD/g1p/auto-twisted-extended-1.html\n // #doubling-dbl-2008-hwcd\n // 4M + 4S\n\n // A = X1^2\n var a = this.x.redSqr();\n // B = Y1^2\n var b = this.y.redSqr();\n // C = 2 * Z1^2\n var c = this.z.redSqr();\n c = c.redIAdd(c);\n // D = a * A\n var d = this.curve._mulA(a);\n // E = (X1 + Y1)^2 - A - B\n var e = this.x.redAdd(this.y).redSqr().redISub(a).redISub(b);\n // G = D + B\n var g = d.redAdd(b);\n // F = G - C\n var f = g.redSub(c);\n // H = D - B\n var h = d.redSub(b);\n // X3 = E * F\n var nx = e.redMul(f);\n // Y3 = G * H\n var ny = g.redMul(h);\n // T3 = E * H\n var nt = e.redMul(h);\n // Z3 = F * G\n var nz = f.redMul(g);\n return this.curve.point(nx, ny, nz, nt);\n};\n\nPoint.prototype._projDbl = function _projDbl() {\n // hyperelliptic.org/EFD/g1p/auto-twisted-projective.html\n // #doubling-dbl-2008-bbjlp\n // #doubling-dbl-2007-bl\n // and others\n // Generally 3M + 4S or 2M + 4S\n\n // B = (X1 + Y1)^2\n var b = this.x.redAdd(this.y).redSqr();\n // C = X1^2\n var c = this.x.redSqr();\n // D = Y1^2\n var d = this.y.redSqr();\n\n var nx;\n var ny;\n var nz;\n var e;\n var h;\n var j;\n if (this.curve.twisted) {\n // E = a * C\n e = this.curve._mulA(c);\n // F = E + D\n var f = e.redAdd(d);\n if (this.zOne) {\n // X3 = (B - C - D) * (F - 2)\n nx = b.redSub(c).redSub(d).redMul(f.redSub(this.curve.two));\n // Y3 = F * (E - D)\n ny = f.redMul(e.redSub(d));\n // Z3 = F^2 - 2 * F\n nz = f.redSqr().redSub(f).redSub(f);\n } else {\n // H = Z1^2\n h = this.z.redSqr();\n // J = F - 2 * H\n j = f.redSub(h).redISub(h);\n // X3 = (B-C-D)*J\n nx = b.redSub(c).redISub(d).redMul(j);\n // Y3 = F * (E - D)\n ny = f.redMul(e.redSub(d));\n // Z3 = F * J\n nz = f.redMul(j);\n }\n } else {\n // E = C + D\n e = c.redAdd(d);\n // H = (c * Z1)^2\n h = this.curve._mulC(this.z).redSqr();\n // J = E - 2 * H\n j = e.redSub(h).redSub(h);\n // X3 = c * (B - E) * J\n nx = this.curve._mulC(b.redISub(e)).redMul(j);\n // Y3 = c * E * (C - D)\n ny = this.curve._mulC(e).redMul(c.redISub(d));\n // Z3 = E * J\n nz = e.redMul(j);\n }\n return this.curve.point(nx, ny, nz);\n};\n\nPoint.prototype.dbl = function dbl() {\n if (this.isInfinity())\n return this;\n\n // Double in extended coordinates\n if (this.curve.extended)\n return this._extDbl();\n else\n return this._projDbl();\n};\n\nPoint.prototype._extAdd = function _extAdd(p) {\n // hyperelliptic.org/EFD/g1p/auto-twisted-extended-1.html\n // #addition-add-2008-hwcd-3\n // 8M\n\n // A = (Y1 - X1) * (Y2 - X2)\n var a = this.y.redSub(this.x).redMul(p.y.redSub(p.x));\n // B = (Y1 + X1) * (Y2 + X2)\n var b = this.y.redAdd(this.x).redMul(p.y.redAdd(p.x));\n // C = T1 * k * T2\n var c = this.t.redMul(this.curve.dd).redMul(p.t);\n // D = Z1 * 2 * Z2\n var d = this.z.redMul(p.z.redAdd(p.z));\n // E = B - A\n var e = b.redSub(a);\n // F = D - C\n var f = d.redSub(c);\n // G = D + C\n var g = d.redAdd(c);\n // H = B + A\n var h = b.redAdd(a);\n // X3 = E * F\n var nx = e.redMul(f);\n // Y3 = G * H\n var ny = g.redMul(h);\n // T3 = E * H\n var nt = e.redMul(h);\n // Z3 = F * G\n var nz = f.redMul(g);\n return this.curve.point(nx, ny, nz, nt);\n};\n\nPoint.prototype._projAdd = function _projAdd(p) {\n // hyperelliptic.org/EFD/g1p/auto-twisted-projective.html\n // #addition-add-2008-bbjlp\n // #addition-add-2007-bl\n // 10M + 1S\n\n // A = Z1 * Z2\n var a = this.z.redMul(p.z);\n // B = A^2\n var b = a.redSqr();\n // C = X1 * X2\n var c = this.x.redMul(p.x);\n // D = Y1 * Y2\n var d = this.y.redMul(p.y);\n // E = d * C * D\n var e = this.curve.d.redMul(c).redMul(d);\n // F = B - E\n var f = b.redSub(e);\n // G = B + E\n var g = b.redAdd(e);\n // X3 = A * F * ((X1 + Y1) * (X2 + Y2) - C - D)\n var tmp = this.x.redAdd(this.y).redMul(p.x.redAdd(p.y)).redISub(c).redISub(d);\n var nx = a.redMul(f).redMul(tmp);\n var ny;\n var nz;\n if (this.curve.twisted) {\n // Y3 = A * G * (D - a * C)\n ny = a.redMul(g).redMul(d.redSub(this.curve._mulA(c)));\n // Z3 = F * G\n nz = f.redMul(g);\n } else {\n // Y3 = A * G * (D - C)\n ny = a.redMul(g).redMul(d.redSub(c));\n // Z3 = c * F * G\n nz = this.curve._mulC(f).redMul(g);\n }\n return this.curve.point(nx, ny, nz);\n};\n\nPoint.prototype.add = function add(p) {\n if (this.isInfinity())\n return p;\n if (p.isInfinity())\n return this;\n\n if (this.curve.extended)\n return this._extAdd(p);\n else\n return this._projAdd(p);\n};\n\nPoint.prototype.mul = function mul(k) {\n if (this._hasDoubles(k))\n return this.curve._fixedNafMul(this, k);\n else\n return this.curve._wnafMul(this, k);\n};\n\nPoint.prototype.mulAdd = function mulAdd(k1, p, k2) {\n return this.curve._wnafMulAdd(1, [ this, p ], [ k1, k2 ], 2, false);\n};\n\nPoint.prototype.jmulAdd = function jmulAdd(k1, p, k2) {\n return this.curve._wnafMulAdd(1, [ this, p ], [ k1, k2 ], 2, true);\n};\n\nPoint.prototype.normalize = function normalize() {\n if (this.zOne)\n return this;\n\n // Normalize coordinates\n var zi = this.z.redInvm();\n this.x = this.x.redMul(zi);\n this.y = this.y.redMul(zi);\n if (this.t)\n this.t = this.t.redMul(zi);\n this.z = this.curve.one;\n this.zOne = true;\n return this;\n};\n\nPoint.prototype.neg = function neg() {\n return this.curve.point(this.x.redNeg(),\n this.y,\n this.z,\n this.t && this.t.redNeg());\n};\n\nPoint.prototype.getX = function getX() {\n this.normalize();\n return this.x.fromRed();\n};\n\nPoint.prototype.getY = function getY() {\n this.normalize();\n return this.y.fromRed();\n};\n\nPoint.prototype.eq = function eq(other) {\n return this === other ||\n this.getX().cmp(other.getX()) === 0 &&\n this.getY().cmp(other.getY()) === 0;\n};\n\nPoint.prototype.eqXToP = function eqXToP(x) {\n var rx = x.toRed(this.curve.red).redMul(this.z);\n if (this.x.cmp(rx) === 0)\n return true;\n\n var xc = x.clone();\n var t = this.curve.redN.redMul(this.z);\n for (;;) {\n xc.iadd(this.curve.n);\n if (xc.cmp(this.curve.p) >= 0)\n return false;\n\n rx.redIAdd(t);\n if (this.x.cmp(rx) === 0)\n return true;\n }\n};\n\n// Compatibility with BaseCurve\nPoint.prototype.toP = Point.prototype.normalize;\nPoint.prototype.mixedAdd = Point.prototype.add;\n", "'use strict';\n\nvar curve = exports;\n\ncurve.base = require('./base');\ncurve.short = require('./short');\ncurve.mont = require('./mont');\ncurve.edwards = require('./edwards');\n", "'use strict';\n\nvar assert = require('minimalistic-assert');\nvar inherits = require('inherits');\n\nexports.inherits = inherits;\n\nfunction isSurrogatePair(msg, i) {\n if ((msg.charCodeAt(i) & 0xFC00) !== 0xD800) {\n return false;\n }\n if (i < 0 || i + 1 >= msg.length) {\n return false;\n }\n return (msg.charCodeAt(i + 1) & 0xFC00) === 0xDC00;\n}\n\nfunction toArray(msg, enc) {\n if (Array.isArray(msg))\n return msg.slice();\n if (!msg)\n return [];\n var res = [];\n if (typeof msg === 'string') {\n if (!enc) {\n // Inspired by stringToUtf8ByteArray() in closure-library by Google\n // https://github.com/google/closure-library/blob/8598d87242af59aac233270742c8984e2b2bdbe0/closure/goog/crypt/crypt.js#L117-L143\n // Apache License 2.0\n // https://github.com/google/closure-library/blob/master/LICENSE\n var p = 0;\n for (var i = 0; i < msg.length; i++) {\n var c = msg.charCodeAt(i);\n if (c < 128) {\n res[p++] = c;\n } else if (c < 2048) {\n res[p++] = (c >> 6) | 192;\n res[p++] = (c & 63) | 128;\n } else if (isSurrogatePair(msg, i)) {\n c = 0x10000 + ((c & 0x03FF) << 10) + (msg.charCodeAt(++i) & 0x03FF);\n res[p++] = (c >> 18) | 240;\n res[p++] = ((c >> 12) & 63) | 128;\n res[p++] = ((c >> 6) & 63) | 128;\n res[p++] = (c & 63) | 128;\n } else {\n res[p++] = (c >> 12) | 224;\n res[p++] = ((c >> 6) & 63) | 128;\n res[p++] = (c & 63) | 128;\n }\n }\n } else if (enc === 'hex') {\n msg = msg.replace(/[^a-z0-9]+/ig, '');\n if (msg.length % 2 !== 0)\n msg = '0' + msg;\n for (i = 0; i < msg.length; i += 2)\n res.push(parseInt(msg[i] + msg[i + 1], 16));\n }\n } else {\n for (i = 0; i < msg.length; i++)\n res[i] = msg[i] | 0;\n }\n return res;\n}\nexports.toArray = toArray;\n\nfunction toHex(msg) {\n var res = '';\n for (var i = 0; i < msg.length; i++)\n res += zero2(msg[i].toString(16));\n return res;\n}\nexports.toHex = toHex;\n\nfunction htonl(w) {\n var res = (w >>> 24) |\n ((w >>> 8) & 0xff00) |\n ((w << 8) & 0xff0000) |\n ((w & 0xff) << 24);\n return res >>> 0;\n}\nexports.htonl = htonl;\n\nfunction toHex32(msg, endian) {\n var res = '';\n for (var i = 0; i < msg.length; i++) {\n var w = msg[i];\n if (endian === 'little')\n w = htonl(w);\n res += zero8(w.toString(16));\n }\n return res;\n}\nexports.toHex32 = toHex32;\n\nfunction zero2(word) {\n if (word.length === 1)\n return '0' + word;\n else\n return word;\n}\nexports.zero2 = zero2;\n\nfunction zero8(word) {\n if (word.length === 7)\n return '0' + word;\n else if (word.length === 6)\n return '00' + word;\n else if (word.length === 5)\n return '000' + word;\n else if (word.length === 4)\n return '0000' + word;\n else if (word.length === 3)\n return '00000' + word;\n else if (word.length === 2)\n return '000000' + word;\n else if (word.length === 1)\n return '0000000' + word;\n else\n return word;\n}\nexports.zero8 = zero8;\n\nfunction join32(msg, start, end, endian) {\n var len = end - start;\n assert(len % 4 === 0);\n var res = new Array(len / 4);\n for (var i = 0, k = start; i < res.length; i++, k += 4) {\n var w;\n if (endian === 'big')\n w = (msg[k] << 24) | (msg[k + 1] << 16) | (msg[k + 2] << 8) | msg[k + 3];\n else\n w = (msg[k + 3] << 24) | (msg[k + 2] << 16) | (msg[k + 1] << 8) | msg[k];\n res[i] = w >>> 0;\n }\n return res;\n}\nexports.join32 = join32;\n\nfunction split32(msg, endian) {\n var res = new Array(msg.length * 4);\n for (var i = 0, k = 0; i < msg.length; i++, k += 4) {\n var m = msg[i];\n if (endian === 'big') {\n res[k] = m >>> 24;\n res[k + 1] = (m >>> 16) & 0xff;\n res[k + 2] = (m >>> 8) & 0xff;\n res[k + 3] = m & 0xff;\n } else {\n res[k + 3] = m >>> 24;\n res[k + 2] = (m >>> 16) & 0xff;\n res[k + 1] = (m >>> 8) & 0xff;\n res[k] = m & 0xff;\n }\n }\n return res;\n}\nexports.split32 = split32;\n\nfunction rotr32(w, b) {\n return (w >>> b) | (w << (32 - b));\n}\nexports.rotr32 = rotr32;\n\nfunction rotl32(w, b) {\n return (w << b) | (w >>> (32 - b));\n}\nexports.rotl32 = rotl32;\n\nfunction sum32(a, b) {\n return (a + b) >>> 0;\n}\nexports.sum32 = sum32;\n\nfunction sum32_3(a, b, c) {\n return (a + b + c) >>> 0;\n}\nexports.sum32_3 = sum32_3;\n\nfunction sum32_4(a, b, c, d) {\n return (a + b + c + d) >>> 0;\n}\nexports.sum32_4 = sum32_4;\n\nfunction sum32_5(a, b, c, d, e) {\n return (a + b + c + d + e) >>> 0;\n}\nexports.sum32_5 = sum32_5;\n\nfunction sum64(buf, pos, ah, al) {\n var bh = buf[pos];\n var bl = buf[pos + 1];\n\n var lo = (al + bl) >>> 0;\n var hi = (lo < al ? 1 : 0) + ah + bh;\n buf[pos] = hi >>> 0;\n buf[pos + 1] = lo;\n}\nexports.sum64 = sum64;\n\nfunction sum64_hi(ah, al, bh, bl) {\n var lo = (al + bl) >>> 0;\n var hi = (lo < al ? 1 : 0) + ah + bh;\n return hi >>> 0;\n}\nexports.sum64_hi = sum64_hi;\n\nfunction sum64_lo(ah, al, bh, bl) {\n var lo = al + bl;\n return lo >>> 0;\n}\nexports.sum64_lo = sum64_lo;\n\nfunction sum64_4_hi(ah, al, bh, bl, ch, cl, dh, dl) {\n var carry = 0;\n var lo = al;\n lo = (lo + bl) >>> 0;\n carry += lo < al ? 1 : 0;\n lo = (lo + cl) >>> 0;\n carry += lo < cl ? 1 : 0;\n lo = (lo + dl) >>> 0;\n carry += lo < dl ? 1 : 0;\n\n var hi = ah + bh + ch + dh + carry;\n return hi >>> 0;\n}\nexports.sum64_4_hi = sum64_4_hi;\n\nfunction sum64_4_lo(ah, al, bh, bl, ch, cl, dh, dl) {\n var lo = al + bl + cl + dl;\n return lo >>> 0;\n}\nexports.sum64_4_lo = sum64_4_lo;\n\nfunction sum64_5_hi(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {\n var carry = 0;\n var lo = al;\n lo = (lo + bl) >>> 0;\n carry += lo < al ? 1 : 0;\n lo = (lo + cl) >>> 0;\n carry += lo < cl ? 1 : 0;\n lo = (lo + dl) >>> 0;\n carry += lo < dl ? 1 : 0;\n lo = (lo + el) >>> 0;\n carry += lo < el ? 1 : 0;\n\n var hi = ah + bh + ch + dh + eh + carry;\n return hi >>> 0;\n}\nexports.sum64_5_hi = sum64_5_hi;\n\nfunction sum64_5_lo(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {\n var lo = al + bl + cl + dl + el;\n\n return lo >>> 0;\n}\nexports.sum64_5_lo = sum64_5_lo;\n\nfunction rotr64_hi(ah, al, num) {\n var r = (al << (32 - num)) | (ah >>> num);\n return r >>> 0;\n}\nexports.rotr64_hi = rotr64_hi;\n\nfunction rotr64_lo(ah, al, num) {\n var r = (ah << (32 - num)) | (al >>> num);\n return r >>> 0;\n}\nexports.rotr64_lo = rotr64_lo;\n\nfunction shr64_hi(ah, al, num) {\n return ah >>> num;\n}\nexports.shr64_hi = shr64_hi;\n\nfunction shr64_lo(ah, al, num) {\n var r = (ah << (32 - num)) | (al >>> num);\n return r >>> 0;\n}\nexports.shr64_lo = shr64_lo;\n", "'use strict';\n\nvar utils = require('./utils');\nvar assert = require('minimalistic-assert');\n\nfunction BlockHash() {\n this.pending = null;\n this.pendingTotal = 0;\n this.blockSize = this.constructor.blockSize;\n this.outSize = this.constructor.outSize;\n this.hmacStrength = this.constructor.hmacStrength;\n this.padLength = this.constructor.padLength / 8;\n this.endian = 'big';\n\n this._delta8 = this.blockSize / 8;\n this._delta32 = this.blockSize / 32;\n}\nexports.BlockHash = BlockHash;\n\nBlockHash.prototype.update = function update(msg, enc) {\n // Convert message to array, pad it, and join into 32bit blocks\n msg = utils.toArray(msg, enc);\n if (!this.pending)\n this.pending = msg;\n else\n this.pending = this.pending.concat(msg);\n this.pendingTotal += msg.length;\n\n // Enough data, try updating\n if (this.pending.length >= this._delta8) {\n msg = this.pending;\n\n // Process pending data in blocks\n var r = msg.length % this._delta8;\n this.pending = msg.slice(msg.length - r, msg.length);\n if (this.pending.length === 0)\n this.pending = null;\n\n msg = utils.join32(msg, 0, msg.length - r, this.endian);\n for (var i = 0; i < msg.length; i += this._delta32)\n this._update(msg, i, i + this._delta32);\n }\n\n return this;\n};\n\nBlockHash.prototype.digest = function digest(enc) {\n this.update(this._pad());\n assert(this.pending === null);\n\n return this._digest(enc);\n};\n\nBlockHash.prototype._pad = function pad() {\n var len = this.pendingTotal;\n var bytes = this._delta8;\n var k = bytes - ((len + this.padLength) % bytes);\n var res = new Array(k + this.padLength);\n res[0] = 0x80;\n for (var i = 1; i < k; i++)\n res[i] = 0;\n\n // Append length\n len <<= 3;\n if (this.endian === 'big') {\n for (var t = 8; t < this.padLength; t++)\n res[i++] = 0;\n\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = (len >>> 24) & 0xff;\n res[i++] = (len >>> 16) & 0xff;\n res[i++] = (len >>> 8) & 0xff;\n res[i++] = len & 0xff;\n } else {\n res[i++] = len & 0xff;\n res[i++] = (len >>> 8) & 0xff;\n res[i++] = (len >>> 16) & 0xff;\n res[i++] = (len >>> 24) & 0xff;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n\n for (t = 8; t < this.padLength; t++)\n res[i++] = 0;\n }\n\n return res;\n};\n", "'use strict';\n\nvar utils = require('../utils');\nvar rotr32 = utils.rotr32;\n\nfunction ft_1(s, x, y, z) {\n if (s === 0)\n return ch32(x, y, z);\n if (s === 1 || s === 3)\n return p32(x, y, z);\n if (s === 2)\n return maj32(x, y, z);\n}\nexports.ft_1 = ft_1;\n\nfunction ch32(x, y, z) {\n return (x & y) ^ ((~x) & z);\n}\nexports.ch32 = ch32;\n\nfunction maj32(x, y, z) {\n return (x & y) ^ (x & z) ^ (y & z);\n}\nexports.maj32 = maj32;\n\nfunction p32(x, y, z) {\n return x ^ y ^ z;\n}\nexports.p32 = p32;\n\nfunction s0_256(x) {\n return rotr32(x, 2) ^ rotr32(x, 13) ^ rotr32(x, 22);\n}\nexports.s0_256 = s0_256;\n\nfunction s1_256(x) {\n return rotr32(x, 6) ^ rotr32(x, 11) ^ rotr32(x, 25);\n}\nexports.s1_256 = s1_256;\n\nfunction g0_256(x) {\n return rotr32(x, 7) ^ rotr32(x, 18) ^ (x >>> 3);\n}\nexports.g0_256 = g0_256;\n\nfunction g1_256(x) {\n return rotr32(x, 17) ^ rotr32(x, 19) ^ (x >>> 10);\n}\nexports.g1_256 = g1_256;\n", "'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar shaCommon = require('./common');\n\nvar rotl32 = utils.rotl32;\nvar sum32 = utils.sum32;\nvar sum32_5 = utils.sum32_5;\nvar ft_1 = shaCommon.ft_1;\nvar BlockHash = common.BlockHash;\n\nvar sha1_K = [\n 0x5A827999, 0x6ED9EBA1,\n 0x8F1BBCDC, 0xCA62C1D6\n];\n\nfunction SHA1() {\n if (!(this instanceof SHA1))\n return new SHA1();\n\n BlockHash.call(this);\n this.h = [\n 0x67452301, 0xefcdab89, 0x98badcfe,\n 0x10325476, 0xc3d2e1f0 ];\n this.W = new Array(80);\n}\n\nutils.inherits(SHA1, BlockHash);\nmodule.exports = SHA1;\n\nSHA1.blockSize = 512;\nSHA1.outSize = 160;\nSHA1.hmacStrength = 80;\nSHA1.padLength = 64;\n\nSHA1.prototype._update = function _update(msg, start) {\n var W = this.W;\n\n for (var i = 0; i < 16; i++)\n W[i] = msg[start + i];\n\n for(; i < W.length; i++)\n W[i] = rotl32(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16], 1);\n\n var a = this.h[0];\n var b = this.h[1];\n var c = this.h[2];\n var d = this.h[3];\n var e = this.h[4];\n\n for (i = 0; i < W.length; i++) {\n var s = ~~(i / 20);\n var t = sum32_5(rotl32(a, 5), ft_1(s, b, c, d), e, W[i], sha1_K[s]);\n e = d;\n d = c;\n c = rotl32(b, 30);\n b = a;\n a = t;\n }\n\n this.h[0] = sum32(this.h[0], a);\n this.h[1] = sum32(this.h[1], b);\n this.h[2] = sum32(this.h[2], c);\n this.h[3] = sum32(this.h[3], d);\n this.h[4] = sum32(this.h[4], e);\n};\n\nSHA1.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n", "'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar shaCommon = require('./common');\nvar assert = require('minimalistic-assert');\n\nvar sum32 = utils.sum32;\nvar sum32_4 = utils.sum32_4;\nvar sum32_5 = utils.sum32_5;\nvar ch32 = shaCommon.ch32;\nvar maj32 = shaCommon.maj32;\nvar s0_256 = shaCommon.s0_256;\nvar s1_256 = shaCommon.s1_256;\nvar g0_256 = shaCommon.g0_256;\nvar g1_256 = shaCommon.g1_256;\n\nvar BlockHash = common.BlockHash;\n\nvar sha256_K = [\n 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5,\n 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,\n 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3,\n 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,\n 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc,\n 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,\n 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7,\n 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,\n 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13,\n 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\n 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3,\n 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,\n 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5,\n 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,\n 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208,\n 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2\n];\n\nfunction SHA256() {\n if (!(this instanceof SHA256))\n return new SHA256();\n\n BlockHash.call(this);\n this.h = [\n 0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a,\n 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19\n ];\n this.k = sha256_K;\n this.W = new Array(64);\n}\nutils.inherits(SHA256, BlockHash);\nmodule.exports = SHA256;\n\nSHA256.blockSize = 512;\nSHA256.outSize = 256;\nSHA256.hmacStrength = 192;\nSHA256.padLength = 64;\n\nSHA256.prototype._update = function _update(msg, start) {\n var W = this.W;\n\n for (var i = 0; i < 16; i++)\n W[i] = msg[start + i];\n for (; i < W.length; i++)\n W[i] = sum32_4(g1_256(W[i - 2]), W[i - 7], g0_256(W[i - 15]), W[i - 16]);\n\n var a = this.h[0];\n var b = this.h[1];\n var c = this.h[2];\n var d = this.h[3];\n var e = this.h[4];\n var f = this.h[5];\n var g = this.h[6];\n var h = this.h[7];\n\n assert(this.k.length === W.length);\n for (i = 0; i < W.length; i++) {\n var T1 = sum32_5(h, s1_256(e), ch32(e, f, g), this.k[i], W[i]);\n var T2 = sum32(s0_256(a), maj32(a, b, c));\n h = g;\n g = f;\n f = e;\n e = sum32(d, T1);\n d = c;\n c = b;\n b = a;\n a = sum32(T1, T2);\n }\n\n this.h[0] = sum32(this.h[0], a);\n this.h[1] = sum32(this.h[1], b);\n this.h[2] = sum32(this.h[2], c);\n this.h[3] = sum32(this.h[3], d);\n this.h[4] = sum32(this.h[4], e);\n this.h[5] = sum32(this.h[5], f);\n this.h[6] = sum32(this.h[6], g);\n this.h[7] = sum32(this.h[7], h);\n};\n\nSHA256.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n", "'use strict';\n\nvar utils = require('../utils');\nvar SHA256 = require('./256');\n\nfunction SHA224() {\n if (!(this instanceof SHA224))\n return new SHA224();\n\n SHA256.call(this);\n this.h = [\n 0xc1059ed8, 0x367cd507, 0x3070dd17, 0xf70e5939,\n 0xffc00b31, 0x68581511, 0x64f98fa7, 0xbefa4fa4 ];\n}\nutils.inherits(SHA224, SHA256);\nmodule.exports = SHA224;\n\nSHA224.blockSize = 512;\nSHA224.outSize = 224;\nSHA224.hmacStrength = 192;\nSHA224.padLength = 64;\n\nSHA224.prototype._digest = function digest(enc) {\n // Just truncate output\n if (enc === 'hex')\n return utils.toHex32(this.h.slice(0, 7), 'big');\n else\n return utils.split32(this.h.slice(0, 7), 'big');\n};\n\n", "'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar assert = require('minimalistic-assert');\n\nvar rotr64_hi = utils.rotr64_hi;\nvar rotr64_lo = utils.rotr64_lo;\nvar shr64_hi = utils.shr64_hi;\nvar shr64_lo = utils.shr64_lo;\nvar sum64 = utils.sum64;\nvar sum64_hi = utils.sum64_hi;\nvar sum64_lo = utils.sum64_lo;\nvar sum64_4_hi = utils.sum64_4_hi;\nvar sum64_4_lo = utils.sum64_4_lo;\nvar sum64_5_hi = utils.sum64_5_hi;\nvar sum64_5_lo = utils.sum64_5_lo;\n\nvar BlockHash = common.BlockHash;\n\nvar sha512_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 SHA512() {\n if (!(this instanceof SHA512))\n return new SHA512();\n\n BlockHash.call(this);\n this.h = [\n 0x6a09e667, 0xf3bcc908,\n 0xbb67ae85, 0x84caa73b,\n 0x3c6ef372, 0xfe94f82b,\n 0xa54ff53a, 0x5f1d36f1,\n 0x510e527f, 0xade682d1,\n 0x9b05688c, 0x2b3e6c1f,\n 0x1f83d9ab, 0xfb41bd6b,\n 0x5be0cd19, 0x137e2179 ];\n this.k = sha512_K;\n this.W = new Array(160);\n}\nutils.inherits(SHA512, BlockHash);\nmodule.exports = SHA512;\n\nSHA512.blockSize = 1024;\nSHA512.outSize = 512;\nSHA512.hmacStrength = 192;\nSHA512.padLength = 128;\n\nSHA512.prototype._prepareBlock = function _prepareBlock(msg, start) {\n var W = this.W;\n\n // 32 x 32bit words\n for (var i = 0; i < 32; i++)\n W[i] = msg[start + i];\n for (; i < W.length; i += 2) {\n var c0_hi = g1_512_hi(W[i - 4], W[i - 3]); // i - 2\n var c0_lo = g1_512_lo(W[i - 4], W[i - 3]);\n var c1_hi = W[i - 14]; // i - 7\n var c1_lo = W[i - 13];\n var c2_hi = g0_512_hi(W[i - 30], W[i - 29]); // i - 15\n var c2_lo = g0_512_lo(W[i - 30], W[i - 29]);\n var c3_hi = W[i - 32]; // i - 16\n var c3_lo = W[i - 31];\n\n W[i] = sum64_4_hi(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo);\n W[i + 1] = sum64_4_lo(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo);\n }\n};\n\nSHA512.prototype._update = function _update(msg, start) {\n this._prepareBlock(msg, start);\n\n var W = this.W;\n\n var ah = this.h[0];\n var al = this.h[1];\n var bh = this.h[2];\n var bl = this.h[3];\n var ch = this.h[4];\n var cl = this.h[5];\n var dh = this.h[6];\n var dl = this.h[7];\n var eh = this.h[8];\n var el = this.h[9];\n var fh = this.h[10];\n var fl = this.h[11];\n var gh = this.h[12];\n var gl = this.h[13];\n var hh = this.h[14];\n var hl = this.h[15];\n\n assert(this.k.length === W.length);\n for (var i = 0; i < W.length; i += 2) {\n var c0_hi = hh;\n var c0_lo = hl;\n var c1_hi = s1_512_hi(eh, el);\n var c1_lo = s1_512_lo(eh, el);\n var c2_hi = ch64_hi(eh, el, fh, fl, gh, gl);\n var c2_lo = ch64_lo(eh, el, fh, fl, gh, gl);\n var c3_hi = this.k[i];\n var c3_lo = this.k[i + 1];\n var c4_hi = W[i];\n var c4_lo = W[i + 1];\n\n var T1_hi = sum64_5_hi(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo,\n c4_hi, c4_lo);\n var T1_lo = sum64_5_lo(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo,\n c4_hi, c4_lo);\n\n c0_hi = s0_512_hi(ah, al);\n c0_lo = s0_512_lo(ah, al);\n c1_hi = maj64_hi(ah, al, bh, bl, ch, cl);\n c1_lo = maj64_lo(ah, al, bh, bl, ch, cl);\n\n var T2_hi = sum64_hi(c0_hi, c0_lo, c1_hi, c1_lo);\n var T2_lo = sum64_lo(c0_hi, c0_lo, c1_hi, c1_lo);\n\n hh = gh;\n hl = gl;\n\n gh = fh;\n gl = fl;\n\n fh = eh;\n fl = el;\n\n eh = sum64_hi(dh, dl, T1_hi, T1_lo);\n el = sum64_lo(dl, dl, T1_hi, T1_lo);\n\n dh = ch;\n dl = cl;\n\n ch = bh;\n cl = bl;\n\n bh = ah;\n bl = al;\n\n ah = sum64_hi(T1_hi, T1_lo, T2_hi, T2_lo);\n al = sum64_lo(T1_hi, T1_lo, T2_hi, T2_lo);\n }\n\n sum64(this.h, 0, ah, al);\n sum64(this.h, 2, bh, bl);\n sum64(this.h, 4, ch, cl);\n sum64(this.h, 6, dh, dl);\n sum64(this.h, 8, eh, el);\n sum64(this.h, 10, fh, fl);\n sum64(this.h, 12, gh, gl);\n sum64(this.h, 14, hh, hl);\n};\n\nSHA512.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n\nfunction ch64_hi(xh, xl, yh, yl, zh) {\n var r = (xh & yh) ^ ((~xh) & zh);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction ch64_lo(xh, xl, yh, yl, zh, zl) {\n var r = (xl & yl) ^ ((~xl) & zl);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction maj64_hi(xh, xl, yh, yl, zh) {\n var r = (xh & yh) ^ (xh & zh) ^ (yh & zh);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction maj64_lo(xh, xl, yh, yl, zh, zl) {\n var r = (xl & yl) ^ (xl & zl) ^ (yl & zl);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s0_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 28);\n var c1_hi = rotr64_hi(xl, xh, 2); // 34\n var c2_hi = rotr64_hi(xl, xh, 7); // 39\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s0_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 28);\n var c1_lo = rotr64_lo(xl, xh, 2); // 34\n var c2_lo = rotr64_lo(xl, xh, 7); // 39\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s1_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 14);\n var c1_hi = rotr64_hi(xh, xl, 18);\n var c2_hi = rotr64_hi(xl, xh, 9); // 41\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s1_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 14);\n var c1_lo = rotr64_lo(xh, xl, 18);\n var c2_lo = rotr64_lo(xl, xh, 9); // 41\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g0_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 1);\n var c1_hi = rotr64_hi(xh, xl, 8);\n var c2_hi = shr64_hi(xh, xl, 7);\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g0_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 1);\n var c1_lo = rotr64_lo(xh, xl, 8);\n var c2_lo = shr64_lo(xh, xl, 7);\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g1_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 19);\n var c1_hi = rotr64_hi(xl, xh, 29); // 61\n var c2_hi = shr64_hi(xh, xl, 6);\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g1_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 19);\n var c1_lo = rotr64_lo(xl, xh, 29); // 61\n var c2_lo = shr64_lo(xh, xl, 6);\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n", "'use strict';\n\nvar utils = require('../utils');\n\nvar SHA512 = require('./512');\n\nfunction SHA384() {\n if (!(this instanceof SHA384))\n return new SHA384();\n\n SHA512.call(this);\n this.h = [\n 0xcbbb9d5d, 0xc1059ed8,\n 0x629a292a, 0x367cd507,\n 0x9159015a, 0x3070dd17,\n 0x152fecd8, 0xf70e5939,\n 0x67332667, 0xffc00b31,\n 0x8eb44a87, 0x68581511,\n 0xdb0c2e0d, 0x64f98fa7,\n 0x47b5481d, 0xbefa4fa4 ];\n}\nutils.inherits(SHA384, SHA512);\nmodule.exports = SHA384;\n\nSHA384.blockSize = 1024;\nSHA384.outSize = 384;\nSHA384.hmacStrength = 192;\nSHA384.padLength = 128;\n\nSHA384.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h.slice(0, 12), 'big');\n else\n return utils.split32(this.h.slice(0, 12), 'big');\n};\n", "'use strict';\n\nexports.sha1 = require('./sha/1');\nexports.sha224 = require('./sha/224');\nexports.sha256 = require('./sha/256');\nexports.sha384 = require('./sha/384');\nexports.sha512 = require('./sha/512');\n", "'use strict';\n\nvar utils = require('./utils');\nvar common = require('./common');\n\nvar rotl32 = utils.rotl32;\nvar sum32 = utils.sum32;\nvar sum32_3 = utils.sum32_3;\nvar sum32_4 = utils.sum32_4;\nvar BlockHash = common.BlockHash;\n\nfunction RIPEMD160() {\n if (!(this instanceof RIPEMD160))\n return new RIPEMD160();\n\n BlockHash.call(this);\n\n this.h = [ 0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0 ];\n this.endian = 'little';\n}\nutils.inherits(RIPEMD160, BlockHash);\nexports.ripemd160 = RIPEMD160;\n\nRIPEMD160.blockSize = 512;\nRIPEMD160.outSize = 160;\nRIPEMD160.hmacStrength = 192;\nRIPEMD160.padLength = 64;\n\nRIPEMD160.prototype._update = function update(msg, start) {\n var A = this.h[0];\n var B = this.h[1];\n var C = this.h[2];\n var D = this.h[3];\n var E = this.h[4];\n var Ah = A;\n var Bh = B;\n var Ch = C;\n var Dh = D;\n var Eh = E;\n for (var j = 0; j < 80; j++) {\n var T = sum32(\n rotl32(\n sum32_4(A, f(j, B, C, D), msg[r[j] + start], K(j)),\n s[j]),\n E);\n A = E;\n E = D;\n D = rotl32(C, 10);\n C = B;\n B = T;\n T = sum32(\n rotl32(\n sum32_4(Ah, f(79 - j, Bh, Ch, Dh), msg[rh[j] + start], Kh(j)),\n sh[j]),\n Eh);\n Ah = Eh;\n Eh = Dh;\n Dh = rotl32(Ch, 10);\n Ch = Bh;\n Bh = T;\n }\n T = sum32_3(this.h[1], C, Dh);\n this.h[1] = sum32_3(this.h[2], D, Eh);\n this.h[2] = sum32_3(this.h[3], E, Ah);\n this.h[3] = sum32_3(this.h[4], A, Bh);\n this.h[4] = sum32_3(this.h[0], B, Ch);\n this.h[0] = T;\n};\n\nRIPEMD160.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'little');\n else\n return utils.split32(this.h, 'little');\n};\n\nfunction f(j, x, y, z) {\n if (j <= 15)\n return x ^ y ^ z;\n else if (j <= 31)\n return (x & y) | ((~x) & z);\n else if (j <= 47)\n return (x | (~y)) ^ z;\n else if (j <= 63)\n return (x & z) | (y & (~z));\n else\n return x ^ (y | (~z));\n}\n\nfunction K(j) {\n if (j <= 15)\n return 0x00000000;\n else if (j <= 31)\n return 0x5a827999;\n else if (j <= 47)\n return 0x6ed9eba1;\n else if (j <= 63)\n return 0x8f1bbcdc;\n else\n return 0xa953fd4e;\n}\n\nfunction Kh(j) {\n if (j <= 15)\n return 0x50a28be6;\n else if (j <= 31)\n return 0x5c4dd124;\n else if (j <= 47)\n return 0x6d703ef3;\n else if (j <= 63)\n return 0x7a6d76e9;\n else\n return 0x00000000;\n}\n\nvar r = [\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,\n 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8,\n 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12,\n 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2,\n 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13\n];\n\nvar rh = [\n 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12,\n 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2,\n 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13,\n 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14,\n 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11\n];\n\nvar s = [\n 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8,\n 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12,\n 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5,\n 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12,\n 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6\n];\n\nvar sh = [\n 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6,\n 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11,\n 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5,\n 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8,\n 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11\n];\n", "'use strict';\n\nvar utils = require('./utils');\nvar assert = require('minimalistic-assert');\n\nfunction Hmac(hash, key, enc) {\n if (!(this instanceof Hmac))\n return new Hmac(hash, key, enc);\n this.Hash = hash;\n this.blockSize = hash.blockSize / 8;\n this.outSize = hash.outSize / 8;\n this.inner = null;\n this.outer = null;\n\n this._init(utils.toArray(key, enc));\n}\nmodule.exports = Hmac;\n\nHmac.prototype._init = function init(key) {\n // Shorten key, if needed\n if (key.length > this.blockSize)\n key = new this.Hash().update(key).digest();\n assert(key.length <= this.blockSize);\n\n // Add padding to key\n for (var i = key.length; i < this.blockSize; i++)\n key.push(0);\n\n for (i = 0; i < key.length; i++)\n key[i] ^= 0x36;\n this.inner = new this.Hash().update(key);\n\n // 0x36 ^ 0x5c = 0x6a\n for (i = 0; i < key.length; i++)\n key[i] ^= 0x6a;\n this.outer = new this.Hash().update(key);\n};\n\nHmac.prototype.update = function update(msg, enc) {\n this.inner.update(msg, enc);\n return this;\n};\n\nHmac.prototype.digest = function digest(enc) {\n this.outer.update(this.inner.digest());\n return this.outer.digest(enc);\n};\n", "var hash = exports;\n\nhash.utils = require('./hash/utils');\nhash.common = require('./hash/common');\nhash.sha = require('./hash/sha');\nhash.ripemd = require('./hash/ripemd');\nhash.hmac = require('./hash/hmac');\n\n// Proxy hash functions to the main object\nhash.sha1 = hash.sha.sha1;\nhash.sha256 = hash.sha.sha256;\nhash.sha224 = hash.sha.sha224;\nhash.sha384 = hash.sha.sha384;\nhash.sha512 = hash.sha.sha512;\nhash.ripemd160 = hash.ripemd.ripemd160;\n", "module.exports = {\n doubles: {\n step: 4,\n points: [\n [\n 'e60fce93b59e9ec53011aabc21c23e97b2a31369b87a5ae9c44ee89e2a6dec0a',\n 'f7e3507399e595929db99f34f57937101296891e44d23f0be1f32cce69616821',\n ],\n [\n '8282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f51508',\n '11f8a8098557dfe45e8256e830b60ace62d613ac2f7b17bed31b6eaff6e26caf',\n ],\n [\n '175e159f728b865a72f99cc6c6fc846de0b93833fd2222ed73fce5b551e5b739',\n 'd3506e0d9e3c79eba4ef97a51ff71f5eacb5955add24345c6efa6ffee9fed695',\n ],\n [\n '363d90d447b00c9c99ceac05b6262ee053441c7e55552ffe526bad8f83ff4640',\n '4e273adfc732221953b445397f3363145b9a89008199ecb62003c7f3bee9de9',\n ],\n [\n '8b4b5f165df3c2be8c6244b5b745638843e4a781a15bcd1b69f79a55dffdf80c',\n '4aad0a6f68d308b4b3fbd7813ab0da04f9e336546162ee56b3eff0c65fd4fd36',\n ],\n [\n '723cbaa6e5db996d6bf771c00bd548c7b700dbffa6c0e77bcb6115925232fcda',\n '96e867b5595cc498a921137488824d6e2660a0653779494801dc069d9eb39f5f',\n ],\n [\n 'eebfa4d493bebf98ba5feec812c2d3b50947961237a919839a533eca0e7dd7fa',\n '5d9a8ca3970ef0f269ee7edaf178089d9ae4cdc3a711f712ddfd4fdae1de8999',\n ],\n [\n '100f44da696e71672791d0a09b7bde459f1215a29b3c03bfefd7835b39a48db0',\n 'cdd9e13192a00b772ec8f3300c090666b7ff4a18ff5195ac0fbd5cd62bc65a09',\n ],\n [\n 'e1031be262c7ed1b1dc9227a4a04c017a77f8d4464f3b3852c8acde6e534fd2d',\n '9d7061928940405e6bb6a4176597535af292dd419e1ced79a44f18f29456a00d',\n ],\n [\n 'feea6cae46d55b530ac2839f143bd7ec5cf8b266a41d6af52d5e688d9094696d',\n 'e57c6b6c97dce1bab06e4e12bf3ecd5c981c8957cc41442d3155debf18090088',\n ],\n [\n 'da67a91d91049cdcb367be4be6ffca3cfeed657d808583de33fa978bc1ec6cb1',\n '9bacaa35481642bc41f463f7ec9780e5dec7adc508f740a17e9ea8e27a68be1d',\n ],\n [\n '53904faa0b334cdda6e000935ef22151ec08d0f7bb11069f57545ccc1a37b7c0',\n '5bc087d0bc80106d88c9eccac20d3c1c13999981e14434699dcb096b022771c8',\n ],\n [\n '8e7bcd0bd35983a7719cca7764ca906779b53a043a9b8bcaeff959f43ad86047',\n '10b7770b2a3da4b3940310420ca9514579e88e2e47fd68b3ea10047e8460372a',\n ],\n [\n '385eed34c1cdff21e6d0818689b81bde71a7f4f18397e6690a841e1599c43862',\n '283bebc3e8ea23f56701de19e9ebf4576b304eec2086dc8cc0458fe5542e5453',\n ],\n [\n '6f9d9b803ecf191637c73a4413dfa180fddf84a5947fbc9c606ed86c3fac3a7',\n '7c80c68e603059ba69b8e2a30e45c4d47ea4dd2f5c281002d86890603a842160',\n ],\n [\n '3322d401243c4e2582a2147c104d6ecbf774d163db0f5e5313b7e0e742d0e6bd',\n '56e70797e9664ef5bfb019bc4ddaf9b72805f63ea2873af624f3a2e96c28b2a0',\n ],\n [\n '85672c7d2de0b7da2bd1770d89665868741b3f9af7643397721d74d28134ab83',\n '7c481b9b5b43b2eb6374049bfa62c2e5e77f17fcc5298f44c8e3094f790313a6',\n ],\n [\n '948bf809b1988a46b06c9f1919413b10f9226c60f668832ffd959af60c82a0a',\n '53a562856dcb6646dc6b74c5d1c3418c6d4dff08c97cd2bed4cb7f88d8c8e589',\n ],\n [\n '6260ce7f461801c34f067ce0f02873a8f1b0e44dfc69752accecd819f38fd8e8',\n 'bc2da82b6fa5b571a7f09049776a1ef7ecd292238051c198c1a84e95b2b4ae17',\n ],\n [\n 'e5037de0afc1d8d43d8348414bbf4103043ec8f575bfdc432953cc8d2037fa2d',\n '4571534baa94d3b5f9f98d09fb990bddbd5f5b03ec481f10e0e5dc841d755bda',\n ],\n [\n 'e06372b0f4a207adf5ea905e8f1771b4e7e8dbd1c6a6c5b725866a0ae4fce725',\n '7a908974bce18cfe12a27bb2ad5a488cd7484a7787104870b27034f94eee31dd',\n ],\n [\n '213c7a715cd5d45358d0bbf9dc0ce02204b10bdde2a3f58540ad6908d0559754',\n '4b6dad0b5ae462507013ad06245ba190bb4850f5f36a7eeddff2c27534b458f2',\n ],\n [\n '4e7c272a7af4b34e8dbb9352a5419a87e2838c70adc62cddf0cc3a3b08fbd53c',\n '17749c766c9d0b18e16fd09f6def681b530b9614bff7dd33e0b3941817dcaae6',\n ],\n [\n 'fea74e3dbe778b1b10f238ad61686aa5c76e3db2be43057632427e2840fb27b6',\n '6e0568db9b0b13297cf674deccb6af93126b596b973f7b77701d3db7f23cb96f',\n ],\n [\n '76e64113f677cf0e10a2570d599968d31544e179b760432952c02a4417bdde39',\n 'c90ddf8dee4e95cf577066d70681f0d35e2a33d2b56d2032b4b1752d1901ac01',\n ],\n [\n 'c738c56b03b2abe1e8281baa743f8f9a8f7cc643df26cbee3ab150242bcbb891',\n '893fb578951ad2537f718f2eacbfbbbb82314eef7880cfe917e735d9699a84c3',\n ],\n [\n 'd895626548b65b81e264c7637c972877d1d72e5f3a925014372e9f6588f6c14b',\n 'febfaa38f2bc7eae728ec60818c340eb03428d632bb067e179363ed75d7d991f',\n ],\n [\n 'b8da94032a957518eb0f6433571e8761ceffc73693e84edd49150a564f676e03',\n '2804dfa44805a1e4d7c99cc9762808b092cc584d95ff3b511488e4e74efdf6e7',\n ],\n [\n 'e80fea14441fb33a7d8adab9475d7fab2019effb5156a792f1a11778e3c0df5d',\n 'eed1de7f638e00771e89768ca3ca94472d155e80af322ea9fcb4291b6ac9ec78',\n ],\n [\n 'a301697bdfcd704313ba48e51d567543f2a182031efd6915ddc07bbcc4e16070',\n '7370f91cfb67e4f5081809fa25d40f9b1735dbf7c0a11a130c0d1a041e177ea1',\n ],\n [\n '90ad85b389d6b936463f9d0512678de208cc330b11307fffab7ac63e3fb04ed4',\n 'e507a3620a38261affdcbd9427222b839aefabe1582894d991d4d48cb6ef150',\n ],\n [\n '8f68b9d2f63b5f339239c1ad981f162ee88c5678723ea3351b7b444c9ec4c0da',\n '662a9f2dba063986de1d90c2b6be215dbbea2cfe95510bfdf23cbf79501fff82',\n ],\n [\n 'e4f3fb0176af85d65ff99ff9198c36091f48e86503681e3e6686fd5053231e11',\n '1e63633ad0ef4f1c1661a6d0ea02b7286cc7e74ec951d1c9822c38576feb73bc',\n ],\n [\n '8c00fa9b18ebf331eb961537a45a4266c7034f2f0d4e1d0716fb6eae20eae29e',\n 'efa47267fea521a1a9dc343a3736c974c2fadafa81e36c54e7d2a4c66702414b',\n ],\n [\n 'e7a26ce69dd4829f3e10cec0a9e98ed3143d084f308b92c0997fddfc60cb3e41',\n '2a758e300fa7984b471b006a1aafbb18d0a6b2c0420e83e20e8a9421cf2cfd51',\n ],\n [\n 'b6459e0ee3662ec8d23540c223bcbdc571cbcb967d79424f3cf29eb3de6b80ef',\n '67c876d06f3e06de1dadf16e5661db3c4b3ae6d48e35b2ff30bf0b61a71ba45',\n ],\n [\n 'd68a80c8280bb840793234aa118f06231d6f1fc67e73c5a5deda0f5b496943e8',\n 'db8ba9fff4b586d00c4b1f9177b0e28b5b0e7b8f7845295a294c84266b133120',\n ],\n [\n '324aed7df65c804252dc0270907a30b09612aeb973449cea4095980fc28d3d5d',\n '648a365774b61f2ff130c0c35aec1f4f19213b0c7e332843967224af96ab7c84',\n ],\n [\n '4df9c14919cde61f6d51dfdbe5fee5dceec4143ba8d1ca888e8bd373fd054c96',\n '35ec51092d8728050974c23a1d85d4b5d506cdc288490192ebac06cad10d5d',\n ],\n [\n '9c3919a84a474870faed8a9c1cc66021523489054d7f0308cbfc99c8ac1f98cd',\n 'ddb84f0f4a4ddd57584f044bf260e641905326f76c64c8e6be7e5e03d4fc599d',\n ],\n [\n '6057170b1dd12fdf8de05f281d8e06bb91e1493a8b91d4cc5a21382120a959e5',\n '9a1af0b26a6a4807add9a2daf71df262465152bc3ee24c65e899be932385a2a8',\n ],\n [\n 'a576df8e23a08411421439a4518da31880cef0fba7d4df12b1a6973eecb94266',\n '40a6bf20e76640b2c92b97afe58cd82c432e10a7f514d9f3ee8be11ae1b28ec8',\n ],\n [\n '7778a78c28dec3e30a05fe9629de8c38bb30d1f5cf9a3a208f763889be58ad71',\n '34626d9ab5a5b22ff7098e12f2ff580087b38411ff24ac563b513fc1fd9f43ac',\n ],\n [\n '928955ee637a84463729fd30e7afd2ed5f96274e5ad7e5cb09eda9c06d903ac',\n 'c25621003d3f42a827b78a13093a95eeac3d26efa8a8d83fc5180e935bcd091f',\n ],\n [\n '85d0fef3ec6db109399064f3a0e3b2855645b4a907ad354527aae75163d82751',\n '1f03648413a38c0be29d496e582cf5663e8751e96877331582c237a24eb1f962',\n ],\n [\n 'ff2b0dce97eece97c1c9b6041798b85dfdfb6d8882da20308f5404824526087e',\n '493d13fef524ba188af4c4dc54d07936c7b7ed6fb90e2ceb2c951e01f0c29907',\n ],\n [\n '827fbbe4b1e880ea9ed2b2e6301b212b57f1ee148cd6dd28780e5e2cf856e241',\n 'c60f9c923c727b0b71bef2c67d1d12687ff7a63186903166d605b68baec293ec',\n ],\n [\n 'eaa649f21f51bdbae7be4ae34ce6e5217a58fdce7f47f9aa7f3b58fa2120e2b3',\n 'be3279ed5bbbb03ac69a80f89879aa5a01a6b965f13f7e59d47a5305ba5ad93d',\n ],\n [\n 'e4a42d43c5cf169d9391df6decf42ee541b6d8f0c9a137401e23632dda34d24f',\n '4d9f92e716d1c73526fc99ccfb8ad34ce886eedfa8d8e4f13a7f7131deba9414',\n ],\n [\n '1ec80fef360cbdd954160fadab352b6b92b53576a88fea4947173b9d4300bf19',\n 'aeefe93756b5340d2f3a4958a7abbf5e0146e77f6295a07b671cdc1cc107cefd',\n ],\n [\n '146a778c04670c2f91b00af4680dfa8bce3490717d58ba889ddb5928366642be',\n 'b318e0ec3354028add669827f9d4b2870aaa971d2f7e5ed1d0b297483d83efd0',\n ],\n [\n 'fa50c0f61d22e5f07e3acebb1aa07b128d0012209a28b9776d76a8793180eef9',\n '6b84c6922397eba9b72cd2872281a68a5e683293a57a213b38cd8d7d3f4f2811',\n ],\n [\n 'da1d61d0ca721a11b1a5bf6b7d88e8421a288ab5d5bba5220e53d32b5f067ec2',\n '8157f55a7c99306c79c0766161c91e2966a73899d279b48a655fba0f1ad836f1',\n ],\n [\n 'a8e282ff0c9706907215ff98e8fd416615311de0446f1e062a73b0610d064e13',\n '7f97355b8db81c09abfb7f3c5b2515888b679a3e50dd6bd6cef7c73111f4cc0c',\n ],\n [\n '174a53b9c9a285872d39e56e6913cab15d59b1fa512508c022f382de8319497c',\n 'ccc9dc37abfc9c1657b4155f2c47f9e6646b3a1d8cb9854383da13ac079afa73',\n ],\n [\n '959396981943785c3d3e57edf5018cdbe039e730e4918b3d884fdff09475b7ba',\n '2e7e552888c331dd8ba0386a4b9cd6849c653f64c8709385e9b8abf87524f2fd',\n ],\n [\n 'd2a63a50ae401e56d645a1153b109a8fcca0a43d561fba2dbb51340c9d82b151',\n 'e82d86fb6443fcb7565aee58b2948220a70f750af484ca52d4142174dcf89405',\n ],\n [\n '64587e2335471eb890ee7896d7cfdc866bacbdbd3839317b3436f9b45617e073',\n 'd99fcdd5bf6902e2ae96dd6447c299a185b90a39133aeab358299e5e9faf6589',\n ],\n [\n '8481bde0e4e4d885b3a546d3e549de042f0aa6cea250e7fd358d6c86dd45e458',\n '38ee7b8cba5404dd84a25bf39cecb2ca900a79c42b262e556d64b1b59779057e',\n ],\n [\n '13464a57a78102aa62b6979ae817f4637ffcfed3c4b1ce30bcd6303f6caf666b',\n '69be159004614580ef7e433453ccb0ca48f300a81d0942e13f495a907f6ecc27',\n ],\n [\n 'bc4a9df5b713fe2e9aef430bcc1dc97a0cd9ccede2f28588cada3a0d2d83f366',\n 'd3a81ca6e785c06383937adf4b798caa6e8a9fbfa547b16d758d666581f33c1',\n ],\n [\n '8c28a97bf8298bc0d23d8c749452a32e694b65e30a9472a3954ab30fe5324caa',\n '40a30463a3305193378fedf31f7cc0eb7ae784f0451cb9459e71dc73cbef9482',\n ],\n [\n '8ea9666139527a8c1dd94ce4f071fd23c8b350c5a4bb33748c4ba111faccae0',\n '620efabbc8ee2782e24e7c0cfb95c5d735b783be9cf0f8e955af34a30e62b945',\n ],\n [\n 'dd3625faef5ba06074669716bbd3788d89bdde815959968092f76cc4eb9a9787',\n '7a188fa3520e30d461da2501045731ca941461982883395937f68d00c644a573',\n ],\n [\n 'f710d79d9eb962297e4f6232b40e8f7feb2bc63814614d692c12de752408221e',\n 'ea98e67232d3b3295d3b535532115ccac8612c721851617526ae47a9c77bfc82',\n ],\n ],\n },\n naf: {\n wnd: 7,\n points: [\n [\n 'f9308a019258c31049344f85f89d5229b531c845836f99b08601f113bce036f9',\n '388f7b0f632de8140fe337e62a37f3566500a99934c2231b6cb9fd7584b8e672',\n ],\n [\n '2f8bde4d1a07209355b4a7250a5c5128e88b84bddc619ab7cba8d569b240efe4',\n 'd8ac222636e5e3d6d4dba9dda6c9c426f788271bab0d6840dca87d3aa6ac62d6',\n ],\n [\n '5cbdf0646e5db4eaa398f365f2ea7a0e3d419b7e0330e39ce92bddedcac4f9bc',\n '6aebca40ba255960a3178d6d861a54dba813d0b813fde7b5a5082628087264da',\n ],\n [\n 'acd484e2f0c7f65309ad178a9f559abde09796974c57e714c35f110dfc27ccbe',\n 'cc338921b0a7d9fd64380971763b61e9add888a4375f8e0f05cc262ac64f9c37',\n ],\n [\n '774ae7f858a9411e5ef4246b70c65aac5649980be5c17891bbec17895da008cb',\n 'd984a032eb6b5e190243dd56d7b7b365372db1e2dff9d6a8301d74c9c953c61b',\n ],\n [\n 'f28773c2d975288bc7d1d205c3748651b075fbc6610e58cddeeddf8f19405aa8',\n 'ab0902e8d880a89758212eb65cdaf473a1a06da521fa91f29b5cb52db03ed81',\n ],\n [\n 'd7924d4f7d43ea965a465ae3095ff41131e5946f3c85f79e44adbcf8e27e080e',\n '581e2872a86c72a683842ec228cc6defea40af2bd896d3a5c504dc9ff6a26b58',\n ],\n [\n 'defdea4cdb677750a420fee807eacf21eb9898ae79b9768766e4faa04a2d4a34',\n '4211ab0694635168e997b0ead2a93daeced1f4a04a95c0f6cfb199f69e56eb77',\n ],\n [\n '2b4ea0a797a443d293ef5cff444f4979f06acfebd7e86d277475656138385b6c',\n '85e89bc037945d93b343083b5a1c86131a01f60c50269763b570c854e5c09b7a',\n ],\n [\n '352bbf4a4cdd12564f93fa332ce333301d9ad40271f8107181340aef25be59d5',\n '321eb4075348f534d59c18259dda3e1f4a1b3b2e71b1039c67bd3d8bcf81998c',\n ],\n [\n '2fa2104d6b38d11b0230010559879124e42ab8dfeff5ff29dc9cdadd4ecacc3f',\n '2de1068295dd865b64569335bd5dd80181d70ecfc882648423ba76b532b7d67',\n ],\n [\n '9248279b09b4d68dab21a9b066edda83263c3d84e09572e269ca0cd7f5453714',\n '73016f7bf234aade5d1aa71bdea2b1ff3fc0de2a887912ffe54a32ce97cb3402',\n ],\n [\n 'daed4f2be3a8bf278e70132fb0beb7522f570e144bf615c07e996d443dee8729',\n 'a69dce4a7d6c98e8d4a1aca87ef8d7003f83c230f3afa726ab40e52290be1c55',\n ],\n [\n 'c44d12c7065d812e8acf28d7cbb19f9011ecd9e9fdf281b0e6a3b5e87d22e7db',\n '2119a460ce326cdc76c45926c982fdac0e106e861edf61c5a039063f0e0e6482',\n ],\n [\n '6a245bf6dc698504c89a20cfded60853152b695336c28063b61c65cbd269e6b4',\n 'e022cf42c2bd4a708b3f5126f16a24ad8b33ba48d0423b6efd5e6348100d8a82',\n ],\n [\n '1697ffa6fd9de627c077e3d2fe541084ce13300b0bec1146f95ae57f0d0bd6a5',\n 'b9c398f186806f5d27561506e4557433a2cf15009e498ae7adee9d63d01b2396',\n ],\n [\n '605bdb019981718b986d0f07e834cb0d9deb8360ffb7f61df982345ef27a7479',\n '2972d2de4f8d20681a78d93ec96fe23c26bfae84fb14db43b01e1e9056b8c49',\n ],\n [\n '62d14dab4150bf497402fdc45a215e10dcb01c354959b10cfe31c7e9d87ff33d',\n '80fc06bd8cc5b01098088a1950eed0db01aa132967ab472235f5642483b25eaf',\n ],\n [\n '80c60ad0040f27dade5b4b06c408e56b2c50e9f56b9b8b425e555c2f86308b6f',\n '1c38303f1cc5c30f26e66bad7fe72f70a65eed4cbe7024eb1aa01f56430bd57a',\n ],\n [\n '7a9375ad6167ad54aa74c6348cc54d344cc5dc9487d847049d5eabb0fa03c8fb',\n 'd0e3fa9eca8726909559e0d79269046bdc59ea10c70ce2b02d499ec224dc7f7',\n ],\n [\n 'd528ecd9b696b54c907a9ed045447a79bb408ec39b68df504bb51f459bc3ffc9',\n 'eecf41253136e5f99966f21881fd656ebc4345405c520dbc063465b521409933',\n ],\n [\n '49370a4b5f43412ea25f514e8ecdad05266115e4a7ecb1387231808f8b45963',\n '758f3f41afd6ed428b3081b0512fd62a54c3f3afbb5b6764b653052a12949c9a',\n ],\n [\n '77f230936ee88cbbd73df930d64702ef881d811e0e1498e2f1c13eb1fc345d74',\n '958ef42a7886b6400a08266e9ba1b37896c95330d97077cbbe8eb3c7671c60d6',\n ],\n [\n 'f2dac991cc4ce4b9ea44887e5c7c0bce58c80074ab9d4dbaeb28531b7739f530',\n 'e0dedc9b3b2f8dad4da1f32dec2531df9eb5fbeb0598e4fd1a117dba703a3c37',\n ],\n [\n '463b3d9f662621fb1b4be8fbbe2520125a216cdfc9dae3debcba4850c690d45b',\n '5ed430d78c296c3543114306dd8622d7c622e27c970a1de31cb377b01af7307e',\n ],\n [\n 'f16f804244e46e2a09232d4aff3b59976b98fac14328a2d1a32496b49998f247',\n 'cedabd9b82203f7e13d206fcdf4e33d92a6c53c26e5cce26d6579962c4e31df6',\n ],\n [\n 'caf754272dc84563b0352b7a14311af55d245315ace27c65369e15f7151d41d1',\n 'cb474660ef35f5f2a41b643fa5e460575f4fa9b7962232a5c32f908318a04476',\n ],\n [\n '2600ca4b282cb986f85d0f1709979d8b44a09c07cb86d7c124497bc86f082120',\n '4119b88753c15bd6a693b03fcddbb45d5ac6be74ab5f0ef44b0be9475a7e4b40',\n ],\n [\n '7635ca72d7e8432c338ec53cd12220bc01c48685e24f7dc8c602a7746998e435',\n '91b649609489d613d1d5e590f78e6d74ecfc061d57048bad9e76f302c5b9c61',\n ],\n [\n '754e3239f325570cdbbf4a87deee8a66b7f2b33479d468fbc1a50743bf56cc18',\n '673fb86e5bda30fb3cd0ed304ea49a023ee33d0197a695d0c5d98093c536683',\n ],\n [\n 'e3e6bd1071a1e96aff57859c82d570f0330800661d1c952f9fe2694691d9b9e8',\n '59c9e0bba394e76f40c0aa58379a3cb6a5a2283993e90c4167002af4920e37f5',\n ],\n [\n '186b483d056a033826ae73d88f732985c4ccb1f32ba35f4b4cc47fdcf04aa6eb',\n '3b952d32c67cf77e2e17446e204180ab21fb8090895138b4a4a797f86e80888b',\n ],\n [\n 'df9d70a6b9876ce544c98561f4be4f725442e6d2b737d9c91a8321724ce0963f',\n '55eb2dafd84d6ccd5f862b785dc39d4ab157222720ef9da217b8c45cf2ba2417',\n ],\n [\n '5edd5cc23c51e87a497ca815d5dce0f8ab52554f849ed8995de64c5f34ce7143',\n 'efae9c8dbc14130661e8cec030c89ad0c13c66c0d17a2905cdc706ab7399a868',\n ],\n [\n '290798c2b6476830da12fe02287e9e777aa3fba1c355b17a722d362f84614fba',\n 'e38da76dcd440621988d00bcf79af25d5b29c094db2a23146d003afd41943e7a',\n ],\n [\n 'af3c423a95d9f5b3054754efa150ac39cd29552fe360257362dfdecef4053b45',\n 'f98a3fd831eb2b749a93b0e6f35cfb40c8cd5aa667a15581bc2feded498fd9c6',\n ],\n [\n '766dbb24d134e745cccaa28c99bf274906bb66b26dcf98df8d2fed50d884249a',\n '744b1152eacbe5e38dcc887980da38b897584a65fa06cedd2c924f97cbac5996',\n ],\n [\n '59dbf46f8c94759ba21277c33784f41645f7b44f6c596a58ce92e666191abe3e',\n 'c534ad44175fbc300f4ea6ce648309a042ce739a7919798cd85e216c4a307f6e',\n ],\n [\n 'f13ada95103c4537305e691e74e9a4a8dd647e711a95e73cb62dc6018cfd87b8',\n 'e13817b44ee14de663bf4bc808341f326949e21a6a75c2570778419bdaf5733d',\n ],\n [\n '7754b4fa0e8aced06d4167a2c59cca4cda1869c06ebadfb6488550015a88522c',\n '30e93e864e669d82224b967c3020b8fa8d1e4e350b6cbcc537a48b57841163a2',\n ],\n [\n '948dcadf5990e048aa3874d46abef9d701858f95de8041d2a6828c99e2262519',\n 'e491a42537f6e597d5d28a3224b1bc25df9154efbd2ef1d2cbba2cae5347d57e',\n ],\n [\n '7962414450c76c1689c7b48f8202ec37fb224cf5ac0bfa1570328a8a3d7c77ab',\n '100b610ec4ffb4760d5c1fc133ef6f6b12507a051f04ac5760afa5b29db83437',\n ],\n [\n '3514087834964b54b15b160644d915485a16977225b8847bb0dd085137ec47ca',\n 'ef0afbb2056205448e1652c48e8127fc6039e77c15c2378b7e7d15a0de293311',\n ],\n [\n 'd3cc30ad6b483e4bc79ce2c9dd8bc54993e947eb8df787b442943d3f7b527eaf',\n '8b378a22d827278d89c5e9be8f9508ae3c2ad46290358630afb34db04eede0a4',\n ],\n [\n '1624d84780732860ce1c78fcbfefe08b2b29823db913f6493975ba0ff4847610',\n '68651cf9b6da903e0914448c6cd9d4ca896878f5282be4c8cc06e2a404078575',\n ],\n [\n '733ce80da955a8a26902c95633e62a985192474b5af207da6df7b4fd5fc61cd4',\n 'f5435a2bd2badf7d485a4d8b8db9fcce3e1ef8e0201e4578c54673bc1dc5ea1d',\n ],\n [\n '15d9441254945064cf1a1c33bbd3b49f8966c5092171e699ef258dfab81c045c',\n 'd56eb30b69463e7234f5137b73b84177434800bacebfc685fc37bbe9efe4070d',\n ],\n [\n 'a1d0fcf2ec9de675b612136e5ce70d271c21417c9d2b8aaaac138599d0717940',\n 'edd77f50bcb5a3cab2e90737309667f2641462a54070f3d519212d39c197a629',\n ],\n [\n 'e22fbe15c0af8ccc5780c0735f84dbe9a790badee8245c06c7ca37331cb36980',\n 'a855babad5cd60c88b430a69f53a1a7a38289154964799be43d06d77d31da06',\n ],\n [\n '311091dd9860e8e20ee13473c1155f5f69635e394704eaa74009452246cfa9b3',\n '66db656f87d1f04fffd1f04788c06830871ec5a64feee685bd80f0b1286d8374',\n ],\n [\n '34c1fd04d301be89b31c0442d3e6ac24883928b45a9340781867d4232ec2dbdf',\n '9414685e97b1b5954bd46f730174136d57f1ceeb487443dc5321857ba73abee',\n ],\n [\n 'f219ea5d6b54701c1c14de5b557eb42a8d13f3abbcd08affcc2a5e6b049b8d63',\n '4cb95957e83d40b0f73af4544cccf6b1f4b08d3c07b27fb8d8c2962a400766d1',\n ],\n [\n 'd7b8740f74a8fbaab1f683db8f45de26543a5490bca627087236912469a0b448',\n 'fa77968128d9c92ee1010f337ad4717eff15db5ed3c049b3411e0315eaa4593b',\n ],\n [\n '32d31c222f8f6f0ef86f7c98d3a3335ead5bcd32abdd94289fe4d3091aa824bf',\n '5f3032f5892156e39ccd3d7915b9e1da2e6dac9e6f26e961118d14b8462e1661',\n ],\n [\n '7461f371914ab32671045a155d9831ea8793d77cd59592c4340f86cbc18347b5',\n '8ec0ba238b96bec0cbdddcae0aa442542eee1ff50c986ea6b39847b3cc092ff6',\n ],\n [\n 'ee079adb1df1860074356a25aa38206a6d716b2c3e67453d287698bad7b2b2d6',\n '8dc2412aafe3be5c4c5f37e0ecc5f9f6a446989af04c4e25ebaac479ec1c8c1e',\n ],\n [\n '16ec93e447ec83f0467b18302ee620f7e65de331874c9dc72bfd8616ba9da6b5',\n '5e4631150e62fb40d0e8c2a7ca5804a39d58186a50e497139626778e25b0674d',\n ],\n [\n 'eaa5f980c245f6f038978290afa70b6bd8855897f98b6aa485b96065d537bd99',\n 'f65f5d3e292c2e0819a528391c994624d784869d7e6ea67fb18041024edc07dc',\n ],\n [\n '78c9407544ac132692ee1910a02439958ae04877151342ea96c4b6b35a49f51',\n 'f3e0319169eb9b85d5404795539a5e68fa1fbd583c064d2462b675f194a3ddb4',\n ],\n [\n '494f4be219a1a77016dcd838431aea0001cdc8ae7a6fc688726578d9702857a5',\n '42242a969283a5f339ba7f075e36ba2af925ce30d767ed6e55f4b031880d562c',\n ],\n [\n 'a598a8030da6d86c6bc7f2f5144ea549d28211ea58faa70ebf4c1e665c1fe9b5',\n '204b5d6f84822c307e4b4a7140737aec23fc63b65b35f86a10026dbd2d864e6b',\n ],\n [\n 'c41916365abb2b5d09192f5f2dbeafec208f020f12570a184dbadc3e58595997',\n '4f14351d0087efa49d245b328984989d5caf9450f34bfc0ed16e96b58fa9913',\n ],\n [\n '841d6063a586fa475a724604da03bc5b92a2e0d2e0a36acfe4c73a5514742881',\n '73867f59c0659e81904f9a1c7543698e62562d6744c169ce7a36de01a8d6154',\n ],\n [\n '5e95bb399a6971d376026947f89bde2f282b33810928be4ded112ac4d70e20d5',\n '39f23f366809085beebfc71181313775a99c9aed7d8ba38b161384c746012865',\n ],\n [\n '36e4641a53948fd476c39f8a99fd974e5ec07564b5315d8bf99471bca0ef2f66',\n 'd2424b1b1abe4eb8164227b085c9aa9456ea13493fd563e06fd51cf5694c78fc',\n ],\n [\n '336581ea7bfbbb290c191a2f507a41cf5643842170e914faeab27c2c579f726',\n 'ead12168595fe1be99252129b6e56b3391f7ab1410cd1e0ef3dcdcabd2fda224',\n ],\n [\n '8ab89816dadfd6b6a1f2634fcf00ec8403781025ed6890c4849742706bd43ede',\n '6fdcef09f2f6d0a044e654aef624136f503d459c3e89845858a47a9129cdd24e',\n ],\n [\n '1e33f1a746c9c5778133344d9299fcaa20b0938e8acff2544bb40284b8c5fb94',\n '60660257dd11b3aa9c8ed618d24edff2306d320f1d03010e33a7d2057f3b3b6',\n ],\n [\n '85b7c1dcb3cec1b7ee7f30ded79dd20a0ed1f4cc18cbcfcfa410361fd8f08f31',\n '3d98a9cdd026dd43f39048f25a8847f4fcafad1895d7a633c6fed3c35e999511',\n ],\n [\n '29df9fbd8d9e46509275f4b125d6d45d7fbe9a3b878a7af872a2800661ac5f51',\n 'b4c4fe99c775a606e2d8862179139ffda61dc861c019e55cd2876eb2a27d84b',\n ],\n [\n 'a0b1cae06b0a847a3fea6e671aaf8adfdfe58ca2f768105c8082b2e449fce252',\n 'ae434102edde0958ec4b19d917a6a28e6b72da1834aff0e650f049503a296cf2',\n ],\n [\n '4e8ceafb9b3e9a136dc7ff67e840295b499dfb3b2133e4ba113f2e4c0e121e5',\n 'cf2174118c8b6d7a4b48f6d534ce5c79422c086a63460502b827ce62a326683c',\n ],\n [\n 'd24a44e047e19b6f5afb81c7ca2f69080a5076689a010919f42725c2b789a33b',\n '6fb8d5591b466f8fc63db50f1c0f1c69013f996887b8244d2cdec417afea8fa3',\n ],\n [\n 'ea01606a7a6c9cdd249fdfcfacb99584001edd28abbab77b5104e98e8e3b35d4',\n '322af4908c7312b0cfbfe369f7a7b3cdb7d4494bc2823700cfd652188a3ea98d',\n ],\n [\n 'af8addbf2b661c8a6c6328655eb96651252007d8c5ea31be4ad196de8ce2131f',\n '6749e67c029b85f52a034eafd096836b2520818680e26ac8f3dfbcdb71749700',\n ],\n [\n 'e3ae1974566ca06cc516d47e0fb165a674a3dabcfca15e722f0e3450f45889',\n '2aeabe7e4531510116217f07bf4d07300de97e4874f81f533420a72eeb0bd6a4',\n ],\n [\n '591ee355313d99721cf6993ffed1e3e301993ff3ed258802075ea8ced397e246',\n 'b0ea558a113c30bea60fc4775460c7901ff0b053d25ca2bdeee98f1a4be5d196',\n ],\n [\n '11396d55fda54c49f19aa97318d8da61fa8584e47b084945077cf03255b52984',\n '998c74a8cd45ac01289d5833a7beb4744ff536b01b257be4c5767bea93ea57a4',\n ],\n [\n '3c5d2a1ba39c5a1790000738c9e0c40b8dcdfd5468754b6405540157e017aa7a',\n 'b2284279995a34e2f9d4de7396fc18b80f9b8b9fdd270f6661f79ca4c81bd257',\n ],\n [\n 'cc8704b8a60a0defa3a99a7299f2e9c3fbc395afb04ac078425ef8a1793cc030',\n 'bdd46039feed17881d1e0862db347f8cf395b74fc4bcdc4e940b74e3ac1f1b13',\n ],\n [\n 'c533e4f7ea8555aacd9777ac5cad29b97dd4defccc53ee7ea204119b2889b197',\n '6f0a256bc5efdf429a2fb6242f1a43a2d9b925bb4a4b3a26bb8e0f45eb596096',\n ],\n [\n 'c14f8f2ccb27d6f109f6d08d03cc96a69ba8c34eec07bbcf566d48e33da6593',\n 'c359d6923bb398f7fd4473e16fe1c28475b740dd098075e6c0e8649113dc3a38',\n ],\n [\n 'a6cbc3046bc6a450bac24789fa17115a4c9739ed75f8f21ce441f72e0b90e6ef',\n '21ae7f4680e889bb130619e2c0f95a360ceb573c70603139862afd617fa9b9f',\n ],\n [\n '347d6d9a02c48927ebfb86c1359b1caf130a3c0267d11ce6344b39f99d43cc38',\n '60ea7f61a353524d1c987f6ecec92f086d565ab687870cb12689ff1e31c74448',\n ],\n [\n 'da6545d2181db8d983f7dcb375ef5866d47c67b1bf31c8cf855ef7437b72656a',\n '49b96715ab6878a79e78f07ce5680c5d6673051b4935bd897fea824b77dc208a',\n ],\n [\n 'c40747cc9d012cb1a13b8148309c6de7ec25d6945d657146b9d5994b8feb1111',\n '5ca560753be2a12fc6de6caf2cb489565db936156b9514e1bb5e83037e0fa2d4',\n ],\n [\n '4e42c8ec82c99798ccf3a610be870e78338c7f713348bd34c8203ef4037f3502',\n '7571d74ee5e0fb92a7a8b33a07783341a5492144cc54bcc40a94473693606437',\n ],\n [\n '3775ab7089bc6af823aba2e1af70b236d251cadb0c86743287522a1b3b0dedea',\n 'be52d107bcfa09d8bcb9736a828cfa7fac8db17bf7a76a2c42ad961409018cf7',\n ],\n [\n 'cee31cbf7e34ec379d94fb814d3d775ad954595d1314ba8846959e3e82f74e26',\n '8fd64a14c06b589c26b947ae2bcf6bfa0149ef0be14ed4d80f448a01c43b1c6d',\n ],\n [\n 'b4f9eaea09b6917619f6ea6a4eb5464efddb58fd45b1ebefcdc1a01d08b47986',\n '39e5c9925b5a54b07433a4f18c61726f8bb131c012ca542eb24a8ac07200682a',\n ],\n [\n 'd4263dfc3d2df923a0179a48966d30ce84e2515afc3dccc1b77907792ebcc60e',\n '62dfaf07a0f78feb30e30d6295853ce189e127760ad6cf7fae164e122a208d54',\n ],\n [\n '48457524820fa65a4f8d35eb6930857c0032acc0a4a2de422233eeda897612c4',\n '25a748ab367979d98733c38a1fa1c2e7dc6cc07db2d60a9ae7a76aaa49bd0f77',\n ],\n [\n 'dfeeef1881101f2cb11644f3a2afdfc2045e19919152923f367a1767c11cceda',\n 'ecfb7056cf1de042f9420bab396793c0c390bde74b4bbdff16a83ae09a9a7517',\n ],\n [\n '6d7ef6b17543f8373c573f44e1f389835d89bcbc6062ced36c82df83b8fae859',\n 'cd450ec335438986dfefa10c57fea9bcc521a0959b2d80bbf74b190dca712d10',\n ],\n [\n 'e75605d59102a5a2684500d3b991f2e3f3c88b93225547035af25af66e04541f',\n 'f5c54754a8f71ee540b9b48728473e314f729ac5308b06938360990e2bfad125',\n ],\n [\n 'eb98660f4c4dfaa06a2be453d5020bc99a0c2e60abe388457dd43fefb1ed620c',\n '6cb9a8876d9cb8520609af3add26cd20a0a7cd8a9411131ce85f44100099223e',\n ],\n [\n '13e87b027d8514d35939f2e6892b19922154596941888336dc3563e3b8dba942',\n 'fef5a3c68059a6dec5d624114bf1e91aac2b9da568d6abeb2570d55646b8adf1',\n ],\n [\n 'ee163026e9fd6fe017c38f06a5be6fc125424b371ce2708e7bf4491691e5764a',\n '1acb250f255dd61c43d94ccc670d0f58f49ae3fa15b96623e5430da0ad6c62b2',\n ],\n [\n 'b268f5ef9ad51e4d78de3a750c2dc89b1e626d43505867999932e5db33af3d80',\n '5f310d4b3c99b9ebb19f77d41c1dee018cf0d34fd4191614003e945a1216e423',\n ],\n [\n 'ff07f3118a9df035e9fad85eb6c7bfe42b02f01ca99ceea3bf7ffdba93c4750d',\n '438136d603e858a3a5c440c38eccbaddc1d2942114e2eddd4740d098ced1f0d8',\n ],\n [\n '8d8b9855c7c052a34146fd20ffb658bea4b9f69e0d825ebec16e8c3ce2b526a1',\n 'cdb559eedc2d79f926baf44fb84ea4d44bcf50fee51d7ceb30e2e7f463036758',\n ],\n [\n '52db0b5384dfbf05bfa9d472d7ae26dfe4b851ceca91b1eba54263180da32b63',\n 'c3b997d050ee5d423ebaf66a6db9f57b3180c902875679de924b69d84a7b375',\n ],\n [\n 'e62f9490d3d51da6395efd24e80919cc7d0f29c3f3fa48c6fff543becbd43352',\n '6d89ad7ba4876b0b22c2ca280c682862f342c8591f1daf5170e07bfd9ccafa7d',\n ],\n [\n '7f30ea2476b399b4957509c88f77d0191afa2ff5cb7b14fd6d8e7d65aaab1193',\n 'ca5ef7d4b231c94c3b15389a5f6311e9daff7bb67b103e9880ef4bff637acaec',\n ],\n [\n '5098ff1e1d9f14fb46a210fada6c903fef0fb7b4a1dd1d9ac60a0361800b7a00',\n '9731141d81fc8f8084d37c6e7542006b3ee1b40d60dfe5362a5b132fd17ddc0',\n ],\n [\n '32b78c7de9ee512a72895be6b9cbefa6e2f3c4ccce445c96b9f2c81e2778ad58',\n 'ee1849f513df71e32efc3896ee28260c73bb80547ae2275ba497237794c8753c',\n ],\n [\n 'e2cb74fddc8e9fbcd076eef2a7c72b0ce37d50f08269dfc074b581550547a4f7',\n 'd3aa2ed71c9dd2247a62df062736eb0baddea9e36122d2be8641abcb005cc4a4',\n ],\n [\n '8438447566d4d7bedadc299496ab357426009a35f235cb141be0d99cd10ae3a8',\n 'c4e1020916980a4da5d01ac5e6ad330734ef0d7906631c4f2390426b2edd791f',\n ],\n [\n '4162d488b89402039b584c6fc6c308870587d9c46f660b878ab65c82c711d67e',\n '67163e903236289f776f22c25fb8a3afc1732f2b84b4e95dbda47ae5a0852649',\n ],\n [\n '3fad3fa84caf0f34f0f89bfd2dcf54fc175d767aec3e50684f3ba4a4bf5f683d',\n 'cd1bc7cb6cc407bb2f0ca647c718a730cf71872e7d0d2a53fa20efcdfe61826',\n ],\n [\n '674f2600a3007a00568c1a7ce05d0816c1fb84bf1370798f1c69532faeb1a86b',\n '299d21f9413f33b3edf43b257004580b70db57da0b182259e09eecc69e0d38a5',\n ],\n [\n 'd32f4da54ade74abb81b815ad1fb3b263d82d6c692714bcff87d29bd5ee9f08f',\n 'f9429e738b8e53b968e99016c059707782e14f4535359d582fc416910b3eea87',\n ],\n [\n '30e4e670435385556e593657135845d36fbb6931f72b08cb1ed954f1e3ce3ff6',\n '462f9bce619898638499350113bbc9b10a878d35da70740dc695a559eb88db7b',\n ],\n [\n 'be2062003c51cc3004682904330e4dee7f3dcd10b01e580bf1971b04d4cad297',\n '62188bc49d61e5428573d48a74e1c655b1c61090905682a0d5558ed72dccb9bc',\n ],\n [\n '93144423ace3451ed29e0fb9ac2af211cb6e84a601df5993c419859fff5df04a',\n '7c10dfb164c3425f5c71a3f9d7992038f1065224f72bb9d1d902a6d13037b47c',\n ],\n [\n 'b015f8044f5fcbdcf21ca26d6c34fb8197829205c7b7d2a7cb66418c157b112c',\n 'ab8c1e086d04e813744a655b2df8d5f83b3cdc6faa3088c1d3aea1454e3a1d5f',\n ],\n [\n 'd5e9e1da649d97d89e4868117a465a3a4f8a18de57a140d36b3f2af341a21b52',\n '4cb04437f391ed73111a13cc1d4dd0db1693465c2240480d8955e8592f27447a',\n ],\n [\n 'd3ae41047dd7ca065dbf8ed77b992439983005cd72e16d6f996a5316d36966bb',\n 'bd1aeb21ad22ebb22a10f0303417c6d964f8cdd7df0aca614b10dc14d125ac46',\n ],\n [\n '463e2763d885f958fc66cdd22800f0a487197d0a82e377b49f80af87c897b065',\n 'bfefacdb0e5d0fd7df3a311a94de062b26b80c61fbc97508b79992671ef7ca7f',\n ],\n [\n '7985fdfd127c0567c6f53ec1bb63ec3158e597c40bfe747c83cddfc910641917',\n '603c12daf3d9862ef2b25fe1de289aed24ed291e0ec6708703a5bd567f32ed03',\n ],\n [\n '74a1ad6b5f76e39db2dd249410eac7f99e74c59cb83d2d0ed5ff1543da7703e9',\n 'cc6157ef18c9c63cd6193d83631bbea0093e0968942e8c33d5737fd790e0db08',\n ],\n [\n '30682a50703375f602d416664ba19b7fc9bab42c72747463a71d0896b22f6da3',\n '553e04f6b018b4fa6c8f39e7f311d3176290d0e0f19ca73f17714d9977a22ff8',\n ],\n [\n '9e2158f0d7c0d5f26c3791efefa79597654e7a2b2464f52b1ee6c1347769ef57',\n '712fcdd1b9053f09003a3481fa7762e9ffd7c8ef35a38509e2fbf2629008373',\n ],\n [\n '176e26989a43c9cfeba4029c202538c28172e566e3c4fce7322857f3be327d66',\n 'ed8cc9d04b29eb877d270b4878dc43c19aefd31f4eee09ee7b47834c1fa4b1c3',\n ],\n [\n '75d46efea3771e6e68abb89a13ad747ecf1892393dfc4f1b7004788c50374da8',\n '9852390a99507679fd0b86fd2b39a868d7efc22151346e1a3ca4726586a6bed8',\n ],\n [\n '809a20c67d64900ffb698c4c825f6d5f2310fb0451c869345b7319f645605721',\n '9e994980d9917e22b76b061927fa04143d096ccc54963e6a5ebfa5f3f8e286c1',\n ],\n [\n '1b38903a43f7f114ed4500b4eac7083fdefece1cf29c63528d563446f972c180',\n '4036edc931a60ae889353f77fd53de4a2708b26b6f5da72ad3394119daf408f9',\n ],\n ],\n },\n};\n", "'use strict';\n\nvar curves = exports;\n\nvar hash = require('hash.js');\nvar curve = require('./curve');\nvar utils = require('./utils');\n\nvar assert = utils.assert;\n\nfunction PresetCurve(options) {\n if (options.type === 'short')\n this.curve = new curve.short(options);\n else if (options.type === 'edwards')\n this.curve = new curve.edwards(options);\n else\n this.curve = new curve.mont(options);\n this.g = this.curve.g;\n this.n = this.curve.n;\n this.hash = options.hash;\n\n assert(this.g.validate(), 'Invalid curve');\n assert(this.g.mul(this.n).isInfinity(), 'Invalid curve, G*N != O');\n}\ncurves.PresetCurve = PresetCurve;\n\nfunction defineCurve(name, options) {\n Object.defineProperty(curves, name, {\n configurable: true,\n enumerable: true,\n get: function() {\n var curve = new PresetCurve(options);\n Object.defineProperty(curves, name, {\n configurable: true,\n enumerable: true,\n value: curve,\n });\n return curve;\n },\n });\n}\n\ndefineCurve('p192', {\n type: 'short',\n prime: 'p192',\n p: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff',\n a: 'ffffffff ffffffff ffffffff fffffffe ffffffff fffffffc',\n b: '64210519 e59c80e7 0fa7e9ab 72243049 feb8deec c146b9b1',\n n: 'ffffffff ffffffff ffffffff 99def836 146bc9b1 b4d22831',\n hash: hash.sha256,\n gRed: false,\n g: [\n '188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012',\n '07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811',\n ],\n});\n\ndefineCurve('p224', {\n type: 'short',\n prime: 'p224',\n p: 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001',\n a: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff fffffffe',\n b: 'b4050a85 0c04b3ab f5413256 5044b0b7 d7bfd8ba 270b3943 2355ffb4',\n n: 'ffffffff ffffffff ffffffff ffff16a2 e0b8f03e 13dd2945 5c5c2a3d',\n hash: hash.sha256,\n gRed: false,\n g: [\n 'b70e0cbd 6bb4bf7f 321390b9 4a03c1d3 56c21122 343280d6 115c1d21',\n 'bd376388 b5f723fb 4c22dfe6 cd4375a0 5a074764 44d58199 85007e34',\n ],\n});\n\ndefineCurve('p256', {\n type: 'short',\n prime: null,\n p: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff ffffffff',\n a: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff fffffffc',\n b: '5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6 3bce3c3e 27d2604b',\n n: 'ffffffff 00000000 ffffffff ffffffff bce6faad a7179e84 f3b9cac2 fc632551',\n hash: hash.sha256,\n gRed: false,\n g: [\n '6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296',\n '4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5',\n ],\n});\n\ndefineCurve('p384', {\n type: 'short',\n prime: null,\n p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'fffffffe ffffffff 00000000 00000000 ffffffff',\n a: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'fffffffe ffffffff 00000000 00000000 fffffffc',\n b: 'b3312fa7 e23ee7e4 988e056b e3f82d19 181d9c6e fe814112 0314088f ' +\n '5013875a c656398d 8a2ed19d 2a85c8ed d3ec2aef',\n n: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff c7634d81 ' +\n 'f4372ddf 581a0db2 48b0a77a ecec196a ccc52973',\n hash: hash.sha384,\n gRed: false,\n g: [\n 'aa87ca22 be8b0537 8eb1c71e f320ad74 6e1d3b62 8ba79b98 59f741e0 82542a38 ' +\n '5502f25d bf55296c 3a545e38 72760ab7',\n '3617de4a 96262c6f 5d9e98bf 9292dc29 f8f41dbd 289a147c e9da3113 b5f0b8c0 ' +\n '0a60b1ce 1d7e819d 7a431d7c 90ea0e5f',\n ],\n});\n\ndefineCurve('p521', {\n type: 'short',\n prime: null,\n p: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff',\n a: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff fffffffc',\n b: '00000051 953eb961 8e1c9a1f 929a21a0 b68540ee a2da725b ' +\n '99b315f3 b8b48991 8ef109e1 56193951 ec7e937b 1652c0bd ' +\n '3bb1bf07 3573df88 3d2c34f1 ef451fd4 6b503f00',\n n: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff fffffffa 51868783 bf2f966b 7fcc0148 ' +\n 'f709a5d0 3bb5c9b8 899c47ae bb6fb71e 91386409',\n hash: hash.sha512,\n gRed: false,\n g: [\n '000000c6 858e06b7 0404e9cd 9e3ecb66 2395b442 9c648139 ' +\n '053fb521 f828af60 6b4d3dba a14b5e77 efe75928 fe1dc127 ' +\n 'a2ffa8de 3348b3c1 856a429b f97e7e31 c2e5bd66',\n '00000118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9 98f54449 ' +\n '579b4468 17afbd17 273e662c 97ee7299 5ef42640 c550b901 ' +\n '3fad0761 353c7086 a272c240 88be9476 9fd16650',\n ],\n});\n\ndefineCurve('curve25519', {\n type: 'mont',\n prime: 'p25519',\n p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed',\n a: '76d06',\n b: '1',\n n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed',\n hash: hash.sha256,\n gRed: false,\n g: [\n '9',\n ],\n});\n\ndefineCurve('ed25519', {\n type: 'edwards',\n prime: 'p25519',\n p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed',\n a: '-1',\n c: '1',\n // -121665 * (121666^(-1)) (mod P)\n d: '52036cee2b6ffe73 8cc740797779e898 00700a4d4141d8ab 75eb4dca135978a3',\n n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed',\n hash: hash.sha256,\n gRed: false,\n g: [\n '216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a',\n\n // 4/5\n '6666666666666666666666666666666666666666666666666666666666666658',\n ],\n});\n\nvar pre;\ntry {\n pre = require('./precomputed/secp256k1');\n} catch (e) {\n pre = undefined;\n}\n\ndefineCurve('secp256k1', {\n type: 'short',\n prime: 'k256',\n p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f',\n a: '0',\n b: '7',\n n: 'ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141',\n h: '1',\n hash: hash.sha256,\n\n // Precomputed endomorphism\n beta: '7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee',\n lambda: '5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72',\n basis: [\n {\n a: '3086d221a7d46bcde86c90e49284eb15',\n b: '-e4437ed6010e88286f547fa90abfe4c3',\n },\n {\n a: '114ca50f7a8e2f3f657c1108d9d44cfd8',\n b: '3086d221a7d46bcde86c90e49284eb15',\n },\n ],\n\n gRed: false,\n g: [\n '79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798',\n '483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8',\n pre,\n ],\n});\n", "'use strict';\n\nvar hash = require('hash.js');\nvar utils = require('minimalistic-crypto-utils');\nvar assert = require('minimalistic-assert');\n\nfunction HmacDRBG(options) {\n if (!(this instanceof HmacDRBG))\n return new HmacDRBG(options);\n this.hash = options.hash;\n this.predResist = !!options.predResist;\n\n this.outLen = this.hash.outSize;\n this.minEntropy = options.minEntropy || this.hash.hmacStrength;\n\n this._reseed = null;\n this.reseedInterval = null;\n this.K = null;\n this.V = null;\n\n var entropy = utils.toArray(options.entropy, options.entropyEnc || 'hex');\n var nonce = utils.toArray(options.nonce, options.nonceEnc || 'hex');\n var pers = utils.toArray(options.pers, options.persEnc || 'hex');\n assert(entropy.length >= (this.minEntropy / 8),\n 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');\n this._init(entropy, nonce, pers);\n}\nmodule.exports = HmacDRBG;\n\nHmacDRBG.prototype._init = function init(entropy, nonce, pers) {\n var seed = entropy.concat(nonce).concat(pers);\n\n this.K = new Array(this.outLen / 8);\n this.V = new Array(this.outLen / 8);\n for (var i = 0; i < this.V.length; i++) {\n this.K[i] = 0x00;\n this.V[i] = 0x01;\n }\n\n this._update(seed);\n this._reseed = 1;\n this.reseedInterval = 0x1000000000000; // 2^48\n};\n\nHmacDRBG.prototype._hmac = function hmac() {\n return new hash.hmac(this.hash, this.K);\n};\n\nHmacDRBG.prototype._update = function update(seed) {\n var kmac = this._hmac()\n .update(this.V)\n .update([ 0x00 ]);\n if (seed)\n kmac = kmac.update(seed);\n this.K = kmac.digest();\n this.V = this._hmac().update(this.V).digest();\n if (!seed)\n return;\n\n this.K = this._hmac()\n .update(this.V)\n .update([ 0x01 ])\n .update(seed)\n .digest();\n this.V = this._hmac().update(this.V).digest();\n};\n\nHmacDRBG.prototype.reseed = function reseed(entropy, entropyEnc, add, addEnc) {\n // Optional entropy enc\n if (typeof entropyEnc !== 'string') {\n addEnc = add;\n add = entropyEnc;\n entropyEnc = null;\n }\n\n entropy = utils.toArray(entropy, entropyEnc);\n add = utils.toArray(add, addEnc);\n\n assert(entropy.length >= (this.minEntropy / 8),\n 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');\n\n this._update(entropy.concat(add || []));\n this._reseed = 1;\n};\n\nHmacDRBG.prototype.generate = function generate(len, enc, add, addEnc) {\n if (this._reseed > this.reseedInterval)\n throw new Error('Reseed is required');\n\n // Optional encoding\n if (typeof enc !== 'string') {\n addEnc = add;\n add = enc;\n enc = null;\n }\n\n // Optional additional data\n if (add) {\n add = utils.toArray(add, addEnc || 'hex');\n this._update(add);\n }\n\n var temp = [];\n while (temp.length < len) {\n this.V = this._hmac().update(this.V).digest();\n temp = temp.concat(this.V);\n }\n\n var res = temp.slice(0, len);\n this._update(add);\n this._reseed++;\n return utils.encode(res, enc);\n};\n", "'use strict';\n\nvar BN = require('bn.js');\nvar utils = require('../utils');\nvar assert = utils.assert;\n\nfunction KeyPair(ec, options) {\n this.ec = ec;\n this.priv = null;\n this.pub = null;\n\n // KeyPair(ec, { priv: ..., pub: ... })\n if (options.priv)\n this._importPrivate(options.priv, options.privEnc);\n if (options.pub)\n this._importPublic(options.pub, options.pubEnc);\n}\nmodule.exports = KeyPair;\n\nKeyPair.fromPublic = function fromPublic(ec, pub, enc) {\n if (pub instanceof KeyPair)\n return pub;\n\n return new KeyPair(ec, {\n pub: pub,\n pubEnc: enc,\n });\n};\n\nKeyPair.fromPrivate = function fromPrivate(ec, priv, enc) {\n if (priv instanceof KeyPair)\n return priv;\n\n return new KeyPair(ec, {\n priv: priv,\n privEnc: enc,\n });\n};\n\nKeyPair.prototype.validate = function validate() {\n var pub = this.getPublic();\n\n if (pub.isInfinity())\n return { result: false, reason: 'Invalid public key' };\n if (!pub.validate())\n return { result: false, reason: 'Public key is not a point' };\n if (!pub.mul(this.ec.curve.n).isInfinity())\n return { result: false, reason: 'Public key * N != O' };\n\n return { result: true, reason: null };\n};\n\nKeyPair.prototype.getPublic = function getPublic(compact, enc) {\n // compact is optional argument\n if (typeof compact === 'string') {\n enc = compact;\n compact = null;\n }\n\n if (!this.pub)\n this.pub = this.ec.g.mul(this.priv);\n\n if (!enc)\n return this.pub;\n\n return this.pub.encode(enc, compact);\n};\n\nKeyPair.prototype.getPrivate = function getPrivate(enc) {\n if (enc === 'hex')\n return this.priv.toString(16, 2);\n else\n return this.priv;\n};\n\nKeyPair.prototype._importPrivate = function _importPrivate(key, enc) {\n this.priv = new BN(key, enc || 16);\n\n // Ensure that the priv won't be bigger than n, otherwise we may fail\n // in fixed multiplication method\n this.priv = this.priv.umod(this.ec.curve.n);\n};\n\nKeyPair.prototype._importPublic = function _importPublic(key, enc) {\n if (key.x || key.y) {\n // Montgomery points only have an `x` coordinate.\n // Weierstrass/Edwards points on the other hand have both `x` and\n // `y` coordinates.\n if (this.ec.curve.type === 'mont') {\n assert(key.x, 'Need x coordinate');\n } else if (this.ec.curve.type === 'short' ||\n this.ec.curve.type === 'edwards') {\n assert(key.x && key.y, 'Need both x and y coordinate');\n }\n this.pub = this.ec.curve.point(key.x, key.y);\n return;\n }\n this.pub = this.ec.curve.decodePoint(key, enc);\n};\n\n// ECDH\nKeyPair.prototype.derive = function derive(pub) {\n if(!pub.validate()) {\n assert(pub.validate(), 'public point not validated');\n }\n return pub.mul(this.priv).getX();\n};\n\n// ECDSA\nKeyPair.prototype.sign = function sign(msg, enc, options) {\n return this.ec.sign(msg, this, enc, options);\n};\n\nKeyPair.prototype.verify = function verify(msg, signature) {\n return this.ec.verify(msg, signature, this);\n};\n\nKeyPair.prototype.inspect = function inspect() {\n return '';\n};\n", "'use strict';\n\nvar BN = require('bn.js');\n\nvar utils = require('../utils');\nvar assert = utils.assert;\n\nfunction Signature(options, enc) {\n if (options instanceof Signature)\n return options;\n\n if (this._importDER(options, enc))\n return;\n\n assert(options.r && options.s, 'Signature without r or s');\n this.r = new BN(options.r, 16);\n this.s = new BN(options.s, 16);\n if (options.recoveryParam === undefined)\n this.recoveryParam = null;\n else\n this.recoveryParam = options.recoveryParam;\n}\nmodule.exports = Signature;\n\nfunction Position() {\n this.place = 0;\n}\n\nfunction getLength(buf, p) {\n var initial = buf[p.place++];\n if (!(initial & 0x80)) {\n return initial;\n }\n var octetLen = initial & 0xf;\n\n // Indefinite length or overflow\n if (octetLen === 0 || octetLen > 4) {\n return false;\n }\n\n var val = 0;\n for (var i = 0, off = p.place; i < octetLen; i++, off++) {\n val <<= 8;\n val |= buf[off];\n val >>>= 0;\n }\n\n // Leading zeroes\n if (val <= 0x7f) {\n return false;\n }\n\n p.place = off;\n return val;\n}\n\nfunction rmPadding(buf) {\n var i = 0;\n var len = buf.length - 1;\n while (!buf[i] && !(buf[i + 1] & 0x80) && i < len) {\n i++;\n }\n if (i === 0) {\n return buf;\n }\n return buf.slice(i);\n}\n\nSignature.prototype._importDER = function _importDER(data, enc) {\n data = utils.toArray(data, enc);\n var p = new Position();\n if (data[p.place++] !== 0x30) {\n return false;\n }\n var len = getLength(data, p);\n if (len === false) {\n return false;\n }\n if ((len + p.place) !== data.length) {\n return false;\n }\n if (data[p.place++] !== 0x02) {\n return false;\n }\n var rlen = getLength(data, p);\n if (rlen === false) {\n return false;\n }\n var r = data.slice(p.place, rlen + p.place);\n p.place += rlen;\n if (data[p.place++] !== 0x02) {\n return false;\n }\n var slen = getLength(data, p);\n if (slen === false) {\n return false;\n }\n if (data.length !== slen + p.place) {\n return false;\n }\n var s = data.slice(p.place, slen + p.place);\n if (r[0] === 0) {\n if (r[1] & 0x80) {\n r = r.slice(1);\n } else {\n // Leading zeroes\n return false;\n }\n }\n if (s[0] === 0) {\n if (s[1] & 0x80) {\n s = s.slice(1);\n } else {\n // Leading zeroes\n return false;\n }\n }\n\n this.r = new BN(r);\n this.s = new BN(s);\n this.recoveryParam = null;\n\n return true;\n};\n\nfunction constructLength(arr, len) {\n if (len < 0x80) {\n arr.push(len);\n return;\n }\n var octets = 1 + (Math.log(len) / Math.LN2 >>> 3);\n arr.push(octets | 0x80);\n while (--octets) {\n arr.push((len >>> (octets << 3)) & 0xff);\n }\n arr.push(len);\n}\n\nSignature.prototype.toDER = function toDER(enc) {\n var r = this.r.toArray();\n var s = this.s.toArray();\n\n // Pad values\n if (r[0] & 0x80)\n r = [ 0 ].concat(r);\n // Pad values\n if (s[0] & 0x80)\n s = [ 0 ].concat(s);\n\n r = rmPadding(r);\n s = rmPadding(s);\n\n while (!s[0] && !(s[1] & 0x80)) {\n s = s.slice(1);\n }\n var arr = [ 0x02 ];\n constructLength(arr, r.length);\n arr = arr.concat(r);\n arr.push(0x02);\n constructLength(arr, s.length);\n var backHalf = arr.concat(s);\n var res = [ 0x30 ];\n constructLength(res, backHalf.length);\n res = res.concat(backHalf);\n return utils.encode(res, enc);\n};\n", "'use strict';\n\nvar BN = require('bn.js');\nvar HmacDRBG = require('hmac-drbg');\nvar utils = require('../utils');\nvar curves = require('../curves');\nvar rand = require('brorand');\nvar assert = utils.assert;\n\nvar KeyPair = require('./key');\nvar Signature = require('./signature');\n\nfunction EC(options) {\n if (!(this instanceof EC))\n return new EC(options);\n\n // Shortcut `elliptic.ec(curve-name)`\n if (typeof options === 'string') {\n assert(Object.prototype.hasOwnProperty.call(curves, options),\n 'Unknown curve ' + options);\n\n options = curves[options];\n }\n\n // Shortcut for `elliptic.ec(elliptic.curves.curveName)`\n if (options instanceof curves.PresetCurve)\n options = { curve: options };\n\n this.curve = options.curve.curve;\n this.n = this.curve.n;\n this.nh = this.n.ushrn(1);\n this.g = this.curve.g;\n\n // Point on curve\n this.g = options.curve.g;\n this.g.precompute(options.curve.n.bitLength() + 1);\n\n // Hash for function for DRBG\n this.hash = options.hash || options.curve.hash;\n}\nmodule.exports = EC;\n\nEC.prototype.keyPair = function keyPair(options) {\n return new KeyPair(this, options);\n};\n\nEC.prototype.keyFromPrivate = function keyFromPrivate(priv, enc) {\n return KeyPair.fromPrivate(this, priv, enc);\n};\n\nEC.prototype.keyFromPublic = function keyFromPublic(pub, enc) {\n return KeyPair.fromPublic(this, pub, enc);\n};\n\nEC.prototype.genKeyPair = function genKeyPair(options) {\n if (!options)\n options = {};\n\n // Instantiate Hmac_DRBG\n var drbg = new HmacDRBG({\n hash: this.hash,\n pers: options.pers,\n persEnc: options.persEnc || 'utf8',\n entropy: options.entropy || rand(this.hash.hmacStrength),\n entropyEnc: options.entropy && options.entropyEnc || 'utf8',\n nonce: this.n.toArray(),\n });\n\n var bytes = this.n.byteLength();\n var ns2 = this.n.sub(new BN(2));\n for (;;) {\n var priv = new BN(drbg.generate(bytes));\n if (priv.cmp(ns2) > 0)\n continue;\n\n priv.iaddn(1);\n return this.keyFromPrivate(priv);\n }\n};\n\nEC.prototype._truncateToN = function _truncateToN(msg, truncOnly) {\n var delta = msg.byteLength() * 8 - this.n.bitLength();\n if (delta > 0)\n msg = msg.ushrn(delta);\n if (!truncOnly && msg.cmp(this.n) >= 0)\n return msg.sub(this.n);\n else\n return msg;\n};\n\nEC.prototype.sign = function sign(msg, key, enc, options) {\n if (typeof enc === 'object') {\n options = enc;\n enc = null;\n }\n if (!options)\n options = {};\n\n key = this.keyFromPrivate(key, enc);\n msg = this._truncateToN(new BN(msg, 16));\n\n // Zero-extend key to provide enough entropy\n var bytes = this.n.byteLength();\n var bkey = key.getPrivate().toArray('be', bytes);\n\n // Zero-extend nonce to have the same byte size as N\n var nonce = msg.toArray('be', bytes);\n\n // Instantiate Hmac_DRBG\n var drbg = new HmacDRBG({\n hash: this.hash,\n entropy: bkey,\n nonce: nonce,\n pers: options.pers,\n persEnc: options.persEnc || 'utf8',\n });\n\n // Number of bytes to generate\n var ns1 = this.n.sub(new BN(1));\n\n for (var iter = 0; ; iter++) {\n var k = options.k ?\n options.k(iter) :\n new BN(drbg.generate(this.n.byteLength()));\n k = this._truncateToN(k, true);\n if (k.cmpn(1) <= 0 || k.cmp(ns1) >= 0)\n continue;\n\n var kp = this.g.mul(k);\n if (kp.isInfinity())\n continue;\n\n var kpX = kp.getX();\n var r = kpX.umod(this.n);\n if (r.cmpn(0) === 0)\n continue;\n\n var s = k.invm(this.n).mul(r.mul(key.getPrivate()).iadd(msg));\n s = s.umod(this.n);\n if (s.cmpn(0) === 0)\n continue;\n\n var recoveryParam = (kp.getY().isOdd() ? 1 : 0) |\n (kpX.cmp(r) !== 0 ? 2 : 0);\n\n // Use complement of `s`, if it is > `n / 2`\n if (options.canonical && s.cmp(this.nh) > 0) {\n s = this.n.sub(s);\n recoveryParam ^= 1;\n }\n\n return new Signature({ r: r, s: s, recoveryParam: recoveryParam });\n }\n};\n\nEC.prototype.verify = function verify(msg, signature, key, enc) {\n msg = this._truncateToN(new BN(msg, 16));\n key = this.keyFromPublic(key, enc);\n signature = new Signature(signature, 'hex');\n\n // Perform primitive values validation\n var r = signature.r;\n var s = signature.s;\n if (r.cmpn(1) < 0 || r.cmp(this.n) >= 0)\n return false;\n if (s.cmpn(1) < 0 || s.cmp(this.n) >= 0)\n return false;\n\n // Validate signature\n var sinv = s.invm(this.n);\n var u1 = sinv.mul(msg).umod(this.n);\n var u2 = sinv.mul(r).umod(this.n);\n var p;\n\n if (!this.curve._maxwellTrick) {\n p = this.g.mulAdd(u1, key.getPublic(), u2);\n if (p.isInfinity())\n return false;\n\n return p.getX().umod(this.n).cmp(r) === 0;\n }\n\n // NOTE: Greg Maxwell's trick, inspired by:\n // https://git.io/vad3K\n\n p = this.g.jmulAdd(u1, key.getPublic(), u2);\n if (p.isInfinity())\n return false;\n\n // Compare `p.x` of Jacobian point with `r`,\n // this will do `p.x == r * p.z^2` instead of multiplying `p.x` by the\n // inverse of `p.z^2`\n return p.eqXToP(r);\n};\n\nEC.prototype.recoverPubKey = function(msg, signature, j, enc) {\n assert((3 & j) === j, 'The recovery param is more than two bits');\n signature = new Signature(signature, enc);\n\n var n = this.n;\n var e = new BN(msg);\n var r = signature.r;\n var s = signature.s;\n\n // A set LSB signifies that the y-coordinate is odd\n var isYOdd = j & 1;\n var isSecondKey = j >> 1;\n if (r.cmp(this.curve.p.umod(this.curve.n)) >= 0 && isSecondKey)\n throw new Error('Unable to find sencond key candinate');\n\n // 1.1. Let x = r + jn.\n if (isSecondKey)\n r = this.curve.pointFromX(r.add(this.curve.n), isYOdd);\n else\n r = this.curve.pointFromX(r, isYOdd);\n\n var rInv = signature.r.invm(n);\n var s1 = n.sub(e).mul(rInv).umod(n);\n var s2 = s.mul(rInv).umod(n);\n\n // 1.6.1 Compute Q = r^-1 (sR - eG)\n // Q = r^-1 (sR + -eG)\n return this.g.mulAdd(s1, r, s2);\n};\n\nEC.prototype.getKeyRecoveryParam = function(e, signature, Q, enc) {\n signature = new Signature(signature, enc);\n if (signature.recoveryParam !== null)\n return signature.recoveryParam;\n\n for (var i = 0; i < 4; i++) {\n var Qprime;\n try {\n Qprime = this.recoverPubKey(e, signature, i);\n } catch (e) {\n continue;\n }\n\n if (Qprime.eq(Q))\n return i;\n }\n throw new Error('Unable to find valid recovery factor');\n};\n", "'use strict';\n\nvar utils = require('../utils');\nvar assert = utils.assert;\nvar parseBytes = utils.parseBytes;\nvar cachedProperty = utils.cachedProperty;\n\n/**\n* @param {EDDSA} eddsa - instance\n* @param {Object} params - public/private key parameters\n*\n* @param {Array} [params.secret] - secret seed bytes\n* @param {Point} [params.pub] - public key point (aka `A` in eddsa terms)\n* @param {Array} [params.pub] - public key point encoded as bytes\n*\n*/\nfunction KeyPair(eddsa, params) {\n this.eddsa = eddsa;\n this._secret = parseBytes(params.secret);\n if (eddsa.isPoint(params.pub))\n this._pub = params.pub;\n else\n this._pubBytes = parseBytes(params.pub);\n}\n\nKeyPair.fromPublic = function fromPublic(eddsa, pub) {\n if (pub instanceof KeyPair)\n return pub;\n return new KeyPair(eddsa, { pub: pub });\n};\n\nKeyPair.fromSecret = function fromSecret(eddsa, secret) {\n if (secret instanceof KeyPair)\n return secret;\n return new KeyPair(eddsa, { secret: secret });\n};\n\nKeyPair.prototype.secret = function secret() {\n return this._secret;\n};\n\ncachedProperty(KeyPair, 'pubBytes', function pubBytes() {\n return this.eddsa.encodePoint(this.pub());\n});\n\ncachedProperty(KeyPair, 'pub', function pub() {\n if (this._pubBytes)\n return this.eddsa.decodePoint(this._pubBytes);\n return this.eddsa.g.mul(this.priv());\n});\n\ncachedProperty(KeyPair, 'privBytes', function privBytes() {\n var eddsa = this.eddsa;\n var hash = this.hash();\n var lastIx = eddsa.encodingLength - 1;\n\n var a = hash.slice(0, eddsa.encodingLength);\n a[0] &= 248;\n a[lastIx] &= 127;\n a[lastIx] |= 64;\n\n return a;\n});\n\ncachedProperty(KeyPair, 'priv', function priv() {\n return this.eddsa.decodeInt(this.privBytes());\n});\n\ncachedProperty(KeyPair, 'hash', function hash() {\n return this.eddsa.hash().update(this.secret()).digest();\n});\n\ncachedProperty(KeyPair, 'messagePrefix', function messagePrefix() {\n return this.hash().slice(this.eddsa.encodingLength);\n});\n\nKeyPair.prototype.sign = function sign(message) {\n assert(this._secret, 'KeyPair can only verify');\n return this.eddsa.sign(message, this);\n};\n\nKeyPair.prototype.verify = function verify(message, sig) {\n return this.eddsa.verify(message, sig, this);\n};\n\nKeyPair.prototype.getSecret = function getSecret(enc) {\n assert(this._secret, 'KeyPair is public only');\n return utils.encode(this.secret(), enc);\n};\n\nKeyPair.prototype.getPublic = function getPublic(enc) {\n return utils.encode(this.pubBytes(), enc);\n};\n\nmodule.exports = KeyPair;\n", "'use strict';\n\nvar BN = require('bn.js');\nvar utils = require('../utils');\nvar assert = utils.assert;\nvar cachedProperty = utils.cachedProperty;\nvar parseBytes = utils.parseBytes;\n\n/**\n* @param {EDDSA} eddsa - eddsa instance\n* @param {Array|Object} sig -\n* @param {Array|Point} [sig.R] - R point as Point or bytes\n* @param {Array|bn} [sig.S] - S scalar as bn or bytes\n* @param {Array} [sig.Rencoded] - R point encoded\n* @param {Array} [sig.Sencoded] - S scalar encoded\n*/\nfunction Signature(eddsa, sig) {\n this.eddsa = eddsa;\n\n if (typeof sig !== 'object')\n sig = parseBytes(sig);\n\n if (Array.isArray(sig)) {\n sig = {\n R: sig.slice(0, eddsa.encodingLength),\n S: sig.slice(eddsa.encodingLength),\n };\n }\n\n assert(sig.R && sig.S, 'Signature without R or S');\n\n if (eddsa.isPoint(sig.R))\n this._R = sig.R;\n if (sig.S instanceof BN)\n this._S = sig.S;\n\n this._Rencoded = Array.isArray(sig.R) ? sig.R : sig.Rencoded;\n this._Sencoded = Array.isArray(sig.S) ? sig.S : sig.Sencoded;\n}\n\ncachedProperty(Signature, 'S', function S() {\n return this.eddsa.decodeInt(this.Sencoded());\n});\n\ncachedProperty(Signature, 'R', function R() {\n return this.eddsa.decodePoint(this.Rencoded());\n});\n\ncachedProperty(Signature, 'Rencoded', function Rencoded() {\n return this.eddsa.encodePoint(this.R());\n});\n\ncachedProperty(Signature, 'Sencoded', function Sencoded() {\n return this.eddsa.encodeInt(this.S());\n});\n\nSignature.prototype.toBytes = function toBytes() {\n return this.Rencoded().concat(this.Sencoded());\n};\n\nSignature.prototype.toHex = function toHex() {\n return utils.encode(this.toBytes(), 'hex').toUpperCase();\n};\n\nmodule.exports = Signature;\n", "'use strict';\n\nvar hash = require('hash.js');\nvar curves = require('../curves');\nvar utils = require('../utils');\nvar assert = utils.assert;\nvar parseBytes = utils.parseBytes;\nvar KeyPair = require('./key');\nvar Signature = require('./signature');\n\nfunction EDDSA(curve) {\n assert(curve === 'ed25519', 'only tested with ed25519 so far');\n\n if (!(this instanceof EDDSA))\n return new EDDSA(curve);\n\n curve = curves[curve].curve;\n this.curve = curve;\n this.g = curve.g;\n this.g.precompute(curve.n.bitLength() + 1);\n\n this.pointClass = curve.point().constructor;\n this.encodingLength = Math.ceil(curve.n.bitLength() / 8);\n this.hash = hash.sha512;\n}\n\nmodule.exports = EDDSA;\n\n/**\n* @param {Array|String} message - message bytes\n* @param {Array|String|KeyPair} secret - secret bytes or a keypair\n* @returns {Signature} - signature\n*/\nEDDSA.prototype.sign = function sign(message, secret) {\n message = parseBytes(message);\n var key = this.keyFromSecret(secret);\n var r = this.hashInt(key.messagePrefix(), message);\n var R = this.g.mul(r);\n var Rencoded = this.encodePoint(R);\n var s_ = this.hashInt(Rencoded, key.pubBytes(), message)\n .mul(key.priv());\n var S = r.add(s_).umod(this.curve.n);\n return this.makeSignature({ R: R, S: S, Rencoded: Rencoded });\n};\n\n/**\n* @param {Array} message - message bytes\n* @param {Array|String|Signature} sig - sig bytes\n* @param {Array|String|Point|KeyPair} pub - public key\n* @returns {Boolean} - true if public key matches sig of message\n*/\nEDDSA.prototype.verify = function verify(message, sig, pub) {\n message = parseBytes(message);\n sig = this.makeSignature(sig);\n var key = this.keyFromPublic(pub);\n var h = this.hashInt(sig.Rencoded(), key.pubBytes(), message);\n var SG = this.g.mul(sig.S());\n var RplusAh = sig.R().add(key.pub().mul(h));\n return RplusAh.eq(SG);\n};\n\nEDDSA.prototype.hashInt = function hashInt() {\n var hash = this.hash();\n for (var i = 0; i < arguments.length; i++)\n hash.update(arguments[i]);\n return utils.intFromLE(hash.digest()).umod(this.curve.n);\n};\n\nEDDSA.prototype.keyFromPublic = function keyFromPublic(pub) {\n return KeyPair.fromPublic(this, pub);\n};\n\nEDDSA.prototype.keyFromSecret = function keyFromSecret(secret) {\n return KeyPair.fromSecret(this, secret);\n};\n\nEDDSA.prototype.makeSignature = function makeSignature(sig) {\n if (sig instanceof Signature)\n return sig;\n return new Signature(this, sig);\n};\n\n/**\n* * https://tools.ietf.org/html/draft-josefsson-eddsa-ed25519-03#section-5.2\n*\n* EDDSA defines methods for encoding and decoding points and integers. These are\n* helper convenience methods, that pass along to utility functions implied\n* parameters.\n*\n*/\nEDDSA.prototype.encodePoint = function encodePoint(point) {\n var enc = point.getY().toArray('le', this.encodingLength);\n enc[this.encodingLength - 1] |= point.getX().isOdd() ? 0x80 : 0;\n return enc;\n};\n\nEDDSA.prototype.decodePoint = function decodePoint(bytes) {\n bytes = utils.parseBytes(bytes);\n\n var lastIx = bytes.length - 1;\n var normed = bytes.slice(0, lastIx).concat(bytes[lastIx] & ~0x80);\n var xIsOdd = (bytes[lastIx] & 0x80) !== 0;\n\n var y = utils.intFromLE(normed);\n return this.curve.pointFromY(y, xIsOdd);\n};\n\nEDDSA.prototype.encodeInt = function encodeInt(num) {\n return num.toArray('le', this.encodingLength);\n};\n\nEDDSA.prototype.decodeInt = function decodeInt(bytes) {\n return utils.intFromLE(bytes);\n};\n\nEDDSA.prototype.isPoint = function isPoint(val) {\n return val instanceof this.pointClass;\n};\n", "'use strict';\n\nvar elliptic = exports;\n\nelliptic.version = require('../package.json').version;\nelliptic.utils = require('./elliptic/utils');\nelliptic.rand = require('brorand');\nelliptic.curve = require('./elliptic/curve');\nelliptic.curves = require('./elliptic/curves');\n\n// Protocols\nelliptic.ec = require('./elliptic/ec');\nelliptic.eddsa = require('./elliptic/eddsa');\n", "import _ec from \"elliptic\";\nimport EC = _ec.ec;\n\nexport { EC }\n", "export const version = \"signing-key/5.7.0\";\n", "\"use strict\";\n\nimport { EC } from \"./elliptic\";\n\nimport { arrayify, BytesLike, hexDataLength, hexlify, hexZeroPad, Signature, SignatureLike, splitSignature } from \"@ethersproject/bytes\";\nimport { defineReadOnly } from \"@ethersproject/properties\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nlet _curve: EC = null\nfunction getCurve() {\n if (!_curve) {\n _curve = new EC(\"secp256k1\");\n }\n return _curve;\n}\n\nexport class SigningKey {\n\n readonly curve: string;\n\n readonly privateKey: string;\n readonly publicKey: string;\n readonly compressedPublicKey: string;\n\n //readonly address: string;\n\n readonly _isSigningKey: boolean;\n\n constructor(privateKey: BytesLike) {\n defineReadOnly(this, \"curve\", \"secp256k1\");\n\n defineReadOnly(this, \"privateKey\", hexlify(privateKey));\n if (hexDataLength(this.privateKey) !== 32) {\n logger.throwArgumentError(\"invalid private key\", \"privateKey\", \"[[ REDACTED ]]\");\n }\n\n const keyPair = getCurve().keyFromPrivate(arrayify(this.privateKey));\n\n defineReadOnly(this, \"publicKey\", \"0x\" + keyPair.getPublic(false, \"hex\"));\n defineReadOnly(this, \"compressedPublicKey\", \"0x\" + keyPair.getPublic(true, \"hex\"));\n\n defineReadOnly(this, \"_isSigningKey\", true);\n }\n\n _addPoint(other: BytesLike): string {\n const p0 = getCurve().keyFromPublic(arrayify(this.publicKey));\n const p1 = getCurve().keyFromPublic(arrayify(other));\n return \"0x\" + p0.pub.add(p1.pub).encodeCompressed(\"hex\");\n }\n\n signDigest(digest: BytesLike): Signature {\n const keyPair = getCurve().keyFromPrivate(arrayify(this.privateKey));\n const digestBytes = arrayify(digest);\n if (digestBytes.length !== 32) {\n logger.throwArgumentError(\"bad digest length\", \"digest\", digest);\n }\n const signature = keyPair.sign(digestBytes, { canonical: true });\n return splitSignature({\n recoveryParam: signature.recoveryParam,\n r: hexZeroPad(\"0x\" + signature.r.toString(16), 32),\n s: hexZeroPad(\"0x\" + signature.s.toString(16), 32),\n })\n }\n\n computeSharedSecret(otherKey: BytesLike): string {\n const keyPair = getCurve().keyFromPrivate(arrayify(this.privateKey));\n const otherKeyPair = getCurve().keyFromPublic(arrayify(computePublicKey(otherKey)));\n return hexZeroPad(\"0x\" + keyPair.derive(otherKeyPair.getPublic()).toString(16), 32);\n }\n\n static isSigningKey(value: any): value is SigningKey {\n return !!(value && value._isSigningKey);\n }\n}\n\nexport function recoverPublicKey(digest: BytesLike, signature: SignatureLike): string {\n const sig = splitSignature(signature);\n const rs = { r: arrayify(sig.r), s: arrayify(sig.s) };\n return \"0x\" + getCurve().recoverPubKey(arrayify(digest), rs, sig.recoveryParam).encode(\"hex\", false);\n}\n\nexport function computePublicKey(key: BytesLike, compressed?: boolean): string {\n const bytes = arrayify(key);\n\n if (bytes.length === 32) {\n const signingKey = new SigningKey(bytes);\n if (compressed) {\n return \"0x\" + getCurve().keyFromPrivate(bytes).getPublic(true, \"hex\");\n }\n return signingKey.publicKey;\n\n } else if (bytes.length === 33) {\n if (compressed) { return hexlify(bytes); }\n return \"0x\" + getCurve().keyFromPublic(bytes).getPublic(false, \"hex\");\n\n } else if (bytes.length === 65) {\n if (!compressed) { return hexlify(bytes); }\n return \"0x\" + getCurve().keyFromPublic(bytes).getPublic(true, \"hex\");\n }\n\n return logger.throwArgumentError(\"invalid public or private key\", \"key\", \"[REDACTED]\");\n}\n\n", "export const version = \"transactions/5.7.0\";\n", "\"use strict\";\n\nimport { getAddress } from \"@ethersproject/address\";\nimport { BigNumber, BigNumberish } from \"@ethersproject/bignumber\";\nimport { arrayify, BytesLike, DataOptions, hexConcat, hexDataLength, hexDataSlice, hexlify, hexZeroPad, isBytesLike, SignatureLike, splitSignature, stripZeros, } from \"@ethersproject/bytes\";\nimport { Zero } from \"@ethersproject/constants\";\nimport { keccak256 } from \"@ethersproject/keccak256\";\nimport { checkProperties } from \"@ethersproject/properties\";\nimport * as RLP from \"@ethersproject/rlp\";\nimport { computePublicKey, recoverPublicKey } from \"@ethersproject/signing-key\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\n///////////////////////////////\n// Exported Types\n\nexport type AccessList = Array<{ address: string, storageKeys: Array }>;\n\n// Input allows flexibility in describing an access list\nexport type AccessListish = AccessList |\n Array<[ string, Array ]> |\n Record>;\n\nexport enum TransactionTypes {\n legacy = 0,\n eip2930 = 1,\n eip1559 = 2,\n};\n\nexport type UnsignedTransaction = {\n to?: string;\n nonce?: number;\n\n gasLimit?: BigNumberish;\n gasPrice?: BigNumberish;\n\n data?: BytesLike;\n value?: BigNumberish;\n chainId?: number;\n\n // Typed-Transaction features\n type?: number | null;\n\n // EIP-2930; Type 1 & EIP-1559; Type 2\n accessList?: AccessListish;\n\n // EIP-1559; Type 2\n maxPriorityFeePerGas?: BigNumberish;\n maxFeePerGas?: BigNumberish;\n}\n\nexport interface Transaction {\n hash?: string;\n\n to?: string;\n from?: string;\n nonce: number;\n\n gasLimit: BigNumber;\n gasPrice?: BigNumber;\n\n data: string;\n value: BigNumber;\n chainId: number;\n\n r?: string;\n s?: string;\n v?: number;\n\n // Typed-Transaction features\n type?: number | null;\n\n // EIP-2930; Type 1 & EIP-1559; Type 2\n accessList?: AccessList;\n\n // EIP-1559; Type 2\n maxPriorityFeePerGas?: BigNumber;\n maxFeePerGas?: BigNumber;\n}\n\n///////////////////////////////\n\nfunction handleAddress(value: string): string {\n if (value === \"0x\") { return null; }\n return getAddress(value);\n}\n\nfunction handleNumber(value: string): BigNumber {\n if (value === \"0x\") { return Zero; }\n return BigNumber.from(value);\n}\n\n// Legacy Transaction Fields\nconst transactionFields = [\n { name: \"nonce\", maxLength: 32, numeric: true },\n { name: \"gasPrice\", maxLength: 32, numeric: true },\n { name: \"gasLimit\", maxLength: 32, numeric: true },\n { name: \"to\", length: 20 },\n { name: \"value\", maxLength: 32, numeric: true },\n { name: \"data\" },\n];\n\nconst allowedTransactionKeys: { [ key: string ]: boolean } = {\n chainId: true, data: true, gasLimit: true, gasPrice:true, nonce: true, to: true, type: true, value: true\n}\n\nexport function computeAddress(key: BytesLike | string): string {\n const publicKey = computePublicKey(key);\n return getAddress(hexDataSlice(keccak256(hexDataSlice(publicKey, 1)), 12));\n}\n\nexport function recoverAddress(digest: BytesLike, signature: SignatureLike): string {\n return computeAddress(recoverPublicKey(arrayify(digest), signature));\n}\n\nfunction formatNumber(value: BigNumberish, name: string): Uint8Array {\n const result = stripZeros(BigNumber.from(value).toHexString());\n if (result.length > 32) {\n logger.throwArgumentError(\"invalid length for \" + name, (\"transaction:\" + name), value);\n }\n return result;\n}\n\nfunction accessSetify(addr: string, storageKeys: Array): { address: string,storageKeys: Array } {\n return {\n address: getAddress(addr),\n storageKeys: (storageKeys || []).map((storageKey, index) => {\n if (hexDataLength(storageKey) !== 32) {\n logger.throwArgumentError(\"invalid access list storageKey\", `accessList[${ addr }:${ index }]`, storageKey)\n }\n return storageKey.toLowerCase();\n })\n };\n}\n\nexport function accessListify(value: AccessListish): AccessList {\n if (Array.isArray(value)) {\n return (] | { address: string, storageKeys: Array}>>value).map((set, index) => {\n if (Array.isArray(set)) {\n if (set.length > 2) {\n logger.throwArgumentError(\"access list expected to be [ address, storageKeys[] ]\", `value[${ index }]`, set);\n }\n return accessSetify(set[0], set[1])\n }\n return accessSetify(set.address, set.storageKeys);\n });\n }\n\n const result: Array<{ address: string, storageKeys: Array }> = Object.keys(value).map((addr) => {\n const storageKeys: Record = value[addr].reduce((accum, storageKey) => {\n accum[storageKey] = true;\n return accum;\n }, >{ });\n return accessSetify(addr, Object.keys(storageKeys).sort())\n });\n result.sort((a, b) => (a.address.localeCompare(b.address)));\n return result;\n}\n\nfunction formatAccessList(value: AccessListish): Array<[ string, Array ]> {\n return accessListify(value).map((set) => [ set.address, set.storageKeys ]);\n}\n\nfunction _serializeEip1559(transaction: UnsignedTransaction, signature?: SignatureLike): string {\n // If there is an explicit gasPrice, make sure it matches the\n // EIP-1559 fees; otherwise they may not understand what they\n // think they are setting in terms of fee.\n if (transaction.gasPrice != null) {\n const gasPrice = BigNumber.from(transaction.gasPrice);\n const maxFeePerGas = BigNumber.from(transaction.maxFeePerGas || 0);\n if (!gasPrice.eq(maxFeePerGas)) {\n logger.throwArgumentError(\"mismatch EIP-1559 gasPrice != maxFeePerGas\", \"tx\", {\n gasPrice, maxFeePerGas\n });\n }\n }\n\n const fields: any = [\n formatNumber(transaction.chainId || 0, \"chainId\"),\n formatNumber(transaction.nonce || 0, \"nonce\"),\n formatNumber(transaction.maxPriorityFeePerGas || 0, \"maxPriorityFeePerGas\"),\n formatNumber(transaction.maxFeePerGas || 0, \"maxFeePerGas\"),\n formatNumber(transaction.gasLimit || 0, \"gasLimit\"),\n ((transaction.to != null) ? getAddress(transaction.to): \"0x\"),\n formatNumber(transaction.value || 0, \"value\"),\n (transaction.data || \"0x\"),\n (formatAccessList(transaction.accessList || []))\n ];\n\n if (signature) {\n const sig = splitSignature(signature);\n fields.push(formatNumber(sig.recoveryParam, \"recoveryParam\"));\n fields.push(stripZeros(sig.r));\n fields.push(stripZeros(sig.s));\n }\n\n return hexConcat([ \"0x02\", RLP.encode(fields)]);\n}\n\nfunction _serializeEip2930(transaction: UnsignedTransaction, signature?: SignatureLike): string {\n const fields: any = [\n formatNumber(transaction.chainId || 0, \"chainId\"),\n formatNumber(transaction.nonce || 0, \"nonce\"),\n formatNumber(transaction.gasPrice || 0, \"gasPrice\"),\n formatNumber(transaction.gasLimit || 0, \"gasLimit\"),\n ((transaction.to != null) ? getAddress(transaction.to): \"0x\"),\n formatNumber(transaction.value || 0, \"value\"),\n (transaction.data || \"0x\"),\n (formatAccessList(transaction.accessList || []))\n ];\n\n if (signature) {\n const sig = splitSignature(signature);\n fields.push(formatNumber(sig.recoveryParam, \"recoveryParam\"));\n fields.push(stripZeros(sig.r));\n fields.push(stripZeros(sig.s));\n }\n\n return hexConcat([ \"0x01\", RLP.encode(fields)]);\n}\n\n// Legacy Transactions and EIP-155\nfunction _serialize(transaction: UnsignedTransaction, signature?: SignatureLike): string {\n checkProperties(transaction, allowedTransactionKeys);\n\n const raw: Array = [];\n\n transactionFields.forEach(function(fieldInfo) {\n let value = (transaction)[fieldInfo.name] || ([]);\n const options: DataOptions = { };\n if (fieldInfo.numeric) { options.hexPad = \"left\"; }\n value = arrayify(hexlify(value, options));\n\n // Fixed-width field\n if (fieldInfo.length && value.length !== fieldInfo.length && value.length > 0) {\n logger.throwArgumentError(\"invalid length for \" + fieldInfo.name, (\"transaction:\" + fieldInfo.name), value);\n }\n\n // Variable-width (with a maximum)\n if (fieldInfo.maxLength) {\n value = stripZeros(value);\n if (value.length > fieldInfo.maxLength) {\n logger.throwArgumentError(\"invalid length for \" + fieldInfo.name, (\"transaction:\" + fieldInfo.name), value );\n }\n }\n\n raw.push(hexlify(value));\n });\n\n let chainId = 0;\n if (transaction.chainId != null) {\n // A chainId was provided; if non-zero we'll use EIP-155\n chainId = transaction.chainId;\n\n if (typeof(chainId) !== \"number\") {\n logger.throwArgumentError(\"invalid transaction.chainId\", \"transaction\", transaction);\n }\n\n } else if (signature && !isBytesLike(signature) && signature.v > 28) {\n // No chainId provided, but the signature is signing with EIP-155; derive chainId\n chainId = Math.floor((signature.v - 35) / 2);\n }\n\n // We have an EIP-155 transaction (chainId was specified and non-zero)\n if (chainId !== 0) {\n raw.push(hexlify(chainId)); // @TODO: hexValue?\n raw.push(\"0x\");\n raw.push(\"0x\");\n }\n\n // Requesting an unsigned transaction\n if (!signature) {\n return RLP.encode(raw);\n }\n\n // The splitSignature will ensure the transaction has a recoveryParam in the\n // case that the signTransaction function only adds a v.\n const sig = splitSignature(signature);\n\n // We pushed a chainId and null r, s on for hashing only; remove those\n let v = 27 + sig.recoveryParam\n if (chainId !== 0) {\n raw.pop();\n raw.pop();\n raw.pop();\n v += chainId * 2 + 8;\n\n // If an EIP-155 v (directly or indirectly; maybe _vs) was provided, check it!\n if (sig.v > 28 && sig.v !== v) {\n logger.throwArgumentError(\"transaction.chainId/signature.v mismatch\", \"signature\", signature);\n }\n } else if (sig.v !== v) {\n logger.throwArgumentError(\"transaction.chainId/signature.v mismatch\", \"signature\", signature);\n }\n\n raw.push(hexlify(v));\n raw.push(stripZeros(arrayify(sig.r)));\n raw.push(stripZeros(arrayify(sig.s)));\n\n return RLP.encode(raw);\n}\n\nexport function serialize(transaction: UnsignedTransaction, signature?: SignatureLike): string {\n // Legacy and EIP-155 Transactions\n if (transaction.type == null || transaction.type === 0) {\n if (transaction.accessList != null) {\n logger.throwArgumentError(\"untyped transactions do not support accessList; include type: 1\", \"transaction\", transaction);\n }\n return _serialize(transaction, signature);\n }\n\n // Typed Transactions (EIP-2718)\n switch (transaction.type) {\n case 1:\n return _serializeEip2930(transaction, signature);\n case 2:\n return _serializeEip1559(transaction, signature);\n default:\n break;\n }\n\n return logger.throwError(`unsupported transaction type: ${ transaction.type }`, Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"serializeTransaction\",\n transactionType: transaction.type\n });\n}\n\nfunction _parseEipSignature(tx: Transaction, fields: Array, serialize: (tx: UnsignedTransaction) => string): void {\n try {\n const recid = handleNumber(fields[0]).toNumber();\n if (recid !== 0 && recid !== 1) { throw new Error(\"bad recid\"); }\n tx.v = recid;\n } catch (error) {\n logger.throwArgumentError(\"invalid v for transaction type: 1\", \"v\", fields[0]);\n }\n\n tx.r = hexZeroPad(fields[1], 32);\n tx.s = hexZeroPad(fields[2], 32);\n\n try {\n const digest = keccak256(serialize(tx));\n tx.from = recoverAddress(digest, { r: tx.r, s: tx.s, recoveryParam: tx.v });\n } catch (error) { }\n}\n\nfunction _parseEip1559(payload: Uint8Array): Transaction {\n const transaction = RLP.decode(payload.slice(1));\n\n if (transaction.length !== 9 && transaction.length !== 12) {\n logger.throwArgumentError(\"invalid component count for transaction type: 2\", \"payload\", hexlify(payload));\n }\n\n const maxPriorityFeePerGas = handleNumber(transaction[2]);\n const maxFeePerGas = handleNumber(transaction[3]);\n const tx: Transaction = {\n type: 2,\n chainId: handleNumber(transaction[0]).toNumber(),\n nonce: handleNumber(transaction[1]).toNumber(),\n maxPriorityFeePerGas: maxPriorityFeePerGas,\n maxFeePerGas: maxFeePerGas,\n gasPrice: null,\n gasLimit: handleNumber(transaction[4]),\n to: handleAddress(transaction[5]),\n value: handleNumber(transaction[6]),\n data: transaction[7],\n accessList: accessListify(transaction[8]),\n };\n\n // Unsigned EIP-1559 Transaction\n if (transaction.length === 9) { return tx; }\n\n tx.hash = keccak256(payload);\n\n _parseEipSignature(tx, transaction.slice(9), _serializeEip1559);\n\n return tx;\n}\n\nfunction _parseEip2930(payload: Uint8Array): Transaction {\n const transaction = RLP.decode(payload.slice(1));\n\n if (transaction.length !== 8 && transaction.length !== 11) {\n logger.throwArgumentError(\"invalid component count for transaction type: 1\", \"payload\", hexlify(payload));\n }\n\n const tx: Transaction = {\n type: 1,\n chainId: handleNumber(transaction[0]).toNumber(),\n nonce: handleNumber(transaction[1]).toNumber(),\n gasPrice: handleNumber(transaction[2]),\n gasLimit: handleNumber(transaction[3]),\n to: handleAddress(transaction[4]),\n value: handleNumber(transaction[5]),\n data: transaction[6],\n accessList: accessListify(transaction[7])\n };\n\n // Unsigned EIP-2930 Transaction\n if (transaction.length === 8) { return tx; }\n\n tx.hash = keccak256(payload);\n\n _parseEipSignature(tx, transaction.slice(8), _serializeEip2930);\n\n return tx;\n}\n\n// Legacy Transactions and EIP-155\nfunction _parse(rawTransaction: Uint8Array): Transaction {\n const transaction = RLP.decode(rawTransaction);\n\n if (transaction.length !== 9 && transaction.length !== 6) {\n logger.throwArgumentError(\"invalid raw transaction\", \"rawTransaction\", rawTransaction);\n }\n\n const tx: Transaction = {\n nonce: handleNumber(transaction[0]).toNumber(),\n gasPrice: handleNumber(transaction[1]),\n gasLimit: handleNumber(transaction[2]),\n to: handleAddress(transaction[3]),\n value: handleNumber(transaction[4]),\n data: transaction[5],\n chainId: 0\n };\n\n // Legacy unsigned transaction\n if (transaction.length === 6) { return tx; }\n\n try {\n tx.v = BigNumber.from(transaction[6]).toNumber();\n\n } catch (error) {\n // @TODO: What makes snese to do? The v is too big\n return tx;\n }\n\n tx.r = hexZeroPad(transaction[7], 32);\n tx.s = hexZeroPad(transaction[8], 32);\n\n if (BigNumber.from(tx.r).isZero() && BigNumber.from(tx.s).isZero()) {\n // EIP-155 unsigned transaction\n tx.chainId = tx.v;\n tx.v = 0;\n\n } else {\n // Signed Transaction\n\n tx.chainId = Math.floor((tx.v - 35) / 2);\n if (tx.chainId < 0) { tx.chainId = 0; }\n\n let recoveryParam = tx.v - 27;\n\n const raw = transaction.slice(0, 6);\n\n if (tx.chainId !== 0) {\n raw.push(hexlify(tx.chainId));\n raw.push(\"0x\");\n raw.push(\"0x\");\n recoveryParam -= tx.chainId * 2 + 8;\n }\n\n const digest = keccak256(RLP.encode(raw));\n try {\n tx.from = recoverAddress(digest, { r: hexlify(tx.r), s: hexlify(tx.s), recoveryParam: recoveryParam });\n } catch (error) { }\n\n tx.hash = keccak256(rawTransaction);\n }\n\n tx.type = null;\n\n return tx;\n}\n\n\nexport function parse(rawTransaction: BytesLike): Transaction {\n const payload = arrayify(rawTransaction);\n\n // Legacy and EIP-155 Transactions\n if (payload[0] > 0x7f) { return _parse(payload); }\n\n // Typed Transaction (EIP-2718)\n switch (payload[0]) {\n case 1:\n return _parseEip2930(payload);\n case 2:\n return _parseEip1559(payload);\n default:\n break;\n }\n\n return logger.throwError(`unsupported transaction type: ${ payload[0] }`, Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"parseTransaction\",\n transactionType: payload[0]\n });\n}\n\n", "export const version = \"contracts/5.7.0\";\n", "\"use strict\";\n\nimport { checkResultErrors, EventFragment, Fragment, FunctionFragment, Indexed, Interface, JsonFragment, LogDescription, ParamType, Result } from \"@ethersproject/abi\";\nimport { Block, BlockTag, Filter, FilterByBlockHash, Listener, Log, Provider, TransactionReceipt, TransactionRequest, TransactionResponse } from \"@ethersproject/abstract-provider\";\nimport { Signer, VoidSigner } from \"@ethersproject/abstract-signer\";\nimport { getAddress, getContractAddress } from \"@ethersproject/address\";\nimport { BigNumber, BigNumberish } from \"@ethersproject/bignumber\";\nimport { arrayify, BytesLike, concat, hexlify, isBytes, isHexString } from \"@ethersproject/bytes\";\nimport { Deferrable, defineReadOnly, deepCopy, getStatic, resolveProperties, shallowCopy } from \"@ethersproject/properties\";\nimport { AccessList, accessListify, AccessListish } from \"@ethersproject/transactions\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\n\nconst logger = new Logger(version);\n\nexport interface Overrides {\n gasLimit?: BigNumberish | Promise;\n gasPrice?: BigNumberish | Promise;\n maxFeePerGas?: BigNumberish | Promise;\n maxPriorityFeePerGas?: BigNumberish | Promise;\n nonce?: BigNumberish | Promise;\n type?: number;\n accessList?: AccessListish;\n customData?: Record;\n ccipReadEnabled?: boolean;\n};\n\nexport interface PayableOverrides extends Overrides {\n value?: BigNumberish | Promise;\n}\n\nexport interface CallOverrides extends PayableOverrides {\n blockTag?: BlockTag | Promise;\n from?: string | Promise;\n}\n\n// @TODO: Better hierarchy with: (in v6)\n// - abstract-provider:TransactionRequest\n// - transactions:Transaction\n// - transaction:UnsignedTransaction\n\nexport interface PopulatedTransaction {\n to?: string;\n from?: string;\n nonce?: number;\n\n gasLimit?: BigNumber;\n gasPrice?: BigNumber;\n\n data?: string;\n value?: BigNumber;\n chainId?: number;\n\n type?: number;\n accessList?: AccessList;\n\n maxFeePerGas?: BigNumber;\n maxPriorityFeePerGas?: BigNumber;\n\n customData?: Record;\n ccipReadEnabled?: boolean;\n};\n\nexport type EventFilter = {\n address?: string;\n topics?: Array>;\n};\n\n\nexport type ContractFunction = (...args: Array) => Promise;\n\n\n// The (n + 1)th parameter passed to contract event callbacks\nexport interface Event extends Log {\n\n // The event name\n event?: string;\n\n // The event signature\n eventSignature?: string;\n\n // The parsed arguments to the event\n args?: Result;\n\n // If parsing the arguments failed, this is the error\n decodeError?: Error;\n\n // A function that can be used to decode event data and topics\n decode?: (data: string, topics?: Array) => any;\n\n // A function that will remove the listener responsible for this event (if any)\n removeListener: () => void;\n\n // Get blockchain details about this event's block and transaction\n getBlock: () => Promise;\n getTransaction: () => Promise;\n getTransactionReceipt: () => Promise;\n}\n\nexport interface ContractReceipt extends TransactionReceipt {\n events?: Array;\n}\n\nexport interface ContractTransaction extends TransactionResponse {\n wait(confirmations?: number): Promise;\n}\n\n///////////////////////////////\n\nconst allowedTransactionKeys: { [ key: string ]: boolean } = {\n chainId: true, data: true, from: true, gasLimit: true, gasPrice:true, nonce: true, to: true, value: true,\n type: true, accessList: true,\n maxFeePerGas: true, maxPriorityFeePerGas: true,\n customData: true,\n ccipReadEnabled: true\n}\n\nasync function resolveName(resolver: Signer | Provider, nameOrPromise: string | Promise): Promise {\n const name = await nameOrPromise;\n\n if (typeof(name) !== \"string\") {\n logger.throwArgumentError(\"invalid address or ENS name\", \"name\", name);\n }\n\n // If it is already an address, just use it (after adding checksum)\n try {\n return getAddress(name);\n } catch (error) { }\n\n if (!resolver) {\n logger.throwError(\"a provider or signer is needed to resolve ENS names\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"resolveName\"\n });\n }\n\n const address = await resolver.resolveName(name);\n\n if (address == null) {\n logger.throwArgumentError(\"resolver or addr is not configured for ENS name\", \"name\", name);\n }\n\n return address;\n}\n\n// Recursively replaces ENS names with promises to resolve the name and resolves all properties\nasync function resolveAddresses(resolver: Signer | Provider, value: any, paramType: ParamType | Array): Promise {\n if (Array.isArray(paramType)) {\n return await Promise.all(paramType.map((paramType, index) => {\n return resolveAddresses(\n resolver,\n ((Array.isArray(value)) ? value[index]: value[paramType.name]),\n paramType\n );\n }));\n }\n\n if (paramType.type === \"address\") {\n return await resolveName(resolver, value);\n }\n\n if (paramType.type === \"tuple\") {\n return await resolveAddresses(resolver, value, paramType.components);\n }\n\n if (paramType.baseType === \"array\") {\n if (!Array.isArray(value)) {\n return Promise.reject(logger.makeError(\"invalid value for array\", Logger.errors.INVALID_ARGUMENT, {\n argument: \"value\",\n value\n }));\n }\n return await Promise.all(value.map((v) => resolveAddresses(resolver, v, paramType.arrayChildren)));\n }\n\n return value;\n}\n\nasync function populateTransaction(contract: Contract, fragment: FunctionFragment, args: Array): Promise {\n // If an extra argument is given, it is overrides\n let overrides: CallOverrides = { };\n if (args.length === fragment.inputs.length + 1 && typeof(args[args.length - 1]) === \"object\") {\n overrides = shallowCopy(args.pop());\n }\n\n // Make sure the parameter count matches\n logger.checkArgumentCount(args.length, fragment.inputs.length, \"passed to contract\");\n\n // Populate \"from\" override (allow promises)\n if (contract.signer) {\n if (overrides.from) {\n // Contracts with a Signer are from the Signer's frame-of-reference;\n // but we allow overriding \"from\" if it matches the signer\n overrides.from = resolveProperties({\n override: resolveName(contract.signer, overrides.from),\n signer: contract.signer.getAddress()\n }).then(async (check) => {\n if (getAddress(check.signer) !== check.override) {\n logger.throwError(\"Contract with a Signer cannot override from\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"overrides.from\"\n });\n }\n\n return check.override;\n });\n\n } else {\n overrides.from = contract.signer.getAddress();\n }\n\n } else if (overrides.from) {\n overrides.from = resolveName(contract.provider, overrides.from);\n\n //} else {\n // Contracts without a signer can override \"from\", and if\n // unspecified the zero address is used\n //overrides.from = AddressZero;\n }\n\n // Wait for all dependencies to be resolved (prefer the signer over the provider)\n const resolved = await resolveProperties({\n args: resolveAddresses(contract.signer || contract.provider, args, fragment.inputs),\n address: contract.resolvedAddress,\n overrides: (resolveProperties(overrides) || { })\n });\n\n // The ABI coded transaction\n const data = contract.interface.encodeFunctionData(fragment, resolved.args);\n const tx: PopulatedTransaction = {\n data: data,\n to: resolved.address\n };\n\n // Resolved Overrides\n const ro = resolved.overrides;\n\n // Populate simple overrides\n if (ro.nonce != null) { tx.nonce = BigNumber.from(ro.nonce).toNumber(); }\n if (ro.gasLimit != null) { tx.gasLimit = BigNumber.from(ro.gasLimit); }\n if (ro.gasPrice != null) { tx.gasPrice = BigNumber.from(ro.gasPrice); }\n if (ro.maxFeePerGas != null) { tx.maxFeePerGas = BigNumber.from(ro.maxFeePerGas); }\n if (ro.maxPriorityFeePerGas != null) { tx.maxPriorityFeePerGas = BigNumber.from(ro.maxPriorityFeePerGas); }\n if (ro.from != null) { tx.from = ro.from; }\n\n if (ro.type != null) { tx.type = ro.type; }\n if (ro.accessList != null) { tx.accessList = accessListify(ro.accessList); }\n\n // If there was no \"gasLimit\" override, but the ABI specifies a default, use it\n if (tx.gasLimit == null && fragment.gas != null) {\n // Compute the intrinsic gas cost for this transaction\n // @TODO: This is based on the yellow paper as of Petersburg; this is something\n // we may wish to parameterize in v6 as part of the Network object. Since this\n // is always a non-nil to address, we can ignore G_create, but may wish to add\n // similar logic to the ContractFactory.\n let intrinsic = 21000;\n const bytes = arrayify(data);\n for (let i = 0; i < bytes.length; i++) {\n intrinsic += 4;\n if (bytes[i]) { intrinsic += 64; }\n }\n tx.gasLimit = BigNumber.from(fragment.gas).add(intrinsic);\n }\n\n // Populate \"value\" override\n if (ro.value) {\n const roValue = BigNumber.from(ro.value);\n if (!roValue.isZero() && !fragment.payable) {\n logger.throwError(\"non-payable method cannot override value\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"overrides.value\",\n value: overrides.value\n });\n }\n tx.value = roValue;\n }\n\n if (ro.customData) {\n tx.customData = shallowCopy(ro.customData);\n }\n\n if (ro.ccipReadEnabled) {\n tx.ccipReadEnabled = !!ro.ccipReadEnabled;\n }\n\n // Remove the overrides\n delete overrides.nonce;\n delete overrides.gasLimit;\n delete overrides.gasPrice;\n delete overrides.from;\n delete overrides.value;\n\n delete overrides.type;\n delete overrides.accessList;\n\n delete overrides.maxFeePerGas;\n delete overrides.maxPriorityFeePerGas;\n\n delete overrides.customData;\n delete overrides.ccipReadEnabled;\n\n // Make sure there are no stray overrides, which may indicate a\n // typo or using an unsupported key.\n const leftovers = Object.keys(overrides).filter((key) => ((overrides)[key] != null));\n if (leftovers.length) {\n logger.throwError(`cannot override ${ leftovers.map((l) => JSON.stringify(l)).join(\",\") }`, Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"overrides\",\n overrides: leftovers\n });\n }\n\n return tx;\n}\n\n\nfunction buildPopulate(contract: Contract, fragment: FunctionFragment): ContractFunction {\n return function(...args: Array): Promise {\n return populateTransaction(contract, fragment, args);\n };\n}\n\nfunction buildEstimate(contract: Contract, fragment: FunctionFragment): ContractFunction {\n const signerOrProvider = (contract.signer || contract.provider);\n return async function(...args: Array): Promise {\n if (!signerOrProvider) {\n logger.throwError(\"estimate require a provider or signer\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"estimateGas\"\n })\n }\n\n const tx = await populateTransaction(contract, fragment, args);\n return await signerOrProvider.estimateGas(tx);\n };\n}\n\nfunction addContractWait(contract: Contract, tx: TransactionResponse) {\n const wait = tx.wait.bind(tx);\n tx.wait = (confirmations?: number) => {\n return wait(confirmations).then((receipt: ContractReceipt) => {\n receipt.events = receipt.logs.map((log) => {\n let event: Event = (deepCopy(log));\n let parsed: LogDescription = null;\n try {\n parsed = contract.interface.parseLog(log);\n } catch (e){ }\n\n // Successfully parsed the event log; include it\n if (parsed) {\n event.args = parsed.args;\n event.decode = (data: BytesLike, topics?: Array) => {\n return contract.interface.decodeEventLog(parsed.eventFragment, data, topics);\n };\n event.event = parsed.name;\n event.eventSignature = parsed.signature;\n }\n\n // Useful operations\n event.removeListener = () => { return contract.provider; }\n event.getBlock = () => {\n return contract.provider.getBlock(receipt.blockHash);\n }\n event.getTransaction = () => {\n return contract.provider.getTransaction(receipt.transactionHash);\n }\n event.getTransactionReceipt = () => {\n return Promise.resolve(receipt);\n }\n\n return event;\n });\n\n return receipt;\n });\n };\n}\n\nfunction buildCall(contract: Contract, fragment: FunctionFragment, collapseSimple: boolean): ContractFunction {\n const signerOrProvider = (contract.signer || contract.provider);\n\n return async function(...args: Array): Promise {\n // Extract the \"blockTag\" override if present\n let blockTag = undefined;\n if (args.length === fragment.inputs.length + 1 && typeof(args[args.length - 1]) === \"object\") {\n const overrides = shallowCopy(args.pop());\n if (overrides.blockTag != null) {\n blockTag = await overrides.blockTag;\n }\n delete overrides.blockTag;\n args.push(overrides);\n }\n\n // If the contract was just deployed, wait until it is mined\n if (contract.deployTransaction != null) {\n await contract._deployed(blockTag);\n }\n\n // Call a node and get the result\n const tx = await populateTransaction(contract, fragment, args);\n const result = await signerOrProvider.call(tx, blockTag);\n\n try {\n let value = contract.interface.decodeFunctionResult(fragment, result);\n if (collapseSimple && fragment.outputs.length === 1) {\n value = value[0];\n }\n return value;\n\n } catch (error) {\n if (error.code === Logger.errors.CALL_EXCEPTION) {\n error.address = contract.address;\n error.args = args;\n error.transaction = tx;\n }\n throw error;\n }\n };\n}\n\nfunction buildSend(contract: Contract, fragment: FunctionFragment): ContractFunction {\n return async function(...args: Array): Promise {\n if (!contract.signer) {\n logger.throwError(\"sending a transaction requires a signer\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"sendTransaction\"\n })\n }\n\n // If the contract was just deployed, wait until it is mined\n if (contract.deployTransaction != null) {\n await contract._deployed();\n }\n\n const txRequest = await populateTransaction(contract, fragment, args);\n\n const tx = await contract.signer.sendTransaction(txRequest);\n\n // Tweak the tx.wait so the receipt has extra properties\n addContractWait(contract, tx);\n\n return tx;\n };\n}\n\nfunction buildDefault(contract: Contract, fragment: FunctionFragment, collapseSimple: boolean): ContractFunction {\n if (fragment.constant) {\n return buildCall(contract, fragment, collapseSimple);\n }\n return buildSend(contract, fragment);\n}\n\nfunction getEventTag(filter: EventFilter): string {\n if (filter.address && (filter.topics == null || filter.topics.length === 0)) {\n return \"*\";\n }\n\n return (filter.address || \"*\") + \"@\" + (filter.topics ? filter.topics.map((topic) => {\n if (Array.isArray(topic)) {\n return topic.join(\"|\");\n }\n return topic;\n }).join(\":\"): \"\");\n}\n\nclass RunningEvent {\n readonly tag: string;\n readonly filter: EventFilter;\n private _listeners: Array<{ listener: Listener, once: boolean }>;\n\n constructor(tag: string, filter: EventFilter) {\n defineReadOnly(this, \"tag\", tag);\n defineReadOnly(this, \"filter\", filter);\n this._listeners = [ ];\n }\n\n addListener(listener: Listener, once: boolean): void {\n this._listeners.push({ listener: listener, once: once });\n }\n\n removeListener(listener: Listener): void {\n let done = false;\n this._listeners = this._listeners.filter((item) => {\n if (done || item.listener !== listener) { return true; }\n done = true;\n return false;\n });\n }\n\n removeAllListeners(): void {\n this._listeners = [];\n }\n\n listeners(): Array {\n return this._listeners.map((i) => i.listener);\n }\n\n listenerCount(): number {\n return this._listeners.length;\n }\n\n run(args: Array): number {\n const listenerCount = this.listenerCount();\n this._listeners = this._listeners.filter((item) => {\n\n const argsCopy = args.slice();\n\n // Call the callback in the next event loop\n setTimeout(() => {\n item.listener.apply(this, argsCopy);\n }, 0);\n\n // Reschedule it if it not \"once\"\n return !(item.once);\n });\n\n return listenerCount;\n }\n\n prepareEvent(event: Event): void {\n }\n\n // Returns the array that will be applied to an emit\n getEmit(event: Event): Array {\n return [ event ];\n }\n}\n\nclass ErrorRunningEvent extends RunningEvent {\n constructor() {\n super(\"error\", null);\n }\n}\n\n\n// @TODO Fragment should inherit Wildcard? and just override getEmit?\n// or have a common abstract super class, with enough constructor\n// options to configure both.\n\n// A Fragment Event will populate all the properties that Wildcard\n// will, and additionally dereference the arguments when emitting\nclass FragmentRunningEvent extends RunningEvent {\n readonly address: string;\n readonly interface: Interface;\n readonly fragment: EventFragment;\n\n constructor(address: string, contractInterface: Interface, fragment: EventFragment, topics?: Array>) {\n const filter: EventFilter = {\n address: address\n }\n\n let topic = contractInterface.getEventTopic(fragment);\n if (topics) {\n if (topic !== topics[0]) { logger.throwArgumentError(\"topic mismatch\", \"topics\", topics); }\n filter.topics = topics.slice();\n } else {\n filter.topics = [ topic ];\n }\n\n super(getEventTag(filter), filter);\n defineReadOnly(this, \"address\", address);\n defineReadOnly(this, \"interface\", contractInterface);\n defineReadOnly(this, \"fragment\", fragment);\n }\n\n\n prepareEvent(event: Event): void {\n super.prepareEvent(event);\n\n event.event = this.fragment.name;\n event.eventSignature = this.fragment.format();\n\n event.decode = (data: BytesLike, topics?: Array) => {\n return this.interface.decodeEventLog(this.fragment, data, topics);\n };\n\n try {\n event.args = this.interface.decodeEventLog(this.fragment, event.data, event.topics);\n } catch (error) {\n event.args = null;\n event.decodeError = error;\n }\n }\n\n getEmit(event: Event): Array {\n const errors = checkResultErrors(event.args);\n if (errors.length) { throw errors[0].error; }\n\n const args = (event.args || []).slice();\n args.push(event);\n return args;\n }\n}\n\n// A Wildcard Event will attempt to populate:\n// - event The name of the event name\n// - eventSignature The full signature of the event\n// - decode A function to decode data and topics\n// - args The decoded data and topics\nclass WildcardRunningEvent extends RunningEvent {\n readonly address: string;\n readonly interface: Interface;\n\n constructor(address: string, contractInterface: Interface) {\n super(\"*\", { address: address });\n defineReadOnly(this, \"address\", address);\n defineReadOnly(this, \"interface\", contractInterface);\n }\n\n prepareEvent(event: Event): void {\n super.prepareEvent(event);\n\n try {\n const parsed = this.interface.parseLog(event);\n event.event = parsed.name;\n event.eventSignature = parsed.signature;\n\n event.decode = (data: BytesLike, topics?: Array) => {\n return this.interface.decodeEventLog(parsed.eventFragment, data, topics);\n };\n\n event.args = parsed.args;\n } catch (error) {\n // No matching event\n }\n }\n}\n\nexport type ContractInterface = string | ReadonlyArray | Interface;\n\ntype InterfaceFunc = (contractInterface: ContractInterface) => Interface;\n\n\nexport class BaseContract {\n readonly address: string;\n readonly interface: Interface;\n\n readonly signer: Signer;\n readonly provider: Provider;\n\n readonly functions: { [ name: string ]: ContractFunction };\n\n readonly callStatic: { [ name: string ]: ContractFunction };\n readonly estimateGas: { [ name: string ]: ContractFunction };\n readonly populateTransaction: { [ name: string ]: ContractFunction };\n\n readonly filters: { [ name: string ]: (...args: Array) => EventFilter };\n\n // This will always be an address. This will only differ from\n // address if an ENS name was used in the constructor\n readonly resolvedAddress: Promise;\n\n // This is only set if the contract was created with a call to deploy\n readonly deployTransaction: TransactionResponse;\n\n _deployedPromise: Promise;\n\n // A list of RunningEvents to track listeners for each event tag\n _runningEvents: { [ eventTag: string ]: RunningEvent };\n\n // Wrapped functions to call emit and allow deregistration from the provider\n _wrappedEmits: { [ eventTag: string ]: (...args: Array) => void };\n\n constructor(addressOrName: string, contractInterface: ContractInterface, signerOrProvider?: Signer | Provider) {\n // @TODO: Maybe still check the addressOrName looks like a valid address or name?\n //address = getAddress(address);\n defineReadOnly(this, \"interface\", getStatic(new.target, \"getInterface\")(contractInterface));\n\n if (signerOrProvider == null) {\n defineReadOnly(this, \"provider\", null);\n defineReadOnly(this, \"signer\", null);\n } else if (Signer.isSigner(signerOrProvider)) {\n defineReadOnly(this, \"provider\", signerOrProvider.provider || null);\n defineReadOnly(this, \"signer\", signerOrProvider);\n } else if (Provider.isProvider(signerOrProvider)) {\n defineReadOnly(this, \"provider\", signerOrProvider);\n defineReadOnly(this, \"signer\", null);\n } else {\n logger.throwArgumentError(\"invalid signer or provider\", \"signerOrProvider\", signerOrProvider);\n }\n\n defineReadOnly(this, \"callStatic\", { });\n defineReadOnly(this, \"estimateGas\", { });\n defineReadOnly(this, \"functions\", { });\n defineReadOnly(this, \"populateTransaction\", { });\n\n defineReadOnly(this, \"filters\", { });\n\n {\n const uniqueFilters: { [ name: string ]: Array } = { };\n Object.keys(this.interface.events).forEach((eventSignature) => {\n const event = this.interface.events[eventSignature];\n defineReadOnly(this.filters, eventSignature, (...args: Array) => {\n return {\n address: this.address,\n topics: this.interface.encodeFilterTopics(event, args)\n }\n });\n if (!uniqueFilters[event.name]) { uniqueFilters[event.name] = [ ]; }\n uniqueFilters[event.name].push(eventSignature);\n });\n\n Object.keys(uniqueFilters).forEach((name) => {\n const filters = uniqueFilters[name];\n if (filters.length === 1) {\n defineReadOnly(this.filters, name, this.filters[filters[0]]);\n } else {\n logger.warn(`Duplicate definition of ${ name } (${ filters.join(\", \")})`);\n }\n });\n }\n\n defineReadOnly(this, \"_runningEvents\", { });\n defineReadOnly(this, \"_wrappedEmits\", { });\n\n if (addressOrName == null) {\n logger.throwArgumentError(\"invalid contract address or ENS name\", \"addressOrName\", addressOrName);\n }\n\n defineReadOnly(this, \"address\", addressOrName);\n if (this.provider) {\n defineReadOnly(this, \"resolvedAddress\", resolveName(this.provider, addressOrName));\n } else {\n try {\n defineReadOnly(this, \"resolvedAddress\", Promise.resolve(getAddress(addressOrName)));\n } catch (error) {\n // Without a provider, we cannot use ENS names\n logger.throwError(\"provider is required to use ENS name as contract address\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"new Contract\"\n });\n }\n }\n\n // Swallow bad ENS names to prevent Unhandled Exceptions\n this.resolvedAddress.catch((e) => { });\n\n const uniqueNames: { [ name: string ]: Array } = { };\n const uniqueSignatures: { [ signature: string ]: boolean } = { };\n Object.keys(this.interface.functions).forEach((signature) => {\n const fragment = this.interface.functions[signature];\n\n // Check that the signature is unique; if not the ABI generation has\n // not been cleaned or may be incorrectly generated\n if (uniqueSignatures[signature]) {\n logger.warn(`Duplicate ABI entry for ${ JSON.stringify(signature) }`);\n return;\n }\n uniqueSignatures[signature] = true;\n\n // Track unique names; we only expose bare named functions if they\n // are ambiguous\n {\n const name = fragment.name;\n if (!uniqueNames[`%${ name }`]) { uniqueNames[`%${ name }`] = [ ]; }\n uniqueNames[`%${ name }`].push(signature);\n }\n\n if ((this)[signature] == null) {\n defineReadOnly(this, signature, buildDefault(this, fragment, true));\n }\n\n // We do not collapse simple calls on this bucket, which allows\n // frameworks to safely use this without introspection as well as\n // allows decoding error recovery.\n if (this.functions[signature] == null) {\n defineReadOnly(this.functions, signature, buildDefault(this, fragment, false));\n }\n\n if (this.callStatic[signature] == null) {\n defineReadOnly(this.callStatic, signature, buildCall(this, fragment, true));\n }\n\n if (this.populateTransaction[signature] == null) {\n defineReadOnly(this.populateTransaction, signature, buildPopulate(this, fragment));\n }\n\n if (this.estimateGas[signature] == null) {\n defineReadOnly(this.estimateGas, signature, buildEstimate(this, fragment));\n }\n });\n\n Object.keys(uniqueNames).forEach((name) => {\n // Ambiguous names to not get attached as bare names\n const signatures = uniqueNames[name];\n if (signatures.length > 1) { return; }\n\n // Strip off the leading \"%\" used for prototype protection\n name = name.substring(1);\n\n const signature = signatures[0];\n\n // If overwriting a member property that is null, swallow the error\n try {\n if ((this)[name] == null) {\n defineReadOnly(this, name, (this)[signature]);\n }\n } catch (e) { }\n\n if (this.functions[name] == null) {\n defineReadOnly(this.functions, name, this.functions[signature]);\n }\n\n if (this.callStatic[name] == null) {\n defineReadOnly(this.callStatic, name, this.callStatic[signature]);\n }\n\n if (this.populateTransaction[name] == null) {\n defineReadOnly(this.populateTransaction, name, this.populateTransaction[signature]);\n }\n\n if (this.estimateGas[name] == null) {\n defineReadOnly(this.estimateGas, name, this.estimateGas[signature]);\n }\n });\n }\n\n static getContractAddress(transaction: { from: string, nonce: BigNumberish }): string {\n return getContractAddress(transaction);\n }\n\n static getInterface(contractInterface: ContractInterface): Interface {\n if (Interface.isInterface(contractInterface)) {\n return contractInterface;\n }\n return new Interface(contractInterface);\n }\n\n // @TODO: Allow timeout?\n deployed(): Promise {\n return this._deployed();\n }\n\n _deployed(blockTag?: BlockTag): Promise {\n if (!this._deployedPromise) {\n\n // If we were just deployed, we know the transaction we should occur in\n if (this.deployTransaction) {\n this._deployedPromise = this.deployTransaction.wait().then(() => {\n return this;\n });\n\n } else {\n // @TODO: Once we allow a timeout to be passed in, we will wait\n // up to that many blocks for getCode\n\n // Otherwise, poll for our code to be deployed\n this._deployedPromise = this.provider.getCode(this.address, blockTag).then((code) => {\n if (code === \"0x\") {\n logger.throwError(\"contract not deployed\", Logger.errors.UNSUPPORTED_OPERATION, {\n contractAddress: this.address,\n operation: \"getDeployed\"\n });\n }\n return this;\n });\n }\n }\n\n return this._deployedPromise;\n }\n\n // @TODO:\n // estimateFallback(overrides?: TransactionRequest): Promise\n\n // @TODO:\n // estimateDeploy(bytecode: string, ...args): Promise\n\n fallback(overrides?: TransactionRequest): Promise {\n if (!this.signer) {\n logger.throwError(\"sending a transactions require a signer\", Logger.errors.UNSUPPORTED_OPERATION, { operation: \"sendTransaction(fallback)\" })\n }\n\n const tx: Deferrable = shallowCopy(overrides || {});\n\n [\"from\", \"to\"].forEach(function(key) {\n if ((tx)[key] == null) { return; }\n logger.throwError(\"cannot override \" + key, Logger.errors.UNSUPPORTED_OPERATION, { operation: key })\n });\n\n tx.to = this.resolvedAddress;\n return this.deployed().then(() => {\n return this.signer.sendTransaction(tx);\n });\n }\n\n // Reconnect to a different signer or provider\n connect(signerOrProvider: Signer | Provider | string): Contract {\n if (typeof(signerOrProvider) === \"string\") {\n signerOrProvider = new VoidSigner(signerOrProvider, this.provider);\n }\n\n const contract = new (<{ new(...args: any[]): Contract }>(this.constructor))(this.address, this.interface, signerOrProvider);\n if (this.deployTransaction) {\n defineReadOnly(contract, \"deployTransaction\", this.deployTransaction);\n }\n\n return contract;\n }\n\n // Re-attach to a different on-chain instance of this contract\n attach(addressOrName: string): Contract {\n return new (<{ new(...args: any[]): Contract }>(this.constructor))(addressOrName, this.interface, this.signer || this.provider);\n }\n\n static isIndexed(value: any): value is Indexed {\n return Indexed.isIndexed(value);\n }\n\n private _normalizeRunningEvent(runningEvent: RunningEvent): RunningEvent {\n // Already have an instance of this event running; we can re-use it\n if (this._runningEvents[runningEvent.tag]) {\n return this._runningEvents[runningEvent.tag];\n }\n return runningEvent\n }\n\n private _getRunningEvent(eventName: EventFilter | string): RunningEvent {\n if (typeof(eventName) === \"string\") {\n\n // Listen for \"error\" events (if your contract has an error event, include\n // the full signature to bypass this special event keyword)\n if (eventName === \"error\") {\n return this._normalizeRunningEvent(new ErrorRunningEvent());\n }\n\n // Listen for any event that is registered\n if (eventName === \"event\") {\n return this._normalizeRunningEvent(new RunningEvent(\"event\", null));\n }\n\n // Listen for any event\n if (eventName === \"*\") {\n return this._normalizeRunningEvent(new WildcardRunningEvent(this.address, this.interface));\n }\n\n // Get the event Fragment (throws if ambiguous/unknown event)\n const fragment = this.interface.getEvent(eventName)\n return this._normalizeRunningEvent(new FragmentRunningEvent(this.address, this.interface, fragment));\n }\n\n // We have topics to filter by...\n if (eventName.topics && eventName.topics.length > 0) {\n\n // Is it a known topichash? (throws if no matching topichash)\n try {\n const topic = eventName.topics[0];\n if (typeof(topic) !== \"string\") {\n throw new Error(\"invalid topic\"); // @TODO: May happen for anonymous events\n }\n const fragment = this.interface.getEvent(topic);\n return this._normalizeRunningEvent(new FragmentRunningEvent(this.address, this.interface, fragment, eventName.topics));\n } catch (error) { }\n\n // Filter by the unknown topichash\n const filter: EventFilter = {\n address: this.address,\n topics: eventName.topics\n }\n\n return this._normalizeRunningEvent(new RunningEvent(getEventTag(filter), filter));\n }\n\n return this._normalizeRunningEvent(new WildcardRunningEvent(this.address, this.interface));\n }\n\n _checkRunningEvents(runningEvent: RunningEvent): void {\n if (runningEvent.listenerCount() === 0) {\n delete this._runningEvents[runningEvent.tag];\n\n // If we have a poller for this, remove it\n const emit = this._wrappedEmits[runningEvent.tag];\n if (emit && runningEvent.filter) {\n this.provider.off(runningEvent.filter, emit);\n delete this._wrappedEmits[runningEvent.tag];\n }\n }\n }\n\n // Subclasses can override this to gracefully recover\n // from parse errors if they wish\n _wrapEvent(runningEvent: RunningEvent, log: Log, listener: Listener): Event {\n const event = deepCopy(log);\n\n event.removeListener = () => {\n if (!listener) { return; }\n runningEvent.removeListener(listener);\n this._checkRunningEvents(runningEvent);\n };\n\n event.getBlock = () => { return this.provider.getBlock(log.blockHash); }\n event.getTransaction = () => { return this.provider.getTransaction(log.transactionHash); }\n event.getTransactionReceipt = () => { return this.provider.getTransactionReceipt(log.transactionHash); }\n\n // This may throw if the topics and data mismatch the signature\n runningEvent.prepareEvent(event);\n\n return event;\n }\n\n private _addEventListener(runningEvent: RunningEvent, listener: Listener, once: boolean): void {\n if (!this.provider) {\n logger.throwError(\"events require a provider or a signer with a provider\", Logger.errors.UNSUPPORTED_OPERATION, { operation: \"once\" })\n }\n\n runningEvent.addListener(listener, once);\n\n // Track this running event and its listeners (may already be there; but no hard in updating)\n this._runningEvents[runningEvent.tag] = runningEvent;\n\n // If we are not polling the provider, start polling\n if (!this._wrappedEmits[runningEvent.tag]) {\n const wrappedEmit = (log: Log) => {\n let event = this._wrapEvent(runningEvent, log, listener);\n\n // Try to emit the result for the parameterized event...\n if (event.decodeError == null) {\n try {\n const args = runningEvent.getEmit(event);\n this.emit(runningEvent.filter, ...args);\n } catch (error) {\n event.decodeError = error.error;\n }\n }\n\n // Always emit \"event\" for fragment-base events\n if (runningEvent.filter != null) {\n this.emit(\"event\", event);\n }\n\n // Emit \"error\" if there was an error\n if (event.decodeError != null) {\n this.emit(\"error\", event.decodeError, event);\n }\n };\n this._wrappedEmits[runningEvent.tag] = wrappedEmit;\n\n // Special events, like \"error\" do not have a filter\n if (runningEvent.filter != null) {\n this.provider.on(runningEvent.filter, wrappedEmit);\n }\n }\n }\n\n queryFilter(event: EventFilter | string, fromBlockOrBlockhash?: BlockTag | string, toBlock?: BlockTag): Promise> {\n const runningEvent = this._getRunningEvent(event);\n const filter = shallowCopy(runningEvent.filter);\n\n if (typeof(fromBlockOrBlockhash) === \"string\" && isHexString(fromBlockOrBlockhash, 32)) {\n if (toBlock != null) {\n logger.throwArgumentError(\"cannot specify toBlock with blockhash\", \"toBlock\", toBlock);\n }\n (filter).blockHash = fromBlockOrBlockhash;\n } else {\n (filter).fromBlock = ((fromBlockOrBlockhash != null) ? fromBlockOrBlockhash: 0);\n (filter).toBlock = ((toBlock != null) ? toBlock: \"latest\");\n }\n\n return this.provider.getLogs(filter).then((logs) => {\n return logs.map((log) => this._wrapEvent(runningEvent, log, null));\n });\n }\n\n on(event: EventFilter | string, listener: Listener): this {\n this._addEventListener(this._getRunningEvent(event), listener, false);\n return this;\n }\n\n once(event: EventFilter | string, listener: Listener): this {\n this._addEventListener(this._getRunningEvent(event), listener, true);\n return this;\n }\n\n emit(eventName: EventFilter | string, ...args: Array): boolean {\n if (!this.provider) { return false; }\n\n const runningEvent = this._getRunningEvent(eventName);\n const result = (runningEvent.run(args) > 0);\n\n // May have drained all the \"once\" events; check for living events\n this._checkRunningEvents(runningEvent);\n\n return result;\n }\n\n listenerCount(eventName?: EventFilter | string): number {\n if (!this.provider) { return 0; }\n if (eventName == null) {\n return Object.keys(this._runningEvents).reduce((accum, key) => {\n return accum + this._runningEvents[key].listenerCount();\n }, 0);\n }\n return this._getRunningEvent(eventName).listenerCount();\n }\n\n listeners(eventName?: EventFilter | string): Array {\n if (!this.provider) { return []; }\n\n if (eventName == null) {\n const result: Array = [ ];\n for (let tag in this._runningEvents) {\n this._runningEvents[tag].listeners().forEach((listener) => {\n result.push(listener)\n });\n }\n return result;\n }\n\n return this._getRunningEvent(eventName).listeners();\n }\n\n removeAllListeners(eventName?: EventFilter | string): this {\n if (!this.provider) { return this; }\n\n if (eventName == null) {\n for (const tag in this._runningEvents) {\n const runningEvent = this._runningEvents[tag];\n runningEvent.removeAllListeners();\n this._checkRunningEvents(runningEvent);\n }\n return this;\n }\n\n // Delete any listeners\n const runningEvent = this._getRunningEvent(eventName);\n runningEvent.removeAllListeners();\n this._checkRunningEvents(runningEvent);\n\n return this;\n }\n\n off(eventName: EventFilter | string, listener: Listener): this {\n if (!this.provider) { return this; }\n const runningEvent = this._getRunningEvent(eventName);\n runningEvent.removeListener(listener);\n this._checkRunningEvents(runningEvent);\n return this;\n }\n\n removeListener(eventName: EventFilter | string, listener: Listener): this {\n return this.off(eventName, listener);\n }\n\n}\n\nexport class Contract extends BaseContract {\n // The meta-class properties\n readonly [ key: string ]: ContractFunction | any;\n}\n\nexport class ContractFactory {\n\n readonly interface: Interface;\n readonly bytecode: string;\n readonly signer: Signer;\n\n constructor(contractInterface: ContractInterface, bytecode: BytesLike | { object: string }, signer?: Signer) {\n\n let bytecodeHex: string = null;\n\n if (typeof(bytecode) === \"string\") {\n bytecodeHex = bytecode;\n } else if (isBytes(bytecode)) {\n bytecodeHex = hexlify(bytecode);\n } else if (bytecode && typeof(bytecode.object) === \"string\") {\n // Allow the bytecode object from the Solidity compiler\n bytecodeHex = (bytecode).object;\n } else {\n // Crash in the next verification step\n bytecodeHex = \"!\";\n }\n\n // Make sure it is 0x prefixed\n if (bytecodeHex.substring(0, 2) !== \"0x\") { bytecodeHex = \"0x\" + bytecodeHex; }\n\n // Make sure the final result is valid bytecode\n if (!isHexString(bytecodeHex) || (bytecodeHex.length % 2)) {\n logger.throwArgumentError(\"invalid bytecode\", \"bytecode\", bytecode);\n }\n\n // If we have a signer, make sure it is valid\n if (signer && !Signer.isSigner(signer)) {\n logger.throwArgumentError(\"invalid signer\", \"signer\", signer);\n }\n\n defineReadOnly(this, \"bytecode\", bytecodeHex);\n defineReadOnly(this, \"interface\", getStatic(new.target, \"getInterface\")(contractInterface));\n defineReadOnly(this, \"signer\", signer || null);\n }\n\n // @TODO: Future; rename to populateTransaction?\n getDeployTransaction(...args: Array): TransactionRequest {\n let tx: TransactionRequest = { };\n\n // If we have 1 additional argument, we allow transaction overrides\n if (args.length === this.interface.deploy.inputs.length + 1 && typeof(args[args.length - 1]) === \"object\") {\n tx = shallowCopy(args.pop());\n for (const key in tx) {\n if (!allowedTransactionKeys[key]) {\n throw new Error(\"unknown transaction override \" + key);\n }\n }\n }\n\n // Do not allow these to be overridden in a deployment transaction\n [\"data\", \"from\", \"to\"].forEach((key) => {\n if ((tx)[key] == null) { return; }\n logger.throwError(\"cannot override \" + key, Logger.errors.UNSUPPORTED_OPERATION, { operation: key })\n });\n\n if (tx.value) {\n const value = BigNumber.from(tx.value);\n if (!value.isZero() && !this.interface.deploy.payable) {\n logger.throwError(\"non-payable constructor cannot override value\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"overrides.value\",\n value: tx.value\n });\n }\n }\n\n // Make sure the call matches the constructor signature\n logger.checkArgumentCount(args.length, this.interface.deploy.inputs.length, \" in Contract constructor\");\n\n // Set the data to the bytecode + the encoded constructor arguments\n tx.data = hexlify(concat([\n this.bytecode,\n this.interface.encodeDeploy(args)\n ]));\n\n return tx\n }\n\n async deploy(...args: Array): Promise {\n\n let overrides: any = { };\n\n // If 1 extra parameter was passed in, it contains overrides\n if (args.length === this.interface.deploy.inputs.length + 1) {\n overrides = args.pop();\n }\n\n // Make sure the call matches the constructor signature\n logger.checkArgumentCount(args.length, this.interface.deploy.inputs.length, \" in Contract constructor\");\n\n // Resolve ENS names and promises in the arguments\n const params = await resolveAddresses(this.signer, args, this.interface.deploy.inputs);\n params.push(overrides);\n\n // Get the deployment transaction (with optional overrides)\n const unsignedTx = this.getDeployTransaction(...params);\n\n // Send the deployment transaction\n const tx = await this.signer.sendTransaction(unsignedTx);\n\n const address = getStatic<(tx: TransactionResponse) => string>(this.constructor, \"getContractAddress\")(tx);\n const contract = getStatic<(address: string, contractInterface: ContractInterface, signer?: Signer) => Contract>(this.constructor, \"getContract\")(address, this.interface, this.signer);\n\n // Add the modified wait that wraps events\n addContractWait(contract, tx);\n\n defineReadOnly(contract, \"deployTransaction\", tx);\n return contract;\n }\n\n attach(address: string): Contract {\n return ((this.constructor)).getContract(address, this.interface, this.signer);\n }\n\n connect(signer: Signer) {\n return new (<{ new(...args: any[]): ContractFactory }>(this.constructor))(this.interface, this.bytecode, signer);\n }\n\n static fromSolidity(compilerOutput: any, signer?: Signer): ContractFactory {\n if (compilerOutput == null) {\n logger.throwError(\"missing compiler output\", Logger.errors.MISSING_ARGUMENT, { argument: \"compilerOutput\" });\n }\n\n if (typeof(compilerOutput) === \"string\") {\n compilerOutput = JSON.parse(compilerOutput);\n }\n\n const abi = compilerOutput.abi;\n\n let bytecode: any = null;\n if (compilerOutput.bytecode) {\n bytecode = compilerOutput.bytecode;\n } else if (compilerOutput.evm && compilerOutput.evm.bytecode) {\n bytecode = compilerOutput.evm.bytecode;\n }\n\n return new this(abi, bytecode, signer);\n }\n\n static getInterface(contractInterface: ContractInterface) {\n return Contract.getInterface(contractInterface);\n }\n\n static getContractAddress(tx: { from: string, nonce: BytesLike | BigNumber | number }): string {\n return getContractAddress(tx);\n }\n\n static getContract(address: string, contractInterface: ContractInterface, signer?: Signer): Contract {\n return new Contract(address, contractInterface, signer);\n }\n}\n", "/**\n * var basex = require(\"base-x\");\n *\n * This implementation is heavily based on base-x. The main reason to\n * deviate was to prevent the dependency of Buffer.\n *\n * Contributors:\n *\n * base-x encoding\n * Forked from https://github.com/cryptocoinjs/bs58\n * Originally written by Mike Hearn for BitcoinJ\n * Copyright (c) 2011 Google Inc\n * Ported to JavaScript by Stefan Thomas\n * Merged Buffer refactorings from base58-native by Stephen Pair\n * Copyright (c) 2013 BitPay Inc\n *\n * The MIT License (MIT)\n *\n * Copyright base-x contributors (c) 2016\n *\n * Permission is hereby granted, free of charge, to any person obtaining a\n * copy of this software and associated documentation files (the \"Software\"),\n * to deal in the Software without restriction, including without limitation\n * the rights to use, copy, modify, merge, publish, distribute, sublicense,\n * and/or sell copies of the Software, and to permit persons to whom the\n * Software is furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n *\n */\n\nimport { arrayify, BytesLike } from \"@ethersproject/bytes\";\nimport { defineReadOnly } from \"@ethersproject/properties\";\n\nexport class BaseX {\n readonly alphabet: string;\n readonly base: number;\n\n _alphabetMap: { [ character: string ]: number };\n _leader: string;\n\n constructor(alphabet: string) {\n defineReadOnly(this, \"alphabet\", alphabet);\n defineReadOnly(this, \"base\", alphabet.length);\n\n defineReadOnly(this, \"_alphabetMap\", { });\n defineReadOnly(this, \"_leader\", alphabet.charAt(0));\n\n // pre-compute lookup table\n for (let i = 0; i < alphabet.length; i++) {\n this._alphabetMap[alphabet.charAt(i)] = i;\n }\n }\n\n encode(value: BytesLike): string {\n let source = arrayify(value);\n\n if (source.length === 0) { return \"\"; }\n\n let digits = [ 0 ]\n for (let i = 0; i < source.length; ++i) {\n let carry = source[i];\n for (let j = 0; j < digits.length; ++j) {\n carry += digits[j] << 8;\n digits[j] = carry % this.base;\n carry = (carry / this.base) | 0;\n }\n\n while (carry > 0) {\n digits.push(carry % this.base);\n carry = (carry / this.base) | 0;\n }\n }\n\n let string = \"\"\n\n // deal with leading zeros\n for (let k = 0; source[k] === 0 && k < source.length - 1; ++k) {\n string += this._leader;\n }\n\n // convert digits to a string\n for (let q = digits.length - 1; q >= 0; --q) {\n string += this.alphabet[digits[q]];\n }\n\n return string;\n }\n\n decode(value: string): Uint8Array {\n if (typeof(value) !== \"string\") {\n throw new TypeError(\"Expected String\");\n }\n\n let bytes: Array = [];\n if (value.length === 0) { return new Uint8Array(bytes); }\n\n bytes.push(0);\n for (let i = 0; i < value.length; i++) {\n let byte = this._alphabetMap[value[i]];\n\n if (byte === undefined) {\n throw new Error(\"Non-base\" + this.base + \" character\");\n }\n\n let carry = byte;\n for (let j = 0; j < bytes.length; ++j) {\n carry += bytes[j] * this.base;\n bytes[j] = carry & 0xff;\n carry >>= 8;\n }\n\n while (carry > 0) {\n bytes.push(carry & 0xff);\n carry >>= 8;\n }\n }\n\n // deal with leading zeros\n for (let k = 0; value[k] === this._leader && k < value.length - 1; ++k) {\n bytes.push(0)\n }\n\n return arrayify(new Uint8Array(bytes.reverse()))\n }\n}\n\nconst Base32 = new BaseX(\"abcdefghijklmnopqrstuvwxyz234567\");\nconst Base58 = new BaseX(\"123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz\");\n\nexport { Base32, Base58 };\n\n//console.log(Base58.decode(\"Qmd2V777o5XvJbYMeMb8k2nU5f8d3ciUQ5YpYuWhzv8iDj\"))\n//console.log(Base58.encode(Base58.decode(\"Qmd2V777o5XvJbYMeMb8k2nU5f8d3ciUQ5YpYuWhzv8iDj\")))\n", "\"use strict\";\n\nimport { pbkdf2Sync as _pbkdf2 } from \"crypto\";\n\nimport { arrayify, BytesLike, hexlify } from \"@ethersproject/bytes\";\n\n\nfunction bufferify(value: BytesLike): Buffer {\n return Buffer.from(arrayify(value));\n}\n\nexport function pbkdf2(password: BytesLike, salt: BytesLike, iterations: number, keylen: number, hashAlgorithm: string): string {\n return hexlify(_pbkdf2(bufferify(password), bufferify(salt), iterations, keylen, hashAlgorithm));\n}\n", "\nexport { pbkdf2 } from \"./pbkdf2\";\n", "export enum SupportedAlgorithm { sha256 = \"sha256\", sha512 = \"sha512\" };\n\n", "export const version = \"sha2/5.7.0\";\n", "\"use strict\";\n\nimport { createHash, createHmac } from \"crypto\";\n\nimport hash from \"hash.js\";\n\nimport { arrayify, BytesLike } from \"@ethersproject/bytes\";\n\nimport { SupportedAlgorithm } from \"./types\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nexport function ripemd160(data: BytesLike): string {\n return \"0x\" + (hash.ripemd160().update(arrayify(data)).digest(\"hex\"));\n}\n\nexport function sha256(data: BytesLike): string {\n return \"0x\" + createHash(\"sha256\").update(Buffer.from(arrayify(data))).digest(\"hex\")\n}\n\nexport function sha512(data: BytesLike): string {\n return \"0x\" + createHash(\"sha512\").update(Buffer.from(arrayify(data))).digest(\"hex\")\n}\n\nexport function computeHmac(algorithm: SupportedAlgorithm, key: BytesLike, data: BytesLike): string {\n /* istanbul ignore if */\n if (!SupportedAlgorithm[algorithm]) {\n logger.throwError(\"unsupported algorithm - \" + algorithm, Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"computeHmac\",\n algorithm: algorithm\n });\n }\n\n return \"0x\" + createHmac(algorithm, Buffer.from(arrayify(key))).update(Buffer.from(arrayify(data))).digest(\"hex\");\n}\n\n", "import { computeHmac, ripemd160, sha256, sha512 } from \"./sha2\";\n\nimport { SupportedAlgorithm } from \"./types\";\n\nexport {\n computeHmac,\n\n ripemd160,\n\n sha256,\n sha512,\n\n SupportedAlgorithm\n}\n", "export const version = \"wordlists/5.7.0\";\n", "\"use strict\";\n\n// This gets overridden by rollup\nconst exportWordlist = false;\n\nimport { id } from \"@ethersproject/hash\";\nimport { defineReadOnly } from \"@ethersproject/properties\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nexport const logger = new Logger(version);\n\nexport abstract class Wordlist {\n readonly locale: string;\n\n constructor(locale: string) {\n logger.checkAbstract(new.target, Wordlist);\n defineReadOnly(this, \"locale\", locale);\n }\n\n abstract getWord(index: number): string;\n abstract getWordIndex(word: string): number;\n\n // Subclasses may override this\n split(mnemonic: string): Array {\n return mnemonic.toLowerCase().split(/ +/g)\n }\n\n // Subclasses may override this\n join(words: Array): string {\n return words.join(\" \");\n }\n\n static check(wordlist: Wordlist): string {\n const words = [];\n for (let i = 0; i < 2048; i++) {\n const word = wordlist.getWord(i);\n /* istanbul ignore if */\n if (i !== wordlist.getWordIndex(word)) { return \"0x\"; }\n words.push(word);\n }\n return id(words.join(\"\\n\") + \"\\n\");\n }\n\n static register(lang: Wordlist, name?: string): void {\n if (!name) { name = lang.locale; }\n\n /* istanbul ignore if */\n if (exportWordlist) {\n try {\n const anyGlobal = (window as any)\n if (anyGlobal._ethers && anyGlobal._ethers.wordlists) {\n if (!anyGlobal._ethers.wordlists[name]) {\n defineReadOnly(anyGlobal._ethers.wordlists, name, lang);\n }\n }\n } catch (error) { }\n }\n }\n\n}\n\n", "\"use strict\";\n\nimport { Wordlist } from \"./wordlist\";\n\nconst words = \"AbdikaceAbecedaAdresaAgreseAkceAktovkaAlejAlkoholAmputaceAnanasAndulkaAnekdotaAnketaAntikaAnulovatArchaAroganceAsfaltAsistentAspiraceAstmaAstronomAtlasAtletikaAtolAutobusAzylBabkaBachorBacilBaculkaBadatelBagetaBagrBahnoBakterieBaladaBaletkaBalkonBalonekBalvanBalzaBambusBankomatBarbarBaretBarmanBarokoBarvaBaterkaBatohBavlnaBazalkaBazilikaBazukaBednaBeranBesedaBestieBetonBezinkaBezmocBeztakBicyklBidloBiftekBikinyBilanceBiografBiologBitvaBizonBlahobytBlatouchBlechaBleduleBleskBlikatBliznaBlokovatBlouditBludBobekBobrBodlinaBodnoutBohatostBojkotBojovatBokorysBolestBorecBoroviceBotaBoubelBouchatBoudaBouleBouratBoxerBradavkaBramboraBrankaBratrBreptaBriketaBrkoBrlohBronzBroskevBrunetkaBrusinkaBrzdaBrzyBublinaBubnovatBuchtaBuditelBudkaBudovaBufetBujarostBukviceBuldokBulvaBundaBunkrBurzaButikBuvolBuzolaBydletBylinaBytovkaBzukotCapartCarevnaCedrCeduleCejchCejnCelaCelerCelkemCelniceCeninaCennostCenovkaCentrumCenzorCestopisCetkaChalupaChapadloCharitaChataChechtatChemieChichotChirurgChladChlebaChlubitChmelChmuraChobotChocholChodbaCholeraChomoutChopitChorobaChovChrapotChrlitChrtChrupChtivostChudinaChutnatChvatChvilkaChvostChybaChystatChytitCibuleCigaretaCihelnaCihlaCinkotCirkusCisternaCitaceCitrusCizinecCizostClonaCokolivCouvatCtitelCtnostCudnostCuketaCukrCupotCvaknoutCvalCvikCvrkotCyklistaDalekoDarebaDatelDatumDceraDebataDechovkaDecibelDeficitDeflaceDeklDekretDemokratDepreseDerbyDeskaDetektivDikobrazDiktovatDiodaDiplomDiskDisplejDivadloDivochDlahaDlouhoDluhopisDnesDobroDobytekDocentDochutitDodnesDohledDohodaDohraDojemDojniceDokladDokolaDoktorDokumentDolarDolevaDolinaDomaDominantDomluvitDomovDonutitDopadDopisDoplnitDoposudDoprovodDopustitDorazitDorostDortDosahDoslovDostatekDosudDosytaDotazDotekDotknoutDoufatDoutnatDovozceDozaduDoznatDozorceDrahotaDrakDramatikDravecDrazeDrdolDrobnostDrogerieDrozdDrsnostDrtitDrzostDubenDuchovnoDudekDuhaDuhovkaDusitDusnoDutostDvojiceDvorecDynamitEkologEkonomieElektronElipsaEmailEmiseEmoceEmpatieEpizodaEpochaEpopejEposEsejEsenceEskortaEskymoEtiketaEuforieEvoluceExekuceExkurzeExpediceExplozeExportExtraktFackaFajfkaFakultaFanatikFantazieFarmacieFavoritFazoleFederaceFejetonFenkaFialkaFigurantFilozofFiltrFinanceFintaFixaceFjordFlanelFlirtFlotilaFondFosforFotbalFotkaFotonFrakceFreskaFrontaFukarFunkceFyzikaGalejeGarantGenetikaGeologGilotinaGlazuraGlejtGolemGolfistaGotikaGrafGramofonGranuleGrepGrilGrogGroteskaGumaHadiceHadrHalaHalenkaHanbaHanopisHarfaHarpunaHavranHebkostHejkalHejnoHejtmanHektarHelmaHematomHerecHernaHesloHezkyHistorikHladovkaHlasivkyHlavaHledatHlenHlodavecHlohHloupostHltatHlubinaHluchotaHmatHmotaHmyzHnisHnojivoHnoutHoblinaHobojHochHodinyHodlatHodnotaHodovatHojnostHokejHolinkaHolkaHolubHomoleHonitbaHonoraceHoralHordaHorizontHorkoHorlivecHormonHorninaHoroskopHorstvoHospodaHostinaHotovostHoubaHoufHoupatHouskaHovorHradbaHraniceHravostHrazdaHrbolekHrdinaHrdloHrdostHrnekHrobkaHromadaHrotHroudaHrozenHrstkaHrubostHryzatHubenostHubnoutHudbaHukotHumrHusitaHustotaHvozdHybnostHydrantHygienaHymnaHysterikIdylkaIhnedIkonaIluzeImunitaInfekceInflaceInkasoInovaceInspekceInternetInvalidaInvestorInzerceIronieJablkoJachtaJahodaJakmileJakostJalovecJantarJarmarkJaroJasanJasnoJatkaJavorJazykJedinecJedleJednatelJehlanJekotJelenJelitoJemnostJenomJepiceJeseterJevitJezdecJezeroJinakJindyJinochJiskraJistotaJitrniceJizvaJmenovatJogurtJurtaKabaretKabelKabinetKachnaKadetKadidloKahanKajakKajutaKakaoKaktusKalamitaKalhotyKalibrKalnostKameraKamkolivKamnaKanibalKanoeKantorKapalinaKapelaKapitolaKapkaKapleKapotaKaprKapustaKapybaraKaramelKarotkaKartonKasaKatalogKatedraKauceKauzaKavalecKazajkaKazetaKazivostKdekolivKdesiKedlubenKempKeramikaKinoKlacekKladivoKlamKlapotKlasikaKlaunKlecKlenbaKlepatKlesnoutKlidKlimaKlisnaKloboukKlokanKlopaKloubKlubovnaKlusatKluzkostKmenKmitatKmotrKnihaKnotKoaliceKoberecKobkaKoblihaKobylaKocourKohoutKojenecKokosKoktejlKolapsKoledaKolizeKoloKomandoKometaKomikKomnataKomoraKompasKomunitaKonatKonceptKondiceKonecKonfeseKongresKoninaKonkursKontaktKonzervaKopanecKopieKopnoutKoprovkaKorbelKorektorKormidloKoroptevKorpusKorunaKorytoKorzetKosatecKostkaKotelKotletaKotoulKoukatKoupelnaKousekKouzloKovbojKozaKozorohKrabiceKrachKrajinaKralovatKrasopisKravataKreditKrejcarKresbaKrevetaKriketKritikKrizeKrkavecKrmelecKrmivoKrocanKrokKronikaKropitKroupaKrovkaKrtekKruhadloKrupiceKrutostKrvinkaKrychleKryptaKrystalKrytKudlankaKufrKujnostKuklaKulajdaKulichKulkaKulometKulturaKunaKupodivuKurtKurzorKutilKvalitaKvasinkaKvestorKynologKyselinaKytaraKyticeKytkaKytovecKyvadloLabradorLachtanLadnostLaikLakomecLamelaLampaLanovkaLasiceLasoLasturaLatinkaLavinaLebkaLeckdyLedenLedniceLedovkaLedvinaLegendaLegieLegraceLehceLehkostLehnoutLektvarLenochodLentilkaLepenkaLepidloLetadloLetecLetmoLetokruhLevhartLevitaceLevobokLibraLichotkaLidojedLidskostLihovinaLijavecLilekLimetkaLinieLinkaLinoleumListopadLitinaLitovatLobistaLodivodLogikaLogopedLokalitaLoketLomcovatLopataLopuchLordLososLotrLoudalLouhLoukaLouskatLovecLstivostLucernaLuciferLumpLuskLustraceLviceLyraLyrikaLysinaMadamMadloMagistrMahagonMajetekMajitelMajoritaMakakMakoviceMakrelaMalbaMalinaMalovatMalviceMaminkaMandleMankoMarnostMasakrMaskotMasopustMaticeMatrikaMaturitaMazanecMazivoMazlitMazurkaMdlobaMechanikMeditaceMedovinaMelasaMelounMentolkaMetlaMetodaMetrMezeraMigraceMihnoutMihuleMikinaMikrofonMilenecMilimetrMilostMimikaMincovnaMinibarMinometMinulostMiskaMistrMixovatMladostMlhaMlhovinaMlokMlsatMluvitMnichMnohemMobilMocnostModelkaModlitbaMohylaMokroMolekulaMomentkaMonarchaMonoklMonstrumMontovatMonzunMosazMoskytMostMotivaceMotorkaMotykaMouchaMoudrostMozaikaMozekMozolMramorMravenecMrkevMrtvolaMrzetMrzutostMstitelMudrcMuflonMulatMumieMuniceMusetMutaceMuzeumMuzikantMyslivecMzdaNabouratNachytatNadaceNadbytekNadhozNadobroNadpisNahlasNahnatNahodileNahraditNaivitaNajednouNajistoNajmoutNaklonitNakonecNakrmitNalevoNamazatNamluvitNanometrNaokoNaopakNaostroNapadatNapevnoNaplnitNapnoutNaposledNaprostoNaroditNarubyNarychloNasaditNasekatNaslepoNastatNatolikNavenekNavrchNavzdoryNazvatNebeNechatNeckyNedalekoNedbatNeduhNegaceNehetNehodaNejenNejprveNeklidNelibostNemilostNemocNeochotaNeonkaNepokojNerostNervNesmyslNesouladNetvorNeuronNevinaNezvykleNicotaNijakNikamNikdyNiklNikterakNitroNoclehNohaviceNominaceNoraNorekNositelNosnostNouzeNovinyNovotaNozdraNudaNudleNugetNutitNutnostNutrieNymfaObalObarvitObavaObdivObecObehnatObejmoutObezitaObhajobaObilniceObjasnitObjektObklopitOblastOblekOblibaOblohaObludaObnosObohatitObojekOboutObrazecObrnaObrubaObrysObsahObsluhaObstaratObuvObvazObvinitObvodObvykleObyvatelObzorOcasOcelOcenitOchladitOchotaOchranaOcitnoutOdbojOdbytOdchodOdcizitOdebratOdeslatOdevzdatOdezvaOdhadceOdhoditOdjetOdjinudOdkazOdkoupitOdlivOdlukaOdmlkaOdolnostOdpadOdpisOdploutOdporOdpustitOdpykatOdrazkaOdsouditOdstupOdsunOdtokOdtudOdvahaOdvetaOdvolatOdvracetOdznakOfinaOfsajdOhlasOhniskoOhradaOhrozitOhryzekOkapOkeniceOklikaOknoOkouzlitOkovyOkrasaOkresOkrsekOkruhOkupantOkurkaOkusitOlejninaOlizovatOmakOmeletaOmezitOmladinaOmlouvatOmluvaOmylOnehdyOpakovatOpasekOperaceOpiceOpilostOpisovatOporaOpoziceOpravduOprotiOrbitalOrchestrOrgieOrliceOrlojOrtelOsadaOschnoutOsikaOsivoOslavaOslepitOslnitOslovitOsnovaOsobaOsolitOspalecOstenOstrahaOstudaOstychOsvojitOteplitOtiskOtopOtrhatOtrlostOtrokOtrubyOtvorOvanoutOvarOvesOvlivnitOvoceOxidOzdobaPachatelPacientPadouchPahorekPaktPalandaPalecPalivoPalubaPamfletPamlsekPanenkaPanikaPannaPanovatPanstvoPantoflePaprikaParketaParodiePartaParukaParybaPasekaPasivitaPastelkaPatentPatronaPavoukPaznehtPazourekPeckaPedagogPejsekPekloPelotonPenaltaPendrekPenzePeriskopPeroPestrostPetardaPeticePetrolejPevninaPexesoPianistaPihaPijavicePiklePiknikPilinaPilnostPilulkaPinzetaPipetaPisatelPistolePitevnaPivnicePivovarPlacentaPlakatPlamenPlanetaPlastikaPlatitPlavidloPlazPlechPlemenoPlentaPlesPletivoPlevelPlivatPlnitPlnoPlochaPlodinaPlombaPloutPlukPlynPobavitPobytPochodPocitPoctivecPodatPodcenitPodepsatPodhledPodivitPodkladPodmanitPodnikPodobaPodporaPodrazPodstataPodvodPodzimPoeziePohankaPohnutkaPohovorPohromaPohybPointaPojistkaPojmoutPokazitPoklesPokojPokrokPokutaPokynPolednePolibekPolknoutPolohaPolynomPomaluPominoutPomlkaPomocPomstaPomysletPonechatPonorkaPonurostPopadatPopelPopisekPoplachPoprositPopsatPopudPoradcePorcePorodPoruchaPoryvPosaditPosedPosilaPoskokPoslanecPosouditPospoluPostavaPosudekPosypPotahPotkanPotleskPotomekPotravaPotupaPotvoraPoukazPoutoPouzdroPovahaPovidlaPovlakPovozPovrchPovstatPovykPovzdechPozdravPozemekPoznatekPozorPozvatPracovatPrahoryPraktikaPralesPraotecPraporekPrasePravdaPrincipPrknoProbuditProcentoProdejProfeseProhraProjektProlomitPromilePronikatPropadProrokProsbaProtonProutekProvazPrskavkaPrstenPrudkostPrutPrvekPrvohoryPsanecPsovodPstruhPtactvoPubertaPuchPudlPukavecPuklinaPukrlePultPumpaPuncPupenPusaPusinkaPustinaPutovatPutykaPyramidaPyskPytelRacekRachotRadiaceRadniceRadonRaftRagbyRaketaRakovinaRamenoRampouchRandeRarachRaritaRasovnaRastrRatolestRazanceRazidloReagovatReakceReceptRedaktorReferentReflexRejnokReklamaRekordRekrutRektorReputaceRevizeRevmaRevolverRezervaRiskovatRizikoRobotikaRodokmenRohovkaRokleRokokoRomanetoRopovodRopuchaRorejsRosolRostlinaRotmistrRotopedRotundaRoubenkaRouchoRoupRouraRovinaRovniceRozborRozchodRozdatRozeznatRozhodceRozinkaRozjezdRozkazRozlohaRozmarRozpadRozruchRozsahRoztokRozumRozvodRubrikaRuchadloRukaviceRukopisRybaRybolovRychlostRydloRypadloRytinaRyzostSadistaSahatSakoSamecSamizdatSamotaSanitkaSardinkaSasankaSatelitSazbaSazeniceSborSchovatSebrankaSeceseSedadloSedimentSedloSehnatSejmoutSekeraSektaSekundaSekvojeSemenoSenoServisSesaditSeshoraSeskokSeslatSestraSesuvSesypatSetbaSetinaSetkatSetnoutSetrvatSeverSeznamShodaShrnoutSifonSilniceSirkaSirotekSirupSituaceSkafandrSkaliskoSkanzenSkautSkeptikSkicaSkladbaSkleniceSkloSkluzSkobaSkokanSkoroSkriptaSkrzSkupinaSkvostSkvrnaSlabikaSladidloSlaninaSlastSlavnostSledovatSlepecSlevaSlezinaSlibSlinaSlizniceSlonSloupekSlovoSluchSluhaSlunceSlupkaSlzaSmaragdSmetanaSmilstvoSmlouvaSmogSmradSmrkSmrtkaSmutekSmyslSnadSnahaSnobSobotaSochaSodovkaSokolSopkaSotvaSoubojSoucitSoudceSouhlasSouladSoumrakSoupravaSousedSoutokSouvisetSpalovnaSpasitelSpisSplavSpodekSpojenecSpoluSponzorSpornostSpoustaSprchaSpustitSrandaSrazSrdceSrnaSrnecSrovnatSrpenSrstSrubStaniceStarostaStatikaStavbaStehnoStezkaStodolaStolekStopaStornoStoupatStrachStresStrhnoutStromStrunaStudnaStupniceStvolStykSubjektSubtropySucharSudostSuknoSundatSunoutSurikataSurovinaSvahSvalstvoSvetrSvatbaSvazekSvisleSvitekSvobodaSvodidloSvorkaSvrabSykavkaSykotSynekSynovecSypatSypkostSyrovostSyselSytostTabletkaTabuleTahounTajemnoTajfunTajgaTajitTajnostTaktikaTamhleTamponTancovatTanecTankerTapetaTaveninaTazatelTechnikaTehdyTekutinaTelefonTemnotaTendenceTenistaTenorTeplotaTepnaTeprveTerapieTermoskaTextilTichoTiskopisTitulekTkadlecTkaninaTlapkaTleskatTlukotTlupaTmelToaletaTopinkaTopolTorzoTouhaToulecTradiceTraktorTrampTrasaTraverzaTrefitTrestTrezorTrhavinaTrhlinaTrochuTrojiceTroskaTroubaTrpceTrpitelTrpkostTrubecTruchlitTruhliceTrusTrvatTudyTuhnoutTuhostTundraTuristaTurnajTuzemskoTvarohTvorbaTvrdostTvrzTygrTykevUbohostUbozeUbratUbrousekUbrusUbytovnaUchoUctivostUdivitUhraditUjednatUjistitUjmoutUkazatelUklidnitUklonitUkotvitUkrojitUliceUlitaUlovitUmyvadloUnavitUniformaUniknoutUpadnoutUplatnitUplynoutUpoutatUpravitUranUrazitUsednoutUsilovatUsmrtitUsnadnitUsnoutUsouditUstlatUstrnoutUtahovatUtkatUtlumitUtonoutUtopenecUtrousitUvalitUvolnitUvozovkaUzdravitUzelUzeninaUzlinaUznatVagonValchaValounVanaVandalVanilkaVaranVarhanyVarovatVcelkuVchodVdovaVedroVegetaceVejceVelbloudVeletrhVelitelVelmocVelrybaVenkovVerandaVerzeVeselkaVeskrzeVesniceVespoduVestaVeterinaVeverkaVibraceVichrVideohraVidinaVidleVilaViniceVisetVitalitaVizeVizitkaVjezdVkladVkusVlajkaVlakVlasecVlevoVlhkostVlivVlnovkaVloupatVnucovatVnukVodaVodivostVodoznakVodstvoVojenskyVojnaVojskoVolantVolbaVolitVolnoVoskovkaVozidloVozovnaVpravoVrabecVracetVrahVrataVrbaVrcholekVrhatVrstvaVrtuleVsaditVstoupitVstupVtipVybavitVybratVychovatVydatVydraVyfotitVyhledatVyhnoutVyhoditVyhraditVyhubitVyjasnitVyjetVyjmoutVyklopitVykonatVylekatVymazatVymezitVymizetVymysletVynechatVynikatVynutitVypadatVyplatitVypravitVypustitVyrazitVyrovnatVyrvatVyslovitVysokoVystavitVysunoutVysypatVytasitVytesatVytratitVyvinoutVyvolatVyvrhelVyzdobitVyznatVzaduVzbuditVzchopitVzdorVzduchVzdychatVzestupVzhledemVzkazVzlykatVznikVzorekVzpouraVztahVztekXylofonZabratZabydletZachovatZadarmoZadusitZafoukatZahltitZahoditZahradaZahynoutZajatecZajetZajistitZaklepatZakoupitZalepitZamezitZamotatZamysletZanechatZanikatZaplatitZapojitZapsatZarazitZastavitZasunoutZatajitZatemnitZatknoutZaujmoutZavalitZaveletZavinitZavolatZavrtatZazvonitZbavitZbrusuZbudovatZbytekZdalekaZdarmaZdatnostZdivoZdobitZdrojZdvihZdymadloZeleninaZemanZeminaZeptatZezaduZezdolaZhatitZhltnoutZhlubokaZhotovitZhrubaZimaZimniceZjemnitZklamatZkoumatZkratkaZkumavkaZlatoZlehkaZlobaZlomZlostZlozvykZmapovatZmarZmatekZmijeZmizetZmocnitZmodratZmrzlinaZmutovatZnakZnalostZnamenatZnovuZobrazitZotavitZoubekZoufaleZploditZpomalitZpravaZprostitZprudkaZprvuZradaZranitZrcadloZrnitostZrnoZrovnaZrychlitZrzavostZtichaZtratitZubovinaZubrZvednoutZvenkuZveselaZvonZvratZvukovodZvyk\";\n\nlet wordlist: Array = null;\n\nfunction loadWords(lang: Wordlist): void {\n if (wordlist != null) { return; }\n wordlist = words.replace(/([A-Z])/g, \" $1\").toLowerCase().substring(1).split(\" \");\n\n // Verify the computed list matches the official list\n /* istanbul ignore if */\n if (Wordlist.check(lang) !== \"0x25f44555f4af25b51a711136e1c7d6e50ce9f8917d39d6b1f076b2bb4d2fac1a\") {\n wordlist = null;\n throw new Error(\"BIP39 Wordlist for en (English) FAILED\");\n }\n}\n\nclass LangCz extends Wordlist {\n constructor() {\n super(\"cz\");\n }\n\n getWord(index: number): string {\n loadWords(this);\n return wordlist[index];\n }\n\n getWordIndex(word: string): number {\n loadWords(this);\n return wordlist.indexOf(word);\n }\n}\n\nconst langCz = new LangCz();\nWordlist.register(langCz);\n\nexport { langCz };\n\n", "\"use strict\";\n\nimport { Wordlist } from \"./wordlist\";\n\n\nconst words = \"AbandonAbilityAbleAboutAboveAbsentAbsorbAbstractAbsurdAbuseAccessAccidentAccountAccuseAchieveAcidAcousticAcquireAcrossActActionActorActressActualAdaptAddAddictAddressAdjustAdmitAdultAdvanceAdviceAerobicAffairAffordAfraidAgainAgeAgentAgreeAheadAimAirAirportAisleAlarmAlbumAlcoholAlertAlienAllAlleyAllowAlmostAloneAlphaAlreadyAlsoAlterAlwaysAmateurAmazingAmongAmountAmusedAnalystAnchorAncientAngerAngleAngryAnimalAnkleAnnounceAnnualAnotherAnswerAntennaAntiqueAnxietyAnyApartApologyAppearAppleApproveAprilArchArcticAreaArenaArgueArmArmedArmorArmyAroundArrangeArrestArriveArrowArtArtefactArtistArtworkAskAspectAssaultAssetAssistAssumeAsthmaAthleteAtomAttackAttendAttitudeAttractAuctionAuditAugustAuntAuthorAutoAutumnAverageAvocadoAvoidAwakeAwareAwayAwesomeAwfulAwkwardAxisBabyBachelorBaconBadgeBagBalanceBalconyBallBambooBananaBannerBarBarelyBargainBarrelBaseBasicBasketBattleBeachBeanBeautyBecauseBecomeBeefBeforeBeginBehaveBehindBelieveBelowBeltBenchBenefitBestBetrayBetterBetweenBeyondBicycleBidBikeBindBiologyBirdBirthBitterBlackBladeBlameBlanketBlastBleakBlessBlindBloodBlossomBlouseBlueBlurBlushBoardBoatBodyBoilBombBoneBonusBookBoostBorderBoringBorrowBossBottomBounceBoxBoyBracketBrainBrandBrassBraveBreadBreezeBrickBridgeBriefBrightBringBriskBroccoliBrokenBronzeBroomBrotherBrownBrushBubbleBuddyBudgetBuffaloBuildBulbBulkBulletBundleBunkerBurdenBurgerBurstBusBusinessBusyButterBuyerBuzzCabbageCabinCableCactusCageCakeCallCalmCameraCampCanCanalCancelCandyCannonCanoeCanvasCanyonCapableCapitalCaptainCarCarbonCardCargoCarpetCarryCartCaseCashCasinoCastleCasualCatCatalogCatchCategoryCattleCaughtCauseCautionCaveCeilingCeleryCementCensusCenturyCerealCertainChairChalkChampionChangeChaosChapterChargeChaseChatCheapCheckCheeseChefCherryChestChickenChiefChildChimneyChoiceChooseChronicChuckleChunkChurnCigarCinnamonCircleCitizenCityCivilClaimClapClarifyClawClayCleanClerkCleverClickClientCliffClimbClinicClipClockClogCloseClothCloudClownClubClumpClusterClutchCoachCoastCoconutCodeCoffeeCoilCoinCollectColorColumnCombineComeComfortComicCommonCompanyConcertConductConfirmCongressConnectConsiderControlConvinceCookCoolCopperCopyCoralCoreCornCorrectCostCottonCouchCountryCoupleCourseCousinCoverCoyoteCrackCradleCraftCramCraneCrashCraterCrawlCrazyCreamCreditCreekCrewCricketCrimeCrispCriticCropCrossCrouchCrowdCrucialCruelCruiseCrumbleCrunchCrushCryCrystalCubeCultureCupCupboardCuriousCurrentCurtainCurveCushionCustomCuteCycleDadDamageDampDanceDangerDaringDashDaughterDawnDayDealDebateDebrisDecadeDecemberDecideDeclineDecorateDecreaseDeerDefenseDefineDefyDegreeDelayDeliverDemandDemiseDenialDentistDenyDepartDependDepositDepthDeputyDeriveDescribeDesertDesignDeskDespairDestroyDetailDetectDevelopDeviceDevoteDiagramDialDiamondDiaryDiceDieselDietDifferDigitalDignityDilemmaDinnerDinosaurDirectDirtDisagreeDiscoverDiseaseDishDismissDisorderDisplayDistanceDivertDivideDivorceDizzyDoctorDocumentDogDollDolphinDomainDonateDonkeyDonorDoorDoseDoubleDoveDraftDragonDramaDrasticDrawDreamDressDriftDrillDrinkDripDriveDropDrumDryDuckDumbDuneDuringDustDutchDutyDwarfDynamicEagerEagleEarlyEarnEarthEasilyEastEasyEchoEcologyEconomyEdgeEditEducateEffortEggEightEitherElbowElderElectricElegantElementElephantElevatorEliteElseEmbarkEmbodyEmbraceEmergeEmotionEmployEmpowerEmptyEnableEnactEndEndlessEndorseEnemyEnergyEnforceEngageEngineEnhanceEnjoyEnlistEnoughEnrichEnrollEnsureEnterEntireEntryEnvelopeEpisodeEqualEquipEraEraseErodeErosionErrorEruptEscapeEssayEssenceEstateEternalEthicsEvidenceEvilEvokeEvolveExactExampleExcessExchangeExciteExcludeExcuseExecuteExerciseExhaustExhibitExileExistExitExoticExpandExpectExpireExplainExposeExpressExtendExtraEyeEyebrowFabricFaceFacultyFadeFaintFaithFallFalseFameFamilyFamousFanFancyFantasyFarmFashionFatFatalFatherFatigueFaultFavoriteFeatureFebruaryFederalFeeFeedFeelFemaleFenceFestivalFetchFeverFewFiberFictionFieldFigureFileFilmFilterFinalFindFineFingerFinishFireFirmFirstFiscalFishFitFitnessFixFlagFlameFlashFlatFlavorFleeFlightFlipFloatFlockFloorFlowerFluidFlushFlyFoamFocusFogFoilFoldFollowFoodFootForceForestForgetForkFortuneForumForwardFossilFosterFoundFoxFragileFrameFrequentFreshFriendFringeFrogFrontFrostFrownFrozenFruitFuelFunFunnyFurnaceFuryFutureGadgetGainGalaxyGalleryGameGapGarageGarbageGardenGarlicGarmentGasGaspGateGatherGaugeGazeGeneralGeniusGenreGentleGenuineGestureGhostGiantGiftGiggleGingerGiraffeGirlGiveGladGlanceGlareGlassGlideGlimpseGlobeGloomGloryGloveGlowGlueGoatGoddessGoldGoodGooseGorillaGospelGossipGovernGownGrabGraceGrainGrantGrapeGrassGravityGreatGreenGridGriefGritGroceryGroupGrowGruntGuardGuessGuideGuiltGuitarGunGymHabitHairHalfHammerHamsterHandHappyHarborHardHarshHarvestHatHaveHawkHazardHeadHealthHeartHeavyHedgehogHeightHelloHelmetHelpHenHeroHiddenHighHillHintHipHireHistoryHobbyHockeyHoldHoleHolidayHollowHomeHoneyHoodHopeHornHorrorHorseHospitalHostHotelHourHoverHubHugeHumanHumbleHumorHundredHungryHuntHurdleHurryHurtHusbandHybridIceIconIdeaIdentifyIdleIgnoreIllIllegalIllnessImageImitateImmenseImmuneImpactImposeImproveImpulseInchIncludeIncomeIncreaseIndexIndicateIndoorIndustryInfantInflictInformInhaleInheritInitialInjectInjuryInmateInnerInnocentInputInquiryInsaneInsectInsideInspireInstallIntactInterestIntoInvestInviteInvolveIronIslandIsolateIssueItemIvoryJacketJaguarJarJazzJealousJeansJellyJewelJobJoinJokeJourneyJoyJudgeJuiceJumpJungleJuniorJunkJustKangarooKeenKeepKetchupKeyKickKidKidneyKindKingdomKissKitKitchenKiteKittenKiwiKneeKnifeKnockKnowLabLabelLaborLadderLadyLakeLampLanguageLaptopLargeLaterLatinLaughLaundryLavaLawLawnLawsuitLayerLazyLeaderLeafLearnLeaveLectureLeftLegLegalLegendLeisureLemonLendLengthLensLeopardLessonLetterLevelLiarLibertyLibraryLicenseLifeLiftLightLikeLimbLimitLinkLionLiquidListLittleLiveLizardLoadLoanLobsterLocalLockLogicLonelyLongLoopLotteryLoudLoungeLoveLoyalLuckyLuggageLumberLunarLunchLuxuryLyricsMachineMadMagicMagnetMaidMailMainMajorMakeMammalManManageMandateMangoMansionManualMapleMarbleMarchMarginMarineMarketMarriageMaskMassMasterMatchMaterialMathMatrixMatterMaximumMazeMeadowMeanMeasureMeatMechanicMedalMediaMelodyMeltMemberMemoryMentionMenuMercyMergeMeritMerryMeshMessageMetalMethodMiddleMidnightMilkMillionMimicMindMinimumMinorMinuteMiracleMirrorMiseryMissMistakeMixMixedMixtureMobileModelModifyMomMomentMonitorMonkeyMonsterMonthMoonMoralMoreMorningMosquitoMotherMotionMotorMountainMouseMoveMovieMuchMuffinMuleMultiplyMuscleMuseumMushroomMusicMustMutualMyselfMysteryMythNaiveNameNapkinNarrowNastyNationNatureNearNeckNeedNegativeNeglectNeitherNephewNerveNestNetNetworkNeutralNeverNewsNextNiceNightNobleNoiseNomineeNoodleNormalNorthNoseNotableNoteNothingNoticeNovelNowNuclearNumberNurseNutOakObeyObjectObligeObscureObserveObtainObviousOccurOceanOctoberOdorOffOfferOfficeOftenOilOkayOldOliveOlympicOmitOnceOneOnionOnlineOnlyOpenOperaOpinionOpposeOptionOrangeOrbitOrchardOrderOrdinaryOrganOrientOriginalOrphanOstrichOtherOutdoorOuterOutputOutsideOvalOvenOverOwnOwnerOxygenOysterOzonePactPaddlePagePairPalacePalmPandaPanelPanicPantherPaperParadeParentParkParrotPartyPassPatchPathPatientPatrolPatternPausePavePaymentPeacePeanutPearPeasantPelicanPenPenaltyPencilPeoplePepperPerfectPermitPersonPetPhonePhotoPhrasePhysicalPianoPicnicPicturePiecePigPigeonPillPilotPinkPioneerPipePistolPitchPizzaPlacePlanetPlasticPlatePlayPleasePledgePluckPlugPlungePoemPoetPointPolarPolePolicePondPonyPoolPopularPortionPositionPossiblePostPotatoPotteryPovertyPowderPowerPracticePraisePredictPreferPreparePresentPrettyPreventPricePridePrimaryPrintPriorityPrisonPrivatePrizeProblemProcessProduceProfitProgramProjectPromoteProofPropertyProsperProtectProudProvidePublicPuddingPullPulpPulsePumpkinPunchPupilPuppyPurchasePurityPurposePursePushPutPuzzlePyramidQualityQuantumQuarterQuestionQuickQuitQuizQuoteRabbitRaccoonRaceRackRadarRadioRailRainRaiseRallyRampRanchRandomRangeRapidRareRateRatherRavenRawRazorReadyRealReasonRebelRebuildRecallReceiveRecipeRecordRecycleReduceReflectReformRefuseRegionRegretRegularRejectRelaxReleaseReliefRelyRemainRememberRemindRemoveRenderRenewRentReopenRepairRepeatReplaceReportRequireRescueResembleResistResourceResponseResultRetireRetreatReturnReunionRevealReviewRewardRhythmRibRibbonRiceRichRideRidgeRifleRightRigidRingRiotRippleRiskRitualRivalRiverRoadRoastRobotRobustRocketRomanceRoofRookieRoomRoseRotateRoughRoundRouteRoyalRubberRudeRugRuleRunRunwayRuralSadSaddleSadnessSafeSailSaladSalmonSalonSaltSaluteSameSampleSandSatisfySatoshiSauceSausageSaveSayScaleScanScareScatterSceneSchemeSchoolScienceScissorsScorpionScoutScrapScreenScriptScrubSeaSearchSeasonSeatSecondSecretSectionSecuritySeedSeekSegmentSelectSellSeminarSeniorSenseSentenceSeriesServiceSessionSettleSetupSevenShadowShaftShallowShareShedShellSheriffShieldShiftShineShipShiverShockShoeShootShopShortShoulderShoveShrimpShrugShuffleShySiblingSickSideSiegeSightSignSilentSilkSillySilverSimilarSimpleSinceSingSirenSisterSituateSixSizeSkateSketchSkiSkillSkinSkirtSkullSlabSlamSleepSlenderSliceSlideSlightSlimSloganSlotSlowSlushSmallSmartSmileSmokeSmoothSnackSnakeSnapSniffSnowSoapSoccerSocialSockSodaSoftSolarSoldierSolidSolutionSolveSomeoneSongSoonSorrySortSoulSoundSoupSourceSouthSpaceSpareSpatialSpawnSpeakSpecialSpeedSpellSpendSphereSpiceSpiderSpikeSpinSpiritSplitSpoilSponsorSpoonSportSpotSpraySpreadSpringSpySquareSqueezeSquirrelStableStadiumStaffStageStairsStampStandStartStateStaySteakSteelStemStepStereoStickStillStingStockStomachStoneStoolStoryStoveStrategyStreetStrikeStrongStruggleStudentStuffStumbleStyleSubjectSubmitSubwaySuccessSuchSuddenSufferSugarSuggestSuitSummerSunSunnySunsetSuperSupplySupremeSureSurfaceSurgeSurpriseSurroundSurveySuspectSustainSwallowSwampSwapSwarmSwearSweetSwiftSwimSwingSwitchSwordSymbolSymptomSyrupSystemTableTackleTagTailTalentTalkTankTapeTargetTaskTasteTattooTaxiTeachTeamTellTenTenantTennisTentTermTestTextThankThatThemeThenTheoryThereTheyThingThisThoughtThreeThriveThrowThumbThunderTicketTideTigerTiltTimberTimeTinyTipTiredTissueTitleToastTobaccoTodayToddlerToeTogetherToiletTokenTomatoTomorrowToneTongueTonightToolToothTopTopicToppleTorchTornadoTortoiseTossTotalTouristTowardTowerTownToyTrackTradeTrafficTragicTrainTransferTrapTrashTravelTrayTreatTreeTrendTrialTribeTrickTriggerTrimTripTrophyTroubleTruckTrueTrulyTrumpetTrustTruthTryTubeTuitionTumbleTunaTunnelTurkeyTurnTurtleTwelveTwentyTwiceTwinTwistTwoTypeTypicalUglyUmbrellaUnableUnawareUncleUncoverUnderUndoUnfairUnfoldUnhappyUniformUniqueUnitUniverseUnknownUnlockUntilUnusualUnveilUpdateUpgradeUpholdUponUpperUpsetUrbanUrgeUsageUseUsedUsefulUselessUsualUtilityVacantVacuumVagueValidValleyValveVanVanishVaporVariousVastVaultVehicleVelvetVendorVentureVenueVerbVerifyVersionVeryVesselVeteranViableVibrantViciousVictoryVideoViewVillageVintageViolinVirtualVirusVisaVisitVisualVitalVividVocalVoiceVoidVolcanoVolumeVoteVoyageWageWagonWaitWalkWallWalnutWantWarfareWarmWarriorWashWaspWasteWaterWaveWayWealthWeaponWearWeaselWeatherWebWeddingWeekendWeirdWelcomeWestWetWhaleWhatWheatWheelWhenWhereWhipWhisperWideWidthWifeWildWillWinWindowWineWingWinkWinnerWinterWireWisdomWiseWishWitnessWolfWomanWonderWoodWoolWordWorkWorldWorryWorthWrapWreckWrestleWristWriteWrongYardYearYellowYouYoungYouthZebraZeroZoneZoo\";\n\nlet wordlist: Array = null;\n\n\nfunction loadWords(lang: Wordlist): void {\n if (wordlist != null) { return; }\n wordlist = words.replace(/([A-Z])/g, \" $1\").toLowerCase().substring(1).split(\" \");\n\n // Verify the computed list matches the official list\n /* istanbul ignore if */\n if (Wordlist.check(lang) !== \"0x3c8acc1e7b08d8e76f9fda015ef48dc8c710a73cb7e0f77b2c18a9b5a7adde60\") {\n wordlist = null;\n throw new Error(\"BIP39 Wordlist for en (English) FAILED\");\n }\n}\n\nclass LangEn extends Wordlist {\n constructor() {\n super(\"en\");\n }\n\n getWord(index: number): string {\n loadWords(this);\n return wordlist[index];\n }\n\n getWordIndex(word: string): number {\n loadWords(this);\n return wordlist.indexOf(word);\n }\n}\n\nconst langEn = new LangEn();\nWordlist.register(langEn);\n\nexport { langEn };\n", "\"use strict\";\n\nimport { toUtf8Bytes, toUtf8String } from \"@ethersproject/strings\";\n\nimport { logger, Wordlist } from \"./wordlist\";\n\n\nconst words = \"A/bacoAbdomenAbejaAbiertoAbogadoAbonoAbortoAbrazoAbrirAbueloAbusoAcabarAcademiaAccesoAccio/nAceiteAcelgaAcentoAceptarA/cidoAclararAcne/AcogerAcosoActivoActoActrizActuarAcudirAcuerdoAcusarAdictoAdmitirAdoptarAdornoAduanaAdultoAe/reoAfectarAficio/nAfinarAfirmarA/gilAgitarAgoni/aAgostoAgotarAgregarAgrioAguaAgudoA/guilaAgujaAhogoAhorroAireAislarAjedrezAjenoAjusteAlacra/nAlambreAlarmaAlbaA/lbumAlcaldeAldeaAlegreAlejarAlertaAletaAlfilerAlgaAlgodo/nAliadoAlientoAlivioAlmaAlmejaAlmi/barAltarAltezaAltivoAltoAlturaAlumnoAlzarAmableAmanteAmapolaAmargoAmasarA/mbarA/mbitoAmenoAmigoAmistadAmorAmparoAmplioAnchoAncianoAnclaAndarAnde/nAnemiaA/nguloAnilloA/nimoAni/sAnotarAntenaAntiguoAntojoAnualAnularAnuncioA~adirA~ejoA~oApagarAparatoApetitoApioAplicarApodoAporteApoyoAprenderAprobarApuestaApuroAradoAra~aArarA/rbitroA/rbolArbustoArchivoArcoArderArdillaArduoA/reaA/ridoAriesArmoni/aArne/sAromaArpaArpo/nArregloArrozArrugaArteArtistaAsaAsadoAsaltoAscensoAsegurarAseoAsesorAsientoAsiloAsistirAsnoAsombroA/speroAstillaAstroAstutoAsumirAsuntoAtajoAtaqueAtarAtentoAteoA/ticoAtletaA/tomoAtraerAtrozAtu/nAudazAudioAugeAulaAumentoAusenteAutorAvalAvanceAvaroAveAvellanaAvenaAvestruzAvio/nAvisoAyerAyudaAyunoAzafra/nAzarAzoteAzu/carAzufreAzulBabaBaborBacheBahi/aBaileBajarBalanzaBalco/nBaldeBambu/BancoBandaBa~oBarbaBarcoBarnizBarroBa/sculaBasto/nBasuraBatallaBateri/aBatirBatutaBau/lBazarBebe/BebidaBelloBesarBesoBestiaBichoBienBingoBlancoBloqueBlusaBoaBobinaBoboBocaBocinaBodaBodegaBoinaBolaBoleroBolsaBombaBondadBonitoBonoBonsa/iBordeBorrarBosqueBoteBoti/nBo/vedaBozalBravoBrazoBrechaBreveBrilloBrincoBrisaBrocaBromaBronceBroteBrujaBruscoBrutoBuceoBucleBuenoBueyBufandaBufo/nBu/hoBuitreBultoBurbujaBurlaBurroBuscarButacaBuzo/nCaballoCabezaCabinaCabraCacaoCada/verCadenaCaerCafe/Cai/daCaima/nCajaCajo/nCalCalamarCalcioCaldoCalidadCalleCalmaCalorCalvoCamaCambioCamelloCaminoCampoCa/ncerCandilCanelaCanguroCanicaCantoCa~aCa~o/nCaobaCaosCapazCapita/nCapoteCaptarCapuchaCaraCarbo/nCa/rcelCaretaCargaCari~oCarneCarpetaCarroCartaCasaCascoCaseroCaspaCastorCatorceCatreCaudalCausaCazoCebollaCederCedroCeldaCe/lebreCelosoCe/lulaCementoCenizaCentroCercaCerdoCerezaCeroCerrarCertezaCe/spedCetroChacalChalecoChampu/ChanclaChapaCharlaChicoChisteChivoChoqueChozaChuletaChuparCiclo/nCiegoCieloCienCiertoCifraCigarroCimaCincoCineCintaCipre/sCircoCiruelaCisneCitaCiudadClamorClanClaroClaseClaveClienteClimaCli/nicaCobreCoccio/nCochinoCocinaCocoCo/digoCodoCofreCogerCoheteCoji/nCojoColaColchaColegioColgarColinaCollarColmoColumnaCombateComerComidaCo/modoCompraCondeConejoCongaConocerConsejoContarCopaCopiaCorazo/nCorbataCorchoCordo/nCoronaCorrerCoserCosmosCostaCra/neoCra/terCrearCrecerCrei/doCremaCri/aCrimenCriptaCrisisCromoCro/nicaCroquetaCrudoCruzCuadroCuartoCuatroCuboCubrirCucharaCuelloCuentoCuerdaCuestaCuevaCuidarCulebraCulpaCultoCumbreCumplirCunaCunetaCuotaCupo/nCu/pulaCurarCuriosoCursoCurvaCutisDamaDanzaDarDardoDa/tilDeberDe/bilDe/cadaDecirDedoDefensaDefinirDejarDelfi/nDelgadoDelitoDemoraDensoDentalDeporteDerechoDerrotaDesayunoDeseoDesfileDesnudoDestinoDesvi/oDetalleDetenerDeudaDi/aDiabloDiademaDiamanteDianaDiarioDibujoDictarDienteDietaDiezDifi/cilDignoDilemaDiluirDineroDirectoDirigirDiscoDise~oDisfrazDivaDivinoDobleDoceDolorDomingoDonDonarDoradoDormirDorsoDosDosisDrago/nDrogaDuchaDudaDueloDue~oDulceDu/oDuqueDurarDurezaDuroE/banoEbrioEcharEcoEcuadorEdadEdicio/nEdificioEditorEducarEfectoEficazEjeEjemploElefanteElegirElementoElevarElipseE/liteElixirElogioEludirEmbudoEmitirEmocio/nEmpateEmpe~oEmpleoEmpresaEnanoEncargoEnchufeEnci/aEnemigoEneroEnfadoEnfermoEnga~oEnigmaEnlaceEnormeEnredoEnsayoEnse~arEnteroEntrarEnvaseEnvi/oE/pocaEquipoErizoEscalaEscenaEscolarEscribirEscudoEsenciaEsferaEsfuerzoEspadaEspejoEspi/aEsposaEspumaEsqui/EstarEsteEstiloEstufaEtapaEternoE/ticaEtniaEvadirEvaluarEventoEvitarExactoExamenExcesoExcusaExentoExigirExilioExistirE/xitoExpertoExplicarExponerExtremoFa/bricaFa/bulaFachadaFa/cilFactorFaenaFajaFaldaFalloFalsoFaltarFamaFamiliaFamosoFarao/nFarmaciaFarolFarsaFaseFatigaFaunaFavorFaxFebreroFechaFelizFeoFeriaFerozFe/rtilFervorFesti/nFiableFianzaFiarFibraFiccio/nFichaFideoFiebreFielFieraFiestaFiguraFijarFijoFilaFileteFilialFiltroFinFincaFingirFinitoFirmaFlacoFlautaFlechaFlorFlotaFluirFlujoFlu/orFobiaFocaFogataFogo/nFolioFolletoFondoFormaForroFortunaForzarFosaFotoFracasoFra/gilFranjaFraseFraudeFrei/rFrenoFresaFri/oFritoFrutaFuegoFuenteFuerzaFugaFumarFuncio/nFundaFurgo/nFuriaFusilFu/tbolFuturoGacelaGafasGaitaGajoGalaGaleri/aGalloGambaGanarGanchoGangaGansoGarajeGarzaGasolinaGastarGatoGavila/nGemeloGemirGenGe/neroGenioGenteGeranioGerenteGermenGestoGiganteGimnasioGirarGiroGlaciarGloboGloriaGolGolfoGolosoGolpeGomaGordoGorilaGorraGotaGoteoGozarGradaGra/ficoGranoGrasaGratisGraveGrietaGrilloGripeGrisGritoGrosorGru/aGruesoGrumoGrupoGuanteGuapoGuardiaGuerraGui/aGui~oGuionGuisoGuitarraGusanoGustarHaberHa/bilHablarHacerHachaHadaHallarHamacaHarinaHazHaza~aHebillaHebraHechoHeladoHelioHembraHerirHermanoHe/roeHervirHieloHierroHi/gadoHigieneHijoHimnoHistoriaHocicoHogarHogueraHojaHombreHongoHonorHonraHoraHormigaHornoHostilHoyoHuecoHuelgaHuertaHuesoHuevoHuidaHuirHumanoHu/medoHumildeHumoHundirHuraca/nHurtoIconoIdealIdiomaI/doloIglesiaIglu/IgualIlegalIlusio/nImagenIma/nImitarImparImperioImponerImpulsoIncapazI/ndiceInerteInfielInformeIngenioInicioInmensoInmuneInnatoInsectoInstanteIntere/sI/ntimoIntuirInu/tilInviernoIraIrisIroni/aIslaIsloteJabali/Jabo/nJamo/nJarabeJardi/nJarraJaulaJazmi/nJefeJeringaJineteJornadaJorobaJovenJoyaJuergaJuevesJuezJugadorJugoJugueteJuicioJuncoJunglaJunioJuntarJu/piterJurarJustoJuvenilJuzgarKiloKoalaLabioLacioLacraLadoLadro/nLagartoLa/grimaLagunaLaicoLamerLa/minaLa/mparaLanaLanchaLangostaLanzaLa/pizLargoLarvaLa/stimaLataLa/texLatirLaurelLavarLazoLealLeccio/nLecheLectorLeerLegio/nLegumbreLejanoLenguaLentoLe~aLeo/nLeopardoLesio/nLetalLetraLeveLeyendaLibertadLibroLicorLi/derLidiarLienzoLigaLigeroLimaLi/miteLimo/nLimpioLinceLindoLi/neaLingoteLinoLinternaLi/quidoLisoListaLiteraLitioLitroLlagaLlamaLlantoLlaveLlegarLlenarLlevarLlorarLloverLluviaLoboLocio/nLocoLocuraLo/gicaLogroLombrizLomoLonjaLoteLuchaLucirLugarLujoLunaLunesLupaLustroLutoLuzMacetaMachoMaderaMadreMaduroMaestroMafiaMagiaMagoMai/zMaldadMaletaMallaMaloMama/MamboMamutMancoMandoManejarMangaManiqui/ManjarManoMansoMantaMa~anaMapaMa/quinaMarMarcoMareaMarfilMargenMaridoMa/rmolMarro/nMartesMarzoMasaMa/scaraMasivoMatarMateriaMatizMatrizMa/ximoMayorMazorcaMechaMedallaMedioMe/dulaMejillaMejorMelenaMelo/nMemoriaMenorMensajeMenteMenu/MercadoMerengueMe/ritoMesMeso/nMetaMeterMe/todoMetroMezclaMiedoMielMiembroMigaMilMilagroMilitarMillo/nMimoMinaMineroMi/nimoMinutoMiopeMirarMisaMiseriaMisilMismoMitadMitoMochilaMocio/nModaModeloMohoMojarMoldeMolerMolinoMomentoMomiaMonarcaMonedaMonjaMontoMo~oMoradaMorderMorenoMorirMorroMorsaMortalMoscaMostrarMotivoMoverMo/vilMozoMuchoMudarMuebleMuelaMuerteMuestraMugreMujerMulaMuletaMultaMundoMu~ecaMuralMuroMu/sculoMuseoMusgoMu/sicaMusloNa/carNacio/nNadarNaipeNaranjaNarizNarrarNasalNatalNativoNaturalNa/useaNavalNaveNavidadNecioNe/ctarNegarNegocioNegroNeo/nNervioNetoNeutroNevarNeveraNichoNidoNieblaNietoNi~ezNi~oNi/tidoNivelNoblezaNocheNo/minaNoriaNormaNorteNotaNoticiaNovatoNovelaNovioNubeNucaNu/cleoNudilloNudoNueraNueveNuezNuloNu/meroNutriaOasisObesoObispoObjetoObraObreroObservarObtenerObvioOcaOcasoOce/anoOchentaOchoOcioOcreOctavoOctubreOcultoOcuparOcurrirOdiarOdioOdiseaOesteOfensaOfertaOficioOfrecerOgroOi/doOi/rOjoOlaOleadaOlfatoOlivoOllaOlmoOlorOlvidoOmbligoOndaOnzaOpacoOpcio/nO/peraOpinarOponerOptarO/pticaOpuestoOracio/nOradorOralO/rbitaOrcaOrdenOrejaO/rganoOrgi/aOrgulloOrienteOrigenOrillaOroOrquestaOrugaOsadi/aOscuroOseznoOsoOstraOto~oOtroOvejaO/vuloO/xidoOxi/genoOyenteOzonoPactoPadrePaellaPa/ginaPagoPai/sPa/jaroPalabraPalcoPaletaPa/lidoPalmaPalomaPalparPanPanalPa/nicoPanteraPa~ueloPapa/PapelPapillaPaquetePararParcelaParedParirParoPa/rpadoParquePa/rrafoPartePasarPaseoPasio/nPasoPastaPataPatioPatriaPausaPautaPavoPayasoPeato/nPecadoPeceraPechoPedalPedirPegarPeinePelarPelda~oPeleaPeligroPellejoPeloPelucaPenaPensarPe~o/nPeo/nPeorPepinoPeque~oPeraPerchaPerderPerezaPerfilPericoPerlaPermisoPerroPersonaPesaPescaPe/simoPesta~aPe/taloPetro/leoPezPezu~aPicarPicho/nPiePiedraPiernaPiezaPijamaPilarPilotoPimientaPinoPintorPinzaPi~aPiojoPipaPirataPisarPiscinaPisoPistaPito/nPizcaPlacaPlanPlataPlayaPlazaPleitoPlenoPlomoPlumaPluralPobrePocoPoderPodioPoemaPoesi/aPoetaPolenPolici/aPolloPolvoPomadaPomeloPomoPompaPonerPorcio/nPortalPosadaPoseerPosiblePostePotenciaPotroPozoPradoPrecozPreguntaPremioPrensaPresoPrevioPrimoPri/ncipePrisio/nPrivarProaProbarProcesoProductoProezaProfesorProgramaProlePromesaProntoPropioPro/ximoPruebaPu/blicoPucheroPudorPuebloPuertaPuestoPulgaPulirPulmo/nPulpoPulsoPumaPuntoPu~alPu~oPupaPupilaPure/QuedarQuejaQuemarQuererQuesoQuietoQui/micaQuinceQuitarRa/banoRabiaRaboRacio/nRadicalRai/zRamaRampaRanchoRangoRapazRa/pidoRaptoRasgoRaspaRatoRayoRazaRazo/nReaccio/nRealidadReba~oReboteRecaerRecetaRechazoRecogerRecreoRectoRecursoRedRedondoReducirReflejoReformaRefra/nRefugioRegaloRegirReglaRegresoRehe/nReinoRei/rRejaRelatoRelevoRelieveRellenoRelojRemarRemedioRemoRencorRendirRentaRepartoRepetirReposoReptilResRescateResinaRespetoRestoResumenRetiroRetornoRetratoReunirReve/sRevistaReyRezarRicoRiegoRiendaRiesgoRifaRi/gidoRigorRinco/nRi~o/nRi/oRiquezaRisaRitmoRitoRizoRobleRoceRociarRodarRodeoRodillaRoerRojizoRojoRomeroRomperRonRoncoRondaRopaRoperoRosaRoscaRostroRotarRubi/RuborRudoRuedaRugirRuidoRuinaRuletaRuloRumboRumorRupturaRutaRutinaSa/badoSaberSabioSableSacarSagazSagradoSalaSaldoSaleroSalirSalmo/nSalo/nSalsaSaltoSaludSalvarSambaSancio/nSandi/aSanearSangreSanidadSanoSantoSapoSaqueSardinaSarte/nSastreSata/nSaunaSaxofo/nSeccio/nSecoSecretoSectaSedSeguirSeisSelloSelvaSemanaSemillaSendaSensorSe~alSe~orSepararSepiaSequi/aSerSerieSermo/nServirSesentaSesio/nSetaSetentaSeveroSexoSextoSidraSiestaSieteSigloSignoSi/labaSilbarSilencioSillaSi/mboloSimioSirenaSistemaSitioSituarSobreSocioSodioSolSolapaSoldadoSoledadSo/lidoSoltarSolucio/nSombraSondeoSonidoSonoroSonrisaSopaSoplarSoporteSordoSorpresaSorteoSoste/nSo/tanoSuaveSubirSucesoSudorSuegraSueloSue~oSuerteSufrirSujetoSulta/nSumarSuperarSuplirSuponerSupremoSurSurcoSure~oSurgirSustoSutilTabacoTabiqueTablaTabu/TacoTactoTajoTalarTalcoTalentoTallaTalo/nTama~oTamborTangoTanqueTapaTapeteTapiaTapo/nTaquillaTardeTareaTarifaTarjetaTarotTarroTartaTatuajeTauroTazaTazo/nTeatroTechoTeclaTe/cnicaTejadoTejerTejidoTelaTele/fonoTemaTemorTemploTenazTenderTenerTenisTensoTeori/aTerapiaTercoTe/rminoTernuraTerrorTesisTesoroTestigoTeteraTextoTezTibioTiburo/nTiempoTiendaTierraTiesoTigreTijeraTildeTimbreTi/midoTimoTintaTi/oTi/picoTipoTiraTiro/nTita/nTi/tereTi/tuloTizaToallaTobilloTocarTocinoTodoTogaToldoTomarTonoTontoToparTopeToqueTo/raxToreroTormentaTorneoToroTorpedoTorreTorsoTortugaTosToscoToserTo/xicoTrabajoTractorTraerTra/ficoTragoTrajeTramoTranceTratoTraumaTrazarTre/bolTreguaTreintaTrenTreparTresTribuTrigoTripaTristeTriunfoTrofeoTrompaTroncoTropaTroteTrozoTrucoTruenoTrufaTuberi/aTuboTuertoTumbaTumorTu/nelTu/nicaTurbinaTurismoTurnoTutorUbicarU/lceraUmbralUnidadUnirUniversoUnoUntarU~aUrbanoUrbeUrgenteUrnaUsarUsuarioU/tilUtopi/aUvaVacaVaci/oVacunaVagarVagoVainaVajillaValeVa/lidoValleValorVa/lvulaVampiroVaraVariarVaro/nVasoVecinoVectorVehi/culoVeinteVejezVelaVeleroVelozVenaVencerVendaVenenoVengarVenirVentaVenusVerVeranoVerboVerdeVeredaVerjaVersoVerterVi/aViajeVibrarVicioVi/ctimaVidaVi/deoVidrioViejoViernesVigorVilVillaVinagreVinoVi~edoVioli/nViralVirgoVirtudVisorVi/speraVistaVitaminaViudoVivazViveroVivirVivoVolca/nVolumenVolverVorazVotarVotoVozVueloVulgarYacerYateYeguaYemaYernoYesoYodoYogaYogurZafiroZanjaZapatoZarzaZonaZorroZumoZurdo\";\n\nconst lookup: { [word: string]: number } = {};\nlet wordlist: Array = null;\n\nfunction dropDiacritic(word: string): string {\n logger.checkNormalize();\n return toUtf8String(Array.prototype.filter.call(toUtf8Bytes(word.normalize(\"NFD\").toLowerCase()), (c: number) => {\n return ((c >= 65 && c <= 90) || (c >= 97 && c <= 123));\n }));\n}\n\nfunction expand(word: string): string {\n const output: Array = [];\n Array.prototype.forEach.call(toUtf8Bytes(word), (c: number) => {\n // Acute accent\n if (c === 47) {\n output.push(204);\n output.push(129);\n // n-tilde\n } else if (c === 126) {\n output.push(110);\n output.push(204);\n output.push(131);\n } else {\n output.push(c);\n }\n });\n\n return toUtf8String(output);\n}\n\nfunction loadWords(lang: Wordlist): void {\n if (wordlist != null) { return; }\n wordlist = words.replace(/([A-Z])/g, \" $1\").toLowerCase().substring(1).split(\" \").map((w) => expand(w));\n wordlist.forEach((word, index) => {\n lookup[dropDiacritic(word)] = index;\n });\n\n // Verify the computed list matches the official list\n /* istanbul ignore if */\n if (Wordlist.check(lang) !== \"0xf74fb7092aeacdfbf8959557de22098da512207fb9f109cb526994938cf40300\") {\n wordlist = null;\n throw new Error(\"BIP39 Wordlist for es (Spanish) FAILED\");\n }\n}\n\nclass LangEs extends Wordlist {\n constructor() {\n super(\"es\");\n }\n\n getWord(index: number): string {\n loadWords(this);\n return wordlist[index];\n }\n\n getWordIndex(word: string): number {\n loadWords(this);\n return lookup[dropDiacritic(word)];\n }\n}\n\nconst langEs = new LangEs();\nWordlist.register(langEs);\n\nexport { langEs };\n", "\"use strict\";\n\nimport { toUtf8Bytes, toUtf8String } from \"@ethersproject/strings\";\n\nimport { logger, Wordlist } from \"./wordlist\";\n\n\nconst words = \"AbaisserAbandonAbdiquerAbeilleAbolirAborderAboutirAboyerAbrasifAbreuverAbriterAbrogerAbruptAbsenceAbsoluAbsurdeAbusifAbyssalAcade/mieAcajouAcarienAccablerAccepterAcclamerAccoladeAccrocheAccuserAcerbeAchatAcheterAcidulerAcierAcompteAcque/rirAcronymeActeurActifActuelAdepteAde/quatAdhe/sifAdjectifAdjugerAdmettreAdmirerAdopterAdorerAdoucirAdresseAdroitAdulteAdverbeAe/rerAe/ronefAffaireAffecterAfficheAffreuxAffublerAgacerAgencerAgileAgiterAgraferAgre/ableAgrumeAiderAiguilleAilierAimableAisanceAjouterAjusterAlarmerAlchimieAlerteAlge-breAlgueAlie/nerAlimentAlle/gerAlliageAllouerAllumerAlourdirAlpagaAltesseAlve/oleAmateurAmbiguAmbreAme/nagerAmertumeAmidonAmiralAmorcerAmourAmovibleAmphibieAmpleurAmusantAnalyseAnaphoreAnarchieAnatomieAncienAne/antirAngleAngoisseAnguleuxAnimalAnnexerAnnonceAnnuelAnodinAnomalieAnonymeAnormalAntenneAntidoteAnxieuxApaiserApe/ritifAplanirApologieAppareilAppelerApporterAppuyerAquariumAqueducArbitreArbusteArdeurArdoiseArgentArlequinArmatureArmementArmoireArmureArpenterArracherArriverArroserArsenicArte/rielArticleAspectAsphalteAspirerAssautAsservirAssietteAssocierAssurerAsticotAstreAstuceAtelierAtomeAtriumAtroceAttaqueAttentifAttirerAttraperAubaineAubergeAudaceAudibleAugurerAuroreAutomneAutrucheAvalerAvancerAvariceAvenirAverseAveugleAviateurAvideAvionAviserAvoineAvouerAvrilAxialAxiomeBadgeBafouerBagageBaguetteBaignadeBalancerBalconBaleineBalisageBambinBancaireBandageBanlieueBannie-reBanquierBarbierBarilBaronBarqueBarrageBassinBastionBatailleBateauBatterieBaudrierBavarderBeletteBe/lierBeloteBe/ne/ficeBerceauBergerBerlineBermudaBesaceBesogneBe/tailBeurreBiberonBicycleBiduleBijouBilanBilingueBillardBinaireBiologieBiopsieBiotypeBiscuitBisonBistouriBitumeBizarreBlafardBlagueBlanchirBlessantBlinderBlondBloquerBlousonBobardBobineBoireBoiserBolideBonbonBondirBonheurBonifierBonusBordureBorneBotteBoucleBoueuxBougieBoulonBouquinBourseBoussoleBoutiqueBoxeurBrancheBrasierBraveBrebisBre-cheBreuvageBricolerBrigadeBrillantBriocheBriqueBrochureBroderBronzerBrousseBroyeurBrumeBrusqueBrutalBruyantBuffleBuissonBulletinBureauBurinBustierButinerButoirBuvableBuvetteCabanonCabineCachetteCadeauCadreCafe/ineCaillouCaissonCalculerCalepinCalibreCalmerCalomnieCalvaireCamaradeCame/raCamionCampagneCanalCanetonCanonCantineCanularCapableCaporalCapriceCapsuleCapterCapucheCarabineCarboneCaresserCaribouCarnageCarotteCarreauCartonCascadeCasierCasqueCassureCauserCautionCavalierCaverneCaviarCe/dilleCeintureCe/lesteCelluleCendrierCensurerCentralCercleCe/re/bralCeriseCernerCerveauCesserChagrinChaiseChaleurChambreChanceChapitreCharbonChasseurChatonChaussonChavirerChemiseChenilleChe/quierChercherChevalChienChiffreChignonChime-reChiotChlorureChocolatChoisirChoseChouetteChromeChuteCigareCigogneCimenterCine/maCintrerCirculerCirerCirqueCiterneCitoyenCitronCivilClaironClameurClaquerClasseClavierClientClignerClimatClivageClocheClonageCloporteCobaltCobraCocasseCocotierCoderCodifierCoffreCognerCohe/sionCoifferCoincerCole-reColibriCollineColmaterColonelCombatCome/dieCommandeCompactConcertConduireConfierCongelerConnoterConsonneContactConvexeCopainCopieCorailCorbeauCordageCornicheCorpusCorrectCorte-geCosmiqueCostumeCotonCoudeCoupureCourageCouteauCouvrirCoyoteCrabeCrainteCravateCrayonCre/atureCre/diterCre/meuxCreuserCrevetteCriblerCrierCristalCrite-reCroireCroquerCrotaleCrucialCruelCrypterCubiqueCueillirCuille-reCuisineCuivreCulminerCultiverCumulerCupideCuratifCurseurCyanureCycleCylindreCyniqueDaignerDamierDangerDanseurDauphinDe/battreDe/biterDe/borderDe/briderDe/butantDe/calerDe/cembreDe/chirerDe/ciderDe/clarerDe/corerDe/crireDe/cuplerDe/daleDe/ductifDe/esseDe/fensifDe/filerDe/frayerDe/gagerDe/givrerDe/glutirDe/graferDe/jeunerDe/liceDe/logerDemanderDemeurerDe/molirDe/nicherDe/nouerDentelleDe/nuderDe/partDe/penserDe/phaserDe/placerDe/poserDe/rangerDe/roberDe/sastreDescenteDe/sertDe/signerDe/sobe/irDessinerDestrierDe/tacherDe/testerDe/tourerDe/tresseDevancerDevenirDevinerDevoirDiableDialogueDiamantDicterDiffe/rerDige/rerDigitalDigneDiluerDimancheDiminuerDioxydeDirectifDirigerDiscuterDisposerDissiperDistanceDivertirDiviserDocileDocteurDogmeDoigtDomaineDomicileDompterDonateurDonjonDonnerDopamineDortoirDorureDosageDoseurDossierDotationDouanierDoubleDouceurDouterDoyenDragonDraperDresserDribblerDroitureDuperieDuplexeDurableDurcirDynastieE/blouirE/carterE/charpeE/chelleE/clairerE/clipseE/cloreE/cluseE/coleE/conomieE/corceE/couterE/craserE/cre/merE/crivainE/crouE/cumeE/cureuilE/difierE/duquerEffacerEffectifEffigieEffortEffrayerEffusionE/galiserE/garerE/jecterE/laborerE/largirE/lectronE/le/gantE/le/phantE/le-veE/ligibleE/litismeE/logeE/luciderE/luderEmballerEmbellirEmbryonE/meraudeE/missionEmmenerE/motionE/mouvoirEmpereurEmployerEmporterEmpriseE/mulsionEncadrerEnche-reEnclaveEncocheEndiguerEndosserEndroitEnduireE/nergieEnfanceEnfermerEnfouirEngagerEnginEngloberE/nigmeEnjamberEnjeuEnleverEnnemiEnnuyeuxEnrichirEnrobageEnseigneEntasserEntendreEntierEntourerEntraverE/nume/rerEnvahirEnviableEnvoyerEnzymeE/olienE/paissirE/pargneE/patantE/pauleE/picerieE/pide/mieE/pierE/pilogueE/pineE/pisodeE/pitapheE/poqueE/preuveE/prouverE/puisantE/querreE/quipeE/rigerE/rosionErreurE/ruptionEscalierEspadonEspe-ceEspie-gleEspoirEspritEsquiverEssayerEssenceEssieuEssorerEstimeEstomacEstradeE/tage-reE/talerE/tancheE/tatiqueE/teindreE/tendoirE/ternelE/thanolE/thiqueEthnieE/tirerE/tofferE/toileE/tonnantE/tourdirE/trangeE/troitE/tudeEuphorieE/valuerE/vasionE/ventailE/videnceE/viterE/volutifE/voquerExactExage/rerExaucerExcellerExcitantExclusifExcuseExe/cuterExempleExercerExhalerExhorterExigenceExilerExisterExotiqueExpe/dierExplorerExposerExprimerExquisExtensifExtraireExulterFableFabuleuxFacetteFacileFactureFaiblirFalaiseFameuxFamilleFarceurFarfeluFarineFaroucheFascinerFatalFatigueFauconFautifFaveurFavoriFe/brileFe/conderFe/de/rerFe/linFemmeFe/murFendoirFe/odalFermerFe/roceFerveurFestivalFeuilleFeutreFe/vrierFiascoFicelerFictifFide-leFigureFilatureFiletageFilie-reFilleulFilmerFilouFiltrerFinancerFinirFioleFirmeFissureFixerFlairerFlammeFlasqueFlatteurFle/auFle-cheFleurFlexionFloconFloreFluctuerFluideFluvialFolieFonderieFongibleFontaineForcerForgeronFormulerFortuneFossileFoudreFouge-reFouillerFoulureFourmiFragileFraiseFranchirFrapperFrayeurFre/gateFreinerFrelonFre/mirFre/ne/sieFre-reFriableFrictionFrissonFrivoleFroidFromageFrontalFrotterFruitFugitifFuiteFureurFurieuxFurtifFusionFuturGagnerGalaxieGalerieGambaderGarantirGardienGarnirGarrigueGazelleGazonGe/antGe/latineGe/luleGendarmeGe/ne/ralGe/nieGenouGentilGe/ologieGe/ome-treGe/raniumGermeGestuelGeyserGibierGiclerGirafeGivreGlaceGlaiveGlisserGlobeGloireGlorieuxGolfeurGommeGonflerGorgeGorilleGoudronGouffreGoulotGoupilleGourmandGoutteGraduelGraffitiGraineGrandGrappinGratuitGravirGrenatGriffureGrillerGrimperGrognerGronderGrotteGroupeGrugerGrutierGruye-reGue/pardGuerrierGuideGuimauveGuitareGustatifGymnasteGyrostatHabitudeHachoirHalteHameauHangarHannetonHaricotHarmonieHarponHasardHe/liumHe/matomeHerbeHe/rissonHermineHe/ronHe/siterHeureuxHibernerHibouHilarantHistoireHiverHomardHommageHomoge-neHonneurHonorerHonteuxHordeHorizonHorlogeHormoneHorribleHouleuxHousseHublotHuileuxHumainHumbleHumideHumourHurlerHydromelHygie-neHymneHypnoseIdylleIgnorerIguaneIlliciteIllusionImageImbiberImiterImmenseImmobileImmuableImpactImpe/rialImplorerImposerImprimerImputerIncarnerIncendieIncidentInclinerIncoloreIndexerIndiceInductifIne/ditIneptieInexactInfiniInfligerInformerInfusionInge/rerInhalerInhiberInjecterInjureInnocentInoculerInonderInscrireInsecteInsigneInsoliteInspirerInstinctInsulterIntactIntenseIntimeIntrigueIntuitifInutileInvasionInventerInviterInvoquerIroniqueIrradierIrre/elIrriterIsolerIvoireIvresseJaguarJaillirJambeJanvierJardinJaugerJauneJavelotJetableJetonJeudiJeunesseJoindreJoncherJonglerJoueurJouissifJournalJovialJoyauJoyeuxJubilerJugementJuniorJuponJuristeJusticeJuteuxJuve/nileKayakKimonoKiosqueLabelLabialLabourerLace/rerLactoseLaguneLaineLaisserLaitierLambeauLamelleLampeLanceurLangageLanterneLapinLargeurLarmeLaurierLavaboLavoirLectureLe/galLe/gerLe/gumeLessiveLettreLevierLexiqueLe/zardLiasseLibe/rerLibreLicenceLicorneLie-geLie-vreLigatureLigoterLigueLimerLimiteLimonadeLimpideLine/aireLingotLionceauLiquideLisie-reListerLithiumLitigeLittoralLivreurLogiqueLointainLoisirLombricLoterieLouerLourdLoutreLouveLoyalLubieLucideLucratifLueurLugubreLuisantLumie-reLunaireLundiLuronLutterLuxueuxMachineMagasinMagentaMagiqueMaigreMaillonMaintienMairieMaisonMajorerMalaxerMale/ficeMalheurMaliceMalletteMammouthMandaterManiableManquantManteauManuelMarathonMarbreMarchandMardiMaritimeMarqueurMarronMartelerMascotteMassifMate/rielMatie-reMatraqueMaudireMaussadeMauveMaximalMe/chantMe/connuMe/dailleMe/decinMe/diterMe/duseMeilleurMe/langeMe/lodieMembreMe/moireMenacerMenerMenhirMensongeMentorMercrediMe/riteMerleMessagerMesureMe/talMe/te/oreMe/thodeMe/tierMeubleMiaulerMicrobeMietteMignonMigrerMilieuMillionMimiqueMinceMine/ralMinimalMinorerMinuteMiracleMiroiterMissileMixteMobileModerneMoelleuxMondialMoniteurMonnaieMonotoneMonstreMontagneMonumentMoqueurMorceauMorsureMortierMoteurMotifMoucheMoufleMoulinMoussonMoutonMouvantMultipleMunitionMurailleMure-neMurmureMuscleMuse/umMusicienMutationMuterMutuelMyriadeMyrtilleMyste-reMythiqueNageurNappeNarquoisNarrerNatationNationNatureNaufrageNautiqueNavireNe/buleuxNectarNe/fasteNe/gationNe/gligerNe/gocierNeigeNerveuxNettoyerNeuroneNeutronNeveuNicheNickelNitrateNiveauNobleNocifNocturneNoirceurNoisetteNomadeNombreuxNommerNormatifNotableNotifierNotoireNourrirNouveauNovateurNovembreNoviceNuageNuancerNuireNuisibleNume/roNuptialNuqueNutritifObe/irObjectifObligerObscurObserverObstacleObtenirObturerOccasionOccuperOce/anOctobreOctroyerOctuplerOculaireOdeurOdorantOffenserOfficierOffrirOgiveOiseauOisillonOlfactifOlivierOmbrageOmettreOnctueuxOndulerOne/reuxOniriqueOpaleOpaqueOpe/rerOpinionOpportunOpprimerOpterOptiqueOrageuxOrangeOrbiteOrdonnerOreilleOrganeOrgueilOrificeOrnementOrqueOrtieOscillerOsmoseOssatureOtarieOuraganOursonOutilOutragerOuvrageOvationOxydeOxyge-neOzonePaisiblePalacePalmare-sPalourdePalperPanachePandaPangolinPaniquerPanneauPanoramaPantalonPapayePapierPapoterPapyrusParadoxeParcelleParesseParfumerParlerParoleParrainParsemerPartagerParureParvenirPassionPaste-quePaternelPatiencePatronPavillonPavoiserPayerPaysagePeignePeintrePelagePe/licanPellePelousePeluchePendulePe/ne/trerPe/niblePensifPe/nuriePe/pitePe/plumPerdrixPerforerPe/riodePermuterPerplexePersilPertePeserPe/talePetitPe/trirPeuplePharaonPhobiePhoquePhotonPhrasePhysiquePianoPicturalPie-cePierrePieuvrePilotePinceauPipettePiquerPiroguePiscinePistonPivoterPixelPizzaPlacardPlafondPlaisirPlanerPlaquePlastronPlateauPleurerPlexusPliagePlombPlongerPluiePlumagePochettePoe/siePoe-tePointePoirierPoissonPoivrePolairePolicierPollenPolygonePommadePompierPonctuelPonde/rerPoneyPortiquePositionPosse/derPosturePotagerPoteauPotionPoucePoulainPoumonPourprePoussinPouvoirPrairiePratiquePre/cieuxPre/direPre/fixePre/ludePre/nomPre/sencePre/textePre/voirPrimitifPrincePrisonPriverProble-meProce/derProdigeProfondProgre-sProieProjeterProloguePromenerPropreProspe-reProte/gerProuesseProverbePrudencePruneauPsychosePublicPuceronPuiserPulpePulsarPunaisePunitifPupitrePurifierPuzzlePyramideQuasarQuerelleQuestionQuie/tudeQuitterQuotientRacineRaconterRadieuxRagondinRaideurRaisinRalentirRallongeRamasserRapideRasageRatisserRavagerRavinRayonnerRe/actifRe/agirRe/aliserRe/animerRecevoirRe/citerRe/clamerRe/colterRecruterReculerRecyclerRe/digerRedouterRefaireRe/flexeRe/formerRefrainRefugeRe/galienRe/gionRe/glageRe/gulierRe/ite/rerRejeterRejouerRelatifReleverReliefRemarqueReme-deRemiseRemonterRemplirRemuerRenardRenfortReniflerRenoncerRentrerRenvoiReplierReporterRepriseReptileRequinRe/serveRe/sineuxRe/soudreRespectResterRe/sultatRe/tablirRetenirRe/ticuleRetomberRetracerRe/unionRe/ussirRevancheRevivreRe/volteRe/vulsifRichesseRideauRieurRigideRigolerRincerRiposterRisibleRisqueRituelRivalRivie-reRocheuxRomanceRompreRonceRondinRoseauRosierRotatifRotorRotuleRougeRouilleRouleauRoutineRoyaumeRubanRubisRucheRuelleRugueuxRuinerRuisseauRuserRustiqueRythmeSablerSaboterSabreSacocheSafariSagesseSaisirSaladeSaliveSalonSaluerSamediSanctionSanglierSarcasmeSardineSaturerSaugrenuSaumonSauterSauvageSavantSavonnerScalpelScandaleSce/le/ratSce/narioSceptreSche/maScienceScinderScoreScrutinSculpterSe/anceSe/cableSe/cherSecouerSe/cre/terSe/datifSe/duireSeigneurSe/jourSe/lectifSemaineSemblerSemenceSe/minalSe/nateurSensibleSentenceSe/parerSe/quenceSereinSergentSe/rieuxSerrureSe/rumServiceSe/sameSe/virSevrageSextupleSide/ralSie-cleSie/gerSifflerSigleSignalSilenceSiliciumSimpleSince-reSinistreSiphonSiropSismiqueSituerSkierSocialSocleSodiumSoigneuxSoldatSoleilSolitudeSolubleSombreSommeilSomnolerSondeSongeurSonnetteSonoreSorcierSortirSosieSottiseSoucieuxSoudureSouffleSouleverSoupapeSourceSoutirerSouvenirSpacieuxSpatialSpe/cialSphe-reSpiralStableStationSternumStimulusStipulerStrictStudieuxStupeurStylisteSublimeSubstratSubtilSubvenirSucce-sSucreSuffixeSugge/rerSuiveurSulfateSuperbeSupplierSurfaceSuricateSurmenerSurpriseSursautSurvieSuspectSyllabeSymboleSyme/trieSynapseSyntaxeSyste-meTabacTablierTactileTaillerTalentTalismanTalonnerTambourTamiserTangibleTapisTaquinerTarderTarifTartineTasseTatamiTatouageTaupeTaureauTaxerTe/moinTemporelTenailleTendreTeneurTenirTensionTerminerTerneTerribleTe/tineTexteThe-meThe/orieThe/rapieThoraxTibiaTie-deTimideTirelireTiroirTissuTitaneTitreTituberTobogganTole/rantTomateToniqueTonneauToponymeTorcheTordreTornadeTorpilleTorrentTorseTortueTotemToucherTournageTousserToxineTractionTraficTragiqueTrahirTrainTrancherTravailTre-fleTremperTre/sorTreuilTriageTribunalTricoterTrilogieTriompheTriplerTriturerTrivialTromboneTroncTropicalTroupeauTuileTulipeTumulteTunnelTurbineTuteurTutoyerTuyauTympanTyphonTypiqueTyranUbuesqueUltimeUltrasonUnanimeUnifierUnionUniqueUnitaireUniversUraniumUrbainUrticantUsageUsineUsuelUsureUtileUtopieVacarmeVaccinVagabondVagueVaillantVaincreVaisseauValableValiseVallonValveVampireVanilleVapeurVarierVaseuxVassalVasteVecteurVedetteVe/ge/talVe/hiculeVeinardVe/loceVendrediVe/ne/rerVengerVenimeuxVentouseVerdureVe/rinVernirVerrouVerserVertuVestonVe/te/ranVe/tusteVexantVexerViaducViandeVictoireVidangeVide/oVignetteVigueurVilainVillageVinaigreViolonVipe-reVirementVirtuoseVirusVisageViseurVisionVisqueuxVisuelVitalVitesseViticoleVitrineVivaceVivipareVocationVoguerVoileVoisinVoitureVolailleVolcanVoltigerVolumeVoraceVortexVoterVouloirVoyageVoyelleWagonXe/nonYachtZe-breZe/nithZesteZoologie\";\n\nlet wordlist: Array = null;\nconst lookup: { [word: string]: number } = { }\n\nfunction dropDiacritic(word: string): string {\n logger.checkNormalize();\n return toUtf8String(Array.prototype.filter.call(toUtf8Bytes(word.normalize(\"NFD\").toLowerCase()), (c: number) => {\n return ((c >= 65 && c <= 90) || (c >= 97 && c <= 123));\n }));\n}\n\nfunction expand(word: string): string {\n const output: Array = [];\n\n Array.prototype.forEach.call(toUtf8Bytes(word), (c: number) => {\n // Acute accent\n if (c === 47) {\n output.push(204);\n output.push(129);\n\n // Grave accent\n } else if (c === 45) {\n output.push(204);\n output.push(128);\n\n } else {\n output.push(c);\n }\n });\n\n return toUtf8String(output);\n}\n\nfunction loadWords(lang: Wordlist): void {\n if (wordlist != null) { return; }\n wordlist = words.replace(/([A-Z])/g, \" $1\").toLowerCase().substring(1).split(\" \").map((w) => expand(w));\n wordlist.forEach((word, index) => {\n lookup[dropDiacritic(word)] = index;\n });\n\n // Verify the computed list matches the official list\n /* istanbul ignore if */\n if (Wordlist.check(lang) !== \"0x51deb7ae009149dc61a6bd18a918eb7ac78d2775726c68e598b92d002519b045\") {\n wordlist = null;\n throw new Error(\"BIP39 Wordlist for fr (French) FAILED\");\n }\n}\n\nclass LangFr extends Wordlist {\n constructor() {\n super(\"fr\");\n }\n\n getWord(index: number): string {\n loadWords(this);\n return wordlist[index];\n }\n\n getWordIndex(word: string): number {\n loadWords(this);\n return lookup[dropDiacritic(word)];\n }\n}\n\nconst langFr = new LangFr();\nWordlist.register(langFr);\n\nexport { langFr };\n", "\"use strict\";\n\nimport { hexlify } from \"@ethersproject/bytes\";\nimport { toUtf8Bytes, toUtf8String } from \"@ethersproject/strings\";\n\nimport { logger, Wordlist } from \"./wordlist\";\n\n\nconst data = [\n\n // 4-kana words\n \"AQRASRAGBAGUAIRAHBAghAURAdBAdcAnoAMEAFBAFCBKFBQRBSFBCXBCDBCHBGFBEQBpBBpQBIkBHNBeOBgFBVCBhBBhNBmOBmRBiHBiFBUFBZDBvFBsXBkFBlcBjYBwDBMBBTBBTRBWBBWXXaQXaRXQWXSRXCFXYBXpHXOQXHRXhRXuRXmXXbRXlXXwDXTRXrCXWQXWGaBWaKcaYgasFadQalmaMBacAKaRKKBKKXKKjKQRKDRKCYKCRKIDKeVKHcKlXKjHKrYNAHNBWNaRNKcNIBNIONmXNsXNdXNnBNMBNRBNrXNWDNWMNFOQABQAHQBrQXBQXFQaRQKXQKDQKOQKFQNBQNDQQgQCXQCDQGBQGDQGdQYXQpBQpQQpHQLXQHuQgBQhBQhCQuFQmXQiDQUFQZDQsFQdRQkHQbRQlOQlmQPDQjDQwXQMBQMDQcFQTBQTHQrDDXQDNFDGBDGQDGRDpFDhFDmXDZXDbRDMYDRdDTRDrXSAhSBCSBrSGQSEQSHBSVRShYShkSyQSuFSiBSdcSoESocSlmSMBSFBSFKSFNSFdSFcCByCaRCKcCSBCSRCCrCGbCEHCYXCpBCpQCIBCIHCeNCgBCgFCVECVcCmkCmwCZXCZFCdRClOClmClFCjDCjdCnXCwBCwXCcRCFQCFjGXhGNhGDEGDMGCDGCHGIFGgBGVXGVEGVRGmXGsXGdYGoSGbRGnXGwXGwDGWRGFNGFLGFOGFdGFkEABEBDEBFEXOEaBEKSENBENDEYXEIgEIkEgBEgQEgHEhFEudEuFEiBEiHEiFEZDEvBEsXEsFEdXEdREkFEbBEbRElFEPCEfkEFNYAEYAhYBNYQdYDXYSRYCEYYoYgQYgRYuRYmCYZTYdBYbEYlXYjQYRbYWRpKXpQopQnpSFpCXpIBpISphNpdBpdRpbRpcZpFBpFNpFDpFopFrLADLBuLXQLXcLaFLCXLEhLpBLpFLHXLeVLhILdHLdRLoDLbRLrXIABIBQIBCIBsIBoIBMIBRIXaIaRIKYIKRINBINuICDIGBIIDIIkIgRIxFIyQIiHIdRIbYIbRIlHIwRIMYIcRIRVITRIFBIFNIFQOABOAFOBQOaFONBONMOQFOSFOCDOGBOEQOpBOLXOIBOIFOgQOgFOyQOycOmXOsXOdIOkHOMEOMkOWWHBNHXNHXWHNXHDuHDRHSuHSRHHoHhkHmRHdRHkQHlcHlRHwBHWcgAEgAggAkgBNgBQgBEgXOgYcgLXgHjgyQgiBgsFgdagMYgWSgFQgFEVBTVXEVKBVKNVKDVKYVKRVNBVNYVDBVDxVSBVSRVCjVGNVLXVIFVhBVhcVsXVdRVbRVlRhBYhKYhDYhGShxWhmNhdahdkhbRhjohMXhTRxAXxXSxKBxNBxEQxeNxeQxhXxsFxdbxlHxjcxFBxFNxFQxFOxFoyNYyYoybcyMYuBQuBRuBruDMuCouHBudQukkuoBulVuMXuFEmCYmCRmpRmeDmiMmjdmTFmFQiADiBOiaRiKRiNBiNRiSFiGkiGFiERipRiLFiIFihYibHijBijEiMXiWBiFBiFCUBQUXFUaRUNDUNcUNRUNFUDBUSHUCDUGBUGFUEqULNULoUIRUeEUeYUgBUhFUuRUiFUsXUdFUkHUbBUjSUjYUwXUMDUcHURdUTBUrBUrXUrQZAFZXZZaRZKFZNBZQFZCXZGBZYdZpBZLDZIFZHXZHNZeQZVRZVFZmXZiBZvFZdFZkFZbHZbFZwXZcCZcRZRBvBQvBGvBLvBWvCovMYsAFsBDsaRsKFsNFsDrsSHsSFsCXsCRsEBsEHsEfspBsLBsLDsIgsIRseGsbRsFBsFQsFSdNBdSRdCVdGHdYDdHcdVbdySduDdsXdlRdwXdWYdWcdWRkBMkXOkaRkNIkNFkSFkCFkYBkpRkeNkgBkhVkmXksFklVkMBkWDkFNoBNoaQoaFoNBoNXoNaoNEoSRoEroYXoYCoYbopRopFomXojkowXorFbBEbEIbdBbjYlaRlDElMXlFDjKjjSRjGBjYBjYkjpRjLXjIBjOFjeVjbRjwBnXQnSHnpFnLXnINnMBnTRwXBwXNwXYwNFwQFwSBwGFwLXwLDweNwgBwuHwjDwnXMBXMpFMIBMeNMTHcaQcNBcDHcSFcCXcpBcLXcLDcgFcuFcnXcwXccDcTQcrFTQErXNrCHrpFrgFrbFrTHrFcWNYWNbWEHWMXWTR\",\n\n // 5-kana words\n \"ABGHABIJAEAVAYJQALZJAIaRAHNXAHdcAHbRAZJMAZJRAZTRAdVJAklmAbcNAjdRAMnRAMWYAWpRAWgRAFgBAFhBAFdcBNJBBNJDBQKBBQhcBQlmBDEJBYJkBYJTBpNBBpJFBIJBBIJDBIcABOKXBOEJBOVJBOiJBOZJBepBBeLXBeIFBegBBgGJBVJXBuocBiJRBUJQBlXVBlITBwNFBMYVBcqXBTlmBWNFBWiJBWnRBFGHBFwXXKGJXNJBXNZJXDTTXSHSXSVRXSlHXCJDXGQJXEhXXYQJXYbRXOfXXeNcXVJFXhQJXhEJXdTRXjdXXMhBXcQTXRGBXTEBXTnQXFCXXFOFXFgFaBaFaBNJaBCJaBpBaBwXaNJKaNJDaQIBaDpRaEPDaHMFamDJalEJaMZJaFaFaFNBaFQJaFLDaFVHKBCYKBEBKBHDKXaFKXGdKXEJKXpHKXIBKXZDKXwXKKwLKNacKNYJKNJoKNWcKDGdKDTRKChXKGaRKGhBKGbRKEBTKEaRKEPTKLMDKLWRKOHDKVJcKdBcKlIBKlOPKFSBKFEPKFpFNBNJNJBQNBGHNBEPNBHXNBgFNBVXNBZDNBsXNBwXNNaRNNJDNNJENNJkNDCJNDVDNGJRNJiDNZJNNsCJNJFNNFSBNFCXNFEPNFLXNFIFQJBFQCaRQJEQQLJDQLJFQIaRQOqXQHaFQHHQQVJXQVJDQhNJQmEIQZJFQsJXQJrFQWbRDJABDBYJDXNFDXCXDXLXDXZDDXsJDQqXDSJFDJCXDEPkDEqXDYmQDpSJDOCkDOGQDHEIDVJDDuDuDWEBDJFgSBNDSBSFSBGHSBIBSBTQSKVYSJQNSJQiSJCXSEqXSJYVSIiJSOMYSHAHSHaQSeCFSepQSegBSHdHSHrFShSJSJuHSJUFSkNRSrSrSWEBSFaHSJFQSFCXSFGDSFYXSFODSFgBSFVXSFhBSFxFSFkFSFbBSFMFCADdCJXBCXaFCXKFCXNFCXCXCXGBCXEJCXYBCXLDCXIBCXOPCXHXCXgBCXhBCXiBCXlDCXcHCJNBCJNFCDCJCDGBCDVXCDhBCDiDCDJdCCmNCpJFCIaRCOqXCHCHCHZJCViJCuCuCmddCJiFCdNBCdHhClEJCnUJCreSCWlgCWTRCFBFCFNBCFYBCFVFCFhFCFdSCFTBCFWDGBNBGBQFGJBCGBEqGBpBGBgQGNBEGNJYGNkOGNJRGDUFGJpQGHaBGJeNGJeEGVBlGVKjGiJDGvJHGsVJGkEBGMIJGWjNGFBFGFCXGFGBGFYXGFpBGFMFEASJEAWpEJNFECJVEIXSEIQJEOqXEOcFEeNcEHEJEHlFEJgFEhlmEmDJEmZJEiMBEUqXEoSREPBFEPXFEPKFEPSFEPEFEPpFEPLXEPIBEJPdEPcFEPTBEJnXEqlHEMpREFCXEFODEFcFYASJYJAFYBaBYBVXYXpFYDhBYCJBYJGFYYbRYeNcYJeVYiIJYZJcYvJgYvJRYJsXYsJFYMYMYreVpBNHpBEJpBwXpQxFpYEJpeNDpJeDpeSFpeCHpHUJpHbBpHcHpmUJpiiJpUJrpsJuplITpFaBpFQqpFGBpFEfpFYBpFpBpFLJpFIDpFgBpFVXpFyQpFuFpFlFpFjDpFnXpFwXpJFMpFTBLXCJLXEFLXhFLXUJLXbFLalmLNJBLSJQLCLCLGJBLLDJLHaFLeNFLeSHLeCXLepFLhaRLZsJLsJDLsJrLocaLlLlLMdbLFNBLFSBLFEHLFkFIBBFIBXFIBaQIBKXIBSFIBpHIBLXIBgBIBhBIBuHIBmXIBiFIBZXIBvFIBbFIBjQIBwXIBWFIKTRIQUJIDGFICjQIYSRIINXIJeCIVaRImEkIZJFIvJRIsJXIdCJIJoRIbBQIjYBIcqXITFVIreVIFKFIFSFIFCJIFGFIFLDIFIBIJFOIFgBIFVXIJFhIFxFIFmXIFdHIFbBIJFrIJFWOBGBOQfXOOKjOUqXOfXBOqXEOcqXORVJOFIBOFlDHBIOHXiFHNTRHCJXHIaRHHJDHHEJHVbRHZJYHbIBHRsJHRkDHWlmgBKFgBSBgBCDgBGHgBpBgBIBgBVJgBuBgBvFgKDTgQVXgDUJgGSJgOqXgmUMgZIJgTUJgWIEgFBFgFNBgFDJgFSFgFGBgFYXgJFOgFgQgFVXgFhBgFbHgJFWVJABVQKcVDgFVOfXVeDFVhaRVmGdViJYVMaRVFNHhBNDhBCXhBEqhBpFhBLXhNJBhSJRheVXhhKEhxlmhZIJhdBQhkIJhbMNhMUJhMZJxNJgxQUJxDEkxDdFxSJRxplmxeSBxeCXxeGFxeYXxepQxegBxWVcxFEQxFLXxFIBxFgBxFxDxFZtxFdcxFbBxFwXyDJXyDlcuASJuDJpuDIBuCpJuGSJuIJFueEFuZIJusJXudWEuoIBuWGJuFBcuFKEuFNFuFQFuFDJuFGJuFVJuFUtuFdHuFTBmBYJmNJYmQhkmLJDmLJomIdXmiJYmvJRmsJRmklmmMBymMuCmclmmcnQiJABiJBNiJBDiBSFiBCJiBEFiBYBiBpFiBLXiBTHiJNciDEfiCZJiECJiJEqiOkHiHKFieNDiHJQieQcieDHieSFieCXieGFieEFieIHiegFihUJixNoioNXiFaBiFKFiFNDiFEPiFYXitFOitFHiFgBiFVEiFmXiFitiFbBiFMFiFrFUCXQUIoQUIJcUHQJUeCEUHwXUUJDUUqXUdWcUcqXUrnQUFNDUFSHUFCFUFEfUFLXUtFOZBXOZXSBZXpFZXVXZEQJZEJkZpDJZOqXZeNHZeCDZUqXZFBQZFEHZFLXvBAFvBKFvBCXvBEPvBpHvBIDvBgFvBuHvQNJvFNFvFGBvFIBvJFcsXCDsXLXsXsXsXlFsXcHsQqXsJQFsEqXseIFsFEHsFjDdBxOdNpRdNJRdEJbdpJRdhZJdnSJdrjNdFNJdFQHdFhNkNJDkYaRkHNRkHSRkVbRkuMRkjSJkcqDoSJFoEiJoYZJoOfXohEBoMGQocqXbBAFbBXFbBaFbBNDbBGBbBLXbBTBbBWDbGJYbIJHbFQqbFpQlDgQlOrFlVJRjGEBjZJRnXvJnXbBnEfHnOPDngJRnxfXnUJWwXEJwNpJwDpBwEfXwrEBMDCJMDGHMDIJMLJDcQGDcQpHcqXccqNFcqCXcFCJRBSBRBGBRBEJRBpQTBNFTBQJTBpBTBVXTFABTFSBTFCFTFGBTFMDrXCJrXLDrDNJrEfHrFQJrFitWNjdWNTR\",\n\n // 6-kana words\n \"AKLJMANOPFASNJIAEJWXAYJNRAIIbRAIcdaAeEfDAgidRAdjNYAMYEJAMIbRAFNJBAFpJFBBIJYBDZJFBSiJhBGdEBBEJfXBEJqXBEJWRBpaUJBLXrXBIYJMBOcfXBeEfFBestXBjNJRBcDJOBFEqXXNvJRXDMBhXCJNYXOAWpXONJWXHDEBXeIaRXhYJDXZJSJXMDJOXcASJXFVJXaBQqXaBZJFasXdQaFSJQaFEfXaFpJHaFOqXKBNSRKXvJBKQJhXKEJQJKEJGFKINJBKIJjNKgJNSKVElmKVhEBKiJGFKlBgJKjnUJKwsJYKMFIJKFNJDKFIJFKFOfXNJBSFNJBCXNBpJFNJBvQNJBMBNJLJXNJOqXNJeCXNJeGFNdsJCNbTKFNwXUJQNFEPQDiJcQDMSJQSFpBQGMQJQJeOcQyCJEQUJEBQJFBrQFEJqDXDJFDJXpBDJXIMDGiJhDIJGRDJeYcDHrDJDVXgFDkAWpDkIgRDjDEqDMvJRDJFNFDJFIBSKclmSJQOFSJQVHSJQjDSJGJBSJGJFSECJoSHEJqSJHTBSJVJDSViJYSZJNBSJsJDSFSJFSFEfXSJFLXCBUJVCJXSBCJXpBCXVJXCJXsXCJXdFCJNJHCLIJgCHiJFCVNJMChCJhCUHEJCsJTRCJdYcCoQJCCFEfXCFIJgCFUJxCFstFGJBaQGJBIDGQJqXGYJNRGJHKFGeQqDGHEJFGJeLXGHIiJGHdBlGUJEBGkIJTGFQPDGJFEqEAGegEJIJBEJVJXEhQJTEiJNcEJZJFEJoEqEjDEqEPDsXEPGJBEPOqXEPeQFEfDiDEJfEFEfepQEfMiJEqXNBEqDIDEqeSFEqVJXEMvJRYXNJDYXEJHYKVJcYYJEBYJeEcYJUqXYFpJFYFstXpAZJMpBSJFpNBNFpeQPDpHLJDpHIJFpHgJFpeitFpHZJFpJFADpFSJFpJFCJpFOqXpFitBpJFZJLXIJFLIJgRLVNJWLVHJMLwNpJLFGJBLFLJDLFOqXLJFUJIBDJXIBGJBIJBYQIJBIBIBOqXIBcqDIEGJFILNJTIIJEBIOiJhIJeNBIJeIBIhiJIIWoTRIJFAHIJFpBIJFuHIFUtFIJFTHOSBYJOEcqXOHEJqOvBpFOkVJrObBVJOncqDOcNJkHhNJRHuHJuHdMhBgBUqXgBsJXgONJBgHNJDgHHJQgJeitgHsJXgJyNagyDJBgZJDrgsVJQgkEJNgkjSJgJFAHgFCJDgFZtMVJXNFVXQfXVJXDJVXoQJVQVJQVDEfXVDvJHVEqNFVeQfXVHpJFVHxfXVVJSRVVmaRVlIJOhCXVJhHjYkhxCJVhWVUJhWiJcxBNJIxeEqDxfXBFxcFEPxFSJFxFYJXyBDQJydaUJyFOPDuYCJYuLvJRuHLJXuZJLDuFOPDuFZJHuFcqXmKHJdmCQJcmOsVJiJAGFitLCFieOfXiestXiZJMEikNJQirXzFiFQqXiFIJFiFZJFiFvtFUHpJFUteIcUteOcUVCJkUhdHcUbEJEUJqXQUMNJhURjYkUFitFZDGJHZJIxDZJVJXZJFDJZJFpQvBNJBvBSJFvJxBrseQqDsVFVJdFLJDkEJNBkmNJYkFLJDoQJOPoGsJRoEAHBoEJfFbBQqDbBZJHbFVJXlFIJBjYIrXjeitcjjCEBjWMNBwXQfXwXOaFwDsJXwCJTRwrCZJMDNJQcDDJFcqDOPRYiJFTBsJXTQIJBTFEfXTFLJDrXEJFrEJXMrFZJFWEJdEWYTlm\",\n\n // 7-kana words\n \"ABCDEFACNJTRAMBDJdAcNJVXBLNJEBXSIdWRXErNJkXYDJMBXZJCJaXMNJaYKKVJKcKDEJqXKDcNJhKVJrNYKbgJVXKFVJSBNBYBwDNJeQfXNJeEqXNhGJWENJFiJRQlIJbEQJfXxDQqXcfXQFNDEJQFwXUJDYcnUJDJIBgQDIUJTRDJFEqDSJQSJFSJQIJFSOPeZtSJFZJHCJXQfXCTDEqFGJBSJFGJBOfXGJBcqXGJHNJDGJRLiJEJfXEqEJFEJPEFpBEJYJBZJFYBwXUJYiJMEBYJZJyTYTONJXpQMFXFpeGIDdpJFstXpJFcPDLBVSJRLHQJqXLJFZJFIJBNJDIJBUqXIBkFDJIJEJPTIYJGWRIJeQPDIJeEfHIJFsJXOqGDSFHXEJqXgJCsJCgGQJqXgdQYJEgFMFNBgJFcqDVJwXUJVJFZJchIgJCCxOEJqXxOwXUJyDJBVRuscisciJBiJBieUtqXiJFDJkiFsJXQUGEZJcUJFsJXZtXIrXZDZJDrZJFNJDZJFstXvJFQqXvJFCJEsJXQJqkhkNGBbDJdTRbYJMEBlDwXUJMEFiJFcfXNJDRcNJWMTBLJXC\",\n\n // 8-kana words\n \"BraFUtHBFSJFdbNBLJXVJQoYJNEBSJBEJfHSJHwXUJCJdAZJMGjaFVJXEJPNJBlEJfFiJFpFbFEJqIJBVJCrIBdHiJhOPFChvJVJZJNJWxGFNIFLueIBQJqUHEJfUFstOZJDrlXEASJRlXVJXSFwVJNJWD\",\n\n // 9-kana words\n \"QJEJNNJDQJEJIBSFQJEJxegBQJEJfHEPSJBmXEJFSJCDEJqXLXNJFQqXIcQsFNJFIFEJqXUJgFsJXIJBUJEJfHNFvJxEqXNJnXUJFQqD\",\n\n // 10-kana words\n \"IJBEJqXZJ\"\n];\n\n// Maps each character into its kana value (the index)\nconst mapping = \"~~AzB~X~a~KN~Q~D~S~C~G~E~Y~p~L~I~O~eH~g~V~hxyumi~~U~~Z~~v~~s~~dkoblPjfnqwMcRTr~W~~~F~~~~~Jt\"\n\nlet wordlist: Array = null;\n\nfunction hex(word: string) {\n return hexlify(toUtf8Bytes(word));\n}\n\nconst KiYoKu = \"0xe3818de38284e3818f\";\nconst KyoKu = \"0xe3818de38283e3818f\"\n\nfunction loadWords(lang: Wordlist) {\n if (wordlist !== null) { return; }\n\n wordlist = [];\n\n // Transforms for normalizing (sort is a not quite UTF-8)\n const transform: { [key: string]: string | boolean } = {};\n\n // Delete the diacritic marks\n transform[toUtf8String([227, 130, 154])] = false;\n transform[toUtf8String([227, 130, 153])] = false;\n\n // Some simple transforms that sort out most of the order\n transform[toUtf8String([227, 130, 133])] = toUtf8String([227, 130, 134]);\n transform[toUtf8String([227, 129, 163])] = toUtf8String([227, 129, 164]);\n transform[toUtf8String([227, 130, 131])] = toUtf8String([227, 130, 132]);\n transform[toUtf8String([227, 130, 135])] = toUtf8String([227, 130, 136]);\n\n\n // Normalize words using the transform\n function normalize(word: string) {\n let result = \"\";\n for (let i = 0; i < word.length; i++) {\n let kana = word[i];\n const target = transform[kana];\n if (target === false) { continue; }\n if (target) { kana = target; }\n result += kana;\n }\n return result;\n }\n\n // Sort how the Japanese list is sorted\n function sortJapanese(a: string, b: string) {\n a = normalize(a);\n b = normalize(b);\n if (a < b) { return -1; }\n if (a > b) { return 1; }\n return 0;\n }\n\n // Load all the words\n for (let length = 3; length <= 9; length++) {\n const d = data[length - 3];\n for (let offset = 0; offset < d.length; offset += length) {\n const word = [];\n for (let i = 0; i < length; i++) {\n const k = mapping.indexOf(d[offset + i]);\n word.push(227);\n word.push((k & 0x40) ? 130: 129);\n word.push((k & 0x3f) + 128);\n }\n wordlist.push(toUtf8String(word));\n }\n }\n wordlist.sort(sortJapanese);\n\n // For some reason kyoku and kiyoku are flipped in node (!!).\n // The order SHOULD be:\n // - kyoku\n // - kiyoku\n\n // This should ignore \"if\", but that doesn't work here??\n /* istanbul ignore next */\n if (hex(wordlist[442]) === KiYoKu && hex(wordlist[443]) === KyoKu) {\n const tmp = wordlist[442];\n wordlist[442] = wordlist[443];\n wordlist[443] = tmp;\n }\n\n // Verify the computed list matches the official list\n /* istanbul ignore if */\n if (Wordlist.check(lang) !== \"0xcb36b09e6baa935787fd762ce65e80b0c6a8dabdfbc3a7f86ac0e2c4fd111600\") {\n wordlist = null;\n throw new Error(\"BIP39 Wordlist for ja (Japanese) FAILED\");\n }\n}\n\nclass LangJa extends Wordlist {\n constructor() {\n super(\"ja\");\n }\n\n getWord(index: number): string {\n loadWords(this);\n return wordlist[index];\n }\n\n getWordIndex(word: string): number {\n loadWords(this);\n return wordlist.indexOf(word);\n }\n\n split(mnemonic: string): Array {\n logger.checkNormalize();\n return mnemonic.split(/(?:\\u3000| )+/g);\n }\n\n join(words: Array): string {\n return words.join(\"\\u3000\");\n }\n}\n\nconst langJa = new LangJa();\nWordlist.register(langJa);\n\nexport { langJa };\n\n", "\"use strict\";\n\nimport { toUtf8String } from \"@ethersproject/strings\";\n\nimport { Wordlist } from \"./wordlist\";\n\n\nconst data = [\n \"OYAa\",\n \"ATAZoATBl3ATCTrATCl8ATDloATGg3ATHT8ATJT8ATJl3ATLlvATLn4ATMT8ATMX8ATMboATMgoAToLbAToMTATrHgATvHnAT3AnAT3JbAT3MTAT8DbAT8JTAT8LmAT8MYAT8MbAT#LnAUHT8AUHZvAUJXrAUJX8AULnrAXJnvAXLUoAXLgvAXMn6AXRg3AXrMbAX3JTAX3QbAYLn3AZLgvAZrSUAZvAcAZ8AaAZ8AbAZ8AnAZ8HnAZ8LgAZ8MYAZ8MgAZ8OnAaAboAaDTrAaFTrAaJTrAaJboAaLVoAaMXvAaOl8AaSeoAbAUoAbAg8AbAl4AbGnrAbMT8AbMXrAbMn4AbQb8AbSV8AbvRlAb8AUAb8AnAb8HgAb8JTAb8NTAb8RbAcGboAcLnvAcMT8AcMX8AcSToAcrAaAcrFnAc8AbAc8MgAfGgrAfHboAfJnvAfLV8AfLkoAfMT8AfMnoAfQb8AfScrAfSgrAgAZ8AgFl3AgGX8AgHZvAgHgrAgJXoAgJX8AgJboAgLZoAgLn4AgOX8AgoATAgoAnAgoCUAgoJgAgoLXAgoMYAgoSeAgrDUAgrJTAhrFnAhrLjAhrQgAjAgoAjJnrAkMX8AkOnoAlCTvAlCV8AlClvAlFg4AlFl6AlFn3AloSnAlrAXAlrAfAlrFUAlrFbAlrGgAlrOXAlvKnAlvMTAl3AbAl3MnAnATrAnAcrAnCZ3AnCl8AnDg8AnFboAnFl3AnHX4AnHbrAnHgrAnIl3AnJgvAnLXoAnLX4AnLbrAnLgrAnLhrAnMXoAnMgrAnOn3AnSbrAnSeoAnvLnAn3OnCTGgvCTSlvCTvAUCTvKnCTvNTCT3CZCT3GUCT3MTCT8HnCUCZrCULf8CULnvCU3HnCU3JUCY6NUCbDb8CbFZoCbLnrCboOTCboScCbrFnCbvLnCb8AgCb8HgCb$LnCkLfoClBn3CloDUDTHT8DTLl3DTSU8DTrAaDTrLXDTrLjDTrOYDTrOgDTvFXDTvFnDT3HUDT3LfDUCT9DUDT4DUFVoDUFV8DUFkoDUGgrDUJnrDULl8DUMT8DUMXrDUMX4DUMg8DUOUoDUOgvDUOg8DUSToDUSZ8DbDXoDbDgoDbGT8DbJn3DbLg3DbLn4DbMXrDbMg8DbOToDboJXGTClvGTDT8GTFZrGTLVoGTLlvGTLl3GTMg8GTOTvGTSlrGToCUGTrDgGTrJYGTrScGTtLnGTvAnGTvQgGUCZrGUDTvGUFZoGUHXrGULnvGUMT8GUoMgGXoLnGXrMXGXrMnGXvFnGYLnvGZOnvGZvOnGZ8LaGZ8LmGbAl3GbDYvGbDlrGbHX3GbJl4GbLV8GbLn3GbMn4GboJTGboRfGbvFUGb3GUGb4JnGgDX3GgFl$GgJlrGgLX6GgLZoGgLf8GgOXoGgrAgGgrJXGgrMYGgrScGgvATGgvOYGnAgoGnJgvGnLZoGnLg3GnLnrGnQn8GnSbrGnrMgHTClvHTDToHTFT3HTQT8HToJTHToJgHTrDUHTrMnHTvFYHTvRfHT8MnHT8SUHUAZ8HUBb4HUDTvHUoMYHXFl6HXJX6HXQlrHXrAUHXrMnHXrSbHXvFYHXvKXHX3LjHX3MeHYvQlHZrScHZvDbHbAcrHbFT3HbFl3HbJT8HbLTrHbMT8HbMXrHbMbrHbQb8HbSX3HboDbHboJTHbrFUHbrHgHbrJTHb8JTHb8MnHb8QgHgAlrHgDT3HgGgrHgHgrHgJTrHgJT8HgLX@HgLnrHgMT8HgMX8HgMboHgOnrHgQToHgRg3HgoHgHgrCbHgrFnHgrLVHgvAcHgvAfHnAloHnCTrHnCnvHnGTrHnGZ8HnGnvHnJT8HnLf8HnLkvHnMg8HnRTrITvFUITvFnJTAXrJTCV8JTFT3JTFT8JTFn4JTGgvJTHT8JTJT8JTJXvJTJl3JTJnvJTLX4JTLf8JTLhvJTMT8JTMXrJTMnrJTObrJTQT8JTSlvJT8DUJT8FkJT8MTJT8OXJT8OgJT8QUJT8RfJUHZoJXFT4JXFlrJXGZ8JXGnrJXLV8JXLgvJXMXoJXMX3JXNboJXPlvJXoJTJXoLkJXrAXJXrHUJXrJgJXvJTJXvOnJX4KnJYAl3JYJT8JYLhvJYQToJYrQXJY6NUJbAl3JbCZrJbDloJbGT8JbGgrJbJXvJbJboJbLf8JbLhrJbLl3JbMnvJbRg8JbSZ8JboDbJbrCZJbrSUJb3KnJb8LnJfRn8JgAXrJgCZrJgDTrJgGZrJgGZ8JgHToJgJT8JgJXoJgJgvJgLX4JgLZ3JgLZ8JgLn4JgMgrJgMn4JgOgvJgPX6JgRnvJgSToJgoCZJgoJbJgoMYJgrJXJgrJgJgrLjJg6MTJlCn3JlGgvJlJl8Jl4AnJl8FnJl8HgJnAToJnATrJnAbvJnDUoJnGnrJnJXrJnJXvJnLhvJnLnrJnLnvJnMToJnMT8JnMXvJnMX3JnMg8JnMlrJnMn4JnOX8JnST4JnSX3JnoAgJnoAnJnoJTJnoObJnrAbJnrAkJnrHnJnrJTJnrJYJnrOYJnrScJnvCUJnvFaJnvJgJnvJnJnvOYJnvQUJnvRUJn3FnJn3JTKnFl3KnLT6LTDlvLTMnoLTOn3LTRl3LTSb4LTSlrLToAnLToJgLTrAULTrAcLTrCULTrHgLTrMgLT3JnLULnrLUMX8LUoJgLVATrLVDTrLVLb8LVoJgLV8MgLV8RTLXDg3LXFlrLXrCnLXrLXLX3GTLX4GgLX4OYLZAXrLZAcrLZAgrLZAhrLZDXyLZDlrLZFbrLZFl3LZJX6LZJX8LZLc8LZLnrLZSU8LZoJTLZoJnLZrAgLZrAnLZrJYLZrLULZrMgLZrSkLZvAnLZvGULZvJeLZvOTLZ3FZLZ4JXLZ8STLZ8ScLaAT3LaAl3LaHT8LaJTrLaJT8LaJXrLaJgvLaJl4LaLVoLaMXrLaMXvLaMX8LbClvLbFToLbHlrLbJn4LbLZ3LbLhvLbMXrLbMnoLbvSULcLnrLc8HnLc8MTLdrMnLeAgoLeOgvLeOn3LfAl3LfLnvLfMl3LfOX8Lf8AnLf8JXLf8LXLgJTrLgJXrLgJl8LgMX8LgRZrLhCToLhrAbLhrFULhrJXLhvJYLjHTrLjHX4LjJX8LjLhrLjSX3LjSZ4LkFX4LkGZ8LkGgvLkJTrLkMXoLkSToLkSU8LkSZ8LkoOYLl3FfLl3MgLmAZrLmCbrLmGgrLmHboLmJnoLmJn3LmLfoLmLhrLmSToLnAX6LnAb6LnCZ3LnCb3LnDTvLnDb8LnFl3LnGnrLnHZvLnHgvLnITvLnJT8LnJX8LnJlvLnLf8LnLg6LnLhvLnLnoLnMXrLnMg8LnQlvLnSbrLnrAgLnrAnLnrDbLnrFkLnrJdLnrMULnrOYLnrSTLnvAnLnvDULnvHgLnvOYLnvOnLn3GgLn4DULn4JTLn4JnMTAZoMTAloMTDb8MTFT8MTJnoMTJnrMTLZrMTLhrMTLkvMTMX8MTRTrMToATMTrDnMTrOnMT3JnMT4MnMT8FUMT8FaMT8FlMT8GTMT8GbMT8GnMT8HnMT8JTMT8JbMT8OTMUCl8MUJTrMUJU8MUMX8MURTrMUSToMXAX6MXAb6MXCZoMXFXrMXHXrMXLgvMXOgoMXrAUMXrAnMXrHgMXrJYMXrJnMXrMTMXrMgMXrOYMXrSZMXrSgMXvDUMXvOTMX3JgMX3OTMX4JnMX8DbMX8FnMX8HbMX8HgMX8HnMX8LbMX8MnMX8OnMYAb8MYGboMYHTvMYHX4MYLTrMYLnvMYMToMYOgvMYRg3MYSTrMbAToMbAXrMbAl3MbAn8MbGZ8MbJT8MbJXrMbMXvMbMX8MbMnoMbrMUMb8AfMb8FbMb8FkMcJXoMeLnrMgFl3MgGTvMgGXoMgGgrMgGnrMgHT8MgHZrMgJnoMgLnrMgLnvMgMT8MgQUoMgrHnMgvAnMg8HgMg8JYMg8LfMloJnMl8ATMl8AXMl8JYMnAToMnAT4MnAZ8MnAl3MnAl4MnCl8MnHT8MnHg8MnJnoMnLZoMnLhrMnMXoMnMX3MnMnrMnOgvMnrFbMnrFfMnrFnMnrNTMnvJXNTMl8OTCT3OTFV8OTFn3OTHZvOTJXrOTOl3OT3ATOT3JUOT3LZOT3LeOT3MbOT8ATOT8AbOT8AgOT8MbOUCXvOUMX3OXHXvOXLl3OXrMUOXvDbOX6NUOX8JbOYFZoOYLbrOYLkoOYMg8OYSX3ObHTrObHT4ObJgrObLhrObMX3ObOX8Ob8FnOeAlrOeJT8OeJXrOeJnrOeLToOeMb8OgJXoOgLXoOgMnrOgOXrOgOloOgoAgOgoJbOgoMYOgoSTOg8AbOjLX4OjMnoOjSV8OnLVoOnrAgOn3DUPXQlrPXvFXPbvFTPdAT3PlFn3PnvFbQTLn4QToAgQToMTQULV8QURg8QUoJnQXCXvQbFbrQb8AaQb8AcQb8FbQb8MYQb8ScQeAlrQeLhrQjAn3QlFXoQloJgQloSnRTLnvRTrGURTrJTRUJZrRUoJlRUrQnRZrLmRZrMnRZrSnRZ8ATRZ8JbRZ8ScRbMT8RbST3RfGZrRfMX8RfMgrRfSZrRnAbrRnGT8RnvJgRnvLfRnvMTRn8AaSTClvSTJgrSTOXrSTRg3STRnvSToAcSToAfSToAnSToHnSToLjSToMTSTrAaSTrEUST3BYST8AgST8LmSUAZvSUAgrSUDT4SUDT8SUGgvSUJXoSUJXvSULTrSU8JTSU8LjSV8AnSV8JgSXFToSXLf8SYvAnSZrDUSZrMUSZrMnSZ8HgSZ8JTSZ8JgSZ8MYSZ8QUSaQUoSbCT3SbHToSbQYvSbSl4SboJnSbvFbSb8HbSb8JgSb8OTScGZrScHgrScJTvScMT8ScSToScoHbScrMTScvAnSeAZrSeAcrSeHboSeJUoSeLhrSeMT8SeMXrSe6JgSgHTrSkJnoSkLnvSk8CUSlFl3SlrSnSl8GnSmAboSmGT8SmJU8\",\n \"ATLnDlATrAZoATrJX4ATrMT8ATrMX4ATrRTrATvDl8ATvJUoATvMl8AT3AToAT3MX8AT8CT3AT8DT8AT8HZrAT8HgoAUAgFnAUCTFnAXoMX8AXrAT8AXrGgvAXrJXvAXrOgoAXvLl3AZvAgoAZvFbrAZvJXoAZvJl8AZvJn3AZvMX8AZvSbrAZ8FZoAZ8LZ8AZ8MU8AZ8OTvAZ8SV8AZ8SX3AbAgFZAboJnoAbvGboAb8ATrAb8AZoAb8AgrAb8Al4Ab8Db8Ab8JnoAb8LX4Ab8LZrAb8LhrAb8MT8Ab8OUoAb8Qb8Ab8ST8AcrAUoAcrAc8AcrCZ3AcrFT3AcrFZrAcrJl4AcrJn3AcrMX3AcrOTvAc8AZ8Ac8MT8AfAcJXAgoFn4AgoGgvAgoGnrAgoLc8AgoMXoAgrLnrAkrSZ8AlFXCTAloHboAlrHbrAlrLhrAlrLkoAl3CZrAl3LUoAl3LZrAnrAl4AnrMT8An3HT4BT3IToBX4MnvBb!Ln$CTGXMnCToLZ4CTrHT8CT3JTrCT3RZrCT#GTvCU6GgvCU8Db8CU8GZrCU8HT8CboLl3CbrGgrCbrMU8Cb8DT3Cb8GnrCb8LX4Cb8MT8Cb8ObrCgrGgvCgrKX4Cl8FZoDTrAbvDTrDboDTrGT6DTrJgrDTrMX3DTrRZrDTrRg8DTvAVvDTvFZoDT3DT8DT3Ln3DT4HZrDT4MT8DT8AlrDT8MT8DUAkGbDUDbJnDYLnQlDbDUOYDbMTAnDbMXSnDboAT3DboFn4DboLnvDj6JTrGTCgFTGTGgFnGTJTMnGTLnPlGToJT8GTrCT3GTrLVoGTrLnvGTrMX3GTrMboGTvKl3GZClFnGZrDT3GZ8DTrGZ8FZ8GZ8MXvGZ8On8GZ8ST3GbCnQXGbMbFnGboFboGboJg3GboMXoGb3JTvGb3JboGb3Mn6Gb3Qb8GgDXLjGgMnAUGgrDloGgrHX4GgrSToGgvAXrGgvAZvGgvFbrGgvLl3GgvMnvGnDnLXGnrATrGnrMboGnuLl3HTATMnHTAgCnHTCTCTHTrGTvHTrHTvHTrJX8HTrLl8HTrMT8HTrMgoHTrOTrHTuOn3HTvAZrHTvDTvHTvGboHTvJU8HTvLl3HTvMXrHTvQb4HT4GT6HT4JT8HT4Jb#HT8Al3HT8GZrHT8GgrHT8HX4HT8Jb8HT8JnoHT8LTrHT8LgvHT8SToHT8SV8HUoJUoHUoJX8HUoLnrHXrLZoHXvAl3HX3LnrHX4FkvHX4LhrHX4MXoHX4OnoHZrAZ8HZrDb8HZrGZ8HZrJnrHZvGZ8HZvLnvHZ8JnvHZ8LhrHbCXJlHbMTAnHboJl4HbpLl3HbrJX8HbrLnrHbrMnvHbvRYrHgoSTrHgrFV8HgrGZ8HgrJXoHgrRnvHgvBb!HgvGTrHgvHX4HgvHn!HgvLTrHgvSU8HnDnLbHnFbJbHnvDn8Hn6GgvHn!BTvJTCTLnJTQgFnJTrAnvJTrLX4JTrOUoJTvFn3JTvLnrJTvNToJT3AgoJT3Jn4JT3LhvJT3ObrJT8AcrJT8Al3JT8JT8JT8JnoJT8LX4JT8LnrJT8MX3JT8Rg3JT8Sc8JUoBTvJU8AToJU8GZ8JU8GgvJU8JTrJU8JXrJU8JnrJU8LnvJU8ScvJXHnJlJXrGgvJXrJU8JXrLhrJXrMT8JXrMXrJXrQUoJXvCTvJXvGZ8JXvGgrJXvQT8JX8Ab8JX8DT8JX8GZ8JX8HZvJX8LnrJX8MT8JX8MXoJX8MnvJX8ST3JYGnCTJbAkGbJbCTAnJbLTAcJboDT3JboLb6JbrAnvJbrCn3JbrDl8JbrGboJbrIZoJbrJnvJbrMnvJbrQb4Jb8RZrJeAbAnJgJnFbJgScAnJgrATrJgvHZ8JgvMn4JlJlFbJlLiQXJlLjOnJlRbOlJlvNXoJlvRl3Jl4AcrJl8AUoJl8MnrJnFnMlJnHgGbJnoDT8JnoFV8JnoGgvJnoIT8JnoQToJnoRg3JnrCZ3JnrGgrJnrHTvJnrLf8JnrOX8JnvAT3JnvFZoJnvGT8JnvJl4JnvMT8JnvMX8JnvOXrJnvPX6JnvSX3JnvSZrJn3MT8Jn3MX8Jn3RTrLTATKnLTJnLTLTMXKnLTRTQlLToGb8LTrAZ8LTrCZ8LTrDb8LTrHT8LT3PX6LT4FZoLT$CTvLT$GgrLUvHX3LVoATrLVoAgoLVoJboLVoMX3LVoRg3LV8CZ3LV8FZoLV8GTvLXrDXoLXrFbrLXvAgvLXvFlrLXvLl3LXvRn6LX4Mb8LX8GT8LYCXMnLYrMnrLZoSTvLZrAZvLZrAloLZrFToLZrJXvLZrJboLZrJl4LZrLnrLZrMT8LZrOgvLZrRnvLZrST4LZvMX8LZvSlvLZ8AgoLZ8CT3LZ8JT8LZ8LV8LZ8LZoLZ8Lg8LZ8SV8LZ8SbrLZ$HT8LZ$Mn4La6CTvLbFbMnLbRYFTLbSnFZLboJT8LbrAT9LbrGb3LbrQb8LcrJX8LcrMXrLerHTvLerJbrLerNboLgrDb8LgrGZ8LgrHTrLgrMXrLgrSU8LgvJTrLgvLl3Lg6Ll3LhrLnrLhrMT8LhvAl4LiLnQXLkoAgrLkoJT8LkoJn4LlrSU8Ll3FZoLl3HTrLl3JX8Ll3JnoLl3LToLmLeFbLnDUFbLnLVAnLnrATrLnrAZoLnrAb8LnrAlrLnrGgvLnrJU8LnrLZrLnrLhrLnrMb8LnrOXrLnrSZ8LnvAb4LnvDTrLnvDl8LnvHTrLnvHbrLnvJT8LnvJU8LnvJbrLnvLhvLnvMX8LnvMb8LnvNnoLnvSU8Ln3Al3Ln4FZoLn4GT6Ln4JgvLn4LhrLn4MT8Ln4SToMToCZrMToJX8MToLX4MToLf8MToRg3MTrEloMTvGb6MT3BTrMT3Lb6MT8AcrMT8AgrMT8GZrMT8JnoMT8LnrMT8MX3MUOUAnMXAbFnMXoAloMXoJX8MXoLf8MXoLl8MXrAb8MXrDTvMXrGT8MXrGgrMXrHTrMXrLf8MXrMU8MXrOXvMXrQb8MXvGT8MXvHTrMXvLVoMX3AX3MX3Jn3MX3LhrMX3MX3MX4AlrMX4OboMX8GTvMX8GZrMX8GgrMX8JT8MX8JX8MX8LhrMX8MT8MYDUFbMYMgDbMbGnFfMbvLX4MbvLl3Mb8Mb8Mb8ST4MgGXCnMg8ATrMg8AgoMg8CZrMg8DTrMg8DboMg8HTrMg8JgrMg8LT8MloJXoMl8AhrMl8JT8MnLgAUMnoJXrMnoLX4MnoLhrMnoMT8MnrAl4MnrDb8MnrOTvMnrOgvMnrQb8MnrSU8MnvGgrMnvHZ8Mn3MToMn4DTrMn4LTrMn4Mg8NnBXAnOTFTFnOToAToOTrGgvOTrJX8OT3JXoOT6MTrOT8GgrOT8HTpOT8MToOUoHT8OUoJT8OUoLn3OXrAgoOXrDg8OXrMT8OXvSToOX6CTvOX8CZrOX8OgrOb6HgvOb8AToOb8MT8OcvLZ8OgvAlrOgvHTvOgvJTrOgvJnrOgvLZrOgvLn4OgvMT8OgvRTrOg8AZoOg8DbvOnrOXoOnvJn4OnvLhvOnvRTrOn3GgoOn3JnvOn6JbvOn8OTrPTGYFTPbBnFnPbGnDnPgDYQTPlrAnvPlrETvPlrLnvPlrMXvPlvFX4QTMTAnQTrJU8QYCnJlQYJlQlQbGTQbQb8JnrQb8LZoQb8LnvQb8MT8Qb8Ml8Qb8ST4QloAl4QloHZvQloJX8QloMn8QnJZOlRTrAZvRTrDTrRTvJn4RTvLhvRT4Jb8RZrAZrRZ8AkrRZ8JU8RZ8LV8RZ8LnvRbJlQXRg3GboRg3MnvRg8AZ8Rg8JboRg8Jl4RnLTCbRnvFl3RnvQb8SToAl4SToCZrSToFZoSToHXrSToJU8SToJgvSToJl4SToLhrSToMX3STrAlvSTrCT9STrCgrSTrGgrSTrHXrSTrHboSTrJnoSTrNboSTvLnrST4AZoST8Ab8ST8JT8SUoJn3SU6HZ#SU6JTvSU8Db8SU8HboSU8LgrSV8JT8SZrAcrSZrAl3SZrJT8SZrJnvSZrMT8SZvLUoSZ4FZoSZ8JnoSZ8RZrScoLnrScoMT8ScoMX8ScrAT4ScrAZ8ScrLZ8ScrLkvScvDb8ScvLf8ScvNToSgrFZrShvKnrSloHUoSloLnrSlrMXoSl8HgrSmrJUoSn3BX6\",\n \"ATFlOn3ATLgrDYAT4MTAnAT8LTMnAYJnRTrAbGgJnrAbLV8LnAbvNTAnAeFbLg3AgOYMXoAlQbFboAnDboAfAnJgoJTBToDgAnBUJbAl3BboDUAnCTDlvLnCTFTrSnCYoQTLnDTwAbAnDUDTrSnDUHgHgrDX8LXFnDbJXAcrETvLTLnGTFTQbrGTMnGToGT3DUFbGUJlPX3GbQg8LnGboJbFnGb3GgAYGgAg8ScGgMbAXrGgvAbAnGnJTLnvGnvATFgHTDT6ATHTrDlJnHYLnMn8HZrSbJTHZ8LTFnHbFTJUoHgSeMT8HgrLjAnHgvAbAnHlFUrDlHnDgvAnHnHTFT3HnQTGnrJTAaMXvJTGbCn3JTOgrAnJXvAXMnJbMg8SnJbMnRg3Jb8LTMnJnAl3OnJnGYrQlJnJlQY3LTDlCn3LTJjLg3LTLgvFXLTMg3GTLV8HUOgLXFZLg3LXNXrMnLX8QXFnLX9AlMYLYLXPXrLZAbJU8LZDUJU8LZMXrSnLZ$AgFnLaPXrDULbFYrMnLbMn8LXLboJgJgLeFbLg3LgLZrSnLgOYAgoLhrRnJlLkCTrSnLkOnLhrLnFX%AYLnFZoJXLnHTvJbLnLloAbMTATLf8MTHgJn3MTMXrAXMT3MTFnMUITvFnMXFX%AYMXMXvFbMXrFTDbMYAcMX3MbLf8SnMb8JbFnMgMXrMTMgvAXFnMgvGgCmMnAloSnMnFnJTrOXvMXSnOX8HTMnObJT8ScObLZFl3ObMXCZoPTLgrQXPUFnoQXPU3RXJlPX3RkQXPbrJXQlPlrJbFnQUAhrDbQXGnCXvQYLnHlvQbLfLnvRTOgvJbRXJYrQlRYLnrQlRbLnrQlRlFT8JlRlFnrQXSTClCn3STHTrAnSTLZQlrSTMnGTrSToHgGbSTrGTDnSTvGXCnST3HgFbSU3HXAXSbAnJn3SbFT8LnScLfLnv\",\n \"AT3JgJX8AT8FZoSnAT8JgFV8AT8LhrDbAZ8JT8DbAb8GgLhrAb8SkLnvAe8MT8SnAlMYJXLVAl3GYDTvAl3LfLnvBUDTvLl3CTOn3HTrCT3DUGgrCU8MT8AbCbFTrJUoCgrDb8MTDTLV8JX8DTLnLXQlDT8LZrSnDUQb8FZ8DUST4JnvDb8ScOUoDj6GbJl4GTLfCYMlGToAXvFnGboAXvLnGgAcrJn3GgvFnSToGnLf8JnvGn#HTDToHTLnFXJlHTvATFToHTvHTDToHTvMTAgoHT3STClvHT4AlFl6HT8HTDToHUoDgJTrHUoScMX3HbRZrMXoHboJg8LTHgDb8JTrHgMToLf8HgvLnLnoHnHn3HT4Hn6MgvAnJTJU8ScvJT3AaQT8JT8HTrAnJXrRg8AnJbAloMXoJbrATFToJbvMnoSnJgDb6GgvJgDb8MXoJgSX3JU8JguATFToJlPYLnQlJlQkDnLbJlQlFYJlJl8Lf8OTJnCTFnLbJnLTHXMnJnLXGXCnJnoFfRg3JnrMYRg3Jn3HgFl3KT8Dg8LnLTRlFnPTLTvPbLbvLVoSbrCZLXMY6HT3LXNU7DlrLXNXDTATLX8DX8LnLZDb8JU8LZMnoLhrLZSToJU8LZrLaLnrLZvJn3SnLZ8LhrSnLaJnoMT8LbFlrHTvLbrFTLnrLbvATLlvLb6OTFn3LcLnJZOlLeAT6Mn4LeJT3ObrLg6LXFlrLhrJg8LnLhvDlPX4LhvLfLnvLj6JTFT3LnFbrMXoLnQluCTvLnrQXCY6LnvLfLnvLnvMgLnvLnvSeLf8MTMbrJn3MT3JgST3MT8AnATrMT8LULnrMUMToCZrMUScvLf8MXoDT8SnMX6ATFToMX8AXMT8MX8FkMT8MX8HTrDUMX8ScoSnMYJT6CTvMgAcrMXoMg8SToAfMlvAXLg3MnFl3AnvOT3AnFl3OUoATHT8OU3RnLXrOXrOXrSnObPbvFn6Og8HgrSnOg8OX8DbPTvAgoJgPU3RYLnrPXrDnJZrPb8CTGgvPlrLTDlvPlvFUJnoQUvFXrQlQeMnoAl3QlrQlrSnRTFTrJUoSTDlLiLXSTFg6HT3STJgoMn4STrFTJTrSTrLZFl3ST4FnMXoSUrDlHUoScvHTvSnSfLkvMXo\",\n \"AUoAcrMXoAZ8HboAg8AbOg6ATFgAg8AloMXoAl3AT8JTrAl8MX8MXoCT3SToJU8Cl8Db8MXoDT8HgrATrDboOT8MXoGTOTrATMnGT8LhrAZ8GnvFnGnQXHToGgvAcrHTvAXvLl3HbrAZoMXoHgBlFXLg3HgMnFXrSnHgrSb8JUoHn6HT8LgvITvATrJUoJUoLZrRnvJU8HT8Jb8JXvFX8QT8JXvLToJTrJYrQnGnQXJgrJnoATrJnoJU8ScvJnvMnvMXoLTCTLgrJXLTJlRTvQlLbRnJlQYvLbrMb8LnvLbvFn3RnoLdCVSTGZrLeSTvGXCnLg3MnoLn3MToLlrETvMT8SToAl3MbrDU6GTvMb8LX4LhrPlrLXGXCnSToLf8Rg3STrDb8LTrSTvLTHXMnSb3RYLnMnSgOg6ATFg\",\n \"HUDlGnrQXrJTrHgLnrAcJYMb8DULc8LTvFgGnCk3Mg8JbAnLX4QYvFYHnMXrRUoJnGnvFnRlvFTJlQnoSTrBXHXrLYSUJgLfoMT8Se8DTrHbDb\",\n \"AbDl8SToJU8An3RbAb8ST8DUSTrGnrAgoLbFU6Db8LTrMg8AaHT8Jb8ObDl8SToJU8Pb3RlvFYoJl\"\n]\n\nconst codes = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!@#$%^&*\"\n\nfunction getHangul(code: number): string {\n if (code >= 40) {\n code = code + 168 - 40;\n } else if (code >= 19) {\n code = code + 97 - 19;\n }\n\n return toUtf8String([ 225, (code >> 6) + 132, (code & 0x3f) + 128]);\n}\n\nlet wordlist: Array = null;\n\nfunction loadWords(lang: Wordlist): void {\n if (wordlist != null) { return; }\n\n wordlist = [];\n\n data.forEach((data, length) => {\n length += 4;\n for (let i = 0; i < data.length; i += length) {\n let word = \"\";\n for (let j = 0; j < length; j++) {\n word += getHangul(codes.indexOf(data[i + j]));\n }\n wordlist.push(word)\n }\n });\n\n wordlist.sort();\n\n // Verify the computed list matches the official list\n /* istanbul ignore if */\n if (Wordlist.check(lang) !== \"0xf9eddeace9c5d3da9c93cf7d3cd38f6a13ed3affb933259ae865714e8a3ae71a\") {\n wordlist = null;\n throw new Error(\"BIP39 Wordlist for ko (Korean) FAILED\");\n }\n}\n\n\nclass LangKo extends Wordlist {\n constructor() {\n super(\"ko\");\n }\n\n getWord(index: number): string {\n loadWords(this);\n return wordlist[index];\n }\n\n getWordIndex(word: string): number {\n loadWords(this);\n return wordlist.indexOf(word);\n }\n}\n\nconst langKo = new LangKo();\nWordlist.register(langKo);\n\nexport { langKo }\n", "\"use strict\";\n\nimport { Wordlist } from \"./wordlist\";\n\nconst words = \"AbacoAbbaglioAbbinatoAbeteAbissoAbolireAbrasivoAbrogatoAccadereAccennoAccusatoAcetoneAchilleAcidoAcquaAcreAcrilicoAcrobataAcutoAdagioAddebitoAddomeAdeguatoAderireAdipeAdottareAdulareAffabileAffettoAffissoAffrantoAforismaAfosoAfricanoAgaveAgenteAgevoleAggancioAgireAgitareAgonismoAgricoloAgrumetoAguzzoAlabardaAlatoAlbatroAlberatoAlboAlbumeAlceAlcolicoAlettoneAlfaAlgebraAlianteAlibiAlimentoAllagatoAllegroAllievoAllodolaAllusivoAlmenoAlogenoAlpacaAlpestreAltalenaAlternoAlticcioAltroveAlunnoAlveoloAlzareAmalgamaAmanitaAmarenaAmbitoAmbratoAmebaAmericaAmetistaAmicoAmmassoAmmendaAmmirareAmmonitoAmoreAmpioAmpliareAmuletoAnacardoAnagrafeAnalistaAnarchiaAnatraAncaAncellaAncoraAndareAndreaAnelloAngeloAngolareAngustoAnimaAnnegareAnnidatoAnnoAnnuncioAnonimoAnticipoAnziApaticoAperturaApodeApparireAppetitoAppoggioApprodoAppuntoAprileArabicaArachideAragostaAraldicaArancioAraturaArazzoArbitroArchivioArditoArenileArgentoArgineArgutoAriaArmoniaArneseArredatoArringaArrostoArsenicoArsoArteficeArzilloAsciuttoAscoltoAsepsiAsetticoAsfaltoAsinoAsolaAspiratoAsproAssaggioAsseAssolutoAssurdoAstaAstenutoAsticeAstrattoAtavicoAteismoAtomicoAtonoAttesaAttivareAttornoAttritoAttualeAusilioAustriaAutistaAutonomoAutunnoAvanzatoAvereAvvenireAvvisoAvvolgereAzioneAzotoAzzimoAzzurroBabeleBaccanoBacinoBacoBadessaBadilataBagnatoBaitaBalconeBaldoBalenaBallataBalzanoBambinoBandireBaraondaBarbaroBarcaBaritonoBarlumeBaroccoBasilicoBassoBatostaBattutoBauleBavaBavosaBeccoBeffaBelgioBelvaBendaBenevoleBenignoBenzinaBereBerlinaBetaBibitaBiciBidoneBifidoBigaBilanciaBimboBinocoloBiologoBipedeBipolareBirbanteBirraBiscottoBisestoBisnonnoBisonteBisturiBizzarroBlandoBlattaBollitoBonificoBordoBoscoBotanicoBottinoBozzoloBraccioBradipoBramaBrancaBravuraBretellaBrevettoBrezzaBrigliaBrillanteBrindareBroccoloBrodoBronzinaBrulloBrunoBubboneBucaBudinoBuffoneBuioBulboBuonoBurloneBurrascaBussolaBustaCadettoCaducoCalamaroCalcoloCalesseCalibroCalmoCaloriaCambusaCamerataCamiciaCamminoCamolaCampaleCanapaCandelaCaneCaninoCanottoCantinaCapaceCapelloCapitoloCapogiroCapperoCapraCapsulaCarapaceCarcassaCardoCarismaCarovanaCarrettoCartolinaCasaccioCascataCasermaCasoCassoneCastelloCasualeCatastaCatenaCatrameCautoCavilloCedibileCedrataCefaloCelebreCellulareCenaCenoneCentesimoCeramicaCercareCertoCerumeCervelloCesoiaCespoCetoChelaChiaroChiccaChiedereChimeraChinaChirurgoChitarraCiaoCiclismoCifrareCignoCilindroCiottoloCircaCirrosiCitricoCittadinoCiuffoCivettaCivileClassicoClinicaCloroCoccoCodardoCodiceCoerenteCognomeCollareColmatoColoreColposoColtivatoColzaComaCometaCommandoComodoComputerComuneConcisoCondurreConfermaCongelareConiugeConnessoConoscereConsumoContinuoConvegnoCopertoCopioneCoppiaCopricapoCorazzaCordataCoricatoCorniceCorollaCorpoCorredoCorsiaCorteseCosmicoCostanteCotturaCovatoCratereCravattaCreatoCredereCremosoCrescitaCretaCricetoCrinaleCrisiCriticoCroceCronacaCrostataCrucialeCruscaCucireCuculoCuginoCullatoCupolaCuratoreCursoreCurvoCuscinoCustodeDadoDainoDalmataDamerinoDanielaDannosoDanzareDatatoDavantiDavveroDebuttoDecennioDecisoDeclinoDecolloDecretoDedicatoDefinitoDeformeDegnoDelegareDelfinoDelirioDeltaDemenzaDenotatoDentroDepositoDerapataDerivareDerogaDescrittoDesertoDesiderioDesumereDetersivoDevotoDiametroDicembreDiedroDifesoDiffusoDigerireDigitaleDiluvioDinamicoDinnanziDipintoDiplomaDipoloDiradareDireDirottoDirupoDisagioDiscretoDisfareDisgeloDispostoDistanzaDisumanoDitoDivanoDiveltoDividereDivoratoDobloneDocenteDoganaleDogmaDolceDomatoDomenicaDominareDondoloDonoDormireDoteDottoreDovutoDozzinaDragoDruidoDubbioDubitareDucaleDunaDuomoDupliceDuraturoEbanoEccessoEccoEclissiEconomiaEderaEdicolaEdileEditoriaEducareEgemoniaEgliEgoismoEgregioElaboratoElargireEleganteElencatoElettoElevareElficoElicaElmoElsaElusoEmanatoEmblemaEmessoEmiroEmotivoEmozioneEmpiricoEmuloEndemicoEnduroEnergiaEnfasiEnotecaEntrareEnzimaEpatiteEpilogoEpisodioEpocaleEppureEquatoreErarioErbaErbosoEredeEremitaErigereErmeticoEroeErosivoErranteEsagonoEsameEsanimeEsaudireEscaEsempioEsercitoEsibitoEsigenteEsistereEsitoEsofagoEsortatoEsosoEspansoEspressoEssenzaEssoEstesoEstimareEstoniaEstrosoEsultareEtilicoEtnicoEtruscoEttoEuclideoEuropaEvasoEvidenzaEvitatoEvolutoEvvivaFabbricaFaccendaFachiroFalcoFamigliaFanaleFanfaraFangoFantasmaFareFarfallaFarinosoFarmacoFasciaFastosoFasulloFaticareFatoFavolosoFebbreFecolaFedeFegatoFelpaFeltroFemminaFendereFenomenoFermentoFerroFertileFessuraFestivoFettaFeudoFiabaFiduciaFifaFiguratoFiloFinanzaFinestraFinireFioreFiscaleFisicoFiumeFlaconeFlamencoFleboFlemmaFloridoFluenteFluoroFobicoFocacciaFocosoFoderatoFoglioFolataFolcloreFolgoreFondenteFoneticoFoniaFontanaForbitoForchettaForestaFormicaFornaioForoFortezzaForzareFosfatoFossoFracassoFranaFrassinoFratelloFreccettaFrenataFrescoFrigoFrollinoFrondeFrugaleFruttaFucilataFucsiaFuggenteFulmineFulvoFumanteFumettoFumosoFuneFunzioneFuocoFurboFurgoneFuroreFusoFutileGabbianoGaffeGalateoGallinaGaloppoGamberoGammaGaranziaGarboGarofanoGarzoneGasdottoGasolioGastricoGattoGaudioGazeboGazzellaGecoGelatinaGelsoGemelloGemmatoGeneGenitoreGennaioGenotipoGergoGhepardoGhiaccioGhisaGialloGildaGineproGiocareGioielloGiornoGioveGiratoGironeGittataGiudizioGiuratoGiustoGlobuloGlutineGnomoGobbaGolfGomitoGommoneGonfioGonnaGovernoGracileGradoGraficoGrammoGrandeGrattareGravosoGraziaGrecaGreggeGrifoneGrigioGrinzaGrottaGruppoGuadagnoGuaioGuantoGuardareGufoGuidareIbernatoIconaIdenticoIdillioIdoloIdraIdricoIdrogenoIgieneIgnaroIgnoratoIlareIllesoIllogicoIlludereImballoImbevutoImboccoImbutoImmaneImmersoImmolatoImpaccoImpetoImpiegoImportoImprontaInalareInarcareInattivoIncantoIncendioInchinoIncisivoInclusoIncontroIncrocioIncuboIndagineIndiaIndoleIneditoInfattiInfilareInflittoIngaggioIngegnoIngleseIngordoIngrossoInnescoInodoreInoltrareInondatoInsanoInsettoInsiemeInsonniaInsulinaIntasatoInteroIntonacoIntuitoInumidireInvalidoInveceInvitoIperboleIpnoticoIpotesiIppicaIrideIrlandaIronicoIrrigatoIrrorareIsolatoIsotopoIstericoIstitutoIstriceItaliaIterareLabbroLabirintoLaccaLaceratoLacrimaLacunaLaddoveLagoLampoLancettaLanternaLardosoLargaLaringeLastraLatenzaLatinoLattugaLavagnaLavoroLegaleLeggeroLemboLentezzaLenzaLeoneLepreLesivoLessatoLestoLetteraleLevaLevigatoLiberoLidoLievitoLillaLimaturaLimitareLimpidoLineareLinguaLiquidoLiraLiricaLiscaLiteLitigioLivreaLocandaLodeLogicaLombareLondraLongevoLoquaceLorenzoLotoLotteriaLuceLucidatoLumacaLuminosoLungoLupoLuppoloLusingaLussoLuttoMacabroMacchinaMaceroMacinatoMadamaMagicoMagliaMagneteMagroMaiolicaMalafedeMalgradoMalintesoMalsanoMaltoMalumoreManaManciaMandorlaMangiareManifestoMannaroManovraMansardaMantideManubrioMappaMaratonaMarcireMarettaMarmoMarsupioMascheraMassaiaMastinoMaterassoMatricolaMattoneMaturoMazurcaMeandroMeccanicoMecenateMedesimoMeditareMegaMelassaMelisMelodiaMeningeMenoMensolaMercurioMerendaMerloMeschinoMeseMessereMestoloMetalloMetodoMettereMiagolareMicaMicelioMicheleMicroboMidolloMieleMiglioreMilanoMiliteMimosaMineraleMiniMinoreMirinoMirtilloMiscelaMissivaMistoMisurareMitezzaMitigareMitraMittenteMnemonicoModelloModificaModuloMoganoMogioMoleMolossoMonasteroMoncoMondinaMonetarioMonileMonotonoMonsoneMontatoMonvisoMoraMordereMorsicatoMostroMotivatoMotosegaMottoMovenzaMovimentoMozzoMuccaMucosaMuffaMughettoMugnaioMulattoMulinelloMultiploMummiaMuntoMuovereMuraleMusaMuscoloMusicaMutevoleMutoNababboNaftaNanometroNarcisoNariceNarratoNascereNastrareNaturaleNauticaNaviglioNebulosaNecrosiNegativoNegozioNemmenoNeofitaNerettoNervoNessunoNettunoNeutraleNeveNevroticoNicchiaNinfaNitidoNobileNocivoNodoNomeNominaNordicoNormaleNorvegeseNostranoNotareNotiziaNotturnoNovellaNucleoNullaNumeroNuovoNutrireNuvolaNuzialeOasiObbedireObbligoObeliscoOblioOboloObsoletoOccasioneOcchioOccidenteOccorrereOccultareOcraOculatoOdiernoOdorareOffertaOffrireOffuscatoOggettoOggiOgnunoOlandeseOlfattoOliatoOlivaOlogrammaOltreOmaggioOmbelicoOmbraOmegaOmissioneOndosoOnereOniceOnnivoroOnorevoleOntaOperatoOpinioneOppostoOracoloOrafoOrdineOrecchinoOreficeOrfanoOrganicoOrigineOrizzonteOrmaOrmeggioOrnativoOrologioOrrendoOrribileOrtensiaOrticaOrzataOrzoOsareOscurareOsmosiOspedaleOspiteOssaOssidareOstacoloOsteOtiteOtreOttagonoOttimoOttobreOvaleOvestOvinoOviparoOvocitoOvunqueOvviareOzioPacchettoPacePacificoPadellaPadronePaesePagaPaginaPalazzinaPalesarePallidoPaloPaludePandoroPannelloPaoloPaonazzoPapricaParabolaParcellaParerePargoloPariParlatoParolaPartireParvenzaParzialePassivoPasticcaPataccaPatologiaPattumePavonePeccatoPedalarePedonalePeggioPelosoPenarePendicePenisolaPennutoPenombraPensarePentolaPepePepitaPerbenePercorsoPerdonatoPerforarePergamenaPeriodoPermessoPernoPerplessoPersuasoPertugioPervasoPesatorePesistaPesoPestiferoPetaloPettinePetulantePezzoPiacerePiantaPiattinoPiccinoPicozzaPiegaPietraPifferoPigiamaPigolioPigroPilaPiliferoPillolaPilotaPimpantePinetaPinnaPinoloPioggiaPiomboPiramidePireticoPiritePirolisiPitonePizzicoPlaceboPlanarePlasmaPlatanoPlenarioPochezzaPoderosoPodismoPoesiaPoggiarePolentaPoligonoPollicePolmonitePolpettaPolsoPoltronaPolverePomicePomodoroPontePopolosoPorfidoPorosoPorporaPorrePortataPosaPositivoPossessoPostulatoPotassioPoterePranzoPrassiPraticaPreclusoPredicaPrefissoPregiatoPrelievoPremerePrenotarePreparatoPresenzaPretestoPrevalsoPrimaPrincipePrivatoProblemaProcuraProdurreProfumoProgettoProlungaPromessaPronomePropostaProrogaProtesoProvaPrudentePrugnaPruritoPsichePubblicoPudicaPugilatoPugnoPulcePulitoPulsantePuntarePupazzoPupillaPuroQuadroQualcosaQuasiQuerelaQuotaRaccoltoRaddoppioRadicaleRadunatoRafficaRagazzoRagioneRagnoRamarroRamingoRamoRandagioRantolareRapatoRapinaRappresoRasaturaRaschiatoRasenteRassegnaRastrelloRataRavvedutoRealeRecepireRecintoReclutaReconditoRecuperoRedditoRedimereRegalatoRegistroRegolaRegressoRelazioneRemareRemotoRennaReplicaReprimereReputareResaResidenteResponsoRestauroReteRetinaRetoricaRettificaRevocatoRiassuntoRibadireRibelleRibrezzoRicaricaRiccoRicevereRiciclatoRicordoRicredutoRidicoloRidurreRifasareRiflessoRiformaRifugioRigareRigettatoRighelloRilassatoRilevatoRimanereRimbalzoRimedioRimorchioRinascitaRincaroRinforzoRinnovoRinomatoRinsavitoRintoccoRinunciaRinvenireRiparatoRipetutoRipienoRiportareRipresaRipulireRisataRischioRiservaRisibileRisoRispettoRistoroRisultatoRisvoltoRitardoRitegnoRitmicoRitrovoRiunioneRivaRiversoRivincitaRivoltoRizomaRobaRoboticoRobustoRocciaRocoRodaggioRodereRoditoreRogitoRollioRomanticoRompereRonzioRosolareRospoRotanteRotondoRotulaRovescioRubizzoRubricaRugaRullinoRumineRumorosoRuoloRupeRussareRusticoSabatoSabbiareSabotatoSagomaSalassoSaldaturaSalgemmaSalivareSalmoneSaloneSaltareSalutoSalvoSapereSapidoSaporitoSaracenoSarcasmoSartoSassosoSatelliteSatiraSatolloSaturnoSavanaSavioSaziatoSbadiglioSbalzoSbancatoSbarraSbattereSbavareSbendareSbirciareSbloccatoSbocciatoSbrinareSbruffoneSbuffareScabrosoScadenzaScalaScambiareScandaloScapolaScarsoScatenareScavatoSceltoScenicoScettroSchedaSchienaSciarpaScienzaScindereScippoSciroppoScivoloSclerareScodellaScolpitoScompartoSconfortoScoprireScortaScossoneScozzeseScribaScrollareScrutinioScuderiaScultoreScuolaScuroScusareSdebitareSdoganareSeccaturaSecondoSedanoSeggiolaSegnalatoSegregatoSeguitoSelciatoSelettivoSellaSelvaggioSemaforoSembrareSemeSeminatoSempreSensoSentireSepoltoSequenzaSerataSerbatoSerenoSerioSerpenteSerraglioServireSestinaSetolaSettimanaSfaceloSfaldareSfamatoSfarzosoSfaticatoSferaSfidaSfilatoSfingeSfocatoSfoderareSfogoSfoltireSforzatoSfrattoSfruttatoSfuggitoSfumareSfusoSgabelloSgarbatoSgonfiareSgorbioSgrassatoSguardoSibiloSiccomeSierraSiglaSignoreSilenzioSillabaSimboloSimpaticoSimulatoSinfoniaSingoloSinistroSinoSintesiSinusoideSiparioSismaSistoleSituatoSlittaSlogaturaSlovenoSmarritoSmemoratoSmentitoSmeraldoSmilzoSmontareSmottatoSmussatoSnellireSnervatoSnodoSobbalzoSobrioSoccorsoSocialeSodaleSoffittoSognoSoldatoSolenneSolidoSollazzoSoloSolubileSolventeSomaticoSommaSondaSonettoSonniferoSopireSoppesoSopraSorgereSorpassoSorrisoSorsoSorteggioSorvolatoSospiroSostaSottileSpadaSpallaSpargereSpatolaSpaventoSpazzolaSpecieSpedireSpegnereSpelaturaSperanzaSpessoreSpettraleSpezzatoSpiaSpigolosoSpillatoSpinosoSpiraleSplendidoSportivoSposoSprangaSprecareSpronatoSpruzzoSpuntinoSquilloSradicareSrotolatoStabileStaccoStaffaStagnareStampatoStantioStarnutoStaseraStatutoSteloSteppaSterzoStilettoStimaStirpeStivaleStizzosoStonatoStoricoStrappoStregatoStriduloStrozzareStruttoStuccareStufoStupendoSubentroSuccosoSudoreSuggeritoSugoSultanoSuonareSuperboSupportoSurgelatoSurrogatoSussurroSuturaSvagareSvedeseSveglioSvelareSvenutoSveziaSviluppoSvistaSvizzeraSvoltaSvuotareTabaccoTabulatoTacciareTaciturnoTaleTalismanoTamponeTanninoTaraTardivoTargatoTariffaTarpareTartarugaTastoTatticoTavernaTavolataTazzaTecaTecnicoTelefonoTemerarioTempoTemutoTendoneTeneroTensioneTentacoloTeoremaTermeTerrazzoTerzettoTesiTesseratoTestatoTetroTettoiaTifareTigellaTimbroTintoTipicoTipografoTiraggioTiroTitanioTitoloTitubanteTizioTizzoneToccareTollerareToltoTombolaTomoTonfoTonsillaTopazioTopologiaToppaTorbaTornareTorroneTortoraToscanoTossireTostaturaTotanoTraboccoTracheaTrafilaTragediaTralcioTramontoTransitoTrapanoTrarreTraslocoTrattatoTraveTrecciaTremolioTrespoloTributoTrichecoTrifoglioTrilloTrinceaTrioTristezzaTrituratoTrivellaTrombaTronoTroppoTrottolaTrovareTruccatoTubaturaTuffatoTulipanoTumultoTunisiaTurbareTurchinoTutaTutelaUbicatoUccelloUccisoreUdireUditivoUffaUfficioUgualeUlisseUltimatoUmanoUmileUmorismoUncinettoUngereUnghereseUnicornoUnificatoUnisonoUnitarioUnteUovoUpupaUraganoUrgenzaUrloUsanzaUsatoUscitoUsignoloUsuraioUtensileUtilizzoUtopiaVacanteVaccinatoVagabondoVagliatoValangaValgoValicoVallettaValorosoValutareValvolaVampataVangareVanitosoVanoVantaggioVanveraVaporeVaranoVarcatoVarianteVascaVedettaVedovaVedutoVegetaleVeicoloVelcroVelinaVellutoVeloceVenatoVendemmiaVentoVeraceVerbaleVergognaVerificaVeroVerrucaVerticaleVescicaVessilloVestaleVeteranoVetrinaVetustoViandanteVibranteVicendaVichingoVicinanzaVidimareVigiliaVignetoVigoreVileVillanoViminiVincitoreViolaViperaVirgolaVirologoVirulentoViscosoVisioneVispoVissutoVisuraVitaVitelloVittimaVivandaVividoViziareVoceVogaVolatileVolereVolpeVoragineVulcanoZampognaZannaZappatoZatteraZavorraZefiroZelanteZeloZenzeroZerbinoZibettoZincoZirconeZittoZollaZoticoZuccheroZufoloZuluZuppa\";\n\nlet wordlist: Array = null;\n\nfunction loadWords(lang: Wordlist): void {\n if (wordlist != null) { return; }\n wordlist = words.replace(/([A-Z])/g, \" $1\").toLowerCase().substring(1).split(\" \");\n\n // Verify the computed list matches the official list\n /* istanbul ignore if */\n if (Wordlist.check(lang) !== \"0x5c1362d88fd4cf614a96f3234941d29f7d37c08c5292fde03bf62c2db6ff7620\") {\n wordlist = null;\n throw new Error(\"BIP39 Wordlist for it (Italian) FAILED\");\n }\n}\n\nclass LangIt extends Wordlist {\n constructor() {\n super(\"it\");\n }\n\n getWord(index: number): string {\n loadWords(this);\n return wordlist[index];\n }\n\n getWordIndex(word: string): number {\n loadWords(this);\n return wordlist.indexOf(word);\n }\n}\n\nconst langIt = new LangIt();\nWordlist.register(langIt);\n\nexport { langIt }\n", "\"use strict\";\n\nimport { toUtf8String } from \"@ethersproject/strings\";\n\nimport { Wordlist } from \"./wordlist\";\n\n\nconst data = \"}aE#4A=Yv&co#4N#6G=cJ&SM#66|/Z#4t&kn~46#4K~4q%b9=IR#7l,mB#7W_X2*dl}Uo~7s}Uf&Iw#9c&cw~6O&H6&wx&IG%v5=IQ~8a&Pv#47$PR&50%Ko&QM&3l#5f,D9#4L|/H&tQ;v0~6n]nN } = {\n zh_cn: null,\n zh_tw: null\n}\n\nconst Checks: { [key: string]: string } = {\n zh_cn: \"0x17bcc4d8547e5a7135e365d1ab443aaae95e76d8230c2782c67305d4f21497a1\",\n zh_tw: \"0x51e720e90c7b87bec1d70eb6e74a21a449bd3ec9c020b01d3a40ed991b60ce5d\"\n}\n\nconst codes = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";\nconst style = \"~!@#$%^&*_-=[]{}|;:,.()<>?\"\n\nfunction loadWords(lang: Wordlist) {\n if (wordlist[lang.locale] !== null) { return; }\n\n wordlist[lang.locale] = [];\n\n let deltaOffset = 0;\n for (let i = 0; i < 2048; i++) {\n const s = style.indexOf(data[i * 3]);\n const bytes = [\n 228 + (s >> 2),\n 128 + codes.indexOf(data[i * 3 + 1]),\n 128 + codes.indexOf(data[i * 3 + 2]),\n ];\n\n if (lang.locale === \"zh_tw\") {\n const common = s % 4;\n for (let i = common; i < 3; i++) {\n bytes[i] = codes.indexOf(deltaData[deltaOffset++]) + ((i == 0) ? 228: 128);\n }\n }\n\n wordlist[lang.locale].push(toUtf8String(bytes));\n }\n\n // Verify the computed list matches the official list\n /* istanbul ignore if */\n if (Wordlist.check(lang) !== Checks[lang.locale]) {\n wordlist[lang.locale] = null;\n throw new Error(\"BIP39 Wordlist for \" + lang.locale + \" (Chinese) FAILED\");\n }\n}\n\nclass LangZh extends Wordlist {\n constructor(country: string) {\n super(\"zh_\" + country);\n }\n\n getWord(index: number): string {\n loadWords(this);\n return wordlist[this.locale][index];\n }\n\n getWordIndex(word: string): number {\n loadWords(this);\n return wordlist[this.locale].indexOf(word);\n }\n\n split(mnemonic: string): Array {\n mnemonic = mnemonic.replace(/(?:\\u3000| )+/g, \"\");\n return mnemonic.split(\"\");\n }\n}\n\nconst langZhCn = new LangZh(\"cn\");\nWordlist.register(langZhCn);\nWordlist.register(langZhCn, \"zh\");\n\nconst langZhTw = new LangZh(\"tw\");\nWordlist.register(langZhTw);\n\nexport { langZhCn, langZhTw };\n", "import { Wordlist } from \"./wordlist\";\n\nimport { langCz as cz } from \"./lang-cz\";\nimport { langEn as en } from \"./lang-en\";\nimport { langEs as es } from \"./lang-es\";\nimport { langFr as fr } from \"./lang-fr\";\nimport { langJa as ja } from \"./lang-ja\";\nimport { langKo as ko } from \"./lang-ko\";\nimport { langIt as it } from \"./lang-it\";\nimport { langZhCn as zh_cn, langZhTw as zh_tw } from \"./lang-zh\";\n\nexport const wordlists: { [ locale: string ]: Wordlist } = {\n cz: cz,\n en: en,\n es: es,\n fr: fr,\n it: it,\n ja: ja,\n ko: ko,\n zh: zh_cn,\n zh_cn: zh_cn,\n zh_tw: zh_tw\n};\n\n\n", "\"use strict\";\n\n// Wordlists\n// See: https://github.com/bitcoin/bips/blob/master/bip-0039/bip-0039-wordlists.md\n\nimport { logger, Wordlist } from \"./wordlist\";\n\nimport { wordlists } from \"./wordlists\";\n\nexport {\n logger,\n Wordlist,\n wordlists\n}\n", "export const version = \"hdnode/5.7.0\";\n", "\"use strict\";\n\n// See: https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki\n// See: https://github.com/bitcoin/bips/blob/master/bip-0039.mediawiki\n\n\nimport { ExternallyOwnedAccount } from \"@ethersproject/abstract-signer\";\nimport { Base58 } from \"@ethersproject/basex\";\nimport { arrayify, BytesLike, concat, hexDataSlice, hexZeroPad, hexlify } from \"@ethersproject/bytes\";\nimport { BigNumber } from \"@ethersproject/bignumber\";\nimport { toUtf8Bytes, UnicodeNormalizationForm } from \"@ethersproject/strings\";\nimport { pbkdf2 } from \"@ethersproject/pbkdf2\";\nimport { defineReadOnly } from \"@ethersproject/properties\";\nimport { SigningKey } from \"@ethersproject/signing-key\";\nimport { computeHmac, ripemd160, sha256, SupportedAlgorithm } from \"@ethersproject/sha2\";\nimport { computeAddress } from \"@ethersproject/transactions\";\nimport { Wordlist, wordlists } from \"@ethersproject/wordlists\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nconst N = BigNumber.from(\"0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141\");\n\n\n// \"Bitcoin seed\"\nconst MasterSecret = toUtf8Bytes(\"Bitcoin seed\");\n\nconst HardenedBit = 0x80000000;\n\n// Returns a byte with the MSB bits set\nfunction getUpperMask(bits: number): number {\n return ((1 << bits) - 1) << (8 - bits);\n}\n\n// Returns a byte with the LSB bits set\nfunction getLowerMask(bits: number): number {\n return (1 << bits) - 1;\n}\n\nfunction bytes32(value: BigNumber | Uint8Array): string {\n return hexZeroPad(hexlify(value), 32);\n}\n\nfunction base58check(data: Uint8Array): string {\n return Base58.encode(concat([ data, hexDataSlice(sha256(sha256(data)), 0, 4) ]));\n}\n\nfunction getWordlist(wordlist: string | Wordlist): Wordlist {\n if (wordlist == null) {\n return wordlists[\"en\"];\n }\n\n if (typeof(wordlist) === \"string\") {\n const words = wordlists[wordlist];\n if (words == null) {\n logger.throwArgumentError(\"unknown locale\", \"wordlist\", wordlist);\n }\n return words;\n }\n\n return wordlist;\n}\n\nconst _constructorGuard: any = {};\n\nexport const defaultPath = \"m/44'/60'/0'/0/0\";\n\nexport interface Mnemonic {\n readonly phrase: string;\n readonly path: string;\n readonly locale: string;\n};\n\nexport class HDNode implements ExternallyOwnedAccount {\n readonly privateKey: string;\n readonly publicKey: string;\n\n readonly fingerprint: string;\n readonly parentFingerprint: string;\n\n readonly address: string;\n\n readonly mnemonic?: Mnemonic;\n readonly path: string;\n\n readonly chainCode: string;\n\n readonly index: number;\n readonly depth: number;\n\n /**\n * This constructor should not be called directly.\n *\n * Please use:\n * - fromMnemonic\n * - fromSeed\n */\n constructor(constructorGuard: any, privateKey: string, publicKey: string, parentFingerprint: string, chainCode: string, index: number, depth: number, mnemonicOrPath: Mnemonic | string) {\n /* istanbul ignore if */\n if (constructorGuard !== _constructorGuard) {\n throw new Error(\"HDNode constructor cannot be called directly\");\n }\n\n if (privateKey) {\n const signingKey = new SigningKey(privateKey);\n defineReadOnly(this, \"privateKey\", signingKey.privateKey);\n defineReadOnly(this, \"publicKey\", signingKey.compressedPublicKey);\n } else {\n defineReadOnly(this, \"privateKey\", null);\n defineReadOnly(this, \"publicKey\", hexlify(publicKey));\n }\n\n defineReadOnly(this, \"parentFingerprint\", parentFingerprint);\n defineReadOnly(this, \"fingerprint\", hexDataSlice(ripemd160(sha256(this.publicKey)), 0, 4));\n\n defineReadOnly(this, \"address\", computeAddress(this.publicKey));\n\n defineReadOnly(this, \"chainCode\", chainCode);\n\n defineReadOnly(this, \"index\", index);\n defineReadOnly(this, \"depth\", depth);\n\n if (mnemonicOrPath == null) {\n // From a source that does not preserve the path (e.g. extended keys)\n defineReadOnly(this, \"mnemonic\", null);\n defineReadOnly(this, \"path\", null);\n\n } else if (typeof(mnemonicOrPath) === \"string\") {\n // From a source that does not preserve the mnemonic (e.g. neutered)\n defineReadOnly(this, \"mnemonic\", null);\n defineReadOnly(this, \"path\", mnemonicOrPath);\n\n } else {\n // From a fully qualified source\n defineReadOnly(this, \"mnemonic\", mnemonicOrPath);\n defineReadOnly(this, \"path\", mnemonicOrPath.path);\n }\n }\n\n get extendedKey(): string {\n // We only support the mainnet values for now, but if anyone needs\n // testnet values, let me know. I believe current sentiment is that\n // we should always use mainnet, and use BIP-44 to derive the network\n // - Mainnet: public=0x0488B21E, private=0x0488ADE4\n // - Testnet: public=0x043587CF, private=0x04358394\n\n if (this.depth >= 256) { throw new Error(\"Depth too large!\"); }\n\n return base58check(concat([\n ((this.privateKey != null) ? \"0x0488ADE4\": \"0x0488B21E\"),\n hexlify(this.depth),\n this.parentFingerprint,\n hexZeroPad(hexlify(this.index), 4),\n this.chainCode,\n ((this.privateKey != null) ? concat([ \"0x00\", this.privateKey ]): this.publicKey),\n ]));\n }\n\n neuter(): HDNode {\n return new HDNode(_constructorGuard, null, this.publicKey, this.parentFingerprint, this.chainCode, this.index, this.depth, this.path);\n }\n\n private _derive(index: number): HDNode {\n if (index > 0xffffffff) { throw new Error(\"invalid index - \" + String(index)); }\n\n // Base path\n let path = this.path;\n if (path) { path += \"/\" + (index & ~HardenedBit); }\n\n const data = new Uint8Array(37);\n\n if (index & HardenedBit) {\n if (!this.privateKey) {\n throw new Error(\"cannot derive child of neutered node\");\n }\n\n // Data = 0x00 || ser_256(k_par)\n data.set(arrayify(this.privateKey), 1);\n\n // Hardened path\n if (path) { path += \"'\"; }\n\n } else {\n // Data = ser_p(point(k_par))\n data.set(arrayify(this.publicKey));\n }\n\n // Data += ser_32(i)\n for (let i = 24; i >= 0; i -= 8) { data[33 + (i >> 3)] = ((index >> (24 - i)) & 0xff); }\n\n const I = arrayify(computeHmac(SupportedAlgorithm.sha512, this.chainCode, data));\n const IL = I.slice(0, 32);\n const IR = I.slice(32);\n\n // The private key\n let ki: string = null\n\n // The public key\n let Ki: string = null;\n\n if (this.privateKey) {\n ki = bytes32(BigNumber.from(IL).add(this.privateKey).mod(N));\n } else {\n const ek = new SigningKey(hexlify(IL));\n Ki = ek._addPoint(this.publicKey);\n }\n\n let mnemonicOrPath: Mnemonic | string = path;\n\n const srcMnemonic = this.mnemonic;\n if (srcMnemonic) {\n mnemonicOrPath = Object.freeze({\n phrase: srcMnemonic.phrase,\n path: path,\n locale: (srcMnemonic.locale || \"en\")\n });\n }\n\n return new HDNode(_constructorGuard, ki, Ki, this.fingerprint, bytes32(IR), index, this.depth + 1, mnemonicOrPath);\n }\n\n derivePath(path: string): HDNode {\n const components = path.split(\"/\");\n\n if (components.length === 0 || (components[0] === \"m\" && this.depth !== 0)) {\n throw new Error(\"invalid path - \" + path);\n }\n\n if (components[0] === \"m\") { components.shift(); }\n\n let result: HDNode = this;\n for (let i = 0; i < components.length; i++) {\n const component = components[i];\n if (component.match(/^[0-9]+'$/)) {\n const index = parseInt(component.substring(0, component.length - 1));\n if (index >= HardenedBit) { throw new Error(\"invalid path index - \" + component); }\n result = result._derive(HardenedBit + index);\n } else if (component.match(/^[0-9]+$/)) {\n const index = parseInt(component);\n if (index >= HardenedBit) { throw new Error(\"invalid path index - \" + component); }\n result = result._derive(index);\n } else {\n throw new Error(\"invalid path component - \" + component);\n }\n }\n\n return result;\n }\n\n\n static _fromSeed(seed: BytesLike, mnemonic: Mnemonic): HDNode {\n const seedArray: Uint8Array = arrayify(seed);\n if (seedArray.length < 16 || seedArray.length > 64) { throw new Error(\"invalid seed\"); }\n\n const I: Uint8Array = arrayify(computeHmac(SupportedAlgorithm.sha512, MasterSecret, seedArray));\n\n return new HDNode(_constructorGuard, bytes32(I.slice(0, 32)), null, \"0x00000000\", bytes32(I.slice(32)), 0, 0, mnemonic);\n }\n\n static fromMnemonic(mnemonic: string, password?: string, wordlist?: string | Wordlist): HDNode {\n\n // If a locale name was passed in, find the associated wordlist\n wordlist = getWordlist(wordlist);\n\n // Normalize the case and spacing in the mnemonic (throws if the mnemonic is invalid)\n mnemonic = entropyToMnemonic(mnemonicToEntropy(mnemonic, wordlist), wordlist);\n\n return HDNode._fromSeed(mnemonicToSeed(mnemonic, password), {\n phrase: mnemonic,\n path: \"m\",\n locale: wordlist.locale\n });\n }\n\n static fromSeed(seed: BytesLike): HDNode {\n return HDNode._fromSeed(seed, null);\n }\n\n static fromExtendedKey(extendedKey: string): HDNode {\n const bytes = Base58.decode(extendedKey);\n\n if (bytes.length !== 82 || base58check(bytes.slice(0, 78)) !== extendedKey) {\n logger.throwArgumentError(\"invalid extended key\", \"extendedKey\", \"[REDACTED]\");\n }\n\n const depth = bytes[4];\n const parentFingerprint = hexlify(bytes.slice(5, 9));\n const index = parseInt(hexlify(bytes.slice(9, 13)).substring(2), 16);\n const chainCode = hexlify(bytes.slice(13, 45));\n const key = bytes.slice(45, 78);\n\n switch (hexlify(bytes.slice(0, 4))) {\n // Public Key\n case \"0x0488b21e\": case \"0x043587cf\":\n return new HDNode(_constructorGuard, null, hexlify(key), parentFingerprint, chainCode, index, depth, null);\n\n // Private Key\n case \"0x0488ade4\": case \"0x04358394 \":\n if (key[0] !== 0) { break; }\n return new HDNode(_constructorGuard, hexlify(key.slice(1)), null, parentFingerprint, chainCode, index, depth, null);\n }\n\n return logger.throwArgumentError(\"invalid extended key\", \"extendedKey\", \"[REDACTED]\");\n }\n}\n\nexport function mnemonicToSeed(mnemonic: string, password?: string): string {\n if (!password) { password = \"\"; }\n\n const salt = toUtf8Bytes(\"mnemonic\" + password, UnicodeNormalizationForm.NFKD);\n\n return pbkdf2(toUtf8Bytes(mnemonic, UnicodeNormalizationForm.NFKD), salt, 2048, 64, \"sha512\");\n}\n\nexport function mnemonicToEntropy(mnemonic: string, wordlist?: string | Wordlist): string {\n wordlist = getWordlist(wordlist);\n\n logger.checkNormalize();\n\n const words = wordlist.split(mnemonic);\n if ((words.length % 3) !== 0) { throw new Error(\"invalid mnemonic\"); }\n\n const entropy = arrayify(new Uint8Array(Math.ceil(11 * words.length / 8)));\n\n let offset = 0;\n for (let i = 0; i < words.length; i++) {\n let index = wordlist.getWordIndex(words[i].normalize(\"NFKD\"));\n if (index === -1) { throw new Error(\"invalid mnemonic\"); }\n\n for (let bit = 0; bit < 11; bit++) {\n if (index & (1 << (10 - bit))) {\n entropy[offset >> 3] |= (1 << (7 - (offset % 8)));\n }\n offset++;\n }\n }\n\n const entropyBits = 32 * words.length / 3;\n\n const checksumBits = words.length / 3;\n const checksumMask = getUpperMask(checksumBits);\n\n const checksum = arrayify(sha256(entropy.slice(0, entropyBits / 8)))[0] & checksumMask;\n\n if (checksum !== (entropy[entropy.length - 1] & checksumMask)) {\n throw new Error(\"invalid checksum\");\n }\n\n return hexlify(entropy.slice(0, entropyBits / 8));\n}\n\nexport function entropyToMnemonic(entropy: BytesLike, wordlist?: string | Wordlist): string {\n wordlist = getWordlist(wordlist);\n\n entropy = arrayify(entropy);\n\n if ((entropy.length % 4) !== 0 || entropy.length < 16 || entropy.length > 32) {\n throw new Error(\"invalid entropy\");\n }\n\n const indices: Array = [ 0 ];\n\n let remainingBits = 11;\n for (let i = 0; i < entropy.length; i++) {\n\n // Consume the whole byte (with still more to go)\n if (remainingBits > 8) {\n indices[indices.length - 1] <<= 8;\n indices[indices.length - 1] |= entropy[i];\n\n remainingBits -= 8;\n\n // This byte will complete an 11-bit index\n } else {\n indices[indices.length - 1] <<= remainingBits;\n indices[indices.length - 1] |= entropy[i] >> (8 - remainingBits);\n\n // Start the next word\n indices.push(entropy[i] & getLowerMask(8 - remainingBits));\n\n remainingBits += 3;\n }\n }\n\n // Compute the checksum bits\n const checksumBits = entropy.length / 4;\n const checksum = arrayify(sha256(entropy))[0] & getUpperMask(checksumBits);\n\n // Shift the checksum into the word indices\n indices[indices.length - 1] <<= checksumBits;\n indices[indices.length - 1] |= (checksum >> (8 - checksumBits));\n\n return wordlist.join(indices.map((index) => (wordlist).getWord(index)));\n}\n\nexport function isValidMnemonic(mnemonic: string, wordlist?: Wordlist): boolean {\n try {\n mnemonicToEntropy(mnemonic, wordlist);\n return true;\n } catch (error) { }\n return false;\n}\n\nexport function getAccountPath(index: number): string {\n if (typeof(index) !== \"number\" || index < 0 || index >= HardenedBit || index % 1) {\n logger.throwArgumentError(\"invalid account index\", \"index\", index);\n }\n return `m/44'/60'/${ index }'/0/0`;\n}\n", "import { randomBytes as _randomBytes } from \"crypto\";\n\nimport { arrayify } from \"@ethersproject/bytes\";\n\nexport function randomBytes(length: number): Uint8Array {\n return arrayify(_randomBytes(length));\n}\n", "\"use strict\";\n\nexport function shuffled(array: Array): Array {\n array = array.slice();\n\n for (let i = array.length - 1; i > 0; i--) {\n const j = Math.floor(Math.random() * (i + 1));\n const tmp = array[i];\n array[i] = array[j];\n array[j] = tmp;\n }\n\n return array;\n}\n", "\"use strict\";\n\nexport { randomBytes } from \"./random\";\nexport { shuffled } from \"./shuffle\";\n", "\"use strict\";\n\n(function(root) {\n\n function checkInt(value) {\n return (parseInt(value) === value);\n }\n\n function checkInts(arrayish) {\n if (!checkInt(arrayish.length)) { return false; }\n\n for (var i = 0; i < arrayish.length; i++) {\n if (!checkInt(arrayish[i]) || arrayish[i] < 0 || arrayish[i] > 255) {\n return false;\n }\n }\n\n return true;\n }\n\n function coerceArray(arg, copy) {\n\n // ArrayBuffer view\n if (arg.buffer && ArrayBuffer.isView(arg) && arg.name === 'Uint8Array') {\n\n if (copy) {\n if (arg.slice) {\n arg = arg.slice();\n } else {\n arg = Array.prototype.slice.call(arg);\n }\n }\n\n return arg;\n }\n\n // It's an array; check it is a valid representation of a byte\n if (Array.isArray(arg)) {\n if (!checkInts(arg)) {\n throw new Error('Array contains invalid value: ' + arg);\n }\n\n return new Uint8Array(arg);\n }\n\n // Something else, but behaves like an array (maybe a Buffer? Arguments?)\n if (checkInt(arg.length) && checkInts(arg)) {\n return new Uint8Array(arg);\n }\n\n throw new Error('unsupported array-like object');\n }\n\n function createArray(length) {\n return new Uint8Array(length);\n }\n\n function copyArray(sourceArray, targetArray, targetStart, sourceStart, sourceEnd) {\n if (sourceStart != null || sourceEnd != null) {\n if (sourceArray.slice) {\n sourceArray = sourceArray.slice(sourceStart, sourceEnd);\n } else {\n sourceArray = Array.prototype.slice.call(sourceArray, sourceStart, sourceEnd);\n }\n }\n targetArray.set(sourceArray, targetStart);\n }\n\n\n\n var convertUtf8 = (function() {\n function toBytes(text) {\n var result = [], i = 0;\n text = encodeURI(text);\n while (i < text.length) {\n var c = text.charCodeAt(i++);\n\n // if it is a % sign, encode the following 2 bytes as a hex value\n if (c === 37) {\n result.push(parseInt(text.substr(i, 2), 16))\n i += 2;\n\n // otherwise, just the actual byte\n } else {\n result.push(c)\n }\n }\n\n return coerceArray(result);\n }\n\n function fromBytes(bytes) {\n var result = [], i = 0;\n\n while (i < bytes.length) {\n var c = bytes[i];\n\n if (c < 128) {\n result.push(String.fromCharCode(c));\n i++;\n } else if (c > 191 && c < 224) {\n result.push(String.fromCharCode(((c & 0x1f) << 6) | (bytes[i + 1] & 0x3f)));\n i += 2;\n } else {\n result.push(String.fromCharCode(((c & 0x0f) << 12) | ((bytes[i + 1] & 0x3f) << 6) | (bytes[i + 2] & 0x3f)));\n i += 3;\n }\n }\n\n return result.join('');\n }\n\n return {\n toBytes: toBytes,\n fromBytes: fromBytes,\n }\n })();\n\n var convertHex = (function() {\n function toBytes(text) {\n var result = [];\n for (var i = 0; i < text.length; i += 2) {\n result.push(parseInt(text.substr(i, 2), 16));\n }\n\n return result;\n }\n\n // http://ixti.net/development/javascript/2011/11/11/base64-encodedecode-of-utf8-in-browser-with-js.html\n var Hex = '0123456789abcdef';\n\n function fromBytes(bytes) {\n var result = [];\n for (var i = 0; i < bytes.length; i++) {\n var v = bytes[i];\n result.push(Hex[(v & 0xf0) >> 4] + Hex[v & 0x0f]);\n }\n return result.join('');\n }\n\n return {\n toBytes: toBytes,\n fromBytes: fromBytes,\n }\n })();\n\n\n // Number of rounds by keysize\n var numberOfRounds = {16: 10, 24: 12, 32: 14}\n\n // Round constant words\n var rcon = [0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c, 0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a, 0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5, 0x91];\n\n // S-box and Inverse S-box (S is for Substitution)\n var S = [0x63, 0x7c, 0x77, 0x7b, 0xf2, 0x6b, 0x6f, 0xc5, 0x30, 0x01, 0x67, 0x2b, 0xfe, 0xd7, 0xab, 0x76, 0xca, 0x82, 0xc9, 0x7d, 0xfa, 0x59, 0x47, 0xf0, 0xad, 0xd4, 0xa2, 0xaf, 0x9c, 0xa4, 0x72, 0xc0, 0xb7, 0xfd, 0x93, 0x26, 0x36, 0x3f, 0xf7, 0xcc, 0x34, 0xa5, 0xe5, 0xf1, 0x71, 0xd8, 0x31, 0x15, 0x04, 0xc7, 0x23, 0xc3, 0x18, 0x96, 0x05, 0x9a, 0x07, 0x12, 0x80, 0xe2, 0xeb, 0x27, 0xb2, 0x75, 0x09, 0x83, 0x2c, 0x1a, 0x1b, 0x6e, 0x5a, 0xa0, 0x52, 0x3b, 0xd6, 0xb3, 0x29, 0xe3, 0x2f, 0x84, 0x53, 0xd1, 0x00, 0xed, 0x20, 0xfc, 0xb1, 0x5b, 0x6a, 0xcb, 0xbe, 0x39, 0x4a, 0x4c, 0x58, 0xcf, 0xd0, 0xef, 0xaa, 0xfb, 0x43, 0x4d, 0x33, 0x85, 0x45, 0xf9, 0x02, 0x7f, 0x50, 0x3c, 0x9f, 0xa8, 0x51, 0xa3, 0x40, 0x8f, 0x92, 0x9d, 0x38, 0xf5, 0xbc, 0xb6, 0xda, 0x21, 0x10, 0xff, 0xf3, 0xd2, 0xcd, 0x0c, 0x13, 0xec, 0x5f, 0x97, 0x44, 0x17, 0xc4, 0xa7, 0x7e, 0x3d, 0x64, 0x5d, 0x19, 0x73, 0x60, 0x81, 0x4f, 0xdc, 0x22, 0x2a, 0x90, 0x88, 0x46, 0xee, 0xb8, 0x14, 0xde, 0x5e, 0x0b, 0xdb, 0xe0, 0x32, 0x3a, 0x0a, 0x49, 0x06, 0x24, 0x5c, 0xc2, 0xd3, 0xac, 0x62, 0x91, 0x95, 0xe4, 0x79, 0xe7, 0xc8, 0x37, 0x6d, 0x8d, 0xd5, 0x4e, 0xa9, 0x6c, 0x56, 0xf4, 0xea, 0x65, 0x7a, 0xae, 0x08, 0xba, 0x78, 0x25, 0x2e, 0x1c, 0xa6, 0xb4, 0xc6, 0xe8, 0xdd, 0x74, 0x1f, 0x4b, 0xbd, 0x8b, 0x8a, 0x70, 0x3e, 0xb5, 0x66, 0x48, 0x03, 0xf6, 0x0e, 0x61, 0x35, 0x57, 0xb9, 0x86, 0xc1, 0x1d, 0x9e, 0xe1, 0xf8, 0x98, 0x11, 0x69, 0xd9, 0x8e, 0x94, 0x9b, 0x1e, 0x87, 0xe9, 0xce, 0x55, 0x28, 0xdf, 0x8c, 0xa1, 0x89, 0x0d, 0xbf, 0xe6, 0x42, 0x68, 0x41, 0x99, 0x2d, 0x0f, 0xb0, 0x54, 0xbb, 0x16];\n var Si =[0x52, 0x09, 0x6a, 0xd5, 0x30, 0x36, 0xa5, 0x38, 0xbf, 0x40, 0xa3, 0x9e, 0x81, 0xf3, 0xd7, 0xfb, 0x7c, 0xe3, 0x39, 0x82, 0x9b, 0x2f, 0xff, 0x87, 0x34, 0x8e, 0x43, 0x44, 0xc4, 0xde, 0xe9, 0xcb, 0x54, 0x7b, 0x94, 0x32, 0xa6, 0xc2, 0x23, 0x3d, 0xee, 0x4c, 0x95, 0x0b, 0x42, 0xfa, 0xc3, 0x4e, 0x08, 0x2e, 0xa1, 0x66, 0x28, 0xd9, 0x24, 0xb2, 0x76, 0x5b, 0xa2, 0x49, 0x6d, 0x8b, 0xd1, 0x25, 0x72, 0xf8, 0xf6, 0x64, 0x86, 0x68, 0x98, 0x16, 0xd4, 0xa4, 0x5c, 0xcc, 0x5d, 0x65, 0xb6, 0x92, 0x6c, 0x70, 0x48, 0x50, 0xfd, 0xed, 0xb9, 0xda, 0x5e, 0x15, 0x46, 0x57, 0xa7, 0x8d, 0x9d, 0x84, 0x90, 0xd8, 0xab, 0x00, 0x8c, 0xbc, 0xd3, 0x0a, 0xf7, 0xe4, 0x58, 0x05, 0xb8, 0xb3, 0x45, 0x06, 0xd0, 0x2c, 0x1e, 0x8f, 0xca, 0x3f, 0x0f, 0x02, 0xc1, 0xaf, 0xbd, 0x03, 0x01, 0x13, 0x8a, 0x6b, 0x3a, 0x91, 0x11, 0x41, 0x4f, 0x67, 0xdc, 0xea, 0x97, 0xf2, 0xcf, 0xce, 0xf0, 0xb4, 0xe6, 0x73, 0x96, 0xac, 0x74, 0x22, 0xe7, 0xad, 0x35, 0x85, 0xe2, 0xf9, 0x37, 0xe8, 0x1c, 0x75, 0xdf, 0x6e, 0x47, 0xf1, 0x1a, 0x71, 0x1d, 0x29, 0xc5, 0x89, 0x6f, 0xb7, 0x62, 0x0e, 0xaa, 0x18, 0xbe, 0x1b, 0xfc, 0x56, 0x3e, 0x4b, 0xc6, 0xd2, 0x79, 0x20, 0x9a, 0xdb, 0xc0, 0xfe, 0x78, 0xcd, 0x5a, 0xf4, 0x1f, 0xdd, 0xa8, 0x33, 0x88, 0x07, 0xc7, 0x31, 0xb1, 0x12, 0x10, 0x59, 0x27, 0x80, 0xec, 0x5f, 0x60, 0x51, 0x7f, 0xa9, 0x19, 0xb5, 0x4a, 0x0d, 0x2d, 0xe5, 0x7a, 0x9f, 0x93, 0xc9, 0x9c, 0xef, 0xa0, 0xe0, 0x3b, 0x4d, 0xae, 0x2a, 0xf5, 0xb0, 0xc8, 0xeb, 0xbb, 0x3c, 0x83, 0x53, 0x99, 0x61, 0x17, 0x2b, 0x04, 0x7e, 0xba, 0x77, 0xd6, 0x26, 0xe1, 0x69, 0x14, 0x63, 0x55, 0x21, 0x0c, 0x7d];\n\n // Transformations for encryption\n var T1 = [0xc66363a5, 0xf87c7c84, 0xee777799, 0xf67b7b8d, 0xfff2f20d, 0xd66b6bbd, 0xde6f6fb1, 0x91c5c554, 0x60303050, 0x02010103, 0xce6767a9, 0x562b2b7d, 0xe7fefe19, 0xb5d7d762, 0x4dababe6, 0xec76769a, 0x8fcaca45, 0x1f82829d, 0x89c9c940, 0xfa7d7d87, 0xeffafa15, 0xb25959eb, 0x8e4747c9, 0xfbf0f00b, 0x41adadec, 0xb3d4d467, 0x5fa2a2fd, 0x45afafea, 0x239c9cbf, 0x53a4a4f7, 0xe4727296, 0x9bc0c05b, 0x75b7b7c2, 0xe1fdfd1c, 0x3d9393ae, 0x4c26266a, 0x6c36365a, 0x7e3f3f41, 0xf5f7f702, 0x83cccc4f, 0x6834345c, 0x51a5a5f4, 0xd1e5e534, 0xf9f1f108, 0xe2717193, 0xabd8d873, 0x62313153, 0x2a15153f, 0x0804040c, 0x95c7c752, 0x46232365, 0x9dc3c35e, 0x30181828, 0x379696a1, 0x0a05050f, 0x2f9a9ab5, 0x0e070709, 0x24121236, 0x1b80809b, 0xdfe2e23d, 0xcdebeb26, 0x4e272769, 0x7fb2b2cd, 0xea75759f, 0x1209091b, 0x1d83839e, 0x582c2c74, 0x341a1a2e, 0x361b1b2d, 0xdc6e6eb2, 0xb45a5aee, 0x5ba0a0fb, 0xa45252f6, 0x763b3b4d, 0xb7d6d661, 0x7db3b3ce, 0x5229297b, 0xdde3e33e, 0x5e2f2f71, 0x13848497, 0xa65353f5, 0xb9d1d168, 0x00000000, 0xc1eded2c, 0x40202060, 0xe3fcfc1f, 0x79b1b1c8, 0xb65b5bed, 0xd46a6abe, 0x8dcbcb46, 0x67bebed9, 0x7239394b, 0x944a4ade, 0x984c4cd4, 0xb05858e8, 0x85cfcf4a, 0xbbd0d06b, 0xc5efef2a, 0x4faaaae5, 0xedfbfb16, 0x864343c5, 0x9a4d4dd7, 0x66333355, 0x11858594, 0x8a4545cf, 0xe9f9f910, 0x04020206, 0xfe7f7f81, 0xa05050f0, 0x783c3c44, 0x259f9fba, 0x4ba8a8e3, 0xa25151f3, 0x5da3a3fe, 0x804040c0, 0x058f8f8a, 0x3f9292ad, 0x219d9dbc, 0x70383848, 0xf1f5f504, 0x63bcbcdf, 0x77b6b6c1, 0xafdada75, 0x42212163, 0x20101030, 0xe5ffff1a, 0xfdf3f30e, 0xbfd2d26d, 0x81cdcd4c, 0x180c0c14, 0x26131335, 0xc3ecec2f, 0xbe5f5fe1, 0x359797a2, 0x884444cc, 0x2e171739, 0x93c4c457, 0x55a7a7f2, 0xfc7e7e82, 0x7a3d3d47, 0xc86464ac, 0xba5d5de7, 0x3219192b, 0xe6737395, 0xc06060a0, 0x19818198, 0x9e4f4fd1, 0xa3dcdc7f, 0x44222266, 0x542a2a7e, 0x3b9090ab, 0x0b888883, 0x8c4646ca, 0xc7eeee29, 0x6bb8b8d3, 0x2814143c, 0xa7dede79, 0xbc5e5ee2, 0x160b0b1d, 0xaddbdb76, 0xdbe0e03b, 0x64323256, 0x743a3a4e, 0x140a0a1e, 0x924949db, 0x0c06060a, 0x4824246c, 0xb85c5ce4, 0x9fc2c25d, 0xbdd3d36e, 0x43acacef, 0xc46262a6, 0x399191a8, 0x319595a4, 0xd3e4e437, 0xf279798b, 0xd5e7e732, 0x8bc8c843, 0x6e373759, 0xda6d6db7, 0x018d8d8c, 0xb1d5d564, 0x9c4e4ed2, 0x49a9a9e0, 0xd86c6cb4, 0xac5656fa, 0xf3f4f407, 0xcfeaea25, 0xca6565af, 0xf47a7a8e, 0x47aeaee9, 0x10080818, 0x6fbabad5, 0xf0787888, 0x4a25256f, 0x5c2e2e72, 0x381c1c24, 0x57a6a6f1, 0x73b4b4c7, 0x97c6c651, 0xcbe8e823, 0xa1dddd7c, 0xe874749c, 0x3e1f1f21, 0x964b4bdd, 0x61bdbddc, 0x0d8b8b86, 0x0f8a8a85, 0xe0707090, 0x7c3e3e42, 0x71b5b5c4, 0xcc6666aa, 0x904848d8, 0x06030305, 0xf7f6f601, 0x1c0e0e12, 0xc26161a3, 0x6a35355f, 0xae5757f9, 0x69b9b9d0, 0x17868691, 0x99c1c158, 0x3a1d1d27, 0x279e9eb9, 0xd9e1e138, 0xebf8f813, 0x2b9898b3, 0x22111133, 0xd26969bb, 0xa9d9d970, 0x078e8e89, 0x339494a7, 0x2d9b9bb6, 0x3c1e1e22, 0x15878792, 0xc9e9e920, 0x87cece49, 0xaa5555ff, 0x50282878, 0xa5dfdf7a, 0x038c8c8f, 0x59a1a1f8, 0x09898980, 0x1a0d0d17, 0x65bfbfda, 0xd7e6e631, 0x844242c6, 0xd06868b8, 0x824141c3, 0x299999b0, 0x5a2d2d77, 0x1e0f0f11, 0x7bb0b0cb, 0xa85454fc, 0x6dbbbbd6, 0x2c16163a];\n var T2 = [0xa5c66363, 0x84f87c7c, 0x99ee7777, 0x8df67b7b, 0x0dfff2f2, 0xbdd66b6b, 0xb1de6f6f, 0x5491c5c5, 0x50603030, 0x03020101, 0xa9ce6767, 0x7d562b2b, 0x19e7fefe, 0x62b5d7d7, 0xe64dabab, 0x9aec7676, 0x458fcaca, 0x9d1f8282, 0x4089c9c9, 0x87fa7d7d, 0x15effafa, 0xebb25959, 0xc98e4747, 0x0bfbf0f0, 0xec41adad, 0x67b3d4d4, 0xfd5fa2a2, 0xea45afaf, 0xbf239c9c, 0xf753a4a4, 0x96e47272, 0x5b9bc0c0, 0xc275b7b7, 0x1ce1fdfd, 0xae3d9393, 0x6a4c2626, 0x5a6c3636, 0x417e3f3f, 0x02f5f7f7, 0x4f83cccc, 0x5c683434, 0xf451a5a5, 0x34d1e5e5, 0x08f9f1f1, 0x93e27171, 0x73abd8d8, 0x53623131, 0x3f2a1515, 0x0c080404, 0x5295c7c7, 0x65462323, 0x5e9dc3c3, 0x28301818, 0xa1379696, 0x0f0a0505, 0xb52f9a9a, 0x090e0707, 0x36241212, 0x9b1b8080, 0x3ddfe2e2, 0x26cdebeb, 0x694e2727, 0xcd7fb2b2, 0x9fea7575, 0x1b120909, 0x9e1d8383, 0x74582c2c, 0x2e341a1a, 0x2d361b1b, 0xb2dc6e6e, 0xeeb45a5a, 0xfb5ba0a0, 0xf6a45252, 0x4d763b3b, 0x61b7d6d6, 0xce7db3b3, 0x7b522929, 0x3edde3e3, 0x715e2f2f, 0x97138484, 0xf5a65353, 0x68b9d1d1, 0x00000000, 0x2cc1eded, 0x60402020, 0x1fe3fcfc, 0xc879b1b1, 0xedb65b5b, 0xbed46a6a, 0x468dcbcb, 0xd967bebe, 0x4b723939, 0xde944a4a, 0xd4984c4c, 0xe8b05858, 0x4a85cfcf, 0x6bbbd0d0, 0x2ac5efef, 0xe54faaaa, 0x16edfbfb, 0xc5864343, 0xd79a4d4d, 0x55663333, 0x94118585, 0xcf8a4545, 0x10e9f9f9, 0x06040202, 0x81fe7f7f, 0xf0a05050, 0x44783c3c, 0xba259f9f, 0xe34ba8a8, 0xf3a25151, 0xfe5da3a3, 0xc0804040, 0x8a058f8f, 0xad3f9292, 0xbc219d9d, 0x48703838, 0x04f1f5f5, 0xdf63bcbc, 0xc177b6b6, 0x75afdada, 0x63422121, 0x30201010, 0x1ae5ffff, 0x0efdf3f3, 0x6dbfd2d2, 0x4c81cdcd, 0x14180c0c, 0x35261313, 0x2fc3ecec, 0xe1be5f5f, 0xa2359797, 0xcc884444, 0x392e1717, 0x5793c4c4, 0xf255a7a7, 0x82fc7e7e, 0x477a3d3d, 0xacc86464, 0xe7ba5d5d, 0x2b321919, 0x95e67373, 0xa0c06060, 0x98198181, 0xd19e4f4f, 0x7fa3dcdc, 0x66442222, 0x7e542a2a, 0xab3b9090, 0x830b8888, 0xca8c4646, 0x29c7eeee, 0xd36bb8b8, 0x3c281414, 0x79a7dede, 0xe2bc5e5e, 0x1d160b0b, 0x76addbdb, 0x3bdbe0e0, 0x56643232, 0x4e743a3a, 0x1e140a0a, 0xdb924949, 0x0a0c0606, 0x6c482424, 0xe4b85c5c, 0x5d9fc2c2, 0x6ebdd3d3, 0xef43acac, 0xa6c46262, 0xa8399191, 0xa4319595, 0x37d3e4e4, 0x8bf27979, 0x32d5e7e7, 0x438bc8c8, 0x596e3737, 0xb7da6d6d, 0x8c018d8d, 0x64b1d5d5, 0xd29c4e4e, 0xe049a9a9, 0xb4d86c6c, 0xfaac5656, 0x07f3f4f4, 0x25cfeaea, 0xafca6565, 0x8ef47a7a, 0xe947aeae, 0x18100808, 0xd56fbaba, 0x88f07878, 0x6f4a2525, 0x725c2e2e, 0x24381c1c, 0xf157a6a6, 0xc773b4b4, 0x5197c6c6, 0x23cbe8e8, 0x7ca1dddd, 0x9ce87474, 0x213e1f1f, 0xdd964b4b, 0xdc61bdbd, 0x860d8b8b, 0x850f8a8a, 0x90e07070, 0x427c3e3e, 0xc471b5b5, 0xaacc6666, 0xd8904848, 0x05060303, 0x01f7f6f6, 0x121c0e0e, 0xa3c26161, 0x5f6a3535, 0xf9ae5757, 0xd069b9b9, 0x91178686, 0x5899c1c1, 0x273a1d1d, 0xb9279e9e, 0x38d9e1e1, 0x13ebf8f8, 0xb32b9898, 0x33221111, 0xbbd26969, 0x70a9d9d9, 0x89078e8e, 0xa7339494, 0xb62d9b9b, 0x223c1e1e, 0x92158787, 0x20c9e9e9, 0x4987cece, 0xffaa5555, 0x78502828, 0x7aa5dfdf, 0x8f038c8c, 0xf859a1a1, 0x80098989, 0x171a0d0d, 0xda65bfbf, 0x31d7e6e6, 0xc6844242, 0xb8d06868, 0xc3824141, 0xb0299999, 0x775a2d2d, 0x111e0f0f, 0xcb7bb0b0, 0xfca85454, 0xd66dbbbb, 0x3a2c1616];\n var T3 = [0x63a5c663, 0x7c84f87c, 0x7799ee77, 0x7b8df67b, 0xf20dfff2, 0x6bbdd66b, 0x6fb1de6f, 0xc55491c5, 0x30506030, 0x01030201, 0x67a9ce67, 0x2b7d562b, 0xfe19e7fe, 0xd762b5d7, 0xabe64dab, 0x769aec76, 0xca458fca, 0x829d1f82, 0xc94089c9, 0x7d87fa7d, 0xfa15effa, 0x59ebb259, 0x47c98e47, 0xf00bfbf0, 0xadec41ad, 0xd467b3d4, 0xa2fd5fa2, 0xafea45af, 0x9cbf239c, 0xa4f753a4, 0x7296e472, 0xc05b9bc0, 0xb7c275b7, 0xfd1ce1fd, 0x93ae3d93, 0x266a4c26, 0x365a6c36, 0x3f417e3f, 0xf702f5f7, 0xcc4f83cc, 0x345c6834, 0xa5f451a5, 0xe534d1e5, 0xf108f9f1, 0x7193e271, 0xd873abd8, 0x31536231, 0x153f2a15, 0x040c0804, 0xc75295c7, 0x23654623, 0xc35e9dc3, 0x18283018, 0x96a13796, 0x050f0a05, 0x9ab52f9a, 0x07090e07, 0x12362412, 0x809b1b80, 0xe23ddfe2, 0xeb26cdeb, 0x27694e27, 0xb2cd7fb2, 0x759fea75, 0x091b1209, 0x839e1d83, 0x2c74582c, 0x1a2e341a, 0x1b2d361b, 0x6eb2dc6e, 0x5aeeb45a, 0xa0fb5ba0, 0x52f6a452, 0x3b4d763b, 0xd661b7d6, 0xb3ce7db3, 0x297b5229, 0xe33edde3, 0x2f715e2f, 0x84971384, 0x53f5a653, 0xd168b9d1, 0x00000000, 0xed2cc1ed, 0x20604020, 0xfc1fe3fc, 0xb1c879b1, 0x5bedb65b, 0x6abed46a, 0xcb468dcb, 0xbed967be, 0x394b7239, 0x4ade944a, 0x4cd4984c, 0x58e8b058, 0xcf4a85cf, 0xd06bbbd0, 0xef2ac5ef, 0xaae54faa, 0xfb16edfb, 0x43c58643, 0x4dd79a4d, 0x33556633, 0x85941185, 0x45cf8a45, 0xf910e9f9, 0x02060402, 0x7f81fe7f, 0x50f0a050, 0x3c44783c, 0x9fba259f, 0xa8e34ba8, 0x51f3a251, 0xa3fe5da3, 0x40c08040, 0x8f8a058f, 0x92ad3f92, 0x9dbc219d, 0x38487038, 0xf504f1f5, 0xbcdf63bc, 0xb6c177b6, 0xda75afda, 0x21634221, 0x10302010, 0xff1ae5ff, 0xf30efdf3, 0xd26dbfd2, 0xcd4c81cd, 0x0c14180c, 0x13352613, 0xec2fc3ec, 0x5fe1be5f, 0x97a23597, 0x44cc8844, 0x17392e17, 0xc45793c4, 0xa7f255a7, 0x7e82fc7e, 0x3d477a3d, 0x64acc864, 0x5de7ba5d, 0x192b3219, 0x7395e673, 0x60a0c060, 0x81981981, 0x4fd19e4f, 0xdc7fa3dc, 0x22664422, 0x2a7e542a, 0x90ab3b90, 0x88830b88, 0x46ca8c46, 0xee29c7ee, 0xb8d36bb8, 0x143c2814, 0xde79a7de, 0x5ee2bc5e, 0x0b1d160b, 0xdb76addb, 0xe03bdbe0, 0x32566432, 0x3a4e743a, 0x0a1e140a, 0x49db9249, 0x060a0c06, 0x246c4824, 0x5ce4b85c, 0xc25d9fc2, 0xd36ebdd3, 0xacef43ac, 0x62a6c462, 0x91a83991, 0x95a43195, 0xe437d3e4, 0x798bf279, 0xe732d5e7, 0xc8438bc8, 0x37596e37, 0x6db7da6d, 0x8d8c018d, 0xd564b1d5, 0x4ed29c4e, 0xa9e049a9, 0x6cb4d86c, 0x56faac56, 0xf407f3f4, 0xea25cfea, 0x65afca65, 0x7a8ef47a, 0xaee947ae, 0x08181008, 0xbad56fba, 0x7888f078, 0x256f4a25, 0x2e725c2e, 0x1c24381c, 0xa6f157a6, 0xb4c773b4, 0xc65197c6, 0xe823cbe8, 0xdd7ca1dd, 0x749ce874, 0x1f213e1f, 0x4bdd964b, 0xbddc61bd, 0x8b860d8b, 0x8a850f8a, 0x7090e070, 0x3e427c3e, 0xb5c471b5, 0x66aacc66, 0x48d89048, 0x03050603, 0xf601f7f6, 0x0e121c0e, 0x61a3c261, 0x355f6a35, 0x57f9ae57, 0xb9d069b9, 0x86911786, 0xc15899c1, 0x1d273a1d, 0x9eb9279e, 0xe138d9e1, 0xf813ebf8, 0x98b32b98, 0x11332211, 0x69bbd269, 0xd970a9d9, 0x8e89078e, 0x94a73394, 0x9bb62d9b, 0x1e223c1e, 0x87921587, 0xe920c9e9, 0xce4987ce, 0x55ffaa55, 0x28785028, 0xdf7aa5df, 0x8c8f038c, 0xa1f859a1, 0x89800989, 0x0d171a0d, 0xbfda65bf, 0xe631d7e6, 0x42c68442, 0x68b8d068, 0x41c38241, 0x99b02999, 0x2d775a2d, 0x0f111e0f, 0xb0cb7bb0, 0x54fca854, 0xbbd66dbb, 0x163a2c16];\n var T4 = [0x6363a5c6, 0x7c7c84f8, 0x777799ee, 0x7b7b8df6, 0xf2f20dff, 0x6b6bbdd6, 0x6f6fb1de, 0xc5c55491, 0x30305060, 0x01010302, 0x6767a9ce, 0x2b2b7d56, 0xfefe19e7, 0xd7d762b5, 0xababe64d, 0x76769aec, 0xcaca458f, 0x82829d1f, 0xc9c94089, 0x7d7d87fa, 0xfafa15ef, 0x5959ebb2, 0x4747c98e, 0xf0f00bfb, 0xadadec41, 0xd4d467b3, 0xa2a2fd5f, 0xafafea45, 0x9c9cbf23, 0xa4a4f753, 0x727296e4, 0xc0c05b9b, 0xb7b7c275, 0xfdfd1ce1, 0x9393ae3d, 0x26266a4c, 0x36365a6c, 0x3f3f417e, 0xf7f702f5, 0xcccc4f83, 0x34345c68, 0xa5a5f451, 0xe5e534d1, 0xf1f108f9, 0x717193e2, 0xd8d873ab, 0x31315362, 0x15153f2a, 0x04040c08, 0xc7c75295, 0x23236546, 0xc3c35e9d, 0x18182830, 0x9696a137, 0x05050f0a, 0x9a9ab52f, 0x0707090e, 0x12123624, 0x80809b1b, 0xe2e23ddf, 0xebeb26cd, 0x2727694e, 0xb2b2cd7f, 0x75759fea, 0x09091b12, 0x83839e1d, 0x2c2c7458, 0x1a1a2e34, 0x1b1b2d36, 0x6e6eb2dc, 0x5a5aeeb4, 0xa0a0fb5b, 0x5252f6a4, 0x3b3b4d76, 0xd6d661b7, 0xb3b3ce7d, 0x29297b52, 0xe3e33edd, 0x2f2f715e, 0x84849713, 0x5353f5a6, 0xd1d168b9, 0x00000000, 0xeded2cc1, 0x20206040, 0xfcfc1fe3, 0xb1b1c879, 0x5b5bedb6, 0x6a6abed4, 0xcbcb468d, 0xbebed967, 0x39394b72, 0x4a4ade94, 0x4c4cd498, 0x5858e8b0, 0xcfcf4a85, 0xd0d06bbb, 0xefef2ac5, 0xaaaae54f, 0xfbfb16ed, 0x4343c586, 0x4d4dd79a, 0x33335566, 0x85859411, 0x4545cf8a, 0xf9f910e9, 0x02020604, 0x7f7f81fe, 0x5050f0a0, 0x3c3c4478, 0x9f9fba25, 0xa8a8e34b, 0x5151f3a2, 0xa3a3fe5d, 0x4040c080, 0x8f8f8a05, 0x9292ad3f, 0x9d9dbc21, 0x38384870, 0xf5f504f1, 0xbcbcdf63, 0xb6b6c177, 0xdada75af, 0x21216342, 0x10103020, 0xffff1ae5, 0xf3f30efd, 0xd2d26dbf, 0xcdcd4c81, 0x0c0c1418, 0x13133526, 0xecec2fc3, 0x5f5fe1be, 0x9797a235, 0x4444cc88, 0x1717392e, 0xc4c45793, 0xa7a7f255, 0x7e7e82fc, 0x3d3d477a, 0x6464acc8, 0x5d5de7ba, 0x19192b32, 0x737395e6, 0x6060a0c0, 0x81819819, 0x4f4fd19e, 0xdcdc7fa3, 0x22226644, 0x2a2a7e54, 0x9090ab3b, 0x8888830b, 0x4646ca8c, 0xeeee29c7, 0xb8b8d36b, 0x14143c28, 0xdede79a7, 0x5e5ee2bc, 0x0b0b1d16, 0xdbdb76ad, 0xe0e03bdb, 0x32325664, 0x3a3a4e74, 0x0a0a1e14, 0x4949db92, 0x06060a0c, 0x24246c48, 0x5c5ce4b8, 0xc2c25d9f, 0xd3d36ebd, 0xacacef43, 0x6262a6c4, 0x9191a839, 0x9595a431, 0xe4e437d3, 0x79798bf2, 0xe7e732d5, 0xc8c8438b, 0x3737596e, 0x6d6db7da, 0x8d8d8c01, 0xd5d564b1, 0x4e4ed29c, 0xa9a9e049, 0x6c6cb4d8, 0x5656faac, 0xf4f407f3, 0xeaea25cf, 0x6565afca, 0x7a7a8ef4, 0xaeaee947, 0x08081810, 0xbabad56f, 0x787888f0, 0x25256f4a, 0x2e2e725c, 0x1c1c2438, 0xa6a6f157, 0xb4b4c773, 0xc6c65197, 0xe8e823cb, 0xdddd7ca1, 0x74749ce8, 0x1f1f213e, 0x4b4bdd96, 0xbdbddc61, 0x8b8b860d, 0x8a8a850f, 0x707090e0, 0x3e3e427c, 0xb5b5c471, 0x6666aacc, 0x4848d890, 0x03030506, 0xf6f601f7, 0x0e0e121c, 0x6161a3c2, 0x35355f6a, 0x5757f9ae, 0xb9b9d069, 0x86869117, 0xc1c15899, 0x1d1d273a, 0x9e9eb927, 0xe1e138d9, 0xf8f813eb, 0x9898b32b, 0x11113322, 0x6969bbd2, 0xd9d970a9, 0x8e8e8907, 0x9494a733, 0x9b9bb62d, 0x1e1e223c, 0x87879215, 0xe9e920c9, 0xcece4987, 0x5555ffaa, 0x28287850, 0xdfdf7aa5, 0x8c8c8f03, 0xa1a1f859, 0x89898009, 0x0d0d171a, 0xbfbfda65, 0xe6e631d7, 0x4242c684, 0x6868b8d0, 0x4141c382, 0x9999b029, 0x2d2d775a, 0x0f0f111e, 0xb0b0cb7b, 0x5454fca8, 0xbbbbd66d, 0x16163a2c];\n\n // Transformations for decryption\n var T5 = [0x51f4a750, 0x7e416553, 0x1a17a4c3, 0x3a275e96, 0x3bab6bcb, 0x1f9d45f1, 0xacfa58ab, 0x4be30393, 0x2030fa55, 0xad766df6, 0x88cc7691, 0xf5024c25, 0x4fe5d7fc, 0xc52acbd7, 0x26354480, 0xb562a38f, 0xdeb15a49, 0x25ba1b67, 0x45ea0e98, 0x5dfec0e1, 0xc32f7502, 0x814cf012, 0x8d4697a3, 0x6bd3f9c6, 0x038f5fe7, 0x15929c95, 0xbf6d7aeb, 0x955259da, 0xd4be832d, 0x587421d3, 0x49e06929, 0x8ec9c844, 0x75c2896a, 0xf48e7978, 0x99583e6b, 0x27b971dd, 0xbee14fb6, 0xf088ad17, 0xc920ac66, 0x7dce3ab4, 0x63df4a18, 0xe51a3182, 0x97513360, 0x62537f45, 0xb16477e0, 0xbb6bae84, 0xfe81a01c, 0xf9082b94, 0x70486858, 0x8f45fd19, 0x94de6c87, 0x527bf8b7, 0xab73d323, 0x724b02e2, 0xe31f8f57, 0x6655ab2a, 0xb2eb2807, 0x2fb5c203, 0x86c57b9a, 0xd33708a5, 0x302887f2, 0x23bfa5b2, 0x02036aba, 0xed16825c, 0x8acf1c2b, 0xa779b492, 0xf307f2f0, 0x4e69e2a1, 0x65daf4cd, 0x0605bed5, 0xd134621f, 0xc4a6fe8a, 0x342e539d, 0xa2f355a0, 0x058ae132, 0xa4f6eb75, 0x0b83ec39, 0x4060efaa, 0x5e719f06, 0xbd6e1051, 0x3e218af9, 0x96dd063d, 0xdd3e05ae, 0x4de6bd46, 0x91548db5, 0x71c45d05, 0x0406d46f, 0x605015ff, 0x1998fb24, 0xd6bde997, 0x894043cc, 0x67d99e77, 0xb0e842bd, 0x07898b88, 0xe7195b38, 0x79c8eedb, 0xa17c0a47, 0x7c420fe9, 0xf8841ec9, 0x00000000, 0x09808683, 0x322bed48, 0x1e1170ac, 0x6c5a724e, 0xfd0efffb, 0x0f853856, 0x3daed51e, 0x362d3927, 0x0a0fd964, 0x685ca621, 0x9b5b54d1, 0x24362e3a, 0x0c0a67b1, 0x9357e70f, 0xb4ee96d2, 0x1b9b919e, 0x80c0c54f, 0x61dc20a2, 0x5a774b69, 0x1c121a16, 0xe293ba0a, 0xc0a02ae5, 0x3c22e043, 0x121b171d, 0x0e090d0b, 0xf28bc7ad, 0x2db6a8b9, 0x141ea9c8, 0x57f11985, 0xaf75074c, 0xee99ddbb, 0xa37f60fd, 0xf701269f, 0x5c72f5bc, 0x44663bc5, 0x5bfb7e34, 0x8b432976, 0xcb23c6dc, 0xb6edfc68, 0xb8e4f163, 0xd731dcca, 0x42638510, 0x13972240, 0x84c61120, 0x854a247d, 0xd2bb3df8, 0xaef93211, 0xc729a16d, 0x1d9e2f4b, 0xdcb230f3, 0x0d8652ec, 0x77c1e3d0, 0x2bb3166c, 0xa970b999, 0x119448fa, 0x47e96422, 0xa8fc8cc4, 0xa0f03f1a, 0x567d2cd8, 0x223390ef, 0x87494ec7, 0xd938d1c1, 0x8ccaa2fe, 0x98d40b36, 0xa6f581cf, 0xa57ade28, 0xdab78e26, 0x3fadbfa4, 0x2c3a9de4, 0x5078920d, 0x6a5fcc9b, 0x547e4662, 0xf68d13c2, 0x90d8b8e8, 0x2e39f75e, 0x82c3aff5, 0x9f5d80be, 0x69d0937c, 0x6fd52da9, 0xcf2512b3, 0xc8ac993b, 0x10187da7, 0xe89c636e, 0xdb3bbb7b, 0xcd267809, 0x6e5918f4, 0xec9ab701, 0x834f9aa8, 0xe6956e65, 0xaaffe67e, 0x21bccf08, 0xef15e8e6, 0xbae79bd9, 0x4a6f36ce, 0xea9f09d4, 0x29b07cd6, 0x31a4b2af, 0x2a3f2331, 0xc6a59430, 0x35a266c0, 0x744ebc37, 0xfc82caa6, 0xe090d0b0, 0x33a7d815, 0xf104984a, 0x41ecdaf7, 0x7fcd500e, 0x1791f62f, 0x764dd68d, 0x43efb04d, 0xccaa4d54, 0xe49604df, 0x9ed1b5e3, 0x4c6a881b, 0xc12c1fb8, 0x4665517f, 0x9d5eea04, 0x018c355d, 0xfa877473, 0xfb0b412e, 0xb3671d5a, 0x92dbd252, 0xe9105633, 0x6dd64713, 0x9ad7618c, 0x37a10c7a, 0x59f8148e, 0xeb133c89, 0xcea927ee, 0xb761c935, 0xe11ce5ed, 0x7a47b13c, 0x9cd2df59, 0x55f2733f, 0x1814ce79, 0x73c737bf, 0x53f7cdea, 0x5ffdaa5b, 0xdf3d6f14, 0x7844db86, 0xcaaff381, 0xb968c43e, 0x3824342c, 0xc2a3405f, 0x161dc372, 0xbce2250c, 0x283c498b, 0xff0d9541, 0x39a80171, 0x080cb3de, 0xd8b4e49c, 0x6456c190, 0x7bcb8461, 0xd532b670, 0x486c5c74, 0xd0b85742];\n var T6 = [0x5051f4a7, 0x537e4165, 0xc31a17a4, 0x963a275e, 0xcb3bab6b, 0xf11f9d45, 0xabacfa58, 0x934be303, 0x552030fa, 0xf6ad766d, 0x9188cc76, 0x25f5024c, 0xfc4fe5d7, 0xd7c52acb, 0x80263544, 0x8fb562a3, 0x49deb15a, 0x6725ba1b, 0x9845ea0e, 0xe15dfec0, 0x02c32f75, 0x12814cf0, 0xa38d4697, 0xc66bd3f9, 0xe7038f5f, 0x9515929c, 0xebbf6d7a, 0xda955259, 0x2dd4be83, 0xd3587421, 0x2949e069, 0x448ec9c8, 0x6a75c289, 0x78f48e79, 0x6b99583e, 0xdd27b971, 0xb6bee14f, 0x17f088ad, 0x66c920ac, 0xb47dce3a, 0x1863df4a, 0x82e51a31, 0x60975133, 0x4562537f, 0xe0b16477, 0x84bb6bae, 0x1cfe81a0, 0x94f9082b, 0x58704868, 0x198f45fd, 0x8794de6c, 0xb7527bf8, 0x23ab73d3, 0xe2724b02, 0x57e31f8f, 0x2a6655ab, 0x07b2eb28, 0x032fb5c2, 0x9a86c57b, 0xa5d33708, 0xf2302887, 0xb223bfa5, 0xba02036a, 0x5ced1682, 0x2b8acf1c, 0x92a779b4, 0xf0f307f2, 0xa14e69e2, 0xcd65daf4, 0xd50605be, 0x1fd13462, 0x8ac4a6fe, 0x9d342e53, 0xa0a2f355, 0x32058ae1, 0x75a4f6eb, 0x390b83ec, 0xaa4060ef, 0x065e719f, 0x51bd6e10, 0xf93e218a, 0x3d96dd06, 0xaedd3e05, 0x464de6bd, 0xb591548d, 0x0571c45d, 0x6f0406d4, 0xff605015, 0x241998fb, 0x97d6bde9, 0xcc894043, 0x7767d99e, 0xbdb0e842, 0x8807898b, 0x38e7195b, 0xdb79c8ee, 0x47a17c0a, 0xe97c420f, 0xc9f8841e, 0x00000000, 0x83098086, 0x48322bed, 0xac1e1170, 0x4e6c5a72, 0xfbfd0eff, 0x560f8538, 0x1e3daed5, 0x27362d39, 0x640a0fd9, 0x21685ca6, 0xd19b5b54, 0x3a24362e, 0xb10c0a67, 0x0f9357e7, 0xd2b4ee96, 0x9e1b9b91, 0x4f80c0c5, 0xa261dc20, 0x695a774b, 0x161c121a, 0x0ae293ba, 0xe5c0a02a, 0x433c22e0, 0x1d121b17, 0x0b0e090d, 0xadf28bc7, 0xb92db6a8, 0xc8141ea9, 0x8557f119, 0x4caf7507, 0xbbee99dd, 0xfda37f60, 0x9ff70126, 0xbc5c72f5, 0xc544663b, 0x345bfb7e, 0x768b4329, 0xdccb23c6, 0x68b6edfc, 0x63b8e4f1, 0xcad731dc, 0x10426385, 0x40139722, 0x2084c611, 0x7d854a24, 0xf8d2bb3d, 0x11aef932, 0x6dc729a1, 0x4b1d9e2f, 0xf3dcb230, 0xec0d8652, 0xd077c1e3, 0x6c2bb316, 0x99a970b9, 0xfa119448, 0x2247e964, 0xc4a8fc8c, 0x1aa0f03f, 0xd8567d2c, 0xef223390, 0xc787494e, 0xc1d938d1, 0xfe8ccaa2, 0x3698d40b, 0xcfa6f581, 0x28a57ade, 0x26dab78e, 0xa43fadbf, 0xe42c3a9d, 0x0d507892, 0x9b6a5fcc, 0x62547e46, 0xc2f68d13, 0xe890d8b8, 0x5e2e39f7, 0xf582c3af, 0xbe9f5d80, 0x7c69d093, 0xa96fd52d, 0xb3cf2512, 0x3bc8ac99, 0xa710187d, 0x6ee89c63, 0x7bdb3bbb, 0x09cd2678, 0xf46e5918, 0x01ec9ab7, 0xa8834f9a, 0x65e6956e, 0x7eaaffe6, 0x0821bccf, 0xe6ef15e8, 0xd9bae79b, 0xce4a6f36, 0xd4ea9f09, 0xd629b07c, 0xaf31a4b2, 0x312a3f23, 0x30c6a594, 0xc035a266, 0x37744ebc, 0xa6fc82ca, 0xb0e090d0, 0x1533a7d8, 0x4af10498, 0xf741ecda, 0x0e7fcd50, 0x2f1791f6, 0x8d764dd6, 0x4d43efb0, 0x54ccaa4d, 0xdfe49604, 0xe39ed1b5, 0x1b4c6a88, 0xb8c12c1f, 0x7f466551, 0x049d5eea, 0x5d018c35, 0x73fa8774, 0x2efb0b41, 0x5ab3671d, 0x5292dbd2, 0x33e91056, 0x136dd647, 0x8c9ad761, 0x7a37a10c, 0x8e59f814, 0x89eb133c, 0xeecea927, 0x35b761c9, 0xede11ce5, 0x3c7a47b1, 0x599cd2df, 0x3f55f273, 0x791814ce, 0xbf73c737, 0xea53f7cd, 0x5b5ffdaa, 0x14df3d6f, 0x867844db, 0x81caaff3, 0x3eb968c4, 0x2c382434, 0x5fc2a340, 0x72161dc3, 0x0cbce225, 0x8b283c49, 0x41ff0d95, 0x7139a801, 0xde080cb3, 0x9cd8b4e4, 0x906456c1, 0x617bcb84, 0x70d532b6, 0x74486c5c, 0x42d0b857];\n var T7 = [0xa75051f4, 0x65537e41, 0xa4c31a17, 0x5e963a27, 0x6bcb3bab, 0x45f11f9d, 0x58abacfa, 0x03934be3, 0xfa552030, 0x6df6ad76, 0x769188cc, 0x4c25f502, 0xd7fc4fe5, 0xcbd7c52a, 0x44802635, 0xa38fb562, 0x5a49deb1, 0x1b6725ba, 0x0e9845ea, 0xc0e15dfe, 0x7502c32f, 0xf012814c, 0x97a38d46, 0xf9c66bd3, 0x5fe7038f, 0x9c951592, 0x7aebbf6d, 0x59da9552, 0x832dd4be, 0x21d35874, 0x692949e0, 0xc8448ec9, 0x896a75c2, 0x7978f48e, 0x3e6b9958, 0x71dd27b9, 0x4fb6bee1, 0xad17f088, 0xac66c920, 0x3ab47dce, 0x4a1863df, 0x3182e51a, 0x33609751, 0x7f456253, 0x77e0b164, 0xae84bb6b, 0xa01cfe81, 0x2b94f908, 0x68587048, 0xfd198f45, 0x6c8794de, 0xf8b7527b, 0xd323ab73, 0x02e2724b, 0x8f57e31f, 0xab2a6655, 0x2807b2eb, 0xc2032fb5, 0x7b9a86c5, 0x08a5d337, 0x87f23028, 0xa5b223bf, 0x6aba0203, 0x825ced16, 0x1c2b8acf, 0xb492a779, 0xf2f0f307, 0xe2a14e69, 0xf4cd65da, 0xbed50605, 0x621fd134, 0xfe8ac4a6, 0x539d342e, 0x55a0a2f3, 0xe132058a, 0xeb75a4f6, 0xec390b83, 0xefaa4060, 0x9f065e71, 0x1051bd6e, 0x8af93e21, 0x063d96dd, 0x05aedd3e, 0xbd464de6, 0x8db59154, 0x5d0571c4, 0xd46f0406, 0x15ff6050, 0xfb241998, 0xe997d6bd, 0x43cc8940, 0x9e7767d9, 0x42bdb0e8, 0x8b880789, 0x5b38e719, 0xeedb79c8, 0x0a47a17c, 0x0fe97c42, 0x1ec9f884, 0x00000000, 0x86830980, 0xed48322b, 0x70ac1e11, 0x724e6c5a, 0xfffbfd0e, 0x38560f85, 0xd51e3dae, 0x3927362d, 0xd9640a0f, 0xa621685c, 0x54d19b5b, 0x2e3a2436, 0x67b10c0a, 0xe70f9357, 0x96d2b4ee, 0x919e1b9b, 0xc54f80c0, 0x20a261dc, 0x4b695a77, 0x1a161c12, 0xba0ae293, 0x2ae5c0a0, 0xe0433c22, 0x171d121b, 0x0d0b0e09, 0xc7adf28b, 0xa8b92db6, 0xa9c8141e, 0x198557f1, 0x074caf75, 0xddbbee99, 0x60fda37f, 0x269ff701, 0xf5bc5c72, 0x3bc54466, 0x7e345bfb, 0x29768b43, 0xc6dccb23, 0xfc68b6ed, 0xf163b8e4, 0xdccad731, 0x85104263, 0x22401397, 0x112084c6, 0x247d854a, 0x3df8d2bb, 0x3211aef9, 0xa16dc729, 0x2f4b1d9e, 0x30f3dcb2, 0x52ec0d86, 0xe3d077c1, 0x166c2bb3, 0xb999a970, 0x48fa1194, 0x642247e9, 0x8cc4a8fc, 0x3f1aa0f0, 0x2cd8567d, 0x90ef2233, 0x4ec78749, 0xd1c1d938, 0xa2fe8cca, 0x0b3698d4, 0x81cfa6f5, 0xde28a57a, 0x8e26dab7, 0xbfa43fad, 0x9de42c3a, 0x920d5078, 0xcc9b6a5f, 0x4662547e, 0x13c2f68d, 0xb8e890d8, 0xf75e2e39, 0xaff582c3, 0x80be9f5d, 0x937c69d0, 0x2da96fd5, 0x12b3cf25, 0x993bc8ac, 0x7da71018, 0x636ee89c, 0xbb7bdb3b, 0x7809cd26, 0x18f46e59, 0xb701ec9a, 0x9aa8834f, 0x6e65e695, 0xe67eaaff, 0xcf0821bc, 0xe8e6ef15, 0x9bd9bae7, 0x36ce4a6f, 0x09d4ea9f, 0x7cd629b0, 0xb2af31a4, 0x23312a3f, 0x9430c6a5, 0x66c035a2, 0xbc37744e, 0xcaa6fc82, 0xd0b0e090, 0xd81533a7, 0x984af104, 0xdaf741ec, 0x500e7fcd, 0xf62f1791, 0xd68d764d, 0xb04d43ef, 0x4d54ccaa, 0x04dfe496, 0xb5e39ed1, 0x881b4c6a, 0x1fb8c12c, 0x517f4665, 0xea049d5e, 0x355d018c, 0x7473fa87, 0x412efb0b, 0x1d5ab367, 0xd25292db, 0x5633e910, 0x47136dd6, 0x618c9ad7, 0x0c7a37a1, 0x148e59f8, 0x3c89eb13, 0x27eecea9, 0xc935b761, 0xe5ede11c, 0xb13c7a47, 0xdf599cd2, 0x733f55f2, 0xce791814, 0x37bf73c7, 0xcdea53f7, 0xaa5b5ffd, 0x6f14df3d, 0xdb867844, 0xf381caaf, 0xc43eb968, 0x342c3824, 0x405fc2a3, 0xc372161d, 0x250cbce2, 0x498b283c, 0x9541ff0d, 0x017139a8, 0xb3de080c, 0xe49cd8b4, 0xc1906456, 0x84617bcb, 0xb670d532, 0x5c74486c, 0x5742d0b8];\n var T8 = [0xf4a75051, 0x4165537e, 0x17a4c31a, 0x275e963a, 0xab6bcb3b, 0x9d45f11f, 0xfa58abac, 0xe303934b, 0x30fa5520, 0x766df6ad, 0xcc769188, 0x024c25f5, 0xe5d7fc4f, 0x2acbd7c5, 0x35448026, 0x62a38fb5, 0xb15a49de, 0xba1b6725, 0xea0e9845, 0xfec0e15d, 0x2f7502c3, 0x4cf01281, 0x4697a38d, 0xd3f9c66b, 0x8f5fe703, 0x929c9515, 0x6d7aebbf, 0x5259da95, 0xbe832dd4, 0x7421d358, 0xe0692949, 0xc9c8448e, 0xc2896a75, 0x8e7978f4, 0x583e6b99, 0xb971dd27, 0xe14fb6be, 0x88ad17f0, 0x20ac66c9, 0xce3ab47d, 0xdf4a1863, 0x1a3182e5, 0x51336097, 0x537f4562, 0x6477e0b1, 0x6bae84bb, 0x81a01cfe, 0x082b94f9, 0x48685870, 0x45fd198f, 0xde6c8794, 0x7bf8b752, 0x73d323ab, 0x4b02e272, 0x1f8f57e3, 0x55ab2a66, 0xeb2807b2, 0xb5c2032f, 0xc57b9a86, 0x3708a5d3, 0x2887f230, 0xbfa5b223, 0x036aba02, 0x16825ced, 0xcf1c2b8a, 0x79b492a7, 0x07f2f0f3, 0x69e2a14e, 0xdaf4cd65, 0x05bed506, 0x34621fd1, 0xa6fe8ac4, 0x2e539d34, 0xf355a0a2, 0x8ae13205, 0xf6eb75a4, 0x83ec390b, 0x60efaa40, 0x719f065e, 0x6e1051bd, 0x218af93e, 0xdd063d96, 0x3e05aedd, 0xe6bd464d, 0x548db591, 0xc45d0571, 0x06d46f04, 0x5015ff60, 0x98fb2419, 0xbde997d6, 0x4043cc89, 0xd99e7767, 0xe842bdb0, 0x898b8807, 0x195b38e7, 0xc8eedb79, 0x7c0a47a1, 0x420fe97c, 0x841ec9f8, 0x00000000, 0x80868309, 0x2bed4832, 0x1170ac1e, 0x5a724e6c, 0x0efffbfd, 0x8538560f, 0xaed51e3d, 0x2d392736, 0x0fd9640a, 0x5ca62168, 0x5b54d19b, 0x362e3a24, 0x0a67b10c, 0x57e70f93, 0xee96d2b4, 0x9b919e1b, 0xc0c54f80, 0xdc20a261, 0x774b695a, 0x121a161c, 0x93ba0ae2, 0xa02ae5c0, 0x22e0433c, 0x1b171d12, 0x090d0b0e, 0x8bc7adf2, 0xb6a8b92d, 0x1ea9c814, 0xf1198557, 0x75074caf, 0x99ddbbee, 0x7f60fda3, 0x01269ff7, 0x72f5bc5c, 0x663bc544, 0xfb7e345b, 0x4329768b, 0x23c6dccb, 0xedfc68b6, 0xe4f163b8, 0x31dccad7, 0x63851042, 0x97224013, 0xc6112084, 0x4a247d85, 0xbb3df8d2, 0xf93211ae, 0x29a16dc7, 0x9e2f4b1d, 0xb230f3dc, 0x8652ec0d, 0xc1e3d077, 0xb3166c2b, 0x70b999a9, 0x9448fa11, 0xe9642247, 0xfc8cc4a8, 0xf03f1aa0, 0x7d2cd856, 0x3390ef22, 0x494ec787, 0x38d1c1d9, 0xcaa2fe8c, 0xd40b3698, 0xf581cfa6, 0x7ade28a5, 0xb78e26da, 0xadbfa43f, 0x3a9de42c, 0x78920d50, 0x5fcc9b6a, 0x7e466254, 0x8d13c2f6, 0xd8b8e890, 0x39f75e2e, 0xc3aff582, 0x5d80be9f, 0xd0937c69, 0xd52da96f, 0x2512b3cf, 0xac993bc8, 0x187da710, 0x9c636ee8, 0x3bbb7bdb, 0x267809cd, 0x5918f46e, 0x9ab701ec, 0x4f9aa883, 0x956e65e6, 0xffe67eaa, 0xbccf0821, 0x15e8e6ef, 0xe79bd9ba, 0x6f36ce4a, 0x9f09d4ea, 0xb07cd629, 0xa4b2af31, 0x3f23312a, 0xa59430c6, 0xa266c035, 0x4ebc3774, 0x82caa6fc, 0x90d0b0e0, 0xa7d81533, 0x04984af1, 0xecdaf741, 0xcd500e7f, 0x91f62f17, 0x4dd68d76, 0xefb04d43, 0xaa4d54cc, 0x9604dfe4, 0xd1b5e39e, 0x6a881b4c, 0x2c1fb8c1, 0x65517f46, 0x5eea049d, 0x8c355d01, 0x877473fa, 0x0b412efb, 0x671d5ab3, 0xdbd25292, 0x105633e9, 0xd647136d, 0xd7618c9a, 0xa10c7a37, 0xf8148e59, 0x133c89eb, 0xa927eece, 0x61c935b7, 0x1ce5ede1, 0x47b13c7a, 0xd2df599c, 0xf2733f55, 0x14ce7918, 0xc737bf73, 0xf7cdea53, 0xfdaa5b5f, 0x3d6f14df, 0x44db8678, 0xaff381ca, 0x68c43eb9, 0x24342c38, 0xa3405fc2, 0x1dc37216, 0xe2250cbc, 0x3c498b28, 0x0d9541ff, 0xa8017139, 0x0cb3de08, 0xb4e49cd8, 0x56c19064, 0xcb84617b, 0x32b670d5, 0x6c5c7448, 0xb85742d0];\n\n // Transformations for decryption key expansion\n var U1 = [0x00000000, 0x0e090d0b, 0x1c121a16, 0x121b171d, 0x3824342c, 0x362d3927, 0x24362e3a, 0x2a3f2331, 0x70486858, 0x7e416553, 0x6c5a724e, 0x62537f45, 0x486c5c74, 0x4665517f, 0x547e4662, 0x5a774b69, 0xe090d0b0, 0xee99ddbb, 0xfc82caa6, 0xf28bc7ad, 0xd8b4e49c, 0xd6bde997, 0xc4a6fe8a, 0xcaaff381, 0x90d8b8e8, 0x9ed1b5e3, 0x8ccaa2fe, 0x82c3aff5, 0xa8fc8cc4, 0xa6f581cf, 0xb4ee96d2, 0xbae79bd9, 0xdb3bbb7b, 0xd532b670, 0xc729a16d, 0xc920ac66, 0xe31f8f57, 0xed16825c, 0xff0d9541, 0xf104984a, 0xab73d323, 0xa57ade28, 0xb761c935, 0xb968c43e, 0x9357e70f, 0x9d5eea04, 0x8f45fd19, 0x814cf012, 0x3bab6bcb, 0x35a266c0, 0x27b971dd, 0x29b07cd6, 0x038f5fe7, 0x0d8652ec, 0x1f9d45f1, 0x119448fa, 0x4be30393, 0x45ea0e98, 0x57f11985, 0x59f8148e, 0x73c737bf, 0x7dce3ab4, 0x6fd52da9, 0x61dc20a2, 0xad766df6, 0xa37f60fd, 0xb16477e0, 0xbf6d7aeb, 0x955259da, 0x9b5b54d1, 0x894043cc, 0x87494ec7, 0xdd3e05ae, 0xd33708a5, 0xc12c1fb8, 0xcf2512b3, 0xe51a3182, 0xeb133c89, 0xf9082b94, 0xf701269f, 0x4de6bd46, 0x43efb04d, 0x51f4a750, 0x5ffdaa5b, 0x75c2896a, 0x7bcb8461, 0x69d0937c, 0x67d99e77, 0x3daed51e, 0x33a7d815, 0x21bccf08, 0x2fb5c203, 0x058ae132, 0x0b83ec39, 0x1998fb24, 0x1791f62f, 0x764dd68d, 0x7844db86, 0x6a5fcc9b, 0x6456c190, 0x4e69e2a1, 0x4060efaa, 0x527bf8b7, 0x5c72f5bc, 0x0605bed5, 0x080cb3de, 0x1a17a4c3, 0x141ea9c8, 0x3e218af9, 0x302887f2, 0x223390ef, 0x2c3a9de4, 0x96dd063d, 0x98d40b36, 0x8acf1c2b, 0x84c61120, 0xaef93211, 0xa0f03f1a, 0xb2eb2807, 0xbce2250c, 0xe6956e65, 0xe89c636e, 0xfa877473, 0xf48e7978, 0xdeb15a49, 0xd0b85742, 0xc2a3405f, 0xccaa4d54, 0x41ecdaf7, 0x4fe5d7fc, 0x5dfec0e1, 0x53f7cdea, 0x79c8eedb, 0x77c1e3d0, 0x65daf4cd, 0x6bd3f9c6, 0x31a4b2af, 0x3fadbfa4, 0x2db6a8b9, 0x23bfa5b2, 0x09808683, 0x07898b88, 0x15929c95, 0x1b9b919e, 0xa17c0a47, 0xaf75074c, 0xbd6e1051, 0xb3671d5a, 0x99583e6b, 0x97513360, 0x854a247d, 0x8b432976, 0xd134621f, 0xdf3d6f14, 0xcd267809, 0xc32f7502, 0xe9105633, 0xe7195b38, 0xf5024c25, 0xfb0b412e, 0x9ad7618c, 0x94de6c87, 0x86c57b9a, 0x88cc7691, 0xa2f355a0, 0xacfa58ab, 0xbee14fb6, 0xb0e842bd, 0xea9f09d4, 0xe49604df, 0xf68d13c2, 0xf8841ec9, 0xd2bb3df8, 0xdcb230f3, 0xcea927ee, 0xc0a02ae5, 0x7a47b13c, 0x744ebc37, 0x6655ab2a, 0x685ca621, 0x42638510, 0x4c6a881b, 0x5e719f06, 0x5078920d, 0x0a0fd964, 0x0406d46f, 0x161dc372, 0x1814ce79, 0x322bed48, 0x3c22e043, 0x2e39f75e, 0x2030fa55, 0xec9ab701, 0xe293ba0a, 0xf088ad17, 0xfe81a01c, 0xd4be832d, 0xdab78e26, 0xc8ac993b, 0xc6a59430, 0x9cd2df59, 0x92dbd252, 0x80c0c54f, 0x8ec9c844, 0xa4f6eb75, 0xaaffe67e, 0xb8e4f163, 0xb6edfc68, 0x0c0a67b1, 0x02036aba, 0x10187da7, 0x1e1170ac, 0x342e539d, 0x3a275e96, 0x283c498b, 0x26354480, 0x7c420fe9, 0x724b02e2, 0x605015ff, 0x6e5918f4, 0x44663bc5, 0x4a6f36ce, 0x587421d3, 0x567d2cd8, 0x37a10c7a, 0x39a80171, 0x2bb3166c, 0x25ba1b67, 0x0f853856, 0x018c355d, 0x13972240, 0x1d9e2f4b, 0x47e96422, 0x49e06929, 0x5bfb7e34, 0x55f2733f, 0x7fcd500e, 0x71c45d05, 0x63df4a18, 0x6dd64713, 0xd731dcca, 0xd938d1c1, 0xcb23c6dc, 0xc52acbd7, 0xef15e8e6, 0xe11ce5ed, 0xf307f2f0, 0xfd0efffb, 0xa779b492, 0xa970b999, 0xbb6bae84, 0xb562a38f, 0x9f5d80be, 0x91548db5, 0x834f9aa8, 0x8d4697a3];\n var U2 = [0x00000000, 0x0b0e090d, 0x161c121a, 0x1d121b17, 0x2c382434, 0x27362d39, 0x3a24362e, 0x312a3f23, 0x58704868, 0x537e4165, 0x4e6c5a72, 0x4562537f, 0x74486c5c, 0x7f466551, 0x62547e46, 0x695a774b, 0xb0e090d0, 0xbbee99dd, 0xa6fc82ca, 0xadf28bc7, 0x9cd8b4e4, 0x97d6bde9, 0x8ac4a6fe, 0x81caaff3, 0xe890d8b8, 0xe39ed1b5, 0xfe8ccaa2, 0xf582c3af, 0xc4a8fc8c, 0xcfa6f581, 0xd2b4ee96, 0xd9bae79b, 0x7bdb3bbb, 0x70d532b6, 0x6dc729a1, 0x66c920ac, 0x57e31f8f, 0x5ced1682, 0x41ff0d95, 0x4af10498, 0x23ab73d3, 0x28a57ade, 0x35b761c9, 0x3eb968c4, 0x0f9357e7, 0x049d5eea, 0x198f45fd, 0x12814cf0, 0xcb3bab6b, 0xc035a266, 0xdd27b971, 0xd629b07c, 0xe7038f5f, 0xec0d8652, 0xf11f9d45, 0xfa119448, 0x934be303, 0x9845ea0e, 0x8557f119, 0x8e59f814, 0xbf73c737, 0xb47dce3a, 0xa96fd52d, 0xa261dc20, 0xf6ad766d, 0xfda37f60, 0xe0b16477, 0xebbf6d7a, 0xda955259, 0xd19b5b54, 0xcc894043, 0xc787494e, 0xaedd3e05, 0xa5d33708, 0xb8c12c1f, 0xb3cf2512, 0x82e51a31, 0x89eb133c, 0x94f9082b, 0x9ff70126, 0x464de6bd, 0x4d43efb0, 0x5051f4a7, 0x5b5ffdaa, 0x6a75c289, 0x617bcb84, 0x7c69d093, 0x7767d99e, 0x1e3daed5, 0x1533a7d8, 0x0821bccf, 0x032fb5c2, 0x32058ae1, 0x390b83ec, 0x241998fb, 0x2f1791f6, 0x8d764dd6, 0x867844db, 0x9b6a5fcc, 0x906456c1, 0xa14e69e2, 0xaa4060ef, 0xb7527bf8, 0xbc5c72f5, 0xd50605be, 0xde080cb3, 0xc31a17a4, 0xc8141ea9, 0xf93e218a, 0xf2302887, 0xef223390, 0xe42c3a9d, 0x3d96dd06, 0x3698d40b, 0x2b8acf1c, 0x2084c611, 0x11aef932, 0x1aa0f03f, 0x07b2eb28, 0x0cbce225, 0x65e6956e, 0x6ee89c63, 0x73fa8774, 0x78f48e79, 0x49deb15a, 0x42d0b857, 0x5fc2a340, 0x54ccaa4d, 0xf741ecda, 0xfc4fe5d7, 0xe15dfec0, 0xea53f7cd, 0xdb79c8ee, 0xd077c1e3, 0xcd65daf4, 0xc66bd3f9, 0xaf31a4b2, 0xa43fadbf, 0xb92db6a8, 0xb223bfa5, 0x83098086, 0x8807898b, 0x9515929c, 0x9e1b9b91, 0x47a17c0a, 0x4caf7507, 0x51bd6e10, 0x5ab3671d, 0x6b99583e, 0x60975133, 0x7d854a24, 0x768b4329, 0x1fd13462, 0x14df3d6f, 0x09cd2678, 0x02c32f75, 0x33e91056, 0x38e7195b, 0x25f5024c, 0x2efb0b41, 0x8c9ad761, 0x8794de6c, 0x9a86c57b, 0x9188cc76, 0xa0a2f355, 0xabacfa58, 0xb6bee14f, 0xbdb0e842, 0xd4ea9f09, 0xdfe49604, 0xc2f68d13, 0xc9f8841e, 0xf8d2bb3d, 0xf3dcb230, 0xeecea927, 0xe5c0a02a, 0x3c7a47b1, 0x37744ebc, 0x2a6655ab, 0x21685ca6, 0x10426385, 0x1b4c6a88, 0x065e719f, 0x0d507892, 0x640a0fd9, 0x6f0406d4, 0x72161dc3, 0x791814ce, 0x48322bed, 0x433c22e0, 0x5e2e39f7, 0x552030fa, 0x01ec9ab7, 0x0ae293ba, 0x17f088ad, 0x1cfe81a0, 0x2dd4be83, 0x26dab78e, 0x3bc8ac99, 0x30c6a594, 0x599cd2df, 0x5292dbd2, 0x4f80c0c5, 0x448ec9c8, 0x75a4f6eb, 0x7eaaffe6, 0x63b8e4f1, 0x68b6edfc, 0xb10c0a67, 0xba02036a, 0xa710187d, 0xac1e1170, 0x9d342e53, 0x963a275e, 0x8b283c49, 0x80263544, 0xe97c420f, 0xe2724b02, 0xff605015, 0xf46e5918, 0xc544663b, 0xce4a6f36, 0xd3587421, 0xd8567d2c, 0x7a37a10c, 0x7139a801, 0x6c2bb316, 0x6725ba1b, 0x560f8538, 0x5d018c35, 0x40139722, 0x4b1d9e2f, 0x2247e964, 0x2949e069, 0x345bfb7e, 0x3f55f273, 0x0e7fcd50, 0x0571c45d, 0x1863df4a, 0x136dd647, 0xcad731dc, 0xc1d938d1, 0xdccb23c6, 0xd7c52acb, 0xe6ef15e8, 0xede11ce5, 0xf0f307f2, 0xfbfd0eff, 0x92a779b4, 0x99a970b9, 0x84bb6bae, 0x8fb562a3, 0xbe9f5d80, 0xb591548d, 0xa8834f9a, 0xa38d4697];\n var U3 = [0x00000000, 0x0d0b0e09, 0x1a161c12, 0x171d121b, 0x342c3824, 0x3927362d, 0x2e3a2436, 0x23312a3f, 0x68587048, 0x65537e41, 0x724e6c5a, 0x7f456253, 0x5c74486c, 0x517f4665, 0x4662547e, 0x4b695a77, 0xd0b0e090, 0xddbbee99, 0xcaa6fc82, 0xc7adf28b, 0xe49cd8b4, 0xe997d6bd, 0xfe8ac4a6, 0xf381caaf, 0xb8e890d8, 0xb5e39ed1, 0xa2fe8cca, 0xaff582c3, 0x8cc4a8fc, 0x81cfa6f5, 0x96d2b4ee, 0x9bd9bae7, 0xbb7bdb3b, 0xb670d532, 0xa16dc729, 0xac66c920, 0x8f57e31f, 0x825ced16, 0x9541ff0d, 0x984af104, 0xd323ab73, 0xde28a57a, 0xc935b761, 0xc43eb968, 0xe70f9357, 0xea049d5e, 0xfd198f45, 0xf012814c, 0x6bcb3bab, 0x66c035a2, 0x71dd27b9, 0x7cd629b0, 0x5fe7038f, 0x52ec0d86, 0x45f11f9d, 0x48fa1194, 0x03934be3, 0x0e9845ea, 0x198557f1, 0x148e59f8, 0x37bf73c7, 0x3ab47dce, 0x2da96fd5, 0x20a261dc, 0x6df6ad76, 0x60fda37f, 0x77e0b164, 0x7aebbf6d, 0x59da9552, 0x54d19b5b, 0x43cc8940, 0x4ec78749, 0x05aedd3e, 0x08a5d337, 0x1fb8c12c, 0x12b3cf25, 0x3182e51a, 0x3c89eb13, 0x2b94f908, 0x269ff701, 0xbd464de6, 0xb04d43ef, 0xa75051f4, 0xaa5b5ffd, 0x896a75c2, 0x84617bcb, 0x937c69d0, 0x9e7767d9, 0xd51e3dae, 0xd81533a7, 0xcf0821bc, 0xc2032fb5, 0xe132058a, 0xec390b83, 0xfb241998, 0xf62f1791, 0xd68d764d, 0xdb867844, 0xcc9b6a5f, 0xc1906456, 0xe2a14e69, 0xefaa4060, 0xf8b7527b, 0xf5bc5c72, 0xbed50605, 0xb3de080c, 0xa4c31a17, 0xa9c8141e, 0x8af93e21, 0x87f23028, 0x90ef2233, 0x9de42c3a, 0x063d96dd, 0x0b3698d4, 0x1c2b8acf, 0x112084c6, 0x3211aef9, 0x3f1aa0f0, 0x2807b2eb, 0x250cbce2, 0x6e65e695, 0x636ee89c, 0x7473fa87, 0x7978f48e, 0x5a49deb1, 0x5742d0b8, 0x405fc2a3, 0x4d54ccaa, 0xdaf741ec, 0xd7fc4fe5, 0xc0e15dfe, 0xcdea53f7, 0xeedb79c8, 0xe3d077c1, 0xf4cd65da, 0xf9c66bd3, 0xb2af31a4, 0xbfa43fad, 0xa8b92db6, 0xa5b223bf, 0x86830980, 0x8b880789, 0x9c951592, 0x919e1b9b, 0x0a47a17c, 0x074caf75, 0x1051bd6e, 0x1d5ab367, 0x3e6b9958, 0x33609751, 0x247d854a, 0x29768b43, 0x621fd134, 0x6f14df3d, 0x7809cd26, 0x7502c32f, 0x5633e910, 0x5b38e719, 0x4c25f502, 0x412efb0b, 0x618c9ad7, 0x6c8794de, 0x7b9a86c5, 0x769188cc, 0x55a0a2f3, 0x58abacfa, 0x4fb6bee1, 0x42bdb0e8, 0x09d4ea9f, 0x04dfe496, 0x13c2f68d, 0x1ec9f884, 0x3df8d2bb, 0x30f3dcb2, 0x27eecea9, 0x2ae5c0a0, 0xb13c7a47, 0xbc37744e, 0xab2a6655, 0xa621685c, 0x85104263, 0x881b4c6a, 0x9f065e71, 0x920d5078, 0xd9640a0f, 0xd46f0406, 0xc372161d, 0xce791814, 0xed48322b, 0xe0433c22, 0xf75e2e39, 0xfa552030, 0xb701ec9a, 0xba0ae293, 0xad17f088, 0xa01cfe81, 0x832dd4be, 0x8e26dab7, 0x993bc8ac, 0x9430c6a5, 0xdf599cd2, 0xd25292db, 0xc54f80c0, 0xc8448ec9, 0xeb75a4f6, 0xe67eaaff, 0xf163b8e4, 0xfc68b6ed, 0x67b10c0a, 0x6aba0203, 0x7da71018, 0x70ac1e11, 0x539d342e, 0x5e963a27, 0x498b283c, 0x44802635, 0x0fe97c42, 0x02e2724b, 0x15ff6050, 0x18f46e59, 0x3bc54466, 0x36ce4a6f, 0x21d35874, 0x2cd8567d, 0x0c7a37a1, 0x017139a8, 0x166c2bb3, 0x1b6725ba, 0x38560f85, 0x355d018c, 0x22401397, 0x2f4b1d9e, 0x642247e9, 0x692949e0, 0x7e345bfb, 0x733f55f2, 0x500e7fcd, 0x5d0571c4, 0x4a1863df, 0x47136dd6, 0xdccad731, 0xd1c1d938, 0xc6dccb23, 0xcbd7c52a, 0xe8e6ef15, 0xe5ede11c, 0xf2f0f307, 0xfffbfd0e, 0xb492a779, 0xb999a970, 0xae84bb6b, 0xa38fb562, 0x80be9f5d, 0x8db59154, 0x9aa8834f, 0x97a38d46];\n var U4 = [0x00000000, 0x090d0b0e, 0x121a161c, 0x1b171d12, 0x24342c38, 0x2d392736, 0x362e3a24, 0x3f23312a, 0x48685870, 0x4165537e, 0x5a724e6c, 0x537f4562, 0x6c5c7448, 0x65517f46, 0x7e466254, 0x774b695a, 0x90d0b0e0, 0x99ddbbee, 0x82caa6fc, 0x8bc7adf2, 0xb4e49cd8, 0xbde997d6, 0xa6fe8ac4, 0xaff381ca, 0xd8b8e890, 0xd1b5e39e, 0xcaa2fe8c, 0xc3aff582, 0xfc8cc4a8, 0xf581cfa6, 0xee96d2b4, 0xe79bd9ba, 0x3bbb7bdb, 0x32b670d5, 0x29a16dc7, 0x20ac66c9, 0x1f8f57e3, 0x16825ced, 0x0d9541ff, 0x04984af1, 0x73d323ab, 0x7ade28a5, 0x61c935b7, 0x68c43eb9, 0x57e70f93, 0x5eea049d, 0x45fd198f, 0x4cf01281, 0xab6bcb3b, 0xa266c035, 0xb971dd27, 0xb07cd629, 0x8f5fe703, 0x8652ec0d, 0x9d45f11f, 0x9448fa11, 0xe303934b, 0xea0e9845, 0xf1198557, 0xf8148e59, 0xc737bf73, 0xce3ab47d, 0xd52da96f, 0xdc20a261, 0x766df6ad, 0x7f60fda3, 0x6477e0b1, 0x6d7aebbf, 0x5259da95, 0x5b54d19b, 0x4043cc89, 0x494ec787, 0x3e05aedd, 0x3708a5d3, 0x2c1fb8c1, 0x2512b3cf, 0x1a3182e5, 0x133c89eb, 0x082b94f9, 0x01269ff7, 0xe6bd464d, 0xefb04d43, 0xf4a75051, 0xfdaa5b5f, 0xc2896a75, 0xcb84617b, 0xd0937c69, 0xd99e7767, 0xaed51e3d, 0xa7d81533, 0xbccf0821, 0xb5c2032f, 0x8ae13205, 0x83ec390b, 0x98fb2419, 0x91f62f17, 0x4dd68d76, 0x44db8678, 0x5fcc9b6a, 0x56c19064, 0x69e2a14e, 0x60efaa40, 0x7bf8b752, 0x72f5bc5c, 0x05bed506, 0x0cb3de08, 0x17a4c31a, 0x1ea9c814, 0x218af93e, 0x2887f230, 0x3390ef22, 0x3a9de42c, 0xdd063d96, 0xd40b3698, 0xcf1c2b8a, 0xc6112084, 0xf93211ae, 0xf03f1aa0, 0xeb2807b2, 0xe2250cbc, 0x956e65e6, 0x9c636ee8, 0x877473fa, 0x8e7978f4, 0xb15a49de, 0xb85742d0, 0xa3405fc2, 0xaa4d54cc, 0xecdaf741, 0xe5d7fc4f, 0xfec0e15d, 0xf7cdea53, 0xc8eedb79, 0xc1e3d077, 0xdaf4cd65, 0xd3f9c66b, 0xa4b2af31, 0xadbfa43f, 0xb6a8b92d, 0xbfa5b223, 0x80868309, 0x898b8807, 0x929c9515, 0x9b919e1b, 0x7c0a47a1, 0x75074caf, 0x6e1051bd, 0x671d5ab3, 0x583e6b99, 0x51336097, 0x4a247d85, 0x4329768b, 0x34621fd1, 0x3d6f14df, 0x267809cd, 0x2f7502c3, 0x105633e9, 0x195b38e7, 0x024c25f5, 0x0b412efb, 0xd7618c9a, 0xde6c8794, 0xc57b9a86, 0xcc769188, 0xf355a0a2, 0xfa58abac, 0xe14fb6be, 0xe842bdb0, 0x9f09d4ea, 0x9604dfe4, 0x8d13c2f6, 0x841ec9f8, 0xbb3df8d2, 0xb230f3dc, 0xa927eece, 0xa02ae5c0, 0x47b13c7a, 0x4ebc3774, 0x55ab2a66, 0x5ca62168, 0x63851042, 0x6a881b4c, 0x719f065e, 0x78920d50, 0x0fd9640a, 0x06d46f04, 0x1dc37216, 0x14ce7918, 0x2bed4832, 0x22e0433c, 0x39f75e2e, 0x30fa5520, 0x9ab701ec, 0x93ba0ae2, 0x88ad17f0, 0x81a01cfe, 0xbe832dd4, 0xb78e26da, 0xac993bc8, 0xa59430c6, 0xd2df599c, 0xdbd25292, 0xc0c54f80, 0xc9c8448e, 0xf6eb75a4, 0xffe67eaa, 0xe4f163b8, 0xedfc68b6, 0x0a67b10c, 0x036aba02, 0x187da710, 0x1170ac1e, 0x2e539d34, 0x275e963a, 0x3c498b28, 0x35448026, 0x420fe97c, 0x4b02e272, 0x5015ff60, 0x5918f46e, 0x663bc544, 0x6f36ce4a, 0x7421d358, 0x7d2cd856, 0xa10c7a37, 0xa8017139, 0xb3166c2b, 0xba1b6725, 0x8538560f, 0x8c355d01, 0x97224013, 0x9e2f4b1d, 0xe9642247, 0xe0692949, 0xfb7e345b, 0xf2733f55, 0xcd500e7f, 0xc45d0571, 0xdf4a1863, 0xd647136d, 0x31dccad7, 0x38d1c1d9, 0x23c6dccb, 0x2acbd7c5, 0x15e8e6ef, 0x1ce5ede1, 0x07f2f0f3, 0x0efffbfd, 0x79b492a7, 0x70b999a9, 0x6bae84bb, 0x62a38fb5, 0x5d80be9f, 0x548db591, 0x4f9aa883, 0x4697a38d];\n\n function convertToInt32(bytes) {\n var result = [];\n for (var i = 0; i < bytes.length; i += 4) {\n result.push(\n (bytes[i ] << 24) |\n (bytes[i + 1] << 16) |\n (bytes[i + 2] << 8) |\n bytes[i + 3]\n );\n }\n return result;\n }\n\n var AES = function(key) {\n if (!(this instanceof AES)) {\n throw Error('AES must be instanitated with `new`');\n }\n\n Object.defineProperty(this, 'key', {\n value: coerceArray(key, true)\n });\n\n this._prepare();\n }\n\n\n AES.prototype._prepare = function() {\n\n var rounds = numberOfRounds[this.key.length];\n if (rounds == null) {\n throw new Error('invalid key size (must be 16, 24 or 32 bytes)');\n }\n\n // encryption round keys\n this._Ke = [];\n\n // decryption round keys\n this._Kd = [];\n\n for (var i = 0; i <= rounds; i++) {\n this._Ke.push([0, 0, 0, 0]);\n this._Kd.push([0, 0, 0, 0]);\n }\n\n var roundKeyCount = (rounds + 1) * 4;\n var KC = this.key.length / 4;\n\n // convert the key into ints\n var tk = convertToInt32(this.key);\n\n // copy values into round key arrays\n var index;\n for (var i = 0; i < KC; i++) {\n index = i >> 2;\n this._Ke[index][i % 4] = tk[i];\n this._Kd[rounds - index][i % 4] = tk[i];\n }\n\n // key expansion (fips-197 section 5.2)\n var rconpointer = 0;\n var t = KC, tt;\n while (t < roundKeyCount) {\n tt = tk[KC - 1];\n tk[0] ^= ((S[(tt >> 16) & 0xFF] << 24) ^\n (S[(tt >> 8) & 0xFF] << 16) ^\n (S[ tt & 0xFF] << 8) ^\n S[(tt >> 24) & 0xFF] ^\n (rcon[rconpointer] << 24));\n rconpointer += 1;\n\n // key expansion (for non-256 bit)\n if (KC != 8) {\n for (var i = 1; i < KC; i++) {\n tk[i] ^= tk[i - 1];\n }\n\n // key expansion for 256-bit keys is \"slightly different\" (fips-197)\n } else {\n for (var i = 1; i < (KC / 2); i++) {\n tk[i] ^= tk[i - 1];\n }\n tt = tk[(KC / 2) - 1];\n\n tk[KC / 2] ^= (S[ tt & 0xFF] ^\n (S[(tt >> 8) & 0xFF] << 8) ^\n (S[(tt >> 16) & 0xFF] << 16) ^\n (S[(tt >> 24) & 0xFF] << 24));\n\n for (var i = (KC / 2) + 1; i < KC; i++) {\n tk[i] ^= tk[i - 1];\n }\n }\n\n // copy values into round key arrays\n var i = 0, r, c;\n while (i < KC && t < roundKeyCount) {\n r = t >> 2;\n c = t % 4;\n this._Ke[r][c] = tk[i];\n this._Kd[rounds - r][c] = tk[i++];\n t++;\n }\n }\n\n // inverse-cipher-ify the decryption round key (fips-197 section 5.3)\n for (var r = 1; r < rounds; r++) {\n for (var c = 0; c < 4; c++) {\n tt = this._Kd[r][c];\n this._Kd[r][c] = (U1[(tt >> 24) & 0xFF] ^\n U2[(tt >> 16) & 0xFF] ^\n U3[(tt >> 8) & 0xFF] ^\n U4[ tt & 0xFF]);\n }\n }\n }\n\n AES.prototype.encrypt = function(plaintext) {\n if (plaintext.length != 16) {\n throw new Error('invalid plaintext size (must be 16 bytes)');\n }\n\n var rounds = this._Ke.length - 1;\n var a = [0, 0, 0, 0];\n\n // convert plaintext to (ints ^ key)\n var t = convertToInt32(plaintext);\n for (var i = 0; i < 4; i++) {\n t[i] ^= this._Ke[0][i];\n }\n\n // apply round transforms\n for (var r = 1; r < rounds; r++) {\n for (var i = 0; i < 4; i++) {\n a[i] = (T1[(t[ i ] >> 24) & 0xff] ^\n T2[(t[(i + 1) % 4] >> 16) & 0xff] ^\n T3[(t[(i + 2) % 4] >> 8) & 0xff] ^\n T4[ t[(i + 3) % 4] & 0xff] ^\n this._Ke[r][i]);\n }\n t = a.slice();\n }\n\n // the last round is special\n var result = createArray(16), tt;\n for (var i = 0; i < 4; i++) {\n tt = this._Ke[rounds][i];\n result[4 * i ] = (S[(t[ i ] >> 24) & 0xff] ^ (tt >> 24)) & 0xff;\n result[4 * i + 1] = (S[(t[(i + 1) % 4] >> 16) & 0xff] ^ (tt >> 16)) & 0xff;\n result[4 * i + 2] = (S[(t[(i + 2) % 4] >> 8) & 0xff] ^ (tt >> 8)) & 0xff;\n result[4 * i + 3] = (S[ t[(i + 3) % 4] & 0xff] ^ tt ) & 0xff;\n }\n\n return result;\n }\n\n AES.prototype.decrypt = function(ciphertext) {\n if (ciphertext.length != 16) {\n throw new Error('invalid ciphertext size (must be 16 bytes)');\n }\n\n var rounds = this._Kd.length - 1;\n var a = [0, 0, 0, 0];\n\n // convert plaintext to (ints ^ key)\n var t = convertToInt32(ciphertext);\n for (var i = 0; i < 4; i++) {\n t[i] ^= this._Kd[0][i];\n }\n\n // apply round transforms\n for (var r = 1; r < rounds; r++) {\n for (var i = 0; i < 4; i++) {\n a[i] = (T5[(t[ i ] >> 24) & 0xff] ^\n T6[(t[(i + 3) % 4] >> 16) & 0xff] ^\n T7[(t[(i + 2) % 4] >> 8) & 0xff] ^\n T8[ t[(i + 1) % 4] & 0xff] ^\n this._Kd[r][i]);\n }\n t = a.slice();\n }\n\n // the last round is special\n var result = createArray(16), tt;\n for (var i = 0; i < 4; i++) {\n tt = this._Kd[rounds][i];\n result[4 * i ] = (Si[(t[ i ] >> 24) & 0xff] ^ (tt >> 24)) & 0xff;\n result[4 * i + 1] = (Si[(t[(i + 3) % 4] >> 16) & 0xff] ^ (tt >> 16)) & 0xff;\n result[4 * i + 2] = (Si[(t[(i + 2) % 4] >> 8) & 0xff] ^ (tt >> 8)) & 0xff;\n result[4 * i + 3] = (Si[ t[(i + 1) % 4] & 0xff] ^ tt ) & 0xff;\n }\n\n return result;\n }\n\n\n /**\n * Mode Of Operation - Electonic Codebook (ECB)\n */\n var ModeOfOperationECB = function(key) {\n if (!(this instanceof ModeOfOperationECB)) {\n throw Error('AES must be instanitated with `new`');\n }\n\n this.description = \"Electronic Code Block\";\n this.name = \"ecb\";\n\n this._aes = new AES(key);\n }\n\n ModeOfOperationECB.prototype.encrypt = function(plaintext) {\n plaintext = coerceArray(plaintext);\n\n if ((plaintext.length % 16) !== 0) {\n throw new Error('invalid plaintext size (must be multiple of 16 bytes)');\n }\n\n var ciphertext = createArray(plaintext.length);\n var block = createArray(16);\n\n for (var i = 0; i < plaintext.length; i += 16) {\n copyArray(plaintext, block, 0, i, i + 16);\n block = this._aes.encrypt(block);\n copyArray(block, ciphertext, i);\n }\n\n return ciphertext;\n }\n\n ModeOfOperationECB.prototype.decrypt = function(ciphertext) {\n ciphertext = coerceArray(ciphertext);\n\n if ((ciphertext.length % 16) !== 0) {\n throw new Error('invalid ciphertext size (must be multiple of 16 bytes)');\n }\n\n var plaintext = createArray(ciphertext.length);\n var block = createArray(16);\n\n for (var i = 0; i < ciphertext.length; i += 16) {\n copyArray(ciphertext, block, 0, i, i + 16);\n block = this._aes.decrypt(block);\n copyArray(block, plaintext, i);\n }\n\n return plaintext;\n }\n\n\n /**\n * Mode Of Operation - Cipher Block Chaining (CBC)\n */\n var ModeOfOperationCBC = function(key, iv) {\n if (!(this instanceof ModeOfOperationCBC)) {\n throw Error('AES must be instanitated with `new`');\n }\n\n this.description = \"Cipher Block Chaining\";\n this.name = \"cbc\";\n\n if (!iv) {\n iv = createArray(16);\n\n } else if (iv.length != 16) {\n throw new Error('invalid initialation vector size (must be 16 bytes)');\n }\n\n this._lastCipherblock = coerceArray(iv, true);\n\n this._aes = new AES(key);\n }\n\n ModeOfOperationCBC.prototype.encrypt = function(plaintext) {\n plaintext = coerceArray(plaintext);\n\n if ((plaintext.length % 16) !== 0) {\n throw new Error('invalid plaintext size (must be multiple of 16 bytes)');\n }\n\n var ciphertext = createArray(plaintext.length);\n var block = createArray(16);\n\n for (var i = 0; i < plaintext.length; i += 16) {\n copyArray(plaintext, block, 0, i, i + 16);\n\n for (var j = 0; j < 16; j++) {\n block[j] ^= this._lastCipherblock[j];\n }\n\n this._lastCipherblock = this._aes.encrypt(block);\n copyArray(this._lastCipherblock, ciphertext, i);\n }\n\n return ciphertext;\n }\n\n ModeOfOperationCBC.prototype.decrypt = function(ciphertext) {\n ciphertext = coerceArray(ciphertext);\n\n if ((ciphertext.length % 16) !== 0) {\n throw new Error('invalid ciphertext size (must be multiple of 16 bytes)');\n }\n\n var plaintext = createArray(ciphertext.length);\n var block = createArray(16);\n\n for (var i = 0; i < ciphertext.length; i += 16) {\n copyArray(ciphertext, block, 0, i, i + 16);\n block = this._aes.decrypt(block);\n\n for (var j = 0; j < 16; j++) {\n plaintext[i + j] = block[j] ^ this._lastCipherblock[j];\n }\n\n copyArray(ciphertext, this._lastCipherblock, 0, i, i + 16);\n }\n\n return plaintext;\n }\n\n\n /**\n * Mode Of Operation - Cipher Feedback (CFB)\n */\n var ModeOfOperationCFB = function(key, iv, segmentSize) {\n if (!(this instanceof ModeOfOperationCFB)) {\n throw Error('AES must be instanitated with `new`');\n }\n\n this.description = \"Cipher Feedback\";\n this.name = \"cfb\";\n\n if (!iv) {\n iv = createArray(16);\n\n } else if (iv.length != 16) {\n throw new Error('invalid initialation vector size (must be 16 size)');\n }\n\n if (!segmentSize) { segmentSize = 1; }\n\n this.segmentSize = segmentSize;\n\n this._shiftRegister = coerceArray(iv, true);\n\n this._aes = new AES(key);\n }\n\n ModeOfOperationCFB.prototype.encrypt = function(plaintext) {\n if ((plaintext.length % this.segmentSize) != 0) {\n throw new Error('invalid plaintext size (must be segmentSize bytes)');\n }\n\n var encrypted = coerceArray(plaintext, true);\n\n var xorSegment;\n for (var i = 0; i < encrypted.length; i += this.segmentSize) {\n xorSegment = this._aes.encrypt(this._shiftRegister);\n for (var j = 0; j < this.segmentSize; j++) {\n encrypted[i + j] ^= xorSegment[j];\n }\n\n // Shift the register\n copyArray(this._shiftRegister, this._shiftRegister, 0, this.segmentSize);\n copyArray(encrypted, this._shiftRegister, 16 - this.segmentSize, i, i + this.segmentSize);\n }\n\n return encrypted;\n }\n\n ModeOfOperationCFB.prototype.decrypt = function(ciphertext) {\n if ((ciphertext.length % this.segmentSize) != 0) {\n throw new Error('invalid ciphertext size (must be segmentSize bytes)');\n }\n\n var plaintext = coerceArray(ciphertext, true);\n\n var xorSegment;\n for (var i = 0; i < plaintext.length; i += this.segmentSize) {\n xorSegment = this._aes.encrypt(this._shiftRegister);\n\n for (var j = 0; j < this.segmentSize; j++) {\n plaintext[i + j] ^= xorSegment[j];\n }\n\n // Shift the register\n copyArray(this._shiftRegister, this._shiftRegister, 0, this.segmentSize);\n copyArray(ciphertext, this._shiftRegister, 16 - this.segmentSize, i, i + this.segmentSize);\n }\n\n return plaintext;\n }\n\n /**\n * Mode Of Operation - Output Feedback (OFB)\n */\n var ModeOfOperationOFB = function(key, iv) {\n if (!(this instanceof ModeOfOperationOFB)) {\n throw Error('AES must be instanitated with `new`');\n }\n\n this.description = \"Output Feedback\";\n this.name = \"ofb\";\n\n if (!iv) {\n iv = createArray(16);\n\n } else if (iv.length != 16) {\n throw new Error('invalid initialation vector size (must be 16 bytes)');\n }\n\n this._lastPrecipher = coerceArray(iv, true);\n this._lastPrecipherIndex = 16;\n\n this._aes = new AES(key);\n }\n\n ModeOfOperationOFB.prototype.encrypt = function(plaintext) {\n var encrypted = coerceArray(plaintext, true);\n\n for (var i = 0; i < encrypted.length; i++) {\n if (this._lastPrecipherIndex === 16) {\n this._lastPrecipher = this._aes.encrypt(this._lastPrecipher);\n this._lastPrecipherIndex = 0;\n }\n encrypted[i] ^= this._lastPrecipher[this._lastPrecipherIndex++];\n }\n\n return encrypted;\n }\n\n // Decryption is symetric\n ModeOfOperationOFB.prototype.decrypt = ModeOfOperationOFB.prototype.encrypt;\n\n\n /**\n * Counter object for CTR common mode of operation\n */\n var Counter = function(initialValue) {\n if (!(this instanceof Counter)) {\n throw Error('Counter must be instanitated with `new`');\n }\n\n // We allow 0, but anything false-ish uses the default 1\n if (initialValue !== 0 && !initialValue) { initialValue = 1; }\n\n if (typeof(initialValue) === 'number') {\n this._counter = createArray(16);\n this.setValue(initialValue);\n\n } else {\n this.setBytes(initialValue);\n }\n }\n\n Counter.prototype.setValue = function(value) {\n if (typeof(value) !== 'number' || parseInt(value) != value) {\n throw new Error('invalid counter value (must be an integer)');\n }\n\n for (var index = 15; index >= 0; --index) {\n this._counter[index] = value % 256;\n value = value >> 8;\n }\n }\n\n Counter.prototype.setBytes = function(bytes) {\n bytes = coerceArray(bytes, true);\n\n if (bytes.length != 16) {\n throw new Error('invalid counter bytes size (must be 16 bytes)');\n }\n\n this._counter = bytes;\n };\n\n Counter.prototype.increment = function() {\n for (var i = 15; i >= 0; i--) {\n if (this._counter[i] === 255) {\n this._counter[i] = 0;\n } else {\n this._counter[i]++;\n break;\n }\n }\n }\n\n\n /**\n * Mode Of Operation - Counter (CTR)\n */\n var ModeOfOperationCTR = function(key, counter) {\n if (!(this instanceof ModeOfOperationCTR)) {\n throw Error('AES must be instanitated with `new`');\n }\n\n this.description = \"Counter\";\n this.name = \"ctr\";\n\n if (!(counter instanceof Counter)) {\n counter = new Counter(counter)\n }\n\n this._counter = counter;\n\n this._remainingCounter = null;\n this._remainingCounterIndex = 16;\n\n this._aes = new AES(key);\n }\n\n ModeOfOperationCTR.prototype.encrypt = function(plaintext) {\n var encrypted = coerceArray(plaintext, true);\n\n for (var i = 0; i < encrypted.length; i++) {\n if (this._remainingCounterIndex === 16) {\n this._remainingCounter = this._aes.encrypt(this._counter._counter);\n this._remainingCounterIndex = 0;\n this._counter.increment();\n }\n encrypted[i] ^= this._remainingCounter[this._remainingCounterIndex++];\n }\n\n return encrypted;\n }\n\n // Decryption is symetric\n ModeOfOperationCTR.prototype.decrypt = ModeOfOperationCTR.prototype.encrypt;\n\n\n ///////////////////////\n // Padding\n\n // See:https://tools.ietf.org/html/rfc2315\n function pkcs7pad(data) {\n data = coerceArray(data, true);\n var padder = 16 - (data.length % 16);\n var result = createArray(data.length + padder);\n copyArray(data, result);\n for (var i = data.length; i < result.length; i++) {\n result[i] = padder;\n }\n return result;\n }\n\n function pkcs7strip(data) {\n data = coerceArray(data, true);\n if (data.length < 16) { throw new Error('PKCS#7 invalid length'); }\n\n var padder = data[data.length - 1];\n if (padder > 16) { throw new Error('PKCS#7 padding byte out of range'); }\n\n var length = data.length - padder;\n for (var i = 0; i < padder; i++) {\n if (data[length + i] !== padder) {\n throw new Error('PKCS#7 invalid padding byte');\n }\n }\n\n var result = createArray(length);\n copyArray(data, result, 0, 0, length);\n return result;\n }\n\n ///////////////////////\n // Exporting\n\n\n // The block cipher\n var aesjs = {\n AES: AES,\n Counter: Counter,\n\n ModeOfOperation: {\n ecb: ModeOfOperationECB,\n cbc: ModeOfOperationCBC,\n cfb: ModeOfOperationCFB,\n ofb: ModeOfOperationOFB,\n ctr: ModeOfOperationCTR\n },\n\n utils: {\n hex: convertHex,\n utf8: convertUtf8\n },\n\n padding: {\n pkcs7: {\n pad: pkcs7pad,\n strip: pkcs7strip\n }\n },\n\n _arrayTest: {\n coerceArray: coerceArray,\n createArray: createArray,\n copyArray: copyArray,\n }\n };\n\n\n // node.js\n if (typeof exports !== 'undefined') {\n module.exports = aesjs\n\n // RequireJS/AMD\n // http://www.requirejs.org/docs/api.html\n // https://github.com/amdjs/amdjs-api/wiki/AMD\n } else if (typeof(define) === 'function' && define.amd) {\n define(aesjs);\n\n // Web Browsers\n } else {\n\n // If there was an existing library at \"aesjs\" make sure it's still available\n if (root.aesjs) {\n aesjs._aesjs = root.aesjs;\n }\n\n root.aesjs = aesjs;\n }\n\n\n})(this);\n", "export const version = \"json-wallets/5.7.0\";\n", "\"use strict\";\n\nimport { arrayify, Bytes, BytesLike, hexlify } from \"@ethersproject/bytes\";\nimport { toUtf8Bytes, UnicodeNormalizationForm } from '@ethersproject/strings';\n\nexport function looseArrayify(hexString: string): Uint8Array {\n if (typeof(hexString) === 'string' && hexString.substring(0, 2) !== '0x') {\n hexString = '0x' + hexString;\n }\n return arrayify(hexString);\n}\n\nexport function zpad(value: String | number, length: number): String {\n value = String(value);\n while (value.length < length) { value = '0' + value; }\n return value;\n}\n\nexport function getPassword(password: Bytes | string): Uint8Array {\n if (typeof(password) === 'string') {\n return toUtf8Bytes(password, UnicodeNormalizationForm.NFKC);\n }\n return arrayify(password);\n}\n\nexport function searchPath(object: any, path: string): string {\n let currentChild = object;\n\n const comps = path.toLowerCase().split('/');\n for (let i = 0; i < comps.length; i++) {\n\n // Search for a child object with a case-insensitive matching key\n let matchingChild = null;\n for (const key in currentChild) {\n if (key.toLowerCase() === comps[i]) {\n matchingChild = currentChild[key];\n break;\n }\n }\n\n // Didn't find one. :'(\n if (matchingChild === null) {\n return null;\n }\n\n // Now check this child...\n currentChild = matchingChild;\n }\n\n return currentChild;\n}\n\n// See: https://www.ietf.org/rfc/rfc4122.txt (Section 4.4)\nexport function uuidV4(randomBytes: BytesLike): string {\n const bytes = arrayify(randomBytes);\n\n // Section: 4.1.3:\n // - time_hi_and_version[12:16] = 0b0100\n bytes[6] = (bytes[6] & 0x0f) | 0x40;\n\n // Section 4.4\n // - clock_seq_hi_and_reserved[6] = 0b0\n // - clock_seq_hi_and_reserved[7] = 0b1\n bytes[8] = (bytes[8] & 0x3f) | 0x80;\n\n const value = hexlify(bytes);\n\n return [\n value.substring(2, 10),\n value.substring(10, 14),\n value.substring(14, 18),\n value.substring(18, 22),\n value.substring(22, 34),\n ].join(\"-\");\n}\n\n", "\"use strict\";\n\nimport aes from \"aes-js\";\n\nimport { ExternallyOwnedAccount } from \"@ethersproject/abstract-signer\";\nimport { getAddress } from \"@ethersproject/address\";\nimport { arrayify, Bytes } from \"@ethersproject/bytes\";\nimport { keccak256 } from \"@ethersproject/keccak256\";\nimport { pbkdf2 } from \"@ethersproject/pbkdf2\";\nimport { toUtf8Bytes } from \"@ethersproject/strings\";\nimport { Description } from \"@ethersproject/properties\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nimport { getPassword, looseArrayify, searchPath } from \"./utils\";\n\nexport interface _CrowdsaleAccount {\n address: string;\n privateKey: string;\n\n _isCrowdsaleAccount: boolean;\n}\n\nexport class CrowdsaleAccount extends Description<_CrowdsaleAccount> implements ExternallyOwnedAccount {\n readonly address: string;\n readonly privateKey: string;\n readonly mnemonic?: string;\n readonly path?: string;\n\n readonly _isCrowdsaleAccount: boolean;\n\n isCrowdsaleAccount(value: any): value is CrowdsaleAccount {\n return !!(value && value._isCrowdsaleAccount);\n }\n}\n\n// See: https://github.com/ethereum/pyethsaletool\nexport function decrypt(json: string, password: Bytes | string): ExternallyOwnedAccount {\n const data = JSON.parse(json);\n\n password = getPassword(password);\n\n // Ethereum Address\n const ethaddr = getAddress(searchPath(data, \"ethaddr\"));\n\n // Encrypted Seed\n const encseed = looseArrayify(searchPath(data, \"encseed\"));\n if (!encseed || (encseed.length % 16) !== 0) {\n logger.throwArgumentError(\"invalid encseed\", \"json\", json);\n }\n\n const key = arrayify(pbkdf2(password, password, 2000, 32, \"sha256\")).slice(0, 16);\n\n const iv = encseed.slice(0, 16);\n const encryptedSeed = encseed.slice(16);\n\n // Decrypt the seed\n const aesCbc = new aes.ModeOfOperation.cbc(key, iv);\n const seed = aes.padding.pkcs7.strip(arrayify(aesCbc.decrypt(encryptedSeed)));\n\n // This wallet format is weird... Convert the binary encoded hex to a string.\n let seedHex = \"\";\n for (let i = 0; i < seed.length; i++) {\n seedHex += String.fromCharCode(seed[i]);\n }\n\n const seedHexBytes = toUtf8Bytes(seedHex);\n\n const privateKey = keccak256(seedHexBytes);\n\n return new CrowdsaleAccount ({\n _isCrowdsaleAccount: true,\n address: ethaddr,\n privateKey: privateKey\n });\n}\n\n", "\"use strict\";\n\nimport { getAddress } from \"@ethersproject/address\";\n\n\nexport function isCrowdsaleWallet(json: string): boolean {\n let data: any = null;\n try {\n data = JSON.parse(json);\n } catch (error) { return false; }\n\n return (data.encseed && data.ethaddr);\n}\n\nexport function isKeystoreWallet(json: string): boolean {\n let data: any = null;\n try {\n data = JSON.parse(json);\n } catch (error) { return false; }\n\n if (!data.version || parseInt(data.version) !== data.version || parseInt(data.version) !== 3) {\n return false;\n }\n\n // @TODO: Put more checks to make sure it has kdf, iv and all that good stuff\n return true;\n}\n\n//export function isJsonWallet(json: string): boolean {\n// return (isSecretStorageWallet(json) || isCrowdsaleWallet(json));\n//}\n\nexport function getJsonWalletAddress(json: string): string {\n if (isCrowdsaleWallet(json)) {\n try {\n return getAddress(JSON.parse(json).ethaddr);\n } catch (error) { return null; }\n }\n\n if (isKeystoreWallet(json)) {\n try {\n return getAddress(JSON.parse(json).address);\n } catch (error) { return null; }\n }\n\n return null;\n}\n\n", "\"use strict\";\n\n(function(root) {\n const MAX_VALUE = 0x7fffffff;\n\n // The SHA256 and PBKDF2 implementation are from scrypt-async-js:\n // See: https://github.com/dchest/scrypt-async-js\n function SHA256(m) {\n const K = new Uint32Array([\n 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b,\n 0x59f111f1, 0x923f82a4, 0xab1c5ed5, 0xd807aa98, 0x12835b01,\n 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7,\n 0xc19bf174, 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc,\n 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da, 0x983e5152,\n 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147,\n 0x06ca6351, 0x14292967, 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc,\n 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\n 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819,\n 0xd6990624, 0xf40e3585, 0x106aa070, 0x19a4c116, 0x1e376c08,\n 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f,\n 0x682e6ff3, 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208,\n 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2\n ]);\n\n let h0 = 0x6a09e667, h1 = 0xbb67ae85, h2 = 0x3c6ef372, h3 = 0xa54ff53a;\n let h4 = 0x510e527f, h5 = 0x9b05688c, h6 = 0x1f83d9ab, h7 = 0x5be0cd19;\n const w = new Uint32Array(64);\n\n function blocks(p) {\n let off = 0, len = p.length;\n while (len >= 64) {\n let a = h0, b = h1, c = h2, d = h3, e = h4, f = h5, g = h6, h = h7, u, i, j, t1, t2;\n\n for (i = 0; i < 16; i++) {\n j = off + i*4;\n w[i] = ((p[j] & 0xff)<<24) | ((p[j+1] & 0xff)<<16) |\n ((p[j+2] & 0xff)<<8) | (p[j+3] & 0xff);\n }\n\n for (i = 16; i < 64; i++) {\n u = w[i-2];\n t1 = ((u>>>17) | (u<<(32-17))) ^ ((u>>>19) | (u<<(32-19))) ^ (u>>>10);\n\n u = w[i-15];\n t2 = ((u>>>7) | (u<<(32-7))) ^ ((u>>>18) | (u<<(32-18))) ^ (u>>>3);\n\n w[i] = (((t1 + w[i-7]) | 0) + ((t2 + w[i-16]) | 0)) | 0;\n }\n\n for (i = 0; i < 64; i++) {\n t1 = ((((((e>>>6) | (e<<(32-6))) ^ ((e>>>11) | (e<<(32-11))) ^\n ((e>>>25) | (e<<(32-25)))) + ((e & f) ^ (~e & g))) | 0) +\n ((h + ((K[i] + w[i]) | 0)) | 0)) | 0;\n\n t2 = ((((a>>>2) | (a<<(32-2))) ^ ((a>>>13) | (a<<(32-13))) ^\n ((a>>>22) | (a<<(32-22)))) + ((a & b) ^ (a & c) ^ (b & c))) | 0;\n\n h = g;\n g = f;\n f = e;\n e = (d + t1) | 0;\n d = c;\n c = b;\n b = a;\n a = (t1 + t2) | 0;\n }\n\n h0 = (h0 + a) | 0;\n h1 = (h1 + b) | 0;\n h2 = (h2 + c) | 0;\n h3 = (h3 + d) | 0;\n h4 = (h4 + e) | 0;\n h5 = (h5 + f) | 0;\n h6 = (h6 + g) | 0;\n h7 = (h7 + h) | 0;\n\n off += 64;\n len -= 64;\n }\n }\n\n blocks(m);\n\n let i, bytesLeft = m.length % 64,\n bitLenHi = (m.length / 0x20000000) | 0,\n bitLenLo = m.length << 3,\n numZeros = (bytesLeft < 56) ? 56 : 120,\n p = m.slice(m.length - bytesLeft, m.length);\n\n p.push(0x80);\n for (i = bytesLeft + 1; i < numZeros; i++) { p.push(0); }\n p.push((bitLenHi >>> 24) & 0xff);\n p.push((bitLenHi >>> 16) & 0xff);\n p.push((bitLenHi >>> 8) & 0xff);\n p.push((bitLenHi >>> 0) & 0xff);\n p.push((bitLenLo >>> 24) & 0xff);\n p.push((bitLenLo >>> 16) & 0xff);\n p.push((bitLenLo >>> 8) & 0xff);\n p.push((bitLenLo >>> 0) & 0xff);\n\n blocks(p);\n\n return [\n (h0 >>> 24) & 0xff, (h0 >>> 16) & 0xff, (h0 >>> 8) & 0xff, (h0 >>> 0) & 0xff,\n (h1 >>> 24) & 0xff, (h1 >>> 16) & 0xff, (h1 >>> 8) & 0xff, (h1 >>> 0) & 0xff,\n (h2 >>> 24) & 0xff, (h2 >>> 16) & 0xff, (h2 >>> 8) & 0xff, (h2 >>> 0) & 0xff,\n (h3 >>> 24) & 0xff, (h3 >>> 16) & 0xff, (h3 >>> 8) & 0xff, (h3 >>> 0) & 0xff,\n (h4 >>> 24) & 0xff, (h4 >>> 16) & 0xff, (h4 >>> 8) & 0xff, (h4 >>> 0) & 0xff,\n (h5 >>> 24) & 0xff, (h5 >>> 16) & 0xff, (h5 >>> 8) & 0xff, (h5 >>> 0) & 0xff,\n (h6 >>> 24) & 0xff, (h6 >>> 16) & 0xff, (h6 >>> 8) & 0xff, (h6 >>> 0) & 0xff,\n (h7 >>> 24) & 0xff, (h7 >>> 16) & 0xff, (h7 >>> 8) & 0xff, (h7 >>> 0) & 0xff\n ];\n }\n\n function PBKDF2_HMAC_SHA256_OneIter(password, salt, dkLen) {\n // compress password if it's longer than hash block length\n password = (password.length <= 64) ? password : SHA256(password);\n\n const innerLen = 64 + salt.length + 4;\n const inner = new Array(innerLen);\n const outerKey = new Array(64);\n\n let i;\n let dk = [];\n\n // inner = (password ^ ipad) || salt || counter\n for (i = 0; i < 64; i++) { inner[i] = 0x36; }\n for (i = 0; i < password.length; i++) { inner[i] ^= password[i]; }\n for (i = 0; i < salt.length; i++) { inner[64 + i] = salt[i]; }\n for (i = innerLen - 4; i < innerLen; i++) { inner[i] = 0; }\n\n // outerKey = password ^ opad\n for (i = 0; i < 64; i++) outerKey[i] = 0x5c;\n for (i = 0; i < password.length; i++) outerKey[i] ^= password[i];\n\n // increments counter inside inner\n function incrementCounter() {\n for (let i = innerLen - 1; i >= innerLen - 4; i--) {\n inner[i]++;\n if (inner[i] <= 0xff) return;\n inner[i] = 0;\n }\n }\n\n // output blocks = SHA256(outerKey || SHA256(inner)) ...\n while (dkLen >= 32) {\n incrementCounter();\n dk = dk.concat(SHA256(outerKey.concat(SHA256(inner))));\n dkLen -= 32;\n }\n if (dkLen > 0) {\n incrementCounter();\n dk = dk.concat(SHA256(outerKey.concat(SHA256(inner))).slice(0, dkLen));\n }\n\n return dk;\n }\n\n // The following is an adaptation of scryptsy\n // See: https://www.npmjs.com/package/scryptsy\n function blockmix_salsa8(BY, Yi, r, x, _X) {\n let i;\n\n arraycopy(BY, (2 * r - 1) * 16, _X, 0, 16);\n for (i = 0; i < 2 * r; i++) {\n blockxor(BY, i * 16, _X, 16);\n salsa20_8(_X, x);\n arraycopy(_X, 0, BY, Yi + (i * 16), 16);\n }\n\n for (i = 0; i < r; i++) {\n arraycopy(BY, Yi + (i * 2) * 16, BY, (i * 16), 16);\n }\n\n for (i = 0; i < r; i++) {\n arraycopy(BY, Yi + (i * 2 + 1) * 16, BY, (i + r) * 16, 16);\n }\n }\n\n function R(a, b) {\n return (a << b) | (a >>> (32 - b));\n }\n\n function salsa20_8(B, x) {\n arraycopy(B, 0, x, 0, 16);\n\n for (let i = 8; i > 0; i -= 2) {\n x[ 4] ^= R(x[ 0] + x[12], 7);\n x[ 8] ^= R(x[ 4] + x[ 0], 9);\n x[12] ^= R(x[ 8] + x[ 4], 13);\n x[ 0] ^= R(x[12] + x[ 8], 18);\n x[ 9] ^= R(x[ 5] + x[ 1], 7);\n x[13] ^= R(x[ 9] + x[ 5], 9);\n x[ 1] ^= R(x[13] + x[ 9], 13);\n x[ 5] ^= R(x[ 1] + x[13], 18);\n x[14] ^= R(x[10] + x[ 6], 7);\n x[ 2] ^= R(x[14] + x[10], 9);\n x[ 6] ^= R(x[ 2] + x[14], 13);\n x[10] ^= R(x[ 6] + x[ 2], 18);\n x[ 3] ^= R(x[15] + x[11], 7);\n x[ 7] ^= R(x[ 3] + x[15], 9);\n x[11] ^= R(x[ 7] + x[ 3], 13);\n x[15] ^= R(x[11] + x[ 7], 18);\n x[ 1] ^= R(x[ 0] + x[ 3], 7);\n x[ 2] ^= R(x[ 1] + x[ 0], 9);\n x[ 3] ^= R(x[ 2] + x[ 1], 13);\n x[ 0] ^= R(x[ 3] + x[ 2], 18);\n x[ 6] ^= R(x[ 5] + x[ 4], 7);\n x[ 7] ^= R(x[ 6] + x[ 5], 9);\n x[ 4] ^= R(x[ 7] + x[ 6], 13);\n x[ 5] ^= R(x[ 4] + x[ 7], 18);\n x[11] ^= R(x[10] + x[ 9], 7);\n x[ 8] ^= R(x[11] + x[10], 9);\n x[ 9] ^= R(x[ 8] + x[11], 13);\n x[10] ^= R(x[ 9] + x[ 8], 18);\n x[12] ^= R(x[15] + x[14], 7);\n x[13] ^= R(x[12] + x[15], 9);\n x[14] ^= R(x[13] + x[12], 13);\n x[15] ^= R(x[14] + x[13], 18);\n }\n\n for (let i = 0; i < 16; ++i) {\n B[i] += x[i];\n }\n }\n\n // naive approach... going back to loop unrolling may yield additional performance\n function blockxor(S, Si, D, len) {\n for (let i = 0; i < len; i++) {\n D[i] ^= S[Si + i]\n }\n }\n\n function arraycopy(src, srcPos, dest, destPos, length) {\n while (length--) {\n dest[destPos++] = src[srcPos++];\n }\n }\n\n function checkBufferish(o) {\n if (!o || typeof(o.length) !== 'number') { return false; }\n\n for (let i = 0; i < o.length; i++) {\n const v = o[i];\n if (typeof(v) !== 'number' || v % 1 || v < 0 || v >= 256) {\n return false;\n }\n }\n\n return true;\n }\n\n function ensureInteger(value, name) {\n if (typeof(value) !== \"number\" || (value % 1)) { throw new Error('invalid ' + name); }\n return value;\n }\n\n // N = Cpu cost, r = Memory cost, p = parallelization cost\n // callback(error, progress, key)\n function _scrypt(password, salt, N, r, p, dkLen, callback) {\n\n N = ensureInteger(N, 'N');\n r = ensureInteger(r, 'r');\n p = ensureInteger(p, 'p');\n\n dkLen = ensureInteger(dkLen, 'dkLen');\n\n if (N === 0 || (N & (N - 1)) !== 0) { throw new Error('N must be power of 2'); }\n\n if (N > MAX_VALUE / 128 / r) { throw new Error('N too large'); }\n if (r > MAX_VALUE / 128 / p) { throw new Error('r too large'); }\n\n if (!checkBufferish(password)) {\n throw new Error('password must be an array or buffer');\n }\n password = Array.prototype.slice.call(password);\n\n if (!checkBufferish(salt)) {\n throw new Error('salt must be an array or buffer');\n }\n salt = Array.prototype.slice.call(salt);\n\n let b = PBKDF2_HMAC_SHA256_OneIter(password, salt, p * 128 * r);\n const B = new Uint32Array(p * 32 * r)\n for (let i = 0; i < B.length; i++) {\n const j = i * 4;\n B[i] = ((b[j + 3] & 0xff) << 24) |\n ((b[j + 2] & 0xff) << 16) |\n ((b[j + 1] & 0xff) << 8) |\n ((b[j + 0] & 0xff) << 0);\n }\n\n const XY = new Uint32Array(64 * r);\n const V = new Uint32Array(32 * r * N);\n\n const Yi = 32 * r;\n\n // scratch space\n const x = new Uint32Array(16); // salsa20_8\n const _X = new Uint32Array(16); // blockmix_salsa8\n\n const totalOps = p * N * 2;\n let currentOp = 0;\n let lastPercent10 = null;\n\n // Set this to true to abandon the scrypt on the next step\n let stop = false;\n\n // State information\n let state = 0;\n let i0 = 0, i1;\n let Bi;\n\n // How many blockmix_salsa8 can we do per step?\n const limit = callback ? parseInt(1000 / r): 0xffffffff;\n\n // Trick from scrypt-async; if there is a setImmediate shim in place, use it\n const nextTick = (typeof(setImmediate) !== 'undefined') ? setImmediate : setTimeout;\n\n // This is really all I changed; making scryptsy a state machine so we occasionally\n // stop and give other evnts on the evnt loop a chance to run. ~RicMoo\n const incrementalSMix = function() {\n if (stop) {\n return callback(new Error('cancelled'), currentOp / totalOps);\n }\n\n let steps;\n\n switch (state) {\n case 0:\n // for (var i = 0; i < p; i++)...\n Bi = i0 * 32 * r;\n\n arraycopy(B, Bi, XY, 0, Yi); // ROMix - 1\n\n state = 1; // Move to ROMix 2\n i1 = 0;\n\n // Fall through\n\n case 1:\n\n // Run up to 1000 steps of the first inner smix loop\n steps = N - i1;\n if (steps > limit) { steps = limit; }\n for (let i = 0; i < steps; i++) { // ROMix - 2\n arraycopy(XY, 0, V, (i1 + i) * Yi, Yi) // ROMix - 3\n blockmix_salsa8(XY, Yi, r, x, _X); // ROMix - 4\n }\n\n // for (var i = 0; i < N; i++)\n i1 += steps;\n currentOp += steps;\n\n if (callback) {\n // Call the callback with the progress (optionally stopping us)\n const percent10 = parseInt(1000 * currentOp / totalOps);\n if (percent10 !== lastPercent10) {\n stop = callback(null, currentOp / totalOps);\n if (stop) { break; }\n lastPercent10 = percent10;\n }\n }\n\n if (i1 < N) { break; }\n\n i1 = 0; // Move to ROMix 6\n state = 2;\n\n // Fall through\n\n case 2:\n\n // Run up to 1000 steps of the second inner smix loop\n steps = N - i1;\n if (steps > limit) { steps = limit; }\n for (let i = 0; i < steps; i++) { // ROMix - 6\n const offset = (2 * r - 1) * 16; // ROMix - 7\n const j = XY[offset] & (N - 1);\n blockxor(V, j * Yi, XY, Yi); // ROMix - 8 (inner)\n blockmix_salsa8(XY, Yi, r, x, _X); // ROMix - 9 (outer)\n }\n\n // for (var i = 0; i < N; i++)...\n i1 += steps;\n currentOp += steps;\n\n // Call the callback with the progress (optionally stopping us)\n if (callback) {\n const percent10 = parseInt(1000 * currentOp / totalOps);\n if (percent10 !== lastPercent10) {\n stop = callback(null, currentOp / totalOps);\n if (stop) { break; }\n lastPercent10 = percent10;\n }\n }\n\n if (i1 < N) { break; }\n\n arraycopy(XY, 0, B, Bi, Yi); // ROMix - 10\n\n // for (var i = 0; i < p; i++)...\n i0++;\n if (i0 < p) {\n state = 0;\n break;\n }\n\n b = [];\n for (let i = 0; i < B.length; i++) {\n b.push((B[i] >> 0) & 0xff);\n b.push((B[i] >> 8) & 0xff);\n b.push((B[i] >> 16) & 0xff);\n b.push((B[i] >> 24) & 0xff);\n }\n\n const derivedKey = PBKDF2_HMAC_SHA256_OneIter(password, b, dkLen);\n\n // Send the result to the callback\n if (callback) { callback(null, 1.0, derivedKey); }\n\n // Done; don't break (which would reschedule)\n return derivedKey;\n }\n\n // Schedule the next steps\n if (callback) { nextTick(incrementalSMix); }\n }\n\n // Run the smix state machine until completion\n if (!callback) {\n while (true) {\n const derivedKey = incrementalSMix();\n if (derivedKey != undefined) { return derivedKey; }\n }\n }\n\n // Bootstrap the async incremental smix\n incrementalSMix();\n }\n\n const lib = {\n scrypt: function(password, salt, N, r, p, dkLen, progressCallback) {\n return new Promise(function(resolve, reject) {\n let lastProgress = 0;\n if (progressCallback) { progressCallback(0); }\n _scrypt(password, salt, N, r, p, dkLen, function(error, progress, key) {\n if (error) {\n reject(error);\n } else if (key) {\n if (progressCallback && lastProgress !== 1) {\n progressCallback(1);\n }\n resolve(new Uint8Array(key));\n } else if (progressCallback && progress !== lastProgress) {\n lastProgress = progress;\n return progressCallback(progress);\n }\n });\n });\n },\n syncScrypt: function(password, salt, N, r, p, dkLen) {\n return new Uint8Array(_scrypt(password, salt, N, r, p, dkLen));\n }\n };\n\n // node.js\n if (typeof(exports) !== 'undefined') {\n module.exports = lib;\n\n // RequireJS/AMD\n // http://www.requirejs.org/docs/api.html\n // https://github.com/amdjs/amdjs-api/wiki/AMD\n } else if (typeof(define) === 'function' && define.amd) {\n define(lib);\n\n // Web Browsers\n } else if (root) {\n\n // If there was an existing library \"scrypt\", make sure it is still available\n if (root.scrypt) {\n root._scrypt = root.scrypt;\n }\n\n root.scrypt = lib;\n }\n\n})(this);\n", "\"use strict\";\n\nimport aes from \"aes-js\";\nimport scrypt from \"scrypt-js\";\n\nimport { ExternallyOwnedAccount } from \"@ethersproject/abstract-signer\";\nimport { getAddress } from \"@ethersproject/address\";\nimport { arrayify, Bytes, BytesLike, concat, hexlify } from \"@ethersproject/bytes\";\nimport { defaultPath, entropyToMnemonic, HDNode, Mnemonic, mnemonicToEntropy } from \"@ethersproject/hdnode\";\nimport { keccak256 } from \"@ethersproject/keccak256\";\nimport { pbkdf2 as _pbkdf2 } from \"@ethersproject/pbkdf2\";\nimport { randomBytes } from \"@ethersproject/random\";\nimport { Description } from \"@ethersproject/properties\";\nimport { computeAddress } from \"@ethersproject/transactions\";\n\nimport { getPassword, looseArrayify, searchPath, uuidV4, zpad } from \"./utils\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\n// Exported Types\n\nfunction hasMnemonic(value: any): value is { mnemonic: Mnemonic } {\n return (value != null && value.mnemonic && value.mnemonic.phrase);\n}\n\nexport interface _KeystoreAccount {\n address: string;\n privateKey: string;\n mnemonic?: Mnemonic;\n\n _isKeystoreAccount: boolean;\n}\n\nexport class KeystoreAccount extends Description<_KeystoreAccount> implements ExternallyOwnedAccount {\n readonly address: string;\n readonly privateKey: string;\n readonly mnemonic?: Mnemonic;\n\n readonly _isKeystoreAccount: boolean;\n\n isKeystoreAccount(value: any): value is KeystoreAccount {\n return !!(value && value._isKeystoreAccount);\n }\n}\n\nexport type ProgressCallback = (percent: number) => void;\n\nexport type EncryptOptions = {\n iv?: BytesLike;\n entropy?: BytesLike;\n client?: string;\n salt?: BytesLike;\n uuid?: string;\n scrypt?: {\n N?: number;\n r?: number;\n p?: number;\n }\n}\n\nfunction _decrypt(data: any, key: Uint8Array, ciphertext: Uint8Array): Uint8Array {\n const cipher = searchPath(data, \"crypto/cipher\");\n if (cipher === \"aes-128-ctr\") {\n const iv = looseArrayify(searchPath(data, \"crypto/cipherparams/iv\"))\n const counter = new aes.Counter(iv);\n\n const aesCtr = new aes.ModeOfOperation.ctr(key, counter);\n\n return arrayify(aesCtr.decrypt(ciphertext));\n }\n\n return null;\n}\n\nfunction _getAccount(data: any, key: Uint8Array): KeystoreAccount {\n const ciphertext = looseArrayify(searchPath(data, \"crypto/ciphertext\"));\n\n const computedMAC = hexlify(keccak256(concat([ key.slice(16, 32), ciphertext ]))).substring(2);\n if (computedMAC !== searchPath(data, \"crypto/mac\").toLowerCase()) {\n throw new Error(\"invalid password\");\n }\n\n const privateKey = _decrypt(data, key.slice(0, 16), ciphertext);\n\n if (!privateKey) {\n logger.throwError(\"unsupported cipher\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"decrypt\"\n });\n }\n\n const mnemonicKey = key.slice(32, 64);\n\n const address = computeAddress(privateKey);\n if (data.address) {\n let check = data.address.toLowerCase();\n if (check.substring(0, 2) !== \"0x\") { check = \"0x\" + check; }\n\n if (getAddress(check) !== address) {\n throw new Error(\"address mismatch\");\n }\n }\n\n const account: _KeystoreAccount = {\n _isKeystoreAccount: true,\n address: address,\n privateKey: hexlify(privateKey)\n };\n\n // Version 0.1 x-ethers metadata must contain an encrypted mnemonic phrase\n if (searchPath(data, \"x-ethers/version\") === \"0.1\") {\n const mnemonicCiphertext = looseArrayify(searchPath(data, \"x-ethers/mnemonicCiphertext\"));\n const mnemonicIv = looseArrayify(searchPath(data, \"x-ethers/mnemonicCounter\"));\n\n const mnemonicCounter = new aes.Counter(mnemonicIv);\n const mnemonicAesCtr = new aes.ModeOfOperation.ctr(mnemonicKey, mnemonicCounter);\n\n const path = searchPath(data, \"x-ethers/path\") || defaultPath;\n const locale = searchPath(data, \"x-ethers/locale\") || \"en\";\n\n const entropy = arrayify(mnemonicAesCtr.decrypt(mnemonicCiphertext));\n\n try {\n const mnemonic = entropyToMnemonic(entropy, locale);\n const node = HDNode.fromMnemonic(mnemonic, null, locale).derivePath(path);\n\n if (node.privateKey != account.privateKey) {\n throw new Error(\"mnemonic mismatch\");\n }\n\n account.mnemonic = node.mnemonic;\n\n } catch (error) {\n // If we don't have the locale wordlist installed to\n // read this mnemonic, just bail and don't set the\n // mnemonic\n if (error.code !== Logger.errors.INVALID_ARGUMENT || error.argument !== \"wordlist\") {\n throw error;\n }\n }\n }\n\n return new KeystoreAccount(account);\n}\n\ntype ScryptFunc = (pw: Uint8Array, salt: Uint8Array, n: number, r: number, p: number, dkLen: number, callback?: ProgressCallback) => T;\ntype Pbkdf2Func = (pw: Uint8Array, salt: Uint8Array, c: number, dkLen: number, prfFunc: string) => T;\n\nfunction pbkdf2Sync(passwordBytes: Uint8Array, salt: Uint8Array, count: number, dkLen: number, prfFunc: string): Uint8Array {\n return arrayify(_pbkdf2(passwordBytes, salt, count, dkLen, prfFunc));\n}\n\nfunction pbkdf2(passwordBytes: Uint8Array, salt: Uint8Array, count: number, dkLen: number, prfFunc: string): Promise {\n return Promise.resolve(pbkdf2Sync(passwordBytes, salt, count, dkLen, prfFunc));\n}\n\nfunction _computeKdfKey(data: any, password: Bytes | string, pbkdf2Func: Pbkdf2Func, scryptFunc: ScryptFunc, progressCallback?: ProgressCallback): T {\n const passwordBytes = getPassword(password);\n\n const kdf = searchPath(data, \"crypto/kdf\");\n\n if (kdf && typeof(kdf) === \"string\") {\n const throwError = function(name: string, value: any): never {\n return logger.throwArgumentError(\"invalid key-derivation function parameters\", name, value);\n }\n\n if (kdf.toLowerCase() === \"scrypt\") {\n const salt = looseArrayify(searchPath(data, \"crypto/kdfparams/salt\"));\n const N = parseInt(searchPath(data, \"crypto/kdfparams/n\"));\n const r = parseInt(searchPath(data, \"crypto/kdfparams/r\"));\n const p = parseInt(searchPath(data, \"crypto/kdfparams/p\"));\n\n // Check for all required parameters\n if (!N || !r || !p) { throwError(\"kdf\", kdf); }\n\n // Make sure N is a power of 2\n if ((N & (N - 1)) !== 0) { throwError(\"N\", N); }\n\n const dkLen = parseInt(searchPath(data, \"crypto/kdfparams/dklen\"));\n if (dkLen !== 32) { throwError(\"dklen\", dkLen); }\n\n return scryptFunc(passwordBytes, salt, N, r, p, 64, progressCallback);\n\n } else if (kdf.toLowerCase() === \"pbkdf2\") {\n\n const salt = looseArrayify(searchPath(data, \"crypto/kdfparams/salt\"));\n\n let prfFunc: string = null;\n const prf = searchPath(data, \"crypto/kdfparams/prf\");\n if (prf === \"hmac-sha256\") {\n prfFunc = \"sha256\";\n } else if (prf === \"hmac-sha512\") {\n prfFunc = \"sha512\";\n } else {\n throwError(\"prf\", prf);\n }\n\n const count = parseInt(searchPath(data, \"crypto/kdfparams/c\"));\n\n const dkLen = parseInt(searchPath(data, \"crypto/kdfparams/dklen\"));\n if (dkLen !== 32) { throwError(\"dklen\", dkLen); }\n\n return pbkdf2Func(passwordBytes, salt, count, dkLen, prfFunc);\n }\n }\n\n return logger.throwArgumentError(\"unsupported key-derivation function\", \"kdf\", kdf);\n}\n\n\nexport function decryptSync(json: string, password: Bytes | string): KeystoreAccount {\n const data = JSON.parse(json);\n\n const key = _computeKdfKey(data, password, pbkdf2Sync, scrypt.syncScrypt);\n return _getAccount(data, key);\n}\n\nexport async function decrypt(json: string, password: Bytes | string, progressCallback?: ProgressCallback): Promise {\n const data = JSON.parse(json);\n\n const key = await _computeKdfKey(data, password, pbkdf2, scrypt.scrypt, progressCallback);\n return _getAccount(data, key);\n}\n\n\nexport function encrypt(account: ExternallyOwnedAccount, password: Bytes | string, options?: EncryptOptions, progressCallback?: ProgressCallback): Promise {\n\n try {\n // Check the address matches the private key\n if (getAddress(account.address) !== computeAddress(account.privateKey)) {\n throw new Error(\"address/privateKey mismatch\");\n }\n\n // Check the mnemonic (if any) matches the private key\n if (hasMnemonic(account)) {\n const mnemonic = account.mnemonic;\n const node = HDNode.fromMnemonic(mnemonic.phrase, null, mnemonic.locale).derivePath(mnemonic.path || defaultPath);\n\n if (node.privateKey != account.privateKey) {\n throw new Error(\"mnemonic mismatch\");\n }\n }\n\n } catch (e) {\n return Promise.reject(e);\n }\n\n // The options are optional, so adjust the call as needed\n if (typeof(options) === \"function\" && !progressCallback) {\n progressCallback = options;\n options = {};\n }\n if (!options) { options = {}; }\n\n const privateKey: Uint8Array = arrayify(account.privateKey);\n const passwordBytes = getPassword(password);\n\n let entropy: Uint8Array = null\n let path: string = null;\n let locale: string = null;\n if (hasMnemonic(account)) {\n const srcMnemonic = account.mnemonic;\n entropy = arrayify(mnemonicToEntropy(srcMnemonic.phrase, srcMnemonic.locale || \"en\"));\n path = srcMnemonic.path || defaultPath;\n locale = srcMnemonic.locale || \"en\";\n }\n\n let client = options.client;\n if (!client) { client = \"ethers.js\"; }\n\n // Check/generate the salt\n let salt: Uint8Array = null;\n if (options.salt) {\n salt = arrayify(options.salt);\n } else {\n salt = randomBytes(32);;\n }\n\n // Override initialization vector\n let iv: Uint8Array = null;\n if (options.iv) {\n iv = arrayify(options.iv);\n if (iv.length !== 16) { throw new Error(\"invalid iv\"); }\n } else {\n iv = randomBytes(16);\n }\n\n // Override the uuid\n let uuidRandom: Uint8Array = null;\n if (options.uuid) {\n uuidRandom = arrayify(options.uuid);\n if (uuidRandom.length !== 16) { throw new Error(\"invalid uuid\"); }\n } else {\n uuidRandom = randomBytes(16);\n }\n\n // Override the scrypt password-based key derivation function parameters\n let N = (1 << 17), r = 8, p = 1;\n if (options.scrypt) {\n if (options.scrypt.N) { N = options.scrypt.N; }\n if (options.scrypt.r) { r = options.scrypt.r; }\n if (options.scrypt.p) { p = options.scrypt.p; }\n }\n\n // We take 64 bytes:\n // - 32 bytes As normal for the Web3 secret storage (derivedKey, macPrefix)\n // - 32 bytes AES key to encrypt mnemonic with (required here to be Ethers Wallet)\n return scrypt.scrypt(passwordBytes, salt, N, r, p, 64, progressCallback).then((key) => {\n key = arrayify(key);\n\n // This will be used to encrypt the wallet (as per Web3 secret storage)\n const derivedKey = key.slice(0, 16);\n const macPrefix = key.slice(16, 32);\n\n // This will be used to encrypt the mnemonic phrase (if any)\n const mnemonicKey = key.slice(32, 64);\n\n // Encrypt the private key\n const counter = new aes.Counter(iv);\n const aesCtr = new aes.ModeOfOperation.ctr(derivedKey, counter);\n const ciphertext = arrayify(aesCtr.encrypt(privateKey));\n\n // Compute the message authentication code, used to check the password\n const mac = keccak256(concat([macPrefix, ciphertext]))\n\n // See: https://github.com/ethereum/wiki/wiki/Web3-Secret-Storage-Definition\n const data: { [key: string]: any } = {\n address: account.address.substring(2).toLowerCase(),\n id: uuidV4(uuidRandom),\n version: 3,\n crypto: {\n cipher: \"aes-128-ctr\",\n cipherparams: {\n iv: hexlify(iv).substring(2),\n },\n ciphertext: hexlify(ciphertext).substring(2),\n kdf: \"scrypt\",\n kdfparams: {\n salt: hexlify(salt).substring(2),\n n: N,\n dklen: 32,\n p: p,\n r: r\n },\n mac: mac.substring(2)\n }\n };\n\n // If we have a mnemonic, encrypt it into the JSON wallet\n if (entropy) {\n const mnemonicIv = randomBytes(16);\n const mnemonicCounter = new aes.Counter(mnemonicIv);\n const mnemonicAesCtr = new aes.ModeOfOperation.ctr(mnemonicKey, mnemonicCounter);\n const mnemonicCiphertext = arrayify(mnemonicAesCtr.encrypt(entropy));\n const now = new Date();\n const timestamp = (now.getUTCFullYear() + \"-\" +\n zpad(now.getUTCMonth() + 1, 2) + \"-\" +\n zpad(now.getUTCDate(), 2) + \"T\" +\n zpad(now.getUTCHours(), 2) + \"-\" +\n zpad(now.getUTCMinutes(), 2) + \"-\" +\n zpad(now.getUTCSeconds(), 2) + \".0Z\"\n );\n data[\"x-ethers\"] = {\n client: client,\n gethFilename: (\"UTC--\" + timestamp + \"--\" + data.address),\n mnemonicCounter: hexlify(mnemonicIv).substring(2),\n mnemonicCiphertext: hexlify(mnemonicCiphertext).substring(2),\n path: path,\n locale: locale,\n version: \"0.1\"\n };\n }\n\n return JSON.stringify(data);\n });\n}\n", "\"use strict\";\n\nimport { Bytes } from \"@ethersproject/bytes\";\nimport { ExternallyOwnedAccount } from \"@ethersproject/abstract-signer\";\n\nimport { decrypt as decryptCrowdsale } from \"./crowdsale\";\nimport { getJsonWalletAddress, isCrowdsaleWallet, isKeystoreWallet } from \"./inspect\";\nimport { decrypt as decryptKeystore, decryptSync as decryptKeystoreSync, encrypt as encryptKeystore, EncryptOptions, ProgressCallback } from \"./keystore\";\n\nfunction decryptJsonWallet(json: string, password: Bytes | string, progressCallback?: ProgressCallback): Promise {\n if (isCrowdsaleWallet(json)) {\n if (progressCallback) { progressCallback(0); }\n const account = decryptCrowdsale(json, password)\n if (progressCallback) { progressCallback(1); }\n return Promise.resolve(account);\n }\n\n if (isKeystoreWallet(json)) {\n return decryptKeystore(json, password, progressCallback);\n }\n\n return Promise.reject(new Error(\"invalid JSON wallet\"));\n}\n\nfunction decryptJsonWalletSync(json: string, password: Bytes | string): ExternallyOwnedAccount {\n if (isCrowdsaleWallet(json)) {\n return decryptCrowdsale(json, password)\n }\n\n if (isKeystoreWallet(json)) {\n return decryptKeystoreSync(json, password);\n }\n\n throw new Error(\"invalid JSON wallet\");\n}\n\nexport {\n decryptCrowdsale,\n\n decryptKeystore,\n decryptKeystoreSync,\n encryptKeystore,\n\n isCrowdsaleWallet,\n isKeystoreWallet,\n getJsonWalletAddress,\n\n decryptJsonWallet,\n decryptJsonWalletSync,\n\n ProgressCallback,\n EncryptOptions,\n};\n", "export const version = \"wallet/5.7.0\";\n", "\"use strict\";\n\nimport { getAddress } from \"@ethersproject/address\";\nimport { Provider, TransactionRequest } from \"@ethersproject/abstract-provider\";\nimport { ExternallyOwnedAccount, Signer, TypedDataDomain, TypedDataField, TypedDataSigner } from \"@ethersproject/abstract-signer\";\nimport { arrayify, Bytes, BytesLike, concat, hexDataSlice, isHexString, joinSignature, SignatureLike } from \"@ethersproject/bytes\";\nimport { hashMessage, _TypedDataEncoder } from \"@ethersproject/hash\";\nimport { defaultPath, HDNode, entropyToMnemonic, Mnemonic } from \"@ethersproject/hdnode\";\nimport { keccak256 } from \"@ethersproject/keccak256\";\nimport { defineReadOnly, resolveProperties } from \"@ethersproject/properties\";\nimport { randomBytes } from \"@ethersproject/random\";\nimport { SigningKey } from \"@ethersproject/signing-key\";\nimport { decryptJsonWallet, decryptJsonWalletSync, encryptKeystore, ProgressCallback } from \"@ethersproject/json-wallets\";\nimport { computeAddress, recoverAddress, serialize, UnsignedTransaction } from \"@ethersproject/transactions\";\nimport { Wordlist } from \"@ethersproject/wordlists\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nfunction isAccount(value: any): value is ExternallyOwnedAccount {\n return (value != null && isHexString(value.privateKey, 32) && value.address != null);\n}\n\nfunction hasMnemonic(value: any): value is { mnemonic: Mnemonic } {\n const mnemonic = value.mnemonic;\n return (mnemonic && mnemonic.phrase);\n}\n\nexport class Wallet extends Signer implements ExternallyOwnedAccount, TypedDataSigner {\n\n readonly address: string;\n readonly provider: Provider;\n\n // Wrapping the _signingKey and _mnemonic in a getter function prevents\n // leaking the private key in console.log; still, be careful! :)\n readonly _signingKey: () => SigningKey;\n readonly _mnemonic: () => Mnemonic;\n\n constructor(privateKey: BytesLike | ExternallyOwnedAccount | SigningKey, provider?: Provider) {\n super();\n\n if (isAccount(privateKey)) {\n const signingKey = new SigningKey(privateKey.privateKey);\n defineReadOnly(this, \"_signingKey\", () => signingKey);\n defineReadOnly(this, \"address\", computeAddress(this.publicKey));\n\n if (this.address !== getAddress(privateKey.address)) {\n logger.throwArgumentError(\"privateKey/address mismatch\", \"privateKey\", \"[REDACTED]\");\n }\n\n if (hasMnemonic(privateKey)) {\n const srcMnemonic = privateKey.mnemonic;\n defineReadOnly(this, \"_mnemonic\", () => (\n {\n phrase: srcMnemonic.phrase,\n path: srcMnemonic.path || defaultPath,\n locale: srcMnemonic.locale || \"en\"\n }\n ));\n const mnemonic = this.mnemonic;\n const node = HDNode.fromMnemonic(mnemonic.phrase, null, mnemonic.locale).derivePath(mnemonic.path);\n if (computeAddress(node.privateKey) !== this.address) {\n logger.throwArgumentError(\"mnemonic/address mismatch\", \"privateKey\", \"[REDACTED]\");\n }\n } else {\n defineReadOnly(this, \"_mnemonic\", (): Mnemonic => null);\n }\n\n\n } else {\n if (SigningKey.isSigningKey(privateKey)) {\n /* istanbul ignore if */\n if (privateKey.curve !== \"secp256k1\") {\n logger.throwArgumentError(\"unsupported curve; must be secp256k1\", \"privateKey\", \"[REDACTED]\");\n }\n defineReadOnly(this, \"_signingKey\", () => (privateKey));\n\n } else {\n // A lot of common tools do not prefix private keys with a 0x (see: #1166)\n if (typeof(privateKey) === \"string\") {\n if (privateKey.match(/^[0-9a-f]*$/i) && privateKey.length === 64) {\n privateKey = \"0x\" + privateKey;\n }\n }\n\n const signingKey = new SigningKey(privateKey);\n defineReadOnly(this, \"_signingKey\", () => signingKey);\n }\n\n defineReadOnly(this, \"_mnemonic\", (): Mnemonic => null);\n defineReadOnly(this, \"address\", computeAddress(this.publicKey));\n }\n\n /* istanbul ignore if */\n if (provider && !Provider.isProvider(provider)) {\n logger.throwArgumentError(\"invalid provider\", \"provider\", provider);\n }\n\n defineReadOnly(this, \"provider\", provider || null);\n }\n\n get mnemonic(): Mnemonic { return this._mnemonic(); }\n get privateKey(): string { return this._signingKey().privateKey; }\n get publicKey(): string { return this._signingKey().publicKey; }\n\n getAddress(): Promise {\n return Promise.resolve(this.address);\n }\n\n connect(provider: Provider): Wallet {\n return new Wallet(this, provider);\n }\n\n signTransaction(transaction: TransactionRequest): Promise {\n return resolveProperties(transaction).then((tx) => {\n if (tx.from != null) {\n if (getAddress(tx.from) !== this.address) {\n logger.throwArgumentError(\"transaction from address mismatch\", \"transaction.from\", transaction.from);\n }\n delete tx.from;\n }\n\n const signature = this._signingKey().signDigest(keccak256(serialize(tx)));\n return serialize(tx, signature);\n });\n }\n\n async signMessage(message: Bytes | string): Promise {\n return joinSignature(this._signingKey().signDigest(hashMessage(message)));\n }\n\n async _signTypedData(domain: TypedDataDomain, types: Record>, value: Record): Promise {\n // Populate any ENS names\n const populated = await _TypedDataEncoder.resolveNames(domain, types, value, (name: string) => {\n if (this.provider == null) {\n logger.throwError(\"cannot resolve ENS names without a provider\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"resolveName\",\n value: name\n });\n }\n return this.provider.resolveName(name);\n });\n\n return joinSignature(this._signingKey().signDigest(_TypedDataEncoder.hash(populated.domain, types, populated.value)));\n }\n\n encrypt(password: Bytes | string, options?: any, progressCallback?: ProgressCallback): Promise {\n if (typeof(options) === \"function\" && !progressCallback) {\n progressCallback = options;\n options = {};\n }\n\n if (progressCallback && typeof(progressCallback) !== \"function\") {\n throw new Error(\"invalid callback\");\n }\n\n if (!options) { options = {}; }\n\n return encryptKeystore(this, password, options, progressCallback);\n }\n\n\n /**\n * Static methods to create Wallet instances.\n */\n static createRandom(options?: any): Wallet {\n let entropy: Uint8Array = randomBytes(16);\n\n if (!options) { options = { }; }\n\n if (options.extraEntropy) {\n entropy = arrayify(hexDataSlice(keccak256(concat([ entropy, options.extraEntropy ])), 0, 16));\n }\n\n const mnemonic = entropyToMnemonic(entropy, options.locale);\n return Wallet.fromMnemonic(mnemonic, options.path, options.locale);\n }\n\n static fromEncryptedJson(json: string, password: Bytes | string, progressCallback?: ProgressCallback): Promise {\n return decryptJsonWallet(json, password, progressCallback).then((account) => {\n return new Wallet(account);\n });\n }\n\n static fromEncryptedJsonSync(json: string, password: Bytes | string): Wallet {\n return new Wallet(decryptJsonWalletSync(json, password));\n }\n\n static fromMnemonic(mnemonic: string, path?: string, wordlist?: Wordlist): Wallet {\n if (!path) { path = defaultPath; }\n return new Wallet(HDNode.fromMnemonic(mnemonic, null, wordlist).derivePath(path));\n }\n}\n\nexport function verifyMessage(message: Bytes | string, signature: SignatureLike): string {\n return recoverAddress(hashMessage(message), signature);\n}\n\nexport function verifyTypedData(domain: TypedDataDomain, types: Record>, value: Record, signature: SignatureLike): string {\n return recoverAddress(_TypedDataEncoder.hash(domain, types, value), signature);\n}\n", "export const version = \"networks/5.7.1\";\n", "\"use strict\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nimport { Network, Networkish } from \"./types\";\n\nexport {\n Network,\n Networkish\n};\n\ntype DefaultProviderFunc = (providers: any, options?: any) => any;\n\ninterface Renetworkable extends DefaultProviderFunc {\n renetwork: (network: Network) => DefaultProviderFunc;\n};\n\nfunction isRenetworkable(value: any): value is Renetworkable {\n return (value && typeof(value.renetwork) === \"function\");\n}\n\nfunction ethDefaultProvider(network: string | Network): Renetworkable {\n const func = function(providers: any, options?: any): any {\n if (options == null) { options = { }; }\n const providerList: Array = [];\n\n if (providers.InfuraProvider && options.infura !== \"-\") {\n try {\n providerList.push(new providers.InfuraProvider(network, options.infura));\n } catch(error) { }\n }\n\n if (providers.EtherscanProvider && options.etherscan !== \"-\") {\n try {\n providerList.push(new providers.EtherscanProvider(network, options.etherscan));\n } catch(error) { }\n }\n\n if (providers.AlchemyProvider && options.alchemy !== \"-\") {\n try {\n providerList.push(new providers.AlchemyProvider(network, options.alchemy));\n } catch(error) { }\n }\n\n if (providers.PocketProvider && options.pocket !== \"-\") {\n // These networks are currently faulty on Pocket as their\n // network does not handle the Berlin hardfork, which is\n // live on these ones.\n // @TODO: This goes away once Pocket has upgraded their nodes\n const skip = [ \"goerli\", \"ropsten\", \"rinkeby\", \"sepolia\" ];\n try {\n const provider = new providers.PocketProvider(network, options.pocket);\n if (provider.network && skip.indexOf(provider.network.name) === -1) {\n providerList.push(provider);\n }\n } catch(error) { }\n }\n\n if (providers.CloudflareProvider && options.cloudflare !== \"-\") {\n try {\n providerList.push(new providers.CloudflareProvider(network));\n } catch(error) { }\n }\n\n if (providers.AnkrProvider && options.ankr !== \"-\") {\n try {\n const skip = [ \"ropsten\" ];\n const provider = new providers.AnkrProvider(network, options.ankr);\n if (provider.network && skip.indexOf(provider.network.name) === -1) {\n providerList.push(provider);\n }\n } catch(error) { }\n }\n\n if (providerList.length === 0) { return null; }\n\n if (providers.FallbackProvider) {\n let quorum = 1;\n if (options.quorum != null) {\n quorum = options.quorum;\n } else if (network === \"homestead\") {\n quorum = 2;\n }\n return new providers.FallbackProvider(providerList, quorum);\n }\n\n return providerList[0];\n };\n\n func.renetwork = function(network: Network) {\n return ethDefaultProvider(network);\n };\n\n return func;\n}\n\nfunction etcDefaultProvider(url: string, network: string | Network): Renetworkable {\n const func = function(providers: any, options?: any): any {\n if (providers.JsonRpcProvider) {\n return new providers.JsonRpcProvider(url, network);\n }\n\n return null;\n };\n\n func.renetwork = function(network: Network) {\n return etcDefaultProvider(url, network);\n };\n\n return func;\n}\n\nconst homestead: Network = {\n chainId: 1,\n ensAddress: \"0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e\",\n name: \"homestead\",\n _defaultProvider: ethDefaultProvider(\"homestead\")\n};\n\nconst ropsten: Network = {\n chainId: 3,\n ensAddress: \"0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e\",\n name: \"ropsten\",\n _defaultProvider: ethDefaultProvider(\"ropsten\")\n};\n\nconst classicMordor: Network = {\n chainId: 63,\n name: \"classicMordor\",\n _defaultProvider: etcDefaultProvider(\"https://www.ethercluster.com/mordor\", \"classicMordor\")\n};\n\n// See: https://chainlist.org\nconst networks: { [name: string]: Network } = {\n unspecified: { chainId: 0, name: \"unspecified\" },\n\n homestead: homestead,\n mainnet: homestead,\n\n morden: { chainId: 2, name: \"morden\" },\n\n ropsten: ropsten,\n testnet: ropsten,\n\n rinkeby: {\n chainId: 4,\n ensAddress: \"0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e\",\n name: \"rinkeby\",\n _defaultProvider: ethDefaultProvider(\"rinkeby\")\n },\n\n kovan: {\n chainId: 42,\n name: \"kovan\",\n _defaultProvider: ethDefaultProvider(\"kovan\")\n },\n\n goerli: {\n chainId: 5,\n ensAddress: \"0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e\",\n name: \"goerli\",\n _defaultProvider: ethDefaultProvider(\"goerli\")\n },\n\n kintsugi: { chainId: 1337702, name: \"kintsugi\" },\n\n sepolia: {\n chainId: 11155111,\n name: \"sepolia\",\n _defaultProvider: ethDefaultProvider(\"sepolia\")\n },\n\n\n // ETC (See: #351)\n classic: {\n chainId: 61,\n name: \"classic\",\n _defaultProvider: etcDefaultProvider(\"https:/\\/www.ethercluster.com/etc\", \"classic\")\n },\n\n classicMorden: { chainId: 62, name: \"classicMorden\" },\n\n classicMordor: classicMordor,\n classicTestnet: classicMordor,\n\n classicKotti: {\n chainId: 6,\n name: \"classicKotti\",\n _defaultProvider: etcDefaultProvider(\"https:/\\/www.ethercluster.com/kotti\", \"classicKotti\")\n },\n\n xdai: { chainId: 100, name: \"xdai\" },\n\n matic: {\n chainId: 137,\n name: \"matic\",\n _defaultProvider: ethDefaultProvider(\"matic\")\n },\n maticmum: { chainId: 80001, name: \"maticmum\" },\n\n optimism: {\n chainId: 10,\n name: \"optimism\",\n _defaultProvider: ethDefaultProvider(\"optimism\")\n },\n \"optimism-kovan\": { chainId: 69, name: \"optimism-kovan\" },\n \"optimism-goerli\": { chainId: 420, name: \"optimism-goerli\" },\n\n arbitrum: { chainId: 42161, name: \"arbitrum\" },\n \"arbitrum-rinkeby\": { chainId: 421611, name: \"arbitrum-rinkeby\" },\n \"arbitrum-goerli\": { chainId: 421613, name: \"arbitrum-goerli\" },\n\n bnb: { chainId: 56, name: \"bnb\" },\n bnbt: { chainId: 97, name: \"bnbt\" },\n}\n\n/**\n * getNetwork\n *\n * Converts a named common networks or chain ID (network ID) to a Network\n * and verifies a network is a valid Network..\n */\nexport function getNetwork(network: Networkish): Network {\n // No network (null)\n if (network == null) { return null; }\n\n if (typeof(network) === \"number\") {\n for (const name in networks) {\n const standard = networks[name];\n if (standard.chainId === network) {\n return {\n name: standard.name,\n chainId: standard.chainId,\n ensAddress: (standard.ensAddress || null),\n _defaultProvider: (standard._defaultProvider || null)\n };\n }\n }\n\n return {\n chainId: network,\n name: \"unknown\"\n };\n }\n\n if (typeof(network) === \"string\") {\n const standard = networks[network];\n if (standard == null) { return null; }\n return {\n name: standard.name,\n chainId: standard.chainId,\n ensAddress: standard.ensAddress,\n _defaultProvider: (standard._defaultProvider || null)\n };\n }\n\n const standard = networks[network.name];\n\n // Not a standard network; check that it is a valid network in general\n if (!standard) {\n if (typeof(network.chainId) !== \"number\") {\n logger.throwArgumentError(\"invalid network chainId\", \"network\", network);\n }\n return network;\n }\n\n // Make sure the chainId matches the expected network chainId (or is 0; disable EIP-155)\n if (network.chainId !== 0 && network.chainId !== standard.chainId) {\n logger.throwArgumentError(\"network chainId mismatch\", \"network\", network);\n }\n\n // @TODO: In the next major version add an attach function to a defaultProvider\n // class and move the _defaultProvider internal to this file (extend Network)\n let defaultProvider: DefaultProviderFunc = network._defaultProvider || null;\n if (defaultProvider == null && standard._defaultProvider) {\n if (isRenetworkable(standard._defaultProvider)) {\n defaultProvider = standard._defaultProvider.renetwork(network);\n } else {\n defaultProvider = standard._defaultProvider;\n }\n }\n\n // Standard Network (allow overriding the ENS address)\n return {\n name: network.name,\n chainId: standard.chainId,\n ensAddress: (network.ensAddress || standard.ensAddress || null),\n _defaultProvider: defaultProvider\n };\n}\n", "export const version = \"web/5.7.1\";\n", "\"use strict\";\n\nimport http from \"http\";\nimport https from \"https\";\nimport { gunzipSync } from \"zlib\";\nimport { parse } from \"url\"\n\nimport { arrayify, concat } from \"@ethersproject/bytes\";\nimport { shallowCopy } from \"@ethersproject/properties\";\n\nimport type { GetUrlResponse, Options } from \"./types\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nexport { GetUrlResponse, Options };\n\nfunction getResponse(request: http.ClientRequest): Promise {\n return new Promise((resolve, reject) => {\n request.once(\"response\", (resp: http.IncomingMessage) => {\n const response: GetUrlResponse = {\n statusCode: resp.statusCode,\n statusMessage: resp.statusMessage,\n headers: Object.keys(resp.headers).reduce((accum, name) => {\n let value = resp.headers[name];\n if (Array.isArray(value)) {\n value = value.join(\", \");\n }\n accum[name] = value;\n return accum;\n }, <{ [ name: string ]: string }>{ }),\n body: null\n };\n //resp.setEncoding(\"utf8\");\n\n resp.on(\"data\", (chunk: Uint8Array) => {\n if (response.body == null) { response.body = new Uint8Array(0); }\n response.body = concat([ response.body, chunk ]);\n });\n\n resp.on(\"end\", () => {\n if (response.headers[\"content-encoding\"] === \"gzip\") {\n //const size = response.body.length;\n response.body = arrayify(gunzipSync(response.body));\n //console.log(\"Delta:\", response.body.length - size, Buffer.from(response.body).toString());\n }\n resolve(response);\n });\n\n resp.on(\"error\", (error) => {\n /* istanbul ignore next */\n (error).response = response;\n reject(error);\n });\n });\n\n request.on(\"error\", (error) => { reject(error); });\n });\n}\n\n// The URL.parse uses null instead of the empty string\nfunction nonnull(value: string): string {\n if (value == null) { return \"\"; }\n return value;\n}\n\nexport async function getUrl(href: string, options?: Options): Promise {\n if (options == null) { options = { }; }\n\n // @TODO: Once we drop support for node 8, we can pass the href\n // directly into request and skip adding the components\n // to this request object\n const url = parse(href);\n\n const request = {\n protocol: nonnull(url.protocol),\n hostname: nonnull(url.hostname),\n port: nonnull(url.port),\n path: (nonnull(url.pathname) + nonnull(url.search)),\n\n method: (options.method || \"GET\"),\n headers: shallowCopy(options.headers || { }),\n };\n\n if (options.allowGzip) {\n request.headers[\"accept-encoding\"] = \"gzip\";\n }\n\n let req: http.ClientRequest = null;\n switch (nonnull(url.protocol)) {\n case \"http:\":\n req = http.request(request);\n break;\n case \"https:\":\n req = https.request(request);\n break;\n default:\n /* istanbul ignore next */\n logger.throwError(`unsupported protocol ${ url.protocol }`, Logger.errors.UNSUPPORTED_OPERATION, {\n protocol: url.protocol,\n operation: \"request\"\n });\n }\n\n if (options.body) {\n req.write(Buffer.from(options.body));\n }\n req.end();\n\n const response = await getResponse(req);\n return response;\n}\n\n", "\"use strict\";\n\nimport { decode as base64Decode, encode as base64Encode } from \"@ethersproject/base64\";\nimport { hexlify, isBytesLike } from \"@ethersproject/bytes\";\nimport { shallowCopy } from \"@ethersproject/properties\";\nimport { toUtf8Bytes, toUtf8String } from \"@ethersproject/strings\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nimport { getUrl, GetUrlResponse, Options } from \"./geturl\";\n\nfunction staller(duration: number): Promise {\n return new Promise((resolve) => {\n setTimeout(resolve, duration);\n });\n}\n\nfunction bodyify(value: any, type: string): string {\n if (value == null) { return null; }\n\n if (typeof(value) === \"string\") { return value; }\n\n if (isBytesLike(value)) {\n if (type && (type.split(\"/\")[0] === \"text\" || type.split(\";\")[0].trim() === \"application/json\")) {\n try {\n return toUtf8String(value);\n } catch (error) { };\n }\n return hexlify(value);\n }\n\n return value;\n}\n\n// Exported Types\nexport type ConnectionInfo = {\n url: string,\n headers?: { [key: string]: string | number }\n\n user?: string,\n password?: string,\n\n allowInsecureAuthentication?: boolean,\n allowGzip?: boolean,\n\n throttleLimit?: number,\n throttleSlotInterval?: number;\n throttleCallback?: (attempt: number, url: string) => Promise,\n\n skipFetchSetup?: boolean;\n fetchOptions?: Record;\n errorPassThrough?: boolean;\n\n timeout?: number,\n};\n\nexport interface OnceBlockable {\n once(eventName: \"block\", handler: () => void): void;\n}\n\nexport interface OncePollable {\n once(eventName: \"poll\", handler: () => void): void;\n}\n\nexport type PollOptions = {\n timeout?: number,\n floor?: number,\n ceiling?: number,\n interval?: number,\n retryLimit?: number,\n onceBlock?: OnceBlockable\n oncePoll?: OncePollable\n};\n\nexport type FetchJsonResponse = {\n statusCode: number;\n headers: { [ header: string ]: string };\n};\n\n\ntype Header = { key: string, value: string };\n\nfunction unpercent(value: string): Uint8Array {\n return toUtf8Bytes(value.replace(/%([0-9a-f][0-9a-f])/gi, (all, code) => {\n return String.fromCharCode(parseInt(code, 16));\n }));\n}\n\n// This API is still a work in progress; the future changes will likely be:\n// - ConnectionInfo => FetchDataRequest\n// - FetchDataRequest.body? = string | Uint8Array | { contentType: string, data: string | Uint8Array }\n// - If string => text/plain, Uint8Array => application/octet-stream (if content-type unspecified)\n// - FetchDataRequest.processFunc = (body: Uint8Array, response: FetchDataResponse) => T\n// For this reason, it should be considered internal until the API is finalized\nexport function _fetchData(connection: string | ConnectionInfo, body?: Uint8Array, processFunc?: (value: Uint8Array, response: FetchJsonResponse) => T): Promise {\n\n // How many times to retry in the event of a throttle\n const attemptLimit = (typeof(connection) === \"object\" && connection.throttleLimit != null) ? connection.throttleLimit: 12;\n logger.assertArgument((attemptLimit > 0 && (attemptLimit % 1) === 0),\n \"invalid connection throttle limit\", \"connection.throttleLimit\", attemptLimit);\n\n const throttleCallback = ((typeof(connection) === \"object\") ? connection.throttleCallback: null);\n const throttleSlotInterval = ((typeof(connection) === \"object\" && typeof(connection.throttleSlotInterval) === \"number\") ? connection.throttleSlotInterval: 100);\n logger.assertArgument((throttleSlotInterval > 0 && (throttleSlotInterval % 1) === 0),\n \"invalid connection throttle slot interval\", \"connection.throttleSlotInterval\", throttleSlotInterval);\n\n const errorPassThrough = ((typeof(connection) === \"object\") ? !!(connection.errorPassThrough): false);\n\n const headers: { [key: string]: Header } = { };\n\n let url: string = null;\n\n // @TODO: Allow ConnectionInfo to override some of these values\n const options: Options = {\n method: \"GET\",\n };\n\n let allow304 = false;\n\n let timeout = 2 * 60 * 1000;\n\n if (typeof(connection) === \"string\") {\n url = connection;\n\n } else if (typeof(connection) === \"object\") {\n if (connection == null || connection.url == null) {\n logger.throwArgumentError(\"missing URL\", \"connection.url\", connection);\n }\n\n url = connection.url;\n\n if (typeof(connection.timeout) === \"number\" && connection.timeout > 0) {\n timeout = connection.timeout;\n }\n\n if (connection.headers) {\n for (const key in connection.headers) {\n headers[key.toLowerCase()] = { key: key, value: String(connection.headers[key]) };\n if ([\"if-none-match\", \"if-modified-since\"].indexOf(key.toLowerCase()) >= 0) {\n allow304 = true;\n }\n }\n }\n\n options.allowGzip = !!connection.allowGzip;\n\n if (connection.user != null && connection.password != null) {\n if (url.substring(0, 6) !== \"https:\" && connection.allowInsecureAuthentication !== true) {\n logger.throwError(\n \"basic authentication requires a secure https url\",\n Logger.errors.INVALID_ARGUMENT,\n { argument: \"url\", url: url, user: connection.user, password: \"[REDACTED]\" }\n );\n }\n\n const authorization = connection.user + \":\" + connection.password;\n headers[\"authorization\"] = {\n key: \"Authorization\",\n value: \"Basic \" + base64Encode(toUtf8Bytes(authorization))\n };\n }\n\n if (connection.skipFetchSetup != null) {\n options.skipFetchSetup = !!connection.skipFetchSetup;\n }\n\n if (connection.fetchOptions != null) {\n options.fetchOptions = shallowCopy(connection.fetchOptions);\n }\n }\n\n const reData = new RegExp(\"^data:([^;:]*)?(;base64)?,(.*)$\", \"i\");\n const dataMatch = ((url) ? url.match(reData): null);\n if (dataMatch) {\n try {\n const response = {\n statusCode: 200,\n statusMessage: \"OK\",\n headers: { \"content-type\": (dataMatch[1] || \"text/plain\")},\n body: (dataMatch[2] ? base64Decode(dataMatch[3]): unpercent(dataMatch[3]))\n };\n\n let result: T = response.body;\n if (processFunc) {\n result = processFunc(response.body, response);\n }\n return Promise.resolve(result);\n\n } catch (error) {\n logger.throwError(\"processing response error\", Logger.errors.SERVER_ERROR, {\n body: bodyify(dataMatch[1], dataMatch[2]),\n error: error,\n requestBody: null,\n requestMethod: \"GET\",\n url: url\n });\n }\n }\n\n if (body) {\n options.method = \"POST\";\n options.body = body;\n if (headers[\"content-type\"] == null) {\n headers[\"content-type\"] = { key: \"Content-Type\", value: \"application/octet-stream\" };\n }\n if (headers[\"content-length\"] == null) {\n headers[\"content-length\"] = { key: \"Content-Length\", value: String(body.length) };\n }\n }\n\n const flatHeaders: { [ key: string ]: string } = { };\n Object.keys(headers).forEach((key) => {\n const header = headers[key];\n flatHeaders[header.key] = header.value;\n });\n options.headers = flatHeaders;\n\n const runningTimeout = (function() {\n let timer: NodeJS.Timer = null;\n const promise: Promise = new Promise(function(resolve, reject) {\n if (timeout) {\n timer = setTimeout(() => {\n if (timer == null) { return; }\n timer = null;\n\n reject(logger.makeError(\"timeout\", Logger.errors.TIMEOUT, {\n requestBody: bodyify(options.body, flatHeaders[\"content-type\"]),\n requestMethod: options.method,\n timeout: timeout,\n url: url\n }));\n }, timeout);\n }\n });\n\n const cancel = function() {\n if (timer == null) { return; }\n clearTimeout(timer);\n timer = null;\n }\n\n return { promise, cancel };\n })();\n\n const runningFetch = (async function() {\n\n for (let attempt = 0; attempt < attemptLimit; attempt++) {\n let response: GetUrlResponse = null;\n\n try {\n response = await getUrl(url, options);\n\n if (attempt < attemptLimit) {\n if (response.statusCode === 301 || response.statusCode === 302) {\n // Redirection; for now we only support absolute locataions\n const location = response.headers.location || \"\";\n if (options.method === \"GET\" && location.match(/^https:/)) {\n url = response.headers.location;\n continue;\n }\n\n } else if (response.statusCode === 429) {\n // Exponential back-off throttling\n let tryAgain = true;\n if (throttleCallback) {\n tryAgain = await throttleCallback(attempt, url);\n }\n\n if (tryAgain) {\n let stall = 0;\n\n const retryAfter = response.headers[\"retry-after\"];\n if (typeof(retryAfter) === \"string\" && retryAfter.match(/^[1-9][0-9]*$/)) {\n stall = parseInt(retryAfter) * 1000;\n } else {\n stall = throttleSlotInterval * parseInt(String(Math.random() * Math.pow(2, attempt)));\n }\n\n //console.log(\"Stalling 429\");\n await staller(stall);\n continue;\n }\n }\n }\n\n } catch (error) {\n response = (error).response;\n if (response == null) {\n runningTimeout.cancel();\n logger.throwError(\"missing response\", Logger.errors.SERVER_ERROR, {\n requestBody: bodyify(options.body, flatHeaders[\"content-type\"]),\n requestMethod: options.method,\n serverError: error,\n url: url\n });\n }\n }\n\n\n let body = response.body;\n\n if (allow304 && response.statusCode === 304) {\n body = null;\n } else if (!errorPassThrough && (response.statusCode < 200 || response.statusCode >= 300)) {\n runningTimeout.cancel();\n logger.throwError(\"bad response\", Logger.errors.SERVER_ERROR, {\n status: response.statusCode,\n headers: response.headers,\n body: bodyify(body, ((response.headers) ? response.headers[\"content-type\"]: null)),\n requestBody: bodyify(options.body, flatHeaders[\"content-type\"]),\n requestMethod: options.method,\n url: url\n });\n }\n\n if (processFunc) {\n try {\n const result = await processFunc(body, response);\n runningTimeout.cancel();\n return result;\n\n } catch (error) {\n // Allow the processFunc to trigger a throttle\n if (error.throttleRetry && attempt < attemptLimit) {\n let tryAgain = true;\n if (throttleCallback) {\n tryAgain = await throttleCallback(attempt, url);\n }\n\n if (tryAgain) {\n const timeout = throttleSlotInterval * parseInt(String(Math.random() * Math.pow(2, attempt)));\n //console.log(\"Stalling callback\");\n await staller(timeout);\n continue;\n }\n }\n\n runningTimeout.cancel();\n logger.throwError(\"processing response error\", Logger.errors.SERVER_ERROR, {\n body: bodyify(body, ((response.headers) ? response.headers[\"content-type\"]: null)),\n error: error,\n requestBody: bodyify(options.body, flatHeaders[\"content-type\"]),\n requestMethod: options.method,\n url: url\n });\n }\n }\n\n runningTimeout.cancel();\n\n // If we had a processFunc, it either returned a T or threw above.\n // The \"body\" is now a Uint8Array.\n return (body);\n }\n\n return logger.throwError(\"failed response\", Logger.errors.SERVER_ERROR, {\n requestBody: bodyify(options.body, flatHeaders[\"content-type\"]),\n requestMethod: options.method,\n url: url\n });\n })();\n\n return Promise.race([ runningTimeout.promise, runningFetch ]);\n}\n\nexport function fetchJson(connection: string | ConnectionInfo, json?: string, processFunc?: (value: any, response: FetchJsonResponse) => any): Promise {\n let processJsonFunc = (value: Uint8Array, response: FetchJsonResponse) => {\n let result: any = null;\n if (value != null) {\n try {\n result = JSON.parse(toUtf8String(value));\n } catch (error) {\n logger.throwError(\"invalid JSON\", Logger.errors.SERVER_ERROR, {\n body: value,\n error: error\n });\n }\n }\n\n if (processFunc) {\n result = processFunc(result, response);\n }\n\n return result;\n }\n\n // If we have json to send, we must\n // - add content-type of application/json (unless already overridden)\n // - convert the json to bytes\n let body: Uint8Array = null;\n if (json != null) {\n body = toUtf8Bytes(json);\n\n // Create a connection with the content-type set for JSON\n const updated: ConnectionInfo = (typeof(connection) === \"string\") ? ({ url: connection }): shallowCopy(connection);\n if (updated.headers) {\n const hasContentType = (Object.keys(updated.headers).filter((k) => (k.toLowerCase() === \"content-type\")).length) !== 0;\n if (!hasContentType) {\n updated.headers = shallowCopy(updated.headers);\n updated.headers[\"content-type\"] = \"application/json\";\n }\n } else {\n updated.headers = { \"content-type\": \"application/json\" };\n }\n connection = updated;\n }\n\n return _fetchData(connection, body, processJsonFunc);\n}\n\nexport function poll(func: () => Promise, options?: PollOptions): Promise {\n if (!options) { options = {}; }\n options = shallowCopy(options);\n if (options.floor == null) { options.floor = 0; }\n if (options.ceiling == null) { options.ceiling = 10000; }\n if (options.interval == null) { options.interval = 250; }\n\n return new Promise(function(resolve, reject) {\n\n let timer: NodeJS.Timer = null;\n let done: boolean = false;\n\n // Returns true if cancel was successful. Unsuccessful cancel means we're already done.\n const cancel = (): boolean => {\n if (done) { return false; }\n done = true;\n if (timer) { clearTimeout(timer); }\n return true;\n };\n\n if (options.timeout) {\n timer = setTimeout(() => {\n if (cancel()) { reject(new Error(\"timeout\")); }\n }, options.timeout)\n }\n\n const retryLimit = options.retryLimit;\n\n let attempt = 0;\n function check() {\n return func().then(function(result) {\n\n // If we have a result, or are allowed null then we're done\n if (result !== undefined) {\n if (cancel()) { resolve(result); }\n\n } else if (options.oncePoll) {\n options.oncePoll.once(\"poll\", check);\n\n } else if (options.onceBlock) {\n options.onceBlock.once(\"block\", check);\n\n // Otherwise, exponential back-off (up to 10s) our next request\n } else if (!done) {\n attempt++;\n if (attempt > retryLimit) {\n if (cancel()) { reject(new Error(\"retry limit reached\")); }\n return;\n }\n\n let timeout = options.interval * parseInt(String(Math.random() * Math.pow(2, attempt)));\n if (timeout < options.floor) { timeout = options.floor; }\n if (timeout > options.ceiling) { timeout = options.ceiling; }\n\n setTimeout(check, timeout);\n }\n\n return null;\n }, function(error) {\n if (cancel()) { reject(error); }\n });\n }\n check();\n });\n}\n\n", "'use strict'\nvar ALPHABET = 'qpzry9x8gf2tvdw0s3jn54khce6mua7l'\n\n// pre-compute lookup table\nvar ALPHABET_MAP = {}\nfor (var z = 0; z < ALPHABET.length; z++) {\n var x = ALPHABET.charAt(z)\n\n if (ALPHABET_MAP[x] !== undefined) throw new TypeError(x + ' is ambiguous')\n ALPHABET_MAP[x] = z\n}\n\nfunction polymodStep (pre) {\n var b = pre >> 25\n return ((pre & 0x1FFFFFF) << 5) ^\n (-((b >> 0) & 1) & 0x3b6a57b2) ^\n (-((b >> 1) & 1) & 0x26508e6d) ^\n (-((b >> 2) & 1) & 0x1ea119fa) ^\n (-((b >> 3) & 1) & 0x3d4233dd) ^\n (-((b >> 4) & 1) & 0x2a1462b3)\n}\n\nfunction prefixChk (prefix) {\n var chk = 1\n for (var i = 0; i < prefix.length; ++i) {\n var c = prefix.charCodeAt(i)\n if (c < 33 || c > 126) return 'Invalid prefix (' + prefix + ')'\n\n chk = polymodStep(chk) ^ (c >> 5)\n }\n chk = polymodStep(chk)\n\n for (i = 0; i < prefix.length; ++i) {\n var v = prefix.charCodeAt(i)\n chk = polymodStep(chk) ^ (v & 0x1f)\n }\n return chk\n}\n\nfunction encode (prefix, words, LIMIT) {\n LIMIT = LIMIT || 90\n if ((prefix.length + 7 + words.length) > LIMIT) throw new TypeError('Exceeds length limit')\n\n prefix = prefix.toLowerCase()\n\n // determine chk mod\n var chk = prefixChk(prefix)\n if (typeof chk === 'string') throw new Error(chk)\n\n var result = prefix + '1'\n for (var i = 0; i < words.length; ++i) {\n var x = words[i]\n if ((x >> 5) !== 0) throw new Error('Non 5-bit word')\n\n chk = polymodStep(chk) ^ x\n result += ALPHABET.charAt(x)\n }\n\n for (i = 0; i < 6; ++i) {\n chk = polymodStep(chk)\n }\n chk ^= 1\n\n for (i = 0; i < 6; ++i) {\n var v = (chk >> ((5 - i) * 5)) & 0x1f\n result += ALPHABET.charAt(v)\n }\n\n return result\n}\n\nfunction __decode (str, LIMIT) {\n LIMIT = LIMIT || 90\n if (str.length < 8) return str + ' too short'\n if (str.length > LIMIT) return 'Exceeds length limit'\n\n // don't allow mixed case\n var lowered = str.toLowerCase()\n var uppered = str.toUpperCase()\n if (str !== lowered && str !== uppered) return 'Mixed-case string ' + str\n str = lowered\n\n var split = str.lastIndexOf('1')\n if (split === -1) return 'No separator character for ' + str\n if (split === 0) return 'Missing prefix for ' + str\n\n var prefix = str.slice(0, split)\n var wordChars = str.slice(split + 1)\n if (wordChars.length < 6) return 'Data too short'\n\n var chk = prefixChk(prefix)\n if (typeof chk === 'string') return chk\n\n var words = []\n for (var i = 0; i < wordChars.length; ++i) {\n var c = wordChars.charAt(i)\n var v = ALPHABET_MAP[c]\n if (v === undefined) return 'Unknown character ' + c\n chk = polymodStep(chk) ^ v\n\n // not in the checksum?\n if (i + 6 >= wordChars.length) continue\n words.push(v)\n }\n\n if (chk !== 1) return 'Invalid checksum for ' + str\n return { prefix: prefix, words: words }\n}\n\nfunction decodeUnsafe () {\n var res = __decode.apply(null, arguments)\n if (typeof res === 'object') return res\n}\n\nfunction decode (str) {\n var res = __decode.apply(null, arguments)\n if (typeof res === 'object') return res\n\n throw new Error(res)\n}\n\nfunction convert (data, inBits, outBits, pad) {\n var value = 0\n var bits = 0\n var maxV = (1 << outBits) - 1\n\n var result = []\n for (var i = 0; i < data.length; ++i) {\n value = (value << inBits) | data[i]\n bits += inBits\n\n while (bits >= outBits) {\n bits -= outBits\n result.push((value >> bits) & maxV)\n }\n }\n\n if (pad) {\n if (bits > 0) {\n result.push((value << (outBits - bits)) & maxV)\n }\n } else {\n if (bits >= inBits) return 'Excess padding'\n if ((value << (outBits - bits)) & maxV) return 'Non-zero padding'\n }\n\n return result\n}\n\nfunction toWordsUnsafe (bytes) {\n var res = convert(bytes, 8, 5, true)\n if (Array.isArray(res)) return res\n}\n\nfunction toWords (bytes) {\n var res = convert(bytes, 8, 5, true)\n if (Array.isArray(res)) return res\n\n throw new Error(res)\n}\n\nfunction fromWordsUnsafe (words) {\n var res = convert(words, 5, 8, false)\n if (Array.isArray(res)) return res\n}\n\nfunction fromWords (words) {\n var res = convert(words, 5, 8, false)\n if (Array.isArray(res)) return res\n\n throw new Error(res)\n}\n\nmodule.exports = {\n decodeUnsafe: decodeUnsafe,\n decode: decode,\n encode: encode,\n toWordsUnsafe: toWordsUnsafe,\n toWords: toWords,\n fromWordsUnsafe: fromWordsUnsafe,\n fromWords: fromWords\n}\n", "export const version = \"providers/5.7.2\";\n", "\"use strict\";\n\nimport { Block, TransactionReceipt, TransactionResponse } from \"@ethersproject/abstract-provider\";\nimport { getAddress, getContractAddress } from \"@ethersproject/address\";\nimport { BigNumber } from \"@ethersproject/bignumber\";\nimport { hexDataLength, hexDataSlice, hexValue, hexZeroPad, isHexString } from \"@ethersproject/bytes\";\nimport { AddressZero } from \"@ethersproject/constants\";\nimport { shallowCopy } from \"@ethersproject/properties\";\nimport { AccessList, accessListify, parse as parseTransaction } from \"@ethersproject/transactions\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nexport type FormatFunc = (value: any) => any;\n\nexport type FormatFuncs = { [ key: string ]: FormatFunc };\n\nexport type Formats = {\n transaction: FormatFuncs,\n transactionRequest: FormatFuncs,\n receipt: FormatFuncs,\n receiptLog: FormatFuncs,\n block: FormatFuncs,\n blockWithTransactions: FormatFuncs,\n filter: FormatFuncs,\n filterLog: FormatFuncs,\n};\n\nexport class Formatter {\n readonly formats: Formats;\n\n constructor() {\n this.formats = this.getDefaultFormats();\n }\n\n getDefaultFormats(): Formats {\n const formats: Formats = ({ });\n\n const address = this.address.bind(this);\n const bigNumber = this.bigNumber.bind(this);\n const blockTag = this.blockTag.bind(this);\n const data = this.data.bind(this);\n const hash = this.hash.bind(this);\n const hex = this.hex.bind(this);\n const number = this.number.bind(this);\n const type = this.type.bind(this);\n\n const strictData = (v: any) => { return this.data(v, true); };\n\n formats.transaction = {\n hash: hash,\n\n type: type,\n accessList: Formatter.allowNull(this.accessList.bind(this), null),\n\n blockHash: Formatter.allowNull(hash, null),\n blockNumber: Formatter.allowNull(number, null),\n transactionIndex: Formatter.allowNull(number, null),\n\n confirmations: Formatter.allowNull(number, null),\n\n from: address,\n\n // either (gasPrice) or (maxPriorityFeePerGas + maxFeePerGas)\n // must be set\n gasPrice: Formatter.allowNull(bigNumber),\n maxPriorityFeePerGas: Formatter.allowNull(bigNumber),\n maxFeePerGas: Formatter.allowNull(bigNumber),\n\n gasLimit: bigNumber,\n to: Formatter.allowNull(address, null),\n value: bigNumber,\n nonce: number,\n data: data,\n\n r: Formatter.allowNull(this.uint256),\n s: Formatter.allowNull(this.uint256),\n v: Formatter.allowNull(number),\n\n creates: Formatter.allowNull(address, null),\n\n raw: Formatter.allowNull(data),\n };\n\n formats.transactionRequest = {\n from: Formatter.allowNull(address),\n nonce: Formatter.allowNull(number),\n gasLimit: Formatter.allowNull(bigNumber),\n gasPrice: Formatter.allowNull(bigNumber),\n maxPriorityFeePerGas: Formatter.allowNull(bigNumber),\n maxFeePerGas: Formatter.allowNull(bigNumber),\n to: Formatter.allowNull(address),\n value: Formatter.allowNull(bigNumber),\n data: Formatter.allowNull(strictData),\n type: Formatter.allowNull(number),\n accessList: Formatter.allowNull(this.accessList.bind(this), null),\n };\n\n formats.receiptLog = {\n transactionIndex: number,\n blockNumber: number,\n transactionHash: hash,\n address: address,\n topics: Formatter.arrayOf(hash),\n data: data,\n logIndex: number,\n blockHash: hash,\n };\n\n formats.receipt = {\n to: Formatter.allowNull(this.address, null),\n from: Formatter.allowNull(this.address, null),\n contractAddress: Formatter.allowNull(address, null),\n transactionIndex: number,\n // should be allowNull(hash), but broken-EIP-658 support is handled in receipt\n root: Formatter.allowNull(hex),\n gasUsed: bigNumber,\n logsBloom: Formatter.allowNull(data),// @TODO: should this be data?\n blockHash: hash,\n transactionHash: hash,\n logs: Formatter.arrayOf(this.receiptLog.bind(this)),\n blockNumber: number,\n confirmations: Formatter.allowNull(number, null),\n cumulativeGasUsed: bigNumber,\n effectiveGasPrice: Formatter.allowNull(bigNumber),\n status: Formatter.allowNull(number),\n type: type\n };\n\n formats.block = {\n hash: Formatter.allowNull(hash),\n parentHash: hash,\n number: number,\n\n timestamp: number,\n nonce: Formatter.allowNull(hex),\n difficulty: this.difficulty.bind(this),\n\n gasLimit: bigNumber,\n gasUsed: bigNumber,\n\n miner: Formatter.allowNull(address),\n extraData: data,\n\n transactions: Formatter.allowNull(Formatter.arrayOf(hash)),\n\n baseFeePerGas: Formatter.allowNull(bigNumber)\n };\n\n formats.blockWithTransactions = shallowCopy(formats.block);\n formats.blockWithTransactions.transactions = Formatter.allowNull(Formatter.arrayOf(this.transactionResponse.bind(this)));\n\n formats.filter = {\n fromBlock: Formatter.allowNull(blockTag, undefined),\n toBlock: Formatter.allowNull(blockTag, undefined),\n blockHash: Formatter.allowNull(hash, undefined),\n address: Formatter.allowNull(address, undefined),\n topics: Formatter.allowNull(this.topics.bind(this), undefined),\n };\n\n formats.filterLog = {\n blockNumber: Formatter.allowNull(number),\n blockHash: Formatter.allowNull(hash),\n transactionIndex: number,\n\n removed: Formatter.allowNull(this.boolean.bind(this)),\n\n address: address,\n data: Formatter.allowFalsish(data, \"0x\"),\n\n topics: Formatter.arrayOf(hash),\n\n transactionHash: hash,\n logIndex: number,\n };\n\n return formats;\n }\n\n accessList(accessList: Array): AccessList {\n return accessListify(accessList || []);\n }\n\n // Requires a BigNumberish that is within the IEEE754 safe integer range; returns a number\n // Strict! Used on input.\n number(number: any): number {\n if (number === \"0x\") { return 0; }\n return BigNumber.from(number).toNumber();\n }\n\n type(number: any): number {\n if (number === \"0x\" || number == null) { return 0; }\n return BigNumber.from(number).toNumber();\n }\n\n // Strict! Used on input.\n bigNumber(value: any): BigNumber {\n return BigNumber.from(value);\n }\n\n // Requires a boolean, \"true\" or \"false\"; returns a boolean\n boolean(value: any): boolean {\n if (typeof(value) === \"boolean\") { return value; }\n if (typeof(value) === \"string\") {\n value = value.toLowerCase();\n if (value === \"true\") { return true; }\n if (value === \"false\") { return false; }\n }\n throw new Error(\"invalid boolean - \" + value);\n }\n\n hex(value: any, strict?: boolean): string {\n if (typeof(value) === \"string\") {\n if (!strict && value.substring(0, 2) !== \"0x\") { value = \"0x\" + value; }\n if (isHexString(value)) {\n return value.toLowerCase();\n }\n }\n return logger.throwArgumentError(\"invalid hash\", \"value\", value);\n }\n\n data(value: any, strict?: boolean): string {\n const result = this.hex(value, strict);\n if ((result.length % 2) !== 0) {\n throw new Error(\"invalid data; odd-length - \" + value);\n }\n return result;\n }\n\n // Requires an address\n // Strict! Used on input.\n address(value: any): string {\n return getAddress(value);\n }\n\n callAddress(value: any): string {\n if (!isHexString(value, 32)) { return null; }\n const address = getAddress(hexDataSlice(value, 12));\n return (address === AddressZero) ? null: address;\n }\n\n contractAddress(value: any): string {\n return getContractAddress(value);\n }\n\n // Strict! Used on input.\n blockTag(blockTag: any): string {\n if (blockTag == null) { return \"latest\"; }\n\n if (blockTag === \"earliest\") { return \"0x0\"; }\n\n switch (blockTag) {\n case \"earliest\": return \"0x0\";\n case \"latest\": case \"pending\": case \"safe\": case \"finalized\":\n return blockTag;\n }\n\n if (typeof(blockTag) === \"number\" || isHexString(blockTag)) {\n return hexValue(blockTag);\n }\n\n throw new Error(\"invalid blockTag\");\n }\n\n // Requires a hash, optionally requires 0x prefix; returns prefixed lowercase hash.\n hash(value: any, strict?: boolean): string {\n const result = this.hex(value, strict);\n if (hexDataLength(result) !== 32) {\n return logger.throwArgumentError(\"invalid hash\", \"value\", value);\n }\n return result;\n }\n\n // Returns the difficulty as a number, or if too large (i.e. PoA network) null\n difficulty(value: any): number {\n if (value == null) { return null; }\n\n const v = BigNumber.from(value);\n\n try {\n return v.toNumber();\n } catch (error) { }\n\n return null;\n }\n\n uint256(value: any): string {\n if (!isHexString(value)) {\n throw new Error(\"invalid uint256\");\n }\n return hexZeroPad(value, 32);\n }\n\n _block(value: any, format: any): Block {\n if (value.author != null && value.miner == null) {\n value.miner = value.author;\n }\n // The difficulty may need to come from _difficulty in recursed blocks\n const difficulty = (value._difficulty != null) ? value._difficulty: value.difficulty;\n const result = Formatter.check(format, value);\n result._difficulty = ((difficulty == null) ? null: BigNumber.from(difficulty));\n return result;\n }\n\n block(value: any): Block {\n return this._block(value, this.formats.block);\n }\n\n blockWithTransactions(value: any): Block {\n return this._block(value, this.formats.blockWithTransactions);\n }\n\n // Strict! Used on input.\n transactionRequest(value: any): any {\n return Formatter.check(this.formats.transactionRequest, value);\n }\n\n transactionResponse(transaction: any): TransactionResponse {\n\n // Rename gas to gasLimit\n if (transaction.gas != null && transaction.gasLimit == null) {\n transaction.gasLimit = transaction.gas;\n }\n\n // Some clients (TestRPC) do strange things like return 0x0 for the\n // 0 address; correct this to be a real address\n if (transaction.to && BigNumber.from(transaction.to).isZero()) {\n transaction.to = \"0x0000000000000000000000000000000000000000\";\n }\n\n // Rename input to data\n if (transaction.input != null && transaction.data == null) {\n transaction.data = transaction.input;\n }\n\n // If to and creates are empty, populate the creates from the transaction\n if (transaction.to == null && transaction.creates == null) {\n transaction.creates = this.contractAddress(transaction);\n }\n\n if ((transaction.type === 1 || transaction.type === 2)&& transaction.accessList == null) {\n transaction.accessList = [ ];\n }\n\n const result: TransactionResponse = Formatter.check(this.formats.transaction, transaction);\n\n if (transaction.chainId != null) {\n let chainId = transaction.chainId;\n\n if (isHexString(chainId)) {\n chainId = BigNumber.from(chainId).toNumber();\n }\n\n result.chainId = chainId;\n\n } else {\n let chainId = transaction.networkId;\n\n // geth-etc returns chainId\n if (chainId == null && result.v == null) {\n chainId = transaction.chainId;\n }\n\n if (isHexString(chainId)) {\n chainId = BigNumber.from(chainId).toNumber();\n }\n\n if (typeof(chainId) !== \"number\" && result.v != null) {\n chainId = (result.v - 35) / 2;\n if (chainId < 0) { chainId = 0; }\n chainId = parseInt(chainId);\n }\n\n if (typeof(chainId) !== \"number\") { chainId = 0; }\n\n result.chainId = chainId;\n }\n\n // 0x0000... should actually be null\n if (result.blockHash && result.blockHash.replace(/0/g, \"\") === \"x\") {\n result.blockHash = null;\n }\n\n return result;\n }\n\n transaction(value: any): any {\n return parseTransaction(value);\n }\n\n receiptLog(value: any): any {\n return Formatter.check(this.formats.receiptLog, value);\n }\n\n receipt(value: any): TransactionReceipt {\n const result: TransactionReceipt = Formatter.check(this.formats.receipt, value);\n\n // RSK incorrectly implemented EIP-658, so we munge things a bit here for it\n if (result.root != null) {\n if (result.root.length <= 4) {\n // Could be 0x00, 0x0, 0x01 or 0x1\n const value = BigNumber.from(result.root).toNumber();\n if (value === 0 || value === 1) {\n // Make sure if both are specified, they match\n if (result.status != null && (result.status !== value)) {\n logger.throwArgumentError(\"alt-root-status/status mismatch\", \"value\", { root: result.root, status: result.status });\n }\n result.status = value;\n delete result.root;\n } else {\n logger.throwArgumentError(\"invalid alt-root-status\", \"value.root\", result.root);\n }\n } else if (result.root.length !== 66) {\n // Must be a valid bytes32\n logger.throwArgumentError(\"invalid root hash\", \"value.root\", result.root);\n }\n }\n\n if (result.status != null) {\n result.byzantium = true;\n }\n\n return result;\n }\n\n topics(value: any): any {\n if (Array.isArray(value)) {\n return value.map((v) => this.topics(v));\n\n } else if (value != null) {\n return this.hash(value, true);\n }\n\n return null;\n }\n\n filter(value: any): any {\n return Formatter.check(this.formats.filter, value);\n }\n\n filterLog(value: any): any {\n return Formatter.check(this.formats.filterLog, value);\n }\n\n static check(format: { [ name: string ]: FormatFunc }, object: any): any {\n const result: any = {};\n for (const key in format) {\n try {\n const value = format[key](object[key]);\n if (value !== undefined) { result[key] = value; }\n } catch (error) {\n error.checkKey = key;\n error.checkValue = object[key];\n throw error;\n }\n }\n return result;\n }\n\n // if value is null-ish, nullValue is returned\n static allowNull(format: FormatFunc, nullValue?: any): FormatFunc {\n return (function(value: any) {\n if (value == null) { return nullValue; }\n return format(value);\n });\n }\n\n // If value is false-ish, replaceValue is returned\n static allowFalsish(format: FormatFunc, replaceValue: any): FormatFunc {\n return (function(value: any) {\n if (!value) { return replaceValue; }\n return format(value);\n });\n }\n\n // Requires an Array satisfying check\n static arrayOf(format: FormatFunc): FormatFunc {\n return (function(array: any): Array {\n if (!Array.isArray(array)) { throw new Error(\"not an array\"); }\n\n const result: any = [];\n\n array.forEach(function(value) {\n result.push(format(value));\n });\n\n return result;\n });\n }\n}\n\nexport interface CommunityResourcable {\n isCommunityResource(): boolean;\n}\n\nexport function isCommunityResourcable(value: any): value is CommunityResourcable {\n return (value && typeof(value.isCommunityResource) === \"function\");\n}\n\nexport function isCommunityResource(value: any): boolean {\n return (isCommunityResourcable(value) && value.isCommunityResource());\n}\n\n// Show the throttle message only once\nlet throttleMessage = false;\nexport function showThrottleMessage() {\n if (throttleMessage) { return; }\n throttleMessage = true;\n\n console.log(\"========= NOTICE =========\")\n console.log(\"Request-Rate Exceeded (this message will not be repeated)\");\n console.log(\"\");\n console.log(\"The default API keys for each service are provided as a highly-throttled,\");\n console.log(\"community resource for low-traffic projects and early prototyping.\");\n console.log(\"\");\n console.log(\"While your application will continue to function, we highly recommended\");\n console.log(\"signing up for your own API keys to improve performance, increase your\");\n console.log(\"request rate/limit and enable other perks, such as metrics and advanced APIs.\");\n console.log(\"\");\n console.log(\"For more details: https:/\\/docs.ethers.io/api-keys/\");\n console.log(\"==========================\");\n}\n\n", "\"use strict\";\n\nimport {\n Block, BlockTag, BlockWithTransactions, EventType, Filter, FilterByBlockHash, ForkEvent,\n Listener, Log, Provider, TransactionReceipt, TransactionRequest, TransactionResponse\n} from \"@ethersproject/abstract-provider\";\nimport { encode as base64Encode } from \"@ethersproject/base64\";\nimport { Base58 } from \"@ethersproject/basex\";\nimport { BigNumber, BigNumberish } from \"@ethersproject/bignumber\";\nimport { arrayify, BytesLike, concat, hexConcat, hexDataLength, hexDataSlice, hexlify, hexValue, hexZeroPad, isHexString } from \"@ethersproject/bytes\";\nimport { HashZero } from \"@ethersproject/constants\";\nimport { dnsEncode, namehash } from \"@ethersproject/hash\";\nimport { getNetwork, Network, Networkish } from \"@ethersproject/networks\";\nimport { Deferrable, defineReadOnly, getStatic, resolveProperties } from \"@ethersproject/properties\";\nimport { Transaction } from \"@ethersproject/transactions\";\nimport { sha256 } from \"@ethersproject/sha2\";\nimport { toUtf8Bytes, toUtf8String } from \"@ethersproject/strings\";\nimport { fetchJson, poll } from \"@ethersproject/web\";\n\nimport bech32 from \"bech32\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nimport { Formatter } from \"./formatter\";\n\nconst MAX_CCIP_REDIRECTS = 10;\n\n//////////////////////////////\n// Event Serializeing\n\nfunction checkTopic(topic: string): string {\n if (topic == null) { return \"null\"; }\n if (hexDataLength(topic) !== 32) {\n logger.throwArgumentError(\"invalid topic\", \"topic\", topic);\n }\n return topic.toLowerCase();\n}\n\nfunction serializeTopics(topics: Array>): string {\n // Remove trailing null AND-topics; they are redundant\n topics = topics.slice();\n while (topics.length > 0 && topics[topics.length - 1] == null) { topics.pop(); }\n\n return topics.map((topic) => {\n if (Array.isArray(topic)) {\n\n // Only track unique OR-topics\n const unique: { [ topic: string ]: boolean } = { }\n topic.forEach((topic) => {\n unique[checkTopic(topic)] = true;\n });\n\n // The order of OR-topics does not matter\n const sorted = Object.keys(unique);\n sorted.sort();\n\n return sorted.join(\"|\");\n\n } else {\n return checkTopic(topic);\n }\n }).join(\"&\");\n}\n\nfunction deserializeTopics(data: string): Array> {\n if (data === \"\") { return [ ]; }\n\n return data.split(/&/g).map((topic) => {\n if (topic === \"\") { return [ ]; }\n\n const comps = topic.split(\"|\").map((topic) => {\n return ((topic === \"null\") ? null: topic);\n });\n\n return ((comps.length === 1) ? comps[0]: comps);\n });\n}\n\nfunction getEventTag(eventName: EventType): string {\n if (typeof(eventName) === \"string\") {\n eventName = eventName.toLowerCase();\n\n if (hexDataLength(eventName) === 32) {\n return \"tx:\" + eventName;\n }\n\n if (eventName.indexOf(\":\") === -1) {\n return eventName;\n }\n\n } else if (Array.isArray(eventName)) {\n return \"filter:*:\" + serializeTopics(eventName);\n\n } else if (ForkEvent.isForkEvent(eventName)) {\n logger.warn(\"not implemented\");\n throw new Error(\"not implemented\");\n\n } else if (eventName && typeof(eventName) === \"object\") {\n return \"filter:\" + (eventName.address || \"*\") + \":\" + serializeTopics(eventName.topics || []);\n }\n\n throw new Error(\"invalid event - \" + eventName);\n}\n\n//////////////////////////////\n// Helper Object\n\nfunction getTime() {\n return (new Date()).getTime();\n}\n\nfunction stall(duration: number): Promise {\n return new Promise((resolve) => {\n setTimeout(resolve, duration);\n });\n}\n\n//////////////////////////////\n// Provider Object\n\n\n/**\n * EventType\n * - \"block\"\n * - \"poll\"\n * - \"didPoll\"\n * - \"pending\"\n * - \"error\"\n * - \"network\"\n * - filter\n * - topics array\n * - transaction hash\n */\n\nconst PollableEvents = [ \"block\", \"network\", \"pending\", \"poll\" ];\n\nexport class Event {\n readonly listener: Listener;\n readonly once: boolean;\n readonly tag: string;\n\n _lastBlockNumber: number\n _inflight: boolean;\n\n constructor(tag: string, listener: Listener, once: boolean) {\n defineReadOnly(this, \"tag\", tag);\n defineReadOnly(this, \"listener\", listener);\n defineReadOnly(this, \"once\", once);\n\n this._lastBlockNumber = -2;\n this._inflight = false;\n }\n\n get event(): EventType {\n switch (this.type) {\n case \"tx\":\n return this.hash;\n case \"filter\":\n return this.filter;\n }\n return this.tag;\n }\n\n get type(): string {\n return this.tag.split(\":\")[0]\n }\n\n get hash(): string {\n const comps = this.tag.split(\":\");\n if (comps[0] !== \"tx\") { return null; }\n return comps[1];\n }\n\n get filter(): Filter {\n const comps = this.tag.split(\":\");\n if (comps[0] !== \"filter\") { return null; }\n const address = comps[1];\n\n const topics = deserializeTopics(comps[2]);\n const filter: Filter = { };\n\n if (topics.length > 0) { filter.topics = topics; }\n if (address && address !== \"*\") { filter.address = address; }\n\n return filter;\n }\n\n pollable(): boolean {\n return (this.tag.indexOf(\":\") >= 0 || PollableEvents.indexOf(this.tag) >= 0);\n }\n}\n\nexport interface EnsResolver {\n\n // Name this Resolver is associated with\n readonly name: string;\n\n // The address of the resolver\n readonly address: string;\n\n // Multichain address resolution (also normal address resolution)\n // See: https://eips.ethereum.org/EIPS/eip-2304\n getAddress(coinType?: 60): Promise\n\n // Contenthash field\n // See: https://eips.ethereum.org/EIPS/eip-1577\n getContentHash(): Promise;\n\n // Storage of text records\n // See: https://eips.ethereum.org/EIPS/eip-634\n getText(key: string): Promise;\n};\n\nexport interface EnsProvider {\n resolveName(name: string): Promise;\n lookupAddress(address: string): Promise;\n getResolver(name: string): Promise;\n}\n\ntype CoinInfo = {\n symbol: string,\n ilk?: string, // General family\n prefix?: string, // Bech32 prefix\n p2pkh?: number, // Pay-to-Public-Key-Hash Version\n p2sh?: number, // Pay-to-Script-Hash Version\n};\n\n// https://github.com/satoshilabs/slips/blob/master/slip-0044.md\nconst coinInfos: { [ coinType: string ]: CoinInfo } = {\n \"0\": { symbol: \"btc\", p2pkh: 0x00, p2sh: 0x05, prefix: \"bc\" },\n \"2\": { symbol: \"ltc\", p2pkh: 0x30, p2sh: 0x32, prefix: \"ltc\" },\n \"3\": { symbol: \"doge\", p2pkh: 0x1e, p2sh: 0x16 },\n \"60\": { symbol: \"eth\", ilk: \"eth\" },\n \"61\": { symbol: \"etc\", ilk: \"eth\" },\n \"700\": { symbol: \"xdai\", ilk: \"eth\" },\n};\n\nfunction bytes32ify(value: number): string {\n return hexZeroPad(BigNumber.from(value).toHexString(), 32);\n}\n\n// Compute the Base58Check encoded data (checksum is first 4 bytes of sha256d)\nfunction base58Encode(data: Uint8Array): string {\n return Base58.encode(concat([ data, hexDataSlice(sha256(sha256(data)), 0, 4) ]));\n}\n\nexport interface Avatar {\n url: string;\n linkage: Array<{ type: string, content: string }>;\n}\n\nconst matcherIpfs = new RegExp(\"^(ipfs):/\\/(.*)$\", \"i\");\nconst matchers = [\n new RegExp(\"^(https):/\\/(.*)$\", \"i\"),\n new RegExp(\"^(data):(.*)$\", \"i\"),\n matcherIpfs,\n new RegExp(\"^eip155:[0-9]+/(erc[0-9]+):(.*)$\", \"i\"),\n];\n\nfunction _parseString(result: string, start: number): null | string {\n try {\n return toUtf8String(_parseBytes(result, start));\n } catch(error) { }\n return null;\n}\n\nfunction _parseBytes(result: string, start: number): null | string {\n if (result === \"0x\") { return null; }\n\n const offset = BigNumber.from(hexDataSlice(result, start, start + 32)).toNumber();\n const length = BigNumber.from(hexDataSlice(result, offset, offset + 32)).toNumber();\n\n return hexDataSlice(result, offset + 32, offset + 32 + length);\n}\n\n// Trim off the ipfs:// prefix and return the default gateway URL\nfunction getIpfsLink(link: string): string {\n if (link.match(/^ipfs:\\/\\/ipfs\\//i)) {\n link = link.substring(12);\n } else if (link.match(/^ipfs:\\/\\//i)) {\n link = link.substring(7);\n } else {\n logger.throwArgumentError(\"unsupported IPFS format\", \"link\", link);\n }\n\n return `https:/\\/gateway.ipfs.io/ipfs/${ link }`;\n}\n\nfunction numPad(value: number): Uint8Array {\n const result = arrayify(value);\n if (result.length > 32) { throw new Error(\"internal; should not happen\"); }\n\n const padded = new Uint8Array(32);\n padded.set(result, 32 - result.length);\n return padded;\n}\n\nfunction bytesPad(value: Uint8Array): Uint8Array {\n if ((value.length % 32) === 0) { return value; }\n\n const result = new Uint8Array(Math.ceil(value.length / 32) * 32);\n result.set(value);\n return result;\n}\n\n// ABI Encodes a series of (bytes, bytes, ...)\nfunction encodeBytes(datas: Array) {\n const result: Array = [ ];\n\n let byteCount = 0;\n\n // Add place-holders for pointers as we add items\n for (let i = 0; i < datas.length; i++) {\n result.push(null);\n byteCount += 32;\n }\n\n for (let i = 0; i < datas.length; i++) {\n const data = arrayify(datas[i]);\n\n // Update the bytes offset\n result[i] = numPad(byteCount);\n\n // The length and padded value of data\n result.push(numPad(data.length));\n result.push(bytesPad(data));\n byteCount += 32 + Math.ceil(data.length / 32) * 32;\n }\n\n return hexConcat(result);\n}\n\nexport class Resolver implements EnsResolver {\n readonly provider: BaseProvider;\n\n readonly name: string;\n readonly address: string;\n\n readonly _resolvedAddress: null | string;\n\n // For EIP-2544 names, the ancestor that provided the resolver\n _supportsEip2544: null | Promise;\n\n // The resolvedAddress is only for creating a ReverseLookup resolver\n constructor(provider: BaseProvider, address: string, name: string, resolvedAddress?: string) {\n defineReadOnly(this, \"provider\", provider);\n defineReadOnly(this, \"name\", name);\n defineReadOnly(this, \"address\", provider.formatter.address(address));\n defineReadOnly(this, \"_resolvedAddress\", resolvedAddress);\n }\n\n supportsWildcard(): Promise {\n if (!this._supportsEip2544) {\n // supportsInterface(bytes4 = selector(\"resolve(bytes,bytes)\"))\n this._supportsEip2544 = this.provider.call({\n to: this.address,\n data: \"0x01ffc9a79061b92300000000000000000000000000000000000000000000000000000000\"\n }).then((result) => {\n return BigNumber.from(result).eq(1);\n }).catch((error) => {\n if (error.code === Logger.errors.CALL_EXCEPTION) { return false; }\n // Rethrow the error: link is down, etc. Let future attempts retry.\n this._supportsEip2544 = null;\n throw error;\n });\n }\n\n return this._supportsEip2544;\n }\n\n async _fetch(selector: string, parameters?: string): Promise {\n\n // e.g. keccak256(\"addr(bytes32,uint256)\")\n const tx = {\n to: this.address,\n ccipReadEnabled: true,\n data: hexConcat([ selector, namehash(this.name), (parameters || \"0x\") ])\n };\n\n // Wildcard support; use EIP-2544 to resolve the request\n let parseBytes = false;\n if (await this.supportsWildcard()) {\n parseBytes = true;\n\n // selector(\"resolve(bytes,bytes)\")\n tx.data = hexConcat([ \"0x9061b923\", encodeBytes([ dnsEncode(this.name), tx.data ]) ]);\n }\n\n try {\n let result = await this.provider.call(tx);\n if ((arrayify(result).length % 32) === 4) {\n logger.throwError(\"resolver threw error\", Logger.errors.CALL_EXCEPTION, {\n transaction: tx, data: result\n });\n }\n if (parseBytes) { result = _parseBytes(result, 0); }\n return result;\n } catch (error) {\n if (error.code === Logger.errors.CALL_EXCEPTION) { return null; }\n throw error;\n }\n }\n\n async _fetchBytes(selector: string, parameters?: string): Promise {\n const result = await this._fetch(selector, parameters);\n if (result != null) { return _parseBytes(result, 0); }\n return null;\n }\n\n _getAddress(coinType: number, hexBytes: string): string {\n const coinInfo = coinInfos[String(coinType)];\n\n if (coinInfo == null) {\n logger.throwError(`unsupported coin type: ${ coinType }`, Logger.errors.UNSUPPORTED_OPERATION, {\n operation: `getAddress(${ coinType })`\n });\n }\n\n if (coinInfo.ilk === \"eth\") {\n return this.provider.formatter.address(hexBytes);\n }\n\n const bytes = arrayify(hexBytes);\n\n // P2PKH: OP_DUP OP_HASH160 OP_EQUALVERIFY OP_CHECKSIG\n if (coinInfo.p2pkh != null) {\n const p2pkh = hexBytes.match(/^0x76a9([0-9a-f][0-9a-f])([0-9a-f]*)88ac$/);\n if (p2pkh) {\n const length = parseInt(p2pkh[1], 16);\n if (p2pkh[2].length === length * 2 && length >= 1 && length <= 75) {\n return base58Encode(concat([ [ coinInfo.p2pkh ], (\"0x\" + p2pkh[2]) ]));\n }\n }\n }\n\n // P2SH: OP_HASH160 OP_EQUAL\n if (coinInfo.p2sh != null) {\n const p2sh = hexBytes.match(/^0xa9([0-9a-f][0-9a-f])([0-9a-f]*)87$/);\n if (p2sh) {\n const length = parseInt(p2sh[1], 16);\n if (p2sh[2].length === length * 2 && length >= 1 && length <= 75) {\n return base58Encode(concat([ [ coinInfo.p2sh ], (\"0x\" + p2sh[2]) ]));\n }\n }\n }\n\n // Bech32\n if (coinInfo.prefix != null) {\n const length = bytes[1];\n\n // https://github.com/bitcoin/bips/blob/master/bip-0141.mediawiki#witness-program\n let version = bytes[0];\n if (version === 0x00) {\n if (length !== 20 && length !== 32) {\n version = -1;\n }\n } else {\n version = -1;\n }\n\n if (version >= 0 && bytes.length === 2 + length && length >= 1 && length <= 75) {\n const words = bech32.toWords(bytes.slice(2));\n words.unshift(version);\n return bech32.encode(coinInfo.prefix, words);\n }\n }\n\n return null;\n }\n\n\n async getAddress(coinType?: number): Promise {\n if (coinType == null) { coinType = 60; }\n\n // If Ethereum, use the standard `addr(bytes32)`\n if (coinType === 60) {\n try {\n // keccak256(\"addr(bytes32)\")\n const result = await this._fetch(\"0x3b3b57de\");\n\n // No address\n if (result === \"0x\" || result === HashZero) { return null; }\n\n return this.provider.formatter.callAddress(result);\n } catch (error) {\n if (error.code === Logger.errors.CALL_EXCEPTION) { return null; }\n throw error;\n }\n }\n\n // keccak256(\"addr(bytes32,uint256\")\n const hexBytes = await this._fetchBytes(\"0xf1cb7e06\", bytes32ify(coinType));\n\n // No address\n if (hexBytes == null || hexBytes === \"0x\") { return null; }\n\n // Compute the address\n const address = this._getAddress(coinType, hexBytes);\n\n if (address == null) {\n logger.throwError(`invalid or unsupported coin data`, Logger.errors.UNSUPPORTED_OPERATION, {\n operation: `getAddress(${ coinType })`,\n coinType: coinType,\n data: hexBytes\n });\n }\n\n return address;\n }\n\n async getAvatar(): Promise {\n const linkage: Array<{ type: string, content: string }> = [ { type: \"name\", content: this.name } ];\n try {\n // test data for ricmoo.eth\n //const avatar = \"eip155:1/erc721:0x265385c7f4132228A0d54EB1A9e7460b91c0cC68/29233\";\n const avatar = await this.getText(\"avatar\");\n if (avatar == null) { return null; }\n\n for (let i = 0; i < matchers.length; i++) {\n const match = avatar.match(matchers[i]);\n if (match == null) { continue; }\n\n const scheme = match[1].toLowerCase();\n\n switch (scheme) {\n case \"https\":\n linkage.push({ type: \"url\", content: avatar });\n return { linkage, url: avatar };\n\n case \"data\":\n linkage.push({ type: \"data\", content: avatar });\n return { linkage, url: avatar };\n\n case \"ipfs\":\n linkage.push({ type: \"ipfs\", content: avatar });\n return { linkage, url: getIpfsLink(avatar) };\n\n case \"erc721\":\n case \"erc1155\": {\n // Depending on the ERC type, use tokenURI(uint256) or url(uint256)\n const selector = (scheme === \"erc721\") ? \"0xc87b56dd\": \"0x0e89341c\";\n linkage.push({ type: scheme, content: avatar });\n\n // The owner of this name\n const owner = (this._resolvedAddress || await this.getAddress());\n\n const comps = (match[2] || \"\").split(\"/\");\n if (comps.length !== 2) { return null; }\n\n const addr = await this.provider.formatter.address(comps[0]);\n const tokenId = hexZeroPad(BigNumber.from(comps[1]).toHexString(), 32);\n\n // Check that this account owns the token\n if (scheme === \"erc721\") {\n // ownerOf(uint256 tokenId)\n const tokenOwner = this.provider.formatter.callAddress(await this.provider.call({\n to: addr, data: hexConcat([ \"0x6352211e\", tokenId ])\n }));\n if (owner !== tokenOwner) { return null; }\n linkage.push({ type: \"owner\", content: tokenOwner });\n\n } else if (scheme === \"erc1155\") {\n // balanceOf(address owner, uint256 tokenId)\n const balance = BigNumber.from(await this.provider.call({\n to: addr, data: hexConcat([ \"0x00fdd58e\", hexZeroPad(owner, 32), tokenId ])\n }));\n if (balance.isZero()) { return null; }\n linkage.push({ type: \"balance\", content: balance.toString() });\n }\n\n // Call the token contract for the metadata URL\n const tx = {\n to: this.provider.formatter.address(comps[0]),\n data: hexConcat([ selector, tokenId ])\n };\n\n let metadataUrl = _parseString(await this.provider.call(tx), 0);\n if (metadataUrl == null) { return null; }\n linkage.push({ type: \"metadata-url-base\", content: metadataUrl });\n\n // ERC-1155 allows a generic {id} in the URL\n if (scheme === \"erc1155\") {\n metadataUrl = metadataUrl.replace(\"{id}\", tokenId.substring(2));\n linkage.push({ type: \"metadata-url-expanded\", content: metadataUrl });\n }\n\n // Transform IPFS metadata links\n if (metadataUrl.match(/^ipfs:/i)) {\n metadataUrl = getIpfsLink(metadataUrl);\n }\n\n linkage.push({ type: \"metadata-url\", content: metadataUrl });\n\n // Get the token metadata\n const metadata = await fetchJson(metadataUrl);\n if (!metadata) { return null; }\n linkage.push({ type: \"metadata\", content: JSON.stringify(metadata) });\n\n // Pull the image URL out\n let imageUrl = metadata.image;\n if (typeof(imageUrl) !== \"string\") { return null; }\n\n if (imageUrl.match(/^(https:\\/\\/|data:)/i)) {\n // Allow\n } else {\n // Transform IPFS link to gateway\n const ipfs = imageUrl.match(matcherIpfs);\n if (ipfs == null) { return null; }\n\n linkage.push({ type: \"url-ipfs\", content: imageUrl });\n imageUrl = getIpfsLink(imageUrl);\n }\n\n linkage.push({ type: \"url\", content: imageUrl });\n\n return { linkage, url: imageUrl };\n }\n }\n }\n } catch (error) { }\n\n return null;\n }\n\n async getContentHash(): Promise {\n\n // keccak256(\"contenthash()\")\n const hexBytes = await this._fetchBytes(\"0xbc1c58d1\");\n\n // No contenthash\n if (hexBytes == null || hexBytes === \"0x\") { return null; }\n\n // IPFS (CID: 1, Type: DAG-PB)\n const ipfs = hexBytes.match(/^0xe3010170(([0-9a-f][0-9a-f])([0-9a-f][0-9a-f])([0-9a-f]*))$/);\n if (ipfs) {\n const length = parseInt(ipfs[3], 16);\n if (ipfs[4].length === length * 2) {\n return \"ipfs:/\\/\" + Base58.encode(\"0x\" + ipfs[1]);\n }\n }\n\n // IPNS (CID: 1, Type: libp2p-key)\n const ipns = hexBytes.match(/^0xe5010172(([0-9a-f][0-9a-f])([0-9a-f][0-9a-f])([0-9a-f]*))$/);\n if (ipns) {\n const length = parseInt(ipns[3], 16);\n if (ipns[4].length === length * 2) {\n return \"ipns:/\\/\" + Base58.encode(\"0x\" + ipns[1]);\n }\n }\n\n // Swarm (CID: 1, Type: swarm-manifest; hash/length hard-coded to keccak256/32)\n const swarm = hexBytes.match(/^0xe40101fa011b20([0-9a-f]*)$/)\n if (swarm) {\n if (swarm[1].length === (32 * 2)) {\n return \"bzz:/\\/\" + swarm[1]\n }\n }\n\n const skynet = hexBytes.match(/^0x90b2c605([0-9a-f]*)$/);\n if (skynet) {\n if (skynet[1].length === (34 * 2)) {\n // URL Safe base64; https://datatracker.ietf.org/doc/html/rfc4648#section-5\n const urlSafe: Record = { \"=\": \"\", \"+\": \"-\", \"/\": \"_\" };\n const hash = base64Encode(\"0x\" + skynet[1]).replace(/[=+\\/]/g, (a) => (urlSafe[a]));\n return \"sia:/\\/\" + hash;\n }\n }\n\n return logger.throwError(`invalid or unsupported content hash data`, Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"getContentHash()\",\n data: hexBytes\n });\n }\n\n async getText(key: string): Promise {\n\n // The key encoded as parameter to fetchBytes\n let keyBytes = toUtf8Bytes(key);\n\n // The nodehash consumes the first slot, so the string pointer targets\n // offset 64, with the length at offset 64 and data starting at offset 96\n keyBytes = concat([ bytes32ify(64), bytes32ify(keyBytes.length), keyBytes ]);\n\n // Pad to word-size (32 bytes)\n if ((keyBytes.length % 32) !== 0) {\n keyBytes = concat([ keyBytes, hexZeroPad(\"0x\", 32 - (key.length % 32)) ])\n }\n\n const hexBytes = await this._fetchBytes(\"0x59d1d43c\", hexlify(keyBytes));\n if (hexBytes == null || hexBytes === \"0x\") { return null; }\n\n return toUtf8String(hexBytes);\n }\n}\n\nlet defaultFormatter: Formatter = null;\n\nlet nextPollId = 1;\n\nexport class BaseProvider extends Provider implements EnsProvider {\n _networkPromise: Promise;\n _network: Network;\n\n _events: Array;\n\n formatter: Formatter;\n\n // To help mitigate the eventually consistent nature of the blockchain\n // we keep a mapping of events we emit. If we emit an event X, we expect\n // that a user should be able to query for that event in the callback,\n // if the node returns null, we stall the response until we get back a\n // meaningful value, since we may be hitting a re-org, or a node that\n // has not indexed the event yet.\n // Events:\n // - t:{hash} - Transaction hash\n // - b:{hash} - BlockHash\n // - block - The most recent emitted block\n _emitted: { [ eventName: string ]: number | \"pending\" };\n\n _pollingInterval: number;\n _poller: NodeJS.Timer;\n _bootstrapPoll: NodeJS.Timer;\n\n _lastBlockNumber: number;\n _maxFilterBlockRange: number;\n\n _fastBlockNumber: number;\n _fastBlockNumberPromise: Promise;\n _fastQueryDate: number;\n\n _maxInternalBlockNumber: number;\n _internalBlockNumber: Promise<{ blockNumber: number, reqTime: number, respTime: number }>;\n\n readonly anyNetwork: boolean;\n\n disableCcipRead: boolean;\n\n\n /**\n * ready\n *\n * A Promise that resolves only once the provider is ready.\n *\n * Sub-classes that call the super with a network without a chainId\n * MUST set this. Standard named networks have a known chainId.\n *\n */\n\n constructor(network: Networkish | Promise) {\n super();\n\n // Events being listened to\n this._events = [];\n\n this._emitted = { block: -2 };\n\n this.disableCcipRead = false;\n\n this.formatter = new.target.getFormatter();\n\n // If network is any, this Provider allows the underlying\n // network to change dynamically, and we auto-detect the\n // current network\n defineReadOnly(this, \"anyNetwork\", (network === \"any\"));\n if (this.anyNetwork) { network = this.detectNetwork(); }\n\n if (network instanceof Promise) {\n this._networkPromise = network;\n\n // Squash any \"unhandled promise\" errors; that do not need to be handled\n network.catch((error) => { });\n\n // Trigger initial network setting (async)\n this._ready().catch((error) => { });\n\n } else {\n const knownNetwork = getStatic<(network: Networkish) => Network>(new.target, \"getNetwork\")(network);\n if (knownNetwork) {\n defineReadOnly(this, \"_network\", knownNetwork);\n this.emit(\"network\", knownNetwork, null);\n\n } else {\n logger.throwArgumentError(\"invalid network\", \"network\", network);\n }\n }\n\n this._maxInternalBlockNumber = -1024;\n\n this._lastBlockNumber = -2;\n this._maxFilterBlockRange = 10;\n\n this._pollingInterval = 4000;\n\n this._fastQueryDate = 0;\n }\n\n async _ready(): Promise {\n if (this._network == null) {\n let network: Network = null;\n if (this._networkPromise) {\n try {\n network = await this._networkPromise;\n } catch (error) { }\n }\n\n // Try the Provider's network detection (this MUST throw if it cannot)\n if (network == null) {\n network = await this.detectNetwork();\n }\n\n // This should never happen; every Provider sub-class should have\n // suggested a network by here (or have thrown).\n if (!network) {\n logger.throwError(\"no network detected\", Logger.errors.UNKNOWN_ERROR, { });\n }\n\n // Possible this call stacked so do not call defineReadOnly again\n if (this._network == null) {\n if (this.anyNetwork) {\n this._network = network;\n } else {\n defineReadOnly(this, \"_network\", network);\n }\n this.emit(\"network\", network, null);\n }\n }\n\n return this._network;\n }\n\n // This will always return the most recently established network.\n // For \"any\", this can change (a \"network\" event is emitted before\n // any change is reflected); otherwise this cannot change\n get ready(): Promise {\n return poll(() => {\n return this._ready().then((network) => {\n return network;\n }, (error) => {\n // If the network isn't running yet, we will wait\n if (error.code === Logger.errors.NETWORK_ERROR && error.event === \"noNetwork\") {\n return undefined;\n }\n throw error;\n });\n });\n }\n\n // @TODO: Remove this and just create a singleton formatter\n static getFormatter(): Formatter {\n if (defaultFormatter == null) {\n defaultFormatter = new Formatter();\n }\n return defaultFormatter;\n }\n\n // @TODO: Remove this and just use getNetwork\n static getNetwork(network: Networkish): Network {\n return getNetwork((network == null) ? \"homestead\": network);\n }\n\n async ccipReadFetch(tx: Transaction, calldata: string, urls: Array): Promise {\n if (this.disableCcipRead || urls.length === 0) { return null; }\n\n const sender = tx.to.toLowerCase();\n const data = calldata.toLowerCase();\n\n const errorMessages: Array = [ ];\n\n for (let i = 0; i < urls.length; i++) {\n const url = urls[i];\n\n // URL expansion\n const href = url.replace(\"{sender}\", sender).replace(\"{data}\", data);\n\n // If no {data} is present, use POST; otherwise GET\n const json: string | null = (url.indexOf(\"{data}\") >= 0) ? null: JSON.stringify({ data, sender });\n\n const result = await fetchJson({ url: href, errorPassThrough: true }, json, (value, response) => {\n value.status = response.statusCode;\n return value;\n });\n\n if (result.data) { return result.data; }\n\n const errorMessage = (result.message || \"unknown error\");\n\n // 4xx indicates the result is not present; stop\n if (result.status >= 400 && result.status < 500) {\n return logger.throwError(`response not found during CCIP fetch: ${ errorMessage }`, Logger.errors.SERVER_ERROR, { url, errorMessage });\n }\n\n // 5xx indicates server issue; try the next url\n errorMessages.push(errorMessage);\n }\n\n return logger.throwError(`error encountered during CCIP fetch: ${ errorMessages.map((m) => JSON.stringify(m)).join(\", \") }`, Logger.errors.SERVER_ERROR, {\n urls, errorMessages\n });\n }\n\n // Fetches the blockNumber, but will reuse any result that is less\n // than maxAge old or has been requested since the last request\n async _getInternalBlockNumber(maxAge: number): Promise {\n await this._ready();\n\n // Allowing stale data up to maxAge old\n if (maxAge > 0) {\n\n // While there are pending internal block requests...\n while (this._internalBlockNumber) {\n\n // ...\"remember\" which fetch we started with\n const internalBlockNumber = this._internalBlockNumber;\n\n try {\n // Check the result is not too stale\n const result = await internalBlockNumber;\n if ((getTime() - result.respTime) <= maxAge) {\n return result.blockNumber;\n }\n\n // Too old; fetch a new value\n break;\n\n } catch(error) {\n\n // The fetch rejected; if we are the first to get the\n // rejection, drop through so we replace it with a new\n // fetch; all others blocked will then get that fetch\n // which won't match the one they \"remembered\" and loop\n if (this._internalBlockNumber === internalBlockNumber) {\n break;\n }\n }\n }\n }\n\n const reqTime = getTime();\n\n const checkInternalBlockNumber = resolveProperties({\n blockNumber: this.perform(\"getBlockNumber\", { }),\n networkError: this.getNetwork().then((network) => (null), (error) => (error))\n }).then(({ blockNumber, networkError }) => {\n if (networkError) {\n // Unremember this bad internal block number\n if (this._internalBlockNumber === checkInternalBlockNumber) {\n this._internalBlockNumber = null;\n }\n throw networkError;\n }\n\n const respTime = getTime();\n\n blockNumber = BigNumber.from(blockNumber).toNumber();\n if (blockNumber < this._maxInternalBlockNumber) { blockNumber = this._maxInternalBlockNumber; }\n\n this._maxInternalBlockNumber = blockNumber;\n this._setFastBlockNumber(blockNumber); // @TODO: Still need this?\n return { blockNumber, reqTime, respTime };\n });\n\n this._internalBlockNumber = checkInternalBlockNumber;\n\n // Swallow unhandled exceptions; if needed they are handled else where\n checkInternalBlockNumber.catch((error) => {\n // Don't null the dead (rejected) fetch, if it has already been updated\n if (this._internalBlockNumber === checkInternalBlockNumber) {\n this._internalBlockNumber = null;\n }\n });\n\n return (await checkInternalBlockNumber).blockNumber;\n }\n\n async poll(): Promise {\n const pollId = nextPollId++;\n\n // Track all running promises, so we can trigger a post-poll once they are complete\n const runners: Array> = [];\n\n let blockNumber: number = null;\n try {\n blockNumber = await this._getInternalBlockNumber(100 + this.pollingInterval / 2);\n } catch (error) {\n this.emit(\"error\", error);\n return;\n }\n this._setFastBlockNumber(blockNumber);\n\n // Emit a poll event after we have the latest (fast) block number\n this.emit(\"poll\", pollId, blockNumber);\n\n // If the block has not changed, meh.\n if (blockNumber === this._lastBlockNumber) {\n this.emit(\"didPoll\", pollId);\n return;\n }\n\n // First polling cycle, trigger a \"block\" events\n if (this._emitted.block === -2) {\n this._emitted.block = blockNumber - 1;\n }\n\n if (Math.abs(((this._emitted.block)) - blockNumber) > 1000) {\n logger.warn(`network block skew detected; skipping block events (emitted=${ this._emitted.block } blockNumber${ blockNumber })`);\n this.emit(\"error\", logger.makeError(\"network block skew detected\", Logger.errors.NETWORK_ERROR, {\n blockNumber: blockNumber,\n event: \"blockSkew\",\n previousBlockNumber: this._emitted.block\n }));\n this.emit(\"block\", blockNumber);\n\n } else {\n // Notify all listener for each block that has passed\n for (let i = (this._emitted.block) + 1; i <= blockNumber; i++) {\n this.emit(\"block\", i);\n }\n }\n\n // The emitted block was updated, check for obsolete events\n if ((this._emitted.block) !== blockNumber) {\n this._emitted.block = blockNumber;\n\n Object.keys(this._emitted).forEach((key) => {\n // The block event does not expire\n if (key === \"block\") { return; }\n\n // The block we were at when we emitted this event\n const eventBlockNumber = this._emitted[key];\n\n // We cannot garbage collect pending transactions or blocks here\n // They should be garbage collected by the Provider when setting\n // \"pending\" events\n if (eventBlockNumber === \"pending\") { return; }\n\n // Evict any transaction hashes or block hashes over 12 blocks\n // old, since they should not return null anyways\n if (blockNumber - eventBlockNumber > 12) {\n delete this._emitted[key];\n }\n });\n }\n\n // First polling cycle\n if (this._lastBlockNumber === -2) {\n this._lastBlockNumber = blockNumber - 1;\n }\n // Find all transaction hashes we are waiting on\n this._events.forEach((event) => {\n switch (event.type) {\n case \"tx\": {\n const hash = event.hash;\n let runner = this.getTransactionReceipt(hash).then((receipt) => {\n if (!receipt || receipt.blockNumber == null) { return null; }\n this._emitted[\"t:\" + hash] = receipt.blockNumber;\n this.emit(hash, receipt);\n return null;\n }).catch((error: Error) => { this.emit(\"error\", error); });\n\n runners.push(runner);\n\n break;\n }\n\n case \"filter\": {\n // We only allow a single getLogs to be in-flight at a time\n if (!event._inflight) {\n event._inflight = true;\n\n // This is the first filter for this event, so we want to\n // restrict events to events that happened no earlier than now\n if (event._lastBlockNumber === -2) {\n event._lastBlockNumber = blockNumber - 1;\n }\n\n // Filter from the last *known* event; due to load-balancing\n // and some nodes returning updated block numbers before\n // indexing events, a logs result with 0 entries cannot be\n // trusted and we must retry a range which includes it again\n const filter = event.filter;\n filter.fromBlock = event._lastBlockNumber + 1;\n filter.toBlock = blockNumber;\n\n // Prevent fitler ranges from growing too wild, since it is quite\n // likely there just haven't been any events to move the lastBlockNumber.\n const minFromBlock = filter.toBlock - this._maxFilterBlockRange;\n if (minFromBlock > filter.fromBlock) { filter.fromBlock = minFromBlock; }\n\n if (filter.fromBlock < 0) { filter.fromBlock = 0; }\n\n const runner = this.getLogs(filter).then((logs) => {\n // Allow the next getLogs\n event._inflight = false;\n\n if (logs.length === 0) { return; }\n\n logs.forEach((log: Log) => {\n // Only when we get an event for a given block number\n // can we trust the events are indexed\n if (log.blockNumber > event._lastBlockNumber) {\n event._lastBlockNumber = log.blockNumber;\n }\n\n // Make sure we stall requests to fetch blocks and txs\n this._emitted[\"b:\" + log.blockHash] = log.blockNumber;\n this._emitted[\"t:\" + log.transactionHash] = log.blockNumber;\n\n this.emit(filter, log);\n });\n }).catch((error: Error) => {\n this.emit(\"error\", error);\n\n // Allow another getLogs (the range was not updated)\n event._inflight = false;\n });\n runners.push(runner);\n }\n\n break;\n }\n }\n });\n\n this._lastBlockNumber = blockNumber;\n\n // Once all events for this loop have been processed, emit \"didPoll\"\n Promise.all(runners).then(() => {\n this.emit(\"didPoll\", pollId);\n }).catch((error) => { this.emit(\"error\", error); });\n\n return;\n }\n\n // Deprecated; do not use this\n resetEventsBlock(blockNumber: number): void {\n this._lastBlockNumber = blockNumber - 1;\n if (this.polling) { this.poll(); }\n }\n\n get network(): Network {\n return this._network;\n }\n\n // This method should query the network if the underlying network\n // can change, such as when connected to a JSON-RPC backend\n async detectNetwork(): Promise {\n return logger.throwError(\"provider does not support network detection\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"provider.detectNetwork\"\n });\n }\n\n async getNetwork(): Promise {\n const network = await this._ready();\n\n // Make sure we are still connected to the same network; this is\n // only an external call for backends which can have the underlying\n // network change spontaneously\n const currentNetwork = await this.detectNetwork();\n if (network.chainId !== currentNetwork.chainId) {\n\n // We are allowing network changes, things can get complex fast;\n // make sure you know what you are doing if you use \"any\"\n if (this.anyNetwork) {\n this._network = currentNetwork;\n\n // Reset all internal block number guards and caches\n this._lastBlockNumber = -2;\n this._fastBlockNumber = null;\n this._fastBlockNumberPromise = null;\n this._fastQueryDate = 0;\n this._emitted.block = -2;\n this._maxInternalBlockNumber = -1024;\n this._internalBlockNumber = null;\n\n // The \"network\" event MUST happen before this method resolves\n // so any events have a chance to unregister, so we stall an\n // additional event loop before returning from /this/ call\n this.emit(\"network\", currentNetwork, network);\n await stall(0);\n\n return this._network;\n }\n\n const error = logger.makeError(\"underlying network changed\", Logger.errors.NETWORK_ERROR, {\n event: \"changed\",\n network: network,\n detectedNetwork: currentNetwork\n });\n\n this.emit(\"error\", error);\n throw error;\n }\n\n return network;\n }\n\n get blockNumber(): number {\n this._getInternalBlockNumber(100 + this.pollingInterval / 2).then((blockNumber) => {\n this._setFastBlockNumber(blockNumber);\n }, (error) => { });\n\n return (this._fastBlockNumber != null) ? this._fastBlockNumber: -1;\n }\n\n get polling(): boolean {\n return (this._poller != null);\n }\n\n set polling(value: boolean) {\n if (value && !this._poller) {\n this._poller = setInterval(() => { this.poll(); }, this.pollingInterval);\n\n if (!this._bootstrapPoll) {\n this._bootstrapPoll = setTimeout(() => {\n this.poll();\n\n // We block additional polls until the polling interval\n // is done, to prevent overwhelming the poll function\n this._bootstrapPoll = setTimeout(() => {\n // If polling was disabled, something may require a poke\n // since starting the bootstrap poll and it was disabled\n if (!this._poller) { this.poll(); }\n\n // Clear out the bootstrap so we can do another\n this._bootstrapPoll = null;\n }, this.pollingInterval);\n }, 0);\n }\n\n } else if (!value && this._poller) {\n clearInterval(this._poller);\n this._poller = null;\n }\n }\n\n get pollingInterval(): number {\n return this._pollingInterval;\n }\n\n set pollingInterval(value: number) {\n if (typeof(value) !== \"number\" || value <= 0 || parseInt(String(value)) != value) {\n throw new Error(\"invalid polling interval\");\n }\n\n this._pollingInterval = value;\n\n if (this._poller) {\n clearInterval(this._poller);\n this._poller = setInterval(() => { this.poll(); }, this._pollingInterval);\n }\n }\n\n _getFastBlockNumber(): Promise {\n const now = getTime();\n\n // Stale block number, request a newer value\n if ((now - this._fastQueryDate) > 2 * this._pollingInterval) {\n this._fastQueryDate = now;\n this._fastBlockNumberPromise = this.getBlockNumber().then((blockNumber) => {\n if (this._fastBlockNumber == null || blockNumber > this._fastBlockNumber) {\n this._fastBlockNumber = blockNumber;\n }\n return this._fastBlockNumber;\n });\n }\n\n return this._fastBlockNumberPromise;\n }\n\n _setFastBlockNumber(blockNumber: number): void {\n // Older block, maybe a stale request\n if (this._fastBlockNumber != null && blockNumber < this._fastBlockNumber) { return; }\n\n // Update the time we updated the blocknumber\n this._fastQueryDate = getTime();\n\n // Newer block number, use it\n if (this._fastBlockNumber == null || blockNumber > this._fastBlockNumber) {\n this._fastBlockNumber = blockNumber;\n this._fastBlockNumberPromise = Promise.resolve(blockNumber);\n }\n }\n\n async waitForTransaction(transactionHash: string, confirmations?: number, timeout?: number): Promise {\n return this._waitForTransaction(transactionHash, (confirmations == null) ? 1: confirmations, timeout || 0, null);\n }\n\n async _waitForTransaction(transactionHash: string, confirmations: number, timeout: number, replaceable: { data: string, from: string, nonce: number, to: string, value: BigNumber, startBlock: number }): Promise {\n const receipt = await this.getTransactionReceipt(transactionHash);\n\n // Receipt is already good\n if ((receipt ? receipt.confirmations: 0) >= confirmations) { return receipt; }\n\n // Poll until the receipt is good...\n return new Promise((resolve, reject) => {\n const cancelFuncs: Array<() => void> = [];\n\n let done = false;\n const alreadyDone = function() {\n if (done) { return true; }\n done = true;\n cancelFuncs.forEach((func) => { func(); });\n return false;\n };\n\n const minedHandler = (receipt: TransactionReceipt) => {\n if (receipt.confirmations < confirmations) { return; }\n if (alreadyDone()) { return; }\n resolve(receipt);\n }\n this.on(transactionHash, minedHandler);\n cancelFuncs.push(() => { this.removeListener(transactionHash, minedHandler); });\n\n if (replaceable) {\n let lastBlockNumber = replaceable.startBlock;\n let scannedBlock: number = null;\n const replaceHandler = async (blockNumber: number) => {\n if (done) { return; }\n\n // Wait 1 second; this is only used in the case of a fault, so\n // we will trade off a little bit of latency for more consistent\n // results and fewer JSON-RPC calls\n await stall(1000);\n\n this.getTransactionCount(replaceable.from).then(async (nonce) => {\n if (done) { return; }\n\n if (nonce <= replaceable.nonce) {\n lastBlockNumber = blockNumber;\n\n } else {\n // First check if the transaction was mined\n {\n const mined = await this.getTransaction(transactionHash);\n if (mined && mined.blockNumber != null) { return; }\n }\n\n // First time scanning. We start a little earlier for some\n // wiggle room here to handle the eventually consistent nature\n // of blockchain (e.g. the getTransactionCount was for a\n // different block)\n if (scannedBlock == null) {\n scannedBlock = lastBlockNumber - 3;\n if (scannedBlock < replaceable.startBlock) {\n scannedBlock = replaceable.startBlock;\n }\n }\n\n while (scannedBlock <= blockNumber) {\n if (done) { return; }\n\n const block = await this.getBlockWithTransactions(scannedBlock);\n for (let ti = 0; ti < block.transactions.length; ti++) {\n const tx = block.transactions[ti];\n\n // Successfully mined!\n if (tx.hash === transactionHash) { return; }\n\n // Matches our transaction from and nonce; its a replacement\n if (tx.from === replaceable.from && tx.nonce === replaceable.nonce) {\n if (done) { return; }\n\n // Get the receipt of the replacement\n const receipt = await this.waitForTransaction(tx.hash, confirmations);\n\n // Already resolved or rejected (prolly a timeout)\n if (alreadyDone()) { return; }\n\n // The reason we were replaced\n let reason = \"replaced\";\n if (tx.data === replaceable.data && tx.to === replaceable.to && tx.value.eq(replaceable.value)) {\n reason = \"repriced\";\n } else if (tx.data === \"0x\" && tx.from === tx.to && tx.value.isZero()) {\n reason = \"cancelled\"\n }\n\n // Explain why we were replaced\n reject(logger.makeError(\"transaction was replaced\", Logger.errors.TRANSACTION_REPLACED, {\n cancelled: (reason === \"replaced\" || reason === \"cancelled\"),\n reason,\n replacement: this._wrapTransaction(tx),\n hash: transactionHash,\n receipt\n }));\n\n return;\n }\n }\n scannedBlock++;\n }\n }\n\n if (done) { return; }\n this.once(\"block\", replaceHandler);\n\n }, (error) => {\n if (done) { return; }\n this.once(\"block\", replaceHandler);\n });\n };\n\n if (done) { return; }\n this.once(\"block\", replaceHandler);\n\n cancelFuncs.push(() => {\n this.removeListener(\"block\", replaceHandler);\n });\n }\n\n if (typeof(timeout) === \"number\" && timeout > 0) {\n const timer = setTimeout(() => {\n if (alreadyDone()) { return; }\n reject(logger.makeError(\"timeout exceeded\", Logger.errors.TIMEOUT, { timeout: timeout }));\n }, timeout);\n if (timer.unref) { timer.unref(); }\n\n cancelFuncs.push(() => { clearTimeout(timer); });\n }\n });\n }\n\n async getBlockNumber(): Promise {\n return this._getInternalBlockNumber(0);\n }\n\n async getGasPrice(): Promise {\n await this.getNetwork();\n\n const result = await this.perform(\"getGasPrice\", { });\n try {\n return BigNumber.from(result);\n } catch (error) {\n return logger.throwError(\"bad result from backend\", Logger.errors.SERVER_ERROR, {\n method: \"getGasPrice\",\n result, error\n });\n }\n }\n\n async getBalance(addressOrName: string | Promise, blockTag?: BlockTag | Promise): Promise {\n await this.getNetwork();\n const params = await resolveProperties({\n address: this._getAddress(addressOrName),\n blockTag: this._getBlockTag(blockTag)\n });\n\n const result = await this.perform(\"getBalance\", params);\n try {\n return BigNumber.from(result);\n } catch (error) {\n return logger.throwError(\"bad result from backend\", Logger.errors.SERVER_ERROR, {\n method: \"getBalance\",\n params, result, error\n });\n }\n }\n\n async getTransactionCount(addressOrName: string | Promise, blockTag?: BlockTag | Promise): Promise {\n await this.getNetwork();\n const params = await resolveProperties({\n address: this._getAddress(addressOrName),\n blockTag: this._getBlockTag(blockTag)\n });\n\n const result = await this.perform(\"getTransactionCount\", params);\n try {\n return BigNumber.from(result).toNumber();\n } catch (error) {\n return logger.throwError(\"bad result from backend\", Logger.errors.SERVER_ERROR, {\n method: \"getTransactionCount\",\n params, result, error\n });\n }\n }\n\n async getCode(addressOrName: string | Promise, blockTag?: BlockTag | Promise): Promise {\n await this.getNetwork();\n const params = await resolveProperties({\n address: this._getAddress(addressOrName),\n blockTag: this._getBlockTag(blockTag)\n });\n\n const result = await this.perform(\"getCode\", params);\n try {\n return hexlify(result);\n } catch (error) {\n return logger.throwError(\"bad result from backend\", Logger.errors.SERVER_ERROR, {\n method: \"getCode\",\n params, result, error\n });\n }\n }\n\n async getStorageAt(addressOrName: string | Promise, position: BigNumberish | Promise, blockTag?: BlockTag | Promise): Promise {\n await this.getNetwork();\n const params = await resolveProperties({\n address: this._getAddress(addressOrName),\n blockTag: this._getBlockTag(blockTag),\n position: Promise.resolve(position).then((p) => hexValue(p))\n });\n const result = await this.perform(\"getStorageAt\", params);\n try {\n return hexlify(result);\n } catch (error) {\n return logger.throwError(\"bad result from backend\", Logger.errors.SERVER_ERROR, {\n method: \"getStorageAt\",\n params, result, error\n });\n }\n }\n\n // This should be called by any subclass wrapping a TransactionResponse\n _wrapTransaction(tx: Transaction, hash?: string, startBlock?: number): TransactionResponse {\n if (hash != null && hexDataLength(hash) !== 32) { throw new Error(\"invalid response - sendTransaction\"); }\n\n const result = tx;\n\n // Check the hash we expect is the same as the hash the server reported\n if (hash != null && tx.hash !== hash) {\n logger.throwError(\"Transaction hash mismatch from Provider.sendTransaction.\", Logger.errors.UNKNOWN_ERROR, { expectedHash: tx.hash, returnedHash: hash });\n }\n\n result.wait = async (confirms?: number, timeout?: number) => {\n if (confirms == null) { confirms = 1; }\n if (timeout == null) { timeout = 0; }\n\n // Get the details to detect replacement\n let replacement = undefined;\n if (confirms !== 0 && startBlock != null) {\n replacement = {\n data: tx.data,\n from: tx.from,\n nonce: tx.nonce,\n to: tx.to,\n value: tx.value,\n startBlock\n };\n }\n\n const receipt = await this._waitForTransaction(tx.hash, confirms, timeout, replacement);\n if (receipt == null && confirms === 0) { return null; }\n\n // No longer pending, allow the polling loop to garbage collect this\n this._emitted[\"t:\" + tx.hash] = receipt.blockNumber;\n\n if (receipt.status === 0) {\n logger.throwError(\"transaction failed\", Logger.errors.CALL_EXCEPTION, {\n transactionHash: tx.hash,\n transaction: tx,\n receipt: receipt\n });\n }\n return receipt;\n };\n\n return result;\n }\n\n async sendTransaction(signedTransaction: string | Promise): Promise {\n await this.getNetwork();\n const hexTx = await Promise.resolve(signedTransaction).then(t => hexlify(t));\n const tx = this.formatter.transaction(signedTransaction);\n if (tx.confirmations == null) { tx.confirmations = 0; }\n const blockNumber = await this._getInternalBlockNumber(100 + 2 * this.pollingInterval);\n try {\n const hash = await this.perform(\"sendTransaction\", { signedTransaction: hexTx });\n return this._wrapTransaction(tx, hash, blockNumber);\n } catch (error) {\n (error).transaction = tx;\n (error).transactionHash = tx.hash;\n throw error;\n }\n }\n\n async _getTransactionRequest(transaction: Deferrable): Promise {\n const values: any = await transaction;\n\n const tx: any = { };\n\n [\"from\", \"to\"].forEach((key) => {\n if (values[key] == null) { return; }\n tx[key] = Promise.resolve(values[key]).then((v) => (v ? this._getAddress(v): null))\n });\n\n [\"gasLimit\", \"gasPrice\", \"maxFeePerGas\", \"maxPriorityFeePerGas\", \"value\"].forEach((key) => {\n if (values[key] == null) { return; }\n tx[key] = Promise.resolve(values[key]).then((v) => (v ? BigNumber.from(v): null));\n });\n\n [\"type\"].forEach((key) => {\n if (values[key] == null) { return; }\n tx[key] = Promise.resolve(values[key]).then((v) => ((v != null) ? v: null));\n });\n\n if (values.accessList) {\n tx.accessList = this.formatter.accessList(values.accessList);\n }\n\n [\"data\"].forEach((key) => {\n if (values[key] == null) { return; }\n tx[key] = Promise.resolve(values[key]).then((v) => (v ? hexlify(v): null));\n });\n\n return this.formatter.transactionRequest(await resolveProperties(tx));\n }\n\n async _getFilter(filter: Filter | FilterByBlockHash | Promise): Promise {\n filter = await filter;\n\n const result: any = { };\n\n if (filter.address != null) {\n result.address = this._getAddress(filter.address);\n }\n\n [\"blockHash\", \"topics\"].forEach((key) => {\n if ((filter)[key] == null) { return; }\n result[key] = (filter)[key];\n });\n\n [\"fromBlock\", \"toBlock\"].forEach((key) => {\n if ((filter)[key] == null) { return; }\n result[key] = this._getBlockTag((filter)[key]);\n });\n\n return this.formatter.filter(await resolveProperties(result));\n }\n\n async _call(transaction: TransactionRequest, blockTag: BlockTag, attempt: number): Promise {\n if (attempt >= MAX_CCIP_REDIRECTS) {\n logger.throwError(\"CCIP read exceeded maximum redirections\", Logger.errors.SERVER_ERROR, {\n redirects: attempt, transaction\n });\n }\n\n const txSender = transaction.to;\n\n const result = await this.perform(\"call\", { transaction, blockTag });\n\n // CCIP Read request via OffchainLookup(address,string[],bytes,bytes4,bytes)\n if (attempt >= 0 && blockTag === \"latest\" && txSender != null && result.substring(0, 10) === \"0x556f1830\" && (hexDataLength(result) % 32 === 4)) {\n try {\n const data = hexDataSlice(result, 4);\n\n // Check the sender of the OffchainLookup matches the transaction\n const sender = hexDataSlice(data, 0, 32);\n if (!BigNumber.from(sender).eq(txSender)) {\n logger.throwError(\"CCIP Read sender did not match\", Logger.errors.CALL_EXCEPTION, {\n name: \"OffchainLookup\",\n signature: \"OffchainLookup(address,string[],bytes,bytes4,bytes)\",\n transaction, data: result\n });\n }\n\n // Read the URLs from the response\n const urls: Array = [];\n const urlsOffset = BigNumber.from(hexDataSlice(data, 32, 64)).toNumber();\n const urlsLength = BigNumber.from(hexDataSlice(data, urlsOffset, urlsOffset + 32)).toNumber();\n const urlsData = hexDataSlice(data, urlsOffset + 32);\n for (let u = 0; u < urlsLength; u++) {\n const url = _parseString(urlsData, u * 32);\n if (url == null) {\n logger.throwError(\"CCIP Read contained corrupt URL string\", Logger.errors.CALL_EXCEPTION, {\n name: \"OffchainLookup\",\n signature: \"OffchainLookup(address,string[],bytes,bytes4,bytes)\",\n transaction, data: result\n });\n }\n urls.push(url);\n }\n\n // Get the CCIP calldata to forward\n const calldata = _parseBytes(data, 64);\n\n // Get the callbackSelector (bytes4)\n if (!BigNumber.from(hexDataSlice(data, 100, 128)).isZero()) {\n logger.throwError(\"CCIP Read callback selector included junk\", Logger.errors.CALL_EXCEPTION, {\n name: \"OffchainLookup\",\n signature: \"OffchainLookup(address,string[],bytes,bytes4,bytes)\",\n transaction, data: result\n });\n }\n const callbackSelector = hexDataSlice(data, 96, 100);\n\n // Get the extra data to send back to the contract as context\n const extraData = _parseBytes(data, 128);\n\n const ccipResult = await this.ccipReadFetch(transaction, calldata, urls);\n if (ccipResult == null) {\n logger.throwError(\"CCIP Read disabled or provided no URLs\", Logger.errors.CALL_EXCEPTION, {\n name: \"OffchainLookup\",\n signature: \"OffchainLookup(address,string[],bytes,bytes4,bytes)\",\n transaction, data: result\n });\n }\n\n const tx = {\n to: txSender,\n data: hexConcat([ callbackSelector, encodeBytes([ ccipResult, extraData ]) ])\n };\n\n return this._call(tx, blockTag, attempt + 1);\n\n } catch (error) {\n if (error.code === Logger.errors.SERVER_ERROR) { throw error; }\n }\n }\n\n try {\n return hexlify(result);\n } catch (error) {\n return logger.throwError(\"bad result from backend\", Logger.errors.SERVER_ERROR, {\n method: \"call\",\n params: { transaction, blockTag }, result, error\n });\n }\n\n }\n\n async call(transaction: Deferrable, blockTag?: BlockTag | Promise): Promise {\n await this.getNetwork();\n const resolved = await resolveProperties({\n transaction: this._getTransactionRequest(transaction),\n blockTag: this._getBlockTag(blockTag),\n ccipReadEnabled: Promise.resolve(transaction.ccipReadEnabled)\n });\n return this._call(resolved.transaction, resolved.blockTag, resolved.ccipReadEnabled ? 0: -1);\n }\n\n async estimateGas(transaction: Deferrable): Promise {\n await this.getNetwork();\n const params = await resolveProperties({\n transaction: this._getTransactionRequest(transaction)\n });\n\n const result = await this.perform(\"estimateGas\", params);\n try {\n return BigNumber.from(result);\n } catch (error) {\n return logger.throwError(\"bad result from backend\", Logger.errors.SERVER_ERROR, {\n method: \"estimateGas\",\n params, result, error\n });\n }\n }\n\n async _getAddress(addressOrName: string | Promise): Promise {\n addressOrName = await addressOrName;\n if (typeof(addressOrName) !== \"string\") {\n logger.throwArgumentError(\"invalid address or ENS name\", \"name\", addressOrName);\n }\n\n const address = await this.resolveName(addressOrName);\n if (address == null) {\n logger.throwError(\"ENS name not configured\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: `resolveName(${ JSON.stringify(addressOrName) })`\n });\n }\n return address;\n }\n\n async _getBlock(blockHashOrBlockTag: BlockTag | string | Promise, includeTransactions?: boolean): Promise {\n await this.getNetwork();\n\n blockHashOrBlockTag = await blockHashOrBlockTag;\n\n // If blockTag is a number (not \"latest\", etc), this is the block number\n let blockNumber = -128;\n\n const params: { [key: string]: any } = {\n includeTransactions: !!includeTransactions\n };\n\n if (isHexString(blockHashOrBlockTag, 32)) {\n params.blockHash = blockHashOrBlockTag;\n } else {\n try {\n params.blockTag = await this._getBlockTag(blockHashOrBlockTag);\n if (isHexString(params.blockTag)) {\n blockNumber = parseInt(params.blockTag.substring(2), 16);\n }\n } catch (error) {\n logger.throwArgumentError(\"invalid block hash or block tag\", \"blockHashOrBlockTag\", blockHashOrBlockTag);\n }\n }\n\n return poll(async () => {\n const block = await this.perform(\"getBlock\", params);\n\n // Block was not found\n if (block == null) {\n\n // For blockhashes, if we didn't say it existed, that blockhash may\n // not exist. If we did see it though, perhaps from a log, we know\n // it exists, and this node is just not caught up yet.\n if (params.blockHash != null) {\n if (this._emitted[\"b:\" + params.blockHash] == null) { return null; }\n }\n\n // For block tags, if we are asking for a future block, we return null\n if (params.blockTag != null) {\n if (blockNumber > this._emitted.block) { return null; }\n }\n\n // Retry on the next block\n return undefined;\n }\n\n // Add transactions\n if (includeTransactions) {\n let blockNumber: number = null;\n for (let i = 0; i < block.transactions.length; i++) {\n const tx = block.transactions[i];\n if (tx.blockNumber == null) {\n tx.confirmations = 0;\n\n } else if (tx.confirmations == null) {\n if (blockNumber == null) {\n blockNumber = await this._getInternalBlockNumber(100 + 2 * this.pollingInterval);\n }\n\n // Add the confirmations using the fast block number (pessimistic)\n let confirmations = (blockNumber - tx.blockNumber) + 1;\n if (confirmations <= 0) { confirmations = 1; }\n tx.confirmations = confirmations;\n }\n }\n\n const blockWithTxs: any = this.formatter.blockWithTransactions(block);\n blockWithTxs.transactions = blockWithTxs.transactions.map((tx: TransactionResponse) => this._wrapTransaction(tx));\n return blockWithTxs;\n }\n\n return this.formatter.block(block);\n\n }, { oncePoll: this });\n }\n\n getBlock(blockHashOrBlockTag: BlockTag | string | Promise): Promise {\n return >(this._getBlock(blockHashOrBlockTag, false));\n }\n\n getBlockWithTransactions(blockHashOrBlockTag: BlockTag | string | Promise): Promise {\n return >(this._getBlock(blockHashOrBlockTag, true));\n }\n\n async getTransaction(transactionHash: string | Promise): Promise {\n await this.getNetwork();\n transactionHash = await transactionHash;\n\n const params = { transactionHash: this.formatter.hash(transactionHash, true) };\n\n return poll(async () => {\n const result = await this.perform(\"getTransaction\", params);\n\n if (result == null) {\n if (this._emitted[\"t:\" + transactionHash] == null) {\n return null;\n }\n return undefined;\n }\n\n const tx = this.formatter.transactionResponse(result);\n\n if (tx.blockNumber == null) {\n tx.confirmations = 0;\n\n } else if (tx.confirmations == null) {\n const blockNumber = await this._getInternalBlockNumber(100 + 2 * this.pollingInterval);\n\n // Add the confirmations using the fast block number (pessimistic)\n let confirmations = (blockNumber - tx.blockNumber) + 1;\n if (confirmations <= 0) { confirmations = 1; }\n tx.confirmations = confirmations;\n }\n\n return this._wrapTransaction(tx);\n }, { oncePoll: this });\n }\n\n async getTransactionReceipt(transactionHash: string | Promise): Promise {\n await this.getNetwork();\n\n transactionHash = await transactionHash;\n\n const params = { transactionHash: this.formatter.hash(transactionHash, true) };\n\n return poll(async () => {\n const result = await this.perform(\"getTransactionReceipt\", params);\n\n if (result == null) {\n if (this._emitted[\"t:\" + transactionHash] == null) {\n return null;\n }\n return undefined;\n }\n\n // \"geth-etc\" returns receipts before they are ready\n if (result.blockHash == null) { return undefined; }\n\n const receipt = this.formatter.receipt(result);\n\n if (receipt.blockNumber == null) {\n receipt.confirmations = 0;\n\n } else if (receipt.confirmations == null) {\n const blockNumber = await this._getInternalBlockNumber(100 + 2 * this.pollingInterval);\n\n // Add the confirmations using the fast block number (pessimistic)\n let confirmations = (blockNumber - receipt.blockNumber) + 1;\n if (confirmations <= 0) { confirmations = 1; }\n receipt.confirmations = confirmations;\n }\n\n return receipt;\n }, { oncePoll: this });\n }\n\n async getLogs(filter: Filter | FilterByBlockHash | Promise): Promise> {\n await this.getNetwork();\n const params = await resolveProperties({ filter: this._getFilter(filter) });\n const logs: Array = await this.perform(\"getLogs\", params);\n logs.forEach((log) => {\n if (log.removed == null) { log.removed = false; }\n });\n return Formatter.arrayOf(this.formatter.filterLog.bind(this.formatter))(logs);\n }\n\n async getEtherPrice(): Promise {\n await this.getNetwork();\n return this.perform(\"getEtherPrice\", { });\n }\n\n async _getBlockTag(blockTag: BlockTag | Promise): Promise {\n blockTag = await blockTag;\n\n if (typeof(blockTag) === \"number\" && blockTag < 0) {\n if (blockTag % 1) {\n logger.throwArgumentError(\"invalid BlockTag\", \"blockTag\", blockTag);\n }\n\n let blockNumber = await this._getInternalBlockNumber(100 + 2 * this.pollingInterval);\n blockNumber += blockTag;\n if (blockNumber < 0) { blockNumber = 0; }\n return this.formatter.blockTag(blockNumber)\n }\n\n return this.formatter.blockTag(blockTag);\n }\n\n\n async getResolver(name: string): Promise {\n let currentName = name;\n while (true) {\n if (currentName === \"\" || currentName === \".\") { return null; }\n\n // Optimization since the eth node cannot change and does\n // not have a wildcard resolver\n if (name !== \"eth\" && currentName === \"eth\") { return null; }\n\n // Check the current node for a resolver\n const addr = await this._getResolver(currentName, \"getResolver\");\n\n // Found a resolver!\n if (addr != null) {\n const resolver = new Resolver(this, addr, name);\n\n // Legacy resolver found, using EIP-2544 so it isn't safe to use\n if (currentName !== name && !(await resolver.supportsWildcard())) { return null; }\n\n return resolver;\n }\n\n // Get the parent node\n currentName = currentName.split(\".\").slice(1).join(\".\");\n }\n\n }\n\n async _getResolver(name: string, operation?: string): Promise {\n if (operation == null) { operation = \"ENS\"; }\n\n const network = await this.getNetwork();\n\n // No ENS...\n if (!network.ensAddress) {\n logger.throwError(\n \"network does not support ENS\",\n Logger.errors.UNSUPPORTED_OPERATION,\n { operation, network: network.name }\n );\n }\n\n try {\n // keccak256(\"resolver(bytes32)\")\n const addrData = await this.call({\n to: network.ensAddress,\n data: (\"0x0178b8bf\" + namehash(name).substring(2))\n });\n return this.formatter.callAddress(addrData);\n } catch (error) {\n // ENS registry cannot throw errors on resolver(bytes32)\n }\n\n return null;\n }\n\n async resolveName(name: string | Promise): Promise {\n name = await name;\n\n // If it is already an address, nothing to resolve\n try {\n return Promise.resolve(this.formatter.address(name));\n } catch (error) {\n // If is is a hexstring, the address is bad (See #694)\n if (isHexString(name)) { throw error; }\n }\n\n if (typeof(name) !== \"string\") {\n logger.throwArgumentError(\"invalid ENS name\", \"name\", name);\n }\n\n // Get the addr from the resolver\n const resolver = await this.getResolver(name);\n if (!resolver) { return null; }\n\n return await resolver.getAddress();\n }\n\n async lookupAddress(address: string | Promise): Promise {\n address = await address;\n address = this.formatter.address(address);\n\n const node = address.substring(2).toLowerCase() + \".addr.reverse\";\n\n const resolverAddr = await this._getResolver(node, \"lookupAddress\");\n if (resolverAddr == null) { return null; }\n\n // keccak(\"name(bytes32)\")\n const name = _parseString(await this.call({\n to: resolverAddr,\n data: (\"0x691f3431\" + namehash(node).substring(2))\n }), 0);\n\n const addr = await this.resolveName(name);\n if (addr != address) { return null; }\n\n return name;\n }\n\n async getAvatar(nameOrAddress: string): Promise {\n let resolver: Resolver = null;\n if (isHexString(nameOrAddress)) {\n // Address; reverse lookup\n const address = this.formatter.address(nameOrAddress);\n\n const node = address.substring(2).toLowerCase() + \".addr.reverse\";\n\n const resolverAddress = await this._getResolver(node, \"getAvatar\");\n if (!resolverAddress) { return null; }\n\n // Try resolving the avatar against the addr.reverse resolver\n resolver = new Resolver(this, resolverAddress, node);\n try {\n const avatar = await resolver.getAvatar();\n if (avatar) { return avatar.url; }\n } catch (error) {\n if (error.code !== Logger.errors.CALL_EXCEPTION) { throw error; }\n }\n\n // Try getting the name and performing forward lookup; allowing wildcards\n try {\n // keccak(\"name(bytes32)\")\n const name = _parseString(await this.call({\n to: resolverAddress,\n data: (\"0x691f3431\" + namehash(node).substring(2))\n }), 0);\n resolver = await this.getResolver(name);\n } catch (error) {\n if (error.code !== Logger.errors.CALL_EXCEPTION) { throw error; }\n return null;\n }\n\n } else {\n // ENS name; forward lookup with wildcard\n resolver = await this.getResolver(nameOrAddress);\n if (!resolver) { return null; }\n }\n\n const avatar = await resolver.getAvatar();\n if (avatar == null) { return null; }\n\n return avatar.url;\n }\n\n perform(method: string, params: any): Promise {\n return logger.throwError(method + \" not implemented\", Logger.errors.NOT_IMPLEMENTED, { operation: method });\n }\n\n _startEvent(event: Event): void {\n this.polling = (this._events.filter((e) => e.pollable()).length > 0);\n }\n\n _stopEvent(event: Event): void {\n this.polling = (this._events.filter((e) => e.pollable()).length > 0);\n }\n\n _addEventListener(eventName: EventType, listener: Listener, once: boolean): this {\n const event = new Event(getEventTag(eventName), listener, once)\n this._events.push(event);\n this._startEvent(event);\n\n return this;\n }\n\n on(eventName: EventType, listener: Listener): this {\n return this._addEventListener(eventName, listener, false);\n }\n\n once(eventName: EventType, listener: Listener): this {\n return this._addEventListener(eventName, listener, true);\n }\n\n\n emit(eventName: EventType, ...args: Array): boolean {\n let result = false;\n\n let stopped: Array = [ ];\n\n let eventTag = getEventTag(eventName);\n this._events = this._events.filter((event) => {\n if (event.tag !== eventTag) { return true; }\n\n setTimeout(() => {\n event.listener.apply(this, args);\n }, 0);\n\n result = true;\n\n if (event.once) {\n stopped.push(event);\n return false;\n }\n\n return true;\n });\n\n stopped.forEach((event) => { this._stopEvent(event); });\n\n return result;\n }\n\n listenerCount(eventName?: EventType): number {\n if (!eventName) { return this._events.length; }\n\n let eventTag = getEventTag(eventName);\n return this._events.filter((event) => {\n return (event.tag === eventTag);\n }).length;\n }\n\n listeners(eventName?: EventType): Array {\n if (eventName == null) {\n return this._events.map((event) => event.listener);\n }\n\n let eventTag = getEventTag(eventName);\n return this._events\n .filter((event) => (event.tag === eventTag))\n .map((event) => event.listener);\n }\n\n off(eventName: EventType, listener?: Listener): this {\n if (listener == null) {\n return this.removeAllListeners(eventName);\n }\n\n const stopped: Array = [ ];\n\n let found = false;\n\n let eventTag = getEventTag(eventName);\n this._events = this._events.filter((event) => {\n if (event.tag !== eventTag || event.listener != listener) { return true; }\n if (found) { return true; }\n found = true;\n stopped.push(event);\n return false;\n });\n\n stopped.forEach((event) => { this._stopEvent(event); });\n\n return this;\n }\n\n removeAllListeners(eventName?: EventType): this {\n let stopped: Array = [ ];\n if (eventName == null) {\n stopped = this._events;\n\n this._events = [ ];\n } else {\n const eventTag = getEventTag(eventName);\n this._events = this._events.filter((event) => {\n if (event.tag !== eventTag) { return true; }\n stopped.push(event);\n return false;\n });\n }\n\n stopped.forEach((event) => { this._stopEvent(event); });\n\n return this;\n }\n}\n", "\"use strict\";\n\n// See: https://github.com/ethereum/wiki/wiki/JSON-RPC\n\nimport { Provider, TransactionRequest, TransactionResponse } from \"@ethersproject/abstract-provider\";\nimport { Signer, TypedDataDomain, TypedDataField, TypedDataSigner } from \"@ethersproject/abstract-signer\";\nimport { BigNumber } from \"@ethersproject/bignumber\";\nimport { Bytes, hexlify, hexValue, hexZeroPad, isHexString } from \"@ethersproject/bytes\";\nimport { _TypedDataEncoder } from \"@ethersproject/hash\";\nimport { Network, Networkish } from \"@ethersproject/networks\";\nimport { checkProperties, deepCopy, Deferrable, defineReadOnly, getStatic, resolveProperties, shallowCopy } from \"@ethersproject/properties\";\nimport { toUtf8Bytes } from \"@ethersproject/strings\";\nimport { AccessList, accessListify } from \"@ethersproject/transactions\";\nimport { ConnectionInfo, fetchJson, poll } from \"@ethersproject/web\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nimport { BaseProvider, Event } from \"./base-provider\";\n\n\nconst errorGas = [ \"call\", \"estimateGas\" ];\n\nfunction spelunk(value: any, requireData: boolean): null | { message: string, data: null | string } {\n if (value == null) { return null; }\n\n // These *are* the droids we're looking for.\n if (typeof(value.message) === \"string\" && value.message.match(\"reverted\")) {\n const data = isHexString(value.data) ? value.data: null;\n if (!requireData || data) {\n return { message: value.message, data };\n }\n }\n\n // Spelunk further...\n if (typeof(value) === \"object\") {\n for (const key in value) {\n const result = spelunk(value[key], requireData);\n if (result) { return result; }\n }\n return null;\n }\n\n // Might be a JSON string we can further descend...\n if (typeof(value) === \"string\") {\n try {\n return spelunk(JSON.parse(value), requireData);\n } catch (error) { }\n }\n\n return null;\n}\n\nfunction checkError(method: string, error: any, params: any): any {\n\n const transaction = params.transaction || params.signedTransaction;\n\n // Undo the \"convenience\" some nodes are attempting to prevent backwards\n // incompatibility; maybe for v6 consider forwarding reverts as errors\n if (method === \"call\") {\n const result = spelunk(error, true);\n if (result) { return result.data; }\n\n // Nothing descriptive..\n logger.throwError(\"missing revert data in call exception; Transaction reverted without a reason string\", Logger.errors.CALL_EXCEPTION, {\n data: \"0x\", transaction, error\n });\n }\n\n if (method === \"estimateGas\") {\n // Try to find something, with a preference on SERVER_ERROR body\n let result = spelunk(error.body, false);\n if (result == null) { result = spelunk(error, false); }\n\n // Found \"reverted\", this is a CALL_EXCEPTION\n if (result) {\n logger.throwError(\"cannot estimate gas; transaction may fail or may require manual gas limit\", Logger.errors.UNPREDICTABLE_GAS_LIMIT, {\n reason: result.message, method, transaction, error\n });\n }\n }\n\n // @TODO: Should we spelunk for message too?\n\n let message = error.message;\n if (error.code === Logger.errors.SERVER_ERROR && error.error && typeof(error.error.message) === \"string\") {\n message = error.error.message;\n } else if (typeof(error.body) === \"string\") {\n message = error.body;\n } else if (typeof(error.responseText) === \"string\") {\n message = error.responseText;\n }\n message = (message || \"\").toLowerCase();\n\n // \"insufficient funds for gas * price + value + cost(data)\"\n if (message.match(/insufficient funds|base fee exceeds gas limit|InsufficientFunds/i)) {\n logger.throwError(\"insufficient funds for intrinsic transaction cost\", Logger.errors.INSUFFICIENT_FUNDS, {\n error, method, transaction\n });\n }\n\n // \"nonce too low\"\n if (message.match(/nonce (is )?too low/i)) {\n logger.throwError(\"nonce has already been used\", Logger.errors.NONCE_EXPIRED, {\n error, method, transaction\n });\n }\n\n // \"replacement transaction underpriced\"\n if (message.match(/replacement transaction underpriced|transaction gas price.*too low/i)) {\n logger.throwError(\"replacement fee too low\", Logger.errors.REPLACEMENT_UNDERPRICED, {\n error, method, transaction\n });\n }\n\n // \"replacement transaction underpriced\"\n if (message.match(/only replay-protected/i)) {\n logger.throwError(\"legacy pre-eip-155 transactions not supported\", Logger.errors.UNSUPPORTED_OPERATION, {\n error, method, transaction\n });\n }\n\n if (errorGas.indexOf(method) >= 0 && message.match(/gas required exceeds allowance|always failing transaction|execution reverted|revert/)) {\n logger.throwError(\"cannot estimate gas; transaction may fail or may require manual gas limit\", Logger.errors.UNPREDICTABLE_GAS_LIMIT, {\n error, method, transaction\n });\n }\n\n throw error;\n}\n\nfunction timer(timeout: number): Promise {\n return new Promise(function(resolve) {\n setTimeout(resolve, timeout);\n });\n}\n\nfunction getResult(payload: { error?: { code?: number, data?: any, message?: string }, result?: any }): any {\n if (payload.error) {\n // @TODO: not any\n const error: any = new Error(payload.error.message);\n error.code = payload.error.code;\n error.data = payload.error.data;\n throw error;\n }\n\n return payload.result;\n}\n\nfunction getLowerCase(value: string): string {\n if (value) { return value.toLowerCase(); }\n return value;\n}\n\nconst _constructorGuard = {};\n\nexport class JsonRpcSigner extends Signer implements TypedDataSigner {\n readonly provider: JsonRpcProvider;\n _index: number;\n _address: string;\n\n constructor(constructorGuard: any, provider: JsonRpcProvider, addressOrIndex?: string | number) {\n super();\n\n if (constructorGuard !== _constructorGuard) {\n throw new Error(\"do not call the JsonRpcSigner constructor directly; use provider.getSigner\");\n }\n\n defineReadOnly(this, \"provider\", provider);\n\n if (addressOrIndex == null) { addressOrIndex = 0; }\n\n if (typeof(addressOrIndex) === \"string\") {\n defineReadOnly(this, \"_address\", this.provider.formatter.address(addressOrIndex));\n defineReadOnly(this, \"_index\", null);\n\n } else if (typeof(addressOrIndex) === \"number\") {\n defineReadOnly(this, \"_index\", addressOrIndex);\n defineReadOnly(this, \"_address\", null);\n\n } else {\n logger.throwArgumentError(\"invalid address or index\", \"addressOrIndex\", addressOrIndex);\n }\n }\n\n connect(provider: Provider): JsonRpcSigner {\n return logger.throwError(\"cannot alter JSON-RPC Signer connection\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"connect\"\n });\n }\n\n connectUnchecked(): JsonRpcSigner {\n return new UncheckedJsonRpcSigner(_constructorGuard, this.provider, this._address || this._index);\n }\n\n getAddress(): Promise {\n if (this._address) {\n return Promise.resolve(this._address);\n }\n\n return this.provider.send(\"eth_accounts\", []).then((accounts) => {\n if (accounts.length <= this._index) {\n logger.throwError(\"unknown account #\" + this._index, Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"getAddress\"\n });\n }\n return this.provider.formatter.address(accounts[this._index])\n });\n }\n\n sendUncheckedTransaction(transaction: Deferrable): Promise {\n transaction = shallowCopy(transaction);\n\n const fromAddress = this.getAddress().then((address) => {\n if (address) { address = address.toLowerCase(); }\n return address;\n });\n\n // The JSON-RPC for eth_sendTransaction uses 90000 gas; if the user\n // wishes to use this, it is easy to specify explicitly, otherwise\n // we look it up for them.\n if (transaction.gasLimit == null) {\n const estimate = shallowCopy(transaction);\n estimate.from = fromAddress;\n transaction.gasLimit = this.provider.estimateGas(estimate);\n }\n\n if (transaction.to != null) {\n transaction.to = Promise.resolve(transaction.to).then(async (to) => {\n if (to == null) { return null; }\n const address = await this.provider.resolveName(to);\n if (address == null) {\n logger.throwArgumentError(\"provided ENS name resolves to null\", \"tx.to\", to);\n }\n return address;\n });\n }\n\n return resolveProperties({\n tx: resolveProperties(transaction),\n sender: fromAddress\n }).then(({ tx, sender }) => {\n\n if (tx.from != null) {\n if (tx.from.toLowerCase() !== sender) {\n logger.throwArgumentError(\"from address mismatch\", \"transaction\", transaction);\n }\n } else {\n tx.from = sender;\n }\n\n const hexTx = (this.provider.constructor).hexlifyTransaction(tx, { from: true });\n\n return this.provider.send(\"eth_sendTransaction\", [ hexTx ]).then((hash) => {\n return hash;\n }, (error) => {\n if (typeof(error.message) === \"string\" && error.message.match(/user denied/i)) {\n logger.throwError(\"user rejected transaction\", Logger.errors.ACTION_REJECTED, {\n action: \"sendTransaction\",\n transaction: tx\n });\n }\n\n return checkError(\"sendTransaction\", error, hexTx);\n });\n });\n }\n\n signTransaction(transaction: Deferrable): Promise {\n return logger.throwError(\"signing transactions is unsupported\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"signTransaction\"\n });\n }\n\n async sendTransaction(transaction: Deferrable): Promise {\n // This cannot be mined any earlier than any recent block\n const blockNumber = await this.provider._getInternalBlockNumber(100 + 2 * this.provider.pollingInterval);\n\n // Send the transaction\n const hash = await this.sendUncheckedTransaction(transaction);\n\n try {\n // Unfortunately, JSON-RPC only provides and opaque transaction hash\n // for a response, and we need the actual transaction, so we poll\n // for it; it should show up very quickly\n return await poll(async () => {\n const tx = await this.provider.getTransaction(hash);\n if (tx === null) { return undefined; }\n return this.provider._wrapTransaction(tx, hash, blockNumber);\n }, { oncePoll: this.provider });\n } catch (error) {\n (error).transactionHash = hash;\n throw error;\n }\n }\n\n async signMessage(message: Bytes | string): Promise {\n const data = ((typeof(message) === \"string\") ? toUtf8Bytes(message): message);\n const address = await this.getAddress();\n try {\n return await this.provider.send(\"personal_sign\", [ hexlify(data), address.toLowerCase() ]);\n } catch (error) {\n if (typeof(error.message) === \"string\" && error.message.match(/user denied/i)) {\n logger.throwError(\"user rejected signing\", Logger.errors.ACTION_REJECTED, {\n action: \"signMessage\",\n from: address,\n messageData: message\n });\n }\n throw error;\n }\n }\n\n async _legacySignMessage(message: Bytes | string): Promise {\n const data = ((typeof(message) === \"string\") ? toUtf8Bytes(message): message);\n const address = await this.getAddress();\n\n try {\n // https://github.com/ethereum/wiki/wiki/JSON-RPC#eth_sign\n return await this.provider.send(\"eth_sign\", [ address.toLowerCase(), hexlify(data) ]);\n } catch (error) {\n if (typeof(error.message) === \"string\" && error.message.match(/user denied/i)) {\n logger.throwError(\"user rejected signing\", Logger.errors.ACTION_REJECTED, {\n action: \"_legacySignMessage\",\n from: address,\n messageData: message\n });\n }\n throw error;\n }\n }\n\n async _signTypedData(domain: TypedDataDomain, types: Record>, value: Record): Promise {\n // Populate any ENS names (in-place)\n const populated = await _TypedDataEncoder.resolveNames(domain, types, value, (name: string) => {\n return this.provider.resolveName(name);\n });\n\n const address = await this.getAddress();\n\n try {\n return await this.provider.send(\"eth_signTypedData_v4\", [\n address.toLowerCase(),\n JSON.stringify(_TypedDataEncoder.getPayload(populated.domain, types, populated.value))\n ]);\n } catch (error) {\n if (typeof(error.message) === \"string\" && error.message.match(/user denied/i)) {\n logger.throwError(\"user rejected signing\", Logger.errors.ACTION_REJECTED, {\n action: \"_signTypedData\",\n from: address,\n messageData: { domain: populated.domain, types, value: populated.value }\n });\n }\n throw error;\n }\n }\n\n async unlock(password: string): Promise {\n const provider = this.provider;\n\n const address = await this.getAddress();\n\n return provider.send(\"personal_unlockAccount\", [ address.toLowerCase(), password, null ]);\n }\n}\n\nclass UncheckedJsonRpcSigner extends JsonRpcSigner {\n sendTransaction(transaction: Deferrable): Promise {\n return this.sendUncheckedTransaction(transaction).then((hash) => {\n return {\n hash: hash,\n nonce: null,\n gasLimit: null,\n gasPrice: null,\n data: null,\n value: null,\n chainId: null,\n confirmations: 0,\n from: null,\n wait: (confirmations?: number) => { return this.provider.waitForTransaction(hash, confirmations); }\n };\n });\n }\n}\n\nconst allowedTransactionKeys: { [ key: string ]: boolean } = {\n chainId: true, data: true, gasLimit: true, gasPrice:true, nonce: true, to: true, value: true,\n type: true, accessList: true,\n maxFeePerGas: true, maxPriorityFeePerGas: true\n}\n\nexport class JsonRpcProvider extends BaseProvider {\n readonly connection: ConnectionInfo;\n\n _pendingFilter: Promise;\n _nextId: number;\n\n // During any given event loop, the results for a given call will\n // all be the same, so we can dedup the calls to save requests and\n // bandwidth. @TODO: Try out generalizing this against send?\n _eventLoopCache: Record>;\n get _cache(): Record> {\n if (this._eventLoopCache == null) {\n this._eventLoopCache = { };\n }\n return this._eventLoopCache;\n }\n\n constructor(url?: ConnectionInfo | string, network?: Networkish) {\n let networkOrReady: Networkish | Promise = network;\n\n // The network is unknown, query the JSON-RPC for it\n if (networkOrReady == null) {\n networkOrReady = new Promise((resolve, reject) => {\n setTimeout(() => {\n this.detectNetwork().then((network) => {\n resolve(network);\n }, (error) => {\n reject(error);\n });\n }, 0);\n });\n }\n\n super(networkOrReady);\n\n // Default URL\n if (!url) { url = getStatic<() => string>(this.constructor, \"defaultUrl\")(); }\n\n if (typeof(url) === \"string\") {\n defineReadOnly(this, \"connection\",Object.freeze({\n url: url\n }));\n } else {\n defineReadOnly(this, \"connection\", Object.freeze(shallowCopy(url)));\n }\n\n this._nextId = 42;\n }\n\n static defaultUrl(): string {\n return \"http:/\\/localhost:8545\";\n }\n\n detectNetwork(): Promise {\n if (!this._cache[\"detectNetwork\"]) {\n this._cache[\"detectNetwork\"] = this._uncachedDetectNetwork();\n\n // Clear this cache at the beginning of the next event loop\n setTimeout(() => {\n this._cache[\"detectNetwork\"] = null;\n }, 0);\n }\n return this._cache[\"detectNetwork\"];\n }\n\n async _uncachedDetectNetwork(): Promise {\n await timer(0);\n\n let chainId = null;\n try {\n chainId = await this.send(\"eth_chainId\", [ ]);\n } catch (error) {\n try {\n chainId = await this.send(\"net_version\", [ ]);\n } catch (error) { }\n }\n\n if (chainId != null) {\n const getNetwork = getStatic<(network: Networkish) => Network>(this.constructor, \"getNetwork\");\n try {\n return getNetwork(BigNumber.from(chainId).toNumber());\n } catch (error) {\n return logger.throwError(\"could not detect network\", Logger.errors.NETWORK_ERROR, {\n chainId: chainId,\n event: \"invalidNetwork\",\n serverError: error\n });\n }\n }\n\n return logger.throwError(\"could not detect network\", Logger.errors.NETWORK_ERROR, {\n event: \"noNetwork\"\n });\n }\n\n getSigner(addressOrIndex?: string | number): JsonRpcSigner {\n return new JsonRpcSigner(_constructorGuard, this, addressOrIndex);\n }\n\n getUncheckedSigner(addressOrIndex?: string | number): UncheckedJsonRpcSigner {\n return this.getSigner(addressOrIndex).connectUnchecked();\n }\n\n listAccounts(): Promise> {\n return this.send(\"eth_accounts\", []).then((accounts: Array) => {\n return accounts.map((a) => this.formatter.address(a));\n });\n }\n\n send(method: string, params: Array): Promise {\n const request = {\n method: method,\n params: params,\n id: (this._nextId++),\n jsonrpc: \"2.0\"\n };\n\n this.emit(\"debug\", {\n action: \"request\",\n request: deepCopy(request),\n provider: this\n });\n\n // We can expand this in the future to any call, but for now these\n // are the biggest wins and do not require any serializing parameters.\n const cache = ([ \"eth_chainId\", \"eth_blockNumber\" ].indexOf(method) >= 0);\n if (cache && this._cache[method]) {\n return this._cache[method];\n }\n\n const result = fetchJson(this.connection, JSON.stringify(request), getResult).then((result) => {\n this.emit(\"debug\", {\n action: \"response\",\n request: request,\n response: result,\n provider: this\n });\n\n return result;\n\n }, (error) => {\n this.emit(\"debug\", {\n action: \"response\",\n error: error,\n request: request,\n provider: this\n });\n\n throw error;\n });\n\n // Cache the fetch, but clear it on the next event loop\n if (cache) {\n this._cache[method] = result;\n setTimeout(() => {\n this._cache[method] = null;\n }, 0);\n }\n\n return result;\n }\n\n prepareRequest(method: string, params: any): [ string, Array ] {\n switch (method) {\n case \"getBlockNumber\":\n return [ \"eth_blockNumber\", [] ];\n\n case \"getGasPrice\":\n return [ \"eth_gasPrice\", [] ];\n\n case \"getBalance\":\n return [ \"eth_getBalance\", [ getLowerCase(params.address), params.blockTag ] ];\n\n case \"getTransactionCount\":\n return [ \"eth_getTransactionCount\", [ getLowerCase(params.address), params.blockTag ] ];\n\n case \"getCode\":\n return [ \"eth_getCode\", [ getLowerCase(params.address), params.blockTag ] ];\n\n case \"getStorageAt\":\n return [ \"eth_getStorageAt\", [ getLowerCase(params.address), hexZeroPad(params.position, 32), params.blockTag ] ];\n\n case \"sendTransaction\":\n return [ \"eth_sendRawTransaction\", [ params.signedTransaction ] ]\n\n case \"getBlock\":\n if (params.blockTag) {\n return [ \"eth_getBlockByNumber\", [ params.blockTag, !!params.includeTransactions ] ];\n } else if (params.blockHash) {\n return [ \"eth_getBlockByHash\", [ params.blockHash, !!params.includeTransactions ] ];\n }\n return null;\n\n case \"getTransaction\":\n return [ \"eth_getTransactionByHash\", [ params.transactionHash ] ];\n\n case \"getTransactionReceipt\":\n return [ \"eth_getTransactionReceipt\", [ params.transactionHash ] ];\n\n case \"call\": {\n const hexlifyTransaction = getStatic<(t: TransactionRequest, a?: { [key: string]: boolean }) => { [key: string]: string }>(this.constructor, \"hexlifyTransaction\");\n return [ \"eth_call\", [ hexlifyTransaction(params.transaction, { from: true }), params.blockTag ] ];\n }\n\n case \"estimateGas\": {\n const hexlifyTransaction = getStatic<(t: TransactionRequest, a?: { [key: string]: boolean }) => { [key: string]: string }>(this.constructor, \"hexlifyTransaction\");\n return [ \"eth_estimateGas\", [ hexlifyTransaction(params.transaction, { from: true }) ] ];\n }\n\n case \"getLogs\":\n if (params.filter && params.filter.address != null) {\n params.filter.address = getLowerCase(params.filter.address);\n }\n return [ \"eth_getLogs\", [ params.filter ] ];\n\n default:\n break;\n }\n\n return null;\n }\n\n async perform(method: string, params: any): Promise {\n // Legacy networks do not like the type field being passed along (which\n // is fair), so we delete type if it is 0 and a non-EIP-1559 network\n if (method === \"call\" || method === \"estimateGas\") {\n const tx = params.transaction;\n if (tx && tx.type != null && BigNumber.from(tx.type).isZero()) {\n // If there are no EIP-1559 properties, it might be non-EIP-1559\n if (tx.maxFeePerGas == null && tx.maxPriorityFeePerGas == null) {\n const feeData = await this.getFeeData();\n if (feeData.maxFeePerGas == null && feeData.maxPriorityFeePerGas == null) {\n // Network doesn't know about EIP-1559 (and hence type)\n params = shallowCopy(params);\n params.transaction = shallowCopy(tx);\n delete params.transaction.type;\n }\n }\n }\n }\n\n const args = this.prepareRequest(method, params);\n\n if (args == null) {\n logger.throwError(method + \" not implemented\", Logger.errors.NOT_IMPLEMENTED, { operation: method });\n }\n try {\n return await this.send(args[0], args[1])\n } catch (error) {\n return checkError(method, error, params);\n }\n }\n\n _startEvent(event: Event): void {\n if (event.tag === \"pending\") { this._startPending(); }\n super._startEvent(event);\n }\n\n _startPending(): void {\n if (this._pendingFilter != null) { return; }\n const self = this;\n\n const pendingFilter: Promise = this.send(\"eth_newPendingTransactionFilter\", []);\n this._pendingFilter = pendingFilter;\n\n pendingFilter.then(function(filterId) {\n function poll() {\n self.send(\"eth_getFilterChanges\", [ filterId ]).then(function(hashes: Array) {\n if (self._pendingFilter != pendingFilter) { return null; }\n\n let seq = Promise.resolve();\n hashes.forEach(function(hash) {\n // @TODO: This should be garbage collected at some point... How? When?\n self._emitted[\"t:\" + hash.toLowerCase()] = \"pending\";\n seq = seq.then(function() {\n return self.getTransaction(hash).then(function(tx) {\n self.emit(\"pending\", tx);\n return null;\n });\n });\n });\n\n return seq.then(function() {\n return timer(1000);\n });\n }).then(function() {\n if (self._pendingFilter != pendingFilter) {\n self.send(\"eth_uninstallFilter\", [ filterId ]);\n return;\n }\n setTimeout(function() { poll(); }, 0);\n\n return null;\n }).catch((error: Error) => { });\n }\n poll();\n\n return filterId;\n }).catch((error: Error) => { });\n }\n\n _stopEvent(event: Event): void {\n if (event.tag === \"pending\" && this.listenerCount(\"pending\") === 0) {\n this._pendingFilter = null;\n }\n super._stopEvent(event);\n }\n\n // Convert an ethers.js transaction into a JSON-RPC transaction\n // - gasLimit => gas\n // - All values hexlified\n // - All numeric values zero-striped\n // - All addresses are lowercased\n // NOTE: This allows a TransactionRequest, but all values should be resolved\n // before this is called\n // @TODO: This will likely be removed in future versions and prepareRequest\n // will be the preferred method for this.\n static hexlifyTransaction(transaction: TransactionRequest, allowExtra?: { [key: string]: boolean }): { [key: string]: string | AccessList } {\n // Check only allowed properties are given\n const allowed = shallowCopy(allowedTransactionKeys);\n if (allowExtra) {\n for (const key in allowExtra) {\n if (allowExtra[key]) { allowed[key] = true; }\n }\n }\n\n checkProperties(transaction, allowed);\n\n const result: { [key: string]: string | AccessList } = {};\n\n // JSON-RPC now requires numeric values to be \"quantity\" values\n [\"chainId\", \"gasLimit\", \"gasPrice\", \"type\", \"maxFeePerGas\", \"maxPriorityFeePerGas\", \"nonce\", \"value\"].forEach(function(key) {\n if ((transaction)[key] == null) { return; }\n const value = hexValue(BigNumber.from((transaction)[key]));\n if (key === \"gasLimit\") { key = \"gas\"; }\n result[key] = value;\n });\n\n [\"from\", \"to\", \"data\"].forEach(function(key) {\n if ((transaction)[key] == null) { return; }\n result[key] = hexlify((transaction)[key]);\n });\n\n if ((transaction).accessList) {\n result[\"accessList\"] = accessListify((transaction).accessList);\n }\n\n return result;\n }\n}\n", "'use strict';\n\nmodule.exports = {\n BINARY_TYPES: ['nodebuffer', 'arraybuffer', 'fragments'],\n GUID: '258EAFA5-E914-47DA-95CA-C5AB0DC85B11',\n kStatusCode: Symbol('status-code'),\n kWebSocket: Symbol('websocket'),\n EMPTY_BUFFER: Buffer.alloc(0),\n NOOP: () => {}\n};\n", "var fs = require('fs')\nvar path = require('path')\nvar os = require('os')\n\n// Workaround to fix webpack's build warnings: 'the request of a dependency is an expression'\nvar runtimeRequire = typeof __webpack_require__ === 'function' ? __non_webpack_require__ : require // eslint-disable-line\n\nvar vars = (process.config && process.config.variables) || {}\nvar prebuildsOnly = !!process.env.PREBUILDS_ONLY\nvar abi = process.versions.modules // TODO: support old node where this is undef\nvar runtime = isElectron() ? 'electron' : 'node'\nvar arch = os.arch()\nvar platform = os.platform()\nvar libc = process.env.LIBC || (isAlpine(platform) ? 'musl' : 'glibc')\nvar armv = process.env.ARM_VERSION || (arch === 'arm64' ? '8' : vars.arm_version) || ''\nvar uv = (process.versions.uv || '').split('.')[0]\n\nmodule.exports = load\n\nfunction load (dir) {\n return runtimeRequire(load.path(dir))\n}\n\nload.path = function (dir) {\n dir = path.resolve(dir || '.')\n\n try {\n var name = runtimeRequire(path.join(dir, 'package.json')).name.toUpperCase().replace(/-/g, '_')\n if (process.env[name + '_PREBUILD']) dir = process.env[name + '_PREBUILD']\n } catch (err) {}\n\n if (!prebuildsOnly) {\n var release = getFirst(path.join(dir, 'build/Release'), matchBuild)\n if (release) return release\n\n var debug = getFirst(path.join(dir, 'build/Debug'), matchBuild)\n if (debug) return debug\n }\n\n var prebuild = resolve(dir)\n if (prebuild) return prebuild\n\n var nearby = resolve(path.dirname(process.execPath))\n if (nearby) return nearby\n\n var target = [\n 'platform=' + platform,\n 'arch=' + arch,\n 'runtime=' + runtime,\n 'abi=' + abi,\n 'uv=' + uv,\n armv ? 'armv=' + armv : '',\n 'libc=' + libc,\n 'node=' + process.versions.node,\n process.versions.electron ? 'electron=' + process.versions.electron : '',\n typeof __webpack_require__ === 'function' ? 'webpack=true' : '' // eslint-disable-line\n ].filter(Boolean).join(' ')\n\n throw new Error('No native build was found for ' + target + '\\n loaded from: ' + dir + '\\n')\n\n function resolve (dir) {\n // Find matching \"prebuilds/-\" directory\n var tuples = readdirSync(path.join(dir, 'prebuilds')).map(parseTuple)\n var tuple = tuples.filter(matchTuple(platform, arch)).sort(compareTuples)[0]\n if (!tuple) return\n\n // Find most specific flavor first\n var prebuilds = path.join(dir, 'prebuilds', tuple.name)\n var parsed = readdirSync(prebuilds).map(parseTags)\n var candidates = parsed.filter(matchTags(runtime, abi))\n var winner = candidates.sort(compareTags(runtime))[0]\n if (winner) return path.join(prebuilds, winner.file)\n }\n}\n\nfunction readdirSync (dir) {\n try {\n return fs.readdirSync(dir)\n } catch (err) {\n return []\n }\n}\n\nfunction getFirst (dir, filter) {\n var files = readdirSync(dir).filter(filter)\n return files[0] && path.join(dir, files[0])\n}\n\nfunction matchBuild (name) {\n return /\\.node$/.test(name)\n}\n\nfunction parseTuple (name) {\n // Example: darwin-x64+arm64\n var arr = name.split('-')\n if (arr.length !== 2) return\n\n var platform = arr[0]\n var architectures = arr[1].split('+')\n\n if (!platform) return\n if (!architectures.length) return\n if (!architectures.every(Boolean)) return\n\n return { name, platform, architectures }\n}\n\nfunction matchTuple (platform, arch) {\n return function (tuple) {\n if (tuple == null) return false\n if (tuple.platform !== platform) return false\n return tuple.architectures.includes(arch)\n }\n}\n\nfunction compareTuples (a, b) {\n // Prefer single-arch prebuilds over multi-arch\n return a.architectures.length - b.architectures.length\n}\n\nfunction parseTags (file) {\n var arr = file.split('.')\n var extension = arr.pop()\n var tags = { file: file, specificity: 0 }\n\n if (extension !== 'node') return\n\n for (var i = 0; i < arr.length; i++) {\n var tag = arr[i]\n\n if (tag === 'node' || tag === 'electron' || tag === 'node-webkit') {\n tags.runtime = tag\n } else if (tag === 'napi') {\n tags.napi = true\n } else if (tag.slice(0, 3) === 'abi') {\n tags.abi = tag.slice(3)\n } else if (tag.slice(0, 2) === 'uv') {\n tags.uv = tag.slice(2)\n } else if (tag.slice(0, 4) === 'armv') {\n tags.armv = tag.slice(4)\n } else if (tag === 'glibc' || tag === 'musl') {\n tags.libc = tag\n } else {\n continue\n }\n\n tags.specificity++\n }\n\n return tags\n}\n\nfunction matchTags (runtime, abi) {\n return function (tags) {\n if (tags == null) return false\n if (tags.runtime !== runtime && !runtimeAgnostic(tags)) return false\n if (tags.abi !== abi && !tags.napi) return false\n if (tags.uv && tags.uv !== uv) return false\n if (tags.armv && tags.armv !== armv) return false\n if (tags.libc && tags.libc !== libc) return false\n\n return true\n }\n}\n\nfunction runtimeAgnostic (tags) {\n return tags.runtime === 'node' && tags.napi\n}\n\nfunction compareTags (runtime) {\n // Precedence: non-agnostic runtime, abi over napi, then by specificity.\n return function (a, b) {\n if (a.runtime !== b.runtime) {\n return a.runtime === runtime ? -1 : 1\n } else if (a.abi !== b.abi) {\n return a.abi ? -1 : 1\n } else if (a.specificity !== b.specificity) {\n return a.specificity > b.specificity ? -1 : 1\n } else {\n return 0\n }\n }\n}\n\nfunction isElectron () {\n if (process.versions && process.versions.electron) return true\n if (process.env.ELECTRON_RUN_AS_NODE) return true\n return typeof window !== 'undefined' && window.process && window.process.type === 'renderer'\n}\n\nfunction isAlpine (platform) {\n return platform === 'linux' && fs.existsSync('/etc/alpine-release')\n}\n\n// Exposed for unit tests\n// TODO: move to lib\nload.parseTags = parseTags\nload.matchTags = matchTags\nload.compareTags = compareTags\nload.parseTuple = parseTuple\nload.matchTuple = matchTuple\nload.compareTuples = compareTuples\n", "'use strict';\n\n/**\n * Masks a buffer using the given mask.\n *\n * @param {Buffer} source The buffer to mask\n * @param {Buffer} mask The mask to use\n * @param {Buffer} output The buffer where to store the result\n * @param {Number} offset The offset at which to start writing\n * @param {Number} length The number of bytes to mask.\n * @public\n */\nconst mask = (source, mask, output, offset, length) => {\n for (var i = 0; i < length; i++) {\n output[offset + i] = source[i] ^ mask[i & 3];\n }\n};\n\n/**\n * Unmasks a buffer using the given mask.\n *\n * @param {Buffer} buffer The buffer to unmask\n * @param {Buffer} mask The mask to use\n * @public\n */\nconst unmask = (buffer, mask) => {\n // Required until https://github.com/nodejs/node/issues/9006 is resolved.\n const length = buffer.length;\n for (var i = 0; i < length; i++) {\n buffer[i] ^= mask[i & 3];\n }\n};\n\nmodule.exports = { mask, unmask };\n", "'use strict';\n\ntry {\n module.exports = require('node-gyp-build')(__dirname);\n} catch (e) {\n module.exports = require('./fallback');\n}\n", "'use strict';\n\nconst { EMPTY_BUFFER } = require('./constants');\n\n/**\n * Merges an array of buffers into a new buffer.\n *\n * @param {Buffer[]} list The array of buffers to concat\n * @param {Number} totalLength The total length of buffers in the list\n * @return {Buffer} The resulting buffer\n * @public\n */\nfunction concat(list, totalLength) {\n if (list.length === 0) return EMPTY_BUFFER;\n if (list.length === 1) return list[0];\n\n const target = Buffer.allocUnsafe(totalLength);\n let offset = 0;\n\n for (let i = 0; i < list.length; i++) {\n const buf = list[i];\n target.set(buf, offset);\n offset += buf.length;\n }\n\n if (offset < totalLength) return target.slice(0, offset);\n\n return target;\n}\n\n/**\n * Masks a buffer using the given mask.\n *\n * @param {Buffer} source The buffer to mask\n * @param {Buffer} mask The mask to use\n * @param {Buffer} output The buffer where to store the result\n * @param {Number} offset The offset at which to start writing\n * @param {Number} length The number of bytes to mask.\n * @public\n */\nfunction _mask(source, mask, output, offset, length) {\n for (let i = 0; i < length; i++) {\n output[offset + i] = source[i] ^ mask[i & 3];\n }\n}\n\n/**\n * Unmasks a buffer using the given mask.\n *\n * @param {Buffer} buffer The buffer to unmask\n * @param {Buffer} mask The mask to use\n * @public\n */\nfunction _unmask(buffer, mask) {\n // Required until https://github.com/nodejs/node/issues/9006 is resolved.\n const length = buffer.length;\n for (let i = 0; i < length; i++) {\n buffer[i] ^= mask[i & 3];\n }\n}\n\n/**\n * Converts a buffer to an `ArrayBuffer`.\n *\n * @param {Buffer} buf The buffer to convert\n * @return {ArrayBuffer} Converted buffer\n * @public\n */\nfunction toArrayBuffer(buf) {\n if (buf.byteLength === buf.buffer.byteLength) {\n return buf.buffer;\n }\n\n return buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength);\n}\n\n/**\n * Converts `data` to a `Buffer`.\n *\n * @param {*} data The data to convert\n * @return {Buffer} The buffer\n * @throws {TypeError}\n * @public\n */\nfunction toBuffer(data) {\n toBuffer.readOnly = true;\n\n if (Buffer.isBuffer(data)) return data;\n\n let buf;\n\n if (data instanceof ArrayBuffer) {\n buf = Buffer.from(data);\n } else if (ArrayBuffer.isView(data)) {\n buf = Buffer.from(data.buffer, data.byteOffset, data.byteLength);\n } else {\n buf = Buffer.from(data);\n toBuffer.readOnly = false;\n }\n\n return buf;\n}\n\ntry {\n const bufferUtil = require('bufferutil');\n const bu = bufferUtil.BufferUtil || bufferUtil;\n\n module.exports = {\n concat,\n mask(source, mask, output, offset, length) {\n if (length < 48) _mask(source, mask, output, offset, length);\n else bu.mask(source, mask, output, offset, length);\n },\n toArrayBuffer,\n toBuffer,\n unmask(buffer, mask) {\n if (buffer.length < 32) _unmask(buffer, mask);\n else bu.unmask(buffer, mask);\n }\n };\n} catch (e) /* istanbul ignore next */ {\n module.exports = {\n concat,\n mask: _mask,\n toArrayBuffer,\n toBuffer,\n unmask: _unmask\n };\n}\n", "'use strict';\n\nconst kDone = Symbol('kDone');\nconst kRun = Symbol('kRun');\n\n/**\n * A very simple job queue with adjustable concurrency. Adapted from\n * https://github.com/STRML/async-limiter\n */\nclass Limiter {\n /**\n * Creates a new `Limiter`.\n *\n * @param {Number} [concurrency=Infinity] The maximum number of jobs allowed\n * to run concurrently\n */\n constructor(concurrency) {\n this[kDone] = () => {\n this.pending--;\n this[kRun]();\n };\n this.concurrency = concurrency || Infinity;\n this.jobs = [];\n this.pending = 0;\n }\n\n /**\n * Adds a job to the queue.\n *\n * @param {Function} job The job to run\n * @public\n */\n add(job) {\n this.jobs.push(job);\n this[kRun]();\n }\n\n /**\n * Removes a job from the queue and runs it if possible.\n *\n * @private\n */\n [kRun]() {\n if (this.pending === this.concurrency) return;\n\n if (this.jobs.length) {\n const job = this.jobs.shift();\n\n this.pending++;\n job(this[kDone]);\n }\n }\n}\n\nmodule.exports = Limiter;\n", "'use strict';\n\nconst zlib = require('zlib');\n\nconst bufferUtil = require('./buffer-util');\nconst Limiter = require('./limiter');\nconst { kStatusCode, NOOP } = require('./constants');\n\nconst TRAILER = Buffer.from([0x00, 0x00, 0xff, 0xff]);\nconst kPerMessageDeflate = Symbol('permessage-deflate');\nconst kTotalLength = Symbol('total-length');\nconst kCallback = Symbol('callback');\nconst kBuffers = Symbol('buffers');\nconst kError = Symbol('error');\n\n//\n// We limit zlib concurrency, which prevents severe memory fragmentation\n// as documented in https://github.com/nodejs/node/issues/8871#issuecomment-250915913\n// and https://github.com/websockets/ws/issues/1202\n//\n// Intentionally global; it's the global thread pool that's an issue.\n//\nlet zlibLimiter;\n\n/**\n * permessage-deflate implementation.\n */\nclass PerMessageDeflate {\n /**\n * Creates a PerMessageDeflate instance.\n *\n * @param {Object} [options] Configuration options\n * @param {Boolean} [options.serverNoContextTakeover=false] Request/accept\n * disabling of server context takeover\n * @param {Boolean} [options.clientNoContextTakeover=false] Advertise/\n * acknowledge disabling of client context takeover\n * @param {(Boolean|Number)} [options.serverMaxWindowBits] Request/confirm the\n * use of a custom server window size\n * @param {(Boolean|Number)} [options.clientMaxWindowBits] Advertise support\n * for, or request, a custom client window size\n * @param {Object} [options.zlibDeflateOptions] Options to pass to zlib on\n * deflate\n * @param {Object} [options.zlibInflateOptions] Options to pass to zlib on\n * inflate\n * @param {Number} [options.threshold=1024] Size (in bytes) below which\n * messages should not be compressed\n * @param {Number} [options.concurrencyLimit=10] The number of concurrent\n * calls to zlib\n * @param {Boolean} [isServer=false] Create the instance in either server or\n * client mode\n * @param {Number} [maxPayload=0] The maximum allowed message length\n */\n constructor(options, isServer, maxPayload) {\n this._maxPayload = maxPayload | 0;\n this._options = options || {};\n this._threshold =\n this._options.threshold !== undefined ? this._options.threshold : 1024;\n this._isServer = !!isServer;\n this._deflate = null;\n this._inflate = null;\n\n this.params = null;\n\n if (!zlibLimiter) {\n const concurrency =\n this._options.concurrencyLimit !== undefined\n ? this._options.concurrencyLimit\n : 10;\n zlibLimiter = new Limiter(concurrency);\n }\n }\n\n /**\n * @type {String}\n */\n static get extensionName() {\n return 'permessage-deflate';\n }\n\n /**\n * Create an extension negotiation offer.\n *\n * @return {Object} Extension parameters\n * @public\n */\n offer() {\n const params = {};\n\n if (this._options.serverNoContextTakeover) {\n params.server_no_context_takeover = true;\n }\n if (this._options.clientNoContextTakeover) {\n params.client_no_context_takeover = true;\n }\n if (this._options.serverMaxWindowBits) {\n params.server_max_window_bits = this._options.serverMaxWindowBits;\n }\n if (this._options.clientMaxWindowBits) {\n params.client_max_window_bits = this._options.clientMaxWindowBits;\n } else if (this._options.clientMaxWindowBits == null) {\n params.client_max_window_bits = true;\n }\n\n return params;\n }\n\n /**\n * Accept an extension negotiation offer/response.\n *\n * @param {Array} configurations The extension negotiation offers/reponse\n * @return {Object} Accepted configuration\n * @public\n */\n accept(configurations) {\n configurations = this.normalizeParams(configurations);\n\n this.params = this._isServer\n ? this.acceptAsServer(configurations)\n : this.acceptAsClient(configurations);\n\n return this.params;\n }\n\n /**\n * Releases all resources used by the extension.\n *\n * @public\n */\n cleanup() {\n if (this._inflate) {\n this._inflate.close();\n this._inflate = null;\n }\n\n if (this._deflate) {\n const callback = this._deflate[kCallback];\n\n this._deflate.close();\n this._deflate = null;\n\n if (callback) {\n callback(\n new Error(\n 'The deflate stream was closed while data was being processed'\n )\n );\n }\n }\n }\n\n /**\n * Accept an extension negotiation offer.\n *\n * @param {Array} offers The extension negotiation offers\n * @return {Object} Accepted configuration\n * @private\n */\n acceptAsServer(offers) {\n const opts = this._options;\n const accepted = offers.find((params) => {\n if (\n (opts.serverNoContextTakeover === false &&\n params.server_no_context_takeover) ||\n (params.server_max_window_bits &&\n (opts.serverMaxWindowBits === false ||\n (typeof opts.serverMaxWindowBits === 'number' &&\n opts.serverMaxWindowBits > params.server_max_window_bits))) ||\n (typeof opts.clientMaxWindowBits === 'number' &&\n !params.client_max_window_bits)\n ) {\n return false;\n }\n\n return true;\n });\n\n if (!accepted) {\n throw new Error('None of the extension offers can be accepted');\n }\n\n if (opts.serverNoContextTakeover) {\n accepted.server_no_context_takeover = true;\n }\n if (opts.clientNoContextTakeover) {\n accepted.client_no_context_takeover = true;\n }\n if (typeof opts.serverMaxWindowBits === 'number') {\n accepted.server_max_window_bits = opts.serverMaxWindowBits;\n }\n if (typeof opts.clientMaxWindowBits === 'number') {\n accepted.client_max_window_bits = opts.clientMaxWindowBits;\n } else if (\n accepted.client_max_window_bits === true ||\n opts.clientMaxWindowBits === false\n ) {\n delete accepted.client_max_window_bits;\n }\n\n return accepted;\n }\n\n /**\n * Accept the extension negotiation response.\n *\n * @param {Array} response The extension negotiation response\n * @return {Object} Accepted configuration\n * @private\n */\n acceptAsClient(response) {\n const params = response[0];\n\n if (\n this._options.clientNoContextTakeover === false &&\n params.client_no_context_takeover\n ) {\n throw new Error('Unexpected parameter \"client_no_context_takeover\"');\n }\n\n if (!params.client_max_window_bits) {\n if (typeof this._options.clientMaxWindowBits === 'number') {\n params.client_max_window_bits = this._options.clientMaxWindowBits;\n }\n } else if (\n this._options.clientMaxWindowBits === false ||\n (typeof this._options.clientMaxWindowBits === 'number' &&\n params.client_max_window_bits > this._options.clientMaxWindowBits)\n ) {\n throw new Error(\n 'Unexpected or invalid parameter \"client_max_window_bits\"'\n );\n }\n\n return params;\n }\n\n /**\n * Normalize parameters.\n *\n * @param {Array} configurations The extension negotiation offers/reponse\n * @return {Array} The offers/response with normalized parameters\n * @private\n */\n normalizeParams(configurations) {\n configurations.forEach((params) => {\n Object.keys(params).forEach((key) => {\n let value = params[key];\n\n if (value.length > 1) {\n throw new Error(`Parameter \"${key}\" must have only a single value`);\n }\n\n value = value[0];\n\n if (key === 'client_max_window_bits') {\n if (value !== true) {\n const num = +value;\n if (!Number.isInteger(num) || num < 8 || num > 15) {\n throw new TypeError(\n `Invalid value for parameter \"${key}\": ${value}`\n );\n }\n value = num;\n } else if (!this._isServer) {\n throw new TypeError(\n `Invalid value for parameter \"${key}\": ${value}`\n );\n }\n } else if (key === 'server_max_window_bits') {\n const num = +value;\n if (!Number.isInteger(num) || num < 8 || num > 15) {\n throw new TypeError(\n `Invalid value for parameter \"${key}\": ${value}`\n );\n }\n value = num;\n } else if (\n key === 'client_no_context_takeover' ||\n key === 'server_no_context_takeover'\n ) {\n if (value !== true) {\n throw new TypeError(\n `Invalid value for parameter \"${key}\": ${value}`\n );\n }\n } else {\n throw new Error(`Unknown parameter \"${key}\"`);\n }\n\n params[key] = value;\n });\n });\n\n return configurations;\n }\n\n /**\n * Decompress data. Concurrency limited.\n *\n * @param {Buffer} data Compressed data\n * @param {Boolean} fin Specifies whether or not this is the last fragment\n * @param {Function} callback Callback\n * @public\n */\n decompress(data, fin, callback) {\n zlibLimiter.add((done) => {\n this._decompress(data, fin, (err, result) => {\n done();\n callback(err, result);\n });\n });\n }\n\n /**\n * Compress data. Concurrency limited.\n *\n * @param {Buffer} data Data to compress\n * @param {Boolean} fin Specifies whether or not this is the last fragment\n * @param {Function} callback Callback\n * @public\n */\n compress(data, fin, callback) {\n zlibLimiter.add((done) => {\n this._compress(data, fin, (err, result) => {\n done();\n callback(err, result);\n });\n });\n }\n\n /**\n * Decompress data.\n *\n * @param {Buffer} data Compressed data\n * @param {Boolean} fin Specifies whether or not this is the last fragment\n * @param {Function} callback Callback\n * @private\n */\n _decompress(data, fin, callback) {\n const endpoint = this._isServer ? 'client' : 'server';\n\n if (!this._inflate) {\n const key = `${endpoint}_max_window_bits`;\n const windowBits =\n typeof this.params[key] !== 'number'\n ? zlib.Z_DEFAULT_WINDOWBITS\n : this.params[key];\n\n this._inflate = zlib.createInflateRaw({\n ...this._options.zlibInflateOptions,\n windowBits\n });\n this._inflate[kPerMessageDeflate] = this;\n this._inflate[kTotalLength] = 0;\n this._inflate[kBuffers] = [];\n this._inflate.on('error', inflateOnError);\n this._inflate.on('data', inflateOnData);\n }\n\n this._inflate[kCallback] = callback;\n\n this._inflate.write(data);\n if (fin) this._inflate.write(TRAILER);\n\n this._inflate.flush(() => {\n const err = this._inflate[kError];\n\n if (err) {\n this._inflate.close();\n this._inflate = null;\n callback(err);\n return;\n }\n\n const data = bufferUtil.concat(\n this._inflate[kBuffers],\n this._inflate[kTotalLength]\n );\n\n if (this._inflate._readableState.endEmitted) {\n this._inflate.close();\n this._inflate = null;\n } else {\n this._inflate[kTotalLength] = 0;\n this._inflate[kBuffers] = [];\n\n if (fin && this.params[`${endpoint}_no_context_takeover`]) {\n this._inflate.reset();\n }\n }\n\n callback(null, data);\n });\n }\n\n /**\n * Compress data.\n *\n * @param {Buffer} data Data to compress\n * @param {Boolean} fin Specifies whether or not this is the last fragment\n * @param {Function} callback Callback\n * @private\n */\n _compress(data, fin, callback) {\n const endpoint = this._isServer ? 'server' : 'client';\n\n if (!this._deflate) {\n const key = `${endpoint}_max_window_bits`;\n const windowBits =\n typeof this.params[key] !== 'number'\n ? zlib.Z_DEFAULT_WINDOWBITS\n : this.params[key];\n\n this._deflate = zlib.createDeflateRaw({\n ...this._options.zlibDeflateOptions,\n windowBits\n });\n\n this._deflate[kTotalLength] = 0;\n this._deflate[kBuffers] = [];\n\n //\n // An `'error'` event is emitted, only on Node.js < 10.0.0, if the\n // `zlib.DeflateRaw` instance is closed while data is being processed.\n // This can happen if `PerMessageDeflate#cleanup()` is called at the wrong\n // time due to an abnormal WebSocket closure.\n //\n this._deflate.on('error', NOOP);\n this._deflate.on('data', deflateOnData);\n }\n\n this._deflate[kCallback] = callback;\n\n this._deflate.write(data);\n this._deflate.flush(zlib.Z_SYNC_FLUSH, () => {\n if (!this._deflate) {\n //\n // The deflate stream was closed while data was being processed.\n //\n return;\n }\n\n let data = bufferUtil.concat(\n this._deflate[kBuffers],\n this._deflate[kTotalLength]\n );\n\n if (fin) data = data.slice(0, data.length - 4);\n\n //\n // Ensure that the callback will not be called again in\n // `PerMessageDeflate#cleanup()`.\n //\n this._deflate[kCallback] = null;\n\n this._deflate[kTotalLength] = 0;\n this._deflate[kBuffers] = [];\n\n if (fin && this.params[`${endpoint}_no_context_takeover`]) {\n this._deflate.reset();\n }\n\n callback(null, data);\n });\n }\n}\n\nmodule.exports = PerMessageDeflate;\n\n/**\n * The listener of the `zlib.DeflateRaw` stream `'data'` event.\n *\n * @param {Buffer} chunk A chunk of data\n * @private\n */\nfunction deflateOnData(chunk) {\n this[kBuffers].push(chunk);\n this[kTotalLength] += chunk.length;\n}\n\n/**\n * The listener of the `zlib.InflateRaw` stream `'data'` event.\n *\n * @param {Buffer} chunk A chunk of data\n * @private\n */\nfunction inflateOnData(chunk) {\n this[kTotalLength] += chunk.length;\n\n if (\n this[kPerMessageDeflate]._maxPayload < 1 ||\n this[kTotalLength] <= this[kPerMessageDeflate]._maxPayload\n ) {\n this[kBuffers].push(chunk);\n return;\n }\n\n this[kError] = new RangeError('Max payload size exceeded');\n this[kError][kStatusCode] = 1009;\n this.removeListener('data', inflateOnData);\n this.reset();\n}\n\n/**\n * The listener of the `zlib.InflateRaw` stream `'error'` event.\n *\n * @param {Error} err The emitted error\n * @private\n */\nfunction inflateOnError(err) {\n //\n // There is no need to call `Zlib#close()` as the handle is automatically\n // closed when an error is emitted.\n //\n this[kPerMessageDeflate]._inflate = null;\n err[kStatusCode] = 1007;\n this[kCallback](err);\n}\n", "'use strict';\n\n/**\n * Checks if a given buffer contains only correct UTF-8.\n * Ported from https://www.cl.cam.ac.uk/%7Emgk25/ucs/utf8_check.c by\n * Markus Kuhn.\n *\n * @param {Buffer} buf The buffer to check\n * @return {Boolean} `true` if `buf` contains only correct UTF-8, else `false`\n * @public\n */\nfunction isValidUTF8(buf) {\n const len = buf.length;\n let i = 0;\n\n while (i < len) {\n if ((buf[i] & 0x80) === 0x00) { // 0xxxxxxx\n i++;\n } else if ((buf[i] & 0xe0) === 0xc0) { // 110xxxxx 10xxxxxx\n if (\n i + 1 === len ||\n (buf[i + 1] & 0xc0) !== 0x80 ||\n (buf[i] & 0xfe) === 0xc0 // overlong\n ) {\n return false;\n }\n\n i += 2;\n } else if ((buf[i] & 0xf0) === 0xe0) { // 1110xxxx 10xxxxxx 10xxxxxx\n if (\n i + 2 >= len ||\n (buf[i + 1] & 0xc0) !== 0x80 ||\n (buf[i + 2] & 0xc0) !== 0x80 ||\n buf[i] === 0xe0 && (buf[i + 1] & 0xe0) === 0x80 || // overlong\n buf[i] === 0xed && (buf[i + 1] & 0xe0) === 0xa0 // surrogate (U+D800 - U+DFFF)\n ) {\n return false;\n }\n\n i += 3;\n } else if ((buf[i] & 0xf8) === 0xf0) { // 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx\n if (\n i + 3 >= len ||\n (buf[i + 1] & 0xc0) !== 0x80 ||\n (buf[i + 2] & 0xc0) !== 0x80 ||\n (buf[i + 3] & 0xc0) !== 0x80 ||\n buf[i] === 0xf0 && (buf[i + 1] & 0xf0) === 0x80 || // overlong\n buf[i] === 0xf4 && buf[i + 1] > 0x8f || buf[i] > 0xf4 // > U+10FFFF\n ) {\n return false;\n }\n\n i += 4;\n } else {\n return false;\n }\n }\n\n return true;\n}\n\nmodule.exports = isValidUTF8;\n", "'use strict';\n\ntry {\n module.exports = require('node-gyp-build')(__dirname);\n} catch (e) {\n module.exports = require('./fallback');\n}\n", "'use strict';\n\n/**\n * Checks if a status code is allowed in a close frame.\n *\n * @param {Number} code The status code\n * @return {Boolean} `true` if the status code is valid, else `false`\n * @public\n */\nfunction isValidStatusCode(code) {\n return (\n (code >= 1000 &&\n code <= 1014 &&\n code !== 1004 &&\n code !== 1005 &&\n code !== 1006) ||\n (code >= 3000 && code <= 4999)\n );\n}\n\n/**\n * Checks if a given buffer contains only correct UTF-8.\n * Ported from https://www.cl.cam.ac.uk/%7Emgk25/ucs/utf8_check.c by\n * Markus Kuhn.\n *\n * @param {Buffer} buf The buffer to check\n * @return {Boolean} `true` if `buf` contains only correct UTF-8, else `false`\n * @public\n */\nfunction _isValidUTF8(buf) {\n const len = buf.length;\n let i = 0;\n\n while (i < len) {\n if ((buf[i] & 0x80) === 0) {\n // 0xxxxxxx\n i++;\n } else if ((buf[i] & 0xe0) === 0xc0) {\n // 110xxxxx 10xxxxxx\n if (\n i + 1 === len ||\n (buf[i + 1] & 0xc0) !== 0x80 ||\n (buf[i] & 0xfe) === 0xc0 // Overlong\n ) {\n return false;\n }\n\n i += 2;\n } else if ((buf[i] & 0xf0) === 0xe0) {\n // 1110xxxx 10xxxxxx 10xxxxxx\n if (\n i + 2 >= len ||\n (buf[i + 1] & 0xc0) !== 0x80 ||\n (buf[i + 2] & 0xc0) !== 0x80 ||\n (buf[i] === 0xe0 && (buf[i + 1] & 0xe0) === 0x80) || // Overlong\n (buf[i] === 0xed && (buf[i + 1] & 0xe0) === 0xa0) // Surrogate (U+D800 - U+DFFF)\n ) {\n return false;\n }\n\n i += 3;\n } else if ((buf[i] & 0xf8) === 0xf0) {\n // 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx\n if (\n i + 3 >= len ||\n (buf[i + 1] & 0xc0) !== 0x80 ||\n (buf[i + 2] & 0xc0) !== 0x80 ||\n (buf[i + 3] & 0xc0) !== 0x80 ||\n (buf[i] === 0xf0 && (buf[i + 1] & 0xf0) === 0x80) || // Overlong\n (buf[i] === 0xf4 && buf[i + 1] > 0x8f) ||\n buf[i] > 0xf4 // > U+10FFFF\n ) {\n return false;\n }\n\n i += 4;\n } else {\n return false;\n }\n }\n\n return true;\n}\n\ntry {\n let isValidUTF8 = require('utf-8-validate');\n\n /* istanbul ignore if */\n if (typeof isValidUTF8 === 'object') {\n isValidUTF8 = isValidUTF8.Validation.isValidUTF8; // utf-8-validate@<3.0.0\n }\n\n module.exports = {\n isValidStatusCode,\n isValidUTF8(buf) {\n return buf.length < 150 ? _isValidUTF8(buf) : isValidUTF8(buf);\n }\n };\n} catch (e) /* istanbul ignore next */ {\n module.exports = {\n isValidStatusCode,\n isValidUTF8: _isValidUTF8\n };\n}\n", "'use strict';\n\nconst { Writable } = require('stream');\n\nconst PerMessageDeflate = require('./permessage-deflate');\nconst {\n BINARY_TYPES,\n EMPTY_BUFFER,\n kStatusCode,\n kWebSocket\n} = require('./constants');\nconst { concat, toArrayBuffer, unmask } = require('./buffer-util');\nconst { isValidStatusCode, isValidUTF8 } = require('./validation');\n\nconst GET_INFO = 0;\nconst GET_PAYLOAD_LENGTH_16 = 1;\nconst GET_PAYLOAD_LENGTH_64 = 2;\nconst GET_MASK = 3;\nconst GET_DATA = 4;\nconst INFLATING = 5;\n\n/**\n * HyBi Receiver implementation.\n *\n * @extends stream.Writable\n */\nclass Receiver extends Writable {\n /**\n * Creates a Receiver instance.\n *\n * @param {String} [binaryType=nodebuffer] The type for binary data\n * @param {Object} [extensions] An object containing the negotiated extensions\n * @param {Boolean} [isServer=false] Specifies whether to operate in client or\n * server mode\n * @param {Number} [maxPayload=0] The maximum allowed message length\n */\n constructor(binaryType, extensions, isServer, maxPayload) {\n super();\n\n this._binaryType = binaryType || BINARY_TYPES[0];\n this[kWebSocket] = undefined;\n this._extensions = extensions || {};\n this._isServer = !!isServer;\n this._maxPayload = maxPayload | 0;\n\n this._bufferedBytes = 0;\n this._buffers = [];\n\n this._compressed = false;\n this._payloadLength = 0;\n this._mask = undefined;\n this._fragmented = 0;\n this._masked = false;\n this._fin = false;\n this._opcode = 0;\n\n this._totalPayloadLength = 0;\n this._messageLength = 0;\n this._fragments = [];\n\n this._state = GET_INFO;\n this._loop = false;\n }\n\n /**\n * Implements `Writable.prototype._write()`.\n *\n * @param {Buffer} chunk The chunk of data to write\n * @param {String} encoding The character encoding of `chunk`\n * @param {Function} cb Callback\n * @private\n */\n _write(chunk, encoding, cb) {\n if (this._opcode === 0x08 && this._state == GET_INFO) return cb();\n\n this._bufferedBytes += chunk.length;\n this._buffers.push(chunk);\n this.startLoop(cb);\n }\n\n /**\n * Consumes `n` bytes from the buffered data.\n *\n * @param {Number} n The number of bytes to consume\n * @return {Buffer} The consumed bytes\n * @private\n */\n consume(n) {\n this._bufferedBytes -= n;\n\n if (n === this._buffers[0].length) return this._buffers.shift();\n\n if (n < this._buffers[0].length) {\n const buf = this._buffers[0];\n this._buffers[0] = buf.slice(n);\n return buf.slice(0, n);\n }\n\n const dst = Buffer.allocUnsafe(n);\n\n do {\n const buf = this._buffers[0];\n const offset = dst.length - n;\n\n if (n >= buf.length) {\n dst.set(this._buffers.shift(), offset);\n } else {\n dst.set(new Uint8Array(buf.buffer, buf.byteOffset, n), offset);\n this._buffers[0] = buf.slice(n);\n }\n\n n -= buf.length;\n } while (n > 0);\n\n return dst;\n }\n\n /**\n * Starts the parsing loop.\n *\n * @param {Function} cb Callback\n * @private\n */\n startLoop(cb) {\n let err;\n this._loop = true;\n\n do {\n switch (this._state) {\n case GET_INFO:\n err = this.getInfo();\n break;\n case GET_PAYLOAD_LENGTH_16:\n err = this.getPayloadLength16();\n break;\n case GET_PAYLOAD_LENGTH_64:\n err = this.getPayloadLength64();\n break;\n case GET_MASK:\n this.getMask();\n break;\n case GET_DATA:\n err = this.getData(cb);\n break;\n default:\n // `INFLATING`\n this._loop = false;\n return;\n }\n } while (this._loop);\n\n cb(err);\n }\n\n /**\n * Reads the first two bytes of a frame.\n *\n * @return {(RangeError|undefined)} A possible error\n * @private\n */\n getInfo() {\n if (this._bufferedBytes < 2) {\n this._loop = false;\n return;\n }\n\n const buf = this.consume(2);\n\n if ((buf[0] & 0x30) !== 0x00) {\n this._loop = false;\n return error(RangeError, 'RSV2 and RSV3 must be clear', true, 1002);\n }\n\n const compressed = (buf[0] & 0x40) === 0x40;\n\n if (compressed && !this._extensions[PerMessageDeflate.extensionName]) {\n this._loop = false;\n return error(RangeError, 'RSV1 must be clear', true, 1002);\n }\n\n this._fin = (buf[0] & 0x80) === 0x80;\n this._opcode = buf[0] & 0x0f;\n this._payloadLength = buf[1] & 0x7f;\n\n if (this._opcode === 0x00) {\n if (compressed) {\n this._loop = false;\n return error(RangeError, 'RSV1 must be clear', true, 1002);\n }\n\n if (!this._fragmented) {\n this._loop = false;\n return error(RangeError, 'invalid opcode 0', true, 1002);\n }\n\n this._opcode = this._fragmented;\n } else if (this._opcode === 0x01 || this._opcode === 0x02) {\n if (this._fragmented) {\n this._loop = false;\n return error(RangeError, `invalid opcode ${this._opcode}`, true, 1002);\n }\n\n this._compressed = compressed;\n } else if (this._opcode > 0x07 && this._opcode < 0x0b) {\n if (!this._fin) {\n this._loop = false;\n return error(RangeError, 'FIN must be set', true, 1002);\n }\n\n if (compressed) {\n this._loop = false;\n return error(RangeError, 'RSV1 must be clear', true, 1002);\n }\n\n if (this._payloadLength > 0x7d) {\n this._loop = false;\n return error(\n RangeError,\n `invalid payload length ${this._payloadLength}`,\n true,\n 1002\n );\n }\n } else {\n this._loop = false;\n return error(RangeError, `invalid opcode ${this._opcode}`, true, 1002);\n }\n\n if (!this._fin && !this._fragmented) this._fragmented = this._opcode;\n this._masked = (buf[1] & 0x80) === 0x80;\n\n if (this._isServer) {\n if (!this._masked) {\n this._loop = false;\n return error(RangeError, 'MASK must be set', true, 1002);\n }\n } else if (this._masked) {\n this._loop = false;\n return error(RangeError, 'MASK must be clear', true, 1002);\n }\n\n if (this._payloadLength === 126) this._state = GET_PAYLOAD_LENGTH_16;\n else if (this._payloadLength === 127) this._state = GET_PAYLOAD_LENGTH_64;\n else return this.haveLength();\n }\n\n /**\n * Gets extended payload length (7+16).\n *\n * @return {(RangeError|undefined)} A possible error\n * @private\n */\n getPayloadLength16() {\n if (this._bufferedBytes < 2) {\n this._loop = false;\n return;\n }\n\n this._payloadLength = this.consume(2).readUInt16BE(0);\n return this.haveLength();\n }\n\n /**\n * Gets extended payload length (7+64).\n *\n * @return {(RangeError|undefined)} A possible error\n * @private\n */\n getPayloadLength64() {\n if (this._bufferedBytes < 8) {\n this._loop = false;\n return;\n }\n\n const buf = this.consume(8);\n const num = buf.readUInt32BE(0);\n\n //\n // The maximum safe integer in JavaScript is 2^53 - 1. An error is returned\n // if payload length is greater than this number.\n //\n if (num > Math.pow(2, 53 - 32) - 1) {\n this._loop = false;\n return error(\n RangeError,\n 'Unsupported WebSocket frame: payload length > 2^53 - 1',\n false,\n 1009\n );\n }\n\n this._payloadLength = num * Math.pow(2, 32) + buf.readUInt32BE(4);\n return this.haveLength();\n }\n\n /**\n * Payload length has been read.\n *\n * @return {(RangeError|undefined)} A possible error\n * @private\n */\n haveLength() {\n if (this._payloadLength && this._opcode < 0x08) {\n this._totalPayloadLength += this._payloadLength;\n if (this._totalPayloadLength > this._maxPayload && this._maxPayload > 0) {\n this._loop = false;\n return error(RangeError, 'Max payload size exceeded', false, 1009);\n }\n }\n\n if (this._masked) this._state = GET_MASK;\n else this._state = GET_DATA;\n }\n\n /**\n * Reads mask bytes.\n *\n * @private\n */\n getMask() {\n if (this._bufferedBytes < 4) {\n this._loop = false;\n return;\n }\n\n this._mask = this.consume(4);\n this._state = GET_DATA;\n }\n\n /**\n * Reads data bytes.\n *\n * @param {Function} cb Callback\n * @return {(Error|RangeError|undefined)} A possible error\n * @private\n */\n getData(cb) {\n let data = EMPTY_BUFFER;\n\n if (this._payloadLength) {\n if (this._bufferedBytes < this._payloadLength) {\n this._loop = false;\n return;\n }\n\n data = this.consume(this._payloadLength);\n if (this._masked) unmask(data, this._mask);\n }\n\n if (this._opcode > 0x07) return this.controlMessage(data);\n\n if (this._compressed) {\n this._state = INFLATING;\n this.decompress(data, cb);\n return;\n }\n\n if (data.length) {\n //\n // This message is not compressed so its lenght is the sum of the payload\n // length of all fragments.\n //\n this._messageLength = this._totalPayloadLength;\n this._fragments.push(data);\n }\n\n return this.dataMessage();\n }\n\n /**\n * Decompresses data.\n *\n * @param {Buffer} data Compressed data\n * @param {Function} cb Callback\n * @private\n */\n decompress(data, cb) {\n const perMessageDeflate = this._extensions[PerMessageDeflate.extensionName];\n\n perMessageDeflate.decompress(data, this._fin, (err, buf) => {\n if (err) return cb(err);\n\n if (buf.length) {\n this._messageLength += buf.length;\n if (this._messageLength > this._maxPayload && this._maxPayload > 0) {\n return cb(\n error(RangeError, 'Max payload size exceeded', false, 1009)\n );\n }\n\n this._fragments.push(buf);\n }\n\n const er = this.dataMessage();\n if (er) return cb(er);\n\n this.startLoop(cb);\n });\n }\n\n /**\n * Handles a data message.\n *\n * @return {(Error|undefined)} A possible error\n * @private\n */\n dataMessage() {\n if (this._fin) {\n const messageLength = this._messageLength;\n const fragments = this._fragments;\n\n this._totalPayloadLength = 0;\n this._messageLength = 0;\n this._fragmented = 0;\n this._fragments = [];\n\n if (this._opcode === 2) {\n let data;\n\n if (this._binaryType === 'nodebuffer') {\n data = concat(fragments, messageLength);\n } else if (this._binaryType === 'arraybuffer') {\n data = toArrayBuffer(concat(fragments, messageLength));\n } else {\n data = fragments;\n }\n\n this.emit('message', data);\n } else {\n const buf = concat(fragments, messageLength);\n\n if (!isValidUTF8(buf)) {\n this._loop = false;\n return error(Error, 'invalid UTF-8 sequence', true, 1007);\n }\n\n this.emit('message', buf.toString());\n }\n }\n\n this._state = GET_INFO;\n }\n\n /**\n * Handles a control message.\n *\n * @param {Buffer} data Data to handle\n * @return {(Error|RangeError|undefined)} A possible error\n * @private\n */\n controlMessage(data) {\n if (this._opcode === 0x08) {\n this._loop = false;\n\n if (data.length === 0) {\n this.emit('conclude', 1005, '');\n this.end();\n } else if (data.length === 1) {\n return error(RangeError, 'invalid payload length 1', true, 1002);\n } else {\n const code = data.readUInt16BE(0);\n\n if (!isValidStatusCode(code)) {\n return error(RangeError, `invalid status code ${code}`, true, 1002);\n }\n\n const buf = data.slice(2);\n\n if (!isValidUTF8(buf)) {\n return error(Error, 'invalid UTF-8 sequence', true, 1007);\n }\n\n this.emit('conclude', code, buf.toString());\n this.end();\n }\n } else if (this._opcode === 0x09) {\n this.emit('ping', data);\n } else {\n this.emit('pong', data);\n }\n\n this._state = GET_INFO;\n }\n}\n\nmodule.exports = Receiver;\n\n/**\n * Builds an error object.\n *\n * @param {(Error|RangeError)} ErrorCtor The error constructor\n * @param {String} message The error message\n * @param {Boolean} prefix Specifies whether or not to add a default prefix to\n * `message`\n * @param {Number} statusCode The status code\n * @return {(Error|RangeError)} The error\n * @private\n */\nfunction error(ErrorCtor, message, prefix, statusCode) {\n const err = new ErrorCtor(\n prefix ? `Invalid WebSocket frame: ${message}` : message\n );\n\n Error.captureStackTrace(err, error);\n err[kStatusCode] = statusCode;\n return err;\n}\n", "'use strict';\n\nconst { randomFillSync } = require('crypto');\n\nconst PerMessageDeflate = require('./permessage-deflate');\nconst { EMPTY_BUFFER } = require('./constants');\nconst { isValidStatusCode } = require('./validation');\nconst { mask: applyMask, toBuffer } = require('./buffer-util');\n\nconst mask = Buffer.alloc(4);\n\n/**\n * HyBi Sender implementation.\n */\nclass Sender {\n /**\n * Creates a Sender instance.\n *\n * @param {net.Socket} socket The connection socket\n * @param {Object} [extensions] An object containing the negotiated extensions\n */\n constructor(socket, extensions) {\n this._extensions = extensions || {};\n this._socket = socket;\n\n this._firstFragment = true;\n this._compress = false;\n\n this._bufferedBytes = 0;\n this._deflating = false;\n this._queue = [];\n }\n\n /**\n * Frames a piece of data according to the HyBi WebSocket protocol.\n *\n * @param {Buffer} data The data to frame\n * @param {Object} options Options object\n * @param {Number} options.opcode The opcode\n * @param {Boolean} [options.readOnly=false] Specifies whether `data` can be\n * modified\n * @param {Boolean} [options.fin=false] Specifies whether or not to set the\n * FIN bit\n * @param {Boolean} [options.mask=false] Specifies whether or not to mask\n * `data`\n * @param {Boolean} [options.rsv1=false] Specifies whether or not to set the\n * RSV1 bit\n * @return {Buffer[]} The framed data as a list of `Buffer` instances\n * @public\n */\n static frame(data, options) {\n const merge = options.mask && options.readOnly;\n let offset = options.mask ? 6 : 2;\n let payloadLength = data.length;\n\n if (data.length >= 65536) {\n offset += 8;\n payloadLength = 127;\n } else if (data.length > 125) {\n offset += 2;\n payloadLength = 126;\n }\n\n const target = Buffer.allocUnsafe(merge ? data.length + offset : offset);\n\n target[0] = options.fin ? options.opcode | 0x80 : options.opcode;\n if (options.rsv1) target[0] |= 0x40;\n\n target[1] = payloadLength;\n\n if (payloadLength === 126) {\n target.writeUInt16BE(data.length, 2);\n } else if (payloadLength === 127) {\n target.writeUInt32BE(0, 2);\n target.writeUInt32BE(data.length, 6);\n }\n\n if (!options.mask) return [target, data];\n\n randomFillSync(mask, 0, 4);\n\n target[1] |= 0x80;\n target[offset - 4] = mask[0];\n target[offset - 3] = mask[1];\n target[offset - 2] = mask[2];\n target[offset - 1] = mask[3];\n\n if (merge) {\n applyMask(data, mask, target, offset, data.length);\n return [target];\n }\n\n applyMask(data, mask, data, 0, data.length);\n return [target, data];\n }\n\n /**\n * Sends a close message to the other peer.\n *\n * @param {Number} [code] The status code component of the body\n * @param {String} [data] The message component of the body\n * @param {Boolean} [mask=false] Specifies whether or not to mask the message\n * @param {Function} [cb] Callback\n * @public\n */\n close(code, data, mask, cb) {\n let buf;\n\n if (code === undefined) {\n buf = EMPTY_BUFFER;\n } else if (typeof code !== 'number' || !isValidStatusCode(code)) {\n throw new TypeError('First argument must be a valid error code number');\n } else if (data === undefined || data === '') {\n buf = Buffer.allocUnsafe(2);\n buf.writeUInt16BE(code, 0);\n } else {\n const length = Buffer.byteLength(data);\n\n if (length > 123) {\n throw new RangeError('The message must not be greater than 123 bytes');\n }\n\n buf = Buffer.allocUnsafe(2 + length);\n buf.writeUInt16BE(code, 0);\n buf.write(data, 2);\n }\n\n if (this._deflating) {\n this.enqueue([this.doClose, buf, mask, cb]);\n } else {\n this.doClose(buf, mask, cb);\n }\n }\n\n /**\n * Frames and sends a close message.\n *\n * @param {Buffer} data The message to send\n * @param {Boolean} [mask=false] Specifies whether or not to mask `data`\n * @param {Function} [cb] Callback\n * @private\n */\n doClose(data, mask, cb) {\n this.sendFrame(\n Sender.frame(data, {\n fin: true,\n rsv1: false,\n opcode: 0x08,\n mask,\n readOnly: false\n }),\n cb\n );\n }\n\n /**\n * Sends a ping message to the other peer.\n *\n * @param {*} data The message to send\n * @param {Boolean} [mask=false] Specifies whether or not to mask `data`\n * @param {Function} [cb] Callback\n * @public\n */\n ping(data, mask, cb) {\n const buf = toBuffer(data);\n\n if (buf.length > 125) {\n throw new RangeError('The data size must not be greater than 125 bytes');\n }\n\n if (this._deflating) {\n this.enqueue([this.doPing, buf, mask, toBuffer.readOnly, cb]);\n } else {\n this.doPing(buf, mask, toBuffer.readOnly, cb);\n }\n }\n\n /**\n * Frames and sends a ping message.\n *\n * @param {Buffer} data The message to send\n * @param {Boolean} [mask=false] Specifies whether or not to mask `data`\n * @param {Boolean} [readOnly=false] Specifies whether `data` can be modified\n * @param {Function} [cb] Callback\n * @private\n */\n doPing(data, mask, readOnly, cb) {\n this.sendFrame(\n Sender.frame(data, {\n fin: true,\n rsv1: false,\n opcode: 0x09,\n mask,\n readOnly\n }),\n cb\n );\n }\n\n /**\n * Sends a pong message to the other peer.\n *\n * @param {*} data The message to send\n * @param {Boolean} [mask=false] Specifies whether or not to mask `data`\n * @param {Function} [cb] Callback\n * @public\n */\n pong(data, mask, cb) {\n const buf = toBuffer(data);\n\n if (buf.length > 125) {\n throw new RangeError('The data size must not be greater than 125 bytes');\n }\n\n if (this._deflating) {\n this.enqueue([this.doPong, buf, mask, toBuffer.readOnly, cb]);\n } else {\n this.doPong(buf, mask, toBuffer.readOnly, cb);\n }\n }\n\n /**\n * Frames and sends a pong message.\n *\n * @param {Buffer} data The message to send\n * @param {Boolean} [mask=false] Specifies whether or not to mask `data`\n * @param {Boolean} [readOnly=false] Specifies whether `data` can be modified\n * @param {Function} [cb] Callback\n * @private\n */\n doPong(data, mask, readOnly, cb) {\n this.sendFrame(\n Sender.frame(data, {\n fin: true,\n rsv1: false,\n opcode: 0x0a,\n mask,\n readOnly\n }),\n cb\n );\n }\n\n /**\n * Sends a data message to the other peer.\n *\n * @param {*} data The message to send\n * @param {Object} options Options object\n * @param {Boolean} [options.compress=false] Specifies whether or not to\n * compress `data`\n * @param {Boolean} [options.binary=false] Specifies whether `data` is binary\n * or text\n * @param {Boolean} [options.fin=false] Specifies whether the fragment is the\n * last one\n * @param {Boolean} [options.mask=false] Specifies whether or not to mask\n * `data`\n * @param {Function} [cb] Callback\n * @public\n */\n send(data, options, cb) {\n const buf = toBuffer(data);\n const perMessageDeflate = this._extensions[PerMessageDeflate.extensionName];\n let opcode = options.binary ? 2 : 1;\n let rsv1 = options.compress;\n\n if (this._firstFragment) {\n this._firstFragment = false;\n if (rsv1 && perMessageDeflate) {\n rsv1 = buf.length >= perMessageDeflate._threshold;\n }\n this._compress = rsv1;\n } else {\n rsv1 = false;\n opcode = 0;\n }\n\n if (options.fin) this._firstFragment = true;\n\n if (perMessageDeflate) {\n const opts = {\n fin: options.fin,\n rsv1,\n opcode,\n mask: options.mask,\n readOnly: toBuffer.readOnly\n };\n\n if (this._deflating) {\n this.enqueue([this.dispatch, buf, this._compress, opts, cb]);\n } else {\n this.dispatch(buf, this._compress, opts, cb);\n }\n } else {\n this.sendFrame(\n Sender.frame(buf, {\n fin: options.fin,\n rsv1: false,\n opcode,\n mask: options.mask,\n readOnly: toBuffer.readOnly\n }),\n cb\n );\n }\n }\n\n /**\n * Dispatches a data message.\n *\n * @param {Buffer} data The message to send\n * @param {Boolean} [compress=false] Specifies whether or not to compress\n * `data`\n * @param {Object} options Options object\n * @param {Number} options.opcode The opcode\n * @param {Boolean} [options.readOnly=false] Specifies whether `data` can be\n * modified\n * @param {Boolean} [options.fin=false] Specifies whether or not to set the\n * FIN bit\n * @param {Boolean} [options.mask=false] Specifies whether or not to mask\n * `data`\n * @param {Boolean} [options.rsv1=false] Specifies whether or not to set the\n * RSV1 bit\n * @param {Function} [cb] Callback\n * @private\n */\n dispatch(data, compress, options, cb) {\n if (!compress) {\n this.sendFrame(Sender.frame(data, options), cb);\n return;\n }\n\n const perMessageDeflate = this._extensions[PerMessageDeflate.extensionName];\n\n this._bufferedBytes += data.length;\n this._deflating = true;\n perMessageDeflate.compress(data, options.fin, (_, buf) => {\n if (this._socket.destroyed) {\n const err = new Error(\n 'The socket was closed while data was being compressed'\n );\n\n if (typeof cb === 'function') cb(err);\n\n for (let i = 0; i < this._queue.length; i++) {\n const callback = this._queue[i][4];\n\n if (typeof callback === 'function') callback(err);\n }\n\n return;\n }\n\n this._bufferedBytes -= data.length;\n this._deflating = false;\n options.readOnly = false;\n this.sendFrame(Sender.frame(buf, options), cb);\n this.dequeue();\n });\n }\n\n /**\n * Executes queued send operations.\n *\n * @private\n */\n dequeue() {\n while (!this._deflating && this._queue.length) {\n const params = this._queue.shift();\n\n this._bufferedBytes -= params[1].length;\n Reflect.apply(params[0], this, params.slice(1));\n }\n }\n\n /**\n * Enqueues a send operation.\n *\n * @param {Array} params Send operation parameters.\n * @private\n */\n enqueue(params) {\n this._bufferedBytes += params[1].length;\n this._queue.push(params);\n }\n\n /**\n * Sends a frame.\n *\n * @param {Buffer[]} list The frame to send\n * @param {Function} [cb] Callback\n * @private\n */\n sendFrame(list, cb) {\n if (list.length === 2) {\n this._socket.cork();\n this._socket.write(list[0]);\n this._socket.write(list[1], cb);\n this._socket.uncork();\n } else {\n this._socket.write(list[0], cb);\n }\n }\n}\n\nmodule.exports = Sender;\n", "'use strict';\n\n/**\n * Class representing an event.\n *\n * @private\n */\nclass Event {\n /**\n * Create a new `Event`.\n *\n * @param {String} type The name of the event\n * @param {Object} target A reference to the target to which the event was\n * dispatched\n */\n constructor(type, target) {\n this.target = target;\n this.type = type;\n }\n}\n\n/**\n * Class representing a message event.\n *\n * @extends Event\n * @private\n */\nclass MessageEvent extends Event {\n /**\n * Create a new `MessageEvent`.\n *\n * @param {(String|Buffer|ArrayBuffer|Buffer[])} data The received data\n * @param {WebSocket} target A reference to the target to which the event was\n * dispatched\n */\n constructor(data, target) {\n super('message', target);\n\n this.data = data;\n }\n}\n\n/**\n * Class representing a close event.\n *\n * @extends Event\n * @private\n */\nclass CloseEvent extends Event {\n /**\n * Create a new `CloseEvent`.\n *\n * @param {Number} code The status code explaining why the connection is being\n * closed\n * @param {String} reason A human-readable string explaining why the\n * connection is closing\n * @param {WebSocket} target A reference to the target to which the event was\n * dispatched\n */\n constructor(code, reason, target) {\n super('close', target);\n\n this.wasClean = target._closeFrameReceived && target._closeFrameSent;\n this.reason = reason;\n this.code = code;\n }\n}\n\n/**\n * Class representing an open event.\n *\n * @extends Event\n * @private\n */\nclass OpenEvent extends Event {\n /**\n * Create a new `OpenEvent`.\n *\n * @param {WebSocket} target A reference to the target to which the event was\n * dispatched\n */\n constructor(target) {\n super('open', target);\n }\n}\n\n/**\n * Class representing an error event.\n *\n * @extends Event\n * @private\n */\nclass ErrorEvent extends Event {\n /**\n * Create a new `ErrorEvent`.\n *\n * @param {Object} error The error that generated this event\n * @param {WebSocket} target A reference to the target to which the event was\n * dispatched\n */\n constructor(error, target) {\n super('error', target);\n\n this.message = error.message;\n this.error = error;\n }\n}\n\n/**\n * This provides methods for emulating the `EventTarget` interface. It's not\n * meant to be used directly.\n *\n * @mixin\n */\nconst EventTarget = {\n /**\n * Register an event listener.\n *\n * @param {String} type A string representing the event type to listen for\n * @param {Function} listener The listener to add\n * @param {Object} [options] An options object specifies characteristics about\n * the event listener\n * @param {Boolean} [options.once=false] A `Boolean`` indicating that the\n * listener should be invoked at most once after being added. If `true`,\n * the listener would be automatically removed when invoked.\n * @public\n */\n addEventListener(type, listener, options) {\n if (typeof listener !== 'function') return;\n\n function onMessage(data) {\n listener.call(this, new MessageEvent(data, this));\n }\n\n function onClose(code, message) {\n listener.call(this, new CloseEvent(code, message, this));\n }\n\n function onError(error) {\n listener.call(this, new ErrorEvent(error, this));\n }\n\n function onOpen() {\n listener.call(this, new OpenEvent(this));\n }\n\n const method = options && options.once ? 'once' : 'on';\n\n if (type === 'message') {\n onMessage._listener = listener;\n this[method](type, onMessage);\n } else if (type === 'close') {\n onClose._listener = listener;\n this[method](type, onClose);\n } else if (type === 'error') {\n onError._listener = listener;\n this[method](type, onError);\n } else if (type === 'open') {\n onOpen._listener = listener;\n this[method](type, onOpen);\n } else {\n this[method](type, listener);\n }\n },\n\n /**\n * Remove an event listener.\n *\n * @param {String} type A string representing the event type to remove\n * @param {Function} listener The listener to remove\n * @public\n */\n removeEventListener(type, listener) {\n const listeners = this.listeners(type);\n\n for (let i = 0; i < listeners.length; i++) {\n if (listeners[i] === listener || listeners[i]._listener === listener) {\n this.removeListener(type, listeners[i]);\n }\n }\n }\n};\n\nmodule.exports = EventTarget;\n", "'use strict';\n\n//\n// Allowed token characters:\n//\n// '!', '#', '$', '%', '&', ''', '*', '+', '-',\n// '.', 0-9, A-Z, '^', '_', '`', a-z, '|', '~'\n//\n// tokenChars[32] === 0 // ' '\n// tokenChars[33] === 1 // '!'\n// tokenChars[34] === 0 // '\"'\n// ...\n//\n// prettier-ignore\nconst tokenChars = [\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 0 - 15\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 16 - 31\n 0, 1, 0, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, // 32 - 47\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, // 48 - 63\n 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 64 - 79\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, // 80 - 95\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 96 - 111\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0 // 112 - 127\n];\n\n/**\n * Adds an offer to the map of extension offers or a parameter to the map of\n * parameters.\n *\n * @param {Object} dest The map of extension offers or parameters\n * @param {String} name The extension or parameter name\n * @param {(Object|Boolean|String)} elem The extension parameters or the\n * parameter value\n * @private\n */\nfunction push(dest, name, elem) {\n if (dest[name] === undefined) dest[name] = [elem];\n else dest[name].push(elem);\n}\n\n/**\n * Parses the `Sec-WebSocket-Extensions` header into an object.\n *\n * @param {String} header The field value of the header\n * @return {Object} The parsed object\n * @public\n */\nfunction parse(header) {\n const offers = Object.create(null);\n\n if (header === undefined || header === '') return offers;\n\n let params = Object.create(null);\n let mustUnescape = false;\n let isEscaping = false;\n let inQuotes = false;\n let extensionName;\n let paramName;\n let start = -1;\n let end = -1;\n let i = 0;\n\n for (; i < header.length; i++) {\n const code = header.charCodeAt(i);\n\n if (extensionName === undefined) {\n if (end === -1 && tokenChars[code] === 1) {\n if (start === -1) start = i;\n } else if (code === 0x20 /* ' ' */ || code === 0x09 /* '\\t' */) {\n if (end === -1 && start !== -1) end = i;\n } else if (code === 0x3b /* ';' */ || code === 0x2c /* ',' */) {\n if (start === -1) {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n\n if (end === -1) end = i;\n const name = header.slice(start, end);\n if (code === 0x2c) {\n push(offers, name, params);\n params = Object.create(null);\n } else {\n extensionName = name;\n }\n\n start = end = -1;\n } else {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n } else if (paramName === undefined) {\n if (end === -1 && tokenChars[code] === 1) {\n if (start === -1) start = i;\n } else if (code === 0x20 || code === 0x09) {\n if (end === -1 && start !== -1) end = i;\n } else if (code === 0x3b || code === 0x2c) {\n if (start === -1) {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n\n if (end === -1) end = i;\n push(params, header.slice(start, end), true);\n if (code === 0x2c) {\n push(offers, extensionName, params);\n params = Object.create(null);\n extensionName = undefined;\n }\n\n start = end = -1;\n } else if (code === 0x3d /* '=' */ && start !== -1 && end === -1) {\n paramName = header.slice(start, i);\n start = end = -1;\n } else {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n } else {\n //\n // The value of a quoted-string after unescaping must conform to the\n // token ABNF, so only token characters are valid.\n // Ref: https://tools.ietf.org/html/rfc6455#section-9.1\n //\n if (isEscaping) {\n if (tokenChars[code] !== 1) {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n if (start === -1) start = i;\n else if (!mustUnescape) mustUnescape = true;\n isEscaping = false;\n } else if (inQuotes) {\n if (tokenChars[code] === 1) {\n if (start === -1) start = i;\n } else if (code === 0x22 /* '\"' */ && start !== -1) {\n inQuotes = false;\n end = i;\n } else if (code === 0x5c /* '\\' */) {\n isEscaping = true;\n } else {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n } else if (code === 0x22 && header.charCodeAt(i - 1) === 0x3d) {\n inQuotes = true;\n } else if (end === -1 && tokenChars[code] === 1) {\n if (start === -1) start = i;\n } else if (start !== -1 && (code === 0x20 || code === 0x09)) {\n if (end === -1) end = i;\n } else if (code === 0x3b || code === 0x2c) {\n if (start === -1) {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n\n if (end === -1) end = i;\n let value = header.slice(start, end);\n if (mustUnescape) {\n value = value.replace(/\\\\/g, '');\n mustUnescape = false;\n }\n push(params, paramName, value);\n if (code === 0x2c) {\n push(offers, extensionName, params);\n params = Object.create(null);\n extensionName = undefined;\n }\n\n paramName = undefined;\n start = end = -1;\n } else {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n }\n }\n\n if (start === -1 || inQuotes) {\n throw new SyntaxError('Unexpected end of input');\n }\n\n if (end === -1) end = i;\n const token = header.slice(start, end);\n if (extensionName === undefined) {\n push(offers, token, params);\n } else {\n if (paramName === undefined) {\n push(params, token, true);\n } else if (mustUnescape) {\n push(params, paramName, token.replace(/\\\\/g, ''));\n } else {\n push(params, paramName, token);\n }\n push(offers, extensionName, params);\n }\n\n return offers;\n}\n\n/**\n * Builds the `Sec-WebSocket-Extensions` header field value.\n *\n * @param {Object} extensions The map of extensions and parameters to format\n * @return {String} A string representing the given object\n * @public\n */\nfunction format(extensions) {\n return Object.keys(extensions)\n .map((extension) => {\n let configurations = extensions[extension];\n if (!Array.isArray(configurations)) configurations = [configurations];\n return configurations\n .map((params) => {\n return [extension]\n .concat(\n Object.keys(params).map((k) => {\n let values = params[k];\n if (!Array.isArray(values)) values = [values];\n return values\n .map((v) => (v === true ? k : `${k}=${v}`))\n .join('; ');\n })\n )\n .join('; ');\n })\n .join(', ');\n })\n .join(', ');\n}\n\nmodule.exports = { format, parse };\n", "'use strict';\n\nconst EventEmitter = require('events');\nconst https = require('https');\nconst http = require('http');\nconst net = require('net');\nconst tls = require('tls');\nconst { randomBytes, createHash } = require('crypto');\nconst { URL } = require('url');\n\nconst PerMessageDeflate = require('./permessage-deflate');\nconst Receiver = require('./receiver');\nconst Sender = require('./sender');\nconst {\n BINARY_TYPES,\n EMPTY_BUFFER,\n GUID,\n kStatusCode,\n kWebSocket,\n NOOP\n} = require('./constants');\nconst { addEventListener, removeEventListener } = require('./event-target');\nconst { format, parse } = require('./extension');\nconst { toBuffer } = require('./buffer-util');\n\nconst readyStates = ['CONNECTING', 'OPEN', 'CLOSING', 'CLOSED'];\nconst protocolVersions = [8, 13];\nconst closeTimeout = 30 * 1000;\n\n/**\n * Class representing a WebSocket.\n *\n * @extends EventEmitter\n */\nclass WebSocket extends EventEmitter {\n /**\n * Create a new `WebSocket`.\n *\n * @param {(String|url.URL)} address The URL to which to connect\n * @param {(String|String[])} [protocols] The subprotocols\n * @param {Object} [options] Connection options\n */\n constructor(address, protocols, options) {\n super();\n\n this._binaryType = BINARY_TYPES[0];\n this._closeCode = 1006;\n this._closeFrameReceived = false;\n this._closeFrameSent = false;\n this._closeMessage = '';\n this._closeTimer = null;\n this._extensions = {};\n this._protocol = '';\n this._readyState = WebSocket.CONNECTING;\n this._receiver = null;\n this._sender = null;\n this._socket = null;\n\n if (address !== null) {\n this._bufferedAmount = 0;\n this._isServer = false;\n this._redirects = 0;\n\n if (Array.isArray(protocols)) {\n protocols = protocols.join(', ');\n } else if (typeof protocols === 'object' && protocols !== null) {\n options = protocols;\n protocols = undefined;\n }\n\n initAsClient(this, address, protocols, options);\n } else {\n this._isServer = true;\n }\n }\n\n /**\n * This deviates from the WHATWG interface since ws doesn't support the\n * required default \"blob\" type (instead we define a custom \"nodebuffer\"\n * type).\n *\n * @type {String}\n */\n get binaryType() {\n return this._binaryType;\n }\n\n set binaryType(type) {\n if (!BINARY_TYPES.includes(type)) return;\n\n this._binaryType = type;\n\n //\n // Allow to change `binaryType` on the fly.\n //\n if (this._receiver) this._receiver._binaryType = type;\n }\n\n /**\n * @type {Number}\n */\n get bufferedAmount() {\n if (!this._socket) return this._bufferedAmount;\n\n return this._socket._writableState.length + this._sender._bufferedBytes;\n }\n\n /**\n * @type {String}\n */\n get extensions() {\n return Object.keys(this._extensions).join();\n }\n\n /**\n * @type {String}\n */\n get protocol() {\n return this._protocol;\n }\n\n /**\n * @type {Number}\n */\n get readyState() {\n return this._readyState;\n }\n\n /**\n * @type {String}\n */\n get url() {\n return this._url;\n }\n\n /**\n * Set up the socket and the internal resources.\n *\n * @param {net.Socket} socket The network socket between the server and client\n * @param {Buffer} head The first packet of the upgraded stream\n * @param {Number} [maxPayload=0] The maximum allowed message size\n * @private\n */\n setSocket(socket, head, maxPayload) {\n const receiver = new Receiver(\n this.binaryType,\n this._extensions,\n this._isServer,\n maxPayload\n );\n\n this._sender = new Sender(socket, this._extensions);\n this._receiver = receiver;\n this._socket = socket;\n\n receiver[kWebSocket] = this;\n socket[kWebSocket] = this;\n\n receiver.on('conclude', receiverOnConclude);\n receiver.on('drain', receiverOnDrain);\n receiver.on('error', receiverOnError);\n receiver.on('message', receiverOnMessage);\n receiver.on('ping', receiverOnPing);\n receiver.on('pong', receiverOnPong);\n\n socket.setTimeout(0);\n socket.setNoDelay();\n\n if (head.length > 0) socket.unshift(head);\n\n socket.on('close', socketOnClose);\n socket.on('data', socketOnData);\n socket.on('end', socketOnEnd);\n socket.on('error', socketOnError);\n\n this._readyState = WebSocket.OPEN;\n this.emit('open');\n }\n\n /**\n * Emit the `'close'` event.\n *\n * @private\n */\n emitClose() {\n if (!this._socket) {\n this._readyState = WebSocket.CLOSED;\n this.emit('close', this._closeCode, this._closeMessage);\n return;\n }\n\n if (this._extensions[PerMessageDeflate.extensionName]) {\n this._extensions[PerMessageDeflate.extensionName].cleanup();\n }\n\n this._receiver.removeAllListeners();\n this._readyState = WebSocket.CLOSED;\n this.emit('close', this._closeCode, this._closeMessage);\n }\n\n /**\n * Start a closing handshake.\n *\n * +----------+ +-----------+ +----------+\n * - - -|ws.close()|-->|close frame|-->|ws.close()|- - -\n * | +----------+ +-----------+ +----------+ |\n * +----------+ +-----------+ |\n * CLOSING |ws.close()|<--|close frame|<--+-----+ CLOSING\n * +----------+ +-----------+ |\n * | | | +---+ |\n * +------------------------+-->|fin| - - - -\n * | +---+ | +---+\n * - - - - -|fin|<---------------------+\n * +---+\n *\n * @param {Number} [code] Status code explaining why the connection is closing\n * @param {String} [data] A string explaining why the connection is closing\n * @public\n */\n close(code, data) {\n if (this.readyState === WebSocket.CLOSED) return;\n if (this.readyState === WebSocket.CONNECTING) {\n const msg = 'WebSocket was closed before the connection was established';\n return abortHandshake(this, this._req, msg);\n }\n\n if (this.readyState === WebSocket.CLOSING) {\n if (this._closeFrameSent && this._closeFrameReceived) this._socket.end();\n return;\n }\n\n this._readyState = WebSocket.CLOSING;\n this._sender.close(code, data, !this._isServer, (err) => {\n //\n // This error is handled by the `'error'` listener on the socket. We only\n // want to know if the close frame has been sent here.\n //\n if (err) return;\n\n this._closeFrameSent = true;\n if (this._closeFrameReceived) this._socket.end();\n });\n\n //\n // Specify a timeout for the closing handshake to complete.\n //\n this._closeTimer = setTimeout(\n this._socket.destroy.bind(this._socket),\n closeTimeout\n );\n }\n\n /**\n * Send a ping.\n *\n * @param {*} [data] The data to send\n * @param {Boolean} [mask] Indicates whether or not to mask `data`\n * @param {Function} [cb] Callback which is executed when the ping is sent\n * @public\n */\n ping(data, mask, cb) {\n if (this.readyState === WebSocket.CONNECTING) {\n throw new Error('WebSocket is not open: readyState 0 (CONNECTING)');\n }\n\n if (typeof data === 'function') {\n cb = data;\n data = mask = undefined;\n } else if (typeof mask === 'function') {\n cb = mask;\n mask = undefined;\n }\n\n if (typeof data === 'number') data = data.toString();\n\n if (this.readyState !== WebSocket.OPEN) {\n sendAfterClose(this, data, cb);\n return;\n }\n\n if (mask === undefined) mask = !this._isServer;\n this._sender.ping(data || EMPTY_BUFFER, mask, cb);\n }\n\n /**\n * Send a pong.\n *\n * @param {*} [data] The data to send\n * @param {Boolean} [mask] Indicates whether or not to mask `data`\n * @param {Function} [cb] Callback which is executed when the pong is sent\n * @public\n */\n pong(data, mask, cb) {\n if (this.readyState === WebSocket.CONNECTING) {\n throw new Error('WebSocket is not open: readyState 0 (CONNECTING)');\n }\n\n if (typeof data === 'function') {\n cb = data;\n data = mask = undefined;\n } else if (typeof mask === 'function') {\n cb = mask;\n mask = undefined;\n }\n\n if (typeof data === 'number') data = data.toString();\n\n if (this.readyState !== WebSocket.OPEN) {\n sendAfterClose(this, data, cb);\n return;\n }\n\n if (mask === undefined) mask = !this._isServer;\n this._sender.pong(data || EMPTY_BUFFER, mask, cb);\n }\n\n /**\n * Send a data message.\n *\n * @param {*} data The message to send\n * @param {Object} [options] Options object\n * @param {Boolean} [options.compress] Specifies whether or not to compress\n * `data`\n * @param {Boolean} [options.binary] Specifies whether `data` is binary or\n * text\n * @param {Boolean} [options.fin=true] Specifies whether the fragment is the\n * last one\n * @param {Boolean} [options.mask] Specifies whether or not to mask `data`\n * @param {Function} [cb] Callback which is executed when data is written out\n * @public\n */\n send(data, options, cb) {\n if (this.readyState === WebSocket.CONNECTING) {\n throw new Error('WebSocket is not open: readyState 0 (CONNECTING)');\n }\n\n if (typeof options === 'function') {\n cb = options;\n options = {};\n }\n\n if (typeof data === 'number') data = data.toString();\n\n if (this.readyState !== WebSocket.OPEN) {\n sendAfterClose(this, data, cb);\n return;\n }\n\n const opts = {\n binary: typeof data !== 'string',\n mask: !this._isServer,\n compress: true,\n fin: true,\n ...options\n };\n\n if (!this._extensions[PerMessageDeflate.extensionName]) {\n opts.compress = false;\n }\n\n this._sender.send(data || EMPTY_BUFFER, opts, cb);\n }\n\n /**\n * Forcibly close the connection.\n *\n * @public\n */\n terminate() {\n if (this.readyState === WebSocket.CLOSED) return;\n if (this.readyState === WebSocket.CONNECTING) {\n const msg = 'WebSocket was closed before the connection was established';\n return abortHandshake(this, this._req, msg);\n }\n\n if (this._socket) {\n this._readyState = WebSocket.CLOSING;\n this._socket.destroy();\n }\n }\n}\n\nreadyStates.forEach((readyState, i) => {\n const descriptor = { enumerable: true, value: i };\n\n Object.defineProperty(WebSocket.prototype, readyState, descriptor);\n Object.defineProperty(WebSocket, readyState, descriptor);\n});\n\n[\n 'binaryType',\n 'bufferedAmount',\n 'extensions',\n 'protocol',\n 'readyState',\n 'url'\n].forEach((property) => {\n Object.defineProperty(WebSocket.prototype, property, { enumerable: true });\n});\n\n//\n// Add the `onopen`, `onerror`, `onclose`, and `onmessage` attributes.\n// See https://html.spec.whatwg.org/multipage/comms.html#the-websocket-interface\n//\n['open', 'error', 'close', 'message'].forEach((method) => {\n Object.defineProperty(WebSocket.prototype, `on${method}`, {\n configurable: true,\n enumerable: true,\n /**\n * Return the listener of the event.\n *\n * @return {(Function|undefined)} The event listener or `undefined`\n * @public\n */\n get() {\n const listeners = this.listeners(method);\n for (let i = 0; i < listeners.length; i++) {\n if (listeners[i]._listener) return listeners[i]._listener;\n }\n\n return undefined;\n },\n /**\n * Add a listener for the event.\n *\n * @param {Function} listener The listener to add\n * @public\n */\n set(listener) {\n const listeners = this.listeners(method);\n for (let i = 0; i < listeners.length; i++) {\n //\n // Remove only the listeners added via `addEventListener`.\n //\n if (listeners[i]._listener) this.removeListener(method, listeners[i]);\n }\n this.addEventListener(method, listener);\n }\n });\n});\n\nWebSocket.prototype.addEventListener = addEventListener;\nWebSocket.prototype.removeEventListener = removeEventListener;\n\nmodule.exports = WebSocket;\n\n/**\n * Initialize a WebSocket client.\n *\n * @param {WebSocket} websocket The client to initialize\n * @param {(String|url.URL)} address The URL to which to connect\n * @param {String} [protocols] The subprotocols\n * @param {Object} [options] Connection options\n * @param {(Boolean|Object)} [options.perMessageDeflate=true] Enable/disable\n * permessage-deflate\n * @param {Number} [options.handshakeTimeout] Timeout in milliseconds for the\n * handshake request\n * @param {Number} [options.protocolVersion=13] Value of the\n * `Sec-WebSocket-Version` header\n * @param {String} [options.origin] Value of the `Origin` or\n * `Sec-WebSocket-Origin` header\n * @param {Number} [options.maxPayload=104857600] The maximum allowed message\n * size\n * @param {Boolean} [options.followRedirects=false] Whether or not to follow\n * redirects\n * @param {Number} [options.maxRedirects=10] The maximum number of redirects\n * allowed\n * @private\n */\nfunction initAsClient(websocket, address, protocols, options) {\n const opts = {\n protocolVersion: protocolVersions[1],\n maxPayload: 100 * 1024 * 1024,\n perMessageDeflate: true,\n followRedirects: false,\n maxRedirects: 10,\n ...options,\n createConnection: undefined,\n socketPath: undefined,\n hostname: undefined,\n protocol: undefined,\n timeout: undefined,\n method: undefined,\n host: undefined,\n path: undefined,\n port: undefined\n };\n\n if (!protocolVersions.includes(opts.protocolVersion)) {\n throw new RangeError(\n `Unsupported protocol version: ${opts.protocolVersion} ` +\n `(supported versions: ${protocolVersions.join(', ')})`\n );\n }\n\n let parsedUrl;\n\n if (address instanceof URL) {\n parsedUrl = address;\n websocket._url = address.href;\n } else {\n parsedUrl = new URL(address);\n websocket._url = address;\n }\n\n const isUnixSocket = parsedUrl.protocol === 'ws+unix:';\n\n if (!parsedUrl.host && (!isUnixSocket || !parsedUrl.pathname)) {\n throw new Error(`Invalid URL: ${websocket.url}`);\n }\n\n const isSecure =\n parsedUrl.protocol === 'wss:' || parsedUrl.protocol === 'https:';\n const defaultPort = isSecure ? 443 : 80;\n const key = randomBytes(16).toString('base64');\n const get = isSecure ? https.get : http.get;\n let perMessageDeflate;\n\n opts.createConnection = isSecure ? tlsConnect : netConnect;\n opts.defaultPort = opts.defaultPort || defaultPort;\n opts.port = parsedUrl.port || defaultPort;\n opts.host = parsedUrl.hostname.startsWith('[')\n ? parsedUrl.hostname.slice(1, -1)\n : parsedUrl.hostname;\n opts.headers = {\n 'Sec-WebSocket-Version': opts.protocolVersion,\n 'Sec-WebSocket-Key': key,\n Connection: 'Upgrade',\n Upgrade: 'websocket',\n ...opts.headers\n };\n opts.path = parsedUrl.pathname + parsedUrl.search;\n opts.timeout = opts.handshakeTimeout;\n\n if (opts.perMessageDeflate) {\n perMessageDeflate = new PerMessageDeflate(\n opts.perMessageDeflate !== true ? opts.perMessageDeflate : {},\n false,\n opts.maxPayload\n );\n opts.headers['Sec-WebSocket-Extensions'] = format({\n [PerMessageDeflate.extensionName]: perMessageDeflate.offer()\n });\n }\n if (protocols) {\n opts.headers['Sec-WebSocket-Protocol'] = protocols;\n }\n if (opts.origin) {\n if (opts.protocolVersion < 13) {\n opts.headers['Sec-WebSocket-Origin'] = opts.origin;\n } else {\n opts.headers.Origin = opts.origin;\n }\n }\n if (parsedUrl.username || parsedUrl.password) {\n opts.auth = `${parsedUrl.username}:${parsedUrl.password}`;\n }\n\n if (isUnixSocket) {\n const parts = opts.path.split(':');\n\n opts.socketPath = parts[0];\n opts.path = parts[1];\n }\n\n let req = (websocket._req = get(opts));\n\n if (opts.timeout) {\n req.on('timeout', () => {\n abortHandshake(websocket, req, 'Opening handshake has timed out');\n });\n }\n\n req.on('error', (err) => {\n if (req === null || req.aborted) return;\n\n req = websocket._req = null;\n websocket._readyState = WebSocket.CLOSING;\n websocket.emit('error', err);\n websocket.emitClose();\n });\n\n req.on('response', (res) => {\n const location = res.headers.location;\n const statusCode = res.statusCode;\n\n if (\n location &&\n opts.followRedirects &&\n statusCode >= 300 &&\n statusCode < 400\n ) {\n if (++websocket._redirects > opts.maxRedirects) {\n abortHandshake(websocket, req, 'Maximum redirects exceeded');\n return;\n }\n\n req.abort();\n\n const addr = new URL(location, address);\n\n initAsClient(websocket, addr, protocols, options);\n } else if (!websocket.emit('unexpected-response', req, res)) {\n abortHandshake(\n websocket,\n req,\n `Unexpected server response: ${res.statusCode}`\n );\n }\n });\n\n req.on('upgrade', (res, socket, head) => {\n websocket.emit('upgrade', res);\n\n //\n // The user may have closed the connection from a listener of the `upgrade`\n // event.\n //\n if (websocket.readyState !== WebSocket.CONNECTING) return;\n\n req = websocket._req = null;\n\n const digest = createHash('sha1')\n .update(key + GUID)\n .digest('base64');\n\n if (res.headers['sec-websocket-accept'] !== digest) {\n abortHandshake(websocket, socket, 'Invalid Sec-WebSocket-Accept header');\n return;\n }\n\n const serverProt = res.headers['sec-websocket-protocol'];\n const protList = (protocols || '').split(/, */);\n let protError;\n\n if (!protocols && serverProt) {\n protError = 'Server sent a subprotocol but none was requested';\n } else if (protocols && !serverProt) {\n protError = 'Server sent no subprotocol';\n } else if (serverProt && !protList.includes(serverProt)) {\n protError = 'Server sent an invalid subprotocol';\n }\n\n if (protError) {\n abortHandshake(websocket, socket, protError);\n return;\n }\n\n if (serverProt) websocket._protocol = serverProt;\n\n if (perMessageDeflate) {\n try {\n const extensions = parse(res.headers['sec-websocket-extensions']);\n\n if (extensions[PerMessageDeflate.extensionName]) {\n perMessageDeflate.accept(extensions[PerMessageDeflate.extensionName]);\n websocket._extensions[PerMessageDeflate.extensionName] =\n perMessageDeflate;\n }\n } catch (err) {\n abortHandshake(\n websocket,\n socket,\n 'Invalid Sec-WebSocket-Extensions header'\n );\n return;\n }\n }\n\n websocket.setSocket(socket, head, opts.maxPayload);\n });\n}\n\n/**\n * Create a `net.Socket` and initiate a connection.\n *\n * @param {Object} options Connection options\n * @return {net.Socket} The newly created socket used to start the connection\n * @private\n */\nfunction netConnect(options) {\n options.path = options.socketPath;\n return net.connect(options);\n}\n\n/**\n * Create a `tls.TLSSocket` and initiate a connection.\n *\n * @param {Object} options Connection options\n * @return {tls.TLSSocket} The newly created socket used to start the connection\n * @private\n */\nfunction tlsConnect(options) {\n options.path = undefined;\n\n if (!options.servername && options.servername !== '') {\n options.servername = net.isIP(options.host) ? '' : options.host;\n }\n\n return tls.connect(options);\n}\n\n/**\n * Abort the handshake and emit an error.\n *\n * @param {WebSocket} websocket The WebSocket instance\n * @param {(http.ClientRequest|net.Socket)} stream The request to abort or the\n * socket to destroy\n * @param {String} message The error message\n * @private\n */\nfunction abortHandshake(websocket, stream, message) {\n websocket._readyState = WebSocket.CLOSING;\n\n const err = new Error(message);\n Error.captureStackTrace(err, abortHandshake);\n\n if (stream.setHeader) {\n stream.abort();\n\n if (stream.socket && !stream.socket.destroyed) {\n //\n // On Node.js >= 14.3.0 `request.abort()` does not destroy the socket if\n // called after the request completed. See\n // https://github.com/websockets/ws/issues/1869.\n //\n stream.socket.destroy();\n }\n\n stream.once('abort', websocket.emitClose.bind(websocket));\n websocket.emit('error', err);\n } else {\n stream.destroy(err);\n stream.once('error', websocket.emit.bind(websocket, 'error'));\n stream.once('close', websocket.emitClose.bind(websocket));\n }\n}\n\n/**\n * Handle cases where the `ping()`, `pong()`, or `send()` methods are called\n * when the `readyState` attribute is `CLOSING` or `CLOSED`.\n *\n * @param {WebSocket} websocket The WebSocket instance\n * @param {*} [data] The data to send\n * @param {Function} [cb] Callback\n * @private\n */\nfunction sendAfterClose(websocket, data, cb) {\n if (data) {\n const length = toBuffer(data).length;\n\n //\n // The `_bufferedAmount` property is used only when the peer is a client and\n // the opening handshake fails. Under these circumstances, in fact, the\n // `setSocket()` method is not called, so the `_socket` and `_sender`\n // properties are set to `null`.\n //\n if (websocket._socket) websocket._sender._bufferedBytes += length;\n else websocket._bufferedAmount += length;\n }\n\n if (cb) {\n const err = new Error(\n `WebSocket is not open: readyState ${websocket.readyState} ` +\n `(${readyStates[websocket.readyState]})`\n );\n cb(err);\n }\n}\n\n/**\n * The listener of the `Receiver` `'conclude'` event.\n *\n * @param {Number} code The status code\n * @param {String} reason The reason for closing\n * @private\n */\nfunction receiverOnConclude(code, reason) {\n const websocket = this[kWebSocket];\n\n websocket._socket.removeListener('data', socketOnData);\n websocket._socket.resume();\n\n websocket._closeFrameReceived = true;\n websocket._closeMessage = reason;\n websocket._closeCode = code;\n\n if (code === 1005) websocket.close();\n else websocket.close(code, reason);\n}\n\n/**\n * The listener of the `Receiver` `'drain'` event.\n *\n * @private\n */\nfunction receiverOnDrain() {\n this[kWebSocket]._socket.resume();\n}\n\n/**\n * The listener of the `Receiver` `'error'` event.\n *\n * @param {(RangeError|Error)} err The emitted error\n * @private\n */\nfunction receiverOnError(err) {\n const websocket = this[kWebSocket];\n\n websocket._socket.removeListener('data', socketOnData);\n\n websocket._readyState = WebSocket.CLOSING;\n websocket._closeCode = err[kStatusCode];\n websocket.emit('error', err);\n websocket._socket.destroy();\n}\n\n/**\n * The listener of the `Receiver` `'finish'` event.\n *\n * @private\n */\nfunction receiverOnFinish() {\n this[kWebSocket].emitClose();\n}\n\n/**\n * The listener of the `Receiver` `'message'` event.\n *\n * @param {(String|Buffer|ArrayBuffer|Buffer[])} data The message\n * @private\n */\nfunction receiverOnMessage(data) {\n this[kWebSocket].emit('message', data);\n}\n\n/**\n * The listener of the `Receiver` `'ping'` event.\n *\n * @param {Buffer} data The data included in the ping frame\n * @private\n */\nfunction receiverOnPing(data) {\n const websocket = this[kWebSocket];\n\n websocket.pong(data, !websocket._isServer, NOOP);\n websocket.emit('ping', data);\n}\n\n/**\n * The listener of the `Receiver` `'pong'` event.\n *\n * @param {Buffer} data The data included in the pong frame\n * @private\n */\nfunction receiverOnPong(data) {\n this[kWebSocket].emit('pong', data);\n}\n\n/**\n * The listener of the `net.Socket` `'close'` event.\n *\n * @private\n */\nfunction socketOnClose() {\n const websocket = this[kWebSocket];\n\n this.removeListener('close', socketOnClose);\n this.removeListener('end', socketOnEnd);\n\n websocket._readyState = WebSocket.CLOSING;\n\n //\n // The close frame might not have been received or the `'end'` event emitted,\n // for example, if the socket was destroyed due to an error. Ensure that the\n // `receiver` stream is closed after writing any remaining buffered data to\n // it. If the readable side of the socket is in flowing mode then there is no\n // buffered data as everything has been already written and `readable.read()`\n // will return `null`. If instead, the socket is paused, any possible buffered\n // data will be read as a single chunk and emitted synchronously in a single\n // `'data'` event.\n //\n websocket._socket.read();\n websocket._receiver.end();\n\n this.removeListener('data', socketOnData);\n this[kWebSocket] = undefined;\n\n clearTimeout(websocket._closeTimer);\n\n if (\n websocket._receiver._writableState.finished ||\n websocket._receiver._writableState.errorEmitted\n ) {\n websocket.emitClose();\n } else {\n websocket._receiver.on('error', receiverOnFinish);\n websocket._receiver.on('finish', receiverOnFinish);\n }\n}\n\n/**\n * The listener of the `net.Socket` `'data'` event.\n *\n * @param {Buffer} chunk A chunk of data\n * @private\n */\nfunction socketOnData(chunk) {\n if (!this[kWebSocket]._receiver.write(chunk)) {\n this.pause();\n }\n}\n\n/**\n * The listener of the `net.Socket` `'end'` event.\n *\n * @private\n */\nfunction socketOnEnd() {\n const websocket = this[kWebSocket];\n\n websocket._readyState = WebSocket.CLOSING;\n websocket._receiver.end();\n this.end();\n}\n\n/**\n * The listener of the `net.Socket` `'error'` event.\n *\n * @private\n */\nfunction socketOnError() {\n const websocket = this[kWebSocket];\n\n this.removeListener('error', socketOnError);\n this.on('error', NOOP);\n\n if (websocket) {\n websocket._readyState = WebSocket.CLOSING;\n this.destroy();\n }\n}\n", "'use strict';\n\nconst { Duplex } = require('stream');\n\n/**\n * Emits the `'close'` event on a stream.\n *\n * @param {stream.Duplex} The stream.\n * @private\n */\nfunction emitClose(stream) {\n stream.emit('close');\n}\n\n/**\n * The listener of the `'end'` event.\n *\n * @private\n */\nfunction duplexOnEnd() {\n if (!this.destroyed && this._writableState.finished) {\n this.destroy();\n }\n}\n\n/**\n * The listener of the `'error'` event.\n *\n * @param {Error} err The error\n * @private\n */\nfunction duplexOnError(err) {\n this.removeListener('error', duplexOnError);\n this.destroy();\n if (this.listenerCount('error') === 0) {\n // Do not suppress the throwing behavior.\n this.emit('error', err);\n }\n}\n\n/**\n * Wraps a `WebSocket` in a duplex stream.\n *\n * @param {WebSocket} ws The `WebSocket` to wrap\n * @param {Object} [options] The options for the `Duplex` constructor\n * @return {stream.Duplex} The duplex stream\n * @public\n */\nfunction createWebSocketStream(ws, options) {\n let resumeOnReceiverDrain = true;\n\n function receiverOnDrain() {\n if (resumeOnReceiverDrain) ws._socket.resume();\n }\n\n if (ws.readyState === ws.CONNECTING) {\n ws.once('open', function open() {\n ws._receiver.removeAllListeners('drain');\n ws._receiver.on('drain', receiverOnDrain);\n });\n } else {\n ws._receiver.removeAllListeners('drain');\n ws._receiver.on('drain', receiverOnDrain);\n }\n\n const duplex = new Duplex({\n ...options,\n autoDestroy: false,\n emitClose: false,\n objectMode: false,\n writableObjectMode: false\n });\n\n ws.on('message', function message(msg) {\n if (!duplex.push(msg)) {\n resumeOnReceiverDrain = false;\n ws._socket.pause();\n }\n });\n\n ws.once('error', function error(err) {\n if (duplex.destroyed) return;\n\n duplex.destroy(err);\n });\n\n ws.once('close', function close() {\n if (duplex.destroyed) return;\n\n duplex.push(null);\n });\n\n duplex._destroy = function (err, callback) {\n if (ws.readyState === ws.CLOSED) {\n callback(err);\n process.nextTick(emitClose, duplex);\n return;\n }\n\n let called = false;\n\n ws.once('error', function error(err) {\n called = true;\n callback(err);\n });\n\n ws.once('close', function close() {\n if (!called) callback(err);\n process.nextTick(emitClose, duplex);\n });\n ws.terminate();\n };\n\n duplex._final = function (callback) {\n if (ws.readyState === ws.CONNECTING) {\n ws.once('open', function open() {\n duplex._final(callback);\n });\n return;\n }\n\n // If the value of the `_socket` property is `null` it means that `ws` is a\n // client websocket and the handshake failed. In fact, when this happens, a\n // socket is never assigned to the websocket. Wait for the `'error'` event\n // that will be emitted by the websocket.\n if (ws._socket === null) return;\n\n if (ws._socket._writableState.finished) {\n callback();\n if (duplex._readableState.endEmitted) duplex.destroy();\n } else {\n ws._socket.once('finish', function finish() {\n // `duplex` is not destroyed here because the `'end'` event will be\n // emitted on `duplex` after this `'finish'` event. The EOF signaling\n // `null` chunk is, in fact, pushed when the websocket emits `'close'`.\n callback();\n });\n ws.close();\n }\n };\n\n duplex._read = function () {\n if (ws.readyState === ws.OPEN && !resumeOnReceiverDrain) {\n resumeOnReceiverDrain = true;\n if (!ws._receiver._writableState.needDrain) ws._socket.resume();\n }\n };\n\n duplex._write = function (chunk, encoding, callback) {\n if (ws.readyState === ws.CONNECTING) {\n ws.once('open', function open() {\n duplex._write(chunk, encoding, callback);\n });\n return;\n }\n\n ws.send(chunk, callback);\n };\n\n duplex.on('end', duplexOnEnd);\n duplex.on('error', duplexOnError);\n return duplex;\n}\n\nmodule.exports = createWebSocketStream;\n", "'use strict';\n\nconst EventEmitter = require('events');\nconst { createHash } = require('crypto');\nconst { createServer, STATUS_CODES } = require('http');\n\nconst PerMessageDeflate = require('./permessage-deflate');\nconst WebSocket = require('./websocket');\nconst { format, parse } = require('./extension');\nconst { GUID, kWebSocket } = require('./constants');\n\nconst keyRegex = /^[+/0-9A-Za-z]{22}==$/;\n\n/**\n * Class representing a WebSocket server.\n *\n * @extends EventEmitter\n */\nclass WebSocketServer extends EventEmitter {\n /**\n * Create a `WebSocketServer` instance.\n *\n * @param {Object} options Configuration options\n * @param {Number} [options.backlog=511] The maximum length of the queue of\n * pending connections\n * @param {Boolean} [options.clientTracking=true] Specifies whether or not to\n * track clients\n * @param {Function} [options.handleProtocols] A hook to handle protocols\n * @param {String} [options.host] The hostname where to bind the server\n * @param {Number} [options.maxPayload=104857600] The maximum allowed message\n * size\n * @param {Boolean} [options.noServer=false] Enable no server mode\n * @param {String} [options.path] Accept only connections matching this path\n * @param {(Boolean|Object)} [options.perMessageDeflate=false] Enable/disable\n * permessage-deflate\n * @param {Number} [options.port] The port where to bind the server\n * @param {http.Server} [options.server] A pre-created HTTP/S server to use\n * @param {Function} [options.verifyClient] A hook to reject connections\n * @param {Function} [callback] A listener for the `listening` event\n */\n constructor(options, callback) {\n super();\n\n options = {\n maxPayload: 100 * 1024 * 1024,\n perMessageDeflate: false,\n handleProtocols: null,\n clientTracking: true,\n verifyClient: null,\n noServer: false,\n backlog: null, // use default (511 as implemented in net.js)\n server: null,\n host: null,\n path: null,\n port: null,\n ...options\n };\n\n if (options.port == null && !options.server && !options.noServer) {\n throw new TypeError(\n 'One of the \"port\", \"server\", or \"noServer\" options must be specified'\n );\n }\n\n if (options.port != null) {\n this._server = createServer((req, res) => {\n const body = STATUS_CODES[426];\n\n res.writeHead(426, {\n 'Content-Length': body.length,\n 'Content-Type': 'text/plain'\n });\n res.end(body);\n });\n this._server.listen(\n options.port,\n options.host,\n options.backlog,\n callback\n );\n } else if (options.server) {\n this._server = options.server;\n }\n\n if (this._server) {\n const emitConnection = this.emit.bind(this, 'connection');\n\n this._removeListeners = addListeners(this._server, {\n listening: this.emit.bind(this, 'listening'),\n error: this.emit.bind(this, 'error'),\n upgrade: (req, socket, head) => {\n this.handleUpgrade(req, socket, head, emitConnection);\n }\n });\n }\n\n if (options.perMessageDeflate === true) options.perMessageDeflate = {};\n if (options.clientTracking) this.clients = new Set();\n this.options = options;\n }\n\n /**\n * Returns the bound address, the address family name, and port of the server\n * as reported by the operating system if listening on an IP socket.\n * If the server is listening on a pipe or UNIX domain socket, the name is\n * returned as a string.\n *\n * @return {(Object|String|null)} The address of the server\n * @public\n */\n address() {\n if (this.options.noServer) {\n throw new Error('The server is operating in \"noServer\" mode');\n }\n\n if (!this._server) return null;\n return this._server.address();\n }\n\n /**\n * Close the server.\n *\n * @param {Function} [cb] Callback\n * @public\n */\n close(cb) {\n if (cb) this.once('close', cb);\n\n //\n // Terminate all associated clients.\n //\n if (this.clients) {\n for (const client of this.clients) client.terminate();\n }\n\n const server = this._server;\n\n if (server) {\n this._removeListeners();\n this._removeListeners = this._server = null;\n\n //\n // Close the http server if it was internally created.\n //\n if (this.options.port != null) {\n server.close(() => this.emit('close'));\n return;\n }\n }\n\n process.nextTick(emitClose, this);\n }\n\n /**\n * See if a given request should be handled by this server instance.\n *\n * @param {http.IncomingMessage} req Request object to inspect\n * @return {Boolean} `true` if the request is valid, else `false`\n * @public\n */\n shouldHandle(req) {\n if (this.options.path) {\n const index = req.url.indexOf('?');\n const pathname = index !== -1 ? req.url.slice(0, index) : req.url;\n\n if (pathname !== this.options.path) return false;\n }\n\n return true;\n }\n\n /**\n * Handle a HTTP Upgrade request.\n *\n * @param {http.IncomingMessage} req The request object\n * @param {net.Socket} socket The network socket between the server and client\n * @param {Buffer} head The first packet of the upgraded stream\n * @param {Function} cb Callback\n * @public\n */\n handleUpgrade(req, socket, head, cb) {\n socket.on('error', socketOnError);\n\n const key =\n req.headers['sec-websocket-key'] !== undefined\n ? req.headers['sec-websocket-key'].trim()\n : false;\n const version = +req.headers['sec-websocket-version'];\n const extensions = {};\n\n if (\n req.method !== 'GET' ||\n req.headers.upgrade.toLowerCase() !== 'websocket' ||\n !key ||\n !keyRegex.test(key) ||\n (version !== 8 && version !== 13) ||\n !this.shouldHandle(req)\n ) {\n return abortHandshake(socket, 400);\n }\n\n if (this.options.perMessageDeflate) {\n const perMessageDeflate = new PerMessageDeflate(\n this.options.perMessageDeflate,\n true,\n this.options.maxPayload\n );\n\n try {\n const offers = parse(req.headers['sec-websocket-extensions']);\n\n if (offers[PerMessageDeflate.extensionName]) {\n perMessageDeflate.accept(offers[PerMessageDeflate.extensionName]);\n extensions[PerMessageDeflate.extensionName] = perMessageDeflate;\n }\n } catch (err) {\n return abortHandshake(socket, 400);\n }\n }\n\n //\n // Optionally call external client verification handler.\n //\n if (this.options.verifyClient) {\n const info = {\n origin:\n req.headers[`${version === 8 ? 'sec-websocket-origin' : 'origin'}`],\n secure: !!(req.socket.authorized || req.socket.encrypted),\n req\n };\n\n if (this.options.verifyClient.length === 2) {\n this.options.verifyClient(info, (verified, code, message, headers) => {\n if (!verified) {\n return abortHandshake(socket, code || 401, message, headers);\n }\n\n this.completeUpgrade(key, extensions, req, socket, head, cb);\n });\n return;\n }\n\n if (!this.options.verifyClient(info)) return abortHandshake(socket, 401);\n }\n\n this.completeUpgrade(key, extensions, req, socket, head, cb);\n }\n\n /**\n * Upgrade the connection to WebSocket.\n *\n * @param {String} key The value of the `Sec-WebSocket-Key` header\n * @param {Object} extensions The accepted extensions\n * @param {http.IncomingMessage} req The request object\n * @param {net.Socket} socket The network socket between the server and client\n * @param {Buffer} head The first packet of the upgraded stream\n * @param {Function} cb Callback\n * @throws {Error} If called more than once with the same socket\n * @private\n */\n completeUpgrade(key, extensions, req, socket, head, cb) {\n //\n // Destroy the socket if the client has already sent a FIN packet.\n //\n if (!socket.readable || !socket.writable) return socket.destroy();\n\n if (socket[kWebSocket]) {\n throw new Error(\n 'server.handleUpgrade() was called more than once with the same ' +\n 'socket, possibly due to a misconfiguration'\n );\n }\n\n const digest = createHash('sha1')\n .update(key + GUID)\n .digest('base64');\n\n const headers = [\n 'HTTP/1.1 101 Switching Protocols',\n 'Upgrade: websocket',\n 'Connection: Upgrade',\n `Sec-WebSocket-Accept: ${digest}`\n ];\n\n const ws = new WebSocket(null);\n let protocol = req.headers['sec-websocket-protocol'];\n\n if (protocol) {\n protocol = protocol.split(',').map(trim);\n\n //\n // Optionally call external protocol selection handler.\n //\n if (this.options.handleProtocols) {\n protocol = this.options.handleProtocols(protocol, req);\n } else {\n protocol = protocol[0];\n }\n\n if (protocol) {\n headers.push(`Sec-WebSocket-Protocol: ${protocol}`);\n ws._protocol = protocol;\n }\n }\n\n if (extensions[PerMessageDeflate.extensionName]) {\n const params = extensions[PerMessageDeflate.extensionName].params;\n const value = format({\n [PerMessageDeflate.extensionName]: [params]\n });\n headers.push(`Sec-WebSocket-Extensions: ${value}`);\n ws._extensions = extensions;\n }\n\n //\n // Allow external modification/inspection of handshake headers.\n //\n this.emit('headers', headers, req);\n\n socket.write(headers.concat('\\r\\n').join('\\r\\n'));\n socket.removeListener('error', socketOnError);\n\n ws.setSocket(socket, head, this.options.maxPayload);\n\n if (this.clients) {\n this.clients.add(ws);\n ws.on('close', () => this.clients.delete(ws));\n }\n\n cb(ws, req);\n }\n}\n\nmodule.exports = WebSocketServer;\n\n/**\n * Add event listeners on an `EventEmitter` using a map of \n * pairs.\n *\n * @param {EventEmitter} server The event emitter\n * @param {Object.} map The listeners to add\n * @return {Function} A function that will remove the added listeners when\n * called\n * @private\n */\nfunction addListeners(server, map) {\n for (const event of Object.keys(map)) server.on(event, map[event]);\n\n return function removeListeners() {\n for (const event of Object.keys(map)) {\n server.removeListener(event, map[event]);\n }\n };\n}\n\n/**\n * Emit a `'close'` event on an `EventEmitter`.\n *\n * @param {EventEmitter} server The event emitter\n * @private\n */\nfunction emitClose(server) {\n server.emit('close');\n}\n\n/**\n * Handle premature socket errors.\n *\n * @private\n */\nfunction socketOnError() {\n this.destroy();\n}\n\n/**\n * Close the connection when preconditions are not fulfilled.\n *\n * @param {net.Socket} socket The socket of the upgrade request\n * @param {Number} code The HTTP response status code\n * @param {String} [message] The HTTP response body\n * @param {Object} [headers] Additional HTTP response headers\n * @private\n */\nfunction abortHandshake(socket, code, message, headers) {\n if (socket.writable) {\n message = message || STATUS_CODES[code];\n headers = {\n Connection: 'close',\n 'Content-Type': 'text/html',\n 'Content-Length': Buffer.byteLength(message),\n ...headers\n };\n\n socket.write(\n `HTTP/1.1 ${code} ${STATUS_CODES[code]}\\r\\n` +\n Object.keys(headers)\n .map((h) => `${h}: ${headers[h]}`)\n .join('\\r\\n') +\n '\\r\\n\\r\\n' +\n message\n );\n }\n\n socket.removeListener('error', socketOnError);\n socket.destroy();\n}\n\n/**\n * Remove whitespace characters from both ends of a string.\n *\n * @param {String} str The string\n * @return {String} A new string representing `str` stripped of whitespace\n * characters from both its beginning and end\n * @private\n */\nfunction trim(str) {\n return str.trim();\n}\n", "'use strict';\n\nconst WebSocket = require('./lib/websocket');\n\nWebSocket.createWebSocketStream = require('./lib/stream');\nWebSocket.Server = require('./lib/websocket-server');\nWebSocket.Receiver = require('./lib/receiver');\nWebSocket.Sender = require('./lib/sender');\n\nmodule.exports = WebSocket;\n", "import WebSocket from \"ws\";\n\nexport { WebSocket }\n", "\"use strict\";\n\nimport { BigNumber } from \"@ethersproject/bignumber\";\nimport { Network, Networkish } from \"@ethersproject/networks\";\nimport { defineReadOnly } from \"@ethersproject/properties\";\n\nimport { Event } from \"./base-provider\";\nimport { JsonRpcProvider } from \"./json-rpc-provider\";\nimport { WebSocket } from \"./ws\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\n/**\n * Notes:\n *\n * This provider differs a bit from the polling providers. One main\n * difference is how it handles consistency. The polling providers\n * will stall responses to ensure a consistent state, while this\n * WebSocket provider assumes the connected backend will manage this.\n *\n * For example, if a polling provider emits an event which indicates\n * the event occurred in blockhash XXX, a call to fetch that block by\n * its hash XXX, if not present will retry until it is present. This\n * can occur when querying a pool of nodes that are mildly out of sync\n * with each other.\n */\n\nlet NextId = 1;\n\nexport type InflightRequest = {\n callback: (error: Error, result: any) => void;\n payload: string;\n};\n\nexport type Subscription = {\n tag: string;\n processFunc: (payload: any) => void;\n};\n\nexport interface WebSocketLike {\n onopen: ((...args: Array) => any) | null;\n onmessage: ((...args: Array) => any) | null;\n onerror: ((...args: Array) => any) | null;\n\n readyState: number;\n\n send(payload: any): void;\n close(code?: number, reason?: string): void;\n}\n\n// For more info about the Real-time Event API see:\n// https://geth.ethereum.org/docs/rpc/pubsub\n\nexport class WebSocketProvider extends JsonRpcProvider {\n readonly _websocket: any;\n readonly _requests: { [ name: string ]: InflightRequest };\n readonly _detectNetwork: Promise;\n\n // Maps event tag to subscription ID (we dedupe identical events)\n readonly _subIds: { [ tag: string ]: Promise };\n\n // Maps Subscription ID to Subscription\n readonly _subs: { [ name: string ]: Subscription };\n\n _wsReady: boolean;\n\n constructor(url: string | WebSocketLike, network?: Networkish) {\n\n // This will be added in the future; please open an issue to expedite\n if (network === \"any\") {\n logger.throwError(\"WebSocketProvider does not support 'any' network yet\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"network:any\"\n });\n }\n\n if (typeof(url) === \"string\") {\n super(url, network);\n } else {\n super(\"_websocket\", network);\n }\n\n this._pollingInterval = -1;\n\n this._wsReady = false;\n\n if (typeof(url) === \"string\") {\n defineReadOnly(this, \"_websocket\", new WebSocket(this.connection.url));\n } else {\n defineReadOnly(this, \"_websocket\", url);\n }\n\n defineReadOnly(this, \"_requests\", { });\n defineReadOnly(this, \"_subs\", { });\n defineReadOnly(this, \"_subIds\", { });\n defineReadOnly(this, \"_detectNetwork\", super.detectNetwork());\n\n // Stall sending requests until the socket is open...\n this.websocket.onopen = () => {\n this._wsReady = true;\n Object.keys(this._requests).forEach((id) => {\n this.websocket.send(this._requests[id].payload);\n });\n };\n\n this.websocket.onmessage = (messageEvent: { data: string }) => {\n const data = messageEvent.data;\n const result = JSON.parse(data);\n if (result.id != null) {\n const id = String(result.id);\n const request = this._requests[id];\n delete this._requests[id];\n\n if (result.result !== undefined) {\n request.callback(null, result.result);\n\n this.emit(\"debug\", {\n action: \"response\",\n request: JSON.parse(request.payload),\n response: result.result,\n provider: this\n });\n\n } else {\n let error: Error = null;\n if (result.error) {\n error = new Error(result.error.message || \"unknown error\");\n defineReadOnly(error, \"code\", result.error.code || null);\n defineReadOnly(error, \"response\", data);\n } else {\n error = new Error(\"unknown error\");\n }\n\n request.callback(error, undefined);\n\n this.emit(\"debug\", {\n action: \"response\",\n error: error,\n request: JSON.parse(request.payload),\n provider: this\n });\n\n }\n\n } else if (result.method === \"eth_subscription\") {\n // Subscription...\n const sub = this._subs[result.params.subscription];\n if (sub) {\n //this.emit.apply(this, );\n sub.processFunc(result.params.result)\n }\n\n } else {\n console.warn(\"this should not happen\");\n }\n };\n\n // This Provider does not actually poll, but we want to trigger\n // poll events for things that depend on them (like stalling for\n // block and transaction lookups)\n const fauxPoll = setInterval(() => {\n this.emit(\"poll\");\n }, 1000);\n if (fauxPoll.unref) { fauxPoll.unref(); }\n }\n\n // Cannot narrow the type of _websocket, as that is not backwards compatible\n // so we add a getter and let the WebSocket be a public API.\n get websocket(): WebSocketLike { return this._websocket; }\n\n detectNetwork(): Promise {\n return this._detectNetwork;\n }\n\n get pollingInterval(): number {\n return 0;\n }\n\n resetEventsBlock(blockNumber: number): void {\n logger.throwError(\"cannot reset events block on WebSocketProvider\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"resetEventBlock\"\n });\n }\n\n set pollingInterval(value: number) {\n logger.throwError(\"cannot set polling interval on WebSocketProvider\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"setPollingInterval\"\n });\n }\n\n async poll(): Promise {\n return null;\n }\n\n set polling(value: boolean) {\n if (!value) { return; }\n\n logger.throwError(\"cannot set polling on WebSocketProvider\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"setPolling\"\n });\n }\n\n send(method: string, params?: Array): Promise {\n const rid = NextId++;\n\n return new Promise((resolve, reject) => {\n function callback(error: Error, result: any) {\n if (error) { return reject(error); }\n return resolve(result);\n }\n\n const payload = JSON.stringify({\n method: method,\n params: params,\n id: rid,\n jsonrpc: \"2.0\"\n });\n\n this.emit(\"debug\", {\n action: \"request\",\n request: JSON.parse(payload),\n provider: this\n });\n\n this._requests[String(rid)] = { callback, payload };\n\n if (this._wsReady) { this.websocket.send(payload); }\n });\n }\n\n static defaultUrl(): string {\n return \"ws:/\\/localhost:8546\";\n }\n\n async _subscribe(tag: string, param: Array, processFunc: (result: any) => void): Promise {\n let subIdPromise = this._subIds[tag];\n if (subIdPromise == null) {\n subIdPromise = Promise.all(param).then((param) => {\n return this.send(\"eth_subscribe\", param);\n });\n this._subIds[tag] = subIdPromise;\n }\n const subId = await subIdPromise;\n this._subs[subId] = { tag, processFunc };\n }\n\n _startEvent(event: Event): void {\n switch (event.type) {\n case \"block\":\n this._subscribe(\"block\", [ \"newHeads\" ], (result: any) => {\n const blockNumber = BigNumber.from(result.number).toNumber();\n this._emitted.block = blockNumber;\n this.emit(\"block\", blockNumber);\n });\n break;\n\n case \"pending\":\n this._subscribe(\"pending\", [ \"newPendingTransactions\" ], (result: any) => {\n this.emit(\"pending\", result);\n });\n break;\n\n case \"filter\":\n this._subscribe(event.tag, [ \"logs\", this._getFilter(event.filter) ], (result: any) => {\n if (result.removed == null) { result.removed = false; }\n this.emit(event.filter, this.formatter.filterLog(result));\n });\n break;\n\n case \"tx\": {\n const emitReceipt = (event: Event) => {\n const hash = event.hash;\n this.getTransactionReceipt(hash).then((receipt) => {\n if (!receipt) { return; }\n this.emit(hash, receipt);\n });\n };\n\n // In case it is already mined\n emitReceipt(event);\n\n // To keep things simple, we start up a single newHeads subscription\n // to keep an eye out for transactions we are watching for.\n // Starting a subscription for an event (i.e. \"tx\") that is already\n // running is (basically) a nop.\n this._subscribe(\"tx\", [ \"newHeads\" ], (result: any) => {\n this._events.filter((e) => (e.type === \"tx\")).forEach(emitReceipt);\n });\n break;\n }\n\n // Nothing is needed\n case \"debug\":\n case \"poll\":\n case \"willPoll\":\n case \"didPoll\":\n case \"error\":\n break;\n\n default:\n console.log(\"unhandled:\", event);\n break;\n }\n }\n\n _stopEvent(event: Event): void {\n let tag = event.tag;\n\n if (event.type === \"tx\") {\n // There are remaining transaction event listeners\n if (this._events.filter((e) => (e.type === \"tx\")).length) {\n return;\n }\n tag = \"tx\";\n } else if (this.listenerCount(event.event)) {\n // There are remaining event listeners\n return;\n }\n\n const subId = this._subIds[tag];\n if (!subId) { return; }\n\n delete this._subIds[tag];\n subId.then((subId) => {\n if (!this._subs[subId]) { return; }\n delete this._subs[subId];\n this.send(\"eth_unsubscribe\", [ subId ]);\n });\n }\n\n async destroy(): Promise {\n // Wait until we have connected before trying to disconnect\n if (this.websocket.readyState === WebSocket.CONNECTING) {\n await (new Promise((resolve) => {\n this.websocket.onopen = function() {\n resolve(true);\n };\n\n this.websocket.onerror = function() {\n resolve(false);\n };\n }));\n }\n\n // Hangup\n // See: https://developer.mozilla.org/en-US/docs/Web/API/CloseEvent#Status_codes\n this.websocket.close(1000);\n }\n}\n", "\n\"use strict\";\n\nimport { Network, Networkish } from \"@ethersproject/networks\";\nimport { defineReadOnly, getStatic } from \"@ethersproject/properties\";\nimport { ConnectionInfo } from \"@ethersproject/web\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nimport { CommunityResourcable } from \"./formatter\";\nimport { JsonRpcProvider, JsonRpcSigner } from \"./json-rpc-provider\";\n\ntype getUrlFunc = (network: Network, apiKey: string) => string | ConnectionInfo;\n\n// A StaticJsonRpcProvider is useful when you *know* for certain that\n// the backend will never change, as it never calls eth_chainId to\n// verify its backend. However, if the backend does change, the effects\n// are undefined and may include:\n// - inconsistent results\n// - locking up the UI\n// - block skew warnings\n// - wrong results\n// If the network is not explicit (i.e. auto-detection is expected), the\n// node MUST be running and available to respond to requests BEFORE this\n// is instantiated.\nexport class StaticJsonRpcProvider extends JsonRpcProvider {\n async detectNetwork(): Promise {\n let network = this.network;\n if (network == null) {\n network = await super.detectNetwork();\n\n if (!network) {\n logger.throwError(\"no network detected\", Logger.errors.UNKNOWN_ERROR, { });\n }\n\n // If still not set, set it\n if (this._network == null) {\n // A static network does not support \"any\"\n defineReadOnly(this, \"_network\", network);\n\n this.emit(\"network\", network, null);\n }\n }\n return network;\n }\n}\n\nexport abstract class UrlJsonRpcProvider extends StaticJsonRpcProvider implements CommunityResourcable {\n readonly apiKey: any;\n\n constructor(network?: Networkish, apiKey?: any) {\n logger.checkAbstract(new.target, UrlJsonRpcProvider);\n\n // Normalize the Network and API Key\n network = getStatic<(network: Networkish) => Network>(new.target, \"getNetwork\")(network);\n apiKey = getStatic<(apiKey: string) => string>(new.target, \"getApiKey\")(apiKey);\n\n const connection = getStatic(new.target, \"getUrl\")(network, apiKey);\n\n super(connection, network);\n\n if (typeof(apiKey) === \"string\") {\n defineReadOnly(this, \"apiKey\", apiKey);\n } else if (apiKey != null) {\n Object.keys(apiKey).forEach((key) => {\n defineReadOnly(this, key, apiKey[key]);\n });\n }\n }\n\n _startPending(): void {\n logger.warn(\"WARNING: API provider does not support pending filters\");\n }\n\n isCommunityResource(): boolean {\n return false;\n }\n\n getSigner(address?: string): JsonRpcSigner {\n return logger.throwError(\n \"API provider does not support signing\",\n Logger.errors.UNSUPPORTED_OPERATION,\n { operation: \"getSigner\" }\n );\n }\n\n listAccounts(): Promise> {\n return Promise.resolve([]);\n }\n\n // Return a defaultApiKey if null, otherwise validate the API key\n static getApiKey(apiKey: any): any {\n return apiKey;\n }\n\n // Returns the url or connection for the given network and API key. The\n // API key will have been sanitized by the getApiKey first, so any validation\n // or transformations can be done there.\n static getUrl(network: Network, apiKey: any): string | ConnectionInfo {\n return logger.throwError(\"not implemented; sub-classes must override getUrl\", Logger.errors.NOT_IMPLEMENTED, {\n operation: \"getUrl\"\n });\n }\n}\n", "\"use strict\";\n\nimport { Network, Networkish } from \"@ethersproject/networks\";\nimport { defineReadOnly } from \"@ethersproject/properties\";\nimport { ConnectionInfo } from \"@ethersproject/web\";\n\nimport { CommunityResourcable, showThrottleMessage } from \"./formatter\";\nimport { WebSocketProvider } from \"./websocket-provider\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nimport { UrlJsonRpcProvider } from \"./url-json-rpc-provider\";\n\n// This key was provided to ethers.js by Alchemy to be used by the\n// default provider, but it is recommended that for your own\n// production environments, that you acquire your own API key at:\n// https://dashboard.alchemyapi.io\n\nconst defaultApiKey = \"_gg7wSSi0KMBsdKnGVfHDueq6xMB9EkC\"\n\nexport class AlchemyWebSocketProvider extends WebSocketProvider implements CommunityResourcable {\n readonly apiKey: string;\n\n constructor(network?: Networkish, apiKey?: any) {\n const provider = new AlchemyProvider(network, apiKey);\n\n const url = provider.connection.url.replace(/^http/i, \"ws\")\n .replace(\".alchemyapi.\", \".ws.alchemyapi.\");\n\n super(url, provider.network);\n defineReadOnly(this, \"apiKey\", provider.apiKey);\n }\n\n isCommunityResource(): boolean {\n return (this.apiKey === defaultApiKey);\n }\n}\n\nexport class AlchemyProvider extends UrlJsonRpcProvider {\n\n static getWebSocketProvider(network?: Networkish, apiKey?: any): AlchemyWebSocketProvider {\n return new AlchemyWebSocketProvider(network, apiKey);\n }\n\n static getApiKey(apiKey: any): any {\n if (apiKey == null) { return defaultApiKey; }\n if (apiKey && typeof(apiKey) !== \"string\") {\n logger.throwArgumentError(\"invalid apiKey\", \"apiKey\", apiKey);\n }\n return apiKey;\n }\n\n static getUrl(network: Network, apiKey: string): ConnectionInfo {\n let host = null;\n switch (network.name) {\n case \"homestead\":\n host = \"eth-mainnet.alchemyapi.io/v2/\";\n break;\n case \"goerli\":\n host = \"eth-goerli.g.alchemy.com/v2/\";\n break;\n case \"matic\":\n host = \"polygon-mainnet.g.alchemy.com/v2/\";\n break;\n case \"maticmum\":\n host = \"polygon-mumbai.g.alchemy.com/v2/\";\n break;\n case \"arbitrum\":\n host = \"arb-mainnet.g.alchemy.com/v2/\";\n break;\n case \"arbitrum-goerli\":\n host = \"arb-goerli.g.alchemy.com/v2/\";\n break;\n case \"optimism\":\n host = \"opt-mainnet.g.alchemy.com/v2/\";\n break;\n case \"optimism-goerli\":\n host = \"opt-goerli.g.alchemy.com/v2/\"\n break;\n default:\n logger.throwArgumentError(\"unsupported network\", \"network\", arguments[0]);\n }\n\n return {\n allowGzip: true,\n url: (\"https:/\" + \"/\" + host + apiKey),\n throttleCallback: (attempt: number, url: string) => {\n if (apiKey === defaultApiKey) {\n showThrottleMessage();\n }\n return Promise.resolve(true);\n }\n };\n }\n\n isCommunityResource(): boolean {\n return (this.apiKey === defaultApiKey);\n }\n}\n", "\nimport { Network } from \"@ethersproject/networks\";\n\nimport { showThrottleMessage } from \"./formatter\";\nimport { UrlJsonRpcProvider } from \"./url-json-rpc-provider\";\n\nimport type { ConnectionInfo } from \"@ethersproject/web\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\n\nconst defaultApiKey = \"9f7d929b018cdffb338517efa06f58359e86ff1ffd350bc889738523659e7972\";\n\nfunction getHost(name: string): string {\n switch (name) {\n case \"homestead\":\n return \"rpc.ankr.com/eth/\";\n case \"ropsten\":\n return \"rpc.ankr.com/eth_ropsten/\";\n case \"rinkeby\":\n return \"rpc.ankr.com/eth_rinkeby/\";\n case \"goerli\":\n return \"rpc.ankr.com/eth_goerli/\";\n\n case \"matic\":\n return \"rpc.ankr.com/polygon/\";\n\n case \"arbitrum\":\n return \"rpc.ankr.com/arbitrum/\";\n }\n return logger.throwArgumentError(\"unsupported network\", \"name\", name);\n}\n\nexport class AnkrProvider extends UrlJsonRpcProvider {\n readonly apiKey: string;\n\n isCommunityResource(): boolean {\n return (this.apiKey === defaultApiKey);\n }\n\n static getApiKey(apiKey: any): any {\n if (apiKey == null) { return defaultApiKey; }\n return apiKey;\n }\n\n static getUrl(network: Network, apiKey: any): ConnectionInfo {\n if (apiKey == null) { apiKey = defaultApiKey; }\n const connection: ConnectionInfo = {\n allowGzip: true,\n url: (\"https:/\\/\" + getHost(network.name) + apiKey),\n throttleCallback: (attempt: number, url: string) => {\n if (apiKey.apiKey === defaultApiKey) {\n showThrottleMessage();\n }\n return Promise.resolve(true);\n }\n };\n\n if (apiKey.projectSecret != null) {\n connection.user = \"\";\n connection.password = apiKey.projectSecret\n }\n\n return connection;\n }\n}\n", "\"use strict\";\n\nimport { Network } from \"@ethersproject/networks\";\nimport { UrlJsonRpcProvider } from \"./url-json-rpc-provider\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nexport class CloudflareProvider extends UrlJsonRpcProvider {\n\n static getApiKey(apiKey: any): any {\n if (apiKey != null) {\n logger.throwArgumentError(\"apiKey not supported for cloudflare\", \"apiKey\", apiKey);\n }\n return null;\n }\n\n static getUrl(network: Network, apiKey?: any): string {\n let host = null;\n switch (network.name) {\n case \"homestead\":\n host = \"https://cloudflare-eth.com/\";\n break;\n default:\n logger.throwArgumentError(\"unsupported network\", \"network\", arguments[0]);\n }\n\n return host;\n }\n\n async perform(method: string, params: any): Promise {\n // The Cloudflare provider does not support eth_blockNumber,\n // so we get the latest block and pull it from that\n if (method === \"getBlockNumber\") {\n const block = await super.perform(\"getBlock\", { blockTag: \"latest\" });\n return block.number;\n }\n\n return super.perform(method, params);\n }\n}\n", "\"use strict\";\n\nimport { BlockTag, TransactionRequest, TransactionResponse } from \"@ethersproject/abstract-provider\";\nimport { hexlify, hexValue, isHexString } from \"@ethersproject/bytes\";\nimport { Network, Networkish } from \"@ethersproject/networks\";\nimport { deepCopy, defineReadOnly } from \"@ethersproject/properties\";\nimport { accessListify } from \"@ethersproject/transactions\";\nimport { ConnectionInfo, fetchJson } from \"@ethersproject/web\";\n\nimport { showThrottleMessage } from \"./formatter\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nimport { BaseProvider } from \"./base-provider\";\n\n\n// The transaction has already been sanitized by the calls in Provider\nfunction getTransactionPostData(transaction: TransactionRequest): Record {\n const result: Record = { };\n for (let key in transaction) {\n if ((transaction)[key] == null) { continue; }\n let value = (transaction)[key];\n if (key === \"type\" && value === 0) { continue; }\n\n // Quantity-types require no leading zero, unless 0\n if (({ type: true, gasLimit: true, gasPrice: true, maxFeePerGs: true, maxPriorityFeePerGas: true, nonce: true, value: true })[key]) {\n value = hexValue(hexlify(value));\n } else if (key === \"accessList\") {\n value = \"[\" + accessListify(value).map((set) => {\n return `{address:\"${ set.address }\",storageKeys:[\"${ set.storageKeys.join('\",\"') }\"]}`;\n }).join(\",\") + \"]\";\n } else {\n value = hexlify(value);\n }\n result[key] = value;\n }\n return result;\n}\n\nfunction getResult(result: { status?: number, message?: string, result?: any }): any {\n // getLogs, getHistory have weird success responses\n if (result.status == 0 && (result.message === \"No records found\" || result.message === \"No transactions found\")) {\n return result.result;\n }\n\n if (result.status != 1 || typeof(result.message) !== \"string\" || !result.message.match(/^OK/)) {\n const error: any = new Error(\"invalid response\");\n error.result = JSON.stringify(result);\n if ((result.result || \"\").toLowerCase().indexOf(\"rate limit\") >= 0) {\n error.throttleRetry = true;\n }\n throw error;\n }\n\n return result.result;\n}\n\nfunction getJsonResult(result: { jsonrpc: string, result?: any, error?: { code?: number, data?: any, message?: string} } ): any {\n // This response indicates we are being throttled\n if (result && (result).status == 0 && (result).message == \"NOTOK\" && (result.result || \"\").toLowerCase().indexOf(\"rate limit\") >= 0) {\n const error: any = new Error(\"throttled response\");\n error.result = JSON.stringify(result);\n error.throttleRetry = true;\n throw error;\n }\n\n if (result.jsonrpc != \"2.0\") {\n // @TODO: not any\n const error: any = new Error(\"invalid response\");\n error.result = JSON.stringify(result);\n throw error;\n }\n\n if (result.error) {\n // @TODO: not any\n const error: any = new Error(result.error.message || \"unknown error\");\n if (result.error.code) { error.code = result.error.code; }\n if (result.error.data) { error.data = result.error.data; }\n throw error;\n }\n\n return result.result;\n}\n\n// The blockTag was normalized as a string by the Provider pre-perform operations\nfunction checkLogTag(blockTag: string): number | \"latest\" {\n if (blockTag === \"pending\") { throw new Error(\"pending not supported\"); }\n if (blockTag === \"latest\") { return blockTag; }\n\n return parseInt(blockTag.substring(2), 16);\n}\n\n\nfunction checkError(method: string, error: any, transaction: any): any {\n // Undo the \"convenience\" some nodes are attempting to prevent backwards\n // incompatibility; maybe for v6 consider forwarding reverts as errors\n if (method === \"call\" && error.code === Logger.errors.SERVER_ERROR) {\n const e = error.error;\n\n // Etherscan keeps changing their string\n if (e && (e.message.match(/reverted/i) || e.message.match(/VM execution error/i))) {\n // Etherscan prefixes the data like \"Reverted 0x1234\"\n let data = e.data;\n if (data) { data = \"0x\" + data.replace(/^.*0x/i, \"\"); }\n\n if (isHexString(data)) { return data; }\n\n logger.throwError(\"missing revert data in call exception\", Logger.errors.CALL_EXCEPTION, {\n error, data: \"0x\"\n });\n }\n }\n\n // Get the message from any nested error structure\n let message = error.message;\n if (error.code === Logger.errors.SERVER_ERROR) {\n if (error.error && typeof(error.error.message) === \"string\") {\n message = error.error.message;\n } else if (typeof(error.body) === \"string\") {\n message = error.body;\n } else if (typeof(error.responseText) === \"string\") {\n message = error.responseText;\n }\n }\n message = (message || \"\").toLowerCase();\n\n // \"Insufficient funds. The account you tried to send transaction from does not have enough funds. Required 21464000000000 and got: 0\"\n if (message.match(/insufficient funds/)) {\n logger.throwError(\"insufficient funds for intrinsic transaction cost\", Logger.errors.INSUFFICIENT_FUNDS, {\n error, method, transaction\n });\n }\n\n // \"Transaction with the same hash was already imported.\"\n if (message.match(/same hash was already imported|transaction nonce is too low|nonce too low/)) {\n logger.throwError(\"nonce has already been used\", Logger.errors.NONCE_EXPIRED, {\n error, method, transaction\n });\n }\n\n // \"Transaction gas price is too low. There is another transaction with same nonce in the queue. Try increasing the gas price or incrementing the nonce.\"\n if (message.match(/another transaction with same nonce/)) {\n logger.throwError(\"replacement fee too low\", Logger.errors.REPLACEMENT_UNDERPRICED, {\n error, method, transaction\n });\n }\n\n if (message.match(/execution failed due to an exception|execution reverted/)) {\n logger.throwError(\"cannot estimate gas; transaction may fail or may require manual gas limit\", Logger.errors.UNPREDICTABLE_GAS_LIMIT, {\n error, method, transaction\n });\n }\n\n throw error;\n}\n\nexport class EtherscanProvider extends BaseProvider{\n readonly baseUrl: string;\n readonly apiKey: string | null;\n\n constructor(network?: Networkish, apiKey?: string) {\n super(network);\n\n defineReadOnly(this, \"baseUrl\", this.getBaseUrl());\n defineReadOnly(this, \"apiKey\", apiKey || null);\n }\n\n getBaseUrl(): string {\n switch(this.network ? this.network.name: \"invalid\") {\n case \"homestead\":\n return \"https:/\\/api.etherscan.io\";\n case \"goerli\":\n return \"https:/\\/api-goerli.etherscan.io\";\n case \"sepolia\":\n return \"https:/\\/api-sepolia.etherscan.io\";\n case \"matic\":\n return \"https:/\\/api.polygonscan.com\";\n case \"maticmum\":\n return \"https:/\\/api-testnet.polygonscan.com\";\n case \"arbitrum\":\n return \"https:/\\/api.arbiscan.io\";\n case \"arbitrum-goerli\":\n return \"https:/\\/api-goerli.arbiscan.io\";\n case \"optimism\":\n return \"https:/\\/api-optimistic.etherscan.io\";\n case \"optimism-goerli\":\n return \"https:/\\/api-goerli-optimistic.etherscan.io\";\n default:\n }\n\n return logger.throwArgumentError(\"unsupported network\", \"network\", this.network.name);\n }\n\n getUrl(module: string, params: Record): string {\n const query = Object.keys(params).reduce((accum, key) => {\n const value = params[key];\n if (value != null) {\n accum += `&${ key }=${ value }`\n }\n return accum\n }, \"\");\n const apiKey = ((this.apiKey) ? `&apikey=${ this.apiKey }`: \"\");\n return `${ this.baseUrl }/api?module=${ module }${ query }${ apiKey }`;\n }\n\n getPostUrl(): string {\n return `${ this.baseUrl }/api`;\n }\n\n getPostData(module: string, params: Record): Record {\n params.module = module;\n params.apikey = this.apiKey;\n return params;\n }\n\n async fetch(module: string, params: Record, post?: boolean): Promise {\n const url = (post ? this.getPostUrl(): this.getUrl(module, params));\n const payload = (post ? this.getPostData(module, params): null);\n const procFunc = (module === \"proxy\") ? getJsonResult: getResult;\n\n this.emit(\"debug\", {\n action: \"request\",\n request: url,\n provider: this\n });\n\n const connection: ConnectionInfo = {\n url: url,\n throttleSlotInterval: 1000,\n throttleCallback: (attempt: number, url: string) => {\n if (this.isCommunityResource()) {\n showThrottleMessage();\n }\n return Promise.resolve(true);\n }\n };\n\n let payloadStr: string = null;\n if (payload) {\n connection.headers = { \"content-type\": \"application/x-www-form-urlencoded; charset=UTF-8\" };\n payloadStr = Object.keys(payload).map((key) => {\n return `${ key }=${ payload[key] }`\n }).join(\"&\");\n }\n\n const result = await fetchJson(connection, payloadStr, procFunc || getJsonResult);\n\n this.emit(\"debug\", {\n action: \"response\",\n request: url,\n response: deepCopy(result),\n provider: this\n });\n\n return result;\n }\n\n async detectNetwork(): Promise {\n return this.network;\n }\n\n async perform(method: string, params: any): Promise {\n\n switch (method) {\n case \"getBlockNumber\":\n return this.fetch(\"proxy\", { action: \"eth_blockNumber\" });\n\n case \"getGasPrice\":\n return this.fetch(\"proxy\", { action: \"eth_gasPrice\" });\n\n case \"getBalance\":\n // Returns base-10 result\n return this.fetch(\"account\", {\n action: \"balance\",\n address: params.address,\n tag: params.blockTag\n });\n\n case \"getTransactionCount\":\n return this.fetch(\"proxy\", {\n action: \"eth_getTransactionCount\",\n address: params.address,\n tag: params.blockTag\n });\n\n case \"getCode\":\n return this.fetch(\"proxy\", {\n action: \"eth_getCode\",\n address: params.address,\n tag: params.blockTag\n });\n\n case \"getStorageAt\":\n return this.fetch(\"proxy\", {\n action: \"eth_getStorageAt\",\n address: params.address,\n position: params.position,\n tag: params.blockTag\n });\n\n case \"sendTransaction\":\n return this.fetch(\"proxy\", {\n action: \"eth_sendRawTransaction\",\n hex: params.signedTransaction\n }, true).catch((error) => {\n return checkError(\"sendTransaction\", error, params.signedTransaction);\n });\n\n case \"getBlock\":\n if (params.blockTag) {\n return this.fetch(\"proxy\", {\n action: \"eth_getBlockByNumber\",\n tag: params.blockTag,\n boolean: (params.includeTransactions ? \"true\": \"false\")\n });\n }\n throw new Error(\"getBlock by blockHash not implemented\");\n\n case \"getTransaction\":\n return this.fetch(\"proxy\", {\n action: \"eth_getTransactionByHash\",\n txhash: params.transactionHash\n });\n\n case \"getTransactionReceipt\":\n return this.fetch(\"proxy\", {\n action: \"eth_getTransactionReceipt\",\n txhash: params.transactionHash\n });\n\n case \"call\": {\n if (params.blockTag !== \"latest\") {\n throw new Error(\"EtherscanProvider does not support blockTag for call\");\n }\n\n const postData = getTransactionPostData(params.transaction);\n postData.module = \"proxy\";\n postData.action = \"eth_call\";\n\n try {\n return await this.fetch(\"proxy\", postData, true);\n } catch (error) {\n return checkError(\"call\", error, params.transaction);\n }\n }\n\n case \"estimateGas\": {\n const postData = getTransactionPostData(params.transaction);\n postData.module = \"proxy\";\n postData.action = \"eth_estimateGas\";\n\n try {\n return await this.fetch(\"proxy\", postData, true);\n } catch (error) {\n return checkError(\"estimateGas\", error, params.transaction);\n }\n }\n\n case \"getLogs\": {\n const args: Record = { action: \"getLogs\" }\n\n if (params.filter.fromBlock) {\n args.fromBlock = checkLogTag(params.filter.fromBlock);\n }\n\n if (params.filter.toBlock) {\n args.toBlock = checkLogTag(params.filter.toBlock);\n }\n\n if (params.filter.address) {\n args.address = params.filter.address;\n }\n\n // @TODO: We can handle slightly more complicated logs using the logs API\n if (params.filter.topics && params.filter.topics.length > 0) {\n if (params.filter.topics.length > 1) {\n logger.throwError(\"unsupported topic count\", Logger.errors.UNSUPPORTED_OPERATION, { topics: params.filter.topics });\n }\n\n if (params.filter.topics.length === 1) {\n const topic0 = params.filter.topics[0];\n if (typeof(topic0) !== \"string\" || topic0.length !== 66) {\n logger.throwError(\"unsupported topic format\", Logger.errors.UNSUPPORTED_OPERATION, { topic0: topic0 });\n }\n args.topic0 = topic0;\n }\n }\n\n const logs: Array = await this.fetch(\"logs\", args);\n\n // Cache txHash => blockHash\n let blocks: { [tag: string]: string } = {};\n\n // Add any missing blockHash to the logs\n for (let i = 0; i < logs.length; i++) {\n const log = logs[i];\n if (log.blockHash != null) { continue; }\n if (blocks[log.blockNumber] == null) {\n const block = await this.getBlock(log.blockNumber);\n if (block) {\n blocks[log.blockNumber] = block.hash;\n }\n }\n log.blockHash = blocks[log.blockNumber];\n }\n\n return logs;\n }\n\n case \"getEtherPrice\":\n if (this.network.name !== \"homestead\") { return 0.0; }\n return parseFloat((await this.fetch(\"stats\", { action: \"ethprice\" })).ethusd);\n\n default:\n break;\n }\n\n return super.perform(method, params);\n }\n\n // Note: The `page` page parameter only allows pagination within the\n // 10,000 window available without a page and offset parameter\n // Error: Result window is too large, PageNo x Offset size must\n // be less than or equal to 10000\n async getHistory(addressOrName: string | Promise, startBlock?: BlockTag, endBlock?: BlockTag): Promise> {\n const params = {\n action: \"txlist\",\n address: (await this.resolveName(addressOrName)),\n startblock: ((startBlock == null) ? 0: startBlock),\n endblock: ((endBlock == null) ? 99999999: endBlock),\n sort: \"asc\"\n };\n\n const result = await this.fetch(\"account\", params);\n\n return result.map((tx: any) => {\n [\"contractAddress\", \"to\"].forEach(function(key) {\n if (tx[key] == \"\") { delete tx[key]; }\n });\n if (tx.creates == null && tx.contractAddress != null) {\n tx.creates = tx.contractAddress;\n }\n const item = this.formatter.transactionResponse(tx);\n if (tx.timeStamp) { item.timestamp = parseInt(tx.timeStamp); }\n return item;\n });\n }\n\n isCommunityResource(): boolean {\n return (this.apiKey == null);\n }\n}\n", "\"use strict\";\n\nimport { Block, BlockWithTransactions, Provider } from \"@ethersproject/abstract-provider\";\nimport { BigNumber } from \"@ethersproject/bignumber\";\nimport { isHexString } from \"@ethersproject/bytes\";\nimport { Network } from \"@ethersproject/networks\";\nimport { deepCopy, defineReadOnly, shallowCopy } from \"@ethersproject/properties\";\nimport { shuffled } from \"@ethersproject/random\";\nimport { poll } from \"@ethersproject/web\";\n\nimport { BaseProvider } from \"./base-provider\";\nimport { isCommunityResource } from \"./formatter\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nfunction now() { return (new Date()).getTime(); }\n\n// Returns to network as long as all agree, or null if any is null.\n// Throws an error if any two networks do not match.\nfunction checkNetworks(networks: Array): Network {\n let result = null;\n\n for (let i = 0; i < networks.length; i++) {\n const network = networks[i];\n\n // Null! We do not know our network; bail.\n if (network == null) { return null; }\n\n if (result) {\n // Make sure the network matches the previous networks\n if (!(result.name === network.name && result.chainId === network.chainId &&\n ((result.ensAddress === network.ensAddress) || (result.ensAddress == null && network.ensAddress == null)))) {\n\n logger.throwArgumentError(\"provider mismatch\", \"networks\", networks);\n }\n } else {\n result = network;\n }\n }\n\n return result;\n}\n\nfunction median(values: Array, maxDelta?: number): number {\n values = values.slice().sort();\n const middle = Math.floor(values.length / 2);\n\n // Odd length; take the middle\n if (values.length % 2) {\n return values[middle];\n }\n\n // Even length; take the average of the two middle\n const a = values[middle - 1], b = values[middle];\n\n if (maxDelta != null && Math.abs(a - b) > maxDelta) {\n return null;\n }\n\n return (a + b) / 2;\n}\n\nfunction serialize(value: any): string {\n if (value === null) {\n return \"null\";\n } else if (typeof(value) === \"number\" || typeof(value) === \"boolean\") {\n return JSON.stringify(value);\n } else if (typeof(value) === \"string\") {\n return value;\n } else if (BigNumber.isBigNumber(value)) {\n return value.toString();\n } else if (Array.isArray(value)) {\n return JSON.stringify(value.map((i) => serialize(i)));\n } else if (typeof(value) === \"object\") {\n const keys = Object.keys(value);\n keys.sort();\n return \"{\" + keys.map((key) => {\n let v = value[key];\n if (typeof(v) === \"function\") {\n v = \"[function]\";\n } else {\n v = serialize(v);\n }\n return JSON.stringify(key) + \":\" + v;\n }).join(\",\") + \"}\";\n }\n\n throw new Error(\"unknown value type: \" + typeof(value));\n}\n\n// Next request ID to use for emitting debug info\nlet nextRid = 1;\n\n\nexport interface FallbackProviderConfig {\n // The Provider\n provider: Provider;\n\n // The priority to favour this Provider; lower values are used first (higher priority)\n priority?: number;\n\n // Timeout before also triggering the next provider; this does not stop\n // this provider and if its result comes back before a quorum is reached\n // it will be incorporated into the vote\n // - lower values will cause more network traffic but may result in a\n // faster result.\n stallTimeout?: number;\n\n // How much this provider contributes to the quorum; sometimes a specific\n // provider may be more reliable or trustworthy than others, but usually\n // this should be left as the default\n weight?: number;\n};\n\n// A Staller is used to provide a delay to give a Provider a chance to response\n// before asking the next Provider to try.\ntype Staller = {\n wait: (func: () => void) => Promise\n getPromise: () => Promise,\n cancel: () => void\n};\n\nfunction stall(duration: number): Staller {\n let cancel: () => void = null;\n\n let timer: NodeJS.Timer = null;\n let promise = >(new Promise((resolve) => {\n cancel = function() {\n if (timer) {\n clearTimeout(timer);\n timer = null;\n }\n resolve();\n }\n timer = setTimeout(cancel, duration);\n }));\n\n const wait = (func: () => void) => {\n promise = promise.then(func);\n return promise;\n }\n\n function getPromise(): Promise {\n return promise;\n }\n\n return { cancel, getPromise, wait };\n}\n\nconst ForwardErrors = [\n Logger.errors.CALL_EXCEPTION,\n Logger.errors.INSUFFICIENT_FUNDS,\n Logger.errors.NONCE_EXPIRED,\n Logger.errors.REPLACEMENT_UNDERPRICED,\n Logger.errors.UNPREDICTABLE_GAS_LIMIT\n];\n\nconst ForwardProperties = [\n \"address\",\n \"args\",\n \"errorArgs\",\n \"errorSignature\",\n \"method\",\n \"transaction\",\n];\n\n\n// @TODO: Make this an object with staller and cancel built-in\ninterface RunningConfig extends FallbackProviderConfig {\n start?: number;\n done?: boolean;\n cancelled?: boolean;\n runner?: Promise;\n staller?: Staller;\n result?: any;\n error?: Error;\n};\n\nfunction exposeDebugConfig(config: RunningConfig, now?: number): any {\n const result: any = {\n weight: config.weight\n };\n Object.defineProperty(result, \"provider\", { get: () => config.provider });\n if (config.start) { result.start = config.start; }\n if (now) { result.duration = (now - config.start); }\n if (config.done) {\n if (config.error) {\n result.error = config.error;\n } else {\n result.result = config.result || null;\n }\n }\n return result;\n}\n\nfunction normalizedTally(normalize: (value: any) => string, quorum: number): (configs: Array) => any {\n return function(configs: Array): any {\n\n // Count the votes for each result\n const tally: { [ key: string]: { count: number, result: any } } = { };\n configs.forEach((c) => {\n const value = normalize(c.result);\n if (!tally[value]) { tally[value] = { count: 0, result: c.result }; }\n tally[value].count++;\n });\n\n // Check for a quorum on any given result\n const keys = Object.keys(tally);\n for (let i = 0; i < keys.length; i++) {\n const check = tally[keys[i]];\n if (check.count >= quorum) {\n return check.result;\n }\n }\n\n // No quroum\n return undefined;\n }\n}\nfunction getProcessFunc(provider: FallbackProvider, method: string, params: { [ key: string ]: any }): (configs: Array) => any {\n\n let normalize = serialize;\n\n switch (method) {\n case \"getBlockNumber\":\n // Return the median value, unless there is (median + 1) is also\n // present, in which case that is probably true and the median\n // is going to be stale soon. In the event of a malicious node,\n // the lie will be true soon enough.\n return function(configs: Array): number {\n const values = configs.map((c) => c.result);\n\n // Get the median block number\n let blockNumber = median(configs.map((c) => c.result), 2);\n if (blockNumber == null) { return undefined; }\n\n blockNumber = Math.ceil(blockNumber);\n\n // If the next block height is present, its prolly safe to use\n if (values.indexOf(blockNumber + 1) >= 0) { blockNumber++; }\n\n // Don't ever roll back the blockNumber\n if (blockNumber >= provider._highestBlockNumber) {\n provider._highestBlockNumber = blockNumber;\n }\n\n return provider._highestBlockNumber;\n };\n\n case \"getGasPrice\":\n // Return the middle (round index up) value, similar to median\n // but do not average even entries and choose the higher.\n // Malicious actors must compromise 50% of the nodes to lie.\n return function(configs: Array): BigNumber {\n const values = configs.map((c) => c.result);\n values.sort();\n return values[Math.floor(values.length / 2)];\n }\n\n case \"getEtherPrice\":\n // Returns the median price. Malicious actors must compromise at\n // least 50% of the nodes to lie (in a meaningful way).\n return function(configs: Array): number {\n return median(configs.map((c) => c.result));\n }\n\n // No additional normalizing required; serialize is enough\n case \"getBalance\":\n case \"getTransactionCount\":\n case \"getCode\":\n case \"getStorageAt\":\n case \"call\":\n case \"estimateGas\":\n case \"getLogs\":\n break;\n\n // We drop the confirmations from transactions as it is approximate\n case \"getTransaction\":\n case \"getTransactionReceipt\":\n normalize = function(tx: any): string {\n if (tx == null) { return null; }\n\n tx = shallowCopy(tx);\n tx.confirmations = -1;\n return serialize(tx);\n }\n break;\n\n // We drop the confirmations from transactions as it is approximate\n case \"getBlock\":\n // We drop the confirmations from transactions as it is approximate\n if (params.includeTransactions) {\n normalize = function(block: BlockWithTransactions): string {\n if (block == null) { return null; }\n\n block = shallowCopy(block);\n block.transactions = block.transactions.map((tx) => {\n tx = shallowCopy(tx);\n tx.confirmations = -1;\n return tx;\n });\n return serialize(block);\n };\n } else {\n normalize = function(block: Block): string {\n if (block == null) { return null; }\n return serialize(block);\n }\n }\n break;\n\n default:\n throw new Error(\"unknown method: \" + method);\n }\n\n // Return the result if and only if the expected quorum is\n // satisfied and agreed upon for the final result.\n return normalizedTally(normalize, provider.quorum);\n\n}\n\n// If we are doing a blockTag query, we need to make sure the backend is\n// caught up to the FallbackProvider, before sending a request to it.\nasync function waitForSync(config: RunningConfig, blockNumber: number): Promise {\n const provider = (config.provider);\n\n if ((provider.blockNumber != null && provider.blockNumber >= blockNumber) || blockNumber === -1) {\n return provider;\n }\n\n return poll(() => {\n return new Promise((resolve, reject) => {\n setTimeout(function() {\n\n // We are synced\n if (provider.blockNumber >= blockNumber) { return resolve(provider); }\n\n // We're done; just quit\n if (config.cancelled) { return resolve(null); }\n\n // Try again, next block\n return resolve(undefined);\n }, 0);\n });\n }, { oncePoll: provider });\n}\n\nasync function getRunner(config: RunningConfig, currentBlockNumber: number, method: string, params: { [ key: string]: any }): Promise {\n let provider = config.provider;\n\n switch (method) {\n case \"getBlockNumber\":\n case \"getGasPrice\":\n return provider[method]();\n case \"getEtherPrice\":\n if ((provider).getEtherPrice) {\n return (provider).getEtherPrice();\n }\n break;\n case \"getBalance\":\n case \"getTransactionCount\":\n case \"getCode\":\n if (params.blockTag && isHexString(params.blockTag)) {\n provider = await waitForSync(config, currentBlockNumber)\n }\n return provider[method](params.address, params.blockTag || \"latest\");\n case \"getStorageAt\":\n if (params.blockTag && isHexString(params.blockTag)) {\n provider = await waitForSync(config, currentBlockNumber)\n }\n return provider.getStorageAt(params.address, params.position, params.blockTag || \"latest\");\n case \"getBlock\":\n if (params.blockTag && isHexString(params.blockTag)) {\n provider = await waitForSync(config, currentBlockNumber)\n }\n return provider[(params.includeTransactions ? \"getBlockWithTransactions\": \"getBlock\")](params.blockTag || params.blockHash);\n case \"call\":\n case \"estimateGas\":\n if (params.blockTag && isHexString(params.blockTag)) {\n provider = await waitForSync(config, currentBlockNumber)\n }\n if (method === \"call\" && params.blockTag) {\n return provider[method](params.transaction, params.blockTag);\n }\n return provider[method](params.transaction);\n case \"getTransaction\":\n case \"getTransactionReceipt\":\n return provider[method](params.transactionHash);\n case \"getLogs\": {\n let filter = params.filter;\n if ((filter.fromBlock && isHexString(filter.fromBlock)) || (filter.toBlock && isHexString(filter.toBlock))) {\n provider = await waitForSync(config, currentBlockNumber)\n }\n return provider.getLogs(filter);\n }\n }\n\n return logger.throwError(\"unknown method error\", Logger.errors.UNKNOWN_ERROR, {\n method: method,\n params: params\n });\n}\n\nexport class FallbackProvider extends BaseProvider {\n readonly providerConfigs: ReadonlyArray;\n readonly quorum: number;\n\n // Due to the highly asyncronous nature of the blockchain, we need\n // to make sure we never unroll the blockNumber due to our random\n // sample of backends\n _highestBlockNumber: number;\n\n constructor(providers: Array, quorum?: number) {\n if (providers.length === 0) {\n logger.throwArgumentError(\"missing providers\", \"providers\", providers);\n }\n\n const providerConfigs: Array = providers.map((configOrProvider, index) => {\n if (Provider.isProvider(configOrProvider)) {\n const stallTimeout = isCommunityResource(configOrProvider) ? 2000: 750;\n const priority = 1;\n return Object.freeze({ provider: configOrProvider, weight: 1, stallTimeout, priority });\n }\n\n const config: FallbackProviderConfig = shallowCopy(configOrProvider);\n\n if (config.priority == null) { config.priority = 1; }\n if (config.stallTimeout == null) {\n config.stallTimeout = isCommunityResource(configOrProvider) ? 2000: 750;\n }\n if (config.weight == null) { config.weight = 1; }\n\n const weight = config.weight;\n if (weight % 1 || weight > 512 || weight < 1) {\n logger.throwArgumentError(\"invalid weight; must be integer in [1, 512]\", `providers[${ index }].weight`, weight);\n }\n\n return Object.freeze(config);\n });\n\n const total = providerConfigs.reduce((accum, c) => (accum + c.weight), 0);\n\n if (quorum == null) {\n quorum = total / 2;\n } else if (quorum > total) {\n logger.throwArgumentError(\"quorum will always fail; larger than total weight\", \"quorum\", quorum);\n }\n\n // Are all providers' networks are known\n let networkOrReady: Network | Promise = checkNetworks(providerConfigs.map((c) => ((c.provider)).network));\n\n // Not all networks are known; we must stall\n if (networkOrReady == null) {\n networkOrReady = new Promise((resolve, reject) => {\n setTimeout(() => {\n this.detectNetwork().then(resolve, reject);\n }, 0);\n });\n }\n\n super(networkOrReady);\n\n // Preserve a copy, so we do not get mutated\n defineReadOnly(this, \"providerConfigs\", Object.freeze(providerConfigs));\n defineReadOnly(this, \"quorum\", quorum);\n\n this._highestBlockNumber = -1;\n }\n\n async detectNetwork(): Promise {\n const networks = await Promise.all(this.providerConfigs.map((c) => c.provider.getNetwork()));\n return checkNetworks(networks);\n }\n\n async perform(method: string, params: { [name: string]: any }): Promise {\n // Sending transactions is special; always broadcast it to all backends\n if (method === \"sendTransaction\") {\n const results: Array = await Promise.all(this.providerConfigs.map((c) => {\n return c.provider.sendTransaction(params.signedTransaction).then((result) => {\n return result.hash;\n }, (error) => {\n return error;\n });\n }));\n\n // Any success is good enough (other errors are likely \"already seen\" errors\n for (let i = 0; i < results.length; i++) {\n const result = results[i];\n if (typeof(result) === \"string\") { return result; }\n }\n\n // They were all an error; pick the first error\n throw results[0];\n }\n\n // We need to make sure we are in sync with our backends, so we need\n // to know this before we can make a lot of calls\n if (this._highestBlockNumber === -1 && method !== \"getBlockNumber\") {\n await this.getBlockNumber();\n }\n\n const processFunc = getProcessFunc(this, method, params);\n\n // Shuffle the providers and then sort them by their priority; we\n // shallowCopy them since we will store the result in them too\n const configs: Array = shuffled(this.providerConfigs.map(shallowCopy));\n configs.sort((a, b) => (a.priority - b.priority));\n\n const currentBlockNumber = this._highestBlockNumber;\n\n let i = 0;\n let first = true;\n while (true) {\n const t0 = now();\n\n // Compute the inflight weight (exclude anything past)\n let inflightWeight = configs.filter((c) => (c.runner && ((t0 - c.start) < c.stallTimeout)))\n .reduce((accum, c) => (accum + c.weight), 0);\n\n // Start running enough to meet quorum\n while (inflightWeight < this.quorum && i < configs.length) {\n const config = configs[i++];\n\n const rid = nextRid++;\n\n config.start = now();\n config.staller = stall(config.stallTimeout);\n config.staller.wait(() => { config.staller = null; });\n\n config.runner = getRunner(config, currentBlockNumber, method, params).then((result) => {\n config.done = true;\n config.result = result;\n\n if (this.listenerCount(\"debug\")) {\n this.emit(\"debug\", {\n action: \"request\",\n rid: rid,\n backend: exposeDebugConfig(config, now()),\n request: { method: method, params: deepCopy(params) },\n provider: this\n });\n }\n\n }, (error) => {\n config.done = true;\n config.error = error;\n\n if (this.listenerCount(\"debug\")) {\n this.emit(\"debug\", {\n action: \"request\",\n rid: rid,\n backend: exposeDebugConfig(config, now()),\n request: { method: method, params: deepCopy(params) },\n provider: this\n });\n }\n });\n\n if (this.listenerCount(\"debug\")) {\n this.emit(\"debug\", {\n action: \"request\",\n rid: rid,\n backend: exposeDebugConfig(config, null),\n request: { method: method, params: deepCopy(params) },\n provider: this\n });\n }\n\n inflightWeight += config.weight;\n }\n\n // Wait for anything meaningful to finish or stall out\n const waiting: Array> = [ ];\n configs.forEach((c) => {\n if (c.done || !c.runner) { return; }\n waiting.push(c.runner);\n if (c.staller) { waiting.push(c.staller.getPromise()); }\n });\n\n if (waiting.length) { await Promise.race(waiting); }\n\n // Check the quorum and process the results; the process function\n // may additionally decide the quorum is not met\n const results = configs.filter((c) => (c.done && c.error == null));\n if (results.length >= this.quorum) {\n const result = processFunc(results);\n if (result !== undefined) {\n // Shut down any stallers\n configs.forEach(c => {\n if (c.staller) { c.staller.cancel(); }\n c.cancelled = true;\n });\n return result;\n }\n if (!first) { await stall(100).getPromise(); }\n first = false;\n }\n\n // No result, check for errors that should be forwarded\n const errors = configs.reduce((accum, c) => {\n if (!c.done || c.error == null) { return accum; }\n\n const code = ((c.error)).code;\n if (ForwardErrors.indexOf(code) >= 0) {\n if (!accum[code]) { accum[code] = { error: c.error, weight: 0 }; }\n accum[code].weight += c.weight;\n }\n\n return accum;\n }, <{ [ code: string ]: { error: Error, weight: number } }>({ }));\n\n Object.keys(errors).forEach((errorCode: string) => {\n const tally = errors[errorCode];\n if (tally.weight < this.quorum) { return; }\n\n // Shut down any stallers\n configs.forEach(c => {\n if (c.staller) { c.staller.cancel(); }\n c.cancelled = true;\n });\n\n const e = (tally.error);\n\n const props: { [ name: string ]: any } = { };\n ForwardProperties.forEach((name) => {\n if (e[name] == null) { return; }\n props[name] = e[name];\n });\n\n logger.throwError(e.reason || e.message, errorCode, props);\n });\n\n // All configs have run to completion; we will never get more data\n if (configs.filter((c) => !c.done).length === 0) { break; }\n }\n\n // Shut down any stallers; shouldn't be any\n configs.forEach(c => {\n if (c.staller) { c.staller.cancel(); }\n c.cancelled = true;\n });\n\n return logger.throwError(\"failed to meet quorum\", Logger.errors.SERVER_ERROR, {\n method: method,\n params: params,\n //results: configs.map((c) => c.result),\n //errors: configs.map((c) => c.error),\n results: configs.map((c) => exposeDebugConfig(c)),\n provider: this\n });\n }\n}\n", "\"use strict\";\n\nimport { connect } from \"net\";\n\nimport { defineReadOnly } from \"@ethersproject/properties\";\nimport { Networkish } from \"@ethersproject/networks\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nimport { JsonRpcProvider } from \"./json-rpc-provider\";\n\n\nexport class IpcProvider extends JsonRpcProvider {\n readonly path: string;\n\n constructor(path: string, network?: Networkish) {\n if (path == null) {\n logger.throwError(\"missing path\", Logger.errors.MISSING_ARGUMENT, { arg: \"path\" });\n }\n\n super(\"ipc://\" + path, network);\n\n defineReadOnly(this, \"path\", path);\n }\n\n // @TODO: Create a connection to the IPC path and use filters instead of polling for block\n\n send(method: string, params: Array): Promise {\n // This method is very simple right now. We create a new socket\n // connection each time, which may be slower, but the main\n // advantage we are aiming for now is security. This simplifies\n // multiplexing requests (since we do not need to multiplex).\n\n let payload = JSON.stringify({\n method: method,\n params: params,\n id: 42,\n jsonrpc: \"2.0\"\n });\n\n return new Promise((resolve, reject) => {\n let response = Buffer.alloc(0);\n\n let stream = connect(this.path);\n\n stream.on(\"data\", (data) => {\n response = Buffer.concat([ response, data ]);\n });\n\n stream.on(\"end\", () => {\n try {\n resolve(JSON.parse(response.toString()).result);\n // @TODO: Better pull apart the error\n stream.destroy();\n } catch (error) {\n reject(error);\n stream.destroy();\n }\n });\n\n stream.on(\"error\", (error) => {\n reject(error);\n stream.destroy();\n });\n\n stream.write(payload);\n stream.end();\n });\n }\n}\n", "\"use strict\";\n\nimport { Network, Networkish } from \"@ethersproject/networks\";\nimport { defineReadOnly } from \"@ethersproject/properties\";\nimport { ConnectionInfo } from \"@ethersproject/web\";\n\nimport { WebSocketProvider } from \"./websocket-provider\";\nimport { CommunityResourcable, showThrottleMessage } from \"./formatter\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nimport { UrlJsonRpcProvider } from \"./url-json-rpc-provider\";\n\n\nconst defaultProjectId = \"84842078b09946638c03157f83405213\"\n\nexport class InfuraWebSocketProvider extends WebSocketProvider implements CommunityResourcable {\n readonly apiKey: string;\n readonly projectId: string;\n readonly projectSecret: string;\n\n constructor(network?: Networkish, apiKey?: any) {\n const provider = new InfuraProvider(network, apiKey);\n const connection = provider.connection;\n if (connection.password) {\n logger.throwError(\"INFURA WebSocket project secrets unsupported\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"InfuraProvider.getWebSocketProvider()\"\n });\n }\n\n const url = connection.url.replace(/^http/i, \"ws\").replace(\"/v3/\", \"/ws/v3/\");\n super(url, network);\n\n defineReadOnly(this, \"apiKey\", provider.projectId);\n defineReadOnly(this, \"projectId\", provider.projectId);\n defineReadOnly(this, \"projectSecret\", provider.projectSecret);\n }\n\n isCommunityResource(): boolean {\n return (this.projectId === defaultProjectId);\n }\n}\n\nexport class InfuraProvider extends UrlJsonRpcProvider {\n readonly projectId: string;\n readonly projectSecret: string;\n\n static getWebSocketProvider(network?: Networkish, apiKey?: any): InfuraWebSocketProvider {\n return new InfuraWebSocketProvider(network, apiKey);\n }\n\n static getApiKey(apiKey: any): any {\n const apiKeyObj: { apiKey: string, projectId: string, projectSecret: string } = {\n apiKey: defaultProjectId,\n projectId: defaultProjectId,\n projectSecret: null\n };\n\n if (apiKey == null) { return apiKeyObj; }\n\n if (typeof(apiKey) === \"string\") {\n apiKeyObj.projectId = apiKey;\n\n } else if (apiKey.projectSecret != null) {\n logger.assertArgument((typeof(apiKey.projectId) === \"string\"),\n \"projectSecret requires a projectId\", \"projectId\", apiKey.projectId);\n logger.assertArgument((typeof(apiKey.projectSecret) === \"string\"),\n \"invalid projectSecret\", \"projectSecret\", \"[REDACTED]\");\n\n apiKeyObj.projectId = apiKey.projectId;\n apiKeyObj.projectSecret = apiKey.projectSecret;\n\n } else if (apiKey.projectId) {\n apiKeyObj.projectId = apiKey.projectId;\n }\n\n apiKeyObj.apiKey = apiKeyObj.projectId;\n\n return apiKeyObj;\n }\n\n static getUrl(network: Network, apiKey: any): ConnectionInfo {\n let host: string = null;\n switch(network ? network.name: \"unknown\") {\n case \"homestead\":\n host = \"mainnet.infura.io\";\n break;\n case \"goerli\":\n host = \"goerli.infura.io\";\n break;\n case \"sepolia\":\n host = \"sepolia.infura.io\";\n break;\n case \"matic\":\n host = \"polygon-mainnet.infura.io\";\n break;\n case \"maticmum\":\n host = \"polygon-mumbai.infura.io\";\n break;\n case \"optimism\":\n host = \"optimism-mainnet.infura.io\";\n break;\n case \"optimism-goerli\":\n host = \"optimism-goerli.infura.io\";\n break;\n case \"arbitrum\":\n host = \"arbitrum-mainnet.infura.io\";\n break;\n case \"arbitrum-goerli\":\n host = \"arbitrum-goerli.infura.io\";\n break;\n default:\n logger.throwError(\"unsupported network\", Logger.errors.INVALID_ARGUMENT, {\n argument: \"network\",\n value: network\n });\n }\n\n const connection: ConnectionInfo = {\n allowGzip: true,\n url: (\"https:/\" + \"/\" + host + \"/v3/\" + apiKey.projectId),\n throttleCallback: (attempt: number, url: string) => {\n if (apiKey.projectId === defaultProjectId) {\n showThrottleMessage();\n }\n return Promise.resolve(true);\n }\n };\n\n if (apiKey.projectSecret != null) {\n connection.user = \"\";\n connection.password = apiKey.projectSecret\n }\n\n return connection;\n }\n\n isCommunityResource(): boolean {\n return (this.projectId === defaultProjectId);\n }\n}\n", "\nimport { deepCopy } from \"@ethersproject/properties\";\nimport { fetchJson } from \"@ethersproject/web\";\n\nimport { JsonRpcProvider } from \"./json-rpc-provider\";\n\n// Experimental\n\nexport class JsonRpcBatchProvider extends JsonRpcProvider {\n _pendingBatchAggregator: NodeJS.Timer;\n _pendingBatch: Array<{\n request: { method: string, params: Array, id: number, jsonrpc: \"2.0\" },\n resolve: (result: any) => void,\n reject: (error: Error) => void\n }>;\n\n send(method: string, params: Array): Promise {\n const request = {\n method: method,\n params: params,\n id: (this._nextId++),\n jsonrpc: \"2.0\"\n };\n\n if (this._pendingBatch == null) {\n this._pendingBatch = [ ];\n }\n\n const inflightRequest: any = { request, resolve: null, reject: null };\n\n const promise = new Promise((resolve, reject) => {\n inflightRequest.resolve = resolve;\n inflightRequest.reject = reject;\n });\n\n this._pendingBatch.push(inflightRequest);\n\n if (!this._pendingBatchAggregator) {\n // Schedule batch for next event loop + short duration\n this._pendingBatchAggregator = setTimeout(() => {\n\n // Get teh current batch and clear it, so new requests\n // go into the next batch\n const batch = this._pendingBatch;\n this._pendingBatch = null;\n this._pendingBatchAggregator = null;\n\n // Get the request as an array of requests\n const request = batch.map((inflight) => inflight.request);\n\n this.emit(\"debug\", {\n action: \"requestBatch\",\n request: deepCopy(request),\n provider: this\n });\n\n return fetchJson(this.connection, JSON.stringify(request)).then((result) => {\n this.emit(\"debug\", {\n action: \"response\",\n request: request,\n response: result,\n provider: this\n });\n\n // For each result, feed it to the correct Promise, depending\n // on whether it was a success or error\n batch.forEach((inflightRequest, index) => {\n const payload = result[index];\n if (payload.error) {\n const error = new Error(payload.error.message);\n (error).code = payload.error.code;\n (error).data = payload.error.data;\n inflightRequest.reject(error);\n } else {\n inflightRequest.resolve(payload.result);\n }\n });\n\n }, (error) => {\n this.emit(\"debug\", {\n action: \"response\",\n error: error,\n request: request,\n provider: this\n });\n\n batch.forEach((inflightRequest) => {\n inflightRequest.reject(error);\n });\n });\n\n }, 10);\n }\n\n return promise;\n }\n}\n", "/* istanbul ignore file */\n\n\"use strict\";\n\nimport { Network } from \"@ethersproject/networks\";\nimport { UrlJsonRpcProvider } from \"./url-json-rpc-provider\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\n// Special API key provided by Nodesmith for ethers.js\nconst defaultApiKey = \"ETHERS_JS_SHARED\";\n\nexport class NodesmithProvider extends UrlJsonRpcProvider {\n\n static getApiKey(apiKey: any): any {\n if (apiKey && typeof(apiKey) !== \"string\") {\n logger.throwArgumentError(\"invalid apiKey\", \"apiKey\", apiKey);\n }\n return apiKey || defaultApiKey;\n }\n\n static getUrl(network: Network, apiKey?: any): string {\n logger.warn(\"NodeSmith will be discontinued on 2019-12-20; please migrate to another platform.\");\n\n let host = null;\n switch (network.name) {\n case \"homestead\":\n host = \"https://ethereum.api.nodesmith.io/v1/mainnet/jsonrpc\";\n break;\n case \"ropsten\":\n host = \"https://ethereum.api.nodesmith.io/v1/ropsten/jsonrpc\";\n break;\n case \"rinkeby\":\n host = \"https://ethereum.api.nodesmith.io/v1/rinkeby/jsonrpc\";\n break;\n case \"goerli\":\n host = \"https://ethereum.api.nodesmith.io/v1/goerli/jsonrpc\";\n break;\n case \"kovan\":\n host = \"https://ethereum.api.nodesmith.io/v1/kovan/jsonrpc\";\n break;\n default:\n logger.throwArgumentError(\"unsupported network\", \"network\", arguments[0]);\n }\n\n return (host + \"?apiKey=\" + apiKey);\n }\n}\n", "\"use strict\";\n\nimport { Network } from \"@ethersproject/networks\";\nimport { ConnectionInfo } from \"@ethersproject/web\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nimport { UrlJsonRpcProvider } from \"./url-json-rpc-provider\";\n\nconst defaultApplicationId = \"62e1ad51b37b8e00394bda3b\";\n\n\nexport class PocketProvider extends UrlJsonRpcProvider {\n readonly applicationId: string;\n readonly applicationSecretKey: string;\n readonly loadBalancer: boolean;\n\n static getApiKey(apiKey: any): any {\n const apiKeyObj: { applicationId: string, applicationSecretKey: string, loadBalancer: boolean } = {\n applicationId: null,\n loadBalancer: true,\n applicationSecretKey: null\n };\n\n // Parse applicationId and applicationSecretKey\n if (apiKey == null) {\n apiKeyObj.applicationId = defaultApplicationId;\n\n } else if (typeof (apiKey) === \"string\") {\n apiKeyObj.applicationId = apiKey;\n\n } else if (apiKey.applicationSecretKey != null) {\n apiKeyObj.applicationId = apiKey.applicationId;\n apiKeyObj.applicationSecretKey = apiKey.applicationSecretKey;\n\n } else if (apiKey.applicationId) {\n apiKeyObj.applicationId = apiKey.applicationId;\n\n } else {\n logger.throwArgumentError(\"unsupported PocketProvider apiKey\", \"apiKey\", apiKey);\n }\n\n return apiKeyObj;\n }\n\n static getUrl(network: Network, apiKey: any): ConnectionInfo {\n let host: string = null;\n switch (network ? network.name : \"unknown\") {\n case \"goerli\":\n host = \"eth-goerli.gateway.pokt.network\";\n break;\n case \"homestead\":\n host = \"eth-mainnet.gateway.pokt.network\";\n break;\n case \"kovan\":\n host = \"poa-kovan.gateway.pokt.network\";\n break;\n case \"matic\":\n host = \"poly-mainnet.gateway.pokt.network\";\n break;\n case \"maticmum\":\n host = \"polygon-mumbai-rpc.gateway.pokt.network\";\n break;\n case \"rinkeby\":\n host = \"eth-rinkeby.gateway.pokt.network\";\n break;\n case \"ropsten\":\n host = \"eth-ropsten.gateway.pokt.network\";\n break;\n default:\n logger.throwError(\"unsupported network\", Logger.errors.INVALID_ARGUMENT, {\n argument: \"network\",\n value: network\n });\n }\n\n const url = `https:/\\/${ host }/v1/lb/${ apiKey.applicationId }`\n\n const connection: ConnectionInfo = { headers: { }, url };\n if (apiKey.applicationSecretKey != null) {\n connection.user = \"\";\n connection.password = apiKey.applicationSecretKey\n }\n\n return connection;\n }\n\n isCommunityResource(): boolean {\n return (this.applicationId === defaultApplicationId);\n }\n}\n", "\"use strict\";\n\nimport { Networkish } from \"@ethersproject/networks\";\nimport { deepCopy, defineReadOnly } from \"@ethersproject/properties\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nimport { JsonRpcProvider } from \"./json-rpc-provider\";\n\n// Exported Types\nexport type ExternalProvider = {\n isMetaMask?: boolean;\n isStatus?: boolean;\n host?: string;\n path?: string;\n sendAsync?: (request: { method: string, params?: Array }, callback: (error: any, response: any) => void) => void\n send?: (request: { method: string, params?: Array }, callback: (error: any, response: any) => void) => void\n request?: (request: { method: string, params?: Array }) => Promise\n}\n\nlet _nextId = 1;\n\nexport type JsonRpcFetchFunc = (method: string, params?: Array) => Promise;\n\ntype Web3LegacySend = (request: any, callback: (error: Error, response: any) => void) => void;\n\nfunction buildWeb3LegacyFetcher(provider: ExternalProvider, sendFunc: Web3LegacySend) : JsonRpcFetchFunc {\n const fetcher = \"Web3LegacyFetcher\";\n\n return function(method: string, params: Array): Promise {\n const request = {\n method: method,\n params: params,\n id: (_nextId++),\n jsonrpc: \"2.0\"\n };\n\n return new Promise((resolve, reject) => {\n this.emit(\"debug\", {\n action: \"request\",\n fetcher,\n request: deepCopy(request),\n provider: this\n });\n\n sendFunc(request, (error, response) => {\n\n if (error) {\n this.emit(\"debug\", {\n action: \"response\",\n fetcher,\n error,\n request,\n provider: this\n });\n\n return reject(error);\n }\n\n this.emit(\"debug\", {\n action: \"response\",\n fetcher,\n request,\n response,\n provider: this\n });\n\n if (response.error) {\n const error = new Error(response.error.message);\n (error).code = response.error.code;\n (error).data = response.error.data;\n return reject(error);\n }\n\n resolve(response.result);\n });\n });\n }\n}\n\nfunction buildEip1193Fetcher(provider: ExternalProvider): JsonRpcFetchFunc {\n return function(method: string, params: Array): Promise {\n if (params == null) { params = [ ]; }\n\n const request = { method, params };\n\n this.emit(\"debug\", {\n action: \"request\",\n fetcher: \"Eip1193Fetcher\",\n request: deepCopy(request),\n provider: this\n });\n\n return provider.request(request).then((response) => {\n this.emit(\"debug\", {\n action: \"response\",\n fetcher: \"Eip1193Fetcher\",\n request,\n response,\n provider: this\n });\n\n return response;\n\n }, (error) => {\n this.emit(\"debug\", {\n action: \"response\",\n fetcher: \"Eip1193Fetcher\",\n request,\n error,\n provider: this\n });\n\n throw error;\n });\n }\n}\n\nexport class Web3Provider extends JsonRpcProvider {\n readonly provider: ExternalProvider;\n readonly jsonRpcFetchFunc: JsonRpcFetchFunc;\n\n constructor(provider: ExternalProvider | JsonRpcFetchFunc, network?: Networkish) {\n if (provider == null) {\n logger.throwArgumentError(\"missing provider\", \"provider\", provider);\n }\n\n let path: string = null;\n let jsonRpcFetchFunc: JsonRpcFetchFunc = null;\n let subprovider: ExternalProvider = null;\n\n if (typeof(provider) === \"function\") {\n path = \"unknown:\";\n jsonRpcFetchFunc = provider;\n\n } else {\n path = provider.host || provider.path || \"\";\n if (!path && provider.isMetaMask) {\n path = \"metamask\";\n }\n\n subprovider = provider;\n\n if (provider.request) {\n if (path === \"\") { path = \"eip-1193:\"; }\n jsonRpcFetchFunc = buildEip1193Fetcher(provider);\n } else if (provider.sendAsync) {\n jsonRpcFetchFunc = buildWeb3LegacyFetcher(provider, provider.sendAsync.bind(provider));\n } else if (provider.send) {\n jsonRpcFetchFunc = buildWeb3LegacyFetcher(provider, provider.send.bind(provider));\n } else {\n logger.throwArgumentError(\"unsupported provider\", \"provider\", provider);\n }\n\n if (!path) { path = \"unknown:\"; }\n }\n\n super(path, network);\n\n defineReadOnly(this, \"jsonRpcFetchFunc\", jsonRpcFetchFunc);\n defineReadOnly(this, \"provider\", subprovider);\n }\n\n send(method: string, params: Array): Promise {\n return this.jsonRpcFetchFunc(method, params);\n }\n}\n", "\"use strict\";\n\nimport {\n Block,\n BlockTag,\n EventType,\n FeeData,\n Filter,\n Log,\n Listener,\n Provider,\n TransactionReceipt,\n TransactionRequest,\n TransactionResponse\n} from \"@ethersproject/abstract-provider\";\n\nimport { getNetwork } from \"@ethersproject/networks\";\nimport { Network, Networkish } from \"@ethersproject/networks\";\n\nimport { BaseProvider, EnsProvider, EnsResolver, Resolver } from \"./base-provider\";\n\nimport { AlchemyProvider, AlchemyWebSocketProvider } from \"./alchemy-provider\";\nimport { AnkrProvider } from \"./ankr-provider\";\nimport { CloudflareProvider } from \"./cloudflare-provider\";\nimport { EtherscanProvider } from \"./etherscan-provider\";\nimport { FallbackProvider, FallbackProviderConfig } from \"./fallback-provider\";\nimport { IpcProvider } from \"./ipc-provider\";\nimport { InfuraProvider, InfuraWebSocketProvider } from \"./infura-provider\";\nimport { JsonRpcProvider, JsonRpcSigner } from \"./json-rpc-provider\";\nimport { JsonRpcBatchProvider } from \"./json-rpc-batch-provider\";\nimport { NodesmithProvider } from \"./nodesmith-provider\";\nimport { PocketProvider } from \"./pocket-provider\";\nimport { StaticJsonRpcProvider, UrlJsonRpcProvider } from \"./url-json-rpc-provider\";\nimport { Web3Provider } from \"./web3-provider\";\nimport { WebSocketProvider } from \"./websocket-provider\";\nimport { ExternalProvider, JsonRpcFetchFunc } from \"./web3-provider\";\n\nimport { CommunityResourcable, Formatter, isCommunityResourcable, isCommunityResource, showThrottleMessage } from \"./formatter\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\n////////////////////////\n// Helper Functions\n\nfunction getDefaultProvider(network?: Networkish, options?: any): BaseProvider {\n if (network == null) { network = \"homestead\"; }\n\n // If passed a URL, figure out the right type of provider based on the scheme\n if (typeof(network) === \"string\") {\n // @TODO: Add support for IpcProvider; maybe if it ends in \".ipc\"?\n\n // Handle http and ws (and their secure variants)\n const match = network.match(/^(ws|http)s?:/i);\n if (match) {\n switch (match[1].toLowerCase()) {\n case \"http\": case \"https\":\n return new JsonRpcProvider(network);\n case \"ws\": case \"wss\":\n return new WebSocketProvider(network);\n default:\n logger.throwArgumentError(\"unsupported URL scheme\", \"network\", network);\n }\n }\n }\n\n const n = getNetwork(network);\n if (!n || !n._defaultProvider) {\n logger.throwError(\"unsupported getDefaultProvider network\", Logger.errors.NETWORK_ERROR, {\n operation: \"getDefaultProvider\",\n network: network\n });\n }\n\n return n._defaultProvider({\n FallbackProvider,\n\n AlchemyProvider,\n AnkrProvider,\n CloudflareProvider,\n EtherscanProvider,\n InfuraProvider,\n JsonRpcProvider,\n NodesmithProvider,\n PocketProvider,\n Web3Provider,\n\n IpcProvider,\n }, options);\n}\n\n////////////////////////\n// Exports\n\nexport {\n\n // Abstract Providers (or Abstract-ish)\n Provider,\n BaseProvider,\n\n Resolver,\n\n UrlJsonRpcProvider,\n\n ///////////////////////\n // Concrete Providers\n\n FallbackProvider,\n\n AlchemyProvider,\n AlchemyWebSocketProvider,\n AnkrProvider,\n CloudflareProvider,\n EtherscanProvider,\n InfuraProvider,\n InfuraWebSocketProvider,\n JsonRpcProvider,\n JsonRpcBatchProvider,\n NodesmithProvider,\n PocketProvider,\n StaticJsonRpcProvider,\n Web3Provider,\n WebSocketProvider,\n\n IpcProvider,\n\n\n ///////////////////////\n // Signer\n\n JsonRpcSigner,\n\n\n ///////////////////////\n // Functions\n\n getDefaultProvider,\n getNetwork,\n isCommunityResource,\n isCommunityResourcable,\n showThrottleMessage,\n\n\n ///////////////////////\n // Objects\n\n Formatter,\n\n\n ///////////////////////\n // Types\n\n Block,\n BlockTag,\n EventType,\n FeeData,\n Filter,\n Log,\n Listener,\n TransactionReceipt,\n TransactionRequest,\n TransactionResponse,\n\n ExternalProvider,\n JsonRpcFetchFunc,\n\n FallbackProviderConfig,\n\n Network,\n Networkish,\n\n EnsProvider,\n EnsResolver,\n\n CommunityResourcable\n};\n\n", "export const version = \"solidity/5.7.0\";\n", "\"use strict\";\n\nimport { BigNumber } from \"@ethersproject/bignumber\";\nimport { arrayify, concat, hexlify, zeroPad } from \"@ethersproject/bytes\";\nimport { keccak256 as hashKeccak256 } from \"@ethersproject/keccak256\";\nimport { sha256 as hashSha256 } from \"@ethersproject/sha2\";\nimport { toUtf8Bytes } from \"@ethersproject/strings\";\n\nconst regexBytes = new RegExp(\"^bytes([0-9]+)$\");\nconst regexNumber = new RegExp(\"^(u?int)([0-9]*)$\");\nconst regexArray = new RegExp(\"^(.*)\\\\[([0-9]*)\\\\]$\");\n\nconst Zeros = \"0000000000000000000000000000000000000000000000000000000000000000\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\n\nfunction _pack(type: string, value: any, isArray?: boolean): Uint8Array {\n switch(type) {\n case \"address\":\n if (isArray) { return zeroPad(value, 32); }\n return arrayify(value);\n case \"string\":\n return toUtf8Bytes(value);\n case \"bytes\":\n return arrayify(value);\n case \"bool\":\n value = (value ? \"0x01\": \"0x00\");\n if (isArray) { return zeroPad(value, 32); }\n return arrayify(value);\n }\n\n let match = type.match(regexNumber);\n if (match) {\n //let signed = (match[1] === \"int\")\n let size = parseInt(match[2] || \"256\")\n\n if ((match[2] && String(size) !== match[2]) || (size % 8 !== 0) || size === 0 || size > 256) {\n logger.throwArgumentError(\"invalid number type\", \"type\", type)\n }\n\n if (isArray) { size = 256; }\n\n value = BigNumber.from(value).toTwos(size);\n\n return zeroPad(value, size / 8);\n }\n\n match = type.match(regexBytes);\n if (match) {\n const size = parseInt(match[1]);\n\n if (String(size) !== match[1] || size === 0 || size > 32) {\n logger.throwArgumentError(\"invalid bytes type\", \"type\", type)\n }\n if (arrayify(value).byteLength !== size) {\n logger.throwArgumentError(`invalid value for ${ type }`, \"value\", value)\n }\n if (isArray) { return arrayify((value + Zeros).substring(0, 66)); }\n return value;\n }\n\n match = type.match(regexArray);\n if (match && Array.isArray(value)) {\n const baseType = match[1];\n const count = parseInt(match[2] || String(value.length));\n if (count != value.length) {\n logger.throwArgumentError(`invalid array length for ${ type }`, \"value\", value)\n }\n const result: Array = [];\n value.forEach(function(value) {\n result.push(_pack(baseType, value, true));\n });\n return concat(result);\n }\n\n return logger.throwArgumentError(\"invalid type\", \"type\", type)\n}\n\n// @TODO: Array Enum\n\nexport function pack(types: ReadonlyArray, values: ReadonlyArray) {\n if (types.length != values.length) {\n logger.throwArgumentError(\"wrong number of values; expected ${ types.length }\", \"values\", values)\n }\n const tight: Array = [];\n types.forEach(function(type, index) {\n tight.push(_pack(type, values[index]));\n });\n return hexlify(concat(tight));\n}\n\nexport function keccak256(types: ReadonlyArray, values: ReadonlyArray) {\n return hashKeccak256(pack(types, values));\n}\n\nexport function sha256(types: ReadonlyArray, values: ReadonlyArray) {\n return hashSha256(pack(types, values));\n}\n", "export const version = \"units/5.7.0\";\n", "\"use strict\";\n\nimport { BigNumber, BigNumberish } from \"@ethersproject/bignumber\";\nimport { formatFixed, parseFixed } from \"@ethersproject/bignumber\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nconst names = [\n \"wei\",\n \"kwei\",\n \"mwei\",\n \"gwei\",\n \"szabo\",\n \"finney\",\n \"ether\",\n];\n\n\n// Some environments have issues with RegEx that contain back-tracking, so we cannot\n// use them.\nexport function commify(value: string | number): string {\n const comps = String(value).split(\".\");\n\n if (comps.length > 2 || !comps[0].match(/^-?[0-9]*$/) || (comps[1] && !comps[1].match(/^[0-9]*$/)) || value === \".\" || value === \"-.\") {\n logger.throwArgumentError(\"invalid value\", \"value\", value);\n }\n\n // Make sure we have at least one whole digit (0 if none)\n let whole = comps[0];\n\n let negative = \"\";\n if (whole.substring(0, 1) === \"-\") {\n negative = \"-\";\n whole = whole.substring(1);\n }\n\n // Make sure we have at least 1 whole digit with no leading zeros\n while (whole.substring(0, 1) === \"0\") { whole = whole.substring(1); }\n if (whole === \"\") { whole = \"0\"; }\n\n let suffix = \"\";\n if (comps.length === 2) { suffix = \".\" + (comps[1] || \"0\"); }\n while (suffix.length > 2 && suffix[suffix.length - 1] === \"0\") {\n suffix = suffix.substring(0, suffix.length - 1);\n }\n\n const formatted = [];\n while (whole.length) {\n if (whole.length <= 3) {\n formatted.unshift(whole);\n break;\n } else {\n const index = whole.length - 3;\n formatted.unshift(whole.substring(index));\n whole = whole.substring(0, index);\n }\n }\n\n return negative + formatted.join(\",\") + suffix;\n}\n\nexport function formatUnits(value: BigNumberish, unitName?: string | BigNumberish): string {\n if (typeof(unitName) === \"string\") {\n const index = names.indexOf(unitName);\n if (index !== -1) { unitName = 3 * index; }\n }\n return formatFixed(value, (unitName != null) ? unitName: 18);\n}\n\nexport function parseUnits(value: string, unitName?: BigNumberish): BigNumber {\n if (typeof(value) !== \"string\") {\n logger.throwArgumentError(\"value must be a string\", \"value\", value);\n }\n if (typeof(unitName) === \"string\") {\n const index = names.indexOf(unitName);\n if (index !== -1) { unitName = 3 * index; }\n }\n return parseFixed(value, (unitName != null) ? unitName: 18);\n}\n\nexport function formatEther(wei: BigNumberish): string {\n return formatUnits(wei, 18);\n}\n\nexport function parseEther(ether: string): BigNumber {\n return parseUnits(ether, 18);\n}\n\n", "\"use strict\";\n\nimport { AbiCoder, checkResultErrors, ConstructorFragment, defaultAbiCoder, ErrorFragment, EventFragment, FormatTypes, Fragment, FunctionFragment, Indexed, Interface, LogDescription, ParamType, Result, TransactionDescription }from \"@ethersproject/abi\";\nimport { getAddress, getCreate2Address, getContractAddress, getIcapAddress, isAddress } from \"@ethersproject/address\";\nimport * as base64 from \"@ethersproject/base64\";\nimport { Base58 as base58 } from \"@ethersproject/basex\";\nimport { arrayify, concat, hexConcat, hexDataSlice, hexDataLength, hexlify, hexStripZeros, hexValue, hexZeroPad, isBytes, isBytesLike, isHexString, joinSignature, zeroPad, splitSignature, stripZeros } from \"@ethersproject/bytes\";\nimport { _TypedDataEncoder, dnsEncode, hashMessage, id, isValidName, namehash } from \"@ethersproject/hash\";\nimport { defaultPath, entropyToMnemonic, getAccountPath, HDNode, isValidMnemonic, mnemonicToEntropy, mnemonicToSeed } from \"@ethersproject/hdnode\";\nimport { getJsonWalletAddress } from \"@ethersproject/json-wallets\";\nimport { keccak256 } from \"@ethersproject/keccak256\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { computeHmac, ripemd160, sha256, sha512 } from \"@ethersproject/sha2\";\nimport { keccak256 as solidityKeccak256, pack as solidityPack, sha256 as soliditySha256 } from \"@ethersproject/solidity\";\nimport { randomBytes, shuffled } from \"@ethersproject/random\";\nimport { checkProperties, deepCopy, defineReadOnly, getStatic, resolveProperties, shallowCopy } from \"@ethersproject/properties\";\nimport * as RLP from \"@ethersproject/rlp\";\nimport { computePublicKey, recoverPublicKey, SigningKey } from \"@ethersproject/signing-key\";\nimport { formatBytes32String, nameprep, parseBytes32String, _toEscapedUtf8String, toUtf8Bytes, toUtf8CodePoints, toUtf8String, Utf8ErrorFuncs } from \"@ethersproject/strings\";\nimport { accessListify, computeAddress, parse as parseTransaction, recoverAddress, serialize as serializeTransaction, TransactionTypes } from \"@ethersproject/transactions\";\nimport { commify, formatEther, parseEther, formatUnits, parseUnits } from \"@ethersproject/units\";\nimport { verifyMessage, verifyTypedData } from \"@ethersproject/wallet\";\nimport { _fetchData, fetchJson, poll } from \"@ethersproject/web\";\n\n////////////////////////\n// Enums\n\nimport { SupportedAlgorithm } from \"@ethersproject/sha2\";\nimport { UnicodeNormalizationForm, Utf8ErrorReason } from \"@ethersproject/strings\";\nimport { UnsignedTransaction } from \"@ethersproject/transactions\";\n\n////////////////////////\n// Types and Interfaces\n\nimport { CoerceFunc } from \"@ethersproject/abi\";\nimport { Bytes, BytesLike, Hexable } from \"@ethersproject/bytes\"\nimport { Mnemonic } from \"@ethersproject/hdnode\";\nimport { EncryptOptions, ProgressCallback } from \"@ethersproject/json-wallets\";\nimport { Deferrable } from \"@ethersproject/properties\";\nimport { Utf8ErrorFunc } from \"@ethersproject/strings\";\nimport { AccessList, AccessListish } from \"@ethersproject/transactions\";\nimport { ConnectionInfo, FetchJsonResponse, OnceBlockable, OncePollable, PollOptions } from \"@ethersproject/web\";\n\n////////////////////////\n// Exports\n\nexport {\n AbiCoder,\n defaultAbiCoder,\n\n Fragment,\n ConstructorFragment,\n ErrorFragment,\n EventFragment,\n FunctionFragment,\n ParamType,\n FormatTypes,\n\n checkResultErrors,\n Result,\n\n Logger,\n\n RLP,\n\n _fetchData,\n fetchJson,\n poll,\n\n checkProperties,\n deepCopy,\n defineReadOnly,\n getStatic,\n resolveProperties,\n shallowCopy,\n\n arrayify,\n\n concat,\n stripZeros,\n zeroPad,\n\n isBytes,\n isBytesLike,\n\n defaultPath,\n HDNode,\n SigningKey,\n\n Interface,\n\n LogDescription,\n TransactionDescription,\n\n base58,\n base64,\n\n hexlify,\n isHexString,\n hexConcat,\n hexStripZeros,\n hexValue,\n hexZeroPad,\n hexDataLength,\n hexDataSlice,\n\n nameprep,\n _toEscapedUtf8String,\n toUtf8Bytes,\n toUtf8CodePoints,\n toUtf8String,\n Utf8ErrorFuncs,\n\n formatBytes32String,\n parseBytes32String,\n\n dnsEncode,\n hashMessage,\n namehash,\n isValidName,\n id,\n\n _TypedDataEncoder,\n\n getAddress,\n getIcapAddress,\n getContractAddress,\n getCreate2Address,\n isAddress,\n\n formatEther,\n parseEther,\n\n formatUnits,\n parseUnits,\n\n commify,\n\n computeHmac,\n keccak256,\n ripemd160,\n sha256,\n sha512,\n\n randomBytes,\n shuffled,\n\n solidityPack,\n solidityKeccak256,\n soliditySha256,\n\n splitSignature,\n joinSignature,\n\n accessListify,\n parseTransaction,\n serializeTransaction,\n TransactionTypes,\n\n getJsonWalletAddress,\n\n computeAddress,\n recoverAddress,\n\n computePublicKey,\n recoverPublicKey,\n\n verifyMessage,\n verifyTypedData,\n\n getAccountPath,\n mnemonicToEntropy,\n entropyToMnemonic,\n isValidMnemonic,\n mnemonicToSeed,\n\n\n ////////////////////////\n // Enums\n\n SupportedAlgorithm,\n\n UnicodeNormalizationForm,\n Utf8ErrorReason,\n\n ////////////////////////\n // Types\n\n Bytes,\n BytesLike,\n Hexable,\n\n AccessList,\n AccessListish,\n UnsignedTransaction,\n\n CoerceFunc,\n\n Indexed,\n\n Mnemonic,\n\n Deferrable,\n\n Utf8ErrorFunc,\n\n ConnectionInfo,\n OnceBlockable,\n OncePollable,\n PollOptions,\n FetchJsonResponse,\n\n EncryptOptions,\n ProgressCallback\n}\n\n", "export const version = \"ethers/5.7.2\";\n", "\"use strict\";\n\nimport { BaseContract, Contract, ContractFactory } from \"@ethersproject/contracts\";\n\nimport { BigNumber, FixedNumber } from \"@ethersproject/bignumber\";\n\nimport { Signer, VoidSigner } from \"@ethersproject/abstract-signer\";\nimport { Wallet } from \"@ethersproject/wallet\";\n\nimport * as constants from \"@ethersproject/constants\";\n\nimport * as providers from \"@ethersproject/providers\";\nimport { getDefaultProvider } from \"@ethersproject/providers\";\n\nimport { Wordlist, wordlists} from \"@ethersproject/wordlists\";\n\nimport * as utils from \"./utils\";\n\nimport { ErrorCode as errors, Logger } from \"@ethersproject/logger\";\n\n////////////////////////\n// Types\n\nimport type { TypedDataDomain, TypedDataField } from \"@ethersproject/abstract-signer\";\nimport { BigNumberish } from \"@ethersproject/bignumber\";\nimport { Bytes, BytesLike, Signature } from \"@ethersproject/bytes\";\nimport { Transaction, UnsignedTransaction } from \"@ethersproject/transactions\";\n\n\n////////////////////////\n// Compile-Time Constants\n\n// This is generated by \"npm run dist\"\nimport { version } from \"./_version\";\n\nconst logger = new Logger(version);\n\n////////////////////////\n// Types\n\nimport {\n ContractFunction,\n ContractReceipt,\n ContractTransaction,\n\n Event,\n EventFilter,\n\n Overrides,\n PayableOverrides,\n CallOverrides,\n\n PopulatedTransaction,\n\n ContractInterface\n} from \"@ethersproject/contracts\";\n\n\n////////////////////////\n// Exports\n\nexport {\n Signer,\n\n Wallet,\n VoidSigner,\n\n getDefaultProvider,\n providers,\n\n BaseContract,\n Contract,\n ContractFactory,\n\n BigNumber,\n FixedNumber,\n\n constants,\n errors,\n\n logger,\n\n utils,\n\n wordlists,\n\n\n ////////////////////////\n // Compile-Time Constants\n\n version,\n\n\n ////////////////////////\n // Types\n\n ContractFunction,\n ContractReceipt,\n ContractTransaction,\n Event,\n EventFilter,\n\n Overrides,\n PayableOverrides,\n CallOverrides,\n\n PopulatedTransaction,\n\n ContractInterface,\n\n TypedDataDomain,\n TypedDataField,\n\n BigNumberish,\n\n Bytes,\n BytesLike,\n\n Signature,\n\n Transaction,\n UnsignedTransaction,\n\n Wordlist\n};\n\n", "\"use strict\";\n\n// To modify this file, you must update ./misc/admin/lib/cmds/update-exports.js\n\nimport * as ethers from \"./ethers\";\n\ntry {\n const anyGlobal = (window as any);\n\n if (anyGlobal._ethers == null) {\n anyGlobal._ethers = ethers;\n }\n} catch (error) { }\n\nexport { ethers };\n\nexport {\n Signer,\n\n Wallet,\n VoidSigner,\n\n getDefaultProvider,\n providers,\n\n BaseContract,\n Contract,\n ContractFactory,\n\n BigNumber,\n FixedNumber,\n\n constants,\n errors,\n\n logger,\n\n utils,\n\n wordlists,\n\n\n ////////////////////////\n // Compile-Time Constants\n\n version,\n\n\n ////////////////////////\n // Types\n\n ContractFunction,\n ContractReceipt,\n ContractTransaction,\n Event,\n EventFilter,\n\n Overrides,\n PayableOverrides,\n CallOverrides,\n\n PopulatedTransaction,\n\n ContractInterface,\n\n TypedDataDomain,\n TypedDataField,\n\n BigNumberish,\n\n Bytes,\n BytesLike,\n\n Signature,\n\n Transaction,\n UnsignedTransaction,\n\n Wordlist\n} from \"./ethers\";\n", "import serverless from 'serverless-http'\nimport express from 'express'\nimport cors from 'cors'\nimport { APIGatewayEventRequestContext, APIGatewayProxyEvent } from 'aws-lambda'\nimport signupLogin from './routes/signupLogin'\nimport signup from './routes/signup'\nimport login from './routes/login'\nimport auth from './routes/auth'\nimport users from './routes/users'\n\nconst app = express()\napp.use(express.json())\napp.use(cors())\n\napp.use('/signupLogin', signupLogin)\napp.use('/signup', signup)\napp.use('/login', login)\napp.use('/auth', auth)\napp.use('/users', users)\n\nexport const handler = async function (event: APIGatewayProxyEvent, context: APIGatewayEventRequestContext) {\n const serverlessApp = serverless(app)\n return await serverlessApp(event, context)\n}", "import express from 'express'\nimport useEthers from '../providers/ethers'\nimport { Account } from '@casimir/types'\nimport { SignupLoginCredentials } from '@casimir/types/src/interfaces/SignupLoginCredentials'\nimport useUsers from '../providers/users'\nimport { userCollection } from '../collections/users'\n\nconst { verifyMessage } = useEthers()\nconst { updateMessage } = useUsers()\nconst router = express.Router()\n\n// Signup or Login\nrouter.use('/', async (req: express.Request, res: express.Response) => {\n const { body } = req\n const { provider, address, currency, message, signedMessage } = body as SignupLoginCredentials\n const user = userCollection.find(user => user.address === address.toLowerCase())\n if (user && !user?.accounts) { // signup\n console.log('got into this block in signupLogin.ts')\n const accounts: Array = [\n {\n address: address,\n currency: currency,\n balance: '1000000000000000000',\n balanceSnapshots: [{ date: '2023-02-06', balance: '1000000000000000000' }, { date: '2023-02-05', balance: '100000000000000000' }],\n roi: 0,\n walletProvider: provider\n },\n ]\n user.accounts = accounts\n console.log('user :>> ', user)\n res.setHeader('Content-Type', 'application/json')\n res.status(200)\n res.json({\n message: user.accounts.length ? 'Sign Up Successful' : 'Problem creating new user',\n error: false,\n data: user ? user : null\n })\n } else { // login\n const response = verifyMessage({ address, message, signedMessage, provider })\n updateMessage(provider, address) // send back token if successful\n res.setHeader('Content-Type', 'application/json')\n res.status(200)\n res.json({\n message: response ? 'Login successful' : 'Login failed',\n error: false,\n data: user,\n })\n }\n})\n\nexport default router", "import { ethers } from 'ethers'\nimport { LoginCredentials } from '@casimir/types'\n\nexport default function useEthers() {\n\n /**\n * Verifies a user's login attempt with an address, message and signed message\n * \n * @param {LoginCredentials} loginCredentials - The user's address, message and signed message \n * @returns {boolean} - The response from the login request\n */\n function verifyMessage(loginCredentials: LoginCredentials): boolean {\n const { address, message, signedMessage } = loginCredentials\n try {\n if (!address.length || !message.length || !signedMessage.length) {\n return false\n } else {\n const recoveredAddress = ethers.utils.verifyMessage(message, signedMessage)\n return address.toLowerCase() === recoveredAddress.toLowerCase()\n }\n } catch (error) {\n console.log('error :>> ', error)\n return false\n }\n }\n\n return { verifyMessage }\n}\n", "import { User } from '@casimir/types'\n\nconst user: User = {\n address: '0xd557a5745d4560B24D36A68b52351ffF9c86A212'.toLowerCase(),\n accounts: [\n {\n address: '0xd557a5745d4560B24D36A68b52351ffF9c86A212'.toLowerCase(),\n currency: 'ETH',\n balance: '1000000000000000000',\n balanceSnapshots: [{ date: '2023-02-06', balance: '1000000000000000000' }, { date: '2023-02-05', balance: '100000000000000000' }],\n roi: 0.25,\n walletProvider: 'MetaMask'\n },\n {\n address: '0x1dc336d94890b10e1a47b6e34cdee1009ee7b942'.toLowerCase(),\n currency: 'ETH',\n balance: '1000000000000000000',\n balanceSnapshots: [{ date: '2023-02-06', balance: '1000000000000000000' }, { date: '2023-02-05', balance: '100000000000000000' }],\n roi: 0.25,\n walletProvider: 'CoinbaseWallet'\n },\n {\n address: '0x8222Ef172A2117D1C4739E35234E097630D94376'.toLowerCase(),\n currency: 'ETH',\n balance: '1000000000000000000',\n balanceSnapshots: [{ date: '2023-02-06', balance: '1000000000000000000' }, { date: '2023-02-05', balance: '100000000000000000' }],\n roi: 0.25,\n walletProvider: 'Ledger'\n },\n {\n address: 'bc1qpttwf0df8jkx54dl04anwgmyt27lj6vj885lyr'.toLowerCase(),\n currency: 'BTC',\n balance: '100000000',\n balanceSnapshots: [{ date: '2023-02-06', balance: '100000000' }, { date: '2023-02-05', balance: '100000000' }],\n roi: 0.25,\n walletProvider: 'Ledger'\n },\n {\n address: '0x8222Ef172A2117D1C4739E35234E097630D94377'.toLowerCase(), // Fake address\n currency: 'ETH',\n balance: '1000000000000000000',\n balanceSnapshots: [{ date: '2023-02-06', balance: '1000000000000000000' }, { date: '2023-02-05', balance: '100000000000000000' }],\n roi: 0.25,\n walletProvider: 'Trezor'\n },\n {\n address: '0x8222Ef172A2117D1C4739E35234E097630D94378'.toLowerCase(), // Fake address\n currency: 'ETH',\n balance: '1000000000000000000',\n balanceSnapshots: [{ date: '2023-02-06', balance: '1000000000000000000' }, { date: '2023-02-05', balance: '100000000000000000' }],\n roi: 0.25,\n walletProvider: 'WalletConnect'\n },\n ],\n nonce: '1234567890',\n}\n\nexport const userCollection : Array = [user]", "import { userCollection } from '../collections/users'\nimport { ProviderString } from '@casimir/types'\nimport { User } from '@casimir/types'\n\nexport default function useUsers() {\n function getMessage (address: string) {\n const user = userCollection.find(user => user.address === address)\n if (user) {\n return user.nonce\n }\n return ''\n }\n\n function updateMessage (provider: ProviderString, address: string) {\n const user = userCollection.find(user => user.address === address)\n console.log('user in updateMessage in users.ts :>> ', user)\n provider = provider.toLowerCase()\n if (user) {\n user.nonce = generateNonce()\n } else {\n console.log('Create new user here?')\n const user: User = {\n address,\n nonce: generateNonce(),\n }\n userCollection.push(user)\n }\n }\n \n function generateNonce() {\n return (Math.floor(Math.random()\n * (Number.MAX_SAFE_INTEGER - 1)) + 1).toString()\n }\n \n return { getMessage, updateMessage, generateNonce }\n}", "import express from 'express'\nimport { SignupLoginCredentials } from '@casimir/types/src/interfaces/SignupLoginCredentials'\nimport { userCollection } from '../collections/users'\n\nconst router = express.Router()\n\n// TODO: Remove if we're not using.\nrouter.use('/', async (req: express.Request, res: express.Response) => {\n try {\n const { body } = req\n const { address, provider, currency } = body as SignupLoginCredentials\n const user = userCollection.find(user => user.address === address.toLowerCase())\n console.log('user :>> ', user)\n const newUser = {\n address: address.toLowerCase(),\n accounts: [\n {\n address,\n currency,\n balance: '1000000000000000000',\n balanceSnapshots: [{ date: '2023-02-06', balance: '1000000000000000000' }, { date: '2023-02-05', balance: '100000000000000000' }],\n roi: 0,\n walletProvider: provider\n },\n ],\n nonce: generateNonce()\n }\n if (!user) {\n console.log('pushing in user')\n userCollection.push(newUser)\n }\n res.setHeader('Content-Type', 'application/json')\n res.status(200)\n res.json({\n message: user ? 'Account already exists at that address' : 'Sign Up Successful',\n error: false,\n data: user ? user : newUser\n })\n } catch (err) {\n console.log('err :>> ', err)\n res.status(500)\n res.json({\n message: 'Error signing up',\n error: true\n })\n }\n})\n\nfunction generateNonce() {\n return (Math.floor(Math.random()\n * (Number.MAX_SAFE_INTEGER - 1)) + 1).toString()\n}\n\nexport default router", "import express from 'express'\nimport useEthers from '../providers/ethers'\nimport { LoginCredentials } from '@casimir/types'\nimport useUsers from '../providers/users'\nimport { userCollection } from '../collections/users'\n\nconst { verifyMessage } = useEthers()\nconst { updateMessage } = useUsers()\nconst router = express.Router()\n\n// TODO: Remove if we're not using.\nrouter.use('/', async (req: express.Request, res: express.Response) => {\n const { body } = req\n const { address, message, signedMessage, provider } = body as LoginCredentials\n const response = verifyMessage({ address, message, signedMessage, provider })\n if (response) updateMessage(provider, address) // send back token if successful\n const user = userCollection.find(user => user.address === address.toLowerCase())\n res.setHeader('Content-Type', 'application/json')\n res.status(200)\n res.json({\n message: response ? 'Login successful' : 'Login failed',\n error: false,\n data: user,\n })\n})\n\nexport default router", "import express from 'express'\nimport useUsers from '../providers/users'\nimport { userCollection } from '../collections/users'\nconst router = express.Router()\n\nconst { getMessage, updateMessage } = useUsers()\n\nrouter.get('/:provider/:address', async (req: express.Request, res: express.Response) => {\n const { provider, address } = req.params\n updateMessage(provider, address)\n const message = getMessage(address)\n if (message) {\n res.setHeader('Content-Type', 'application/json')\n res.status(200)\n res.json({ message })\n } else {\n res.status(404)\n res.send()\n }\n})\n\n\n// TODO: Is this being used at all?\nrouter.post('/:address', async (req: express.Request, res: express.Response) => {\n const { address } = req.params\n const { message } = req.body\n const user = userCollection.find(user => user.address === address)\n if (user) {\n user.nonce = message\n res.setHeader('Content-Type', 'application/json')\n res.status(200)\n res.json({\n message: `Message updated to: ${message}`,\n error: false\n })\n } else {\n res.status(404)\n res.json({\n message: 'User not found',\n error: true\n })\n }\n})\n\nexport default router", "import express from 'express'\nimport { userCollection } from '../collections/users'\nconst router = express.Router()\n\nrouter.put('/update-primary-account', async (req: express.Request, res: express.Response) => {\n let { primaryAddress, updatedProvider, updatedAddress } = req.body\n primaryAddress = primaryAddress.toLowerCase()\n updatedProvider = updatedProvider.toLowerCase()\n updatedAddress = updatedAddress.toLowerCase()\n const user = userCollection.find(user => user.address === primaryAddress)\n if (user) {\n user.address = updatedAddress\n }\n res.setHeader('Content-Type', 'application/json')\n res.status(200)\n res.json({\n message: 'Primary account updated',\n error: false,\n data: user\n })\n})\n\nrouter.post('/add-sub-account', async (req: express.Request, res: express.Response) => {\n try {\n const { account } = req.body\n let { address } = req.body\n address = address.toLowerCase()\n const existingUser = userCollection.find(user => user.address === address)\n if (existingUser) {\n existingUser.accounts?.push(account)\n }\n res.setHeader('Content-Type', 'application/json')\n res.status(200)\n res.json({\n message: 'Account added',\n error: false,\n data: existingUser\n })\n } catch (err) {\n console.log('err :>> ', err)\n res.status(500)\n res.json({\n message: 'Error adding account',\n error: true\n })\n }\n})\n\nrouter.post('/remove-sub-account', async (req: express.Request, res: express.Response) => {\n try {\n const { provider, address, currency } = req.body\n let { primaryAddress } = req.body\n primaryAddress = primaryAddress.toLowerCase()\n const existingUser = userCollection.find(user => user.address === primaryAddress)\n let accountedRemoved = false\n if (existingUser) {\n existingUser.accounts = existingUser.accounts?.filter(account => {\n const notAddress = account.walletProvider !== provider || account.address !== address || account.currency !== currency\n if (!notAddress) {\n accountedRemoved = true\n } else {\n return account\n }\n })\n }\n if (accountedRemoved) {\n res.setHeader('Content-Type', 'application/json')\n res.status(200)\n res.json({\n message: 'Account removed',\n error: false,\n data: existingUser\n })\n } else {\n res.setHeader('Content-Type', 'application/json')\n res.status(200)\n res.json({\n message: 'Account not found',\n error: true,\n data: existingUser\n })\n }\n } catch (err) {\n console.log('err :>> ', err)\n res.status(500)\n res.json({\n message: 'Error adding account',\n error: true\n })\n }\n})\n\nexport default router"], + "mappings": "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UAAU,OAAS,SAAgBK,EAAKF,EAAK,CAChD,YAAK,MAAM,OAAOE,EAAKF,CAAG,EACnB,IACT,EAEAH,GAAK,UAAU,OAAS,SAAgBG,EAAK,CAC3C,YAAK,MAAM,OAAO,KAAK,MAAM,OAAO,CAAC,EAC9B,KAAK,MAAM,OAAOA,CAAG,CAC9B,IC9CA,IAAAG,GAAAC,EAAAC,IAAA,KAAIC,GAAOD,GAEXC,GAAK,MAAQ,KACbA,GAAK,OAAS,KACdA,GAAK,IAAM,KACXA,GAAK,OAAS,KACdA,GAAK,KAAO,KAGZA,GAAK,KAAOA,GAAK,IAAI,KACrBA,GAAK,OAASA,GAAK,IAAI,OACvBA,GAAK,OAASA,GAAK,IAAI,OACvBA,GAAK,OAASA,GAAK,IAAI,OACvBA,GAAK,OAASA,GAAK,IAAI,OACvBA,GAAK,UAAYA,GAAK,OAAO,YCd7B,IAAAC,GAAAC,EAAA,CAAAC,IAAAC,KAAA,CAAAA,GAAO,QAAU,CACf,QAAS,CACP,KAAM,EACN,OAAQ,CACN,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,kEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,kEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,gEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,kEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,kEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,CACF,CACF,EACA,IAAK,CACH,IAAK,EACL,OAAQ,CACN,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,kEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,kEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,kEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,kEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,iEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,kEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,CACF,CACF,CACF,IC3wBA,IAAAC,GAAAC,EAAAC,IAAA,cAEA,IAAIC,GAASD,GAETE,GAAO,KACPC,GAAQ,KACRC,GAAQ,KAERC,GAASD,GAAM,OAEnB,SAASE,GAAYC,EAAS,CACxBA,EAAQ,OAAS,QACnB,KAAK,MAAQ,IAAIJ,GAAM,MAAMI,CAAO,EAC7BA,EAAQ,OAAS,UACxB,KAAK,MAAQ,IAAIJ,GAAM,QAAQI,CAAO,EAEtC,KAAK,MAAQ,IAAIJ,GAAM,KAAKI,CAAO,EACrC,KAAK,EAAI,KAAK,MAAM,EACpB,KAAK,EAAI,KAAK,MAAM,EACpB,KAAK,KAAOA,EAAQ,KAEpBF,GAAO,KAAK,EAAE,SAAS,EAAG,eAAe,EACzCA,GAAO,KAAK,EAAE,IAAI,KAAK,CAAC,EAAE,WAAW,EAAG,yBAAyB,CACnE,CACAJ,GAAO,YAAcK,GAErB,SAASE,GAAYC,EAAMF,EAAS,CAClC,OAAO,eAAeN,GAAQQ,EAAM,CAClC,aAAc,GACd,WAAY,GACZ,IAAK,UAAW,CACd,IAAIN,EAAQ,IAAIG,GAAYC,CAAO,EACnC,cAAO,eAAeN,GAAQQ,EAAM,CAClC,aAAc,GACd,WAAY,GACZ,MAAON,CACT,CAAC,EACMA,CACT,CACF,CAAC,CACH,CAEAK,GAAY,OAAQ,CAClB,KAAM,QACN,MAAO,OACP,EAAG,wDACH,EAAG,wDACH,EAAG,wDACH,EAAG,wDACH,KAAMN,GAAK,OACX,KAAM,GACN,EAAG,CACD,wDACA,uDACF,CACF,CAAC,EAEDM,GAAY,OAAQ,CAClB,KAAM,QACN,MAAO,OACP,EAAG,iEACH,EAAG,iEACH,EAAG,iEACH,EAAG,iEACH,KAAMN,GAAK,OACX,KAAM,GACN,EAAG,CACD,iEACA,gEACF,CACF,CAAC,EAEDM,GAAY,OAAQ,CAClB,KAAM,QACN,MAAO,KACP,EAAG,0EACH,EAAG,0EACH,EAAG,0EACH,EAAG,0EACH,KAAMN,GAAK,OACX,KAAM,GACN,EAAG,CACD,0EACA,yEACF,CACF,CAAC,EAEDM,GAAY,OAAQ,CAClB,KAAM,QACN,MAAO,KACP,EAAG,8GAEH,EAAG,8GAEH,EAAG,8GAEH,EAAG,8GAEH,KAAMN,GAAK,OACX,KAAM,GACN,EAAG,CACD,8GAEA,6GAEF,CACF,CAAC,EAEDM,GAAY,OAAQ,CAClB,KAAM,QACN,MAAO,KACP,EAAG,2JAGH,EAAG,2JAGH,EAAG,2JAGH,EAAG,2JAGH,KAAMN,GAAK,OACX,KAAM,GACN,EAAG,CACD,2JAGA,0JAGF,CACF,CAAC,EAEDM,GAAY,aAAc,CACxB,KAAM,OACN,MAAO,SACP,EAAG,sEACH,EAAG,QACH,EAAG,IACH,EAAG,sEACH,KAAMN,GAAK,OACX,KAAM,GACN,EAAG,CACD,GACF,CACF,CAAC,EAEDM,GAAY,UAAW,CACrB,KAAM,UACN,MAAO,SACP,EAAG,sEACH,EAAG,KACH,EAAG,IAEH,EAAG,sEACH,EAAG,sEACH,KAAMN,GAAK,OACX,KAAM,GACN,EAAG,CACD,mEAGA,kEACF,CACF,CAAC,EAED,IAAIQ,GACJ,GAAI,CACFA,GAAM,IACR,MAAE,CACAA,GAAM,MACR,CAEAF,GAAY,YAAa,CACvB,KAAM,QACN,MAAO,OACP,EAAG,0EACH,EAAG,IACH,EAAG,IACH,EAAG,0EACH,EAAG,IACH,KAAMN,GAAK,OAGX,KAAM,mEACN,OAAQ,mEACR,MAAO,CACL,CACE,EAAG,mCACH,EAAG,mCACL,EACA,CACE,EAAG,oCACH,EAAG,kCACL,CACF,EAEA,KAAM,GACN,EAAG,CACD,mEACA,mEACAQ,EACF,CACF,CAAC,IC7MD,IAAAC,GAAAC,EAAA,CAAAC,IAAAC,KAAA,cAEA,IAAIC,GAAO,KACPC,GAAQ,KACRC,GAAS,KAEb,SAASC,GAASC,EAAS,CACzB,GAAI,EAAE,gBAAgBD,IACpB,OAAO,IAAIA,GAASC,CAAO,EAC7B,KAAK,KAAOA,EAAQ,KACpB,KAAK,WAAa,CAAC,CAACA,EAAQ,WAE5B,KAAK,OAAS,KAAK,KAAK,QACxB,KAAK,WAAaA,EAAQ,YAAc,KAAK,KAAK,aAElD,KAAK,QAAU,KACf,KAAK,eAAiB,KACtB,KAAK,EAAI,KACT,KAAK,EAAI,KAET,IAAIC,EAAUJ,GAAM,QAAQG,EAAQ,QAASA,EAAQ,YAAc,KAAK,EACpEE,EAAQL,GAAM,QAAQG,EAAQ,MAAOA,EAAQ,UAAY,KAAK,EAC9DG,EAAON,GAAM,QAAQG,EAAQ,KAAMA,EAAQ,SAAW,KAAK,EAC/DF,GAAOG,EAAQ,QAAW,KAAK,WAAa,EACrC,mCAAqC,KAAK,WAAa,OAAO,EACrE,KAAK,MAAMA,EAASC,EAAOC,CAAI,CACjC,CACAR,GAAO,QAAUI,GAEjBA,GAAS,UAAU,MAAQ,SAAcE,EAASC,EAAOC,EAAM,CAC7D,IAAIC,EAAOH,EAAQ,OAAOC,CAAK,EAAE,OAAOC,CAAI,EAE5C,KAAK,EAAI,IAAI,MAAM,KAAK,OAAS,CAAC,EAClC,KAAK,EAAI,IAAI,MAAM,KAAK,OAAS,CAAC,EAClC,QAASE,EAAI,EAAGA,EAAI,KAAK,EAAE,OAAQA,IACjC,KAAK,EAAEA,GAAK,EACZ,KAAK,EAAEA,GAAK,EAGd,KAAK,QAAQD,CAAI,EACjB,KAAK,QAAU,EACf,KAAK,eAAiB,eACxB,EAEAL,GAAS,UAAU,MAAQ,UAAgB,CACzC,OAAO,IAAIH,GAAK,KAAK,KAAK,KAAM,KAAK,CAAC,CACxC,EAEAG,GAAS,UAAU,QAAU,SAAgBK,EAAM,CACjD,IAAIE,EAAO,KAAK,MAAM,EACN,OAAO,KAAK,CAAC,EACb,OAAO,CAAE,CAAK,CAAC,EAC3BF,IACFE,EAAOA,EAAK,OAAOF,CAAI,GACzB,KAAK,EAAIE,EAAK,OAAO,EACrB,KAAK,EAAI,KAAK,MAAM,EAAE,OAAO,KAAK,CAAC,EAAE,OAAO,EACvCF,IAGL,KAAK,EAAI,KAAK,MAAM,EACN,OAAO,KAAK,CAAC,EACb,OAAO,CAAE,CAAK,CAAC,EACf,OAAOA,CAAI,EACX,OAAO,EACrB,KAAK,EAAI,KAAK,MAAM,EAAE,OAAO,KAAK,CAAC,EAAE,OAAO,EAC9C,EAEAL,GAAS,UAAU,OAAS,SAAgBE,EAASM,EAAYC,EAAKC,EAAQ,CAExE,OAAOF,GAAe,WACxBE,EAASD,EACTA,EAAMD,EACNA,EAAa,MAGfN,EAAUJ,GAAM,QAAQI,EAASM,CAAU,EAC3CC,EAAMX,GAAM,QAAQW,EAAKC,CAAM,EAE/BX,GAAOG,EAAQ,QAAW,KAAK,WAAa,EACrC,mCAAqC,KAAK,WAAa,OAAO,EAErE,KAAK,QAAQA,EAAQ,OAAOO,GAAO,CAAC,CAAC,CAAC,EACtC,KAAK,QAAU,CACjB,EAEAT,GAAS,UAAU,SAAW,SAAkBW,EAAKC,EAAKH,EAAKC,EAAQ,CACrE,GAAI,KAAK,QAAU,KAAK,eACtB,MAAM,IAAI,MAAM,oBAAoB,EAGlC,OAAOE,GAAQ,WACjBF,EAASD,EACTA,EAAMG,EACNA,EAAM,MAIJH,IACFA,EAAMX,GAAM,QAAQW,EAAKC,GAAU,KAAK,EACxC,KAAK,QAAQD,CAAG,GAIlB,QADII,EAAO,CAAC,EACLA,EAAK,OAASF,GACnB,KAAK,EAAI,KAAK,MAAM,EAAE,OAAO,KAAK,CAAC,EAAE,OAAO,EAC5CE,EAAOA,EAAK,OAAO,KAAK,CAAC,EAG3B,IAAIC,EAAMD,EAAK,MAAM,EAAGF,CAAG,EAC3B,YAAK,QAAQF,CAAG,EAChB,KAAK,UACEX,GAAM,OAAOgB,EAAKF,CAAG,CAC9B,IChHA,IAAAG,GAAAC,EAAA,CAAAC,IAAAC,KAAA,cAEA,IAAIC,GAAK,KACLC,GAAQ,KACRC,GAASD,GAAM,OAEnB,SAASE,GAAQC,EAAIC,EAAS,CAC5B,KAAK,GAAKD,EACV,KAAK,KAAO,KACZ,KAAK,IAAM,KAGPC,EAAQ,MACV,KAAK,eAAeA,EAAQ,KAAMA,EAAQ,OAAO,EAC/CA,EAAQ,KACV,KAAK,cAAcA,EAAQ,IAAKA,EAAQ,MAAM,CAClD,CACAN,GAAO,QAAUI,GAEjBA,GAAQ,WAAa,SAAoBC,EAAIE,EAAKC,EAAK,CACrD,OAAID,aAAeH,GACVG,EAEF,IAAIH,GAAQC,EAAI,CACrB,IAAKE,EACL,OAAQC,CACV,CAAC,CACH,EAEAJ,GAAQ,YAAc,SAAqBC,EAAII,EAAMD,EAAK,CACxD,OAAIC,aAAgBL,GACXK,EAEF,IAAIL,GAAQC,EAAI,CACrB,KAAMI,EACN,QAASD,CACX,CAAC,CACH,EAEAJ,GAAQ,UAAU,SAAW,UAAoB,CAC/C,IAAIG,EAAM,KAAK,UAAU,EAEzB,OAAIA,EAAI,WAAW,EACV,CAAE,OAAQ,GAAO,OAAQ,oBAAqB,EAClDA,EAAI,SAAS,EAEbA,EAAI,IAAI,KAAK,GAAG,MAAM,CAAC,EAAE,WAAW,EAGlC,CAAE,OAAQ,GAAM,OAAQ,IAAK,EAF3B,CAAE,OAAQ,GAAO,OAAQ,qBAAsB,EAF/C,CAAE,OAAQ,GAAO,OAAQ,2BAA4B,CAKhE,EAEAH,GAAQ,UAAU,UAAY,SAAmBM,EAASF,EAAK,CAU7D,OARI,OAAOE,GAAY,WACrBF,EAAME,EACNA,EAAU,MAGP,KAAK,MACR,KAAK,IAAM,KAAK,GAAG,EAAE,IAAI,KAAK,IAAI,GAE/BF,EAGE,KAAK,IAAI,OAAOA,EAAKE,CAAO,EAF1B,KAAK,GAGhB,EAEAN,GAAQ,UAAU,WAAa,SAAoBI,EAAK,CACtD,OAAIA,IAAQ,MACH,KAAK,KAAK,SAAS,GAAI,CAAC,EAExB,KAAK,IAChB,EAEAJ,GAAQ,UAAU,eAAiB,SAAwBO,EAAKH,EAAK,CACnE,KAAK,KAAO,IAAIP,GAAGU,EAAKH,GAAO,EAAE,EAIjC,KAAK,KAAO,KAAK,KAAK,KAAK,KAAK,GAAG,MAAM,CAAC,CAC5C,EAEAJ,GAAQ,UAAU,cAAgB,SAAuBO,EAAKH,EAAK,CACjE,GAAIG,EAAI,GAAKA,EAAI,EAAG,CAId,KAAK,GAAG,MAAM,OAAS,OACzBR,GAAOQ,EAAI,EAAG,mBAAmB,GACxB,KAAK,GAAG,MAAM,OAAS,SACvB,KAAK,GAAG,MAAM,OAAS,YAChCR,GAAOQ,EAAI,GAAKA,EAAI,EAAG,8BAA8B,EAEvD,KAAK,IAAM,KAAK,GAAG,MAAM,MAAMA,EAAI,EAAGA,EAAI,CAAC,EAC3C,MACF,CACA,KAAK,IAAM,KAAK,GAAG,MAAM,YAAYA,EAAKH,CAAG,CAC/C,EAGAJ,GAAQ,UAAU,OAAS,SAAgBG,EAAK,CAC9C,OAAIA,EAAI,SAAS,GACfJ,GAAOI,EAAI,SAAS,EAAG,4BAA4B,EAE9CA,EAAI,IAAI,KAAK,IAAI,EAAE,KAAK,CACjC,EAGAH,GAAQ,UAAU,KAAO,SAAcQ,EAAKJ,EAAKF,EAAS,CACxD,OAAO,KAAK,GAAG,KAAKM,EAAK,KAAMJ,EAAKF,CAAO,CAC7C,EAEAF,GAAQ,UAAU,OAAS,SAAgBQ,EAAKC,EAAW,CACzD,OAAO,KAAK,GAAG,OAAOD,EAAKC,EAAW,IAAI,CAC5C,EAEAT,GAAQ,UAAU,QAAU,UAAmB,CAC7C,MAAO,eAAiB,KAAK,MAAQ,KAAK,KAAK,SAAS,GAAI,CAAC,GACtD,UAAY,KAAK,KAAO,KAAK,IAAI,QAAQ,GAAK,IACvD,ICxHA,IAAAU,GAAAC,EAAA,CAAAC,IAAAC,KAAA,cAEA,IAAIC,GAAK,KAELC,GAAQ,KACRC,GAASD,GAAM,OAEnB,SAASE,GAAUC,EAASC,EAAK,CAC/B,GAAID,aAAmBD,GACrB,OAAOC,EAEL,KAAK,WAAWA,EAASC,CAAG,IAGhCH,GAAOE,EAAQ,GAAKA,EAAQ,EAAG,0BAA0B,EACzD,KAAK,EAAI,IAAIJ,GAAGI,EAAQ,EAAG,EAAE,EAC7B,KAAK,EAAI,IAAIJ,GAAGI,EAAQ,EAAG,EAAE,EACzBA,EAAQ,gBAAkB,OAC5B,KAAK,cAAgB,KAErB,KAAK,cAAgBA,EAAQ,cACjC,CACAL,GAAO,QAAUI,GAEjB,SAASG,IAAW,CAClB,KAAK,MAAQ,CACf,CAEA,SAASC,GAAUC,EAAKC,EAAG,CACzB,IAAIC,EAAUF,EAAIC,EAAE,SACpB,GAAI,EAAEC,EAAU,KACd,OAAOA,EAET,IAAIC,EAAWD,EAAU,GAGzB,GAAIC,IAAa,GAAKA,EAAW,EAC/B,MAAO,GAIT,QADIC,EAAM,EACDC,EAAI,EAAGC,EAAML,EAAE,MAAOI,EAAIF,EAAUE,IAAKC,IAChDF,IAAQ,EACRA,GAAOJ,EAAIM,GACXF,KAAS,EAIX,OAAIA,GAAO,IACF,IAGTH,EAAE,MAAQK,EACHF,EACT,CAEA,SAASG,GAAUP,EAAK,CAGtB,QAFIK,EAAI,EACJG,EAAMR,EAAI,OAAS,EAChB,CAACA,EAAIK,IAAM,EAAEL,EAAIK,EAAI,GAAK,MAASA,EAAIG,GAC5CH,IAEF,OAAIA,IAAM,EACDL,EAEFA,EAAI,MAAMK,CAAC,CACpB,CAEAV,GAAU,UAAU,WAAa,SAAoBc,EAAMZ,EAAK,CAC9DY,EAAOhB,GAAM,QAAQgB,EAAMZ,CAAG,EAC9B,IAAII,EAAI,IAAIH,GACZ,GAAIW,EAAKR,EAAE,WAAa,GACtB,MAAO,GAET,IAAIO,EAAMT,GAAUU,EAAMR,CAAC,EAO3B,GANIO,IAAQ,IAGPA,EAAMP,EAAE,QAAWQ,EAAK,QAGzBA,EAAKR,EAAE,WAAa,EACtB,MAAO,GAET,IAAIS,EAAOX,GAAUU,EAAMR,CAAC,EAC5B,GAAIS,IAAS,GACX,MAAO,GAET,IAAIC,EAAIF,EAAK,MAAMR,EAAE,MAAOS,EAAOT,EAAE,KAAK,EAE1C,GADAA,EAAE,OAASS,EACPD,EAAKR,EAAE,WAAa,EACtB,MAAO,GAET,IAAIW,EAAOb,GAAUU,EAAMR,CAAC,EAI5B,GAHIW,IAAS,IAGTH,EAAK,SAAWG,EAAOX,EAAE,MAC3B,MAAO,GAET,IAAIY,EAAIJ,EAAK,MAAMR,EAAE,MAAOW,EAAOX,EAAE,KAAK,EAC1C,GAAIU,EAAE,KAAO,EACX,GAAIA,EAAE,GAAK,IACTA,EAAIA,EAAE,MAAM,CAAC,MAGb,OAAO,GAGX,GAAIE,EAAE,KAAO,EACX,GAAIA,EAAE,GAAK,IACTA,EAAIA,EAAE,MAAM,CAAC,MAGb,OAAO,GAIX,YAAK,EAAI,IAAIrB,GAAGmB,CAAC,EACjB,KAAK,EAAI,IAAInB,GAAGqB,CAAC,EACjB,KAAK,cAAgB,KAEd,EACT,EAEA,SAASC,GAAgBC,EAAKP,EAAK,CACjC,GAAIA,EAAM,IAAM,CACdO,EAAI,KAAKP,CAAG,EACZ,MACF,CACA,IAAIQ,EAAS,GAAK,KAAK,IAAIR,CAAG,EAAI,KAAK,MAAQ,GAE/C,IADAO,EAAI,KAAKC,EAAS,GAAI,EACf,EAAEA,GACPD,EAAI,KAAMP,KAASQ,GAAU,GAAM,GAAI,EAEzCD,EAAI,KAAKP,CAAG,CACd,CAEAb,GAAU,UAAU,MAAQ,SAAeE,EAAK,CAC9C,IAAI,EAAI,KAAK,EAAE,QAAQ,EACnBgB,EAAI,KAAK,EAAE,QAAQ,EAYvB,IATI,EAAE,GAAK,MACT,EAAI,CAAE,CAAE,EAAE,OAAO,CAAC,GAEhBA,EAAE,GAAK,MACTA,EAAI,CAAE,CAAE,EAAE,OAAOA,CAAC,GAEpB,EAAIN,GAAU,CAAC,EACfM,EAAIN,GAAUM,CAAC,EAER,CAACA,EAAE,IAAM,EAAEA,EAAE,GAAK,MACvBA,EAAIA,EAAE,MAAM,CAAC,EAEf,IAAIE,EAAM,CAAE,CAAK,EACjBD,GAAgBC,EAAK,EAAE,MAAM,EAC7BA,EAAMA,EAAI,OAAO,CAAC,EAClBA,EAAI,KAAK,CAAI,EACbD,GAAgBC,EAAKF,EAAE,MAAM,EAC7B,IAAII,EAAWF,EAAI,OAAOF,CAAC,EACvBK,EAAM,CAAE,EAAK,EACjB,OAAAJ,GAAgBI,EAAKD,EAAS,MAAM,EACpCC,EAAMA,EAAI,OAAOD,CAAQ,EAClBxB,GAAM,OAAOyB,EAAKrB,CAAG,CAC9B,ICrKA,IAAAsB,GAAAC,EAAA,CAAAC,IAAAC,KAAA,cAEA,IAAIC,GAAK,KACLC,GAAW,KACXC,GAAQ,KACRC,GAAS,KACTC,GAAO,KACPC,GAASH,GAAM,OAEfI,GAAU,KACVC,GAAY,KAEhB,SAASC,GAAGC,EAAS,CACnB,GAAI,EAAE,gBAAgBD,IACpB,OAAO,IAAIA,GAAGC,CAAO,EAGnB,OAAOA,GAAY,WACrBJ,GAAO,OAAO,UAAU,eAAe,KAAKF,GAAQM,CAAO,EACzD,iBAAmBA,CAAO,EAE5BA,EAAUN,GAAOM,IAIfA,aAAmBN,GAAO,cAC5BM,EAAU,CAAE,MAAOA,CAAQ,GAE7B,KAAK,MAAQA,EAAQ,MAAM,MAC3B,KAAK,EAAI,KAAK,MAAM,EACpB,KAAK,GAAK,KAAK,EAAE,MAAM,CAAC,EACxB,KAAK,EAAI,KAAK,MAAM,EAGpB,KAAK,EAAIA,EAAQ,MAAM,EACvB,KAAK,EAAE,WAAWA,EAAQ,MAAM,EAAE,UAAU,EAAI,CAAC,EAGjD,KAAK,KAAOA,EAAQ,MAAQA,EAAQ,MAAM,IAC5C,CACAV,GAAO,QAAUS,GAEjBA,GAAG,UAAU,QAAU,SAAiBC,EAAS,CAC/C,OAAO,IAAIH,GAAQ,KAAMG,CAAO,CAClC,EAEAD,GAAG,UAAU,eAAiB,SAAwBE,EAAMC,EAAK,CAC/D,OAAOL,GAAQ,YAAY,KAAMI,EAAMC,CAAG,CAC5C,EAEAH,GAAG,UAAU,cAAgB,SAAuBI,EAAKD,EAAK,CAC5D,OAAOL,GAAQ,WAAW,KAAMM,EAAKD,CAAG,CAC1C,EAEAH,GAAG,UAAU,WAAa,SAAoBC,EAAS,CAChDA,IACHA,EAAU,CAAC,GAcb,QAXII,EAAO,IAAIZ,GAAS,CACtB,KAAM,KAAK,KACX,KAAMQ,EAAQ,KACd,QAASA,EAAQ,SAAW,OAC5B,QAASA,EAAQ,SAAWL,GAAK,KAAK,KAAK,YAAY,EACvD,WAAYK,EAAQ,SAAWA,EAAQ,YAAc,OACrD,MAAO,KAAK,EAAE,QAAQ,CACxB,CAAC,EAEGK,EAAQ,KAAK,EAAE,WAAW,EAC1BC,EAAM,KAAK,EAAE,IAAI,IAAIf,GAAG,CAAC,CAAC,IACrB,CACP,IAAIU,EAAO,IAAIV,GAAGa,EAAK,SAASC,CAAK,CAAC,EACtC,GAAI,EAAAJ,EAAK,IAAIK,CAAG,EAAI,GAGpB,OAAAL,EAAK,MAAM,CAAC,EACL,KAAK,eAAeA,CAAI,CACjC,CACF,EAEAF,GAAG,UAAU,aAAe,SAAsBQ,EAAKC,EAAW,CAChE,IAAIC,EAAQF,EAAI,WAAW,EAAI,EAAI,KAAK,EAAE,UAAU,EAGpD,OAFIE,EAAQ,IACVF,EAAMA,EAAI,MAAME,CAAK,GACnB,CAACD,GAAaD,EAAI,IAAI,KAAK,CAAC,GAAK,EAC5BA,EAAI,IAAI,KAAK,CAAC,EAEdA,CACX,EAEAR,GAAG,UAAU,KAAO,SAAcQ,EAAKG,EAAKR,EAAKF,EAAS,CACpD,OAAOE,GAAQ,WACjBF,EAAUE,EACVA,EAAM,MAEHF,IACHA,EAAU,CAAC,GAEbU,EAAM,KAAK,eAAeA,EAAKR,CAAG,EAClCK,EAAM,KAAK,aAAa,IAAIhB,GAAGgB,EAAK,EAAE,CAAC,EAqBvC,QAlBIF,EAAQ,KAAK,EAAE,WAAW,EAC1BM,EAAOD,EAAI,WAAW,EAAE,QAAQ,KAAML,CAAK,EAG3CO,EAAQL,EAAI,QAAQ,KAAMF,CAAK,EAG/BD,EAAO,IAAIZ,GAAS,CACtB,KAAM,KAAK,KACX,QAASmB,EACT,MAAOC,EACP,KAAMZ,EAAQ,KACd,QAASA,EAAQ,SAAW,MAC9B,CAAC,EAGGa,EAAM,KAAK,EAAE,IAAI,IAAItB,GAAG,CAAC,CAAC,EAErBuB,EAAO,GAAKA,IAAQ,CAC3B,IAAIC,EAAIf,EAAQ,EACdA,EAAQ,EAAEc,CAAI,EACd,IAAIvB,GAAGa,EAAK,SAAS,KAAK,EAAE,WAAW,CAAC,CAAC,EAE3C,GADAW,EAAI,KAAK,aAAaA,EAAG,EAAI,EACzB,EAAAA,EAAE,KAAK,CAAC,GAAK,GAAKA,EAAE,IAAIF,CAAG,GAAK,GAGpC,KAAIG,EAAK,KAAK,EAAE,IAAID,CAAC,EACrB,GAAI,CAAAC,EAAG,WAAW,EAGlB,KAAIC,EAAMD,EAAG,KAAK,EACdE,EAAID,EAAI,KAAK,KAAK,CAAC,EACvB,GAAIC,EAAE,KAAK,CAAC,IAAM,EAGlB,KAAIC,EAAIJ,EAAE,KAAK,KAAK,CAAC,EAAE,IAAIG,EAAE,IAAIR,EAAI,WAAW,CAAC,EAAE,KAAKH,CAAG,CAAC,EAE5D,GADAY,EAAIA,EAAE,KAAK,KAAK,CAAC,EACbA,EAAE,KAAK,CAAC,IAAM,EAGlB,KAAIC,GAAiBJ,EAAG,KAAK,EAAE,MAAM,EAAI,EAAI,IACxBC,EAAI,IAAIC,CAAC,IAAM,EAAI,EAAI,GAG5C,OAAIlB,EAAQ,WAAamB,EAAE,IAAI,KAAK,EAAE,EAAI,IACxCA,EAAI,KAAK,EAAE,IAAIA,CAAC,EAChBC,GAAiB,GAGZ,IAAItB,GAAU,CAAE,EAAGoB,EAAG,EAAGC,EAAG,cAAeC,CAAc,CAAC,KACnE,CACF,EAEArB,GAAG,UAAU,OAAS,SAAgBQ,EAAKc,EAAWX,EAAKR,EAAK,CAC9DK,EAAM,KAAK,aAAa,IAAIhB,GAAGgB,EAAK,EAAE,CAAC,EACvCG,EAAM,KAAK,cAAcA,EAAKR,CAAG,EACjCmB,EAAY,IAAIvB,GAAUuB,EAAW,KAAK,EAG1C,IAAIH,EAAIG,EAAU,EACdF,EAAIE,EAAU,EAGlB,GAFIH,EAAE,KAAK,CAAC,EAAI,GAAKA,EAAE,IAAI,KAAK,CAAC,GAAK,GAElCC,EAAE,KAAK,CAAC,EAAI,GAAKA,EAAE,IAAI,KAAK,CAAC,GAAK,EACpC,MAAO,GAGT,IAAIG,EAAOH,EAAE,KAAK,KAAK,CAAC,EACpBI,EAAKD,EAAK,IAAIf,CAAG,EAAE,KAAK,KAAK,CAAC,EAC9BiB,EAAKF,EAAK,IAAIJ,CAAC,EAAE,KAAK,KAAK,CAAC,EAC5BO,EAEJ,OAAK,KAAK,MAAM,eAWhBA,EAAI,KAAK,EAAE,QAAQF,EAAIb,EAAI,UAAU,EAAGc,CAAE,EACtCC,EAAE,WAAW,EACR,GAKFA,EAAE,OAAOP,CAAC,IAjBfO,EAAI,KAAK,EAAE,OAAOF,EAAIb,EAAI,UAAU,EAAGc,CAAE,EACrCC,EAAE,WAAW,EACR,GAEFA,EAAE,KAAK,EAAE,KAAK,KAAK,CAAC,EAAE,IAAIP,CAAC,IAAM,EAc5C,EAEAnB,GAAG,UAAU,cAAgB,SAASQ,EAAKc,EAAWK,EAAGxB,EAAK,CAC5DN,IAAQ,EAAI8B,KAAOA,EAAG,0CAA0C,EAChEL,EAAY,IAAIvB,GAAUuB,EAAWnB,CAAG,EAExC,IAAIyB,EAAI,KAAK,EACTC,EAAI,IAAIrC,GAAGgB,CAAG,EACdW,EAAIG,EAAU,EACdF,EAAIE,EAAU,EAGdQ,EAASH,EAAI,EACbI,EAAcJ,GAAK,EACvB,GAAIR,EAAE,IAAI,KAAK,MAAM,EAAE,KAAK,KAAK,MAAM,CAAC,CAAC,GAAK,GAAKY,EACjD,MAAM,IAAI,MAAM,sCAAsC,EAGpDA,EACFZ,EAAI,KAAK,MAAM,WAAWA,EAAE,IAAI,KAAK,MAAM,CAAC,EAAGW,CAAM,EAErDX,EAAI,KAAK,MAAM,WAAWA,EAAGW,CAAM,EAErC,IAAIE,EAAOV,EAAU,EAAE,KAAKM,CAAC,EACzBK,EAAKL,EAAE,IAAIC,CAAC,EAAE,IAAIG,CAAI,EAAE,KAAKJ,CAAC,EAC9BM,EAAKd,EAAE,IAAIY,CAAI,EAAE,KAAKJ,CAAC,EAI3B,OAAO,KAAK,EAAE,OAAOK,EAAId,EAAGe,CAAE,CAChC,EAEAlC,GAAG,UAAU,oBAAsB,SAAS6B,EAAGP,EAAWa,EAAGhC,EAAK,CAEhE,GADAmB,EAAY,IAAIvB,GAAUuB,EAAWnB,CAAG,EACpCmB,EAAU,gBAAkB,KAC9B,OAAOA,EAAU,cAEnB,QAAS,EAAI,EAAG,EAAI,EAAG,IAAK,CAC1B,IAAIc,EACJ,GAAI,CACFA,EAAS,KAAK,cAAcP,EAAGP,EAAW,CAAC,CAC7C,MAAE,CACA,QACF,CAEA,GAAIc,EAAO,GAAGD,CAAC,EACb,OAAO,CACX,CACA,MAAM,IAAI,MAAM,sCAAsC,CACxD,IClPA,IAAAE,GAAAC,EAAA,CAAAC,IAAAC,KAAA,cAEA,IAAIC,GAAQ,KACRC,GAASD,GAAM,OACfE,GAAaF,GAAM,WACnBG,GAAiBH,GAAM,eAW3B,SAASI,GAAQC,EAAOC,EAAQ,CAC9B,KAAK,MAAQD,EACb,KAAK,QAAUH,GAAWI,EAAO,MAAM,EACnCD,EAAM,QAAQC,EAAO,GAAG,EAC1B,KAAK,KAAOA,EAAO,IAEnB,KAAK,UAAYJ,GAAWI,EAAO,GAAG,CAC1C,CAEAF,GAAQ,WAAa,SAAoBC,EAAOE,EAAK,CACnD,OAAIA,aAAeH,GACVG,EACF,IAAIH,GAAQC,EAAO,CAAE,IAAKE,CAAI,CAAC,CACxC,EAEAH,GAAQ,WAAa,SAAoBC,EAAOG,EAAQ,CACtD,OAAIA,aAAkBJ,GACbI,EACF,IAAIJ,GAAQC,EAAO,CAAE,OAAQG,CAAO,CAAC,CAC9C,EAEAJ,GAAQ,UAAU,OAAS,UAAkB,CAC3C,OAAO,KAAK,OACd,EAEAD,GAAeC,GAAS,WAAY,UAAoB,CACtD,OAAO,KAAK,MAAM,YAAY,KAAK,IAAI,CAAC,CAC1C,CAAC,EAEDD,GAAeC,GAAS,MAAO,UAAe,CAC5C,OAAI,KAAK,UACA,KAAK,MAAM,YAAY,KAAK,SAAS,EACvC,KAAK,MAAM,EAAE,IAAI,KAAK,KAAK,CAAC,CACrC,CAAC,EAEDD,GAAeC,GAAS,YAAa,UAAqB,CACxD,IAAIC,EAAQ,KAAK,MACbI,EAAO,KAAK,KAAK,EACjBC,EAASL,EAAM,eAAiB,EAEhCM,EAAIF,EAAK,MAAM,EAAGJ,EAAM,cAAc,EAC1C,OAAAM,EAAE,IAAM,IACRA,EAAED,IAAW,IACbC,EAAED,IAAW,GAENC,CACT,CAAC,EAEDR,GAAeC,GAAS,OAAQ,UAAgB,CAC9C,OAAO,KAAK,MAAM,UAAU,KAAK,UAAU,CAAC,CAC9C,CAAC,EAEDD,GAAeC,GAAS,OAAQ,UAAgB,CAC9C,OAAO,KAAK,MAAM,KAAK,EAAE,OAAO,KAAK,OAAO,CAAC,EAAE,OAAO,CACxD,CAAC,EAEDD,GAAeC,GAAS,gBAAiB,UAAyB,CAChE,OAAO,KAAK,KAAK,EAAE,MAAM,KAAK,MAAM,cAAc,CACpD,CAAC,EAEDA,GAAQ,UAAU,KAAO,SAAcQ,EAAS,CAC9C,OAAAX,GAAO,KAAK,QAAS,yBAAyB,EACvC,KAAK,MAAM,KAAKW,EAAS,IAAI,CACtC,EAEAR,GAAQ,UAAU,OAAS,SAAgBQ,EAASC,EAAK,CACvD,OAAO,KAAK,MAAM,OAAOD,EAASC,EAAK,IAAI,CAC7C,EAEAT,GAAQ,UAAU,UAAY,SAAmBU,EAAK,CACpD,OAAAb,GAAO,KAAK,QAAS,wBAAwB,EACtCD,GAAM,OAAO,KAAK,OAAO,EAAGc,CAAG,CACxC,EAEAV,GAAQ,UAAU,UAAY,SAAmBU,EAAK,CACpD,OAAOd,GAAM,OAAO,KAAK,SAAS,EAAGc,CAAG,CAC1C,EAEAf,GAAO,QAAUK,KC9FjB,IAAAW,GAAAC,EAAA,CAAAC,IAAAC,KAAA,cAEA,IAAIC,GAAK,KACLC,GAAQ,KACRC,GAASD,GAAM,OACfE,GAAiBF,GAAM,eACvBG,GAAaH,GAAM,WAUvB,SAASI,GAAUC,EAAOC,EAAK,CAC7B,KAAK,MAAQD,EAET,OAAOC,GAAQ,WACjBA,EAAMH,GAAWG,CAAG,GAElB,MAAM,QAAQA,CAAG,IACnBA,EAAM,CACJ,EAAGA,EAAI,MAAM,EAAGD,EAAM,cAAc,EACpC,EAAGC,EAAI,MAAMD,EAAM,cAAc,CACnC,GAGFJ,GAAOK,EAAI,GAAKA,EAAI,EAAG,0BAA0B,EAE7CD,EAAM,QAAQC,EAAI,CAAC,IACrB,KAAK,GAAKA,EAAI,GACZA,EAAI,aAAaP,KACnB,KAAK,GAAKO,EAAI,GAEhB,KAAK,UAAY,MAAM,QAAQA,EAAI,CAAC,EAAIA,EAAI,EAAIA,EAAI,SACpD,KAAK,UAAY,MAAM,QAAQA,EAAI,CAAC,EAAIA,EAAI,EAAIA,EAAI,QACtD,CAEAJ,GAAeE,GAAW,IAAK,UAAa,CAC1C,OAAO,KAAK,MAAM,UAAU,KAAK,SAAS,CAAC,CAC7C,CAAC,EAEDF,GAAeE,GAAW,IAAK,UAAa,CAC1C,OAAO,KAAK,MAAM,YAAY,KAAK,SAAS,CAAC,CAC/C,CAAC,EAEDF,GAAeE,GAAW,WAAY,UAAoB,CACxD,OAAO,KAAK,MAAM,YAAY,KAAK,EAAE,CAAC,CACxC,CAAC,EAEDF,GAAeE,GAAW,WAAY,UAAoB,CACxD,OAAO,KAAK,MAAM,UAAU,KAAK,EAAE,CAAC,CACtC,CAAC,EAEDA,GAAU,UAAU,QAAU,UAAmB,CAC/C,OAAO,KAAK,SAAS,EAAE,OAAO,KAAK,SAAS,CAAC,CAC/C,EAEAA,GAAU,UAAU,MAAQ,UAAiB,CAC3C,OAAOJ,GAAM,OAAO,KAAK,QAAQ,EAAG,KAAK,EAAE,YAAY,CACzD,EAEAF,GAAO,QAAUM,KChEjB,IAAAG,GAAAC,EAAA,CAAAC,IAAAC,KAAA,cAEA,IAAIC,GAAO,KACPC,GAAS,KACTC,GAAQ,KACRC,GAASD,GAAM,OACfE,GAAaF,GAAM,WACnBG,GAAU,KACVC,GAAY,KAEhB,SAASC,GAAMC,EAAO,CAGpB,GAFAL,GAAOK,IAAU,UAAW,iCAAiC,EAEzD,EAAE,gBAAgBD,IACpB,OAAO,IAAIA,GAAMC,CAAK,EAExBA,EAAQP,GAAOO,GAAO,MACtB,KAAK,MAAQA,EACb,KAAK,EAAIA,EAAM,EACf,KAAK,EAAE,WAAWA,EAAM,EAAE,UAAU,EAAI,CAAC,EAEzC,KAAK,WAAaA,EAAM,MAAM,EAAE,YAChC,KAAK,eAAiB,KAAK,KAAKA,EAAM,EAAE,UAAU,EAAI,CAAC,EACvD,KAAK,KAAOR,GAAK,MACnB,CAEAD,GAAO,QAAUQ,GAOjBA,GAAM,UAAU,KAAO,SAAcE,EAASC,EAAQ,CACpDD,EAAUL,GAAWK,CAAO,EAC5B,IAAIE,EAAM,KAAK,cAAcD,CAAM,EAC/BE,EAAI,KAAK,QAAQD,EAAI,cAAc,EAAGF,CAAO,EAC7CI,EAAI,KAAK,EAAE,IAAID,CAAC,EAChBE,EAAW,KAAK,YAAYD,CAAC,EAC7BE,EAAK,KAAK,QAAQD,EAAUH,EAAI,SAAS,EAAGF,CAAO,EACpD,IAAIE,EAAI,KAAK,CAAC,EACbK,EAAIJ,EAAE,IAAIG,CAAE,EAAE,KAAK,KAAK,MAAM,CAAC,EACnC,OAAO,KAAK,cAAc,CAAE,EAAGF,EAAG,EAAGG,EAAG,SAAUF,CAAS,CAAC,CAC9D,EAQAP,GAAM,UAAU,OAAS,SAAgBE,EAASQ,EAAKC,EAAK,CAC1DT,EAAUL,GAAWK,CAAO,EAC5BQ,EAAM,KAAK,cAAcA,CAAG,EAC5B,IAAIN,EAAM,KAAK,cAAcO,CAAG,EAC5BC,EAAI,KAAK,QAAQF,EAAI,SAAS,EAAGN,EAAI,SAAS,EAAGF,CAAO,EACxDW,EAAK,KAAK,EAAE,IAAIH,EAAI,EAAE,CAAC,EACvBI,EAAUJ,EAAI,EAAE,EAAE,IAAIN,EAAI,IAAI,EAAE,IAAIQ,CAAC,CAAC,EAC1C,OAAOE,EAAQ,GAAGD,CAAE,CACtB,EAEAb,GAAM,UAAU,QAAU,UAAmB,CAE3C,QADIP,EAAO,KAAK,KAAK,EACZsB,EAAI,EAAGA,EAAI,UAAU,OAAQA,IACpCtB,EAAK,OAAO,UAAUsB,EAAE,EAC1B,OAAOpB,GAAM,UAAUF,EAAK,OAAO,CAAC,EAAE,KAAK,KAAK,MAAM,CAAC,CACzD,EAEAO,GAAM,UAAU,cAAgB,SAAuBW,EAAK,CAC1D,OAAOb,GAAQ,WAAW,KAAMa,CAAG,CACrC,EAEAX,GAAM,UAAU,cAAgB,SAAuBG,EAAQ,CAC7D,OAAOL,GAAQ,WAAW,KAAMK,CAAM,CACxC,EAEAH,GAAM,UAAU,cAAgB,SAAuBU,EAAK,CAC1D,OAAIA,aAAeX,GACVW,EACF,IAAIX,GAAU,KAAMW,CAAG,CAChC,EAUAV,GAAM,UAAU,YAAc,SAAqBgB,EAAO,CACxD,IAAIC,EAAMD,EAAM,KAAK,EAAE,QAAQ,KAAM,KAAK,cAAc,EACxD,OAAAC,EAAI,KAAK,eAAiB,IAAMD,EAAM,KAAK,EAAE,MAAM,EAAI,IAAO,EACvDC,CACT,EAEAjB,GAAM,UAAU,YAAc,SAAqBkB,EAAO,CACxDA,EAAQvB,GAAM,WAAWuB,CAAK,EAE9B,IAAIC,EAASD,EAAM,OAAS,EACxBE,EAASF,EAAM,MAAM,EAAGC,CAAM,EAAE,OAAOD,EAAMC,GAAU,IAAK,EAC5DE,GAAUH,EAAMC,GAAU,OAAU,EAEpCG,EAAI3B,GAAM,UAAUyB,CAAM,EAC9B,OAAO,KAAK,MAAM,WAAWE,EAAGD,CAAM,CACxC,EAEArB,GAAM,UAAU,UAAY,SAAmBuB,EAAK,CAClD,OAAOA,EAAI,QAAQ,KAAM,KAAK,cAAc,CAC9C,EAEAvB,GAAM,UAAU,UAAY,SAAmBkB,EAAO,CACpD,OAAOvB,GAAM,UAAUuB,CAAK,CAC9B,EAEAlB,GAAM,UAAU,QAAU,SAAiBwB,EAAK,CAC9C,OAAOA,aAAe,KAAK,UAC7B,ICrHA,IAAAC,GAAAC,EAAAC,IAAA,cAEA,IAAIC,GAAWD,GAEfC,GAAS,QAAU,KAA2B,QAC9CA,GAAS,MAAQ,KACjBA,GAAS,KAAO,KAChBA,GAAS,MAAQ,KACjBA,GAAS,OAAS,KAGlBA,GAAS,GAAK,KACdA,GAAS,MAAQ,kLCZjB,IAAAC,GAAAC,GAAA,IAAA,EACOC,GAAKF,GAAA,QAAI,GAEPG,GAAA,GAAAD,oGCHIE,GAAA,QAAU,sBCAvB,IAAAC,GAAAC,EAAAC,IAAA,6HAEA,IAAAC,GAAA,KAEAC,GAAA,KACAC,GAAA,KAEAC,GAAA,KACAC,GAAA,KACMC,GAAS,IAAIF,GAAA,OAAOC,GAAA,OAAO,EAE7BE,GAAa,KACjB,SAASC,IAAQ,CACb,OAAKD,KACDA,GAAS,IAAIN,GAAA,GAAG,WAAW,GAExBM,EACX,CAEA,IAAAE,GAAA,UAAA,CAYI,SAAAA,EAAYC,EAAqB,EA/BrC,EAgCQP,GAAA,gBAAe,KAAM,QAAS,WAAW,GAhCjD,EAkCQA,GAAA,gBAAe,KAAM,cAlC7B,EAkC2CD,GAAA,SAAQQ,CAAU,CAAC,GAlC9D,EAmCYR,GAAA,eAAc,KAAK,UAAU,IAAM,IACnCI,GAAO,mBAAmB,sBAAuB,aAAc,gBAAgB,EAGnF,IAAMK,EAAUH,GAAQ,EAAG,gBAvCnC,EAuCkDN,GAAA,UAAS,KAAK,UAAU,CAAC,GAvC3E,EAyCQC,GAAA,gBAAe,KAAM,YAAa,KAAOQ,EAAQ,UAAU,GAAO,KAAK,CAAC,GAzChF,EA0CQR,GAAA,gBAAe,KAAM,sBAAuB,KAAOQ,EAAQ,UAAU,GAAM,KAAK,CAAC,GA1CzF,EA4CQR,GAAA,gBAAe,KAAM,gBAAiB,EAAI,CAC9C,CAEA,OAAAM,EAAA,UAAA,UAAA,SAAUG,EAAgB,CACtB,IAAMC,EAAML,GAAQ,EAAG,eAhD/B,EAgD6CN,GAAA,UAAS,KAAK,SAAS,CAAC,EACvDY,EAAMN,GAAQ,EAAG,eAjD/B,EAiD6CN,GAAA,UAASU,CAAK,CAAC,EACpD,MAAO,KAAOC,EAAG,IAAI,IAAIC,EAAG,GAAG,EAAE,iBAAiB,KAAK,CAC3D,EAEAL,EAAA,UAAA,WAAA,SAAWM,EAAiB,CACxB,IAAMJ,EAAUH,GAAQ,EAAG,gBAtDnC,EAsDkDN,GAAA,UAAS,KAAK,UAAU,CAAC,EAC7Dc,GAvDd,EAuD4Bd,GAAA,UAASa,CAAM,EAC/BC,EAAY,SAAW,IACvBV,GAAO,mBAAmB,oBAAqB,SAAUS,CAAM,EAEnE,IAAME,EAAYN,EAAQ,KAAKK,EAAa,CAAE,UAAW,EAAI,CAAE,EAC/D,OA5DR,EA4Ded,GAAA,gBAAe,CAClB,cAAee,EAAU,cACzB,GA9DZ,EA8Def,GAAA,YAAW,KAAOe,EAAU,EAAE,SAAS,EAAE,EAAG,EAAE,EACjD,GA/DZ,EA+Def,GAAA,YAAW,KAAOe,EAAU,EAAE,SAAS,EAAE,EAAG,EAAE,EACpD,CACL,EAEAR,EAAA,UAAA,oBAAA,SAAoBS,EAAmB,CACnC,IAAMP,EAAUH,GAAQ,EAAG,gBApEnC,EAoEkDN,GAAA,UAAS,KAAK,UAAU,CAAC,EAC7DiB,EAAeX,GAAQ,EAAG,eArExC,EAqEsDN,GAAA,UAASkB,GAAiBF,CAAQ,CAAC,CAAC,EAClF,OAtER,EAsEehB,GAAA,YAAW,KAAOS,EAAQ,OAAOQ,EAAa,UAAS,CAAE,EAAE,SAAS,EAAE,EAAG,EAAE,CACtF,EAEOV,EAAA,aAAP,SAAoBY,EAAU,CAC1B,MAAO,CAAC,EAAEA,GAASA,EAAM,cAC7B,EACJZ,CAAA,EAzDA,EAAaT,GAAA,WAAAS,GA2Db,SAAgBa,GAAiBP,EAAmBE,EAAwB,CACxE,IAAMM,GA/EV,EA+EgBrB,GAAA,gBAAee,CAAS,EAC9BO,EAAK,CAAE,GAhFjB,EAgFoBtB,GAAA,UAASqB,EAAI,CAAC,EAAG,GAhFrC,EAgFwCrB,GAAA,UAASqB,EAAI,CAAC,CAAC,EACnD,MAAO,KAAOf,GAAQ,EAAG,eAjF7B,EAiF2CN,GAAA,UAASa,CAAM,EAAGS,EAAID,EAAI,aAAa,EAAE,OAAO,MAAO,EAAK,CACvG,CAJAvB,GAAA,iBAAAsB,GAMA,SAAgBF,GAAiBK,EAAgBC,EAAoB,CACjE,IAAMC,GArFV,EAqFkBzB,GAAA,UAASuB,CAAG,EAE1B,GAAIE,EAAM,SAAW,GAAI,CACrB,IAAMC,EAAa,IAAInB,GAAWkB,CAAK,EACvC,OAAID,EACO,KAAOlB,GAAQ,EAAG,eAAemB,CAAK,EAAE,UAAU,GAAM,KAAK,EAEjEC,EAAW,cAEf,IAAID,EAAM,SAAW,GACxB,OAAID,GA/FZ,EA+FiCxB,GAAA,SAAQyB,CAAK,EAC/B,KAAOnB,GAAQ,EAAG,cAAcmB,CAAK,EAAE,UAAU,GAAO,KAAK,EAEjE,GAAIA,EAAM,SAAW,GACxB,OAAKD,EACE,KAAOlB,GAAQ,EAAG,cAAcmB,CAAK,EAAE,UAAU,GAAM,KAAK,GApG3E,EAmGkCzB,GAAA,SAAQyB,CAAK,EAI3C,OAAOrB,GAAO,mBAAmB,gCAAiC,MAAO,YAAY,CACzF,CApBAN,GAAA,iBAAAoB,oGCpFaS,GAAA,QAAU,uBCAvB,IAAAC,GAAAC,EAAAC,IAAA,4rBAEA,IAAAC,GAAA,KACAC,GAAA,KACAC,GAAA,KACAC,GAAA,KACAC,GAAA,KACAC,GAAA,KACAC,GAAAC,GAAA,IAAA,EACAC,GAAA,KAEAC,GAAA,KACAC,GAAA,KACMC,GAAS,IAAIF,GAAA,OAAOC,GAAA,OAAO,EAYrBE,IAAZ,SAAYA,EAAgB,CACxBA,EAAAA,EAAA,OAAA,GAAA,SACAA,EAAAA,EAAA,QAAA,GAAA,UACAA,EAAAA,EAAA,QAAA,GAAA,SACJ,GAJYA,GAAAb,GAAA,mBAAAA,GAAA,iBAAgB,CAAA,EAAA,EA2D5B,SAASc,GAAcC,EAAa,CAChC,OAAIA,IAAU,KAAe,MArFjC,EAsFWd,GAAA,YAAWc,CAAK,CAC3B,CAEA,SAASC,GAAaD,EAAa,CAC/B,OAAIA,IAAU,KAAeX,GAAA,KACtBF,GAAA,UAAU,KAAKa,CAAK,CAC/B,CAGA,IAAME,GAAoB,CACtB,CAAE,KAAM,QAAY,UAAW,GAAI,QAAS,EAAI,EAChD,CAAE,KAAM,WAAY,UAAW,GAAI,QAAS,EAAI,EAChD,CAAE,KAAM,WAAY,UAAW,GAAI,QAAS,EAAI,EAChD,CAAE,KAAM,KAAe,OAAQ,EAAE,EACjC,CAAE,KAAM,QAAY,UAAW,GAAI,QAAS,EAAI,EAChD,CAAE,KAAM,MAAM,GAGZC,GAAuD,CACzD,QAAS,GAAM,KAAM,GAAM,SAAU,GAAM,SAAS,GAAM,MAAO,GAAM,GAAI,GAAM,KAAM,GAAM,MAAO,IAGxG,SAAgBC,GAAeC,EAAuB,CAClD,IAAMC,GA7GV,EA6GsBZ,GAAA,kBAAiBW,CAAG,EACtC,OA9GJ,EA8GWnB,GAAA,aA9GX,EA8GsBE,GAAA,eA9GtB,EA8GmCE,GAAA,YA9GnC,EA8G6CF,GAAA,cAAakB,EAAW,CAAC,CAAC,EAAG,EAAE,CAAC,CAC7E,CAHArB,GAAA,eAAAmB,GAKA,SAAgBG,GAAeC,EAAmBC,EAAwB,CACtE,OAAOL,IAlHX,EAkH0BV,GAAA,mBAlH1B,EAkH2CN,GAAA,UAASoB,CAAM,EAAGC,CAAS,CAAC,CACvE,CAFAxB,GAAA,eAAAsB,GAIA,SAASG,GAAaV,EAAqBW,EAAY,CACnD,IAAMC,GAtHV,EAsHmBxB,GAAA,YAAWD,GAAA,UAAU,KAAKa,CAAK,EAAE,YAAW,CAAE,EAC7D,OAAIY,EAAO,OAAS,IAChBf,GAAO,mBAAmB,sBAAwBc,EAAO,eAAiBA,EAAOX,CAAK,EAEnFY,CACX,CAEA,SAASC,GAAaC,EAAcC,EAA0B,CAC1D,MAAO,CACH,SA/HR,EA+HiB7B,GAAA,YAAW4B,CAAI,EACxB,aAAcC,GAAe,CAAA,GAAI,IAAI,SAACC,EAAYC,EAAK,CACnD,OAjIZ,EAiIgB7B,GAAA,eAAc4B,CAAU,IAAM,IAC9BnB,GAAO,mBAAmB,iCAAkC,cAAeiB,EAAI,IAAMG,EAAK,IAAMD,CAAU,EAEvGA,EAAW,YAAW,CACjC,CAAC,EAET,CAEA,SAAgBE,GAAclB,EAAoB,CAC9C,GAAI,MAAM,QAAQA,CAAK,EACnB,OAA0FA,EAAO,IAAI,SAACmB,EAAKF,EAAK,CAC5G,OAAI,MAAM,QAAQE,CAAG,GACbA,EAAI,OAAS,GACbtB,GAAO,mBAAmB,wDAAyD,SAAUoB,EAAK,IAAME,CAAG,EAExGN,GAAaM,EAAI,GAAIA,EAAI,EAAE,GAE/BN,GAAaM,EAAI,QAASA,EAAI,WAAW,CACpD,CAAC,EAGL,IAAMP,EAAiE,OAAO,KAAKZ,CAAK,EAAE,IAAI,SAACc,EAAI,CAC/F,IAAMC,EAAoCf,EAAMc,GAAM,OAAO,SAACM,EAAOJ,EAAU,CAC3E,OAAAI,EAAMJ,GAAc,GACbI,CACX,EAAyB,CAAA,CAAG,EAC5B,OAAOP,GAAaC,EAAM,OAAO,KAAKC,CAAW,EAAE,KAAI,CAAE,CAC7D,CAAC,EACD,OAAAH,EAAO,KAAK,SAACS,EAAGC,EAAC,CAAK,OAACD,EAAE,QAAQ,cAAcC,EAAE,OAAO,CAAlC,CAAoC,EACnDV,CACX,CAtBA3B,GAAA,cAAAiC,GAwBA,SAASK,GAAiBvB,EAAoB,CAC1C,OAAOkB,GAAclB,CAAK,EAAE,IAAI,SAACmB,EAAG,CAAK,MAAA,CAAEA,EAAI,QAASA,EAAI,WAAW,CAA9B,CAAgC,CAC7E,CAEA,SAASK,GAAkBC,EAAkChB,EAAyB,CAIlF,GAAIgB,EAAY,UAAY,KAAM,CAC9B,IAAMC,EAAWvC,GAAA,UAAU,KAAKsC,EAAY,QAAQ,EAC9CE,EAAexC,GAAA,UAAU,KAAKsC,EAAY,cAAgB,CAAC,EAC5DC,EAAS,GAAGC,CAAY,GACzB9B,GAAO,mBAAmB,6CAA8C,KAAM,CAC1E,SAAQ6B,EAAE,aAAYC,EACzB,EAIT,IAAMC,EAAc,CAChBlB,GAAae,EAAY,SAAW,EAAG,SAAS,EAChDf,GAAae,EAAY,OAAS,EAAG,OAAO,EAC5Cf,GAAae,EAAY,sBAAwB,EAAG,sBAAsB,EAC1Ef,GAAae,EAAY,cAAgB,EAAG,cAAc,EAC1Df,GAAae,EAAY,UAAY,EAAG,UAAU,EAChDA,EAAY,IAAM,MAzL5B,EAyLoCvC,GAAA,YAAWuC,EAAY,EAAE,EAAG,KACxDf,GAAae,EAAY,OAAS,EAAG,OAAO,EAC3CA,EAAY,MAAQ,KACpBF,GAAiBE,EAAY,YAAc,CAAA,CAAE,GAGlD,GAAIhB,EAAW,CACX,IAAMoB,GAhMd,EAgMoBzC,GAAA,gBAAeqB,CAAS,EACpCmB,EAAO,KAAKlB,GAAamB,EAAI,cAAe,eAAe,CAAC,EAC5DD,EAAO,MAlMf,EAkMoBxC,GAAA,YAAWyC,EAAI,CAAC,CAAC,EAC7BD,EAAO,MAnMf,EAmMoBxC,GAAA,YAAWyC,EAAI,CAAC,CAAC,EAGjC,OAtMJ,EAsMWzC,GAAA,WAAU,CAAE,OAAQI,GAAI,OAAOoC,CAAM,CAAC,CAAC,CAClD,CAEA,SAASE,GAAkBL,EAAkChB,EAAyB,CAClF,IAAMmB,EAAc,CAChBlB,GAAae,EAAY,SAAW,EAAG,SAAS,EAChDf,GAAae,EAAY,OAAS,EAAG,OAAO,EAC5Cf,GAAae,EAAY,UAAY,EAAG,UAAU,EAClDf,GAAae,EAAY,UAAY,EAAG,UAAU,EAChDA,EAAY,IAAM,MA/M5B,EA+MoCvC,GAAA,YAAWuC,EAAY,EAAE,EAAG,KACxDf,GAAae,EAAY,OAAS,EAAG,OAAO,EAC3CA,EAAY,MAAQ,KACpBF,GAAiBE,EAAY,YAAc,CAAA,CAAE,GAGlD,GAAIhB,EAAW,CACX,IAAMoB,GAtNd,EAsNoBzC,GAAA,gBAAeqB,CAAS,EACpCmB,EAAO,KAAKlB,GAAamB,EAAI,cAAe,eAAe,CAAC,EAC5DD,EAAO,MAxNf,EAwNoBxC,GAAA,YAAWyC,EAAI,CAAC,CAAC,EAC7BD,EAAO,MAzNf,EAyNoBxC,GAAA,YAAWyC,EAAI,CAAC,CAAC,EAGjC,OA5NJ,EA4NWzC,GAAA,WAAU,CAAE,OAAQI,GAAI,OAAOoC,CAAM,CAAC,CAAC,CAClD,CAGA,SAASG,GAAWN,EAAkChB,EAAyB,EAhO/E,EAiOIlB,GAAA,iBAAgBkC,EAAatB,EAAsB,EAEnD,IAAM6B,EAAkC,CAAA,EAExC9B,GAAkB,QAAQ,SAAS+B,EAAS,CACxC,IAAIjC,EAAcyB,EAAaQ,EAAU,OAAU,CAAA,EAC7CC,EAAuB,CAAA,EACzBD,EAAU,UAAWC,EAAQ,OAAS,QAC1ClC,GAzOR,EAyOgBZ,GAAA,WAzOhB,EAyOyBA,GAAA,SAAQY,EAAOkC,CAAO,CAAC,EAGpCD,EAAU,QAAUjC,EAAM,SAAWiC,EAAU,QAAUjC,EAAM,OAAS,GACxEH,GAAO,mBAAmB,sBAAwBoC,EAAU,KAAO,eAAiBA,EAAU,KAAOjC,CAAK,EAI1GiC,EAAU,YACVjC,GAlPZ,EAkPoBZ,GAAA,YAAWY,CAAK,EACpBA,EAAM,OAASiC,EAAU,WACzBpC,GAAO,mBAAmB,sBAAwBoC,EAAU,KAAO,eAAiBA,EAAU,KAAOjC,CAAK,GAIlHgC,EAAI,MAxPZ,EAwPiB5C,GAAA,SAAQY,CAAK,CAAC,CAC3B,CAAC,EAED,IAAImC,EAAU,EAsBd,GArBIV,EAAY,SAAW,MAEvBU,EAAUV,EAAY,QAElB,OAAOU,GAAa,UACpBtC,GAAO,mBAAmB,8BAA+B,cAAe4B,CAAW,GAGhFhB,GAAa,EApQ5B,EAoQ6BrB,GAAA,aAAYqB,CAAS,GAAKA,EAAU,EAAI,KAE7D0B,EAAU,KAAK,OAAO1B,EAAU,EAAI,IAAM,CAAC,GAI3C0B,IAAY,IACZH,EAAI,MA3QZ,EA2QiB5C,GAAA,SAAQ+C,CAAO,CAAC,EACzBH,EAAI,KAAK,IAAI,EACbA,EAAI,KAAK,IAAI,GAIb,CAACvB,EACD,OAAOjB,GAAI,OAAOwC,CAAG,EAKzB,IAAMH,GAvRV,EAuRgBzC,GAAA,gBAAeqB,CAAS,EAGhC2B,EAAI,GAAKP,EAAI,cACjB,OAAIM,IAAY,GACZH,EAAI,IAAG,EACPA,EAAI,IAAG,EACPA,EAAI,IAAG,EACPI,GAAKD,EAAU,EAAI,EAGfN,EAAI,EAAI,IAAMA,EAAI,IAAMO,GACvBvC,GAAO,mBAAmB,2CAA4C,YAAaY,CAAS,GAE1FoB,EAAI,IAAMO,GAChBvC,GAAO,mBAAmB,2CAA4C,YAAaY,CAAS,EAGjGuB,EAAI,MAzSR,EAySa5C,GAAA,SAAQgD,CAAC,CAAC,EACnBJ,EAAI,MA1SR,EA0Sa5C,GAAA,aA1Sb,EA0SwBA,GAAA,UAASyC,EAAI,CAAC,CAAC,CAAC,EACpCG,EAAI,MA3SR,EA2Sa5C,GAAA,aA3Sb,EA2SwBA,GAAA,UAASyC,EAAI,CAAC,CAAC,CAAC,EAE7BrC,GAAI,OAAOwC,CAAG,CACzB,CAEA,SAAgBK,GAAUZ,EAAkChB,EAAyB,CAEjF,GAAIgB,EAAY,MAAQ,MAAQA,EAAY,OAAS,EACjD,OAAIA,EAAY,YAAc,MAC1B5B,GAAO,mBAAmB,kEAAmE,cAAe4B,CAAW,EAEpHM,GAAWN,EAAahB,CAAS,EAI5C,OAAQgB,EAAY,KAAM,CACtB,IAAK,GACD,OAAOK,GAAkBL,EAAahB,CAAS,EACnD,IAAK,GACD,OAAOe,GAAkBC,EAAahB,CAAS,EACnD,QACI,MAGR,OAAOZ,GAAO,WAAW,iCAAkC4B,EAAY,KAAS9B,GAAA,OAAO,OAAO,sBAAuB,CACjH,UAAW,uBACX,gBAAiB8B,EAAY,KAChC,CACL,CAvBAxC,GAAA,UAAAoD,GAyBA,SAASC,GAAmBC,EAAiBX,EAAuBS,EAA8C,CAC9G,GAAI,CACA,IAAMG,EAAQvC,GAAa2B,EAAO,EAAE,EAAE,SAAQ,EAC9C,GAAIY,IAAU,GAAKA,IAAU,EAAK,MAAM,IAAI,MAAM,WAAW,EAC7DD,EAAG,EAAIC,OACT,CACE3C,GAAO,mBAAmB,oCAAqC,IAAK+B,EAAO,EAAE,EAGjFW,EAAG,GAlVP,EAkVWnD,GAAA,YAAWwC,EAAO,GAAI,EAAE,EAC/BW,EAAG,GAnVP,EAmVWnD,GAAA,YAAWwC,EAAO,GAAI,EAAE,EAE/B,GAAI,CACA,IAAMpB,GAtVd,EAsVuBlB,GAAA,WAAU+C,EAAUE,CAAE,CAAC,EACtCA,EAAG,KAAOhC,GAAeC,EAAQ,CAAE,EAAG+B,EAAG,EAAG,EAAGA,EAAG,EAAG,cAAeA,EAAG,CAAC,CAAE,OAC5E,CAAc,CACpB,CAEA,SAASE,GAAcC,EAAmB,CACtC,IAAMjB,EAAcjC,GAAI,OAAOkD,EAAQ,MAAM,CAAC,CAAC,EAE3CjB,EAAY,SAAW,GAAKA,EAAY,SAAW,IACnD5B,GAAO,mBAAmB,kDAAmD,WA/VrF,EA+VgGT,GAAA,SAAQsD,CAAO,CAAC,EAG5G,IAAMC,EAAuB1C,GAAawB,EAAY,EAAE,EAClDE,EAAe1B,GAAawB,EAAY,EAAE,EAC1Cc,EAAkB,CACpB,KAAuB,EACvB,QAAuBtC,GAAawB,EAAY,EAAE,EAAE,SAAQ,EAC5D,MAAuBxB,GAAawB,EAAY,EAAE,EAAE,SAAQ,EAC5D,qBAAuBkB,EACvB,aAAuBhB,EACvB,SAAuB,KACvB,SAAuB1B,GAAawB,EAAY,EAAE,EAClD,GAAuB1B,GAAc0B,EAAY,EAAE,EACnD,MAAuBxB,GAAawB,EAAY,EAAE,EAClD,KAAuBA,EAAY,GACnC,WAAuBP,GAAcO,EAAY,EAAE,GAIvD,OAAIA,EAAY,SAAW,IAE3Bc,EAAG,MArXP,EAqXcjD,GAAA,WAAUoD,CAAO,EAE3BJ,GAAmBC,EAAId,EAAY,MAAM,CAAC,EAAGD,EAAiB,GAEvDe,CACX,CAEA,SAASK,GAAcF,EAAmB,CACtC,IAAMjB,EAAcjC,GAAI,OAAOkD,EAAQ,MAAM,CAAC,CAAC,EAE3CjB,EAAY,SAAW,GAAKA,EAAY,SAAW,IACnD5B,GAAO,mBAAmB,kDAAmD,WAhYrF,EAgYgGT,GAAA,SAAQsD,CAAO,CAAC,EAG5G,IAAMH,EAAkB,CACpB,KAAY,EACZ,QAAYtC,GAAawB,EAAY,EAAE,EAAE,SAAQ,EACjD,MAAYxB,GAAawB,EAAY,EAAE,EAAE,SAAQ,EACjD,SAAYxB,GAAawB,EAAY,EAAE,EACvC,SAAYxB,GAAawB,EAAY,EAAE,EACvC,GAAY1B,GAAc0B,EAAY,EAAE,EACxC,MAAYxB,GAAawB,EAAY,EAAE,EACvC,KAAYA,EAAY,GACxB,WAAYP,GAAcO,EAAY,EAAE,GAI5C,OAAIA,EAAY,SAAW,IAE3Bc,EAAG,MAlZP,EAkZcjD,GAAA,WAAUoD,CAAO,EAE3BJ,GAAmBC,EAAId,EAAY,MAAM,CAAC,EAAGK,EAAiB,GAEvDS,CACX,CAGA,SAASM,GAAOC,EAA0B,CACtC,IAAMrB,EAAcjC,GAAI,OAAOsD,CAAc,EAEzCrB,EAAY,SAAW,GAAKA,EAAY,SAAW,GACnD5B,GAAO,mBAAmB,0BAA2B,iBAAkBiD,CAAc,EAGzF,IAAMP,EAAkB,CACpB,MAAUtC,GAAawB,EAAY,EAAE,EAAE,SAAQ,EAC/C,SAAUxB,GAAawB,EAAY,EAAE,EACrC,SAAUxB,GAAawB,EAAY,EAAE,EACrC,GAAU1B,GAAc0B,EAAY,EAAE,EACtC,MAAUxB,GAAawB,EAAY,EAAE,EACrC,KAAUA,EAAY,GACtB,QAAU,GAId,GAAIA,EAAY,SAAW,EAAK,OAAOc,EAEvC,GAAI,CACAA,EAAG,EAAIpD,GAAA,UAAU,KAAKsC,EAAY,EAAE,EAAE,SAAQ,OAEhD,CAEE,OAAOc,EAMX,GAHAA,EAAG,GAtbP,EAsbWnD,GAAA,YAAWqC,EAAY,GAAI,EAAE,EACpCc,EAAG,GAvbP,EAubWnD,GAAA,YAAWqC,EAAY,GAAI,EAAE,EAEhCtC,GAAA,UAAU,KAAKoD,EAAG,CAAC,EAAE,OAAM,GAAMpD,GAAA,UAAU,KAAKoD,EAAG,CAAC,EAAE,OAAM,EAE5DA,EAAG,QAAUA,EAAG,EAChBA,EAAG,EAAI,MAEJ,CAGHA,EAAG,QAAU,KAAK,OAAOA,EAAG,EAAI,IAAM,CAAC,EACnCA,EAAG,QAAU,IAAKA,EAAG,QAAU,GAEnC,IAAIQ,EAAgBR,EAAG,EAAI,GAErBP,EAAMP,EAAY,MAAM,EAAG,CAAC,EAE9Bc,EAAG,UAAY,IACfP,EAAI,MAzchB,EAycqB5C,GAAA,SAAQmD,EAAG,OAAO,CAAC,EAC5BP,EAAI,KAAK,IAAI,EACbA,EAAI,KAAK,IAAI,EACbe,GAAiBR,EAAG,QAAU,EAAI,GAGtC,IAAM/B,GA/cd,EA+cuBlB,GAAA,WAAUE,GAAI,OAAOwC,CAAG,CAAC,EACxC,GAAI,CACAO,EAAG,KAAOhC,GAAeC,EAAQ,CAAE,GAjd/C,EAidkDpB,GAAA,SAAQmD,EAAG,CAAC,EAAG,GAjdjE,EAidoEnD,GAAA,SAAQmD,EAAG,CAAC,EAAG,cAAeQ,CAAa,CAAE,OACvG,CAAc,CAEhBR,EAAG,MApdX,EAodkBjD,GAAA,WAAUwD,CAAc,EAGtC,OAAAP,EAAG,KAAO,KAEHA,CACX,CAGA,SAAgBS,GAAMF,EAAyB,CAC3C,IAAMJ,GA9dV,EA8doBtD,GAAA,UAAS0D,CAAc,EAGvC,GAAIJ,EAAQ,GAAK,IAAQ,OAAOG,GAAOH,CAAO,EAG9C,OAAQA,EAAQ,GAAI,CAChB,IAAK,GACD,OAAOE,GAAcF,CAAO,EAChC,IAAK,GACD,OAAOD,GAAcC,CAAO,EAChC,QACI,MAGR,OAAO7C,GAAO,WAAW,iCAAkC6C,EAAQ,GAAO/C,GAAA,OAAO,OAAO,sBAAuB,CAC3G,UAAW,mBACX,gBAAiB+C,EAAQ,GAC5B,CACL,CApBAzD,GAAA,MAAA+D,oGC7daC,GAAA,QAAU,oBCAvB,IAAAC,GAAAC,EAAAC,IAAA,ssEAEA,IAAAC,GAAA,KACAC,GAAA,KACAC,GAAA,KACAC,GAAA,KACAC,GAAA,KACAC,GAAA,KACAC,EAAA,KACAC,GAAA,KAEAC,GAAA,KACAC,GAAA,KAEMC,GAAS,IAAIF,GAAA,OAAOC,GAAA,OAAO,EAgG3BE,GAAuD,CACzD,QAAS,GAAM,KAAM,GAAM,KAAM,GAAM,SAAU,GAAM,SAAS,GAAM,MAAO,GAAM,GAAI,GAAM,MAAO,GACpG,KAAM,GAAM,WAAY,GACxB,aAAc,GAAM,qBAAsB,GAC1C,WAAY,GACZ,gBAAiB,IAGrB,SAAeC,GAAYC,EAA6BC,EAAuC,mGAC9E,MAAA,CAAA,EAAMA,CAAa,SAA1BC,EAAOC,EAAA,KAAA,EAET,OAAOD,GAAU,UACjBL,GAAO,mBAAmB,8BAA+B,OAAQK,CAAI,EAIzE,GAAI,CACA,MAAA,CAAA,GA/HR,EA+HeZ,GAAA,YAAWY,CAAI,CAAC,OACzB,CAAc,CAEhB,OAAKF,GACDH,GAAO,WAAW,sDAAuDF,GAAA,OAAO,OAAO,sBAAuB,CAC1G,UAAW,cACd,EAGW,CAAA,EAAMK,EAAS,YAAYE,CAAI,CAAC,SAA1C,OAAAE,EAAUD,EAAA,KAAA,EAEZC,GAAW,MACXP,GAAO,mBAAmB,kDAAmD,OAAQK,CAAI,EAG7F,CAAA,EAAOE,CAAO,OAIlB,SAAeC,GAAiBL,EAA6BM,EAAYC,EAAuC,kGACxG,MAAM,QAAQA,CAAS,EAChB,CAAA,EAAM,QAAQ,IAAIA,EAAU,IAAI,SAACA,EAAWC,EAAK,CACpD,OAAOH,GACHL,EACE,MAAM,QAAQM,CAAK,EAAKA,EAAME,GAAQF,EAAMC,EAAU,MACxDA,CAAS,CAEjB,CAAC,CAAC,CAAC,EAPH,CAAA,EAAA,CAAA,SACA,MAAA,CAAA,EAAOJ,EAAA,KAAA,CAMJ,gBAGHI,EAAU,OAAS,UAAnB,CAAA,EAAA,CAAA,EACO,CAAA,EAAMR,GAAYC,EAAUM,CAAK,CAAC,SAAzC,MAAA,CAAA,EAAOH,EAAA,KAAA,CAAkC,gBAGzCI,EAAU,OAAS,QAAnB,CAAA,EAAA,CAAA,EACO,CAAA,EAAMF,GAAiBL,EAAUM,EAAOC,EAAU,UAAU,CAAC,SAApE,MAAA,CAAA,EAAOJ,EAAA,KAAA,CAA6D,gBAGpEI,EAAU,WAAa,QAAvB,CAAA,EAAA,CAAA,EACK,MAAM,QAAQD,CAAK,EAMjB,CAAA,EAAM,QAAQ,IAAIA,EAAM,IAAI,SAACG,EAAC,CAAK,OAAAJ,GAAiBL,EAAUS,EAAGF,EAAU,aAAa,CAArD,CAAsD,CAAC,CAAC,EAL9F,CAAA,EAAO,QAAQ,OAAOV,GAAO,UAAU,0BAA2BF,GAAA,OAAO,OAAO,iBAAkB,CAC9F,SAAU,QACV,MAAKW,EACR,CAAC,CAAC,SAEP,MAAA,CAAA,EAAOH,EAAA,KAAA,CAA2F,SAGtG,MAAA,CAAA,EAAOG,CAAK,OAGhB,SAAeI,GAAoBC,EAAoBC,EAA4BC,EAAgB,0HAE3F,OAAAC,EAA2B,CAAA,EAC3BD,EAAK,SAAWD,EAAS,OAAO,OAAS,GAAK,OAAOC,EAAKA,EAAK,OAAS,IAAQ,WAChFC,GAtLR,EAsLoBrB,EAAA,aAAYoB,EAAK,IAAG,CAAE,GAItChB,GAAO,mBAAmBgB,EAAK,OAAQD,EAAS,OAAO,OAAQ,oBAAoB,EAG/ED,EAAS,OACLG,EAAU,KAGVA,EAAU,MAjMtB,EAiM6BrB,EAAA,mBAAkB,CAC/B,SAAUM,GAAYY,EAAS,OAAQG,EAAU,IAAI,EACrD,OAAQH,EAAS,OAAO,WAAU,EACrC,EAAE,KAAK,SAAOI,EAAK,CAAA,OAAAC,GAAAC,EAAA,OAAA,OAAA,UAAA,4BAChB,OArMhB,EAqMoB3B,GAAA,YAAWyB,EAAM,MAAM,IAAMA,EAAM,UACnClB,GAAO,WAAW,8CAA+CF,GAAA,OAAO,OAAO,sBAAuB,CAClG,UAAW,iBACd,EAGL,CAAA,EAAOoB,EAAM,QAAQ,MACxB,EAGDD,EAAU,KAAOH,EAAS,OAAO,WAAU,EAGxCG,EAAU,OACjBA,EAAU,KAAOf,GAAYY,EAAS,SAAUG,EAAU,IAAI,GASjD,CAAA,GA5NrB,EA4N2BrB,EAAA,mBAAkB,CACrC,KAAMY,GAAiBM,EAAS,QAAUA,EAAS,SAAUE,EAAMD,EAAS,MAAM,EAClF,QAASD,EAAS,gBAClB,WA/NR,EA+NoBlB,EAAA,mBAAkBqB,CAAS,GAAK,CAAA,EAC/C,CAAC,SAwBF,GA5BMI,EAAWf,EAAA,KAAA,EAOXgB,EAAOR,EAAS,UAAU,mBAAmBC,EAAUM,EAAS,IAAI,EACpEE,EAA2B,CAC/B,KAAMD,EACN,GAAID,EAAS,SAITG,EAAKH,EAAS,UAGhBG,EAAG,OAAS,OAAQD,EAAG,MAAQ7B,GAAA,UAAU,KAAK8B,EAAG,KAAK,EAAE,SAAQ,GAChEA,EAAG,UAAY,OAAQD,EAAG,SAAW7B,GAAA,UAAU,KAAK8B,EAAG,QAAQ,GAC/DA,EAAG,UAAY,OAAQD,EAAG,SAAW7B,GAAA,UAAU,KAAK8B,EAAG,QAAQ,GAC/DA,EAAG,cAAgB,OAAQD,EAAG,aAAe7B,GAAA,UAAU,KAAK8B,EAAG,YAAY,GAC3EA,EAAG,sBAAwB,OAAQD,EAAG,qBAAuB7B,GAAA,UAAU,KAAK8B,EAAG,oBAAoB,GACnGA,EAAG,MAAQ,OAAQD,EAAG,KAAOC,EAAG,MAEhCA,EAAG,MAAQ,OAAQD,EAAG,KAAOC,EAAG,MAChCA,EAAG,YAAc,OAAQD,EAAG,YArPpC,EAqPiD1B,GAAA,eAAc2B,EAAG,UAAU,GAGpED,EAAG,UAAY,MAAQR,EAAS,KAAO,KAAM,CAQ7C,IAFIU,EAAY,KACVC,GA/Pd,EA+PsB/B,GAAA,UAAS2B,CAAI,EAClBK,EAAI,EAAGA,EAAID,EAAM,OAAQC,IAC9BF,GAAa,EACTC,EAAMC,KAAMF,GAAa,IAEjCF,EAAG,SAAW7B,GAAA,UAAU,KAAKqB,EAAS,GAAG,EAAE,IAAIU,CAAS,EAI5D,OAAID,EAAG,QACGI,EAAUlC,GAAA,UAAU,KAAK8B,EAAG,KAAK,EACnC,CAACI,EAAQ,OAAM,GAAM,CAACb,EAAS,SAC/Bf,GAAO,WAAW,2CAA4CF,GAAA,OAAO,OAAO,sBAAuB,CAC/F,UAAW,kBACX,MAAOmB,EAAU,MACpB,EAELM,EAAG,MAAQK,GAGXJ,EAAG,aACHD,EAAG,YApRX,EAoRwB3B,EAAA,aAAY4B,EAAG,UAAU,GAGzCA,EAAG,kBACHD,EAAG,gBAAkB,CAAC,CAACC,EAAG,iBAI9B,OAAOP,EAAU,MACjB,OAAOA,EAAU,SACjB,OAAOA,EAAU,SACjB,OAAOA,EAAU,KACjB,OAAOA,EAAU,MAEjB,OAAOA,EAAU,KACjB,OAAOA,EAAU,WAEjB,OAAOA,EAAU,aACjB,OAAOA,EAAU,qBAEjB,OAAOA,EAAU,WACjB,OAAOA,EAAU,gBAIXY,EAAY,OAAO,KAAKZ,CAAS,EAAE,OAAO,SAACa,EAAG,CAAK,OAAOb,EAAWa,IAAQ,IAA1B,CAA+B,EACpFD,EAAU,QACV7B,GAAO,WAAW,mBAAoB6B,EAAU,IAAI,SAACE,EAAC,CAAK,OAAA,KAAK,UAAUA,CAAC,CAAhB,CAAiB,EAAE,KAAK,GAAG,EAAMjC,GAAA,OAAO,OAAO,sBAAuB,CAC7H,UAAW,YACX,UAAW+B,EACd,EAGL,CAAA,EAAON,CAAE,OAIb,SAASS,GAAclB,EAAoBC,EAA0B,CACjE,OAAO,UAAA,SAASC,EAAA,CAAA,EAAAiB,EAAA,EAAAA,EAAA,UAAA,OAAAA,IAAAjB,EAAAiB,GAAA,UAAAA,GACZ,OAAOpB,GAAoBC,EAAUC,EAAUC,CAAI,CACvD,CACJ,CAEA,SAASkB,GAAcpB,EAAoBC,EAA0B,CACjE,IAAMoB,EAAoBrB,EAAS,QAAUA,EAAS,SACtD,OAAO,UAAA,SAAeE,EAAA,CAAA,EAAAiB,EAAA,EAAAA,EAAA,UAAA,OAAAA,IAAAjB,EAAAiB,GAAA,UAAAA,mGAClB,OAAKE,GACDnC,GAAO,WAAW,wCAAyCF,GAAA,OAAO,OAAO,sBAAuB,CAC5F,UAAW,cACd,EAGM,CAAA,EAAMe,GAAoBC,EAAUC,EAAUC,CAAI,CAAC,SAAxD,OAAAO,EAAKjB,EAAA,KAAA,EACJ,CAAA,EAAM6B,EAAiB,YAAYZ,CAAE,CAAC,SAA7C,MAAA,CAAA,EAAOjB,EAAA,KAAA,CAAsC,OAErD,CAEA,SAAS8B,GAAgBtB,EAAoBS,EAAuB,CAChE,IAAMc,EAAOd,EAAG,KAAK,KAAKA,CAAE,EAC5BA,EAAG,KAAO,SAACe,EAAsB,CAC7B,OAAOD,EAAKC,CAAa,EAAE,KAAK,SAACC,EAAwB,CACrD,OAAAA,EAAQ,OAASA,EAAQ,KAAK,IAAI,SAACC,EAAG,CAClC,IAAIC,GAlVpB,EAkV2C7C,EAAA,UAAS4C,CAAG,EACnCE,EAAyB,KAC7B,GAAI,CACAA,EAAS5B,EAAS,UAAU,SAAS0B,CAAG,OAC1C,CAAS,CAGX,OAAIE,IACAD,EAAM,KAAOC,EAAO,KACpBD,EAAM,OAAS,SAACnB,EAAiBqB,EAAmB,CAChD,OAAO7B,EAAS,UAAU,eAAe4B,EAAO,cAAepB,EAAMqB,CAAM,CAC/E,EACAF,EAAM,MAAQC,EAAO,KACrBD,EAAM,eAAiBC,EAAO,WAIlCD,EAAM,eAAiB,UAAA,CAAQ,OAAO3B,EAAS,QAAU,EACzD2B,EAAM,SAAW,UAAA,CACb,OAAO3B,EAAS,SAAS,SAASyB,EAAQ,SAAS,CACvD,EACAE,EAAM,eAAiB,UAAA,CACnB,OAAO3B,EAAS,SAAS,eAAeyB,EAAQ,eAAe,CACnE,EACAE,EAAM,sBAAwB,UAAA,CAC1B,OAAO,QAAQ,QAAQF,CAAO,CAClC,EAEOE,CACX,CAAC,EAEMF,CACX,CAAC,CACL,CACJ,CAEA,SAASK,GAAU9B,EAAoBC,EAA4B8B,EAAuB,CACtF,IAAMV,EAAoBrB,EAAS,QAAUA,EAAS,SAEtD,OAAO,UAAA,SAAeE,EAAA,CAAA,EAAAiB,EAAA,EAAAA,EAAA,UAAA,OAAAA,IAAAjB,EAAAiB,GAAA,UAAAA,kHAEda,EAAW,OACX9B,EAAK,SAAWD,EAAS,OAAO,OAAS,GAAK,OAAOC,EAAKA,EAAK,OAAS,IAAQ,UAC1EC,GA7XlB,EA6X8BrB,EAAA,aAAYoB,EAAK,IAAG,CAAE,EACpCC,EAAU,UAAY,KAAtB,CAAA,EAAA,CAAA,EACW,CAAA,EAAMA,EAAU,QAAQ,GAHvC,CAAA,EAAA,CAAA,SAGI6B,EAAWxC,EAAA,KAAA,mBAEf,OAAOW,EAAU,SACjBD,EAAK,KAAKC,CAAS,0BAInBH,EAAS,mBAAqB,KAA9B,CAAA,EAAA,CAAA,EACA,CAAA,EAAMA,EAAS,UAAUgC,CAAQ,CAAC,SAAlCxC,EAAA,KAAA,mBAIO,MAAA,CAAA,EAAMO,GAAoBC,EAAUC,EAAUC,CAAI,CAAC,SAAxD,OAAAO,EAAKjB,EAAA,KAAA,EACI,CAAA,EAAM6B,EAAiB,KAAKZ,EAAIuB,CAAQ,CAAC,SAAlDC,EAASzC,EAAA,KAAA,EAEf,GAAI,CACI,OAAAG,EAAQK,EAAS,UAAU,qBAAqBC,EAAUgC,CAAM,EAChEF,GAAkB9B,EAAS,QAAQ,SAAW,IAC9CN,EAAQA,EAAM,IAElB,CAAA,EAAOA,CAAK,QAEPuC,EAAP,CACE,MAAIA,EAAM,OAASlD,GAAA,OAAO,OAAO,iBAC7BkD,EAAM,QAAUlC,EAAS,QACzBkC,EAAM,KAAOhC,EACbgC,EAAM,YAAczB,GAElByB,iBAGlB,CAEA,SAASC,GAAUnC,EAAoBC,EAA0B,CAC7D,OAAO,UAAA,SAAeC,EAAA,CAAA,EAAAiB,EAAA,EAAAA,EAAA,UAAA,OAAAA,IAAAjB,EAAAiB,GAAA,UAAAA,4GACbnB,EAAS,QACVd,GAAO,WAAW,0CAA2CF,GAAA,OAAO,OAAO,sBAAuB,CAC9F,UAAW,kBACd,EAIDgB,EAAS,mBAAqB,KAA9B,CAAA,EAAA,CAAA,EACA,CAAA,EAAMA,EAAS,UAAS,CAAE,SAA1BR,EAAA,KAAA,mBAGc,MAAA,CAAA,EAAMO,GAAoBC,EAAUC,EAAUC,CAAI,CAAC,SAA/D,OAAAkC,EAAY5C,EAAA,KAAA,EAEP,CAAA,EAAMQ,EAAS,OAAO,gBAAgBoC,CAAS,CAAC,SAArD,OAAA3B,EAAKjB,EAAA,KAAA,EAGX8B,GAAgBtB,EAAUS,CAAE,EAE5B,CAAA,EAAOA,CAAE,OAEjB,CAEA,SAAS4B,GAAarC,EAAoBC,EAA4B8B,EAAuB,CACzF,OAAI9B,EAAS,SACF6B,GAAU9B,EAAUC,EAAU8B,CAAc,EAEhDI,GAAUnC,EAAUC,CAAQ,CACvC,CAEA,SAASqC,GAAYC,EAAmB,CACpC,OAAIA,EAAO,UAAYA,EAAO,QAAU,MAAQA,EAAO,OAAO,SAAW,GAC9D,KAGHA,EAAO,SAAW,KAAO,KAAOA,EAAO,OAASA,EAAO,OAAO,IAAI,SAACC,EAAK,CAC5E,OAAI,MAAM,QAAQA,CAAK,EACZA,EAAM,KAAK,GAAG,EAElBA,CACX,CAAC,EAAE,KAAK,GAAG,EAAG,GAClB,CAEA,IAAAC,GAAA,UAAA,CAKI,SAAAA,EAAYC,EAAaH,EAAmB,EAjdhD,EAkdQzD,EAAA,gBAAe,KAAM,MAAO4D,CAAG,GAldvC,EAmdQ5D,EAAA,gBAAe,KAAM,SAAUyD,CAAM,EACrC,KAAK,WAAa,CAAA,CACtB,CAEA,OAAAE,EAAA,UAAA,YAAA,SAAYE,EAAoBC,EAAa,CACzC,KAAK,WAAW,KAAK,CAAE,SAAUD,EAAU,KAAMC,CAAI,CAAE,CAC3D,EAEAH,EAAA,UAAA,eAAA,SAAeE,EAAkB,CAC7B,IAAIE,EAAO,GACX,KAAK,WAAa,KAAK,WAAW,OAAO,SAACC,EAAI,CAC1C,OAAID,GAAQC,EAAK,WAAaH,EAAmB,IACjDE,EAAO,GACA,GACX,CAAC,CACL,EAEAJ,EAAA,UAAA,mBAAA,UAAA,CACI,KAAK,WAAa,CAAA,CACtB,EAEAA,EAAA,UAAA,UAAA,UAAA,CACI,OAAO,KAAK,WAAW,IAAI,SAAC5B,EAAC,CAAK,OAAAA,EAAE,QAAF,CAAU,CAChD,EAEA4B,EAAA,UAAA,cAAA,UAAA,CACI,OAAO,KAAK,WAAW,MAC3B,EAEAA,EAAA,UAAA,IAAA,SAAIvC,EAAgB,CAApB,IAAAI,EAAA,KACUyC,EAAgB,KAAK,cAAa,EACxC,YAAK,WAAa,KAAK,WAAW,OAAO,SAACD,EAAI,CAE1C,IAAME,EAAW9C,EAAK,MAAK,EAG3B,kBAAW,UAAA,CACP4C,EAAK,SAAS,MAAMxC,EAAM0C,CAAQ,CACtC,EAAG,CAAC,EAGG,CAAEF,EAAK,IAClB,CAAC,EAEMC,CACX,EAEAN,EAAA,UAAA,aAAA,SAAad,EAAY,CACzB,EAGAc,EAAA,UAAA,QAAA,SAAQd,EAAY,CAChB,MAAO,CAAEA,CAAK,CAClB,EACJc,CAAA,EA7DA,EA+DAQ,GAAA,SAAAC,EAAA,CAAgCC,GAAAF,EAAAC,CAAA,EAC5B,SAAAD,GAAA,QACIC,EAAA,KAAA,KAAM,QAAS,IAAI,GAAC,IACxB,CACJ,OAAAD,CAAA,EAJgCR,EAAY,EAa5CW,GAAA,SAAAF,EAAA,CAAmCC,GAAAC,EAAAF,CAAA,EAK/B,SAAAE,EAAY3D,EAAiB4D,EAA8BpD,EAAyB4B,EAAoC,CAAxH,IAAAvB,EAAA,KACUiC,EAAsB,CACxB,QAAS9C,GAGT+C,EAAQa,EAAkB,cAAcpD,CAAQ,EACpD,OAAI4B,GACIW,IAAUX,EAAO,IAAM3C,GAAO,mBAAmB,iBAAkB,SAAU2C,CAAM,EACvFU,EAAO,OAASV,EAAO,MAAK,GAE5BU,EAAO,OAAS,CAAEC,CAAK,EAG3BlC,EAAA4C,EAAA,KAAA,KAAMZ,GAAYC,CAAM,EAAGA,CAAM,GAAC,MA1iB1C,EA2iBQzD,EAAA,gBAAewB,EAAM,UAAWb,CAAO,GA3iB/C,EA4iBQX,EAAA,gBAAewB,EAAM,YAAa+C,CAAiB,GA5iB3D,EA6iBQvE,EAAA,gBAAewB,EAAM,WAAYL,CAAQ,GAC7C,CAGA,OAAAmD,EAAA,UAAA,aAAA,SAAazB,EAAY,CAAzB,IAAArB,EAAA,KACI4C,EAAA,UAAM,aAAY,KAAA,KAACvB,CAAK,EAExBA,EAAM,MAAQ,KAAK,SAAS,KAC5BA,EAAM,eAAiB,KAAK,SAAS,OAAM,EAE3CA,EAAM,OAAS,SAACnB,EAAiBqB,EAAsB,CACnD,OAAOvB,EAAK,UAAU,eAAeA,EAAK,SAAUE,EAAMqB,CAAM,CACpE,EAEA,GAAI,CACAF,EAAM,KAAO,KAAK,UAAU,eAAe,KAAK,SAAUA,EAAM,KAAMA,EAAM,MAAM,QAC7EO,EAAP,CACEP,EAAM,KAAO,KACbA,EAAM,YAAcO,EAE5B,EAEAkB,EAAA,UAAA,QAAA,SAAQzB,EAAY,CAChB,IAAM2B,GApkBd,EAokBuB9E,GAAA,mBAAkBmD,EAAM,IAAI,EAC3C,GAAI2B,EAAO,OAAU,MAAMA,EAAO,GAAG,MAErC,IAAMpD,GAAQyB,EAAM,MAAQ,CAAA,GAAI,MAAK,EACrC,OAAAzB,EAAK,KAAKyB,CAAK,EACRzB,CACX,EACJkD,CAAA,EAnDmCX,EAAY,EA0D/Cc,GAAA,SAAAL,EAAA,CAAmCC,GAAAI,EAAAL,CAAA,EAI/B,SAAAK,EAAY9D,EAAiB4D,EAA4B,CAAzD,IAAA/C,EACI4C,EAAA,KAAA,KAAM,IAAK,CAAE,QAASzD,CAAO,CAAE,GAAC,KAChC,OAxlBR,EAwlBQX,EAAA,gBAAewB,EAAM,UAAWb,CAAO,GAxlB/C,EAylBQX,EAAA,gBAAewB,EAAM,YAAa+C,CAAiB,GACvD,CAEA,OAAAE,EAAA,UAAA,aAAA,SAAa5B,EAAY,CAAzB,IAAArB,EAAA,KACI4C,EAAA,UAAM,aAAY,KAAA,KAACvB,CAAK,EAExB,GAAI,CACA,IAAM6B,EAAS,KAAK,UAAU,SAAS7B,CAAK,EAC5CA,EAAM,MAAQ6B,EAAO,KACrB7B,EAAM,eAAiB6B,EAAO,UAE9B7B,EAAM,OAAS,SAACnB,EAAiBqB,EAAsB,CACnD,OAAOvB,EAAK,UAAU,eAAekD,EAAO,cAAehD,EAAMqB,CAAM,CAC3E,EAEAF,EAAM,KAAO6B,EAAO,UACtB,EAGN,EACJD,CAAA,EA3BmCd,EAAY,EAkC/CgB,GAAA,UAAA,CA8BI,SAAAA,EAAYC,EAAuBL,EAAsChC,EAAoC,wBAA7Gf,EAAA,MAlpBJ,EAqpBQxB,EAAA,gBAAe,KAAM,aArpB7B,EAqpB0CA,EAAA,WAAS6E,EAA4B,cAAc,EAAEN,CAAiB,CAAC,EAErGhC,GAAoB,OAvpBhC,EAwpBYvC,EAAA,gBAAe,KAAM,WAAY,IAAI,GAxpBjD,EAypBYA,EAAA,gBAAe,KAAM,SAAU,IAAI,GAC5BJ,GAAA,OAAO,SAAS2C,CAAgB,IA1pBnD,EA2pBYvC,EAAA,gBAAe,KAAM,WAAYuC,EAAiB,UAAY,IAAI,GA3pB9E,EA4pBYvC,EAAA,gBAAe,KAAM,SAAUuC,CAAgB,GACxC5C,GAAA,SAAS,WAAW4C,CAAgB,IA7pBvD,EA8pBYvC,EAAA,gBAAe,KAAM,WAAYuC,CAAgB,GA9pB7D,EA+pBYvC,EAAA,gBAAe,KAAM,SAAU,IAAI,GAEnCI,GAAO,mBAAmB,6BAA8B,mBAAoBmC,CAAgB,GAjqBxG,EAoqBQvC,EAAA,gBAAe,KAAM,aAAc,CAAA,CAAG,GApqB9C,EAqqBQA,EAAA,gBAAe,KAAM,cAAe,CAAA,CAAG,GArqB/C,EAsqBQA,EAAA,gBAAe,KAAM,YAAa,CAAA,CAAG,GAtqB7C,EAuqBQA,EAAA,gBAAe,KAAM,sBAAuB,CAAA,CAAG,GAvqBvD,EAyqBQA,EAAA,gBAAe,KAAM,UAAW,CAAA,CAAG,EAEnC,CACI,IAAM8E,EAAqD,CAAA,EAC3D,OAAO,KAAK,KAAK,UAAU,MAAM,EAAE,QAAQ,SAACC,EAAc,CACtD,IAAMlC,EAAQrB,EAAK,UAAU,OAAOuD,IA9qBpD,EA+qBgB/E,EAAA,gBAAewB,EAAK,QAASuD,EAAgB,UAAA,SAAC3D,EAAA,CAAA,EAAAiB,EAAA,EAAAA,EAAA,UAAA,OAAAA,IAAAjB,EAAAiB,GAAA,UAAAA,GAC1C,MAAO,CACH,QAASb,EAAK,QACd,OAAQA,EAAK,UAAU,mBAAmBqB,EAAOzB,CAAI,EAE7D,CAAC,EACI0D,EAAcjC,EAAM,QAASiC,EAAcjC,EAAM,MAAQ,CAAA,GAC9DiC,EAAcjC,EAAM,MAAM,KAAKkC,CAAc,CACjD,CAAC,EAED,OAAO,KAAKD,CAAa,EAAE,QAAQ,SAACrE,EAAI,CACpC,IAAMuE,EAAUF,EAAcrE,GAC1BuE,EAAQ,SAAW,GA3rBvC,EA4rBoBhF,EAAA,gBAAewB,EAAK,QAASf,EAAMe,EAAK,QAAQwD,EAAQ,GAAG,EAE3D5E,GAAO,KAAK,2BAA4BK,EAAI,KAAOuE,EAAQ,KAAK,IAAI,EAAC,GAAG,CAEhF,CAAC,EAWL,IA3sBR,EAmsBQhF,EAAA,gBAAe,KAAM,iBAAkB,CAAA,CAAG,GAnsBlD,EAosBQA,EAAA,gBAAe,KAAM,gBAAiB,CAAA,CAAG,EAErC4E,GAAiB,MACjBxE,GAAO,mBAAmB,uCAAwC,gBAAiBwE,CAAa,GAvsB5G,EA0sBQ5E,EAAA,gBAAe,KAAM,UAAW4E,CAAa,EACzC,KAAK,UA3sBjB,EA4sBY5E,EAAA,gBAAe,KAAM,kBAAmBM,GAAY,KAAK,SAAUsE,CAAa,CAAC,MAEjF,IAAI,EA9sBhB,EA+sBgB5E,EAAA,gBAAe,KAAM,kBAAmB,QAAQ,SA/sBhE,EA+sBwEH,GAAA,YAAW+E,CAAa,CAAC,CAAC,OACpF,CAEExE,GAAO,WAAW,2DAA4DF,GAAA,OAAO,OAAO,sBAAuB,CAC/G,UAAW,eACd,EAKT,KAAK,gBAAgB,MAAM,SAAC+E,EAAC,CAAO,CAAC,EAErC,IAAMC,EAAmD,CAAA,EACnDC,EAAuD,CAAA,EAC7D,OAAO,KAAK,KAAK,UAAU,SAAS,EAAE,QAAQ,SAACC,EAAS,CACpD,IAAMjE,EAAWK,EAAK,UAAU,UAAU4D,GAI1C,GAAID,EAAiBC,GAAY,CAC7BhF,GAAO,KAAK,2BAA4B,KAAK,UAAUgF,CAAS,CAAI,EACpE,OAEJD,EAAiBC,GAAa,GAI9B,CACI,IAAMC,EAAOlE,EAAS,KACjB+D,EAAY,IAAKG,KAAYH,EAAY,IAAKG,GAAW,CAAA,GAC9DH,EAAY,IAAKG,GAAS,KAAKD,CAAS,EAG7B5D,EAAM4D,IAAc,OAhvB/C,EAivBgBpF,EAAA,gBAAyBwB,EAAM4D,EAAW7B,GAAa/B,EAAML,EAAU,EAAI,CAAC,EAM5EK,EAAK,UAAU4D,IAAc,OAvvB7C,EAwvBgBpF,EAAA,gBAAewB,EAAK,UAAW4D,EAAW7B,GAAa/B,EAAML,EAAU,EAAK,CAAC,EAG7EK,EAAK,WAAW4D,IAAc,OA3vB9C,EA4vBgBpF,EAAA,gBAAewB,EAAK,WAAY4D,EAAWpC,GAAUxB,EAAML,EAAU,EAAI,CAAC,EAG1EK,EAAK,oBAAoB4D,IAAc,OA/vBvD,EAgwBgBpF,EAAA,gBAAewB,EAAK,oBAAqB4D,EAAWhD,GAAcZ,EAAML,CAAQ,CAAC,EAGjFK,EAAK,YAAY4D,IAAc,OAnwB/C,EAowBgBpF,EAAA,gBAAewB,EAAK,YAAa4D,EAAW9C,GAAcd,EAAML,CAAQ,CAAC,CAEjF,CAAC,EAED,OAAO,KAAK+D,CAAW,EAAE,QAAQ,SAACzE,EAAI,CAElC,IAAM6E,EAAaJ,EAAYzE,GAC/B,GAAI,EAAA6E,EAAW,OAAS,GAGxB,CAAA7E,EAAOA,EAAK,UAAU,CAAC,EAEvB,IAAM2E,EAAYE,EAAW,GAG7B,GAAI,CACe9D,EAAMf,IAAS,OApxB9C,EAqxBoBT,EAAA,gBAAyBwB,EAAMf,EAAiBe,EAAM4D,EAAU,OAEtE,CAAU,CAER5D,EAAK,UAAUf,IAAS,OAzxBxC,EA0xBgBT,EAAA,gBAAewB,EAAK,UAAWf,EAAMe,EAAK,UAAU4D,EAAU,EAG9D5D,EAAK,WAAWf,IAAS,OA7xBzC,EA8xBgBT,EAAA,gBAAewB,EAAK,WAAYf,EAAMe,EAAK,WAAW4D,EAAU,EAGhE5D,EAAK,oBAAoBf,IAAS,OAjyBlD,EAkyBgBT,EAAA,gBAAewB,EAAK,oBAAqBf,EAAMe,EAAK,oBAAoB4D,EAAU,EAGlF5D,EAAK,YAAYf,IAAS,OAryB1C,EAsyBgBT,EAAA,gBAAewB,EAAK,YAAaf,EAAMe,EAAK,YAAY4D,EAAU,EAE1E,CAAC,CACL,CAEO,OAAAT,EAAA,mBAAP,SAA0BY,EAAkD,CACxE,OA5yBR,EA4yBe1F,GAAA,oBAAmB0F,CAAW,CACzC,EAEOZ,EAAA,aAAP,SAAoBJ,EAAoC,CACpD,OAAI7E,GAAA,UAAU,YAAY6E,CAAiB,EAChCA,EAEJ,IAAI7E,GAAA,UAAU6E,CAAiB,CAC1C,EAGAI,EAAA,UAAA,SAAA,UAAA,CACI,OAAO,KAAK,UAAS,CACzB,EAEAA,EAAA,UAAA,UAAA,SAAUzB,EAAmB,CAA7B,IAAA1B,EAAA,KACI,OAAK,KAAK,mBAGF,KAAK,kBACL,KAAK,iBAAmB,KAAK,kBAAkB,KAAI,EAAG,KAAK,UAAA,CACvD,OAAOA,CACX,CAAC,EAOD,KAAK,iBAAmB,KAAK,SAAS,QAAQ,KAAK,QAAS0B,CAAQ,EAAE,KAAK,SAACsC,EAAI,CAC5E,OAAIA,IAAS,MACTpF,GAAO,WAAW,wBAAyBF,GAAA,OAAO,OAAO,sBAAuB,CAC5E,gBAAiBsB,EAAK,QACtB,UAAW,cACd,EAEEA,CACX,CAAC,GAIF,KAAK,gBAChB,EAQAmD,EAAA,UAAA,SAAA,SAAStD,EAA8B,CAAvC,IAAAG,EAAA,KACS,KAAK,QACNpB,GAAO,WAAW,0CAA2CF,GAAA,OAAO,OAAO,sBAAuB,CAAE,UAAW,2BAA2B,CAAE,EAGhJ,IAAMyB,GAn2Bd,EAm2BmD3B,EAAA,aAAYqB,GAAa,CAAA,CAAE,EAEtE,OAAC,OAAQ,IAAI,EAAE,QAAQ,SAASa,EAAG,CACrBP,EAAIO,IAAQ,MACtB9B,GAAO,WAAW,mBAAqB8B,EAAKhC,GAAA,OAAO,OAAO,sBAAuB,CAAE,UAAWgC,CAAG,CAAE,CACvG,CAAC,EAEDP,EAAG,GAAK,KAAK,gBACN,KAAK,SAAQ,EAAG,KAAK,UAAA,CACxB,OAAOH,EAAK,OAAO,gBAAgBG,CAAE,CACzC,CAAC,CACL,EAGAgD,EAAA,UAAA,QAAA,SAAQpC,EAA4C,CAC5C,OAAOA,GAAsB,WAC7BA,EAAmB,IAAI3C,GAAA,WAAW2C,EAAkB,KAAK,QAAQ,GAGrE,IAAMrB,EAAW,IAAyC,KAAK,YAAc,KAAK,QAAS,KAAK,UAAWqB,CAAgB,EAC3H,OAAI,KAAK,oBAv3BjB,EAw3BYvC,EAAA,gBAAekB,EAAU,oBAAqB,KAAK,iBAAiB,EAGjEA,CACX,EAGAyD,EAAA,UAAA,OAAA,SAAOC,EAAqB,CACxB,OAAO,IAAyC,KAAK,YAAcA,EAAe,KAAK,UAAW,KAAK,QAAU,KAAK,QAAQ,CAClI,EAEOD,EAAA,UAAP,SAAiB9D,EAAU,CACvB,OAAOnB,GAAA,QAAQ,UAAUmB,CAAK,CAClC,EAEQ8D,EAAA,UAAA,uBAAR,SAA+Bc,EAA0B,CAErD,OAAI,KAAK,eAAeA,EAAa,KAC1B,KAAK,eAAeA,EAAa,KAEpCA,CACZ,EAEQd,EAAA,UAAA,iBAAR,SAAyBe,EAA+B,CACpD,GAAI,OAAOA,GAAe,SAAU,CAIhC,GAAIA,IAAc,QACd,OAAO,KAAK,uBAAuB,IAAIvB,EAAmB,EAI9D,GAAIuB,IAAc,QACd,OAAO,KAAK,uBAAuB,IAAI/B,GAAa,QAAS,IAAI,CAAC,EAItE,GAAI+B,IAAc,IACd,OAAO,KAAK,uBAAuB,IAAIjB,GAAqB,KAAK,QAAS,KAAK,SAAS,CAAC,EAI7F,IAAMtD,EAAW,KAAK,UAAU,SAASuE,CAAS,EAClD,OAAO,KAAK,uBAAuB,IAAIpB,GAAqB,KAAK,QAAS,KAAK,UAAWnD,CAAQ,CAAC,EAIvG,GAAIuE,EAAU,QAAUA,EAAU,OAAO,OAAS,EAAG,CAGjD,GAAI,CACA,IAAMhC,EAAQgC,EAAU,OAAO,GAC/B,GAAI,OAAOhC,GAAW,SAClB,MAAM,IAAI,MAAM,eAAe,EAEnC,IAAMvC,EAAW,KAAK,UAAU,SAASuC,CAAK,EAC9C,OAAO,KAAK,uBAAuB,IAAIY,GAAqB,KAAK,QAAS,KAAK,UAAWnD,EAAUuE,EAAU,MAAM,CAAC,OACvH,CAAc,CAGhB,IAAMjC,EAAsB,CACxB,QAAS,KAAK,QACd,OAAQiC,EAAU,QAGtB,OAAO,KAAK,uBAAuB,IAAI/B,GAAaH,GAAYC,CAAM,EAAGA,CAAM,CAAC,EAGpF,OAAO,KAAK,uBAAuB,IAAIgB,GAAqB,KAAK,QAAS,KAAK,SAAS,CAAC,CAC7F,EAEAE,EAAA,UAAA,oBAAA,SAAoBc,EAA0B,CAC1C,GAAIA,EAAa,cAAa,IAAO,EAAG,CACpC,OAAO,KAAK,eAAeA,EAAa,KAGxC,IAAME,EAAO,KAAK,cAAcF,EAAa,KACzCE,GAAQF,EAAa,SACrB,KAAK,SAAS,IAAIA,EAAa,OAAQE,CAAI,EAC3C,OAAO,KAAK,cAAcF,EAAa,MAGnD,EAIAd,EAAA,UAAA,WAAA,SAAWc,EAA4B7C,EAAUiB,EAAkB,CAAnE,IAAArC,EAAA,KACUqB,GAh9Bd,EAg9B6B7C,EAAA,UAAS4C,CAAG,EAEjC,OAAAC,EAAM,eAAiB,UAAA,CACf,CAACgB,IACL4B,EAAa,eAAe5B,CAAQ,EACpCrC,EAAK,oBAAoBiE,CAAY,EACzC,EAEA5C,EAAM,SAAW,UAAA,CAAQ,OAAOrB,EAAK,SAAS,SAASoB,EAAI,SAAS,CAAG,EACvEC,EAAM,eAAiB,UAAA,CAAQ,OAAOrB,EAAK,SAAS,eAAeoB,EAAI,eAAe,CAAG,EACzFC,EAAM,sBAAwB,UAAA,CAAQ,OAAOrB,EAAK,SAAS,sBAAsBoB,EAAI,eAAe,CAAG,EAGvG6C,EAAa,aAAa5C,CAAK,EAExBA,CACX,EAEQ8B,EAAA,UAAA,kBAAR,SAA0Bc,EAA4B5B,EAAoBC,EAAa,CAAvF,IAAAtC,EAAA,KAWI,GAVK,KAAK,UACNpB,GAAO,WAAW,wDAAyDF,GAAA,OAAO,OAAO,sBAAuB,CAAE,UAAW,MAAM,CAAE,EAGzIuF,EAAa,YAAY5B,EAAUC,CAAI,EAGvC,KAAK,eAAe2B,EAAa,KAAOA,EAGpC,CAAC,KAAK,cAAcA,EAAa,KAAM,CACvC,IAAMG,EAAc,SAAChD,EAAQ,CACzB,IAAIC,EAAQrB,EAAK,WAAWiE,EAAc7C,EAAKiB,CAAQ,EAGvD,GAAIhB,EAAM,aAAe,KACrB,GAAI,CACA,IAAMzB,EAAOqE,EAAa,QAAQ5C,CAAK,EACvCrB,EAAK,KAAI,MAATA,EAAIqE,GAAA,CAAMJ,EAAa,MAAM,EAAKrE,EAAI,EAAA,CAAA,QACjCgC,EAAP,CACEP,EAAM,YAAcO,EAAM,MAK9BqC,EAAa,QAAU,MACvBjE,EAAK,KAAK,QAASqB,CAAK,EAIxBA,EAAM,aAAe,MACrBrB,EAAK,KAAK,QAASqB,EAAM,YAAaA,CAAK,CAEnD,EACA,KAAK,cAAc4C,EAAa,KAAOG,EAGnCH,EAAa,QAAU,MACvB,KAAK,SAAS,GAAGA,EAAa,OAAQG,CAAW,EAG7D,EAEAjB,EAAA,UAAA,YAAA,SAAY9B,EAA6BiD,EAA0CC,EAAkB,CAArG,IAAAvE,EAAA,KACUiE,EAAe,KAAK,iBAAiB5C,CAAK,EAC1CY,GAhhCd,EAghCuBzD,EAAA,aAAYyF,EAAa,MAAM,EAE9C,OAAI,OAAOK,GAA0B,WAlhC7C,EAkhCyD/F,GAAA,aAAY+F,EAAsB,EAAE,GAC7EC,GAAW,MACX3F,GAAO,mBAAmB,wCAAyC,UAAW2F,CAAO,EAErEtC,EAAQ,UAAYqC,IAE9BrC,EAAQ,UAAcqC,GAAsD,EAC5ErC,EAAQ,QAAYsC,GAA4B,UAGvD,KAAK,SAAS,QAAQtC,CAAM,EAAE,KAAK,SAACuC,EAAI,CAC3C,OAAOA,EAAK,IAAI,SAACpD,EAAG,CAAK,OAAApB,EAAK,WAAWiE,EAAc7C,EAAK,IAAI,CAAvC,CAAwC,CACrE,CAAC,CACL,EAEA+B,EAAA,UAAA,GAAA,SAAG9B,EAA6BgB,EAAkB,CAC9C,YAAK,kBAAkB,KAAK,iBAAiBhB,CAAK,EAAGgB,EAAU,EAAK,EAC7D,IACX,EAEAc,EAAA,UAAA,KAAA,SAAK9B,EAA6BgB,EAAkB,CAChD,YAAK,kBAAkB,KAAK,iBAAiBhB,CAAK,EAAGgB,EAAU,EAAI,EAC5D,IACX,EAEAc,EAAA,UAAA,KAAA,SAAKe,EAA+B,SAAEtE,EAAA,CAAA,EAAAiB,EAAA,EAAAA,EAAA,UAAA,OAAAA,IAAAjB,EAAAiB,EAAA,GAAA,UAAAA,GAClC,GAAI,CAAC,KAAK,SAAY,MAAO,GAE7B,IAAMoD,EAAe,KAAK,iBAAiBC,CAAS,EAC9CvC,EAAUsC,EAAa,IAAIrE,CAAI,EAAI,EAGzC,YAAK,oBAAoBqE,CAAY,EAE9BtC,CACX,EAEAwB,EAAA,UAAA,cAAA,SAAce,EAAgC,CAA9C,IAAAlE,EAAA,KACI,OAAK,KAAK,SACNkE,GAAa,KACN,OAAO,KAAK,KAAK,cAAc,EAAE,OAAO,SAACO,EAAO/D,EAAG,CACtD,OAAO+D,EAAQzE,EAAK,eAAeU,GAAK,cAAa,CACzD,EAAG,CAAC,EAED,KAAK,iBAAiBwD,CAAS,EAAE,cAAa,EANxB,CAOjC,EAEAf,EAAA,UAAA,UAAA,SAAUe,EAAgC,CACtC,GAAI,CAAC,KAAK,SAAY,MAAO,CAAA,EAE7B,GAAIA,GAAa,KAAM,CACnB,IAAMQ,EAA0B,CAAA,EAChC,QAAStC,KAAO,KAAK,eACjB,KAAK,eAAeA,GAAK,UAAS,EAAG,QAAQ,SAACC,EAAQ,CAClDqC,EAAO,KAAKrC,CAAQ,CACxB,CAAC,EAEL,OAAOqC,EAGX,OAAO,KAAK,iBAAiBR,CAAS,EAAE,UAAS,CACrD,EAEAf,EAAA,UAAA,mBAAA,SAAmBe,EAAgC,CAC/C,GAAI,CAAC,KAAK,SAAY,OAAO,KAE7B,GAAIA,GAAa,KAAM,CACnB,QAAW9B,KAAO,KAAK,eAAgB,CACnC,IAAMuC,EAAe,KAAK,eAAevC,GACzCuC,EAAa,mBAAkB,EAC/B,KAAK,oBAAoBA,CAAY,EAEzC,OAAO,KAIX,IAAMV,EAAe,KAAK,iBAAiBC,CAAS,EACpD,OAAAD,EAAa,mBAAkB,EAC/B,KAAK,oBAAoBA,CAAY,EAE9B,IACX,EAEAd,EAAA,UAAA,IAAA,SAAIe,EAAiC7B,EAAkB,CACnD,GAAI,CAAC,KAAK,SAAY,OAAO,KAC7B,IAAM4B,EAAe,KAAK,iBAAiBC,CAAS,EACpD,OAAAD,EAAa,eAAe5B,CAAQ,EACpC,KAAK,oBAAoB4B,CAAY,EAC9B,IACX,EAEAd,EAAA,UAAA,eAAA,SAAee,EAAiC7B,EAAkB,CAC9D,OAAO,KAAK,IAAI6B,EAAW7B,CAAQ,CACvC,EAEJc,CAAA,EA7fA,EAAalF,GAAA,aAAAkF,GA+fb,IAAAyB,GAAA,SAAAhC,EAAA,CAA8BC,GAAA+B,EAAAhC,CAAA,EAA9B,SAAAgC,GAAA,+CAGA,CAAA,OAAAA,CAAA,EAH8BzB,EAAY,EAA7BlF,GAAA,SAAA2G,GAKb,IAAAC,GAAA,UAAA,CAMI,SAAAA,EAAY9B,EAAsC+B,EAA0CC,EAAe,wBAEnGC,EAAsB,KAEtB,OAAOF,GAAc,SACrBE,EAAcF,GAnoC1B,EAooCmBvG,GAAA,SAAQuG,CAAQ,EACvBE,GAroCZ,EAqoC0BzG,GAAA,SAAQuG,CAAQ,EACvBA,GAAY,OAAOA,EAAS,QAAY,SAE/CE,EAAoBF,EAAU,OAG9BE,EAAc,IAIdA,EAAY,UAAU,EAAG,CAAC,IAAM,OAAQA,EAAc,KAAOA,IAG7D,EAlpCZ,EAkpCazG,GAAA,aAAYyG,CAAW,GAAMA,EAAY,OAAS,IACnDpG,GAAO,mBAAmB,mBAAoB,WAAYkG,CAAQ,EAIlEC,GAAU,CAAC3G,GAAA,OAAO,SAAS2G,CAAM,GACjCnG,GAAO,mBAAmB,iBAAkB,SAAUmG,CAAM,GAxpCxE,EA2pCQvG,EAAA,gBAAe,KAAM,WAAYwG,CAAW,GA3pCpD,EA4pCQxG,EAAA,gBAAe,KAAM,aA5pC7B,EA4pC0CA,EAAA,WAAS6E,EAA4B,cAAc,EAAEN,CAAiB,CAAC,GA5pCjH,EA6pCQvE,EAAA,gBAAe,KAAM,SAAUuG,GAAU,IAAI,CACjD,CAGA,OAAAF,EAAA,UAAA,qBAAA,UAAA,SAAqBjF,EAAA,CAAA,EAAAiB,EAAA,EAAAA,EAAA,UAAA,OAAAA,IAAAjB,EAAAiB,GAAA,UAAAA,GACjB,IAAIV,EAAyB,CAAA,EAG7B,GAAIP,EAAK,SAAW,KAAK,UAAU,OAAO,OAAO,OAAS,GAAK,OAAOA,EAAKA,EAAK,OAAS,IAAQ,SAAU,CACvGO,GAtqCZ,EAsqCiB3B,EAAA,aAAYoB,EAAK,IAAG,CAAE,EAC3B,QAAWc,KAAOP,EACd,GAAI,CAACtB,GAAuB6B,GACxB,MAAM,IAAI,MAAM,gCAAkCA,CAAG,EAWjE,GALA,CAAC,OAAQ,OAAQ,IAAI,EAAE,QAAQ,SAACA,EAAG,CACrBP,EAAIO,IAAQ,MACtB9B,GAAO,WAAW,mBAAqB8B,EAAKhC,GAAA,OAAO,OAAO,sBAAuB,CAAE,UAAWgC,CAAG,CAAE,CACvG,CAAC,EAEGP,EAAG,MAAO,CACV,IAAMd,EAAQf,GAAA,UAAU,KAAK6B,EAAG,KAAK,EACjC,CAACd,EAAM,OAAM,GAAM,CAAC,KAAK,UAAU,OAAO,SAC1CT,GAAO,WAAW,gDAAiDF,GAAA,OAAO,OAAO,sBAAuB,CACpG,UAAW,kBACX,MAAOyB,EAAG,MACb,EAKT,OAAAvB,GAAO,mBAAmBgB,EAAK,OAAQ,KAAK,UAAU,OAAO,OAAO,OAAQ,0BAA0B,EAGtGO,EAAG,MAlsCX,EAksCkB5B,GAAA,UAlsClB,EAksC0BA,GAAA,QAAO,CACrB,KAAK,SACL,KAAK,UAAU,aAAaqB,CAAI,EACnC,CAAC,EAEKO,CACX,EAEM0E,EAAA,UAAA,OAAN,UAAA,SAAajF,EAAA,CAAA,EAAAiB,EAAA,EAAAA,EAAA,UAAA,OAAAA,IAAAjB,EAAAiB,GAAA,UAAAA,6GAEL,OAAAhB,EAAiB,CAAA,EAGjBD,EAAK,SAAW,KAAK,UAAU,OAAO,OAAO,OAAS,IACtDC,EAAYD,EAAK,IAAG,GAIxBhB,GAAO,mBAAmBgB,EAAK,OAAQ,KAAK,UAAU,OAAO,OAAO,OAAQ,0BAA0B,EAGvF,CAAA,EAAMR,GAAiB,KAAK,OAAQQ,EAAM,KAAK,UAAU,OAAO,MAAM,CAAC,SAAhF,OAAAqF,EAAS/F,EAAA,KAAA,EACf+F,EAAO,KAAKpF,CAAS,EAGfqF,EAAa,KAAK,qBAAoB,MAAzB,KAA6BD,CAAM,EAG3C,CAAA,EAAM,KAAK,OAAO,gBAAgBC,CAAU,CAAC,SAAlD,OAAA/E,EAAKjB,EAAA,KAAA,EAELC,GAhuCd,EAguCwBX,EAAA,WAA+C,KAAK,YAAa,oBAAoB,EAAE2B,CAAE,EACnGT,GAjuCd,EAiuCyBlB,EAAA,WAAgG,KAAK,YAAa,aAAa,EAAEW,EAAS,KAAK,UAAW,KAAK,MAAM,EAGtL6B,GAAgBtB,EAAUS,CAAE,GApuCpC,EAsuCQ3B,EAAA,gBAAekB,EAAU,oBAAqBS,CAAE,EAChD,CAAA,EAAOT,CAAQ,QAGnBmF,EAAA,UAAA,OAAA,SAAO1F,EAAe,CAClB,OAAc,KAAK,YAAc,YAAYA,EAAS,KAAK,UAAW,KAAK,MAAM,CACrF,EAEA0F,EAAA,UAAA,QAAA,SAAQE,EAAc,CAClB,OAAO,IAAgD,KAAK,YAAc,KAAK,UAAW,KAAK,SAAUA,CAAM,CACnH,EAEOF,EAAA,aAAP,SAAoBM,EAAqBJ,EAAe,CAChDI,GAAkB,MAClBvG,GAAO,WAAW,0BAA2BF,GAAA,OAAO,OAAO,iBAAkB,CAAE,SAAU,gBAAgB,CAAE,EAG3G,OAAOyG,GAAoB,WAC3BA,EAAiB,KAAK,MAAMA,CAAc,GAG9C,IAAMC,EAAMD,EAAe,IAEvBL,EAAgB,KACpB,OAAIK,EAAe,SACfL,EAAWK,EAAe,SACnBA,EAAe,KAAOA,EAAe,IAAI,WAChDL,EAAWK,EAAe,IAAI,UAG3B,IAAI,KAAKC,EAAKN,EAAUC,CAAM,CACzC,EAEOF,EAAA,aAAP,SAAoB9B,EAAoC,CACpD,OAAO6B,GAAS,aAAa7B,CAAiB,CAClD,EAEO8B,EAAA,mBAAP,SAA0B1E,EAA2D,CACjF,OA5wCR,EA4wCe9B,GAAA,oBAAmB8B,CAAE,CAChC,EAEO0E,EAAA,YAAP,SAAmB1F,EAAiB4D,EAAsCgC,EAAe,CACrF,OAAO,IAAIH,GAASzF,EAAS4D,EAAmBgC,CAAM,CAC1D,EACJF,CAAA,EA1JA,EAAa5G,GAAA,gBAAA4G,sHChlCb,IAAAQ,GAAA,KACAC,GAAA,KAEAC,GAAA,UAAA,CAOI,SAAAA,EAAYC,EAAgB,IACxBF,GAAA,gBAAe,KAAM,WAAYE,CAAQ,KACzCF,GAAA,gBAAe,KAAM,OAAQE,EAAS,MAAM,KAE5CF,GAAA,gBAAe,KAAM,eAAgB,CAAA,CAAG,KACxCA,GAAA,gBAAe,KAAM,UAAWE,EAAS,OAAO,CAAC,CAAC,EAGlD,QAASC,EAAI,EAAGA,EAAID,EAAS,OAAQC,IACjC,KAAK,aAAaD,EAAS,OAAOC,CAAC,GAAKA,CAEhD,CAEA,OAAAF,EAAA,UAAA,OAAA,SAAOG,EAAgB,CACnB,IAAIC,KAASN,GAAA,UAASK,CAAK,EAE3B,GAAIC,EAAO,SAAW,EAAK,MAAO,GAGlC,QADIC,EAAS,CAAE,CAAC,EACP,EAAI,EAAG,EAAID,EAAO,OAAQ,EAAE,EAAG,CAEpC,QADIE,EAAQF,EAAO,GACVG,EAAI,EAAGA,EAAIF,EAAO,OAAQ,EAAEE,EACjCD,GAASD,EAAOE,IAAM,EACtBF,EAAOE,GAAKD,EAAQ,KAAK,KACzBA,EAASA,EAAQ,KAAK,KAAQ,EAGlC,KAAOA,EAAQ,GACXD,EAAO,KAAKC,EAAQ,KAAK,IAAI,EAC7BA,EAASA,EAAQ,KAAK,KAAQ,EAOtC,QAHIE,EAAS,GAGJC,EAAI,EAAGL,EAAOK,KAAO,GAAKA,EAAIL,EAAO,OAAS,EAAG,EAAEK,EACxDD,GAAU,KAAK,QAInB,QAASE,EAAIL,EAAO,OAAS,EAAGK,GAAK,EAAG,EAAEA,EACtCF,GAAU,KAAK,SAASH,EAAOK,IAGnC,OAAOF,CACX,EAEAR,EAAA,UAAA,OAAA,SAAOG,EAAa,CAChB,GAAI,OAAOA,GAAW,SAClB,MAAM,IAAI,UAAU,iBAAiB,EAGzC,IAAIQ,EAAuB,CAAA,EAC3B,GAAIR,EAAM,SAAW,EAAK,OAAO,IAAI,WAAWQ,CAAK,EAErDA,EAAM,KAAK,CAAC,EACZ,QAAST,EAAI,EAAGA,EAAIC,EAAM,OAAQD,IAAK,CACnC,IAAIU,EAAO,KAAK,aAAaT,EAAMD,IAEnC,GAAIU,IAAS,OACT,MAAM,IAAI,MAAM,WAAa,KAAK,KAAO,YAAY,EAIzD,QADIN,EAAQM,EACHL,EAAI,EAAGA,EAAII,EAAM,OAAQ,EAAEJ,EAChCD,GAASK,EAAMJ,GAAK,KAAK,KACzBI,EAAMJ,GAAKD,EAAQ,IACnBA,IAAU,EAGd,KAAOA,EAAQ,GACXK,EAAM,KAAKL,EAAQ,GAAI,EACvBA,IAAU,EAKlB,QAASG,EAAI,EAAGN,EAAMM,KAAO,KAAK,SAAWA,EAAIN,EAAM,OAAS,EAAG,EAAEM,EACjEE,EAAM,KAAK,CAAC,EAGhB,SAAOb,GAAA,UAAS,IAAI,WAAWa,EAAM,QAAO,CAAE,CAAC,CACnD,EACJX,CAAA,EA3FA,EAAaa,GAAA,MAAAb,GA6Fb,IAAMc,GAAS,IAAId,GAAM,kCAAkC,EAGlDa,GAAA,OAAAC,GAFT,IAAMC,GAAS,IAAIf,GAAM,4DAA4D,EAEpEa,GAAA,OAAAE,KC3IjB,IAAAC,GAAAC,EAAAC,IAAA,iFAEA,IAAAC,GAAA,QAAA,UAEAC,GAAA,KAGA,SAASC,GAAUC,EAAgB,CAC/B,OAAO,OAAO,MARlB,EAQuBF,GAAA,UAASE,CAAK,CAAC,CACtC,CAEA,SAAgBC,GAAOC,EAAqBC,EAAiBC,EAAoBC,EAAgBC,EAAqB,CAClH,OAZJ,EAYWR,GAAA,UAZX,EAYmBD,GAAA,YAAQE,GAAUG,CAAQ,EAAGH,GAAUI,CAAI,EAAGC,EAAYC,EAAQC,CAAa,CAAC,CACnG,CAFAV,GAAA,OAAAK,mGCVA,IAAAM,GAAA,KAAS,OAAA,eAAAC,GAAA,SAAA,CAAA,WAAA,GAAA,IAAA,UAAA,CAAA,OAAAD,GAAA,MAAM,CAAA,CAAA,8GCDf,IAAYE,IAAZ,SAAYA,EAAkB,CAAGA,EAAA,OAAA,SAAmBA,EAAA,OAAA,QAAkB,GAA1DA,GAAAC,GAAA,qBAAAA,GAAA,mBAAkB,CAAA,EAAA,mGCAjBC,GAAA,QAAU,eCAvB,IAAAC,GAAAC,EAAAC,IAAA,wMAEA,IAAAC,GAAA,QAAA,UAEAC,GAAAC,GAAA,IAAA,EAEAC,GAAA,KAEAC,GAAA,KAEAC,GAAA,KACAC,GAAA,KACMC,GAAS,IAAIF,GAAA,OAAOC,GAAA,OAAO,EAEjC,SAAgBE,GAAUC,EAAe,CACrC,MAAO,KAAQR,GAAA,QAAK,UAAS,EAAG,QAfpC,EAe2CE,GAAA,UAASM,CAAI,CAAC,EAAE,OAAO,KAAK,CACvE,CAFAV,GAAA,UAAAS,GAIA,SAAgBE,GAAOD,EAAe,CAClC,MAAO,MAnBX,EAmBkBT,GAAA,YAAW,QAAQ,EAAE,OAAO,OAAO,MAnBrD,EAmB0DG,GAAA,UAASM,CAAI,CAAC,CAAC,EAAE,OAAO,KAAK,CACvF,CAFAV,GAAA,OAAAW,GAIA,SAAgBC,GAAOF,EAAe,CAClC,MAAO,MAvBX,EAuBkBT,GAAA,YAAW,QAAQ,EAAE,OAAO,OAAO,MAvBrD,EAuB0DG,GAAA,UAASM,CAAI,CAAC,CAAC,EAAE,OAAO,KAAK,CACvF,CAFAV,GAAA,OAAAY,GAIA,SAAgBC,GAAYC,EAA+BC,EAAgBL,EAAe,CAEtF,OAAKL,GAAA,mBAAmBS,IACpBN,GAAO,WAAW,2BAA6BM,EAAWR,GAAA,OAAO,OAAO,sBAAuB,CAC3F,UAAW,cACX,UAAWQ,EACd,EAGE,MAnCX,EAmCkBb,GAAA,YAAWa,EAAW,OAAO,MAnC/C,EAmCoDV,GAAA,UAASW,CAAG,CAAC,CAAC,EAAE,OAAO,OAAO,MAnClF,EAmCuFX,GAAA,UAASM,CAAI,CAAC,CAAC,EAAE,OAAO,KAAK,CACpH,CAVAV,GAAA,YAAAa,+JC1BA,IAAAG,GAAA,KAKI,OAAA,eAAAC,GAAA,cAAA,CAAA,WAAA,GAAA,IAAA,UAAA,CAAA,OALKD,GAAA,WAAW,CAAA,CAAA,EAOhB,OAAA,eAAAC,GAAA,YAAA,CAAA,WAAA,GAAA,IAAA,UAAA,CAAA,OAPkBD,GAAA,SAAS,CAAA,CAAA,EAS3B,OAAA,eAAAC,GAAA,SAAA,CAAA,WAAA,GAAA,IAAA,UAAA,CAAA,OAT6BD,GAAA,MAAM,CAAA,CAAA,EAUnC,OAAA,eAAAC,GAAA,SAAA,CAAA,WAAA,GAAA,IAAA,UAAA,CAAA,OAVqCD,GAAA,MAAM,CAAA,CAAA,EAE/C,IAAAE,GAAA,KAUI,OAAA,eAAAD,GAAA,qBAAA,CAAA,WAAA,GAAA,IAAA,UAAA,CAAA,OAVKC,GAAA,kBAAkB,CAAA,CAAA,mGCFdC,GAAA,QAAU,oBCAvB,IAAAC,GAAAC,EAAAC,IAAA,6FAGA,IAAMC,GAAiB,GAEvBC,GAAA,KACAC,GAAA,KAEAC,GAAA,KACAC,GAAA,KACaL,GAAA,OAAS,IAAII,GAAA,OAAOC,GAAA,OAAO,EAExC,IAAAC,GAAA,UAAA,CAGI,SAAAA,EAAYC,EAAc,wBACtBP,GAAA,OAAO,cAAaQ,EAAaF,CAAQ,GAhBjD,EAiBQH,GAAA,gBAAe,KAAM,SAAUI,CAAM,CACzC,CAMA,OAAAD,EAAA,UAAA,MAAA,SAAMG,EAAgB,CAClB,OAAOA,EAAS,YAAW,EAAG,MAAM,KAAK,CAC7C,EAGAH,EAAA,UAAA,KAAA,SAAKI,EAAoB,CACrB,OAAOA,EAAM,KAAK,GAAG,CACzB,EAEOJ,EAAA,MAAP,SAAaK,EAAkB,CAE3B,QADMD,EAAQ,CAAA,EACLE,EAAI,EAAGA,EAAI,KAAMA,IAAK,CAC3B,IAAMC,EAAOF,EAAS,QAAQC,CAAC,EAE/B,GAAIA,IAAMD,EAAS,aAAaE,CAAI,EAAK,MAAO,KAChDH,EAAM,KAAKG,CAAI,EAEnB,OAzCR,EAyCeX,GAAA,IAAGQ,EAAM,KAAK;CAAI,EAAI;CAAI,CACrC,EAEOJ,EAAA,SAAP,SAAgBQ,EAAgBC,EAAa,CAIzC,GAHKA,IAAQA,EAAOD,EAAK,QAGrBb,GACA,GAAI,CACA,IAAMe,EAAa,OACfA,EAAU,SAAWA,EAAU,QAAQ,YAClCA,EAAU,QAAQ,UAAUD,KApDrD,EAqDyBZ,GAAA,gBAAea,EAAU,QAAQ,UAAWD,EAAMD,CAAI,QAGjE,CAAc,CAExB,EAEJR,CAAA,EAhDA,EAAsBN,GAAA,SAAAM,KCZtB,IAAAW,GAAAC,EAAAC,IAAA,kkBAEA,IAAAC,GAAA,KAEMC,GAAQ,omZAEVC,GAA0B,KAE9B,SAASC,GAAUC,EAAc,CAC7B,GAAIF,IAAY,OAChBA,GAAWD,GAAM,QAAQ,WAAY,KAAK,EAAE,YAAW,EAAG,UAAU,CAAC,EAAE,MAAM,GAAG,EAI5ED,GAAA,SAAS,MAAMI,CAAI,IAAM,sEACzB,MAAAF,GAAW,KACL,IAAI,MAAM,wCAAwC,CAEhE,CAEA,IAAAG,GAAA,SAAAC,EAAA,CAAqBC,GAAAF,EAAAC,CAAA,EACjB,SAAAD,GAAA,QACIC,EAAA,KAAA,KAAM,IAAI,GAAC,IACf,CAEA,OAAAD,EAAA,UAAA,QAAA,SAAQG,EAAa,CACjB,OAAAL,GAAU,IAAI,EACPD,GAASM,EACpB,EAEAH,EAAA,UAAA,aAAA,SAAaI,EAAY,CACrB,OAAAN,GAAU,IAAI,EACPD,GAAS,QAAQO,CAAI,CAChC,EACJJ,CAAA,EAdqBL,GAAA,QAAQ,EAgBvBU,GAAS,IAAIL,GAGVN,GAAA,OAAAW,GAFTV,GAAA,SAAS,SAASU,EAAM,ICrCxB,IAAAC,GAAAC,EAAAC,IAAA,kkBAEA,IAAAC,GAAA,KAGMC,GAAQ,+zVAEVC,GAA0B,KAG9B,SAASC,GAAUC,EAAc,CAC7B,GAAIF,IAAY,OAChBA,GAAWD,GAAM,QAAQ,WAAY,KAAK,EAAE,YAAW,EAAG,UAAU,CAAC,EAAE,MAAM,GAAG,EAI5ED,GAAA,SAAS,MAAMI,CAAI,IAAM,sEACzB,MAAAF,GAAW,KACL,IAAI,MAAM,wCAAwC,CAEhE,CAEA,IAAAG,GAAA,SAAAC,EAAA,CAAqBC,GAAAF,EAAAC,CAAA,EACjB,SAAAD,GAAA,QACIC,EAAA,KAAA,KAAM,IAAI,GAAC,IACf,CAEA,OAAAD,EAAA,UAAA,QAAA,SAAQG,EAAa,CACjB,OAAAL,GAAU,IAAI,EACPD,GAASM,EACpB,EAEAH,EAAA,UAAA,aAAA,SAAaI,EAAY,CACrB,OAAAN,GAAU,IAAI,EACPD,GAAS,QAAQO,CAAI,CAChC,EACJJ,CAAA,EAdqBL,GAAA,QAAQ,EAgBvBU,GAAS,IAAIL,GAGVN,GAAA,OAAAW,GAFTV,GAAA,SAAS,SAASU,EAAM,ICvCxB,IAAAC,GAAAC,EAAAC,IAAA,kkBAEA,IAAAC,GAAA,KAEAC,GAAA,KAGMC,GAAQ,szWAERC,GAAqC,CAAA,EACvCC,GAA0B,KAE9B,SAASC,GAAcC,EAAY,CAC/B,OAAAL,GAAA,OAAO,eAAc,GAbzB,EAcWD,GAAA,cAAa,MAAM,UAAU,OAAO,MAd/C,EAcoDA,GAAA,aAAYM,EAAK,UAAU,KAAK,EAAE,YAAW,CAAE,EAAG,SAACC,EAAS,CACxG,OAASA,GAAK,IAAMA,GAAK,IAAQA,GAAK,IAAMA,GAAK,GACrD,CAAC,CAAC,CACN,CAEA,SAASC,GAAOF,EAAY,CACxB,IAAMG,EAAwB,CAAA,EAC9B,aAAM,UAAU,QAAQ,MArB5B,EAqBiCT,GAAA,aAAYM,CAAI,EAAG,SAACC,EAAS,CAElDA,IAAM,IACNE,EAAO,KAAK,GAAG,EACfA,EAAO,KAAK,GAAG,GAERF,IAAM,KACbE,EAAO,KAAK,GAAG,EACfA,EAAO,KAAK,GAAG,EACfA,EAAO,KAAK,GAAG,GAEfA,EAAO,KAAKF,CAAC,CAErB,CAAC,GAlCL,EAoCWP,GAAA,cAAaS,CAAM,CAC9B,CAEA,SAASC,GAAUC,EAAc,CAC7B,GAAIP,IAAY,OAChBA,GAAWF,GAAM,QAAQ,WAAY,KAAK,EAAE,YAAW,EAAG,UAAU,CAAC,EAAE,MAAM,GAAG,EAAE,IAAI,SAACU,EAAC,CAAK,OAAAJ,GAAOI,CAAC,CAAR,CAAS,EACtGR,GAAS,QAAQ,SAACE,EAAMO,EAAK,CACzBV,GAAOE,GAAcC,CAAI,GAAKO,CAClC,CAAC,EAIGZ,GAAA,SAAS,MAAMU,CAAI,IAAM,sEACzB,MAAAP,GAAW,KACL,IAAI,MAAM,wCAAwC,CAEhE,CAEA,IAAAU,GAAA,SAAAC,EAAA,CAAqBC,GAAAF,EAAAC,CAAA,EACjB,SAAAD,GAAA,QACIC,EAAA,KAAA,KAAM,IAAI,GAAC,IACf,CAEA,OAAAD,EAAA,UAAA,QAAA,SAAQD,EAAa,CACjB,OAAAH,GAAU,IAAI,EACPN,GAASS,EACpB,EAEAC,EAAA,UAAA,aAAA,SAAaR,EAAY,CACrB,OAAAI,GAAU,IAAI,EACPP,GAAOE,GAAcC,CAAI,EACpC,EACJQ,CAAA,EAdqBb,GAAA,QAAQ,EAgBvBgB,GAAS,IAAIH,GAGVf,GAAA,OAAAkB,GAFThB,GAAA,SAAS,SAASgB,EAAM,ICvExB,IAAAC,GAAAC,EAAAC,IAAA,kkBAEA,IAAAC,GAAA,KAEAC,GAAA,KAGMC,GAAQ,wgcAEVC,GAA0B,KACxBC,GAAqC,CAAA,EAE3C,SAASC,GAAcC,EAAY,CAC/B,OAAAL,GAAA,OAAO,eAAc,GAbzB,EAcWD,GAAA,cAAa,MAAM,UAAU,OAAO,MAd/C,EAcoDA,GAAA,aAAYM,EAAK,UAAU,KAAK,EAAE,YAAW,CAAE,EAAG,SAACC,EAAS,CACxG,OAASA,GAAK,IAAMA,GAAK,IAAQA,GAAK,IAAMA,GAAK,GACrD,CAAC,CAAC,CACN,CAEA,SAASC,GAAOF,EAAY,CACxB,IAAMG,EAAwB,CAAA,EAE9B,aAAM,UAAU,QAAQ,MAtB5B,EAsBiCT,GAAA,aAAYM,CAAI,EAAG,SAACC,EAAS,CAElDA,IAAM,IACNE,EAAO,KAAK,GAAG,EACfA,EAAO,KAAK,GAAG,GAGRF,IAAM,IACbE,EAAO,KAAK,GAAG,EACfA,EAAO,KAAK,GAAG,GAGfA,EAAO,KAAKF,CAAC,CAErB,CAAC,GApCL,EAsCWP,GAAA,cAAaS,CAAM,CAC9B,CAEA,SAASC,GAAUC,EAAc,CAC7B,GAAIR,IAAY,OAChBA,GAAWD,GAAM,QAAQ,WAAY,KAAK,EAAE,YAAW,EAAG,UAAU,CAAC,EAAE,MAAM,GAAG,EAAE,IAAI,SAACU,EAAC,CAAK,OAAAJ,GAAOI,CAAC,CAAR,CAAS,EACtGT,GAAS,QAAQ,SAACG,EAAMO,EAAK,CACzBT,GAAOC,GAAcC,CAAI,GAAKO,CAClC,CAAC,EAIGZ,GAAA,SAAS,MAAMU,CAAI,IAAM,sEACzB,MAAAR,GAAW,KACL,IAAI,MAAM,uCAAuC,CAE/D,CAEA,IAAAW,GAAA,SAAAC,EAAA,CAAqBC,GAAAF,EAAAC,CAAA,EACjB,SAAAD,GAAA,QACIC,EAAA,KAAA,KAAM,IAAI,GAAC,IACf,CAEA,OAAAD,EAAA,UAAA,QAAA,SAAQD,EAAa,CACjB,OAAAH,GAAU,IAAI,EACPP,GAASU,EACpB,EAEAC,EAAA,UAAA,aAAA,SAAaR,EAAY,CACrB,OAAAI,GAAU,IAAI,EACPN,GAAOC,GAAcC,CAAI,EACpC,EACJQ,CAAA,EAdqBb,GAAA,QAAQ,EAgBvBgB,GAAS,IAAIH,GAGVf,GAAA,OAAAkB,GAFThB,GAAA,SAAS,SAASgB,EAAM,ICzExB,IAAAC,GAAAC,EAAAC,IAAA,kkBAEA,IAAAC,GAAA,KACAC,GAAA,KAEAC,GAAA,KAGMC,GAAO,CAGT,qrEAGA,usGAGA,6uDAGA,qlBAGA,6JAGA,2GAGA,aAIEC,GAAU,8FAEZC,GAA0B,KAE9B,SAASC,GAAIC,EAAY,CACrB,OAtCJ,EAsCWP,GAAA,UAtCX,EAsCmBC,GAAA,aAAYM,CAAI,CAAC,CACpC,CAEA,IAAMC,GAAS,uBACTC,GAAQ,uBAEd,SAASC,GAAUC,EAAc,CAC7B,GAAIN,KAAa,KAAQ,OAEzBA,GAAW,CAAA,EAGX,IAAMO,EAAiD,CAAA,EAGvDA,GArDJ,EAqDcX,GAAA,cAAa,CAAC,IAAK,IAAK,GAAG,CAAC,GAAK,GAC3CW,GAtDJ,EAsDcX,GAAA,cAAa,CAAC,IAAK,IAAK,GAAG,CAAC,GAAK,GAG3CW,GAzDJ,EAyDcX,GAAA,cAAa,CAAC,IAAK,IAAK,GAAG,CAAC,IAzD1C,EAyD+CA,GAAA,cAAa,CAAC,IAAK,IAAK,GAAG,CAAC,EACvEW,GA1DJ,EA0DcX,GAAA,cAAa,CAAC,IAAK,IAAK,GAAG,CAAC,IA1D1C,EA0D+CA,GAAA,cAAa,CAAC,IAAK,IAAK,GAAG,CAAC,EACvEW,GA3DJ,EA2DcX,GAAA,cAAa,CAAC,IAAK,IAAK,GAAG,CAAC,IA3D1C,EA2D+CA,GAAA,cAAa,CAAC,IAAK,IAAK,GAAG,CAAC,EACvEW,GA5DJ,EA4DcX,GAAA,cAAa,CAAC,IAAK,IAAK,GAAG,CAAC,IA5D1C,EA4D+CA,GAAA,cAAa,CAAC,IAAK,IAAK,GAAG,CAAC,EAIvE,SAASY,EAAUN,EAAY,CAE3B,QADIO,EAAS,GACJC,EAAI,EAAGA,EAAIR,EAAK,OAAQQ,IAAK,CAClC,IAAIC,EAAOT,EAAKQ,GACVE,EAASL,EAAUI,GACrBC,IAAW,KACXA,IAAUD,EAAeC,GAC7BH,GAAUE,GAEd,OAAOF,CACX,CAGA,SAASI,EAAaC,EAAWC,EAAS,CAGtC,OAFAD,EAAIN,EAAUM,CAAC,EACfC,EAAIP,EAAUO,CAAC,EACXD,EAAIC,EAAY,GAChBD,EAAIC,EAAY,EACb,CACX,CAGA,QAASC,EAAS,EAAGA,GAAU,EAAGA,IAE9B,QADMC,EAAInB,GAAKkB,EAAS,GACfE,EAAS,EAAGA,EAASD,EAAE,OAAQC,GAAUF,EAAQ,CAEtD,QADMd,EAAO,CAAA,EACJQ,EAAI,EAAGA,EAAIM,EAAQN,IAAK,CAC5B,IAAMS,EAAIpB,GAAQ,QAAQkB,EAAEC,EAASR,EAAE,EACvCR,EAAK,KAAK,GAAG,EACbA,EAAK,KAAMiB,EAAI,GAAQ,IAAK,GAAG,EAC/BjB,EAAK,MAAMiB,EAAI,IAAQ,GAAG,EAE/BnB,GAAS,MAhGrB,EAgG0BJ,GAAA,cAAaM,CAAI,CAAC,EAYxC,GATAF,GAAS,KAAKa,CAAY,EAStBZ,GAAID,GAAS,IAAI,IAAMG,IAAUF,GAAID,GAAS,IAAI,IAAMI,GAAO,CAC/D,IAAMgB,EAAMpB,GAAS,KACrBA,GAAS,KAAOA,GAAS,KACzBA,GAAS,KAAOoB,EAKpB,GAAIvB,GAAA,SAAS,MAAMS,CAAI,IAAM,qEACzB,MAAAN,GAAW,KACL,IAAI,MAAM,yCAAyC,CAEjE,CAEA,IAAAqB,GAAA,SAAAC,EAAA,CAAqBC,GAAAF,EAAAC,CAAA,EACjB,SAAAD,GAAA,QACIC,EAAA,KAAA,KAAM,IAAI,GAAC,IACf,CAEA,OAAAD,EAAA,UAAA,QAAA,SAAQG,EAAa,CACjB,OAAAnB,GAAU,IAAI,EACPL,GAASwB,EACpB,EAEAH,EAAA,UAAA,aAAA,SAAanB,EAAY,CACrB,OAAAG,GAAU,IAAI,EACPL,GAAS,QAAQE,CAAI,CAChC,EAEAmB,EAAA,UAAA,MAAA,SAAMI,EAAgB,CAClB,OAAA5B,GAAA,OAAO,eAAc,EACd4B,EAAS,MAAM,gBAAgB,CAC1C,EAEAJ,EAAA,UAAA,KAAA,SAAKK,EAAoB,CACrB,OAAOA,EAAM,KAAK,QAAQ,CAC9B,EACJL,CAAA,EAvBqBxB,GAAA,QAAQ,EAyBvB8B,GAAS,IAAIN,GAGV3B,GAAA,OAAAiC,GAFT9B,GAAA,SAAS,SAAS8B,EAAM,ICpJxB,IAAAC,GAAAC,EAAAC,IAAA,kkBAEA,IAAAC,GAAA,KAEAC,GAAA,KAGMC,GAAO,CACT,OACA,05JACA,+lIACA,k8BACA,moCACA,0aACA,iHACA,iFAGEC,GAAQ,yEAEd,SAASC,GAAUC,EAAY,CAC3B,OAAIA,GAAQ,GACRA,EAAOA,EAAO,IAAM,GACbA,GAAQ,KACfA,EAAOA,EAAO,GAAK,KAxB3B,EA2BWL,GAAA,cAAa,CAAE,KAAMK,GAAQ,GAAK,KAAMA,EAAO,IAAQ,GAAG,CAAC,CACtE,CAEA,IAAIC,GAA0B,KAE9B,SAASC,GAAUC,EAAc,CAC7B,GAAIF,IAAY,OAEhBA,GAAW,CAAA,EAEXJ,GAAK,QAAQ,SAACA,EAAMO,EAAM,CACtBA,GAAU,EACV,QAASC,EAAI,EAAGA,EAAIR,EAAK,OAAQQ,GAAKD,EAAQ,CAE1C,QADIE,EAAO,GACFC,EAAI,EAAGA,EAAIH,EAAQG,IACxBD,GAAQP,GAAUD,GAAM,QAAQD,EAAKQ,EAAIE,EAAE,CAAC,EAEhDN,GAAS,KAAKK,CAAI,EAE1B,CAAC,EAEDL,GAAS,KAAI,EAITL,GAAA,SAAS,MAAMO,CAAI,IAAM,sEACzB,MAAAF,GAAW,KACL,IAAI,MAAM,uCAAuC,CAE/D,CAGA,IAAAO,GAAA,SAAAC,EAAA,CAAqBC,GAAAF,EAAAC,CAAA,EACjB,SAAAD,GAAA,QACIC,EAAA,KAAA,KAAM,IAAI,GAAC,IACf,CAEA,OAAAD,EAAA,UAAA,QAAA,SAAQG,EAAa,CACjB,OAAAT,GAAU,IAAI,EACPD,GAASU,EACpB,EAEAH,EAAA,UAAA,aAAA,SAAaF,EAAY,CACrB,OAAAJ,GAAU,IAAI,EACPD,GAAS,QAAQK,CAAI,CAChC,EACJE,CAAA,EAdqBZ,GAAA,QAAQ,EAgBvBgB,GAAS,IAAIJ,GAGVd,GAAA,OAAAkB,GAFThB,GAAA,SAAS,SAASgB,EAAM,IC5ExB,IAAAC,GAAAC,EAAAC,IAAA,kkBAEA,IAAAC,GAAA,KAEMC,GAAQ,oqbAEVC,GAA0B,KAE9B,SAASC,GAAUC,EAAc,CAC7B,GAAIF,IAAY,OAChBA,GAAWD,GAAM,QAAQ,WAAY,KAAK,EAAE,YAAW,EAAG,UAAU,CAAC,EAAE,MAAM,GAAG,EAI5ED,GAAA,SAAS,MAAMI,CAAI,IAAM,sEACzB,MAAAF,GAAW,KACL,IAAI,MAAM,wCAAwC,CAEhE,CAEA,IAAAG,GAAA,SAAAC,EAAA,CAAqBC,GAAAF,EAAAC,CAAA,EACjB,SAAAD,GAAA,QACIC,EAAA,KAAA,KAAM,IAAI,GAAC,IACf,CAEA,OAAAD,EAAA,UAAA,QAAA,SAAQG,EAAa,CACjB,OAAAL,GAAU,IAAI,EACPD,GAASM,EACpB,EAEAH,EAAA,UAAA,aAAA,SAAaI,EAAY,CACrB,OAAAN,GAAU,IAAI,EACPD,GAAS,QAAQO,CAAI,CAChC,EACJJ,CAAA,EAdqBL,GAAA,QAAQ,EAgBvBU,GAAS,IAAIL,GAGVN,GAAA,OAAAW,GAFTV,GAAA,SAAS,SAASU,EAAM,ICrCxB,IAAAC,GAAAC,EAAAC,IAAA,glBAEA,IAAAC,GAAA,KAEAC,GAAA,KAGMC,GAAO,mgMACPC,GAAY,8lDAIZC,GAA6C,CAC/C,MAAO,KACP,MAAO,MAGLC,GAAoC,CACtC,MAAO,qEACP,MAAO,sEAGLC,GAAQ,mEACRC,GAAQ,6BAEd,SAASC,GAAUC,EAAc,CAC7B,GAAIL,GAASK,EAAK,UAAY,KAE9B,CAAAL,GAASK,EAAK,QAAU,CAAA,EAGxB,QADIC,EAAc,EACTC,EAAI,EAAGA,EAAI,KAAMA,IAAK,CAC3B,IAAMC,EAAIL,GAAM,QAAQL,GAAKS,EAAI,EAAE,EAC7BE,EAAQ,CACV,KAAOD,GAAK,GACZ,IAAMN,GAAM,QAAQJ,GAAKS,EAAI,EAAI,EAAE,EACnC,IAAML,GAAM,QAAQJ,GAAKS,EAAI,EAAI,EAAE,GAGvC,GAAIF,EAAK,SAAW,QAEhB,QADMK,EAASF,EAAI,EACVG,EAAID,EAAQC,EAAI,EAAGA,IACxBF,EAAME,GAAKT,GAAM,QAAQH,GAAUO,IAAc,GAAMK,GAAK,EAAK,IAAK,KAI9EX,GAASK,EAAK,QAAQ,MA9C9B,EA8CmCT,GAAA,cAAaa,CAAK,CAAC,EAKlD,GAAIZ,GAAA,SAAS,MAAMQ,CAAI,IAAMJ,GAAOI,EAAK,QACrC,MAAAL,GAASK,EAAK,QAAU,KAClB,IAAI,MAAM,sBAAwBA,EAAK,OAAS,mBAAmB,EAEjF,CAEA,IAAAO,GAAA,SAAAC,EAAA,CAAqBC,GAAAF,EAAAC,CAAA,EACjB,SAAAD,EAAYG,EAAe,QACvBF,EAAA,KAAA,KAAM,MAAQE,CAAO,GAAC,IAC1B,CAEA,OAAAH,EAAA,UAAA,QAAA,SAAQI,EAAa,CACjB,OAAAZ,GAAU,IAAI,EACPJ,GAAS,KAAK,QAAQgB,EACjC,EAEAJ,EAAA,UAAA,aAAA,SAAaK,EAAY,CACrB,OAAAb,GAAU,IAAI,EACPJ,GAAS,KAAK,QAAQ,QAAQiB,CAAI,CAC7C,EAEAL,EAAA,UAAA,MAAA,SAAMM,EAAgB,CAClB,OAAAA,EAAWA,EAAS,QAAQ,iBAAkB,EAAE,EACzCA,EAAS,MAAM,EAAE,CAC5B,EACJN,CAAA,EAnBqBf,GAAA,QAAQ,EAqBvBsB,GAAW,IAAIP,GAAO,IAAI,EAOvBjB,GAAA,SAAAwB,GANTtB,GAAA,SAAS,SAASsB,EAAQ,EAC1BtB,GAAA,SAAS,SAASsB,GAAU,IAAI,EAEhC,IAAMC,GAAW,IAAIR,GAAO,IAAI,EAGbjB,GAAA,SAAAyB,GAFnBvB,GAAA,SAAS,SAASuB,EAAQ,qGCjF1B,IAAAC,GAAA,KACAC,GAAA,KACAC,GAAA,KACAC,GAAA,KACAC,GAAA,KACAC,GAAA,KACAC,GAAA,KACAC,GAAA,KAEaC,GAAA,UAA8C,CACvD,GAAIR,GAAA,OACJ,GAAIC,GAAA,OACJ,GAAIC,GAAA,OACJ,GAAIC,GAAA,OACJ,GAAIG,GAAA,OACJ,GAAIF,GAAA,OACJ,GAAIC,GAAA,OACJ,GAAIE,GAAA,SACJ,MAAOA,GAAA,SACP,MAAOA,GAAA,YCrBX,IAAAE,GAAAC,EAAAC,IAAA,0GAKA,IAAAC,GAAA,KAKI,OAAA,eAAAD,GAAA,SAAA,CAAA,WAAA,GAAA,IAAA,UAAA,CAAA,OALKC,GAAA,MAAM,CAAA,CAAA,EAMX,OAAA,eAAAD,GAAA,WAAA,CAAA,WAAA,GAAA,IAAA,UAAA,CAAA,OANaC,GAAA,QAAQ,CAAA,CAAA,EAEzB,IAAAC,GAAA,KAKI,OAAA,eAAAF,GAAA,YAAA,CAAA,WAAA,GAAA,IAAA,UAAA,CAAA,OALKE,GAAA,SAAS,CAAA,CAAA,mGCPLC,GAAA,QAAU,iBCAvB,IAAAC,GAAAC,EAAAC,IAAA,iMAOA,IAAAC,GAAA,KACAC,GAAA,KACAC,GAAA,KACAC,GAAA,KACAC,GAAA,KACAC,GAAA,KACAC,GAAA,KACAC,GAAA,KACAC,GAAA,KACAC,GAAA,KAEAC,GAAA,KACAC,GAAA,KACMC,GAAS,IAAIF,GAAA,OAAOC,GAAA,OAAO,EAE3BE,GAAIX,GAAA,UAAU,KAAK,oEAAoE,EAIvFY,IA1BN,EA0BqBX,GAAA,aAAY,cAAc,EAEzCY,GAAc,WAGpB,SAASC,GAAaC,EAAY,CAC/B,OAAS,GAAKA,GAAQ,GAAO,EAAIA,CACpC,CAGA,SAASC,GAAaD,EAAY,CAC/B,OAAQ,GAAKA,GAAQ,CACxB,CAEA,SAASE,GAAQC,EAA6B,CAC1C,OAzCJ,EAyCWnB,GAAA,aAzCX,EAyCsBA,GAAA,SAAQmB,CAAK,EAAG,EAAE,CACxC,CAEA,SAASC,GAAYC,EAAgB,CACjC,OAAOtB,GAAA,OAAO,QA7ClB,EA6CyBC,GAAA,QAAO,CAAEqB,GA7ClC,EA6CwCrB,GAAA,eA7CxC,EA6CqDM,GAAA,SA7CrD,EA6C4DA,GAAA,QAAOe,CAAI,CAAC,EAAG,EAAG,CAAC,CAAC,CAAE,CAAC,CACnF,CAEA,SAASC,GAAYC,EAA2B,CAC5C,GAAIA,GAAY,KACZ,OAAOf,GAAA,UAAU,GAGrB,GAAI,OAAOe,GAAc,SAAU,CAC/B,IAAMC,EAAQhB,GAAA,UAAUe,GACxB,OAAIC,GAAS,MACTb,GAAO,mBAAmB,iBAAkB,WAAYY,CAAQ,EAE7DC,EAGX,OAAOD,CACX,CAEA,IAAME,GAAyB,CAAA,EAElB3B,GAAA,YAAc,mBAQ3B,IAAA4B,GAAA,UAAA,CAwBI,SAAAA,EAAYC,EAAuBC,EAAoBC,EAAmBC,EAA2BC,EAAmBC,EAAeC,EAAeC,EAAiC,CAEnL,GAAIP,IAAqBF,GACrB,MAAM,IAAI,MAAM,8CAA8C,EAGlE,GAAIG,EAAY,CACZ,IAAMO,EAAa,IAAI9B,GAAA,WAAWuB,CAAU,GAzGxD,EA0GYxB,GAAA,gBAAe,KAAM,aAAc+B,EAAW,UAAU,GA1GpE,EA2GY/B,GAAA,gBAAe,KAAM,YAAa+B,EAAW,mBAAmB,OA3G5E,EA6GY/B,GAAA,gBAAe,KAAM,aAAc,IAAI,GA7GnD,EA8GYA,GAAA,gBAAe,KAAM,aA9GjC,EA8G8CJ,GAAA,SAAQ6B,CAAS,CAAC,GA9GhE,EAiHQzB,GAAA,gBAAe,KAAM,oBAAqB0B,CAAiB,GAjHnE,EAkHQ1B,GAAA,gBAAe,KAAM,eAlH7B,EAkH4CJ,GAAA,eAlH5C,EAkHyDM,GAAA,YAlHzD,EAkHmEA,GAAA,QAAO,KAAK,SAAS,CAAC,EAAG,EAAG,CAAC,CAAC,GAlHjG,EAoHQF,GAAA,gBAAe,KAAM,WApH7B,EAoHwCG,GAAA,gBAAe,KAAK,SAAS,CAAC,GApHtE,EAsHQH,GAAA,gBAAe,KAAM,YAAa2B,CAAS,GAtHnD,EAwHQ3B,GAAA,gBAAe,KAAM,QAAS4B,CAAK,GAxH3C,EAyHQ5B,GAAA,gBAAe,KAAM,QAAS6B,CAAK,EAE/BC,GAAkB,OA3H9B,EA6HY9B,GAAA,gBAAe,KAAM,WAAY,IAAI,GA7HjD,EA8HYA,GAAA,gBAAe,KAAM,OAAQ,IAAI,GAE1B,OAAO8B,GAAoB,WAhI9C,EAkIY9B,GAAA,gBAAe,KAAM,WAAY,IAAI,GAlIjD,EAmIYA,GAAA,gBAAe,KAAM,OAAQ8B,CAAc,KAnIvD,EAuIY9B,GAAA,gBAAe,KAAM,WAAY8B,CAAc,GAvI3D,EAwIY9B,GAAA,gBAAe,KAAM,OAAQ8B,EAAe,IAAI,EAExD,CAEA,cAAA,eAAIR,EAAA,UAAA,cAAW,KAAf,UAAA,CAOI,GAAI,KAAK,OAAS,IAAO,MAAM,IAAI,MAAM,kBAAkB,EAE3D,OAAON,IArJf,EAqJ2BpB,GAAA,QAAO,CACpB,KAAK,YAAc,KAAQ,aAAc,cAtJvD,EAuJYA,GAAA,SAAQ,KAAK,KAAK,EAClB,KAAK,mBAxJjB,EAyJYA,GAAA,aAzJZ,EAyJuBA,GAAA,SAAQ,KAAK,KAAK,EAAG,CAAC,EACjC,KAAK,UACH,KAAK,YAAc,MA3JjC,EA2JyCA,GAAA,QAAO,CAAE,OAAQ,KAAK,UAAU,CAAE,EAAG,KAAK,UAC1E,CAAC,CACN,kCAEA0B,EAAA,UAAA,OAAA,UAAA,CACI,OAAO,IAAIA,EAAOD,GAAmB,KAAM,KAAK,UAAW,KAAK,kBAAmB,KAAK,UAAW,KAAK,MAAO,KAAK,MAAO,KAAK,IAAI,CACxI,EAEQC,EAAA,UAAA,QAAR,SAAgBM,EAAa,CACzB,GAAIA,EAAQ,WAAc,MAAM,IAAI,MAAM,mBAAqB,OAAOA,CAAK,CAAC,EAG5E,IAAII,EAAO,KAAK,KACZA,IAAQA,GAAQ,KAAOJ,EAAQ,CAAClB,KAEpC,IAAMO,EAAO,IAAI,WAAW,EAAE,EAE9B,GAAIW,EAAQlB,GAAa,CACrB,GAAI,CAAC,KAAK,WACN,MAAM,IAAI,MAAM,sCAAsC,EAI1DO,EAAK,KAlLjB,EAkLqBrB,GAAA,UAAS,KAAK,UAAU,EAAG,CAAC,EAGjCoC,IAAQA,GAAQ,UAIpBf,EAAK,KAzLjB,EAyLqBrB,GAAA,UAAS,KAAK,SAAS,CAAC,EAIrC,QAAS,EAAI,GAAI,GAAK,EAAG,GAAK,EAAKqB,EAAK,IAAM,GAAK,IAAQW,GAAU,GAAK,EAAM,IAEhF,IAAMK,GA/Ld,EA+LkBrC,GAAA,WA/LlB,EA+L2BM,GAAA,aAAYA,GAAA,mBAAmB,OAAQ,KAAK,UAAWe,CAAI,CAAC,EACzEiB,EAAKD,EAAE,MAAM,EAAG,EAAE,EAClBE,EAAKF,EAAE,MAAM,EAAE,EAGjBG,EAAa,KAGbC,EAAa,KAEjB,GAAI,KAAK,WACLD,EAAKtB,GAAQjB,GAAA,UAAU,KAAKqC,CAAE,EAAE,IAAI,KAAK,UAAU,EAAE,IAAI1B,EAAC,CAAC,MACxD,CACH,IAAM8B,EAAK,IAAIrC,GAAA,YA5M3B,EA4MsCL,GAAA,SAAQsC,CAAE,CAAC,EACrCG,EAAKC,EAAG,UAAU,KAAK,SAAS,EAGpC,IAAIR,EAAoCE,EAElCO,EAAe,KAAK,SAC1B,OAAIA,IACAT,EAAiB,OAAO,OAAO,CAC3B,OAAQS,EAAY,OACpB,KAAMP,EACN,OAASO,EAAY,QAAU,KAClC,GAGE,IAAIjB,EAAOD,GAAmBe,EAAIC,EAAI,KAAK,YAAavB,GAAQqB,CAAE,EAAGP,EAAO,KAAK,MAAQ,EAAGE,CAAc,CACrH,EAEAR,EAAA,UAAA,WAAA,SAAWU,EAAY,CACnB,IAAMQ,EAAaR,EAAK,MAAM,GAAG,EAEjC,GAAIQ,EAAW,SAAW,GAAMA,EAAW,KAAO,KAAO,KAAK,QAAU,EACpE,MAAM,IAAI,MAAM,kBAAoBR,CAAI,EAGxCQ,EAAW,KAAO,KAAOA,EAAW,MAAK,EAG7C,QADIC,EAAiB,KACZ,EAAI,EAAG,EAAID,EAAW,OAAQ,IAAK,CACxC,IAAME,EAAYF,EAAW,GAC7B,GAAIE,EAAU,MAAM,WAAW,EAAG,CAC9B,IAAMd,EAAQ,SAASc,EAAU,UAAU,EAAGA,EAAU,OAAS,CAAC,CAAC,EACnE,GAAId,GAASlB,GAAe,MAAM,IAAI,MAAM,wBAA0BgC,CAAS,EAC/ED,EAASA,EAAO,QAAQ/B,GAAckB,CAAK,UACpCc,EAAU,MAAM,UAAU,EAAG,CACpC,IAAMd,EAAQ,SAASc,CAAS,EAChC,GAAId,GAASlB,GAAe,MAAM,IAAI,MAAM,wBAA0BgC,CAAS,EAC/ED,EAASA,EAAO,QAAQb,CAAK,MAE7B,OAAM,IAAI,MAAM,4BAA8Bc,CAAS,EAI/D,OAAOD,CACX,EAGOnB,EAAA,UAAP,SAAiBqB,EAAiBC,EAAkB,CAChD,IAAMC,GA5Pd,EA4PsCjD,GAAA,UAAS+C,CAAI,EAC3C,GAAIE,EAAU,OAAS,IAAMA,EAAU,OAAS,GAAM,MAAM,IAAI,MAAM,cAAc,EAEpF,IAAMZ,GA/Pd,EA+P8BrC,GAAA,WA/P9B,EA+PuCM,GAAA,aAAYA,GAAA,mBAAmB,OAAQO,GAAcoC,CAAS,CAAC,EAE9F,OAAO,IAAIvB,EAAOD,GAAmBP,GAAQmB,EAAE,MAAM,EAAG,EAAE,CAAC,EAAG,KAAM,aAAcnB,GAAQmB,EAAE,MAAM,EAAE,CAAC,EAAG,EAAG,EAAGW,CAAQ,CAC1H,EAEOtB,EAAA,aAAP,SAAoBsB,EAAkBE,EAAmB3B,EAA4B,CAGjF,OAAAA,EAAWD,GAAYC,CAAQ,EAG/ByB,EAAWG,GAAkBC,GAAkBJ,EAAUzB,CAAQ,EAAGA,CAAQ,EAErEG,EAAO,UAAU2B,GAAeL,EAAUE,CAAQ,EAAG,CACxD,OAAQF,EACR,KAAM,IACN,OAAQzB,EAAS,OACpB,CACL,EAEOG,EAAA,SAAP,SAAgBqB,EAAe,CAC3B,OAAOrB,EAAO,UAAUqB,EAAM,IAAI,CACtC,EAEOrB,EAAA,gBAAP,SAAuB4B,EAAmB,CACtC,IAAMC,EAAQxD,GAAA,OAAO,OAAOuD,CAAW,GAEnCC,EAAM,SAAW,IAAMnC,GAAYmC,EAAM,MAAM,EAAG,EAAE,CAAC,IAAMD,IAC3D3C,GAAO,mBAAmB,uBAAwB,cAAe,YAAY,EAGjF,IAAMsB,EAAQsB,EAAM,GACdzB,GA/Rd,EA+RkC9B,GAAA,SAAQuD,EAAM,MAAM,EAAG,CAAC,CAAC,EAC7CvB,EAAQ,UAhStB,EAgS+BhC,GAAA,SAAQuD,EAAM,MAAM,EAAG,EAAE,CAAC,EAAE,UAAU,CAAC,EAAG,EAAE,EAC7DxB,GAjSd,EAiS0B/B,GAAA,SAAQuD,EAAM,MAAM,GAAI,EAAE,CAAC,EACvCC,EAAMD,EAAM,MAAM,GAAI,EAAE,EAE9B,QApSR,EAoSgBvD,GAAA,SAAQuD,EAAM,MAAM,EAAG,CAAC,CAAC,EAAG,CAEhC,IAAK,aAAc,IAAK,aACpB,OAAO,IAAI7B,EAAOD,GAAmB,MAvSrD,EAuS2DzB,GAAA,SAAQwD,CAAG,EAAG1B,EAAmBC,EAAWC,EAAOC,EAAO,IAAI,EAG7G,IAAK,aAAc,IAAK,cACpB,GAAIuB,EAAI,KAAO,EAAK,MACpB,OAAO,IAAI9B,EAAOD,IA5SlC,EA4SqDzB,GAAA,SAAQwD,EAAI,MAAM,CAAC,CAAC,EAAG,KAAM1B,EAAmBC,EAAWC,EAAOC,EAAO,IAAI,EAG1H,OAAOtB,GAAO,mBAAmB,uBAAwB,cAAe,YAAY,CACxF,EACJe,CAAA,EAvOA,EAAa5B,GAAA,OAAA4B,GAyOb,SAAgB2B,GAAeL,EAAkBE,EAAiB,CACzDA,IAAYA,EAAW,IAE5B,IAAMO,GAtTV,EAsTiBvD,GAAA,aAAY,WAAagD,EAAUhD,GAAA,yBAAyB,IAAI,EAE7E,OAxTJ,EAwTWC,GAAA,SAxTX,EAwTkBD,GAAA,aAAY8C,EAAU9C,GAAA,yBAAyB,IAAI,EAAGuD,EAAM,KAAM,GAAI,QAAQ,CAChG,CANA3D,GAAA,eAAAuD,GAQA,SAAgBD,GAAkBJ,EAAkBzB,EAA4B,CAC5EA,EAAWD,GAAYC,CAAQ,EAE/BZ,GAAO,eAAc,EAErB,IAAMa,EAAQD,EAAS,MAAMyB,CAAQ,EACrC,GAAKxB,EAAM,OAAS,IAAO,EAAK,MAAM,IAAI,MAAM,kBAAkB,EAKlE,QAHMkC,GAnUV,EAmUoB1D,GAAA,UAAS,IAAI,WAAW,KAAK,KAAK,GAAKwB,EAAM,OAAS,CAAC,CAAC,CAAC,EAErEmC,EAAS,EACJC,EAAI,EAAGA,EAAIpC,EAAM,OAAQoC,IAAK,CACnC,IAAI5B,EAAQT,EAAS,aAAaC,EAAMoC,GAAG,UAAU,MAAM,CAAC,EAC5D,GAAI5B,IAAU,GAAM,MAAM,IAAI,MAAM,kBAAkB,EAEtD,QAAS6B,EAAM,EAAGA,EAAM,GAAIA,IACpB7B,EAAS,GAAM,GAAK6B,IACpBH,EAAQC,GAAU,IAAO,GAAM,EAAKA,EAAS,GAEjDA,IAIR,IAAMG,EAAc,GAAKtC,EAAM,OAAS,EAElCuC,EAAevC,EAAM,OAAS,EAC9BwC,EAAejD,GAAagD,CAAY,EAExCE,GAvVV,EAuVqBjE,GAAA,WAvVrB,EAuV8BM,GAAA,QAAOoD,EAAQ,MAAM,EAAGI,EAAc,CAAC,CAAC,CAAC,EAAE,GAAKE,EAE1E,GAAIC,KAAcP,EAAQA,EAAQ,OAAS,GAAKM,GAC5C,MAAM,IAAI,MAAM,kBAAkB,EAGtC,OA7VJ,EA6VWhE,GAAA,SAAQ0D,EAAQ,MAAM,EAAGI,EAAc,CAAC,CAAC,CACpD,CAnCAhE,GAAA,kBAAAsD,GAqCA,SAAgBD,GAAkBO,EAAoBnC,EAA4B,CAK9E,GAJAA,EAAWD,GAAYC,CAAQ,EAE/BmC,GAnWJ,EAmWc1D,GAAA,UAAS0D,CAAO,EAErBA,EAAQ,OAAS,IAAO,GAAKA,EAAQ,OAAS,IAAMA,EAAQ,OAAS,GACtE,MAAM,IAAI,MAAM,iBAAiB,EAMrC,QAHMQ,EAAyB,CAAE,CAAC,EAE9BC,EAAgB,GACX,EAAI,EAAG,EAAIT,EAAQ,OAAQ,IAG5BS,EAAgB,GAChBD,EAAQA,EAAQ,OAAS,KAAO,EAChCA,EAAQA,EAAQ,OAAS,IAAMR,EAAQ,GAEvCS,GAAiB,IAIjBD,EAAQA,EAAQ,OAAS,KAAOC,EAChCD,EAAQA,EAAQ,OAAS,IAAMR,EAAQ,IAAO,EAAIS,EAGlDD,EAAQ,KAAKR,EAAQ,GAAKzC,GAAa,EAAIkD,CAAa,CAAC,EAEzDA,GAAiB,GAKzB,IAAMJ,EAAeL,EAAQ,OAAS,EAChCO,GAnYV,EAmYqBjE,GAAA,WAnYrB,EAmY8BM,GAAA,QAAOoD,CAAO,CAAC,EAAE,GAAK3C,GAAagD,CAAY,EAGzE,OAAAG,EAAQA,EAAQ,OAAS,KAAOH,EAChCG,EAAQA,EAAQ,OAAS,IAAOD,GAAa,EAAIF,EAE1CxC,EAAS,KAAK2C,EAAQ,IAAI,SAAClC,EAAK,CAAK,OAAWT,EAAU,QAAQS,CAAK,CAAlC,CAAmC,CAAC,CACpF,CA1CAlC,GAAA,kBAAAqD,GA4CA,SAAgBiB,GAAgBpB,EAAkBzB,EAAmB,CACjE,GAAI,CACA,OAAA6B,GAAkBJ,EAAUzB,CAAQ,EAC7B,QACT,CAAc,CAChB,MAAO,EACX,CANAzB,GAAA,gBAAAsE,GAQA,SAAgBC,GAAerC,EAAa,CACxC,OAAI,OAAOA,GAAW,UAAYA,EAAQ,GAAKA,GAASlB,IAAekB,EAAQ,IAC3ErB,GAAO,mBAAmB,wBAAyB,QAASqB,CAAK,EAE9D,aAAcA,EAAK,OAC9B,CALAlC,GAAA,eAAAuE,wGCpZA,IAAAC,GAAA,QAAA,UAEAC,GAAA,KAEA,SAAgBC,GAAYC,EAAc,CACtC,SAAOF,GAAA,aAASD,GAAA,aAAaG,CAAM,CAAC,CACxC,CAFAC,GAAA,YAAAF,KCJA,IAAAG,GAAAC,EAAAC,IAAA,mFAEA,SAAgBC,GAASC,EAAiB,CACtCA,EAAQA,EAAM,MAAK,EAEnB,QAASC,EAAID,EAAM,OAAS,EAAGC,EAAI,EAAGA,IAAK,CACvC,IAAMC,EAAI,KAAK,MAAM,KAAK,OAAM,GAAMD,EAAI,EAAE,EACtCE,EAAMH,EAAMC,GAClBD,EAAMC,GAAKD,EAAME,GACjBF,EAAME,GAAKC,EAGf,OAAOH,CACX,CAXAF,GAAA,SAAAC,KCFA,IAAAK,GAAAC,EAAAC,IAAA,kGAEA,IAAAC,GAAA,KAAS,OAAA,eAAAD,GAAA,cAAA,CAAA,WAAA,GAAA,IAAA,UAAA,CAAA,OAAAC,GAAA,WAAW,CAAA,CAAA,EACpB,IAAAC,GAAA,KAAS,OAAA,eAAAF,GAAA,WAAA,CAAA,WAAA,GAAA,IAAA,UAAA,CAAA,OAAAE,GAAA,QAAQ,CAAA,CAAA,ICHjB,IAAAC,GAAAC,EAAA,CAAAC,GAAAC,KAAA,eAEC,SAASC,EAAM,CAEZ,SAASC,EAASC,EAAO,CACrB,OAAQ,SAASA,CAAK,IAAMA,CAChC,CAEA,SAASC,EAAUC,EAAU,CACzB,GAAI,CAACH,EAASG,EAAS,MAAM,EAAK,MAAO,GAEzC,QAASC,EAAI,EAAGA,EAAID,EAAS,OAAQC,IACjC,GAAI,CAACJ,EAASG,EAASC,EAAE,GAAKD,EAASC,GAAK,GAAKD,EAASC,GAAK,IAC3D,MAAO,GAIf,MAAO,EACX,CAEA,SAASC,EAAYC,EAAKC,EAAM,CAG5B,GAAID,EAAI,QAAU,YAAY,OAAOA,CAAG,GAAKA,EAAI,OAAS,aAEtD,OAAIC,IACID,EAAI,MACJA,EAAMA,EAAI,MAAM,EAEhBA,EAAM,MAAM,UAAU,MAAM,KAAKA,CAAG,GAIrCA,EAIX,GAAI,MAAM,QAAQA,CAAG,EAAG,CACpB,GAAI,CAACJ,EAAUI,CAAG,EACd,MAAM,IAAI,MAAM,iCAAmCA,CAAG,EAG1D,OAAO,IAAI,WAAWA,CAAG,CAC7B,CAGA,GAAIN,EAASM,EAAI,MAAM,GAAKJ,EAAUI,CAAG,EACrC,OAAO,IAAI,WAAWA,CAAG,EAG7B,MAAM,IAAI,MAAM,+BAA+B,CACnD,CAEA,SAASE,EAAYC,EAAQ,CACzB,OAAO,IAAI,WAAWA,CAAM,CAChC,CAEA,SAASC,EAAUC,EAAaC,EAAaC,EAAaC,EAAaC,EAAW,EAC1ED,GAAe,MAAQC,GAAa,QAChCJ,EAAY,MACZA,EAAcA,EAAY,MAAMG,EAAaC,CAAS,EAEtDJ,EAAc,MAAM,UAAU,MAAM,KAAKA,EAAaG,EAAaC,CAAS,GAGpFH,EAAY,IAAID,EAAaE,CAAW,CAC5C,CAIA,IAAIG,EAAe,UAAW,CAC1B,SAASC,EAAQC,EAAM,CACnB,IAAIC,EAAS,CAAC,EAAGf,EAAI,EAErB,IADAc,EAAO,UAAUA,CAAI,EACdd,EAAIc,EAAK,QAAQ,CACpB,IAAIE,EAAIF,EAAK,WAAWd,GAAG,EAGvBgB,IAAM,IACND,EAAO,KAAK,SAASD,EAAK,OAAOd,EAAG,CAAC,EAAG,EAAE,CAAC,EAC3CA,GAAK,GAILe,EAAO,KAAKC,CAAC,CAErB,CAEA,OAAOf,EAAYc,CAAM,CAC7B,CAEA,SAASE,EAAUC,EAAO,CAGtB,QAFIH,EAAS,CAAC,EAAGf,EAAI,EAEdA,EAAIkB,EAAM,QAAQ,CACrB,IAAIF,EAAIE,EAAMlB,GAEVgB,EAAI,KACJD,EAAO,KAAK,OAAO,aAAaC,CAAC,CAAC,EAClChB,KACOgB,EAAI,KAAOA,EAAI,KACtBD,EAAO,KAAK,OAAO,cAAeC,EAAI,KAAS,EAAME,EAAMlB,EAAI,GAAK,EAAK,CAAC,EAC1EA,GAAK,IAELe,EAAO,KAAK,OAAO,cAAeC,EAAI,KAAS,IAAQE,EAAMlB,EAAI,GAAK,KAAS,EAAMkB,EAAMlB,EAAI,GAAK,EAAK,CAAC,EAC1GA,GAAK,EAEb,CAEA,OAAOe,EAAO,KAAK,EAAE,CACzB,CAEA,MAAO,CACH,QAASF,EACT,UAAWI,CACf,CACJ,EAAG,EAECE,EAAc,UAAW,CACzB,SAASN,EAAQC,EAAM,CAEnB,QADIC,EAAS,CAAC,EACLf,EAAI,EAAGA,EAAIc,EAAK,OAAQd,GAAK,EAClCe,EAAO,KAAK,SAASD,EAAK,OAAOd,EAAG,CAAC,EAAG,EAAE,CAAC,EAG/C,OAAOe,CACX,CAGA,IAAIK,EAAM,mBAEV,SAASH,EAAUC,EAAO,CAElB,QADIH,EAAS,CAAC,EACLf,EAAI,EAAGA,EAAIkB,EAAM,OAAQlB,IAAK,CACnC,IAAIqB,EAAIH,EAAMlB,GACde,EAAO,KAAKK,GAAKC,EAAI,MAAS,GAAKD,EAAIC,EAAI,GAAK,CACpD,CACA,OAAON,EAAO,KAAK,EAAE,CAC7B,CAEA,MAAO,CACH,QAASF,EACT,UAAWI,CACf,CACJ,EAAG,EAICK,EAAiB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,EAGxCC,EAAO,CAAC,EAAM,EAAM,EAAM,EAAM,GAAM,GAAM,GAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAI,EAG1LC,EAAI,CAAC,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,EAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,GAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,EAAM,IAAM,GAAM,IAAM,GAAM,IAAM,EAAM,IAAM,EAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,EAAM,IAAM,GAAM,GAAM,GAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,GAAM,IAAM,EAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,GAAM,GAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,GAAM,IAAM,GAAM,IAAM,EAAM,IAAM,GAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,GAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,IAAM,GAAM,GAAM,GAAM,GAAM,EAAM,GAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,EAAM,IAAM,IAAM,GAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,EAAM,IAAM,GAAM,GAAM,GAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,GAAM,IAAM,EAAI,EACngDC,EAAI,CAAC,GAAM,EAAM,IAAM,IAAM,GAAM,GAAM,IAAM,GAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,GAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,IAAM,GAAM,EAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,EAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,EAAM,IAAM,IAAM,GAAM,EAAM,IAAM,GAAM,GAAM,IAAM,IAAM,GAAM,GAAM,EAAM,IAAM,IAAM,IAAM,EAAM,EAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,IAAM,GAAM,IAAM,GAAM,IAAM,GAAM,GAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,EAAM,IAAM,GAAM,IAAM,GAAM,GAAM,GAAM,GAAM,IAAM,IAAM,GAAM,GAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,GAAM,GAAM,GAAM,EAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,GAAM,GAAM,GAAM,GAAM,GAAI,EAGngDC,EAAK,CAAC,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,EAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,SAAU,EACpgGC,EAAK,CAAC,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,EAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,SAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,SAAU,EACpgGC,EAAK,CAAC,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,SAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,SAAY,WAAY,UAAY,WAAY,UAAY,WAAY,SAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,EAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,SAAU,EACpgGC,EAAK,CAAC,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,SAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,SAAY,WAAY,UAAY,WAAY,UAAY,WAAY,SAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,EAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,SAAU,EAGpgGC,EAAK,CAAC,WAAY,WAAY,UAAY,UAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,SAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,EAAY,UAAY,UAAY,UAAY,WAAY,WAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAU,EACpgGC,EAAK,CAAC,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,EAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,UAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,SAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,SAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAU,EACpgGC,EAAK,CAAC,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,SAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,EAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAU,EACpgGC,EAAK,CAAC,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,SAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,SAAY,WAAY,SAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,SAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,EAAY,WAAY,UAAY,UAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAU,EAGpgGC,EAAK,CAAC,EAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,SAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,SAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,UAAY,WAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,SAAY,UAAY,UAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,SAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,UAAY,UAAY,SAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAU,EACpgGC,EAAK,CAAC,EAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,UAAY,SAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,SAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,SAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,UAAY,SAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAU,EACpgGC,EAAK,CAAC,EAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,UAAY,UAAY,UAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,SAAY,UAAY,UAAY,WAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,SAAY,UAAY,UAAY,WAAY,UAAY,UAAY,UAAY,UAAY,SAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAU,EACpgGC,EAAK,CAAC,EAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,UAAY,UAAY,UAAY,UAAY,SAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,UAAY,UAAY,UAAY,SAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,SAAY,UAAY,UAAY,UAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,UA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", + "names": ["require_finish", "__commonJSMin", "exports", "module", "item", "transform", "details", "resolve", "reject", "finished", "done", "err", "require_response", "__commonJSMin", "exports", "module", "http", "headerEnd", "BODY", "HEADERS", "getString", "data", "addData", "stream", "ServerlessResponse", "res", "response", "headers", "key", "value", "statusCode", "reason", "obj", "name", "method", "encoding", "cb", "string", "index", "remainder", "require_get_framework", "__commonJSMin", "exports", "module", "http", "Response", "common", "cb", "request", "response", "app", "req", "res", "url", "method", "headers", "body", "require_clean_up_event", "__commonJSMin", "exports", "module", "removeBasePath", "path", "basePath", "basePathIndex", "isString", "value", "specialDecodeURIComponent", "decoded", "recursiveURLDecode", "decodedArray", "index", "decodedObject", "key", "evt", "options", "event", "require_request", "__commonJSMin", "exports", "module", "http", "method", "url", "headers", "body", "remoteAddress", "require_create_request", "__commonJSMin", "exports", "module", "URL", "Request", "requestMethod", "event", "requestRemoteAddress", "requestHeaders", "initialHeader", "headers", "key", "requestBody", "type", "requestUrl", "query", "context", "options", "method", "remoteAddress", "body", "url", "header", "requestId", "req", "require_is_binary", "__commonJSMin", "exports", "module", "BINARY_ENCODINGS", "BINARY_CONTENT_TYPES", "isBinaryEncoding", "headers", "contentEncoding", "value", "binaryEncoding", "isBinaryContent", "options", "contentTypes", "candidate", "contentType", "require_sanitize_headers", "__commonJSMin", "exports", "module", "headers", "memo", "key", "value", "require_format_response", "__commonJSMin", "exports", "module", "isBinary", "Response", "sanitizeHeaders", "event", "response", "options", "statusCode", "headers", "multiValueHeaders", "cookies", "isBase64Encoded", "encoding", "body", "raw", "parsed", "i", "size", "value", "formattedResponse", "require_aws", "__commonJSMin", "exports", "module", "cleanUpEvent", "createRequest", "formatResponse", "options", "getResponse", "event_", "context", "event", "request", "response", "require_clean_up_request", "__commonJSMin", "exports", "module", "getUrl", "requestPath", "url", "getRequestContext", "request", "requestContext", "forwardedIp", "clientIp", "ip", "req", "options", "basePathIndex", "require_create_request", "__commonJSMin", "exports", "module", "url", "Request", "requestHeaders", "request", "headers", "key", "requestBody", "type", "method", "query", "body", "req", "require_is_binary", "__commonJSMin", "exports", "module", "BINARY_ENCODINGS", "BINARY_CONTENT_TYPES", "isBinaryEncoding", "headers", "contentEncoding", "value", "binaryEncoding", "isBinaryContent", "options", "contentTypes", "candidate", "contentType", "require_sanitize_headers", "__commonJSMin", "exports", "module", "setCookieVariations", "headers", "memo", "key", "value", "cookie", "i", "require_format_response", "__commonJSMin", "exports", "module", "isBinary", "Response", "sanitizeHeaders", "response", "options", "statusCode", "headers", "isBase64Encoded", "encoding", "body", "require_azure", "__commonJSMin", "exports", "module", "cleanupRequest", "createRequest", "formatResponse", "options", "getResponse", "context", "req", "event", "request", "response", "require_get_provider", "__commonJSMin", "exports", "module", "aws", "azure", "providers", "options", "provider", "require_serverless_http", "__commonJSMin", "exports", "module", "finish", "getFramework", "getProvider", "defaultOptions", "app", "opts", "options", "framework", "request", "context", "response", "require_depd", "__commonJSMin", "exports", "module", "relative", "depd", "basePath", "containsNamespace", "str", "namespace", "vals", "ns", "val", "convertDataDescriptorToAccessor", "obj", "prop", "message", "descriptor", "value", "createArgumentsString", "arity", "i", "createStackString", "stack", "getStack", "site", "callSiteLocation", "file", "deprecate", "log", "isignored", "istraced", "wrapfunction", "wrapproperty", "eehaslisteners", "emitter", "type", "count", "haslisteners", "caller", "callFile", "callSite", "depSite", "seen", "key", "msg", "defaultMessage", "err", "DeprecationError", "format", "formatColor", "formatPlain", "output", "line", "colm", "funcName", "formatLocation", "context", "typeName", "timestamp", "formatted", "limit", "prep", "prepareObjectStackTrace", "fn", "args", "deprecatedfn", "get", "set", "error", "stackString", "require_bytes", "__commonJSMin", "exports", "module", "bytes", "format", "parse", "formatThousandsRegExp", "formatDecimalsRegExp", "map", "parseRegExp", "value", "options", "mag", "thousandsSeparator", "unitSeparator", "decimalPlaces", "fixedDecimals", "unit", "val", "str", "s", "i", "results", "floatValue", "require_content_type", "__commonJSMin", "exports", "PARAM_REGEXP", "TEXT_REGEXP", "TOKEN_REGEXP", "QESC_REGEXP", "QUOTE_REGEXP", "TYPE_REGEXP", "format", "parse", "obj", "parameters", "type", "string", "param", "params", "i", "qstring", "header", "getcontenttype", "index", "ContentType", "key", "match", "value", "val", "str", "require_setprototypeof", "__commonJSMin", "exports", "module", "setProtoOf", "mixinProperties", "obj", "proto", "prop", "require_statuses", "__commonJSMin", "exports", "module", "codes", "status", "createMessageToStatusCodeMap", "createStatusCodeList", "map", "code", "message", "getStatusCode", "msg", "getStatusMessage", "n", "require_inherits_browser", "__commonJSMin", "exports", "module", "ctor", "superCtor", "TempCtor", "require_inherits", "__commonJSMin", "exports", "module", "util", "require_toidentifier", "__commonJSMin", "exports", "module", "toIdentifier", "str", "token", "require_http_errors", "__commonJSMin", "exports", "module", "deprecate", "setPrototypeOf", "statuses", "inherits", "toIdentifier", "createError", "createHttpErrorConstructor", "createIsHttpErrorFunction", "populateConstructorExports", "codeClass", "status", "err", "msg", "props", "arg", "type", "HttpError", "key", "createClientErrorConstructor", "name", "code", "className", "toClassName", "ClientError", "message", "nameFunc", "val", "createServerErrorConstructor", "ServerError", "func", "desc", "codes", "CodeError", "require_ms", "__commonJSMin", "exports", "module", "s", "m", "h", "d", "y", "val", "options", "type", "parse", "fmtLong", "fmtShort", "str", "match", "n", "ms", "plural", "name", "require_debug", "__commonJSMin", "exports", "module", "createDebug", "coerce", "disable", "enable", "enabled", "prevTime", "selectColor", "namespace", "hash", "i", "debug", "self", "curr", "ms", "args", "index", "match", "format", "formatter", "val", "logFn", "namespaces", "split", "len", "name", "require_browser", "__commonJSMin", "exports", "module", "log", "formatArgs", "save", "load", "useColors", "localstorage", "v", "err", "args", "c", "index", "lastC", "match", "namespaces", "r", "require_node", "__commonJSMin", "exports", "module", "tty", "util", "init", "log", "formatArgs", "save", "load", "useColors", "key", "obj", "prop", "_", "k", "val", "fd", "stream", "createWritableStdioStream", "v", "str", "args", "name", "c", "prefix", "namespaces", "tty_wrap", "fs", "net", "debug", "keys", "i", "require_src", "__commonJSMin", "exports", "module", "require_destroy", "__commonJSMin", "exports", "module", "EventEmitter", "ReadStream", "Stream", "Zlib", "destroy", "stream", "suppress", "isFsReadStream", "destroyReadStream", "isZlibStream", "destroyZlibStream", "hasDestroy", "isEventEmitter", "noop", "onOpenClose", "closeZlibStream", "prop", "onDrainClearBinding", "val", "require_safer", "__commonJSMin", "exports", "module", "buffer", "Buffer", "safer", "key", "Safer", "value", "encodingOrOffset", "length", "size", "fill", "encoding", "buf", "require_bom_handling", "__commonJSMin", "exports", "BOMChar", "PrependBOMWrapper", "encoder", "options", "str", "StripBOMWrapper", "decoder", "buf", "res", "require_internal", "__commonJSMin", "exports", "module", "Buffer", "InternalCodec", "codecOptions", "iconv", "InternalEncoderBase64", "InternalEncoderCesu8", "InternalDecoderCesu8", "InternalEncoder", "InternalDecoder", "StringDecoder", "options", "codec", "str", "completeQuads", "buf", "bufIdx", "i", "charCode", "acc", "contBytes", "accBytes", "res", "curByte", "require_utf16", "__commonJSMin", "exports", "Buffer", "Utf16BECodec", "Utf16BEEncoder", "Utf16BEDecoder", "str", "buf", "i", "tmp", "buf2", "j", "Utf16Codec", "codecOptions", "iconv", "Utf16Encoder", "Utf16Decoder", "options", "codec", "encoding", "detectEncoding", "res", "trail", "defaultEncoding", "enc", "asciiCharsLE", "asciiCharsBE", "_len", "require_utf7", "__commonJSMin", "exports", "Buffer", "Utf7Codec", "codecOptions", "iconv", "Utf7Encoder", "Utf7Decoder", "nonDirectChars", "options", "codec", "str", "chunk", "base64Regex", "base64Chars", "i", "plusChar", "minusChar", "andChar", "buf", "res", "lastI", "inBase64", "base64Accum", "b64str", "canBeDecoded", "Utf7IMAPCodec", "Utf7IMAPEncoder", "Utf7IMAPDecoder", "base64AccumIdx", "bufIdx", "uChar", "base64IMAPChars", "require_sbcs_codec", "__commonJSMin", "exports", "Buffer", "SBCSCodec", "codecOptions", "iconv", "asciiString", "i", "encodeBuf", "SBCSEncoder", "SBCSDecoder", "options", "codec", "str", "buf", "decodeBuf", "newBuf", "idx1", "idx2", "require_sbcs_data", "__commonJSMin", "exports", "module", "require_sbcs_data_generated", "__commonJSMin", "exports", "module", "require_dbcs_codec", "__commonJSMin", "exports", "Buffer", "DBCSCodec", "UNASSIGNED", "GB18030_CODE", "SEQ_START", "NODE_START", "UNASSIGNED_NODE", "DEF_CHAR", "i", "codecOptions", "iconv", "mappingTable", "skipEncodeChars", "val", "j", "uChar", "thirdByteNodeIdx", "thirdByteNode", "fourthByteNodeIdx", "fourthByteNode", "secondByteNodeIdx", "secondByteNode", "DBCSEncoder", "DBCSDecoder", "addr", "bytes", "node", "chunk", "curAddr", "writeTable", "k", "part", "l", "code", "codeTrail", "len", "seq", "m", "charCode", "uCode", "high", "dbcsCode", "bucket", "low", "oldVal", "nodeIdx", "prefix", "mbCode", "options", "codec", "str", "newBuf", "leadSurrogate", "seqObj", "nextChar", "resCode", "subtable", "idx", "findIdx", "buf", "prevBuf", "prevBufOffset", "seqStart", "curByte", "curSeq", "ptr", "uCodeLead", "ret", "table", "r", "mid", "require_dbcs_data", "__commonJSMin", "exports", "module", "require_encodings", "__commonJSMin", "exports", "module", "modules", "i", "enc", "require_streams", "__commonJSMin", "exports", "module", "Buffer", "Transform", "iconv", "encoding", "options", "IconvLiteEncoderStream", "IconvLiteDecoderStream", "conv", "chunk", "done", "res", "e", "cb", "chunks", "require_extend_node", "__commonJSMin", "exports", "module", "Buffer", "iconv", "original", "nodeNativeEncodings", "enc", "SlowBuffer", "encoding", "start", "end", "string", "offset", "length", "swap", "remaining", "buf", "str", "_offset", "_length", "_encoding", "Readable", "options", "require_lib", "__commonJSMin", "exports", "module", "Buffer", "bomHandling", "iconv", "str", "encoding", "options", "encoder", "res", "trail", "buf", "decoder", "enc", "codecOptions", "codec", "codecDef", "key", "nodeVer", "nodeVerArr", "require_unpipe", "__commonJSMin", "exports", "module", "unpipe", "hasPipeDataListeners", "stream", "listeners", "i", "listener", "require_raw_body", "__commonJSMin", "exports", "module", "asyncHooks", "tryRequireAsyncHooks", "bytes", "createError", "iconv", "unpipe", "getRawBody", "ICONV_ENCODING_MESSAGE_REGEXP", "getDecoder", "encoding", "stream", "options", "callback", "done", "opts", "limit", "length", "readStream", "wrap", "resolve", "reject", "err", "buf", "halt", "complete", "sync", "state", "received", "decoder", "buffer", "onAborted", "cleanup", "onData", "onEnd", "args", "i", "invokeCallback", "chunk", "string", "fn", "res", "require_ee_first", "__commonJSMin", "exports", "module", "first", "stuff", "done", "cleanups", "i", "arr", "ee", "j", "event", "fn", "listener", "callback", "cleanup", "x", "thunk", "arg1", "args", "err", "require_on_finished", "__commonJSMin", "exports", "module", "onFinished", "isFinished", "asyncHooks", "tryRequireAsyncHooks", "first", "defer", "fn", "msg", "listener", "attachListener", "wrap", "socket", "attachFinishedListener", "callback", "eeMsg", "eeSocket", "finished", "onFinish", "error", "onSocket", "patchAssignSocket", "attached", "createListener", "err", "queue", "res", "assignSocket", "require_read", "__commonJSMin", "exports", "module", "createError", "destroy", "getBody", "iconv", "onFinished", "unpipe", "zlib", "read", "req", "res", "next", "parse", "debug", "options", "length", "opts", "stream", "encoding", "verify", "contentstream", "err", "error", "body", "_error", "dump", "str", "inflate", "callback", "require_media_typer", "__commonJSMin", "exports", "paramRegExp", "textRegExp", "tokenRegExp", "qescRegExp", "quoteRegExp", "subtypeNameRegExp", "typeNameRegExp", "typeRegExp", "format", "parse", "obj", "parameters", "subtype", "suffix", "type", "string", "param", "params", "i", "qstring", "getcontenttype", "index", "key", "match", "splitType", "value", "val", "str", "require_mime_db", "__commonJSMin", "exports", "module", "require_mime_types", "__commonJSMin", "exports", "db", "extname", "EXTRACT_TYPE_REGEXP", "TEXT_TYPE_REGEXP", "charset", "contentType", "extension", "lookup", "populateMaps", "type", "match", "mime", "str", "exts", "path", "extensions", "types", "preference", "i", "from", "to", "require_type_is", "__commonJSMin", "exports", "module", "typer", "mime", "typeofrequest", "typeis", "hasbody", "normalize", "mimeMatch", "value", "types_", "i", "types", "val", "tryNormalizeType", "type", "req", "expected", "actual", "actualParts", "expectedParts", "normalizeType", "require_json", "__commonJSMin", "exports", "module", "bytes", "contentType", "createError", "debug", "read", "typeis", "json", "FIRST_CHAR_REGEXP", "options", "opts", "limit", "inflate", "reviver", "strict", "type", "verify", "shouldParse", "typeChecker", "parse", "body", "first", "firstchar", "createStrictSyntaxError", "e", "normalizeJsonSyntaxError", "req", "res", "next", "charset", "getCharset", "str", "char", "index", "partial", "match", "error", "obj", "keys", "i", "key", "require_raw", "__commonJSMin", "exports", "module", "bytes", "debug", "read", "typeis", "raw", "options", "opts", "inflate", "limit", "type", "verify", "shouldParse", "typeChecker", "parse", "buf", "req", "res", "next", "require_text", "__commonJSMin", "exports", "module", "bytes", "contentType", "debug", "read", "typeis", "text", "options", "opts", "defaultCharset", "inflate", "limit", "type", "verify", "shouldParse", "typeChecker", "parse", "buf", "req", "res", "next", "charset", "getCharset", "require_shams", "__commonJSMin", "exports", "module", "obj", "sym", "symObj", "symVal", "syms", "descriptor", "require_has_symbols", "__commonJSMin", "exports", "module", "origSymbol", "hasSymbolSham", "require_implementation", "__commonJSMin", "exports", "module", "ERROR_MESSAGE", "slice", "toStr", "funcType", "that", "target", "args", "bound", "binder", "result", "boundLength", "boundArgs", "i", "Empty", "require_function_bind", "__commonJSMin", "exports", "module", "implementation", "require_src", "__commonJSMin", "exports", "module", "bind", "require_get_intrinsic", "__commonJSMin", "exports", "module", "undefined", "$SyntaxError", "$Function", "$TypeError", "getEvalledConstructor", "expressionSyntax", "$gOPD", "throwTypeError", "ThrowTypeError", "hasSymbols", "getProto", "x", "needsEval", "TypedArray", "INTRINSICS", "e", "errorProto", "doEval", "name", "value", "fn", "gen", "LEGACY_ALIASES", "bind", "hasOwn", "$concat", "$spliceApply", "$replace", "$strSlice", "$exec", "rePropName", "reEscapeChar", "stringToPath", "string", "first", "last", "result", "match", "number", "quote", "subString", "getBaseIntrinsic", "allowMissing", "intrinsicName", "alias", "parts", "intrinsicBaseName", "intrinsic", "intrinsicRealName", "skipFurtherCaching", "i", "isOwn", "part", "desc", "require_call_bind", "__commonJSMin", "exports", "module", "bind", "GetIntrinsic", "$apply", "$call", "$reflectApply", "$gOPD", "$defineProperty", "$max", "originalFunction", "func", "desc", "applyBind", "require_callBound", "__commonJSMin", "exports", "module", "GetIntrinsic", "callBind", "$indexOf", "name", "allowMissing", "intrinsic", "require_util_inspect", "__commonJSMin", "exports", "module", "require_object_inspect", "__commonJSMin", "exports", "module", "hasMap", "mapSizeDescriptor", "mapSize", "mapForEach", "hasSet", "setSizeDescriptor", "setSize", "setForEach", "hasWeakMap", "weakMapHas", "hasWeakSet", "weakSetHas", "hasWeakRef", "weakRefDeref", "booleanValueOf", "objectToString", "functionToString", "$match", "$slice", "$replace", "$toUpperCase", "$toLowerCase", "$test", "$concat", "$join", "$arrSlice", "$floor", "bigIntValueOf", "gOPS", "symToString", "hasShammedSymbols", "toStringTag", "isEnumerable", "gPO", "O", "addNumericSeparator", "num", "str", "sepRegex", "int", "intStr", "dec", "utilInspect", "inspectCustom", "inspectSymbol", "isSymbol", "inspect_", "obj", "options", "depth", "seen", "opts", "has", "customInspect", "numericSeparator", "inspectString", "bigIntStr", "maxDepth", "isArray", "indent", "getIndent", "indexOf", "inspect", "value", "from", "noIndent", "newOpts", "isRegExp", "name", "nameOf", "keys", "arrObjKeys", "symString", "markBoxed", "isElement", "s", "attrs", "i", "wrapQuotes", "quote", "xs", "singleLineValues", "indentedJoin", "isError", "parts", "isMap", "mapParts", "key", "collectionOf", "isSet", "setParts", "isWeakMap", "weakCollectionOf", "isWeakSet", "isWeakRef", "isNumber", "isBigInt", "isBoolean", "isString", "isDate", "ys", "isPlainObject", "protoTag", "stringTag", "toStr", "constructorTag", "tag", "defaultStyle", "quoteChar", "hasOwn", "f", "m", "x", "l", "remaining", "trailer", "lowbyte", "c", "n", "type", "size", "entries", "joinedEntries", "baseIndent", "lineJoiner", "isArr", "syms", "symMap", "k", "j", "require_side_channel", "__commonJSMin", "exports", "module", "GetIntrinsic", "callBound", "inspect", "$TypeError", "$WeakMap", "$Map", "$weakMapGet", "$weakMapSet", "$weakMapHas", "$mapGet", "$mapSet", "$mapHas", "listGetNode", "list", "key", "prev", "curr", "listGet", "objects", "node", "listSet", "value", "listHas", "$wm", "$m", "$o", "channel", "require_formats", "__commonJSMin", "exports", "module", "replace", "percentTwenties", "Format", "value", "require_utils", "__commonJSMin", "exports", "module", "formats", "has", "isArray", "hexTable", "array", "i", "compactQueue", "queue", "item", "obj", "compacted", "j", "arrayToObject", "source", "options", "merge", "target", "mergeTarget", "targetItem", "acc", "key", "value", "assign", "decode", "str", "decoder", "charset", "strWithoutPlus", "encode", "defaultEncoder", "kind", "format", "string", "$0", "out", "c", "compact", "refs", "keys", "val", "isRegExp", "isBuffer", "combine", "a", "b", "maybeMap", "fn", "mapped", "require_stringify", "__commonJSMin", "exports", "module", "getSideChannel", "utils", "formats", "has", "arrayPrefixGenerators", "prefix", "key", "isArray", "split", "push", "pushToArray", "arr", "valueOrArray", "toISO", "defaultFormat", "defaults", "date", "isNonNullishPrimitive", "v", "sentinel", "stringify", "object", "generateArrayPrefix", "commaRoundTrip", "strictNullHandling", "skipNulls", "encoder", "filter", "sort", "allowDots", "serializeDate", "format", "formatter", "encodeValuesOnly", "charset", "sideChannel", "obj", "tmpSc", "step", "findFlag", "pos", "value", "keyValue", "valuesArray", "valuesJoined", "i", "values", "objKeys", "keys", "adjustedPrefix", "j", "keyPrefix", "valueSideChannel", "normalizeStringifyOptions", "opts", "options", "arrayFormat", "joined", "require_parse", "__commonJSMin", "exports", "module", "utils", "has", "isArray", "defaults", "interpretNumericEntities", "str", "$0", "numberStr", "parseArrayValue", "val", "options", "isoSentinel", "charsetSentinel", "parseValues", "obj", "cleanStr", "limit", "parts", "skipIndex", "i", "charset", "part", "bracketEqualsPos", "pos", "key", "encodedVal", "parseObject", "chain", "valuesParsed", "leaf", "root", "cleanRoot", "index", "parseKeys", "givenKey", "brackets", "child", "segment", "parent", "keys", "normalizeParseOptions", "opts", "tempObj", "newObj", "require_lib", "__commonJSMin", "exports", "module", "stringify", "parse", "formats", "require_urlencoded", "__commonJSMin", "exports", "module", "bytes", "contentType", "createError", "debug", "deprecate", "read", "typeis", "urlencoded", "parsers", "options", "opts", "extended", "inflate", "limit", "type", "verify", "queryparse", "extendedparser", "simpleparser", "shouldParse", "typeChecker", "parse", "body", "req", "res", "next", "charset", "getCharset", "parameterLimit", "parser", "paramCount", "parameterCount", "arrayLimit", "count", "index", "name", "mod", "require_body_parser", "__commonJSMin", "exports", "module", "deprecate", "parsers", "bodyParser", "createParserGetter", "options", "opts", "_urlencoded", "_json", "req", "res", "next", "err", "name", "loadParser", "parserName", "parser", "require_merge_descriptors", "__commonJSMin", "exports", "module", "merge", "hasOwnProperty", "dest", "src", "redefine", "name", "descriptor", "require_ms", "__commonJSMin", "exports", "module", "s", "m", "h", "d", "y", "val", "options", "type", "parse", "fmtLong", "fmtShort", "str", "match", "n", "ms", "plural", "name", "require_debug", "__commonJSMin", "exports", "module", "createDebug", "coerce", "disable", "enable", "enabled", "prevTime", "selectColor", "namespace", "hash", "i", "debug", "self", "curr", "ms", "args", "index", "match", "format", "formatter", "val", "logFn", "namespaces", "split", "len", "name", "require_browser", "__commonJSMin", "exports", "module", "log", "formatArgs", "save", "load", "useColors", "localstorage", "v", "err", "args", "c", "index", "lastC", "match", "namespaces", "r", "require_node", "__commonJSMin", "exports", "module", "tty", "util", "init", "log", "formatArgs", "save", "load", "useColors", "key", "obj", "prop", "_", "k", "val", "fd", "stream", "createWritableStdioStream", "v", "str", "args", "name", "c", "prefix", "namespaces", "tty_wrap", "fs", "net", "debug", "keys", "i", "require_src", "__commonJSMin", "exports", "module", "require_encodeurl", "__commonJSMin", "exports", "module", "encodeUrl", "ENCODE_CHARS_REGEXP", "UNMATCHED_SURROGATE_PAIR_REGEXP", "UNMATCHED_SURROGATE_PAIR_REPLACE", "url", "require_escape_html", "__commonJSMin", "exports", "module", "matchHtmlRegExp", "escapeHtml", "string", "str", "match", "escape", "html", "index", "lastIndex", "require_parseurl", "__commonJSMin", "exports", "module", "url", "parse", "Url", "parseurl", "originalurl", "req", "parsed", "fresh", "fastparse", "str", "pathname", "query", "search", "parsedUrl", "require_finalhandler", "__commonJSMin", "exports", "module", "debug", "encodeUrl", "escapeHtml", "onFinished", "parseUrl", "statuses", "unpipe", "DOUBLE_SPACE_REGEXP", "NEWLINE_REGEXP", "defer", "fn", "isFinished", "createHtmlDocument", "message", "body", "finalhandler", "req", "res", "options", "opts", "env", "onerror", "err", "headers", "msg", "status", "headersSent", "getErrorStatusCode", "getResponseStatusCode", "getErrorHeaders", "getErrorMessage", "getResourceName", "send", "keys", "i", "key", "write", "setHeaders", "require_ms", "__commonJSMin", "exports", "module", "s", "m", "h", "d", "y", "val", "options", "type", "parse", "fmtLong", "fmtShort", "str", "match", "n", "ms", "plural", "name", "require_debug", "__commonJSMin", "exports", "module", "createDebug", "coerce", "disable", "enable", "enabled", "prevTime", "selectColor", "namespace", "hash", "i", "debug", "self", "curr", "ms", "args", "index", "match", "format", "formatter", "val", "logFn", "namespaces", "split", "len", "name", "require_browser", "__commonJSMin", "exports", "module", "log", "formatArgs", "save", "load", "useColors", "localstorage", "v", "err", "args", "c", "index", "lastC", "match", "namespaces", "r", "require_node", "__commonJSMin", "exports", "module", "tty", "util", "init", "log", "formatArgs", "save", "load", "useColors", "key", "obj", "prop", "_", "k", "val", "fd", "stream", "createWritableStdioStream", "v", "str", "args", "name", "c", "prefix", "namespaces", "tty_wrap", "fs", "net", "debug", "keys", "i", "require_src", "__commonJSMin", "exports", "module", "require_array_flatten", "__commonJSMin", "exports", "module", "arrayFlatten", "flattenWithDepth", "array", "result", "depth", "i", "value", "flattenForever", "require_path_to_regexp", "__commonJSMin", "exports", "module", "pathtoRegexp", "MATCHING_GROUP_REGEXP", "path", "keys", "options", "strict", "end", "flags", "extraOffset", "keysOffset", "i", "name", "m", "value", "match", "slash", "format", "key", "capture", "star", "optional", "offset", "result", "index", "len", "escapeCount", "require_layer", "__commonJSMin", "exports", "module", "pathRegexp", "debug", "hasOwnProperty", "Layer", "path", "options", "fn", "opts", "error", "req", "res", "next", "err", "match", "decode_param", "keys", "params", "i", "key", "prop", "val", "require_methods", "__commonJSMin", "exports", "module", "http", "getCurrentNodeMethods", "getBasicNodeMethods", "method", "require_route", "__commonJSMin", "exports", "module", "debug", "flatten", "Layer", "methods", "slice", "toString", "Route", "path", "method", "name", "i", "req", "res", "done", "idx", "stack", "sync", "next", "err", "layer", "handles", "handle", "type", "msg", "require_utils_merge", "__commonJSMin", "exports", "module", "a", "b", "key", "require_router", "__commonJSMin", "exports", "module", "Route", "Layer", "methods", "mixin", "debug", "deprecate", "flatten", "parseUrl", "setPrototypeOf", "objectRegExp", "slice", "toString", "proto", "options", "opts", "router", "req", "res", "next", "name", "fn", "params", "len", "ret", "i", "out", "self", "idx", "protohost", "getProtohost", "removed", "slashAdded", "sync", "paramcalled", "stack", "parentParams", "parentUrl", "done", "restore", "wrap", "old", "err", "sendOptionsResponse", "layerError", "path", "getPathname", "layer", "match", "route", "matchLayer", "method", "has_method", "appendMethods", "mergeParams", "layerPath", "trim_prefix", "c", "called", "keys", "paramIndex", "key", "paramVal", "paramCallbacks", "paramCalled", "param", "paramCallback", "e", "offset", "arg", "callbacks", "gettype", "list", "addition", "url", "searchIndex", "pathLength", "fqdnIndex", "obj", "type", "parent", "o", "props", "vals", "body", "args", "require_init", "__commonJSMin", "exports", "setPrototypeOf", "app", "req", "res", "next", "require_query", "__commonJSMin", "exports", "module", "merge", "parseUrl", "qs", "options", "opts", "queryparse", "req", "res", "next", "val", "require_view", "__commonJSMin", "exports", "module", "debug", "path", "fs", "dirname", "basename", "extname", "join", "resolve", "View", "name", "options", "opts", "fileName", "mod", "fn", "roots", "root", "loc", "dir", "file", "callback", "ext", "stat", "tryStat", "require_safe_buffer", "__commonJSMin", "exports", "module", "buffer", "Buffer", "copyProps", "src", "dst", "key", "SafeBuffer", "arg", "encodingOrOffset", "length", "size", "fill", "encoding", "buf", "require_content_disposition", "__commonJSMin", "exports", "module", "contentDisposition", "parse", "basename", "Buffer", "ENCODE_URL_ATTR_CHAR_REGEXP", "HEX_ESCAPE_REGEXP", "HEX_ESCAPE_REPLACE_REGEXP", "NON_LATIN1_REGEXP", "QESC_REGEXP", "QUOTE_REGEXP", "PARAM_REGEXP", "TEXT_REGEXP", "TOKEN_REGEXP", "EXT_VALUE_REGEXP", "DISPOSITION_TYPE_REGEXP", "filename", "options", "opts", "type", "params", "createparams", "format", "ContentDisposition", "fallback", "name", "isQuotedString", "fallbackName", "getlatin1", "hasFallback", "obj", "parameters", "string", "param", "i", "val", "ustring", "qstring", "decodefield", "str", "match", "charset", "encoded", "value", "binary", "pdecode", "index", "key", "names", "hex", "pencode", "char", "require_ms", "__commonJSMin", "exports", "module", "s", "m", "h", "d", "y", "val", "options", "type", "parse", "fmtLong", "fmtShort", "str", "match", "n", "ms", "plural", "name", "require_debug", "__commonJSMin", "exports", "module", "createDebug", "coerce", "disable", "enable", "enabled", "prevTime", "selectColor", "namespace", "hash", "i", "debug", "self", "curr", "ms", "args", "index", "match", "format", "formatter", "val", "logFn", "namespaces", "split", "len", "name", "require_browser", "__commonJSMin", "exports", "module", "log", "formatArgs", "save", "load", "useColors", "localstorage", "v", "err", "args", "c", "index", "lastC", "match", "namespaces", "r", "require_node", "__commonJSMin", "exports", "module", "tty", "util", "init", "log", "formatArgs", "save", "load", "useColors", "key", "obj", "prop", "_", "k", "val", "fd", "stream", "createWritableStdioStream", "v", "str", "args", "name", "c", "prefix", "namespaces", "tty_wrap", "fs", "net", "debug", "keys", "i", "require_src", "__commonJSMin", "exports", "module", "require_etag", "__commonJSMin", "exports", "module", "etag", "crypto", "Stats", "toString", "entitytag", "entity", "hash", "len", "options", "isStats", "isstats", "weak", "tag", "stattag", "obj", "stat", "mtime", "size", "require_fresh", "__commonJSMin", "exports", "module", "CACHE_CONTROL_NO_CACHE_REGEXP", "fresh", "reqHeaders", "resHeaders", "modifiedSince", "noneMatch", "cacheControl", "etag", "etagStale", "matches", "parseTokenList", "i", "match", "lastModified", "modifiedStale", "parseHttpDate", "date", "timestamp", "str", "end", "list", "start", "len", "require_mime", "__commonJSMin", "exports", "module", "path", "fs", "Mime", "map", "type", "exts", "i", "file", "content", "lines", "line", "fields", "fallback", "ext", "mimeType", "mime", "require_ms", "__commonJSMin", "exports", "module", "s", "m", "h", "d", "w", "y", "val", "options", "type", "parse", "fmtLong", "fmtShort", "str", "match", "n", "ms", "msAbs", "plural", "name", "isPlural", "require_range_parser", "__commonJSMin", "exports", "module", "rangeParser", "size", "str", "options", "index", "arr", "ranges", "i", "range", "start", "end", "combineRanges", "ordered", "mapWithIndex", "sortByRangeStart", "j", "current", "combined", "sortByRangeIndex", "mapWithoutIndex", "a", "b", "require_send", "__commonJSMin", "exports", "module", "createError", "debug", "deprecate", "destroy", "encodeUrl", "escapeHtml", "etag", "fresh", "fs", "mime", "ms", "onFinished", "parseRange", "path", "statuses", "Stream", "util", "extname", "join", "normalize", "resolve", "sep", "BYTES_RANGE_REGEXP", "MAX_MAXAGE", "UP_PATH_REGEXP", "send", "req", "options", "SendStream", "opts", "normalizeList", "val", "paths", "index", "maxAge", "status", "err", "hasListeners", "createHttpError", "res", "msg", "doc", "createHtmlDocument", "clearHeaders", "setHeaders", "match", "parseTokenList", "unmodifiedSince", "parseHttpDate", "lastModified", "statusCode", "error", "ifRange", "loc", "collapseLeadingSlashes", "root", "decode", "parts", "containsDotFile", "access", "stat", "len", "ranges", "offset", "headersSent", "bytes", "contentRange", "prop", "i", "self", "next", "p", "stream", "cleanup", "type", "charset", "cacheControl", "modified", "headers", "getHeaderNames", "str", "part", "size", "range", "title", "body", "emitter", "count", "name", "list", "date", "timestamp", "end", "start", "keys", "key", "require_forwarded", "__commonJSMin", "exports", "module", "forwarded", "req", "proxyAddrs", "parse", "socketAddr", "getSocketAddr", "addrs", "header", "end", "list", "start", "require_ipaddr", "__commonJSMin", "exports", "module", "expandIPv6", "ipaddr", "ipv4Part", "ipv4Regexes", "ipv6Part", "ipv6Regexes", "matchCIDR", "root", "zoneIndex", "first", "second", "partSize", "cidrBits", "part", "shift", "address", "rangeList", "defaultName", "k", "len", "rangeName", "rangeSubnets", "subnet", "IPv4", "octets", "octet", "other", "cidrRange", "ref", "cidr", "i", "stop", "zeros", "zerotable", "string", "match", "parseIntAuto", "value", "results", "IPv6", "parts", "zoneId", "l", "bestMatchIndex", "bestMatchLength", "regex", "bytes", "addr", "suffix", "high", "low", "colonCount", "lastColon", "replacement", "replacementCount", "e", "error1", "maskLength", "parsed", "prefix", "filledOctetCount", "j", "error", "ipInterfaceOctets", "subnetMaskOctets", "length", "require_proxy_addr", "__commonJSMin", "exports", "module", "proxyaddr", "alladdrs", "compile", "forwarded", "ipaddr", "DIGIT_REGEXP", "isip", "parseip", "IP_RANGES", "req", "trust", "addrs", "i", "val", "compileTrust", "compileRangeSubnets", "arr", "rangeSubnets", "parseipNotation", "len", "trustNone", "trustSingle", "trustMulti", "note", "pos", "str", "ip", "max", "range", "parseNetmask", "netmask", "kind", "addr", "subnets", "ipconv", "subnet", "subnetip", "subnetkind", "subnetrange", "trusted", "subnetisipv4", "require_utils", "__commonJSMin", "exports", "Buffer", "contentDisposition", "contentType", "deprecate", "flatten", "mime", "etag", "proxyaddr", "qs", "querystring", "createETagGenerator", "path", "type", "acceptParams", "types", "ret", "i", "str", "index", "parts", "pms", "val", "fn", "newObject", "parseExtendedQueryString", "a", "v", "charset", "parsed", "options", "body", "encoding", "buf", "require_application", "__commonJSMin", "exports", "module", "finalhandler", "Router", "methods", "middleware", "query", "debug", "View", "http", "compileETag", "compileQueryParser", "compileTrust", "deprecate", "flatten", "merge", "resolve", "setPrototypeOf", "hasOwnProperty", "slice", "app", "trustProxyDefaultSymbol", "env", "parent", "req", "res", "callback", "router", "done", "logerror", "fn", "offset", "path", "arg", "fns", "next", "orig", "err", "ext", "extension", "name", "i", "setting", "val", "settings", "method", "route", "args", "options", "cache", "engines", "opts", "renderOptions", "view", "dirs", "tryRender", "server", "require_charset", "__commonJSMin", "exports", "module", "preferredCharsets", "simpleCharsetRegExp", "parseAcceptCharset", "accept", "accepts", "i", "j", "charset", "parseCharset", "str", "match", "q", "params", "p", "getCharsetPriority", "accepted", "index", "priority", "spec", "specify", "s", "provided", "isQuality", "compareSpecs", "getFullCharset", "priorities", "type", "a", "b", "require_encoding", "__commonJSMin", "exports", "module", "preferredEncodings", "simpleEncodingRegExp", "parseAcceptEncoding", "accept", "accepts", "hasIdentity", "minQuality", "j", "encoding", "parseEncoding", "specify", "str", "i", "match", "q", "params", "p", "getEncodingPriority", "accepted", "index", "priority", "spec", "s", "provided", "isQuality", "compareSpecs", "getFullEncoding", "priorities", "type", "a", "b", "require_language", "__commonJSMin", "exports", "module", "preferredLanguages", "simpleLanguageRegExp", "parseAcceptLanguage", "accept", "accepts", "i", "j", "language", "parseLanguage", "str", "match", "prefix", "suffix", "full", "q", "params", "p", "getLanguagePriority", "accepted", "index", "priority", "spec", "specify", "s", "provided", "isQuality", "compareSpecs", "getFullLanguage", "priorities", "type", "a", "b", "require_mediaType", "__commonJSMin", "exports", "module", "preferredMediaTypes", "simpleMediaTypeRegExp", "parseAccept", "accept", "accepts", "splitMediaTypes", "i", "j", "mediaType", "parseMediaType", "str", "match", "params", "q", "subtype", "type", "kvps", "splitParameters", "splitKeyValuePair", "pair", "key", "val", "value", "getMediaTypePriority", "accepted", "index", "priority", "spec", "specify", "p", "s", "keys", "k", "provided", "isQuality", "compareSpecs", "getFullType", "priorities", "a", "b", "quoteCount", "string", "count", "parameters", "require_negotiator", "__commonJSMin", "exports", "module", "preferredCharsets", "preferredEncodings", "preferredLanguages", "preferredMediaTypes", "Negotiator", "request", "available", "set", "require_accepts", "__commonJSMin", "exports", "module", "Negotiator", "mime", "Accepts", "req", "types_", "types", "i", "mimes", "extToMime", "accepts", "validMime", "first", "encodings_", "encodings", "charsets_", "charsets", "languages_", "languages", "type", "require_request", "__commonJSMin", "exports", "module", "accepts", "deprecate", "isIP", "typeis", "http", "fresh", "parseRange", "parse", "proxyaddr", "req", "name", "lc", "accept", "size", "options", "range", "defaultValue", "params", "body", "query", "args", "types", "arr", "i", "defineGetter", "proto", "trust", "header", "index", "addrs", "hostname", "offset", "subdomains", "host", "method", "res", "status", "val", "obj", "getter", "require_cookie_signature", "__commonJSMin", "exports", "crypto", "val", "secret", "str", "mac", "sha1", "require_cookie", "__commonJSMin", "exports", "parse", "serialize", "__toString", "fieldContentRegExp", "str", "options", "obj", "opt", "dec", "decode", "index", "eqIdx", "endIdx", "key", "val", "tryDecode", "name", "enc", "encode", "value", "maxAge", "expires", "isDate", "priority", "sameSite", "require_vary", "__commonJSMin", "exports", "module", "vary", "append", "FIELD_NAME_REGEXP", "header", "field", "fields", "parse", "j", "val", "vals", "i", "fld", "end", "list", "start", "len", "res", "require_response", "__commonJSMin", "exports", "module", "Buffer", "contentDisposition", "createError", "deprecate", "encodeUrl", "escapeHtml", "http", "isAbsolute", "onFinished", "path", "statuses", "merge", "sign", "normalizeType", "normalizeTypes", "setCharset", "cookie", "send", "extname", "mime", "resolve", "vary", "res", "charsetRegExp", "code", "links", "link", "rel", "body", "chunk", "encoding", "req", "type", "app", "etagFn", "generateETag", "len", "etag", "obj", "val", "escape", "replacer", "spaces", "stringify", "callback", "statusCode", "options", "done", "next", "opts", "pathname", "file", "sendfile", "err", "filename", "name", "headers", "keys", "i", "key", "fullPath", "ct", "v", "o", "field", "prev", "value", "charset", "secret", "signed", "maxAge", "url", "loc", "address", "status", "u", "view", "self", "str", "streaming", "onaborted", "ondirectory", "onerror", "onend", "onfile", "onfinish", "onstream", "k", "json", "c", "require_serve_static", "__commonJSMin", "exports", "module", "encodeUrl", "escapeHtml", "parseUrl", "resolve", "send", "url", "serveStatic", "root", "options", "opts", "fallthrough", "redirect", "setHeaders", "onDirectory", "createRedirectDirectoryListener", "createNotFoundDirectoryListener", "req", "res", "next", "forwardError", "originalUrl", "path", "stream", "err", "collapseLeadingSlashes", "str", "i", "createHtmlDocument", "title", "body", "loc", "doc", "require_express", "__commonJSMin", "exports", "module", "bodyParser", "EventEmitter", "mixin", "proto", "Route", "Router", "req", "res", "createApplication", "app", "next", "removedMiddlewares", "name", "require_express", "__commonJSMin", "exports", "module", "require_object_assign", "__commonJSMin", "exports", "module", "getOwnPropertySymbols", "hasOwnProperty", "propIsEnumerable", "toObject", "val", "shouldUseNative", "test1", "test2", "i", "order2", "n", "test3", "letter", "target", "source", "from", "to", "symbols", "s", "key", "require_lib", "__commonJSMin", "exports", "module", "assign", "vary", "defaults", "isString", "s", "isOriginAllowed", "origin", "allowedOrigin", "i", "configureOrigin", "options", "req", "requestOrigin", "headers", "isAllowed", "configureMethods", "methods", "configureCredentials", "configureAllowedHeaders", "allowedHeaders", "configureExposedHeaders", "configureMaxAge", "maxAge", "applyHeaders", "res", "n", "header", "cors", "next", "method", "middlewareWrapper", "o", "optionsCallback", "cb", "err", "corsOptions", "originCallback", "err2", "require_bn", "__commonJSMin", "exports", "module", "assert", "val", "msg", "inherits", "ctor", "superCtor", "TempCtor", "BN", "number", "base", "endian", "Buffer", "num", "left", "right", "start", "i", "j", "w", "off", "parseHex4Bits", "string", "index", "c", "parseHexByte", "lowerBound", "r", "parseLength", "parseBase", "str", "end", "mul", "b", "len", "limbLen", "limbPow", "total", "mod", "word", "pow", "dest", "move", "src", "size", "inspect", "zeros", "groupSizes", "groupBases", "padding", "out", "carry", "groupSize", "groupBase", "ret", "length", "allocate", "ArrayType", "byteLength", "reqLength", "res", "postfix", "position", "shift", "t", "hi", "toBitArray", "bit", "wbit", "width", "a", "bytesNeeded", "bitsLeft", "cmp", "smallMulTo", "self", "lo", "k", "ncarry", "rword", "maxJ", "comb10MulTo", "o", "mid", "a0", "al0", "ah0", "a1", "al1", "ah1", "a2", "al2", "ah2", "a3", "al3", "ah3", "a4", "al4", "ah4", "a5", "al5", "ah5", "a6", "al6", "ah6", "a7", "al7", "ah7", "a8", "al8", "ah8", "a9", "al9", "ah9", "b0", "bl0", "bh0", "b1", "bl1", "bh1", "b2", "bl2", "bh2", "b3", "bl3", "bh3", "b4", "bl4", "bh4", "b5", "bl5", "bh5", "b6", "bl6", "bh6", "b7", "bl7", "bh7", "b8", "bl8", "bh8", "b9", "bl9", "bh9", "w0", "w1", "w2", "w3", "w4", "w5", "w6", "w7", "w8", "w9", "w10", "w11", "w12", "w13", "w14", "w15", "w16", "w17", "w18", "bigMulTo", "hncarry", "jumboMulTo", "FFTM", "x", "y", "N", "l", "rb", "rbt", "rws", "iws", "rtws", "itws", "s", "rtwdf", "itwdf", "p", "rtwdf_", "itwdf_", "re", "ie", "ro", "io", "rx", "n", "m", "odd", "ws", "ph", "_", "rwst", "iwst", "nrws", "nrwst", "niwst", "rmws", "isNegNum", "q", "bits", "carryMask", "newCarry", "hint", "extended", "h", "mask", "maskedWords", "mode", "bhi", "bhiBits", "diff", "qj", "positive", "div", "dm", "half", "r2", "acc", "A", "B", "C", "D", "g", "yp", "xp", "im", "jm", "x1", "x2", "delta", "negative", "Red", "ctx", "primes", "MPrime", "name", "tmp", "rlen", "input", "K256", "output", "outLen", "prev", "next", "P224", "P192", "P25519", "prime", "mod3", "one", "nOne", "lpow", "z", "inv", "windowSize", "wnd", "current", "currentLen", "Mont", "u", "exports", "require_lib", "__commonJSMin", "exports", "_permanentCensorErrors", "_censorErrors", "LogLevels", "_logLevel", "_version_1", "_globalLogger", "_checkNormalize", "missing_1", "form", "error", "_normalizeError", "LogLevel", "ErrorCode", "HEX", "Logger", "version", "logLevel", "args", "level", "_i", "message", "code", "params", "messageDetails", "key", "value", "hex", "i", "reason", "url", "fault", "name", "condition", "count", "expectedCount", "target", "kind", "censorship", "permanent", "exports", "require_lib", "__commonJSMin", "exports", "logger_1", "_version_1", "logger", "isHexable", "value", "addSlice", "array", "args", "isBytesLike", "isHexString", "isBytes", "isInteger", "i", "v", "arrayify", "options", "result", "hex", "concat", "items", "objects", "item", "length", "accum", "offset", "object", "stripZeros", "start", "zeroPad", "HexCharacters", "hexlify", "hexDataLength", "data", "hexDataSlice", "endOffset", "hexConcat", "hexValue", "trimmed", "hexStripZeros", "hexZeroPad", "splitSignature", "signature", "bytes", "vs_1", "recoveryParam", "s", "recId", "vs", "_vs", "joinSignature", "exports", "require_bignumber", "__commonJSMin", "exports", "bn_js_1", "__importDefault", "BN", "bytes_1", "logger_1", "_version_1", "logger", "_constructorGuard", "MAX_SAFE", "isBigNumberish", "value", "BigNumber", "_warnedToStringRadix", "constructorGuard", "hex", "toBigNumber", "toBN", "other", "o", "throwFault", "key", "toHex", "anyValue", "fault", "operation", "params", "_base36To16", "_base16To36", "require_fixednumber", "__commonJSMin", "exports", "bytes_1", "logger_1", "_version_1", "logger", "bignumber_1", "_constructorGuard", "Zero", "NegativeOne", "throwFault", "message", "fault", "operation", "value", "params", "zeros", "getMultiplier", "decimals", "formatFixed", "multiplier", "negative", "fraction", "whole", "parseFixed", "comps", "wholeValue", "fractionValue", "wei", "FixedFormat", "constructorGuard", "signed", "width", "match", "check", "key", "type", "defaultValue", "FixedNumber", "hex", "format", "other", "a", "b", "result", "hasFraction", "ONE", "factor", "bump", "BUMP", "fixedFormat", "numeric", "decimal", "error", "bignumber_1", "exports", "fixednumber_1", "bignumber_2", "exports", "require_lib", "__commonJSMin", "exports", "logger_1", "_version_1", "logger", "defineReadOnly", "object", "name", "value", "getStatic", "ctor", "key", "i", "resolveProperties", "promises", "v", "results", "_a", "accum", "result", "checkProperties", "properties", "shallowCopy", "opaque", "_isFrozen", "keys", "_deepCopy", "item", "deepCopy", "Description", "info", "exports", "require_fragments", "__commonJSMin", "exports", "bignumber_1", "properties_1", "logger_1", "_version_1", "logger", "_constructorGuard", "ModifiersBytes", "ModifiersNest", "checkModifier", "type", "name", "parseParamType", "param", "allowIndexed", "originalParam", "throwError", "i", "newNode", "parent", "node", "c", "verifyType", "child", "sibling", "populate", "object", "params", "key", "paramTypeArray", "ParamType", "constructorGuard", "match", "format", "result_1", "comp", "result", "value", "ParamTypify", "parseParams", "allowIndex", "splitNesting", "Fragment", "FunctionFragment", "EventFragment", "ConstructorFragment", "ErrorFragment", "_super", "__extends", "input", "verifyIdentifier", "regexParen", "anonymous", "modifier", "parseGas", "comps", "parseModifiers", "verifyState", "state", "parens", "output", "returns", "checkForbidden", "fragment", "sig", "regexIdentifier", "accum", "depth", "offset", "require_abstract_coder", "__commonJSMin", "exports", "bytes_1", "bignumber_1", "properties_1", "logger_1", "_version_1", "logger", "checkResultErrors", "result", "errors", "checkErrors", "path", "object", "key", "childPath", "error", "Coder", "name", "type", "localName", "dynamic", "message", "value", "Writer", "wordSize", "data", "writer", "bytes", "paddingOffset", "_this", "offset", "Reader", "coerceFunc", "allowLoose", "match", "length", "loose", "alignedLength", "require_sha3", "__commonJSMin", "exports", "module", "INPUT_ERROR", "FINALIZE_ERROR", "WINDOW", "root", "WEB_WORKER", "NODE_JS", "COMMON_JS", "AMD", "ARRAY_BUFFER", "HEX_CHARS", "SHAKE_PADDING", "CSHAKE_PADDING", "KECCAK_PADDING", "PADDING", "SHIFT", "RC", "BITS", "SHAKE_BITS", "OUTPUT_TYPES", "CSHAKE_BYTEPAD", "obj", "createOutputMethod", "bits", "padding", "outputType", "message", "Keccak", "createShakeOutputMethod", "outputBits", "createCshakeOutputMethod", "n", "s", "methods", "createKmacOutputMethod", "key", "createOutputMethods", "method", "createMethod", "i", "type", "createShakeMethod", "createCshakeMethod", "w", "createKmacMethod", "Kmac", "algorithms", "methodNames", "algorithm", "j", "methodName", "newMethodName", "notString", "blocks", "byteCount", "length", "blockCount", "index", "code", "f", "x", "right", "o", "bytes", "str", "strs", "paddingBytes", "zeros", "outputBlocks", "extraBytes", "hex", "block", "buffer", "array", "offset", "h", "l", "c0", "c1", "c2", "c3", "c4", "c5", "c6", "c7", "c8", "c9", "b0", "b1", "b2", "b3", "b4", "b5", "b6", "b7", "b8", "b9", "b10", "b11", "b12", "b13", "b14", "b15", "b16", "b17", "b18", "b19", "b20", "b21", "b22", "b23", "b24", "b25", "b26", "b27", "b28", "b29", "b30", "b31", "b32", "b33", "b34", "b35", "b36", "b37", "b38", "b39", "b40", "b41", "b42", "b43", "b44", "b45", "b46", "b47", "b48", "b49", "require_lib", "__commonJSMin", "exports", "js_sha3_1", "__importDefault", "bytes_1", "keccak256", "data", "exports", "require_lib", "__commonJSMin", "exports", "bytes_1", "logger_1", "_version_1", "logger", "arrayifyInteger", "value", "result", "unarrayifyInteger", "data", "offset", "length", "_encode", "object", "payload_1", "child", "length_1", "encode", "_decodeChildren", "childOffset", "decoded", "_decode", "lengthLength", "length_2", "length_3", "length_4", "length_5", "decode", "bytes", "exports", "require_lib", "__commonJSMin", "exports", "bytes_1", "bignumber_1", "keccak256_1", "rlp_1", "logger_1", "_version_1", "logger", "getChecksumAddress", "address", "chars", "expanded", "i", "hashed", "MAX_SAFE_INTEGER", "log10", "x", "ibanLookup", "safeDigits", "ibanChecksum", "c", "block", "checksum", "getAddress", "result", "isAddress", "getIcapAddress", "base36", "getContractAddress", "transaction", "from", "nonce", "getCreate2Address", "salt", "initCodeHash", "require_address", "__commonJSMin", "exports", "address_1", "bytes_1", "abstract_coder_1", "AddressCoder", "_super", "__extends", "localName", "writer", "value", "error", "reader", "require_anonymous", "__commonJSMin", "exports", "abstract_coder_1", "AnonymousCoder", "_super", "__extends", "coder", "_this", "writer", "value", "reader", "require_array", "__commonJSMin", "exports", "logger_1", "_version_1", "logger", "abstract_coder_1", "anonymous_1", "pack", "writer", "coders", "values", "arrayValues", "unique_1", "coder", "name", "staticWriter", "dynamicWriter", "updateFuncs", "index", "value", "dynamicOffset_1", "updateFunc_1", "baseOffset", "func", "length", "unpack", "reader", "baseReader", "offset", "offsetReader", "error", "uniqueNames", "accum", "i", "ArrayCoder", "_super", "__extends", "localName", "_this", "type", "dynamic", "defaultChild", "result", "count", "require_boolean", "__commonJSMin", "exports", "abstract_coder_1", "BooleanCoder", "_super", "__extends", "localName", "writer", "value", "reader", "require_bytes", "__commonJSMin", "exports", "bytes_1", "abstract_coder_1", "DynamicBytesCoder", "_super", "__extends", "type", "localName", "writer", "value", "length", "reader", "BytesCoder", "require_fixed_bytes", "__commonJSMin", "exports", "bytes_1", "abstract_coder_1", "FixedBytesCoder", "_super", "__extends", "size", "localName", "_this", "name", "writer", "value", "data", "reader", "require_null", "__commonJSMin", "exports", "abstract_coder_1", "NullCoder", "_super", "__extends", "localName", "writer", "value", "reader", "exports", "bignumber_1", "NegativeOne", "exports", "Zero", "One", "Two", "WeiPerEther", "MaxUint256", "MinInt256", "MaxInt256", "exports", "exports", "require_lib", "__commonJSMin", "exports", "addresses_1", "bignumbers_1", "hashes_1", "strings_1", "require_number", "__commonJSMin", "exports", "bignumber_1", "constants_1", "abstract_coder_1", "NumberCoder", "_super", "__extends", "size", "signed", "localName", "_this", "name", "writer", "value", "v", "maxUintValue", "bounds", "reader", "exports", "require_utf8", "__commonJSMin", "exports", "bytes_1", "logger_1", "_version_1", "logger", "UnicodeNormalizationForm", "Utf8ErrorReason", "errorFunc", "reason", "offset", "bytes", "output", "badCodepoint", "ignoreFunc", "i", "replaceFunc", "getUtf8CodePoints", "onError", "result", "c", "extraLength", "overlongMask", "res", "j", "nextChar", "toUtf8Bytes", "str", "form", "c2", "pair", "escapeChar", "value", "hex", "_toEscapedUtf8String", "codePoint", "_toUtf8String", "codePoints", "toUtf8String", "toUtf8CodePoints", "require_bytes32", "__commonJSMin", "exports", "constants_1", "bytes_1", "utf8_1", "formatBytes32String", "text", "bytes", "parseBytes32String", "data", "length", "require_idna", "__commonJSMin", "exports", "utf8_1", "bytes2", "data", "result", "i", "createTable", "func", "value", "lo", "pair", "comps", "createRangeTable", "hi", "v", "matchMap", "ranges", "range", "Table_A_1_ranges", "Table_B_1_flags", "Table_B_2_ranges", "Table_B_2_lut_abs", "Table_B_2_lut_rel", "Table_B_2_complex", "Table_C_ranges", "flatten", "values", "accum", "_nameprepTableA1", "codepoint", "_nameprepTableB2", "codes", "shift", "complex", "_nameprepTableC", "nameprep", "code", "codesTableB2", "name", "require_lib", "__commonJSMin", "exports", "bytes32_1", "idna_1", "utf8_1", "require_string", "__commonJSMin", "exports", "strings_1", "bytes_1", "StringCoder", "_super", "__extends", "localName", "writer", "value", "reader", "require_tuple", "__commonJSMin", "exports", "abstract_coder_1", "array_1", "TupleCoder", "_super", "__extends", "coders", "localName", "_this", "dynamic", "types", "coder", "type", "values", "uniqueNames", "accum", "name", "index", "writer", "value", "reader", "require_abi_coder", "__commonJSMin", "exports", "bytes_1", "properties_1", "logger_1", "_version_1", "logger", "abstract_coder_1", "address_1", "array_1", "boolean_1", "bytes_2", "fixed_bytes_1", "null_1", "number_1", "string_1", "tuple_1", "fragments_1", "paramTypeBytes", "paramTypeNumber", "AbiCoder", "coerceFunc", "param", "_this", "component", "match", "size", "data", "allowLoose", "types", "coders", "type", "coder", "values", "writer", "loose", "keccak256_1", "strings_1", "id", "text", "exports", "exports", "require_base64", "__commonJSMin", "exports", "bytes_1", "decode", "textData", "encode", "data", "require_lib", "__commonJSMin", "exports", "base64_1", "flat", "array", "depth", "result", "forEach", "flatDeep", "arr", "val", "fromEntries", "i", "value", "decode_arithmetic", "bytes", "pos", "u16", "symbol_count", "total", "acc", "skip", "pos_payload", "read_width", "read_buffer", "read_bit", "N", "FULL", "HALF", "QRTR", "MASK", "register", "symbols", "low", "range", "start", "end", "mid", "a", "b", "offset", "x", "exports", "read_payload", "v", "read_compressed_payload", "signed", "read_counts", "n", "next", "read_ascending", "read_deltas", "read_member_array", "lookup", "vX", "vN", "j", "read_mapped_map", "ret", "w", "read_linear_table", "read_replacement_table", "read_zero_terminated_array", "read_transposed", "m", "dx", "dy", "ys", "_", "j_dy", "y", "read_emoji_trie", "sorted", "read", "branches", "keys", "temp", "valid", "fe0f", "save", "check", "base64_1", "decoder_js_1", "getData", "exports", "strings_1", "include_js_1", "r", "decoder_js_1", "VALID", "IGNORED", "MAPPED", "EMOJI_ROOT", "HYPHEN", "UNDERSCORE", "explode_cp", "name", "filter_fe0f", "cps", "cp", "ens_normalize_post_check", "_i", "_a", "label", "i", "err", "exports", "ens_normalize", "normalize", "emoji_filter", "input", "output", "emoji", "consume_emoji_reversed", "nfc", "s", "eaten", "node", "saved", "stack", "pos", "x", "bytes_1", "strings_1", "keccak256_1", "logger_1", "_version_1", "logger", "lib_1", "Zeros", "checkComponent", "comp", "ensNameSplit", "name", "bytes", "comps", "last", "d", "ensNormalize", "exports", "isValidName", "namehash", "result", "dnsEncode", "bytes_1", "keccak256_1", "strings_1", "exports", "hashMessage", "message", "address_1", "bignumber_1", "bytes_1", "keccak256_1", "properties_1", "logger_1", "_version_1", "logger", "id_1", "padding", "NegativeOne", "Zero", "One", "MaxUint256", "hexPadRight", "value", "bytes", "padOffset", "hexTrue", "hexFalse", "domainFieldTypes", "domainFieldNames", "checkString", "key", "domainChecks", "getBaseEncoder", "type", "match", "signed", "width", "boundsUpper_1", "boundsLower_1", "v", "width_1", "encodeType", "name", "fields", "_a", "TypedDataEncoder", "types", "links", "parents", "subtypes", "name_1", "uniqueNames", "field", "baseType", "encoder", "primaryTypes", "n", "t", "checkCircular", "found", "child", "subtype", "name_2", "st", "_this", "subtype_1", "subEncoder_1", "length_1", "result", "encodedType_1", "values", "callback", "subtype_2", "length_2", "accum", "domain", "domainFields", "name_3", "b", "resolveName", "ensCache", "_c", "_d", "name_4", "_e", "domainValues", "domainTypes", "typesWithDomain", "exports", "require_lib", "__commonJSMin", "exports", "id_1", "namehash_1", "message_1", "namehash_2", "typed_data_1", "require_interface", "__commonJSMin", "exports", "address_1", "bignumber_1", "bytes_1", "hash_1", "keccak256_1", "properties_1", "abi_coder_1", "abstract_coder_1", "fragments_1", "logger_1", "_version_1", "logger", "LogDescription", "_super", "__extends", "TransactionDescription", "ErrorDescription", "Indexed", "value", "BuiltinErrors", "wrapAccessError", "property", "error", "wrap", "Interface", "fragments", "_this", "abi", "fragment", "_newTarget", "bucket", "signature", "format", "j", "address", "eventFragment", "nameOrSignatureOrSighash", "name_1", "name_2", "matching", "f", "result", "nameOrSignatureOrTopic", "topichash", "name_3", "name_4", "getSighash", "name_5", "name_6", "params", "data", "values", "bytes", "functionFragment", "reason", "message", "errorArgs", "errorName", "errorSignature", "selector", "builtin", "topics", "encodeTopic", "param", "index", "dataTypes", "dataValues", "topicHash", "indexed", "nonIndexed", "dynamic", "resultIndexed", "resultNonIndexed", "nonIndexedIndex", "indexedIndex", "value_1", "i", "tx", "log", "hexData", "require_lib", "__commonJSMin", "exports", "fragments_1", "abi_coder_1", "interface_1", "exports", "require_lib", "__commonJSMin", "exports", "bignumber_1", "bytes_1", "properties_1", "logger_1", "_version_1", "logger", "ForkEvent", "_super", "__extends", "value", "BlockForkEvent", "blockHash", "expiry", "_this", "TransactionForkEvent", "hash", "TransactionOrderForkEvent", "beforeHash", "afterHash", "Provider", "_newTarget", "error", "_a", "_b", "block", "gasPrice", "lastBaseFeePerGas", "maxFeePerGas", "maxPriorityFeePerGas", "eventName", "listener", "exports", "require_lib", "__commonJSMin", "exports", "properties_1", "logger_1", "_version_1", "logger", "allowedTransactionKeys", "forwardErrors", "Signer", "_newTarget", "blockTag", "_a", "transaction", "tx", "signedTx", "network", "name", "key", "result", "to", "__awaiter", "_this", "address", "error", "hasEip1559", "feeData", "gasPrice", "results", "operation", "value", "VoidSigner", "_super", "__extends", "provider", "message", "domain", "types", "require_bn", "__commonJSMin", "exports", "module", "assert", "val", "msg", "inherits", "ctor", "superCtor", "TempCtor", "BN", "number", "base", "endian", "Buffer", "num", "left", "right", "start", "i", "j", "w", "off", "parseHex4Bits", "string", "index", "c", "parseHexByte", "lowerBound", "r", "parseLength", "parseBase", "str", "end", "mul", "len", "limbLen", "limbPow", "total", "mod", "word", "pow", "dest", "size", "zeros", "groupSizes", "groupBases", "padding", "out", "carry", "groupSize", "groupBase", "ret", "length", "ArrayType", "byteLength", "reqLength", "littleEndian", "res", "b", "q", "t", "hi", "toBitArray", "bit", "wbit", "width", "a", "bytesNeeded", "bitsLeft", "cmp", "smallMulTo", "self", "lo", "k", "ncarry", "rword", "maxJ", "comb10MulTo", "o", "mid", "a0", "al0", "ah0", "a1", "al1", "ah1", "a2", "al2", "ah2", "a3", "al3", "ah3", "a4", "al4", "ah4", "a5", "al5", "ah5", "a6", "al6", "ah6", "a7", "al7", "ah7", "a8", "al8", "ah8", "a9", "al9", "ah9", "b0", "bl0", "bh0", "b1", "bl1", "bh1", "b2", "bl2", "bh2", "b3", "bl3", "bh3", "b4", "bl4", "bh4", "b5", "bl5", "bh5", "b6", "bl6", "bh6", "b7", "bl7", "bh7", "b8", "bl8", "bh8", "b9", "bl9", "bh9", "w0", "w1", "w2", "w3", "w4", "w5", "w6", "w7", "w8", "w9", "w10", "w11", "w12", "w13", "w14", "w15", "w16", "w17", "w18", "bigMulTo", "hncarry", "jumboMulTo", "fftm", "FFTM", "x", "y", "N", "l", "rb", "rbt", "rws", "iws", "rtws", "itws", "s", "rtwdf", "itwdf", "p", "rtwdf_", "itwdf_", "re", "ie", "ro", "io", "rx", "n", "m", "odd", "ws", "ph", "_", "rwst", "iwst", "nrws", "nrwst", "niwst", "rmws", "bits", "carryMask", "newCarry", "hint", "extended", "h", "mask", "maskedWords", "shift", "mode", "bhi", "bhiBits", "diff", "qj", "positive", "div", "dm", "half", "r2", "acc", "A", "B", "C", "D", "g", "yp", "xp", "im", "jm", "x1", "x2", "delta", "negative", "Red", "ctx", "primes", "MPrime", "name", "tmp", "rlen", "input", "K256", "output", "outLen", "prev", "next", "P224", "P192", "P25519", "prime", "mod3", "one", "nOne", "lpow", "z", "inv", "windowSize", "wnd", "current", "currentLen", "Mont", "u", "require_minimalistic_assert", "__commonJSMin", "exports", "module", "assert", "val", "msg", "l", "require_utils", "__commonJSMin", "exports", "utils", "toArray", "msg", "enc", "res", "i", "c", "hi", "lo", "zero2", "word", "toHex", "arr", "require_utils", "__commonJSMin", "exports", "utils", "BN", "minAssert", "minUtils", "getNAF", "num", "w", "bits", "naf", "ws", "k", "i", "z", "mod", "getJSF", "k1", "k2", "jsf", "d1", "d2", "m8", "m14", "m24", "u1", "u2", "cachedProperty", "obj", "name", "computer", "key", "parseBytes", "bytes", "intFromLE", "require_brorand", "__commonJSMin", "exports", "module", "r", "len", "Rand", "rand", "n", "res", "i", "arr", "crypto", "require_base", "__commonJSMin", "exports", "module", "BN", "utils", "getNAF", "getJSF", "assert", "BaseCurve", "type", "conf", "adjustCount", "p", "k", "doubles", "naf", "I", "repr", "j", "nafW", "l", "a", "b", "i", "w", "nafPoints", "wnd", "acc", "z", "defW", "points", "coeffs", "len", "jacobianResult", "wndWidth", "max", "comb", "index", "jsf", "ja", "jb", "tmp", "zero", "BasePoint", "curve", "bytes", "enc", "res", "compact", "x", "power", "precomputed", "step", "dbl", "require_short", "__commonJSMin", "exports", "module", "utils", "BN", "inherits", "Base", "assert", "ShortCurve", "conf", "beta", "lambda", "betas", "lambdas", "basis", "vec", "num", "red", "tinv", "ntinv", "s", "l1", "l2", "aprxSqrt", "u", "v", "x1", "y1", "x2", "y2", "a0", "b0", "a1", "b1", "a2", "b2", "prevR", "i", "r", "x", "q", "y", "len1", "len2", "k", "v1", "v2", "c1", "c2", "p1", "p2", "q1", "q2", "k1", "k2", "odd", "isOdd", "point", "ax", "rhs", "points", "coeffs", "jacobianResult", "npoints", "ncoeffs", "split", "p", "res", "j", "Point", "curve", "isRed", "obj", "pre", "endoMul", "obj2point", "c", "nx", "ny", "ys1", "a", "dyinv", "_precompute", "negate", "JPoint", "z", "zinv", "zinv2", "ay", "pz2", "z2", "u1", "u2", "s1", "s2", "h", "h2", "h3", "nz", "pow", "jx", "jy", "jz", "jz4", "jyd", "jx2", "jyd2", "jyd4", "t1", "t2", "dny", "xx", "yy", "yyyy", "m", "t", "yyyy8", "b", "d", "e", "f", "c8", "delta", "gamma", "alpha", "beta4", "beta8", "ggamma8", "jy2", "jxd4", "jyd8", "zz", "mm", "ee", "yyu4", "kbase", "z3", "pz3", "zs", "rx", "xc", "require_mont", "__commonJSMin", "exports", "module", "BN", "inherits", "Base", "utils", "MontCurve", "conf", "point", "x", "x2", "rhs", "y", "Point", "curve", "z", "bytes", "enc", "obj", "a", "aa", "b", "bb", "c", "nx", "nz", "p", "diff", "d", "da", "cb", "k", "t", "bits", "i", "other", "require_edwards", "__commonJSMin", "exports", "module", "utils", "BN", "inherits", "Base", "assert", "EdwardsCurve", "conf", "num", "x", "y", "z", "t", "odd", "x2", "rhs", "lhs", "y2", "isOdd", "point", "Point", "curve", "obj", "a", "b", "c", "d", "e", "g", "f", "h", "nx", "ny", "nt", "nz", "j", "p", "tmp", "k", "k1", "k2", "zi", "other", "rx", "xc", "require_curve", "__commonJSMin", "exports", "curve", "require_utils", "__commonJSMin", "exports", "assert", "inherits", "isSurrogatePair", "msg", "i", "toArray", "enc", "res", "p", "c", "toHex", "zero2", "htonl", "w", "toHex32", "endian", "zero8", "word", "join32", "start", "end", "len", "k", "split32", "m", "rotr32", "b", "rotl32", "sum32", "a", "sum32_3", "sum32_4", "d", "sum32_5", "e", "sum64", "buf", "pos", "ah", "al", "bh", "bl", "lo", "hi", "sum64_hi", "sum64_lo", "sum64_4_hi", "ch", "cl", "dh", "dl", "carry", "sum64_4_lo", "sum64_5_hi", "eh", "el", "sum64_5_lo", "rotr64_hi", "num", "r", "rotr64_lo", "shr64_hi", "shr64_lo", "require_common", "__commonJSMin", "exports", "utils", "assert", "BlockHash", "msg", "enc", "r", "len", "bytes", "k", "res", "i", "t", "require_common", "__commonJSMin", "exports", "utils", "rotr32", "ft_1", "s", "x", "y", "z", "ch32", "p32", "maj32", "s0_256", "s1_256", "g0_256", "g1_256", "require__", "__commonJSMin", "exports", "module", "utils", "common", "shaCommon", "rotl32", "sum32", "sum32_5", "ft_1", "BlockHash", "sha1_K", "SHA1", "msg", "start", "W", "b", "d", "e", "s", "t", "enc", "require__", "__commonJSMin", "exports", "module", "utils", "common", "shaCommon", "assert", "sum32", "sum32_4", "sum32_5", "ch32", "maj32", "s0_256", "s1_256", "g0_256", "g1_256", "BlockHash", "sha256_K", "SHA256", "msg", "start", "W", "b", "d", "e", "g", "h", "T1", "T2", "enc", "require__", "__commonJSMin", "exports", "module", "utils", "SHA256", "SHA224", "enc", "require__", "__commonJSMin", "exports", "module", "utils", "common", "assert", "rotr64_hi", "rotr64_lo", "shr64_hi", "shr64_lo", "sum64", "sum64_hi", "sum64_lo", "sum64_4_hi", "sum64_4_lo", "sum64_5_hi", "sum64_5_lo", "BlockHash", "sha512_K", "SHA512", "msg", "start", "W", "c0_hi", "g1_512_hi", "c0_lo", "g1_512_lo", "c1_hi", "c1_lo", "c2_hi", "g0_512_hi", "c2_lo", "g0_512_lo", "c3_hi", "c3_lo", "ah", "al", "bh", "bl", "ch", "cl", "dh", "dl", "eh", "el", "fh", "fl", "gh", "gl", "hh", "hl", "i", "s1_512_hi", "s1_512_lo", "ch64_hi", "ch64_lo", "c4_hi", "c4_lo", "T1_hi", "T1_lo", "s0_512_hi", "s0_512_lo", "maj64_hi", "maj64_lo", "T2_hi", "T2_lo", "enc", "xh", "xl", "yh", "yl", "zh", "r", "zl", "require__", "__commonJSMin", "exports", "module", "utils", "SHA512", "SHA384", "enc", "require_sha", "__commonJSMin", "exports", "require_ripemd", "__commonJSMin", "exports", "utils", "common", "rotl32", "sum32", "sum32_3", "sum32_4", "BlockHash", "RIPEMD160", "msg", "start", "A", "B", "C", "D", "E", "Ah", "Bh", "Ch", "Dh", "Eh", "j", "T", "f", "r", "K", "s", "rh", "Kh", "sh", "enc", "x", "y", "z", "require_hmac", "__commonJSMin", "exports", "module", "utils", "assert", "Hmac", "hash", "key", "enc", "i", "msg", "require_hash", "__commonJSMin", "exports", "hash", "require_secp256k1", "__commonJSMin", "exports", "module", "require_curves", "__commonJSMin", "exports", "curves", "hash", "curve", "utils", "assert", "PresetCurve", "options", "defineCurve", "name", "pre", "require_hmac_drbg", "__commonJSMin", "exports", "module", "hash", "utils", "assert", "HmacDRBG", "options", "entropy", "nonce", "pers", "seed", "i", "kmac", "entropyEnc", "add", "addEnc", "len", "enc", "temp", "res", "require_key", "__commonJSMin", "exports", "module", "BN", "utils", "assert", "KeyPair", "ec", "options", "pub", "enc", "priv", "compact", "key", "msg", "signature", "require_signature", "__commonJSMin", "exports", "module", "BN", "utils", "assert", "Signature", "options", "enc", "Position", "getLength", "buf", "p", "initial", "octetLen", "val", "i", "off", "rmPadding", "len", "data", "rlen", "r", "slen", "s", "constructLength", "arr", "octets", "backHalf", "res", "require_ec", "__commonJSMin", "exports", "module", "BN", "HmacDRBG", "utils", "curves", "rand", "assert", "KeyPair", "Signature", "EC", "options", "priv", "enc", "pub", "drbg", "bytes", "ns2", "msg", "truncOnly", "delta", "key", "bkey", "nonce", "ns1", "iter", "k", "kp", "kpX", "r", "s", "recoveryParam", "signature", "sinv", "u1", "u2", "p", "j", "n", "e", "isYOdd", "isSecondKey", "rInv", "s1", "s2", "Q", "Qprime", "require_key", "__commonJSMin", "exports", "module", "utils", "assert", "parseBytes", "cachedProperty", "KeyPair", "eddsa", "params", "pub", "secret", "hash", "lastIx", "a", "message", "sig", "enc", "require_signature", "__commonJSMin", "exports", "module", "BN", "utils", "assert", "cachedProperty", "parseBytes", "Signature", "eddsa", "sig", "require_eddsa", "__commonJSMin", "exports", "module", "hash", "curves", "utils", "assert", "parseBytes", "KeyPair", "Signature", "EDDSA", "curve", "message", "secret", "key", "r", "R", "Rencoded", "s_", "S", "sig", "pub", "h", "SG", "RplusAh", "i", "point", "enc", "bytes", "lastIx", "normed", "xIsOdd", "y", "num", "val", "require_elliptic", "__commonJSMin", "exports", "elliptic", "elliptic_1", "__importDefault", "EC", "exports", "exports", "require_lib", "__commonJSMin", "exports", "elliptic_1", "bytes_1", "properties_1", "logger_1", "_version_1", "logger", "_curve", "getCurve", "SigningKey", "privateKey", "keyPair", "other", "p0", "p1", "digest", "digestBytes", "signature", "otherKey", "otherKeyPair", "computePublicKey", "value", "recoverPublicKey", "sig", "rs", "key", "compressed", "bytes", "signingKey", "exports", "require_lib", "__commonJSMin", "exports", "address_1", "bignumber_1", "bytes_1", "constants_1", "keccak256_1", "properties_1", "RLP", "__importStar", "signing_key_1", "logger_1", "_version_1", "logger", "TransactionTypes", "handleAddress", "value", "handleNumber", "transactionFields", "allowedTransactionKeys", "computeAddress", "key", "publicKey", "recoverAddress", "digest", "signature", "formatNumber", "name", "result", "accessSetify", "addr", "storageKeys", "storageKey", "index", "accessListify", "set", "accum", "a", "b", "formatAccessList", "_serializeEip1559", "transaction", "gasPrice", "maxFeePerGas", "fields", "sig", "_serializeEip2930", "_serialize", "raw", "fieldInfo", "options", "chainId", "v", "serialize", "_parseEipSignature", "tx", "recid", "_parseEip1559", "payload", "maxPriorityFeePerGas", "_parseEip2930", "_parse", "rawTransaction", "recoveryParam", "parse", "exports", "require_lib", "__commonJSMin", "exports", "abi_1", "abstract_provider_1", "abstract_signer_1", "address_1", "bignumber_1", "bytes_1", "properties_1", "transactions_1", "logger_1", "_version_1", "logger", "allowedTransactionKeys", "resolveName", "resolver", "nameOrPromise", "name", "_a", "address", "resolveAddresses", "value", "paramType", "index", "v", "populateTransaction", "contract", "fragment", "args", "overrides", "check", "__awaiter", "_this", "resolved", "data", "tx", "ro", "intrinsic", "bytes", "i", "roValue", "leftovers", "key", "l", "buildPopulate", "_i", "buildEstimate", "signerOrProvider", "addContractWait", "wait", "confirmations", "receipt", "log", "event", "parsed", "topics", "buildCall", "collapseSimple", "blockTag", "result", "error", "buildSend", "txRequest", "buildDefault", "getEventTag", "filter", "topic", "RunningEvent", "tag", "listener", "once", "done", "item", "listenerCount", "argsCopy", "ErrorRunningEvent", "_super", "__extends", "FragmentRunningEvent", "contractInterface", "errors", "WildcardRunningEvent", "parsed_1", "BaseContract", "addressOrName", "_newTarget", "uniqueFilters_1", "eventSignature", "filters", "e", "uniqueNames", "uniqueSignatures", "signature", "name_1", "signatures", "transaction", "code", "runningEvent", "eventName", "emit", "wrappedEmit", "__spreadArray", "fromBlockOrBlockhash", "toBlock", "logs", "accum", "result_1", "runningEvent_1", "Contract", "ContractFactory", "bytecode", "signer", "bytecodeHex", "params", "unsignedTx", "compilerOutput", "abi", "bytes_1", "properties_1", "BaseX", "alphabet", "i", "value", "source", "digits", "carry", "j", "string", "k", "q", "bytes", "byte", "exports", "Base32", "Base58", "require_pbkdf2", "__commonJSMin", "exports", "crypto_1", "bytes_1", "bufferify", "value", "pbkdf2", "password", "salt", "iterations", "keylen", "hashAlgorithm", "pbkdf2_1", "exports", "SupportedAlgorithm", "exports", "exports", "require_sha2", "__commonJSMin", "exports", "crypto_1", "hash_js_1", "__importDefault", "bytes_1", "types_1", "logger_1", "_version_1", "logger", "ripemd160", "data", "sha256", "sha512", "computeHmac", "algorithm", "key", "sha2_1", "exports", "types_1", "exports", "require_wordlist", "__commonJSMin", "exports", "exportWordlist", "hash_1", "properties_1", "logger_1", "_version_1", "Wordlist", "locale", "_newTarget", "mnemonic", "words", "wordlist", "i", "word", "lang", "name", "anyGlobal", "require_lang_cz", "__commonJSMin", "exports", "wordlist_1", "words", "wordlist", "loadWords", "lang", "LangCz", "_super", "__extends", "index", "word", "langCz", "require_lang_en", "__commonJSMin", "exports", "wordlist_1", "words", "wordlist", "loadWords", "lang", "LangEn", "_super", "__extends", "index", "word", "langEn", "require_lang_es", "__commonJSMin", "exports", "strings_1", "wordlist_1", "words", "lookup", "wordlist", "dropDiacritic", "word", "c", "expand", "output", "loadWords", "lang", "w", "index", "LangEs", "_super", "__extends", "langEs", "require_lang_fr", "__commonJSMin", "exports", "strings_1", "wordlist_1", "words", "wordlist", "lookup", "dropDiacritic", "word", "c", "expand", "output", "loadWords", "lang", "w", "index", "LangFr", "_super", "__extends", "langFr", "require_lang_ja", "__commonJSMin", "exports", "bytes_1", "strings_1", "wordlist_1", "data", "mapping", "wordlist", "hex", "word", "KiYoKu", "KyoKu", "loadWords", "lang", "transform", "normalize", "result", "i", "kana", "target", "sortJapanese", "a", "b", "length_1", "d", "offset", "k", "tmp", "LangJa", "_super", "__extends", "index", "mnemonic", "words", "langJa", "require_lang_ko", "__commonJSMin", "exports", "strings_1", "wordlist_1", "data", "codes", "getHangul", "code", "wordlist", "loadWords", "lang", "length", "i", "word", "j", "LangKo", "_super", "__extends", "index", "langKo", "require_lang_it", "__commonJSMin", "exports", "wordlist_1", "words", "wordlist", "loadWords", "lang", "LangIt", "_super", "__extends", "index", "word", "langIt", "require_lang_zh", "__commonJSMin", "exports", "strings_1", "wordlist_1", "data", "deltaData", "wordlist", "Checks", "codes", "style", "loadWords", "lang", "deltaOffset", "i", "s", "bytes", "common", "i_1", "LangZh", "_super", "__extends", "country", "index", "word", "mnemonic", "langZhCn", "langZhTw", "lang_cz_1", "lang_en_1", "lang_es_1", "lang_fr_1", "lang_ja_1", "lang_ko_1", "lang_it_1", "lang_zh_1", "exports", "require_lib", "__commonJSMin", "exports", "wordlist_1", "wordlists_1", "exports", "require_lib", "__commonJSMin", "exports", "basex_1", "bytes_1", "bignumber_1", "strings_1", "pbkdf2_1", "properties_1", "signing_key_1", "sha2_1", "transactions_1", "wordlists_1", "logger_1", "_version_1", "logger", "N", "MasterSecret", "HardenedBit", "getUpperMask", "bits", "getLowerMask", "bytes32", "value", "base58check", "data", "getWordlist", "wordlist", "words", "_constructorGuard", "HDNode", "constructorGuard", "privateKey", "publicKey", "parentFingerprint", "chainCode", "index", "depth", "mnemonicOrPath", "signingKey", "path", "I", "IL", "IR", "ki", "Ki", "ek", "srcMnemonic", "components", "result", "component", "seed", "mnemonic", "seedArray", "password", "entropyToMnemonic", "mnemonicToEntropy", "mnemonicToSeed", "extendedKey", "bytes", "key", "salt", "entropy", "offset", "i", "bit", "entropyBits", "checksumBits", "checksumMask", "checksum", "indices", "remainingBits", "isValidMnemonic", "getAccountPath", "crypto_1", "bytes_1", "randomBytes", "length", "exports", "require_shuffle", "__commonJSMin", "exports", "shuffled", "array", "i", "j", "tmp", "require_lib", "__commonJSMin", "exports", "random_1", "shuffle_1", "require_aes_js", "__commonJSMin", "exports", "module", "root", "checkInt", "value", "checkInts", "arrayish", "i", "coerceArray", "arg", "copy", "createArray", "length", "copyArray", "sourceArray", "targetArray", "targetStart", "sourceStart", "sourceEnd", "convertUtf8", "toBytes", "text", "result", "c", "fromBytes", "bytes", "convertHex", "Hex", "v", "numberOfRounds", "rcon", "S", "Si", "T1", "T2", "T3", "T4", "T5", "T6", "T7", "T8", "U1", "U2", "U3", "U4", "convertToInt32", "AES", "key", "rounds", "roundKeyCount", "KC", "tk", "index", "rconpointer", "t", "tt", "r", "plaintext", "a", "ciphertext", "ModeOfOperationECB", "block", "ModeOfOperationCBC", "iv", "j", "ModeOfOperationCFB", "segmentSize", "encrypted", "xorSegment", "ModeOfOperationOFB", "Counter", "initialValue", "ModeOfOperationCTR", "counter", "pkcs7pad", "data", "padder", "pkcs7strip", "aesjs", "exports", "require_utils", "__commonJSMin", "exports", "bytes_1", "strings_1", "looseArrayify", "hexString", "zpad", "value", "length", "getPassword", "password", "searchPath", "object", "path", "currentChild", "comps", "matchingChild", "key", "uuidV4", "randomBytes", "bytes", "require_crowdsale", "__commonJSMin", "exports", "aes_js_1", "__importDefault", "address_1", "bytes_1", "keccak256_1", "pbkdf2_1", "strings_1", "properties_1", "logger_1", "_version_1", "logger", "utils_1", "CrowdsaleAccount", "_super", "__extends", "value", "decrypt", "json", "password", "data", "ethaddr", "encseed", "key", "iv", "encryptedSeed", "aesCbc", "seed", "seedHex", "i", "seedHexBytes", "privateKey", "require_inspect", "__commonJSMin", "exports", "address_1", "isCrowdsaleWallet", "json", "data", "isKeystoreWallet", "getJsonWalletAddress", "require_scrypt", "__commonJSMin", "exports", "module", "root", "SHA256", "m", "K", "h0", "h1", "h2", "h3", "h4", "h5", "h6", "h7", "w", "blocks", "off", "len", "a", "b", "c", "d", "e", "f", "g", "h", "u", "i", "j", "t1", "t2", "bytesLeft", "bitLenHi", "bitLenLo", "numZeros", "p", "PBKDF2_HMAC_SHA256_OneIter", "password", "salt", "dkLen", "innerLen", "inner", "outerKey", "dk", "incrementCounter", "blockmix_salsa8", "BY", "Yi", "r", "x", "_X", "arraycopy", "blockxor", "salsa20_8", "R", "B", "S", "Si", "D", "src", "srcPos", "dest", "destPos", "length", "checkBufferish", "o", "v", "ensureInteger", "value", "name", "_scrypt", "N", "callback", "XY", "V", "totalOps", "currentOp", "lastPercent10", "stop", "state", "i0", "i1", "Bi", "limit", "nextTick", "incrementalSMix", "steps", "percent10", "offset", "derivedKey", "lib", "progressCallback", "resolve", "reject", "lastProgress", "error", "progress", "key", "require_keystore", "__commonJSMin", "exports", "aes_js_1", "__importDefault", "scrypt_js_1", "address_1", "bytes_1", "hdnode_1", "keccak256_1", "pbkdf2_1", "random_1", "properties_1", "transactions_1", "utils_1", "logger_1", "_version_1", "logger", "hasMnemonic", "value", "KeystoreAccount", "_super", "__extends", "_decrypt", "data", "key", "ciphertext", "cipher", "iv", "counter", "aesCtr", "_getAccount", "computedMAC", "privateKey", "mnemonicKey", "address", "check", "account", "mnemonicCiphertext", "mnemonicIv", "mnemonicCounter", "mnemonicAesCtr", "path", "locale", "entropy", "mnemonic", "node", "error", "pbkdf2Sync", "passwordBytes", "salt", "count", "dkLen", "prfFunc", "pbkdf2", "_computeKdfKey", "password", "pbkdf2Func", "scryptFunc", "progressCallback", "kdf", "throwError", "name", "N", "r", "p", "prf", "decryptSync", "json", "decrypt", "_a", "encrypt", "options", "e", "srcMnemonic", "client", "uuidRandom", "derivedKey", "macPrefix", "mac", "now", "timestamp", "require_lib", "__commonJSMin", "exports", "crowdsale_1", "inspect_1", "keystore_1", "decryptJsonWallet", "json", "password", "progressCallback", "account", "decryptJsonWalletSync", "exports", "require_lib", "__commonJSMin", "exports", "address_1", "abstract_provider_1", "abstract_signer_1", "bytes_1", "hash_1", "hdnode_1", "keccak256_1", "properties_1", "random_1", "signing_key_1", "json_wallets_1", "transactions_1", "logger_1", "_version_1", "logger", "isAccount", "value", "hasMnemonic", "mnemonic", "Wallet", "_super", "__extends", "privateKey", "provider", "_this", "signingKey_1", "srcMnemonic_1", "node", "signingKey_2", "transaction", "tx", "signature", "message", "domain", "types", "name", "populated", "_a", "password", "options", "progressCallback", "entropy", "json", "account", "path", "wordlist", "verifyMessage", "verifyTypedData", "exports", "require_lib", "__commonJSMin", "exports", "logger_1", "_version_1", "logger", "isRenetworkable", "value", "ethDefaultProvider", "network", "func", "providers", "options", "providerList", "skip", "provider", "quorum", "etcDefaultProvider", "url", "homestead", "ropsten", "classicMordor", "networks", "getNetwork", "name_1", "standard_1", "standard_2", "standard", "defaultProvider", "exports", "require_geturl", "__commonJSMin", "exports", "http_1", "__importDefault", "https_1", "zlib_1", "url_1", "bytes_1", "properties_1", "logger_1", "_version_1", "logger", "getResponse", "request", "resolve", "reject", "resp", "response", "accum", "name", "value", "chunk", "error", "nonnull", "getUrl", "href", "options", "url", "req", "_a", "require_lib", "__commonJSMin", "exports", "base64_1", "bytes_1", "properties_1", "strings_1", "logger_1", "_version_1", "logger", "geturl_1", "staller", "duration", "resolve", "bodyify", "value", "type", "unpercent", "all", "code", "_fetchData", "connection", "body", "processFunc", "attemptLimit", "throttleCallback", "throttleSlotInterval", "errorPassThrough", "headers", "url", "options", "allow304", "timeout", "key", "authorization", "reData", "dataMatch", "response", "result", "error", "flatHeaders", "header", "runningTimeout", "timer", "promise", "reject", "cancel", "runningFetch", "attempt", "_a", "location_1", "tryAgain", "stall", "retryAfter", "error_1", "body_1", "error_2", "timeout_1", "fetchJson", "json", "processJsonFunc", "updated", "hasContentType", "k", "poll", "func", "done", "retryLimit", "check", "require_bech32", "__commonJSMin", "exports", "module", "ALPHABET", "ALPHABET_MAP", "z", "x", "polymodStep", "pre", "b", "prefixChk", "prefix", "chk", "i", "c", "v", "encode", "words", "LIMIT", "result", "__decode", "str", "lowered", "uppered", "split", "wordChars", "decodeUnsafe", "res", "decode", "convert", "data", "inBits", "outBits", "pad", "value", "bits", "maxV", "toWordsUnsafe", "bytes", "toWords", "fromWordsUnsafe", "fromWords", "exports", "require_formatter", "__commonJSMin", "exports", "address_1", "bignumber_1", "bytes_1", "constants_1", "properties_1", "transactions_1", "logger_1", "_version_1", "logger", "Formatter", "_this", "formats", "address", "bigNumber", "blockTag", "data", "hash", "hex", "number", "type", "strictData", "v", "accessList", "value", "strict", "result", "format", "difficulty", "transaction", "chainId", "value_1", "object", "key", "error", "nullValue", "replaceValue", "array", "isCommunityResourcable", "isCommunityResource", "throttleMessage", "showThrottleMessage", "require_base_provider", "__commonJSMin", "exports", "abstract_provider_1", "base64_1", "basex_1", "bignumber_1", "bytes_1", "constants_1", "hash_1", "networks_1", "properties_1", "sha2_1", "strings_1", "web_1", "bech32_1", "__importDefault", "logger_1", "_version_1", "logger", "formatter_1", "MAX_CCIP_REDIRECTS", "checkTopic", "topic", "serializeTopics", "topics", "unique_1", "sorted", "deserializeTopics", "data", "comps", "getEventTag", "eventName", "getTime", "stall", "duration", "resolve", "PollableEvents", "Event", "tag", "listener", "once", "address", "filter", "coinInfos", "bytes32ify", "value", "base58Encode", "matcherIpfs", "matchers", "_parseString", "result", "start", "_parseBytes", "offset", "length", "getIpfsLink", "link", "numPad", "padded", "bytesPad", "encodeBytes", "datas", "byteCount", "i", "Resolver", "provider", "name", "resolvedAddress", "_this", "error", "selector", "parameters", "tx", "parseBytes", "_a", "error_1", "coinType", "hexBytes", "coinInfo", "bytes", "p2pkh", "length_1", "p2sh", "length_2", "length_3", "version_1", "words", "error_2", "linkage", "avatar", "_h", "match", "scheme", "_b", "owner", "addr", "tokenId", "_d", "_c", "tokenOwner", "_f", "_e", "balance", "_g", "metadataUrl", "metadata", "imageUrl", "ipfs", "length_4", "ipns", "length_5", "swarm", "skynet", "urlSafe_1", "hash", "a", "key", "keyBytes", "defaultFormatter", "nextPollId", "BaseProvider", "_super", "__extends", "network", "_newTarget", "knownNetwork", "calldata", "urls", "sender", "errorMessages", "url", "href", "json", "response", "errorMessage", "m", "maxAge", "internalBlockNumber", "reqTime", "checkInternalBlockNumber", "blockNumber", "networkError", "respTime", "pollId", "runners", "error_6", "eventBlockNumber", "event", "hash_2", "runner", "receipt", "filter_1", "minFromBlock", "logs", "log", "currentNetwork", "now", "transactionHash", "confirmations", "timeout", "replaceable", "reject", "cancelFuncs", "done", "alreadyDone", "func", "minedHandler", "lastBlockNumber_1", "scannedBlock_1", "replaceHandler_1", "__awaiter", "nonce", "mined", "block", "ti", "receipt_1", "reason", "timer_1", "addressOrName", "blockTag", "params", "position", "p", "startBlock", "confirms", "replacement", "signedTransaction", "t", "hexTx", "error_7", "transaction", "values", "v", "attempt", "txSender", "urlsOffset", "urlsLength", "urlsData", "u", "callbackSelector", "extraData", "ccipResult", "error_8", "resolved", "blockHashOrBlockTag", "includeTransactions", "blockNumber_1", "blockWithTxs", "currentName", "resolver", "operation", "addrData", "node", "resolverAddr", "nameOrAddress", "resolverAddress", "avatar_1", "error_11", "name_1", "error_12", "method", "e", "args", "_i", "stopped", "eventTag", "found", "eventTag_1", "require_json_rpc_provider", "__commonJSMin", "exports", "abstract_signer_1", "bignumber_1", "bytes_1", "hash_1", "properties_1", "strings_1", "transactions_1", "web_1", "logger_1", "_version_1", "logger", "base_provider_1", "errorGas", "spelunk", "value", "requireData", "data", "key", "result", "checkError", "method", "error", "params", "transaction", "message", "timer", "timeout", "resolve", "getResult", "payload", "getLowerCase", "_constructorGuard", "JsonRpcSigner", "_super", "__extends", "constructorGuard", "provider", "addressOrIndex", "_this", "UncheckedJsonRpcSigner", "accounts", "fromAddress", "address", "estimate", "to", "__awaiter", "_a", "tx", "sender", "hexTx", "hash", "blockNumber", "error_1", "error_2", "error_3", "domain", "types", "name", "populated", "error_4", "password", "confirmations", "allowedTransactionKeys", "JsonRpcProvider", "url", "network", "networkOrReady", "reject", "chainId", "getNetwork", "a", "request", "cache", "hexlifyTransaction", "feeData", "args", "error_7", "event", "self", "pendingFilter", "filterId", "poll", "hashes", "seq", "allowExtra", "allowed", "require_constants", "__commonJSMin", "exports", "module", "require_node_gyp_build", "__commonJSMin", "exports", "module", "fs", "path", "os", "runtimeRequire", "vars", "prebuildsOnly", "abi", "runtime", "isElectron", "arch", "platform", "libc", "isAlpine", "armv", "uv", "load", "dir", "name", "release", "getFirst", "matchBuild", "debug", "prebuild", "resolve", "nearby", "target", "tuples", "readdirSync", "parseTuple", "tuple", "matchTuple", "compareTuples", "prebuilds", "parsed", "parseTags", "candidates", "matchTags", "winner", "compareTags", "filter", "files", "arr", "architectures", "a", "b", "file", "extension", "tags", "tag", "runtimeAgnostic", "require_fallback", "__commonJSMin", "exports", "module", "mask", "source", "output", "offset", "length", "i", "unmask", "buffer", "require_bufferutil", "__commonJSMin", "exports", "module", "require_buffer_util", "__commonJSMin", "exports", "module", "EMPTY_BUFFER", "concat", "list", "totalLength", "target", "offset", "buf", "_mask", "source", "mask", "output", "length", "i", "_unmask", "buffer", "toArrayBuffer", "toBuffer", "data", "bufferUtil", "bu", "require_limiter", "__commonJSMin", "exports", "module", "kDone", "kRun", "Limiter", "concurrency", "job", "require_permessage_deflate", "__commonJSMin", "exports", "module", "zlib", "bufferUtil", "Limiter", "kStatusCode", "NOOP", "TRAILER", "kPerMessageDeflate", "kTotalLength", "kCallback", "kBuffers", "kError", "zlibLimiter", "PerMessageDeflate", "options", "isServer", "maxPayload", "concurrency", "params", "configurations", "callback", "offers", "opts", "accepted", "response", "key", "value", "num", "data", "fin", "done", "err", "result", "endpoint", "windowBits", "inflateOnError", "inflateOnData", "deflateOnData", "chunk", "require_fallback", "__commonJSMin", "exports", "module", "isValidUTF8", "buf", "len", "i", "require_utf_8_validate", "__commonJSMin", "exports", "module", "require_validation", "__commonJSMin", "exports", "module", "isValidStatusCode", "code", "_isValidUTF8", "buf", "len", "i", "isValidUTF8", "require_receiver", "__commonJSMin", "exports", "module", "Writable", "PerMessageDeflate", "BINARY_TYPES", "EMPTY_BUFFER", "kStatusCode", "kWebSocket", "concat", "toArrayBuffer", "unmask", "isValidStatusCode", "isValidUTF8", "GET_INFO", "GET_PAYLOAD_LENGTH_16", "GET_PAYLOAD_LENGTH_64", "GET_MASK", "GET_DATA", "INFLATING", "Receiver", "binaryType", "extensions", "isServer", "maxPayload", "chunk", "encoding", "cb", "n", "buf", "dst", "offset", "err", "error", "compressed", "num", "data", "er", "messageLength", "fragments", "code", "ErrorCtor", "message", "prefix", "statusCode", "require_sender", "__commonJSMin", "exports", "module", "randomFillSync", "PerMessageDeflate", "EMPTY_BUFFER", "isValidStatusCode", "applyMask", "toBuffer", "mask", "Sender", "socket", "extensions", "data", "options", "merge", "offset", "payloadLength", "target", "code", "cb", "buf", "length", "readOnly", "perMessageDeflate", "opcode", "rsv1", "opts", "compress", "_", "err", "i", "callback", "params", "list", "require_event_target", "__commonJSMin", "exports", "module", "Event", "type", "target", "MessageEvent", "data", "CloseEvent", "code", "reason", "OpenEvent", "ErrorEvent", "error", "EventTarget", "listener", "options", "onMessage", "onClose", "message", "onError", "onOpen", "method", "listeners", "i", "require_extension", "__commonJSMin", "exports", "module", "tokenChars", "push", "dest", "name", "elem", "parse", "header", "offers", "params", "mustUnescape", "isEscaping", "inQuotes", "extensionName", "paramName", "start", "end", "i", "code", "value", "token", "format", "extensions", "extension", "configurations", "k", "values", "v", "require_websocket", "__commonJSMin", "exports", "module", "EventEmitter", "https", "http", "net", "tls", "randomBytes", "createHash", "URL", "PerMessageDeflate", "Receiver", "Sender", "BINARY_TYPES", "EMPTY_BUFFER", "GUID", "kStatusCode", "kWebSocket", "NOOP", "addEventListener", "removeEventListener", "format", "parse", "toBuffer", "readyStates", "protocolVersions", "closeTimeout", "WebSocket", "address", "protocols", "options", "initAsClient", "type", "socket", "head", "maxPayload", "receiver", "receiverOnConclude", "receiverOnDrain", "receiverOnError", "receiverOnMessage", "receiverOnPing", "receiverOnPong", "socketOnClose", "socketOnData", "socketOnEnd", "socketOnError", "code", "data", "msg", "abortHandshake", "err", "mask", "cb", "sendAfterClose", "opts", "readyState", "i", "descriptor", "property", "method", "listeners", "listener", "websocket", "parsedUrl", "isUnixSocket", "isSecure", "defaultPort", "key", "get", "perMessageDeflate", "tlsConnect", "netConnect", "parts", "req", "res", "location", "statusCode", "addr", "digest", "serverProt", "protList", "protError", "extensions", "stream", "message", "length", "reason", "receiverOnFinish", "chunk", "require_stream", "__commonJSMin", "exports", "module", "Duplex", "emitClose", "stream", "duplexOnEnd", "duplexOnError", "err", "createWebSocketStream", "ws", "options", "resumeOnReceiverDrain", "receiverOnDrain", "duplex", "msg", "callback", "called", "chunk", "encoding", "require_websocket_server", "__commonJSMin", "exports", "module", "EventEmitter", "createHash", "createServer", "STATUS_CODES", "PerMessageDeflate", "WebSocket", "format", "parse", "GUID", "kWebSocket", "keyRegex", "WebSocketServer", "options", "callback", "req", "res", "body", "emitConnection", "addListeners", "socket", "head", "cb", "client", "server", "emitClose", "index", "socketOnError", "key", "version", "extensions", "abortHandshake", "perMessageDeflate", "offers", "info", "verified", "code", "message", "headers", "ws", "protocol", "trim", "params", "value", "map", "event", "h", "str", "require_ws", "__commonJSMin", "exports", "module", "WebSocket", "ws_1", "__importDefault", "exports", "require_websocket_provider", "__commonJSMin", "exports", "bignumber_1", "properties_1", "json_rpc_provider_1", "ws_1", "logger_1", "_version_1", "logger", "NextId", "WebSocketProvider", "_super", "__extends", "url", "network", "_this", "id", "messageEvent", "data", "result", "request", "error", "sub", "fauxPoll", "value", "blockNumber", "method", "params", "rid", "resolve", "reject", "callback", "payload", "tag", "param", "processFunc", "subIdPromise", "subId", "_a", "event", "emitReceipt_1", "hash", "receipt", "e", "require_url_json_rpc_provider", "__commonJSMin", "exports", "properties_1", "logger_1", "_version_1", "logger", "json_rpc_provider_1", "StaticJsonRpcProvider", "_super", "__extends", "network", "_a", "UrlJsonRpcProvider", "apiKey", "_this", "_newTarget", "connection", "key", "address", "require_alchemy_provider", "__commonJSMin", "exports", "properties_1", "formatter_1", "websocket_provider_1", "logger_1", "_version_1", "logger", "url_json_rpc_provider_1", "defaultApiKey", "AlchemyWebSocketProvider", "_super", "__extends", "network", "apiKey", "_this", "provider", "AlchemyProvider", "url", "host", "attempt", "formatter_1", "url_json_rpc_provider_1", "logger_1", "_version_1", "logger", "defaultApiKey", "getHost", "name", "AnkrProvider", "_super", "__extends", "apiKey", "network", "connection", "attempt", "url", "exports", "require_cloudflare_provider", "__commonJSMin", "exports", "url_json_rpc_provider_1", "logger_1", "_version_1", "logger", "CloudflareProvider", "_super", "__extends", "apiKey", "network", "host", "method", "params", "block", "_a", "require_etherscan_provider", "__commonJSMin", "exports", "bytes_1", "properties_1", "transactions_1", "web_1", "formatter_1", "logger_1", "_version_1", "logger", "base_provider_1", "getTransactionPostData", "transaction", "result", "key", "value", "set", "getResult", "error", "getJsonResult", "checkLogTag", "blockTag", "checkError", "method", "e", "data", "message", "EtherscanProvider", "_super", "__extends", "network", "apiKey", "_this", "module", "params", "query", "accum", "post", "url", "payload", "procFunc", "connection", "attempt", "payloadStr", "_a", "postData", "_c", "error_1", "error_2", "args", "topic0", "logs", "blocks", "i", "log", "block", "_b", "addressOrName", "startBlock", "endBlock", "tx", "item", "require_fallback_provider", "__commonJSMin", "exports", "abstract_provider_1", "bignumber_1", "bytes_1", "properties_1", "random_1", "web_1", "base_provider_1", "formatter_1", "logger_1", "_version_1", "logger", "now", "checkNetworks", "networks", "result", "i", "network", "median", "values", "maxDelta", "middle", "a", "b", "serialize", "value", "keys", "key", "v", "nextRid", "stall", "duration", "cancel", "timer", "promise", "resolve", "wait", "func", "getPromise", "ForwardErrors", "ForwardProperties", "exposeDebugConfig", "config", "normalizedTally", "normalize", "quorum", "configs", "tally", "check", "getProcessFunc", "provider", "method", "params", "blockNumber", "c", "tx", "block", "waitForSync", "reject", "getRunner", "currentBlockNumber", "_a", "_b", "filter", "FallbackProvider", "_super", "__extends", "providers", "_this", "providerConfigs", "configOrProvider", "index", "stallTimeout", "priority", "weight", "total", "accum", "networkOrReady", "error", "results", "i_1", "processFunc", "first", "t0", "inflightWeight", "rid", "this_1", "waiting", "errors", "code", "errorCode", "e", "props", "name", "require_ipc_provider", "__commonJSMin", "exports", "net_1", "properties_1", "logger_1", "_version_1", "logger", "json_rpc_provider_1", "IpcProvider", "_super", "__extends", "path", "network", "_this", "method", "params", "payload", "resolve", "reject", "response", "stream", "data", "error", "require_infura_provider", "__commonJSMin", "exports", "properties_1", "websocket_provider_1", "formatter_1", "logger_1", "_version_1", "logger", "url_json_rpc_provider_1", "defaultProjectId", "InfuraWebSocketProvider", "_super", "__extends", "network", "apiKey", "_this", "provider", "InfuraProvider", "connection", "url", "apiKeyObj", "host", "attempt", "properties_1", "web_1", "json_rpc_provider_1", "JsonRpcBatchProvider", "_super", "__extends", "method", "params", "_this", "request", "inflightRequest", "promise", "resolve", "reject", "batch", "inflight", "result", "index", "payload", "error", "exports", "require_nodesmith_provider", "__commonJSMin", "exports", "url_json_rpc_provider_1", "logger_1", "_version_1", "logger", "defaultApiKey", "NodesmithProvider", "_super", "__extends", "apiKey", "network", "host", "require_pocket_provider", "__commonJSMin", "exports", "logger_1", "_version_1", "logger", "url_json_rpc_provider_1", "defaultApplicationId", "PocketProvider", "_super", "__extends", "apiKey", "apiKeyObj", "network", "host", "url", "connection", "require_web3_provider", "__commonJSMin", "exports", "properties_1", "logger_1", "_version_1", "logger", "json_rpc_provider_1", "_nextId", "buildWeb3LegacyFetcher", "provider", "sendFunc", "fetcher", "method", "params", "_this", "request", "resolve", "reject", "error", "response", "error_1", "buildEip1193Fetcher", "Web3Provider", "_super", "__extends", "network", "path", "jsonRpcFetchFunc", "subprovider", "require_lib", "__commonJSMin", "exports", "abstract_provider_1", "networks_1", "base_provider_1", "alchemy_provider_1", "ankr_provider_1", "cloudflare_provider_1", "etherscan_provider_1", "fallback_provider_1", "ipc_provider_1", "infura_provider_1", "json_rpc_provider_1", "json_rpc_batch_provider_1", "nodesmith_provider_1", "pocket_provider_1", "url_json_rpc_provider_1", "web3_provider_1", "websocket_provider_1", "formatter_1", "logger_1", "_version_1", "logger", "getDefaultProvider", "network", "options", "match", "exports", "require_lib", "__commonJSMin", "exports", "bignumber_1", "bytes_1", "keccak256_1", "sha2_1", "strings_1", "regexBytes", "regexNumber", "regexArray", "Zeros", "logger_1", "_version_1", "logger", "_pack", "type", "value", "isArray", "match", "size", "baseType_1", "count", "result_1", "pack", "types", "values", "tight", "index", "keccak256", "sha256", "exports", "require_lib", "__commonJSMin", "exports", "bignumber_1", "logger_1", "_version_1", "logger", "names", "commify", "value", "comps", "whole", "negative", "suffix", "formatted", "index", "formatUnits", "unitName", "parseUnits", "formatEther", "wei", "parseEther", "ether", "require_utils", "__commonJSMin", "exports", "abi_1", "address_1", "base64", "__importStar", "basex_1", "bytes_1", "hash_1", "hdnode_1", "json_wallets_1", "keccak256_1", "logger_1", "sha2_1", "solidity_1", "random_1", "properties_1", "RLP", "signing_key_1", "strings_1", "transactions_1", "units_1", "wallet_1", "web_1", "sha2_2", "strings_2", "exports", "require_ethers", "__commonJSMin", "exports", "contracts_1", "bignumber_1", "abstract_signer_1", "wallet_1", "constants", "__importStar", "providers", "providers_1", "wordlists_1", "utils", "logger_1", "_version_1", "logger", "require_lib", "__commonJSMin", "exports", "ethers", "__importStar", "anyGlobal", "ethers_1", "src_exports", "__export", "handler", "__toCommonJS", "import_serverless_http", "import_express", "import_cors", "import_express", "import_ethers", "useEthers", "verifyMessage", "loginCredentials", "address", "message", "signedMessage", "recoveredAddress", "error", "user", "userCollection", "useUsers", "getMessage", "address", "user", "userCollection", "updateMessage", "provider", "generateNonce", "verifyMessage", "useEthers", "updateMessage", "useUsers", "router", "express", "req", "res", "body", "provider", "address", "currency", "message", "signedMessage", "user", "userCollection", "accounts", "response", "signupLogin_default", "import_express", "router", "express", "req", "res", "body", "address", "provider", "currency", "user", "userCollection", "newUser", "generateNonce", "err", "signup_default", "import_express", "verifyMessage", "useEthers", "updateMessage", "useUsers", "router", "express", "req", "res", "body", "address", "message", "signedMessage", "provider", "response", "user", "userCollection", "login_default", "import_express", "router", "express", "getMessage", "updateMessage", "useUsers", "req", "res", "provider", "address", "message", "user", "userCollection", "auth_default", "import_express", "router", "express", "req", "res", "primaryAddress", "updatedProvider", "updatedAddress", "user", "userCollection", "account", "address", "existingUser", "err", "provider", "currency", "accountedRemoved", "users_default", "app", "express", "cors", "signupLogin_default", "signup_default", "login_default", "auth_default", "users_default", "handler", "event", "context", "serverless"] +} diff --git a/services/auth/hardhat.config.ts b/services/auth/hardhat.config.ts deleted file mode 100644 index f0eb58877..000000000 --- a/services/auth/hardhat.config.ts +++ /dev/null @@ -1,11 +0,0 @@ -import defaultConfig from '@casimir/ethereum/hardhat.config' -import { HardhatUserConfig } from 'hardhat/config' - -const config: HardhatUserConfig = { - ...defaultConfig, - paths: { - tests: './test' - } -} - -export default config \ No newline at end of file diff --git a/services/auth/package.json b/services/auth/package.json deleted file mode 100644 index 3f6714acf..000000000 --- a/services/auth/package.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "name": "@casimir/auth", - "version": "0.0.1", - "main": "src/index.ts", - "scripts": { - "build": "node build.js", - "watch": "npm run build -- --watch", - "test": "mocha --require hardhat/register --recursive --exit --extension ts --timeout 15000" - }, - "dependencies": { - "cors": "^2.8.5", - "ethers": "^5.7.2", - "express": "^4.18.1", - "serverless-http": "^3.0.1" - }, - "devDependencies": { - "@nomiclabs/hardhat-ethers": "^2.0.6", - "@nomiclabs/hardhat-waffle": "^2.0.3", - "@types/aws-lambda": "8.10.97", - "@types/chai": "^4.3.3", - "@types/cors": "^2.8.12", - "@types/express": "^4.17.13", - "@types/mocha": "^10.0.0", - "@types/node": "^17.0.38", - "chai": "^4.3.6", - "esbuild": "^0.15.9", - "hardhat": "^2.12.2", - "mocha": "^10.0.0", - "ts-node": "^10.9.1" - } -} diff --git a/services/auth/src/index.ts b/services/auth/src/index.ts deleted file mode 100644 index 0a144ff9d..000000000 --- a/services/auth/src/index.ts +++ /dev/null @@ -1,24 +0,0 @@ -import serverless from 'serverless-http' -import express from 'express' -import cors from 'cors' -import { APIGatewayEventRequestContext, APIGatewayProxyEvent } from 'aws-lambda' -import signupLogin from './routes/signupLogin' -import signup from './routes/signup' -import login from './routes/login' -import auth from './routes/auth' -import users from './routes/users' - -const app = express() -app.use(express.json()) -app.use(cors()) - -app.use('/signupLogin', signupLogin) -app.use('/signup', signup) -app.use('/login', login) -app.use('/auth', auth) -app.use('/users', users) - -export const handler = async function (event: APIGatewayProxyEvent, context: APIGatewayEventRequestContext) { - const serverlessApp = serverless(app) - return await serverlessApp(event, context) -} \ No newline at end of file diff --git a/services/auth/test/ethers.test.ts b/services/auth/test/ethers.test.ts deleted file mode 100644 index d8e15a9b1..000000000 --- a/services/auth/test/ethers.test.ts +++ /dev/null @@ -1,30 +0,0 @@ -import { ethers } from 'hardhat' -import { expect } from 'chai' -import useEthers from '../src/providers/ethers' - -const { verifyMessage } = useEthers() - -describe('Verify message', async function () { - - it('Login credentials fail if missing params', async function () { - const response = verifyMessage({ address: '', message: '', signedMessage: '' }) - expect(response).equal(false) - }) - - it('Login credentials succeed if user signs the message', async function () { - const [ signer ] = await ethers.getSigners() - const message = 'unsigned message' - const signedMessage = await signer.signMessage(message) - const response = verifyMessage({ address: signer.address, message, signedMessage }) - expect(response).equal(true) - }) - - it('Login credentials fail if user does not sign message', async function () { - const [ signer ] = await ethers.getSigners() - const message = 'unsigned message' - const signedMessage = 'signed message' - const response = verifyMessage({ address: signer.address, message, signedMessage }) - expect(response).equal(false) - }) - -}) \ No newline at end of file diff --git a/services/keys/src/index.ts b/services/keys/src/index.ts index 5c342d964..08da5558f 100644 --- a/services/keys/src/index.ts +++ b/services/keys/src/index.ts @@ -1,7 +1,7 @@ import path from 'path' import url from 'url' -import CLI from './providers/CLI' -import SSV from './providers/SSV' +import { CLI } from './providers/cli' +import { SSV } from './providers/ssv' export { SSV } diff --git a/services/keys/src/providers/CLI.ts b/services/keys/src/providers/cli.ts similarity index 85% rename from services/keys/src/providers/CLI.ts rename to services/keys/src/providers/cli.ts index 4ff68aebc..9eda5c5cf 100644 --- a/services/keys/src/providers/CLI.ts +++ b/services/keys/src/providers/cli.ts @@ -1,7 +1,7 @@ import minimist from 'minimist' -import SSV from './SSV' +import { SSV } from './ssv' -export default class CLI { +export class CLI { async run() { const argv = minimist(process.argv.slice(2)) const { operatorIds, validatorCount } = argv diff --git a/services/keys/src/providers/SSV.ts b/services/keys/src/providers/ssv.ts similarity index 99% rename from services/keys/src/providers/SSV.ts rename to services/keys/src/providers/ssv.ts index c29184589..e4a18afd3 100644 --- a/services/keys/src/providers/SSV.ts +++ b/services/keys/src/providers/ssv.ts @@ -4,7 +4,7 @@ import { Operator, Validator } from '@casimir/types' import { CreateValidatorsOptions } from '../interfaces/CreateValidatorsOptions' import { DepositData } from '../interfaces/DepositData' -export default class SSV { +export class SSV { keys: SSVKeys = new SSVKeys(SSVKeys.VERSION.V3) diff --git a/services/ethereum/README.md b/services/nodes/README.md similarity index 67% rename from services/ethereum/README.md rename to services/nodes/README.md index 0c3148009..5d1c9c827 100644 --- a/services/ethereum/README.md +++ b/services/nodes/README.md @@ -1,15 +1,15 @@ -# Casimir Ethereum +# Casimir Nodes -Ethereum nodes and RPC/WS APIs +Nodes and RPC/WS APIs ## Execution Clients Until we add rate limiting, RPC/WS API access should be restricted to @consensusnetworks and any trusted parties issued API password secrets. See [API Configuration](#api-configuration) to set up an API URL and restrict access with a password. -| Client | Network | Mode | Setup | -| - | - | - | - | -| Erigon | mainnet | archive | [thorax/erigon compose](https://hub.docker.com/r/thorax/erigon#run-all-components-by-docker-compose) | `casomir-mainnet-rpc` | `casimir-mainnet-ws` | -| Geth | goerli | full | [eth-docker compose](https://github.com/eth-educators/eth-docker) | `casimir-goerli-rpc` | `casimir-goerli-ws` | +| Currency | Network | Protocols | Client | Mode | Config | +| - | - | - | - | - | - | +| ETH | mainnet | rpc, ws | Erigon | archive | [ledgerwatch/erigon compose](https://github.com/ledgerwatch/erigon/blob/devel/docker-compose.yml) | +| ETH | goerli | rpc, ws | Geth | full | [eth-educators/eth-docker compose](https://github.com/eth-educators/eth-docker) | ## API Configuration @@ -34,4 +34,4 @@ docker-compose up -d nginx ## API Usage -Now Casimir developers can access the Ethereum clients via descriptive URLs like . We will inject these into our development workflows using secrets, but for now, you can share the username, password, and public IP with developers over Keybase. +Now Casimir developers can access node clients via descriptive URLs like . We have injected these into Casimir development workflows using secrets. diff --git a/services/ethereum/docker-compose.yml b/services/nodes/docker-compose.yml similarity index 100% rename from services/ethereum/docker-compose.yml rename to services/nodes/docker-compose.yml diff --git a/services/ethereum/nginx.conf b/services/nodes/nginx.conf similarity index 100% rename from services/ethereum/nginx.conf rename to services/nodes/nginx.conf diff --git a/services/auth/.gitignore b/services/users/.gitignore similarity index 100% rename from services/auth/.gitignore rename to services/users/.gitignore diff --git a/services/users/Dockerfile b/services/users/Dockerfile new file mode 100644 index 000000000..f802bf481 --- /dev/null +++ b/services/users/Dockerfile @@ -0,0 +1,23 @@ +# Use Node 18 as the base image +FROM --platform=linux/amd64 node:18 + +# Set the working directory to /app +WORKDIR /app + +# Copy package.json to the working directory +COPY package.json ./ + +# Install the dependencies +RUN npm ci + +# Copy the rest of the files to the working directory +COPY . . + +# Build the TypeScript project +RUN npm run build + +# Expose port 4000 +EXPOSE 4000 + +# Run the app when the container launches +CMD ["node", "dist/index.js"] \ No newline at end of file diff --git a/services/users/build.js b/services/users/build.js new file mode 100644 index 000000000..96ef546ac --- /dev/null +++ b/services/users/build.js @@ -0,0 +1,12 @@ +/* eslint-disable @typescript-eslint/no-var-requires */ +const esbuild = require('esbuild') + +esbuild.build({ + entryPoints: ['src/index.ts'], + outfile: 'dist/index.js', + bundle: true, + minify: true, + sourcemap: true, + platform: 'node', + target: 'esnext' +}) \ No newline at end of file diff --git a/services/users/package.json b/services/users/package.json new file mode 100644 index 000000000..7a4ca987b --- /dev/null +++ b/services/users/package.json @@ -0,0 +1,23 @@ +{ + "name": "@casimir/users", + "version": "0.0.1", + "main": "src/index.ts", + "scripts": { + "build": "node build.js", + "dev": "tsnd --respawn --transpile-only src/index.ts", + "test": "echo \"Warning: no test specified\" && exit 0" + }, + "dependencies": { + "cors": "^2.8.5", + "ethers": "^5.7.2", + "express": "^4.18.1" + }, + "devDependencies": { + "@types/cors": "^2.8.12", + "@types/express": "^4.17.13", + "@types/node": "^17.0.38", + "chai": "^4.3.6", + "esbuild": "^0.15.9", + "ts-node-dev": "^2.0.0" + } +} diff --git a/services/auth/src/collections/users.ts b/services/users/src/collections/users.ts similarity index 100% rename from services/auth/src/collections/users.ts rename to services/users/src/collections/users.ts diff --git a/services/auth/src/collections/users_multiple_accounts.ts b/services/users/src/collections/users_multiple_accounts.ts similarity index 100% rename from services/auth/src/collections/users_multiple_accounts.ts rename to services/users/src/collections/users_multiple_accounts.ts diff --git a/services/users/src/index.ts b/services/users/src/index.ts new file mode 100644 index 000000000..d2dd8212f --- /dev/null +++ b/services/users/src/index.ts @@ -0,0 +1,18 @@ +import express from 'express' +import cors from 'cors' +import login from './routes/login' +import auth from './routes/auth' +import users from './routes/users' + +const port = process.env.PUBLIC_AUTH_PORT || 4000 + +const app = express() +app.use(express.json()) +app.use(cors()) + +app.use('/login', login) +app.use('/auth', auth) +app.use('/users', users) + +app.listen(port) +console.log(`Auth server listening on port ${port}`) \ No newline at end of file diff --git a/services/auth/src/providers/ethers.ts b/services/users/src/providers/ethers.ts similarity index 100% rename from services/auth/src/providers/ethers.ts rename to services/users/src/providers/ethers.ts diff --git a/services/auth/src/providers/users.ts b/services/users/src/providers/users.ts similarity index 100% rename from services/auth/src/providers/users.ts rename to services/users/src/providers/users.ts diff --git a/services/auth/src/routes/auth.ts b/services/users/src/routes/auth.ts similarity index 100% rename from services/auth/src/routes/auth.ts rename to services/users/src/routes/auth.ts diff --git a/services/auth/src/routes/login.ts b/services/users/src/routes/login.ts similarity index 100% rename from services/auth/src/routes/login.ts rename to services/users/src/routes/login.ts diff --git a/services/auth/src/routes/signup.ts b/services/users/src/routes/signup.ts similarity index 100% rename from services/auth/src/routes/signup.ts rename to services/users/src/routes/signup.ts diff --git a/services/auth/src/routes/signupLogin.ts b/services/users/src/routes/signupLogin.ts similarity index 100% rename from services/auth/src/routes/signupLogin.ts rename to services/users/src/routes/signupLogin.ts diff --git a/services/auth/src/routes/users.ts b/services/users/src/routes/users.ts similarity index 100% rename from services/auth/src/routes/users.ts rename to services/users/src/routes/users.ts diff --git a/services/users/src/types/ProviderString.ts b/services/users/src/types/ProviderString.ts new file mode 100644 index 000000000..fd16ab34c --- /dev/null +++ b/services/users/src/types/ProviderString.ts @@ -0,0 +1,9 @@ +import { BrowserProviders } from '@/interfaces/BrowserProviders' +export type ProviderString = + | keyof BrowserProviders + | 'IoPay' + | 'Ledger' + | 'Trezor' + | 'WalletConnect' + | 'Phantom' + | '' diff --git a/services/auth/tsconfig.json b/services/users/tsconfig.json similarity index 88% rename from services/auth/tsconfig.json rename to services/users/tsconfig.json index b5ede2305..83c0e636b 100644 --- a/services/auth/tsconfig.json +++ b/services/users/tsconfig.json @@ -1,11 +1,11 @@ { "compilerOptions": { - "target": "es2020", + "target": "ESNext", "strict": true, "preserveConstEnums": true, "noEmit": true, "sourceMap": false, - "module": "commonjs", + "module": "CommonJS", "moduleResolution": "node", "esModuleInterop": true, "skipLibCheck": true,